功能块

一个函数功能块是一个 POU程序,他在PLC程序的处理过程中提供了一个或者多个值。与函数不同的是,输出变量的值和一些内部变量的值将会在功能块下次执行前保持不变。所以对于功能块来说,相同的输入可能导致不同的输出。

在除了由标准的IEC11631-3描述的功能外,面向对象的编程方式也是支持的,而且功能块可以被定义成其他功能块的 扩展并且可以包含 接口 用于进行外部的链接 “方法调用”。这意味着在功能块编写的过程中可以使用“继承”。

一个功能块通常可以被定义一个 实例,相当于一个功能块的复制。

添加

一个功能块可以通过命令 “添加对象”添加到POU中。将功能块添加到一个应用中,在设备树中选择应用并右键菜单中选择添加命令。否则将会默认添加到POUs视图中。在“添加对象”对话框选择功能块,输入功能块名字 (<定义>)并选择一种编程语言。

此外需要注意一下细节:

“扩展”:在工程中添加另一个功能块的名字,作为当前功能块的基础。更多信息请参阅: “功能块的扩展”

“实施”:在工程中输入 接口变量的名字,应当在当前的功能块实现。多个输入用逗号隔开。更多信息请参阅: “接口实现”.

“访问说明”:由于兼容性的问题访问说明是可选的。规范中的“PUBLIC”默认没有说明,或者从列表中选择其他的选项:

  • “INTERNAL”: 功能块的访问仅限于当前的命名空间(当前库)。
  • “FINAL”:不能进行 派生,即功能块不能通过其他功能块延伸。可以对代码生成进行优化。

访问变量的使用范围是3.4.4.0版本,因此可以在旧版本中进行使用。

“方法实现语言”: 选择所需的编程语言创建所有对象的接口实现方法,独立于功能块本身的设置。

通过点击按键“打开”进行确认之后新的功能块编辑窗口就会打开,可以进行编程。

声明

语法:

FUNCTION_BLOCK <access specifier> <function block name> | EXTENDS <function block name> | IMPLEMENTS <comma-separated list of interface names>

这是其次的变量声明。

提示!

与CoDeSys V2.3不同 "FUNCTIONBLOCK"不再是一个有效的关键字。

示例

以下图片中的FBexample有两个输入变量和两个输出变量out1和out2。out1是两个输入的和,out2与两个输入的值相同。

插图 10: ST中的功能块示例