歡迎光臨
每天分享高質量文章

西門子S7-1200基本指令(8)——程式控制操作1


點選 《福利來了!PLC的資料(免費),你要嗎?

點選第二波福利來了!PLC的資料(免費),你要嗎?

  • JMP(RLO = 1 時跳轉)、JMPN(RLO = 0 時跳轉)和Label(跳轉標簽)指令

● 各標簽在程式碼塊內必須唯一。
● 可以在程式碼塊中進行跳轉,但不能從一個程式碼塊跳轉到另一個程式碼塊。
● 可以向前或向後跳轉。
● 可以在同一程式碼塊中從多個位置跳轉到同一標簽。

  • JMP_LIST(定義跳轉串列)指令

對於 LAD 和 FBD: 在程式中第一次放置 JMP_LIST功能框時,該功能框有兩個跳轉標簽輸出。 可以新增或刪除跳轉標的。

  • SWITCH(跳轉分配器)指令

新增輸入、刪除輸入和指定比較型別
在程式中第一次放置 LAD 或 FBD SWITCH 功能框時,該功能框有兩個比較輸入。可以分配比較型別以及新增輸入/跳轉標的,如下所示。

SWITCH 功能框資料型別和允許的比較運算:

SWITCH 功能框放置規則:
● 比較輸入前可以不連線 LAD/FBD 指令。
● 由於沒有 ENO 輸出,因此,在一個程式段中只允許使用一條 SWITCH 指令,並且SWITCH 指令必須是程式段中的最後一個運算。

  • RET(傳回)指令

可選的 RET 指令用於終止當前塊的執行。 當且僅當有能流透過 RET 線圈(LAD),或者當 RET 功能框的輸入為真 (FBD)時,則當前塊的程式執行將在該點終止,並且不執行 RET 指令以後的指令。
如果當前塊為 OB,則引數“Return_Value”將被忽略。 如果當前塊為 FC 或FB,則將引數“Return_Value”的值作為被呼叫功能框的 ENO 值傳回到呼叫例程。不要求使用者將 RET 指令用作塊中的最後一個指令;該操作是自動完成的。
一個塊中可以有多個 RET 指令。

以下是在 FC 程式碼塊中使用 RET 指令的示例步驟:
1. 建立新專案並新增 FC:
2. 編輯該 FC:
– 從指令樹新增指令。
– 新增一個 RET 指令,包括引數“Return_Value”的以下值之一:TRUE、FALSE,或用於指定所需傳回值的儲存位置。
– 新增更多的指令。
3. 從 MAIN [OB1] 呼叫 FC。
MAIN 程式碼塊中 FC 功能框的 EN 輸入必須為真,才能開始執行 FC。
執行了有能流透過 RET 指令的 FC 後,該 FC 的 RET 指令所指定的值將出現在 MAIN程式碼塊中 FC 功能框的 ENO 輸出上。

  • ENDIS_PW(啟用/禁用 CPU 密碼)指令

使用 REQ=1 呼叫 ENDIS_PW 會禁止相應密碼輸入引數為 FALSE 的密碼型別。
可以單獨允許或禁止每個密碼型別。
例如,如果允許故障安全密碼但是禁止所有其它密碼,則可以限制 CPU訪問一小組員工。

程式掃描期間會同步執行ENDIS_PW,並且密碼輸出引數始終顯示允許密碼的當前狀態,與無論輸入引數 REQ無關。 設定為允許的所有密碼必須可更改為禁用/允許。 否則會傳回錯誤,並且執行ENDIS_PW 前處於允許狀態的所有密碼都將恢復為允許。 也就是說,在標準CPU(未組態故障安全密碼)中,F_PWD 必須始終設定為 1,以便生成傳回值0。在本例中,F_PWD_ON 始終為 1。

上電後,CPU 訪問會受到先前在常規 CPU 保護組態中所定義密碼的限制。必須執行新的 ENDIS_PW 以重新建立禁止有效密碼的能力。 不過,如果立即執行ENDIS_PW 並禁止所需密碼,則可以鎖定 TIA Portal 訪問。
在密碼禁止之前,您可以使用定時器指令延遲 ENDIS_PW 執行,以留出時間輸入密碼。

由於發生錯誤而將工作樣式更改為 STOP 時,STP 執行或 STEP 7 不會取消保護。 在CPU 迴圈上電前,保護始終有效。 請參見下表瞭解詳細資訊。

條件程式碼:

  • RE_TRIGR(重新啟動週期監視時間)指令

RE_TRIGR 指令用於在單個掃描迴圈期間重新啟動掃描迴圈監視定時器。結果是從最後一次執行 RE_TRIGR功能開始,使允許的最大掃描週期延長一個最大迴圈時間段。

  • 設定 PLC 最大迴圈時間:

可以在裝置配置的“迴圈時間”(Cycle time) 下組態最大掃描迴圈時間值。

  • 監視狗超時

如果最大掃描迴圈定時器在掃描迴圈完成前達到預置時間,則會生成錯誤。
如果使用者程式中包含時間錯誤中斷 OB (OB 80),則 CPU 將執行時間錯誤中斷OB,該中斷可包含程式邏輯以建立具體響應。
如果使用者程式不包含時間錯誤中斷 OB,則忽略第一個超時條件並且 CPU 保持在 RUN樣式。 如果在同一程式掃描中第二次發生最大掃描時間超時(2倍的最大迴圈時間值),則觸發錯誤會導致切換到 STOP 樣式。
在 STOP 樣式下,使用者程式停止執行,而 CPU 系統通訊和系統診斷仍繼續執行。

  • STP(退出程式)指令

如果 EN = TRUE,CPU 將進入 STOP 樣式,程式執行停止,並且 ENO 狀態無意義。否則,EN = ENO = 0。

  • GET_ERROR 和 GET_ERROR_ID(獲取本地錯誤資訊和獲取本地錯誤
    ID)指令

獲取錯誤指令提供有關程式塊執行錯誤的資訊。 如果在程式碼塊中添加了GET_ERROR 或GET_ERROR_ID 指令,便可在程式塊中處理程式錯誤。

ErrorStruct 資料結構的元素:

GET_ERROR_ID

Error_ID 值:

執行:

ENO 指示的錯誤條件:

如果 EN = TRUE 且 GET_ERROR 或 GET_ERROR_ID 執行,則:
● ENO = TRUE 表示發生程式碼塊執行錯誤並提供錯誤資料
● ENO = FALSE 表示未發生程式碼塊執行錯誤
可以將錯誤響應程式邏輯連線到在發生錯誤後啟用的 ENO。
如果存在錯誤,該輸出引數會將錯誤資料儲存在程式能夠訪問這些資料的位置。
GET_ERROR 和 GET_ERROR_ID可用來將錯誤資訊從當前執行塊(被呼叫塊)傳送到呼叫塊。
將該指令放置在被呼叫塊程式的最後一個程式段中可以報告被呼叫塊的最終執行狀態。

  • RUNTIME(測量程式執行時間)指令

示例: RUNTIME 指令
以下示例顯示如何使用 RUNTIME 指令來測量函式塊的執行時間:


尋找同路人

做自動化工業變革的踐行者


可透過選單查詢自己喜歡的文章彙總:

現場儀錶DCS部分PLC部分SIS部分通訊標準數字化問題解答】此處列出部分連結,更多文章透過選單獲取。



贊(0)

分享創造快樂