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