浔之漫智控技术(上海)有限公司
主营产品或服务:西门子PLC , 西门子变频器 , 西门子数控系统
广东西门子模块(全国)经销商

广东西门子模块全国经销商

广东西门子模块全国经销商

        如果需要编写两个或更多的子程序,可在“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/WIN SMART编程软件,单击程序编辑器上方的“SBR_0”标签,切换到SBR_0子程序编辑器,在编辑器下方有一个空变量表;如果变量表被关闭,可执行菜单命令“视图”→“组件”→“变量表”打开变量表,在变量表内填写输入、输出参数的符号并选择数据类型。输入型参数要填写在变量类型为IN的行内,输入/输出型参数要填写在变量类型为IN_OUT类型的行内,输出型参数要填写在变量类型为OUT的行内,表中参数的地址LB0、LB1等是自动生成的。在变量表的左上角有“插入行”和“删除行”两个工具,可以对变量表进行插入行和删除行操作。变量表填写后,切换到主程序编辑器,在主程序中输入子程序调用指令,该子程序调用指令自动按变量表生成输入/输出参数。

子程序调用指令参数的设置

2.指令参数说明

    子程序调用指令*多可以设置16个参数,每个参数包括变量名(又称符号)、变量类型、数据类型和注释四部分,注释部分不是必需的。

1)变量名

    变量名在局部变量表中称作符号,它需要直接输入,变量名*多可用23个字符表示,并且第一个字符不能为数字。

2)变量类型

    变量类型是根据参数传递方向来划分的,它可分为四种类型:IN(传入子程序)、IN_OUT(传入和传出子程序)、OUT(传出子程序)和TEMP(暂变量)。参数的四种变量类型详细说明。

参数的四种变量类型详细说明

3)数据类型

参数的数据类型有布尔型(BOOL)、字节型(BYTE)、字型(WORD)、双字型(DWORD)、整数型(INT)、双整数型(DINT)、实数型(REAL)和字符型(STRING)。

3.指令使用注意事项

    在使用带参数子程序调用指令时,要注意以下事项。常数参数必须指明数据类型。例如,输入一个无符号双字常数12345时,该常数必须指定为DW#12345,如果遗漏常数的数据类型,该常数可能会当作不同的类型使用。输入或输出参数没有自动数据类型转换功能。例如,局部变量表明一个参数为实数型,而在调用时使用一个双字,子程序中的值就是双字。在带参数调用的子程序指令中,参数必须按照一定顺序排列,参数排列顺序依次是:输入、输入/输出、输出和暂变量。如果用语句表编程,CALL指令的格式是:

CALL 子程序号,参数1,参数2,…,参数n

4.指令使用举例

    程序执行过程为:在主程序中,常ON触点SM0.0处于闭合状态,首先执行第一个带参数子程序调用指令,转入执行子程序,同时将VW0单元中的数据作为X值传入子程序的LW0单元(局部变量存储器)。在子程序中,ADD_I指令先将LW0中的值+20,结果存入LW10中;然后MUL_I指令将LW10中的值×3,结果存入LW12中;DIV_I指令再将LW12中的值÷8,结果存入LW2中;*后子程序结束返回主程序,同时子程序LW2中的数据作为Y值被传入主程序的VW10单元中。子程序返回主程序后,接着执行主程序中的第二个带参数子程序调用指令,又将VW2中的数据作为X值传入子程序进行(X+20)×3÷8运算,运算结果作为Y值返回到VW20单元中。

发布时间:2024-11-28
展开全文
拨打电话 微信咨询 发送询价