注:( 2020.05.22 )

GB/T 19582.2-2008 《基于Modbus协议的工业自动化网络规范 第1部分:Modbus协议在串行链路上的实现指南》

1、对于modbus ASCII 模式,使用的是高位字节在前,低位字节在后。使用LRC校验。

2、对于modbus rtu 模式,使用的是低位字节在前,高位字节在后。使用CRC校验。

第一章          Modbus协议简介

Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。

此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。

当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

协议在一根通讯线上使用应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,在相反的方向上终端设备发出的应答信号传输给主机。 协议只允许在主计算机和终端设备之间,而不允许独立的设备之间的数据交换,这就不会在使它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。

1. 1  传输方式

传输方式是一个信息帧内一系列独立的数据结构以及用于传输数据的有限规则,以RTU模式在Modbus总线上进行通讯时,信息中的每8位字节分成2个4位16进制的字符,每个信息必须连续传输下面定义了与Modebus 协议– RTU方式相兼容的传输方式。

代码系统

·   8位二进制,十六进制数0...9,A...F

·   消息中的每个8位域都是一个两个十六进制字符组成

每个字节的位

·   1个起始位

·   8个数据位,最小的有效位先发送

·   1个奇偶校验位,无校验则无

·   1个停止位(有校验时),2个Bit(无校验时)

错误检测域

·   CRC(循环冗长检测)

1.2      协议

当信息帧到达终端设备时,它通过一个简单的“口”进入寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。返回的响应数据中包含了以下内容:终端从机地址(Address)、被执行了的命令(Function)、执行命令生成的被请求数据(Data)和一个校验码(Check)。发生任何错误都不会有成功的响应。

1.2.1          信息帧

Address

Function

Data

Check

8-Bits

8-Bits

N x 8-Bits

16-Bits

图 1 – 1 . 信息帧格式

特注:Modbus信息帧所允许的最大长度为256个字节,即N的范围是大于等于零且小于等于252(N{0,252})。

即,所有的数据一共256个,数据剩下253个。

1.2.2          地址(Address)域

信息帧地址域(信息地址)在帧的开始部分,由8位组成,有效的从机设备地址范围0-247(十进制),各从机设备的寻址范围为1-247。主机把从机地址放入信息帧的地址区,并向从机寻址。从机响应时,把自己的地址放入响应信息的地址区,让主机识别已作出响应的从机地址。

地址0广播地址,所有从机均能识别。当Modbus协议用于高级网络时,则不允许广播或其它方式替代。

1.2.3          功能(Function)域

信息帧功能域代码告诉了被寻址到的终端执行何种功能。有效码范围1-225(十进制) ,有些代码是适用于所有控制器,有些适应于某种控制器,还有些保留以备后用。有关功能代替码的全部内容见附录A

当主机向从句发送信息时,功能代码向从机说明应执行的动作。如读一组离散式线圈或输入信号的ON/OFF状态,读一组寄存器的数据,读从机的诊断状态,写线圈(或寄存器),允许下截、记录、确认从机内的程序等。当从机响应主机时,功能代码可说明从机正常响应或出现错误(即不正常响应),正常响应时,从句简单返回原始功能代码;不正常响应时,从机返回与原始代码相等效的一个码,并把最高有效位设定为“1”。

如,主机要求从机读一组保持寄存器时,则发送信息的功能码为:

0000 0011 (十六进制03)

若从机正确接收请求的动作信息后,则返回相同的代码值作为正常响应。发现错时,则返回一个不正常响信息:

1000 0011(十六进制83)

从机对功能代码作为了修改,此外,还把一个特殊码放入响应信息的数据区中,告诉主机出现的错误类型和不正常响应的原因,不正常响应见附录B。主机设备的应用程序负责处理不正常响应,典型处理过程是主机把对信息的测试和诊断送给从机,并通知操作者。表 1 – 1列出了所有设备常用的功能码、它们的意义及它们的初始功能。

表 1 – 1 常用功能码

代码

名称

作用

01

读取线圈状态

取得一组逻辑线圈的当前状态(ON/OFF)

02

读取输入状态

取得一组开关输入的当前状态(ON/OFF)

03

读取保持寄存器

在一个或多个保持寄存器中取得当前的二进制值

04

读取输入寄存器

在一个或多个输入寄存器中取得当前的二进制值

05

强置单线圈

强置一个逻辑线圈的通断状态

06

预置单寄存器

放置一个特定的二进制值到一个单寄存器中

07

读取异常状态

取得8个内部线圈的通断状态

15

强置多线圈

强置一串连续逻辑线圈的通断

16

预置多寄存器

放置一系列特定的二进制值到一系列多寄存器中

17

报告从机标识

可使主机判断编址从机的类型及该从机运行指示灯的状态

1.2.4          数据域

数据域包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。这些数据的内容可能是数值、参考地址或者极限值。他由数据区有2个16进制的数据位(2的8次方256),数据范围为00-FF(16进制)。例如:功能域码告诉终端读取一个寄存器,数据域则需要指明从哪个寄存器开始及读取多少个数据,内嵌的地址和数据依照类型和从机之间的不同能力而有所不同。若无错误出现,从机向主机的响应信息中包含了请求数据,若有错误出现,则数据中有一个不正常代码,使主机能判断并作出下一步的动作。数据区的长度可为“零”以表示某类信息。

1.2.5          错误校验域

该域允许主机和终端检查传输过程中的错误。有时,由于电噪声和其它干扰,一组数据在从一个设备传输到另一个设备时在线路上可能会发生一些改变,出错校验能够保证主机或者终端不去响应那些传输过程中发生了改变的数据,这就提高了系统的安全性和效率,出错校验使用了16位循环冗余的方法,即CRC校验。

错误检测域包含一16Bits值(用两个8位的字符来实现)。错误检测域的内容是通过对消息内容进行循环冗长检测方法得出的。CRC域附加在消息的最后,添加时先是低字节然后是高字节。故CRC的高位字节是发送消息的最后一个字节。

1.2.6          字符的连续传输

当消息在标准的Modbus系列网络传输时,每个字符或字节按由左到右的次序方式发送:

最低有效位(LSB)...最高有效位(MSB)。

位的序列是:

有奇偶校验

启始位

1

2

3

4

5

6

7

8

奇偶位

停止位

无奇偶校验

启始位

1

2

3

4

5

6

7

8

停止位

停止位

图 1 –2 .  位顺序(RTU)

1.3   错误检测

1、奇偶校验

用户可以配置控制器是奇或偶校验,或无校验。这将决定了每个字符中的奇偶校验位是如何设置的。

如果指定了奇或偶校验,“1”的位数将算到每个字符的位数中(ASCII模式7个数据位,RTU中8个数据位)。例如RTU字符帧中包含以下8个数据位:1 1 0 0 0 1 0 1

整个“1”的数目是4个。如果便用了偶校验,帧的奇偶校验位将是0,便得整个“1”的个数仍是4个。如果便用了奇校验,帧的奇偶校验位将是1,便得整个“1”的个数是5个。

如果没有指定奇偶校验位,传输时就没有校验位,也不进行校验检测。代替一附加的停止位填充至要传输的字符帧中。

2、CRC检测

RTU方式时,采用CRC方法计算错误校验码,CRC校验传送的全部数据。它忽略信息中单个字符数据的奇偶校验方法。

循环冗余校验(CRC)域占用两个字节,包含了一个16位的二进制值。CRC值由传送设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算CRC值,然后与接收到的CRC域中的值进行比较,如果这两个值不相等,就发生了错误。

CRC开始时先把寄存器的16位全部置成“1”,然后把相邻2个8位字节的数据放入当前寄存器中,只有每个字符的8位数据用作产生CRC,起始位,停止位和奇偶校验位不加到CRC中。

在生成CRC时,每个8位字节与寄存器中的内容进行异或,然后将结果向低位移位,高位则用“0”补充,最低位(LSB)移出并检测,如果是1,该寄存器就与一个预设的固定值进行一次异或运算,如果最低位为0,不作任何处理。

上述处理重复进行,知道执行完了8次移位操作,当最后一位(第8位)移完以后,下一个8位字节与寄存器材的当前值进行异或运算,同样进行上述的另一个8次移位异或操作,当数据帧中的所有字节都作了处理,生成的最终值就是CRC值。

生成一个CRC的流程为:

1、       预置一个16位寄存器为0FFFFH(全1),称之为CRC寄存器。

2、       把数据帧中的第一个8位字节与CRC寄存器中的低字节进行异或运算,结果存回CRC寄存器。

