伤害是工业环境中最大的威胁之一。在对可编程逻辑控制器(PLC)进行编程时,我们应通过将安全嵌入程序来采取措施防止事故。在本文中,我们将简要探讨使用图1所示的Crouzet-Soft功能块图(FBD)代码来防止系统意外启动的方法。所涉及的PLC是Millenium Slim,以及图2所示PLC训练器中展示的配套设备。
对于此设置,我们假设设备设计有如图2所示的三个控制装置。这里我们看到:
-
选择开关作为主开关控制。
-
瞬时常闭(N.C.)(红色)按钮,用于停止机器循环。
-
瞬时常开(N.O.)(绿色)按钮,用于发出机器循环启动信号。
作为程序员,我们必须考虑用户将如何与该系统交互。我们还必须考虑因用户急躁和电源故障导致的异常操作。例如,考虑以下情况会发生什么:
-
用户在打开选择开关的同时按住循环启动开关。
-
用户物理卡住循环启动开关。
-
主电源中断后恢复,而机器处于开启状态。
-
用户同时按住红色复位按钮和绿色循环按钮。
-
主电源中断后恢复,而机器处于开启状态且循环开关被物理卡住。
稍加想象,我们可以看到这些情况中的每一种都可能导致机器循环意外启动或造成瞬时故障。这些意外启动可能损坏设备,并对操作员和维修人员造成伤害。
在所有情况下,我们都应进行防御性编程以防止这些情况发生。
本文是DigiKey工业自动化现场指南的一部分
位置 :编程 → PLC → Crouzet
难度 :
工程师 — 难度级别说明
最后更新 :2026年3月9日
FBD 测试平台
图1中展示的FBD将用于说明问题及解决方案。此代码的核心是置位/复位块。当选择开关(I1)打开且瞬时绿色循环按钮(I3)被按下时,它被置位。当红色复位按钮(I2)被按下或选择开关(I1)关闭时,它被复位。虽然并非严格要求,但当机器处于活动状态时,绿色循环按钮(I3)通过一个与门被禁用。
模拟错误以说明复杂的系统交互
为了突出意外的启动问题,我们故意错误配置了置位/复位块。它被配置为置位线路优先于复位线路。它还被配置为断电保存。这样做是为了说明在构建更复杂的状态机时可能出现的问题。
直接结果是优先级颠倒,绿色“启动”按钮的优先级高于红色“停止”按钮。或许更危险的是断电保存配置。当电源中断后恢复时,系统将立即重新启动。
上升沿脉冲
第一道防线是使瞬时启动按钮真正瞬时有效。这可以通过将按钮信号发送到上升沿检测器来实现。在Crouzet-Soft FBD环境中,这通过使用如图1中I3线路所示的BW(上升沿脉冲)功能块来实现。这个简单的操作对防止意外启动大有帮助。经过此修改,常开绿色循环启动按钮必须在下一个循环开始前进入松开(关闭)状态。换句话说,操作员或维修技术人员没有理由物理卡住循环启动按钮。
在某个时候,我们必须返回并重新配置置位/复位块,因为如果绿色和红色按钮同时被激活,系统会出现故障。带有上升沿脉冲的绿色启动按钮会暂时置位系统,但随即会被红色停止按钮立即复位。该故障持续时间刚好足以激活PLC输出。它会点动相关电机。
图 1 :将瞬时常开开关按压信号转换为脉冲的功能块图。
技术提示 :注意图1中使用了一个4输入或门代替3输入或门。额外的输入接收来自其中一个输入的副本。布尔代数中的结果是 F = A + A + B + C,由于幂等律 (A + A) = A,因此等同于 F = A + B + C。
图 2 :设备设置图片,包含一个ON选择开关以及作为红色复位和绿色机器循环启动的瞬时开关。
技术提示 :红色复位/停止按钮具有一个物理常闭触点。通常,停止机器的器件应使用常闭触点,而启动机器的器件应使用常开触点。
首次扫描对设备安全至关重要
回顾一下,PLC通过重复的程序扫描来运行。对于典型的PLC,其循环过程如下:
-
执行内部管理活动
-
将接线端子输入传输到内存
-
根据用户程序执行内存到内存的操作
-
将内存传输到接线端子输出
需要记住的重点是,用户程序作为内存到内存的接口运行。既然如此,我们需要考虑PLC初始上电时会发生什么。回顾一下,置位/复位模块被故意错误配置为具有断电保持功能。这意味着,只要选择开关处于运行位置,通电后机器将立即重新启动。
图1中提出的首次扫描宏提供了一个解决方案,并在图3中进行了扩展。它由一个TON定时器和一个异或门组成。在第一次程序扫描时,定时器开始计数。异或门将看到一个固定的逻辑1和来自定时器输出的一个零。结果输出为逻辑高电平。在第二次程序扫描时,定时器的输出将为高电平,导致异或门输出为零。最终结果实际上是在第一次程序扫描时产生一个脉冲。然后可以使用此宏来初始化PLC内的所有模块。
图 3 :首次扫描宏的功能块图实现。
将焦点移回图1,我们看到第一次扫描输出与红色按钮和选择开关进行“或”运算。因此,第一次扫描用于复位置位/复位块。
技术提示 :宏操作用于封装代码。这非常理想,因为它简化了顶层代码。它还允许代码被重用。另一方面,有一个古老的故障排除格言:所有编程问题都包含在宏中,尤其是当宏很大或文档不完善时。始终为清晰而编程。
结论
本文简要介绍了防御性编程,以防止设备意外启动。请注意,本文远非完整,因为还有许多其他事项需要考虑。例如,状态机以及物料在机器中的工作流程都会增加相当大的复杂性。举例来说,考虑一下当操作员打断光幕时,多功能机器应如何响应。一种解决方案是在机器外壳外部添加一个双按钮安全启动装置,其安装方式应确保操作员无法从外壳内部按下按钮。
这引出了安全完整性等级(SIL)以及冗余和独立安全装置应用的概念——这些都是日后的话题。
持续学习并进行防御性编程,以防不测。
继续探索工业控制系统
如果本次讨论对您有帮助,您可能还想了解:
DigiKey 导航
- 完整目录 :工业控制与自动化
更正。
如我之前的说明所述,Crouzet-Soft环境确实包含“第一次扫描”脉冲。它位于PROG选项卡中的状态功能内。
该块包含“冷启动”和“热启动”。请参阅Crouzet文献以获取更多信息。最好的查找位置是帮助菜单内。
后续跟进:
一个改进的基于宏的解决方案位于此处:



