顺序控制(SCR)指令

对于通常的应用来说,一般不使用顺序控制指令编程。顺控指令一般用在需要控制的动作具有明确的步骤顺序,并且周而复始地循环的场合。

顺控指令程序可以作功能块(子程序)包含在整个程序中,与其他非顺控控制程序共存。

普通的PLC程序是从头到尾不断扫描执行的。SCR指令的关键是“步”和“转换”,当转换的条件不满足时会一直保持在当前的步中。“转换”就是从一个步,进入另一个步。在一个步的状态中,程序也不是按普通程序运行的模式进行局部的“循环扫描”。

详细情况请参考《S7-200系统手册》

 

顺序控制方式

SCR指令的每一个步的结构,总是以LSCR指令开始,以SCRE结束,SCRT(步转换指令)及其发生的条件在这两者之间。

载入顺序控制继电器(LSCR)指令用指令(N)引用的S位数值载入SCR和逻辑堆栈。SCR段被SCR堆栈的结果数值激励或取消激励。SCR堆栈数值被复制至逻辑堆栈的顶端,以便方框或输出线圈可直接与左电源杆连接,无须插入触点。
顺序控制继电器转换(SCRT)指令识别要启用的SCR位(下一个要设置的n位)。当使能位进入线圈或FBD方框时,打开引用n位,并关闭LSCR指令(启用该SCR段)的n位 。
顺序控制继电器结束(SCRE)指令标记SCR段的结束。

一旦将电源应用于输入,有条件顺序控制继电器结束(CSCRE)指令即标记SCR段结束。CSCRE只有在STL编辑器中才能使用。    
注释:CSCRE只有在第二代(22x)CPU(从1.20版开始)才能使用。

 

下列说明适用于顺序控制继电器指令。

"载入SCR"指令(LSCR):标记SCR段的开始,"SCR结束"指令(SCRE)标记SCR段的结束。"载入SCR"和"SCR结束"指令之间的所有逻辑执行取决于S堆栈数值。"SCR结束"和下一条"载入SCR"指令之间的逻辑不取决于S堆栈数值。

"SCR转换"指令(SCRT):提供一种从现用SCR段向另一个SCR段转换控制的方法。当"SCR转换"指令有使能位时,该指令会复原当前现用段的S位,并设置被引用段的S位。在"SCR转换指令执行时,复原现用段的S位不会影响S堆栈。因此,SCR段在退出前保持激励状态。

"有条件SCR结束"指令(CSCRE):提供一种无须执行"有条件SCR结束"和"SCR结束"指令之间的指令即可退出现用SCR段的方法。"有条件SCR结束"指令不会影响任何S位,亦不会影响S堆栈。

 

控制方式:

1>顺序控制 :具有良好定义步骤顺序的进程很容易用SCR段作为示范。

例如,考虑一个有三个步骤的循环进程,当第三个步骤完成时,应当返回第一个步骤。

程序实例:顺序控制

2>分散控制:在很多应用程序中,一个顺序状态流必须分为两个或多个不同的状态流。

如下图所示,当控制流分为多个时,所有的输出流必须同时激活

程序实例:分散控制

3>汇合控制 :当两个或多个连续状态流必须汇合成一个状态流时,出现一种与分散控制相似的状况。当多个状态流汇合成一条状态流时,则称为汇合。当状态流汇合时,在执行下一个状态之前,所有的输入流必须完成。

下图显示汇合的状况:

程序实例:汇合控制

4>流分散控制 :依据转换条件在其他情况下,根据哪一种转换条件首先变为真,可将一个控制流导入几种可能的控制流之一。

此种情形显示如下:

程序实例:流分散控制

SCR指令

SCR指令的每一个步的结构,总是以LSCR指令开始,以SCRE结束,SCRT(步转换指令)及其发生的条件在这两者之间。

下面是一个例子:

Network 1

LD SM0.1
S S0.1, 1 //程序运行开始时,进入第一步

Network 2
LSCR S0.1 //装载SCR指令,SCR结构开始

Network 3
LD SM0.0
S Q0.0, 1 //置位Q0.0

Network 4
LD I1.0 //I1.0为“1"时,
SCRT S0.2 //转换到下一步

Network 5
SCRE //步结束

Network 6
LSCR S0.2

Network 7
LD SM0.0
R Q0.0, 1

Network 8
LD I1.1
SCRT S0.3

Network 9
SCRE

Network 10
LSCR S0.3

Network 11
LD SM0.0
S Q0.0, 1

Network 12
LD I1.2
SCRT S0.4

Network 13
SCRE

Network 14
LSCR S0.4

Network 15
LD SM0.0
R Q0.0, 1

Network 16
LD I1.3
SCRT S0.1 //回到第一步

Network 17
SCRE

常问问题

是否可以在不同的步中使用同一个开关量输出点?为何出现不合逻辑的现象?

可以在不同的步中对同一个输出点进行操作。这些逻辑运算不应使用普通编程时的实时状态计算规则,应使用S(置位)和R(复位)指令对输出点操作;或者使用中间状态继电器过渡,最后再综合逻辑,一起输出。

顺控程序停止调用后,整个步进逻辑如何变化,恢复调用后如何表现?

参见:顺控指令停止和恢复实例