免费预览已结束,剩余9页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MODBUS 协议协议 Modbus 是一种串行通信协议 是 Modicon 于 1979 年 为使用 可编程逻辑控制器 PLC 而发表的 事实上 它已经成为工业领域 通信协议标准 并且现在是工业电子设备之间相当常用的连接方式 Modbus 比其他通信协议使用的更广泛的主要原因有 公开发表并且无版税要求 相对容易的工业网络部署 对供应商来说 修改移动原生的位或字节没有很多限制 Modbus 允许多个设备连接在同一个网络上进行通信 举个例子 一个由测量温度和湿度的装置 并且将结果发送给计算机 在数 据采集与监视控制系统 SCADA 中 Modbus 通常用来连接监控计 算机和 remote terminal unit RTU Modbus 协议目前存在用于串口 以太网以及其他支持互联网协 议的网络的版本 大多数 Modbus 设备通信通过串口 EIA 485 物理层进行 1 对于串行连接 存在两个变种 它们在数值数据表示不同和协 议细节上略有不同 Modbus RTU 是一种紧凑的 采用二进制表示数 据的方式 Modbus ASCII 是一种人类可读的 冗长的表示方式 这 两个变种都使用串行通讯 serial communication 方式 RTU 格 式后续的命令 数据带有循环冗余校验的校验和 而 ASCII 格式采 用纵向冗余校验的校验和 被配置为 RTU 变种的节点不会和设置为 ASCII 变种的节点通信 反之亦然 对于通过 TCP IP 例如以太网 的连接 存在多个 Modbus TCP 变种 这种方式不需要校验和的计算 对于所有的这三种通信协议在数据模型和功能调用上都是相同 的 只有封装方式是不同的 Modbus 有一个扩展版本 Modbus Plus Modbus 或者 MB 不 过此协定是 Modicon 专有的 和 Modbus 不同 它需要一个专门的 协处理器来处理类似 HDLC 的高速令牌旋转 它使用 1Mbit s 的双绞 线 并且每个节点都有转换隔离装置 是一种采用转换 边缘触发 而不是电压 水平触发的装置 连接 Modbus Plus 到计算机需要特 别的接口 通常是支持 ISA SA85 PCI 或者 PCMCIA 总线的板卡 Modbus 协议是一个 master slave 架构的协议 有一个节点是 master 节点 其他使用 Modbus 协议参与通信的节点是 slave 节点 每一个 slave 设备都有一个唯一的地址 在串行和 MB 网络中 只有被指定为主节点的节点可以启动一个命令 在以太网上 任何 一个设备都能发送一个 Modbus 命令 但是通常也只有一个主节点设 备启动指令 一个 ModBus 命令包含了打算执行的设备的 Modbus 地址 所有 设备都会收到命令 但只有指定位置的设备会执行及回应指令 地 址 0 例外 指定地址 0 的指令是广播指令 所有收到指令的设备 都会执行 不过不回应指令 所有的 Modbus 命令包含了检查码 以确定到达的命令没有被破坏 基本的 ModBus 命令能指令一个 RTU 改变它的寄存器的某个值 控制或者读取一个 I O 端口 以及指挥 设备回送一个或者多个其寄存器中的数据 有许多 modems 和网关支持 Modbus 协议 因为 Modbus 协议很简 单而且容易复制 它们当中一些为这个协议特别设计的 有使用有 线 无线通信甚至短消息和 GPRS 的不同实现 不过设计者需要克服 一些包括高延迟和时序的问题 MODBUS 通信过程如下图 MODBUS RTU 报文格式 起始位 设备地 址 功能代 码 数据CRC 校验结束符 T1 T2 T3 T48Bit8Bit n 个 8Bit 16BitT1 T2 T3 T4 MODBUS ASCII 报文格式 起始位 设备地 址 功能代码数据 LRC 校 验 结束符 1 个字符 2 个字 符 2 个字符 n 个字符 2 个字 符 2 个字符 MODBUS TCP 报文 交互标识协议标识 报文长度 设备标识 功能代码数据 2 字节 一般为 0 2 字节 一般为 0 2 字节 高字节在 前 1 字节 也就是设 备地址 1 个字符 n 个字符 实际上 MODBUS RTU 与 ASCII 的内容是完全相同的 不同的的 A SCII 方式用 标识帧起始 用 CR LF 标识帧结束 校验采 用 LRC 把 RTU 帧中一个字节的内容换成了 2 个 ASCII 字符 比如 在 RTU 方式下设备地址 01 只有一个字节 在 ASCII 方式下转换成 字符串 01 16 进制的 30 31 MODBUS TCP 中的设备标识 功能码等与 MODBUS RTU 相同 可 以认为是在 MODBUS RTU 报文的前边加了一个头 去掉了 CRC 校验这 个尾 MODBUS 协议定义了 4 种基本数据类型 可读写位数据 只读位 数据 只读 16 位数据 可读写 16 位数据 这些数据分别被称为线 圈状态 输入状态 输入寄存器 保持寄存器 MODBUS 协议中定义的这些数据都是一个从地址 1 开始的数组 访问时需要指明从哪个地址开始访问 访问多少个数据 下表是 MO DBUS 的功能码 ModBus 功能码 功能 码 名称作用 01 读取线圈状态取得一组逻辑线圈的当前状态 ON OFF 02 读取输入状态取得一组开关输入的当前状态 ON OFF 03 读取保持寄存器 在一个或多个保持寄存器中取得当前的二进制 值 04 读取输入寄存器 在一个或多个输入寄存器中取得当前的二进制 值 05 强置单线圈强置一个逻辑线圈的通断状态 06 预置单寄存器把具体二进值装入一个保持寄存器 07 读取异常状态 取得 8 个内部线圈的通断状态 这 8 个线圈的 地址由控制器决定 用户逻辑可以将这些线圈 定义 以说明从机状态 短报文适宜于迅速读 取状态 08 回送诊断校验 把诊断校验报文送从机 以对通信处理进行评 鉴 09 编程 只用于 484 使主机模拟编程器作用 修改 PC 从机逻辑 10 控询 只用于 484 可使主机与一台正在执行长程序任务从机通信 探询该从机是否已完成其操作任务 仅在含有 功能码 9 的报文发送后 本功能码才发送 11 读取事件计数 可使主机发出单询问 并随即判定操作是否成 功 尤其是该命令或其他应答产生通信错误时 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 6 4 保留作扩展功能备 用 65 7 2 保留以备用户功能 所用 留作用户功能的扩展编码 73 1 19 非法功能 120 127 保留留作内部作用 128 255 保留用于异常应答 各个功能码对应的数据类型 代 码 功能数据类型 01 读位 02 读位 03 读16 位整型 04 读16 位整型 05 写位 06 写整 16 位整型 15 写位 16 写整 16 位整型 MODBUS 协议相当复杂 但是常用的命令也就简单的几个 01 02 03 04 05 06 15 16 号命令 各个命令的功能和报文如下 01 命令 读取线圈状态 MODBUS 地址 00001 MODBUS 请求请求 功能码1 BYTE0X01 起始地址2 BYTE0X0000 TO 0XFFFF 读取数量2 BYTE1 TO 2000 0X7D0 MODBUS 响应响应 功能码1 BYTE0X01 字节计数1 BYTEN 线圈状态n BYTEn N or N 1 N 读取数量 8 如果余数不为 0 则 N N 1 错误错误 响应响应 功能码1 BYTE0X01 0X80 错误代码1 BYTE0 x1 or 0 x2 or 0 x3 or 0 x4 举例举例 请求响应 域名称数据 hex 域名称数据 hex 功能码01功能码01 起始地址高 字节 00字节计数03 起始地址低 字节 1327 h 20 状 态 CD 读取数量高 字节 0035 h 28 状 态 6B 读取数量低 字节 1338 h 36 状 态 05 02 命令 读取输入状态 MODBUS 地址 10001 MODBUS 请求请求 功能码1 BYTE0X02 起始地址2 BYTE0X0000 TO 0XFFFF 读取数量2 BYTE1 TO 2000 0X7D0 MODBUS 响应响应 功能码1 BYTE0X02 字节计数1 BYTEN 输入状态n BYTEn N or N 1 N 读取数量 8 如果余数不为 0 则 N N 1 错误错误 响应响应 功能码1 BYTE0X02 0X80 错误代码1 BYTE0 x1 or 0 x2 or 0 x3 or 0 x4 举例举例 请求响应 域名称数据 hex 域名称数据 hex 功能码02功能码02 起始地址高 字节 00字节计数03 起始地址低 字节 C4204 h 197 状态AC 读取数量高 字节 00212 h 205 状态DB 读取数量低 字节 16218 h 213 状态35 03 读保持寄存器 MODBUS 地址 40001 MODBUS 请求请求 功能码1 BYTE0X03 起始地址2 BYTE0X0000 TO 0XFFFF 读取数量2 BYTE1 TO 125 0X7D MODBUS 响应响应 功能码1 BYTE0X03 字节计数1 BYTEN 2 输入状态N 2 BYTE 错误错误 响应响应 功能码1 BYTE0X03 0X80 错误代码1 BYTE0 x1 or 0 x2 or 0 x3 or 0 x4 举例举例 请求响应 域名称数据 hex 域名称数据 hex 功能码03功能码03 起始地址高 字节 00字节计数06 起始地址低 字节 6B寄存器高 108 02 读取数量高 字节 00寄存器低 108 2B 读取数量低 字节 03寄存器高 109 00 寄存器低 109 00 寄存器高 110 00 寄存器低 110 64 04 输入寄存器 MODBUS 地址 30001 MODBUS 请求请求 功能码1 BYTE0X04 起始地址2 BYTE0X0000 TO 0XFFFF 读取数量2 BYTE1 TO 125 0X7D MODBUS 响应响应 功能码1 BYTE0X04 字节计数1 BYTEN 2 输入状态N 2 BYTE 错误错误 响应响应 功能码1 BYTE0X04 0X80 错误代码1 BYTE0 x1 or 0 x2 or 0 x3 or 0 x4 举例举例 请求响应 域名称数据 hex 域名称数据 hex 功能码04功能码04 起始地址高 字节 00字节计数02 起始地址低 字节 08输入寄存器高 9 00 读取数量高 字节 00输入寄存器低 9 0A 读取数量低 字节 01 05 设置单个继电器状态 MODBUS 请求请求 功能码1 BYTE0X05 设置地址2 BYTE0X0000 TO 0XFFFF 设置内容2 BYTE0 x0000 OR 0XFF00 0 x0000 释放继电器 0 xff00 吸合继电器 MODBUS 响应响应 功能码1 BYTE0X05 设置地址2 BYTE0X0000 TO 0XFFFF 设置内容2 BYTE0 x0000 OR 0XFF00 错误错误 响应响应 功能码1 BYTE0X05 0X80 错误代码1 BYTE0 x1 or 0 x2 or 0 x3 or 0 x4 举例举例 吸合吸合 6 号继电器号继电器 请求响应 域名称数据 hex 域名称数据 hex 功能码05功能码05 设置地址高 字节 00设置地址高 字节 00 设置地址低 字节 05设置地址低 字节 05 设置内容高 字节 FF设置内容高 字节 FF 设置内容低 字节 00设置内容低 字节 FF 06 设置单个保持寄存器 MODBUS 请求请求 功能码1 BYTE0X06 设置地址2 BYTE0X0000 TO 0XFFFF 设置内容2 BYTE0 x0000 to 0XFF00 MODBUS 响应响应 功能码1 BYTE0X06 设置地址2 BYTE0X0000 TO 0XFFFF 设置内容2 BYTE0 x0000 to 0XFF00 错误错误 响应响应 功能码1 BYTE0X06 0X80 错误代码1 BYTE0 x1 or 0 x2 or 0 x3 or 0 x4 举例举例 设置设置 9 号保持寄存器内容为号保持寄存器内容为 25 请求响应 域名称数据 hex 域名称数据 hex 功能码06功能码06 设置地址高 字节 00设置地址高 字节 00 设置地址低 字节 08设置地址低 字节 08 设置内容高 字节 00设置内容高 字节 00 设置内容低 字节 19设置内容低 字节 19 15 设置多个继电器状态 MODBUS 请求请求 功能码1 BYTE0X0F 设置起始地址2 BYTE 0X0000 TO 0XFFFF 设置长度2 BYTE0X0000 TO 0X7B0 字节计数1 BYTEN 设置内容N BYTE MODBUS 响应响应 功能码1 BYTE0X0F 设置起始地址2 BYTE0X0000 TO 0XFFFF 设置长度2 BYTE0X0000 TO 0X7B0 错误错误 响应响应 功能码1 BYTE0X0F 0X80 错误代码1 BYTE0 x1 or 0 x2 or 0 x3 or 0 x4 举例举例 设置继电器设置继电器 请求响应 域名称数据 hex 域名称数据 hex 功能码0F功能码0F 设置地址高 字节 00设置地址高 字节 00 设置地址低 字节 13设置地址低 字节 13 设置数量高 字节 00设置数量高 字节 00 设置数量低 字节 0A设置数量低 字节 0A 字节计数02 设置内容高 字节 CD 设置内容低 字节 01 16 设置多个保持寄存器 MODBUS 请求请求 功能码1 BYTE0X10 设置起始地址2 BYTE0X0000 TO 0XFFFF 设置长度2 BYTE0X0000 TO 0X7B0 字节计数1 BYTEN 2 设置内容N 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备交易买卖合同范本
- 赠送车辆抵押合同范本
- 药品推广服务协议合同
- 眉山项目保安合同范本
- 社区光伏租赁合同范本
- 进口丙烷销售合同范本
- 违约租赁合同解除协议
- Unit 1 School Subjects Let's Spell(教学设计)-2023-2024学年人教新起点版英语三年级下册
- 2025年绵阳中考填空试卷及答案
- 声音的高与低(教学设计)四年级上册科学教科版
- 2025年城区城投集团试题及答案
- 土地整治项目管理
- 2025浙江绍兴北站站区综合管理服务中心招聘辅助人员92人考试笔试参考题库附答案解析
- (2025年标准)sm调教协议书
- 研究生学术道德与学术规范课件
- 浙江省教育科学规划课题活评审表
- LY/T 2787-2017国家储备林改培技术规程
- GB/T 8269-2006柠檬酸
- 宏基因组测序在临床中的应用mNGS
- 煤矿电器设备失爆判定标准
- 中药药理学(全套课件)
评论
0/150
提交评论