Modbus通讯协议.doc

上传人:sk****8 文档编号:3501667 上传时间:2019-06-01 格式:DOC 页数:15 大小:92KB
下载 相关 举报
Modbus通讯协议.doc_第1页
第1页 / 共15页
Modbus通讯协议.doc_第2页
第2页 / 共15页
Modbus通讯协议.doc_第3页
第3页 / 共15页
Modbus通讯协议.doc_第4页
第4页 / 共15页
Modbus通讯协议.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、Modbus 通讯协议目录Modbus 协议简介 两种传输方式Modbus 协议简介 两种传输方式展开编 辑 本 段 Modbus 协 议 简 介Modbus 协 议 是 应 用 于 电 子 控 制 器 上 的 一 种 通 用 语 言 。 通 过 此 协 议 ,控制 器 相 互 之 间 、 控 制 器 经 由 网 络 ( 例 如 以 太 网 ) 和 其 它 设 备 之 间 可 以 通 信 。它 已 经 成 为 一 通 用 工 业 标 准 。 有 了 它 ,不 同 厂 商 生 产 的 控 制 设 备 可 以 连 成工 业 网 络 ,进 行 集 中 监 控 。 此 协 议 定 义 了 一 个 控

2、制 器 能 认 识 使 用 的 消 息 结 构 ,而 不 管 它 们 是 经 过 何 种 网 络 进 行 通 信 的 。 它 描 述 了 一 控 制 器 请 求 访 问 其 它 设备 的 过 程 ,如 果 回 应 来 自 其 它 设 备 的 请 求 ,以 及 怎 样 侦 测 错 误 并 记 录 。 它 制定 了 消 息 域 格 局 和 内 容 的 公 共 格 式 。 当 在 一 Modbus 网 络 上 通 信 时 ,此 协 议 决 定 了 每 个 控 制 器 须 要 知 道 它 们 的设 备 地 址 ,识 别 按 地 址 发 来 的 消 息 ,决 定 要 产 生 何 种 行 动 。 如 果

3、需 要 回 应 ,控 制 器 将 生 成 反 馈 信 息 并 用 Modbus 协 议 发 出 。 在 其 它 网 络 上 ,包 含 了Modbus 协 议 的 消 息 转 换 为 在 此 网 络 上 使 用 的 帧 或 包 结 构 。 这 种 转 换 也 扩 展 了根 据 具 体 的 网 络 解 决 节 地 址 、 路 由 路 径 及 错 误 检 测 的 方 法 。 在 Modbus 网 络 上 转 输标 准 的 Modbus 口 是 使 用 一 RS-232C 兼 容 串 行 接 口 ,它 定 义 了 连 接 口 的针 脚 、 电 缆 、 信 号 位 、 传 输 波 特 率 、 奇 偶 校

4、 验 。 控 制 器 能 直 接 或 经 由Modem 组 网 。 控 制 器 通 信 使 用 主 从 技 术 ,即 仅 一 设 备 ( 主 设 备 ) 能 初 始 化 传 输 ( 查询 ) 。 其 它 设 备 ( 从 设 备 ) 根 据 主 设 备 查 询 提 供 的 数 据 作 出 相 应 反 应 。 典 型的 主 设 备 : 主 机 和 可 编 程 仪 表 。 典 型 的 从 设 备 : 可 编 程 控 制 器 。 主 设 备 可 单 独 和 从 设 备 通 信 ,也 能 以 广 播 方 式 和 所 有 从 设 备 通 信 。 如 果单 独 通 信 ,从 设 备 返 回 一 消 息 作

5、为 回 应 ,如 果 是 以 广 播 方 式 查 询 的 ,则 不 作 任何 回 应 。 Modbus 协 议 建 立 了 主 设 备 查 询 的 格 式 : 设 备 ( 或 广 播 ) 地 址 、 功 能代 码 、 所 有 要 发 送 的 数 据 、 一 错 误 检 测 域 。 从 设 备 回 应 消 息 也 由 Modbus 协 议 构 成 ,包 括 确 认 要 行 动 的 域 、 任 何 要返 回 的 数 据 、 和 一 错 误 检 测 域 。 如 果 在 消 息 接 收 过 程 中 发 生 一 错 误 ,或 从 设备 不 能 执 行 其 命 令 ,从 设 备 将 建 立 一 错 误 消

