西门子PLC模块代理商西门子PLC模块授权代理商
上升沿跟下降沿用途极广,主要用于信号由0变1或由1变0的那一时刻(瞬时跳变)变化状态所进行的控制。
简单举两例:
1、一设备用一运行信号指示其在运行,如果我们需要记录其运行时间,那么就可应用运行信号的上升沿来触发计时开始,而下降沿可应用下降沿来触发计时结束。
2、两设备互为备用,一个设备停机时就要启动另一设备,此时就是利用各自设备运行信号的下降沿来触发另一设备启动。
主控继电器(Master Control Relay)简称MCR。
主控继电器用来控制MCR区内的指令是否被正常执行,相当于一个用来接通和断开“能量流"的主令开关。有关指令:
MCRA:激活MCR区指令;
MCRD:取消MCR区指令;
MCR(:打开MCR区指令,在MCR堆栈中保持该指令之前的逻辑运算结果RLO(即MCR位);
MCR):关闭MCR区指令,从MCR堆栈中取出保存的逻辑运算结果RLO;
MCR(,MCR)指令必须成对使用,以表示受控临时“电源线"的形成与终止。
例:
MCRA //激活MCR区
A I0.2
MCR( //RLO保存到MCR堆栈,打开MCR区,I0.2=1则MCR位为1,反之为0
A I3.1
=Q 4.0 //如MCR位为0,不管I3.1的状态如何,Q4.0被置为0
A I0.5
JNB -001
L MW20
T QW10 //如MCR位为0,MW20内容送入QW10
-001:NOP0
)MCR //结束MCR控制区
MCRD //关闭MCR区
A I1.1
=Q4.1 //这两条指令在MCR区之外,不受MCR位的控制
在此,在转帖有关例题:
MCR指令叫做主控指令,简单地讲是有这么一个MCR的栈区。在这个栈区内的操作不仅受分步条件控制,还可以用MCR的ON或OFF来进行总控制!如:
STL Explanation
MCRA //Activate MCR area.
A I 1.0
MCR( //Save RLO in MCR stack, open MCR area. MCR = "on" when RLO=1 (I?.0 ="1"); MCR = "off" when RLO=0 (I 1.0 ="0")
A I 4.0
= Q 8.0 //If MCR = "off", then Q 8.0 is set to "0" regardless of I 4.0.
L MW20
T QW10 //If MCR = "off", then "0" is transferred to QW10.
)MCR //End MCR area.
MCRD //Deactivate MCR area.
A I 1.1
= Q 8.1 //These instructions are outside of the MCR area and are not dependent upon the MCR bit.
在上例中,用I 1.0来作为MCR取激活的条件,既将A I 1.0逻辑结果RLO存入MCR区,MCR区是否为NO取决于RLO,RLO=0时MCR区为NO,在此条件下,区内的逻辑结果受MCR总控,既如A I 4.0 = Q 8.0一句,只要MCR区为NO,Q 8.0即为零,而不管I 4.0的状态如何!
I0.0常开按钮,闭合时Q0.0/Q0.1两路切换导通,频率为15分钟一次,切换时另一路信号保持2分钟。即,若Q0.0通15分钟时,Q1.1导通,此时Q0.0不是立刻断开,而是延时2分钟。
本人在做这段程序时,分析Q0.0/Q0.1两路的开断情况,得出,假定Q0.0路先导通,则Q0.0是以通17min断13min的周期做循环,而Q0.1是在I0.0闭合15分钟后以通17min断13min做周期循环。
直接用逻辑关系来做控制本人也尝试过,苦于逻辑思维实在不行,后来还是用上面的方法实现的,能否请高手指教如何直接用逻辑关系来实现?
答:以下是根据你的要求编写的程序,已经实际测试过,希望能够帮助到你。
TITLE=程序注释
Network 1 // 网络标题
LD I0.0
EU
AN Q0.0
AN Q0.1
S M0.0, 1
Network 2
LD M0.0
EU
LD Q0.0
AW< T37, 10200
OLD
= Q0.0
Network 3
LD Q0.0
TON T37, 9000
Network 4
LD T37
EU
R M0.0, 1
Network 5
LD T37
LD Q0.1
AW< T38, 10200
OLD
= Q0.1
Network 6
LD Q0.1
TON T38, 9000
Network 7
LD T38
EU