GB/T ××××—××××
第三部 分: Modbus 协议 在 TCP/IP 上
的实 现指南
88
GB/T ××××—××××
1 引言
1.1 范围
这 个文 件的范 围 是 介绍 TCP/IP 上的 MODBUS 报文传输服务 ,提供参考 信 息 以 帮 助软 件开发
者 使用 这种 服务。 这 个文中 不 包括 MODBUS 功能码 的 编码内 容 ,这些 信 息请参 阅 MODBUS 协议规
范 [2] 。
这 个文 件 准 确 而 全 面地 描述了 MODBUS 报文传输服务的实现。 其 目 的是 便 于在 那 些 使用
MODBUS 报文传输服务的 设备之间 进 行 可 互操 作 。
这 个文 件 主要 由 三部分 组成 :
l 在 TCP/IP 上的 MODBUS 协议 概 述
l
l 针 对一个 MODBUS 实现实 例 的目 标模型 建 议的实现准 则 。
MODBUS 客户机 、 服务 器 和网关 工具 的 功能 描述
1.2 客 户机 / 服 务器模型
MODBUS 报文传输服务 提供设备之间 的 客户机 /服务 器 通信 ,这些 设备联接 在一个 Ethernet(以
太网) TCP/IP 网 络 上。
这个 客户机 /服务 器 模 式是 基 于 4 种类 型报文:
l
l
l
l
MODBUS 请求
MODBUS 证 实
MODBUS 指示
MODBUS 响 应
MODBUS 客户机
确认
请求
正 式
指示
响 应
MODBUS 服务 器
MODBUS 请求 是 客户机 在网 络 上发 送 用 来 启 动 事务处理的报文
MODBUS 指示是服务 端接 收 的 请求 报文
MODBUS 响 应是服务 器发 送 的 响应信 息
MODBUS 证 实是在 客户端接 收 的响 应信 息
MODBUS 报文传输服务( 客户机 /服务 器 模型)用于实 时信 息 交换 :
l 在两个 设备 应用程 序 之间
l 在 设备 应用和 其它设备之间
l 在 HMI/SCADA 应用程 序 和 设备之间
l 在一个 PC 和一个 提供 在 线 服务的 设备 程 序 之间
1.3 规 范 性引用文件
这章给 出了在 这个文 件之前 喜欢阅 读的文 件列 表:
[2]
[4]
MODBUS 协议规范
RFC1122
89
GB/T ××××—××××
2 缩略语
ADU
IETF
IP
MAC
MB
MBAP
PDU
PLC
TCP
BSD
MSL
应用 数据 单元
因特 网工 程 工作组
互连 网协议
介质 访问 控制
MODBUS
MODBUS 协议
协议 数据 单元
可编 程序逻辑控制 器
传输 控制 协议
伯克 利软 件 分 配
最大 段寿 命
90
3 背景 概要
3.1 协议 描述
3.1.1 总 体通信结构
GB/T ××××—××××
MODBUS TCP/IP 的通信 系统 可 以包括 不同类 型的 设备 :
l
l
连接至 TCP/IP 网 络 的 MODBUS TCP/IP 客户机 和服务 器设备
互连设备, 例 如:在 TCP/IP 网 络和串行链路 子 网 之间互连 的网 桥 、路 由 器或 网关 ,联
接, 该 子 网 允许将 MODBUS 串行链路 客户机 和服务 器 终 端设备连接 起 来 。
MODBUS
客户机
TCP/IP
MODBUS
客户机
TCP/IP
MODBUS
客户机
串行链路
MODBUS
服 务 器
TCP/IP
MODBUS
服 务 器
TCP/IP
客户机 TCP/IP 网关
MODBUS TCP/IP
MODBUS
服务 器 串
行链路
MODBUS 服
务 器 串行链路
服务 器 TCP/IP
网关
MODBUS 串行链路
图 1:MODBUS TCP/IP通信结构
MODBUS 协议 定 义 了一个 与基础 通信层 无 关的 简 单协议 数据单元 (PDU )。 特 定总线或 网 络 上
的 MODBUS 协议映射 能够 在 应用 数据单元 ( ADU ) 上 引入 一些附 加 域 。
地址域
功能码
数据
差错校验
ADU
PDU
图 2:通用 MODBUS帧
启 动 MODBUS 事务处理的 客户机 建立 MODBUS 应用 数 据 单元 。这 个 功能码 向 服务 器 指示 执 行
执 行 哪 种操 作 。
91
GB/T ××××—××××
3.1.2 TCP/IP 上的 MODBUS应用数据单 元
这节 描述了 MODBUS TCP/IP 网络 中 进 行的 MODBUS 请求或 响 应的 封装 。
MODBUS TCP/IP ADU
MBAP 报文 头
功能码
数 据
PDU
图 3: TCP/IP 上 的 MODBUS的 请 求 / 响应
在 TCP/IP 上使用一 种 专 用报文 头识 别 MODBUS 应用 数 据 单元 。将这 种 报文 头 称 为 MBAP 报文
头 ( MODBUS 协议报文 头 )。
这种 报文 头 提供 一 些与 串行链路上使用的 MODBUS RTU 应用 数 据 单元 比 较的 差 别 :
l 用 MBAP 报文 头 中的 单 个 字节 单元 标 识 符 取 代 MODBUS 串行链路上通 常 使用的 MODBUS
从 地址域 。 这 个 单元 标 识 符 用于 设备 的通信 , 这些 设备 使用 单 个 IP 地址 支持 多 个 独 立
MODBUS 终 端单元, 例 如:网 桥 、 路 由 器 和网关。
l 用 接 收 者 可以 验 证 完 成 报文的方 式设 计所 有 MODBUS 请求 和 响 应。 对 于 MODBUS PDU
有 固 定 长度 的功能码来 说 , 仅 功能码 就 足 够 了。 对 于在 请求或 响应中 携 带 一个 可 变 数 据的
功能码来 说 , 数据 域 包括 字节数 。
l 当 在 TCP 上 携 带 MODBUS 时,即 使将 报文分 成多 个信 息 包来 传输 ,办 事在 MBAP 报文 头
上 携 带 附 加 长度 信 息, 以 便 接 收 者能 识 别 报文 边 界 。 显 式 和 隐 式长度 规 则 的 存 在以 及
CRC-32 差错校验 码 的使用(在以太网上) 将 对请求或 响 应报文 产 生 极 小 的 未 检 出干 扰 。
3.1.3 MBAP 报 文头 描述
MBAP 报文 头 包括下 列 域 :
域
长度
描述
客户机
服务 器
事务 元 标 识 符
2 个 字节
MODBUS 请求 /响
客户机 启 动
服务 器 从 接 收 的 请求 中 重
应事务处理的 识 别
新复 制
码
协议标 识 符
2 个 字节
0=MODBUS 协议
客户机 启 动
服务 器 从 接 收 的 请求 中 重
长度
2 个 字节
以下 字节 的 数量
客 户 机 启 动 ( 请
服务 器 ( 响 应) 启动
新复 制
求 )
单元 标 识 符
1 个 字节
串行链路 或 其 它总
客户机 启 动
服务 器 从 接 收 的 请求 中 重
线 上连接 的 远 程从
站的 识 别 码
新复 制
报文 头 为 7 个 字节长 :
事务处理标 识 符:用于事务处理 配 对 。在 响 应中 ,MODBUS 服务 器复 制 请求 的事务处理标 识符 。
协议标 识 符 :用于 系统内 的 多 路 复 用。通 过 值 0 识 别 MODBUS 协议。
长度 : 长度域 是下一个 域 的 字节数 , 包括 单元 标 识 符 和 数 据 域 。
单元 标 识 符 :为了 系统内 路 由, 使用 这 个 域。 专门 用于通 过以太网 TCP-IP 网 络 和 MODBUS 串
行链路 之间 的网关 对 MODBUS 或 MODBUS+ 串行链路从站的通信。 MODBUS 客户机 在 请求 中 设 置
这 个 域 ,在 响 应中服务 器 必须 利 用相 同 的 值返回 这个 域 。
92
GB/T ××××—××××
在 注 册 的 502 端 口 上 利 用 TCP 发 送所 有 MODBUS/TCP ADU 。
注:用 Big-endian 编 码不同 域 。
3.2 MODBUS 功能码 描述
在 MODBUS 协议规范 [2] 中详细 说明了 MODBUS 应用层协议上使用的标准 功能码 。
93
GB/T ××××—××××
4 功能 描述
这 里提供 的 MODBUS组件结构 是一个 既包 含 MODBUS客户机 又包 含 MODBUS服务 器组件 的通用模
型 , 适 用于 任何 设备 。
有 些 设备 可能 仅 提供 服务 器或客户机组件 。
本 章的第一部分 ,给出一个有关 MODBUS报文传输服务 组件结构 的 简 要 概 述,然后 ,给 出结构 模
型 内 部 每一个 组件 的描述。
4.1 MODBUS 组件结构模型
用户应用
资
源
管
理
与
流
量
控
制
通讯
应用层
MODBUS
客户接口
MODBUS
客户接口
MODBUS客户机
MODBUS服务器
TCP
管理层
栈参数化
连接管理
访问控制
TCP/IP 栈
图 4 MODBUS报 文 传输 服 务概 念 结构
l 通信应用 层
一个 MODBUS设备 可以 提供 一个 客户机 和 / 或 服务 器 MODBUS接口 。
可 提供 一个 MODBUS后 台 接口, 允许 间接 的访问 用 户 应用 对 象 。
此 接口 由 四 部分 组成 :离散量 输入、离散量 输出( 线 圈 )、寄存 器 输 入 和 寄存 器 输出。 此 接口 与
用 户 应用 数据 之间 的映射 必须 加 以 定 义 ( 本 地 问 题 )。
基 本 数 据表
对 象 类型
离散量 输 入
线 圈
1 位
1 位
寄存 器 输 入
16 位 字
属性
只读
读 - 写
只读
说明
此 类 数 据 可来自 I/O 系统
此 类 数 据 可被 应用程 序 修 改
此 类 数 据 可来自 I/O 系统
94
寄存 器 输出
16 位 字
只写
此 类 数 据 可被 应用程 序 修 改
设备应用寄存器
设备应用寄存器
GB/T ××××—××××
MODBUS访问
离散输入
线圈
寄存器输入
寄存器输出
MODBUS请求
R
W
MODBUS访问
离散输入
线圈
R
寄存器输入
W
寄存器输出
MODBUS请求
MODBUS服务器设备
MODBUS服务器设备
图 5、 分 离数 据 块 的 MODBUS数据模型
6、 单 一 数 据 块 的 MODBUS数据模型
? MODBUS客户机
MODBUS客户机 允许 用 户 应用 清 晰 地控制与远 端设备 的信 息 交换 。MODBUS客户机 根据用 户 应用 向
MODBUS客户接口发 送 的 需 求中 所 包 含 的 参 数 生成 一个 MODBUS请求 。
MODBUS客户机 调用一个 MODBUS的事务处理 , 事务处理 管理包括 MODBUS证 实的 等 待 和处理。
? MODBUS客户机接口
MODBUS客户机接口提供 一个 接口, 使 得 用户 应用 能够 生 成对 包括 访问 MODBUS应用 对 象在 内 的
各类 MODBUS服务的 请求 。尽 管 在实现模型中以实 例 说明 ,但 是 MODBUS客户机接口 ( API)在 这
里 不 进 行描述。
? MODBUS服务 器
在 收到 一个 MODBUS请求 以 后 ,模 块 激 活 一个 本 地操 作 进 行读 、写、或 完 成其 他 操 作 。这些操 作
的处理 对 应用程 序 开发 人 员 来 说都 是 透 明的。 MODBUS服务 器 的主要 功能 是 等待 来自 TCP502 口
的 MODBUS请求, 处理 这 一 请求, 然后 生 成一个 MODBUS应 答, 应 答 取决于 设备 状 况 ( 场 境 )。
? MODBUS后 台 接口
MODBUS后 台 接口 是一个从 MODBUS服务 器 到 定 义 应用 对 象的用 户 应用 之间 的 接口 。
l
TCP管 理层
报文传输服务的主要 功能之 一是 管 理通信的 建立 和 结束 , 管 理 建立 在 TCP连接 上的 数 据 流 。
? 连接 管 理
在 客户机 和服务 器的 MODBUS模 块 之间 的通信 需要调用 TCP连接 管 理模 块。它 负 责 全面 管 理报文
传输 TCP连接 。
连接 管理中 存 在两 种可 能 :用 户应用 自 身 管理 TCP连接,或 全 部 由 这 个模 块 进 行 连接 管理 ,而
对 用 户 应用 透 明。 后 一 种 方 案灵 活 性较 差 。
95