簡介
在程序執行過程中,同步和異步指令有著顯著不同。
“同步”和“異步”屬性與指令調用與執行間的時間順序相關。
以下情況適用于同步指令:同步指令調用完成時,指令執行也完成。
而異步指令,則情況有所不同:異步指令調用完成時,異步指令的執行不一定完成。這也就意味著,異步指令的執行可以跨多次調用。在 CPU 中,異步指令的執行與用戶程序循環同時進行。異步指令在 CPU 中生成待處理的作業。
異步指令通常用于傳輸數據(例如,模塊的數據記錄、通信數據、診斷數據)。
同步/ 異步指令之間的不同之處
下圖顯示了異步指令和同步指令處理的不同之處。在該圖中,CPU 在指令執行完成(如,完成傳輸數據記錄)之前,調用該異步指令五次。
對于同步指令,每次調用時都會完全執行。
① 第一次調用異步指令,開始執行
② 中間調用異步指令,繼續執行
③ 最后一次調用異步指令,執行完成
④ 每次調用后,作業會完全通過同步指令進行處理。
完全處理的作業的持續時間
異步指令作業的并行處理
CPU 可同時執行多個異步指令作業。在以下情況下,CPU 將并行執行多個作業:
● 用于異步指令的作業會啟動,而該指令的其它作業仍在運行中。
● 但不超出該指令可同時運行的作業最大數目。
下圖顯示了 WRREC 指令中兩個作業的并行處理。在一段時間內,兩個指令同時執行。
為作業分配指令調用
要跨多個調用執行一個指令,CPU 需向該指令正在運行的作業唯一指定一個后續調用。
CPU 可通過以下兩種方式為作業分配一個調用,具體取決于指令的類型:
● 使用指令的背景數據塊(“SFB” 類型)
● 使用指令的作業標識輸入參數。在異步指令的執行過程中,這些輸入參數必須與執行過程中的各調用相匹配。
示例:“Create_DB” 指令的作業由輸入參數 LOW_LIMIT、UP_LIMIT、COUNT、ATTRIB 和 SRCBLK 標識
下表列出了標識指令的輸入參數。
異步指令的狀態
異步指令通過塊參數 STATUS/RET_VAL 和 BUSY 顯示指令的狀態。有些異步指令也會使用塊參數 DONE 和 ERROR 顯示。
下圖顯示了兩個異步指令 WRREC 和 CREATE_DB 的執行
① 輸入參數 REQ 用于啟動作業,執行異步指令。
② 輸出參數 DONE 用于指示該作業已完成且無錯誤。
③ 輸出參數 BUSY 用于指示作業是否正在執行。BUSY =1 時,為該異步指令分配資
源。BUSY = 0 時,未分配資源。
④ 輸出參數 ERROR 用于指示發生了錯誤。
⑤ 輸出參數 STATUS/RET_VAL 用于提供有關作業執行的狀態信息。發生錯誤后,輸出參數 STATUS/RET_VAL 用于接收錯誤信息。
資源的使用
異步指令在執行過程中將占用 CPU 中的資源。根據 CPU 類型和指令的不同,資源的使用具有一定限制。CPU 可同時執行最大數目的異步指令作業。在作業成功完成后或在出錯后,這些資源將再次可用。
示例:對于 RDREC 指令,S7-1500 CPU 可以并行處理最多 20 個作業。
如果超出指令的最大并行作業數量,則會出現以下情況:
● 該指令將在塊參數 STATUS 中返回錯誤代碼 80C3(資源不足)。
● CPU 將停止執行作業,直至資源再次可用。
說明
低層級的異步指令
某些異步指令可使用一個或多個低層級的異步指令進行處理。下表列出了這種相關性。
請注意,每條級別較低的指令通常占用指令資源池中的一個資源。
責任編輯:lq
-
plc
+關注
關注
5010文章
13277瀏覽量
463113 -
cpu
+關注
關注
68文章
10855瀏覽量
211609 -
通信數據
+關注
關注
0文章
13瀏覽量
9961
原文標題:PLC1500異步指令
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論