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

一.  引言

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

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

A-B 公司(Allen-Bradley) 是美国生产可编程控制器的主要厂家之一, 具 有先进的通信和数据处理功能。在水处理行业中, 使用大量的可编程控制器用 于生产过程控制, 其中 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通讯协议及说明文档插图1

三.  sepam2000 及 M0DBUS 协议的介绍

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

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

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

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

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

01   读取输出状态

02   读取输入状态

03   读取内部寄存器内容

04   读取输入寄存器内容

05   强制单个输出状态

06   刷新单个寄存器内容

07   读取异常事件状态

08   诊断测试

11  读取计数器和状态字

15  强制多个输出状态

16  刷新多个寄存器内容

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

请求帧:

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

响应帧:

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

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

请求帧:

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

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

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

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

四.  AB PLC 中 M0DBUs 协议的实现

1. MCM 模块的通信控制

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

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通讯协议及说明文档插图3

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

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

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

3.  MCM 模块的缓冲区管理

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

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

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

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

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

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

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

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

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

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

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

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

功能指令内容如下:

 端口号从机地址功能编码 源地址数据长度 目的地址 类型 时间
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 自动周期性扫描, 按照编定 的功能指令向从机的输入/输出数据进行发送/接收, 以满足数据传输的要求。

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

结构框图。

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

五.  结束语

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

相关新闻

  • RS-485总线优化指南:解决不同设备通讯中的电平不稳定问题

    RS-485总线优化指南:解决不同设备通讯中的电平不稳定问题

    RS-485总线应用中,时常会遇到不同的RS-485设备之间通讯,不同的设备间兼容性存在不同,有的设备很稳定,有的设备却时常收到异常数据,这是什么原因导致的呢?又应如何避免呢? RS-485应用异常 某储能客户在使用ZLG的全隔离RS-485收发芯片SM4500过程中,时常会出现数据不稳定情况,如下图 1,客户设备与不同的RS-485设备通讯时,有的设备通讯稳定,有的设备则时不时会收到异常电平。 图1 SM4500应用简图经过测试发现客户板卡RS-485通道在空闲时,总线电平处于0电位。如图 1…

    Modbus技术文档 2024年2月20日
  • Modbus Poll 异常功能解释与详细说明

    Modbus Poll 异常功能解释与详细说明

    Modbus Poll是一种广泛用于Modbus通信协议的测试工具,它允许用户模拟主设备(通常是客户端)与从设备(通常是服务器)之间的通信,以验证通信的正常性。在Modbus Poll的使用中,用户可能会遇到各种异常功能,这些异常功能对于故障诊断和问题解决至关重要。本文将深入探讨Modbus Poll中的异常功能,为用户提供详细的解释和说明。 Modbus Poll 异常功能的概述 Modbus Poll异常功能是指在使用该工具时可能出现的不正常行为或错误情况。这些异常功能是用户了解问题并采取适…

    Modbus技术文档 2023年11月3日
  • Modbus异常相应代码说明

    Modbus异常相应代码说明

    Modbus通信协议是工业自动化中常用的协议,它允许主设备(通常是客户端)与从设备(通常是服务器)之间进行数据交换。在Modbus通信中,服务器(从设备)必须生成适当的响应来处理请求,并在必要时发送异常响应。本文将深入探讨Modbus响应的生成和异常处理。 Modbus响应类型 Modbus通信中,根据请求的处理结果,可以生成两种类型的响应: Modbus异常响应的目的 Modbus异常响应的主要目的是向客户端提供与请求处理过程中检测到的错误相关的信息。它帮助客户端了解通信问题的具体原因,从而采…

    Modbus技术文档 2023年11月3日
  • 在Modbus通讯中发送时间戳的参考方法

    在Modbus通讯中发送时间戳的参考方法

    在Modbus协议中嵌入时间戳需要一些谨慎考虑,因为Modbus本身没有定义专门的时间戳对象。以下是如何在Modbus(RS485)通信中发送时间戳的一些建议方法和步骤: 如何在Modbus (RS485)通信中发送时间戳 在工业自动化和远程监测应用中,时间戳对于确切的数据关联至关重要。尤其是在Modbus通信中,没有内置的时间戳机制,因此需要特别关注如何嵌入时间戳。以下是实现这一目标的方法和步骤: 步骤1:选择时间戳格式 首先,您需要选择适当的时间戳格式。常见的时间戳格式之一是使用POSIX(…

    Modbus技术文档 2023年10月31日
  • 渐进式解决Modbus通信问题的方法

    渐进式解决Modbus通信问题的方法

    在工业自动化领域,Modbus通信协议是一种常见的选择,但有时会出现通信问题。本文将介绍一些渐进式步骤,以帮助您排查和解决Modbus通信问题。 1:确认从站是否支持Modbus 首先,确保每个从站都真正支持Modbus协议。有时,设备具备Modbus连接器,但却没有可用的硬件或固件支持。因此,在问题排查的第一步,您需要验证每个从站是否具备硬件和固件支持,并且已启用Modbus功能。 2:选择协议 -Modbus RTU还是Modbus ASCII? Modbus协议有两种常见的变种:RTU和A…

    Modbus技术文档 2023年10月30日
  • Modbus如何读取单个及多个寄存器的方法

    Modbus如何读取单个及多个寄存器的方法

    当你涉及工业自动化、传感器和设备之间的通信时,Modbus协议通常会出现在你的工具箱中。Modbus是一种用于读取和控制设备数据的通信协议,它在工业控制系统中得到了广泛的应用。现在,让我们以小白理解的方式来解释Modbus如何读取保持寄存器的数据,包括单个寄存器和多个寄存器的读取。 什么是Modbus? Modbus是一种通信协议,用于连接各种工业设备、传感器和控制器。它允许这些设备之间进行数据交换,以实现监控、控制和数据采集。Modbus协议有不同的变种,包括Modbus RTU、Modbus…

    Modbus技术文档 2023年10月29日

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

邮箱

cloud@modbus.cn

QQ
QQ
微信
微信
分享本页
返回顶部