网站首页 > 技术文章 正文
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风扇速度设置
- 1507℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 516℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 489℃MySQL service启动脚本浅析(r12笔记第59天)
- 468℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 466℃启用MySQL查询缓存(mysql8.0查询缓存)
- 446℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 426℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 423℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)