描述
BR 位 (二进制结果位) 是状态字的第 8 位,用于将前一功能的结果传递给接下来执行的功能。下表解释了 BR 位的含义并指出了其用法。
序号 BR 位的含义及用法
1 在 FBD/LAD 编辑环境中,BR位的值被传递到功能块的输出 ENO (FBs/FCs 和 SFBs/SFCs)。
如果 BR = 1,紧接下来的EN=1 (=BR)的功能或功能块被执行或被单独调用。
如果BR = 0,紧接下来的EN=0 (=BR)的功能或功能块既不被执行或也不被单独调用。
2 如果在 FBD/LAD 编辑环境中使用字操作(如ADD_...) 或其他非二进制操作,操作执行成功则 BR = 1 ,而发生处理错误 (如:溢出) 则 BR = 0。在这种情况下,后续的功能或功能块的调用由 BR位控制。
3 如果使用STL创建一个功能或功能块并在FBD/LAD 编辑环境中调用,则必须在退出功能或功能块前将逻辑操作结果(RLO) 保存到BR位中。使用指令"SAVE", "JCB" 和"SPBNB" 来使能ENO(参见下文)。
4 如果调用SFB或SFC,BR位的状态指示CPU执行SFB或SFC是否正确。
如果执行过程中出错,则BR位值为0。
如果执行过程中未出错,则BR位值为1。
5 SAVE
"SAVE" 指令将 RLO 存入BR位。首次检查位 "/FC" 未复位。鉴于这个原因,如果接下来的网络中是AND 操作,BR位的状态被包含在逻辑操作中。
不推荐在同一个块或更低层的块中使用"SAVE" 指令后查询BR位,因为如果中间操作太多会导致BR位的值变化。
最好是在退出块之前使用"SAVE" 指令,因为这样的话 ENO 输出(=BR位)的值即为RLO位的值,可以在这之后立即加上错误处理。
6 "JCB <jump label>" 指令
JCB: 当RLO=1时发生跳转并将RLO 存入BR位。 "jump label" 即为跳转目的地的符号名称。
如果 RLO = 1,"JCB <jump label>" 指令中断线性程序的执行并跳转到跳转目的地。 线性程序的执行在跳转目的地继续执行。 跳转目的地由跳转符号来标明。
如果 RLO = 0, 则不跳转。RLO被置1。程序继续执行下面的指令。
例程
A I10.1
A I10.2
JCB M001 //RLO=1时跳转到"M001"
7 "JNB <jump label>" 指令
JNB: 当RLO=0时发生跳转并将RLO 存入BR位。"jump label" 即为跳转目的地的符号名称。
如果 RLO = 0,"JNB <jump label>" 指令中断线性程序的执行并跳转到跳转目的地。 线性程序的执行在跳转目的地继续执行。
如果 RLO = 1,则不跳转。RLO被置1。程序继续执行下面的指令。
例程
A I10.1
A I10.2
JNB M001 //RLO=0时跳转到"M001"
上面提到的跳转有可能是向前跳转也可能是向后跳转。最大跳转距离是-32768 或+32767 个字节的程序代码。跳转可能只在块内,如跳转和跳转符号均在同一块内。跳转目的地在同一块内只能出现一次。实际能被跳过的最大指令数目取决于程序中指令的组合(单字,双字或三字指令)。