子程序將大量的控制任務分離成許多小塊的控制任務,并可以重復執(zhí)行一組指令,當主程序調用一個子程序時,控制就轉到子程序,執(zhí)行子程序中的指令。當子程序執(zhí)行完后,再返回主程序繼續(xù)執(zhí)行。有些子程序可以通過中斷或mcr0(99)指令啟動。
中斷同子程序調用類似,在主程序運行的流程中,中斷引起主程序運行停頓,執(zhí)行中斷子程序,子程序執(zhí)行完畢后,再返回中斷點繼續(xù)執(zhí)行主程序,中斷可以由外部中斷源(如中斷輸入單元的輸入信號)引起,也可以由內部的中斷源(定時中斷)引起。
int(89)用于控制從中斷輸入單元接收到的中斷信號和控制中斷的安排,int(89)提供中斷屏蔽(記憶中斷但不響應)和中斷清除功能。
宏指令是一個獨立的子程序,該子程序可以改變操作數,從而相當于多個結構相同但數據不同的子程序。
子程序調用指令梯形圖符號如下所示。
操作數數據區(qū)域n:子程序編號
00~255
子程序編號00~15與中斷一起使用,子程序編號99用于定時中斷。
說明:在主程序中將sbs(91)指令放在要執(zhí)行的子程序處,當主程序執(zhí)行到此處,子程序就被執(zhí)行。sbs( 91)中的子程序編號是要調用的子程序編號。當sbs(91)指令的執(zhí)行條件為“on”時,plc執(zhí)行和sbs(91)指令中編號n相同的sbn(92)指令和ret(93)之間的子程序;當執(zhí)行到ret(93)指令時,程序從子程序返回主程序。
sbs(91)在程序中可被多次調用,而且sbs( 91)也可以用作子程序中形成子程序嵌套,嵌套的級數沒有限制。
使用中注意子程序的執(zhí)行時間不能超過10ms,否則會出現錯誤。