罗克韦尔的三代通信方式
罗克韦尔(Allen-Bradley)的采集也要先分平台, 不同代次的寻址模型完全不同:
| 平台 | 常见型号 | 协议与寻址方式 |
|---|---|---|
| Logix 平台 | ControlLogix 1756、CompactLogix 1769/5069、GuardLogix | CIP over EtherNet/IP,按标签名寻址,支持 UDT 与数组 |
| 老平台(网口) | SLC-5/05、PLC-5E、MicroLogix 1100/1400 | PCCC 封装在 EtherNet/IP 里,按文件式地址(N7:0、F8:5) |
| 老平台(串口) | SLC-500、PLC-5、MicroLogix 1000/1200 | DF1 串口协议,全双工或半双工,需站号与校验参数 |
现场常见的场合是:汽车主机厂与一级供应商的产线、
烟草与饮料的高速包装线、进口整线的主控、
以及外资工厂标准化选型的设备。
敏洽 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 采集; 读不到数据的排查顺序见 数据取不出来怎么排查。
常见问题
有具体设备清单或工件样品,可以直接给判断
提供设备型号、PLC 品牌与需要采集的数据项,或提供被检工件照片与精度要求,敏洽可先给出可行性判断与硬件前置条件,再谈软件工作量与报价。