ModBusRTU标准协议和指令代码
ModbusRTU通讯协议整理版

Modbus 通讯协议(RTU传输模式)目录1.Modbus协议简介 (3)1.1.传输方式 (3)1.2.协议 (3)1.2.1.信息帧 (4)1.2.2.地址(Address)域 (4)1.2.3.功能(Function)域 (4)1.2.4.数据域 (5)1.2.5.错误校验域 (5)1.2.6.字符的连续传输 (5)1.3.错误检测 (5)1.3.1.奇偶校验 (5)1.3.2.CRC检测 (6)2.Modbus数据和控制功能详解 (7)2.1.读取线圈状态(功能码01) (7)2.2.读取输入状态(功能码02) (8)2.3.读取保持寄存器(功能码03) (8)2.4.读取输入寄存器(功能码04) (9)2.5.强置单线圈(功能码05) (9)2.6.预置单寄存器(功能码06) (10)2.7.读取异常状态(功能码7) (10)2.8.强置多线圈(功能码15) (11)2.9.预置多寄存器(功能码16) (12)2.10.报告从机标识(功能码17) (12)3.附录 (13)3.1.附录A:MODBUS全部功能码 (13)3.2.附录B:不正常响应 (14)3.3.附录C:CRC校验生成程序 (15)1.Modbus协议简介Modbus 协议是应用于电子控制器上的一种通用语言。
通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。
它已经成为一通用工业标准。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。
它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。
它制定了消息域格局和内容的公共格式。
当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。
如果需要回应,控制器将生成反馈信息并用Modbus协议发出。
MODBUS-RTU通讯协议书范本

®MODBUS通讯协议使用手册1. RTU 方式通讯协议1.1. 硬件采用RS -485,主从式半双工通讯,主机呼叫从机地址,从机应答方式通讯。
1.2. 数据帧10位,1个起始位,8个数据位,1个停止位,无校验。
波特率:9600;19200 38400 1.3. 功能码03H : 读寄存器值主机发送:第1字节 ADR : 从机地址码(=001~254)第2字节 03H : 读寄存器值功能码 第3、4字节 : 要读的寄存器开始地址 要读FCC 下挂仪表,第5、6字节 : 要读的寄存器数量 第7、8字节 : 从字节1到6的CRC16校验和 从机回送:第1字节 ADR : 从机地址码(=001~254)第2字节 03H : 返回读功能码第3字节 :从4到M (包括4及M )的字节总数 第4到M 字节 : 寄存器数据 第M +1、M+2字节 : 从字节1到M 的CRC16校验和 当从机接收错误时,从机回送:第1字节 ADR : 从机地址码(=001~254)第2字节 83H : 读寄存器值出错第3字节 信息码 : 见信息码表 第4、5字节 : 从字节1到3的CRC16校验和 1.4. 功能码06H : 写单个寄存器值主机发送:当从机接收正确时,从机回送:当从机接收错误时,从机回送:第1字节 ADR:从机地址码(=001~254)第2字节 86H :写寄存器值出错功能码 第3字节 错误数息码 : 见信息码表第4、5字节: 从字节1到3的CRC16校验和1.5. 功能码10H : 连续写多个寄存器值当从机接收正确时,从机回送:当从机接收错误时,从机回送:第1字节 ADR: 从机地址码(=001~254)第2字节 90H : 写寄存器值出错 第3字节 错误信息码 : 见信息码表第4、5字节: 从字节1到3的CRC16校验和1.8 寄存器定义表:(注:寄存器地址编码为16进制)备注:E为阶码。
M为尾数的小数点部分。
modbus协议 代码

