ModbusRTU/TCP通讯协议,RS485/232转USB串口传输,MCGS/KingView与PLC/智能仪表等通讯
本文由博主经过总结实际项目及查阅网上资料整理总结后编写,如存在错误或不恰当之处请留言以便更正,内容仅供大家参考学习,如需转载请标注原文地址。
概述
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 )于1979年为使用可编程逻辑控制器通信而发表。Modbus已经成为工业领域通信协议的业界标准),并且现在是工业电子设备之间常用的连接方式。ModBus网络只有一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。具体的关于Modbus协议的概述定义等此处不过多的叙述,可以参考博客:https://blog.csdn.net/qq_26093511/article/details/79251320 http://www.sohu.com/a/230628953_315598 https://www.cnblogs.com/prayer521/p/5955331.html等。
接线
ModbusRTU一般采用RS485/232转USB串口与上位机连接实现串行通讯;ModbusTCP一般直接采用网线与上位机连接实现通讯。
组态王读取数据-----ModbusRTU
①新建一个通讯设备,如果是与多台下位机连接需要建立多个通讯设备(仪表地址参数修改)
②设置刚刚新建通讯设备串口的参数
③创建参数与地址绑定,读写对应地址的数据。
经验1,一般读取仪表的数据都在4寄存器,这里的4002是十进制,如果通讯协议中写的是0x4002一定要先转化为十进制16386。
经验2,上位机的地址数可能与下位机实际地址数相差1,如下位机数据地址是4005则上位机需要把地址写成4006才对。
经验3,注意选择合适的数据类型,如果数据类型不对可能读取数值不对或者是无数据显示
组态王读取数据-----ModbusTCP
其余的操作与上面的一样
MCGS读取数据-----ModbusRTU
①新建一个通讯设备,需要先创建通用串口父设备,然后再创建ModbusRTU子设备
②修改参数、添加地址、关联变量
经验4,所有支持标准Modbus协议的仪器,上位机把变量与对应地址关联上之后便会自动的读取对应地址中的数据或者向对应地址写入相应的数据。
经验5,上位中添加对应设备的目的就是:不断的向下位机发送请求,然后把下位机应答的数据去除包头包尾提取出有效数据并转换为一定格式数据并返回出来(个人理解)。如,直接用串口调试助手向下位机发送0x01 03 10 03 00 01 70 CA,并可以在串口调试助手中收到数据0x01 03 02 00 01 79 84。