摘 要: 針對傳統(tǒng)塔機監(jiān)測防撞系統(tǒng)中操作不便、ZigBee無線傳輸距離短、網(wǎng)絡(luò)節(jié)點較多而導(dǎo)致時實性差等問題,提出了一種基于WiMi-net(Wireless Micro-network)無線通信模塊的解決方案。利用Qt良好的交互能力與WiMi-net無線模塊特性,搭建了一套傳輸距離遠、可靠性高、實時性強的新型塔機監(jiān)測防撞系統(tǒng)。
關(guān)鍵詞: 塔機監(jiān)測;WiMi-net;Qt;無線通信;實時性
0 引言
隨著建筑業(yè)規(guī)模不斷擴大,建筑作業(yè)逐漸變得密集化,同一工作區(qū)域往往存在多臺塔機同時作業(yè)。以往靠塔機駕駛員與地面指揮人員主觀判斷進行避障的方式已無法適應(yīng)當(dāng)前復(fù)雜的塔機工作環(huán)境。塔機監(jiān)測防撞系統(tǒng)用于實時地采集各塔機以及障礙物信息,各塔機信息通過無線模塊相互傳遞,并進入防碰撞系統(tǒng)進行分析。當(dāng)系統(tǒng)判斷當(dāng)前操作有可能發(fā)生危險時,可以及時提醒駕駛員,從而避免險情發(fā)生。鑒于預(yù)險系統(tǒng)中快速響應(yīng)的重要性,無線模塊的實時性必須得到保障。
隨著ZigBee的普及,ZigBee在塔機通信中的應(yīng)用已經(jīng)有部分研究成果,但是傳統(tǒng)ZigBee無線模塊一般都基于CC2430、CC2530射頻芯片,它們的射頻(Radio Frequency)均為2.4 GHz,屬于視距通信頻帶。這種頻段的信號波長較短,因而傳輸距離與穿透能力都受到限制[1]。利用ZigBee模塊進行遠距離傳輸往往需要加上多級放大電路。值得一提的是,由于ZigBee采用CSMA/CA(隨機接入信道技術(shù))接入MAC層,且不支持時分復(fù)用的信道接入方式[2],節(jié)點會在發(fā)送數(shù)據(jù)之前監(jiān)聽信道,如果信道忙則進行隨機退避,即延遲一段隨機時間。如果再次監(jiān)聽信道忙,這個退避時間還要增倍。這樣就造成了發(fā)送數(shù)據(jù)所需要時間的不確定性,因此不能很好地支持實時性要求較高的業(yè)務(wù)。為解決節(jié)點數(shù)量上升帶來的傳輸延遲問題,參考文獻[3]提出了基于Markov模型的改進CSMA/CA退避算法,有效減少了傳輸延遲。但由于該算法本身建立在IEEE802.15.4標準(針對低速無線個人區(qū)域網(wǎng)絡(luò)制定標準)之上,因此傳輸速率仍不夠理想。
參考文獻[4-5]提出了基于ZigBee+GPRS以解決ZigBee傳輸距離的方案,但GPRS受GSM網(wǎng)絡(luò)信號質(zhì)量的影響,也無法保證數(shù)據(jù)的實時性。參考文獻[6]將WLAN無線局域網(wǎng)絡(luò)用于塔機群通信,大大提高了數(shù)據(jù)的傳輸速率與距離,但考慮到嵌入式系統(tǒng)的限制,并不適合運行高功耗的WLAN網(wǎng)絡(luò)。
基于此,本文提出了一種采用WiMi-net無線模塊的解決方案。WiMi-net無線模塊內(nèi)部集成一塊CC1101射頻芯片,該芯片功率達到12 dBm,射頻范圍為433 MHz。低頻電磁波波長大,更容易通過障礙物,因而具有更遠的傳播距離。MAC層采用TDMA(Time Division Multiple Access)按時隙分配信道資源,保證各節(jié)點數(shù)據(jù)信息在其專有時隙內(nèi)及時、可靠地發(fā)送。為了方便駕駛員操作,本系統(tǒng)還使用Qt界面庫設(shè)計了交互界面友好的嵌入式操作界面。
1 系統(tǒng)設(shè)計框架
考慮到系統(tǒng)的實時性與多任務(wù)性,本文采用基于ARM11內(nèi)核的S3C6410核心板,上面搭建了經(jīng)過裁剪的Linux操作系統(tǒng)。系統(tǒng)通過操作Linux串口設(shè)備文件/dev/ttySAC0將操作指令發(fā)送到WiMi-net核心板單片機上,通過WiMi-net接口層協(xié)議,就能很方便地實現(xiàn)數(shù)據(jù)的收發(fā)、狀態(tài)的讀取和控制等操作。WiMi-net片上單片機在物理層驅(qū)動射頻芯片,經(jīng)過功率放大器(Power Amplifier,PA)放大,覆蓋半徑可達到2.5 km,高覆蓋半徑減少了必要的中繼站,加強了數(shù)據(jù)的傳輸速度與可靠性。
本地塔機通過WiMi-net與其他塔機實時交換信息,得到其他塔機當(dāng)前工作狀態(tài)以及預(yù)輸入的障礙物信息,便可由LCD實時模擬整個工地運行狀態(tài),并同時進行異常情況與防碰撞檢測。整個工地運行狀態(tài)通過網(wǎng)絡(luò)發(fā)送到主控室,實現(xiàn)全工地的遠程監(jiān)控。系統(tǒng)在有可能發(fā)生危險的情況下做出語音與界面提示,提示駕駛員注意操作。如果塔機持續(xù)當(dāng)前狀態(tài)運行,系統(tǒng)會在安全范圍內(nèi)接管伸縮電機繼電器與回轉(zhuǎn)電機繼電器,使塔機回到安全運行狀態(tài)。整個系統(tǒng)設(shè)計框架如圖1所示。

