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