协议接入

罗克韦尔 AB PLC 采集:CIP 标签、PCCC 与 DF1

罗克韦尔在汽车、烟草、饮料和进口整线上占比很高。它的好处是新平台按标签名寻址、不用算绝对地址;麻烦的地方在标签作用域、UDT 结构、以及控制器连接数这几件事上。

罗克韦尔的三代通信方式

罗克韦尔(Allen-Bradley)的采集也要先分平台, 不同代次的寻址模型完全不同:

平台常见型号协议与寻址方式
Logix 平台ControlLogix 1756、CompactLogix 1769/5069、GuardLogixCIP over EtherNet/IP,按标签名寻址,支持 UDT 与数组
老平台(网口)SLC-5/05、PLC-5E、MicroLogix 1100/1400PCCC 封装在 EtherNet/IP 里,按文件式地址(N7:0、F8:5)
老平台(串口)SLC-500、PLC-5、MicroLogix 1000/1200DF1 串口协议,全双工或半双工,需站号与校验参数

现场常见的场合是:汽车主机厂与一级供应商的产线、 烟草与饮料的高速包装线、进口整线的主控、 以及外资工厂标准化选型的设备。 敏洽 SCADA 数采软件 提供 ab_cip、ab_pccc、ab_df1 三个驱动, 其中 ab_cip 基于 libplctag 源码内嵌静态编译, 不需要在现场安装 RSLinx 或任何罗克韦尔运行库。

实际会遇到的几个坑

1. 标签作用域:Program 标签必须带前缀

Logix 平台的标签分控制器范围与程序范围。 控制器范围直接写标签名; 程序范围必须写成 Program:程序名.标签名, 只写标签名一定报找不到。 现场的典型情形是设备厂口头给了几个标签名, 没说它们是哪个程序里的局部标签,采集侧怎么试都读不到。 正确做法是要求设备厂从 Studio 5000 导出标签清单(CSV 或 L5X), 按导出的完整名字原样填进点表。 顺带也能确认数据类型,避免把 DINT 当 INT 读。

2. 路由路径与槽号填错

ControlLogix 是机架式的,CPU 不一定在 0 槽, CIP 请求要带一条路由路径指到 CPU。 填错的现象是TCP 能连上、CIP 会话建不起来或返回路径错误, 容易被当成 IP 或防火墙问题查。 CompactLogix 多为一体机,路由简单; 但如果是经 ControlNet、DeviceNet 网桥或另一台控制器转发, 路径会更长,必须由设备厂给出完整路由。 接入前索取机架配置图是最省事的做法。

3. 零散读导致的性能问题

每个标签单独发一次请求,几十个标签就是几十次往返, 延迟线性累加,秒级更新都可能做不到。 两种优化方式: 用多服务打包请求把若干标签合进一次报文; 或者从源头解决——要求设备厂把需要外发的数据 组织成一个 UDT 或数组, 采集端一次读回整块再本地拆分。 后者效果最好,也最依赖设备厂配合, 因此要在接口确认阶段就提出来。 注意单次 CIP 报文有大小限制,超大结构体需要分段读。

4. 控制器连接数被占满

ControlLogix 的 CPU 通信资源与以太网模块的 CIP 连接数都有上限, 现场往往已经被 HMI、Studio 5000、历史数据库、 MES 接口机分掉了大半。 采集端拿不到连接时表现是连接被拒或超时, 更糟的情况是挤掉了别人的连接。 接入前要确认以太网模块型号的连接数上限与当前占用情况, 并按「一台设备一路采集、由这一路向上分发」的原则规划, 不要让每个上层系统各连一次。

5. 老平台的文件式地址写法

SLC/PLC-5/MicroLogix 用文件式地址, 字母表示文件类型(N 整数、F 浮点、B 位、T 定时器、C 计数器、 S 状态),冒号后是文件号,斜杠后是位号, 例如 N7:12、B3:0/5、F8:5。 两个高频错误:把文件号当成地址、 以及位地址漏掉斜杠部分。 DF1 串口还要确认站号、波特率、数据位、校验方式、 以及校验用 CRC 还是 BCC, 这几项任何一项不匹配都是完全没有应答, 与串口 Modbus 的排查方式相同。

6. 数据类型细节:BOOL 数组、DINT 位与字符串

Logix 平台的 BOOL 数组在控制器内部是按 32 位打包的, 按位读需要知道它落在哪个 DINT 的哪一位; 很多状态与报警实际是存在一个 DINT 里按位定义的, 点表必须给出每一位的含义,否则报警看板做不出来。 字符串类型是带长度字段的结构(LEN + DATA), 不能按裸字节读。 REAL 是 32 位单精度,与 DINT 占用相同长度但解析方式不同, 类型标错读出来就是天文数字。 因此点表里要求写控制器里的原始数据类型, 而不是「整数」「小数」这种描述。

接入方式与硬件条件

