(完整版)MODBUS通讯协议-RTU要点

合集下载

ModBusRTU通讯协议

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通讯协议一、协议概述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通讯协议

要实现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 协议

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。

Modbus通讯协议RTUASCIITCP详细介绍完整版

Modbus通讯协议RTUASCIITCP详细介绍完整版

M o d b u s通讯协议R T U A S C I I T C P详细介绍集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]Modbus通讯协议RTU ASCII TCP详细介绍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_RTU通讯协议

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为阶码。

MODBUS-RTU协议

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 结束符。

ModBusRTU通讯协议

ModBusRTU通讯协议

ModBusRTU通讯协议协议名称:ModBus RTU通讯协议一、引言ModBus RTU通讯协议是一种用于串行通信的协议,广泛应用于工业自动化领域。

本协议旨在规范ModBus RTU通讯协议的格式和规则,以确保设备之间能够正常、高效地进行通信。

二、协议结构ModBus RTU通讯协议采用了简单、轻量级的结构,由三个主要部分组成:帧头、数据区和帧尾。

1. 帧头帧头由两个字节组成,分别为设备地址(1字节)和功能码(1字节)。

设备地址用于标识通信的目标设备,功能码用于指示通信的具体操作类型。

2. 数据区数据区包含了具体的通信数据,其长度根据不同的功能码而不同。

数据区的内容可以是读取的寄存器值、写入的寄存器值等。

3. 帧尾帧尾由两个字节组成,分别为CRC校验码(2字节)。

CRC校验码用于验证数据的完整性和准确性。

三、通信规则ModBus RTU通讯协议遵循以下通信规则:1. 设备地址通信的目标设备由设备地址进行标识,设备地址范围为0-247。

其中,0为广播地址,用于向所有设备发送命令。

2. 功能码功能码用于指示通信的具体操作类型,范围为1-255。

常用的功能码包括读取保持寄存器(03H)、写入单个保持寄存器(06H)等。

3. 数据格式ModBus RTU通讯协议使用二进制格式进行数据传输。

数据区的内容根据不同的功能码而不同,可以是16位的寄存器值、8位的开关状态等。

4. 帧格式帧格式包括帧头、数据区和帧尾。

帧头由设备地址和功能码组成,数据区包含具体的通信数据,帧尾包含CRC校验码。

5. CRC校验CRC校验码用于验证数据的完整性和准确性。

接收方在接收到数据后,通过计算CRC校验码与接收到的校验码进行比较,以判断数据是否正确。

四、通信流程ModBus RTU通讯协议的通信流程如下:1. 主设备发送请求主设备向从设备发送请求,请求包括设备地址、功能码和相关参数。

2. 从设备响应请求从设备接收到请求后,根据功能码执行相应的操作,并将执行结果返回给主设备。

(完整版)MODBUS通讯协议-RTU要点

(完整版)MODBUS通讯协议-RTU要点

Modbus 通讯协议(RTU传输模式)本说明仅做内部参考,详细请参阅英文版本。

第一章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(循环冗长检测)11.2协议当信息帧到达终端设备时,它通过一个简单的“口”进入寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。

ModBusRTU通讯协议

ModBusRTU通讯协议

ModBusRTU通讯协议协议名称:ModBusRTU通讯协议一、引言ModBusRTU通讯协议是一种常用的串行通信协议,用于在工业自动化领域中实现设备之间的数据交换。

该协议基于RTU(Remote Terminal Unit)模式,通过串行通信接口传输数据。

本协议旨在规范ModBusRTU通讯协议的格式、数据类型、通信方式等方面的内容,以确保设备之间的数据交换的准确性和可靠性。

二、协议格式1. 物理层ModBusRTU通讯协议使用RS485串行通信接口,支持全双工通信。

通信速率可根据实际需求设置,常见的速率有9600、19200、38400、57600和115200等。

2. 数据帧格式ModBusRTU通讯协议使用二进制方式传输数据,每个数据帧包含以下几个部分:- 起始位:由一个高电平信号表示,用于同步通信双方的时钟。

- 地址位:一个字节,用于标识通信的从站地址。

范围为1-247,其中1为广播地址。

- 功能码:一个字节,用于标识通信的功能类型。

常见的功能码有读取线圈状态、读取输入状态、读取保持寄存器、读取输入寄存器、写单个线圈、写单个寄存器等。

- 数据域:根据功能码的不同,数据域的长度也不同。

数据域包含要读取或写入的数据。

- CRC校验:用于校验数据的完整性。