6、 息 并 把 它 作 为 回 应 发 送 出 去 。 在 其 它 类 型 网 络 上 转 输在 其 它 网 络 上 ,控 制 器 使 用 对 等 技 术 通 信 ,故 任 何 控 制 都 能 初 始 和 其 它控 制 器 的 通 信 。 这 样 在 单 独 的 通 信 过 程 中 ,控 制 器 既 可 作 为 主 设 备 也 可 作 为从 设 备 。 提 供 的 多 个 内 部 通 道 可 允 许 同 时 发 生 的 传 输 进 程 。 在 消 息 位 ,Modbus 协 议 仍 提 供 了 主 从 原 则 ,尽 管 网 络 通 信 方 法 是 “对等 ”。 如 果 一 控 制 器 发 送 一

7、 消 息 ,它 只 是 作 为 主 设 备 ,并 期 望 从 从 设 备 得 到回 应 。 同 样 ,当 控 制 器 接 收 到 一 消 息 ,它 将 建 立 一 从 设 备 回 应 格 式 并 返 回 给发 送 的 控 制 器 。 查 询 回 应 周 期( 1) 查 询 查 询 消 息 中 的 功 能 代 码 告 之 被 选 中 的 从 设 备 要 执 行 何 种 功 能 。 数 据 段 包含 了 从 设 备 要 执 行 功 能 的 任 何 附 加 信 息 。 例 如 功 能 代 码 03 是 要 求 从 设 备 读保 持 寄 存 器 并 返 回 它 们 的 内 容 。 数 据 段 必 须

8、包 含 要 告 之 从 设 备 的 信 息 : 从 何寄 存 器 开 始 读 及 要 读 的 寄 存 器 数 量 。 错 误 检 测 域 为 从 设 备 提 供 了 一 种 验 证 消息 内 容 是 否 正 确 的 方 法 。 ( 2) 回 应 如 果 从 设 备 产 生 一 正 常 的 回 应 ,在 回 应 消 息 中 的 功 能 代 码 是 在 查 询 消 息中 的 功 能 代 码 的 回 应 。 数 据 段 包 括 了 从 设 备 收 集 的 数 据 : 象 寄 存 器 值 或 状 态 。如 果 有 错 误 发 生 ,功 能 代 码 将 被 修 改 以 用 于 指 出 回 应 消 息 是

9、 错 误 的 ,同 时 数据 段 包 含 了 描 述 此 错 误 信 息 的 代 码 。 错 误 检 测 域 允 许 主 设 备 确 认 消 息 内 容 是否 可 用 。 编 辑 本 段 两 种 传 输 方 式控 制 器 能 设 置 为 两 种 传 输 模 式 ( ASCII 或 RTU) 中 的 任 何 一 种 在 标 准 的Modbus 网 络 通 信 。 用 户 选 择 想 要 的 模 式 ,包 括 串 口 通 信 参 数 ( 波 特 率 、 校 验方 式 等 ) ,在 配 置 每 个 控 制 器 的 时 候 ,在 一 个 Modbus 网 络 上 的 所 有 设 备 都 必须 选 择

10、相 同 的 传 输 模 式 和 串 口 参 数 。 所 选 的 ASCII 或 RTU 方 式 仅 适 用 于 标 准 的 Modbus 网 络 ,它 定 义 了 在 这些 网 络 上 连 续 传 输 的 消 息 段 的 每 一 位 ,以 及 决 定 怎 样 将 信 息 打 包 成 消 息 域 和如 何 解 码 。 在 其 它 网 络 上 ( 象 MAP 和 Modbus Plus) Modbus 消 息 被 转 成 与 串 行 传输 无 关 的 帧 。 1、 ASCII 模 式 当 控 制 器 设 为 在 Modbus 网 络 上 以 ASCII( 美 国 标 准 信 息 交 换 代 码 )

