首页 历史故事常用的位逻辑指令及应用案例分析

常用的位逻辑指令及应用案例分析

【摘要】:表5-1 常用的位逻辑指令1.基本逻辑指令常开触点对应的存储器地址位为1状态时,该触点闭合。当I0.2=1,I0.3=1时,Q4.0~Q4.7被复位为零。图5-4 置位域复位域指令图5-5 触发器的置位复位指令触发器指令上的M0.0和M0.1称为标志位,R、S输入端首先对标志位进行复位和置位,然后再将标志位的状态送到输出端。编写程序如图5-12所示,其中M1.5为CPU时钟存储器MB1的第5位,其时钟频率为1 Hz。

位逻辑指令使用1和0两个数字,将1和0两个数字称做二进制数字或位。在触点和线圈中,1表示激活状态,0表示未激活状态。位逻辑指令是PLC中最基本的指令,如表5-1所示。

表5-1 常用的位逻辑指令

978-7-111-34922-8-Chapter05-1.jpg

1.基本逻辑指令

常开触点对应的存储器地址位为1状态时,该触点闭合。常闭触点对应的存储器地址位为0状态时,该触点闭合。触点符号中间的“/”表示常闭,触点指令中变量的数据类型为BOOL型。输出指令与线圈相对应,驱动线圈的触点电路接通时,线圈流过“能流”指定位对应的映像寄存器为1,反之则为0。输出线圈指令可以放在梯形图的任意位置,变量为BOOL型。常开触点、常闭触点和输出线圈的例子如图5-1所示,其中I0.0和I0.1是与的关系,当I0.0=1,I0.1=0时,输出Q4.0=1,Q4.1=0;当I0.0=1和I0.1=0的条件不同时满足时,Q4.0=0,Q4.1=1。

978-7-111-34922-8-Chapter05-2.jpg

图5-1 触点和输出例子

取反指令的应用如图5-2所示,其中I0.0和I0.1是或的关系,当I0.0=0,I0.1=0时,取反指令后的Q4.0=1。

978-7-111-34922-8-Chapter05-3.jpg

图5-2 取反指令例子

2.置位/复位指令

对于置位指令,如果RLO=“1”,则指定的地址被设定为状态“1”,而且一直保持到它被另一个指令复位为止。对于复位指令,如果RLO=“1”,则指定的地址被复位为状态“0”,而且一直保持到它被另一个指令置位为止。图5-3中,当I0.0=1,I0.1=0时,Q4.0被置位,此时即使I0.0和I0.1不再满足上述关系,Q4.0仍然保持为1,直到Q4.0对应的复位条件满足,即当I0.2=1,I0.3=1时,Q4.0被复位为零。

978-7-111-34922-8-Chapter05-4.jpg

图5-3 置位/复位指令

置位域指令SET_BF激活时,从地址OUT处开始的“n”位分配数据值1,SET_BF不激活时,OUT不变。复位域指令RESET_BF为从地址OUT处开始的“n”位写入数据值0,RESET_BF不激活时,OUT不变。置位域和复位域指令必须在程序段的最右端。图5-4中,当I0.0=1,I0.1=0时,Q4.0~Q4.3被置位,此时即使I0.0和I0.1不再满足上述关系,Q4.0~Q4.3仍然保持为1。当I0.2=1,I0.3=1时,Q4.0~Q4.7被复位为零。

触发器的置位复位指令如图5-5所示。可以看出,触发器有置位输入和复位输入两个输入端,分别用于根据输入端的RLO=1,对存储器位置位或复位。当I0.0=1时,Q4.0被复位,Q4.1被置位,当I0.1=1时,Q4.0被置位,Q4.1被复位。若I0.0和I0.1同时为1,则哪一个输入端在下面哪个起作用,即触发器的置位复位指令分为置位优先和复位优先两种,分别对应图5-5所示。

978-7-111-34922-8-Chapter05-5.jpg

图5-4 置位域复位域指令

978-7-111-34922-8-Chapter05-6.jpg

图5-5 触发器的置位复位指令

触发器指令上的M0.0和M0.1称为标志位,R、S输入端首先对标志位进行复位和置位,然后再将标志位的状态送到输出端。如果用置位指令把输出置位,则当CPU全启动时输出被复位。若在图5-5所示的例子中,将M0.0声明为保持,则当CPU全启动时,它就一直保持置位状态,被启动复位的Q4.0会再次赋值为“1”。

后面介绍的诸多指令通常也带有标志位,其含义类似。

【例5-1】抢答器有I0.0、I0.1和I0.2三个输入,对应输出分别为Q4.0、Q4.1和Q4.2,复位输入是I0.4。要求:三人任意抢答,谁先按动瞬时按钮,谁的指示灯优先亮,且只能亮一盏灯,进行下一问题时主持人按复位按钮,抢答重新开始。

编写程序如图5-6所示,要注意的是,SR指令的标志位地址不能重复,否则出错。

978-7-111-34922-8-Chapter05-7.jpg

图5-6 抢答器程序

3.边沿指令

(1)触点边沿

触点边沿检测指令包括P触点和N触点指令,是当触点地址位的值从“0”到“1”(上升沿或正边沿,Positive)或从“1”到“0”(下降沿或负边沿,Negative)变化时,该触点地址保持一个扫描周期的高电平,即对应常开触点接通一个扫描周期。触点边沿指令可以放置在程序段中除分支结尾外的任何位置。图5-7中,当I0.0、I0.2为1,且当I0.1有从0到1的上升沿时,Q0.0接通一个扫描周期。

978-7-111-34922-8-Chapter05-8.jpg

图5-7 P触点例子

(2)线圈边沿

线圈边沿包括P线圈和N线圈,是当进入线圈的能流中检测到上升沿或下降沿变化时,线圈对应的位地址接通一个扫描周期。线圈边沿指令可以放置在程序段中的任何位置。图5-8中,线圈输入端的信号状态从“0”切换到“1”时,Q0.0接通一个扫描周期。

978-7-111-34922-8-Chapter05-9.jpg

图5-8 P线圈例子

(3)TRIG边沿

TRIG边沿指令包括P_TRIG和N_TRIG指令,当在“CLK”输入端检测到上升沿或下降沿时,输出端接通一个扫描周期。图5-9中,当I0.0和I0.1相与的结果有一个上升沿时,Q0.0接通一个扫描周期,I0.0和I0.1相与的结果保存在M0.0中。

978-7-111-34922-8-Chapter05-10.jpg

图5-9 P_TRIG例子

由上可以看出,边沿检测常用于只扫描一次的情况,如图5-10所示程序表示按一下瞬时按钮I0.0,MW10加1,此时必须使用边沿检测指令。

注意:图5-10中a和b程序功能是一致的。

【例5-2】按动一次瞬时按钮I0.0,输出Q4.0亮,再按动一次按钮,输出Q4.0灭,重复以上过程。编写程序如图5-11所示。

978-7-111-34922-8-Chapter05-11.jpg

图5-10 边沿检测指令例子

978-7-111-34922-8-Chapter05-12.jpg

图5-11 例5-2程序

【例5-3】若故障信号I0.0为1,使Q4.0控制的指示灯以1 Hz的频率闪烁。操作人员按复位按钮I0.1后,如果故障已经消失,则指示灯熄灭,如果没有消失,则指示灯转为常亮,直至故障消失。

编写程序如图5-12所示,其中M1.5为CPU时钟存储器MB1的第5位,其时钟频率为1 Hz。

978-7-111-34922-8-Chapter05-13.jpg

图5-12 例5-3程序