歡迎來到海藍(lán)智能科技有限公司!
三菱PLC編程中,跳轉(zhuǎn)指令CJ、子程序調(diào)用CALL和中斷指令有什么區(qū)別?
子程序幫助您對程序進(jìn)行分塊。主程序中使用的指令決定具體子程序的執(zhí)行狀況。當(dāng)主程序調(diào)用子程序并執(zhí)行時,子程序執(zhí)行全部指令直至結(jié)束。然后,系統(tǒng)將控制返回至調(diào)用子程序網(wǎng)絡(luò)中的主程序。
子程序用于為程序分段和分塊,使其成為較小的、更易管理的塊。在程序中調(diào)試和維護(hù)時,您可以利用這項優(yōu)勢。通過使用較小的程序塊,對這些區(qū)域和整個程序簡單地進(jìn)行調(diào)試和排除故障。只在需要時才調(diào)用程序塊,可以更有效地使用PLC,因?yàn)樗械某绦驂K可能無須執(zhí)行每次掃描。
最后,如果子程序僅引用參數(shù)和局部內(nèi)存,則可移動子程序。為了移動子程序,應(yīng)避免使用任何全局變量/符號(I、Q、M、SM、AI、AQ、V、T、C、S、AC內(nèi)存中的絕對地址)。如果子程序無調(diào)用參數(shù)(IN、OUT或IN_OUT)或僅在L內(nèi)存中使用局部變量,您就可以導(dǎo)出子程序并將其導(dǎo)入另一個項目。
欲在程序中使用子程序,必須執(zhí)行下列三項任務(wù):
建立子程序
在子程序局部變量表中定義參數(shù)(如果有)
從適當(dāng)?shù)腜OU(從主程序或另一個子程序)調(diào)用子程序
當(dāng)子程序被調(diào)用時,整個邏輯堆棧被保存,堆棧頂端被設(shè)為一,所有其他堆棧位置被設(shè)為零,控制被傳送至調(diào)用子程序。當(dāng)該子程序完成時,堆棧恢復(fù)為在調(diào)用點(diǎn)時保留的數(shù)值,控制返回調(diào)用例行程序。
子程序和調(diào)用例行程序共用累加器。由于子程序的使用,對累加器不執(zhí)行保存或恢復(fù)操作。
用參數(shù)調(diào)用子程序
子程序可能包含交接的參數(shù)。參數(shù)在子程序的局部變量表中定義。參數(shù)必須有一個符號名(最多為23個字符)、一個變量類型和一個數(shù)據(jù)類型??上蜃映绦蚪唤?6個參數(shù)或從子程序交接16個參數(shù)。
局部變量表中的變量類型域定義參數(shù)是否交接至子程序(IN)、交接至或交接出子程序(IN_OUT)或交接出子程序(OUT)。下表說明子程序的參數(shù)類型。欲增加參數(shù)條目,將光標(biāo)放在您希望增加的類型的變量類型域上(IN、
IN_OUT或OUT)。單極鼠標(biāo)右鍵,獲得選項菜單。選擇"插入"選項,然后選擇"下一行"選項。在當(dāng)前條目的下方會顯示所選類型的另一個參數(shù)條目。
跳轉(zhuǎn)至標(biāo)簽(JMP)指令對程序中的指定標(biāo)簽(n)執(zhí)行分支操作。跳轉(zhuǎn)接受時,堆棧頂值始終為邏輯1。標(biāo)簽(LBL)指令標(biāo)記跳轉(zhuǎn)目的地(n)的位置。您可以在主程序、子程序或中斷例行程序中使用"跳轉(zhuǎn)"指令。"跳轉(zhuǎn)"及其對應(yīng)的"標(biāo)簽"指令必須始終位于相同的代碼段中(主程序、子程序或中斷例行程序)。您不能從主程序跳轉(zhuǎn)至子程序或中斷例行程序中的標(biāo)簽,與此相似,您也不能從子程序或中斷例行程序跳轉(zhuǎn)至該子程序或中斷例行程序之外的標(biāo)簽。您可以在SCR段中使用"跳轉(zhuǎn)"指令,但對應(yīng)的"標(biāo)簽"指令必須位于相同的SCR段內(nèi)。
中斷允許(ENI)指令全局性啟用所有附加中斷事件進(jìn)程。中斷禁止(DISI)指令全局性禁止所有中斷事件進(jìn)程。轉(zhuǎn)換至RUN(運(yùn)行)模式時,中斷開始時被禁止。一旦進(jìn)入RUN(運(yùn)行)模式,您可以通過執(zhí)行全局中斷允許指令,啟用所有中斷進(jìn)程。執(zhí)行中斷禁止指令會禁止處理中斷;但是現(xiàn)用中斷事件將繼續(xù)入隊等候