11、 模式 通 信 ,在 消 息 中 的 每 个 8Bit 字 节 都 作 为 两 个 ASCII 字 符 发 送 。 这 种 方 式的 主 要 优 点 是 字 符 发 送 的 时 间 间 隔 可 达 到 1 秒 而 不 产 生 错 误 。 代 码 系 统 十 六 进 制 ,ASCII 字 符 0.9,A.F 消 息 中 的 每 个 ASCII 字 符 都 是 一 个 十 六 进 制 字 符 组 成 每 个 字 节 的 位 1 个 起 始 位 7 个 数 据 位 ,最 小 的 有 效 位 先 发 送 1 个 奇 偶 校 验 位 ,无 校 验 则 无 CRC 域 是 两 个 字 节 ,包 含 一 1

12、6 位 的 二 进 制 值 。 它 由 传 输 设 备 计 算 后 加 入到 消 息 中 。 接 收 设 备 重 新 计 算 收 到 消 息 的 CRC,并 与 接 收 到 的 CRC 域 中 的 值比 较 ,如 果 两 值 不 同 ,则 有 误 。 CRC 是 先 调 入 一 值 是 全 “1”的 16 位 寄 存 器 ,然 后 调 用 一 过 程 将 消 息 中连 续 的 8 位 字 节 各 当 前 寄 存 器 中 的 值 进 行 处 理 。 仅 每 个 字 符 中 的 8Bit 数 据对 CRC 有 效 ,起 始 位 和 停 止 位 以 及 奇 偶 校 验 位 均 无 效 。 CRC 产

13、 生 过 程 中 ,每 个 8 位 字 符 都 单 独 和 寄 存 器 内 容 相 或 ( OR) ,结 果向 最 低 有 效 位 方 向 移 动 ,最 高 有 效 位 以 0 填 充 。 LSB 被 提 取 出 来 检 测 ,如 果LSB 为 1,寄 存 器 单 独 和 预 置 的 值 或 一 下 ,如 果 LSB 为 0,则 不 进 行 。 整 个 过程 要 重 复 8 次 。 在 最 后 一 位 ( 第 8 位 ) 完 成 后 ,下 一 个 8 位 字 节 又 单 独 和 寄存 器 的 当 前 值 相 或 。 最 终 寄 存 器 中 的 值 ,是 消 息 中 所 有 的 字 节 都 执

14、行 之 后 的CRC 值 。 CRC 添 加 到 消 息 中 时 ,低 字 节 先 加 入 ,然 后 高 字 节 。 CRC 简 单 函 数 如 下 : unsigned short CRC16(puchMsg, usDataLen) unsigned char *puchMsg ; /* 要 进 行 CRC 校 验 的 消 息 */ unsigned short usDataLen ; /* 消 息 中 字 节 数 */ unsigned char uchCRCHi = 0xFF ; /* 高 CRC 字 节 初 始 化 */ unsigned char uchCRCLo = 0xFF ;

15、/* 低 CRC 字 节 初 始 化 */ unsigned uIndex ; /* CRC 循 环 中 的 索 引 */ while (usDataLen-) /* 传 输 消 息 缓 冲 区 */ uIndex = uchCRCHi *puchMsgg+ ; /* 计 算 CRC */ uchCRCHi = uchCRCLo auchCRCHiuIndex ; uchCRCLo = auchCRCLouIndex ; return (uchCRCHi 8 uchCRCLo) ; /* CRC 高 位 字 节 值 表 */ static unsigned char auchCRCHi = 0

16、x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0

17、x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0

18、x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0

19、x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0

20、x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0

21、x80, 0x41, 0x00, 0xC1, 0x81, 0x40 ; /* CRC 低 位 字 节 值 表 */ static char auchCRCLo = 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x

22、1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x

23、3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x

24、66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0x

25、B3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x

26、8D, 0x4D, 0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 ; ModBus 网 络 是 一 个 工 业 通 信 系 统 ,由 带 智 能 终 端 的 可 编 程 序 控 制 器 和计 算 机 通 过 公 用 线 路 或 局 部 专 用 线 路 连 接 而 成 。 其 系 统 结 构 既 包 括 硬 件 、 亦包 括 软 件 。 它 可 应 用 于 各 种 数 据 采 集 和 过 程 监 控 。 下 表 1 是 ModBu

