4. PLCnext Engineer安全工程环境搭建
PLCnext Engineer 是 Phoenix Contact 面向 PLCnext 控制器的统一工程平台,安全工程并不是一个独立软件,而是以“安全项目 + 安全控制器 + 安全任务 + 安全程序”的形式嵌入在同一个工程中。理解这一点非常关键:标准程序与安全程序共享同一个工程文件、同一个控制器硬件,但在运行时被严格隔离,安全逻辑由独立的 Safety PLC 运行时执行,标准逻辑由标准运行时执行,两者通过安全数据通道交换数据。本节围绕项目创建、安全控制器添加、安全任务配置、程序隔离以及固件与安全版本管理五个环节展开,帮助读者搭建一个可运行、可校验的安全工程骨架。
一、创建工程与添加安全控制器
启动 PLCnext Engineer 后,通过“新建项目”创建工程,选择目标控制器型号(例如 AXC F 3152 或 AXC F 2152),软件会自动生成一个标准项目结构。此时工程中只有标准控制器,还没有安全能力。要启用安全功能,需要在设备目录中找到对应的安全控制器对象(Safety Controller),将其添加到工程中。安全控制器在工程树中表现为一个独立节点,拥有自己的安全程序容器、安全任务和安全 I/O 映射区。
添加安全控制器时,软件会要求指定安全版本(Safety Version)与固件版本(Firmware Version)。这两个参数必须与控制器实际运行的固件匹配,否则下载时会报版本不一致错误。例如,若控制器出厂固件为 2023.0 LTS,安全版本为 1.30,则工程中必须选择相同或兼容的组合。安全版本决定了可用的安全指令集、安全任务周期范围以及安全数据长度上限,因此不能随意选择。
二、安全任务配置与周期设定
安全任务(Safety Task)是安全程序执行的调度单元,其周期独立于标准任务。在安全控制器的属性中,可以设置安全任务的周期时间,典型值为 10 ms、20 ms 或 50 ms。周期越短,安全响应越快,但 CPU 安全运行时的负载越高。安全任务周期必须与安全 I/O 模块的响应时间、安全传感器的响应时间以及安全执行器的动作时间共同构成安全功能的总响应时间,并满足所需的安全等级(SIL/PL)要求。
安全任务中还可以配置看门狗时间。若安全程序在一个周期内未完成执行,看门狗超时,安全控制器进入安全状态(输出置零或保持安全值)。因此,安全程序不宜写得过于复杂,应避免在安全任务中执行大量非必要运算。安全任务与标准任务之间通过安全数据映射交换数据,标准程序不能直接读写安全变量,只能通过映射区访问。
三、安全程序与标准程序的隔离机制
安全程序与标准程序在工程树中位于不同容器,编译时分别生成安全运行时映像和标准运行时映像。安全程序只能调用安全指令集(如安全与、安全或、安全延时、安全急停等),不能调用标准指令;标准程序也不能直接引用安全变量。两者之间的数据交换必须通过安全数据映射完成,映射区中的变量在标准侧表现为只读或只写,且数据类型和长度受安全版本限制。
这种隔离不仅体现在软件层面,也体现在运行时层面。安全运行时拥有独立的内存保护、独立的时钟监控和独立的输出通道。即使标准程序出现死循环或内存越界,安全程序仍能按周期执行并驱动安全输出。因此,在工程搭建阶段,必须明确哪些信号属于安全信号,哪些属于标准信号,避免把安全功能错误地放在标准程序中实现。
四、固件与安全版本管理
固件版本与安全版本是安全工程能否下载和运行的前提。PLCnext Engineer 在连接控制器时会读取实际固件版本,并与工程中设置的版本比对。若不一致,软件会提示升级或降级。升级固件通常通过 PLCnext Engineer 的固件更新功能或 Web 管理界面完成,升级后安全版本可能同步变化,此时工程中的安全版本也必须调整。
建议在项目文档中维护一张版本对照表,记录控制器型号、固件版本、安全版本、工程文件版本以及对应的安全程序校验值。每次修改安全程序后,校验值会变化,下载前应确认校验值与预期一致。若控制器更换或固件升级,应重新验证安全功能,必要时重新进行安全验收测试。
| 管理项 | 示例值 | 作用 |
|---|---|---|
| 控制器型号 | AXC F 3152 | 决定可用安全 I/O 与安全任务数量 |
| 固件版本 | 2023.0 LTS | 决定标准运行时功能与通信协议 |
| 安全版本 | 1.30 | 决定安全指令集与安全数据长度 |
| 安全任务周期 | 20 ms | 影响安全响应时间与 CPU 负载 |
| 看门狗时间 | 100 ms | 超时后安全控制器进入安全状态 |
五、搭建后的检查要点
完成上述配置后,建议按以下顺序检查:第一,确认安全控制器节点已添加且版本与实物一致;第二,确认安全任务周期与看门狗时间已按安全功能响应时间要求设定;第三,确认安全程序与标准程序分别位于各自容器,且没有跨区直接引用变量;第四,确认安全数据映射区变量方向正确,标准侧只读或只写;第五,编译工程,查看是否有安全版本不匹配或安全指令使用错误的报错。只有全部通过后,才进行下载和在线测试。
通过本节的环境搭建,读者应能独立创建一个包含安全控制器的 PLCnext Engineer 工程,正确配置安全任务,理解安全程序与标准程序的隔离边界,并建立固件与安全版本的版本管理意识。这是后续编写安全逻辑、进行安全验证的基础。