Modbus标准通讯协议格式【最新】

合集下载

Modbus+RTU+标准通讯协议格式

Modbus+RTU+标准通讯协议格式

HLP_SV Modbus RTU 标准通讯协议格式通信资料格式Address Function Data CRC check8 bits 8 bits N×8bits 16bits1)Address通讯地址:1-2472)Function:命令码8-bit命令01 读线圈状态上位机发送数据格式:ADDRESS 01 ADDRH ADDRL NUMH NUML CRC注: ADDR: 00000 --- FFFF(ADDR=线圈地址-1);NUM: 0010-----0040 (NUM为要读线圈状态值的二进制数位数)正确时变频器返回数据格式:ADDRESS 01 BYTECOUNT DA TA1 DA TA2 DA TA3 DA TAN CRC注: BYTECOUNT:读取的字数错误时变频器返回数据格式:ADDRESS 0X81 Errornum CRC注: Errornum为错误类型代码如:要检测变频器的输出频率应发送数据:01 01 00 30 00 10 3D C9(16进制)变频器返回数据:01 01 02 00 20 B8 24(16进制)发送数据:0030hex(线圈地址49)返回的数据位为“0020”(16进制),高位与低位互换,为2000。

即输出频率为303(Max Ref)的50%。

关于2000对应50%,具体见图1。

03读保持寄存器上位机发送数据格式:ADDRESS 03 ADDRH ADDRL NUMH NUML CRC注:ADDR: 0 --- 0XFFFF;NUM: 0010-----0040 (NUM为要读取数据的字数)ADDR=Parameter Numbe r×10-1正确时变频器返回数据格式:ADDRESS 03 BYTECOUNT DA TA1 DA TA 2 DA TA 3 DA TAN CRC 注: BYTECOUNT:读取的字节数错误时变频器返回数据格式:ADDRESS 0X83 Errornum CRC如:要读变频器参数303的设定值应发送数据:01 03 0B D5 00 02 95 BC (16进制)Parameter 303(3029)=0BD5HEX变频器返回数据:“:”01 03 04 00 00 EA 60 B5 7B返回的数据位为“00 00 EA 60”(16进制)转换为10进制数为60000,表示303设置值为60.000※当参数值为双字时,NUM的值必须等于2。

MODBUS标准通讯协议

MODBUS标准通讯协议

MODBUS 标准通讯协议(简版)(基于Modbus 应用协议RTU 通讯模式)1. 前言本协议适用于符合MODBUS 标准通讯协议的规定以及在Modbus 网络上以RTU 模式通信运行的设备和应用软件。

本协议按照Modbus 应用协议标准制定。

2. 波特率可选范围代码678910 11 12 13 14 波特率 2400 4800 9600 14400192002880038400576001152003. RTU 通讯数据传输模式3.1 RTU 模式每个字节( 11 位 )的格式为 :通讯传输为异步方式,并以字节(数据帧)为单位。

在主站和从站之间传递的每一个数据帧都是11位的串行数据流。

编码系统: 8–位二进制,报文中每个8 位字节含有两个4 位十六进制字符(0–9, A –F) 数 据 位: 1个 起始位8个 数据位, 首先发送最低有效位1个 奇偶校验(注:偶校验是要求的,其它模式( 奇校验,无校验 )也可以使用) 1个 停止位 (注 :使用无校验时要求2个停止位)帧校验域:循环冗余校验(CRC) 3.2 字符的串行传送方式:每个字符或字节按如下顺序发送(从左到右):最低有效位 (LSB) . . . 最高有效位 (MSB)通过配置,设备可以接受奇校验、偶校验或无校验。

如果无奇偶校验,那么传送一个附加的停止位来填充数据帧使其成为完整的11位异步字符:3.3 数据编码:Modbus 处理的所有数据按照存储数据的类型可以分为位寄存器(容量为1位)和16位寄存器(容量为16位)两种,它们的宽度都是16位(Data is packed as two bytes per register),协议允许单个选择65536个数据项,而且其读写操作可以越过多个连续数据项直到数据大小规格限制,这个数据大小规格限制与事务处理功能码有关。

在Modbus PDU 中从0~65535寻址每个数据。

Modbus 使用一个‘big-Endian ’表示地址和数据项,即最高有效字节在低地址存储,最低有效字节在高字节存储。

(完整word版)modbus通讯协议

(完整word版)modbus通讯协议

Modbus通讯协议图片:图片:图片:Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。

此协议支持传统的RS-232、RS-422、RS-485和以太网设备。

许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。

有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。

当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。

如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。

Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。

此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。

标准的Modicon控制器使用RS232C实现串行的Modbus。

Modbus的ASCII、RTU 协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave 方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。

Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。

另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。

因此,Modbus协议的可靠性较好。

下面我来简单的给大家介绍一下,对于Modbus的ASCII、RTU和TCP协议来说,其中TCP和RTU协议非常类似,我们只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去即可。

modbus通讯协议格式

modbus通讯协议格式

modbus 通讯协议格式00001MODBUS/TCP 是简单的、中立厂商的用于管理和控制自动化设备的MODBUS 系列通讯协议的派生产品。

显而易见,它覆盖了使用TCP/IP 协议的Intranet 和Internet 环境中MODBUS 报文的用途。

协议的最通用用途是为诸如PLCrsquo;s,I/O 模块,以及连接其它简单域总线或者I/O 模块的网关服务的。

MODBUS/TCP 协议是作为一种(实际的)自动化标准发行的。

既然MODBUS 已经广为人知,该规范只将别处没有收录的少量信息列入其中。

然而,本规范力图阐明MODBUS 中哪种功能对于普通自动化设备的互用性有价值,哪些部份是MODBUS 作为可编程的协议交替用于PLCrsquo;s 的多余部份。

