1、Modbus协议 Modbus是一种工业总线协议标准,包括ASCII、RTU、TCP三种报文类型,其物理层接口有RS-232、RS-485、RS-422、及以太网,采用主/从方式进行通信。 2、Modbus-TCP基于以太网TCP/IP协议,将数据以Modbus格式进行传输 以太网格式: 目标地址(6B)+源地址(6B)+类型(2B)+数据(46-1500B)+CRC(4B) Modbus-TCP帧格式: 报头(7B)+帧结构PDU 报头格式: 事务处理标识(可理解为报文的序列号2B)+协议标识(2B,0000表示Modbus-TCP协议)+长度(接下来的数据长度2B)+单元标识(可理解为设备地址1B) 帧结构PDU 功能码(1B)+数据(n) Modbus的操作对象有4种: 线圈:PLC的输出位,开关量,在Modbus中可读可写 离散量:PLC的输入位,开关量,在Modbus中只读 输入寄存器:PLC中只能从模拟量输入端改变的寄存器,在Modbus中只读 保持寄存器:PLC中用于输出模拟量信号的寄存器,在Modbus中可读可写; Modbus的功能码: 0x01:读线圈 线圈数量1-2000个 请求(5B):0x01+起始地址H+起始地址L+线圈数量H+线圈数量L 响应:0x01+字节数+线圈状态(NB)—一个地址的数据为1位 0x02:读离散量 同上 0x03:读保持寄存器 请求(5B):0x03+起始地址H+起始地址L+寄存器数量H+寄存器数量L 响应(2+寄存器数量2): 0x03+字节数+寄存器数据 0x04:读输入寄存器 同上 0x05:写单个线圈 0xFF00值对应ON、0x0000值对应OFF 请求(5B):0x05+线圈地址H+线圈地址L+线圈值H+线圈值L 响应(5B):0x05+线圈地址H+线圈地址L+线圈值H+线圈值L 0x06:写单个保持寄存器 请求(5B):0x06+寄存器地址H+寄存器地址L+寄存器值H+寄存器值L 响应(5B): 0x06+寄存器地址H+寄存器地址L+寄存器值H+寄存器值L 0x0F:写多个线圈 数量1-0x78 请求(6+输出数量B):0x0F+起始地址H+起始地址L+输出数量H+输出数量L+字节数(1B,值为N)+输出值(N个) 响应(5B): 0x10+起始地址H+起始地址L+输出数量H+输出数量L 0x10:写多个个保持寄存器 数量1-0x78 请求(6+寄存器数量2B):0x10+起始地址H+起始地址L+寄存器数量H+寄存器数量L+字节数(1B,值为2N)+寄存器值(2N个) 响应(5B): 0x10+起始地址H+起始地址L+寄存器数量H+寄存器数量L 3、Modbus-TCP通信方式 Modbus分为主站和从站,主站只有一个,从站有多个,主站给从站发送请求帧,从站响应。在使用TCP通信时,主站为client端,主动建立连接,从站为server端,等待连接。

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: