逻辑运算指令有什么作用?

 这类指令是对字节、字或双字的各位分别同时进行逻辑运算的指令。有的PLC没有字节逻辑运算指令。
    S7-200的取反(求反码)指令将输入变量中的二进制数逐位取反,即各位由0变为1,由1变为0(见图4-17a),并将结果装入输出地址中。
    参与“与”运算的两个操作数的同一位均为1时,运算结果的对应位为1,否则为0。
    参与“或”运算的两个操作数的同一位均为0时,运算结果的对应位为0,否则为1。
    参与“异或”(Exclusive Or)运算的两个操作数的同一位不同时,运算结果的对应位为1,否则为0。



    (1)求整数的绝对值
    PLC的负数用2的补码的形式来表示,最高位为1时该位为0,为1时该位为负数,将负数求补(各位取反后加1)得到它的绝对值。
    FX系列有求二进制数补码的指令NEG,因为S7-200没有求补码的指令,需要用取反和加1这两条指令来实现。在下面的程序中,如果VW10中的数不是负数,比较触点断开,不会执行取反和加1指令。
    LDW<              VW10,O               ∥如果VWlO中为负数
    INVW                VWlO                     ∥VW10逐位取反
    INCW                VWlO                     ∥加1得到VWlO的绝对值
    (2)将字或字节中的某些位置为0
    图4-17b中变量VB1的各位与十六进制常数FOH相“与”,因为16# FO的高4位为1,低4位为0,所以运算结束后VB1的低4位被清0,高4位不变。
    (3)将字或字节中的某些位置为1 图4-17c中变量VB3的各位与十六进制常数16# OB(即二进制常数0000 1011)相“或”,16#OB的高4位为0,运算结束后VB3的高4位不变。因为常数16# OB的第3、第1和第0位为,1,不论VB3这几位为0还是为1,运算结束后Ⅵ粥这几位都被置为1。
    (4)判断有哪些位发生了变化 
    两个相同的字节异或运算后运算结果的各位均为0。假设
VB5和VB6中是在不同时刻采集的8位数字量的状态,对它们异或运算后的结果如果不是全0,说明有的位的状态发生了变化。状态发生了变化的位的异或结果为1。
    (5)异或校验
    为了检验通信过程中接收到的数据是否正确,将接收到的需要校验的各字节作异或运算,并将异或的结果(异或校验码)作为报文的一部分发送到接收方。接收方计算出接收到的数据的异或校验码,并与发送方传送过来的校验码比较,如果不同,可以判断通信出错,要求发送方重发

本站部分资源是从网上搜集编辑的,若侵犯了您的版权和利益,请发邮件:6461607@qq.com联系我们删除处理!
上一篇:循环移位指令有什么作用?
下一篇:移位指令有什么作用?