项目要求与说明
Logix 平台ab_cip 直连以太网口,需提供 CPU 槽号或完整路由路径
老平台(网口)ab_pccc,按 N/F/B 文件式地址访问
老平台(串口)ab_df1,需站号、波特率、校验方式与 CRC/BCC 选择
标签清单要求设备厂从 Studio 5000 导出 CSV 或 L5X,含完整标签名、作用域与数据类型
批量读要求把外发数据组织成 UDT 或数组,采集端一次读回,避免零散请求
连接数确认以太网模块 CIP 连接数上限与当前占用,避免挤掉 HMI 或历史库连接
位定义按位打包的状态字与报警字须逐位给出含义
现场依赖无需安装 RSLinx 或 FactoryTalk,驱动依赖库已静态编译进程序

需要客户或设备厂准备的是:标签清单导出、 机架配置与路由信息、连接数确认、 以及把外发数据整理成 UDT/数组的 PLC 程序改动。 交换机端口与 IP 规划按现场网络架构确定, 涉及跨网段时要确认路由与防火墙策略。

相关交付情况

罗克韦尔现场的经验是:标签清单的完整程度直接决定工期。 有一份从 Studio 5000 导出的标签表, 协议侧几乎不花时间; 只有几个口头给的标签名、作用域不明、数据类型不明, 就会反复来回。 另一个要提前确认的是连接数—— 这项在外资工厂的既有产线上尤其容易踩到, 因为现场往往已经有多套系统在连同一台控制器。

新平台走 OPC UA 还是 CIP 的取舍见 OPC UA 采集; 读不到数据的排查顺序见 数据取不出来怎么排查。

常见问题

分两种作用域。控制器范围标签(Controller Scope)直接写标签名即可,如 Machine_Speed。程序范围标签(Program Scope)属于某个程序,必须写成 Program:程序名.标签名 的形式,如 Program:MainProgram.PartCount,只写标签名会报找不到。UDT(用户自定义数据类型)成员用点号访问,如 Machine.Status.Running;数组用方括号,如 Results[3].Value,多维数组按 [i,j] 写。最稳妥的做法是让设备厂从 Studio 5000 里导出标签清单(CSV 或 L5X),按导出的名字原样填进点表,不要手工敲。
ControlLogix 是机架式的,CPU 可能不在 0 槽,CIP 请求需要一条路由路径指到 CPU 所在的槽(常见写法是 1,0 表示背板槽 0)。CompactLogix 多数是一体机,路由通常是 1,0 或者不需要额外路由。填错的表现是连接建立后请求被拒或者返回路径错误。判断方法:向设备厂要机架配置图,或者在 Studio 5000 的控制器组织器里看 CPU 所在槽位。如果是通过 ControlNet/DeviceNet 网桥转发,路由路径会更长,需要设备厂给出完整路径。
这些老平台不用标签,用文件式地址(如 N7:0、B3:0/2、F8:5),协议是 PCCC。有以太网口(如 SLC-5/05、MicroLogix 1400)时走 PCCC over EtherNet/IP 封装;只有串口时走 DF1(全双工点对点或半双工多点)。地址写法要注意文件类型字母的含义:N 是整数、F 是浮点、B 是位、T 是定时器、C 是计数器,冒号后是文件号,斜杠后是位号。DF1 还要确认站号、波特率、校验方式与 CRC/BCC 选择,这几项与串口 Modbus 一样是不匹配就完全没应答。
两个常见原因。一是逐个标签单独发请求,每个请求一次往返,标签多了累加延迟明显;正确做法是用 Multiple Service Packet 把多个标签打包进一次请求,或者把相关数据组织成 UDT/数组一次读回来。二是控制器的 CIP 连接数被占满:ControlLogix 的 CPU 通信资源和以太网模块的连接数都有上限,HMI、Studio 5000、历史库、其他上位机都在占用,采集端能拿到的连接有限。稳妥做法是要求设备厂把外发数据集中到一个 UDT 或数组里,采集端用一路连接批量读,而不是几十路小请求。
有影响但可控。CIP 显式报文的处理占用 CPU 的通信任务时间片,正常配置下对控制任务影响很小;但如果把大量标签设成极高频率轮询,或者反复读大数组,通信任务占比上去之后确实可能挤压周期任务。工程上的做法是:采集频率按数据用途分层(状态与产量秒级、温度压力数十秒级),批量读代替零散读,并在上线后观察控制器的任务负载。频率需求特别高的信号应该由 PLC 侧做处理(计数、峰值保持)再外发,而不是靠上位机高频轮询硬采。
不需要。敏洽 SCADA 软件的 ab_cip 驱动基于 libplctag 源码内嵌静态编译,直接走 EtherNet/IP 与控制器通信,现场部署只需复制程序目录,不装任何罗克韦尔运行库,也不涉及 RSLinx 的授权与版本冲突问题。这一点在国产化替换与多品牌混线的项目里比较关键——现场往往不希望再引入一层厂商中间件。

有具体设备清单或工件样品,可以直接给判断

提供设备型号、PLC 品牌与需要采集的数据项,或提供被检工件照片与精度要求,敏洽可先给出可行性判断与硬件前置条件,再谈软件工作量与报价。