ImageVerifierCode 换一换
格式:DOCX , 页数:53 ,大小:116.54KB ,
资源ID:14025224      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-14025224.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MODBUS协议功能码及报文解析.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

MODBUS协议功能码及报文解析.docx

1、MODBUS协议功能码及报文解析- 精品文档 -MODBUS 协议Modbus 是一种串行通信协议,是 Modicon 于 1979 年,为使用可编程逻辑控制器( PLC)而发表的。事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。 Modbus比其他通信协议使用的更广泛的主要原因有:公开发表并且无版税要求相对容易的工业网络部署对供应商来说,修改移动原生的位或字节没有很多限制Modbus 允许多个设备连接在同一个网络上进行通信, 举个例子,一个由测量温度和湿度的装置, 并且将结果发送给计算机。 在数据采集与监视控制系统( SCADA)中, Modbus 通常

2、用来连接监控计算机和 remote terminal unit (RTU)。Modbus 协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。大多数 Modbus 设备通信通过串口 EIA-485 物理层进行 1。对于串行连接, 存在两个变种, 它们在数值数据表示不同和协议细节上略有不同。 Modbus RTU 是一种紧凑的, 采用二进制表示数据的方式, Modbus ASCII 是一种人类可读的,冗长的表示方式。这两个变种都使用串行通讯( serial communication)方式。 RTU 格式后续的命令数据带有 循环冗余校验 的校验和,而 ASCII 格式采用纵向冗余校验

3、的校验和。被配置为 RTU 变种的节点不会和设置为 ASCII 变种的节点通信,反之亦然。-精品 - 精品文档 -对于通过 TCP/IP (例如以太网)的连接,存在多个 Modbus/TCP变种,这种方式不需要校验和的计算。对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。Modbus 有一个扩展版本 Modbus Plus(Modbus+或者 MB+) ,不过此协定是 Modicon 专有的,和 Modbus 不同。它需要一个专门的协处理器来处理类似 HDLC 的高速令牌旋转。它使用 1Mbit/s 的双绞线,并且每个节点都有转换隔离装置, 是一种采用转换边缘触

4、发而不是电压水平触发的装置。连接 Modbus Plus到计算机需要特别的接口,通常是支持 ISA(SA85),PCI 或者 PCMCIA 总线的板卡。Modbus 协议是一个 master/slave 架构的协议。有一个节点是 m aster 节点,其他使用 Modbus 协议参与通信的节点是 slave 节点。每一个 slave 设备都有一个唯一的地址。在串行和 MB+ 网络中,只有被指定为主节点的节点可以启动一个命令 (在以太网上, 任何一个设备都能发送一个 Modbus 命令,但是通常也只有一个主节点设备启动指令)。一个 ModBus 命令包含了打算执行的设备的 Modbus 地址。所

5、有设备都会收到命令, 但只有指定位置的设备会执行及回应指令 (地址0 例外,指定地址 0 的指令是广播指令,所有收到指令的设备都会执行,不过不回应指令)。所有的 Modbus 命令包含了检查码,以确定到达的命令没有被破坏。基本的 ModBus 命令能指令一个 RTU 改-精品 - 精品文档 -变它的寄存器的某个值, 控制或者读取一个 I/O 端口,以及指挥设备回送一个或者多个其寄存器中的数据。有许多 modems和网关支持 Modbus 协议,因为 Modbus 协议很简单而且容易复制。 它们当中一些为这个协议特别设计的。 有使用有线、无线通信甚至短消息和 GPRS的不同实现。 不过设计者需要

6、克服一些包括高延迟和时序的问题。MODBUS 通信过程如下图MODBUS RTU 报文格式设备地 功能代 CRC 校起始位 数据 结束符址 码 验T1-T2-T3-T4 8Bit 8Bit n 个 8Bit 16Bit T1-T2-T3-T4-精品 - 精品文档 -MODBUS ASCII 报文格式设备地 LRC 校起始位 功能代码 数据 结束符址 验2个字 2个字1 个字符 2 个字符 n 个字符 2 个字符符 符MODBUS TCP 报文交互标识 协议标识 报文长度 设备标识 功能代码 数据2字节 2字节 1字节2 字节一般为 0 高字节在 也就是设 1 个字符 n 个字符一般为 0前 备