modbus协议代码Modbus协议是一种常用的通信协议,用于在工业控制系统中实现设备间的数据交换。
本文将介绍Modbus协议的基本原理和代码实现。
一、Modbus协议概述Modbus协议是一种主从式的通信协议,通过串行通信或以太网实现。
它定义了一种简单而有效的方式,用于在不同设备之间传输数据。
Modbus协议主要有两种模式:RTU和ASCII。
RTU模式使用二进制编码,而ASCII模式使用ASCII码编码。
Modbus协议主要包含读取和写入功能码,可以实现对设备寄存器的读取和写入操作。
二、Modbus协议数据结构Modbus协议的数据结构包括功能码、数据地址、数据长度和CRC校验等。
功能码用于标识读取或写入操作,数据地址用于指定设备寄存器的地址,数据长度用于指定读取或写入的数据长度,CRC校验用于保证数据的完整性。
三、Modbus协议读取操作在Modbus协议中,读取操作使用功能码03H。
通过发送读取请求,可以获取设备的寄存器值。
读取操作的数据结构包括从站地址、功能码、起始地址、寄存器数量和CRC校验等。
发送读取请求后,从站会返回对应地址的寄存器值。
四、Modbus协议写入操作在Modbus协议中,写入操作使用功能码06H或10H。
通过发送写入请求,可以向设备的寄存器写入数据。
写入操作的数据结构包括从站地址、功能码、数据地址、写入数据和CRC校验等。
发送写入请求后,从站会将数据写入对应地址的寄存器。
五、Modbus协议代码实现以下是使用Python语言实现Modbus协议读取操作的代码示例:```pythonimport serialimport struct# 创建串口对象ser = serial.Serial('COM1', 9600, timeout=0.5)# 读取寄存器的函数def read_registers(slave_addr, reg_addr, reg_num):# 构造读取请求request = struct.pack('>BBHH', slave_addr, 0x03, reg_addr, reg_num)# 发送请求并接收响应ser.write(request)response = ser.read(5 + 2 * reg_num)# 解析响应数据values = struct.unpack('>' + 'H' * reg_num, response[3:-2])return values# 读取从站地址为1,起始地址为0,寄存器数量为5的寄存器值values = read_registers(1, 0, 5)print(values)```以上代码示例中,首先创建了一个串口对象并打开COM1端口。
ModBusRTU标准协议和指令代码

状态 ON
ON
OFF
OFF
ON
ON
OFF
ON
表 线圈 00027 到 00020 状态
最后一个数据字节中,56-52 线圈的状态为 1BH(或二进制 00011011),线圈 56 是左数
第 4 位,线圈 52 是该字节的最低位,所线圈 56 至 52 的状态分别为 ON-ON-OFF-ON-ON,
2
MODBUS 协议整理
寄存器种类说明
寄存器种 说明 类
PLC 类比
线圈状态 输出端口,按位操作,可设定端 DO
口的输出状态,也可以读取该位
的输出状态。
开关
输入端口,按位操作,通过外部 DI
输入状态 设定改变输入状态,可读不可写。
保持
输出参数或是保持参数,控制器 AO
寄存器 运行时被设定的某些参数。可读
Hex 11 03 00 6B 00 13
表 读保持寄存器-查询
8
MODBUS 协议整理
响应
响应信息中的寄存器数据为二进制数据,每个寄存器分别对应 2 个字节,第一个字节为 高位数据,第二个字节为低位数据。
例按查询要求返回响应。
Hex
从机地址
11
功能码
03
字节数
数据 1 高位(寄存器 40108)
寄存器寻址地址指的是通信时使用的寄存器地址,例如信息地址 40001 对应寻址地址 0x0000,40002 对应寻址地址 0x0001,寄存器寻址地址一般使用 16 进制描述。再如,信息 寄存器 40003 对应寻址地址 0002,信息寄存器 30003 对应寻址地址 0002,虽然两个信息寄 存器通信时使用相同的地址,但是需要使用不同的命令才可以访问,所以访问时不存在冲突。
Modbus Rtu 3-16号通信协议解释

Modbus Rtu 通信协议(3,16号命令)1、读取保持寄存器(单个和多个,以字为最小单位)帧长度:8个字节设备地址:1~247功能码:3H数据地址:0~65535 具体范围与相关设备有关数量:1~65535 具体范围与相关设备有关校验码:CRC16校验设备地址:1~247功能码:3H数据量:实际的读取数据数量数据:返回数据的意义a=HoldStart校验码:CRC16校验命令有误:1) 没有任何返回2、设置保持寄存器(多个,以字为最小单位)发送命令帧:帧长度:9+bytN 个字节设备地址:1~247功能码:10H数据地址:0~65535 具体范围与相关设备有关数量:1~122 具体范围与相关设备有关字节数:设置的字节个数bytN= DataNum×2数据:具体的字节数据校验码:CRC16校验帧长度:8 个字节设备地址:1~247功能码:10H数据地址:0~65535 具体范围与相关设备有关数量:1~122 具体范围与相关设备有关校验码:CRC16校验命令有误:1)没有任何返回设置单个寄存器(06H)返回命令帧:CRC-16(循环冗余错误校验)CRC-16错误校验程序如下:报文(此处只涉及数据位,不指起始位、停止位和任选的奇偶校验位)被看作是一个连续的二进制,其最高有效位(MSB)首选发送。
报文先与X^16相乘(左移16位),然后看X^16+X^15+X^2+1除,X^16+X^15+X^2+1可以表示为二进制数1 1000 0000 0000 0101。
整数商位忽略不记,16位余数加入该报文(MSB先发送),成为2个CRC校验字节。
余数中的1全部初始化,以免所有的零成为一条报文被接收。
经上述处理而含有CRC字节的报文,若无错误,到接收设备后再被同一多项式(X^16+X^15+X^2+1)除,会得到一个零余数(接收设备核验这个CRC字节,并将其与被传送的CRC比较)。
全部运算以2为模(无进位)。
stm32modbusrtu代码

