MODBUS_RTU通信协议_
MODBUS-RTU通信协议规定Z

你MODBUS-RTU通信协议规定
泽宏电子13-11-08
1.物理设置
(1)数据格式:1位起始位+8位数据位+1位停止位
(2)波特率:4800bps(可设置)
2.通讯规约
数据查询命令:
(1)地址:控制器地址(可设置)
(2)功能码:0x03
(3)寄存器地址:
寄存器首地址为0x0000(必须从0x0000开始)
(4)长度:2个字节,是所要查询探测器个数的2倍
(5)CRC校验:2个字节
控制器返回值:
(1)地址:1个字节,控制器地址
(2)功能码:0x03
(3)长度:返回的数据长度
(4)数据位:4*N个字节,每四个字节4分别为地址码高位,地址码低位,浓度高位,浓度低位,(N为返回的探测器个数)
(5)CRC校验:2个字节
通讯举例:
数据查询命令:
01 03 00 00 00 0A XX XX
第一字节01为控制器地址;
第二字节03为功能码;
第三,四字节00 00 为寄存器首地址
第五,六字节00 0A 为长度,是所要查询探测器个数的2倍,0x000A即表示要查5个探测器的数据;
第七,八字节XX XX 为两字节的CRC校验;
控制器返回值:
01 03 14 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 XX XX
第一字节为控制器地址;
第二字节为功能码;
第三字节为数据返回长度;
中间黄色数据为探测器数据,依次为5个探测器的地址和浓度值,地址与浓度值各占2个字节;
最后两个字节为CRC校验;。
ModBusRTU通讯协议

ModBusRTU通讯协议协议名称:ModBusRTU通讯协议1. 引言ModBusRTU通讯协议是一种常用于工业自动化领域的通信协议,用于在不同设备之间进行数据交换和通信。
本协议旨在确保设备之间的稳定通信,并规定了数据帧的格式、通信规范和错误处理机制,以实现可靠的数据传输。
2. 协议范围本协议适用于使用ModBusRTU通信协议的设备之间的数据交换和通信。
3. 术语和定义3.1. 主站:指发送请求的设备。
3.2. 从站:指接收请求并响应的设备。
3.3. 数据帧:指在ModBusRTU通信协议中传输的数据单元。
4. 数据帧格式4.1. 传输模式ModBusRTU通信协议使用串行通信模式,每个数据帧由一系列连续的位组成。
4.2. 起始位每个数据帧以一个起始位(逻辑“0”)开始。
4.3. 设备地址设备地址用于标识从站设备,占用8位,取值范围为1-247。
功能码用于指示请求的类型,占用8位,取值范围为1-255。
4.5. 数据数据字段用于传输具体的数据信息,占用8位或16位,具体长度由功能码决定。
4.6. 校验位校验位用于验证数据的完整性和准确性,采用CRC校验算法。
4.7. 结束位每个数据帧以一个结束位(逻辑“1”)结束。
5. 通信规范5.1. 请求帧主站发送请求帧给从站,请求帧包括设备地址、功能码、数据和校验位。
5.2. 响应帧从站接收到请求帧后,根据功能码进行相应的处理,并返回响应帧给主站,响应帧包括设备地址、功能码、数据和校验位。
5.3. 帧间间隔每个数据帧之间应有适当的时间间隔,以确保设备能够正确接收和处理数据。
5.4. 重试机制如果主站未收到从站的响应帧或者接收到的响应帧出现错误,主站可以根据需要进行重试。
6.1. 异常响应如果从站无法正确处理主站的请求,从站应发送一个异常响应帧给主站,异常响应帧包括设备地址、功能码和错误码。
6.2. 错误码错误码用于指示出现的错误类型,常见的错误码包括非法功能码、非法数据地址、非法数据值等。
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通讯协议

