我的目标是在PLC上实现用Grafcet编写的控制算法。我正在努力克服Grafcet作为多进程同步语言和单核顺序PLC的区别。以下是一个例子。在上层过渡解雇后的第一个周期中Grafcet的结果是什么? (a=1,x=1)
或(a=1, x=0)
?
我知道在SFC中,它取决于工程工具(例如Codesys,Multiprog)的实现,如何评估操作,通常是从左到右。因此,对于证监会来说,(a=1,x=1)
就是答案。但由于Grafcet同时发生了一切,我不知道如何处理这个案子。
如果有人可以指出我如何能够更多地了解在顺序机器上实现像Grafcet这样的语言的挑战,那么奖励积分。
答案 0 :(得分:1)
条件操作在并非所有 Grafcet变体中都被考虑,但是当它们出现时,行为如下所示:只要步骤处于活动状态,转向当x
开启时a
上
如果这就是你的意思,虽然我们可能永远不会找到按照你的方式格式化的条件操作,但是在激活两个同步步骤后,x
将在无限短的时间内启用 至少这是我基于Grafcet进化规则的理解)。因此,x
的初始值是不可预测的 - 假设两个并发步骤在同一时间被激活 - 实际上应该没有问题。
此外,只要Grafcet在现实世界中“实施”(即您的单核PLC),无论是由工程工具直接编译还是转换为梯形图,评估顺序都必须正如你所说的那样选择了,一切都变得确定了,所以当你在“顺序机器上实现像Grafcet这样的语言”时,你的问题并不是一个真正的问题。通过研究将SFC转换为梯形逻辑的规范过程,您可以找到哪些是真正的“challanges”(详细文档可以在网上找到)。
答案 1 :(得分:1)
你有同时分支,所以两个步骤都会执行。但显然会有一个又一个。默认情况下,始终是左侧的那个。请注意,某些PLC允许您更改顺序(从不尝试同时进行,但是对于分歧肯定允许......例如RSLogix5000)。
同时它就像拥有AND一样。所以你告诉处理器执行第一步和第二步。如果您熟悉Ladder Logic,我相信这一点对您来说很清楚。 最后,它应该是a = 1; x = 1。
另请注意,对于不同步的其他步骤,在评估下一次转换之前会有一个扫描延迟,这是一件好事。在梯形图中实现SFC时,这是最省略的事情(如果您不了解它,可能导致无法解决问题)。我已经看过这个" bug"到目前为止,大约50%的项目有阶梯实施和数百个项目。示例:如果您有10个连续转换为true,则您将在单次扫描中从步骤1转到步骤10。排除电机无法启动的原因:)
提示:您可以始终在同步分支中使用虚拟步骤来延迟1次扫描。所以,如果你想要另一个结果(a = 1,x = 0),你可以在左步之前放一个虚拟步骤。