位逻辑指令有哪些?什么是位逻辑指令?位逻辑

位逻辑指令概述
位逻辑指令使用两个数字 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 扫描周期。