子程序不是功能性指令,它的主要作用是优化程序结构,节省程序扫描时间,提高CPU响应速度。
在我们自动化控制系统中,有可能有很多工序或者很多个功能,这个时候如果我们把这一个一个的功能打包起来,放在不同子程序中,当条件满足时,再调用对应的子程序,那这样程序书写和执行起来就变得比较有条理。
在西门子200SMARTPLC中,子程序Zui多有128个。
PLC扫描一般只会在主程序中扫描,当扫描到调用条件满足才会暂停主程序扫描而跳转到子程序中扫描,待子程序扫描完成再返回主程序继续扫描,但Zui终结果需要等到扫描周期结束阶段统一刷新。
子程序还有一个功能是可以创建库。有系统库和自定义库。系统库是在我们安装软件后自带的库。
对于以后编程中会反复使用的子程序可以定义成库,当用到时,无需重复编写,可以直接调用库进行编程,大大提高编程的效率,也就是自定义库。自定义库需要用到局部变量去传递参数,每一个程序块有64个字节的局部变量,只有60个字节可用。每个程序块中Zui多可以创建16个输入输出类的局部变量。
在创建库时,如果局部变量不够用,一些中间的运算结果可以用全局变量V区去存储。创建库的源程序中V存储区必须定义符号使用,否则创建时报错。调用库编程时需要重新分配库存储器地址,分配的地址与源程序地址没有必然联系,会遵循源程序的使用规律,分配存储器地址只会显示使用的起始地址和结束地址,源程序中地址使用尽量连续或少量跳跃。