Crouzet PLC顺序功能图(SFC)编程简介

作为 IEC 61131-3 标准一部分的 PLC 编程语言

让我们花点时间庆祝国际电工委员会(IEC)61131-3标准发布30周年。该标准的第三部分描述了可编程逻辑控制器(PLC)的五种编程语言,包括:

  • 梯形图(LD)
  • 功能块图(FBD)
  • 结构化文本(ST)
  • 指令列表(IL)
  • 顺序功能图(SFC)

每个PLC制造商都可以自由开发使用单一语言或多种语言的工具,以针对其细分市场和用户群。Crouzet选择使用FBD和SFC。由此产生的IEC 61131-3子集已很好地集成到Crouzet Soft应用程序中。这是一个精简的界面,其中巧妙设计的FBD和SFC模块相互支持。

Crouzet 实现的顺序功能图( SFC )简介

本文是一篇教学文章,描述了程序员的首个SFC应用。目标是通过开发一个从0计数到7的基于状态的二进制计数器来学习SFC。如图1所示的基于SFC的程序反映了您在数字逻辑课程中学到的知识。该程序足够复杂,我们可以从中发现SFC的一些细微之处。它还展示了一种您可能会在未来的SFC编程中觉得有用的风格。请花点时间观看这段13秒的视频,查看计数器的仿真。


本文是DigiKey工业自动化现场指南的一部分

位置编程 → PLC → Crouzet
难度:gear: 工程师 — 难度等级说明
最后更新 :2026年3月13日


1 :二进制计数器的顺序功能图(SFC)实现。

视频 1 :基于SFC的二进制计数器在Crouzet-Soft仿真器中的运行。

基于 SFC 的二进制计数器的状态逻辑

图1中的代码是一个8状态的状态机。每个状态都体现为一个SFC步模块,使得在任何给定时间,有且仅有一个状态处于活动状态。我们可以将其可视化为一个令牌环,其中每个SFC步进块在将令牌传递给下一个之前,持有令牌一个周期。在此示例中,步进时间由每秒脉冲(PPS)信号决定。我们从S0持有令牌开始。一秒钟后,令牌传递给S1,依此类推,直到到达S7。在下一个PPS时,S7通过将令牌传回S0来完成这个环。

技术提示 :仔细观察图1中的SFC步进块。注意方块中的方块,它表示“可复位初始步”块。该块像操控木偶一样操控所有其他SFC块,从而将它们绑定在一起。系统复位时,初始令牌出现在关键的可复位初始步块中。在后续复位时,该块也可以捕获/移除所有其他块中的令牌。由于无形的连线将所有块连接到主要的可复位初始步块,这一操作可能难以想象。

为了更好地理解SFC步进块的操作,请考虑图2所示的情况。在此图中,我们看到令牌由状态#4持有。我们可以说令牌被保存在较大符号框内的小框中。这个令牌的存在激活了S4信号。

就在小框的下方,有一个小门符号,阻挡了令牌沿连线向下传递的路径。它由左侧的机制控制。已经激活的S4信号与PPS信号进行逻辑与运算。在下一个PPS时,门将被打开,允许令牌“落下”到S5状态。此过程对所有状态重复,其中S7返回到S0。

2 :Crouzet调试窗口,系统在状态4处暂停。

技术提示 :PPS信号代表PLC可能的最小脉冲宽度。使用自复位定时器(TON),我们生成一个宽度为一个PLC程序扫描周期的脉冲。这个窄脉冲对此计数器的运行至关重要,因为它防止所有事情同时发生。换句话说,如果用常开信号替换PPS,计数器就会失效。虽然不是一个精确的类比,但这就像忘记在C语言编程的case结构中添加break语句——当使能信号为ON时,令牌处于自由落体状态。

8 线到 3 线编码器的输出逻辑

如前所述,在任何给定时间,只有一个状态可以处于激活状态。带有“小框中的令牌”的状态是激活状态。左侧的机制用于推进令牌。现在我们可以讨论右侧的机制。换句话说,SFC步骤块左侧的部分构成了“状态-下一步”机制。状态“寄存器”封装在SFC块中。最后,右侧的部分构成输出逻辑。

回顾一下,我们的目标是构建一个二进制计数器:000, 001, … 111, 000, … 循环。这需要一个8线到3线编码器,它由三个4输入或门实现。生成的输出标记为B0、B1和B2,分别对应1、2和4位。最后一部分是驱动显示器的二进制到十进制转换器。

编程风格

任何编程讨论如果不涉及风格都是不完整的。在图1中,我们看到了Crouzet的接线模式文本模式的混合。在某些情况下,块之间的连接通过导线形成。在其他情况下,连接使用命名(文本)节点(如PPS)形成。程序员可以自由选择能生成清晰易读程序的方法。

请记住,图1的程序专注于SFC。因此,绘制线条以将注意力集中在状态机上是重要的。结果是一个紧凑且易于理解的程序,其状态机核心沿页面中央向下流动。

将其与输出逻辑进行对比。页面右侧有超过12条导线表示。使用“文本”模式提供了整洁的表示方式。使用接线模式会导致难以理解的导线重叠混乱。

最后,您可能注意到TON左侧有一个“是”块。这是独特的Crouzet节点复制块。在内部,它充当直接将输入跳线连接到输出的导线。然而,它确实将一个节点拆分为两个具有唯一名称的节点。在此示例中,它允许左侧为“接线模式”,右侧为“文本”模式。这样做是为了清晰显示TON的反馈(自复位)线路。这个简单的“是”块提供了一种无杂乱的方式,以显示PPS信号与状态机的连接。

结论

鼓励您在PLC中复现此程序。它为Crouzet PLC中的基于状态的控制提供了一个适中的入门介绍。该练习还将使您熟悉工具以及风格的重要性。

此程序不需要物理硬件。因此,这可能是测试运行Crouzet软件和模拟器的一个好方法。作为教育者,此编程练习可作为一项好的家庭作业或课堂练习。

欢迎您的评论和建议。同时,鼓励您提供PLC程序的屏幕截图。

:books: 继续探索工业控制系统

如果本次讨论对您有帮助,您可能还想探索:

:world_map: DigiKey 导航