STEP 7 的状态字中的 BR 位的含义是什么?

n

描述
BR 位(二进制结果位)是状态字的第 8 位,并且用来将前一个功能的执行结果传递给接下来的功能。下表解释了 BR 位的含义并指出了其用法。

序号 BR 位的含义及用法
1 在FBD/LAD 编辑环境中,BR 位的值被传递到功能块的输出 ENO(FBs/FCs和 SFBs/SFCs)。 n

  • 如果 BR = 1,那么紧接下来的功能或者功能块的 EN=1 (=BR),所以就会被执行或者被调用。n
  • 如果BR = 0,那么紧接下来的功能或者功能块的 EN=0 (=BR),所以不会被执行或者被调用。
2 如果,在 FBD/LAD 编译环境中,使用字操作 (如 ADD_...) 或者其它非二进制操作,操作执行成功则 BR = 1,如果发生处理错误(例如:溢出)则 BR = 0。在这种情况下,后续的功能或者功能块的调用由 BR 位控制。
3 如果使用 STL 创建一个功能或者功能块并在 FBD/LAD 编辑环境中调用,则必须在退出功能或者功能块前将逻辑操作结果 (RLO) 保存到 BR 位中。使用指令 "SAVE","JCB" 和 "SPBNB" 来使能在 LAD/FBD 调用时的输出 (ENO)。
4 如果调用系统功能块 (SFB) 或者系统功能 (SFC),BR 位的状态指示出 CPU 执行SFB 或者 SFC 是否正确。 n

  • 如果执行过程中出错,则 BR位 = 0。n
  • 如果执行过程中未出错,则 BR 位 = 1。
5 SAVE
"SAVE" 指令将 RLO 状态保存至 BR 位。首次检查位 "/FC" 未复位。因此,如果接下来的程序段中是 AND 逻辑指令,那么 BR 位的状态被包含在逻辑操作中。 n

  • 不推荐在同一个块或者更低层的块中使用 SAVE 指令然后查询 BR 位,因为如果中间操作过多会导致 BR 位的值的变化。n
  • 最好是在退出块之前使用 SAVE 指令,因为这样 ENO 输出 (=BR 位) 的值就是 RLO 位的值,在这之后可以立即加上错误处理。
6 "JCB <jump label>" 指令
JCB: 当 RLO=1 时发生跳转并将 RLO 状态保存至 BR 位。"jump label" 即为跳转目的地的标识符。

  • 如果RLO = 1,"JCB <jump label>" 指令将中断顺序程序的执行并跳转到跳转目的地。顺序执行的程序在跳转目的地继续执行。跳转目的地由跳转符号来标明。
  • 如果RLO = 0,则不跳转。RLO 被置为 "1" 并且继续执行下面的程序。

例如

AI10.1
AI10.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"。程序继续执行下面的指令。

例程

AE10.1
AE10.2
JNB M001 //如果 RLO=0 跳转到 "M001"

上面提到的跳转有可能是向前跳转也可能是向后跳转。最大跳转距离是 -32768或者 +32767 字节的程序代码。跳转只可能在块内,即跳转指令和跳转目的标号均在同一个块内。跳转目的标号在一个块内只允许出现一次。实际能被跳过的最大指令数目取决于 程序中指令的组合(单字,双字或三字指令)。

S7-300 中程序行为注意事项
S7-300 CPU 和 S7-400 CPU 的内部结构是不同的。S7-400 直接处理程序而 S7-300 程序在加载时编译。因此 S7-400 被称为 ASIC 机而 S7-300 被称为编译机。特别是在处理二进制逻辑操作序列方面是不同的。S7-300 CPU模块只有在编译程序时才知道逻辑操作序列的起始和结束。此时可以定义状态字首次扫描位 /ER 的行为。

如果使用跳转指令跳转到一个逻辑操作序列,那么跳转指令的 RLO 位与 /ER 位是关联到一起的。在 300 系列 CPU 中,对于 RLO 的影响会显然导致在 OR指令执行时得到错误的结果。因此,在跳转之后需要开始一个新的逻辑运算序列。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc325891.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论