函数

概述

函数是一种 POU,在对其进行处理时,它只能产生单个数据元素(可以包含多个元素,如字段或结构)。在表达式中输入某个操作符可以在文本语言中调用函数。

添加函数

要将函数分配至现有应用程序,可在应用程序树中选择应用程序节点,单击绿色加号按钮,并执行命令 POU...。作为备选方法,可右键单击应用程序节点,并从上下文菜单执行命令添加对象 > POU。要添加独立于应用程序的 POU,可选择应用程序树全局节点,并执行相同命令。

添加 POU 对话框中,选择函数选项。为新函数输入名称(<函数名称>)以及返回类型(<数据类型>)并选择所需的实现语言。要选择返回数据类型,单击按钮 ... 打开输入助手对话框。单击打开进行确认。新函数的编辑器视图打开,您可开始进行编辑。

声明函数

语法:

FUNCTION <函数名称> : <数据类型>

这后面将是输入和函数变量的变量声明。

将结果分配至函数。因此,函数名称用作输出变量。

请勿在函数中将本地变量声明为 RETAINPERSISTENT,因为这样将无效。

ST 中函数的示例:此函数采用 3 个输入变量,将后面二者的乘积与第一个相加。

调用函数

在 ST 中对函数的调用可作为操作数出现在表达式中。

在 IL 中,您只能将函数调用置于步操作或转移中。

函数(与程序或功能块相比)没有内部状态信息,即用相同的参数(输入参数)调用函数,始终将得到相同的值(输出)。因此,函数不可包含全局变量和地址。

IL 中函数调用的示例

IL 中的函数调用;

LD               5
Fct              3               ,
                 22
ST               result

ST 中函数调用的示例

result := fct1(5,3,22);

FBD 中函数调用的示例

FBD 中的函数调用

示例:

fun(formal1 := actual1, actual2); // -> error message
fun(formal2 := actual2, formal1 := actual1); // same semantics as the following:
fun(formal1 := actual1, formal2 := actual2);

根据 IEC 61131-3 标准,函数可具有额外的输出。可以在函数的调用中分配它们。例如,在 ST 中,根据以下语法:

out1 => <输出变量 1> | out2 => <输出变量 2> | ...其他输出变量

示例

函数 fun 用两个输入变量 in1in2 以及两个输出变量 out1out2 来定义。fun 的输出值被写入到本地声明的变量 loc1loc2 中。

fun(in1 := 1, in2 := 2, out1 => loc1, out2 => loc2);