3. 数据类型ModBusRTU通讯协议支持多种数据类型,包括线圈状态(Coil Status)、输入状态(Input Status)、保持寄存器(Holding Register)和输入寄存器(Input Register)等。

每种数据类型都有对应的读取和写入功能码。

4. 通信方式ModBusRTU通讯协议支持主从模式的通信方式。

主站负责发起通信请求,从站负责响应请求并返回数据。

主站可以向多个从站发送请求,每个从站根据地址进行识别并响应相应的请求。

三、通信流程1. 主站发送请求主站发送请求的数据帧包含从站地址、功能码、数据域和CRC校验。

MODBUS_RTU 通讯协议(PID控制仪)

MODBUS_RTU 通讯协议(PID控制仪)

MODBUS_RTU 通讯协议1、数据传输格式:1位起始位、8位数据位、1位停止位、无奇偶校验位。

2、仪表数据格式:2字节寄存器值=寄存器数高8位二进制数+寄存器低8位二进制数3、仪表通讯帧格式:读寄存器命令格式:1 2 3 4 5 6 7~8 DE 3 起始寄存器高位起始寄存器低位寄存器数高位寄存器数低位CRC 应答:1 2 3 4~5 6~7 …M*2+2~M*2+3 M*2+4~M*2+5 DE 3 字节计数M*2 寄存器数据1 寄存器数据2…寄存器数据M CRC 写寄存器命令格式1 2 3 4 5 6 7~8 DE 6 起始寄存器高位起始寄存器低位数据高位数据低位CRCDE: 设备地址 (1~200)单字节CRC: 校验字节 采用CRC-16循环冗余错误校验举例说明:(以PID控制仪为例)MODBUS_RTU 通讯协议(十进制格式)以实际通讯数据内容为准发送:1, 3, 0, 0, 0, 16, 68, 6,回收:01, 03 ,32, 00 ,00 ,14,00,00,00 ,01 ,00, 250 ,128 ,00 ,00 ,00 ,00 ,19, 00, 244, 01, 00, 00,08 ,255, 01 ,00 ,00 ,00 ,01, 00, 01,00 ,00 ,00 ,166 ,34仪表动态数据格式编号参数名称数据格式地址备注1 保留单字节定点数 00002 E2PROM参数修改标志单字节定点数 00013 仪表类型单字节定点数 00024 手自动状态单字节定点数 0003保留参数5 运行段数单字节定点数 00046 实时测量值三字节定点数 00057 第二输入值三字节定点数 00078 SV设定值三字节定点数 00099 PID输出三字节定点数 000B10 第一报警状态单字节定点数 000D11 第二报警状态单字节定点数 000E仪表内部参数所对应地址编号参数名称数据格式地址备注比例带双字节定点数 100A1 P2 I 积分时间双字节定点数 100C3 D 微分时间双字节定点数 100E4 SV控制目标值双字节定点数 102C。

MODBUS-RTU通讯协议

MODBUS-RTU通讯协议

MODBUS-RTU 通讯协议MODBUS-RTU 通讯协议采用主从应答方式(半双工),由主机发出指令寻址某一从机,被寻址的从机响应并返回应答信息。

一、通讯格式1.1 传输格式信息传输为异步方式,并以字节为单位(LSB 先),在主机和从机之间传递的通讯信息是11位的字格式。

有校验位(奇偶校验)的传输序列:1个起始位、8个数据位、1个校验位、1个停止位。

无校验位的传输序列:1个起始位、8个数据位、2个停止位。

1.2 帧格式一个新的通讯信息帧开始之前,通讯总线应存在不小于 3.5字节的间歇时间,通讯开始之后,每两个字节之间应不大于1.5字节的间歇时间。

二、通讯信息帧说明主机寻址某一从机时,与主机发送的地址码相符的从机接收通讯命令,如果CRC 校验无误,则执行相应的操作,然后把执行结果(数据)回送给主机,否则不返回任何信息。

2.1 地址码地址码是通讯信息帧的第1个字节,从0到247(0为广播地址)。

每个从机应该有总线内唯一的地址码,只有与主机发送的地址码相符的从机才能响应并回送信息。

2.2 功能码功能码是通讯信息帧的第2个字节。

主机寻址某一从机时,通过功能码告诉从机执行什么操作。

从机返回的功能码与主机发送的功能码一致表明从机已正确执行了相关操作。

从机支持以下功能码:2.3 数据区数据区的长度和内容随功能码不同而不同,用于主机和从机以读写寄存器的方式进行数据交换。

