2. WAGO硬件平台选型与组态
在设备数据采集与MES集成项目中,硬件平台选型决定了后续软件架构的上限。WAGO的控制器产品线覆盖了从紧凑型PLC到边缘计算网关的多个层级,选型时不能只看“能不能跑程序”,而要围绕数据采集的规模、协议种类、实时性要求、上云方式和现场环境综合判断。本节以一条典型的装配线数据采集需求为例,说明如何在PFC200、Edge Controller和I/O模块之间做出选择,并完成硬件组态与地址分配。
一、先明确采集需求,再谈选型
假设某装配线需要采集以下数据:8台变频器的运行状态与频率给定(Modbus RTU,RS-485),4台伺服驱动器的位置与报警字(Modbus TCP),2台拧紧枪的扭矩与角度结果(TCP/IP自定义协议),以及现场12个数字量传感器和4个模拟量压力变送器(4~20mA)。同时,产线需要将数据汇总后通过MQTT上传到MES,并在本地保留断网缓存能力。
这个需求包含三个关键特征:第一,协议异构,既有串口也有以太网,还有自定义TCP;第二,数据量中等,但要求周期性上传,周期约500ms~1s;第三,需要边缘侧做数据预处理和断网续传。此时,单纯用一台小型PLC加串口模块的方案会非常吃力,因为自定义TCP协议和MQTT客户端往往需要更开放的操作系统环境。
二、PFC200与Edge Controller的分工
PFC200(如750-8212)是WAGO经典的紧凑型控制器,运行Linux实时系统,支持CODESYS运行时,具备2个以太网口和1个RS-485/RS-232串口。它适合承担现场设备层的协议采集和逻辑控制,例如通过Modbus RTU轮询8台变频器,通过Modbus TCP读取伺服驱动器,同时用本地I/O模块采集数字量和模拟量。PFC200的优势在于稳定、实时性好、I/O扩展直接背板连接,但它的计算资源和容器化能力有限,不适合同时跑复杂的MQTT客户端、数据库缓存和Web服务。
Edge Controller(如752-8303/800-000)则定位在PFC200之上,通常具备更强的CPU、更大的内存和存储,支持Docker容器,可以运行Node-RED、Python脚本、MQTT Broker客户端和轻量数据库。它更适合承担“边缘汇聚”角色:从PFC200或直接从设备读取数据,做格式转换、单位换算、异常过滤,再通过MQTT上传MES。如果现场协议种类多、需要灵活编排数据流,Edge Controller是更合适的选择。
因此,本案例的推荐架构是:PFC200负责实时采集与本地I/O,Edge Controller负责协议补充、数据缓存与MQTT上传。两者通过以太网Modbus TCP或MQTT本地主题交换数据。
三、I/O模块选型与地址分配
PFC200的本地I/O通过背板总线扩展,模块顺序直接决定过程映像区的地址分配。WAGO的750系列模块采用“按槽位顺序自动编址”的方式:数字量模块通常占1个字节或1个位,模拟量模块占2个字节(16位)。以本案例为例,假设PFC200后依次插入以下模块:
| 槽位 | 模块型号 | 类型 | 通道数 | 过程映像地址(示例) |
|---|---|---|---|---|
| 1 | 750-430 | 数字量输入 | 8 DI | %IX0.0~%IX0.7 |
| 2 | 750-530 | 数字量输出 | 8 DO | %QX0.0~%QX0.7 |
| 3 | 750-463 | 模拟量输入 | 4 AI(4~20mA) | %IW64~%IW67 |
| 4 | 750-600 | 末端模块 | — | — |
需要特别注意的是,WAGO的地址分配与模块的物理顺序严格对应。如果后续在槽位2和槽位3之间插入新的模块,原有模拟量地址会整体后移,导致程序中已绑定的变量错位。因此,在硬件组态阶段就应预留槽位或预留地址空间,例如将模拟量输入统一规划在%IW64之后,数字量输入规划在%IX0.0~%IX1.7,避免后期扩展时大规模修改程序。
对于模拟量4~20mA信号,还需要在软件中做量程换算。以750-463为例,其原始值范围通常为0~32767对应0~20mA,因此4mA对应约6553,20mA对应32767。若压力变送器量程为0~1.6MPa,则实际压力值可按以下公式计算:
压力(MPa) = (原始值 - 6553) / (32767 - 6553) × 1.6
= (原始值 - 6553) / 26214 × 1.6
在CODESYS中,可将该计算封装为功能块,输入原始WORD值,输出REAL压力值,并加入断线检测:当原始值低于约6000时判定为传感器断线或未接线,输出报警位。
四、硬件组态的实际操作要点
使用WAGO I/O CHECK或CODESYS进行硬件组态时,第一步是在设备树中添加PFC200控制器,并选择正确的固件版本。第二步是按实际物理顺序添加I/O模块,注意模块型号必须与实物一致,否则下载配置时会报“模块不匹配”。第三步是检查过程映像地址,确认没有重叠或越界。第四步是配置串口参数:波特率19200、数据位8、停止位1、无校验,与变频器侧保持一致;如果现场干扰较大,可降为9600并启用奇偶校验。
对于Edge Controller,硬件组态的重点不在I/O,而在网络与容器配置。需要为它分配固定IP,例如192.168.1.50,并确保与PFC200的X1口在同一网段。随后在Docker中部署Node-RED容器,映射端口1880用于配置,映射1883用于本地MQTT。Node-RED中通过Modbus TCP节点读取PFC200的保持寄存器,再通过MQTT输出节点发布到MES主题,例如factory/line1/assembly/data。
五、地址分配与数据映射的对应关系
硬件组态完成后,需要建立一张“设备—协议—地址—MES字段”的映射表。例如,1号变频器的频率给定写入PFC200的保持寄存器%MW100,运行状态读取%MW101;拧紧枪的扭矩结果由Edge Controller通过TCP读取后,写入本地变量并映射到MQTT主题的torque字段。这张映射表是后续MES接口开发和故障排查的核心依据,建议在组态阶段就同步维护,而不是等到联调时再补。
最后需要强调的是,硬件选型不是一次性的工作。当产线增加设备或MES要求提高上传频率时,应重新评估PFC200的CPU负载和Edge Controller的容器资源占用。如果PFC200的循环周期从10ms被迫放宽到50ms,说明采集任务已经过载,此时应考虑将部分Modbus TCP轮询任务迁移到Edge Controller,而不是继续在PFC200上叠加逻辑。