收藏 分享(赏)

Modbus协议中文版(GB).pdf

上传人:精品资料 文档编号:9983154 上传时间:2019-09-24 格式:PDF 页数:127 大小:1.12MB
下载 相关 举报
Modbus协议中文版(GB).pdf_第1页
第1页 / 共127页
Modbus协议中文版(GB).pdf_第2页
第2页 / 共127页
Modbus协议中文版(GB).pdf_第3页
第3页 / 共127页
Modbus协议中文版(GB).pdf_第4页
第4页 / 共127页
Modbus协议中文版(GB).pdf_第5页
第5页 / 共127页
点击查看更多>>
资源描述

1、GB/T 0 前 言 -串行链路和 TCP/IP上的 MODBUS标准介绍 该标准包括两个通信规程中使用的 MODBUS应用层协议和服务规范: 串行链路上的 MODBUS MODBUS串行链路取决于 TIA/EIA标准: 232-F和 485-A。 TCP/IP上的 MODBUS MODBUS TCP/IP取决于 IETF标准: RFC793和 RFC791有关。 串行链路和 TCP/IP上的 MODBUS是根据相应 ISO层模型说明的两个通信规程。 下图强调指出了该标准的主要部分。绿色方框表示规范。灰色方框表示已有的国际 标准 ( TIA/EIA和 IETF标准)。 MODBUS报文 传输在

2、 TCP/IP 上的实现指南 49页 MODBUS 报文 传输在串行链路 上的实现指南 45页 MODBUS应用层 在 TCP/IP上的 MODBUS映射 TCP IETF RFC 793 IP IETF RFC 791 串行链路主站 /从站 以太网 II/802.3 IEEE 802.2 TIA/EIA-232-F TIA/EIA-485-A 以太网物理层 Modbus 协议规范 45页 MODBUS标准分为三部分。第一部分(“ Modbus协议规范”)描述了 MODBUS事 物处理。第二部分(“ MODBUS报文传输在 TCP/IP上的实现指南”) 提供 了一个有 助 于 开发者 实现 T

3、CP/IP上的 MODBUS应用层的 参考 信 息 。第三部分(“ MODBUS报文传 输在串行链路上的实现指南”) 提供 了一个有 助 于 开发者 实现串行链路上的 MODBUS 应用层的 参考 信 息 。 GB/T 1 第一部分: Modbus协议 GB/T 2 第一部分: Modbus协议 1 引言 1.1 范围 MODBUS是 OSI模型第 7层上的应用层报文传输协议 ,它 在 连接至不同类 型 总线或 网 络 的 设备 之间提供客户机 /服务 器 通信。 自 从 1979年 出现 工业 串行链路的事实标准以 来, MODBUS使 成千 上 万 的 自动化设备能够 通信。 目前,继续增

4、加对简单而雅观 的 MODBUS结构支持 。 互联 网 组织能够 使 TCP/IP栈 上的 保留系统端 口 502访问 MODBUS。 MODBUS是一个 请求 /应 答 协议 ,并且提供功能码 规 定 的服务。 MODBUS功能码 是 MODBUS 请求 /应 答 PDU的 元素 。 本 文 件 的 作 用是描述 MODBUS事务处理框 架内 使用的 功能码 。 1.2 规范性引用文件 1 RFC791,互联 网协议 , Sep81 DARPA 2 MODBUS协议 参考 指南 Rev J,MODICON, 1996年 6月, doc#PI_MBUS_300 MODBUS是一 项 应用层报文

5、传输协议 , 用于在通 过不同类 型的 总线或 网 络连接 的 设备之间 的 客 户机 /服务 器 通信。 目前, 使用下 列情况 实现 MODBUS: 以太网上的 TCP/IP。 各种媒体 (有 线 : EIA/TIA-232-E、 EIA-422、 EIA/TIA-485-A;光纤、无 线 等等 )上的 异步 串行 传输 。 MODBUS PLUS, 一 种 高速令牌 传 递 网 络 。 MODBUS应用层 基 于 TCP的 Modbus TCP IP 其 它 MODBUS+/HDL 主站 /从站 以太网 II/802.3 其 它 物理层 EIA/TIA-232或 EIA/TIA-485

6、以太网物理层 图 1: MODBUS通信栈 2 缩略语 ADU 应用 数 据 单元 GB/T 3 HDLC 高级数 据链路 控制 HMI 人 机 界面 IETF 因特 网 工 程 工作组 I/O 输 入 /输出 设备 IP 互连 网协议 MAC 介质 访问 控制 MB MODBUS协议 MBAP MODBUS协议 PDU 协议 数 据 单元 PLC 可编 程 逻辑控制 器 TCP 传输 控制 协议 3 背景概 要 MODBUS协议 允许 在 各种 网 络体系结构内 进 行 简单 通信。 MODBUS ON MB+ MODBUS ON RS232 MODBUS ON RS485 驱 动器 PLC

7、 HMI I/O I/O I/O PLC 驱 动器 PLC HMI I/O 驱 动器 PLC I/O I/O 驱 动器 I/O 网关 网关 网关 MODBUS通信 MODBUS ON TCP/IP 图 2: MODBUS网络体系结构的实例 每 种设备 ( PLC、 HMI、控制面板、驱 动 程 序、 动作 控制、 输 入 /输出 设备 ) 都 能 使用 MODBUS 协议 来 启 动 远 程 操 作 。 在 基 于串行链路和以太 TCP/IP网 络 的 MODBUS上 可 以 进 行相 同 通信。 一 些 网关 允许 在 几 种 使用 MODBUS协议的 总线或 网 络之间 进 行通信。 4

8、总体描述 4.1 协议描述 MODBUS协议 定 义 了一个 与基础 通信层 无 关的 简单 协议 数 据 单元 ( PDU)。 特 定总线或 网 络 上 的 MODBUS协议映射 能够 在应用 数 据 单元 ( ADU)上 引入 一 些附 加 域 。 GB/T 4 地址域 功能码 数 据 差错校验 ADU PDU 图 3:通用 MODBUS帧 启 动 MODBUS事务处理的 客户机 创建 MODBUS应用 数 据 单元 。 功能码 向 服务 器 指示 将执 行 哪 种 操 作 。 MODBUS协议 建立 了 客户机 启 动 的 请求 格式 。 用一个 字节编 码 MODBUS数 据 单元 的

9、 功能码 域 。有 效 的 码 字 范 围 是 十进制 1-255( 128-255为 异常响 应 保留 )。 当 从 客户机 向 服务 器设备发 送 报文 时 ,功能码 域 通 知 服务 器 执 行 哪 种 操 作 。 向 一 些 功能码加 入子 功能码来定 义多 项 操 作 。 从 客户机 向 服务 器设备发 送 的报文 数 据 域 包括 附 加 信 息, 服务 器 使用 这 个信 息 执 行 功能码定 义 的 操 作 。 这 个 域还 包括 离散 项目 和 寄存 器 地址、 处理的 项目 数量 以 及域 中的实际 数 据 字节数 。 在 某 种请求 中 , 数 据 域可 以是 不 存 在

10、的( 0长度 ), 在 此 情况 下服务 器不 需 要 任何附 加 信 息 。 功 能码 仅 说明 操 作 。 如果 在一个 正确 接 收 的 MODBUS ADU中 ,不 出现 与 请求 MODBUS功能 有关的 差错 , 那么 服 务 器至客户机 的 响 应 数 据 域 包括 请求 数 据。 如果 出现 与 请求 MODBUS功能 有关的 差错 , 那么 域 包 括一个 异常 码, 服务 器 应用 能够 使用 这 个 域 确 定 下一个 执 行的 操 作 。 例 如 ,客户机能够 读 一 组 离散量 输出 或 输 入 的 开 /关 状态 ,或者客户机能够 读 /写 一 组 寄存 器 的 数

11、 据 内 容 。 当 服务 器对客户机 响 应 时 ,它 使用 功能码 域 来 指示 正 常 ( 无差错 ) 响 应 或者 出现 某 种 差错 ( 称 为 异常响 应)。 对 于一个 正 常响 应 来 说 , 服务 器 仅 对 原始 功能码 响 应。 启 动请求 功能码 数 据 请求 操 作码 接 收 响 应 数 据 响 应 执 行 操 作 启 动 响 应 客户机 服务 器 图 4: MODBUS事务处理(无差错) 对 于 异常响 应 , 服务 器 返回 一个 与 原始 功能码 等 同 的 码,设 置 该 原始 功能码 的 最 高 有 效 位 为 逻 辑 1。 GB/T 5 启 动请求 功能码

