ModBus学习总结

存储分区

        0区:表示线圈(Coil)分区。用于存储二进制输出数据,通常用于控制设备的开关状态,例如电机的启停操作。每个线圈都可以被读取和写入,用于实现设备的控制和状态反馈。

        1区:表示离散输入(Discrete Input)分区。用于存储二进制输入数据,通常用于表示开关、传感器等离散状态的输入信号。离散输入只能被读取,不能被写入,用于向主机提供有关设备输入状态的信息。

        3区:表示保持寄存器(Holding Register)分区。保持寄存器分区用于存储16位或32位的有符号或无符号整数数据。这个分区常用于存储实时数据或设备参数,如传感器数据、运行状态、设备配置等。保持寄存器可读可写,可以读取存储的数据,也可以修改其中的值。

        4区:表示输入寄存器(Input Register)分区。用于存储16位或32位的有符号或无符号整数数据,与保持寄存器类似。与保持寄存器不同的是,输入寄存器通常用于存储被Modbus设备读取的外部数据,如模拟传感器输出或其他设备的数据。输入寄存器只能被读取,不能被写入。

地址模型

功能码

报文分析

从ModBus Poll获取报文

对上方16进制报文进行精简有:
发送:01 03 00 00 00 0A C5 CD
接收:01 03 14 00 0B 00 0C 00 0D 00 0E 00 00 00 00 00 00 00 00 00 00 00 00 1B CA

发送/接收 格式:
从站地址+功能码+起始寄存器+寄存器数量+CRC(校验算法)
     01          03          00  00           00  0A        C5  CD
1号站点  读取寄存器 起始地址  读10个寄存器  

从站地址+功能码+字节计数+具体数据+CRC(校验算法)
     01          03          14               .......       1B CA
1号站点  读取寄存器 返回20个字节的数据 (一个寄存器16bit,两个字节)

对上方具体数据分析:

00 0B 00 0C 00 0D 00 0E 00 00 00 00 00 00 00 00 00 00 00 00

     10       11      12       13        0        0        0        0         0        0       

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

头发乌黑茂密

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值