27、s 的 功 能码 定 义 。 表 1 ModBus 功 能 码 01 READ COIL STATUS 02 READ INPUT STATUS 03 READ HOLDING REGISTER 04 READ INPUT REGISTER 05 WRITE SINGLE COIL 06 WRITE SINGLE REGISTER 15 WRITE MULTIPLE COIL 16 WRITE MULTIPLE REGISTER ModBus 网 络 只 是 一 个 主 机 ,所 有 通 信 都 由 他 发 出 。 网 络 可 支 持 247 个之 多 的 远 程 从 属 控 制 器 ,但 实

28、 际 所 支 持 的 从 机 数 要 由 所 用 通 信 设 备 决 定 。 采用 这 个 系 统 ,各 PC 可 以 和 中 心 主 机 交 换 信 息 而 不 影 响 各 PC 执 行 本 身 的 控 制任 务 。 ( 1) ModBus 的 传 输 方 式 在 ModBus 系 统 中 有 2 种 传 输 模 式 可 选 择 。 这 2 种 传 输 模 式 与 从 机 PC通 信 的 能 力 是 同 等 的 。 选 择 时 应 视 所 用 ModBus 主 机 而 定 ,每 个 ModBus 系 统只 能 使 用 一 种 模 式 ,不 允 许 2 种 模 式 混 用 。 一 种 模 式

29、是 ASCII( 美 国 信 息 交换 码 ) ,另 一 种 模 式 是 RTU( 远 程 终 端 设 备 ) 这 两 种 模 式 的 定 义 见 表 3 表 3 ASCII 和 RTU 传 输 模 式 的 特 性 ASCII 可 打 印 字 符 便 于 故 障 检 测 ,而 且 对 于 用 高 级 语 言 ( 如 Fortan) 编程 的 主 计 算 机 及 主 PC 很 适 宜 。 RTU 则 适 用 于 机 器 语 言 编 程 的 计 算 机 和 PC主 机 。 用 RTU 模 式 传 输 的 数 据 是 8 位 二 进 制 字 符 。 如 欲 转 换 为 ASCII 模 式 ,则每 个

30、 RTU 字 符 首 先 应 分 为 高 位 和 低 位 两 部 分 ,这 两 部 分 各 含 4 位 ,然 后 转 换成 十 六 进 制 等 量 值 。 用 以 构 成 报 文 的 ASCII 字 符 都 是 十 六 进 制 字 符 。ASCII 模 式 使 用 的 字 符 虽 是 RTU 模 式 的 两 倍 ,但 ASCII 数 据 的 译 玛 和 处 理 更为 容 易 一 些 ,此 外 ,用 RTU 模 式 时 报 文 字 符 必 须 以 连 续 数 据 流 的 形 式 传 送 ,用 ASCII 模 式 ,字 符 之 间 可 产 生 长 达 1s 的 间 隔 ,以 适 应 速 度 较 快

31、 的 机 器 。 ( 2) ModBus 的 数 据 校 验 方 式 CRC-16( 循 环 冗 余 错 误 校 验 ) CRC-16 错 误 校 验 程 序 如 下 : 报 文 ( 此 处 只 涉 及 数 据 位 ,不 指 起 始 位 、停 止 位 和 任 选 的 奇 偶 校 验 位 ) 被 看 作 是 一 个 连 续 的 二 进 制 ,其 最 高 有 效 位( MSB) 首 选 发 送 。 报 文 先 与 X 16 相 乘 ( 左 移 16 位 ) ,然 后 看X 16+X 15+X 2+1 除 ,X 16+X 15+X 2+1 可 以 表 示 为 二 进 制 数1100000000000

