.
SFC中的处理次序
.
.

.基本元素的行为

  • 激活步:一个激活步包括当前正在执行的动作。在在线模式下,CODESYS以蓝色显示激活步。
  • 初始化步:在SFC中调用POU后的第一个循环中,初始化步会自动激活并执行步的动作。
  • CODESYS执行IEC动作至少两次:第一次是激活这个步,第二次是禁用这个步(但直到下一个循环)。
  • 选择分支:如果分支之前的步处于激活状态,则CODESYS从左到右传递每个选择分支线的第一个过渡。在第一个分支行中CODESYS激活后续的步,并返回TRUE
  • 并行分支:如果分支前的步(水平双线)处于激活状态,并且分支前的转换结果为TRUE,则CODESYS激活每个分支线中的第一步。然后同时处理分支线。当每条分支线中的每个最后一步都处于激活状态并且双线之后的转换产生TRUE时,将激活分支结束后的步。
.

.处理次序

1.
复位IEC动作
CODESYS重置动作限定符(N,R,S,L,D,P,SD,DS,SL)的内部动作控制标志。这些标志控制IEC动作。但是,在动作中调用标记时,不会重置它们。
2.
执行退出动作
CODESYS验证所有的步是否满足每个步执行退出动作的条件。验证顺序遵循SFC图中的布局,从上到下,从左到右。
当步被停用时,CODESYS执行退出操作(在前一个循环中执行了任何输入和步骤操作并且后续步的条件为TRUE之后)。
3.
执行进入动作
CODESYS验证所有的步是否满足每个步执行输入动作的条件。验证顺序遵循SFC图中的布局,从上到下,从左到右。如果满足条件,则CODESYS执行输入动作。
一旦处理完上一步的转换,CODESYS便执行输入动作并产生TRUE,从而表明该步已被激活。
4.
时间检查/执行步的动作

.CODESYS按照SFC布局的顺序对每个步执行以下检查:

  • CODESYS将活动步的经过时间复制到相应的隐式步变量<step name>.t。(尚未实现)
  • 如果发生超时,则CODESYS设置相应的错误标志。(尚未实现)
  • 对于非IEC步骤:CODESYS执行步的动作。
5.
执行IEC动作
按照字母的顺序CODESYS执行IEC动作,两次通过动作列表。在第一次,对在上一个循环中禁用的每个步CODESYS执行IEC动作。在第二次,针对每个激活步执行IEC动作。
6.
转换检查/激活下一步
转换按如下方式传递:如果某个步在当前循环中处于活动状态,并且后续转换的结果为TRUE,并且该步定义的最短时间已过,则激活后续的步。
.

提示!

执行动作时请注意:

如果在多个SFC图中使用动作,则该动作可以在同一周期内多次执行。例如,如果顺序功能图包括两个IEC动作A和B,它们均在SFC中编程并称为IEC动作C,则将IEC动作C调用两次。

如果在SFC图的不同级别中同时使用相同的IEC动作,则在处理时可能导致不可预测的结果。因此,CODESYS发出相应的错误消息。对于在早期版本的开发系统中创建的工程,可能会出现此错误消息。

 

请注意:可以使用隐式变量来监视步和动作的处理状态并控制处理。