摘 要: 針對(duì)傳統(tǒng)塔機(jī)監(jiān)測(cè)防撞系統(tǒng)中操作不便、ZigBee無(wú)線傳輸距離短、網(wǎng)絡(luò)節(jié)點(diǎn)較多而導(dǎo)致時(shí)實(shí)性差等問(wèn)題,提出了一種基于WiMi-net(Wireless Micro-network)無(wú)線通信模塊的解決方案。利用Qt良好的交互能力與WiMi-net無(wú)線模塊特性,搭建了一套傳輸距離遠(yuǎn)、可靠性高、實(shí)時(shí)性強(qiáng)的新型塔機(jī)監(jiān)測(cè)防撞系統(tǒng)。
關(guān)鍵詞: 塔機(jī)監(jiān)測(cè);WiMi-net;Qt;無(wú)線通信;實(shí)時(shí)性
0 引言
隨著建筑業(yè)規(guī)模不斷擴(kuò)大,建筑作業(yè)逐漸變得密集化,同一工作區(qū)域往往存在多臺(tái)塔機(jī)同時(shí)作業(yè)。以往靠塔機(jī)駕駛員與地面指揮人員主觀判斷進(jìn)行避障的方式已無(wú)法適應(yīng)當(dāng)前復(fù)雜的塔機(jī)工作環(huán)境。塔機(jī)監(jiān)測(cè)防撞系統(tǒng)用于實(shí)時(shí)地采集各塔機(jī)以及障礙物信息,各塔機(jī)信息通過(guò)無(wú)線模塊相互傳遞,并進(jìn)入防碰撞系統(tǒng)進(jìn)行分析。當(dāng)系統(tǒng)判斷當(dāng)前操作有可能發(fā)生危險(xiǎn)時(shí),可以及時(shí)提醒駕駛員,從而避免險(xiǎn)情發(fā)生。鑒于預(yù)險(xiǎn)系統(tǒng)中快速響應(yīng)的重要性,無(wú)線模塊的實(shí)時(shí)性必須得到保障。
隨著ZigBee的普及,ZigBee在塔機(jī)通信中的應(yīng)用已經(jīng)有部分研究成果,但是傳統(tǒng)ZigBee無(wú)線模塊一般都基于CC2430、CC2530射頻芯片,它們的射頻(Radio Frequency)均為2.4 GHz,屬于視距通信頻帶。這種頻段的信號(hào)波長(zhǎng)較短,因而傳輸距離與穿透能力都受到限制[1]。利用ZigBee模塊進(jìn)行遠(yuǎn)距離傳輸往往需要加上多級(jí)放大電路。值得一提的是,由于ZigBee采用CSMA/CA(隨機(jī)接入信道技術(shù))接入MAC層,且不支持時(shí)分復(fù)用的信道接入方式[2],節(jié)點(diǎn)會(huì)在發(fā)送數(shù)據(jù)之前監(jiān)聽信道,如果信道忙則進(jìn)行隨機(jī)退避,即延遲一段隨機(jī)時(shí)間。如果再次監(jiān)聽信道忙,這個(gè)退避時(shí)間還要增倍。這樣就造成了發(fā)送數(shù)據(jù)所需要時(shí)間的不確定性,因此不能很好地支持實(shí)時(shí)性要求較高的業(yè)務(wù)。為解決節(jié)點(diǎn)數(shù)量上升帶來(lái)的傳輸延遲問(wèn)題,參考文獻(xiàn)[3]提出了基于Markov模型的改進(jìn)CSMA/CA退避算法,有效減少了傳輸延遲。但由于該算法本身建立在IEEE802.15.4標(biāo)準(zhǔn)(針對(duì)低速無(wú)線個(gè)人區(qū)域網(wǎng)絡(luò)制定標(biāo)準(zhǔn))之上,因此傳輸速率仍不夠理想。
參考文獻(xiàn)[4-5]提出了基于ZigBee+GPRS以解決ZigBee傳輸距離的方案,但GPRS受GSM網(wǎng)絡(luò)信號(hào)質(zhì)量的影響,也無(wú)法保證數(shù)據(jù)的實(shí)時(shí)性。參考文獻(xiàn)[6]將WLAN無(wú)線局域網(wǎng)絡(luò)用于塔機(jī)群通信,大大提高了數(shù)據(jù)的傳輸速率與距離,但考慮到嵌入式系統(tǒng)的限制,并不適合運(yùn)行高功耗的WLAN網(wǎng)絡(luò)。
基于此,本文提出了一種采用WiMi-net無(wú)線模塊的解決方案。WiMi-net無(wú)線模塊內(nèi)部集成一塊CC1101射頻芯片,該芯片功率達(dá)到12 dBm,射頻范圍為433 MHz。低頻電磁波波長(zhǎng)大,更容易通過(guò)障礙物,因而具有更遠(yuǎn)的傳播距離。MAC層采用TDMA(Time Division Multiple Access)按時(shí)隙分配信道資源,保證各節(jié)點(diǎn)數(shù)據(jù)信息在其專有時(shí)隙內(nèi)及時(shí)、可靠地發(fā)送。為了方便駕駛員操作,本系統(tǒng)還使用Qt界面庫(kù)設(shè)計(jì)了交互界面友好的嵌入式操作界面。
1 系統(tǒng)設(shè)計(jì)框架
考慮到系統(tǒng)的實(shí)時(shí)性與多任務(wù)性,本文采用基于ARM11內(nèi)核的S3C6410核心板,上面搭建了經(jīng)過(guò)裁剪的Linux操作系統(tǒng)。系統(tǒng)通過(guò)操作Linux串口設(shè)備文件/dev/ttySAC0將操作指令發(fā)送到WiMi-net核心板單片機(jī)上,通過(guò)WiMi-net接口層協(xié)議,就能很方便地實(shí)現(xiàn)數(shù)據(jù)的收發(fā)、狀態(tài)的讀取和控制等操作。WiMi-net片上單片機(jī)在物理層驅(qū)動(dòng)射頻芯片,經(jīng)過(guò)功率放大器(Power Amplifier,PA)放大,覆蓋半徑可達(dá)到2.5 km,高覆蓋半徑減少了必要的中繼站,加強(qiáng)了數(shù)據(jù)的傳輸速度與可靠性。
本地塔機(jī)通過(guò)WiMi-net與其他塔機(jī)實(shí)時(shí)交換信息,得到其他塔機(jī)當(dāng)前工作狀態(tài)以及預(yù)輸入的障礙物信息,便可由LCD實(shí)時(shí)模擬整個(gè)工地運(yùn)行狀態(tài),并同時(shí)進(jìn)行異常情況與防碰撞檢測(cè)。整個(gè)工地運(yùn)行狀態(tài)通過(guò)網(wǎng)絡(luò)發(fā)送到主控室,實(shí)現(xiàn)全工地的遠(yuǎn)程監(jiān)控。系統(tǒng)在有可能發(fā)生危險(xiǎn)的情況下做出語(yǔ)音與界面提示,提示駕駛員注意操作。如果塔機(jī)持續(xù)當(dāng)前狀態(tài)運(yùn)行,系統(tǒng)會(huì)在安全范圍內(nèi)接管伸縮電機(jī)繼電器與回轉(zhuǎn)電機(jī)繼電器,使塔機(jī)回到安全運(yùn)行狀態(tài)。整個(gè)系統(tǒng)設(shè)計(jì)框架如圖1所示。
2 WiMi-net無(wú)線通信的OSI七層模型
為了保證無(wú)線網(wǎng)絡(luò)的穩(wěn)定和可靠,WiMi-net使用無(wú)線通信的OSI(Open System Interconnected)七層模型,并分別定義了各層實(shí)現(xiàn)的功能,如圖2所示。
(1)PHY(物理層):驅(qū)動(dòng)射頻芯片,實(shí)現(xiàn)硬件的初始化、報(bào)文收發(fā)、信道切換、頻率校準(zhǔn)等基礎(chǔ)工作。
(2)MAC(鏈路層):TDMA時(shí)隙的分配、請(qǐng)求、確認(rèn)、鎖定、釋放工作,實(shí)現(xiàn)大量節(jié)點(diǎn)同時(shí)訪問(wèn)網(wǎng)絡(luò)情況下的仲裁,通過(guò)排隊(duì)機(jī)制有序接入網(wǎng)絡(luò)。
?。?)NET(網(wǎng)絡(luò)層):實(shí)現(xiàn)16位網(wǎng)絡(luò)地址和64位MAC地址的尋址、翻譯和路由;實(shí)現(xiàn)任意節(jié)點(diǎn)到任意節(jié)點(diǎn)的全局網(wǎng)絡(luò)路徑生成、解析和路由切換工作。
?。?)TCP(傳輸層):建立TCP傳輸鏈路,實(shí)現(xiàn)數(shù)據(jù)報(bào)文的數(shù)字報(bào)真,在傳輸期間信道鎖定,允許用戶傳輸任意長(zhǎng)度的任意(數(shù)據(jù),命令)數(shù)據(jù)流。
?。?)REP(表示層):實(shí)現(xiàn)數(shù)據(jù)的加密和解密,需要CPU硬件支持AES加密算法。
?。?)TLK(會(huì)話層):會(huì)話級(jí)別CCITT-CRC32校驗(yàn),提供端到端的差錯(cuò)控制技術(shù),使發(fā)送端和接收端立刻了解報(bào)文是否有差錯(cuò)。
?。?)IOS(接口層):實(shí)現(xiàn)WiMi-net核心協(xié)議棧和用戶處理器之間的接口,實(shí)現(xiàn)數(shù)據(jù)的收發(fā)、狀態(tài)的讀取和控制操作,與用戶的應(yīng)用層進(jìn)行對(duì)接。
3 Qt環(huán)境下對(duì)WiMi-net的操作
3.1 WiMi-net接口結(jié)構(gòu)
WiMi-net無(wú)線模塊的接口層遵循一個(gè)特定結(jié)構(gòu)的二進(jìn)制數(shù)據(jù)流。
(1)m_iHeader是固定的同步字符,數(shù)值=0XAA。
?。?)m_iOpCode,該報(bào)文的命令字取值0X00~0XFF之間,每一個(gè)命令有4個(gè)參數(shù):m_iValueA,m_iValueB,m_iValueC,m_iValueD。
(3)m_iAmount是m_pBuffer的長(zhǎng)度,代表前面9個(gè)字節(jié)之后的擴(kuò)展報(bào)文長(zhǎng)度。
?。?)m_iCRCode是16位的CRC計(jì)算結(jié)果。
?。?)m_pBuffer是擴(kuò)展部分的內(nèi)容。
其中,循環(huán)冗余校驗(yàn)碼(Cyclic Redundancy Check,CRC)是數(shù)據(jù)通信領(lǐng)域常用的一種差錯(cuò)校驗(yàn)碼。當(dāng)WiMi-net接收端收到一包數(shù)據(jù)時(shí),先保存原CRC數(shù)據(jù)并重新進(jìn)行CRC計(jì)算,當(dāng)新的計(jì)算結(jié)果與原CRC校驗(yàn)碼不同時(shí),則判斷數(shù)據(jù)出錯(cuò),并丟棄這個(gè)包。本系統(tǒng)為保證良好的實(shí)時(shí)性,當(dāng)發(fā)送端未收到接收端的報(bào)文收到確認(rèn)信息時(shí),會(huì)立即重新發(fā)送數(shù)據(jù)。本系統(tǒng)采用CRC-16查表算法設(shè)計(jì)其接口函數(shù):
unsigned short QuickCRC16(unsigned char*pMsg,unsigned short iSize){
unsigned char index;
unsigned char iHiVal;
unsigned char iLoVal;
iHiVal=0XFF;
iLoVal=0XFF;
while(iSize--){
index=iLoVal^*pMsg++;
iLoVal=iHiVal^HiCRCTable[index];
iHiVal=LoCRCTable[index];
}
return(iHiVal<<8|iLoVal);
}
3.2 WiMi-net無(wú)線通信流程
WiMi-net支持Mesh結(jié)構(gòu)(網(wǎng)狀型網(wǎng)絡(luò),如圖3所示)自組網(wǎng),如果最近的節(jié)點(diǎn)由于流量過(guò)大而導(dǎo)致?lián)砣瑒t數(shù)據(jù)可以自動(dòng)重新路由到一個(gè)通信流量較小的鄰近節(jié)點(diǎn)進(jìn)行傳輸,且同一網(wǎng)絡(luò)下的子節(jié)點(diǎn)可直接進(jìn)行通信。這樣在網(wǎng)絡(luò)中有多條路徑形成回聯(lián),構(gòu)成一個(gè)動(dòng)態(tài)網(wǎng)絡(luò),穩(wěn)固性很好。隨著動(dòng)態(tài)網(wǎng)絡(luò)路徑增多,各WiMi-net模塊之間的通信也更容易避開障礙物的干擾。
基于固定的接口結(jié)構(gòu),對(duì)WiMi-net的控制取決于特定的命令字。這些命令字可以用來(lái)控制WiMi-net的工作流程。WiMi-net從站發(fā)送數(shù)據(jù)工作流程如圖4所示。
3.3 Qt與WiMi-net串口通信
在第三方Linux串口類Posix_qex tserialport的基礎(chǔ)上聲明一個(gè)對(duì)象myCom,并設(shè)置相應(yīng)的波特率、數(shù)據(jù)位、停止位,讀取緩沖區(qū)方式等初始化配置:
Struct PortSettings myComSetting={BAUD115200,DATA_8,PAR_NONE,STOP_1,F(xiàn)LOW_OFF,10};
myCom=new Win_QextSerialPort("/dev/ttySAC0",myCom Setting,QextSerialBase::Polling);
myCom->open(QIODevice::ReadWrite);
數(shù)據(jù)的轉(zhuǎn)換以及發(fā)送代碼如下:
unsigned char Test[64]={0XAA,0X1D,0XFF,0XFF,0X03,0X01};
for(int i=0;i<17;i++)
str.append(SerialSendlist.at(i));
for(int i=0;i<str.length();i++){
Test[i+9]=*qPrintable(str.mid(i,1));
}
Test[6]=str.length();
if(Add_Crc(Test)){
myCom->write((char*)Test);
}
其中SerialSendlist中是需要發(fā)送的數(shù)據(jù)表。定義一個(gè)unsigned char型數(shù)組,里面寫入了固定的同步字符、廣播形式發(fā)送數(shù)據(jù)等操作字;然后利用循環(huán)以及宏函數(shù)qPrintable將str中的每個(gè)字符以其十六進(jìn)制存入Test[]中,Test[6]中存放的是數(shù)據(jù)長(zhǎng)度;再通過(guò)Add_Crc()函數(shù)向數(shù)組中添加校驗(yàn)碼,如果返回1則向串口寫入數(shù)據(jù)。由于Qt串口類繼承自QIODevice類,其成員函數(shù)write()僅接受char*作為輸入,所以需要將unsigned char型Test數(shù)組強(qiáng)制轉(zhuǎn)換為char型。
接收到的數(shù)據(jù)按0x10進(jìn)行分包。當(dāng)報(bào)文少于16 B時(shí),ValueC的值為0X03,表示僅此一包數(shù)據(jù)。如果收到的數(shù)據(jù)超過(guò)16 B,WiMi-net會(huì)將接收到的數(shù)據(jù)按每16個(gè)進(jìn)行分包,在每個(gè)包前都會(huì)加上類似的幀頭,且Amount均為0X10,在取數(shù)據(jù)的時(shí)候便可以通過(guò)ValueC的值判斷是否是第一包,以及是否到了最后一包,而最后一包共有Amount個(gè)數(shù)據(jù)。通過(guò)ValueC和Amount來(lái)判斷該幀是否發(fā)生數(shù)據(jù)丟失,并取出數(shù)據(jù)。
4 Qt界面設(shè)計(jì)
考慮到嵌入式系統(tǒng)的局限性,本系統(tǒng)使用輕量級(jí)的SQLite數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)管理,并優(yōu)化了線程間的調(diào)度與防碰撞算法。系統(tǒng)分別對(duì)接收到的WiMi-net無(wú)線模塊與傳感器數(shù)據(jù)做分包提取與模數(shù)轉(zhuǎn)換,在得到系統(tǒng)能識(shí)別的數(shù)據(jù)后與一些不會(huì)實(shí)時(shí)改變的信息(如本地塔機(jī)高度、前后臂長(zhǎng)、坐標(biāo)位置、工地大小、形狀、障礙物信息等)一起存入數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)將得到的數(shù)據(jù)送入防碰撞算法模塊進(jìn)行分析,并模擬運(yùn)行狀態(tài)顯示到LCD上。
系統(tǒng)界面如圖5所示。右側(cè)狀態(tài)區(qū)用來(lái)提示系統(tǒng)各種工作狀態(tài),包括碰撞預(yù)警、異常狀態(tài)預(yù)警等,并顯示本地塔機(jī)實(shí)時(shí)運(yùn)行狀態(tài),方便駕駛員清楚地了解本塔機(jī)運(yùn)行情況。左邊是工作區(qū)域模擬運(yùn)行區(qū),本地塔機(jī)為藍(lán)色,其他塔機(jī)為綠色,當(dāng)系統(tǒng)判斷有大概率碰撞危險(xiǎn)產(chǎn)生時(shí),以紅色間斷閃爍作為警示。圖5中三臺(tái)設(shè)備相互間隔地分布在非空曠的100 m~400 m范圍內(nèi),在不添加任何信號(hào)放大設(shè)備的情況下,系統(tǒng)仍然能夠穩(wěn)定運(yùn)行。
5 結(jié)論
本文總結(jié)了傳統(tǒng)基于ZigBee等無(wú)線通信技術(shù)搭建的塔機(jī)監(jiān)控系統(tǒng)的弊端,提出采用WiMi-net無(wú)線模塊與Qt搭建基于新型無(wú)線網(wǎng)絡(luò)的塔機(jī)監(jiān)控系統(tǒng)。實(shí)驗(yàn)證明,該系統(tǒng)傳輸距離遠(yuǎn)、實(shí)時(shí)性能好、交互能力強(qiáng)。但在實(shí)際工程實(shí)踐中,無(wú)線傳輸還需考慮信號(hào)干擾、傳輸安全等諸多問(wèn)題,下一步工作將圍繞相關(guān)課題展開。
參考文獻(xiàn)
[1] FETTE B A.認(rèn)知無(wú)線電技術(shù)[M].趙知?jiǎng)?,鄭仕鏈,尚俊娜,譯.北京:科學(xué)出版社,2008.
[2] 郭長(zhǎng)順.ZigBee技術(shù)MAC層協(xié)議的研究、改進(jìn)與仿真[D].沈陽(yáng):沈陽(yáng)工業(yè)大學(xué),2010.
[3] 楊世超.基于CC2430的ZigBee節(jié)點(diǎn)設(shè)計(jì)及MAC層協(xié)議改進(jìn)[D].上海:上海交通大學(xué),2012.
[4] 李皓明,周悅.無(wú)線傳感器網(wǎng)絡(luò)在塔式起重機(jī)監(jiān)控系統(tǒng)中的研究與應(yīng)用[J].建筑機(jī)械,2012(13):69-71.
[5] 宋宇宙,蘇娟,何清.塔機(jī)在線無(wú)線遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)[J].傳感器與微系統(tǒng),2012,31(2):102-105.
[6] 鄭夕健,李林,費(fèi)燁.塔機(jī)群WLAN通信系統(tǒng)研究[J].山東通信技術(shù),2009,29(1):11-14.