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

2018年8月2日16:06:12 发表评论 1,711 阅读

位逻辑指令概述

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

weinxin
plc入门知识问答
所有PLC工程师都会关注的微信公众账号,只需输入您的问题,就会有答案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: