首页 理论教育 如何编写带有形参的函数?

如何编写带有形参的函数?

时间:2023-06-17 理论教育 版权反馈
【摘要】:在OB1中调用函数FC1时,形参自动显示,对形参赋值实参,实参通过函数的接口区传递到函数程序中,示例程序如下:这样通过函数FC1的多次调用,实现3个阀门的控制,每个阀门的程序相同而输入、输出接口不同。函数的调用减少重复的工作量,但是不能节省CPU的程序容量。

如何编写带有形参的函数?

在应用中常常遇到对许多相似功能的设备进行编程,例如控制6组电动机,每个电动机的运行参数相同,如果分别对每一个电动机编程,除输入输出地址不同外,每个电动机控制程序基本相同,重复的工作量比较大。使用函数可以将一个电动机的控制程序作为模板,在程序中多次调用,并赋值参数即可实现对多个设备的控制,例如控制3个功能相同的阀门,在函数FC1中定义的形参见表7-5。

7-5 示例阀门形参

978-7-111-28718-6-Chapter07-18.jpg

函数FC1程序如下:

978-7-111-28718-6-Chapter07-19.jpg

978-7-111-28718-6-Chapter07-20.jpg

OPEN与CLOSE为开关阀门的命令(通常使用脉冲信号),如果阀门开(VALVE为1),OPEN_COM输出为1,如果阀门关(VALVE为0),CLOSE_COM输出为1。

在OB1中调用函数FC1时,形参自动显示,对形参赋值实参,实参通过函数的接口区传递到函数程序中,示例程序如下:

978-7-111-28718-6-Chapter07-21.jpg

这样通过函数FC1的多次调用,实现3个阀门的控制,每个阀门的程序相同而输入、输出接口不同。函数的调用减少重复的工作量,但是不能节省CPU的程序容量。

注意:(www.xing528.com)

1)在编写函数的输出参数时,应避免没有直接输出,例如在函数中定义输出参数“OUT1”,数据类型为INT格式,示例程序如下:

978-7-111-28718-6-Chapter07-22.jpg

如果OPEN_COM为1,将20传递到输出参数OUT1中,如果OPEN_COM为0,没有数据传递到输出参数OUT1中,OUT1可能输出一个随机的数值,影响程序的判断,为了避免输出随机值,可以在函数的开始时,将所有输出参数初始化,例如在上述示例函数的开始添加初始化程序,示例如下:

978-7-111-28718-6-Chapter07-23.jpg

这样在条件OPEN_COM为0时,#OUT1输出为0。如果输出参数是位信号,在函数的开始进行复位操作。

2)函数在逻辑程序中调用后再次修改函数的接口参数(增加或减少形参),在调用程序中,赋值实参的时间早于函数形参再次生成的时间,打开调用程序后,会出现时间标签冲突的提示,调用函数变成红色,如图7-9所示。

带有时间标签冲突的程序下传到CPU中将导致停机,所以修改函数的形参后必须检查是否与调用程序时间标签冲突,可以点击程序块“Blocks”,右键选择“Check block Consistency”菜单检测所有程序块,检测完成后标示所有出现问题的程序块,分别打开有问题的程序块,选择时间标签冲突的函数,点击菜单“Edit”→“blockcall”→“update”更新接口参数。

3)函数的输入为只读参数,输出为只写参数,输入、输出的流向不能反向,否则影响实参的数值。

978-7-111-28718-6-Chapter07-24.jpg

图7-9 时间标签冲突

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

我要反馈