12、 数 据 请求 差错 码 接 收 响 应 异常 码 在 操 作 中 检测 的 差错 启 动 差错 客户机 服务 器 图 5 MODBUS事务处理(异常响应) F 注释 : 需 要 管 理 超 时 , 以 便 明 确 地等 待 可 能不 会 出现的应 答 。 串行链路上第一个 MODBUS执 行的 长度 约束限 制 了 MODBUS PDU大小 ( 最大 RS485ADU=256 字节 )。 因此 , 对串行链路通信来说, MODBUS PDU=256-服务 器 地址 ( 1字节 ) -CRC( 2字节 ) 253 字节 。 从 而 : RS232 / RS485 ADU = 253字节 +服务

13、 器 地址 (1 byte) + CRC (2字节 ) = 256字节 。 TCP MODBUS ADU = 249字节 + MBAP (7字节 ) = 256字节 。 MODBUS协议 定 义 了三 种 PDU。 它 们 是: l MODBUS请求 PDU, mb_req_pdu l MODBUS响 应 PDU, mb_rsp_pdu l MODBUS异常响 应 PDU, mb_excep_rsp_pdu 定 义 mb_req_pdu为 : mb_req_pdu = function_code, request_data, 其 中 function_code - 1个 字节 MODBUS功能

14、码 request_data - n个 字节 , 这 个 域与 功能码 有关 ,并且 通 常 包括 诸 如 可 变 参考 、 变 量、数 据 偏移 量、子 功能码 等 信 息 。 定 义 mb_rsp_pdu为: mb_rsp_pdu = function_code, response_ data, 其 中 function_code - 1个 字节 MODBUS功能码 response_data - n个 字节 , 这 个 域与 功能码 有关 ,并且 通 常 包括 诸 如 可 变 参考 、 变 量、数 据 偏 移 量、子 功能码 等 信 息 。 定 义 mb_excep_rsp_pdu为:

15、mb_excep_rsp_pdu = function_code, request_data, 其 中 function_code - 1个 字节 MODBUS 功能码 + 0x80 exception_code - 1个 字节 , 在下表中 定 义 了 MODBUS异常 码 。 4.2 数据编码 l MODBUS使用一个 big-Endian 表示 地址 和 数 据 项 。 这 意味着 当 发 射 多 个 字节时 , 首先 发 送 最 高 有 效 位 。 例 如 : 寄存 器 大小 值 GB/T 6 16 比 特 0x1234 发 送 的第一 字节 为 0x12 然后 0x34 F 注释 :

16、 更详细 的信 息参 见 1。 4.3 MODBUS数据模型 MODBUS以一 系列 具 有 不同 特 征 表 格 上的 数 据模型为 基础 。 四 个 基 本 表 格 为: 基本表格 对象类型 访问类型 内容 离散量输入 单 个 比 特 只读 I/O系统提供 这 种类 型 数 据 线圈 单 个 比 特 读写 通 过 应用程 序 改变 这 种类 型 数 据 输入寄存器 16-比 特字 只读 I/O系统提供 这 种类 型 数 据 保持寄存器 16-比 特字 读写 通 过 应用程 序 改变 这 种类 型 数 据 输 入与 输出 之间 以 及 比 特 寻 址 的和 字 寻 址 的 数 据 项之间 的

17、 区别 并 没 有 暗 示 任何 应用 操 作 。 如果 这 是 对 可 疑 对 象核心 部分 最 自 然 的 解释 , 那么 这 种 区别 是 可 完全 接 受 的 ,而且 很普 通 , 以 便认 为 四 个 表 格 全 部 覆盖 了 另外 一个表 格 。 对 于 基 本 表 格 中 任何 一 项, 协议 都允许 单 个 地 选择 65536个 数 据 项,而且设 计那 些 项 的 读写 操 作 可 以 越 过 多 个 连续 数 据 项 直到 数 据 大小 规 格 限 制 , 这 个 数 据 大小 规 格 限 制与 事务处理 功能码 有关。 很显然 , 必须 将 通 过 MODBUS处理的

18、所 有 数 据 放置 在 设备 应用 存 储 器 中。 但 是 , 存 储 器 的物 理 地址 不 应该 与数 据 参考 混淆 。要 求 仅仅 是 数 据 参考 与 物理 地址 的链 接 。 MODBUS功能码 中使用的 MODBUS逻辑 参考 数字 是以 0开 始 的 无 符号整 数 索 引 。 l MODBUS模型实现的实 例 下 例 实 例 示出了两 种 在 设备 中 构 造 数 据的方 法 。 可 能 有 不同 的 结构, 这 个文 件 中 没 有 全 部描述 出 来 。 每 个 设备 根据 其 应用 都 有 它自 己 的 数 据 结构 。 实例 1:有 4个独立块的设备 下 例 实