它通过将配套报文类型一致性等级,区别那些普遍合用的和可选的,特殊是那些合用于特殊设备如PLCrsquo;s 的报文。

2.1 面向连接在MODBUS 中,数据处理传统上是无国界的,使它们对由噪音引起的中断有高的反抗力,而且在任一端只需要最小的维护信息。

编程操作,另一方面,期望一种面向连接的方法。

这种方法对于简单变量通过惟一的登录符号完成,对于ModbusPlus 变量,通过明确的程序路径容量来完成,而程序路径容量维持了一种双向连接直到被彻底击穿。

MODBUS/TCP 处理两种情况。

连接在网络协议层很容易被辨认,单一的连接可以支持多个独立的事务。

此外,TCP 允许很大数量的并发连接,于是不少情况下,在请求时重新连接或者复用一条长的连接是发起者的选择。

熟悉MODBUS 的开辟者会感到惊讶:为什么面向连接TCP 协议比面向数据报的UDP 要应用广泛。

主要原因是通过封装独立的事务在一个连接中,此连接可被识别,管理和取销而无须请求客户和服务器采用特殊的动作。

这就使进程具有对网络性能变化的适应能力,而且容许安全特色如防火墙和代理可以方便的添加。

类似的推理被最初的万维网的开辟者所采用,他们选用TCP 及端口80 去实现一个作为单一事务的最小的环球网问询。

modbus协议范本

modbus协议范本

Modbus协议范本
一、通信协议
Modbus是一种串行通信协议,用于连接工业电子设备。

它定义了主从设备之间的通信方式和数据格式,使得不同厂商生产的设备能够相互通信。

二、数据格式
Modbus协议采用ASCII码或二进制码进行数据传输。

在ASCII码格式中,每个字节都表示为一个ASCII字符,而在二进制码格式中,每个字节都表示为8位二进制数。

三、命令与应答
Modbus协议采用命令/应答的方式进行通信。

主设备发送一个命令,从设备接收并执行该命令,然后返回一个应答。

命令和应答都遵循一定的格式和协议。

四、校验方式
Modbus协议提供了两种校验方式:奇偶校验和CRC校
验。

奇偶校验方式通过在数据字节后添加一个校验位来确保数据的正确性。

CRC校验方式则使用一个循环冗余检查算法来确保数据的正确性。

五、数据通信方式
Modbus协议支持两种数据通信方式:同步通信和异步通信。

同步通信要求主设备和从设备在通信时保持同步,而异步通信则不需要同步。

六、连接方式
Modbus协议支持多种连接方式,包括RS-485、RS-422、RS-232等。

这些连接方式适用于不同的应用场景和设备配置。

七、传输速率
Modbus协议支持多种传输速率,包括9.6kbps、19.2kbps、4800bps等。

根据不同的应用场景和设备配置,可以选择合适的传输速率来确保通信的稳定性和可靠性。

Modbus通讯协议说明

Modbus通讯协议说明

HiAL
上限报警限值
01H
ALP
报警输出定义
0FH
LoAL
下限报警限值
02H
SYS
系统功能选择
14H
PHAL 正偏差报警限值
03H
Addr
仪表通讯地址
/
PLAL
负偏差报警限值
04H
bAud
仪表通讯波特率
/
dF
报警回差
05H
dL
输入数字滤波
17H
oPAd
PID 控制方式
06H
mAn
运行状态
18H
P
速率参数
t
控制周期
Sn
输入规格
diP
小数点位置
diL 下限显示限值
diH 上限显示限值
通讯地址 00H 01H 02H 03H 04H 05H 06H 08H 07H 09H 0AH 0BH 0CH 0DH 0EH
参数 Sc ot oL oH ALP SYS Addr bAud dL Loc SET1-8 CSC SF SVL SVH
7
6
5
4
3
2
1
0
0
0
0
0 PLAL 报警 PHAL 报警 LoAL 报警 HIAL 报警
—5—
XM808P/908P(WP 系列曲线控制)
1、03 指令参数地址
参数名
含义
通讯地址 参数名
含义
通讯地址
STEP 当前运行的曲线段
00H
oL
控制输出下限值
12H
MV
控制输出值
1AH
oH
控制输出上限值
13H
运行状态

modbus通讯协议模板

modbus通讯协议模板

Modbus通讯协议是一种在工业领域广泛使用的通信协议,用于在设备之间传输数据。

Modbus协议有多个变体,包括Modbus RTU(串行通信)和Modbus TCP(基于TCP/IP的通信)。

以下是一个简单的Modbus通讯协议模板,供参考:Modbus RTU 通讯协议模板:1. 起始符:Modbus RTU通讯以一帧二进制数据开始。

在串行通信中,通常使用起始符标志通讯的开始。

常见的起始符是11位的空闲时间。

2. 设备地址:Modbus RTU协议中,每个设备都有一个唯一的地址。

设备通过地址来区分通信的目标。

3. 功能码:描述要执行的操作的功能码。

常见功能码包括读取保持寄存器、写入单个寄存器、读取输入寄存器等。

4. 数据:数据字段包含读取或写入的数据。

数据的格式取决于功能码和具体的操作。

5. CRC 校验:使用CRC (循环冗余校验)进行数据校验,以确保通讯的完整性。

CRC通常包括两个字节。

6. 停止位:在Modbus RTU通讯中,停止位表示一个数据帧的结束。

通常有一个停止位。

Modbus TCP 通讯协议模板:1. Modbus TCP 头部:Modbus TCP通讯以TCP/IP帧开始。

头部包含源端口、目标端口等信息。

2. Modbus TCP 协议标识符:标识TCP报文中的Modbus协议。

通常为0。

3. 长度字段:描述Modbus数据的长度,以字节为单位。

4. 设备地址:Modbus TCP中,设备地址也包含在TCP报文的数据字段中。

5. 功能码:描述要执行的操作的功能码,与Modbus RTU相同。

