功能块的扩展基于面向对象编程中的继承概念。因此,派生功能块扩展了基本功能块,并在此过程中,除了自身属性外,还被赋予了基本功能块的属性。
功能块的扩展意味着
-
继承功能块包含基本功能块定义的所有数据和方法。您可以在CODESYS 期望使用基本功能块类型的功能块的所有上下文中使用基本功能块实例。
-
派生功能块可以覆盖基础功能块中定义的方法。这意味着继承功能块可以定义与基本功能块具有相同名称、相同输入和相同输出的方法。
小贴士在覆盖由基块继承的方法、操作、属性和转换时,您可以获得以下支持:当您在继承块下面插入方法、操作等时,“Add Object” 对话框包含一个组合框,其中列出了基础块中使用的方法、操作等。您可以接受这些建议并做出相应调整。
-
派生功能块不得包含与基本功能块所用名称相同的功能块变量。编译器会将此报告为错误。
唯一的例外是如果在基本功能块中将变量声明为
VAR_TEMP
,则继承功能块可以定义同名变量。在这种情况下,继承功能块不能再访问基本功能块的变量。 -
通过使用
SUPER
指针,可以在继承功能块的范围内直接寻址基本功能块的变量和方法。




注意

不允许多重继承。
例外情况:一个功能块可以实现多个接口,一个接口可以扩展其他接口。
用新功能块扩展基本功能块
要求:当前打开的项目具有一个基本功能块,例如“POU_1(FB)” ,该功能块需要通过新功能块进行扩展。
-
右键单击设备树中的“Application” 对象,然后选择“Project Add Object POU” 。
“Add POU” 对话框将打开。
-
在“Name” 输入字段中键入新 POU 的名称,例如“POU_Ex” 。
-
选择“功能块” 。
-
单击“高级” ,然后单击更多按钮 (
)。
-
在输入助手“应用”下的“功能块”类别中,选择作为基本功能块的 POU(FB),例如
POU_1
,然后单击 “OK”。 -
作为选项,您可以从下拉列表中为新功能块选择“Access 修改器” 。
-
从“实现语言” 组合框中选择(例如:“结构化文本 (ST)”.
-
单击“添加” 。
CODESYS 将
POU_Ex
功能块添加到设备树并打开编辑器。第一行包含文本:FUNCTION_BLOCK POU_Ex EXTENDS POU_1
功能块
POU_Ex
扩展了基本功能块POU_1
。
通过现有功能块扩展基本功能块
要求:打开的项目拥有一个基本功能块(例如:POU_1(FB)
)和另一个功能块(例如:POU_Ex(FB)
)。功能块POU_Ex(FB)
也将被赋予基本功能块的属性。这意味着POU_Ex(FB)
应扩展POU_1(FB)
。
-
双击设备树中的功能块
POU_Ex(FB)
。功能块编辑器打开。
-
用
EXTENDS POU_1
扩展顶行FUNCTION_BLOCK POU_Ex
中的现有条目。功能块 POU_Ex 扩展了基本功能块
POU_1
。