2 WiMi-net無線通信的OSI七層模型
為了保證無線網(wǎng)絡(luò)的穩(wěn)定和可靠,WiMi-net使用無線通信的OSI(Open System Interconnected)七層模型,并分別定義了各層實現(xiàn)的功能,如圖2所示。

(1)PHY(物理層):驅(qū)動射頻芯片,實現(xiàn)硬件的初始化、報文收發(fā)、信道切換、頻率校準等基礎(chǔ)工作。
?。?)MAC(鏈路層):TDMA時隙的分配、請求、確認、鎖定、釋放工作,實現(xiàn)大量節(jié)點同時訪問網(wǎng)絡(luò)情況下的仲裁,通過排隊機制有序接入網(wǎng)絡(luò)。
?。?)NET(網(wǎng)絡(luò)層):實現(xiàn)16位網(wǎng)絡(luò)地址和64位MAC地址的尋址、翻譯和路由;實現(xiàn)任意節(jié)點到任意節(jié)點的全局網(wǎng)絡(luò)路徑生成、解析和路由切換工作。
?。?)TCP(傳輸層):建立TCP傳輸鏈路,實現(xiàn)數(shù)據(jù)報文的數(shù)字報真,在傳輸期間信道鎖定,允許用戶傳輸任意長度的任意(數(shù)據(jù),命令)數(shù)據(jù)流。
?。?)REP(表示層):實現(xiàn)數(shù)據(jù)的加密和解密,需要CPU硬件支持AES加密算法。
?。?)TLK(會話層):會話級別CCITT-CRC32校驗,提供端到端的差錯控制技術(shù),使發(fā)送端和接收端立刻了解報文是否有差錯。
(7)IOS(接口層):實現(xiàn)WiMi-net核心協(xié)議棧和用戶處理器之間的接口,實現(xiàn)數(shù)據(jù)的收發(fā)、狀態(tài)的讀取和控制操作,與用戶的應(yīng)用層進行對接。
3 Qt環(huán)境下對WiMi-net的操作
3.1 WiMi-net接口結(jié)構(gòu)
WiMi-net無線模塊的接口層遵循一個特定結(jié)構(gòu)的二進制數(shù)據(jù)流。
?。?)m_iHeader是固定的同步字符,數(shù)值=0XAA。
(2)m_iOpCode,該報文的命令字取值0X00~0XFF之間,每一個命令有4個參數(shù):m_iValueA,m_iValueB,m_iValueC,m_iValueD。
?。?)m_iAmount是m_pBuffer的長度,代表前面9個字節(jié)之后的擴展報文長度。
?。?)m_iCRCode是16位的CRC計算結(jié)果。
(5)m_pBuffer是擴展部分的內(nèi)容。
其中,循環(huán)冗余校驗碼(Cyclic Redundancy Check,CRC)是數(shù)據(jù)通信領(lǐng)域常用的一種差錯校驗碼。當(dāng)WiMi-net接收端收到一包數(shù)據(jù)時,先保存原CRC數(shù)據(jù)并重新進行CRC計算,當(dāng)新的計算結(jié)果與原CRC校驗碼不同時,則判斷數(shù)據(jù)出錯,并丟棄這個包。本系統(tǒng)為保證良好的實時性,當(dāng)發(fā)送端未收到接收端的報文收到確認信息時,會立即重新發(fā)送數(shù)據(jù)。本系統(tǒng)采用CRC-16查表算法設(shè)計其接口函數(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無線通信流程

WiMi-net支持Mesh結(jié)構(gòu)(網(wǎng)狀型網(wǎng)絡(luò),如圖3所示)自組網(wǎng),如果最近的節(jié)點由于流量過大而導(dǎo)致?lián)砣?,則數(shù)據(jù)可以自動重新路由到一個通信流量較小的鄰近節(jié)點進行傳輸,且同一網(wǎng)絡(luò)下的子節(jié)點可直接進行通信。這樣在網(wǎng)絡(luò)中有多條路徑形成回聯(lián),構(gòu)成一個動態(tài)網(wǎng)絡(luò),穩(wěn)固性很好。隨著動態(tài)網(wǎng)絡(luò)路徑增多,各WiMi-net模塊之間的通信也更容易避開障礙物的干擾。
基于固定的接口結(jié)構(gòu),對WiMi-net的控制取決于特定的命令字。這些命令字可以用來控制WiMi-net的工作流程。WiMi-net從站發(fā)送數(shù)據(jù)工作流程如圖4所示。