3、       将CRC寄存器向右移一位,最高位填以0,最低位移出并检测。

4、       如果最低位为0:重复第3步(下一次移位)。

如果最低位为1:将CRC寄存器与一个预设的固定值(0A001H)进行异或运算。

5、       重复第3步和第4步直到8次移位。这样处理完了一个完整的八位。

6、       重复第2步到第5步来处理下一个八位,直到所有的字节处理结束。

7、       最终CRC寄存器得值就是CRC的值。

CRC值附加到信息时,低位在先,高位在后。查阅附录C中的一个实例,它详细说明了CRC的校验。

第二章  Modbus数据和控制功能详解

Modbus信息中的所有数据地址以零作为基准,各项数据的第一个数据地址的编号为0。若无特殊说明在此节文中用+进制值表示,图中的数据区则用十六进制表示。

图2--1为一个例子,说明了Modbus的查询信息,图2--2为正常响应的例子,这两例子中的数据均是16进制的,也表示了以RTU方式构成数据帧的方法。

主机查询是读保持寄存器,被请求的从机地址是06,读取的数据来自地址40108保持寄有器。注意,该信息规定了寄存器的起始地址为0107 (006BH)。

从机响应返回该功能代码,说明是正常响应,字节数“Byle count”中说明有多少个8位字节被返回。它表明了附在数据区中8位字节的数量,当在缓冲区组织响应信息时,“字节数”区域中的值应与该信息中数据区的字节数相等。如RTU方式时,63H 用一个字节(01100011)发送。8个位为一个单位计算“字节数”,它忽略了信息帧用组成的方法。

Addr

Fun

Data start reg hi

Data start reg lo

Data #of regs hi

Data #of regs lo

CRC16

hi

CRC16

lo

06H

03H

00H

6BH

00H

01H

XXH

XXH

图 2 – 1 Modbus的查询信息

Addr

Fun

Byte

count

Data1

hi

Data1

Lo

Data 2

hi

Data2

lo

Data3

hi

Data3

lo

CRC16

hi

CRC16

lo

06H

03H

06H

02H

2BH

00H

00H

00H

63H

XXH

XXH

图 2 – 2 Modbus的响应信息

2.1  读取线圈状态(功能码01)

读取从机离散量输出口(DO,0X类型)的 ON/OFF 状态,不支持广播。

查询

查询信息规定了要读的起始线圈和线圈量,线圈的起始地址为0000H,1-16个线圈的寻址地址分为0000H –0015H(DO1=0000H,DO2=0001H,依此类推)。

图 2 – 3 的例子是从地址为17的从机读取DO1至DO6的状态。

Addr

Fun

DO start reg hi

DO start reg lo

DO #of regs hi

DO #of regs lo

CRC16

hi

CRC16

lo

11H

01H

00H

00H

00H

06H

XXH

XXH

图 2 – 3 读取线圈状态----查询

响应

响应信息中的各线圈的状态与数据区的每一位的值相对应,即每个DO占用一位(1 = ON, 0= OFF),第一个数据字节的LSB为查询中的寻址地址,其他的线圈按顺序在该字节中由低位向高位排列,直至8个为止,下一个字节也是从低位向高位排例。若返回的线圈数不是8的倍数,则在最后的数据字节中的剩余位至字节的最高位全部填0,字节数区说明全部数据的字节数。

图2 – 4所示为线圈的输出状态响应的实例。

Addr

Fun

Byte count

Data

CRC16  hi

CRC16  lo

11H

01H

01H

2AH

XXH

XXH

数据

0

0

0

0

0

0

DO2

DO1

MSB

7

6

5

4

3

2

LSB

图 2 – 4读取线圈状态----响应

2.2  读取输入状态(功能码02)

读取从机离散量输入信号(DI,0X类型)的ON/OFF状态,不支持广播。

查询

查询信息规定了要读的输入起始地址,以及输入信号的数量。输入的起始地址为0000H,1-16个输入口的地址分别为0-15(DO1=0000H,DO2=0001H,依此类推)。

图 2 – 5 的例子是从地址为17的从机读取DI1到DI16的状态。

Addr

Fun

DI start

addr  hi

DI start

addr  lo

DI num

hi

DI num

lo

CRC16

hi

CRC16

lo

11H

02H

00H

00H

00H

10H

XXH

XXH

图 2 – 5读取输入状态----查询

