李馳1,段智敏1,,叢培田1,張旗2
?。?.沈陽(yáng)理工大學(xué) 機(jī)械工程學(xué)院,,遼寧 沈陽(yáng) 110159;2.國(guó)網(wǎng)遼寧省電力有限公司營(yíng)口供電公司,,遼寧 營(yíng)口 115000)
摘要:針對(duì)工業(yè)上監(jiān)測(cè)現(xiàn)場(chǎng)數(shù)據(jù)采集的遠(yuǎn)程網(wǎng)絡(luò)傳輸需求,,提出了一種基于STM32F103微控制器和SIM900A通信模塊的網(wǎng)絡(luò)多點(diǎn)遠(yuǎn)程數(shù)據(jù)監(jiān)測(cè)系統(tǒng)。STM32下位機(jī)可以完成各傳感器的周期性數(shù)據(jù)采集,,并利用SIM900A模塊實(shí)現(xiàn)其與遠(yuǎn)程上位機(jī)在GPRS網(wǎng)絡(luò)上的不依賴監(jiān)測(cè)現(xiàn)場(chǎng)網(wǎng)絡(luò)環(huán)境的TCP數(shù)據(jù)通信,。系統(tǒng)可以實(shí)現(xiàn)不間斷對(duì)多個(gè)監(jiān)測(cè)點(diǎn)的多個(gè)監(jiān)測(cè)對(duì)象同時(shí)進(jìn)行數(shù)據(jù)采集和遠(yuǎn)程數(shù)據(jù)傳輸。現(xiàn)場(chǎng)實(shí)驗(yàn)表明,,該監(jiān)測(cè)系統(tǒng)穩(wěn)定性高,、實(shí)時(shí)性強(qiáng)、測(cè)量誤差小,、功耗低,,可以滿足工業(yè)上的設(shè)計(jì)要求。
關(guān)鍵詞:數(shù)據(jù)采集,;TCP,;GPRS ;STM32,;SIM900A
中圖分類(lèi)號(hào):TP27文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674-7720.2016.24.030
引用格式:李馳,,段智敏,叢培田,等. 基于STM32和SIM900A的網(wǎng)絡(luò)多點(diǎn)遠(yuǎn)程數(shù)據(jù)監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].微型機(jī)與應(yīng)用,,2016,35(24):105-108.
0引言
在工業(yè)中,,數(shù)據(jù)的采集一直是生產(chǎn)過(guò)程中非常重要的環(huán)節(jié),無(wú)論是機(jī)械的正常運(yùn)轉(zhuǎn)還是作業(yè)環(huán)境的保持,,都離不開(kāi)準(zhǔn)確高效的數(shù)據(jù)采集技術(shù),。
基于嵌入式結(jié)構(gòu)設(shè)計(jì)的數(shù)據(jù)采集系統(tǒng)一般采用RS232、RS485等串口的方式與上位機(jī)進(jìn)行數(shù)據(jù)通信,雖然非??煽?,但受線纜限制,上位機(jī)必須保持在一定的距離內(nèi),。而在某些高溫,、強(qiáng)腐蝕性環(huán)境下,線纜的布置比較困難,,也容易損壞[1],。
隨著科技的進(jìn)步,,移動(dòng)通信技術(shù)迅猛發(fā)展,現(xiàn)在已經(jīng)具有了非常高的穩(wěn)定性,這也使移動(dòng)通信技術(shù)在工業(yè)中應(yīng)用成為可能,。利用現(xiàn)有的GPRS網(wǎng)絡(luò),,發(fā)揮其網(wǎng)絡(luò)覆蓋率高、傳輸特性好的優(yōu)點(diǎn),,為原有的數(shù)據(jù)采集系統(tǒng)提供了一種方便的無(wú)線傳輸功能,。移動(dòng)通信技術(shù)具有布置靈活和可獨(dú)立聯(lián)網(wǎng)的優(yōu)點(diǎn)[2]。
1總體設(shè)計(jì)
本文所設(shè)計(jì)的網(wǎng)絡(luò)多點(diǎn)遠(yuǎn)程數(shù)據(jù)監(jiān)測(cè)系統(tǒng)由下位機(jī)與上位機(jī)組成,,下位機(jī)利用通信模塊與GPRS網(wǎng)絡(luò)直接連接,,實(shí)現(xiàn)了基于TCP的不依賴現(xiàn)場(chǎng)網(wǎng)絡(luò)環(huán)境的可靠網(wǎng)絡(luò)數(shù)據(jù)傳輸。其不僅可以在上位機(jī)上單獨(dú)查看各個(gè)終端上傳的數(shù)據(jù),,還可以對(duì)多個(gè)終端的數(shù)據(jù)進(jìn)行交叉分析,,大大提高了采集效率和數(shù)據(jù)的利用率。
其中,,下位機(jī)可大體分為STM32微控制器,、SIM900A通信模塊和多傳感器三部分。整套設(shè)備的成本非常低廉,,STM32微控制器與SIM900A通信模塊組成的核心部件僅需幾十元錢(qián),,用戶可根據(jù)需求選擇理想的傳感器模塊。上位機(jī)程序采用基于C++語(yǔ)言的Qt設(shè)計(jì),,下位機(jī)與上位機(jī)之間通過(guò)TCP協(xié)議傳輸網(wǎng)絡(luò)數(shù)據(jù),,每臺(tái)上位機(jī)均可以接收多個(gè)終端的傳感器上傳的數(shù)據(jù)。系統(tǒng)的總體設(shè)計(jì)框圖如圖1所示,。
2硬件設(shè)計(jì)
網(wǎng)絡(luò)多點(diǎn)遠(yuǎn)程數(shù)據(jù)監(jiān)測(cè)系統(tǒng)可以完成幾乎所有種類(lèi)的數(shù)據(jù)采集,。因篇幅有限,本文以溫度數(shù)據(jù)采集為例介紹整個(gè)系統(tǒng)的框架結(jié)構(gòu)以及具體實(shí)現(xiàn)方法,。 其他種類(lèi)的數(shù)據(jù)采集,,設(shè)計(jì)邏輯與溫度數(shù)據(jù)采集基本相同,只需在下位機(jī)主程序循環(huán)中加入相應(yīng)傳感器的采集子程序和數(shù)據(jù)發(fā)送流程即可,。
遠(yuǎn)程設(shè)備被安裝在監(jiān)測(cè)現(xiàn)場(chǎng)上,,其通過(guò)各種傳感器采集數(shù)據(jù),經(jīng)STM32微控制器處理發(fā)送至SIM900A通信模塊,,通信模塊會(huì)通過(guò)端口將TCP數(shù)據(jù)從GPRS網(wǎng)絡(luò)發(fā)送給上位機(jī),。上位機(jī)根據(jù)設(shè)備號(hào)的不同區(qū)別各個(gè)下位機(jī)。該系統(tǒng)的硬件電路圖如圖2所示,。
2.1STM32F103ZET6微控制器
STM32F103ZET6增強(qiáng)型微控制器使用高性能的ARM CortexTM-M3 32位的RISC內(nèi)核,,工作頻率為72 MHz,其具有112個(gè)GPIO接口,,多種復(fù)用功能,,具有非常高的可開(kāi)發(fā)性[3],。
它的綜合性能高,運(yùn)行穩(wěn)定,,價(jià)格便宜,,在工業(yè)應(yīng)用中廣為使用,是很多工程項(xiàng)目的理想解決方案[4],。
2.2SIM900A通信模塊
無(wú)線通信模塊采用SIM900A芯片實(shí)現(xiàn),,主要負(fù)責(zé)實(shí)現(xiàn)與遠(yuǎn)程終端的數(shù)據(jù)傳輸功能。SIM900A模塊是一款尺寸緊湊,、內(nèi)置TCP/IP協(xié)議棧的GSM/GPRS模塊[5]。
2.3DS18B20溫度傳感器
DS18B20是美信公司的一款溫度傳感器,,單片機(jī)可以通過(guò)1Wire協(xié)議與DS18B20進(jìn)行通信[6],。
3軟件設(shè)計(jì)
本文所設(shè)計(jì)的系統(tǒng)由下位機(jī)程序與上位機(jī)程序兩部分組成。其中下位機(jī)STM32程序負(fù)責(zé)數(shù)據(jù)采集以及定時(shí)將各種數(shù)據(jù)以TCP協(xié)議經(jīng)由SIM900A模塊發(fā)送給上位機(jī),。而上位機(jī)程序負(fù)責(zé)監(jiān)聽(tīng)各端口TCP通信,,處理由端口傳入的TCP數(shù)據(jù)。
3.1下位機(jī)程序設(shè)計(jì)
下位機(jī)程序由主程序,、發(fā)送TCP數(shù)據(jù)子程序和測(cè)量溫度子程序三部分組成,,均通過(guò)C語(yǔ)言進(jìn)行設(shè)計(jì)。三個(gè)模塊合作完成數(shù)據(jù)采集和上傳工作,。
3.1.1主程序
STM32主程序負(fù)責(zé)初始化各寄存器以及周期性地調(diào)用各功能子程序以采集數(shù)據(jù)并將采集到的數(shù)據(jù)通過(guò)GPRS網(wǎng)絡(luò)發(fā)送給各上位機(jī),。這里需要注意的是,圖3主程序流程圖STM32微控制器的GPIO口和復(fù)用功能均有獨(dú)立的時(shí)鐘,,使用前必須進(jìn)行初始化,,否則各外設(shè)無(wú)法正常工作。SysTick時(shí)鐘用來(lái)產(chǎn)生心跳中斷,,實(shí)現(xiàn)延時(shí)功能,。其系統(tǒng)流程圖如圖3所示。
3.1.2 發(fā)送TCP數(shù)據(jù)子程序
SIM900A通信模塊采用串行接口與STM32進(jìn)行通信,。STM32應(yīng)用AT指令與SIM900A通信[7],。本文主要應(yīng)用SIM900A的TCP通信功能,涉及關(guān)于TCP協(xié)議的主要指令如表1所示,。
跟據(jù)AT指令以及相應(yīng)的指令格式,,數(shù)據(jù)發(fā)送子程序的流程如圖4所示
3.1.3測(cè)量溫度傳感器子程序
DS18B20溫度傳感器采用1Wire協(xié)議與STM32微控制器進(jìn)行通信,它只有一個(gè)DQ引腳負(fù)責(zé)傳遞數(shù)據(jù),,具有非常復(fù)雜的軟件時(shí)序,。其程序流程圖如圖5所示。
3.2上位機(jī)程序設(shè)計(jì)
本文所設(shè)計(jì)的上位機(jī)系統(tǒng)采用Qt設(shè)計(jì),,它是一個(gè)跨平臺(tái)的C++圖形用戶界面應(yīng)用程序框架,。它為應(yīng)用程序開(kāi)發(fā)者提供建立藝術(shù)級(jí)圖形用戶界面所需的所有功能,。它是完全面向?qū)ο蟮模苋菀讛U(kuò)展,,并且允許真正的組件編程[8],。只需要編寫(xiě)一次應(yīng)用程序,就可以在不同操作系統(tǒng)上部署這些程序,。
Qt通過(guò)信號(hào)和槽的機(jī)制來(lái)完成兩個(gè)Qt對(duì)象之間的通信,。信號(hào)會(huì)在某個(gè)時(shí)機(jī)觸發(fā),而槽就是響應(yīng)和處理信號(hào)的對(duì)應(yīng)函數(shù)[9],。
3.2.1 ReceivedData類(lèi)
上位機(jī)程序的核心是ReceivedData類(lèi),,它是一個(gè)繼承自QWidget類(lèi)的自定義類(lèi)。每個(gè)ReceivedData類(lèi)對(duì)象對(duì)應(yīng)一個(gè)端口,,負(fù)責(zé)接收和處理不同下位機(jī)傳輸?shù)腡CP數(shù)據(jù)并完成數(shù)據(jù)在圖表上的顯示工作,。
ReceivedData類(lèi)中主要包含一個(gè)QCustomPlot類(lèi)對(duì)象、一個(gè)QTcpServer類(lèi)對(duì)象和一個(gè)QTcpSocket類(lèi)對(duì)象,。QCustomPlot類(lèi)是一個(gè)體積小巧但功能很強(qiáng)的Qt繪圖類(lèi),,它提供給程序一個(gè)繪制圖表的窗口,使用者可以通過(guò)對(duì)參數(shù)的設(shè)置在一個(gè)窗口內(nèi)很容易地實(shí)現(xiàn)多條曲線繪制,、鼠標(biāo)拖曳滾輪縮放圖像等功能,。而QTcpServer類(lèi)和QTcpSocket類(lèi)對(duì)象的組合可以完成指定端口的TCP數(shù)據(jù)接收。ReceivedData類(lèi)的主要構(gòu)成如表2所示,。
3.2.2TCP協(xié)議通信處理流程
Qt通過(guò)套接字完成TCP數(shù)據(jù)的傳輸,,在接收到連接請(qǐng)求后TCP服務(wù)器會(huì)把新的連接綁定到套接字上。作為T(mén)CP服務(wù)器的上位機(jī)與作為T(mén)CP客戶端的下位機(jī)交互流程圖如圖6所示,。
4實(shí)驗(yàn)結(jié)果
分別在兩個(gè)地點(diǎn)布置下位機(jī)系統(tǒng),,連接各傳感器后開(kāi)啟下位機(jī)電源,上位機(jī)開(kāi)始從指定端口接收到TCP數(shù)據(jù),。經(jīng)過(guò)一段時(shí)間的監(jiān)測(cè),,從遠(yuǎn)程的上位機(jī)處得到了監(jiān)測(cè)數(shù)據(jù)的曲線。
圖7展示了上位機(jī)遠(yuǎn)程監(jiān)測(cè)兩臺(tái)下位機(jī)數(shù)據(jù)的運(yùn)行效果,,從當(dāng)前圖中可以清楚地看出兩個(gè)監(jiān)測(cè)地點(diǎn)的溫度隨時(shí)間的變化情況,,通過(guò)組合框可以切換監(jiān)測(cè)源的監(jiān)測(cè)對(duì)象。上位機(jī)界面中包括兩路通道,,分別接收兩個(gè)下位機(jī)上傳的數(shù)據(jù),,多路數(shù)據(jù)監(jiān)測(cè)界面的設(shè)計(jì)原理與其相同,只需按要求實(shí)例ReceivedData類(lèi)對(duì)象就可以完成指定數(shù)量下位機(jī)的數(shù)據(jù)監(jiān)測(cè),。
5結(jié)論
本文所設(shè)計(jì)的數(shù)據(jù)采集系統(tǒng)是一種非常適合復(fù)雜現(xiàn)場(chǎng)環(huán)境和臨時(shí)測(cè)量的解決方案,。這種測(cè)量終端與上位機(jī)沒(méi)有距離限制并且節(jié)省了大量的人力物力,只要雙方可以連接互聯(lián)網(wǎng)就可以完成數(shù)據(jù)傳輸。在物聯(lián)網(wǎng)技術(shù)迅猛發(fā)展的今天,,這種結(jié)合了GPRS網(wǎng)絡(luò)的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)非常具有實(shí)用價(jià)值,。
參考文獻(xiàn)
[1] 王志義,,苗亞春.有線傳輸技術(shù)特點(diǎn)分析和發(fā)展方向[J].電子工程技術(shù)與軟件工程,,2013(17):193193
[2] 李陽(yáng)輝.基于STM32和GSM的溫度遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)[J].自動(dòng)化與儀器儀表,,2015(1):5659.
?。?] 盧有亮.基于STM32的嵌入式系統(tǒng)原理與設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2014.
?。?] YIU J. ARM CortexM3與CortexM4權(quán)威指南[M].吳常玉,,曹孟娟,王麗紅,,譯.北京:清華大學(xué)出版社,,2015.
[5] 甘志偉,,閆凱.基于SIM900A的無(wú)線數(shù)據(jù)采集卡設(shè)計(jì)與實(shí)現(xiàn)[J].山西電子技術(shù),2013(1):5558.
?。?] 宋雪松,,李冬明,崔長(zhǎng)勝.手把手教你學(xué)51單片機(jī):C語(yǔ)言版[M].北京:清華大學(xué)出版社,,2014.
?。?] 鄭優(yōu)訊,李宗伯.基于STM32微處理器的GPRS數(shù)據(jù)傳輸技術(shù)的研究[J].微型機(jī)與應(yīng)用,,2012,,31(21):6164.
[8] 陸文周.Qt5開(kāi)發(fā)及實(shí)例(第2版)[M].北京:電子工業(yè)出版社,,2015.
?。?] 金大臣爾.Qt5開(kāi)發(fā)實(shí)戰(zhàn)[M].張紅艷,譯.北京:人民郵電出版社,,2015.