Modbus TCP协议

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端,等待连接。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大浪淘沙胡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值