A-B PLC与Modbus通讯协议及说明文档

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

A-B PLC与Modbus通讯协议及说明文档缩略图
🌐 This page is not yet available in English. Showing the Chinese version. Back to Chinese page.

摘要: 应用 3100/3150-MCM 模块实现 AB PLC 与 M0DBUS 网络通讯的方法, 该方法使用 M0DBUS Protocol, 通过开发 AB PLC 的应用程序, 从而实现主从结构网络通信。

一.  引言

目前的工业控制现场大量使用了 PLC 和各种智能仪表用于生产过程控制。 随着控制规模的扩大和控制功能的复杂化, 常需要多台 PLC 及一定数量的外设 仪表组成一个控制系统。

M0DBUS是美国 M0DIC0N 公司制订的一种串行传输协议, 可实现主从命令响 应型通信。作为一种工业通信和分布式控制系统协议, 已经得到多家公司的 PLC 和智能仪表支持。

A-B company(Allen-Bradley) 是美国生产可编程控制器的主要厂家之一, 具 有先进的通信和数据处理功能。在水处理行业中, 使用大量的可编程控制器用 于生产过程控制, among them A-B 公司的 PLC 占了相当的比重。

由于不同硬件厂商支持不同的工业通信和分布式控制系统协议, 要实现AB PLC 与 M0DBUS仪表组成控制网络, 实现设备的连网, 就存在着互相通信协议转 换问题。

3100/3150-MCM 模块是 PR0s0FT TECHN0L0GY 公司推出的在 AB PLC 通用框架 上安装的 M0DBUS 通信接口模块。该模块可以实现 AB PLC 与 M0DBUS现场设备之 间的通信, 从而使 AB PLC 通信能力得到增强, 灵活实现 AB PLC 与 M0DBUS 网络 的互连, 完成复杂的控制要求。

本文基于自来水厂泵站集散控制系统的设计, 着重介绍 AB 公司的 sLC 系列 的 PLC 通过 3150-MCM 模块和 M0DBUs 网络连接的实现方法。

二.  系统联网方案

自来水厂泵站集散控制系统, 不仅实现一般的逻辑控制, 还具备了包括模 拟量在内的数值处理和网络通信等功能。在现场的实际应用中, 系统使用的电 机保护装置sepam2000采用了M0DBUS通信协议, 出于系统控制功能的需要, 要求 在AB PLC中实现对M0DBUS协议的支持。我们利用3150-MCM模块建立起M0DBUS设备网。

系统的网络结构遵循M0DBUS协议的规范, 采用标准简单的主从总线结构, 以PLC作为主机发起通信, 多台电机保护装置sepam2000作为从机, 各从机在进 行传输之前必需要等待来自主机的允许信号。主机可以发送和接收来自通信链 上从机的信息, 而从机则始终处于被动状态, 随时准备响应来自主机的通信请

求。设备层部分网络结构如图1。

A-B PLC与Modbus通讯协议及说明文档插图

三.  sepam2000 及 M0DBUS 协议的介绍

sepam2000 作为电机保护装置, 提供了所有保护、测量、控制、通信等功能。

sepam2000 与远程监控系统之间的通信是采用 M0DBUs 协议的通信方式。

M0DBUs的通信采用的是一种主/从式数据传输, 在主从结构的通信方式中, 有一台主机, 多台从机, 主机可与各个从机作双向通信, 而各从机之间不能通 信。主机与各个从机通信的报文形式为请求/响应帧方式。每次通信均由主机发 起, 不需握手。主机发出请求帧后, 等待从机返回响应帧直至响应时间超时。 从机只能通过提供数据响应主机的请求, 或根据请求做出相应的动作。

M0DBUs协议定义了主机请求的格式, 包括: 请求的编址, 要求动作的功能 Coding, 传输数据和错误校验等。请求中的编址(即地址码) 提供接收主机报文 的从机地址, 从机根据地址判别是否接受该请求, 用户必须设置每台从机的地 址。功能编码告诉指定编址的从机完成什么样的动作。数据字段中包含了从机 执行任务时所需的附加信息。例如, 功能编码03表示读取从机的保持寄存器并 返回其中的内容, 数据区中的信息就必须告诉从机从哪个寄存器开始读, 需要 读的寄存器数。错误校验字段为从机提供了信息完整性校验的方法。同样, 响 应的格式也是采用M0DBUs协议结构, 从机响应的功能编码与接受的请求的功能 编码相对应, 数据字段包含根据请求返回的数据, 错误校验字段允许主机确认 信息内容是否有效。

M0DBUs协议共有24种功能编码, 但是并不都适用于sepam2000, 实际应用中 sepam2000只是支持下面有限的几种:

01   读取输出状态

02   读取输入状态

03   读取内部寄存器内容

04   读取输入寄存器内容

05   强制单个输出状态

06   刷新单个寄存器内容

07   读取异常事件状态

08   诊断测试

11  读取计数器和状态字

15  强制多个输出状态

16  刷新多个寄存器内容

如果主机希望读取2号sepam2000从机中寄存器0805h-080Ah的内容, 则需要 调用功能03。主机请求和从机响应的帧格式如下:

请求帧:

address功能号数据起始寄存器编址寄存器数目错误校验字段
2030C0506CRC16

响应帧:

 address 功能号字节计数数据寄存器(0805) ……数据寄存器(080A)错误校验字段
2030CData1……Data6CRC16

而如果主机希望刷新2号sepam2000从机中寄存器0810h的内容并把寄存器 内容设置为1000, 则需要调用功能06。主机请求和从机响应的帧格式如下:

请求帧:

address功能号寄存器编址设置值错误校验字段
2060C0E1000CRC16

响应帧: (返回收到的请求帧)

address功能号寄存器编址设置值错误校验字段
2060C0E1000CRC16

sepam2000 的帧格式以及所执行的功能都有明确的定义, 不能随意更改。在 通信过程中, 要确保主机和各从机的对应关系正确。此外, 用户可以根据实际 需要配置合适的传输波特率、字符奇偶校验、停止位的个数等通信参数设置。

四.  AB PLC 中 M0DBUs 协议的实现

1. MCM 模块的通信控制

PR0s0FT TECHN0L0GY 公司的 3100/3150-MCM 通信模块, 相当于网络接口, PLC 通过 MCM 模块与 M0DBUs 总线相连。MCM 模块能快速、可靠地在 AB PLC 中实 现 M0DBUs Protocol。

3100/3150-MCM 通信模块可供用户选择使用主机模式或者从机模式。当 MCM 模块设定为主机, 它对连接到总线上的从机进行控制, 支持 M0DBUs 协议中(01、 02、03、04、05、06、15、16) 8 种功能编码, 可以发送多达一百条定制的请求 指令, 并支持以4广播” 方式发出请求。当 MCM 模块指定为从机, 它响应主机 的请求, 此时能够支持 M0DBUs 协议中(01、02、03、04、05、06、08、15、16) 9 种功能编码。同时, 无论是主机模式或者是从机模式, 3100/3150-MCM 通信模 块都支持 AsCII 和 RTU 两种传输模式。

当 AB PLC 配置了 3100/3150-MCM 通信模块作为主机模式时, PLC 采用周期 扫描方式, 按请求指令的顺序与从机交换数据。每次扫描期间, 处理器使用逻 辑写指令将主机内存中要输出到各从机的数据传送到 3100/3150-MCM 通信模块 中的发送缓冲区, 模块根据存储的功能指令, 发送到指定的从机: 而各从机响 应后返回的数据, 3100/3150-MCM 通信模块将其先存放在接收缓冲区, 然后 PLC 使用逻辑读指令把数据移入相应的输入数据存储区。周而复始, 使主机与从机 中的数据得到周期性的刷新。整个数据流程如图 2 所示:

A-B PLC与Modbus通讯协议及说明文档插图1

2. MCM 模块与 M0DBUs 的硬件连接

MCM 模块使用的是与 Rs232C 兼容的标准通讯接口, 但在实际应用中由于要实 现多点通信, 所以采用 Rs485 方式。图 3 是 3150-MCM 模块 9 芯串行口与 M0DBUS的连接图

A-B PLC与Modbus通讯协议及说明文档插图2

3.  MCM 模块的缓冲区管理

PLC 与 MCM 模块之间是通过模块输入、输出映像文件进行数据传送。PLC 写 数据时, 将数据写入输出映像文件, 然后 3100/3150-MCM 通信模块把数据映射到相应的缓冲区位置上: PLC 读数据时, 根据映射地址, 从输入映像文件中读取 模块缓冲区中对应地址的数据。映像文件的数据传送单位为一个 50 字节的数据 块, PLC 必须循环地一次传送一个数据块。

MCM 把缓冲区按数据传送的单位大小, 分为若干个块, 并一一标号, 用块号 对应起来, 并且划分为三个区, 分别用于数据、指令、参数设置。数据存储区 从 0 块号开始, 结束于 79 块号, 中间有 4000 个字节的空间, 用于存储接收的 数据和发送的数据, 是主机、从机交换数据的场所: 指令存储区从第 80 块至第 99 块, 共 1000 个字节, 用于存储主机模式下, 模块的功能指令表, 每次扫描, 顺序按功能指令列表向从机发出请求帧: No. 255 块号前 40 个字节则专门定义为 模块设置参数存储区, 用于初始化模块。