6. 数据:数据字段包含读取或写入的数据。

数据的格式取决于功能码和具体的操作。

7. CRC 或校验字段:在Modbus TCP中,通常使用CRC或其他校验方法来确保通讯的完整性。

这是一个简化的模板,实际的Modbus通讯可能会涉及更多的细节和特定的实现。

使用Modbus协议时,请根据具体情况参考Modbus协议规范和设备文档。

[原创]通讯格式-传输方式及MODBUS协议简介

[原创]通讯格式-传输方式及MODBUS协议简介

MODBUS协议、通讯格式、传输方式MODBUS简介MODBUS是一种单主站的主/从通信模式。

MODBUS网络上只能有一个主站存在,主站在MODBUS网络上没有地址,从站的地址范围为0 - 247,其中0 为广播地址,从站的实际地址范围为 1 - 247。

MODBUS通信标准协议可以通过各种传输方式传播,如RS232C、RS485、光纤、无线电等。

MODBUS具有两种串行传输模式,ASCII和RTU。

它们定义了数据如何打包、解码的不同方式。

支持MODBUS协议的设备一般都支持RTU 格式。

通信双方必须同时支持上述模式中的一种。

实际也就是发送与接收双方商量一下,定好规则,发送方想要接收方做某件事,就发送某种格式的信息给接收方,接收方收到信息后,按照事先约定好的规则分析信息,执行命令。

MODBUS 的通讯规范:起始符 + 设备地址 + 功能代码 + 数据 + 校验和 + 结束符通讯格式通讯格式设置举例:9600,o,8,1 即:波特率为9600;校验方式为奇校验;数据位为八位;停止位为一位;------------------------------------------------------------1、波特率:波特率是每秒钟传输的数据位数;什么是位数呢?计算机处理的语言是"0"和"1"组合而成的信息,即机器语言!一个"0"或是一个"1"就是一个位;设置波特率的作用?如果把波特率设为9600,即一秒钟之内能够传输9600个"0"或是"1",它决定了通讯的数据传输速度。

常用的波特率数值有:2400、4800、9600、19200、38400、57600、115200;其值越大,通讯传输速度越高,那么是不是把波特率的数值设置的越大越好呢?当然不是,它要根据现场传输条件来决定,波特率设置的越大,要承担的通讯失败风险越大。

Modbus通讯协议标准格式

Modbus通讯协议标准格式
05H
数据内容高位
13H
数据内容高位
13H
数据内容低位
88H
数据内容低位
88H
CRC CHK低位
94H
CRC CHK低位
94H
CRC CHK高位
AEH
CRC CHK高位
AEH
END
T1-T2-T3-T4
END
T1-T2-T3-T4
ASCII主机读取从机命令ASCII从机回应信息
START
(:)(3A)
END
T1-T2-T3-T4
RTU主机读取从机命令信息RTU从机回应信息
RTU主机写入从机命令信息RTU从机回应信息
START
T1-T2-T3-T4
START
T1-T2-T3-T4
ADDR
02H
ADDR
02H
CMD
06H
CMD
06H
写数据地址高位
00H
写数据地址高位
00H
写数据地址低位
05H
写数据地址低位
CR(D)
LRC CHK Hi
C
ED Hi
CR(D)
END Lo
LF(A)
START
(:)(3A)
ADDR
0
ADDR
0
1
1
CMD
0
CMD
0
3
3
起始地址高位
0
字节个数
0
0
4
起始地址低位
0
数据地址0004H高位
1
4
3
数据个数高位
0
数据地址0004H低位
8
0
8
数据个数低位

modbus协议标准格式

modbus协议标准格式

modbus协议标准格式
Modbus协议是一种通信协议,用于在工业控制系统中实现设备之间的数据交换。

它定义了一套标准的消息格式,以确保不同设备之间的互操作性。

Modbus协议的标准格式如下:
1. 帧头(Header):帧头包含了源地址和目标地址等信息,用于识别消息的发送者和接收者。

2. 功能码(Function Code):功能码定义了要执行的特定操作,例如读取或写入数据。

3. 数据域(Data Field):数据域包含了具体要传输的数据,可以是读取的寄存器值或要写入的值。

4. 错误校验(Error Check):错误校验字段用于检测数据传输中是否发生错误,常用的校验方式有循环冗余校验(CRC)和简单校验和(Checksum)。

5. 帧尾(Footer):帧尾标识着消息的结束,通常是一个或多个字节的标识符。

根据具体的Modbus协议类型和使用的物理层,标准格式可能会有一些变化。

其中最常见的是Modbus RTU和Modbus TCP,它们在帧格式和传输方式上略有差异。

总之,Modbus协议的标准格式定义了消息的结构,使得不同设备之间能够进行有效的数据交换。

modbus通讯协议格式详解

modbus通讯协议格式详解

modbus通讯协议格式详解Modbus是一种常用的通信协议,用于在工业自动化系统中不同设备之间进行通信。

下面是Modbus通信协议的详解。

1. Modbus协议类型:- Modbus ASCII:使用ASCII字符进行数据传输,每个字节使用两个ASCII字符表示。

- Modbus RTU:使用二进制编码进行数据传输,每个字节使用8个二进制位表示。

2. Modbus通信格式:- 帧起始符:通常为冒号(ASCII字符)或启动位(RTU模式)。

- 地址字段:定义要与之通信的设备地址。

- 功能码:指示所需执行的操作类型。

- 数据域:包含要传输或接收的数据。

- 校验和:用于验证帧数据的完整性,通常是通过计算和比较CRC校验值或校验和字节来实现的。

3. Modbus功能码:- 读取数据:用于读取设备的状态或数据。

- 功能码0x01(读取线圈状态):用于读取数字输出或线圈的状态。

- 功能码0x02(读取输入状态):用于读取数字输入或线圈的状态。

