胡兵+熊新荣+袁勇+孙天龙+王小娟
摘要:为满足马铃薯贮藏库对温度、湿度采集的要求,设计了一种基于Modbus总线的马铃薯贮藏库温湿度采集方案。该系统以MCGS组态为上位机监控,S7-200PLC CPU224为控制核心,以LM410温湿度采集模块为现场智能仪表,通过Modbus总线协议与远程采集系统通信,实现了马铃薯贮藏库温度、湿度的实时准确采集。结果表明,该系统稳定可靠,数据准确,满足了实际应用要求,为马铃薯贮藏库温湿度采集系统设计提供了借鉴。
关键词:Modbus总线;温度采集;湿度采集;PLC;智能仪表;马铃薯贮藏
中图分类号:TP273 文献标识码:A 文章编号:0439-8114(2014)20-4969-04
DOI:10.14088/j.cnki.issn0439-8114.2014.20.054
Collecting Temperature and Humidity of Potato Storage Based on Modbus Bus
HU Bing,XIONG Xing-rong,YUAN Yong,SUN Tian-long,WANG Xiao-juan
(Xinjiang Institute of Engineering,Urumqi 830011,China)
Abstract: To meet the requirements of storage temperature and humidity of potato, a scheme based on Modbus bus in collecting temperature and humidity of potato storage was put forward. Using MCGS configuration as the system of PC monitoring, CPU224 S7-200 PLC as the control core, acquisition module for intelligent instrument with LM410 temperature and humidity, through the Modbus fieldbus protocol and remote collection system communication, the real-time and accurate collection of temperature and humidity of potato storehouse was realized. The results showed that the system was stable and reliable. The data was accurate and satisfied the requirements of practical application. It will provide reference for designing the system of collecting temperature and humidity of potato storage.
Key words: Modbus bus; temperature acquisition; humidity acquisition; PLC; intelligent instrument; potato storage
马铃薯是粮菜兼用的高产作物,具有很高的营养价值和药用价值。对马铃薯种植、加工企业或个人而言,马铃薯贮藏技术相当重要。贮藏不当,则薯块会因为蒸发、呼吸、发芽及贮藏期病虫害等造成种薯营养成分的流失,更重要的是降低了马铃薯种植后对病虫害的抵御能力,从而对马铃薯产量及质量产生极大的负面影响,而马铃薯的贮藏技术中,温度和湿度是两项重要的因素。国内外研究结果表明,马铃薯处在温度为1~4 ℃,环境相对湿度在80%~90%时病菌不繁殖,块茎不发芽且水分保持良好[1]。然而,目前对马铃薯贮藏库温湿度数据的读取,主要以定时人工记录的方式进行,存在实时性、准确性较差等问题,为了实时采集温湿度数据,进一步提高温湿度数据的准确性,采用实时可靠的数据采集方法非常重要。本研究设计了一种基于Modbus总线的温湿度采集方法,借助于上位机的组态软件,能够实时显示温湿度的变化。
1 Modbus通信
Modbus是一种国际的、开放的现场总线标准。最早是美国Modicon公司为其PLC制定的资料交换通信接口标准,由于Modbus协议是公开的通信协议,被很多的PLC、变频器及RTU生产厂家支持,是一种广泛应用于工业现场的总线协议。根据传输网络类型的不同分为串行链路上的Modbus和基于TCP/IP协议的Modbus,本研究为串行链路上的Modbus应用。
1.1 通信原理
串行链路上的Modbus是一个主-从协议,该协议位于OSI模型的第二层,采用请求-响应的方式,通信过程中遵循以下流程:①主站向从站发送请求;②从站分析并处理主站端请求并发送结果;③如果出现差错,从站返回异常码。
主站向从站设备发送的报文数据域中包括附加信息,从站使用这个信息执行功能码定义的操作。如果在一个正确接收的Modbus应用数据单元中,不出现与请求Modbus功能相关的差错,从站发送给主站的响应数据中包括请求数据;如果出现请求Modbus功能有关的差错,那么域包括一个异常码,从站应用能够使用这个域确定下一个执行的操作。Modbus事物处理如图1、图2所示。
Modbus网络上只能有一个主站存在,主站在网络上没有地址,从站的地址范围为0~247,其中0为广播地址,从站的实际地址范围为1~247,在同一时间,只能将一个主站连接到总线,将一个或多个从站连接到相同的串行总线,Modbus通信只能由主站发起,从站没有收到来自主站的请求时,不会发送数据,从站之间不能相互通信,Modbus串行链路系统在物理层可以使用不同的物理接口,最常用的是两线制RS485接口[2]。
1.2 传输模式
Modbus协议有2种传输模式即:Modbus ASCII模式和Modbus RTU模式,当控制器设定为ASCII传输模式时,数据传输中1 byte(8 bits)拆分为两个对应的ASCII字符,这种传输方式的优点是字符发送的时间间隔可到达1 s,保证了数据传输的高准确率,一般通信数据量少且主要是文本的通信采用这种传输方式,当控制器设定为RTU通信模式时,数据传输中1 byte(8 bits)代表2个十六进制字符(4 bits),这种传输方式的优点是在相同的传输速度下,可以传输更多的数据量,满足更大的系统组网要求,本系统选用RTU的传输模式。
1.3 报文格式
当传输模式选择为Modbus RTU模式时,报文格式如表1所示,一帧报文主要由地址域、功能码域、数据域和CRC校验组成,最大的Modbus/RTU 帧是256个字节。报文帧中帧间字符间隔和帧内字符间隔必须分别遵守大于等于3.5 个字符时间和小于等于1.5 个字符时间的规定,所以起始和结束标志均大于等于3.5个字符,作为发送报文的字流符规定必须是连续的,如果两个字符之间的空闲间隔大于1.5个字符时间,认为该报文帧不完整,接收站需要将其丢弃;地址域为从站地址,其范围为1~247;功能码指示主站要执行的动作,紧随其后的是请求或响应参数的数据域;差错校验域是对报文内容执行冗余校验的计算结果,根据不同的传输方式使用不同的计算方法,RTU使用循环冗余校验(CRC校验)[3]。
2 应用系统组成
系统由link-max LM410温湿度远程采集模块、西门子S7-200 CPU224PLC、研华工控机和MCGS组态软件构成。系统结构图如图3所示。系统中上位机装有MCGS组态软件,PLC与上位机采用S7-200PPI通信,用PPI电缆将PLC的port1口与上位机连接,实时读取并显示S7200采集的温度、湿度值,PLC与温度采集模块采用ModbusRTU通信,采用RS485电缆将PLC的port0口与温湿度采集模块的通信网络连接,将现场温湿度数据实时传送到S7-200中。
3 应用系统实现
3.1 LM410 Modbus数据通信
LM410是一款工作于-40~85 ℃工业级温湿度采集模块,该模块可通过隔离的485 通讯接口与Modbus现场总线连接,最多允许32个温湿度采集模块挂在同一总线上,但如采用中继器,则可将多达256个温湿度采集模块连到同一网络,且最大通信距离为1 200 m。采集温度范围为-40~+85 ℃,精度0.1 ℃;相对湿度范围0%~100%,精度0.5%。模块的标准Modbus输入寄存器说明如表2所示。
3.2 S7-200 Modbus RTU编程
S7-200PLC由于具有结构紧凑、成本低、指令集功能强大等特点,使得其成为各种小型任务理想的解决方案,S7-200PLC支持PPI通信、MPI通信、自由口通信等多种通信方式,用户完全可以使用Modbus通讯协议把S7-200和其他智能设备连接在一起。本研究以S7-200PLC为Modbus主站,智能仪表LM410为Modbus从站,读取现场温湿度数据。
3.2.1 Modbus Master 协议库支持的功能 根据Modbus通信协议,Modbus协议库支持数据的功能码与地址对应的关系如表3所示[4]。S7-200PLC Modbus通信时,可以通过发送指令(XMT)、接收指令(RCV)结合接收中断、发送中断、定时中断实现ModbusRTU通信,也可以通过S7-200PLC附带的Modbus指令库实现ModbusRTU通信,本研究采用后者的通信方式,在使用S7-200的指令库时,Modbus数据地址与S7-200的I、O和数据存储区地址间有特定的对应关系如表4所示。根据表4所对应关系,S7-200PLC采集LM410中温湿度的数据时采用的地址温度为30001,湿度为30002。
3.2.2 S7-200PLC Modbus程序实现 在S7-200PLC中,通过调用的Modbus指令库实现Modbus与LM410通信,以S7-200为主站,使用STEP7-Micro/WIN V4.0 SP6的Modbus主站指令,读写LM410的输入寄存器。
1)添加ModbusRTU主站指令库。在初次使用S7-200的ModbusRTU指令库时,需要添加ModbusRTU主站指令库,添加成功后,会在STEP7-Micro/WIN V4.0 SP6的指令树中的“库”文件下显示“Modbus Master Port0”和其中的MBUS_CTRL、MBUS_MSG,ModbusRTU指令的变量要求284个字节的V存储区[5,6],用STEP7-Micro/WIN V4.0 SP6的“文件”→“库存储区”指定,默认情况下是从VB0开始,但因为与Modbus的保持寄存区冲突,所以手动改为VB2000。
2)调用Modbus RTU主站初始化和控制子程序。使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,并启动其功能控制。调用 Modbus RTU 主站初始化和控制子程序如图4所示。通信过程中指定Port0端口作为Modbus通信,此时该端口就不能再作PPI通信协议使用,所以,在MBUS_CTRL指令中的Mode一直置1(为0是PPI通信),通信波特率Baud设为9600,校验方式根据需要设置奇校验、偶校验或无校验,设置0表示无校验,超时时间Timeout设为1 000 ms,Done为完成位,初始化完成,此位会自动置1,Error为初始化错误代码[7]。
3)调用ModbusRTU主站读写子程序。ModbusRTU主站读写子程序为MBUS_MSG,用于启动到Modbus从站请求、发送请求、等待响应和处理响应。调用ModbusRTU主站读写子程序如图5所示。从图5中可以看出,First为读写请求位,每一个新的读写请求必须使用脉冲触发,Slave为从站地址,根据实际温湿度地址设置(地址不能重复);RW为读写操作,Addr读写从站的数据地址,Count通讯的数据个数,应用中需要采集温度、湿度数据,所以RW设置为0,Addr设置为30001,Count设置为2;DataPtr为数据指针,PLC将读回的数据这个数据区中,所以读会的温度放到VW0、湿度放到VW2中,Done和Error同上。
3.3 MCGS组态监控实现
MCGS是一套用于快速构造和生成计算机监控系统的组态软件,能够在基于Microsoft运行,通过对现场数据的采集处理,以动画显示、报警处理、流程控制、实时曲线、历史曲线和报表输出等多种方式向用户提供解决实际工程问题的方案,应用系统的上位机采用MCGS做监控界面,显示PLC中采集的温度、湿度数据,并提供实时报表、历史报表数据。在用户窗口完成温度、湿度显示界面和报表界面的制作,设置相应的属性,在实时数据库完成数据对象的定义,并连接相应的数据对象,部分数据对象如表5所示。在设备窗口添加“通用串口父设备”和“西门子-S7200PPI”,完成通信参数的设置,按表5完成数据对象与S7-200数据的连接,即可运行调试。
4 小结
应用系统采用S7-200为主站,LM410温湿度远程采集模块为从站,通过Modbus通信的方式实现了马铃薯贮藏库温湿度数据的采集,经过试验验证,系统可以正常运行,能够在上位机的监控画面中实时、准确地显示各个设备的运行状态和参数,达到了现场无人值守的目的,具有结构简单、成本低的优点。
参考文献:
[1] 王金刚.大型加工用马铃薯恒温保鲜库的设计与实践[J].粮油建筑工程,2009,16(2):48-49.
[2] 王靖欧,雷山凤.Modbus协议在监控系统串行通讯中的应用[J].湖北水利发电,2007,71(4):39-40.
[3] 华 镕.从Modbus到透明就绪施耐德电气工业网络的协议、设计安装和应用[M].北京:机械工业出版社,2009.
[4] 任清娟.基于Modbus和GPRS的高炉渣粒化配电监控系统的设计[D].内蒙古包头:内蒙古科技大学,2012.
[5] 白 鑫,吕丽平,赵雪梅.Modbus协议在柴油发电机监控系统中的应用研究[J].制造业自动化,2012,34(2):9-11.
[6] 廖常初.PLC编程及应用[M].北京:机械工业出版社,2009.
[7] 肖 林,肖哲运,丁志江.基于Modbus协议的PLC多路温度控制系统的实现[J].河北科技大学学报,2011,32(6):594-597.
3)调用ModbusRTU主站读写子程序。ModbusRTU主站读写子程序为MBUS_MSG,用于启动到Modbus从站请求、发送请求、等待响应和处理响应。调用ModbusRTU主站读写子程序如图5所示。从图5中可以看出,First为读写请求位,每一个新的读写请求必须使用脉冲触发,Slave为从站地址,根据实际温湿度地址设置(地址不能重复);RW为读写操作,Addr读写从站的数据地址,Count通讯的数据个数,应用中需要采集温度、湿度数据,所以RW设置为0,Addr设置为30001,Count设置为2;DataPtr为数据指针,PLC将读回的数据这个数据区中,所以读会的温度放到VW0、湿度放到VW2中,Done和Error同上。
3.3 MCGS组态监控实现
MCGS是一套用于快速构造和生成计算机监控系统的组态软件,能够在基于Microsoft运行,通过对现场数据的采集处理,以动画显示、报警处理、流程控制、实时曲线、历史曲线和报表输出等多种方式向用户提供解决实际工程问题的方案,应用系统的上位机采用MCGS做监控界面,显示PLC中采集的温度、湿度数据,并提供实时报表、历史报表数据。在用户窗口完成温度、湿度显示界面和报表界面的制作,设置相应的属性,在实时数据库完成数据对象的定义,并连接相应的数据对象,部分数据对象如表5所示。在设备窗口添加“通用串口父设备”和“西门子-S7200PPI”,完成通信参数的设置,按表5完成数据对象与S7-200数据的连接,即可运行调试。
4 小结
应用系统采用S7-200为主站,LM410温湿度远程采集模块为从站,通过Modbus通信的方式实现了马铃薯贮藏库温湿度数据的采集,经过试验验证,系统可以正常运行,能够在上位机的监控画面中实时、准确地显示各个设备的运行状态和参数,达到了现场无人值守的目的,具有结构简单、成本低的优点。
参考文献:
[1] 王金刚.大型加工用马铃薯恒温保鲜库的设计与实践[J].粮油建筑工程,2009,16(2):48-49.
[2] 王靖欧,雷山凤.Modbus协议在监控系统串行通讯中的应用[J].湖北水利发电,2007,71(4):39-40.
[3] 华 镕.从Modbus到透明就绪施耐德电气工业网络的协议、设计安装和应用[M].北京:机械工业出版社,2009.
[4] 任清娟.基于Modbus和GPRS的高炉渣粒化配电监控系统的设计[D].内蒙古包头:内蒙古科技大学,2012.
[5] 白 鑫,吕丽平,赵雪梅.Modbus协议在柴油发电机监控系统中的应用研究[J].制造业自动化,2012,34(2):9-11.
[6] 廖常初.PLC编程及应用[M].北京:机械工业出版社,2009.
[7] 肖 林,肖哲运,丁志江.基于Modbus协议的PLC多路温度控制系统的实现[J].河北科技大学学报,2011,32(6):594-597.
3)调用ModbusRTU主站读写子程序。ModbusRTU主站读写子程序为MBUS_MSG,用于启动到Modbus从站请求、发送请求、等待响应和处理响应。调用ModbusRTU主站读写子程序如图5所示。从图5中可以看出,First为读写请求位,每一个新的读写请求必须使用脉冲触发,Slave为从站地址,根据实际温湿度地址设置(地址不能重复);RW为读写操作,Addr读写从站的数据地址,Count通讯的数据个数,应用中需要采集温度、湿度数据,所以RW设置为0,Addr设置为30001,Count设置为2;DataPtr为数据指针,PLC将读回的数据这个数据区中,所以读会的温度放到VW0、湿度放到VW2中,Done和Error同上。
3.3 MCGS组态监控实现
MCGS是一套用于快速构造和生成计算机监控系统的组态软件,能够在基于Microsoft运行,通过对现场数据的采集处理,以动画显示、报警处理、流程控制、实时曲线、历史曲线和报表输出等多种方式向用户提供解决实际工程问题的方案,应用系统的上位机采用MCGS做监控界面,显示PLC中采集的温度、湿度数据,并提供实时报表、历史报表数据。在用户窗口完成温度、湿度显示界面和报表界面的制作,设置相应的属性,在实时数据库完成数据对象的定义,并连接相应的数据对象,部分数据对象如表5所示。在设备窗口添加“通用串口父设备”和“西门子-S7200PPI”,完成通信参数的设置,按表5完成数据对象与S7-200数据的连接,即可运行调试。
4 小结
应用系统采用S7-200为主站,LM410温湿度远程采集模块为从站,通过Modbus通信的方式实现了马铃薯贮藏库温湿度数据的采集,经过试验验证,系统可以正常运行,能够在上位机的监控画面中实时、准确地显示各个设备的运行状态和参数,达到了现场无人值守的目的,具有结构简单、成本低的优点。
参考文献:
[1] 王金刚.大型加工用马铃薯恒温保鲜库的设计与实践[J].粮油建筑工程,2009,16(2):48-49.
[2] 王靖欧,雷山凤.Modbus协议在监控系统串行通讯中的应用[J].湖北水利发电,2007,71(4):39-40.
[3] 华 镕.从Modbus到透明就绪施耐德电气工业网络的协议、设计安装和应用[M].北京:机械工业出版社,2009.
[4] 任清娟.基于Modbus和GPRS的高炉渣粒化配电监控系统的设计[D].内蒙古包头:内蒙古科技大学,2012.
[5] 白 鑫,吕丽平,赵雪梅.Modbus协议在柴油发电机监控系统中的应用研究[J].制造业自动化,2012,34(2):9-11.
[6] 廖常初.PLC编程及应用[M].北京:机械工业出版社,2009.
[7] 肖 林,肖哲运,丁志江.基于Modbus协议的PLC多路温度控制系统的实现[J].河北科技大学学报,2011,32(6):594-597.