19、例 示出了 设备 中的 数 据 结构, 这 个 设备 含 有 数字量 和模 拟 量、 输 入量 和输出 量 。 由 于 不 同 块 中的 数 据 不 相关 , 每 个 块 是相 互 独 立 。 按 不同 MODBUS功能码访问 每 个 块 。 GB/T 7 设备 应用 存 储 器 MODBUS访问 MODBUS服务 器设备 MODBUS请求 输 入离散量 线 圈 输 入寄存 器 保 存寄存 器 图 6:带有独立块的 MODBUS数据模型 实例 2: 仅有 1个块的设备 在 这 个实 例 中 ,设备 仅 有 1个 数 据 块 。通 过 几 个 MODBUS功能码 可 能 得 到 一个相 同 数

20、据 ,或 者 通 过 16比 特 访问 或 1个 访问 比 特 。 设备 应用 存 储 器 MODBUS请求 输 入离散量 线 圈 输 入寄存 器 保 存寄存 器 MODBUS服务 器设备 R R W W MODBUS访问 图 7:仅带有 1个块的 MODBUS数据模型 4.4 MODBUS事务处理的定义 下 列 状态 图描述了在服务 器 侧 MODBUS事务处理的一 般 处理 过 程。 GB/T 8 等 待 MB指示 确认 操 作码 确认 数 据 地址 确认 数 据 值 执 行 MB操 作 发 送 Modbus 响 应 发 送 Modbus 异常响 应 异常 码 _1 异常 码 _2 异常

21、码 _3 异常 码 _4_5_6 接 收 MB指示 无效 的 有 效 的 无效 的 无效 的 有 效 的 有 效 的 无效 的 有 效 的 图 8: MODBUS事务处理的状态图 一 旦 服务 器 处理 请求, 使用 合适 的 MODBUS服务 器 事务 建立 MODBUS响 应。 根据处理 结 果 , 可 以 建立 两 种类 型 响 应: l 一个 正 MODBUS响 应: 响 应 功能码 = 请求功能码 l 一个 MODBUS异常 响 应 (参 见 第 6.14节 ): l 用 来 为 客户机提供 处理 过 程中 与 被 发 现的 差错 相关 的 信 息 ; l 响 应 功能码 = 请求功

22、能码 + 0x80; l 提供 一个 异常 码来 指示 差错 原 因 。 5 功能码分类 有三 类 MODBUS功能码 。 它 们 是: 公共功能码 l 是 较好 地 被 定 义 的 功能 码, l 保 证 是 唯 一的 , l MODBUS组织 可 改变 的 , l 公 开 证 明的 , l 具 有 可 用的一 致性 测 试 , l MB IETF RFC中 证 明的 , GB/T 9 l 包 含 已 被 定 义 的 公共 指 配 功能码 和 未 来 使用的 未 指 配 保留供功能码 。 用户定义功能码 l 有两个用 户定 义 功能码 的 定 义 范 围 , 即 65至 72和 十进制 10

23、0至 110。 l 用 户 没 有 MODBUS组织 的 任何 批 准 就 可 以 选择 和实现一个 功能码 l 不能保 证被 选 功能码 的使用是 唯 一的。 l 如果 用 户 要 重新 设 置 功能 作 为一个 公共 功能码, 那么 用 户 必须 启 动 RFC, 以 便 将 改变 引入 公共 分 类 中 ,并且 指 配 一个 新 的 公共 功能码 。 保留功能码 l 一 些 公司 对 传 统 产品 通 常 使用的 功能码,并且 对 公共 使用是 无效 的 功能码 。 127 110 100 72 65 1 公共 功能码 用 户定 义 功能码 公共 功能码 用 户定 义 功能码 公共 功能

24、码 图 9: MODBUS功能码分类 GB/T 10 5.1 公共功能码定义 6 功能码描述 6.1 01 (0x01)读线圈 在一个 远 程 设备 中 , 使用该 功能码 读 取 线 圈 的 1至 2000连续 状态 。 请求 PDU详细 说明了 起 始 地址 , 即 指 定 的第一个 线 圈 地址 和 线 圈 编 号 。从 零 开 始寻 址 线 圈 。 因此 寻 址 线 圈 1-16为 0-15。 根据 数 据 域 的 每 个 比 特将响 应报文中的 线 圈 分 成 为一个 线 圈 。指示 状态 为 1= ON 和 0= OFF。 第一个 数 据 字节 的 LSB( 最 低 有 效 位 )

