1引言
近年來,近距離的數(shù)字化智能數(shù)據(jù)采集與控制系統(tǒng)得到了普遍應(yīng)用,流行的結(jié)構(gòu)是以PC機(jī)、筆記本電腦、工控機(jī)等作為上位機(jī),以單片機(jī)、嵌入式系統(tǒng)作為下位機(jī),通過串行通信、488總線、CAN總線、以太網(wǎng)等多種方式進(jìn)行數(shù)據(jù)傳輸。這些有線數(shù)據(jù)傳輸系統(tǒng)具有布線不便、通信電纜容易受損等弊端。
隨著無線數(shù)據(jù)通信技術(shù)的日益成熟,在工業(yè)控制、檢測(cè)與測(cè)量領(lǐng)域,無線自動(dòng)化(WirelessAutomation)已經(jīng)成為人們關(guān)注的焦點(diǎn),迫切需要低成本、高可靠、低功耗的無線數(shù)據(jù)傳輸方案代替有線系統(tǒng)。藍(lán)牙作為一種電纜替代技術(shù),可以方便地實(shí)現(xiàn)設(shè)備之間的無線連接,具有低成本、低功耗、高速率、抗干擾能力強(qiáng)、組網(wǎng)靈活等特點(diǎn),是實(shí)現(xiàn)近距離無線數(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)牙無線控制,在掌上終端的主流操作系統(tǒng)WindowsMobile上實(shí)現(xiàn)基于不同藍(lán)牙協(xié)議棧的終端設(shè)備控制與數(shù)據(jù)通信,完成數(shù)據(jù)的實(shí)時(shí)無線傳輸。能夠設(shè)置多個(gè)采集終端的數(shù)據(jù)采集參數(shù)并實(shí)時(shí)無線回收數(shù)據(jù),保證數(shù)據(jù)采集的實(shí)時(shí)性、數(shù)據(jù)可靠性和軟件系統(tǒng)穩(wěn)定性。
2掌上終端控制的藍(lán)牙微微網(wǎng)無線數(shù)據(jù)采集系統(tǒng)
2.1系統(tǒng)結(jié)構(gòu)
如圖1所示,多個(gè)藍(lán)牙無線數(shù)據(jù)采集器組成藍(lán)牙微微網(wǎng),與掌上終端通過藍(lán)牙連接進(jìn)行控制信令傳輸及數(shù)據(jù)通信。掌上終端識(shí)別網(wǎng)內(nèi)的數(shù)據(jù)采集器,發(fā)送控制命令并實(shí)時(shí)顯示回收的數(shù)據(jù)。藍(lán)牙無線數(shù)據(jù)采集器在掌上終端的控制下設(shè)置數(shù)據(jù)采集參數(shù),啟動(dòng)或停止數(shù)據(jù)采集,實(shí)時(shí)采集所需要的現(xiàn)場(chǎng)信號(hào),并通過藍(lán)牙微微網(wǎng),將數(shù)據(jù)無線回傳至掌上系統(tǒng)。
圖1掌上終端控制的藍(lán)牙微微網(wǎng)無線數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)圖
2.2藍(lán)牙無線數(shù)據(jù)采集器
各數(shù)據(jù)采集器通過距離、壓力、溫度等傳感器將目標(biāo)物理量轉(zhuǎn)換為電信號(hào),并由A/D轉(zhuǎn)換器轉(zhuǎn)換為數(shù)字信號(hào)。數(shù)據(jù)采集器上配接藍(lán)牙模塊,通過UART與藍(lán)牙模塊連接,數(shù)據(jù)的收發(fā)通過讀寫UART寄存器來完成。采集器通過藍(lán)牙鏈路接收來自掌上控制器的命令及采集參數(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ù)采集控制、無線數(shù)據(jù)接收、實(shí)時(shí)顯示與數(shù)據(jù)存儲(chǔ)、回放。
基于掌上智能終端內(nèi)嵌的藍(lán)牙模塊,調(diào)用相應(yīng)的協(xié)議棧庫函數(shù)即可完成藍(lán)牙的相關(guān)操作。數(shù)據(jù)采集器管理模塊負(fù)責(zé)設(shè)備查找與設(shè)備安全認(rèn)證;采集參數(shù)攝制及控制模塊向采集器發(fā)送工作控制命令;無線數(shù)據(jù)接收模塊實(shí)時(shí)接收采集器數(shù)據(jù)并提供圖形化顯示;實(shí)時(shí)采集的數(shù)據(jù)按照約定格式存放在指定文件中,并根據(jù)需要提供歷史數(shù)據(jù)回放。
2.4藍(lán)牙微微網(wǎng)無線數(shù)據(jù)通信
藍(lán)牙是一種短距離低功耗無線傳輸技術(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)牙無線傳輸工作在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í),終端無間隔采集并傳送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)單。通過使用Socket實(shí)現(xiàn)通信連接。
發(fā)現(xiàn)設(shè)備需要用到三個(gè)Winsock的API,分別是WSALookupServiceBegin、WSALookupServiceNext和WSALookupServiceEnd。頭文件為Winsock2.h,庫文件為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)
使用如下語句啟動(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)證
無線信道具有開放性的特點(diǎn),在有效的距離范圍內(nèi)任何符合頻率的接收機(jī)都能將信號(hào)捕獲。所以,無線數(shù)據(jù)傳輸?shù)陌踩允窍到y(tǒng)設(shè)計(jì)的重點(diǎn)問題之一。本系統(tǒng)通過三種途徑確保無線數(shù)傳的安全。
一是利用藍(lán)牙標(biāo)準(zhǔn)中的信道標(biāo)準(zhǔn)來保障。藍(lán)牙的工作頻率為2.4GHZ,覆蓋范圍是相隔1MHz的79個(gè)通道(從2.402GHz到2.480GHz)[2]。數(shù)據(jù)傳輸技術(shù)使用短封包,運(yùn)用了跳頻展頻技術(shù),跳頻頻率為1600次/秒,這樣從物理層上防止了偷聽和避免了干擾。但是這對(duì)使用藍(lán)牙設(shè)備的竊聽和干擾是無效的。
二是使用藍(lán)牙系統(tǒng)中的PIN碼。如果傳輸設(shè)備都沒有PIN的認(rèn)證,任何一個(gè)藍(lán)牙設(shè)備均可以連接獲取數(shù)據(jù)的傳輸。設(shè)置PIN碼之后,只有通過PIN碼認(rèn)證的設(shè)備,才能進(jìn)行藍(lán)牙設(shè)備的連接和數(shù)據(jù)傳輸。
三是通過認(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ā)送至采集器,采集器通過算法得到認(rèn)證碼B并返回發(fā)送,如果認(rèn)證碼均正確,則互發(fā)確認(rèn)消息,通過設(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ù)處理。兩種模式均通過事件機(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è)備功耗,延長工作時(shí)間。而同步模式適用于數(shù)據(jù)變化相對(duì)較快,對(duì)各個(gè)數(shù)據(jù)采集器同步要求高的情況。
5測(cè)試結(jié)果
掌上系統(tǒng)能夠無線連接控制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í)接收沒有出現(xiàn)丟包。
6結(jié)論
論文基于掌上終端開發(fā)了現(xiàn)場(chǎng)數(shù)據(jù)采集的藍(lán)牙無線控制系統(tǒng),解決了藍(lán)牙微微網(wǎng)連接、安全認(rèn)證、同步處理接收等關(guā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ī),通過藍(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)的無線數(shù)據(jù)傳輸解決方案[J],計(jì)算機(jī)應(yīng)用與軟件,2008年2期