7、地址实际上 MODBUS RTU 与 ASCII 的内容是完全相同的, 不同的的ASCII 方式用“:”标识帧起始,用“ LFCR”标识帧结束。校验采用 LRC,把 RTU 帧中一个字节的内容换成了 2 个 ASCII 字符。比如在 RTU 方式下设备地址 01 只有一个字节,在 ASCII 方式下转换成字符串“ 01”( 16 进制的 30 31 )。-精品 - 精品文档 -MODBUS TCP 中的设备标识,功能码等与 MODBUS RTU 相同,可以认为是在 MODBUS RTU 报文的前边加了一个头, 去掉了 CRC 校验这个尾。MODBUS 协议定义了 4 种基本数据类型:可读写位数

8、据,只读位数据,只读 16 位数据,可读写 16 位数据。这些数据分别被称为线圈状态,输入状态,输入寄存器,保持寄存器。MODBUS 协议中定义的这些数据都是一个从地址 1 开始的数组,访问时需要指明从哪个地址开始访问,访问多少个数据。下表是 MODBUS 的功能码。ModBus 功能码功能名称 作用码01 读取线圈状态 取得一组逻辑线圈的当前状态( ON/OFF)02 读取输入状态 取得一组开关输入的当前状态( ON/OFF)在一个或多个保持寄存器中取得当前的二进制3读取保持寄存器值在一个或多个输入寄存器中取得当前的二进制4读取输入寄存器值05强置单线圈强置一个逻辑线圈的通断状态06预置单寄

9、存器把具体二进值装入一个保持寄存器07读取异常状态取得 8 个内部线圈的通断状态,这8 个线圈的-精品 - 精品文档 -地址由控制器决定,用户逻辑可以将这些线圈定义,以说明从机状态,短报文适宜于迅速读取状态把诊断校验报文送从机,以对通信处理进行评8回送诊断校验鉴9编程(只用于 484) 使主机模拟编程器作用,修改 PC 从机逻辑可使主机与一台正在执行长程序任务从机通10控询(只用于 484) 信,探询该从机是否已完成其操作任务,仅在含有功能码 9 的报文发送后,本功能码才发送可使主机发出单询问,并随即判定操作是否成11读取事件计数功,尤其是该命令或其他应答产生通信错误时可是主机检索每台从机的

10、ModBus 事务处理通12 读取通信事件记录 信事件记录。如果某项事务处理完成,记录会给出有关错误编程( 184/384 48413可使主机模拟编程器功能修改 PC 从机逻辑584)可使主机与正在执行任务的从机通信,定期控探询( 184/384 48414584)询该从机是否已完成其程序操作,仅在含有功能 13 的报文发送后,本功能码才得发送15强置多线圈强置一串连续逻辑线圈的通断-精品 - 精品文档 -16 预置多寄存器 把具体的二进制值装入一串连续的保持寄存器可使主机判断编址从机的类型及该从机运行指17报告从机标识示灯的状态18 (884 和 MICRO 84)可使主机模拟编程功能,修改

11、 PC 状态逻辑发生非可修改错误后, 是从机复位于已知状态,19重置通信链路可重置顺序字节读取通用参数20 显示扩展存储器文件中的数据信息(584L)写入通用参数21 把通用参数写入扩展存储文件,或修改之(584L)保留作扩展功能备2264用保留以备用户功能6572 留作用户功能的扩展编码所用73非法功能119120保留 留作内部作用127128保留 用于异常应答255-精品 - 精品文档 -各个功能码对应的数据类型代功能数据类型码01读位02读位03读16 位整型04读16 位整型05写位06写整 16 位整型15写位16写整 16 位整型MODBUS 协议相当复杂,但是常用的命令也就简单的