25、包括在 询 问 中 寻 址 的输出。 其 它线 圈依次 类 推 , 一 直到 这 个 字节 的 高 位 端 为 止 ,并 在 后 续 字节 中从 低 位到 高 位 的 顺 序 。 如果 返回 的输出 数量 不 是 八 的 倍 数 , 将 用 零填充 最后 数 据 字节 中的 剩余 比 特 ( 一 直到 字节 的 高 位 端 )。 字节数量域 说明了 数 据的 完整 字节数 。 请求 PDU 功能码 1个 字节 0x01 起 始 地址 2个 字节 0x0000 至 0xFFFF 线 圈 数量 2个 字节 1至 2000( 0x7D0) 响应 PDU 功能码 码 子 码 ( 十 六 进制 ) 页

26、物理 离散 量 输 入 读 输 入离散量 02 02 11 内 部 比 特 读 线 圈 01 01 10 比 特 访问 或 写 单 个 线 圈 05 05 16 物理 线 圈 写 多 个 线 圈 15 0F 37 输 入存 储 器 读 输 入寄存 器 04 04 14 读 多 个 寄存 器 03 03 13 16 比 特 访 问 内 部 存 储 器 写 单 个 寄存 器 06 06 17 或 写 多 个 寄存 器 16 10 39 物理输出 存 储 器 读 /写 多 个 寄存 器 23 17 47 屏蔽 写 寄存 器 22 16 46 读 文 件 记录 20 6 14 42 数 据 访 问 文

27、 件 记录 访问 写 文 件 记录 21 6 15 44 封装 接口 读 设备 识 别 码 43 14 2B 功能码 1个 字节 0x01 字节数 1个 字节 N* 线 圈 状 态 N个 字节 n N或 N+1 GB/T 11 *N 输出 数量 /8, 如果 余 数 不 等 于 0, 那么 N = N+1 错误 功能码 1个 字节 功能码 0x80 异常 码 1个 字节 01或 02或 03或 04 这 是一个 请求 读 离散量 输出 20-38的实 例 : 请求 响 应 域 名 ( 十 六 进制 ) 域 名 ( 十 六 进制 ) 01 01 00 03 13 CD 00 6B 功能 起 始

28、地址 Hi 起 始 地址 Lo 输出 数量 Hi 输出 数量 Lo 13 功能 字节数 输出 状态 27-20 输出 状态 35-28 输出 状态 38-36 05 将 输 出 27-20的 状态 表示为 十 六 进制字节 值 CD,或 二 进制 1100 1101。输出 27是 这 个 字节 的 MSB, 输出 20是 LSB。 通 常 , 将 一个 字节 内 的 比 特 表示为 MSB位 于 左侧 , LSB位 于 右侧 。第一 字节 的输出从 左 至 右 为 27至 20。下一个 字节 的输出从 左 到 右 为 35至 28。当 串行 发 射 比 特时 , 从 LSB向 MSB传输: 2

29、0 . . . 27、 28 . . . 35等等 。 在 最后 的 数 据 字节 中 , 将 输出 状态 38-36表示为 十 六 进制字节 值 05,或 二 进制 0000 0101。输出 38是 左侧 第 六 个 比 特 位置 , 输出 36是 这 个 字节 的 LSB。用 零填充 五 个 剩余 高 位比 特 。 注: 用 零填充五 个 剩余 比 特 (一 直到 高 位 端 )。 GB/T 12 NO YES YES YES MB 服务 器接 收 mb_req_pdu 支持 的 功能码 0x0001 输出 数量 0x07D0 起 始 地址 OK 和 起 始 地址 +输出 数量 OK 读

30、取 离散 输出 OK MB服务 器发 送 mb_rsp 退 出 进入 异常 码 01 异常 码 03 异常 码 02 异常 码 04 MB服务 器发 送 mb_exception_rsp NO NO NO YES 请求 处理 图 10:读取线圈状态图 6.2 02 (0x02)读离散量输入 在一个 远 程 设备 中 , 使用该 功能码 读 取 离散量 输 入 的 1至 2000连续 状态 。 请求 PDU详细 说明 了 起 始 地址 , 即 指 定 的第一个输 入地址 和输 入编 号 。从 零 开 始寻 址 输 入 。 因此 寻 址 输 入 1-16为 0-15。 根据 数 据 域 的 每 个

