首页 理论教育 位逻辑运算指令详解

位逻辑运算指令详解

时间:2023-06-19 理论教育 版权反馈
【摘要】:位逻辑指令使用“1”和“0”两个数字。这些组合会产生由“1”或“0”组成的结果,称为逻辑运算结果。另外还有SAVE指令、上升及下降沿检测指令等。只有在RLO为“1”时,才会执行S(置位)和R(复位)指令。如果两个信号状态均为“0”,图4-6置位/复位指令则不会发生任何变化。图4-7 立即读取图4-8 立即写入在此实例中,Q5.1为所需的立即输出位。程序段1中给Q5.1分配I0.1信号状态。

位逻辑运算指令详解

位逻辑指令使用“1”和“0”两个数字。这两个数字组成了二进制数字系统的基础,称作二进制数字或位。在触点和线圈符号中,“1”表示激活或激励状态,“0”表示未激活或未激励状态。

位逻辑指令对“1”和“0”信号状态加以解释,并按照布尔逻辑组合它们。这些组合会产生由“1”或“0”组成的结果,称为逻辑运算结果(RLO)。由位逻辑指令触发的逻辑运算可以执行各种逻辑运算功能。

位逻辑指令中常用的符号是继电器类符号及定时器/计数器符号,如动合/动断触点、输出线圈、信号取反等,详见本书4.1.3节。另外还有SAVE指令、上升及下降沿检测指令等。由于梯形图指令是一种图形化指令,逻辑运算关系往往以类似电路连接的方式表达,而没有文本指令的逻辑“与”运算指令、逻辑“或”运算指令等形式,如图4-3中所示关系。对前面已给出的简单的符号指令,不再说明。

(1)SAVE指令

SAVE指令将RLO保存到状态字的BR位。使用时,应注意在退出块前使用SAVE指令,因为块执行期间,有许多指令可能会对BR位进行修改。

【例】 图4-4所示的例子中,一个梯级的运行结果被保存到了BR位。

978-7-111-44821-1-Chapter04-12.jpg

图4-4 SAVE指令

978-7-111-44821-1-Chapter04-13.jpg

图4-5 上升沿检测

(2)RLO上升/下降沿检测

指令—(P)—和—(N)—检测地址中信号的变化,把上升沿/下降沿的变化,在指令后将其显示为RLO=“1”/“0”。将RLO中的当前信号状态与地址的信号状态(边沿存储位)进行比较。如果在执行指令前地址的信号状态为“0”,RLO为“1”,则在执行指令后RLO将是“1”,在所有其他情况下将是“0”。指令执行前的RLO状态存储在地址中。

【例】 图4-5所示是一个上升沿检测的程序。

边沿存储位M0.0保存RLO的先前状态。RLO的信号状态从“0”变为“1”时,程序将跳转到标号CAS1。

(3)置位/复位优先型双稳态触发器

对置位优先型双稳态触发器,如果R输入端的信号状态为“1”,S输入端的信号状态为“0”,则复位RS。否则,如果R输入端的信号状态为“0”,S输入端的信号状态为“1”,则置位触发器。如果两个输入端的RLO均为“1”,触发器先在指定地址执行复位指令,然后执行置位指令,以使该地址在执行余下的程序扫描过程中保持置位状态。

对复位优先型双稳态触发器,如果两个输入端的RLO均为“1”,触发器先在指定地址执行置位指令,然后执行复位指令,使该地址在执行余下的程序扫描过程中保持复位状态。只有在RLO为“1”时,才会执行S(置位)和R(复位)指令。RLO为“0”时,指令中指定的地址保持不变。

978-7-111-44821-1-Chapter04-14.jpg

图4-6 置位/复位指令

表4-7的指令中符号“RS”是表示置位优先型,如果是“SR”,则表示复位优先型。图4-6所示是置位/复位触发器指令的使用。

表4-7 置位/复位优先型RS双稳态触发器指令

978-7-111-44821-1-Chapter04-15.jpg(www.xing528.com)

如果输入端I0.0的信号状态为“1”,I0.1的信号状态为“0”,则置位存储器位M0.0,输出4.0将是“1”。否则,如果输入端I0.0的信号状态为“0”,I0.1的信号状态为“1”,则复位存储器位M0.0,输出Q4.0将是“0”。如果两个信号状态均为“0”,图4-6置位/复位指令则不会发生任何变化。如果两个信号状态均为“1”,将因顺序关系执行复位指令,复位M0.0,Q4.0将是“0”。

(4)立即读取

对于对时间要求苛刻的应用程序,对数字输入的当前状态的读取可能要比正常情况下每OB1扫描周期一次的速度快。立即读取在扫描“立即读取”梯级时从输入模块中直接获取数字输入的状态,不必等到下一OB1扫描周期结束。要从输入模块立即读取一个输入(或多个输入),必须使用外设输入(PI)存储区来代替输入(I)存储区。可以字节、字或双字形式读取外设输入存储区。因此,不能通过触点(位)元素读取单一数字输入。

立即读取是要满足一定条件的:CPU读取包含相关输入数据的PI存储区的字;如果输入位处于接通状态(为1),将对PI存储区的字与某个常数执行产生非零结果的AND运算;测试累加器的非零条件。

对于“立即读取”功能,必须按以下实例所示创建符号程序段。

【例】 图4-7所示是立即读取的程序。

对WAND_W指令的说明:

PIW1=0000000000101010

W#16#0002=0000000000000010

结果0000000000000010

在此实例中,立即输入I1.1与I4.1和I4.5串联。

字PIW1包含I1.1的立即状态。对PIW1与W#16#0002执行AND运算。如果PB1中的I1.1(第二位)为真(“1”),则结果不等于零。如果WAND_W指令的结果不等于零,触点A<>0时将传递电压。程序中必须指定MWx∗才能存储程序段。x可以是允许的任何数。

(5)立即写入

立即写入与立即读取类似。要将一个输出(或多个输出)立即写入输出模块,要使用外设输出(PQ)存储区来代替输出(Q)存储区。可以字节、字或双字形式写入外设输出存储区。因此,不能通过线圈单元更新单一数字输出。要立即向输出模块写入数字输出的状态,根据条件把包含相关位的Q存储器的字节、字或双字复制到相应的PQ存储器(直接输出模块地址)中。

【例】 图4-8所示是立即写入的程序。

978-7-111-44821-1-Chapter04-16.jpg

图4-7 立即读取

978-7-111-44821-1-Chapter04-17.jpg

图4-8 立即写入

在此实例中,Q5.1为所需的立即输出位。

可以修改寻址输出Q字节(QB5)的状态位,也可以将其保持不变。程序段1中给Q5.1分配I0.1信号状态。将QB5复制到相应的直接外设输出存储区(PQB5)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