12、几个, 01,02,03,04,05,06,15,16 号命令。各个命令的功能和报文如下:01 命令 读取线圈状态 MODBUS 地址 00001MODBUS 请求-精品 - 精品文档 -功能码1 BYTE0X01起始地址2 BYTE0X0000 TO 0XFFFF读取数量2 BYTE1 TO 2000(0X7D0)MODBUS 响应功能码1BYTE0X01字节计数1BYTEN线圈状态nBYTEn =N or N+1N = 读取数量 /8如果余数不为 0 则 N=N+1错误 响应功能码1BYTE0X01+ 0X80错误代码1BYTE0x1 or 0x2 or 0x3 or 0x4举例请求响应域

13、名称数据( hex)域名称数据( hex)功能码01功能码01起始地址高 (字节 )00字节计数03起始地址低 (字节 )1327(h) 20 状态CD读取数量高 (字节 )0035(h) 28 状态6B读取数量低 (字节 )1338(h) 36 状态0502 命令 读取输入状态 MODBUS 地址 10001-精品 - 精品文档 -MODBUS 请求功能码1 BYTE0X02起始地址2 BYTE0X0000 TO 0XFFFF读取数量2 BYTE1 TO 2000(0X7D0)MODBUS 响应功能码1BYTE0X02字节计数1BYTEN输入状态nBYTEn =N or N+1N = 读取数

14、量 /8如果余数不为 0 则 N=N+1错误 响应功能码1BYTE0X02+ 0X80错误代码1BYTE0x1 or 0x2 or 0x3 or 0x4举例请求响应域名称数据( hex)域名称数据( hex)功能码02功能码02起始地址高 (字节 )00字节计数03起始地址低 (字节 )C4204(h) 197 状态AC读取数量高 (字节 )00212(h) 205 状态DB读取数量低 (字节 )16218(h) 213 状态35-精品 - 精品文档 -03 读保持寄存器 MODBUS 地址 40001MODBUS 请求功能码1 BYTE0X03起始地址2 BYTE0X0000 TO 0XFF

15、FF读取数量2 BYTE1 TO 125(0X7D)MODBUS 响应功能码1BYTE0X03字节计数1BYTEN*2输入状态N*2BYTE错误 响应功能码1BYTE0X03+ 0X80错误代码1BYTE0x1 or 0x2 or 0x3 or 0x4举例请求响应域名称数据( hex)域名称数据( hex)功能码03功能码03起始地址高 (字节 )00字节计数06起始地址低 (字节 )6B寄存器高( 108)02-精品 - 精品文档 -读取数量高 (字节 )00寄存器低( 108)2B读取数量低 (字节 )03寄存器高( 109)00寄存器低( 109)00寄存器高( 110)00寄存器低(

16、110)6404 输入寄存器 MODBUS 地址 30001MODBUS 请求功能码1 BYTE0X04起始地址2 BYTE0X0000 TO 0XFFFF读取数量2 BYTE1 TO 125(0X7D)MODBUS 响应功能码1BYTE0X04字节计数1BYTEN*2输入状态N*2BYTE错误 响应功能码1BYTE0X04+ 0X80错误代码1BYTE0x1 or 0x2 or 0x3 or 0x4举例请求响应-精品 - 精品文档 -域名称数据( hex)域名称数据( hex)功能码04功能码04起始地址高 (字节 )00字节计数02起始地址低 (字节 )08输入寄存器高( 9)00读取数量

17、高 (字节 )00输入寄存器低( 9)0A读取数量低 (字节 )015设置单个继电器状态MODBUS 请求功能码 1 BYTE 0X05设置地址 2 BYTE 0X0000 TO 0XFFFF设置内容 2 BYTE 0x0000 OR 0XFF000x0000 释放继电器0xff00 吸合继电器MODBUS 响应功能码1 BYTE0X05设置地址2 BYTE0X0000 TO 0XFFFF设置内容2 BYTE0x0000 OR 0XFF00错误 响应功能码1 BYTE0X05+ 0X80-精品 - 精品文档 -错误代码1BYTE0x1 or 0x2 or 0x3 or 0x4举例 (吸合 6

18、号继电器 )请求响应域名称数据( hex)域名称数据( hex)功能码05功能码05设置地址高 (字节 )00设置地址高 (字节 )00设置地址低 (字节 )05设置地址低 (字节 )05设置内容高 (字节 )FF设置内容高 (字节 )FF设置内容低 (字节 )00设置内容低 (字节 )FF6设置单个保持寄存器MODBUS 请求功能码1 BYTE0X06设置地址2 BYTE0X0000 TO 0XFFFF设置内容2 BYTE0x0000 to 0XFF00MODBUS 响应功能码1 BYTE0X06设置地址2 BYTE0X0000 TO 0XFFFF-精品 - 精品文档 -设置内容2 BYTE

