2. PLCnext硬件与运行时认知

PLCnext 的“可编程”并不只发生在 IEC 61131-3 程序里,它首先发生在控制器硬件与运行时这一层。AXC F 系列把实时控制、Linux 用户空间和多种现场总线接口放在同一台设备上,理解它的硬件分层、运行时结构和端口分配,是后续做数据采集与云端对接的前提。否则很容易出现“程序下载成功但云端连不上”“Modbus 读得到、OPC UA 连不上”这类看似玄学、实则可解释的问题。

一、AXC F 控制器家族:同一运行时,不同算力与接口

AXC F 是 Phoenix Contact 基于 PLCnext 技术的控制器系列,常见型号包括 AXC F 1152、AXC F 2152、AXC F 3152 以及更高性能的 AXC F 3152 变体。它们共享同一套 PLCnext Runtime 与工程工具(PLCnext Engineer),差异主要在 CPU 性能、内存容量、板载通信接口数量和扩展能力上。对数据采集项目而言,选型时最该关注的不是“程序能不能跑”,而是“要接多少路现场总线、要跑多少 Linux 侧服务、要留多少内存给数据库或消息队列”。

以 AXC F 2152 为例,它通常具备 2 个以太网口(可分别用于工程/控制网与 IT/云侧网络)、1 个串口、本地 I/O 扩展总线,并支持通过 Axioline F 模块扩展数字量、模拟量和功能模块。AXC F 3152 则在 CPU 与内存上更强,适合同时运行 OPC UA 服务器、Node-RED、数据库代理等较重的 Linux 侧负载。选型时建议按“现场总线数量 + Linux 服务数量 + 数据点规模”三项估算,而不是只看 PLC 扫描周期。

二、实时 Linux 与 PLCnext Runtime:双世界并行

PLCnext 的核心特征是“实时域 + 非实时域”共存。底层是经过实时补丁的 Linux 内核,负责调度、网络、文件系统和进程管理;其上运行 PLCnext Runtime,包含固件、组件和服务。实时域执行 IEC 61131-3 程序、运动控制、快速 I/O 处理,保证确定性;非实时域运行 Linux 应用,如 OPC UA、MQTT 客户端、Node-RED、Python 脚本、数据库等,负责数据加工与上云。

两个域之间通过 GDS(Global Data Space)和共享内存交换数据。PLC 程序把变量发布到 GDS,Linux 侧程序通过 PLCnext API 或 OPC UA 读取;反过来,Linux 侧也可以把处理结果写回 GDS,供 PLC 程序使用。这种结构意味着:采集频率高、要求确定性的逻辑放在 PLC 侧;协议转换、缓存、断线重传、JSON 封装等放在 Linux 侧。把两者混在一起,往往会导致扫描周期抖动或云端连接不稳定。

AXC F 控制器:实时域 / 非实时域 与通信资源分配 实时域(Real-Time Domain) 实时 Linux 内核 + PLCnext Runtime 固件 IEC 61131-3 程序 LD / FBD / ST / SFC 快速 I/O 与运动控制 确定性扫描周期 GDS 全局数据空间(共享内存) 变量发布 / 订阅 · 跨域数据交换 非实时域(Linux 用户空间) 协议转换 · 数据加工 · 云端对接 OPC UA / MQTT 服务端与客户端 Node-RED / Python 流处理与脚本 PLCnext API / 文件系统 / 数据库 缓存 · 断线重传 · JSON 封装 读 写 网络接口与端口资源分配 X1:工程/控制网 192.168.1.10 X2:IT/云侧 10.0.0.20 OPC UA:4840 MQTT:1883 / 8883 现场总线与扩展资源 PROFINET Modbus TCP/RTU EtherCAT Axioline F 扩展 串口

三、端口与通信资源分配:先规划,再接线

AXC F 控制器通常有两个独立以太网口,这是数据采集项目里最容易被忽视、也最值得利用的资源。建议把 X1 口用于工程下载、PLC 间通信和现场设备控制网,网段例如 192.168.1.0/24;把 X2 口用于 IT/云侧网络,网段例如 10.0.0.0/24,连接交换机、边缘网关或直接上联企业网。这样做的直接好处是:云端流量、大文件传输、MQTT 重连不会挤占控制网的带宽,也便于在网络层做访问控制。

端口分配上,PLCnext 默认使用若干固定端口:OPC UA 服务器默认 4840,Web 工程与诊断界面通常走 80/443,SSH 为 22,MQTT 常用 1883(明文)或 8883(TLS)。如果项目里同时运行 Node-RED,其默认端口为 1880。实际部署时建议把这些端口列成一张资源表,明确“哪个服务、哪个端口、哪个网口、是否对外”。例如:OPC UA 只监听 X2 口,MQTT 只走 X2 口,SSH 仅允许工程网段访问。这样既减少冲突,也降低安全暴露面。

现场总线侧的资源同样需要规划。PROFINET、EtherCAT、Modbus TCP 可以共用物理网口,但实时性要求高的协议应尽量与控制网放在同一网段,并避免与大量 HTTP/MQTT 流量混跑。Modbus RTU 走串口时,要确认波特率、数据位、停止位、校验方式与从站一致;Axioline F 扩展模块则要核算电源预算和 I/O 点表,避免后期加点时发现模块供电不足。

四、一个可参考的资源配置示例

假设某产线数据采集项目使用 AXC F 2152,需要采集 3 台 Modbus TCP 电表、1 台 PROFINET 变频器,并把数据通过 MQTT 上传到云平台。可以按如下方式分配:X1 口设为 192.168.1.10/24,接现场交换机,电表与变频器均在此网段;X2 口设为 10.0.0.20/24,接企业网,MQTT Broker 地址为 10.0.0.100:1883。PLC 侧用 Modbus TCP 客户端功能块读取电表寄存器,周期 500 ms;变频器通过 PROFINET 组态接入。GDS 中发布电表功率、电压、电流和变频器频率等变量。Linux 侧运行 MQTT 客户端,订阅 GDS 变量,每 1 s 打包一次 JSON 上报。OPC UA 服务器仅监听 X2 口,供本地调试使用。

这个示例里,关键判断依据是:PLC 扫描周期是否稳定、GDS 变量是否按预期更新、MQTT 是否持续在线、云端是否收到连续时间戳。如果 MQTT 频繁掉线,优先检查 X2 口链路和 Broker 地址,而不是先改 PLC 程序;如果 OPC UA 连不上,先确认 4840 端口是否被防火墙拦截、服务是否绑定在正确网口。把硬件、运行时和端口三层关系理清,后续的采集与上云才有稳定的地基。