uyguoliang
級別: 探索解密
|
大俠:我在看到很多程序中有使用到---(SAVE) BR 保存它有什么實際的意義? 保存后我們我們怎么使用,在循環過程中 被保存了 保存后是否還會被改變 能否給個完整的使用實例 |
---|---|
|
uyguoliang
級別: 探索解密
|
描述 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 個字節的程序代碼。跳轉可能只在塊內,如跳轉和跳轉符號均在同一塊內。跳轉目的地在同一塊內只能出現一次。實際能被跳過的最大指令數目取決于程序中指令的組合(單字,雙字或三字指令)。 |
---|---|
|