- 功能码0x03(读取保持寄存器):用于读取设备的保持寄存器的值。

- 功能码0x04(读取输入寄存器):用于读取设备的输入寄存器的值。

- 写入数据:用于写入设备的状态或数据。

- 功能码0x05(写单个线圈):用于写入单个数字输出或线圈的状态。

- 功能码0x06(写单个寄存器):用于写入单个保持寄存器的值。

- 功能码0x0F(写多个线圈):用于写入多个数字输出或线圈的状态。

- 功能码0x10(写多个寄存器):用于写入多个保持寄存器的值。

4. Modbus数据格式:- 线圈状态:用于表示开关状态的数据,以位为单位(0表示关,1表示开)。

- 输入状态:用于表示输入设备状态的数据,以位为单位。

- 保持寄存器:用于存储设备状态或数据的数据,以字为单位。

- 输入寄存器:用于存储输入设备状态或数据的数据,以字为单位。

总结:Modbus通信协议定义了一套通用的格式,用于在工业自动化系统中进行设备之间的通信。

modbus协议标准新版

modbus协议标准新版

目录一.概述 (2)二.功能码分类 (5)三.地址分配及功能码使用 (6)3.1 开关量输出 (6)3.2 开关量输入 (6)3.3 模拟量输入 (7)3.4 设备标识信息 (7)3.5 模拟输出及系统参数 (7)3.6 系统参数 (20)四.功能码描述 (23)4.1 01(0x01)读线圈 (23)4.2 02(0x02)读离散量输入 (24)4.3 03(0x03)读保持寄存器 (27)4.4 04(0x04)读输入寄存器 (29)4.5 05(0x05)写单个线圈 (31)4.6 06(0x06)写单个寄存器 (33)4.7 15(0x0F)写多个线圈 (35)4.8 16(0x10)写多个保持寄存器 (37)4.9 43/14(0x2B/0x0E)读设备标识 (39)4.10 65(0x41)读标定参数及相关系统参数 (41)4.11 66(0x42)写多个标定参数及相关系统参数 (41)五.Modbus异常响应 (42)六.Modbus协议在串行链路上的实现规范 (43)6.1 Modbus主/从协议原理 (43)6.2 Modbus寻址规则 (43)6.3 Modbus帧描述 (43)6.4 主站/从站状态图 (44)6.4.1 主站状态图 (44)6.4.2 从站状态图 (45)6.5 串行传输模式 (46)6.5.1 Modbus报文RTU帧 (47)6.5.2 CRC校验 (48)一.概述此次Modbus RTU通讯协议标准的制定参照GB/T 19582—2008《基于Modbus协议的工业自动化网络规范》。

协议中规定了功能码的使用和数据地址的分配,Modbus通讯协议的实现请参照GB/T 19582—2008《基于Modbus协议的工业自动化网络规范》。

GB/T 19582—2008分为三部分:——第1部分:Modbus应用协议;——第2部分:Modbus协议在串行链路上的实现指南;——第3部分:Modbus协议在TCP/IP上的实现指南。

MODBUS通讯协议

MODBUS通讯协议

通讯协议一、仪表采用modbus通讯协议,校验采用CCITT-16/N(G(x)=x16+x15+x13+1)。

二、通讯格式:1.读数据:address(仪表地址)+03H+xxH(寄存器高地址)+xxH(寄存器低地址)+xxH (寄存器数高位)+xxH(寄存器数低位)+CRCH(校验高位)+CRCL(校验低位)。

仪表回传:address(仪表地址)+03H+xxH(字节数)+xxH(高字节)+---+xxH(低字节)+CRCH(校验高位)+CRCL(校验低位)。

如:总累计为10000.84,整数部分转化为长整形16进制数为:00002710H,小数部分0.84转化为浮点型为:3f570a3dH,仪表地址为1,则读指令和回传结果如下:读:01H 03H 9cH 59H 00H 04H baH 4aH仪表回传:01H 03H 08H 00H 00H 27H 10H 3fH 57H 0aH 3dH 28H 76H 2.写数据:address(仪表地址)+10H+xxH(寄存器高地址)+xxH(寄存器低地址)+xxH (寄存器数高位)+xxH(寄存器数低位)+xxH(总字节数)+xxH(高字节)+---+xxH (低字节)+CRCH(校验高位)+CRCL(校验低位)。

如仪表接收正确后,将原数据回传。

其中根据数据不同,数据包含的字节数也可能不同,传送字节时将按高字节在前低字节在后的原则。

如:要将设定流量写为100(符点数),首先我们知道设定流量的地址为9c51H,而100的4字节符点数表示为:42c80000H,故发送数据如下:01H 10H 9cH 51H 00H 02H 04H 42H c8H 00H 00H 5bH dfH仪表接收正确后将回传从最前面到寄存器数低位的数及校验。

01H 10H 9cH 51H 00H 02H 3eH 49H当设置范围超标或地址不在范围时回复时将功能字节10H加80H后回传从最前面到寄存器数低位的数及校验。

modbus_标准通讯协议中文版

