文献标识码:A
DOI:10.16157/j.issn.0258-7998.181735
中文引用格式:赵小强,陈玉兵,高强,等. 基于Modbus协议的农田气象信息监测站设计[J].电子技术应用,2018,44(12):55-59,64.
英文引用格式:Zhao Xiaoqiang,Chen Yubing,Gao Qiang,et al. Design of farmland meteorological information monitoring station based on Modbus protocol[J]. Application of Electronic Technique,2018,44(12):55-59,64.
0 引言
随着“互联网+”现代农业高速发展,如何科学有效地提高农田的生产、经济、环境效益已经成为现阶段农业亟待解决的重大问题[1-2]。无线传感器网络作为信息感知和无线传输的桥梁,具有低功耗、易集成、低价格等特点,是农田规模化密集节点部署的首选方案[3-4]。通过各传感器节点实时动态感知作物生长要素与环境信息,是实现高效农业的基础[5-6]。美国、日本、荷兰等发达国家在农田信息感知领域取得了长足发展,形成了精准农业网络体系[7]。
精准农业对于农田环境信息获取的实时性要求较高,但是一般各传感器节点均采用电池供电,为了降低网络负载,延长网络生存周期,通常数据采集的周期过长,实时性较差,不能及时对作物生长环境信息进行评价与分析,无法保证最佳生长要素补给,是精准农业发展所面临的壁垒之一[8-9]。考虑农田传感器节点实际应用场景通常采用人为预设的确定性部署方式,本文提出将空气湿度、光照度等传感器挂载于串行总线,通过Modbus通信协议轮询与各个传感器进行数据交互,整套系统采用太阳能供电,既保障了数据采集以及传输实时性,也弥补了传统监测方式下,单一节点测量参数单一的不足。最终将数据传输至云平台进行统计分析与处理,对我国从传统农业向现代农业的转型升级具有重要的意义。
1 系统原理
农田气象信息监测站采用RS485总线访问控制策略,搭载Modbus RTU通信协议实现田间作物生长要素信息实时采集。Modbus串行链路协议采用主从(Master/Slave)方式,实现主站Master向从站Slave数据请求以及Slave端向Master端的响应请求,实现双向数据交互[10]。通过设置不同的从站传感器地址,达到主站轮询访问土壤温度、土壤水分、土壤电导率、空气温度、空气湿度、田间风速、田间风向、光照强度、辐射总量传感器节点的目的,通信双方使用CRC16循环冗余校验,实现数据传输检错,保证数据传输的正确性和完整性。解析后的传感器数据通过4G全网通模块SIM7600CE采用EDP通信协议传输至OneNET云平台,实现数据多样化展示和分析处理。系统结构如图1所示。
2 硬件设计
2.1 核心控制器电路
STM32F103RCT6是ST公司ARM 32位Cortex-M3内核CPU,最高工作频率可达72 MHz,芯片内部外设与通信接口丰富。外围核心电路主要包含RESET按键复位电路、8 MHz晶振电路、32.768 kHz RTC时钟晶振电路、BOOT 启动模式选择电路、电源滤波电路,以及维持后备区域数据存储和RTC运行的VBAT纽扣电池供电电路。核心控制器电路设计如图2所示。
2.2 Modbus RS485采集电路
采用8路RS485接口挂载到SP3485的驱动器同相输出A端口和反向输出B端口,并将阻值为120 Ω的终端匹配电阻并联至A、B端口,同时,将两个阻值为360 Ω的偏置电阻分别接入A、B端口线路中,保证电路在空闲状态下,485总线维持在逻辑1状态,避免开始接收时出现乱码等不可预测情况。接收器输出使能RE端口与驱动器输出使能DE端口连接至核心控制器同一通用IO口,通过逻辑电平0或1的变化即可实现接收与发送控制。将RO输出与DI输入端口连线至STM32的串口2,主控器即可按照Modbus协议轮询访问各个传感器,各传感器通过总线上地址信息判断是否与自身匹配实现对总线信息的响应。电路设计如图3所示。
2.3 数据采集仪电源电路
电源电路采用TI公司LM2596系列开关电源调节器,支持最大40 V宽电压输入,3 A负载电流输出。VIN输入端并入680 μF低ESR高速铝电解电容,抑制输入端电压突变,布线时需使用短连接,尽量使电容靠近器件VIN管脚。Out输出端通过逆向电压保护二极管SS54,防止逆向电压对电路造成损毁。其额定工作电流为5 A,1.7倍于负载电流,满足设计需求。Out输出端对33 μH电感持续充电,通过电感为各负载进行稳定放电,保证负载供电稳定性与可靠性。再经过Feedback与Out端旁路电容滤波作用,即可得到5 V稳态电压。由于主控器STM32为3.3 V供电,所以选取AMS公司低压差线性稳压LDO系列AMS117-3.3,通过滤波电容滤除尖峰和毛刺后就可获得3.3 V平滑稳定电压。电路设计如图4所示。
2.4 网关节点核心电路
数据采集仪获取各传感器数据后,通过网关节点将数据传输至OneNET云平台。网关节点选取SIM7600CE,低功耗实现SMS和海量数据信息高速传输。SIM7600CE支持GSM、TD-SCDMA、CDMA、WCDMA、TDD-LTE和FDD-LTE等频段。设计实现了外部4G主天线MAIN_ANT、4G辅天线AUX_ANT和GPS天线GNSS_ANT,在模块和天线之间的走线必须保证50 Ω走线阻抗。模块通过3.8 V VBAT接口为内部射频和基带电路供电。为确保耗电流达到2 A时VBAT电压跌落不低于3.4 V,在VBAT输入端加入旁路0.1 μF陶瓷电容,以改善射频性能及系统稳定性,并通过NET指示灯显示网络连接状态。为避免浪涌和过压对模块造成损坏,在VBAT引脚并联了100 μF/6 V的电解电容以实现模块保护。模块自带VDD_EXT LDO可调电压输出,最大支持150 mA电流,用于其他电路供电。VDD_1V8为内部1.8 V稳态电压输出,可为电平转化电路供电。核心电路设计如图5所示。
2.5 USIM卡接口电路设计
为实现USIM卡静电防护,选取SRV05-4瞬态抑制TVS阵列,实现对IO、SCK、RST 3条I/O高速数据线和VCC的静电防护处理。其内部集成8只控向二极管,构成两个“桥”式整流电路,并通过共用一只“雪崩二极管”构成ESD防护电路。该电路可将正ESD经导向由雪崩二极管进行箝位,对负ESD由控向二极管箝位,具有良好的ESD防护特性。USIM卡接口静电防护性能,直接影响网络通信的稳定性与可靠性,这也是农田气象信息监测站设计时网关节点必须具备的特性。电路设计如图6所示。
3 软件设计
3.1 Modbus协议03H功能码
主控板通过Modbus协议读取各个传感器数据时,使用功能码03H,通过STM32串口2进行通信,通信波特率设置为9 600 b/s,无硬件流控。通过03H功能码对从机访问时,数据格式为:从机地址+功能码+寄存器首地址+寄存器数量+校验码。发送03H指令,查询1个或多个保持寄存器程序如下:
void MOD_Send03H(u8 addr, u16 reg, u16 num)
{Mod.TxCount = 0;
Mod.TxBuf[Mod.TxCount++] = addr;
Mod.TxBuf[Mod.TxCount++] = 0x03;
Mod.TxBuf[Mod.TxCount++] = reg >> 8;
Mod.TxBuf[Mod.TxCount++] = reg;
Mod.TxBuf[Mod.TxCount++] = num >> 8;
Mod.TxBuf[Mod.TxCount++] = num;
MOD_SendAckWithCRC();}
3.2 串口空闲中断+DMA接收
针对微处理器串口接收方式的优缺点,结合Modbus通信帧格式,本文提出采用串口空闲中断+DMA接收方式实现串口数据接收。采用此方式时,处理器在接收到一个字节时,不会产生串口中断,而是通过DMA在后台把数据搬到指定的缓冲区里面,当接收空闲时隙超过一字节时间,默认一帧数据接收完成,才产生一次中断,进而启动串口状态机,计算帧长度,进行相应解析处理。这也满足Modbus RTU报文帧有着严格的帧间t3.5和帧内t1.5空闲时隙间隔的要求。该方式也可实现不定长数据的接收,极大增加了串口接收程序的通用性以及处理器效率。
3.3 传感器轮询采集实现
通过不同的RTU串行总线地址,依次实现对各个传感器的访问。程序中利用定时器定时10 min,开启数据采集操作,定时器中断时间设置为0.5 s,每进中断一次,进行一次“喂狗”操作。自定义采集函数中设置静态变量I,默认取值为0时,发送采集指令;值为1时,解析串口接收到的传感器数据。在开启数据采集操作后,每次进入定时器中断,就进行一次I取值判断。静态变量J用来记录单个传感器访问出错次数,如果连续3次访问出现错误,则认为传感器故障,转向下一个传感器数据采集。静态变量K表示当前采集的传感器标号,如果对应传感器数据采集成功,则主动访问下一个标号传感器。
3.4 网关节点数据上传
网关节点SIM7600CE 4G通信模块主要负责将感知层采集单元处理后的农田环境信息发送到物联网OneNET云平台以及接收云平台下发的控制指令。一般情况下,各种物联网设备接入服务器采用HTTP协议实现,在接收服务器下发的消息时,必须通过主动轮询访问服务器的方式,存在效率低和实时性较差等不足。采用EDP协议后,网关节点通过心跳帧与服务器建立双向连接,实现及时的数据上传以及接受平台下发的指令。感知层单元与网络层云平台建立通信连接并完成数据上传和云端存储的流程如下:
(1)与OneNET服务器建立TCP连接:首先,串口发送“+++”使模块退出透传模式,接下来依次发送对应AT指令与服务器建立连接。
(2)发送设备连接请求:将设备编号ID和鉴权码APIKey按照EDP请求格式打包为二进制数据包,向OneNET发送数据,通过设备鉴权后才能对平台中对应设备下的数据流上传数据。
(3)发送用户数据:EDP协议封装的数据包分为两部分,一部分为设备连接请求,另一部分为设备所发送的数据。将采集到的数据按JSON格式放到对应数据流,并按照EDP协议进行封装打包成相应的二进制数据包,再发送给至OneNET云平台。
4 数据测试及分析
4.1 数据采集上传
选取陕西乾县罗家岭双矮苹果园区进行设备实验测试。设定10 min进行一次数据采集,并将数据传输至云平台服务器对应的土壤温度、土壤湿度、电导率等数据流,通过云平台的解析,即可得如图7所示的田间各环境信息的Web网页端实时显示。
4.2 数据校准测试
对设备进行为期一周的实验数据记录,记录时刻为:每日5:00~21:00。以光照度传感器数据为例,获取如表1所示的30组从小到大排序的具有代表性的光照传感器数据(单位:kLx)。
其中,标准值来源于AR823光照仪,对比发现,随着光照度不断增强,测量值与标准值的误差也逐渐增大。采用BP神经网络对数据进行校准,由于数据量较少,故设置训练样本与测试样本相同。经BP拟合后的曲线图以及校准值与标准值的误差曲线分别如图8(a)、(b)所示。校正后的数据误差稳定在-1.5 kLx与1.5 kLx之间,远小于拟合之前的误差,拟合优度达到0.979 6。
5 结论
本文针对高效精准农业设计了农田气象信息监测站,实时动态感知作物生长环境信息。监测站信息采集电路采用Modbus通信协议与各传感器进行信息交互,方便了后期系统集成拓展,实现了单一站点的多参数采集。采集后的数据通过4G网关传输至物联网云平台进行统计分析与决策。针对各传感器采集数据存在的误差,利用BP神经网络进行数据校正,提高了监测数据的可靠性与精确性。该系统运行稳定可靠,鲁棒性强,满足农田环境监测的需要,对于提高农业精细管理与生产自动化具有一定的参考意义。
参考文献
[1] 崔敏.农业物联网研究与应用现状及发展对策[J].计算机与网络,2016,42(15):42-42.
[2] 李道亮,杨昊.农业物联网技术研究进展与发展趋势分析[J].农业机械学报,2018(1):1-20.
[3] 刘媛媛,朱路,黄德昌.基于GPRS与无线传感器网络的农田环境监测系统设计[J].农机化研究,2013(7):229-232.
[4] 孙玉文.基于无线传感器网络的农田环境监测系统研究与实现[D].南京:南京农业大学,2013.
[5] 王凡,杨亮.基于开源硬件与虚拟仪器的智能农业监测系统设计[J].电子技术应用,2015,41(4):73-76.
[6] 孙智权,周炜彬,赵不贿.基于云存储的农业环境参数监控系统设计[J].电子技术应用,2016,42(8):94-97.
[7] 陈晓栋,原向阳,郭平毅,等.农业物联网研究进展与前景展望[J].中国农业科技导报,2015,17(2):8-16.
[8] GAO X,YUAN M B,RAO D,et al.Research on the application of the low-power sleeping algorithm for agricultural wireless sensor network[J].Journal of Shandong Agricultural University,2015,73(4):1137-1141.
[9] 王培丞.用于环境监测的低功耗无线传感器网络最优化设计[D].成都:电子科技大学,2016.
[10] 顾海勤,杨奕,全毅,等.基于MODBUS协议的智能仪表与PC机双向通讯设计[J].仪表技术与传感器,2013(12):33-35.
作者信息:
赵小强1,2,陈玉兵1,2,高 强1,权 恒1,韩亚洲1
(1.西安邮电大学 通信与信息工程学院,陕西 西安710121;2.陕西省信息通信网络及安全重点实验室,陕西 西安710121)