描述
BR 位 (二進(jìn)制結果位) 是狀態(tài)字的第 8 位,用于將前一功能的結果傳遞給接下來(lái)執行的功能。下表解釋了 BR 位的含義并指出了其用法。
序號 BR 位的含義及用法
1 在 FBD/LAD 編輯環(huán)境中,BR位的值被傳遞到功能塊的輸出 ENO (FBs/FCs 和 SFBs/SFCs)。
如果 BR = 1,緊接下來(lái)的EN=1 (=BR)的功能或功能塊被執行或被單獨調用。
如果BR = 0,緊接下來(lái)的EN=0 (=BR)的功能或功能塊既不被執行或也不被單獨調用。
2 如果在 FBD/LAD 編輯環(huán)境中使用字操作(如ADD_...) 或其他非二進(jìn)制操作,操作執行成功則 BR = 1 ,而發(fā)生處理錯誤 (如:溢出) 則 BR = 0。在這種情況下,后續的功能或功能塊的調用由 BR位控制。
3 如果使用STL創(chuàng )建一個(gè)功能或功能塊并在FBD/LAD 編輯環(huán)境中調用,則必須在退出功能或功能塊前將邏輯操作結果(RLO) 保存到BR位中。使用指令"SAVE", "JCB" 和"SPBNB" 來(lái)使能ENO(參見(jiàn)下文)。
4 如果調用SFB或SFC,BR位的狀態(tài)指示CPU執行SFB或SFC是否正確。
如果執行過(guò)程中出錯,則BR位值為0。
如果執行過(guò)程中未出錯,則BR位值為1。
5 SAVE
"SAVE" 指令將 RLO 存入BR位。首次檢查位 "/FC" 未復位。鑒于這個(gè)原因,如果接下來(lái)的網(wǎng)絡(luò )中是AND 操作,BR位的狀態(tài)被包含在邏輯操作中。
不推薦在同一個(gè)塊或更低層的塊中使用"SAVE" 指令后查詢(xún)BR位,因為如果中間操作太多會(huì )導致BR位的值變化。
最好是在退出塊之前使用"SAVE" 指令,因為這樣的話(huà) ENO 輸出(=BR位)的值即為RLO位的值,可以在這之后立即加上錯誤處理。
6 "JCB <jump label>" 指令
JCB: 當RLO=1時(shí)發(fā)生跳轉并將RLO 存入BR位。 "jump label" 即為跳轉目的地的符號名稱(chēng)。
如果 RLO = 1,"JCB <jump label>" 指令中斷線(xiàn)性程序的執行并跳轉到跳轉目的地。 線(xiàn)性程序的執行在跳轉目的地繼續執行。 跳轉目的地由跳轉符號來(lái)標明。
如果 RLO = 0, 則不跳轉。RLO被置1。程序繼續執行下面的指令。
例程
A I10.1
A I10.2
JCB M001 //RLO=1時(shí)跳轉到"M001"
7 "JNB <jump label>" 指令
JNB: 當RLO=0時(shí)發(fā)生跳轉并將RLO 存入BR位。"jump label" 即為跳轉目的地的符號名稱(chēng)。
如果 RLO = 0,"JNB <jump label>" 指令中斷線(xiàn)性程序的執行并跳轉到跳轉目的地。 線(xiàn)性程序的執行在跳轉目的地繼續執行。
如果 RLO = 1,則不跳轉。RLO被置1。程序繼續執行下面的指令。
例程
A I10.1
A I10.2
JNB M001 //RLO=0時(shí)跳轉到"M001"
上面提到的跳轉有可能是向前跳轉也可能是向后跳轉。最大跳轉距離是-32768 或+32767 個(gè)字節的程序代碼。跳轉可能只在塊內,如跳轉和跳轉符號均在同一塊內。跳轉目的地在同一塊內只能出現一次。實(shí)際能被跳過(guò)的最大指令數目取決于程序中指令的組合(單字,雙字或三字指令)。