A-B PLC与Modbus通讯Protocol及说明Document

freeFree Technical Resource

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

A-B PLC与Modbus通讯Protocol及说明Document缩略图
🌐 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 的应用程序, 从而实现主从结构网络Communication。

一.  引言

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

M0DBUS是美国 M0DIC0N 公司制订的一种串行传输Protocol, 可实现主从命令响 应型Communication。作为一种工业Communication和Distributed控制systemProtocol, 已经得到多家公司的 PLC 和智能仪表支持。

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

由于不同硬件厂商支持不同的工业Communication和Distributed控制systemProtocol, 要实现AB PLC 与 M0DBUS仪表组成控制网络, 实现设备的连网, 就existence着互相CommunicationProtocol转 换问题。

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

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

二.  system联网方案

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

system的网络结构遵循M0DBUSProtocol的规范, 采用标准简单的主从总线结构, 以PLC作为主机发起Communication, 多台Motor保护装置sepam2000作为从机, 各从机在进 行传输之前必需要等待来自主机的允许信号。主机可以send和receive来自Communication链 上从机的信息, 而从机则始终处于被动状态, 随时准备Response来自主机的Communication请

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

A-B PLC与Modbus通讯Protocol及说明Document插图

三.  sepam2000 及 M0DBUS Protocol的介绍

sepam2000 作为Motor保护装置, 提供了所有保护、测量、控制、Communication等Function。

sepam2000 与远程监控system之间的Communication是采用 M0DBUs Protocol的Communication方式。

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

M0DBUsProtocol定义了主机Request的format, 包括: Request的编址, 要求动作的Function Coding, 传输data和Error校验等。Request中的编址(即address码) 提供receive主机message 的从机address, 从机根据address判别是否接受该Request, 用户必须设置每台从机的地 址。FunctionCoding告诉指定编址的从机Complete什么样的动作。datafield中包含了从机 执行任务时所需的附加信息。例如, FunctionCoding03表示读取从机的保持register并 返回其中的内容, data area中的信息就必须告诉从机从哪个register开始读, 需要 读的register数。Error校验field为从机提供了信息完整性校验的方法。同样, 响 应的format也是采用M0DBUsProtocol结构, 从机Response的FunctionCoding与接受的Request的Function Coding相对应, datafield包含根据Request返回的data, Error校验field允许主机Confirm 信息内容是否effective。

M0DBUsProtocol共有24种FunctionCoding, 但是并不都适用于sepam2000, 实际应用中 sepam2000只是支持下面有限的几种:

01   读取输出状态

02   读取input state

03   读取内部register内容

04   Read input register内容

05   强制单个输出状态

06   refresh单个register内容

07   读取异常事件状态

08   诊断测试

11  读取计数器和状态字

15  强制多个输出状态

16  refresh多个register内容

如果主机希望读取2号sepam2000从机中register0805h-080Ah的内容, 则需要 调用Function03。主机Request和从机Response的帧format如下:

Request帧:

addressFunction号datastartregister编址register数目Error校验field
2030C0506CRC16

Response帧:

 address Function号byte计数dataregister(0805) ……dataregister(080A)Error校验field
2030CData1……Data6CRC16

而如果主机希望refresh2号sepam2000从机中register0810h的内容并把register 内容设置为1000, 则需要调用Function06。主机Request和从机Response的帧format如下:

Request帧:

addressFunction号register编址设置值Error校验field
2060C0E1000CRC16

Response帧: (返回收到的Request帧)

addressFunction号register编址设置值Error校验field
2060C0E1000CRC16

sepam2000 的帧format以及所执行的Function都有明确的定义, 不能随意更改。在 Communication过程中, 要确保主机和各从机的对应关系正确。此外, 用户可以根据实际 需要配置合适的传输Baud rate、字符奇even parity、stop bit的个数等Communication parameters设置。

四.  AB PLC 中 M0DBUs Protocol的实现

1. MCM 模块的Communication控制

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

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

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

A-B PLC与Modbus通讯Protocol及说明Document插图1

2. MCM 模块与 M0DBUs 的硬件connect

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

A-B PLC与Modbus通讯Protocol及说明Document插图2

3.  MCM 模块的缓冲区管理

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

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

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

(1)     定义 MCM Communication模块两个独立的通讯Interface设置。包括: 选择主机模式 或者从机模式、定义字符奇even parity、stop bit的个数, 传输的Baud rate, Response延时等参数。

(2)     定义模块的缓冲区中存储receivedata的data存储区。包括: receivedata 存储区的start块号, 存储区的连续块数。

(3)     定义模块的缓冲区中存储senddata的data存储区。包括: senddata 存储区的start块号, 存储区的连续块数。

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

4 . MCM 模块的Function指令设置

MCM 模块处于主机模式下时, Function指令列表存放在模块缓冲区中的指令存 储区。主机向从机发出Request时, 模块从指令存储区逐条读出Function指令, 并按照 M0DBUs Request帧formatsenddata。

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

1模块Communication端口选择
2从机的站address。从机在receivedata时将本站编址的值与收到的站 address比较, 以此判定信息是否是发给本站的。而主机在receive时 则将收到的站address与send的站address比较, 以判断是否是正确的从机Response
3指令的FunctionCoding
4源address。即主机要send或receive的data在缓冲区中的startdataaddress
5dataLength。即主机要send或receive的data的byte count
6目的address。即从机要receive或Response的data的register address
7data的Type。用于标示读、写的data是双byte的浮点数还是单byte的整数
8轮询time

如果主机希望在 1 号通讯Interface读取 2 号 sepam2000 从机中register       0805h-080Ah 的内容并存放到模块缓冲区第 50 个byte开始的连续 6 个byte中,

Function指令内容如下:

 端口号从机addressFunctionCoding 源addressdataLength 目的address Type time
123506080500

5. AB PLC Communication program的开发

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

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

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

结构框图。

A-B PLC与Modbus通讯Protocol及说明Document插图3

五.  End语

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

Technology术语(共 6 个)—— 点击展开
RS485工业常用的差分串行Communication标准,支持多点Communication
RS232点对点串行Communication标准,常用于短距离设备Communication
registerModbus register存储data单元,分线圈/离散输入/保持/输入register四类
PLC可编程逻辑控制器,Automation控制的核心设备
Baud rate串行Communication每秒传输符号数,Modbus RTU常用9600/19200
保持registerModbus 16位可读写data,address从40001开始
来源/Tools信息 —— 点击展开
来源 Modbus Chinese Network(modbus.cn) —— China leadingModbuscommunication protocol technical community Category debug软件与ToolsTutorial 字数 5434 字 · 阅读约 14 分钟 更新 2026-07-01 永久链接 https://www.modbus.cn/11444.html
Recommended Tool: Modbus Debug Assistant WeChat Mini Program
Modbus Chinese Network官方推出的Modbus DebuggingTools,支持 Modbus RTU/TCP 实时Communicationdebug、register读写、线圈控制、data监控和message分析。 No installation required, WeChat Search「Modbus DebuggingAssistant」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 *.