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