MODBUS-RTU协议
- 格式:doc
- 大小:317.50 KB
- 文档页数:9
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协议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通讯协议采用了一种简单的主从结构,其中包括一个主站和多个从站。
主站负责发送命令并接收从站的响应,而从站则负责接收命令并向主站发送响应。
三、数据格式1. 帧格式ModBusRTU通讯协议的数据帧由以下几个部分组成:- 起始位:一个起始位,用于标识数据帧的开始。
- 地址位:一个地址位,用于标识从站的地址。
- 功能码:一个功能码,用于标识命令的类型。
- 数据位:一个或多个数据位,用于传输命令或响应的数据。
- 校验位:一个校验位,用于验证数据的完整性。
- 结束位:一个结束位,用于标识数据帧的结束。
2. 数据类型ModBusRTU通讯协议支持多种数据类型,包括位(Coil)、输入位(Input Coil)、寄存器(Holding Register)和输入寄存器(Input Register)。
每种数据类型都有对应的读取和写入命令。
四、命令与响应规则1. 读取命令主站可以发送读取命令来获取从站的数据。
读取命令的格式如下:- 从站地址:一个字节,用于指定要读取数据的从站地址。
- 功能码:一个字节,用于指定读取命令的功能码。
- 起始地址:两个字节,用于指定要读取数据的起始地址。
- 数据长度:两个字节,用于指定要读取的数据长度。
- 校验码:两个字节,用于验证命令的有效性。
2. 写入命令主站可以发送写入命令来向从站写入数据。
写入命令的格式如下:- 从站地址:一个字节,用于指定要写入数据的从站地址。
- 功能码:一个字节,用于指定写入命令的功能码。
- 起始地址:两个字节,用于指定要写入数据的起始地址。
- 数据长度:两个字节,用于指定要写入的数据长度。
图文详解Modbus-RTU协议前世今生照例简单说下这个协议的历时,Modicon公司于1979年制定了Modbus协议标准,并用在其PLC产品上。
后来Modicon公司被施耐德收购。
已成为一种事实标准协议,同时也被IEC-61158工业通信总线规范收录于type 15子集。
所谓一流的企业做标准,二流的企业做品牌,三流的企业做产品。
这些标准国人都基本是使用者,而非缔造者,所以使用一下,产品上印个标志,做做相关的测试认证都要给老外交钱。
这里只是顺带牢骚几句,与本文想说的无关。
打住!Modbus的应用除了常见的过程控制系统,在其他很多领域都有其身影,比如一些楼宇控制,消防控制等等都有大量的产品采用Modbus协议,因为这个协议实现简单,工作可靠,还是标准化的协议!Modbus分很多实现版本,总的来说是一种应用层协议。
从OSI七层模型来看,位于第七层应用层。
它定义了在不同类型的总线或网络上连接的设备之间提供”客户端/服务器“通信。
对于使用串口的版本,也定义了layer 1 和 layer 2,实现在主站和一个或多个从站之间交换MODBUS 报文。
具体有哪些版本呢?其实主要分两种:Modbus RTU(Remote Terminal Unit 远程终端单元):这种方式常采用RS-485做为物理层,一般利用芯片的串口实现数据报文的收发,报文数据采用二进制数据进行通信。
Modbus ASCII :报文使用 ASCII 字符。
ASCII 格式使用纵向冗余校验和。
Modbus ASCII 报文由冒号 (":")开始和换行符 (CR/LF)结尾构成。
当然其他还根据所使用的物理层不一样,有这么些做法:Modbus TCP/IP 或 Modbus TCP :这是一种 Modbus 变体版本,使用 TCP/IP 网络进行通信,通过 502 端口进行连接。
报文不需要校验和计算,因为以太网底层已经实现了CRC32 数据完整性校验。
Modbus RTU协议报文格式1. 介绍Modbus RTU(Remote Terminal Unit)是一种常用的串行通信协议,广泛应用于工业自动化领域。
本文将详细介绍Modbus RTU协议报文格式。
2. Modbus RTU协议概述Modbus RTU协议是Modbus协议的一种变体,采用二进制格式进行数据传输。
它基于RS-485串行通信标准,支持多个从站与一个主站之间的通信。
3. 报文结构Modbus RTU协议报文由以下几个部分组成: 1. 地址码(Address):指示从站的地址,占1个字节。
2. 功能码(Function Code):指示所执行的操作类型,占1个字节。
3. 数据域(Data Field):包含操作的相关数据,占可变长度。
4. CRC校验(Cyclic Redundancy Check):用于数据完整性校验,占2个字节。
4. 报文格式详解Modbus RTU协议报文格式如下:地址码功能码数据域CRC校验1字节1字节可变2字节4.1 地址码地址码用于指示从站的地址,范围从1到247。
地址码为0和255有特殊含义,0表示广播地址,255保留不使用。
4.2 功能码功能码用于指示所执行的操作类型,共有几十种不同的功能码。
常用的功能码包括读取保持寄存器(03H)、写单个保持寄存器(06H)等。
4.3 数据域数据域包含了根据功能码不同而变化的数据。
不同功能码对应的数据域长度也不同。
例如,读取保持寄存器功能码的数据域包含了要读取的寄存器地址以及读取的寄存器数量。
4.4 CRC校验CRC校验用于确保数据的完整性。
CRC校验算法对整个报文(除了CRC校验字段)进行计算,将计算结果附加到报文中。
接收端在接收到报文后,同样使用CRC校验算法对报文进行计算,并与接收到的CRC校验字段进行比较,以验证数据是否正确。
5. 报文传输流程Modbus RTU协议报文的传输流程如下: 1. 主站发送请求报文给从站。
MODBUS通讯协议-RTU(DOC)简介Modbus通讯协议是一种通用语言,广泛应用于电子控制器上。
通过该协议,不同厂商生产的控制设备可以连接成工业网络,进行集中监控,已成为通用工业标准。
该协议定义了控制器能够认识使用的消息结构,并描述了控制器请求访问其他设备的过程,回应其他设备的请求的方式,以及如何侦测错误并记录。
在Modbus网络上通信时,每个控制器需要知道设备地址、识别按地址发来的消息,并决定产生何种行动。
该协议只允许在主计算机和终端设备之间进行数据交换,不允许独立设备之间的数据交换。
传输方式在Modbus总线上进行通讯时,使用RTU模式,信息中的每8位字节分成两个4位16进制的字符,并且每个信息必须连续传输。
传输方式是一个信息帧内一系列独立的数据结构以及用于传输数据的有限规则。
代码系统采用8位二进制和十六进制数0.9,A。
F,消息中的每个8位域都是由两个十六进制字符组成。
每个字节的位包括1个起始位、8个数据位(最小的有效位先发送)、1个奇偶校验位(无校验则无)和1个停止位(有校验时为2个Bit,无校验时为1个Bit)。
错误检测域采用CRC(循环冗长检测)。
协议简介Modbus通讯协议是一种通用语言,广泛应用于电子控制器上。
通过该协议,不同厂商生产的控制设备可以连接成工业网络,进行集中监控,已成为通用工业标准。
该协议定义了控制器能够认识使用的消息结构,并描述了控制器请求访问其他设备的过程,回应其他设备的请求的方式,以及如何侦测错误并记录。
传输方式在Modbus总线上进行通讯时,使用RTU模式,信息中的每8位字节分成两个4位16进制的字符,并且每个信息必须连续传输。
传输方式是一个信息帧内一系列独立的数据结构以及用于传输数据的有限规则。
代码系统采用8位二进制和十六进制数0.9,A。
F,消息中的每个8位域都是由两个十六进制字符组成。
每个字节的位包括1个起始位、8个数据位(最小的有效位先发送)、1个奇偶校验位(无校验则无)和1个停止位(有校验时为2个Bit,无校验时为1个Bit)。
modbus rtu协议Modbus RTU协议。
Modbus RTU协议是一种串行通信协议,广泛应用于工业自动化领域。
它是一种简单、可靠的通信协议,适用于各种工业设备之间的通信。
本文将介绍Modbus RTU协议的基本原理、通信格式、应用范围以及常见问题解决方法。
Modbus RTU协议的基本原理。
Modbus RTU协议是一种基于串行通信的主从式通信协议,它采用了简单的二进制编码方式来进行数据传输。
在Modbus RTU通信中,通信的发起方为主站,而被动响应的设备为从站。
主站通过发送请求帧来获取从站的数据,从站在接收到请求后进行响应,并将数据发送回主站。
这种通信方式使得Modbus RTU协议在工业控制领域得到了广泛的应用。
Modbus RTU协议的通信格式。
Modbus RTU协议的通信格式非常简洁明了,它采用了一种固定长度的数据帧格式来进行通信。
数据帧由地址字段、功能码字段、数据字段和校验字段组成。
其中地址字段用于标识从站设备的地址,功能码字段用于指示主站要执行的操作,数据字段用于传输实际的数据信息,校验字段用于对数据帧进行校验,以确保数据的完整性和准确性。
Modbus RTU协议的应用范围。
Modbus RTU协议广泛应用于各种工业领域,包括工业自动化、能源管理、楼宇自动化等。
在工业自动化领域,Modbus RTU协议常用于PLC、传感器、执行器等设备之间的通信。
在能源管理领域,Modbus RTU协议常用于电能仪表、变频器等设备之间的通信。
在楼宇自动化领域,Modbus RTU协议常用于空调控制、照明控制等设备之间的通信。
由于Modbus RTU协议的简单可靠,它能够满足各种工业设备之间的通信需求。
常见问题解决方法。
在实际应用中,Modbus RTU协议可能会遇到一些常见问题,如通信超时、数据错误、地址冲突等。
针对这些问题,我们可以采取一些常见的解决方法来解决。
例如,对于通信超时问题,可以调整通信超时时间或者优化通信线路来解决;对于数据错误问题,可以增加数据校验机制或者重新设计数据传输方案来解决;对于地址冲突问题,可以重新分配设备地址或者采取其他地址冲突解决方案来解决。
modbusrtu通信协议书甲方(以下简称甲方):地址:法定代表人:乙方(以下简称乙方):地址:法定代表人:鉴于甲方需要使用modbusRTU通信协议进行设备间的通信,乙方具备提供modbusRTU通信协议相关服务的能力,双方本着平等互利的原则,经友好协商,就modbusRTU通信协议的实施和相关事宜达成如下协议:第一条协议目的本协议旨在规范甲方使用乙方提供的modbusRTU通信协议服务,确保设备间通信的稳定性、安全性和可靠性。
第二条服务内容1. 乙方应向甲方提供modbusRTU通信协议的技术支持和咨询服务。
2. 乙方应确保所提供的modbusRTU通信协议符合国际标准,满足甲方的通信需求。
第三条技术要求1. 乙方提供的modbusRTU通信协议应遵循MODBUS协议规范,包括但不限于MODBUS-RTU协议的数据格式、功能码、异常响应等。
2. 乙方应保证协议的兼容性,确保甲方设备能够与乙方提供的协议无缝对接。
第四条服务期限本协议自双方签字盖章之日起生效,有效期为一年。
协议期满前,双方可协商续签。
第五条保密条款1. 双方应对在本协议履行过程中知悉的商业秘密和技术秘密予以保密,未经对方书面同意,不得向第三方披露。
2. 保密义务在协议终止后仍然有效。
第六条违约责任如一方违反本协议条款,应承担违约责任,并赔偿对方因此遭受的一切损失。
第七条争议解决双方在履行本协议过程中发生的任何争议,应首先通过友好协商解决;协商不成时,任何一方均可向甲方所在地有管辖权的人民法院提起诉讼。
第八条其他1. 本协议未尽事宜,由双方协商解决。
2. 本协议一式两份,甲乙双方各执一份,具有同等法律效力。
甲方(盖章):_________________ 日期:____年__月__日乙方(盖章):_________________ 日期:____年__月__日。
modbusrtu协议1. 简介modbusrtu协议是一种串行通信协议,广泛应用于工业自动化领域。
它定义了一种主从设备之间进行通信的规则和数据帧格式,能够实现可靠的数据交换。
本文将介绍modbusrtu协议的基本原理、数据帧结构、功能码以及在实际应用中的常见用途。
2. 基本原理modbusrtu协议采用了简单的主从架构,其中一个设备作为主站,控制多个从站进行数据交换。
主站负责发起请求并解析从站的响应数据。
通信采用全双工的方式进行,主站和从站通过共享的数据线交换信息。
3. 数据帧结构modbusrtu协议的数据帧由起始符、从站地址、功能码、数据、校验码和结束符组成。
具体结构如下:起始符 | 地址 | 功能码 | 数据 | 校验码 | 结束符•起始符:用于同步通信的起始标识符,通常为一个字节。
•地址:标识从站的地址,通常为一个字节。
地址0为广播地址,用于向多个从站发送指令。
•功能码:指定从站执行的操作,可以是读取数据、写入数据或其他特定功能。
•数据:用于传输的数据,长度可变。
•校验码:用于检测数据传输过程中的错误,通常采用循环冗余校验(CRC)算法计算得出。
•结束符:标志数据帧的结束,通常为一个或多个字节。
4. 功能码modbusrtu协议定义了一套常用的功能码,用于指示从站执行不同的操作。
常见的功能码及其功能如下:•读取线圈状态(01H):用于读取从站的开关量输出状态。
•读取输入状态(02H):用于读取从站的开关量输入状态。
•读取保持寄存器(03H):用于读取从站的模拟量输入状态。
•读取输入寄存器(04H):用于读取从站的模拟量输出状态。
•强制单线圈(05H):用于强制从站的开关量输出状态。
•预置多个寄存器(06H):用于设置从站的模拟量输出状态。
•执行多个操作(0FH):用于执行多个操作,如同时读取多个寄存器或写入多个寄存器的值。
5. 实际应用modbusrtu协议在实际应用中广泛用于工业自动化和远程监控系统。
MODBUS-RTU协议MODBUS-RTU协议通信模式该仪表使用MODBUS RTU格式,用于主从查询模式进行数据通信。
在RTU模式下,数据格式为n,8,1(1个起始位、8个数据位、无校验、1个停止位)。
波特率可选五种,分别为1200、2400、4800、9600和.T1、T2、T3、T4为每帧之间的时间间隔,两帧之间的传输必须大于间隔时间。
地址协议中规定仪表的地址为“01-99”,其中“00”地址用于广播,但本协议不支持广播,其余地址保留。
命令该仪表使用了MODBUS协议中的三条指令:命令03(HEX)用于读单个或多个寄存器,命令06(HEX)用于写单个寄存器,命令10(HEX)用于写多个寄存器,其中命令10包含了命令6.数据格式协议中的数据包括16进制数、整数、BCD码和浮点数。
单精度浮点数SINGLE格式为IEEE754,数据由低到高。
32位浮点数共计32位,折合4字节,由最高到最低位分别是第31、30、29、……、位。
31位是符号位(S),1表示该数为负,反之;30-23位一共8位是阶码;22-0位一共23位是尾数。
BCD码格式有两种:格式1为4字节BCD编码,数据低→高,如数据xxxxxxxx表示为4字节。
格式2为内部应用的6字节BCD编码,表示固定小数点的数据,数据低→高,如.678表示为6字节,小数点默认为第9位数的后面。
无符号整数Uint为0-.命令3格式命令3是读寄存器命令。
MODBUS请求包括仪表地址、功能码、起始地址和读取数量,以及CRC低位和CRC高位。
MODBUS响应包括仪表地址、功能码、字节计数、输入状态,以及CRC低位和CRC高位。
错误响应包括仪表地址、功能码、错误代码,以及CRC低位和CRC高位。
示例请求:仪表地址码:01功能码:03起始地址高(字节):00起始地址低(字节):01读取数量高(字节):00读取数量低(字节):02数据(hex):01 03文章中没有明显的格式错误或有问题的段落。
modbusrtu 协议Modbus是一种通讯协议,最初由Modicon公司开创。
目前这个协议已经成为了全球工业自动化设备间的通讯标准之一,被广泛应用于许多领域,包括工业自动化、家庭自动化、建筑物自动化、能源管理等等。
Modbus RTU协议是其中最常见的格式之一,本文将详细介绍该协议的基本特点、通讯方式、报文结构以及应用范围等方面。
一、协议介绍1.1 基本概念Modbus RTU协议是Modbus协议的一种变体,是在串行通讯中广泛应用的一种方式。
RTU通讯的特点在于通讯速度较快,协议间数据的传输效率高。
1.2 协议特点针对它的通讯方式而言,Modbus RTU协议最明显的特点是它的速度快。
由于基于串行通讯,可以实现数据快速传输。
此外,它采取了类似于“请求—响应”的模式,能够保证通讯中数据的可靠性。
二、通讯方式Modbus RTU协议采取了一种“Master/Slave”的结构,其中,Master表示设备的控制器或CPU,而Slave则具有更低的智力,被动从属于Master,它们互相交换信息,实现整个系统的控制。
在通讯时,Master通过一个唯一的地址向Slave发送请求消息,并等待接收Slave的响应消息。
通讯过程主要包括以下两个阶段:2.1 请求消息当Master向Slave发送请求时,它会先确定拟请求的Slave的地址、功能码和数据。
其中,地址是指Slave设备在同一个网络上的唯一标识符,功能码表示所请求的操作类型,数据则是操作所需的具体数据。
请求消息的格式如下:Slave Address: 1 byte Function Code: 1 byte Data: n bytes CRC Check: 2 bytes需要注意的是,在发送请求消息时,Master应能确保请求在网络上的唯一性,否则将导致请求的冲突,影响通讯的有效性。
2.2 响应消息当Slave接受到Master的请求消息时,它会根据请求完成相应的操作,并返回响应消息。
MODBUS RTU详细解释Modbus一个工业上常用的通讯协议、一种通讯约定。
Modbus协议包括RTU、ASCII、TCP。
其中MODBUS-RTU 最常用,比较简单,在单片机上很容易实现。
虽然RTU比较简单,但是看协议资料、手册说得太专业了,起初很多内容都很难理解。
所谓的协议是什么?就是互相之间的约定嘛,如果不让别人知道那就是暗号。
现在就来定义一个新的最简单协议。
例如,协议:“A”--“LED灭”“B”--“报警”“C”--“LED亮”单片机接收到“A”控制一个LED灭,单片机接收到“B”控制报警,单片机接收到“A”控制一个LED亮。
那么当收到对应的信息就执行相应的动作,这就是协议,很简单吧。
先来简单分析一条MODBUS-RTU报文,例如:01060001001798040106000100179804从机地址功能号数据地址数据CRC校验这一串数据的意思是:把数据0x0017(十进制23)写入1号从机地址0x0001数据地址。
先弄明白下面的东西。
1、报文一个报文就是一帧数据,一个数据帧就一个报文:指的是一串完整的指令数据,就像上面的一串数据。
2、CRC校验意义:例如上面的9804是它前面的数据(010*********)通过一算法(见附录2,很简单的)计算出来的结果,其实就像是计算累加和那样。
(累加和:就是010*********加起来的值,然后它的算法就是加法)。
作用:在数据传输过程中可能数据会发生错误,CRC检验检测接收的数据是否正确。
比如主机发出010600 010*******,那么从机接收到后要根据010*********再计算CRC校验值,从机判断自己计算出来的CRC校验是否与接收的CRC校验(9804主机计算的)相等,如果不相等那么说明数据传输有错误这些数据不能要。
3、功能号意义:modbus定义。
见附录1。
作用:指示具体的操作。
MODBUS-RTU一、一个报文分析先声明下我们的目的,我们是要两个设备通讯,用的是MODBUS协议。
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校验码。
MODBUSRTU协议解析MODBUS是一种用于工业自动化控制系统中的通信协议,用于在主从设备之间传输数据。
其中,RTU(远程终端单元)是MODBUS协议的一种传输模式,用于串行通信。
下面将对MODBUSRTU协议进行详细解析。
起始位:一个低电平的空闲时间,用于同步通信。
从设备地址:用于唯一标识从设备,允许1至247的地址。
功能码:用于说明请求是读取数据还是写入数据,具体指定操作类型。
数据:根据功能码的不同,数据可用于传输读取的数据或要写入的数据。
差错检验:包括CRC(循环冗余校验)或LRC(纵向冗余校验),用于检测数据传输过程中是否出现错误。
通信流程:1.主设备向从设备发送一个帧(请求)。
2.从设备接收请求并执行相应操作。
3.从设备将响应信息打包成一个帧(响应)发送给主设备。
4.主设备接收响应信息,并根据需要进行解析和处理。
MODBUSRTU协议的功能码包括读取和写入操作,以及控制操作码。
读取操作码(0x03)用于请求从设备发送数据。
主设备发送一个读取请求,并提供需要读取的数据的地址和数量。
从设备接收到请求后,将请求数据打包成响应帧发送给主设备。
写入操作码(0x06)用于请求向从设备写入数据。
主设备发送一个写入请求,并提供要写入的数据的地址和数据值。
从设备接收到请求后,将请求数据写入到相应的地址。
控制操作码(0x10)用于向从设备发送控制命令。
主设备发送一个控制请求,并提供需要控制的功能码和相应的参数。
从设备接收到请求后,将根据控制命令执行相应操作。
MODBUSRTU协议的差错检验是通过CRC或LRC来验证数据的完整性。
CRC是通过生成多项式计算得到的,它对数据进行编码并附加到数据帧末尾。
接收端根据接收到的数据和CRC值进行校验。
LRC是将数据逐字节相加,并对结果取反。
总结:MODBUSRTU协议是一种常用于工业自动化控制系统的通信协议,采用串行通信。
它使用从设备地址、功能码、数据及差错检验等内容构成数据帧。
盛年不重来,一日难再晨。
及时宜自勉,岁月不待人。
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(无校验时)错误检测域1•CRC(循环冗长检测)1.2协议当信息帧到达终端设备时,它通过一个简单的“口”进入寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。
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-0
S 阶码尾数
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 m3
03 d3 累加和高位、累加和低位
ff 结束符。