李驰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.