ModBUS协议通讯的应用
引言
在燃气蓄热式窑炉控制系统中,不仅需要将温度、压力、流量等模拟参数进行采集、计算控制输出至执行器,同时还应将火焰状态、电磁阀状态、换相阀状态进行采集,随时控制点火器点火,并进行周期性换相,换相周期会根据温度的不同而变化。面对众多参量的采集控制,需要建立时变系统和非线性系统的状态空间表达式进行复杂的多相关变量的运算,得到稳定输出以控制相关变量。事实上,取得大量数据,建立相应数据库,进行数据分析,单靠低端的数字控制设备难以完成。通常的做法是信号的数据采集、滤波、简单PID运算、输出量、及输出量的互锁由低端控制器完成。为了完成上述功能,我们采用ABB公司生产的PLC,配置如下:
名称 数量 描述
07KT51 1块 50CPU,8DI,6DO
XM06B5 2块 Extension I/O,4AI,2AO
XK08F1 1块 Extension I/O,4DI,6DO
PLC软件采用AC31 SOFTWARE,上位机程序用VB编制,实现与上位工控机通讯的过程中需要使用MODBUS协议。本文重点介绍其通讯实现的过程。
一、 MODBUS简介
MODBUS协议是应用于电子控制器的一种通讯语言。利用这个协议,控制器相互之间(例如485、232C等),控制器通过网络(例如以太网)和其他设备之间进行通讯。它定义了一种控制器能认识使用的消息结构,而不管它们是通过何种网络实现;描述的是控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦错并记录;制定了消息域格局和内容的公共格式。
MODBUS通讯实现有两种传输模式(ASCII或RTU),ABB公司的50系列PLC产品采用的是RTU(远程终端单元)模式,在消息中的每个8Bit字节包含两个4Bit的十六进制字符。这种方式的主要优点是:在同样的波特率下,可比ASCII方式传送更多的数据。
1、代码系统:
· 8位二进制,十六进制数0...9,A...F
· 消息中的每个8位域都是一个两个十六进制字符组成每个字节的位
· 1个起始位
· 8个数据位,最小的有效位先发送
· 1个奇偶校验位,无校验则无
· 1个停止位(有校验时),2个Bit(无校验时)
· 错误检测域 CRC(循环冗长检测)
2、基于RS485的RTU模式MODBUS通讯格式为:
它定义了在这些网络上连续传输的消息段的每一位,以及决定怎样将信息打包成消息域和如何解码。
3、其查询回应周见下图:
(1)查询 查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。
评论