响应

响应信息中的各输入口的状态,分别对应于数据区中的每一位值,1 = ON; 0 = OFF,第一个数据字节的LSB为查询中的寻址地址,其他输入口按顺序在该字节中由低位向高位排列,直至8个位为止。下一个字节中的8个输入位也是从低位到高位排列。若返回的输入位数不是8的倍数,则在最后的数据字节中的剩余位直至字节的最高位全部填零。字节数区说明了全部数据的字节数。

图2 – 6 所示为读数字输出状态响应的实例。

Addr

Fun

Byte count

Data1

Data2

CRC16 hi

CRC16 lo

11H

02H

02H

33H

CCH

XXH

XXH

数据 1

DI8

DI7

DI6

DI5

DI4

DI3

DI2

DI1

MSB                                       LSB

数据 2

DI16

DI15

DI14

DI13

DI12

DI11

DI10

DI9

MSB                                             LSB

图 2 – 6读取输入状态----响应

2.3  读取保持寄存器(功能码03)

读取从机保持寄存器(4X类型)的二进制数据,不支持广播。

查询

查询信息规定了要读的保持寄存器起始地址及保持寄存器的数量,保持寄存器寻址起始地址为0000H,寄存器1-16所对应的地址分别为0000H –0015H。

图2 – 7 的例子是从17号从机读3个采集到的基本数据U1、U2、U3,U1的地址为0000H, U2的地址为0001H,U3的地址为0002H。

Addr

Fun

Data start

addr  hi

Data start

addr lo

Data #of

regs hi

Data #of

regs lo

CRC16

hi

CRC16

lo

11H

03H

00H

00H

00H

03H

XXH

XXH

图 2 – 7读取保持寄存器----查询

响应

响应信息中的寄存器数据为二进制数据,每个寄存器分别对应2个字节,第一个字节为高位值数据,第二个字节为低位数据。

图 2 – 8的例子是读取U1,U2,U3(U1=03E8H,U2=03E7H,U3=03E9H)的响应。

Addr

Fun

Byte

count

Data1

hi

Data1

Lo

Data 2

hi

Data2

lo

Data3

hi

Data3

lo

CRC16

hi

CRC16

lo

11H

03H

06H

03H

E8H

03H

E7H

03H

E9H

XXH

XXH

图 2 – 8读取保持寄存器----响应

2.4   读取输入寄存器(功能码04)

读取从机输入寄存器(3X类型)中的二进制数据,不支持广播。

查询

查询信息规定了要读的寄存器的起始地址及寄存器的数量,寻止起始地址为0,寄存器1-16所对应的地址分别为0000H –0015H。

图 2 – 9的例子是请求17号从机的0009寄存器。

Addr

Fun

DO addr

hi

DO addr

lo

Data #of

regs hi

Data #of

regs lo

CRC16

hi

CRC16

lo

11H

04H

00H

08H

00H

01H

XXH

XXH

图 2 – 9读取输入寄存器----查询

响应

响应信息中的寄存器数据为每个寄存器分别对应2个字节,第一个字节为高位数据,第二个字节为低位数据。

图 2 – 10的例子寄存器30009中的数据用000AH 2个字节表示。

Addr

Fun

Byte

count

Data

hi

Data

Lo

CRC16

hi

CRC16

lo

11H

04H

02H

00H

0AH

XXH

XXH

图 2 – 10读取输入寄存器----响应

2.5   强置单线圈(功能码05)

强制单个线圈(DO,0X类型)为ON或OFF状态,广播时,该功能可强制所有从机中同一类型的线圈均为ON或OFF状态。

该功能可越过控制器内存的保护状态和线圈的禁止状态。线圈强制状态一直保持有效直至下一个控制逻辑作用于线圈为止。控制逻辑中无线圈程序时,则线圈处于强制状态。

查询

查询信息规定了需要强制一个单独线圈的类型,线圈的起始地址为0000H,1-16个线圈的寻址地址分为0000H –0015H(DO1=0000H,DO2=0001H,依此类推)。

由查询数据区中的一个常量,规定被请求线圈的ON/OFF状态, FF00H值请求线圈处于ON状态,0000H值请求线圈处于OFF状态,其它值对线圈无效,不起作用。

图示 2-11的例子是请求17号从机开DO1的On状态。

Addr

Fun

DO addr

