摘 要:介紹了一種可進行遠程監測和控制的數據采集系統。多個測控節點組成ZigBee無線傳輸網絡,利用GPRS模塊連接因特網擴展傳輸范圍,與基于LabVIEW的上位機程序進行TCP/IP協議通信,從而實現遠程監控。下位機設計了數據幀和采集控制指令;協調器網關可對數據進行選擇性接收和處理,并實現斷線后自動連接;上位機完成對采集數據的解析、顯示以及保存,并能發送控制指令。
關鍵詞:ZigBee; GPRS; LabVIEW; TCP/IP協議
中圖分類號:TN70534; TP274文獻標識碼:A
文章編號:1004373X(2012)21000103
0 引 言
ZigBee協議是一種基于IEEE 802.15.4標準的低功耗個域網協議,其主要特點是低復雜度、自組織、低功耗、低數據速率以及低成本,普遍應用于自動控制和測量領域,可以嵌入各種設備,是一種數據傳輸可靠性高的近距離無線組網通信技術[1]。而GPRS模塊則是通過手機終端連接因特網來實現數據的雙向傳輸,它的協議規程體現了無線和網絡相結合的特征。因此可以通過GPRS技術來拓展ZigBee測量控制網絡的作用范圍。目前GPRS的數據傳輸主要是基于TCP和UDP兩種通信協議,其中TCP是面向連接的協議,提供IP環境下的數據可靠傳輸,適用于可靠性要求比較高的數據通信系統,而UDP不需要建立連接即可開始傳輸數據,通信效率較高,但可靠度不高,適用于一次只傳輸少量數據的場合[2]。LabVIEW作為一種圖形化編程語言開發環境,為學術界、工業界和研究實驗室所廣泛接受,運用內嵌的TCP/IP網絡通信協議組通信,可以直接調用TCP模塊完成流程圖編寫,而無需過多考慮網絡底層實現,使用該軟件可方便完成上位機測量和控制程序的編制。
1 網絡組建整體方案
系統網絡組成如圖1所示,首先由SHT11數字溫濕度傳感器和CC2530芯片的ADC通道組成傳感器數據輸入通道,輸入的信息經CC2530芯片采集處理后打包無線發送到協調器節點,然后協調器節點利用串口2將數據發送給STC12C5A32S單片機,單片機將收到的數據進一步處理后,通過另一串口把有效數據傳送至華為GTM900C模塊,最后GPRS模塊利用Internet把最終數據發送至上位機,并同時監聽上位機指令,一旦接收到指令將轉發給協調器直至各采集控制節點,從而實現數據的雙向傳輸。
2 下位機數據分析
協調器網關需要把測控節點無線傳輸過來的數據透明發送至上位機,有效的數據幀通過下位機編程為固定長度是20 B的數據,有些字節可變,有些字節是固定的。比如一個數據幀用十六進制表示為:FE 0F 46 87 C6 E9 02 00 09 00 1A 21 00 00 48 9E 00 00 00 07。其中 FE 為每幀開始的字節;0F,02 00,09 00是固定的字節,表示數據包和有效數據位,46 87為接收標志;最后一個字節07是前面19個字節的異或運算值,C6 E9為傳感器節點16位地址號,隨著數據來自不同節點變化;1A為節點溫度的整數部分,換算為十進制值為26 ℃,可變;21為節點10倍片上電壓值,換算至十進制值為33 V,可變;0000為父節點地址;48為節點相對濕度值,轉換至十進制值為72%,可變;9E為節點溫度的小數部分,換算為十進制值的算法是(9×16+15)/256=0.62 ℃,可變;00 00 00為預留下來的3 B,用于其他傳感器節點數據的傳送[3]。
協調器網關同時也接收上位機的命令數據并通過ZigBee網絡發送至具體節點。命令數據為3 B,前2個字節為目標地址,第3個字節為采集控制命令。如設置80為停止采集指令,40為開始采集命令,01,02,03為采集周期選擇命令。協調器地址是固定的十六進制數0x0000,其他傳感器節點地址與之不同,因此當發送的前兩個字節為0000時,可以此做為向全體傳感器節點廣播命令的判據。如果前兩個字節是具體的單個節點地址,則只有相應節點接收到控制命令。
3 ZigBee協調器GPRS網關軟件設計
ZigBee協調器GPRS網關軟件設計流程如圖2所示。其中等待GPRS注冊成功是查看AT+CGREG?指令是否返回1或5,返回則表示GPRS模塊上網注冊成功;APN設置為CMNET;PPP撥號用AT%ETCPIP=\″\″,\″\″″指令;域名解析指令AT%DNSR=″xxxx.3322.org″將返回與此域名綁定的IP;再用連接服務器指令AT%IPOPEN=″TCP″,xxx.xxx.xxx,1234連接上位機IP及監聽端口[46]。
數據傳輸程序的設計是重點,數據傳輸包括將采集到的數據透明上傳至TCP服務器以及上位機指令的檢測和通信是否掉線的檢測。串口2接收到FE0F幀頭后再執行AT指令將有效測量數據透明上傳,收到心跳幀636F 6F6E后也透明上傳,收到其他字符則不處理。當串口1接收緩存中有%IPCLOSE字符串時表示通信斷開,此時則在下位機程序中重新執行連接服務器程序直至再次連接成功,保證數據通信可靠。
4 上位機程序設計
整個上位機軟件設計流程如圖3所示,即編寫一個TCP服務器程序。采用LabVIEW通信工具中TCP Listen來偵聽客戶端的連接請求,建立連接后,利用TCP Read讀取傳輸的數據,工作模式設置為Standard,即等待直至讀取所有“讀取的字節”中指定的字節或“超時毫秒”用完,返回目前已讀取的字節,如字節數少于請求的字節數,則返回部分字節并報告超時錯誤[7]。由于數據幀通過下位機編程為固定長度是20 B的數據,心跳幀為4 B的數據,因此在配置TCP Read函數時,要將“讀取的字節”設置為20,“超時毫秒”設置為0。這樣既可以偵聽到心跳幀,又不至于因心跳幀的4 B打亂數據幀的20 B而導致數據錯誤。程序控制部分可向下位機發送控制指令,實現對單個或多個節點數據采集周期以及開始結束的控制,以適應不同的工作場合。主要原理是利用TCP Wtite函數向已建立的連接發送指令,程序中兩次利用TCP Write函數,第一次寫入指令的長度,第二次寫入指令的內容。
數據處理程序如圖4所示。在數據處理的過程中,只需要處理數據幀,心跳幀是不用進行處理的,因此有必要對心跳幀進行剔除。由于下位機編程時以十六進制FE作為每個數據幀開始的字節,而心跳幀則為十六進制636F 6F6E,因此在服務器程序進行數據處理前可先檢測數據的幀頭,這樣即可將數據幀和心跳幀分別開來。具體做法便是利用String Subset函數截取每幀數據的第一個字節,然后與十六進制FE比較,再運用Case Structure的方式組織,如果相等,則進行處理,不相等的情況則不采取任何動作,只需保持之前的數據即可。這樣不僅可以避免錯誤接收結果,還可提高程序的運行效率。
數據處理部分首先利用String To Byte Array函數將接收的字符串保存為字節數組,然后利用Search 1D Array函數搜索到第三個十六進制字節46,進一步增強數據讀取的可靠性,使用Index Array函數將數組中相應的子節點地址、溫度、相對濕度、電壓值字節數據提取出來,并利用數值運算函數及相應的字符串處理函數將需要的參數以十進制字符串形式送到Chart控件中顯示波形。不同節點的信息需要顯示在不同的Chart控件中,此時的實現思路就是判斷不同節點的地址,然后利用Case Structure進入不同的事件結構。在歷史數據的存儲方面主要是通過Write To Spreadsheet File子VI把數據寫入電子表格,以此來實現歷史數據的方便查看[8]。
整個系統經過調試后運行正常,下位機與上位機連接良好,數據傳輸通暢,運行效果如圖5所示。
5 結 語
下位機設計的網關能夠選擇性透明發送有效數據和心跳幀字節,不僅提高了發送效率,而且保障了上位機接收數據的可靠性, 在服務器與GPRS模塊通信中斷后,會立即重新申請連接直至再次連接成功。上位機程序設計的TCP服務器界面友好而簡潔,能夠分辨出有效數據和心跳幀,并可靠地解析出數據幀的信息,顯示溫度以及濕度的變化趨勢,同時將歷史數據寫入電子表格,方便保存和查看。本系統可移植性強,應用范圍廣,可用與糧情監測以及溫室環境的監測,具有較大的實際參考價值[910]。
參 考 文 獻
[1]朱劍鋒,熊志斌,尹成國.ZigBee無線傳感網絡與IP網絡的網關設計[J].軟件,2011,32(9):5355.
[2]聶明新,鄒宇,莫奎.基于動態IP的GPRS遠程監控系統[J].武漢理工大學學報,2011,10(33):685688.
[3]熊宗接,陳良洲.基于LabVIEW的無線傳感器網絡數據采集[J].測控技術,2012,31(3):4850.
[4]沙國榮,趙不賄,景亮,等.基于ZigBee無線傳感器網絡的溫室大棚環境測控系統設計[J].電子技術應用,2012,38(1):6063.
[5]王欽,陳忠輝,陳新.基于ZigBee的倉庫溫濕度采集系統的設計[J].計算機與數字工程,2009,37(9):207210.
[6]鄧小蕾,鄭立華,車艷雙,等.基于ZigBee和PDA的農田信息無線傳感器網絡[J].農業工程學報,2010,26(2):103108.
[7]劉君華.基于LabVIEW的虛擬儀器設計[M].北京:電子工業出版社,2003.
[8]王天輝,馬立元,張延生.基于LabVlEW的存儲器檢測系統研究[J].現代電子技術,2009,32(24):186188.
[9]王明明,王志霖,袁昊,等.基于MSP430的實用糧倉溫濕度檢測系統[J].現代電子技術,2012,35(2):1012.
[10]田爽,閆晨光.糧倉無線溫度測控及報警系統[J].微計算機信息,2010(6):9192.