modbus_标准通讯协议中文版
整个信息必须连续发送。如果在发送帧信息期间,出现大于 1.5 个字符的静止时间时,则接收设备刷新不完整的信息, 并假设下一个地址数据。
同样一个信息后,立即发送的一个新信息,(若无 3。5 个字符的静止时间)这将会产生一个错误。是因为合并信息的 CRC 校验码无效而产生的错误。
开始 T1-T2-T3-T4
地址 8 B位S
功能 8B位S
数据 N×8 B 位 S
校验 16B 位 S
终止 T1-T2-T3T-4
图 4 RTU 信息帧
Modbus 信息帧(Continued)
地址设置
信息地址包括 2 个字符(ASCII)或 8 位(RTU),有效的从机设备地址范围 0-247,(十进制),各从机设备的寻址范围为 1-247。 主机把从机地址放入信息帧的地址区,并向从机寻址。从机响应时,把自己的地址放入响应信息的地址区,让主机识别已 作出响应的从机地址。
在信息级,尽管网络通讯方法是对等的,但 Modbus 协议仍采用主从方式,若一台控制器作为主机设备发送一个信息,则可 从一台从机设备返回一个响应,类似,当一台控制器接受信息时,它就组织一个从机设备的响应信息,并返回至原发送信 息的控制器。
查询响应周期:
主机查询信息
设备地址 功能代码
8位 数据字节
错误校验
2 字符
数据
n 字符
纵向冗余 检查
2 字符
上海埃蒙特自动化系统有限公司 021-64131551 结束
2 字符
例外:对于 584 和 984A/B/X 控制器,一个 ASCII 信息可在 LRC 区后正常终止,而不需发送 CRLF 字符,此时出现>IS 的时 间间隔,控制器也将认为是正常中断。
RTU 模式中每个字节的格式: 编码系统:8 位二进制,十六进制 0-9,A-F

modbus通讯协议格式

modbus通讯协议格式

modbus通讯协议格式Modbus通讯协议格式。

Modbus通讯协议是一种用于工业控制领域的串行通信协议,它被广泛应用于自动化控制系统中。

本文将对Modbus通讯协议的格式进行详细介绍,以便读者更好地理解和应用该协议。

1. Modbus通讯协议的基本概念。

Modbus通讯协议是一种主从式通讯协议,它包括一个主站和多个从站。

主站负责发起通讯请求,而从站则负责响应主站的请求并执行相应的操作。

在Modbus通讯协议中,主站和从站之间通过串行通信进行数据交换,通常采用RS-232、RS-485或者Ethernet等通讯方式。

2. Modbus通讯协议的数据格式。

Modbus通讯协议的数据格式包括了功能码、数据地址、数据值等信息。

其中,功能码用于指示从站应执行的操作,比如读取数据、写入数据等;数据地址用于指定要读取或写入的数据的地址;数据值则是要读取或写入的实际数值。

在Modbus通讯中,数据格式通常采用16位或32位的寄存器来进行数据交换。

3. Modbus通讯协议的报文结构。

在Modbus通讯协议中,通讯的数据是通过报文进行传输的。

Modbus报文包括了地址域、功能码、数据域和校验码等部分。

地址域用于指定从站的地址,功能码用于指示要执行的操作,数据域则包含了要读取或写入的数据,校验码用于对报文的完整性进行校验。

通过对报文结构的解析,主站和从站可以进行有效的数据交换。

4. Modbus通讯协议的应用场景。

Modbus通讯协议广泛应用于工业控制领域,比如工业自动化、楼宇自动化、能源管理系统等。

在这些应用场景中,Modbus通讯协议可以实现不同设备之间的数据交换和控制,从而实现系统的集成和优化。

此外,Modbus通讯协议还可以通过网关设备与其他通讯协议进行互联,实现不同系统之间的数据共享和协同控制。

5. Modbus通讯协议的发展趋势。

随着工业互联网的发展,Modbus通讯协议也在不断演进和完善。

新的Modbus 通讯协议版本不断推出,以满足工业控制系统对于高效、安全、可靠通讯的需求。

Modbus标准通讯协议格式【最新】

Modbus标准通讯协议格式【最新】

Modbus通讯协议下表是Modbus的功能格式:1、读可读写数字量寄存器(线圈状态):计算机发送命令:[设备地址] [命令号01] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]例:[11][01][00][13][00][25][CRC低][CRC高]意义如下:<1>设备地址:在一个485总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。

例子中为想和17号(十进制的17是十六进制的11)通讯。

<2>命令号01:读取数字量的命令号固定为01。

<3>起始地址高8位、低8位:表示想读取的开关量的起始地址(起始地址为0)。

比如例子中的起始地址为19。

<4>寄存器数高8位、低8位:表示从起始地址开始读多少个开关量。

例子中为37个开关量。

<5>CRC校验:是从开头一直校验到此之前。

在此协议的最后再作介绍。

此处需要注意,CRC校验在命令中的高低字节的顺序和其他的相反。

设备响应:[设备地址] [命令号01] [返回的字节个数][数据1][数据2]...[数据n][CRC 校验的低8位] [CRC校验的高8位]例:[11][01][05][CD][6B][B2][0E][1B][CRC低][CRC高]意义如下:<1>设备地址和命令号和上面的相同。

<2>返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。

<3>数据1...n:由于每一个数据是一个8位的数,所以每一个数据表示8个开关量的值,每一位为0表示对应的开关断开,为1表示闭合。

比如例子中,表示20号(索引号为19)开关闭合,21号断开,22闭合,23闭合,24断开,25断开,26闭合,27闭合...如果询问的开关量不是8的整倍数,那么最后一个字节的高位部分无意义,置为0。

Modbus标准通讯协议格式

Modbus标准通讯协议格式

