加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Modbus TCP/IP与Modbus RTU数据帧结构的区别

(2016-08-04 10:44:28)
分类: 电气及工控

Modbus TCP/IP数据帧除了TCP已经有的包头外,还有modbus TCP协议数据单元(ADU),包括MBAP帧头以及与RTU数据内容相同的应用数据单元(PDU),地址码除外。

http://s13/bmiddle/0026oM5Zzy73MtFQV4wcc&690

       其中与单纯的TCP/IP或是modbus-RTU相比,多的内容就是一个MBAP报文头:

http://s7/bmiddle/0026oM5Zzy73MtK4Wfc36&690

MBAP报文头定义

       可以看出来,MBAP报文头主要添加了以下附加信息,为了识别是请求还是响应而设置的事务元标识符(2个字节,通常为0,客户端发出的检验信息,服务器端只是需要将这两个字节的内容复制以后再放到回复报文的相应位置就可以)、为了判断协议类型设置的协议标识符(2个字节,0=MODBUS协议)、为了区分可变长度数据帧结束的数据帧长度(从下一个字节起至结束的长度,2个字节)、还有用于标识从站地址的单元标识符(1个字节,即从站地址),与RTU不同的是,从站地址放在了MBAP帧头里。

PDU单元与MODBUS RTU数据内容基本相同,由于有TCP/IP 和链路层(以太网)校验和机制所以去掉了CRC校验码,从站地址也放在了MBAP帧头里。

另外Modbus TCP/IP默认端口为502 

例子:

Modbus 控制命令为:
00 01 00 00 00 09 04     10 00 00 00 01 02 00 01

       MBAP                                PDU

上述命令可简单的解释为:00 01(事务标识符)00 00(协议标识符)00 09(后续字节数)04(设备标识符,即从站地址)10(功能码,写多个保持寄存器值)00 00(第一个地址,即地址 100 01(写寄存器的个数,1 个)02(后续所写数据的长度)00 01(具体写的数据)。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有