19、0x0000 to 0XFF00错误 响应功能码1BYTE0X06+ 0X80错误代码1BYTE0x1 or 0x2 or 0x3 or 0x4举例设置 9 号保持寄存器内容为 25请求响应域名称数据( hex)域名称数据( hex)功能码06功能码06设置地址高 (字节 )00设置地址高 (字节 )00设置地址低 (字节 )08设置地址低 (字节 )08设置内容高 (字节 )00设置内容高 (字节 )00设置内容低 (字节 )19设置内容低 (字节 )1915设置多个继电器状态MODBUS 请求功能码 1 BYTE 0X0F设置起始地址 2 BYTE 0X0000 TO 0XFFFF设置长度

20、 2 BYTE 0X0000 TO 0X7B0-精品 - 精品文档 -字节计数 1 BYTE N设置内容 N BYTEMODBUS 响应功能码1 BYTE0X0F设置起始地址2 BYTE0X0000 TO 0XFFFF设置长度2 BYTE0X0000 TO 0X7B0错误 响应功能码1BYTE0X0F+ 0X80错误代码1BYTE0x1 or 0x2 or 0x3 or 0x4举例设置继电器请求响应域名称数据( hex)域名称数据( hex)功能码0F功能码0F设置地址高 (字节 )00设置地址高 (字节 )00设置地址低 (字节 )13设置地址低 (字节 )13设置数量高 (字节 )00设置

21、数量高 (字节 )00设置数量低 (字节 )0A设置数量低 (字节 )0A字节计数02-精品 - 精品文档 -设置内容高 (字节 ) CD设置内容低 (字节 ) 0116设置多个保持寄存器MODBUS 请求功能码1 BYTE0X10设置起始地址2 BYTE0X0000 TO 0XFFFF设置长度2 BYTE0X0000 TO 0X7B0字节计数1 BYTEN*2设置内容N*2 BYTEMODBUS 响应功能码1 BYTE0X10设置起始地址2 BYTE0X0000 TO 0XFFFF设置长度2 BYTE0X0000 TO 0X7B0错误 响应功能码1BYTE0X10+ 0X80错误代码1BYT

22、E0x1 or 0x2 or 0x3 or 0x4-精品 - 精品文档 -举例设置多个保持寄存器请求响应域名称数据( hex)域名称数据( hex)功能码10功能码0F设置地址高 (字节 )00设置地址高 (字节 )00设置地址低 (字节 )01设置地址低 (字节 )01设置数量高 (字节 )00设置数量高 (字节 )00设置数量低 (字节 )02设置数量低 (字节 )02字节计数04设置内容高 (字节 )00设置内容低 (字节 )0A设置内容高 (字节 )01设置内容低 (字节 )02MODBUS 协议在智能设备中的应用上面讲述了 MODBUS 协议的报文以及命令,那么在智能设备中如何使用这个协议呢 ?-精品 - 精品文档 -如果智能设备有开关量输入输出, 模拟量输入输出,有计数器等。很明显开关量输入可以映射到 10001地址,第一路开关量输入为 100 01,第二路为 10002, 开关量输出映射到 00001地址,第一路为 00001,第二路为 0000 2, .模拟量输入映射到 30001地址,第一路为 30001,第二路为 300 02, 模拟量输出和计数器输入映射到 40001地址,第一路为 40001,第二路为 40002, 当然也可以把所有的数据都放在保持寄存器中,这样对于 MOD BUS 主设备访问时要简单,访问效率能提高,但是处理起来略显繁琐。-精品 -

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2