ModBus RTU/TCP

      最后更新:2021-11-17 14:38:14 手机定位技术交流文章

      Modbus通信协议是1979年由Medicon(现由Schneider在其旗帜下作为副品牌购买)创立的,是第一个在工业地点使用的全球公共汽车包租,协议的使用者没有义务支付任何费用,因为其免费公共分配,Modbus通信协议采用主要通信形式(即主/奴隶通信模式),并在分散控制下广泛实施,允许在国际上使用Modbus协议。

      Modbus通信协议有多种变式,有系列港口(主要是RS-485大客车)的支持,并有多种版本的Teennet,其中最著名的是Modbus RTU、Modbus ASCII和Modbus TCP。 其中Modbus RTU和Modbus ASCII都有支持RS-485大客车线路的通信协议,其中Modbus RTU由于其二进制表达式和紧凑数据结构,效率更高、适用范围更广。 Modbus ASCII使用ASCII代码进行传输,并将特殊字符作为字首字母和结尾标志,其效率远低于Madbus RTU,后者通常被认为只在通信量小的情况下使用,而Modbus RTU协议通常在工业场所使用。一般来说,Modbus RTU通信协议提及基于连续通信的Modbus通信协议。

      Modbus RTU协议是本节的重点,而Modbus TCP协议在TRU协议中增加了一个MBAP页头。由于TCP基于可靠的连接服务,TRU协议中的CRC校准代码已不再必要,Modbus TCP协议中也没有CRC校准代码。一般来说,Modbus TCP协议在Modbus RTU面前是5个零和1个6个,然后删除了2个CRC校准字节。尽管这一点并不特别准确,但对于RTU和TCP的区别通常要更加明确。

      RTU协议的指令由五个部分组成:地址代码(一个字节)、函数代码(一个字节)、起始地址(两个字节)、数据(两个字节)和核查代码(两个字节),其中数据包括数据长度(两个字节显示储户数目,假设内容为M)和数据文本(M乘以2字节),而RU协议以3.为基础。 一般来说,只有当数据从机器返回时或当主机写回数据时才需要一个数据体,然而,当主机收到指示时,没有数据体,只需要数据长度(两个字节),而核查代码(两个字节),其中数据包括数据长度(两个字节显示储户数,假设内容为M)和数据文本(M乘以2字节),而RUUTU则以3为基础。 这里我们使用的是两个命令(0x03H:读取多个登记命令, 0x10H:写多个登记命令)。

      ND- 1084 Bus I/ O 模块允许四向开关的输出以及通过 RS-485 Bus 通信提供八向开关的输入。 我们只描述读取和提取开关输出和通过写指令控制开关输出的状态。 其中四个存储器存储开关输出状态的存储器为 0x18E, 0x18F, 0x190, 0x191. 我们假设模块的地址是默认的 0x01, 当我们阅读与开关输出相对应的四个存储器的状况时, 我们发送的十六进制系统的指示是:“ 01 03 01 8E 004 25 DE”, 其中“ 01” 是模块的地址, “ 03” 是模块的地址, “ 03” 是功能编号, 即读发送器“ 01 8E” 是发送器的地址, 发送器的地址是“ 018E” 是发送器的地址, 发送器的地址是“ 01001 ”, 即开始阅读登记册中的数据, 而“ 004 读取四个存储器的开始指令, 而“ 025 DE” 是“ 我们通过验证的代码, 我们通过 的代码, 我们的代码是前的文本是 。

      模块返回命令为“ 001 03 08 00 00 01 01 00 01 0 01 01 D7 ” 。 返回的指示读为“ 01 01 ”, 模块地址号为“ 03 ”, 指令读取操作返回, 数据长度为“ 08 ”, 数据体八个字节(即4个发送器,每个两个字节), 数据体“ 001 00 01 01 01 01 01 01 01 01 01, 显示4个保存器的状况, CRC 16 显示“ 28 D7 ” 。

      同样,当我们写的时候,我们提供第一个开关输出的例子,发件人“0x18E”,主机下传送的指示是:“01 10 0 01 8 e 00 00 00 00 00 A8 7E”,这被解释为“01”,用于启动发件人的“10”单元地址,“01 8E”,用于启动发件人的“00 01”操作指示,“02”,用于数据长度,“02”。

      如上所述,Modbus TCP协议在RTU协议中增加了甲基溴行动计划报告页头,共7个字节,其含义分别为1:1. 转移信号,两个字节长度,信号 Modbus 询问/回复传输,通常默认为0.00。 2。 协议号,两个字节长度,0 表示 Modbus,0 表示UNI-TE协议,1 表示UNI-TE协议,默认为00. 3。以下各字节被计算在内,两字节长度,其实际含义是其后的字节长度,详见下文。 Four. Unitedies号,一个字节长度,通常默认为00,对应Modbus RTU协议的地址号,其数据是相应的RTU协议的地址号,如下文所述,当协议在TRU和TPN之间转换时,特别是Modbus网关转换协议时。

      根据先前的解释,我们实际上可以理解Modbus RTU协议。我们再次说,如前所述,Modbus TCP通信协议旨在删除校验总和,并根据TRU协议在TCP协议中增加5个零和6个。 TRU协议在阅读相关的保管人时是正确的,例如,读读“0101 8E 004 25 DE”指令,使用TCP协议“00 00 0 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00” 。 “003 0 8 E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100

      Modbus RTU 读取命令对 Modbus TCP 读取命令

      MBAP报文头

      地址码

      功能码

      寄存器地址

      寄存器数量

      CRC校验

      Modbus RTU

      01

      03

      01 8E

      00 04

      25 DE

      Modbus TCP

      00 00 00 00 00 06 00

      03

      01 8E

      00 04

      开始读取 (03) 四(004) 封存,地址为 0x18E (01 8E) 登记地址为 01 (TCP 协议单位表示为 00) 。

      Modbus RTU诉 Modbus TCP的书写说明

      MBAP报文头

      地址码

      功能码

      寄存器地址

      寄存器数量

      数据长度

      正文

      CRC校验

      RTU

      01

      10

      01 8E

      00 01

      02

      00 00

      A8 7E

      TCP

      00 00 00 00 00 09 00

      10

      01 8E

      00 01

      02

      00 00

      说明的解释:从模块登记簿 0x18E (01 8E) 的地址开始写作,地址代码为 01 (TCP 协议单位编号为 00 (10) 1 (00 01) 登记簿,数据长度为 2 字节 (02),数据体为 00 (00) 。

      Modbus RTU 通讯协议协议信息、差异、与 Modbus TCP 的关联,

      MondBus RTU/TCP_chenliang0224-CSDN博客(58条信息)

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/13414.html

          热门文章

          文章分类