1引言
近年來(lái),近距離的數(shù)字化智能數(shù)據(jù)采集與控制系統(tǒng)得到了普遍應(yīng)用,,流行的結(jié)構(gòu)是以PC機(jī)、筆記本電腦,、工控機(jī)等作為上位機(jī),,以單片機(jī)、嵌入式系統(tǒng)作為下位機(jī),,通過(guò)串行通信,、488總線、CAN總線,、以太網(wǎng)等多種方式進(jìn)行數(shù)據(jù)傳輸,。這些有線數(shù)據(jù)傳輸系統(tǒng)具有布線不便、通信電纜容易受損等弊端,。
隨著無(wú)線數(shù)據(jù)通信技術(shù)的日益成熟,,在工業(yè)控制,、檢測(cè)與測(cè)量領(lǐng)域,無(wú)線自動(dòng)化(WirelessAutomation)已經(jīng)成為人們關(guān)注的焦點(diǎn),,迫切需要低成本,、高可靠、低功耗的無(wú)線數(shù)據(jù)傳輸方案代替有線系統(tǒng),。藍(lán)牙作為一種電纜替代技術(shù),,可以方便地實(shí)現(xiàn)設(shè)備之間的無(wú)線連接,具有低成本,、低功耗,、高速率、抗干擾能力強(qiáng),、組網(wǎng)靈活等特點(diǎn),,是實(shí)現(xiàn)近距離無(wú)線數(shù)據(jù)傳輸?shù)睦硐脒x擇[1]。當(dāng)前主要的掌上電腦(PocketPC)和智能手機(jī)(Smartphone)均支持藍(lán)牙協(xié)議,。
同時(shí),,隨著掌上終端處理能力的不斷增強(qiáng),以掌上終端作為上位機(jī)控制中心成為可能,,掌上終端攜帶方便,,尤其適用于野外或復(fù)雜條件下的現(xiàn)場(chǎng)控制。
本文基于掌上智能終端實(shí)現(xiàn)對(duì)分布式數(shù)據(jù)采集系統(tǒng)的藍(lán)牙無(wú)線控制,,在掌上終端的主流操作系統(tǒng)WindowsMobile上實(shí)現(xiàn)基于不同藍(lán)牙協(xié)議棧的終端設(shè)備控制與數(shù)據(jù)通信,,完成數(shù)據(jù)的實(shí)時(shí)無(wú)線傳輸。能夠設(shè)置多個(gè)采集終端的數(shù)據(jù)采集參數(shù)并實(shí)時(shí)無(wú)線回收數(shù)據(jù),,保證數(shù)據(jù)采集的實(shí)時(shí)性,、數(shù)據(jù)可靠性和軟件系統(tǒng)穩(wěn)定性。
2掌上終端控制的藍(lán)牙微微網(wǎng)無(wú)線數(shù)據(jù)采集系統(tǒng)
2.1系統(tǒng)結(jié)構(gòu)
如圖1所示,,多個(gè)藍(lán)牙無(wú)線數(shù)據(jù)采集器組成藍(lán)牙微微網(wǎng),,與掌上終端通過(guò)藍(lán)牙連接進(jìn)行控制信令傳輸及數(shù)據(jù)通信。掌上終端識(shí)別網(wǎng)內(nèi)的數(shù)據(jù)采集器,,發(fā)送控制命令并實(shí)時(shí)顯示回收的數(shù)據(jù),。藍(lán)牙無(wú)線數(shù)據(jù)采集器在掌上終端的控制下設(shè)置數(shù)據(jù)采集參數(shù),啟動(dòng)或停止數(shù)據(jù)采集,,實(shí)時(shí)采集所需要的現(xiàn)場(chǎng)信號(hào),,并通過(guò)藍(lán)牙微微網(wǎng),將數(shù)據(jù)無(wú)線回傳至掌上系統(tǒng),。
圖1掌上終端控制的藍(lán)牙微微網(wǎng)無(wú)線數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)圖
2.2藍(lán)牙無(wú)線數(shù)據(jù)采集器
各數(shù)據(jù)采集器通過(guò)距離,、壓力、溫度等傳感器將目標(biāo)物理量轉(zhuǎn)換為電信號(hào),,并由A/D轉(zhuǎn)換器轉(zhuǎn)換為數(shù)字信號(hào),。數(shù)據(jù)采集器上配接藍(lán)牙模塊,,通過(guò)UART與藍(lán)牙模塊連接,數(shù)據(jù)的收發(fā)通過(guò)讀寫UART寄存器來(lái)完成,。采集器通過(guò)藍(lán)牙鏈路接收來(lái)自掌上控制器的命令及采集參數(shù),并將各時(shí)刻的數(shù)據(jù)組織為幀結(jié)構(gòu),,發(fā)送至掌上控制終端,。
2.3掌上智能控制終端系統(tǒng)
掌上終端代替PC機(jī)、筆記本電腦,、工控機(jī)等作為現(xiàn)場(chǎng)數(shù)據(jù)采集系統(tǒng)的上位機(jī),,是現(xiàn)場(chǎng)數(shù)據(jù)采集與控制中心及數(shù)據(jù)接收中心,主要任務(wù)包括:藍(lán)牙數(shù)據(jù)采集器管理及傳感器校正,、數(shù)據(jù)采集器參數(shù)設(shè)置,、數(shù)據(jù)采集控制、無(wú)線數(shù)據(jù)接收,、實(shí)時(shí)顯示與數(shù)據(jù)存儲(chǔ),、回放。
基于掌上智能終端內(nèi)嵌的藍(lán)牙模塊,,調(diào)用相應(yīng)的協(xié)議棧庫(kù)函數(shù)即可完成藍(lán)牙的相關(guān)操作,。數(shù)據(jù)采集器管理模塊負(fù)責(zé)設(shè)備查找與設(shè)備安全認(rèn)證;采集參數(shù)攝制及控制模塊向采集器發(fā)送工作控制命令,;無(wú)線數(shù)據(jù)接收模塊實(shí)時(shí)接收采集器數(shù)據(jù)并提供圖形化顯示,;實(shí)時(shí)采集的數(shù)據(jù)按照約定格式存放在指定文件中,并根據(jù)需要提供歷史數(shù)據(jù)回放,。
2.4藍(lán)牙微微網(wǎng)無(wú)線數(shù)據(jù)通信
藍(lán)牙是一種短距離低功耗無(wú)線傳輸技術(shù),,工作于2.4GHz的ISM頻段[2]。藍(lán)牙通信協(xié)議棧分為四層,,其中核心層為基帶協(xié)議層(BaseBand)鏈路管理協(xié)議(LMP),、邏輯鏈接控制和適配協(xié)議(L2CAP)以及服務(wù)發(fā)現(xiàn)協(xié)議(SDP),核心層之上為電纜替代協(xié)議(RFCOMM)與電話傳送控制協(xié)議(TCS-Binary)[2],。本系統(tǒng)藍(lán)牙無(wú)線傳輸工作在RFCOMM協(xié)議上,,利用SerialPortProfile將藍(lán)牙設(shè)備虛擬成串口設(shè)備,數(shù)據(jù)的傳輸操作與串口操作相同,,開發(fā)方便,。
3掌上控制系統(tǒng)的工作流程
掌上控制系統(tǒng)的主要功能包括采集參數(shù)設(shè)置、采集器系統(tǒng)自檢,、傳感器校正,、采集控制以及數(shù)據(jù)回顯。參數(shù)設(shè)置模塊設(shè)置采樣間隔,、保存文件路徑,、工程信息等參數(shù),;采集器系統(tǒng)自檢模塊以預(yù)采集的方式啟動(dòng)采集器,檢測(cè)整個(gè)系統(tǒng)軟硬件工作狀態(tài),;傳感器校正模塊實(shí)現(xiàn)各傳感器的零漂糾正及系數(shù)率定,;采集控制模塊控制采集器的數(shù)據(jù)采樣啟動(dòng)與結(jié)束,接收并處理數(shù)據(jù),,完成數(shù)據(jù)的實(shí)時(shí)顯示及保存,;數(shù)據(jù)回顯模塊從文件讀取歷史數(shù)據(jù)并顯示。
4主要功能實(shí)現(xiàn)
4.1數(shù)據(jù)幀藍(lán)牙
數(shù)據(jù)通信中,,命令幀結(jié)構(gòu)與數(shù)據(jù)幀的約定如下:命令幀由兩位命令標(biāo)識(shí),、四位命令參數(shù)和兩位結(jié)束符組成,如IT0001ZZ,,IT代表設(shè)置采樣間隔命令,,0001約定為采樣間隔為0.01ms,ZZ為統(tǒng)一結(jié)束符,。數(shù)據(jù)幀由兩位機(jī)器識(shí)別碼,、兩位數(shù)據(jù)和兩位結(jié)束符組成,如A1HLZZ,;其中H表示16進(jìn)制數(shù)據(jù)的高位,L代表低位,。
每次采集傳輸數(shù)據(jù)時(shí),終端無(wú)間隔采集并傳送5組數(shù)據(jù),,在掌上控制終端進(jìn)行中值濾波,,以減小誤差。
4.2藍(lán)牙設(shè)備發(fā)現(xiàn)與連接實(shí)現(xiàn)
4.2.1基于微軟協(xié)議棧的藍(lán)牙傳輸
實(shí)現(xiàn)基于微軟的藍(lán)牙驅(qū)動(dòng),,開發(fā)簡(jiǎn)單,。通過(guò)使用Socket實(shí)現(xiàn)通信連接。
發(fā)現(xiàn)設(shè)備需要用到三個(gè)Winsock的API,,分別是WSALookupServiceBegin,、WSALookupServiceNext和WSALookupServiceEnd。頭文件為Winsock2.h,,庫(kù)文件為Ws2_32.lib,。
使用Socket設(shè)備發(fā)現(xiàn)的代碼如下:
WSALookupServiceBegin(&querySet,LUP_CONTAINERS,&hLookup);WSALookupServiceNext(hLookup,flags,&dwSize,pwsaResults)WSALookupServiceEnd(hLookup);
利用pwsaResults返回的藍(lán)牙物理地址與GUID做為socket連接參數(shù),可與目的設(shè)備進(jìn)行連接,。代碼如下:
SOCKETm_socketClient=socket(AF_BT,SOCK_STREAM,
BTHPROTO_RFCOMM);connect(m_socketClient,(SOCKADDR*)&sa,sizeof(sa))進(jìn)行設(shè)備連接,。連接成功后,可用下列代碼進(jìn)行數(shù)據(jù)收發(fā):
recv(p->m_socketClient,buf,1024,0);send(m_socketClient,(char*)buf,nSize,0);
4.2.2基于widcomm協(xié)議棧的藍(lán)牙傳輸實(shí)現(xiàn)
使用如下語(yǔ)句啟動(dòng)查詢:
StartInquiry();
VoidOnDeviceResponded(BD_ADDRbda,DEV_CLASSdevClass,BD_NAMEbdName,BOOLbConnected)
bda為返回設(shè)備地址,,bdName為返回設(shè)備名稱,。當(dāng)查詢時(shí)間結(jié)束時(shí),響應(yīng)查詢定時(shí)器函數(shù),開啟服務(wù)查找線程:
StartDiscovery(m_BdAddr,m_pServiceGuid);
Widcomm提供了各種協(xié)議的不同連接方式,,基于RFCOMM協(xié)議的SPP連接代碼如下:
CSppClient::CreateConnection(m_BdAddr,m_serviceName);
當(dāng)設(shè)備連接成功,,可以返回相關(guān)狀態(tài):
VoidOnClientStateChange(BD_ADDRbda,DEV_CLASSdev_class,BD_NAMEname,shortcom_port,SPP_STATE_CODEstate)
使用函數(shù)返回的com_port為串口號(hào)建立串口操作
CreateFile(buff,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL)。
4.3設(shè)備安全認(rèn)證
無(wú)線信道具有開放性的特點(diǎn),,在有效的距離范圍內(nèi)任何符合頻率的接收機(jī)都能將信號(hào)捕獲,。所以,無(wú)線數(shù)據(jù)傳輸?shù)陌踩允窍到y(tǒng)設(shè)計(jì)的重點(diǎn)問(wèn)題之一,。本系統(tǒng)通過(guò)三種途徑確保無(wú)線數(shù)傳的安全,。
一是利用藍(lán)牙標(biāo)準(zhǔn)中的信道標(biāo)準(zhǔn)來(lái)保障。藍(lán)牙的工作頻率為2.4GHZ,,覆蓋范圍是相隔1MHz的79個(gè)通道(從2.402GHz到2.480GHz)[2]。數(shù)據(jù)傳輸技術(shù)使用短封包,,運(yùn)用了跳頻展頻技術(shù),,跳頻頻率為1600次/秒,這樣從物理層上防止了偷聽和避免了干擾,。但是這對(duì)使用藍(lán)牙設(shè)備的竊聽和干擾是無(wú)效的,。
二是使用藍(lán)牙系統(tǒng)中的PIN碼。如果傳輸設(shè)備都沒(méi)有PIN的認(rèn)證,,任何一個(gè)藍(lán)牙設(shè)備均可以連接獲取數(shù)據(jù)的傳輸,。設(shè)置PIN碼之后,只有通過(guò)PIN碼認(rèn)證的設(shè)備,,才能進(jìn)行藍(lán)牙設(shè)備的連接和數(shù)據(jù)傳輸,。
三是通過(guò)認(rèn)證命令實(shí)現(xiàn)應(yīng)用層安全認(rèn)證,由移動(dòng)終端發(fā)起設(shè)備認(rèn)證命令,,等待藍(lán)牙數(shù)據(jù)采集器返回就緒狀態(tài)碼,,掌上終端將生成的認(rèn)證碼A裝入特定格式的幀發(fā)送至采集器,采集器通過(guò)算法得到認(rèn)證碼B并返回發(fā)送,,如果認(rèn)證碼均正確,,則互發(fā)確認(rèn)消息,通過(guò)設(shè)備認(rèn)證,。
4.4輪詢模式下的偽同步與實(shí)時(shí)
同步傳輸?shù)亩嗑€程實(shí)現(xiàn)掌上終端控制系統(tǒng)與藍(lán)牙數(shù)據(jù)采集器的連接可采用兩種方式:基于輪詢連接的偽同步模式與實(shí)時(shí)同步連接傳輸,。輪詢模式是掌上控制終端與各采集器分時(shí)連接,同步模式是掌上控制終端與所有采集器同時(shí)連接,,實(shí)現(xiàn)同步控制并完成數(shù)據(jù)傳輸,。
兩種連接模式均利用Windows多線程機(jī)制實(shí)現(xiàn)。為每一個(gè)數(shù)據(jù)采集器開啟獨(dú)立線程,,完成數(shù)據(jù)處理,。兩種模式均通過(guò)事件機(jī)制(Event)進(jìn)行控制,對(duì)于輪詢模式,初始化時(shí)所有數(shù)據(jù)采集處理線程處于掛起狀態(tài),,主程序依次觸發(fā)事件喚醒相應(yīng)線程進(jìn)行數(shù)據(jù)采集處理,。同步模式工作時(shí),主程序同時(shí)觸發(fā)所有事件,,喚醒所有處理線程進(jìn)行采集處理,,每處理完一個(gè)數(shù)據(jù)采集器的數(shù)據(jù),所有的線程同步一次,,從而實(shí)現(xiàn)數(shù)據(jù)在時(shí)間上的同步,。
在待采集數(shù)據(jù)變化緩慢的情況下,如在溫室內(nèi)監(jiān)測(cè)氣溫與濕度,,采樣率低,,采用輪詢模式可以縮短連接時(shí)間,降低設(shè)備功耗,,延長(zhǎng)工作時(shí)間,。而同步模式適用于數(shù)據(jù)變化相對(duì)較快,對(duì)各個(gè)數(shù)據(jù)采集器同步要求高的情況,。
5測(cè)試結(jié)果
掌上系統(tǒng)能夠無(wú)線連接控制4個(gè)數(shù)據(jù)采集終端,,實(shí)時(shí)接收并顯示各數(shù)據(jù)采集器的數(shù)據(jù).在實(shí)時(shí)接收并繪制數(shù)據(jù)曲線的同時(shí),可隨時(shí)執(zhí)行數(shù)據(jù)回顯功能,,實(shí)現(xiàn)曲線縮放,。
掌上終端采用華碩A626,基于內(nèi)置的藍(lán)牙模塊,,與藍(lán)牙數(shù)據(jù)采集器的通信距離達(dá)10m,;如果將數(shù)據(jù)采集模塊藍(lán)牙芯片更換至Class3級(jí)別,則傳輸距離可達(dá)到100m,。本系統(tǒng)傳輸數(shù)據(jù)量不大,,系統(tǒng)通信速率為9.6kbps,可以更好地利用藍(lán)牙的省電模式,。當(dāng)連接4個(gè)藍(lán)牙數(shù)據(jù)采集器,,每個(gè)采集器發(fā)送時(shí)間間隔為10ms時(shí),掌上控制終端同時(shí)接收沒(méi)有出現(xiàn)丟包,。
6結(jié)論
論文基于掌上終端開發(fā)了現(xiàn)場(chǎng)數(shù)據(jù)采集的藍(lán)牙無(wú)線控制系統(tǒng),,解決了藍(lán)牙微微網(wǎng)連接、安全認(rèn)證,、同步處理接收等關(guān)鍵問(wèn)題,,實(shí)現(xiàn)了上位機(jī)的可移動(dòng)化、便攜化,??朔擞芯€數(shù)據(jù)采集控制系統(tǒng)的連線不便、安裝復(fù)雜等缺點(diǎn),可廣泛應(yīng)用于工業(yè)現(xiàn)場(chǎng)控制,,醫(yī)療監(jiān)測(cè),,智能家居等多種不適宜布線的場(chǎng)所
本文作者創(chuàng)新點(diǎn):使用移動(dòng)終端作為上位機(jī),通過(guò)藍(lán)牙微微網(wǎng)技術(shù)以及其他關(guān)鍵技術(shù)同步控制多個(gè)下位機(jī),,并能實(shí)時(shí)處理,、存儲(chǔ)并顯示接收數(shù)據(jù)。
參考文獻(xiàn)
[1]何戟,李孝安,段渭軍,基于藍(lán)牙的移動(dòng)數(shù)據(jù)采集處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J],計(jì)算機(jī)應(yīng)用研究,2006年11期
[2]BluetoothSIG,BluetoothProtocolCoreVersion2.0+EDR[S].2004
[3]陳莉,錢東平,趙東杰,藍(lán)牙技術(shù)在地下水監(jiān)測(cè)系統(tǒng)中的應(yīng)用[J],微計(jì)算機(jī)信息,2007年26期
[4]吳建,,通用型工業(yè)數(shù)據(jù)采集平臺(tái)的設(shè)計(jì)與開發(fā)[J],,微計(jì)算機(jī)信息,2008年24卷第3-3期
[5]王宏,用于局域監(jiān)測(cè)控制系統(tǒng)的無(wú)線數(shù)據(jù)傳輸解決方案[J],計(jì)算機(jī)應(yīng)用與軟件,2008年2期