1.双按钮多位起、保、停逻辑
两个按钮操作的起、保、停逻辑是,起动按钮与输出触点并联,然后再与停车按钮取反后串联,以此作为输出线圈的输入条件。用字操作时,也是这个思路。但可以实现一个字(16位)的起、保、停逻辑。
图3-68所示为字操作、起、保、停逻辑。0通道的各个位接起动按钮,1通道的各个位接停车按钮,10通道的各个位接输出线圈。200为中间继电器通道,以用作过渡。
图中P_ON为常ON触点。说明这3条指令总是在执行。所以,0通道任一位ON,都可使10通道的相应位ON,并将予以保持。而1通道的任一位ON,则必使10通道的相应位OFF。而且,这里也是停止优先。即起、停按钮同时按时,为停止。
图3-68用了4条指令,即可对16路进行起、保、停控制。而用基本逻辑指令,每条起、保、停就需4条指令,16路起保停需16×4=64条。4条代替常规的64条,程序的效率当然高多了。
2.单按钮多位起、保、停逻辑
一个按钮起、保、停逻辑也可用字操作。图3-69a所示的就是这个逻辑。这里0通道各个位为按钮输入,11通道的各个位为工作输出。
图3-68 字起、保、停逻辑
图3-69 单按钮字起、保、停逻辑
图中P_ON为常ON触点,使统计在通道中置ON的位数BCNT及比较CMP指令,在每一扫描周期都得以执行。BCNT指令有3个操作数,对本例,第一个操作数,#1,为要统计的通道个数为1,第二个操作数为0,要统计的开始通道为0通道,第三个操作数为201,统计的结果存于201通道。
这时,若有一个按钮按下,统计结果的201通道内容变为1,经比较(执行CMP指令),使相等标志P_EQ ON,进而使0的内容与11的内容进行异或逻辑操作,结果存于11中。
这个异或操作,将使11通道中,与按下按钮对应的位,改变状态,原为OFF的,将转为ON,原为ON的,将转为OFF,实现了单按钮起停。而其它位不变,因为0通道其它位为0,0与1或0异或,其结果不变。
该图3-69b也可起到此功能。而且“XORW”指令将自然为微分执行。
提示:这里的条件是,要确保在同一时间,16个按钮只能一个按下,否则操作无效。在实际系统中,这个条件也可满足。
3.非标准I/O分配处理
以上介绍的字逻辑操作都是针对16路的起、保、停逻辑,即标准I/O分配。但实际上可能不那么正好。如果少于16路怎么办?如图3-70所示的就是一种解决办法。
这里引入200及202通道作过渡。整个操作先对200进行。图中①是MOV指令,为对200操作做好准备。⑤是对10(输出通道)的内容作屏蔽,仅保留不参与起、保、停逻辑的位,并存入202通道,以便于恢复这些位的内容。⑦为对200的内容作屏蔽。由于H03的内容为H02的反,故它保留下来的为要参与起、保、停的逻辑。⑧为或指令,正好把不参与及参与起、保、停逻辑的位,合成后赋予10通道。这样,既可保证参与的位,有起、保、停功能。而不参与的又不受其干扰。
H02通道,其值可现设定,且可掉电保持;可使程序具有弹性。执行本程序,如H02的值设为F,则0、1通道的相应位仅能对10通道的04~15位作起、保、停控制。10通道的00~03位可接受其它控制,不受此程序影响。
如果仅是个别位另有所用,不一定要用图3-70的办法,也可先作字处理,在此之后,个别位再作处理。这时,尽管存在多输出,但仍可达到目的。因为,PLC指令是一条条执行的,后执行的指令,可改变先执行指令的执行的结果。
4.测试逻辑
一些自动控制系统在工作前,往往要不定时地对一些部件或指示部分作些测试。测灯逻辑就是一例。指示灯本来用以显示相应的信息的。若是坏了,就不能正确显示。为此,要用测灯逻辑对灯是否正常作测试。
图3-71为测灯逻辑。也是字操作。000通道为测试输入,10为测灯输出。可通过按下接于0通道的对应位的按钮,视相应灯是否亮,看灯是否正常。什么时候要测灯,使2.00ON即可。这里,用了两条指令,即可进行16个灯的测试。程序的效率也是很高的。(www.xing528.com)
图3-70 非标准I/O分配字起、保、停逻辑处理程序
图3-71 测灯逻辑
图3-72 顺序测灯逻辑
图3-72所示的为用移位指令实现16个指示灯测试逻辑。2.00ON,开始测试。这里P_1s为秒脉冲信号。每秒发一次脉冲,使P_ON(逻辑值为1)信号移位给10通道的00位,而00位的状态移给01位,01的移给02位,等等。经历16s后,10的内容为FFFF,各位全为ON,可检查指示灯是否能正常工作。
检查完成后,可按2.00OFF,其常闭触点,使SFT复位,同时,输脉冲输入切断。测试停止。
如果测试的灯多于16个,其终止通道可设得比10的编号大些。
5.表决电路
图3-22介绍过3个开关表决电路。如表决的参加者较多,电路将很复杂。但用图3-73的逻辑,就比较简单。
该图程序用了BCNT指令,它检测从1通道开始,共1(这里第一操作数为常数1)个通道中,ON的位个数。结果存于200通道中。然后把200的内容与常数8比较,若有大于8,则产生输出,11.00ON,表示表决已超过半数,通过。
如果参加表决的位数比16多,那BCNT指令的第一个操作数可设得比1大。如设为#2,则为32个位,#3为48个位,等等。这时,作比较的第二个操作数不应是8,也要作相应调整。
图3-73 表决电路
如果参加表决的位数比16少。可先对1作逻辑与运算,屏蔽掉不参与的位。比较指令中的常数不用8,再改为相应的数也就可以了。
6.多个开关控制一个输出电路
图3-21介绍了3个钮子开关控制一个灯的逻辑。但要有多个钮子开关,如10个、20个,逻辑就相当复杂了,所用的触点数将是很多的,以至于出现“组合爆炸”。但,如用字或多字逻辑处理,就好办了。图3-74即为16个开关控制一个灯的逻辑。
从图知,它用0通道作16个开关的输入点,程序运行时,不断比较0通道与HR内容。如两者不等,则把0通道的内容传到HR0通道。同时,10.00改变状态。如两者相等,则10.00状态不变。显然,这个逻辑起到了所要求的用16个开关控制一个灯作用。
按此原理,如果为32个开关,再多作一次比较就是了。用多少开关可不受限制。
图3-74 多个钮子开关控制一个灯电路
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。