31、 比 特将响 应报文中的 离散量 输 入 分 成 为一个输 入 。指示 状态 为 1= ON 和 0= OFF。 第一个 数 据 字节 的 LSB( 最 低 有 效 位 )包括在 询 问 中 寻 址 的输 入 。 其 它 输 入 依次 类 推 , 一 直 到 这 个 字节 的 高 位 端 为 止 ,并 在 后 续 字节 中从 低 位到 高 位 的 顺 序 。 如果 返回 的输 入数量 不 是 八 的 倍 数 , 将 用 零填充 最后 数 据 字节 中的 剩余 比 特 ( 一 直到 字节 的 高 位 端 )。 字节数量域 说明了 数 据的 完整 字节数 。 GB/T 13 请求 PDU 功能码

32、1个 字节 0x02 起 始 地址 2个 字节 0x0000至 0xFFFF 输 入数量 2个 字节 1至 2000( 0x7D0) 响应 PDU 功能码 1个 字节 0x82 字节数 1个 字节 N* 输 入 状态 N* 1个 字节 *N 输出 数量 /8, 如果 余 数 不 等 于 0, 那么 N = N+1 错误 差错 码 1字节 0x82 异常 码 1字节 01或 02或 03或 04 这 是一个 请求 读 取 离散量 输 入 197-218的实 例 : 请求 响 应 域 名 ( 十 六 进制 ) 域 名 ( 十 六 进制 ) 02 02 00 03 C4 AC 00 DB 功能 起

33、始 地址 Hi 起 始 地址 Lo 输出 数量 Hi 输出 数量 Lo 16 功能 字节数 输 入 状态 204-197 输 入 状态 212-205 输 入 状态 218-213 35 将离散量 输 入 状态 204-197表示为 十 六 进制字节 值 AC,或 二 进制 1010 1100。输 入 204是 这 个 字节 的 MSB, 输 入 197是 这 个 字节 的 LSB。 将离散量 输 入 状态 218-213表示为 十 六 进制字节 值 35,或 二 进制 0011 0101。输 入 218位 于 左侧 第 3比 特 , 输 入 213是 LSB。 注: 用 零填充 2个 剩余

34、比 特 (一 直到 高 位 端 )。 GB/T 14 NO YES YES YES MB 服务 器接 收 mb_req_pdu 支持 的 功能码 0x0001 输 入数量 0x07D0 起 始 地址 OK 和 起 始 地址 +输 入数量 OK 读 取 离散 输 入 OK MB服务 器发 送 mb_rsp 退 出 进入 异常 码 01 异常 码 03 异常 码 02 异常 码 04 MB服务 器发 送 mb_exception_rsp NO NO NO YES 请求 处理 图 11:读离散量输入的状态图 6.3 03 (0x03)读保持寄存器 在一个 远 程 设备 中 , 使用该 功能码 读 取

35、 保持 寄存 器连续 块 的 内 容 。 请求 PDU说明了 起 始 寄存 器 地址 和 寄存 器 数量 。从 零 开 始寻 址寄存 器 。 因此 , 寻 址寄存 器 1-16为 0-15。 将响 应报文中的 寄存 器 数 据分 成 每 个 寄存 器 有两 字节 , 在 每 个 字节 中 直 接 地 调 整 二 进制 内 容 。 对 于 每 个 寄存 器, 第一个 字节 包括 高 位比 特 ,并且 第二个 字节 包括 低 位比 特 。 请求 功能码 1个 字节 0x03 起 始 地址 2个 字节 0x0000至 0xFFFF 寄存 器 数量 2个 字节 1至 125( 0x7D) GB/T 1

36、5 响应 功能码 1个 字节 0x03 字节数 1个 字节 2 N* 寄存 器 值 N* 2个 字节 *N 寄存 器 的 数量 错误 差错 码 1个 字节 0x83 异常 码 1个 字节 01或 02或 03或 04 这 是一个 请求 读 寄存 器 108-110的实 例 : 请求 响 应 域 名 ( 十 六 进制 ) 域 名 ( 十 六 进制 ) 03 03 00 06 6B 02 00 2B 功能 高 起 始 地址 低起 始 地址 高寄存 器 编 号 低 寄存 器 编 号 03 00 00 00 功能 字节数 寄存 器 值 Hi( 108) 寄存 器 值 Lo( 108) 寄存 器 值 H

