子程序将大量的控制任务分离成许多小块的控制任务,并可以重复执行一组指令,当主程序调用一个子程序时,控制就转到子程序,执行子程序中的指令。当子程序执行完后,再返回主程序继续执行。有些子程序可以通过中断或MCR0(99)指令启动。
中断同子程序调用类似,在主程序运行的流程中,中断引起主程序运行停顿,执行中断子程序,子程序执行完毕后,再返回中断点继续执行主程序,中断可以由外部中断源(如中断输入单元的输入信号)引起,也可以由内部的中断源(定时中断)引起。
INT(89)用于控制从中断输入单元接收到的中断信号和控制中断的安排,INT(89)提供中断屏蔽(记忆中断但不响应)和中断清除功能。
宏指令是一个独立的子程序,该子程序可以改变操作数,从而相当于多个结构相同但数据不同的子程序。
子程序调用指令梯形图符号如下所示。
操作数数据区域N:子程序编号
00~255
子程序编号00~15与中断一起使用,子程序编号99用于定时中断。
说明:在主程序中将SBS(91)指令放在要执行的子程序处,当主程序执行到此处,子程序就被执行。SBS( 91)中的子程序编号是要调用的子程序编号。当SBS(91)指令的执行条件为“ON”时,plc执行和SBS(91)指令中编号N相同的SBN(92)指令和RET(93)之间的子程序;当执行到RET(93)指令时,程序从子程序返回主程序。
SBS(91)在程序中可被多次调用,而且SBS( 91)也可以用作子程序中形成子程序嵌套,嵌套的级数没有限制。
使用中注意子程序的执行时间不能超过10ms,否则会出现错误。