hi

DO addr

lo

Value

hi

Value

lo

CRC16

hi

CRC16

lo

11H

05H

00H

00H

FFH

00H

XXH

XXH

图示 2-11强制单线圈----查询

响应

图2 – 12所示为对这个命令请求的正常响应是在DO状态改变以后传送接收到的数据。

Addr

Fun

DO addr

hi

DO addr

lo

Value

hi

Value

lo

CRC16

hi

CRC16

lo

11H

05H

00H

00H

FFH

00H

XXH

XXH

图示 2-12强制单线圈----响应

2.6 预置单寄存器(功能码06)

把一个值预置到一个保持寄存器(4X类型)中,广播时,该功能把值预置到所有从机的相同类型的寄存器中。

该功能可越过控制器的内存保护。使寄存器中的预置值保持有效。只能由控制器的下一个逻辑信号来处理该预置值。若控制逻辑中无寄存器程序时,则寄存器中的值保持不变。

查询

查询信息规定了要预置寄存器的类型,寄存器寻址起始地址为0000H,寄存器1所对应的地址为0000H。

图示 2-13的例子是请求17号从机0040H.的值为2717。

Addr

Fun

Data start

reg  hi

Data start

reg lo

Value

hi

Value

lo

CRC

hi

CRC

lo

11H

06H

00H

40H

0AH

9DH

XXH

XXH

图示 2-13预设单寄存器----查询

响应

图2 – 14所示对于预置单寄存器请求的正常响应是在寄存器值改变以后将接收到的数据传送回去。

Addr

Fun

Data start

reg  hi

Data start

reg lo

Value

hi

Value

lo

CRC

hi

CRC

lo

11H

06H

00H

40H

0AH

9DH

XXH

XXH

图示 2-14预设单寄存器----响应

2.7读取异常状态(功能码7)

读从中机中8个不正常状态线圈的数据,某些线圈号已在不同型号的控制器中预定义,而其它的线圈由用户编程,作为有关控制器的状态信息,如“machine ON/OFF”,“heads retraced”,(缩回标题),“safeties satisfied”(安全性满意),“errorconditions”(存在错误条件)或其它用户定义的标志等。该功能码不支持广播。

该功能代码为存取该类信息提供了一种简单的方法,不正常线圈的类型是已知的(在功能代码中不需要线圈类型) 预定义的不正常线圈号如下:

控制器型号                 线圈                 设定

M84,184/384,584,984           1-8                    用户定义

484                          257                  电池状态

258-264             用户定义

884                          761                   电池状态

762                   内存保护状态

763                   R10工况状态

764-768         用户预定义

查询

图示 2-15的例子是请求读从机设备17中的不正常状态。

Addr

Fun

CRC16  hi

CRC16  lo

11H

07H

XXH

XXH

图示 2-15读取异常状态----查询

响应

正常响应包含 8 个不正常的线圈状态,为一个数据字节,每个线圈一位。LSB对应为最低线圈类型的状态。

图2 – 16所示按查询要求返回响应:

Addr

Fun

DO Data

CRC16  hi

CRC16  lo

11H

07H

6DH

XXH

XXH

图示 2-16读取异常状态----响应

该例子中,线圈数据为 6DH (二进制0110 ,1101),从左到右 (最高位至最低位) 的线圈状态分别为: OFF – ON – ON – OFF – ON –ON – OFF – ON。若控制器型号为 984,这些位表示线圈 8 至 1 的状态;若控制器型号为 484 则表示线圈 264 至 257 的状态。

2.8 强置多线圈(功能码15)

按线圈的顺序把各线圈 (DO,0X 类型) 强制成 ON 或 OFF。广播时,该功能代码可对各从机中相同类型的线圈起强制作用。

该功能代码可越过内存保护和线圈的禁止状态线圈。保持强制状态有效,并只能由控制器的下一个逻辑来处理。若无线圈控制逻辑程序时,线圈将保持强制状态。

查询

查询信息规定了被强制线圈的类型,线圈的起始地址为0000H,1-16个线圈的寻址地址分为0000H –0015H(DO1=0000H,DO2=0001H,依此类推)。

查询数据区规定了被请求线圈的 ON/OFF 状态,如数据区的某位值为“1”表示请求的相应线圈状态为ON,位值为“0”,则为OFF状态。