STM32 Modbus RTU 代码简介Modbus是一种通信协议,常用于工业自动化领域中的设备间通信。
STM32是一系列由意法半导体(STMicroelectronics)开发的32位微控制器。
在本文中,我们将探讨如何使用STM32微控制器编写Modbus RTU代码。
Modbus RTU 协议Modbus RTU是Modbus协议的一种变体,它使用二进制编码来进行数据传输。
RTU代表”Remote Terminal Unit”,是指远程终端单元,也就是Modbus网络中的从设备。
Modbus RTU协议使用串口通信,并且以字节为单位进行数据传输。
每个字节都包含8位数据位和1位奇偶校验位。
STM32 微控制器STM32微控制器是一款高性能、低功耗的32位ARM Cortex-M内核微控制器。
它具有丰富的外设和强大的处理能力,非常适合用于工业自动化等领域。
STM32微控制器支持多个串口接口,并且具有强大的时钟和计时功能,非常适合用于实现Modbus RTU通信。
编写 STM32 Modbus RTU 代码要编写STM32 Modbus RTU代码,我们需要以下步骤:1. 硬件连接首先,我们需要将STM32微控制器与Modbus RTU从设备进行硬件连接。
通常,我们会使用串口接口来进行通信。
确保正确连接了串口的TX和RX引脚。
2. 配置串口在STM32的代码中,我们需要配置串口接口的参数,如波特率、数据位、校验位等。
根据Modbus RTU协议的要求,通常使用9600波特率、8个数据位和无校验位。
以下是一个配置串口的示例代码:// 配置串口void UART_Config(void){// 初始化结构体USART_InitTypeDef USART_InitStruct;// 使能串口时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);// 配置波特率、数据位和停止位USART_ART_BaudRate = 9600;USART_ART_WordLength = USART_WordLength_8b;USART_ART_StopBits = USART_StopBits_1;// 配置校验位为无校验USART_ART_Parity = USART_Parity_No;// 配置硬件流控制为无流控制USART_ART_HardwareFlowControl = USART_HardwareFlowControl_Non e;// 使能接收和发送功能USART_ART_Mode = USART_Mode_Rx | USART_Mode_Tx;// 初始化串口USART_Init(USART1, &USART_InitStruct);// 使能串口USART_Cmd(USART1, ENABLE);}3. 实现 Modbus RTU 功能接下来,我们需要实现Modbus RTU的功能代码。
图文详解Modbus-RTU协议
图文详解Modbus-RTU协议前世今生照例简单说下这个协议的历时,Modicon公司于1979年制定了Modbus协议标准,并用在其PLC产品上。
后来Modicon公司被施耐德收购。
已成为一种事实标准协议,同时也被IEC-61158工业通信总线规范收录于type 15子集。
所谓一流的企业做标准,二流的企业做品牌,三流的企业做产品。
这些标准国人都基本是使用者,而非缔造者,所以使用一下,产品上印个标志,做做相关的测试认证都要给老外交钱。
这里只是顺带牢骚几句,与本文想说的无关。
打住!Modbus的应用除了常见的过程控制系统,在其他很多领域都有其身影,比如一些楼宇控制,消防控制等等都有大量的产品采用Modbus协议,因为这个协议实现简单,工作可靠,还是标准化的协议!Modbus分很多实现版本,总的来说是一种应用层协议。
从OSI七层模型来看,位于第七层应用层。
它定义了在不同类型的总线或网络上连接的设备之间提供”客户端/服务器“通信。
对于使用串口的版本,也定义了layer 1 和 layer 2,实现在主站和一个或多个从站之间交换MODBUS 报文。
具体有哪些版本呢?其实主要分两种:Modbus RTU(Remote Terminal Unit 远程终端单元):这种方式常采用RS-485做为物理层,一般利用芯片的串口实现数据报文的收发,报文数据采用二进制数据进行通信。
Modbus ASCII :报文使用 ASCII 字符。
ASCII 格式使用纵向冗余校验和。
Modbus ASCII 报文由冒号 (":")开始和换行符 (CR/LF)结尾构成。
当然其他还根据所使用的物理层不一样,有这么些做法:Modbus TCP/IP 或 Modbus TCP :这是一种 Modbus 变体版本,使用 TCP/IP 网络进行通信,通过 502 端口进行连接。
报文不需要校验和计算,因为以太网底层已经实现了CRC32 数据完整性校验。
MODBUS通讯协议及编程
MODBUS通讯协议及编程ModBus通讯协议分为RTU协议和ASCII协议,我公司的多种仪表都采用ModBus RTU通讯协议,如:CH2000智能电力监测仪、CH2000M电力参数采集模块、巡检表、数显表、光柱数显表等。
下面就ModBus RTU协议简要介绍如下:一、通讯协议(一)、通讯传送方式:通讯传送分为独立的信息头,和发送的编码数据。
以下耐ㄑ洞 头绞蕉ㄒ逡灿隡ODBUS RTU通讯规约相兼容:初始结构= ≥4字节的时间地址码 = 1 字节功能码 = 1 字节数据区 = N 字节错误校检 = 16位CRC码结束结构= ≥4字节的时间地址码:地址码为通讯传送的第一个字节。
这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。
并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。
主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。
功能码:通讯传送的第二个字节。
ModBus通讯规约定义功能号为1到127。
本仪表只利用其中的一部分功能码。
作为主机请求发送,通过功能码告诉从机执行什么动作。
作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。
如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。
数据区:数据区是根据不同的功能码而不同。
数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。
CRC码:二字节的错误检测码。
(二)、通讯规约:当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。
返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。
如果出错就不发送任何信息。
1.信息帧结构地址码:地址码是信息帧的第一字节(8位),从0到255。
这个字节表明由用户设置地址的从机将接收由主机发送来的信息。
Modbus通讯RTU协议的源代码程序实例
#endif
eMBErrorCode ULONG
eStatus = MB_ENOERR; usTimerT35_50us;
( void )ucSlaveAddress; ENTER_CRITICAL_SECTION( );
/* ----------------------- System includes ----------------------------------*/ #include "stdlib.h" #include "string.h"
/* ----------------------- Platform includes --------------------------------*/ #include "port.h"
*
= 220000 / Baudrate
* The reload for t3.5 is 1.5 times this value and similary
* for t3.5.
*/
usTimerT35_50us = ( 7UL * 220000UL ) / ( 2UL * ulBaudRate );
#if OS_CRITICAL_METHOD == 3 OS_CPU_SR cpu_sr = 0;
#endif
ENTER_CRITICAL_SECTION( ); /* Initially the receiver is in the state STATE_RX_INIT. we start
* the timer and if no character is received within t3.5 we change * to STATE_RX_IDLE. This makes sure that we delay startup of the * modbus protocol stack until the bus is free. */ eRcvState = STATE_RX_INIT; eSndState = STATE_TX_IDLE; //2008.11.12 修改 vMBPortSerialEnable( TRUE, FALSE ); vMBPortTimersEnable( );
新MODBUS RTU规约(2020
概述:本规约采用Modbus规约RTU模式,可以方便地与多种组态软件相连接,其通讯驱动与Modicon Modbus_RTU 格式完全兼容。
1、字节格式:每字节含8 位二进制码,传输时加上一个起始位(0),一个停止位(1),共10 位。
其传输序列如上图所示,D0 是字节的最低有效位,D7 是字节的最高有效位。
先传低位,后传高位。
2、通讯数据格式:通讯时数据以字(WORD— 2 字节)的形式回送,回送的每个字中,高字节在前,低字节在后,如果2 个字连续回送(如:浮点或长整形),则高字在前,低字在后。
3、帧格式:3.1 读取仪表寄存器内容(功能码03H)3.1.1 上位机发送的帧格式:3.1.2 仪表回送的帧格式(数据正常)3.1.3 如果起始寄存器地址或寄存器个数错误,仪表回送:3.2 设置仪表寄存器内容(功能码16H 或10H 或06H)3.2.1.1 功能码06H 写单路,将一个字(2 字节)数据写入仪表寄存器中,上位机发送的帧格式:3.2.1.2 仪表回送:如果写入正确,则仪表回送相同的数据。
注:以上介绍中CRC校验为16位,高字节在前,低字节在后。
4、通讯波特率:通讯波特率可以在300、600、1200、2400、4800、9600 之间选择。
出厂时,仪表已设置某一波特率。
5、仪表地址:仪表地址可以在1-247 之间选择。
仪表出厂时,已设置某一地址。
6、通讯功能码:03H(召测数据) 16H(10H 或06H)(数据设置)7、通讯数据CRC校验:7.1校验多项式:X16+X12+X5+17.2 CRC 检验码的计算例程见附录B 和。
附录C7.3 CRC 检验从第1 字节开始至CRC 校验高字节前面的字节数据结束。
附录A1:IEEE754单精度浮点格式:IEEE 单精度格式由三个字段组成:23 位小数f ;8 位偏置指数e ;以及1 位符号s。
这些字段连续存储在一个32 位字中(如附录A 表1 所示)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3
MODBUS 协议整理
01 读线圈状态
描述
读从机离散量输出口的 ON/OFF 状态。离散量输出口可以为继电器输出口,也可以为 MOSFET 输出接口,这些接口本质上都是位操作。
查询
查询信息规定被访问的线圈起始地址和线圈数量。
例:请求从机设备 17 读 00020-00056 线圈。其中 00020-00056 为线圈的寄存器信息地 址,这些线圈的寄存器寻址地址为 0019 – 0055,共访问 37 个线圈。
3 个剩余位全部填 0。
地址 00059 00058 00057 00056 00055 00054 00053 00052
状态 填充 填充 填充 ON
ON
OFF
ON
ON
表 线圈 00056 到 00052 状态
5
MODBUS 协议整理
02 读输入位状态
说明
读从机离散量输入信号的 ON/OFF 状态。
MODBUS 协议整理
整理 徐凯 江南大学 机械工程学院 Email xukai19871105@
MODBUS 协议整理
MODBUS 部分功能代码
下表列出 MODBUS 支持的部分功能代码:以十进制表示。
代码 中文名称
寄存器信息地址
位操作/字操作
操作数量
01 读线圈状态
00001-09999
00001-09999
位操作
多个
16 写多个保持寄存器 40001-49999
字操作
多个
功能码说明
表 MODBUS 部分功能码
功能码可以分为位操作和字操作两类
位操作包指令包括,读线圈状态 01,读(开关)输入状态 02,写单个线圈 06 和写多个线圈 15。
字操作(2 个字节)指令包括:读保持寄存器 03,写单个寄存器 06,写多个保持寄存器 16。
位操作
单个或多个
02 读(开关)输入状态 10001-19999
位操作
单个或多个
03 读保持寄存器
40001-49999
字操作
单个或多个
04 读输入寄存器
30001-39999
字操作
单个或多个
05 写单个线圈
00001-09999
位操作
单个
06 写单个保持寄存器 40001-49999
字操作
单个
15 写多个线圈
查询
查询信息规定了要读的输入起始地址,以及输入信号的数量。
例:请求读从机设备 17 的 10197-10218 的输入位状态。
Hex
从机地址
11
功能码
02
寄存器地址高位
00
寄存器地址低位
C4
寄存器数量高位
00
寄存器数量低位
16
CRC 校验高位
CRC 校验低位
表 读输入位状态-查询
6
MODBUS 协议整理
寄存器寻址地址指的是通信时使用的寄存器地址,例如信息地址 40001 对应寻址地址 0x0000,40002 对应寻址地址 0x0001,寄存器寻址地址一般使用 16 进制描述。再如,信息 寄存器 40003 对应寻址地址 0002,信息寄存器 30003 对应寻址地址 0002,虽然两个信息寄 存器通信时使用相同的地址,但是需要使用不同的命令才可以访问,所以访问时不存在冲突。
Hex
从机地址
11
功能码
01
返回字节数
05
数据 1(线圈 00027-线圈 00020)
CD
数据 2(线圈 00035-线圈 00028)
6B
数据 3(线圈 00043-线圈 00036)
B2
数据 4(线圈 00051-线圈 00044)
0E
数据 5(线圈 00056-线圈 00052)
1B
CRC 校验高位
Hex
从机地址
11
功能码
01
寄存器起始地址高位
00
寄存器起始地址低位
13
寄存器数量高位
00
寄存器数量低位
25
CRC 校验高位
CRC 校验低位
表 读线圈状态-查询
4
MODBUS 协议整理
响应
响应信息中的各线圈的状态与数据区的每一位的值相对应,1 代表 ON;0 代表 OFF。 若返回的线圈数不是 8 的倍数,则在最后的数据字节未使用的位中全部填充 0,字节数区说 明全部数据的字节数。
Modbus 寄存器地址分配
寄存器信息地址
适用功能码
(PLC 地址)
(10 进制)
00001-09999
01 05 15
10001-19999
02
30001-39999
04
40001-49999
03 06 16
寄存器种类
线圈状态 (开关)输入状态 输入寄存器 保持寄存器
读写状态
可读可写 可读 可读 可读可写
状态 ON
ON
OFF
OFF
ON
ON
OFF
ON
表 线圈 00027 到 00020 状态
ห้องสมุดไป่ตู้
最后一个数据字节中,56-52 线圈的状态为 1BH(或二进制 00011011),线圈 56 是左数
第 4 位,线圈 52 是该字节的最低位,所线圈 56 至 52 的状态分别为 ON-ON-OFF-ON-ON,
可写。
输入
输入参数。控制器运行时从外部 AI
寄存器 设备获得的参数
举例说明
电磁阀输出,MOSFET 输出,LED 显示等。
拨码开关,接近开关,机械开关等
模拟量输出设定值,PID 运行参数, AD 转换采样频率等参数。
模拟量输入
特别说明 寄存器信息地址(PLC 地址)
寄存器信息地址指的是存放于控制器中的地址,这些控制器可以是 PLC,也可以使触 摸屏,或是文本显示器。例如 40001、30002 等,这些地址一般使用 10 进制描述。 寄存器寻址地址(协议地址)
CRC 校验低位
表: 读线圈状态-响应
线圈 27-20 的状态用 CDH 表示,二进制值为 11001101,该字节的最高位为线圈 27,最
低位为线圈 20。线圈从左(27)向右(20)状态分别为 ON-ON-OFF-OFF-ON-ON-OFF-ON。下一
个字节的线圈应为 35 至 28。
地址 00027 00026 00025 00024 00023 00022 00021 00020
响应
响应信息中的各输入口的状态,分别对应于数据区中的每一位值,1 代表 ON;0 代表 OFF。第一个数据字节的 LSB(最低位)为查询的寻址地址,其他输入口按顺序在该字节中由 低位向高位排列,直至 8 位为止。下一个字节中的 8 个输入位也是从低位到高位排列。
2
MODBUS 协议整理
寄存器种类说明
寄存器种 说明 类
PLC 类比
线圈状态 输出端口,按位操作,可设定端 DO
口的输出状态,也可以读取该位
的输出状态。
开关
输入端口,按位操作,通过外部 DI
输入状态 设定改变输入状态,可读不可写。
保持
输出参数或是保持参数,控制器 AO
寄存器 运行时被设定的某些参数。可读