1.Modbus TCP简介
Modbus TCP 是在Modbus RTU协议的基础上发展而来,它将Modbus协议嵌入到底层的TCP/IP 中构成,这样就在TCP/IP的以太网上实现了客户机(client)-服务器(server)架构的Modbus报文通信;
2.Modbus TCP 的数据帧
它由MBAP报文头和PDU组成,MBAP的报文头占7个字节:
MBAP报文头组成
事务处理标识符 2字节 可以理解为报文的序列号,一般每次通信之后就要加1以区别不同的通信数据报文
协议标识符 2字节 00 00表示ModbusTCP协议
长度 2字节 表示接下来的数据长度,单位为字节
单元表示符 1字节 串行链路或其它总线上连接的远程从站地址
PDU组成
PDU由功能码+数据组成。功能码为1字节,数据长度不定,由具体功能决定。
3.功能码
modbus的操作对象有四种:线圈、离散输入、输入寄存器、保持寄存器。
线圈:PLC的输出位,开关量,在MODBUS中可读可写
离散量:PLC的输入位,开关量,在MODBUS中只读
输入寄存器:PLC中只能从模拟量输入端改变的寄存器,在MODBUS中只读
保持寄存器:PLC中用于输出模拟量信号的寄存器,在MODBUS中可读可写
根据对象的不同,modbus的功能码有:
0x01:读线圈
0x05:写单个线圈
0x0F:写多个线圈
0x02:读离散量输入
0x04:读输入寄存器
0x03:读保持寄存器
0x06:写单个保持寄存器
0x10:写多个保持寄存器
4.举例(别人总结)