河北西门子SITOP电源一级代理商
河北西门子SITOP电源一级代理商
PLC子程序与子程序指令
子程序
在编程时经常会遇到相同的程序段需要多次执行的情况,程序段A要执行两次,编程时要写两段相同的程序段,这样比较麻烦。解决这个问题的方法是将需要多次执行的程序段从主程序中分离出来,单独写成一个程序,这个程序称为子程序,在主程序相应的位置进行子程序调用即可。
两种程序结构
在编写复杂的PLC程序时,可以将全部的控制功能划分为几个功能块,每个功能块的控制功能可用子程序来实现,这样会使整个程序的结构清晰简单,易于调试、查找错误和维护。
子程序指令
子程序指令有两条:子程序调用指令(CALL)和子程序条件返回指令(CRET)。
1.指令说明
子程序指令使用要点:CRET指令多用于子程序内部,该指令是否执行取决于它前面的条件,该指令执行的结果是结束当前的子程序返回调用程序。子程序允许嵌套使用,即在一个子程序内部可以调用另一个子程序,但子程序的嵌套深度醉多为9级。当子程序在一个扫描周期内被多次调用时,在子程序中不能使用上升沿、下降沿、定时器和计数器指令。在子程序中不能使用END(结束)指令。
2.子程序的建立
编写子程序要在编程软件中进行,打开STEP7-Micro/WINSMART编程软件,在程序编辑器上方有“MAIN(主程序)”“SBR_0(子程序)”“INT_0(中断程序)”三个标签,默认打开主程序编辑器。单击“SBR_0”标签即可切换到子程序编辑器,在下面的编缉器中可以编写名称为“SBR_0”的子程序。在项目指令树区域双击“程序块”内的“SBR_0”,也可以在右边切换到子程序编辑器。
如果需要编写两个或更多的子程序,可在“SBR_0”标签上右击,在弹出的快捷菜单中选择“插入”→“子程序”,就会新建一个名称为“SBR_1”的子程序(在程序编辑器上方多出一个“SBR_1”标签)。在项目指令树区域的“程序块”内也新增了一个“SBR_1”程序块,选中“程序块”内的“SBR_1”,再按键盘上的“Delete”键可将“SBR_1”程序块删除。
切换与建立子程序
3.子程序指令使用举例
下面以主程序调用两个子程序为例,来说明子程序指令的使用。先建立一个SBR_1子程序块(可先不写具体程序),这样在项目指令树区域的“调用子例程”指令包内新增了一个调用SBR_1子程序的指令。在编写主程序时,双击该指令即可将其插入程序中;主程序编写完成后,再编写子程序。
子程序指令使用举例
主、子程序执行的过程是:当主程序(MAIN)中的I0.0触点闭合时,调用SBR_0指令执行,转入执行子程序SBR_0。在SBR_0程序中,如果I0.1触点闭合,则将Q0.0线圈置位,又返回主程序,开始执行调用SBR_0指令的下一条指令(即程序段2)。当程序运行到程序段3时,如果I0.3触点闭合,则调用子程序SBR_1指令执行,转入执行SBR_1程序;如果I0.3触点断开,则执行程序段4的指令,不会执行SBR_1。若I0.3触点闭合,转入执行SBR_1后,如果SBR_1程序中的I0.5触点处于闭合状态,则条件返回指令执行,提前从SBR_1返回主程序,SBR_1中的程序段2的指令无法执行。
带参数的子程序调用指令子程序调用指令可以带参数,使用带参数的子程序调用指令可以扩大子程序的使用范围。在子程序调用时,如果存在数据传递,通常要求子程序调用指令带有相应的参数。
1.参数的输入
子程序调用指令默认是不带参数的,也无法在指令梯形图符号上直接输入参数,使用子程序编辑器下方的变量表可给子程序调用指令设置参数。
子程序调用指令参数的设置方法是:打打开STEP 7-Micro/WINSMART编程软件,单击程序编辑器上方的“SBR_0”标签,切换到SBR_0子程序编辑器,在编辑器下方有一个空变量表;如果变量表被关闭,可执行菜单命令“视图”→“组件”→“变量表”打开变量表,在变量表内填写输入、输出参数的符号并选择数据类型。输入型参数要填写在变量类型为IN的行内,输入/输出型参数要填写在变量类型为IN_OUT类型的行内,输出型参数要填写在变量类型为OUT的行内,表中参数的地址LB0、LB1等是自动生成的。在变量表的左上角有“插入行”和“删除行”两个工具,可以对变量表进行插入行和删除行操作。变量表填写后,切换到主程序编辑器,在主程序中输入子程序调用指令,该子程序调用指令自动按变量表生成输入/输出参数。