工业控制
当流程需要顺序控制时,顺序功能图 (SFC) 是一个很好的工具,但事情很快就会变得复杂。以下是创建更好的 SFC 程序和应用程序的一些方法。
称为顺序功能图 (SFC) 的图形编程语言由 IEC 61131-3 标准化。该图表从上到下阅读,块用于表示步骤、转换和功能。这种编程风格类似于功能框图,并且具有一些相同的缺陷,这些缺陷会产生复杂性并降低编程效率。
图 1.顺序功能图 (SFC) 编程示例布局。图片由施耐德电气提供
首先要做的事情:奠定基础
就像任何编程语言一样,花时间做基础工作、布局和构建代码,从长远来看会节省你的时间。SFC 程序非常适合使用序列的应用程序。SFC 是一种多功能解决方案,非常适合自动化装配线或依赖执行器位置、伺服位置或任何布尔传感器前进到下一步的自动化。首先回顾整个流程,然后将流程分解为更小的序列。当拾取和放置站从进给擒纵机构提升零件时,序列可能包括拾取和放置它,然后将另一个序列应用于擒纵机构。
通过分解过程,它默认布置 SFC 程序。另外,尝试使用 SFC 来触发其他过程或输出。但是,请避免在 SFC 内进行计算或处理,而是使用握手或功能块来启动其他进程。
图 2.SFC图中的步骤示例。
外表决定一切
使用与 FBD 编程类似的方法,您需要确保块和转换尽可能间隔开,并在必要时使用注释。使用 SFC,您可以添加并行分支,但请谨慎执行此操作。如果添加太多分支,图表可能会变得混乱且难以阅读。
从本质上讲,最佳实践要求努力使图表看起来整洁。如果电线挡道,它们很可能被隐藏,因此应使用参考箭头。确保步骤操作不与转换或其他步骤重叠。
图 3.文本间距和布局不正确(故意夸大效果)。
前进一步,后退一步
序列依赖于能够在需要时前进并在不需要时保持不动。当序列需要后退一步时也是如此。例如,如果有一个非常长的气缸需要很长时间才能从缩回位置行进到伸出位置,则序列将需要等待该气缸通过伸出传感器到达伸出位置。大多数 SFC 程序都会有一个关于转换的输入,告诉控制器何时可以进入下一步。
该输入可以通过多种方式进行编程:
每个转换可以有一组不同的条件,允许序列转换到下一步。这需要一组自定义条件,需要针对每个步骤进行调整,但导致转换的原因非常清楚,并且每个步骤可以有不同的条件。
在 SFC 外部创建一个逻辑梯级,设置每次转换时使用的单个位。通常我喜欢使用全传感器正常位或监视故障字。如果有任何错误待处理,我知道该序列需要等待。通过对每个步骤使用一位,可以降低 SFC 程序的复杂性,并将处理过程移至另一个子例程。
握手,自我介绍的好方法
与 FBD 依赖握手与其他子例程或进程交互的方式类似,握手是降低 SFC 复杂性的好方法。避免在 SFC 本身内直接在步骤或设置输出上使用长字符串条件。在其他子程序中设置握手和驱动条件。我喜欢将 UDT 用于相机和机器人等设备,并且经常在 UDT 中添加诸如“开始”和“开始”之类的握手。这样,我通信和控制设备所需的一切都在一个标签中。
图 4.并行 SFC 分支。
图 5.建立步骤属性的设置。
应用领域
如果我们回顾一下我们的拾放站示例,我们需要为三个气缸创建一个 SFC,并为擒纵机构创建另一个 SFC。如果传感器未处于预期状态的正确位置,则每个气缸、夹具升高/降低、梭子伸出/缩回以及夹具打开/关闭都会出现故障。
之后,强烈建议监视故障字。如果存在任何未决的故障,最好阻止 SFC 中的前进步骤。为了适应步骤延迟,一些 IDE 提供了内置于 SFC 步骤中的计时器。使用罗克韦尔自动化的 Studio 5000,每个步骤都有可设置的参数,包括步骤计时器。当零件存在并且擒纵机构处于拾取位置时,启动拾放 SFC。
SFC 的每一步都会为气缸设置不同的预期状态,这些预期位就是我们的握手。当预期状态发生变化时,故障将悬而未决,直到气缸到达其位置,然后顺序将向前推进。
使用 SFC 花费更少的时间,获得更好的结果
以这种方式编写序列可以让程序员花更少的时间来编程序列,而花更多的时间来编写通信代码或集成机器。查看序列时,可以更轻松地理解下一步应该发生什么以及前面的步骤已经发生了什么。
审核编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !