Modbus全部功能码及部分名词译解

声明:本人的博客均为原创,未经允许不得转载。

网上搜寻了一大堆资料,基本能找到的资料都只介绍了几种常用功能码。分别为01H-06H,0FH-10H。找到的中文规范说明也仅仅只多出了14H-17H以及2BH的说明。加之中文版机翻,实在难以阅读。因此只得去寻找modbus英文原版说明书。

功能码共分为三类:公共功能码、用户定义功能码以及保留功能码。公共功能码的范围为0x01-0x40、0x49-0x63、0x6F-0x7F。用户定义功能码范围为0x41-0x48、0x64-0x6E。公共功能码能保证其唯一的功能。而用户定义功能码相当于自设,不能保证某个码用在别处还是一样的功能。通常情况下我们只使用公共功能码。

首先是中英文对照,以及简单解释。个人翻译,有不当之处还请指出。此处仅列出了英文说明书目录中包含的内容,部分子项不在此列出。详情请看具体条目。

0x01 读线圈状态(Read Coils)

0x02 读离散输入状态(Read Discrete Inputs )

0x03 读保持寄存器(Read Holding Registers )     

0x04 读输入寄存器(Read Input Registers)

0x05 写单线圈(Write Single Coil )

0x06 写单寄存器(Write Single Register)

0x07 读取异常状态(限串行线)(Read Exception Status (Serial Line only) )

0x08 通信系统诊断(限串行线)(Diagnostics (Serial Line only) )

0x09-0x0A无

0x0B 获取串行通信事件计数器(Get Comm Event Counter (Serial Line only) )

0x0C 获取串行通信事件日志 ( Get Comm Event Log (Serial Line only) )

0x0D-0x0E无

0x0F 写多个线圈(Write Multiple Coils)

0x10 写多个寄存器(Write Multiple registers)

0x11 报告服务器ID(仅串行线)(Report Server ID (Serial Line only) )

0x12-0x13无

0x14 读文件记录(Read File Record )

0x15 写文件记录(Write File Record)

0x16 带屏蔽字写入寄存器(Mask Write Register )

0x17 读/写多个寄存器(Read/Write Multiple registers)

0x18 读取先进先出(FIFO)队列(Read FIFO Queue)

0x19-0x2A无

0x2B 封装接口传输(Encapsulated Interface Transport .)

 

需要补充说明的是,英文说明书中就只包含了这些,更完整的版本可见 https://www.cnblogs.com/still-smile/p/14789844.html,翻译和解释上略有区别但本质上都一样。但该博客额外提供了0x09-0x10、0x0d-0x0e的说明。

附上原图:

 

功能码示意图

 

Subcode为子功能码,以后再具体介绍。

 

现对以上目录中的专有名词进行解释:

Discrete Inputs:离散输入量

离散输入量指输入并非是以时间为自变量的连续函数,而是一个个孤立的点。大多来自于采样的信号。

Holding Registers:保持寄存器
保持寄存器是一种在MODBUS通信协议中使用的1数据存储单元,可以存储16位整数值。在MODBUS协议中,保持寄存器的地址从0开始,每个寄存器占用两个字节。
Input Registers:输入寄存器
与保持寄存器类似,输入寄存器也是16位的存储单元,用于存储设备的输入数据。地址从0开始,每个寄存器占用两个字节。输入寄存器是只读的,值可以由外部设备或传感器实时更新,不能直接写入。
Coils:线圈
在MODBUS通信协议中,线圈(Coil)是一种用于控制设备的开关状态的数据单元。线圈可以是开关、继电器或其他可控制的设备。
 Serial Line:串行线
串行线用于连接计算机与外部设备,可以使用不同的物理接口,如RS-232、RS-485、USB等。与并行线(Parallel Line。)相对,,串行线路通过逐位地传输数据,将数据位、起始位、停止位和可能的校验位组合在一起,以形成一个完整的数据帧。
Exception Status:异常状态
一般情况下设备自带8位异常输出。
Comm Event Counter:通信事件计数器
用于统计发生在通信系统中的特定事件的次数。 通信事件可以是各种类型的事件,例如通信错误、超时、重传等。通过记录这些事件的次数。
Comm Event Log:通信日志
此处的通信日志包括状态字、事件计数、消息计数和事件字节字段。
FIFO Queue:先进先出序列
一种数据结构,用于存储和管理数据项。它遵循先进先出的原则,即最先进入队列的数据项将首先被处理或移出队列。在FIFO Queue中,新的数据项被添加到队列的末尾,而从队列中移出数据项时,总是从队列的开头移出。这确保了先进入队列的数据项将首先被处理。
Encapsulated Interface Transport:封装接口传输
封装接口传输是是一种用于在不同网络层之间透明传输数据的协议。
 
 
 
 
下一篇:modbus全功能码详解  https://www.cnblogs.com/Kawashiro-Nitori/p/17619367.html
posted @ 2023-08-08 10:41  河城荷取  阅读(2806)  评论(0编辑  收藏  举报