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

西門子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)

分享創造快樂