要实现Modbus RTU通信,一、需要STEP 7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP 7-Micro/WIN32 V3.2 Instruction Library(指令库)。
Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。
Modbus RTU从站指令库只支持CPU上的通信0口(Port0)基本步骤:1. 检查Micro/WIN的软件版本,应当是STEP 7-Micro/WIN V3.2以上版本。
2. 检查Micro/WIN的指令树中是否存在Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。
如果没有,须安装Micro/WIN32 V3.2的Instruction Library(指令库)软件包;1. 西门子编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。
关于参数的详细说明,可在子程序的局部变量表中找到;调用Modbus RTU通信指令库图中参数意义如下:a. 模式选择:启动/停止Modbus,1=启动;0=停止b. 从站地址:Modbus从站地址,取值1~247c. 波特率:可选1200,2400,4800,9600,19200,38400,57600,115200d. 奇偶校验:0=无校验;1=奇校验;2=偶校验e. 延时:附加字符间延时,缺省值为0f. 最大I/Q位:参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128g. 最大AI字数:参与通信的最大AI通道数,可为16或32h. 最大保持寄存器区:参与通信的V存储区字(VW)i. 保持寄存器区起始地址:以&VBx指定(间接寻址方式)j. 初始化完成标志:成功初始化后置1k. 初始化错误代码l. Modbus执行:通信中时置1,无Modbus 通信活动时为0。
MODBUS-RTU 协议

MODBUS-RTU协议1.数据格式说明1、1通讯模式本仪表采用MODBUS RTU格式。
协议用于主从查询模式,进行数据通讯。
通讯流程如下图。
在RTU模式下,数据格式说明如下。
1、2数据格式数据格式为n,8,1(1个起始位、8个数据位、无校验、1个停止位)波特率可选五种,1200、2400、4800、9600、19200其中:T1、T2、T3、T4为每帧之间的时间间隔,两帧之间的传输必须大于间隔时间。
1、3地址协议中规定仪表的地址为“01-99”,“0”地址用于广播,本协议不支持广播,其余地址保留。
2.命令说明2.1 本仪表使用了MODBUS协议中3条指令:2.2 数据格式协议中的数据包括:16进制数、整数、BCD码、浮点数寄存器地址下列表中的属性指数据的读写属性,R-只读;W-写;R/W-既可读,也可写入。
30-23位,一共8位是阶码;22-0位,一共23位是尾数。
●BCD码格式有两种:格式1:4字节BCD编码,数据低→高,如数据20100617,表示为4字节格式2: (内部应用)6字节BCD编码,表示固定小数点的数据,数据低→高,如12345.678表示为6字节●无符号整数Uint为0-65536。
各指令的格式及示例见下面的说明。
3.数据项定义记录信息表4.版本5.参考Modicon-Modbus Protocol Reference Guide (PI-MBUS-300);REV J;June,1996 6.自定义RS485通讯协议通讯线路:采用RS485数据通讯线路,半双工通讯通讯协议:(1200 2400 4800 9600 19200),NONE/0DD/EVEN,8位数据,1停止位一、读瞬时流量、累积流量1.主机命令格式2.设备回应格式注:流量计返回数据格式定义:瞬时流量: xxxxxxx 7字节m3/h累积流量: xxxxxxxxxxx 11字节m3读流量数据举例(以下数据均为十六进制):指令包: 5a 包头32 34 流量计485地址返回包: 3d 包头32 34 流量计485地址31 32 33 2e 34 35 36 瞬时流量=123.456 m3/h20 20 20 20 20 31 32 33 34 2e 35 累积流量=1234.5 m33d 3h 累加和高位、累加和低位ff 结束符二、设置参数(一)指令包:1.补偿系数单位注:补偿系数单位可设置为1/2/3,对应指令第4字节分别是31/32/33。
ModBusRTU通讯协议

ModBusRTU通讯协议协议名称:ModBusRTU通讯协议一、引言ModBusRTU通讯协议是一种基于串行通信的通讯协议,用于在工业自动化领域中实现设备之间的数据交互。
本协议旨在规范ModBusRTU通讯协议的格式、数据传输方式、命令与响应规则等,以确保通讯的稳定性和可靠性。
二、协议结构ModBusRTU通讯协议采用了一种简单的主从结构,其中包括一个主站和多个从站。
主站负责发送命令并接收从站的响应,而从站则负责接收命令并向主站发送响应。
三、数据格式1. 帧格式ModBusRTU通讯协议的数据帧由以下几个部分组成:- 起始位:一个起始位,用于标识数据帧的开始。
- 地址位:一个地址位,用于标识从站的地址。
- 功能码:一个功能码,用于标识命令的类型。
- 数据位:一个或多个数据位,用于传输命令或响应的数据。
- 校验位:一个校验位,用于验证数据的完整性。
- 结束位:一个结束位,用于标识数据帧的结束。
2. 数据类型ModBusRTU通讯协议支持多种数据类型,包括位(Coil)、输入位(Input Coil)、寄存器(Holding Register)和输入寄存器(Input Register)。
每种数据类型都有对应的读取和写入命令。
四、命令与响应规则1. 读取命令主站可以发送读取命令来获取从站的数据。
读取命令的格式如下:- 从站地址:一个字节,用于指定要读取数据的从站地址。
- 功能码:一个字节,用于指定读取命令的功能码。
- 起始地址:两个字节,用于指定要读取数据的起始地址。
- 数据长度:两个字节,用于指定要读取的数据长度。
- 校验码:两个字节,用于验证命令的有效性。
2. 写入命令主站可以发送写入命令来向从站写入数据。
写入命令的格式如下:- 从站地址:一个字节,用于指定要写入数据的从站地址。
- 功能码:一个字节,用于指定写入命令的功能码。
- 起始地址:两个字节,用于指定要写入数据的起始地址。
- 数据长度:两个字节,用于指定要写入的数据长度。
MODBUS-RTU协议

