一、写在前面
MODBUS RTU目前在水处理自动化领域主要用于仪表的数据采集及MODBUS RTU扩展IO模块的通讯。前者的仪表采集传统的方式是采用仪表自带的4-20mA接口通过屏蔽线传输到PLC的模拟量输入模块(AI),然后程序通过数据转换得到实际的工程值,但是因为干扰或者模拟量模块及仪表输出误差造成得到的仪表数据波动或者不准确,故而采用通讯方式得到比较与仪表一样的数据。 在水处理领域尤其是流量计,一般要求采集累计流量,累计流量可以通过脉冲方式累加获得,但是也存在误差,采用通讯方式可以将瞬时流量和累计流量一起采集。
二、案例实现
项目背景:本项目采用的S7-1200的扩展modbus卡,作为MODBUS RTU的接口,采集电磁流量计的瞬时流量和累计流量。
2.1 硬件接线
2.2 博途组态
设置MODBUS 协议的参数
2.3 通讯程序设计
(1)SB模块Modbus主站初始化
在指令--通信,调用
端口(PORT)在组态中是273,波特率为9600,响应时间设置为1000ms。
MB_DB参数:
(2)通信流程控制初始化(设计一个上电脉冲信号)
(3)读瞬时流量
该流量计设置modbus 地址为004,瞬时流量寄存器地址为4113,长度为2个字,瞬时流量存储值为DB57.DBD0。
(4)轮询触发程序,通讯完成下一步
(5)读累计流量
(6)整个系统的通讯轮询完成后返回到第一步
(7)实际结果
三、结论
在进行modbus rtu通讯时,我们需要做以下步骤:
(1)硬件接线,采用屏蔽电缆或者RS485专用电缆,接线时主要模块端的接线要求及仪表端的接线端口,一般来说A+对于仪表的A,B-对于仪表的B,但是在很多时候,需要交换,这需要根据现场的情况而定。
(2)设置仪表的MODBUS RTU通讯参数,波特率、ID、校验位等。
(3)程序设计,主要包含通讯控制程序、消息程序。
(4)程序设计时,一定要对应所采集数据的modbus寄存器的地址,以及数据格式,有时候需要将高低字(字节)做交换。
(5)做程序前,可以用串口调试助手先进行数据采集,检查线路和仪表的通讯是否正常。
联系客服