Skip to main content

扩展功能块

一般的

功能块的扩展基于面向对象编程中的继承概念。为此,派生功能块“扩展”基本功能块,因此除了其自身的属性外,还接收基本功能块的属性。

功能块的扩展意味着:

  • 派生功能块包含基本功能块定义的所有数据和方法。您可以在任何上下文中使用基本功能块的实例 CODESYS 需要一个基本功能块类型的功能块。

  • 派生功能模块可以覆盖您在基本功能模块中定义的方法。这意味着: 派生功能块可以定义与基本功能块定义的名称、输入和输出相同的方法。

    提示:为覆盖从基本块继承的方法、动作、属性和转换提供了以下支持。如果在派生的构建块下方插入方法、操作等,则会出现对话框 添加对象 一个组合框,其中包含基本模块中使用的方法、操作等的选择,可以接受它们,然后只相应地调整它们。

  • 派生功能块不得包含与基本功能块使用的名称相同的功能块变量。编译器将此报告为错误。

    唯一的例外:如果您在基本功能块中使用变量作为 VAR_TEMP 声明,那么派生的功能块可以定义一个同名的变量。在这种情况下,派生功能块不能再访问基本功能块的变量。

  • 您可以在派生功能块范围内使用基本功能块的变量和方法,方法是使用 SUPER- 直接寻址指针。

重要

不允许多重继承。

例外:一个功能块可以实现多个接口,一个接口可以扩展其他接口。

使用新功能块扩展基本功能块

要求:当前打开的项目有一个基本功能块,例如 POU_1(FB), 将增加一个新的功能模块。

  1. 选择对象 应用 在设备树中并选择菜单命令 项目→添加对象→POU.

    对话 添加 POU 打开。

  2. 在输入字段中输入新功能模块的名称 一个,例如 POU_Ex.

  3. 选择 功能块.

  4. 选择 先进的 并点击按钮 _cds_icon_input_assistent.png.

  5. 在入口助手中,从类别中选择 功能块 在下面 应用 用作基本功能块的 POU(FB),例如 POU_1 并点击 .

  6. 您可以选择拥有一个 访问修饰符 用于组合框中的新功能块。

  7. 从组合框中选择 实现语言 例如 结构化文本(ST) 出去。

  8. 点击 添加.

    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) 扩张。

  1. 双击设备树中的功能块 POU_Ex(FB).

    功能块的编辑器打开。

  2. 展开现有的顶行条目 FUNCTION_BLOCK POU_ExEXTENDS POU_1.

    功能块 POU_Ex 扩展了基本功能块 POU_1.

有关更多信息,请参阅: 实现一个接口扩展接口

生成继承 POU 时的输入支持

当你进行面向对象的编程并使用继承时 (EXTENDS 关键字)的 POU,您可以通过以下方式获得支持:

当您在派生自基本 POU 的 POU 下插入操作、属性、方法或转换时, 添加 … 对话框打开。然后名称的输入字段扩展到一个列表框。列表框包含从基本 POU 中可用的动作、属性、方法或转换中进行的有效选择。例如,现在您可以轻松地接受基本 POU 的方法,然后将其调整为 POU 的派生函数。

带有访问修饰符的方法和属性 PRIVATE 此处未列出,因为它们也不是继承的。带有访问修饰符的方法和属性 PUBLIC 接受派生的 POU 时自动获得一个空白的访问修饰符字段,这在功能上意味着相同的事情。

有关更多信息,请参阅: 财产方法过渡行动

29. 例子
_cds_img_input_wizzard_for_blocks.png