通信协议——ModBusRTU
通信协议详解——ModBusRTU
为方便理解,直接举例子说明。
例子:
假设,有一款流量计,本身有六个通道。
第一通道的瞬时流量,单输入寄存器,寄存器地址为1。
第二通道的瞬时流量,单输入寄存器,寄存器地址为2。
第三通道的瞬时流量,单输入寄存器,寄存器地址为3。
第四通道的瞬时流量,单输入寄存器,寄存器地址为4。
第五通道的瞬时流量,单输入寄存器,寄存器地址为5。
第六通道的瞬时流量,单输入寄存器,寄存器地址为6。
流量计每个通道的累计流量,双输入寄存器,寄存器地址为1001和1002。
流量计的使用模式,单保持寄存器,寄存器地址为11,寄存器16位数据中的第二位。
流量计的流量重置,单保持寄存器,寄存器地址位21,向该寄存器写16。
- 想要读取第三通道的瞬时流量
- 想要读取流量计第四通道的累计流量
- 想要修改第五通道的使用模式为设置模式(0——使用模式,1——设置模式)
写某个位的情况需要在程序中进行一些数据处理,如移位,或操作,与操作。因为写的时候是按照字节写,若想操作字节中的某一位,必须保证其他位不变,因此需要先读目前数据,然后把对应位修改,组成新的数据进行写操作。
读:
写: - 把第五通道的流量值重置
功能码:
一般情况下,支持ModBusRTU的硬件说明书中,都会对所使用的通信协议进行详细的说明,列举一些常见的:
- 0x01:读取线圈寄存器。
- 0x02:读取离散输入寄存器。
- 0x03:读取保持寄存器。
- 0x04:读取输入寄存器。
- 0x05:写入单个线圈寄存器。
- 0x06:写入单个保持寄存器。
- 0x0f:写入多个线圈寄存器。
- 0x10:写入多个保持寄存器。
- 至于数据格式细节可参照对应硬件说明书。
PS
ModBusTCP和ModBusRTU相近,最大的区别是ModBusTCP在协议前面多了点东西。
有两个字节的事务处理标识,一般为00H 00H。
有两个字节的协议标识,一般为00H 00H。
还有两个字节的协议长度(为SlaveID之后),根据实际情况可为00H 06H,00H 09H以及其他。
如果对工业控制有兴趣,有问题需要交流,或者有项目需要合作,可扫描二维码进行详细沟通。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgakbbe
系列文章
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13