HLP A+ Modbus标准通讯协议格式注:BYTECOUNT = 2 * NUM错误时变频器返回数据格式:“ : ”ADDRESS 0X83 01 or02 or 03 0r 04LRC 0X0D 0X0A如:要读变频器功能码CD000中的设定值(假如为30.00HZ)(CD160=CD161=1 CD162=0)应发送数据:“:”03 00 00 00 01 FC 0D 0A (16进制),转为ASCII码格式为3A 30 33 30 30 30 30 30 30 30 31 46 43 0D 0A(ASCII)变频器返回数据:“:”01 03 02 0B B8 37 0D 0A(16进制),转为ASCII码格式为:3A 30 31 30 33 30 32 30 42 42 38 33 37 0D DA返回的数据位为“0BB8”(16进制)转换为10进制数为3000表示CD000设置值为30.0004 读取输入寄存器上位机发送数据格式:“: “ADDRESS 04 ADDRH ADDRL NUMH NUML LRC 0X0D0X0A注:ADDR: 0 ---- 0XFFFF;NUM: 0001 ---- 0004 (NUM为要读的输入寄存器的数量) 正确时变频器返回数据格式:“: “ADDRESS 04 BYTECOUNT DATAH1 DATAL1 ---- DA TAHN DA TALN注:BYTECOUNT = NUM * 2错误时变频器返回数据格式:“ : “ADDRESS 0X84 01 or 02 or 03 or 04 LRC 0X0D 0X0A如:要读变频器温度显示值(假如温度为36.2)(CD160=CD161=1 CD162=0)应发送数据:“:”01 04 00 06 00 01 F4 0D 0A(16进制),转为ASCII格式为:3A 30 31 30 34 30 30 30 36 30 30 30 31 46 34 0D 0A(ASCII)变频器返回数据:“:”01 04 02 01 6A 8E 0D 0A(16进制),转为ASCII码格式为3A 30 31 30 34 30 32 30 31 36 41 38 45 0D 0A(ASCII)返回的数据位为“016A”(16进制)转换为10进制为“362”表示温度为36.205 写单个线圈状态上位机发送数据格式:“: “ADDRESS 05ADDRH ADDRL DA TAH DATAL LRC 0X0D0X0A注:ADDR: 0 ---- 0XFFFF DATA: 0X0000 or 0XFF00(16进制数)正确时变频器返回数据格式:“: “ADDRESS 05 ADDRH ADDRL DA TAH DATAL LRC 0X0D0X0A错误时变频器返回数据格式:“ : ”ADDRESS 0X85 01 or02 or 03 0r 04 LRC 0X0D 0X0A06 写单个保持寄存器值上位机发送数据格式:“: “ADDRESS 06 ADDRH ADDRL DA TAH DA TAL LRC 0X0D0X0A注:ADDR: 0 ---- 0XFFFF正确时变频器返回数据格式:“: “ADDRESS 06 ADDRH ADDRL DA TAH DA TAL LRC 0X0D0X0A错误时变频器返回数据:“ : ”ADDRESS 0X86 01 or02 or 03 0r 04 LRC 0X0D 0X0A如:要对变频器功能码CD000写入30.00(CD160=CD161=1 CD162=0),应发送数据:“:”01 06 00 00 0B B8 36 0D 0A(16进制),转为ASCII格式为3A 30 31 30 36 30 30 30 30 30 42 42 38 33 36 0D 0A(ASCII)变频器返回数据:“:”01 06 00 00 0B B8 36 0D 0A(16进制),转为ASCII 格式为3A 30 31 30 36 30 30 30 30 30 42 42 38 33 36 0D 0A(ASCII)返回的数据位为“0BB8”(16进制)转换为10进制为“3000”表示CD000设置值为30.000F 写多个线圈状态上位机发送数据格式“: “ADDRESS 0F ADDRH ADDRL NUMH NUML COUNTDATAH1 DATAL1 DATA2H DATA2L ------- DA TANH DA TANL LRC0X0D 0X0A注:ADDR: 0 -------- 0XFFFF ; NUM: 1 ------- 1968 / 0X7B0 ; COUNT: NUM / 8或NUM/ 8 + 1 (NUM为要写的线圈的数量)正确时变频器返回数据格式:“: “ADDRESS 0F ADDRH ADDRL NUMH NUML LRC 0X0D0X0A错误时变频器返回数据格式:“ : ”ADDRESS 0X8F 01 or02 or 03 0r 04 LRC 0X0D 0X0A如:要使变频器正转(CD160=CD161=1 CD162=0),应发送数据:“:”01 0F 00 48 00 08 01 02 LRC 0D 0A(16进制),转为ASCII 格式为3A 30 31 30 46 30 30 34 38 30 30 30 38 30 31 30 30 30 32 LRC 0D 0A(ASCII)“0002”即0000 0010; 即线圈0x49置为1,给变频器发正转命令。

modbus通讯协议

modbus通讯协议

modbus通讯协议协议名称:Modbus通讯协议一、引言Modbus通讯协议是一种用于工业自动化领域的通信协议,用于实现不同设备之间的数据交换和通信。

本协议旨在规范Modbus通讯协议的格式、规则和数据传输方式,以确保设备之间的互操作性和数据的可靠性。

二、协议格式1. 物理层Modbus通讯协议使用串行通信或以太网通信作为物理层。

串行通信使用RS-485标准,以太网通信使用TCP/IP协议。

2. 数据帧格式Modbus通讯协议使用了一种简单的数据帧格式,包括起始字符、设备地址、功能码、数据区和校验码。

- 起始字符:每个数据帧以一个起始字符(冒号)开头,用于标识数据帧的开始。

- 设备地址:设备地址用于标识通信中的源设备和目标设备。

- 功能码:功能码用于指示设备执行的特定功能,如读取数据、写入数据等。

- 数据区:数据区包含了需要传输的数据。

- 校验码:校验码用于验证数据的完整性,常用的校验算法有CRC和LRC。

3. 数据传输方式Modbus通讯协议支持两种数据传输方式:请求-应答方式和广播方式。

- 请求-应答方式:源设备发送一个请求数据帧给目标设备,目标设备接收到请求后进行处理,并返回一个应答数据帧给源设备。

- 广播方式:源设备发送一个广播数据帧给所有设备,所有设备都可以接收到广播数据帧,但只有目标设备会进行处理,其他设备不会返回应答。

三、功能码Modbus通讯协议定义了一系列的功能码,用于指示设备执行不同的功能。

1. 读取数据功能码- 读取线圈状态:功能码为01,用于读取设备的线圈状态。

- 读取输入状态:功能码为02,用于读取设备的输入状态。