产品使用说明书中给出了具体的通讯信息表(参见“五、通讯信息表示例”)。

2.4 CRC 校验码CRC 校验码高字节是通讯信息帧的最后一个字节。

CRC 校验码由主机计算,放置于发送信息帧的尾部。

从机再重新计算接收到信息的CRC ,比较计算得到的CRC 与接收到的CRC 是否一致,如果不一致,则表明出错。

CRC 计算只用到了8个数据位,计算方法如下:① 预置1个16位的寄存器为十六进制FFFF (即全为1),称此寄存器为CRC 寄存器;② 把第一个8位二进制数据(通讯信息帧的第1个字节)与16位CRC 寄存器的低8位相异或,结果放于CRC 寄存器; ③ 把CRC 寄存器的内容右移一位(朝低位)并用0填补最高位,检查右移后的移出位;startenddataparity起始位停止位数据位校验位startenddata起始位停止位数据位④如果移出位为0:重复第③步(再次右移一位);如果移出位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;⑤重复步骤③和④,直到右移8次,这样整个8位数据全部进行了处理;⑥重复步骤②到步骤⑤,进行通讯信息帧下一个字节的处理;⑦将该通讯信息帧所有字节(不包括CRC校验码高、低字节)按上述步骤计算完成后,CRC寄存器内容即为CRC校验码。

(完整)MODBUS_RTU通讯协议

(完整)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为尾数的小数点部分。

ModBusRTU通讯协议

ModBusRTU通讯协议

ModBusRTU通讯协议协议名称:ModBusRTU通讯协议一、引言ModBusRTU通讯协议是一种用于串行通信的通讯协议,广泛应用于工业自动化领域。

本协议旨在规范ModBusRTU通讯协议的格式和规则,确保通讯的可靠性和稳定性。

二、协议结构ModBusRTU通讯协议由以下几个部分组成:1. 帧头:包含起始位和地址位,用于标识通讯的起始。

2. 功能码:用于标识通讯的类型和操作。

3. 数据域:包含具体的数据信息。

4. CRC校验:用于校验数据的完整性。

三、通讯规则1. 帧头- 起始位:占据一个字节,固定为0xFF。

- 地址位:占据一个字节,用于标识设备的地址。

2. 功能码- 读取操作:功能码为0x03,用于读取设备的寄存器数据。

- 写入操作:功能码为0x06,用于向设备的寄存器写入数据。

3. 数据域- 读取操作:数据域包含读取的寄存器地址和读取的寄存器数量。

- 写入操作:数据域包含写入的寄存器地址和写入的数据。

4. CRC校验- CRC校验位:占据两个字节,用于校验数据的完整性。

- CRC校验规则:对帧头、功能码和数据域进行CRC校验,将结果附加在数据域之后。

四、通讯流程1. 主站发送请求:- 主站向从站发送帧头、功能码和数据域。

- 主站计算CRC校验位,将结果附加在数据域之后。

- 主站将数据发送给从站。

2. 从站响应请求:- 从站接收主站发送的数据。

- 从站检查CRC校验位,如果校验通过,则执行相应的操作。

- 从站将执行结果或读取的数据发送给主站。

3. 主站处理响应:- 主站接收从站发送的数据。

- 主站解析数据,根据需要进行后续操作。

五、通讯错误处理1. CRC校验错误:- 如果CRC校验错误,从站将不执行任何操作,并返回错误码给主站。

2. 通讯超时:- 如果主站在规定时间内没有接收到从站的响应,主站将重发请求。

3. 其他错误:- 如果发生其他错误,主站和从站可以根据具体情况进行相应的处理。

六、总结ModBusRTU通讯协议是一种用于串行通信的通讯协议,通过规范通讯的格式和规则,确保通讯的可靠性和稳定性。

MODBUS通讯协议及编程(RTU)

MODBUS通讯协议及编程(RTU)

MODBUS通讯协议及编程ModBus通讯协议分为RTU协议和ASCII协议,我公司的多种仪表都采用ModBus RTU 通讯协议,如:CH2000智能电力监测仪、CH2000M电力参数采集模块、巡检表、数显表、光柱数显表等。

下面就ModBus RTU协议简要介绍如下:一、通讯协议(一)、通讯传送方式:通讯传送分为独立的信息头,和发送的编码数据。

以下的通讯传送方式定义也与MODBUS RTU通讯规约相兼容:初始结构= ≥4字节的时间地址码= 1 字节功能码= 1 字节数据区= N 字节错误校检= 16位CRC码结束结构= ≥4字节的时间地址码:地址码为通讯传送的第一个字节。

