# 功能块扩展

功能块的扩展基于面向对象编程中的继承概念。扩展功能块由此扩展了基础功能块，并且在这样做时除了基础功能块自身的属性外，还赋予了基本功能块属性。

功能块的扩展意味着：

- 继承功能块包含基本功能块定义的所有数据和方法。您可以在MetaFacture每个需要基本功能块类型的功能块程序中使用基础功能块的实例。
- 扩展功能块可以覆盖您在基础功能块中定义的方法。这意味着继承的功能块可以定义与基本功能块所定义的名称，输入和输出相同的方法。
  技巧：覆盖基础功能块继承的方法，操作，属性和转换时，具有以下支持：在继承的块下面插入方法，操作等时，添加对象对话框将包含一个组合框，其中包含在基础块中使用的方法，操作等的列表。您可以使用这些并进行相应调整。
- 扩展功能块可能不包含名称与基本功能块相同的功能块变量。编译器将此报告为错误。
  唯一的例外：如果已在基础功能块中将变量声明为VAR_TEMP，则继承的功能块可以定义一个具有相同名称的变量。在这种情况下，继承的功能块将无法再访问基本功能块的变量。
- 您可以使用SUPER指针在继承的函数块范围内直接寻址基本函数块的变量和方法。

### 通过新功能块扩展基本功能块​

要求：当前打开的项目具有一个基本功能块，例如POU_1（FB），该功能块将由新的功能块扩展。

1.右键单击设备树中的Application对象，然后选择工程 ➔ 添加对象 ➔ POU。
⇒将打开添加POU对话框。

2.在名称输入部分中输入新POU的名称，例如POU_Ex。

3.选择功能块。

4.点击扩展，然后点击更多按钮（）。

5.在输入助手中Application下的功能块类别中，选择要用作基础功能块的POU（FB），例如POU_1，然后单击确定。

6.另外，您可以从下拉列表中为新功能块选择一个访问修饰符。

7.从实现语言组合框中选择（例如：编程结构化文本（ST）

8.单击添加。
⇒MetaFacture在设备树中添加一个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_Ex中的现有条目扩展为EXTENDS POU_1。
⇒功能块POU_Ex扩展了基本功能块POU_1。