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