首页 理论教育 带参数的子程序调用指令

带参数的子程序调用指令

时间:2023-06-27 理论教育 版权反馈
【摘要】:子程序调用指令可以带参数,使用带参数的子程序调用指令可以扩大子程序的使用范围。在子程序调用时,如果存在数据传递,通常要求子程序调用指令带有相应的参数。

带参数的子程序调用指令

子程序调用指令可以带参数,使用带参数的子程序调用指令可以扩大子程序的使用范围。在子程序调用时,如果存在数据传递,通常要求子程序调用指令带有相应的参数。

1.参数的输入

子程序调用指令默认是不带参数的,也无法在指令梯形图符号上直接输入参数,使用子程序编辑页面上方的局部变量表可给子程序调用指令设置参数。

子程序调用指令参数的设置方法是,打开STEP 7-Micro/WIN编程软件,单击程序编辑区下方的SBR_0标签,切换到SBR_0子程序编辑页面,在页面上方的局部变量表内按图5-33a所示进行输入设置,然后切换到主程序编辑页面,在该页面输入子程序调用指令,即可得到带参数的子程序调用指令梯形图,如图5-33b所示。在局部变量表某项参数上单击鼠标右键,会弹出菜单,利用该菜单可对参数进行增删等操作。局部变量表中参数的地址编号LB0、LB1…是自动生成的。

978-7-111-55193-5-Chapter05-97.jpg

图5-32 子程序指令使用举例

2.指令参数说明

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

(1)变量名

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

(2)变量类型

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

978-7-111-55193-5-Chapter05-98.jpg

图5-33 子程序调用指令参数的设置

表5-50 参数的四种变量类型详细说明(www.xing528.com)

978-7-111-55193-5-Chapter05-99.jpg

(3)数据类型

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

3.指令使用的注意事项

在使用带参数子程序调用指令时,要注意以下事项:

1)常数参数必须指明数据类型。例如,输入一个无符号双字常数12345时,该常数必须指定为DW#12345,如果遗漏常数的数据类型,该常数可能会当作不同的类型使用。

2)输入或输出参数没有自动数据类型转换功能。例如,局部变量表明一个参数为实数型,而在调用时使用一个双字,子程序中的值就是双字。

3)在带参数调用的子程序指令中,参数必须按照一定顺序排列,参数排列顺序依次是,输入、输入/输出、输出和暂变量。如果用语句表编程,CALL指令的格式是

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

4.指令使用举例

带参数的子程序调用指令使用如图5-34所示,图a为主程序,图b为子程序及局部变量表,主、子程序可以实现Y=(X+20)×3÷8运算。

978-7-111-55193-5-Chapter05-100.jpg

图5-34 带参数的子程序调用指令使用举例

程序执行过程:在主程序中,常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单元中。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