回复:应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯—发帖整理

总坛主 西门子1847工业学习平台

  • 帖子

    3679
  • 精华

    8
  • 被关注

    367

论坛等级:至圣

注册时间:2003-06-06

普通 普通 如何晋级?

发布于 2011-09-13 15:24:27

8楼

quote:以下是引用掠影匆匆在2011-08-19 15:43:08的发言:
quote:以下是引用火麒麟在2011-08-19 09:49:45的发言:
quote:以下是引用掠影匆匆在2011-08-19 08:34:27的发言:
quote:以下是引用火麒麟在2011-08-18 21:19:50的发言:
关于楼上的第5个,为什么一包数据最多只能发送125个寄存器而不是126个呢?


这是由Modbus TCP的协议规范所约束的,另外涉及到具体产品的话这个数字还会进一步缩小

按照ModbusTCP的报文规范,有一个字节代表返回字节的数量,一个字节最大255,又因为返回寄存器字节数都是偶数,所以最大254,而报文的第六个字节是后续所有字节的数量,最大也为255,除去设备地址、功能码、返回字节数3个字节,所以理论请求数量应该为(255-3)/2=126个,不知道报文规范为何限制为125个

Modbus PDU长度
◆ Modbus最初在串行链路上的实现(最大RS485ADU=256字节)限制
了Modbus PDU的长度

◆ 因此,对串行链路通信来说,Modbus PDU=256-服务器地址(1字节)-
CRC(2字节)=253字节

◆从而:
RS232 / RS485 ADU = 253字节+服务器地址(1字节) + CRC (2字节)=
256字节
TCP Modbus ADU = 253字节+ MBAP (7字节) = 260字节
◆从而Modbus TCP PDU=253字节-功能码(1字节)-返回的字节数(1字节)=251字

◆故纯寄存器数量=251/2(四舍五入)=125字节
其实最主要的原因还是Modbus TCP的PDU是基于串口的RTU来实现的
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54711条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。