图示 2-17例子为请求从机设备 17 中一组 10 个线圈为强制状态,起始线圈为 20 (则寻址地址为 19 或 13H),查询的数据为 2 个字节,CD01H (二进制 11001101 0000 0001) 相应线圈的二进制位排列如下:

Bit:

1

1

0

0

1

1

0

1

0

0

0

0

0

0

0

1

Coll:

27

26

25

24

23

22

21

20

-

-

-

-

-

-

29

28

传送的第一个字节 CDH 对应线圈为 27-20,  LSB 对应线圈 20,传送的第二个字节为 01H,对应的线圈为 29-28, LSB 为继圈 28,其余未使用的位均填“0”。

Addr

Fun

DO addr

hi

DO addr

lo

Data #of

reg  hi

Data #of

reg lo

Byte

count

Value

hi

Value

lo

CRC

hi

CRC

lo

11H

0FH

00H

13H

00H

0AH

02H

CDH

01H

XXH

XXH

图示 2-17强置多线圈----查询

响应

正常响应返回从机地址,功能代码,起始地址以及强制线圈数。

图2 – 18对上述查询返回的响应。

Addr

Fun

DO addr

hi

DO addr

lo

Data #of

reg  hi

Data #of

reg lo

CRC16

hi

CRC16

lo

11H

0FH

00H

13H

00H

0AH

XXH

XXH

图示 2-18强置多线圈----响应

2.9预置多寄存器(功能码16)

把数据按顺序预置到各 (4X类型) 寄存器中,广播时该功能代码可把数据预置到全部从机中的相同类型的寄存器中。

该功能代码可越过控制器的内存保护,在寄存器中的预置值一直保持有效,只能由控制器的下一个逻辑来处理寄存器的内容,控制逻辑中无该寄存器程序时,则寄存器中的值保持不变。

查询

查询信息规定了要预置寄存器的类型,寄存器寻址起始地址为0000H,寄存器1所对应的地址为0000H。

图示 2-19的例子是请求17号从机的地址0040H和0041H.的值为 4089 和 0AD9。

Addr

Fun

Data start

reg  hi

Data start

reg lo

Data #of

reg  hi

Data #of

reg lo

Byte

count

Value

hi

Value

lo

Value

hi

Value

lo

CRC

hi

CRC

lo

11H

10H

00H

40H

00H

02H

04H

40H

89H

0AH

9DH

XXH

XXH

图示 2-19预设多寄存器----查询

响应

图2 – 20所示对于预置单寄存器请求的正常响应是在寄存器值改变以后将接收到的数据传送回去。

Addr

Fun

Data start

reg  hi

Data start

reg lo

Data #of

reg  hi

Data #of

reg lo

CRC16

hi

CRC16

lo

11H

10H

00H

40H

00H

02H

XXH

XXH

图示 2-20预设多寄存器----响应

2.10报告从机标识(功能码17)


http://www.taodudu.cc/news/show-6295380.html

相关文章:

  • redux react-redux简介
  • 【Redux 和 React-Recux】
  • 学习reflux的总结
  • Redux和react-redux的区别是什么?
  • redux和react-redux
  • React 和 Redux
  • [react] redux react-redux
  • react-redux——使用redux——使用react-redux这个扩展简化操作
  • react 和 reflux
  • redux与flux
  • redux与react-redux的区别:
  • Reflux详解
  • Reflux
  • redux及react-redux
  • React Reflux
  • redux与react-redux
  • Redux以及Flux介绍
  • 2023年4月北京机动车尾号限行轮换新规定用手机提醒
  • 统计学习 EM算法 Python实现
  • 帮忙选个号手机号码末四位:4739、3636,2577,8968,1717,2424,8886,5678,4619,5151,6226,1212,4321,2157,3445,觉得哪个好?
  • LQ0270 手机尾数【水题】
  • 【每日一题】039 手机尾数
  • LLaMA(大规模机器学习和分析)
  • 矩阵求逆引理(matrix inversion lemma)
  • 泵引理 Pumping Lemma
  • Barbalat引理与类李雅普诺夫引理,及它们在自适应控制系统设计的应用
  • 求两圆相交的交点的方法
  • 链表的相交
  • 【链表相交】
  • 线段相交算法