32、0101。 整 数 商 位 忽 略 不 记 ,16 位 余 数 加 入 该 报 文 ( MSB 先 发送 ) ,成 为 2 个 CRC 校 验 字 节 。 余 数 中 的 1 全 部 初 始 化 ,以 免 所 有 的 零 成 为一 条 报 文 被 接 收 。 经 上 述 处 理 而 含 有 CRC 字 节 的 报 文 ,若 无 错 误 ,到 接 收 设备 后 再 被 同 一 多 项 式 ( X 16+X 15+X 2+1) 除 ,会 得 到 一 个 零 余 数 ( 接 收设 备 核 验 这 个 CRC 字 节 ,并 将 其 与 被 传 送 的 CRC 比 较 ) 。 全 部 运 算 以 2 为

33、 模( 无 进 位 ) 。 习 惯 于 成 串 发 送 数 据 的 设 备 会 首 选 送 出 字 符 的 最 右 位 ( LSB-最 低 有 效位 ) 。 而 在 生 成 CRC 情 况 下 ,发 送 首 位 应 是 被 除 数 的 最 高 有 效 位 MSB。 由 于在 运 算 中 不 用 进 位 ,为 便 于 操 作 起 见 ,计 算 CRC 时 设 MSB 在 最 右 位 。 生 成 多项 式 的 位 序 也 必 须 反 过 来 ,以 保 持 一 致 。 多 项 式 的 MSB 略 去 不 记 ,因 其 只 对商 有 影 响 而 不 影 响 余 数 。 生 成 CRC-16 校 验 字

34、 节 的 步 骤 如 下 : 装 如 一 个 16 位 寄 存 器 ,所 有 数 位 均 为 1。 该 16 位 寄 存 器 的 高 位 字 节 与 开 始 8 位 字 节 进 行 “异 或 ”运 算 。 运 算结 果 放 入 这 个 16 位 寄 存 器 。 把 这 个 16 寄 存 器 向 右 移 一 位 。 若 向 右 ( 标 记 位 ) 移 出 的 数 位 是 1,则 生 成 多 项 式 1010000000000001和 这 个 寄 存 器 进 行 “异 或 ”运 算 ;若 向 右 移 出 的 数 位 是 0,则 返 回 。 重 复 和 ,直 至 移 出 8 位 。 另 外 8 位

35、与 该 十 六 位 寄 存 器 进 行 “异 或 ”运 算 。 重 复 ,直 至 该 报 文 所 有 字 节 均 与 16 位 寄 存 器 进 行 “异 或 ”运 算 ,并移 位 8 次 。 这 个 16 位 寄 存 器 的 内 容 即 2 字 节 CRC 错 误 校 验 ,被 加 到 报 文 的 最 高有 效 位 。 另 外 ,在 某 些 非 ModBus 通 信 协 议 中 也 经 常 使 用 CRC16 作 为 校 验 手 段 ,而且 产 生 了 一 些 CRC16 的 变 种 ,他 们 是 使 用 CRC16 多 项 式X 16+X 15+X 2+1,单 首 次 装 入 的 16 位

36、寄 存 器 为 0000;使 用 CRC16 的 反序 X 16+X 14+X 1+1,首 次 装 入 寄 存 器 值 为 0000 或 FFFFH。 LRC( 纵 向 冗 余 错 误 校 验 ) LRC 错 误 校 验 用 于 ASCII 模 式 。 这 个 错 误 校 验 是 一 个 8 位 二 进 制 数 ,可作 为 2 个 ASCII 十 六 进 制 字 节 传 送 。 把 十 六 进 制 字 符 转 换 成 二 进 制 ,加 上 无循 环 进 位 的 二 进 制 字 符 和 二 进 制 补 码 结 果 生 成 LRC 错 误 校 验 ( 参 见 图 ) 。这 个 LRC 在 接 收

37、设 备 进 行 核 验 ,并 与 被 传 送 的 LRC 进 行 比 较 ,冒 号 ( : ) 、回 车 符 号 ( CR) 、 换 行 字 符 ( LF) 和 置 入 的 其 他 任 何 非 ASCII 十 六 进 制 字符 在 运 算 时 忽 略 不 计 。下表是 Modbus 支持的功能码:功能码名称作用01读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF)02读取输入状态取得一组开关输入的当前状态(ON/OFF)03读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值04读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值05强置单线圈强置一个逻辑线圈的通断状态06预置单寄

38、存器把具体二进值装入一个保持寄存器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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。