功能块是一种 POU,在处理控制器系统期间提供 1 个或多个值。与功能不同,输出变量值和必要的内部变量值将从执行功能块后一直持续到下次执行功能块。因此,使用相同的参数(输入参数)调用功能块无需始终产生相同的输出值。
除了标准 IEC11631-3 描述的功能外,还支持面向对象的编程,并且可将功能块定义为其他功能块的扩展。它们可包含有关方法调用的接口定义。因此在用功能块编程时,可使用继承。
始终通过实例来调用功能块,该实例为功能块的复制品(副本)。
要将功能块添加至现有应用程序,可在软件目录 > 资产或应用程序树中选择相应代码,单击绿色加号按钮并选择 POU...。也可右键单击节点并执行命令添加对象 > POU。要创建独立于应用程序的功能块,可选择应用程序树或资产的全局节点。
在添加对象对话框中,选择选项功能块,输入功能块名称(<标识符>)并选择所需的实现语言。
您也可设置以下选项:
选项 |
描述 |
---|---|
扩展 |
输入可在项目中使用的另一个功能块的名称,其应当为当前功能块的基础。有关详细信息,请参阅功能块的扩展。 |
实现 |
|
访问说明符 |
出于兼容性考虑,访问说明符为选用项。说明符 PUBLIC 的作用等同于不设置说明符。 也可从选择列表中选择其中一个选项: oINTERNAL:功能块上的访问限制为当前命名空间(库)。 oFINAL:不可进行衍生访问,即功能块不能由另一个功能块扩展。支持优化代码生成。 注意: 访问说明符截至版本 3.4.4.0 有效,可用作较早版本的标识符。 有关更多信息,请参阅 EcoStruxure Machine Expert 兼容性和迁移用户指南中的 EcoStruxure Machine Expert/CoDeSys 编译器版本映射表。 |
方法实现语言 |
从用于功能块本身的相应设置中,单独地为通过接口实现创建的所有方法和属性对象选择所需的编程语言。 |
单击添加确认设置。新功能块的编辑器视图打开,您可开始进行编辑。
语法
FUNCTION_BLOCK <访问说明符> <功能块名称> | EXTENDS <功能块名称> | IMPLEMENTS <逗号分隔的接口名称列表>
这后面是变量的声明。您也可以对输入和输出分组,以便在 FBD 或 LD 编辑器中使用功能块时快速切出和切入。另请参阅属性 Pingroup 一章。
下图中显示的 FBexample 有 2 个输入变量以及 2 个输出变量 out1 和 out22。
out1 是两个输入的和,out2 是等式比较的结果。
ST 中功能块的示例