modbus tcp协议-modbus tcp协议的深入了解.docVIP

modbus tcp协议-modbus tcp协议的深入了解.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Modbus TCP协议-Modbus TCP协议的深入了解 导语:?Modbus总线有三种协议:ModbusRTU协议、ModbusASCII协议和ModbusTCP协议,Modbus总线活跃在工业通信领域。ModbusRTU和ModbusASCII擅长串行通信,比如基于RS485或者RS232的通信,而ModbusTCP则擅长基于以太网的通信。由于底层所使用的结构不同,Modbus的应用数据单元(ApplicationDataUnit,ADU)有所不同。你可能并去清楚什么是ADU,昌晖仪表下面来详细介绍。 Modbus总线有三种协议:ModbusRTU协议、ModbusASCII协议和ModbusTCP协议,Modbus总线活跃在工业通信领域。ModbusRTU和ModbusASCII擅长串行通信,比如基于RS485或者RS232的通信,而ModbusTCP则擅长基于以太网的通信。由于底层所使用的结构不同,Modbus的应用数据单元(ApplicationDataUnit,ADU)有所不同。你可能并去清楚什么是ADU,昌晖仪表下面来详细介绍。 为了进行通信,Modbus规定了一种很简单的数据结构,被称为“协议数据单元”(ProtocolDataUnit,PDU)。协议数据单元由功能码+数据构成,如下面这张图: 功能码的长度为1个字节,它表示要执行的功能。比如常见的:01读取线圈;02读取离散量输入值;03读取保持寄存器值;05写单个线圈等;数据部分的长度为0-252个字节,它表示要读的地址或者要写入的值,不同的功能码对应的数据有所不同。比如01功能码,其数据为4个字节,其中前两个字节表示要读取的线圈的地址,后两个字节表示要读取线圈的数量;而对于05功能码,其数据也是4个字节,前两个字节表示要写入线圈的地址,后面两字节表示要写入的值。 协议数据单元有三种类型:请求型协议数据单元(RequestPDU)、应答型协议数据单元(ResponsePDU)、及异常应答型协议数据单元(ExcepTIonResponsePDU),更多关于协议数据单元的内容,大家可以去Modbus官网下载通信规范好好阅读。 协议数据单元是Modbus的通用数据结构,它与底层物理结构无关,ModbusRTU、ModbusASCII和ModbusTCP都使用相同的协议数据单元。但是,Modbus在通信的时候,总要依赖物理网络。因此要把协议数据单元映射到物理网络上,这就形成了应用数据单元(ApplicaTIonDataUnit,ADU)。由于底层网络的不同,ModbusTCP跟ModbusRTU和ModbusASCII的应用数据单元是不同的,ModbusRTU和ModbusASCII的ADU结构如下图所示: 而ModbusTCP的ADU结构如下: 可以看到,ModbusTCP的应用数据单元是在协议数据单元的基础上,添加了一个叫做“MBAP头(MBAPHeader)”的结构。MBAP是英文“ModBusAPlicaTIon”的缩写,即“应用数据单元”的意思。 MBAP头结构由7个字节构成,如下表所示: 其中: ◆传输标识符:用于标识应用数据单元,即请求和应答之间的配对;客户端对该部分进行初始化,服务器端将其拷贝到自己的ADU中; ◆协议标识符:系统间的协议标识,0=Modbus; ◆长度:接下来要发送的数据长度,即:单元标识符+PDU的总长度,以字节为单位; ◆单元标识符:用于系统间的站寻址,比如在以太网+串行链路的网络中,远程站的地址; 这就是ModbusTCP的ADU结构,即:MBAP头+PDU,是不是很简单呢?ModbusTCP的数据传输采用的是一种被称为“客户端/服务器”的模式,这也是上面的表格中会出现客户端/服务器功能描述的原因。其实,很多网络通信都采用的这种方式,比如大名鼎鼎的西门子的S7通信协议。在串行链路中,这种方式也称为主-从通信。 说道这里,大家可能会有一个疑惑。因为Modbus在网络通信中,通常需要写明IP地址和端口号,为什么ModbusTCP的ADU中没有相关的内容呢? 哈哈,其实这是因为ModbusTCP是一个应用层的协议,而你说的IP地址和端口号属于传输层/网络层的协议。还没明白,好吧,看看这张图: 你看,在逻辑上ModbusTCP是在TCP层上的。在发送数据的时候,ModbusTCP的应用数据单元首先向下传送给传输层,加上TCP协议的报文;再传送给网络层,加上IP协议的报文;再向下传送给数据链路层及物理层;接收的过程正好相反,从物理层一层一层的去掉相应层的报文,最终到达应用层。所以在使用ModbusTCP进行数据传输的时候,是要配合TCP/I

文档评论(0)

xina171127 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档