- 读取保持寄存器:功能码为03,用于读取设备的保持寄存器。

- 读取输入寄存器:功能码为04,用于读取设备的输入寄存器。

2. 写入数据功能码- 写单个线圈:功能码为05,用于写入单个线圈的状态。

- 写单个保持寄存器:功能码为06,用于写入单个保持寄存器的值。

modbus协议格式

modbus协议格式

modbus协议格式Modbus是一种通信协议,常用于工业自动化领域中的数据传输。

该协议定义了一种以主从架构进行通信的方式,其中主设备(通常是一个控制器)通过发送命令来读取或写入从设备(如传感器、执行器等)的数据。

下面是Modbus协议的格式。

Modbus协议包括了不同的功能码,每个功能码对应一种操作。

常用的功能码包括读取和写入寄存器、读取和写入多个寄存器等。

以下是Modbus协议的格式:1. 通讯起始位:一个起始位用于标记通讯的开始。

通常是一个高电平信号。

2. 从设备地址位:一个8位的二进制数,用于标识从设备的地址。

每个从设备都有一个唯一的地址。

3. 功能码:一个8位的二进制数,用于标识所需执行的操作。

例如,功能码03表示读取多个寄存器的值。

4. 数据位:根据功能码的不同,数据位的格式也会有所不同。

在读取寄存器的操作中,数据位表示了要读取的寄存器地址以及寄存器数量。

在写入寄存器的操作中,数据位表示了寄存器地址和要写入的值。

5. CRC校验:一个16位的循环冗余校验码,用于检测数据传输过程中是否出现错误。

发送方会计算CRC校验码并将其附加到消息的末尾,接收方在接收消息后也会重新计算CRC校验码并与接收到的校验码进行比较,如果两者不一致,则说明数据传输过程中出现了错误。

6. 通讯结束位:一个结束位用于标记通讯的结束。

通常是一个低电平信号。

总体来说,Modbus协议的格式是比较简单且易于理解的。

通过定义好的功能码和数据位,主设备可以以统一的方式与不同的从设备进行通讯,实现数据的读取和写入操作。

同时,通过CRC校验码的使用,可以有效地检测和纠正数据传输过程中的错误,提高通讯的可靠性。

需要注意的是,Modbus协议有两种常用的传输方式:串行和以太网。

串行通信是通过RS485或RS232等物理层接口进行数据传输的,而以太网通信则是通过TCP/IP协议在局域网或广域网中进行数据传输的。

不同的通信方式会影响到数据帧的封装和物理层的传输。

MODBUS-RTU通讯协议

MODBUS-RTU通讯协议

智 能 显 示 仪 表RS-485MODBUB 通讯协议(RTU)一、RTU 模式1、RTU 字节格式:每字节11位;起始位1位,数据位8位,停止位2位。

由第1位起始位,第2~9位数据位,第10~11位停止位组成,低位在前,高位在后。

2、编码系统:8位二进制。

3、波特率:9600bit/s 。

4、帧校验域:循环冗余校验(CRC),对全部报文内容执行校验。

CRC 先低位后高位,其余所发送字节时均是先高位字节后低位字节。

二、寄存器地址及定义序号寄存器地址数据含义1 0000-0002累积流量:前3个字节为累积流量16进制整数部分,后3个字节为累积流量16进制小数部分,即******.******。

2 0003-0004瞬时流量:前2个字节为瞬时流量16进制整数部分,后2个字节为瞬时流量16进制小数部分,即****.****。

三、功能代码读寄存器数据 主站请求帧: 地址 1字节功能码 1字节 0x03起始地址 2字节 0x0000~0x0005 寄存器数量 2字节 1~0x06 CRC 校验 2字节从站响应帧: 地址 1字节功能码 1字节 0x03字节数 1字节 2×N (寄存器数量) 寄存器值 2×N 字节 CRC 校验2字节四、数据格式:1、主站请求发送帧格式(上位机到仪表)。

主站发送帧为8字节。

第1字节 第2字节 第3-4字节 第5-6字节 第7-8字节仪表地址 功能码(03) 寄存器起始地址 寄存器数量2、从站响应帧格式(仪表到上位机)第1字节 第2字节 第3字节 第4-6字节 第7-9字节仪表地址 功能码(03) 发送数据字节数 累积流量(整数) 累积流量(小数) 第10-11字节 第12-13字节 第14-15字节瞬时流量(整数) 瞬时流量(小数)RS-485输出的流量数据为二进制数,累积流量的单位为m 3;瞬时流量的单位为m 3/h 。

五、示例:(假设地址为28)读寄存器数据(此例中将当前表头显示的累计流量或瞬时流量数据读出,可根据需要读出一定数量的寄存器)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Modbus通讯协议
下表是Modbus的功能格式:
1、读可读写数字量寄存器(线圈状态):
计算机发送命令:[设备地址] [命令号01] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]
例:[11][01][00][13][00][25][CRC低][CRC高]
意义如下:
<1>设备地址:在一个485总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。

例子中为想和17号(十进制的17是十六进制的11)通讯。

<2>命令号01:读取数字量的命令号固定为01。

<3>起始地址高8位、低8位:表示想读取的开关量的起始地址(起始地址为0)。

比如例子中的起始地址为19。

<4>寄存器数高8位、低8位:表示从起始地址开始读多少个开关量。

例子中为37个开关量。

<5>CRC校验:是从开头一直校验到此之前。

在此协议的最后再作介绍。

此处需要注意,CRC校验在命令中的高低字节的顺序和其他的相反。

设备响应:[设备地址] [命令号01] [返回的字节个数][数据1][数据2]...[数据n][CRC 校验的低8位] [CRC校验的高8位]
例:[11][01][05][CD][6B][B2][0E][1B][CRC低][CRC高]
意义如下:
<1>设备地址和命令号和上面的相同。