这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。

并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。

主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。

功能码:通讯传送的第二个字节。

ModBus通讯规约定义功能号为1到127。

本仪表只利用其中的一部分功能码。

作为主机请求发送,通过功能码告诉从机执行什么动作。

作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。

如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。

数据区:数据区是根据不同的功能码而不同。

数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。

CRC码:二字节的错误检测码。

(二)、通讯规约:当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。

返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。

如果出错就不发送任何信息。

1.信息帧结构地址码:地址码是信息帧的第一字节(8位),从0到255。

这个字节表明由用户设置地址的从机将接收由主机发送来的信息。

MODBUS_RTU 通讯协议(双路控制仪可读写报警参数)

MODBUS_RTU 通讯协议(双路控制仪可读写报警参数)

该表的负数使用的是补码方式解析
举例:-117 的解析表示如下
+117 可表示为
0000 0000 0111 0101
按位求反后为
1111 1111 1000 1010
末位加 1 后为
1111 1111 1000 1011
用十六进制数表示为 F F 8 B
即 [-117]补=FF8BH
6 数据低位
7~8 CRC
举例说明:
MODBUS_RTU 通讯协议(十六进制格式) 发送:01, 03, 00, 00, 00, 10,44, 06 回收:1, 3, 20, 00, 01, 08, 00, F9, 80, 01, 00, 00, 00, 00, 00, 00, 00, 00, 00, 43, 77, 00, 77, 03, 45,
00, 0E, 8A, 00, 00, 8A, 0E, 77, 00, 00, 60, 9C (以上举例仅作参考,以实际通讯数据内容为准。) 仪表动态数据格式
编号 1 2 3 4 5 6 7 8 9
参数名称 保留
内部修改标志 仪表类型
第一通道实时值 第二通道实时值 第一报警(AL1) 第二报警(AL2) 第三报警(AL3) 第四报警(AL4) 通道 1 第一报警值(1AL1) 通道 1 第二报警值(1AL2) 通道 1 第一报警回差值(1AH1) 通道 1 第二报警回差值(1AH2) 通道 2 第一报警值(2AL1) 通道 2 第二报警值(2AL2) 通道 2 第一报警回差值(2AH1) 通道 2 第二报警回差值(2AH2)
MODBUS_RTU 通讯协议
1、 数据传输格式:1 位起始位、8 位数据位、1 位停止位、无奇偶校验位。 2、 仪表数据格式:2 字节寄存器值=寄存器数高 8 位二进制数+寄存器低 8 位二进制数 3、 仪表通讯帧格式:

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 通讯协议(RTU传输模式)本说明仅做内部参考,详细请参阅英文版本。

第一章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(循环冗长检测)11.2协议当信息帧到达终端设备时,它通过一个简单的“口”进入寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。

返回的响应数据中包含了以下内容:终端从机地址(Address)、被执行了的命令(Function)、执行命令生成的被请求数据(Data)和一个校验码(Check)。

发生任何错误都不会有成功的响应。

1.2.1信息帧图 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 常用功能码21.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 . 位顺序(RTU)1.3错误检测1、奇偶校验用户可以配置控制器是奇或偶校验,或无校验。

这将决定了每个字符中的奇偶校验位是如何设置的。

3如果指定了奇或偶校验,“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保持4寄有器。

注意,该信息规定了寄存器的起始地址为0107 (006BH)。

从机响应返回该功能代码,说明是正常响应,字节数“Byle count”中说明有多少个8位字节被返回。

它表明了附在数据区中8位字节的数量,当在缓冲区组织响应信息时,“字节数”区域中的值应与该信息中数据区的字节数相等。

如RTU方式时,63H 用一个字节(01100011)发送。

8个位为一个单位计算“字节数”,它忽略了信息帧用组成的方法。

图 2 – 1 Modbus的查询信息图 2 – 2 Modbus的响应信息2.1读取线圈状态(功能码01)读取从机离散量输出口(DO,0X类型)的ON/OFF 状态,不支持广播。

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

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

图 2 – 3 读取线圈状态----查询响应响应信息中的各线圈的状态与数据区的每一位的值相对应,即每个DO占用一位(1 = ON, 0 = OFF),第一个数据字节的LSB为查询中的寻址地址,其他的线圈按顺序在该字节中由低位向高位排列,直至8个为止,下一个字节也是从低位向高位排例。

相关文档
最新文档