在应用中常常遇到对许多相似功能的设备进行控制,例如控制6组电动机,每个电动机的运行参数相同,如果分虽对每一个电动机编程,除输入输出地址不同外,每个电动机控制程序基本相同,重复的工作量比较大。使用函数可以将一个电动机的控制程序作为模板,在程序中多次调用,并赋值参数即可实现对多个设备的控制,例如控制3个功能相同的阀门,在函数FC1中定义的形参如下:
地址 声明 阀门形参 数据类型 初始值
0.0 IN OPEN BOOL FALSE
0.1 IN CLOSE BOOL FALSE
2.0 OUT OPEN_COM BOOL FALSE
2.1 OUT CLOSE_COM BOOL FALSE
4.0 IN_OUT VALVE BOOL FALSE
函数FC1程序如下:
A(
O #OPEN
O #VALVE
)
AN #CLOSE
= #VALVE
A #VALVE
= #OPEN_COM
AN #VALVE
= #CLOSE_COM
OPEN与CLOSE为开关阀门的命令(通常使用脉冲信号),如果阀门开(VALVE为1),OPEN_COM输出为1,如果阀门关(VALVE为0),CLOSE_COM输出为1。
在OB1中调用函数FC1时,形参自动显示,对形参赋值实参,实参通过函数的接口区传递到函数程序中,示例程序如下:
CALL FC 1 //控制阀门1
OPEN :=M1.1
CLOSE :=M1.2
OPEN_COM :=Q1.1
CLOSE_COM :=Q1.2
VALVE :=Q1.3
CALL FC 1 //控制阀门2
OPEN :=M2.1
CLOSE :=M2.2
OPEN_COM :=Q2.1
CLOSE_COM :=Q2.2
VALVE :=Q2.3
CALL FC 1 //控制阀门3
OPEN :=M3.1
CLOSE :=M3.2
OPEN_COM :=Q3.1
CLOSE_COM :=Q3.2
VALVE :=Q3.3
这样通过函数FC1的多次调用,实现3个阀门的控制,每个阀门的程序相同而输入输出接口不同。函数的调用减少重复的工作量,但不是能节省CPU的程序容量。