目录
Modbus起源
1.起源
Modbus由Modicon公司于1979年开发,是一种工业现场总线协议标准。
Modbus通信协议具有多个变种,其中有支持串口,以太网多个版本,其中最著名的是Modbus RTU、Modbus ASCII和Modbus TCP三种
其中Modbus TCP是在施耐德收购Modicon后1997年发布的。
2.分类
1)Modbus RTU
运行在串口上的协议,采用二进制表现形式以及紧凑数据结构,通信效率比较高,应用广泛
2)Modbus ASCII
运行在串口上的协议,采用ASCII码传输,并且i用特殊字符作为字节开始和结束的标志,传输效率较低,一般只有通信数据量比较少的时候才会使用
3)Modbus TCP
运行在以太网上的协议
3.优势:
免费、简单、容易使用
4.应用场景:
Modbus协议是现在国内工业领域应用最多的协议,不只PLC设备,各种终端设备,比如水控机、水表、电表、工业秤、各种采集设备
5.Modbus TCP特点
1)采用主(master)/从(slave)问答方式通信
2)Modbus TCP是应用层协议,基于TCP实现
3)Modbus TCP 端口默认为502
ModbusTCP协议格式
Modbus TCP协议包含三部分:报文头、功能码、数据
Modbus TCP/IP协议最大数据帧长度为260字节
1.报文头
包含7字节,分别是:
2.寄存器
包含四种:离散量输入、线圈、输入寄存器、保持寄存器
1)离散量输入和线圈都属于位寄存器,(每个寄存器占一个字节),工业上主要用于控制IO设备(开、关)
2)输入寄存器和保持寄存器都属于字寄存器(每个寄存器占2个字节),工业上主要用于存储工业设备(存储数据)
3.功能码
具体协议分析可参考:
练习:
读传感器数据,读1个寄存器数据,写出主从数据收发协议。
主机给从机:
|-事务处理标识符-|-协议类型-|-字节长度-|-从机ID-|-功能码-|-起始地址-|-寄存器个数-|
0x0000 0x0000 0x0006 0x11 0x03 0x0000 0x0001
从机给主机:
|-事务处理标识符-|-协议类型-|-字节长度-|-从机ID-|-功能码-|-数据长度-|-寄存器数据-|
0x0000 0x0000 0x0005 0x11 0x03 0x02 0x1111
练习:
写出控制IO设备开关的协议数据,操作1个线圈,置1。
|-事务处理标识符-|-协议类型-|-字节长度-|-从机ID-|-功能码-|-数据长度-|-置为1-|
0x0000 0x0000 0x0006 0x11 0x05 0x0012 0xff00
0x0000 0x0000 0x0006 0x11 0x05 0x0012 0xff00