位逻辑指令概述位逻辑指令使用两个数字 1 和 0。这两个数字构成二进制系统的基础。这两个数字 1和 0 称为二进制数字或位。对于触点和线圈而言,1 表示已激活或已励磁,0 表示未激活或未励磁。
位逻辑指令解释信号状态 1 和 0,并根据布尔逻辑将其组合。这些组合产生称为“逻辑运算结果”(RLO)的结果 1 或 0。
布尔位逻辑适用于下列基本指令:
A 与运算
AN 与非运算
O 或运算
ON 或非运算
X 异或运算
XN 同或运算
O 先与运算后或运算
可使用下列指令执行嵌套表达式:
A( 与运算嵌套开始
AN( 与非运算嵌套开始
O( 或运算嵌套开始
ON( 或非运算嵌套开始
X( 异或运算嵌套开始
XN( 同或运算嵌套开始 ) 嵌套结束
可使用下列指令之一终止布尔位逻辑串:
• = 赋 值
• R 复 位
• S 置 位
可使用下列指令之一更改逻辑运算的结果(RLO):
• NOT 对RLO 取反
• SET 置 位 RLO (=1)
• CLR 清零RLO (=0)
• SAVE 将 RLO 保存到 BR 寄存器
对上升沿或下降沿转换做出反应的其它指令:
• FN 下降沿
• FP 上升沿
1.1 A 与运算格式
描述
A 检查寻址位的状态是否为“1”,并将测试结果与 RLO 进行与运算。
状态字位检查:
AND 指令还可通过下列地址直接检查状态字:==0、<>0、>0、<0、>=0、<=0、 OV、OS、UO、BR。
状态字
实例
1.1 AN 与非运算格式
N <位>
描述
AN 检查寻址位的状态是否为“0”,并将测试结果与 RLO 进行与运算。
AND NOT 指令还可通过下列地址直接检查状态字:==0、<>0、>0、<0、>=0、 <=0、OV、OS、UO、BR。
状态字
实例
1.1 O 或运算格式
O <位>
描述
O 检查寻址位的状态是否为“1”,并将测试结果与 RLO 进行或运算。
状态字位检查:
OR 指令还可通过下列地址直接检查状态字:==0、<>0、>0、<0、>=0、<=0、 OV、OS、UO、BR。
状态字
实例
1.1 ON 或非运算格式
ON <位>
描述
ON 检查寻址位的状态是否为“0”,并将测试结果与 RLO 进行或运算。
状态字位检查:
OR NOT 指令还可通过下列地址直接检查状态字:==0、<>0、>0、<0、>=0、 <=0、OV、OS、UO、BR。
状态字
实例
1.6 X 异或运算格式
X <
位>
描述
X 检查寻址位的状态是否为“1”,并将测试结果与 RLO 进行异或运算。
也可以重复使用 Exclusive OR 函数。这样,如果有奇数个被检查地址状态为 “1”,则逻辑运算的终结果为“1”。
状态字位检查:
EXCLUSIVE OR 指令还可通过使用下列地址直接检查状态字:==0、<>0、>0、 <0、>=0、<=0、OV、OS、UO、BR。
状态字
实例
1.7 XN 同或运算格式
XN <位>
描述
XN 检查寻址位的状态是否为“0”,并将测试结果与 RLO 进行异或运算。
状态字位检查:
EXCLUSIVE OR NOT 指令还可通过使用下列地址直接检查状态字:==0、<>0、0、<0、>=0、<=0、OV、OS、UO、BR。
状态字
实例
1.8 O 先与运算后或运算格式
O
描述
O 函数根据下列规则对 AND 函数执行逻辑 OR 指令:先与运算后或运算
状态字
实例
1.1 A( 与运算嵌套开始格式
A(
描述
A( (与运算嵌套开始)将 RLO 和 OR 位及一个函数代码保存到嵌套的堆栈中。多可有七个嵌套堆栈条目。
状态字
实例
1.10 AN( 与非运算嵌套开始格式
AN(
描述
AN( (与非运算嵌套打开)将 RLO 和 OR 位及一个函数代码保存到嵌套的堆栈中。多可有七个嵌套堆栈条目。
状态字
1.11 O( 或运算嵌套开始格式
O(
描述
O( (或运算嵌套打开)将 RLO 和 OR 位及一个函数代码保存到嵌套的堆栈中。多可有七个嵌套堆栈条目。
状态字
1.12 ON( 或非运算嵌套开始
格式
ON(
描述
ON( (OR NOT 嵌套打开)将 RLO 和 OR 位及一个函数代码保存到嵌套的堆栈中。多可有七个嵌套堆栈条目。
状态字
1.13 X( 异或运算嵌套开始
格式
X(
描述
X( (异或运算嵌套打开) 将 RLO 和 OR 位及一个函数代码保存到嵌套堆栈中。多可有七个嵌套堆栈条目。
状态字
1.14 XN( 同或运算嵌套开始格式
XN(
描述
XN( (同或运算嵌套打开)将 RLO 和 OR 位及一个函数代码保存到嵌套堆栈中。多可有七个嵌套堆栈条目。
状态字
1.15 ) 嵌套结束
描述
)
) (嵌套结束)从嵌套堆栈中删除条目,恢复 OR 位,根据函数代码将包含在堆栈条目中的 RLO 与当前 RLO 互连,并将结果分配给 RLO。如果函数代码为“AND”或 “AND NOT”,则 OR 位也包括在内。
打开括号组的语句:
U( 与运算嵌套开始
UN( 与非运算嵌套开始
O( 或运算嵌套开始
ON( 或非运算嵌套开始
X( 异或运算嵌套开始
XN( 同或运算嵌套开始
状态字
实例
1.16 = 赋值格式
<位>
描述
=<位>如果 MCR = 1,则将 RLO 写入打开的主控继电器的寻址位。如果 MCR = 0,则将值 0 而不是 RLO 写入寻址位。
状态字
实例
1.17 R 复位
格式
R <位>
描述
R (将位进行复位)如果 RLO = 1 且主控继电器 MCR = 1,则在寻址位中放入“0”。如果 MCR = 0,则寻址位不变。
状态字
实例
1.18 S 置位格式
S <位>
指令说明
S (将位进行置位)如果 RLO = 1 且打开的主控继电器 MCR = 1,则在寻址位中放入 “1”。如果 MCR = 0,则寻址位不变。
状态字
实例
1.19 NOT 对 RLO 取反格式
NOT描述
NOT 对 RLO 取反。
1.20 SET 置位 RLO (=1)格式
SET
描述
SET 将 RLO 置位到信号状态“1”。
状态字
实例
1.21 CLR 清零 RLO (=0)格式:CLR
描述:CLR 将 RLO 设置到信号状态“0”。
状态字:
实例:
1.22 SAVE 将 RLO 保存到 BR 寄存器格式
指令说明
SAVE
SAVE 将 RLO 保存到 BR 位中。个校验位/FC 不复位。因此,BR 位的状态包括在下一程序段中的与逻辑运算内。
建议不要在同一个块或二级块中对 BR 位使用 SAVE 并执行后续查询,因为 BR 位可能会被这两个操作之间的大量指令改变。退出块之前使用 SAVE 指令的意义在于,此操作将 ENO 输出(= BR 位)设置为 RLO 位的值,从而可以将该块的出错处理添加至此。
状态字
1.23 FN 下降沿格式:FN <位>
描述
FN <位> (RLO 下降沿)检测 RLO 从“1”跳转到“0”时的下降沿,并以 RLO = 1 指示此情况。
在每个程序扫描周期期间,都会将 RLO 位的信号状态与上一周期获取的状态进行比较,以判断状态是否改变。上一 RLO 状态必须存储在沿标记地址(<位>)中才能进行比较。如果当前状态与上一 RLO“1”状态 (检测到下降沿) 不同,则执行此指令之后 RLO 位将为“1”。
注意
由于块的本地数据只在块运行时有效,因此如果要监视的位位于过程映像中,则此指令没有意义。
状态字
定义
实例
如果可编程逻辑控制器在触点 I 1.0 检测到下降沿,则会在 Q 4.0 处励磁线圈一个OB1 扫描周期。
1.24 FP 上升沿格式FP <位>
描述
FP <位> (RLO 上升沿)检测 RLO 从“0”跳转到“1”时的上升沿,并以 RLO = 1 指示此情况。
在每个程序扫描周期期间,都会将 RLO 位的信号状态与上一周期获取的状态进行比较,以判断状态是否改变。上一 RLO 状态必须存储在沿标记地址(<位>)中才能进行比较。如果当前状态与上一 RLO“0”状态(检测到上升沿) 不同,则执行此指令之后RLO 位将为“1”。
注意
由于块的本地数据只在块运行时有效,因此如果要监视的位位于过程映像中,则此指令没有意义。
状态字
实例
如果可编程逻辑控制器在触点 I 1.0 检测到上升沿,则会在 Q 4.0 处励磁线圈一个OB1 扫描周期。