其它子程序,就不再啰嗦了,最后展示:
主循环的编写 上面说明的各状态子程序的功能与逻辑,并示出了对应的梯形图程序实现,相信读者不难理解。最后主程序中,只需按顺序逻辑调用这些子程序就可以了,如下图举例。 正是其中的状态指针变量D149一次只能为一个数值,因此每次只能有一个子程序被执行,在编写可以简化思维,可以单独编写和调试;最后组装后调试发现错误,也只需查看D149,在对应的子程序或语句块中查找问题,可以很快定位原因。 控制器上电后,只需执行一次的初始化子程序,可用M8002驱动调用;每次循环都执行的子程序,则用M8000驱动调用:对于定时间隔执行一次的子程序,可按如下方式调用,依此类推,如下图:
采用多个状态子程序编写的程序,PLC系统在执行时,一次只实际执行其中一个状态子程序,其它状态子程序会被“跨过”,不会进入子程序内部扫描,这也是比SFC语言编程更合适的一个优点,这可减小用户程序的执行时间,提高执行效率,这在有控制精度要求的设备上,是程序的一个关键点。 由于程序分块条理清晰,接手程序的技术人员,比较容易理解该控制程序,若要添加新的功能或处理逻辑,可以找到最佳的程序插入点。 若采用只有一个主循环程序的“一锅煮”方法编写程序,难免有“多线圈”的问题,而为解决这个问题,程序语句的条件判断必需变得复杂;将来要修改功能,可能引发新的问题,需要打补丁解决,随着功能变得越来越复杂,可靠性隐患就越大。
采用功能分块或分状态的方式来编写程序框架,并加比较详细的备注说明,看起来比较麻烦,但带来益处更多。
|