文章时效性提示
本文发布于 482 天前,部分信息可能已经改变,请注意甄别。
子程序调用
1、子程序调用指令:CALL。例如CALL P0
2、子程序返回指令:SRET。
3、子程序用指针:Pn。
4、主程序结束指令:FEND。
如果X0= “ON”,则执行调用指令,跳转到标记为P10的子程序步。在这里,执行子程序后,通过执行SRET指令后,返回到原来的主程序步,接着继续执行后续的主程序。
在后述的 FEND 指令后对标记编程。
在子程序内可以允许有 9 次调用指令,整体而言可做10 层嵌套。
调用子程序时,主程序所属的OUT、PLS、PLF、定时器等均保持。
子程序返回时,子程序所属的OUT、PLS、PLF、定时器等均保持。
子程序中不要写脉冲、计数、定时等一个扫描周期内无法完成的指令。
CALL 指令和子程序指针 P 必须要配合使用,否则会报错“不存在的标号类型”。
中断
- 允许中断[EI]
- 禁止中断[DI]
- 中断返回[IRET]
- 中断子程序用指针:In
- 主程序结束指令:FEND
XC系列PLC中断功能分两种:一、外部中断:二、定时中断。
外部中断(IO中断):输入端子X 可以作为外部中断的输入用,每一输入端对应于一个外部中断,输入的上升沿或者下降沿都可触发中断,中断子程序写在主程序之后(FEND 命令之后)。当产生中断后,主程序立即止执行,转而执行相应的中断子程序,等中断子程序执行完成后,再立即返回继续执行主程序。
定时中断:在主程序的执行周期很长的情况下,如果要处理特定的程序;或者在顺控扫描中,需要每隔一段时间执行特定的程序时,定时中断功能非常适用。它可以不受可编程控制器的扫描周期的影响,每隔Nms执行定时中断子程序。
在中断子程序里,只能写简单的置位、复位、传送、运算等可以在一个扫描周期内执行的指令,其他如发脉冲、定时(精确定时除外)、通讯等需要持续执行的指令均不支持。