大家好,这节课的信息量比较大,除了做好笔记以外,还要实际编程实操、验证。才能把看到的知识,变成自己可以掌握的技术。
我们学习“子程序与局部变量”。在此之前,我们先来了解一下“子程序”的作用。
"在实际编程应用中,由于往往需要重复完成一系列相同的任务。为降低主程序的复杂程度,并便于及时检查纠错。我们可以通过编写子程序的方式来实现。对于需要多次反复执行相同任务的地方,只需要写一次子程序,别的程序在需要它的时候调用它,而无需重写该程序。在编写复杂的PLC程序时,最好把全部控制功能划分为几个符合工艺控制规律的子功能块,然后再针对各子功能块进行独立编辑。
子程序的调用(执行)是有条件的,未调用时它不会执行子程序的指令,因此使用子程序可以减少扫描时间。
子程序使程序结构简单清晰,易于调试,查错和维护。如果在子程序中尽量使用局部变量,避免使用全局变量。因为与其他POU几乎没有地址冲突,可以很方便地将子程序移植到其他项目中,库文件就是由子程序生成的。"
在介绍完子程序后,我们再来了解一下,在程序编辑中,用到的全局变量和局部变量。
全局是指同一个存储器可以被任何程序存取(包括主程序、子程序和中断程序)。在符号表中的定义的变量为全局变量。
局部是指存储区只和特定程序相关联。局部存储器用来存放局部变量。局部存储器是局部有效的,局部有效是指某一局部存储器只能在某一程序分区(主程序或子程序或中断程序)中使用。常用于带参数的子程序调用过程中。
S7-200PLC提供64个字节局部存储器L,可用作暂时存储器或为子程序传递参数。主程序、子程序、中断程序都有64个字节的局部存储器使用,不同程序的局部存储器不能相互访问。可以按位、字节、字、双字访问局部存储器。局部变量区的大小为64个字节,其中最后4个字节被系统占用,实际可供子程序使用的为60个字节(LB0~LB59),超出存储区即会报错。局部存储器的有效地址范围为:L(0.0~63.7);LB(0~63);LW(0~62);LD(0~60)。
局部变量可以应用在主程序、子程序以及中断程序中,但仅限于本程序内有效。
局部变量名:局部变量名又称符号名,最多可包含23个字母数字字符和下划线,首字符不能是数字,选用合适的变量名可大大方便编程,并增强程序的可读性,可写中文。
局部变量数据类型:局部变量表中还要对数据类型进行声明才能使用,即先声明后使用。数据类型包括:
下面是一个标准的起保停电路,我们看一下:
这里,一定要根据各逻辑指令的作用,先定义符号名、和数据类型,则前面的局部变量地址会自动带出,并顺序后延。其中,对于原起保停电路中的Q0.0(线圈/保持),因为即是输出,又是输入,所以这里的变量类型要选择IN_OUT。
同样,我们再编辑一个子程序(手动程序/点动),如下图:
这里提醒一下,如果逻辑指令的位置,状态时开关量的话,可以选BOOL。
最后我们在主程序中,编辑一个调用子程序的操作:
由于主程序中未使用局部变量,所以未作局部变量的定义。而在子程序中,一定要先定义,后使用。
下节课,我们学习中断指令。
,