3.3 Qt與WiMi-net串口通信
在第三方Linux串口類Posix_qex tserialport的基礎(chǔ)上聲明一個對象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ù)表。定義一個unsigned char型數(shù)組,里面寫入了固定的同步字符、廣播形式發(fā)送數(shù)據(jù)等操作字;然后利用循環(huán)以及宏函數(shù)qPrintable將str中的每個字符以其十六進制存入Test[]中,Test[6]中存放的是數(shù)據(jù)長度;再通過Add_Crc()函數(shù)向數(shù)組中添加校驗碼,如果返回1則向串口寫入數(shù)據(jù)。由于Qt串口類繼承自QIODevice類,其成員函數(shù)write()僅接受char*作為輸入,所以需要將unsigned char型Test數(shù)組強制轉(zhuǎn)換為char型。
接收到的數(shù)據(jù)按0x10進行分包。當(dāng)報文少于16 B時,ValueC的值為0X03,表示僅此一包數(shù)據(jù)。如果收到的數(shù)據(jù)超過16 B,WiMi-net會將接收到的數(shù)據(jù)按每16個進行分包,在每個包前都會加上類似的幀頭,且Amount均為0X10,在取數(shù)據(jù)的時候便可以通過ValueC的值判斷是否是第一包,以及是否到了最后一包,而最后一包共有Amount個數(shù)據(jù)。通過ValueC和Amount來判斷該幀是否發(fā)生數(shù)據(jù)丟失,并取出數(shù)據(jù)。
4 Qt界面設(shè)計
考慮到嵌入式系統(tǒng)的局限性,本系統(tǒng)使用輕量級的SQLite數(shù)據(jù)庫進行數(shù)據(jù)管理,并優(yōu)化了線程間的調(diào)度與防碰撞算法。系統(tǒng)分別對接收到的WiMi-net無線模塊與傳感器數(shù)據(jù)做分包提取與模數(shù)轉(zhuǎn)換,在得到系統(tǒng)能識別的數(shù)據(jù)后與一些不會實時改變的信息(如本地塔機高度、前后臂長、坐標位置、工地大小、形狀、障礙物信息等)一起存入數(shù)據(jù)庫,數(shù)據(jù)庫將得到的數(shù)據(jù)送入防碰撞算法模塊進行分析,并模擬運行狀態(tài)顯示到LCD上。

系統(tǒng)界面如圖5所示。右側(cè)狀態(tài)區(qū)用來提示系統(tǒng)各種工作狀態(tài),包括碰撞預(yù)警、異常狀態(tài)預(yù)警等,并顯示本地塔機實時運行狀態(tài),方便駕駛員清楚地了解本塔機運行情況。左邊是工作區(qū)域模擬運行區(qū),本地塔機為藍色,其他塔機為綠色,當(dāng)系統(tǒng)判斷有大概率碰撞危險產(chǎn)生時,以紅色間斷閃爍作為警示。圖5中三臺設(shè)備相互間隔地分布在非空曠的100 m~400 m范圍內(nèi),在不添加任何信號放大設(shè)備的情況下,系統(tǒng)仍然能夠穩(wěn)定運行。
5 結(jié)論
本文總結(jié)了傳統(tǒng)基于ZigBee等無線通信技術(shù)搭建的塔機監(jiān)控系統(tǒng)的弊端,提出采用WiMi-net無線模塊與Qt搭建基于新型無線網(wǎng)絡(luò)的塔機監(jiān)控系統(tǒng)。實驗證明,該系統(tǒng)傳輸距離遠、實時性能好、交互能力強。但在實際工程實踐中,無線傳輸還需考慮信號干擾、傳輸安全等諸多問題,下一步工作將圍繞相關(guān)課題展開。
參考文獻
[1] FETTE B A.認知無線電技術(shù)[M].趙知勁,鄭仕鏈,尚俊娜,譯.北京:科學(xué)出版社,2008.
[2] 郭長順.ZigBee技術(shù)MAC層協(xié)議的研究、改進與仿真[D].沈陽:沈陽工業(yè)大學(xué),2010.
[3] 楊世超.基于CC2430的ZigBee節(jié)點設(shè)計及MAC層協(xié)議改進[D].上海:上海交通大學(xué),2012.
[4] 李皓明,周悅.無線傳感器網(wǎng)絡(luò)在塔式起重機監(jiān)控系統(tǒng)中的研究與應(yīng)用[J].建筑機械,2012(13):69-71.
[5] 宋宇宙,蘇娟,何清.塔機在線無線遠程監(jiān)控系統(tǒng)設(shè)計[J].傳感器與微系統(tǒng),2012,31(2):102-105.
[6] 鄭夕健,李林,費燁.塔機群WLAN通信系統(tǒng)研究[J].山東通信技術(shù),2009,29(1):11-14.
