标准Modbus-TCP

本文详细介绍了Modbus通讯协议在TCP模式下的工作原理,包括master和slave端的数据帧结构,以及序列码、功能码、起始地址和数据长度等关键元素的解释。通过示例展示了数据请求和响应的过程,强调了数据校验和序列同步的重要性。
摘要由CSDN通过智能技术生成

使用TCP不需要校验。

后文所说的寄存器,也可能指线圈,离散输入等,具体视功能码而定。

master端

共发送12字节

示例:00 3d 00 00 00 06 01 01 00 00 00 10

第1,2字节[00 3d]:

序列码,每次+1。当master端发送序列码为00 3d,则slave端也需要返回以00 3d打头的消息,以保证每帧的消息发送和接受不会出错。

第3~5字节[00 00 00]:

意义不明,可能只是为了分隔。

第6字节[06]:

固定为06,表示请求。

第7字节[01]:

请求的slave ID

第8字节[01]:

功能码。具体可以看Modbus Poll的function选项

第9,10字节[00 00]:

起始地址。上文意思是从0开始读。

第11,12字节[00 10]:

读多少位。上文意思是读16位

slave 端

示例:00 3d 00 00 00 05 01 01 02 ff ff

第1,2字节[00 3d]:

序列码,每次+1。当master端发送序列码为00 3d,则slave端也需要返回以00 3d打头的消息,以保证每帧的消息发送和接受不会出错。

第3~5字节[00 00 00]:

意义不明,可能只是为了分隔。

第6字节[05]:

返回声明。如果为03及以下时,说明请求错误,可能是请求超过寄存器限制等。如果是03以上,说明正常。正常时值取第9字节数值加3。如第9字节为02,加3为05,所以返回声明为05。

第7字节[01]:

应答的slave ID。

第8字节[01]:

应答的功能码。具体功能码定义,可以参看Modbus Slave软件Function

第9字节[02]:

返回数据长度,单位字节。

其余字节:

数据。数据位小端排列。

如,数据为[1000 0001 0111 1110],最左边为寄存器的高位,31位;最右边为低位,0位。则应答应为[7e 81],即0~15这最低的字节在应答数据第一字节的位置,16~31这最高的字节在应答数据第二字节的位置。

对于更多的位数,则遵循最低字节在最前面,最高字节在最后的原则。

如果请求的位数不足一个字节,则最少返回一个字节数据,其余未请求的数据以0占位。

如:master端只请求1位,则需要返回1个字节;master端请求17位,需要返回2个字节。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值