最后更新:2022-04-16 14:50:14 手机定位技术交流文章
以下关于MODBUS协议的知识已上网供今后参考。
穆德布斯登记册分为四组,如下表所示:

实际上,圆柱形登记册可以用来象征开关。一个位对应于一个线圈位置(bit),一个位对应于一个开关信号。这个故事是我们对2011年埃及抗议的特别报导的一部分。1/true),八位位开关的信号将用每个字节的字节表示。卷内登记册既能读又能写。摩布斯的功能代码规定读写一个或更多圈子。事实上,这就是在操作中的字节。顶部函数代码为 0x01 0x05 0x0f。
离散输入记录器与 Coil 记录器的只读模式相对应,运行方式与上文所述基本相同,但无法写入。因此,函数代码是一个简单的读数 0x02 。
将登记册保留为字节操作, 每两个字节对应一个可以读写的登记册。 函数代码对应为 3: 0x03 0x06 0x10 。
输入登记簿: 提供与保留登记簿完全相同, 但它也允许读而非写。 一个登记地址是两个字节的空格, 16比特。 相关的功能代码是 0x04 。
言外之话:
当需要保持登记册操作时,不同数据类型的字节长度实际上是不一致的,只有单一的准确性数据用两个字节地址表示。

如下表所示,Modbus有八种功能代码,可分为比特操作和字操作:

函数代码01H检查Modbus coil登记册的状况,该登记册可能是单一的登记者或一系列登记者。
发送
说明如下,假设机器地址为01H,则圆圈保管人的第一个地址为0017H,38发报机为:
读线圈寄存器指令
响应
如果要搜索的线圈数不是8的倍数,则附上最后字节的前0。
返回读取循环状态的结果 。
口译:在转换为二元系统后,首个字节CHDH(Colil 0017H)至001E(001E)的状态为1100101,其中位数0相当于007H,位数7相当于001E,如下表所示:
0017H至001EH 铁环
二进制是0011011, 其中位数0 相当于 003H, 位数5 相当于 003CH, 其余两个填充为 0:
从007H到003CH,卷圈
从站发送读取格式:
| 从站地址 | 功能码 | 起始地址高位 | 起始地址低位 | 读取数量高位 | 读取数量低位 | CRC高位 | CRC低位 |
|---|---|---|---|---|---|---|---|
| 0x01 | 0x01 | 0x00 | 0x00 | 0x00 | 0x02 | BD | CB |
主站返回读取格式:
| 从站地址 | 功能码 | 返回字节数 | data1 | CRC高位 | CRC低位 |
|---|---|---|---|---|---|
| 0x01 | 0x01 | 0x01 | 0x00 | 51 | 88 |
解读:
发送格式:
从站地址:01
功能码:01
00:01:01:01:01:01:01:01:01:01:01:
读数为: 002。
此项目是泰国2011年大选特别报导的一部分。
接收格式:
从站地址:01
功能码:01
返回字节数: 01
数据: 00 (一个字节包含 8 位, 读取 2 位将给字节增加 2 位, 一个字节将返回读取 2 位)
此项目是泰国2011年大选特别报导的一部分。
例如,01 01 010051 88
01 01 010190 48
函数代码 02H 读取 Modbus 的离散机器输入记录器的状态, 该记录器可以是单一的登记器,也可以是一系列的登记器。
发送
如果机器地址为01H,读取离散输入记录器的起始地址为00C4H,读取22个登记册的指示如下:
读取离散输入登记册的命令 :
响应
如果要搜索的线圈数不是8的倍数,则附上最后字节的前0。
读取离散输入记录器的返回结果 。
第一字节ACH系指发送者在00C4H至00CBH之间的状态,转换为二进制为1011,100,其中位元0相当于00C4H,位元7相当于00CB,如下:
00C4H 至 00CBH 发信者状态
最后一个字节是35H,相当于登记状态00D4H至00D9H,二进制是00110101,其中位数0相当于00D4H,位数5相当于00D9H,其余两个则填充为零。
发送者状态 00D4H 到 00D9H
函数代码03H读取Modbus数据以保留机器的登记册,该登记册可以是单一的登记者,也可以是多次连续的登记者。
发送
如果机器地址是01H 记录员读取的起始地址是006BH读取3个寄存器表5载有这些说明,如表1所示。
读保持寄存器指令:
响应
每个保持寄存器的长度为2个字节保持储户之间的传输、低地址发报机之间的传输和高地址发报机之间的传输。保持登记册的独立性,先传输高字节数据,后传输低字节数据。
读取并保存登记册的返回结果 。
函数代码 04H 读取进入机器登记册的 Modbus 数据,该登记册可以是单一的登记者,也可以是多个相继的登记者。
发送
如果机器地址是01H 记录员读取的起始地址是006BH读取2个寄存器,指令如下所示:
读输入寄存器指令:
响应
每个输入记录器的长度为两字节。 请输入登记册之间的时间, 低地址登记器先传送, 高地址登记器稍后传送。 请输入一个单一的登记册, 先传送高字节数据, 然后再传送低字节数据 。
把登记表的回报结果放在这里
函数代码 05H 写一个线圈登记簿, 而 FF00H 要求将线圈打开, 00H 则要求将线圈转换为 OFF 。
发送
如果机器地址为01H,而卷轴登记为00ACH,则保持这一地址的程序如下:
写单个线圈指令:
响应
如果写作顺利, 请返回发送的命令, 即 010500ACFF004C1B
01 05 00 00 FF 00 8C 3A是写法
01 05 00 00 00 FF 00 8C 3A 返回
函数代码 06H 分别写入每个登记册 。
发送
说明如下,假设机器地址为01H,保持登记册的地址为001H,数据位置为003H:
个人记录保存指示应写明:
响应
如果写作进展顺利, 请返回发送的命令, 即 0106001003980B
09. 创建若干循环器(0FH)。
0FH 是一个写许多卷圈的函数代码 。如果匹配数据是1,则符合条件。这表明卷圈在OON州;如果等值数据为0,则表示卷圈在FFP州。这意味着圈圈关闭了线圈寄存器之间,首先,这是一个低地址登记簿。在传送后,发送了一个高地址记录器。单个线圈寄存器,高字节数据先传输,低字节数据后传输。如果书面折叠数不是八倍,将 0 附加到最后一个字节的开头
发送
如果机器地址为01H,则卷轴保管员的起始地址为0013H,该地址使用下列指示写入10个登记册:
创建多个循环器命令 。

