状态位指令属于位逻辑指令,用于对状态字的位进行处理。各状态位指令分别对下列条件之一做出反应,其中每个条件以状态字的一个或多个位来表示。
1)二进制结果位(BR---I I---)被置位(即信号状态为1)。
2)数学运算函数发生溢出(OV---I I---)或存储溢出(OS---I I---)。
3)数学运算函数的结果是无序的(UO---I I---)。
4)数学运算函数的结果与0的关系有:==0、<>0、>0、<0、>=0、<=0、起动和停止。
当状态位指令以串联方式连接时,该指令将根据“与”真值表将其信号状态校验的结果与前一逻辑运算结果合并。当状态位指令以并联方式连接时,该指令将根据“或”真值表将其结果与前一RLO合并。
状态字是CPU存储器中的一个寄存器,它包含可以在位逻辑指令和字逻辑指令的地址中引用的位。状态字的结构如图4-15所示。
图4-15 状态字的结构
可以通过整数数学运算函数、浮点数运算函数求状态字位的值。
(1)OV---| |---异常位溢出
指令符号为:
异常位溢出或异常位溢出取反的触点符号用于识别上次执行数学运算函数时的溢出。也就是说,函数执行后指令的结果超出了允许的正、负范围。串联使用时,扫描的结果将通过AND与RLO链接;并联使用时,扫描结果通过OR与RLO链接。
例:
I0.0的信号状态为“1”时将激活该框。如果数学运算函数“IW0-IW2”的结果超出了允许的整数范围,则置位OV位。
OV的信号状态扫描为“1”。如果OV扫描的信号状态为“1”且程序段2的RLO为“1”,则置位Q4.0。
注意,只有在有两个独立的程序段时,才需要OV扫描。否则,如果结果超出了允许的范围,则可以提取为“0”的数学运算函数的ENO输出。
(2)OS---| |---存储的异常位溢出
指令符号为:
存储的异常位溢出或存储的异常位溢出取反的触点符号用于识别和存储数学运算函数中的锁存溢出。如果指令的结果超出了允许的负或正范围,则置位状态字中的OS位。与需要在执行后续数学运算函数前重写的OV位不同,OS位在溢出发生时存储。OS位将保持置位状态,直至离开该块。串联使用时,扫描的结果将通过AND与RLO链接;并联使用时,扫描结果通过OR与RLO链接。
例:
I0.0的信号状态为“1”时将激活MUL_I框。I0.1的逻辑为“1”时将激活ADD_I框。如果其中一个数学运算函数的结果超出了允许的整数范围,将把状态字中的OS位置位为“1”。如果OS扫描为逻辑“1”,则置位Q4.0。
注意,只有在有两个独立的程序段时,才需要OS扫描。否则,可以提取第一个数学运算函数的ENO输出,并将其与第二个(层叠排列)数学运算函数的EN输入连接。
(3)UO---| |---无序异常位
指令符号为:
无序异常位或无序异常位取反的触点符号用于识别含浮点数的数学运算函数是否无序(也就是说,数学运算函数中的值是否有无效浮点数)。
如果含浮点数(UO)的数学运算函数的结果无效,则信号状态扫描为“1”。如果CC 1和CC 0中的逻辑运算显示“无效”,信号状态扫描的结果将是“0”。串联使用时,扫描的结果将通过AND与RLO链接;并联使用时,扫描结果通过OR与RLO链接。
例:
I0.0的信号状态为“1”时将激活该框。如果ID0或ID4的值为无效浮点数,则数学运算函数无效。如果EN的信号状态=1(激活)且在处理函数DIV_R时出错,则ENO的信号状态=0。
执行函数DIV_R时如果其中一个值不是有效的浮点数,将置位输出Q4.1。
(4)BR---| |---异常位二进制结果
指令符号为:
异常位BR存储器或异常位BR存储器取反的触点符号用于测试状态字中BR位的逻辑状态。串联使用时,扫描结果将通过AND与RLO链接;并联使用时,扫描结果通过OR与RLO链接。BR位用于字处理向位处理的转变。
例:
如果I0.0为“1”或I0.2为“0”,且除此RLO外BR位的逻辑状态为“1”,则置位Q4.0。
(5)==0---| |---结果位等于0
指令符号为:
(www.xing528.com)
结果位等于0或结果位取反后等于0的触点符号用于识别数学运算函数的结果是否等于“0”。指令扫描状态字的条件代码位CC 1和CC 0,以确定结果与“0”的关系。串联使用时,扫描结果将通过AND与RLO链接;并联使用时,扫描结果通过OR与RLO链接。
例:
I0.0的信号状态为“1”时将激活该框。如果IW0的值等于IW2的值,数学运算函数“IW0-IW2”的结果将等于“0”。如果函数得到正确执行且结果等于“0”,则置位Q4.0。
如果函数得到正确执行且结果不等于“0”,则置位Q4.0。
(6)<>0---| |---结果位不等于0
指令符号为:
结果位不等于0或结果位取反后不等于0的触点符号用于识别数学运算函数的结果是否不等于“0”。指令扫描状态字的条件代码位CC 1和CC 0,以确定结果与“0”的关系。串联使用时,扫描结果将通过AND与RLO链接;并联使用时,扫描结果通过OR与RLO链接。
例:
I0.0的信号状态为“1”时将激活该框。如果IW0的值与IW2的值不同,数学运算函数“IW0-IW2”的结果将不等于“0”。如果函数得到正确执行且结果不等于“0”,则置位Q4.0。
如果函数得到正确执行且结果等于“0”,则置位Q4.0。
(7)〉0---| |---结果位大于0
指令符号为:
结果位大于0或结果位取反后大于0的触点符号用于识别数学运算函数的结果是否大于“0”。指令扫描状态字的条件代码位CC 1和CC 0,以确定结果与“0”的关系。串联使用时,扫描结果将通过AND与RLO链接;并联使用时,扫描结果通过OR与RLO链接。
例:
I0.0的信号状态为“1”时将激活该框。如果IW0的值大于IW2的值,数学运算函数“IW0-IW2”的结果将大于“0”。如果函数得到正确执行且结果大于“0”,则置位Q4.0。
如果函数得到正确执行且结果不大于“0”,则置位Q4.0。
(8)<0---| |---结果位小于0
指令符号为:
结果位小于0或结果位取反后小于0的触点符号用于识别数学运算函数的结果是否小于“0”。指令扫描状态字的条件代码位CC 1和CC 0,以确定结果与“0”的关系。串联使用时,扫描结果将通过AND与RLO链接;并联使用时,扫描结果通过OR与RLO链接。
例:
I0.0的信号状态为“1”时将激活该框。如果IW0的值小于IW2的 值,数 学运算函数“IW0-IW2”的结果将小于“0”。如果函数得到正确执行且结果小于“0”,则置位Q4.0。
如果函数得到正确执行且结果不小于“0”,则置位Q4.0。
(9)>=0---| |---结果位大于等于0
指令符号为:
结果位大于等于0或结果位取反后大于等于0的触点符号用于识别数学运算函数的结果是否大于或等于“0”。指令扫描状态字的条件代码位CC 1和CC 0,以确定结果与“0”的关系。串联使用时,扫描结果将通过AND与RLO链接;并联使用时,扫描结果通过OR与RLO链接。
例:
I0.0的信号状态为“1”时将激活该框。如果IW0的值大于或等于IW2的值,数学运算函数“IW0-IW2”的结果将大于或等于“0”。如果函数得到正确执行且结果大于或等于“0”,则置位Q4.0。
如果函数得到正确执行且结果不大于或等于“0”,则置位Q4.0。
(10)<=0---| |---结果位小于等于0
指令符号为:
结果位小于等于0或结果位取反后小于等于0的触点符号用于识别数学运算函数的结果是否小于或等于“0”。指令扫描状态字的条件代码位CC 1和CC 0,以确定结果与“0”的关系。串联使用时,扫描结果将通过AND与RLO链接;并联使用时,扫描结果通过OR与RLO链接。
例:
I0.0的信号状态为“1”时将激活该框。如果IW0的值小于或等于IW2的值,数学运算函数“IW0-IW2”的结果将小于或等于“0”。如果函数得到正确执行且结果小于或等于“0”,则置位Q4.0。
如果函数得到正确执行且结果不小于或等于“0”,则置位Q4.0。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。