<2>返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。

<3>数据1...n:由于每一个数据是一个8位的数,所以每一个数据表示8个开关量的值,每一位为0表示对应的开关断开,为1表示闭合。

比如例子中,表示20号(索引号为19)开关闭合,21号断开,22闭合,23闭合,24断开,25断开,26闭合,27闭合...如果询问的开关量不是8的整倍数,那么最后一个字节的高位部分无意义,置为0。

<4>CRC校验同上。

2、读只可读数字量寄存器(输入状态):
和读取线圈状态类似,只是第二个字节的命令号不再是1而是2。

3、写数字量(线圈状态):
计算机发送命令:[设备地址] [命令号05] [需下置的寄存器地址高8位] [低8位] [下置的数据高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]
例:[11][05][00][AC][FF][00][CRC低][CRC高]
意义如下:
<1>设备地址和上面的相同。

<2>命令号:写数字量的命令号固定为05。

<3>需下置的寄存器地址高8位,低8位:表明了需要下置的开关的地址。

<4>下置的数据高8位,低8位:表明需要下置的开关量的状态。

例子中为把该开关闭合。

注意,此处只可以是[FF][00]表示闭合[00][00]表示断开,其他数值非法。

<5>注意此命令一条只能下置一个开关量的状态。

设备响应:如果成功把计算机发送的命令原样返回,否则不响应。

4、读可读写模拟量寄存器(保持寄存器):
计算机发送命令:[设备地址] [命令号03] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]
例:[11][03][00][6B][00][03][CRC低][CRC高]
意义如下:
<1>设备地址和上面的相同。

<2>命令号:读模拟量的命令号固定为03。

<3>起始地址高8位、低8位:表示想读取的模拟量的起始地址(起始地址为0)。

比如例子中的起始地址为107。

<4>寄存器数高8位、低8位:表示从起始地址开始读多少个模拟量。

例子中为3个模拟量。

注意,在返回的信息中一个模拟量需要返回两个字节。

设备响应:[设备地址] [命令号03] [返回的字节个数][数据1][数据2]...[数据n][CRC 校验的低8位] [CRC校验的高8位]
例:[11][03][06][02][2B][00][00][00][64][CRC低][CRC高]
意义如下:
<1>设备地址和命令号和上面的相同。

<2>返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。

例子中返回了3个模拟量的数据,因为一个模拟量需要2个字节所以共6个字节。

<3>数据1...n:其中[数据1][数据2]分别是第1个模拟量的高8位和低8位,[数据3][数据4]是第2个模拟量的高8位和低8位,以此类推。

例子中返回的值分别是555,0,100。

<4>CRC校验同上。

5、读只可读模拟量寄存器(输入寄存器):
和读取保存寄存器类似,只是第二个字节的命令号不再是2而是4。

6、写单个模拟量寄存器(保持寄存器):
计算机发送命令:[设备地址] [命令号06] [需下置的寄存器地址高8位] [低8位] [下置的数据高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]
例:[11][06][00][01][00][03][CRC低][CRC高]
意义如下:
<1>设备地址和上面的相同。

<2>命令号:写模拟量的命令号固定为06。

<3>需下置的寄存器地址高8位,低8位:表明了需要下置的模拟量寄存器的地址。

<4>下置的数据高8位,低8位:表明需要下置的模拟量数据。

比如例子中就把1号寄存器的值设为3。

<5>注意此命令一条只能下置一个模拟量的状态。

设备响应:如果成功把计算机发送的命令原样返回,否则不响应。

功能码
名称
作用
下表是Modbus支持的功能码:
01
读取线圈状态
取得一组逻辑线圈的当前状态(ON/OFF)
02
读取输入状态
取得一组开关输入的当前状态(ON/OFF)
03
读取保持寄存器
在一个或多个保持寄存器中取得当前的二进制值
04
读取输入寄存器
在一个或多个输入寄存器中取得当前的二进制值
强置单线圈
强置一个逻辑线圈的通断状态
06
预置单寄存器
把具体二进值装入一个保持寄存器
07
读取异常状态
取得8个内部线圈的通断状态,这8个线圈的地址由控制器决定
08
回送诊断校验
把诊断校验报文送从机,以对通信处理进行评鉴
09
编程(只用于484)
使主机模拟编程器作用,修改PC从机逻辑
10
控询(只用于484)
可使主机与一台正在执行长程序任务从机通信,探询该从机是否已完成其操作任务,仅在含有功能码9的报文发送后,本功能码才发送
读取事件计数
可使主机发出单询问,并随即判定操作是否成功,尤其是该命令或其他应答产生通信错误时
12
读取通信事件记录
可是主机检索每台从机的ModBus事务处理通信事件记录。

如果某项事务处理完成,记录会给出有关错误
13
编程(184/384 484 584)
可使主机模拟编程器功能修改PC从机逻辑
14
探询(184/384 484 584)
可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送
15
强置多线圈
强置一串连续逻辑线圈的通断
16
预置多寄存器
把具体的二进制值装入一串连续的保持寄存器
17
报告从机标识
可使主机判断编址从机的类型及该从机运行指示灯的状态
18
(884和MICRO 84)
可使主机模拟编程功能,修改PC状态逻辑
19
重置通信链路
发生非可修改错误后,是从机复位于已知状态,可重置顺序字节
20
读取通用参数(584L)
显示扩展存储器文件中的数据信息
21
写入通用参数(584L)
把通用参数写入扩展存储文件,或修改之
22~64
保留作扩展功能备用
65~72
保留以备用户功能所用
留作用户功能的扩展编码
73~119
非法功能
120~127
保留
留作内部作用
128~255
保留
用于异常应答
在这些功能码中较长使用的是1、2、3、4、5、6号功能码,使用它们即可实现对下位机的数字量和模拟量的读写操作。

相关文档
最新文档