37、i( 109) 寄存 器 值 Lo( 109) 寄存 器 值 Hi( 110) 寄存 器 值 Lo( 110) 64 将寄存 器 108的 内 容 表示为两个 十 六 进制字节 值 02 2B,或 十进制 555。 将寄存 器 109-110的 内 容 分 别 表示为 十 六 进制 00 00和 00 64,或 十进制 0和 100。 GB/T 16 NO YES YES YES MB 服务 器接 收 mb_req_pdu 支持 的 功能码 0x0001 寄存 器 数量 0x007D 起 始 地址 OK 和 起 始 地址 +寄存 器 数量 OK 读 多 个 寄存 器 OK MB服务 器发 送

38、mb_rsp 退 出 进入 异常 码 01 异常 码 03 异常 码 02 异常 码 04 MB服务 器发 送 mb_exception_rsp NO NO NO YES 请求 处理 图 12:读保持寄存器的状态图 6.4 04(0x04)读输入寄存器 在一个 远 程 设备 中 , 使用该 功能码 读 取 1至 大约 125的 连续 输 入寄存 器 。 请求 PDU说明了 起 始 地址 和 寄存 器 数量 。从 零 开 始寻 址寄存 器 。 因此 , 寻 址 输 入寄存 器 1-16为 0-15。 将响 应报文中的 寄存 器 数 据分 成 每 个 寄存 器 为两 字节 , 在 每 个 字节 中

39、 直 接 地 调 整 二 进制 内 容 。 对 于 每 个 寄存 器, 第一个 字节 包括 高 位比 特 ,并且 第二个 字节 包括 低 位比 特 。 请求 功能码 1个 字节 0x04 起 始 地址 2个 字节 0x0000至 0xFFFF 输 入寄存 器 数量 2个 字节 0x0001至 0x007D GB/T 17 响应 功能码 1个 字节 0x04 字节数 1个 字节 2 N* 输 入寄存 器 N* 2个 字节 *N 输 入寄存 器 的 数量 错误 差错 码 1个 字节 0x84 异常 码 1个 字节 01或 02或 03或 04 这 是一个 请求 读 输 入寄存 器 9的实 例 :

40、请求 响 应 域 名 ( 十 六 进制 ) 域 名 ( 十 六 进制 ) 04 04 00 02 08 00 00 0A 功能 起 始 地址 Hi 起 始 地址 Lo 输 入寄存 器 数量 Hi 输 入寄存 器 数量 Lo 01 功能 字节数 输 入寄存 器 9 Hi 输 入寄存 器 9 Lo 将 输 入寄存 器 9的 内 容 表示为两个 十 六 进制字节 值 00 0A,或 十进制 10。 GB/T 18 NO YES YES YES MB 服务 器接 收 mb_req_pdu 支持 的 功能码 0x0001 寄存 器 的 数量 0x007D 起 始 地址 OK 和 起 始 地址 +寄存 器

41、 数量 OK 读 输 入寄存 器 OK MB服务 器发 送 mb_rsp 退 出 进入 异常 码 01 异常 码 03 异常 码 02 异常 码 04 MB服务 器发 送 mb_exception_rsp NO NO NO YES 请求 处理 图 13:读输入寄存器的状态图 6.5 05 (0x05)写单个线圈 在一个 远 程 设备 上 , 使用该 功能码 写 单 个输出为 ON或 OFF。 请求 数 据 域 中的 常量 说明 请求 的 ON/OFF状态 。 十 六 进制 值 FF 00请求 输出为 ON。 十 六 进制 值 00 00请求 输出为 OFF。 其 它 所 有 值 均 是 非法

42、的 ,并且对 输出 不 起 作 用。 请求 PDU说明了强 制 的 线 圈 地址 。从 零 开 始寻 址 线 圈 。 因此 , 寻 址 线 圈 1为 0。 线 圈 值 域 的 常 量 说明 请求 的 ON/OFF状态 。 十 六 进制 值 0XFF00请求线 圈 为 ON。 十 六 进制 值 0X0000请求线 圈 为 OFF。 其 它 所 有 值 均 为 非法 的 ,并且对线 圈 不 起 作 用。 正 常响 应是 请求 的应 答, 在 写 入 线 圈 状态 之 后返回 这 个 正 常响 应。 GB/T 19 请求 功能码 1个 字节 0x05 输出 地址 2个 字节 0x0000至 0xFF