MODBUS-RTU协议1.数据格式说明1、1通讯模式本仪表采用MODBUS RTU格式。
协议用于主从查询模式,进行数据通讯。
通讯流程如下图。
在RTU模式下,数据格式说明如下。
1、2数据格式数据格式为n,8,1(1个起始位、8个数据位、无校验、1个停止位)波特率可选五种,1200、2400、4800、9600、19200其中:T1、T2、T3、T4为每帧之间的时间间隔,两帧之间的传输必须大于间隔时间。
1、3地址协议中规定仪表的地址为“01-99”,“0”地址用于广播,本协议不支持广播,其余地址保留。
2.命令说明命令03(HEX)读单个或多个寄存器命令06(HEX)写单个寄存器此命令包含在“命令10”中命令10(HEX)写多个寄存器此命令包含“命令6”2.2 数据格式协议中的数据包括:16进制数、整数、BCD码、浮点数寄存器地址下列表中的属性指数据的读写属性,R-只读;W-写;R/W-既可读,也可写入。
单精度浮点数SINGLE格式为IEEE754,数据由低到高。
32位浮点数共计32位,折合4字节。
由最高到最低位分别是第31、30、29、……、0位。
31 30-23 22-0S 阶码尾数31位是符号位(S),1表示该数为负,0反之;30-23位,一共8位是阶码;22-0位,一共23位是尾数。
●BCD码格式有两种:格式2: (内部应用)6字节BCD编码,表示固定小数点的数据,数据低→高,如小数点默认为第9位数的后面。
●无符号整数Uint为0-65536。
各指令的格式及示例见下面的说明。
错误响应举例3.数据项定义记录信息表4.版本5.参考Modicon-Modbus Protocol Reference Guide (PI-MBUS-300);REV J;June,1996 6.自定义RS485通讯协议通讯线路:采用RS485数据通讯线路,半双工通讯通讯协议:(1200 2400 4800 9600 19200),NONE/0DD/EVEN,8位数据,1停止位读瞬时流量、累积流量1.主机命令格式2.设备回应格式注:流量计返回数据格式定义:瞬时流量: xxxxxxx 7字节累积流量: xxxxxxxxxxx 11字节读流量数据举例(以下数据均为十六进制):指令包: 5a 包头32 34 流量计485地址返回包: 3d 包头32 34 流量计485地址31 32 33 2e 34 35 36 瞬时流量=123.456 m3/h 20 20 20 20 20 31 32 33 34 2e 35 累积流量=1234.5 m303 d3 累加和高位、累加和低位ff 结束符。
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协议规范和设备文档。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MODBUS RTU通信协议
本通信协议采用标准ModBus协议,采用RTU(十六进制数)传输模式。
ModBus协议是一种主---从式协议。
任何时刻只有一个设备能够在线路上进行发送。
由主站管理信息交换,且只有主站能发起。
主站会依次对从站进行轮流查询。
只有当从站地址与轮询地址相匹配,从站才能回复消息。
从站之间不能进行直接通信。
协议桢中不包含任何消息报头及消息结束符,消息的开始和结束依靠间隔时间来识别,当间隔时间长于或等于3.5个字符时,即作为检测到桢结束。
如果网络内没有与查询地址相一致的从站或从站接收时CRC校验出错,主站将不会接收到返回桢,这时主站根据超时设定判断是否超时,如超时,作出重发或弹出异常错误窗口动作。
协议桢定义如下:
从站地址功能代码数据区CRC16
从站地址:地址必须在1---247之间。
在同个主站网络中每个从站地址必须唯一。
设定仪表二级参数DE。
功能代码:包含读、写多个寄存器。
数据:以二进制代码传输。
CRC16:循环冗余校验,校验从从站地址到数据区最后一个字节,计算多项式码为A001(hex)。
通讯口设置
通讯方式异步串行通讯接口,如RS-485,RS-232,RS-422等
波特率1200~9600bps(可由设定仪表二级参数自由更改,设定仪表二级参数BT,默认9600)见表10 字节数据格式 HEX
. 一位起始位
. 八位数据位
. 一位停止位
. 无校验
起始位数据位(从低到高)停止位
消息桢格式(读、写功能是从主站角度定义的)
读寄存器桢
读寄存器返回桢
写寄存器桢
写寄存器返回桢
错误返回桢
功能代码表:1
错误代码表:2
寄存器
0x03,0x10命令对应的保持寄存器地址表,MODBUS地址40001 对应于寄存器地址0。
所以MODBUS上面传输的地址应该是寄存器地址+ 40001。
每个通道的起始地址为40001
注:1. 继电器在低危险报警浓度和高危险报警浓度都工作。
2.必须在控制器上面使用 1066 的指令来读取所有探头的高低报警数值,MODBUS里面的低危险报警值和低危险报警值,以及报警状态才能有正确的数值反馈。
3.在读取数据的时候,建议先读取连接状态,判断探头是否在线,然后再读取其他数据。
气体名称
#define GAS_O2 0x01
#define GAS_EX 0x02
#define GAS_CO 0x03
#define GAS_H2S 0x04
#define GAS_SO2 0x05
#define GAS_NO 0x06
#define GAS_NO2 0x07
// 0x08
#define GAS_CL2 0x08
#define GAS_NH3 0x09
#define GAS_H2 0x0A
#define GAS_HCN 0x0B
#define GAS_PH3 0x0C
#define GAS_O3 0x0D
#define GAS_CLO2 0x0E
#define GAS_C2H4O 0x0F
// 0x10
#define GAS_CH2O 0x10
#define GAS_SIH4 0x11
#define GAS_HF 0x12
#define GAS_F2 0x13
#define GAS_COCL2 0x14
#define GAS_CO2 0x15
#define GAS_SO2F2 0x16
#define GAS_C2H2 0x17
#define GAS_CH4O 0x18
// 0x18
#define GAS_N2 0x19
#define GAS_C6H6 0x1A
#define GAS_VOC 0x1B
#define GAS_HCL 0x1C
#define GAS_THT 0x1D
#define GAS_C2H4 0x1E
#define GAS_CH3BR 0x1F
#define GAS_CH4 0x20
#define GAS_NOX 0x21 #define GAS_SF6 0x22 #define GAS_B2H6 0x23 #define GAS_ASH3 0x24 #define GAS_C2H6O 0x25。