2.1 程序流程基础知识
2.1.1 PLC程序结构和程序流程
PLC的用户程序一般分为主程序区和副程序区。主程序区存有用户控制程序,简称主程序,是完成用户控制要求的PLC程序。主程序是必不可少的,且只能有一个。副程序区存有子程序和中断服务程序,子程序和中断服务程序是一个个独立的程序段,完成独立的功能,它们依照程序设计人员的安排依次存放在副程序区中。
主程序区和副程序区用主程序结束指令FEND进行分隔。PLC在扫描工作时,只扫描主程序区,不扫描副程序区。也就是说,当PLC扫描到主程序结束指令FEND时,同扫描到END结束指令一样,执行刷新功能,并返回到程序的开始,继续扫描工作。
在小型控制程序中,可以只有主程序而没有副程序,其程序结束指令为END。这时,程序流程有两种情况:一种是从上到下、从左到右的顺序扫描;另一种情况是程序会发生转移,当转移条件成立时,扫描会跳过一部分程序,向前或向后转移到指定程序行继续扫描。
图2-1表示了这两种程序流程。
图2-1 程序流程示意图
当系统规模很大、控制要求复杂时,如果将全部控制任务放在主程序中,主程序将会非常复杂,既难以调试,也难以阅读,而且,若发生随机事件,难以在主程序中进行处理。这时,就会把一些程序编写成程序块放到副程序区。PLC是不会扫描副程序区的,这些程序块只能通过程序流程转移才能执行。这种程序转移与上面所讲的程序转移有很大的区别。如果上面的程序转移称为条件转移的话,这里的程序转移可以称为断点转移。
条件转移在主程序区内进行,转移后,PLC扫描仍按顺序进行,直到执行到主程序结束指令FEND或END指令再从头开始,不存在转移断点和返回。
断点转移则不同,当PLC碰到断点转移时,会停止主程序区的扫描工作,在主程序区产生一个程序中断点,然后转移到副程序区去执行相应的程序块,执行完毕后,必须再次从副程序区回到主程序区的断点处,由断点处的下一条指令继续扫描下去。其转移流程如图2-2所示。
图2-2 断点转移流程示意图
由图中程序流程可见,完成这种程序转移,以下内容是不能缺少的:必须要有引起转移的条件,告诉PLC什么时候发生转移;发生转移时,PLC必须能记住主程序的断点;发生转移时,必须告诉PLC程序转移的地址入口;程序块执行完后,必须告诉PLC需要返回的信息。后面将从这几方面来介绍子程序和中断服务程序的结构及运行。