43、FF 输出 值 2个 字节 0x0000至 0x00 响应 功能码 1个 字节 0x05 输出 地址 2个 字节 0x0000至 0xFFFF 输出 值 2个 字节 0x0000至 0xFF00 错误 差错 码 1个 字节 0x85 异常 码 1个 字节 01或 02或 03或 04 这 是一个 请求 写 线 圈 173为 ON的实 例 : 请求 响 应 域 名 ( 十 六 进制 ) 域 名 ( 十 六 进制 ) 05 05 00 00 AC AC FF FF 功能 输出 地址 Hi 输出 地址 Lo 输出 值 Hi 输出 值 Lo 00 功能 输出 地址 Hi 输出 地址 Lo 输出 值 H

44、i 输出 值 Lo 00 GB/T 20 NO YES YES YES MB 服务 器接 收 mb_req_pdu 支持 的 功能码 输出 值 0x0000或 0xFF00 输出 地址 OK 写 单 个输出 OK MB服务 器发 送 mb_rsp 退 出 进入 异常 码 01 异常 码 03 异常 码 02 异常 码 04 MB服务 器发 送 mb_exception_rsp NO NO NO YES 请求 处理 图 14:写单个输出状态图 6.6 06 (0x06)写单个寄存器 在一个 远 程 设备 中 , 使用该 功能码 写 单 个 保持 寄存 器 。 请求 PDU说明了 被 写 入寄存

45、器 的 地址 。从 零 开 始寻 址寄存 器 。 因此 , 寻 址寄存 器 1为 0。 正 常响 应是 请求 的应 答, 在 写 入寄存 器内 容 之 后返回 这 个 正 常响 应。 请求 功能码 1个 字节 0x06 寄存 器 地址 2个 字节 0x0000至 0xFFFF 寄存 器 值 2个 字节 0x0000至 0xFFFF GB/T 21 响应 功能码 1个 字节 0x06 寄存 器 地址 2个 字节 0x0000至 0xFFFF 寄存 器 值 2个 字节 0x0000至 0xFFFF 错误 差错 码 1个 字节 0x86 异常 码 1个 字节 01或 02或 03或 04 这 是一个

46、 请求 将十 六 进制 00 03写 入寄存 器 2的实 例 : 请求 响 应 域 名 ( 十 六 进制 ) 域 名 ( 十 六 进制 ) 06 06 00 00 01 01 00 00 功能 寄存 器 地址 Hi 寄存 器 地址 Lo 寄存 器 值 Hi 寄存 器 值 Lo 03 功能 输出 地址 Hi 输出 地址 Lo 输出 值 Hi 输出 值 Lo 03 GB/T 22 NO YES YES YES MB 服务 器接 收 mb_req_pdu 支持 的 功能码 0x0000 寄存 器 值 0xFFFF 寄存 器 地址 OK 写 单 个 寄存 器 OK MB服务 器发 送 mb_rsp 退

47、 出 进入 异常 码 01 异常 码 03 异常 码 02 异常 码 04 MB服务 器发 送 mb_exception_rsp NO NO NO YES 请求 处理 图 15:写单个寄存器状态图 6.7 15 (0x0F) 写多个线圈 在一个 远 程 设备 中 , 使用该 功能码 强 制 线 圈 序 列 中的 每 个 线 圈 为 ON或 OFF。 请求 PDU说明了 强 制 的 线 圈 参考 。从 零 开 始寻 址 线 圈 。 因此 , 寻 址 线 圈 1为 0。 请求 数 据 域 的 内 容 说明了 被 请求 的 ON/OFF 状态 。 域 比 特 位置 中的 逻辑 “ 1” 请求 相应输

48、出为 ON。 域 比 特 位置 中的 逻辑 “ 0” 请求 相应输出为 OFF。 正 常响 应 返回 功能码 、 起 始 地址 和强 制 的 线 圈 数量 。 GB/T 23 请求 PDU 功能码 1个 字节 0x0F 起 始 地址 2个 字节 0x0000至 0xFFFF 输出 数量 2个 字节 0x0001至 0x07B0 字节数 1个 字节 N* 输出 值 N* 1个 字节 *N 输出 数量 /8, 如果 余 数 不 等 于 0, 那么 N = N+1 响应 PDU 功能码 1个 字节 0x0F 起 始 地址 2个 字节 0x0000至 0xFFFF 输出 数量 2个 字节 0x0001至 0x07B0 错误 差错 码 1个 字节 0x8F 异常 码 1个 字节 01或 02或 03或 04 这 是一个 请求 从 线 圈 20开 始 写 入 10个 线 圈 的实 例 : 请求 的

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报