子程序?qū)⒋罅康目刂迫蝿?wù)分離成許多小塊的控制任務(wù),并可以重復(fù)執(zhí)行一組指令,當(dāng)主程序調(diào)用一個(gè)子程序時(shí),控制就轉(zhuǎn)到子程序,執(zhí)行子程序中的指令。當(dāng)子程序執(zhí)行完后,再返回主程序繼續(xù)執(zhí)行。有些子程序可以通過中斷或MCR0(99)指令啟動(dòng)。
中斷同子程序調(diào)用類似,在主程序運(yùn)行的流程中,中斷引起主程序運(yùn)行停頓,執(zhí)行中斷子程序,子程序執(zhí)行完畢后,再返回中斷點(diǎn)繼續(xù)執(zhí)行主程序,中斷可以由外部中斷源(如中斷輸入單元的輸入信號(hào))引起,也可以由內(nèi)部的中斷源(定時(shí)中斷)引起。
INT(89)用于控制從中斷輸入單元接收到的中斷信號(hào)和控制中斷的安排,INT(89)提供中斷屏蔽(記憶中斷但不響應(yīng))和中斷清除功能。
宏指令是一個(gè)獨(dú)立的子程序,該子程序可以改變操作數(shù),從而相當(dāng)于多個(gè)結(jié)構(gòu)相同但數(shù)據(jù)不同的子程序。
子程序調(diào)用指令梯形圖符號(hào)如下所示。
操作數(shù)數(shù)據(jù)區(qū)域N:子程序編號(hào)
00~255
子程序編號(hào)00~15與中斷一起使用,子程序編號(hào)99用于定時(shí)中斷。
說明:在主程序中將SBS(91)指令放在要執(zhí)行的子程序處,當(dāng)主程序執(zhí)行到此處,子程序就被執(zhí)行。SBS( 91)中的子程序編號(hào)是要調(diào)用的子程序編號(hào)。當(dāng)SBS(91)指令的執(zhí)行條件為“ON”時(shí),plc執(zhí)行和SBS(91)指令中編號(hào)N相同的SBN(92)指令和RET(93)之間的子程序;當(dāng)執(zhí)行到RET(93)指令時(shí),程序從子程序返回主程序。
SBS(91)在程序中可被多次調(diào)用,而且SBS( 91)也可以用作子程序中形成子程序嵌套,嵌套的級(jí)數(shù)沒有限制。
使用中注意子程序的執(zhí)行時(shí)間不能超過10ms,否則會(huì)出現(xiàn)錯(cuò)誤。