Modbus 通讯协议 (RTU传输模式)相关推荐

  1. modbus rtu与计算机通讯,Modbus通讯协议原来是这么回事!看完秒懂了

    原标题:Modbus通讯协议原来是这么回事!看完秒懂了 [www.gkwo.net]工程师必备网站 导语:ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用 ...

  2. 基于modbus协议的工业自动化网络规范_工控学堂:解读Modbus通讯协议「宜收藏」...

    作为工控人,Modbus通讯协议想必都不陌生,Modbus通讯协议可以说是工业自动化领域应用最为广泛的通讯协议,因为他的开放性.可扩充性和标准化使他成为通用工业标准. 1979年施耐德电气制定了一个用 ...

  3. 协议:Modbus通讯协议详细

    1.Modbus通讯协议详细解释 https://blog.csdn.net/rxiang12/article/details/79125813 2.Modbus通信协议详解 https://blog ...

  4. modbus通讯协议详解

    1.Modbus协议简介 Modbus协议是一种广泛应用于当今工业控制领域的通用通信协议.通过此协议,控制器相互之间.或者控制器经由网路(如以太网)可以和其他设备之间进行通信.Modbus协议使用的是 ...

  5. Modbus通讯协议学习文档

    1 什么是Modbus通讯协议 Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表.Mo ...

  6. Modbus通讯协议

    https://baike.baidu.com/item/Modbus%E9%80%9A%E8%AE%AF%E5%8D%8F%E8%AE%AE/5972462?fromtitle=ModBus& ...

  7. MODBUS通讯协议及编程【一】

    一.Modbus 协议简介   Modbus 协议是应用于电子控制器上的一种通用语言.通过此协议,控制器相互之间.控制器经由网络(例如以太网)和其它设备之间可以通信.它已经成为一通用工业标准.有了它, ...

  8. modbus通讯协议详解(转载)

    转载自:https://www.cnblogs.com/The-explosion/p/11512677.html modbus通讯协议详解 1.Modbus 协议简介  Modbus协议是一种已广泛 ...

  9. Modbus 通讯协议

    Modbus 通讯协议 摘要 工业控制已从单机控制走向集中监控.集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便.Modbus就是工业控制器的网络协议中的一种. 关键词 Modbus ...

  10. 一文搞懂物联网Modbus通讯协议

    简介: 一般来说,常见的物联网通讯协议众多,如蓝牙.Zigbee.WiFi.ModBus.PROFINET.EtherCAT.蜂窝等.而在众多的物联网通讯协议中,Modbus是当前非常流行的一种通讯协 ...

最新文章

  1. 求表达式 f(n)的结果
  2. python数据结构《排序专题复习》
  3. linux文件的查看指令-cat-more-less
  4. 爆米花现象_芯片爆米花现象以及解决办法
  5. 计算机体系结构及组成原理
  6. 惠普无线打印机服务器进不去,连接您的HP无线打印机 | 无线打印中心 | 惠普中国...
  7. 史上最完美将windows键盘映射成mac键盘,绝对不需要买HHKB了
  8. 海尔手机V73 PC套件安装使用说明 管理好你的电话簿
  9. 耗时86小时的「百变小樱」最强数据可视化作品!| 译文
  10. Greedy search 和 beam search
  11. LG30刷小米系统_小米红米手机安卓9底层如何正确安全升级安卓10版MIUI12开发版...
  12. SpringBoot banner更改
  13. 干货!学习 Python 看这篇管够!!!
  14. 【CYH-02】NOIp考砸后虐题赛:数学:题解
  15. 【AAAI 2021】时间序列相关论文汇总
  16. IP数据报在各层的信息格式
  17. 【fpdlink显示】941 GPIO3与948 GPIO3连接问题
  18. CAN总线协议测试拓扑图
  19. C语言:mmap函数实现
  20. 智慧物流可视化,能否解决购物节后的爆仓危机?

热门文章

  1. 搜狗workflow项目研究(三)线程池
  2. UrlRewrite
  3. Linux运维之道-基础命令
  4. (九)巴菲特与索罗斯的投资习惯:术业有专攻
  5. 通过图纸和数字建筑表现来叙述古罗马遗产
  6. 关于STM32与OpenMv通讯踩过的那些坑(1)
  7. 下班时间学写作练习17天
  8. 安装配置Android Studio集成开发环境
  9. 在VS2010中利用MFC读取word、ppt、excel格式文件
  10. wifi 802.11 kvr 漫游