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