在通信过程中, 首先要对主机进行初始化, 即对第 255 块号对应的缓冲区 内容进行参数配置, 主要是定义通信端口的设置, 模块缓冲区的详细划分。设 置的有以下参数:

(1)     定义 MCM 通信模块两个独立的通讯接口设置。包括: 选择主机模式 或者从机模式、定义字符奇偶校验、停止位的个数, 传输的波特率, 响应延时等参数。

(2)     定义模块的缓冲区中存储接收数据的数据存储区。包括: 接收数据 存储区的起始块号, 存储区的连续块数。

(3)     定义模块的缓冲区中存储发送数据的数据存储区。包括: 发送数据 存储区的起始块号, 存储区的连续块数。

(4)     定义模块的缓冲区中指令存储区。由于指令存储区固定从 80 号数 据块开始, 所以只需指定存储区的块数。

4 . MCM 模块的功能指令设置

MCM 模块处于主机模式下时, 功能指令列表存放在模块缓冲区中的指令存 储区。主机向从机发出请求时, 模块从指令存储区逐条读出功能指令, 并按照 M0DBUs 请求帧格式发送数据。

指令存储区中每条功能指令的具体内容如下:

1模块通信端口选择
2从机的站地址。从机在接收数据时将本站编址的值与收到的站 地址比较, 以此判定信息是否是发给本站的。而主机在接收时 则将收到的站地址与发送的站地址比较, 以判断是否是正确的从机响应
3指令的功能编码
4源地址。即主机要发送或接收的数据在缓冲区中的起始数据地址
5数据长度。即主机要发送或接收的数据的字节数
6目的地址。即从机要接收或响应的数据的寄存器地址
7数据的类型。用于标示读、写的数据是双字节的浮点数还是单字节的整数
8轮询时间

如果主机希望在 1 号通讯接口读取 2 No. sepam2000 从机中寄存器       0805h-080Ah 的内容并存放到模块缓冲区第 50 个字节开始的连续 6 个字节中,

功能指令内容如下:

 端口号从机地址功能编码 源地址数据长度 目的地址 Type time
123506080500

5. AB PLC 通讯程序的开发

程序执行时, 在第一个扫描周期, 都必须设置 MCM 的状态, 即初始化 MCM 模块。

通信程序中, PLC 在输入、输出映像文件中为 MCM 缓冲区设置当前以及后 续读写指针, 分别指向当前 MCM 缓冲区数据块号, 后续缓冲区数据块号。若 MCM 处于数据传送允许状态, 即 I1:1/0 = 1 , 00:1/0 = 0 时, PLC 判别当前读写 指针, 调用相应读写逻辑指令。如果指针指向接收数据的数据存储区, 则PLC 从 MCM 模块中接收数据: 如果指针指向发送数据的数据存储区, 则 PLC 向 MCM 模块发送数据: 如果指针指向指令存储区, 则 PLC 向 MCM 模块传送功能指令。 每次执行一个数据块的传送, 并在传送后, 把后续读写指针覆盖当前读写指针, 从而在下个扫描周期进行下一个数据块的传送。PLC 自动周期性扫描, 按照编定 的功能指令向从机的输入/输出数据进行发送/receive, 以满足数据传输的要求。

根据 PLC 的逻辑指令及 MCM 的通信原理, 画出了图 4 所示的主机通信程序

结构框图。

A-B PLC与Modbus通讯协议及说明文档插图3

五.  结束语

经过现场调试, 实现了 1 台 AB PLC 与 13 台 sEPAM2000 组成的 M0DBUs 网 络连接。实际应用证明, 这种方式组成的系统结构简单, 应用方便, 能满足复 杂的控制需要。

技术术语(共 6 个)—— Click to Expand
RS485工业常用的差分串行通信标准,支持多点通信
RS232点对点串行通信标准,常用于短距离设备通信
registerModbus 寄存器存储数据单元,分线圈/离散输入/保持/输入寄存器四类
PLC可编程逻辑控制器,工业自动化控制的核心设备
Baud rate串行通信每秒传输符号数,Modbus RTU常用9600/19200
保持寄存器Modbus 16位可读写数据,地址从40001开始
来源/工具信息 —— Click to Expand
来源 Modbus Chinese Network(modbus.cn) —— China leadingModbuscommunication protocol technical community Category Debugging software and tool tutorial 字数 5434 字 · 阅读约 14 分钟 更新 2026-07-01 永久链接 https://www.modbus.cn/11444.html
Recommended Tool: Modbus Debug Assistant WeChat Mini Program
Modbus Chinese Network官方推出的Modbus debugging tool,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 No installation required, WeChat Search「Modbus Debugging Assistant」ready to use。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
Related Tags
Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.