网站首页 > 技术文章 正文
Modbus是一种通信协议,最初是为工业自动化系统设计的,用于在不同设备之间进行数据交换和通信。Modbus通信协议广泛应用于工业控制领域,而功能码是Modbus协议中用来定义数据交换操作的。
线圈寄存器:可以类比为开关量,每个bit都对应一个信号的开关状态。所以一个字节可以同时控制8路的信号。比如控制外部8路io的高低。 线圈寄存器支持读也支持写,比如控制或者读取电磁阀的开关志状态。对应的功能码有:0x01 0x05 0x0f
离散输入寄存器:离散输入寄存器相当于线圈寄存器的只读模式,每个bit表示一个开关量,而他的开关量只能读取,不能够写入。只能通过外部设定改变输入状态,比如我可以读取外部按键的按下还是松开,但是控制不了按键。对应的功能码有:0x02
保持寄存器:寄存器的单位不再是bit而是两个byte,也就是可以存放具体的数据量的,并且是可读写的。比如我不到那可以读取传感器报警上限下限,也可以设置它的大小。对应的功能码有:0x03 0x06 0x10
输入寄存器:输入寄存器相当于保持寄存器的只读模式,也是只支持读而不能写。一个寄存器也是占据两个字节的空间。比如通过读取输入寄存器获取现在的模拟量采样值。对应的功能码有 0x04
读取功能码(0x04)
读取功能码(0x04)是Modbus02功能码中最常用的功能码之一,它用于从设备中读取数据。使用读取功能码(0x04)时,您需要指定要读取的寄存器地址和要读取的字节数,然后设备会返回指定地址的数据。
写入功能码(0x06)
写入功能码(0x06)用于向设备中写入数据。使用写入功能码(0x06)时,您需要指定要写入的寄存器地址和要写入的字节数,然后设备会将指定地址的数据写入设备中。
状态查询功能码(0x08)
状态查询功能码(0x08)用于查询设备的当前状态。使用状态查询功能码(0x08)时,您需要指定要查询的状态码,然后设备会返回指定状态码的当前值。
报文查询功能码(0x0A)
报文查询功能码(0x0A)用于查询设备的报文信息。使用报文查询功能码(0x0A)时,您需要指定要查询的报文码,然后设备会返回指定报文码的当前值。
状态控制功能码(0x0C)
状态控制功能码(0x0C)用于控制设备的状态。使用状态控制功能码(0x0C)时,您需要指定要控制的状态码,然后设备会将指定状态码的值更改为您指定的值。
报文控制功能码(0x0E)
报文控制功能码(0x0E)用于控制设备的报文信息。使用报文控制功能码(0x0E)时,您需要指定要控制的报文码,然后设备会将指定报文码的值更改为您指定的值。
Modbus协议在工业控制领域中的灵活性和实用性,为设备间的数据交换和控制操作提供了高效的解决方案。一文读懂Modbus通信协议的功能码-聚英电子官网
猜你喜欢
- 2024-12-20 微软确认Win10更新出现问题:建议完全重置系统
- 2024-12-20 【MFRC522】STM32 MFRC522 IC读卡 程序及原理图
- 2024-12-20 win10更新又双叒翻车 这几天出了这些问题都是它的锅
- 2024-12-20 微软 Win10 KB5003173 更新安装失败,原因是没有新版 Edge浏览器
- 2024-12-20 今年最后一次可选更新:微软Win11推送26100.2454
- 2024-12-20 关于BIOS的入口地址0xFFFF0 bios information
- 2024-12-20 部分Win11 24H2用户反馈微软12月更新BUG:安装失败、蓝屏等
- 2024-12-20 Win10用户反馈安装微软3月更新时遇到0xd0000034错误
- 2024-12-20 Win11 22H2 (KB5017321) 安装更新失败如何修复
- 2024-12-20 R730调整风扇转速 r710风扇速度设置
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)