在数字量(或称开关量)控制系统中,变量仅有两种相反的工作状态,例如高电平和低电平、继电器线圈的通电和断电,可以分别用逻辑代数中的1和0来表示这些状态,在波形图中,用高电平表示1状态,用低电平表示0状态。
使用继电器电路、数字电路或PLC的梯形图都可以实现数字量的逻辑运算。图1-2的上面是PLC的梯形图,下面是对应的数字门电路。
图1-2中的I0.0~I0.4为数字输入变量,Q4.0~Q4.2为数字输出变量,它们之间的“与”、“或”、“非”逻辑运算关系如表1-1所示。“与”运算仅在输入均为1时输出才为1,“或”运算仅在输入均为0时输出才为0。“非”运算的输出与输入的状态总是相反,非运算又称为“取反”。
表1-1 逻辑运算关系表
图1-2 基本逻辑运算
a)与b)或c)非
用继电器电路或梯形图可以实现基本的逻辑运算,触点的串联可以实现“与”运算,触点的并联可以实现“或”运算,用常闭触点控制线圈可以实现“非”运算。
多个触点的串、并联电路可以实现复杂的逻辑运算,例如图1-3中的继电器电路实现的逻辑运算可以用逻辑代数表达式表示为
式中的加号表示逻辑或,乘号(·)或星号(*)表示逻辑与,变量上面的横线表示“非”运算。与普通算术运算“先乘除后加减”类似,逻辑运算的规则为先“与”后“或”。为了先作“或”运算(触点的并联),用括号将“或”运算式括起来,括号中的运算优先执行。
逻辑运算是对无符号数按位进行与、或、异或和取反等操作。操作数的长度有B、W、DW。指令格式如表1所示。
1. 逻辑与(WAND)指令:将输入IN1,IN2按位相与,得到的逻辑运算结果,放入OUT指定的存储单元。
2. 逻辑或(WOR)指令:将输入IN1,IN2按位相或,得到的逻辑运算结果,放入OUT指定的存储单元。
3. 逻辑异或(WXOR)指令:将输入IN1,IN2按位相异或,得到的逻辑运算结果,放入OUT指定的存储单元。
4. 取反(INV)指令:将输入IN按位取反,将结果放入OUT指定的存储单元。
表1 逻辑运算指令格式
LAD |
| ||||
STL | ANDB IN1,OUT ANDW IN1,OUT ANDD IN1,OUT | ORB IN1,OUT ORW IN1,OUT ORD IN1,OUT | XORB IN1,OUT XORW IN1,OUT XORD IN1,OUT | INVB OUT INVW OUT INVD OUT | |
功能 | IN1,IN2按位相与 | IN1,IN2按位相或 | IN1,IN2按位异或 | 对IN取反 | |
操作数 | B | IN1/IN2:VB, IB, QB, MB, SB, SMB, LB, AC, 常量, *VD, *AC, *LD OUT:VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *AC, *LD | |||
W | IN1/IN2:VW, IW, QW, MW, SW, SMW, T, C, AC, LW, AIW, 常量, *VD, *AC, *LD OUT:VW, IW, QW, MW, SW, SMW, T, C, LW, AC, *VD, *AC, *LD | ||||
DW | IN1/IN2:VD, ID, QD, MD, SMD, AC, LD, HC, 常量, *VD, *AC, SD, *LD OUT:VD, ID, QD, MD, SMD, LD, AC, *VD, *AC, SD, *LD |
说明:
(1)在表1中,在梯形图指令中设置IN2和OUT所指定的存储单元相同,这样对应的语句表指令如表中所示。若在梯形图指令中,IN2(或IN1)和OUT所指定的存储单元不同,则在语句表指令中需使用数据传送指令,将其中一个输入端的数据先送入OUT,在进行逻辑运算。如MOVB IN1,OUT
ANDB IN2,OUT
(2)ENO=0的错误条件:0006 间接地址,SM4.3 运行时间
(3)对标志位的影响:SM1.0(零)