2. Anybus Communicator串口参数配置与PLC数据映射

Anybus Communicator串口参数配置与PLC数据映射 学习卡片

任务对象与数据路径

本例使用 Anybus Configuration Manager(ACM)配置一台 Anybus Communicator,将 RS-232 温控仪表的温度测量值映射到 EtherNet/IP 输入区,供 PLC 读取。核心对象包括:温控仪表(从站设备)、Communicator 的串口侧(RS-232 子网)、内部数据缓冲区、EtherNet/IP 侧输入区(Input Assembly)。

温控仪表通常以 ASCII 或 Modbus RTU 方式输出温度值。本例以 Modbus RTU 从站为例:仪表地址 1,功能码 03,读取保持寄存器 0x0000(温度值,单位 0.1°C,有符号 16 位整数)。Communicator 作为 Modbus RTU 主站轮询该寄存器,将结果写入内部输入缓冲区,再映射到 EtherNet/IP 输入区。

温控仪表 Modbus RTU 从站 地址:1 寄存器 0x0000 RS-232 9600-8-N-1 Anybus Communicator 串口子网 Modbus RTU 主站 轮询周期 100ms 功能码 03 内部输入缓冲 偏移 0x0000 长度 2 字节 INT16 EtherNet/IP 输入区 Input Assembly 实例 100 字节 0-1:温度值(INT16) 映射 EtherNet/IP PLC 扫描器 读取 Input 实例 100 温度 = 原始值 / 10 EtherNet/IP 数据路径:温控仪表寄存器 0x0000 → RS-232 Modbus RTU 响应 → Communicator 内部输入缓冲偏移 0x0000 → EtherNet/IP Input Assembly 字节 0-1 → PLC 读取并换算温度 示例:仪表返回 0x00FA(250)→ PLC 读取 INT16 = 250 → 温度 = 25.0 °C

串口参数配置

在 ACM 中新建项目后,首先配置 Communicator 的串口物理参数,必须与温控仪表完全一致,否则通信无法建立。本例仪表手册给出的串口参数为:波特率 9600、数据位 8、停止位 1、校验方式 None(无校验)。

在 ACM 的“Subnet”或“Serial”设置页中,逐项设置以下参数:

  • Baud rate:9600
  • Data bits:8
  • Parity:None
  • Stop bits:1
  • Protocol:Modbus RTU Master
  • Response timeout:500 ms(示例值,可根据现场调整)
  • Retries:2(示例值)

若仪表实际为 9600-8-E-1(偶校验),则 Parity 必须改为 Even,否则 ACM 发出的帧格式与仪表不匹配,表现为无响应或校验错误。配置完成后,ACM 会生成对应的串口子网描述,后续命令均基于该物理层参数发送。

Modbus 命令与数据映射

串口参数配置完成后,需要在 ACM 中定义与温控仪表交互的 Modbus 命令。本例添加一条“Read Holding Registers”命令:

  • Slave address:1
  • Function code:03(Read Holding Registers)
  • Start register:0x0000
  • Quantity:1(读取 1 个寄存器,2 字节)
  • Poll interval:100 ms(示例值)

该命令的响应数据需要映射到 Communicator 的内部输入缓冲区。在 ACM 的“Input”或“Data mapping”区域,将命令响应中的第 1 个寄存器(2 字节)分配到内部输入缓冲偏移 0x0000,数据类型为 INT16(有符号 16 位整数)。

随后配置 EtherNet/IP 侧输入区:在“EtherNet/IP”设置中,将 Input Assembly 实例设为 100(示例值,实际以 ACM 默认或项目要求为准),输入数据长度至少 2 字节,并将内部输入缓冲偏移 0x0000 映射到 Input Assembly 的字节 0-1。这样 PLC 读取 Input 实例 100 的前两个字节即可获得温度原始值。

ACM 中“内部缓冲偏移”与“EtherNet/IP 输入区字节偏移”是两个独立概念。前者是 Communicator 内部数据表的地址,后者是网络输入 Assembly 中的位置。映射关系必须显式建立,不能假设两者自动对齐。

PLC 侧读取与验证

将 Communicator 的 EDS 文件导入 PLC 组态软件(如 Studio 5000 或 RSLogix 5000),添加设备并设置输入实例 100、输入长度 2 字节。PLC 程序中读取输入数据的前两个字节,按 INT16 解析,再除以 10 得到实际温度值(单位 °C)。

验证步骤如下:

  1. 给温控仪表通电,确认其显示当前温度,例如 25.0 °C。
  2. 在 ACM 中进入在线监视或诊断视图,查看 Modbus 命令的响应状态。若显示“OK”且响应数据为 0x00FA(250),说明串口通信正常。
  3. 在 PLC 在线监视中查看 Input 实例 100 的字节 0-1。若读到 0x00FA,则映射正确。
  4. 在 PLC 程序中计算 250 / 10 = 25.0,与仪表显示一致。
  5. 改变仪表温度设定或用手握传感器使温度上升,观察 PLC 读取值随之变化,确认数据实时更新。
若 PLC 读到 0 或固定不变,优先检查:串口参数是否与仪表一致、Modbus 从站地址是否正确、功能码和寄存器地址是否匹配、ACM 中命令是否已启用并下载到设备、EtherNet/IP 连接是否建立。不要直接修改 PLC 程序中的换算系数来“凑”结果。

关键参数与检查表

项目 示例值 检查要点
波特率 9600 与仪表手册一致
数据位 / 停止位 / 校验 8 / 1 / None 三项必须同时匹配
Modbus 从站地址 1 与仪表地址一致
功能码 / 寄存器 03 / 0x0000 读取保持寄存器
内部缓冲偏移 0x0000 ACM 数据映射目标
Input Assembly 实例 100 与 PLC 组态一致
输入字节偏移 0-1 对应温度原始值
温度换算 原始值 / 10 单位 0.1 °C

常见问题与处理

  • ACM 在线监视显示超时:检查 RS-232 接线(TX/RX/GND),确认仪表通信参数与 ACM 设置一致,适当增大 Response timeout。
  • PLC 读到数据但数值异常:确认 INT16 解析方式,检查仪表寄存器是否为有符号数;若仪表使用补码表示负温度,PLC 侧需按有符号整数处理。
  • 数据不更新:检查 ACM 中命令的 Poll interval 是否设置过小导致总线拥塞,或 EtherNet/IP 连接是否处于运行状态。
  • EDS 导入后设备识别异常:确认 EDS 文件版本与 Communicator 固件匹配,必要时在 ACM 中重新生成 EDS。