人权专员办公室的内容与0013H至001AH之间对应的卷号0013H,以及01H与001CH之间对应的卷号001B至001H的内容,没有填写0位元。
此时此刻, 卷圈登记簿看起来是这样的:
卷轴发射机的构成范围从0013H到001CH不等。
响应
如果写入成功, 返回写入存储库的编号 。
若干卷圈的返回结果应记录下来。
函数代码 10H 向登记册发送数个字节, 其中每个字节为两字节长 。
发送
如果机器地址为01H,记录员的起始地址为001H,并分两个登记册,说明如下:
创建多个保存存储器命令 。
返回数据格式,但不返回数据本身。
详细信息:附有数据1、数据2、数据3和数据4的书圈数,各显示单一准确度。
3074年的温度为0°C,4677年的温度为1245。
响应
如果写入成功, 返回写入存储库的编号 。,
写入数个返回值以保持注册 。
| 从站地址 | 功能码 | 起始地址高位 | 起始地址低位 | 写入数量高位 | 写入数据低位 | 字节长度 | data1 | CRC高位 | CRC低位 |
|---|---|---|---|---|---|---|---|---|---|
| 0x01 | 0x0F | 0x00 | 0x00 | 0x00 | 0x02 | 0x01 | 0x03 | 9E | 96 |
主站返回读取格式:
响应:
| 从站地址 | 功能码 | 起始地址高位 | 起始地址低位 | 写入数量高位 | 写入数据低位 | CRC高位 | CRC低位 |
|---|---|---|---|---|---|---|---|
| 0x01 | 0x0F | 0x00 | 0x00 | 0x00 | 0x02 | 9E | 96 |
返回数据格式,但不返回数据本身。
细节:有两条线圈是书面的,数据1 0x03中的数据代表0011,还有两条相继的线圈设定为 ON。
版权:这是持发委的博客作者根据CC-4.0 BY-SA版权协议撰写的原创文章,“在海的尽头微笑 ” 。 复制时请提供与原文和本声明的链接。
对不起,Csdn,纽约:http://t.co/dengjin20104042056artile/details/1155046
Modbus协议是一个应用级信息传输协议,支持三类信息:ASCII、RTU和TCP。
RS232、RS422、RS485和以太网接口是Modbus协议物理层接口,通过母体/奴隶进行互动。
PDU由功能代码和数据组成,函数代码长1字节,数据长度因函数而异。
2.2.1 功能码
摩客操作物体分为四类:螺旋、离散输入、登记输入和登记维护。
MODBUS中PLC输出位置、开关、可读和可写,均以圆表示。
分布式: PLC 输入位置、开关、MODBUS 仅读
插入登记册:PLC登记册只能从模拟输入端更改,MODBUS登记册只读。
保持登记册:可读并可在MODBUS中写入的模拟信号输出PLC登记册。
modbus 函数代码因对象而异 :
0x01:读线圈
0x05 写一个线圈 。
以 0x0F 写入许多卷圈 。
0x02: 读取备份输入
0x04: 读取输入登记簿
0x03: 继续注册读取
0x06: 一次写一个来保存登记册 。
0x10: 多次写入以保持注册活动 。
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
0x01:读线圈
读取从1站到2 00站的连续线圈状态,On=1,OF=0。
BBAP 函数代码 开始地址 开始地址 开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址
数据长度数据数据(每个地址1位数)
例如,读取 0x002 号站 0x01, 0x008 号站的初始coil 数据
00 01 00 00 00 06 01 01 00 02 00 08
返回: 0x01 字节, 0x01 字节, 在第一圈, OFEF 在后面的圆圈中
00 01 00 00 00 04 01 01 01 01
0x05 写一个线圈 。
要求输出为 ON, 0xFF00 。 请指定输出为 ON, 0x00 。
L 输出值 H 输出值 L 输出值 L (12 字节) 请求: MBAP 功能代码
产出地址 H 产出地址 L 产出地址 L 产出值 H 产出值 L (12 字节) 回应: MBAP 功能代码 产出 地址 H 产出 地址 L 产出值 H 产出值 L (12 字节)
例如,在 0x003 的 ON 上贴一个线圈 。
00 01 00 00 00 06 01 05 00 03 FF 00
回:写入成功
00 01 00 00 00 06 01 05 00 03 FF 00
以 0x0F 写入许多卷圈 。
将每个空间站的圆圈序列的线圈推至 On 或 OFF 或 OFF,在 ON 上以 1 位数据字段要求输出, 在 OF 以 0 位数据字段要求输出 。
MBAP 函数代码请求: 启动地址 H 输出号 L 输出量 L 输出量 L 字元长度 输出值 H 输出值 L
BBAP 函数代码 开始地址 开始地址 L 输出卷 L 开始 开始 开始 开始 开始 开始 开始 开始 开始 开始 开始 开始 开始 开始 开始 开始 开始
0x02: 读取备份输入
读取一个台站1至2 00个连续离散输入的状态。
BBAP 函数代码 开始地址 开始地址 开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址 L开始地址
数据(长度:9+ceil(第8号))
例如,从地址0x00读取,并有0x0012的离散输入。
00 01 00 00 00 06 01 02 00 00 00 12
背面:数据长度 0x03 字节,数据 0x01 04 00,表示输入的第一和第二个离散部分,其余
00 01 00 00 00 06 01 02 03 01 04 00
0x04: 读取输入登记簿
1至2 00个连续输入记录器可从一个遥控装置读取。
BBAP 功能代码请求:启动地址H L发件人数目 H L发件人数目 H L发件人数目 (共计12字节)
数据长度 交存者数据(长度:9+登记人数x2)
例如,启动地址为 0x002 和目的地地址为 0x005 的发件人数据
00 01 00 00 00 06 01 04 00 02 00 05
返回: 0x0A 数据长度, 0x0c 第一个注册的数据, 休息 0x00 。
00 01 00 00 00 0D 01 04 0A 00 0C 00 00 00 00 00 00 00 00
0x03: 继续注册读取
要保留登记册,请读取距离装置的连续区块的内容。
BBAP 功能代码请求:启动地址H L发件人数目 H L发件人数目 H L发件人数目 (共计12字节)
数据长度 交存者数据(长度:9+登记人数x2)
例如, 0x00 是起始地址, 0x003 是发报机的数量 。
00 01 00 00 00 06 01 03 00 00 00 03
返回: 0x06 数据长度, 第一次登记为 0x21 数据, 其余为 0x00 。
00 01 00 00 00 09 01 03 06 00 21 00 00 00 00
0x06: 一次写一个来保存登记册 。
在远程设备中, 创建一个持有登记册 。
甲基溴行动计划功能代码发送地址H登记地址 L发送值 H登记值 L发送值 H登记值 H登记值 H登记值 L登记值 L(共计12字节)
甲基溴行动计划功能代码发送地址H登记地址 L发送值 H登记值 L发送值 H登记值 H登记值 H登记值 L登记值 L(共计12字节)
例如,将数据 0x00A 写入地址为 0x00 的登记册 。
00 01 00 00 00 06 01 06 00 00 00 0A
回:写入成功
00 01 00 00 00 06 01 06 00 00 00 0A
0x10: 多次写入以保持注册活动 。
用远程设备写入连续内存区块(1-123)
BBAP 功能代码 启动地址 H 登记簿的H数量 L 登记簿的L 位数 L 位数 登记册的L 位数 发送者值 (13+发件人数 x 2)
MBAP 功能代码启动地址 H 仓库L号 仓库L号 仓库L号 仓库L号 仓库L号 仓库L号 仓库L号 (总共12字节)
例如, 0x00 作为起始地址, 0x001 作为数字, 0x002 作为长度, 0x00F 作为长度 。
00 01 00 00 00 09 01 10 00 00 00 01 02 00 0F
回:写入成功
00 01 00 00 00 06 01 10 00 00 00 01
本文由 在线网速测试 整理编辑,转载请注明出处。