最后更新: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条信息)
本文由 在线网速测试 整理编辑,转载请注明出处。