Modbus标准通讯协议格式
modbus协议通讯协议
modbus协议通讯协议协议名称:Modbus协议通讯协议一、引言Modbus协议是一种用于工业自动化领域的通讯协议,用于实现不同设备之间的数据交换和通讯。
本协议旨在规范Modbus协议的通讯规则和数据格式,以确保各设备在通讯过程中能够正确地交换数据。
二、定义1. Modbus主站:指发起通讯请求的设备,负责向从站发送指令并接收从站的响应。
2. Modbus从站:指响应主站通讯请求的设备,负责接收主站的指令并返回响应数据。
三、通讯方式Modbus协议支持多种通讯方式,包括串行通讯和以太网通讯。
具体通讯方式的选择应根据实际应用场景和设备的通讯接口来确定。
四、数据格式1. Modbus协议使用16位的寄存器来表示数据,寄存器地址从0开始计数。
2. Modbus协议支持多种数据类型,包括位(Coil)、输入位(Input Coil)、寄存器(Holding Register)和输入寄存器(Input Register)。
3. 数据的读取和写入通过读写功能码来实现,具体功能码的定义如下:- 读取位:功能码0x01- 读取输入位:功能码0x02- 读取寄存器:功能码0x03- 读取输入寄存器:功能码0x04- 写入位:功能码0x05- 写入寄存器:功能码0x064. 数据的读取和写入操作可以通过单个请求实现,也可以通过多个请求分批进行。
五、通讯流程1. 主站向从站发送请求,请求包括功能码、起始地址和数据长度等信息。
2. 从站接收到请求后,根据功能码进行相应的数据读取或写入操作。
3. 从站将读取到的数据或写入操作的结果返回给主站。
4. 主站接收到从站的响应后,根据需要进行下一步的操作。
六、通讯协议1. Modbus协议使用字节顺序为大端模式(Big-Endian)。
2. 通讯数据的传输顺序为先高字节后低字节。
3. 通讯数据的校验采用CRC校验算法,具体算法如下:- 初始化CRC寄存器为0xFFFF。
- 对每个字节进行如下操作:- 将字节与CRC寄存器的低8位进行异或运算。
Modbus标准通讯协议格式
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网络协议发送出去即可。
ModBusRTU通讯协议
ModBusRTU通讯协议协议名称:ModBusRTU通讯协议一、协议概述ModBusRTU通讯协议是一种串行通信协议,用于在工业自动化领域中实现设备之间的数据交换。
本协议规定了通信的物理层、数据帧格式、功能码及其对应的数据格式,以及通信过程中的错误处理等。
二、物理层1. 通信接口:本协议使用RS485接口进行通信,支持多主机和多从机的通信方式。
2. 通信波特率:支持的通信波特率范围为9600bps至115200bps,可根据实际需求进行设置。
3. 数据位:通信数据位为8位。
4. 停止位:通信停止位为1位。
5. 校验位:通信校验位可选择为无校验、奇校验或偶校验。
三、数据帧格式1. 帧起始符:每个数据帧以一个起始符开始,起始符为一个字节,固定为0xFF。
2. 从机地址:紧随起始符之后的一个字节为从机地址,用于标识通信中的从机设备。
3. 功能码:从机地址之后的一个字节为功能码,用于指示从机设备执行的操作类型。
4. 数据域:功能码之后的数据域长度可变,根据功能码的不同而不同。
5. CRC校验码:数据域之后为两个字节的CRC校验码,用于检测数据传输过程中是否出现错误。
6. 帧结束符:每个数据帧以一个结束符结束,结束符为一个字节,固定为0x00。
四、功能码及数据格式1. 读取线圈状态(功能码:0x01)请求帧格式:[起始符][从机地址][功能码][起始地址高字节][起始地址低字节][读取数量高字节][读取数量低字节][CRC校验码][结束符]响应帧格式:[起始符][从机地址][功能码][字节数][线圈状态][CRC校验码][结束符]数据格式:线圈状态为一个字节,每个位表示一个线圈的状态(0表示OFF,1表示ON)。
2. 读取离散输入状态(功能码:0x02)请求帧格式:[起始符][从机地址][功能码][起始地址高字节][起始地址低字节][读取数量高字节][读取数量低字节][CRC校验码][结束符]响应帧格式:[起始符][从机地址][功能码][字节数][离散输入状态][CRC校验码][结束符]数据格式:离散输入状态为一个字节,每个位表示一个输入的状态(0表示OFF,1表示ON)。
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。
ModbusTCP通讯协议
ModbusTCP通讯协议协议名称:ModbusTCP通讯协议一、引言ModbusTCP通讯协议是一种用于工业自动化领域的通信协议,旨在实现不同设备之间的数据交换和通信。
本文档旨在详细描述ModbusTCP通讯协议的标准格式,包括协议的结构、消息格式、功能码、数据类型、错误处理等方面的内容。
二、协议结构ModbusTCP通讯协议采用基于TCP/IP协议的通信方式,通过以太网进行数据传输。
协议结构如下:1. 物理层:基于以太网的物理连接。
2. 数据链路层:基于TCP/IP协议的数据链路层。
3. 应用层:ModbusTCP通讯协议的应用层。
三、消息格式ModbusTCP通讯协议的消息格式如下:1. 事务标识符(Transaction Identifier):2字节,用于唯一标识一次通讯事务。
2. 协议标识符(Protocol Identifier):2字节,用于标识ModbusTCP协议。
3. 长度字段(Length Field):2字节,用于指示后续数据的长度。
4. 单元标识符(Unit Identifier):1字节,用于标识设备的地址。
5. 功能码(Function Code):1字节,用于指示消息的类型。
6. 数据域(Data Field):可变长度,包含具体的数据内容。
7. CRC校验(CRC Checksum):2字节,用于校验消息的完整性。
四、功能码ModbusTCP通讯协议定义了一系列功能码,用于指示消息的类型和操作。
常用的功能码包括:1. 读取线圈状态(Read Coils):用于读取设备的线圈状态。
2. 读取输入状态(Read Discrete Inputs):用于读取设备的输入状态。
3. 读取保持寄存器(Read Holding Registers):用于读取设备的保持寄存器。
4. 读取输入寄存器(Read Input Registers):用于读取设备的输入寄存器。
5. 写单个线圈(Write Single Coil):用于写入设备的单个线圈状态。
ModBus 通讯协议
1、数据帧基本形式:
设备地址
功能码
数据
效验码
8-Bits
8-Bits
N * 8-Bits
16-Bits
2、设备地址:为保护装置的通讯地址ID号。
3、功能码列表:
功能码
含义
注释
03H
读遥测量
读采样值
02H要遥信
05H遥控
04H SOE数据
06H设置通播校时
4、效验码:
5、上下位机的通讯帧:
上来
01 02 02 00 01 78 78 /*因为只要了0X0A个,所以上来两字节就够了0X0001里面包含了16个遥信了*/
解释:
为要遥信量,要了0xA=10个遥信量,但是实际上遥信量一个装置最多就64个,一个字节就能包含8个遥信量。F80D为CRC校验,不用管,程序里不检测。01为保护装置的通讯地址;
·上位机要求数据格式举例
设备地址
功能码
数据起始地址(HI)
数据起始地址(LO)
数据字节数(HI)
数据字节数(LO)
CRC16(LO)
CRC16(HI)
00H
01H
00H
00H
00H
01H
FCH
1BH
·下位机回应数据格式举例
设备地址
功能码
字节数
数据
CRC16
CRC16
00H
01H
01H
02H
D4H
89H
字节计数
数据
校验和CRC
01H
03H
08H
00 00 01 30 0000 f964
97H B9H
00 00 01 30为有功电度数据(除以100为真实值)
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 ’表示地址和数据项,即最高有效字节在低地址存储,最低有效字节在高字节存储。
modbus协议各表详细说明
10 指令发送数据格式举例为:
发送数据 01
10
0000
0002
04
0000 0000
CRC
含义
地址
连续下写 连续下写 总字节 指令
的首地址 数据个数 数据个数×2
下写的数据
校验码
—1—
各型号仪表详细说明 XM708 XM708P XM808/908 XM808P/908P XMH XMT XMG/XMG-M
警不存在,为 1 表示报警成立。
7
6
5
4
3
2
1
0
0
0
0
0
AL4 报警 AL3 报警 AL2 报警 AL1 报警
—8—
XMG/XMG-M
1、03 指令参数地址 参数名 AL1 AL2 AL3 AL4 dLY1 dLY2 dLY3 dLY4 Alo1 Alo2 Alo3 Alo4 dF1 dF2 dF3 dF4 PF CHO Bout Loc1 Addr bAud Sn dip
diP
小数点位置
diL
下限显示限值
0BH
CSC
冷端补偿参数
1BH
0CH
SF
超调抑制参数
1CH
0DH
SVL
给定值下限限定
1DH
diH
上限显示限值
Sc
平移修正参数
0EH
SVH
给定值上限限定
1EH
10H
曲线运行状态
16H
(2)曲线设置参数
参数
参数含义
通讯地址
C01
第一段曲线的设定值
1BH
T01
第一段曲线的运行时间
参数含义 平移修正参数 控制输出方式 控制输出下限 控制输出上限 报警输出定义参数 正反作用选择
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通讯协议是一种在工业领域广泛使用的通信协议,用于在设备之间传输数据。
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通信协议的详解。
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通讯协议,校验采用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通讯协议格式详解Modbus是一种常用的通讯协议,广泛应用于工业自动化领域。
它是一种主从式通信协议,简单易懂,方便实用。
本文将详细介绍Modbus通讯协议的格式及其相关内容。
一、Modbus协议简介Modbus协议是由Modicon(一家法国自动化制造公司)于1979年开发的,用于PLC(可编程逻辑控制器)与外部设备之间的通信。
它具有开放性、简单性和可靠性等特点,逐渐成为工业自动化领域最重要的通讯协议之一。
二、Modbus通信架构Modbus通信架构主要分为两种模式:串行通信模式和以太网通信模式。
其中,串行通信模式包括RS-232、RS-485、RS-422等,常用于较短距离的通信;以太网通信模式则使用TCP/IP协议,可实现远程通信。
三、Modbus数据格式Modbus通信协议采用了简洁明了的二进制数据格式,分为查询报文和响应报文。
1. 查询报文格式Modbus查询报文包含了多个字段,包括从站地址、功能码、数据起始地址、数据数量、CRC校验等。
- 从站地址:标识通信中的设备或模块。
- 功能码:定义了读取或写入操作的种类。
- 数据起始地址:指定要读取或写入的数据在从站中的起始位置。
- 数据数量:指定要读取或写入的数据的个数。
- CRC校验:用于校验报文的完整性。
2. 响应报文格式Modbus响应报文与查询报文的格式类似,但会包含更多的字段,如错误码、数据内容等。
四、Modbus功能码详解Modbus功能码定义了读取或写入操作的种类,主要包括读读取线圈状态、读取输入状态、读取保持寄存器、读取输入寄存器、写单个线圈、写单个寄存器等。
其中,读取线圈状态和读取输入状态对应的功能码分别为01和02;读取保持寄存器和读取输入寄存器对应的功能码分别为03和04;写单个线圈和写单个寄存器对应的功能码分别为05和06。
此外,还有一些其他的功能码,用于读写多个寄存器等操作。
五、Modbus通信流程Modbus通信流程较为简单,一般包括以下几个步骤:1. 主站发送查询报文给从站;2. 从站收到查询报文后,进行相应的处理;3. 从站将处理结果封装成响应报文,发送给主站;4. 主站收到响应报文后,解析出结果,并进行相应的处理。
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通讯协议是一种用于工业自动化领域的通信协议,它允许不同设备之间进行数据交换。
本协议旨在规范Modbus通讯协议的格式和规则,确保各设备之间能够正确地进行数据通信。
二、协议概述Modbus通讯协议采用主从结构,其中主机负责发送请求,从机负责响应请求。
协议支持多种数据类型和功能码,包括读取和写入寄存器、读取和写入线圈等。
通信方式可以是串行或以太网。
三、协议格式1. 物理层Modbus通讯协议可以在串行通信和以太网通信中使用。
- 串行通信:使用RS-232、RS-485等串行接口,通信速率可根据实际需求进行配置。
- 以太网通信:使用TCP/IP协议栈,通信速率可根据网络带宽进行配置。
2. 数据帧格式Modbus通讯协议采用二进制数据帧格式,每个数据帧由多个字节组成。
- 串行通信数据帧:起始位(1位) + 数据位(8位) + 奇偶校验位(1位) + 停止位(1位)- 以太网通信数据帧:TCP/IP数据报文格式3. 寄存器地址Modbus通讯协议中的寄存器地址用于标识设备中的不同数据寄存器或线圈。
- 线圈地址:0x0000 - 0xFFFF- 输入寄存器地址:0x0000 - 0xFFFF- 保持寄存器地址:0x0000 - 0xFFFF- 输入状态地址:0x0000 - 0xFFFF4. 功能码Modbus通讯协议定义了多种功能码,用于不同的操作类型。
- 读取线圈状态:功能码0x01- 读取输入状态:功能码0x02- 读取保持寄存器:功能码0x03- 读取输入寄存器:功能码0x04- 写单个线圈:功能码0x05- 写单个保持寄存器:功能码0x06- 写多个线圈:功能码0x0F- 写多个保持寄存器:功能码0x10四、协议规则1. 请求与响应- 请求帧:主机发送请求帧给从机,包含功能码、起始地址和数据长度等信息。
- 响应帧:从机接收请求帧后,根据功能码执行相应操作,并将结果封装到响应帧中发送给主机。
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,给变频器发正转命令。
ModBusRTU通讯协议
ModBusRTU通讯协议协议名称:ModBusRTU通讯协议一、引言ModBusRTU通讯协议是一种用于串行通信的通信协议,常用于工业自动化领域。
本协议旨在规定ModBusRTU通讯协议的标准格式,以确保设备之间的通信能够准确、高效地进行。
二、协议结构ModBusRTU通讯协议采用了简单的主从结构,其中包括主站(Master)和从站(Slave)。
主站负责发起通信请求,而从站则负责响应主站的请求。
三、协议帧格式ModBusRTU通讯协议的帧格式如下:1. 起始位(Start Bit):占据一个字节的最低位,用于标识一个帧的开始。
2. 地址位(Address):占据一个字节,用于标识从站的地址。
3. 功能码(Function Code):占据一个字节,用于标识主站请求的功能。
4. 数据域(Data Field):占据可变长度的字节,用于传输数据。
5. 校验位(Checksum):占据两个字节,用于校验帧的完整性。
6. 停止位(Stop Bit):占据一个字节,用于标识一个帧的结束。
四、功能码ModBusRTU通讯协议定义了一系列功能码,用于标识主站请求的功能。
以下为常用的功能码:1. 读取线圈状态(Read Coil Status):用于读取从站的线圈状态。
2. 读取输入状态(Read Input Status):用于读取从站的输入状态。
3. 读取保持寄存器(Read Holding Registers):用于读取从站的保持寄存器。
4. 读取输入寄存器(Read Input Registers):用于读取从站的输入寄存器。
5. 强制单线圈(Force Single Coil):用于强制从站的单线圈状态。
6. 预置多个寄存器(Preset Multiple Registers):用于预置从站的多个寄存器。
五、通信流程ModBusRTU通讯协议的通信流程如下:1. 主站向从站发送请求帧,包括从站地址、功能码和数据域。
modbus协议各表详细说明
1CH
…… T10
第十段曲线的运行时间
(3)曲线运行状态参数地址:16H,将此数据转换为二进制格式,共有 16 位(0~15),其中的 2、3
位用于曲线的 Stop/Run/Hold 控制
运行状态
Stop
Hold
Run
数据位数
2
1
1
0
3
1
0
0
2、04 指令参数地址
地址
00H
01H
02H
03H
04H
05H
Modbus 通讯协议说明
Modbus 通讯协议介绍
仪表可以采用 Modbus-RTU 模式进行上位机通讯,协议格式为:8 个数据位、1 个停止位、无校验
位,发送接收数据都是以十六进制格式进行。
1、发送数据格式:
发送字节
1
2
3
4
5
6
7
含义
地址
读/写
A1
A2
A3
A4
CRC
仪表地址 03H,04H,06H
仪表通讯波特率
/
dF
报警回差
05H
dL
输入数字滤波
17H
oPAd
PID 控制方式
06H
mAn
运行状态
18H
P
速率参数
07H
Loc
参数密码锁
19H
I
保持参数
08H
SET1~8
现场参数 1~8
/
dt
滞后时间参数
09H
CSC
热电偶冷端修正
81H
T
控制周期
0AH
SF
超限抑制参数
82H
三种标准MODBUS通信协议说明书
三种标准MODBUS协议说明书一.我公司现有产品中需要和组态软件进行通信的有三种产品:①总线探头②风速仪③控制器主机。
三种产品分别使用了三种不格式的MODBUS协议。
但是其都符合MODBUS的通信格式:1.1接口标准:接口标准:TIA/EIA-485硬件连接:2线模式(非4线模式)1.2通讯格式:传输方式是指一个数据帧内一系列独立的数据结构以及用于传输数据的有限规则,下面定义了与MODBUS 协议RTU方式相兼容的传输方式。
每个字节的位:•1个起始位•8个数据位(低有效位在前)•无奇偶校验位•1个停止位错误检测(Error checking):CRC(循环冗余校验)1.3通讯速率:9600bps。
1.4通讯方式:主从方式。
1.5 要求通信波特率可以从9600 4800 1200 600中任意选择。
二.总线探头通信格式说明2.1主机发送格式地址编码功能码寄存器地址数据个数CRC高位CRC低位Address Function AddrH AddrL NumH NumL CRCH CRCL 2.2从机应答格式地址编码功能码字节数数据CRC高位CRC低位CRCH CRCL Address Function byte Data0H,Data0L………………………………………………………. DataNH,DataNL2. 3 格式说明实例假设总线探头地址为01 探头采用值为1 组态软件发送数据:01 03 00 65 00 01 CRCL CRCH探头返回数据:01 03 02 00 01 CRCL CRCH三.风速仪通信格式说明3.1主机发送格式从机地址功能代码寄存器的高位地址寄存器的低位址寄存器的高位数值寄存器的低位数值CRC高位CRC低位Address Function AddrH AddrL NumH NumL CRCH CRCL3.2 从机应答格式地址编码功能码字节数数据CRC高位CRC低位Address Function byte Data0H,Data0L………………………………………………………. DataNH,DataNLCRCH CRCL3. 3 格式说明实例假设风速仪地址为01 探头采用值为1组态软件发送数据:01 04 00 06 00 01 CRCL CRCH探头返回数据:01 04 02 00 01 CRCL CRCH四.总线主机通信格式2.1 PC机发送格式地址编码功能码寄存器的高位地址寄存器的低位址起始地址高8位起始地址低8位读取点数高8位读取点数低8位CRC高位CRC低位Addre ss Fun AddrH AddrL AddrHAddrLNumHNumLCRCH CRCL2.2从机应答格式地址编码功能码字节数数据CRC高位CRC低位Address Fun byte Data0……….DataN CRCH CRCL 前八通道为模拟通道后面的48个通道为模拟通道。
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协议在局域网或广域网中进行数据传输的。
不同的通信方式会影响到数据帧的封装和物理层的传输。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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号功能码,使用它们即可实现对下位机的数字量和模拟量的读写操作。