服务电话:
15205999253
技术文章
首页 > 技术文章 > 逻辑运算指令有什么作用?

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

 发布时间:2021-04-29 点击量:239
 这类指令是对字节、字或双字的各位分别同时进行逻辑运算的指令。有的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)异或校验
    为了检验通信过程中接收到的数据是否正确,将接收到的需要校验的各字节作异或运算,并将异或的结果(异或校验码)作为报文的一部分发送到接收方。接收方计算出接收到的数据的异或校验码,并与发送方传送过来的校验码比较,如果不同,可以判断通信出错,要求发送方重发
在线客服 联系方式 二维码

服务热线

86-0731-88132751

扫一扫,关注我们