TIA Portal 功能块实例简明教程
在本教程中,我们将介绍在使用西门子 TIA Portal 进行 PLC 编程时可以使用的不同类型的功能块实例。
博途PLC工程智能体 | 梯形图转SCL | 自然语言生成梯形图 | 自然语言生成SCL | 逆向生成程序块文档 | 梯形图在线查看 | 博途编程文档MCP | AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI
功能块(Function Block)是将输入、输出和输入输出参数永久存储在实例数据块中的程序块,即使在块被处理后也能访问这些参数。因此,它们也被称为"存储块"。实例是功能块调用的结果。每个功能块实例都需要一个实例数据块,其中包含功能块形式参数的实例特定值。功能块实例特定数据可以存储在其自身的实例数据块中,也可以存储在调用块的实例数据块中。
在本教程中,我们将介绍在使用西门子 TIA Portal 进行 PLC 编程时可以使用的不同类型的功能块实例。
遗留的博途PLC项目没有文档?你可以使用 Reverse Docs 插件为程序块逆向生成技术文档!
0、前置条件
要跟随本教程,你需要:
- 对函数、功能块和数据块有基本的了解。
- TIA Portal – 本教程使用 TIA Portal V16
- 已安装 PLCSIM
1、函数和功能块的区别
函数和功能块之间有许多区别。以下是一些要点:

2、实例基础
功能块在被调用后需要为其工作数据存储空间。单个数据项被称为实例。
- 当功能块被调用时,实例会自动创建。
- 实例的结构从相关 FB 的接口生成,只能在那里修改。
- 实例永久分配给功能块。
有三种不同的存储实例选项,如下所示
- 单实例(Single Instance)
- 多实例(Multi-Instance)
- 参数实例(Parameter Instance)
3、单实例
在单实例中,被调用的块将自身数据保存在其自身的实例块中。让我们看一个示例。
在 TIA Portal 中创建一个新项目

创建一个具有以下参数的功能块

编写以下梯形图逻辑运算以执行简单计算

接下来,我们在 OB1 中调用功能块。调用时,会显示一个提示,询问是否要为被调用的功能块创建数据块。我们选择单实例。

为刚调用的功能块在项目树中创建一个数据块。数据块 "Use case_DB" 是 Use Case 功能块的实例,用于保存数据。

我们通过 FB 传递参数标签。编译并下载。

此功能块实例的数据块保存数据如下

输入、输出、InOut 和静态参数存储在实例数据块中。Temp 和常量不会被存储。
如果调用功能块的另一个实例,它会生成另一个单独的数据块,如下所示。

参数实例
参数实例提供了一种独特的实例化选项。在这里,将要使用的块实例作为输入输出参数(InOut)在执行期间传递给调用块。此外,在函数中调用功能块将提供选择多实例的选项。
让我们创建一个函数并调用我们已经创建的 Use Case 功能块。
实例数据存储在调用函数或功能块的 InOut 参数部分的 "Use Case_instance" 中。如图 2.0 所示
在 OB1 中调用此函数时,选择的数据块将是我们创建的 "Reuseable'' 函数。
需要创建输入和输出参数
现在,函数需要一个数据块来配合使用。创建一个数据块,导航到下拉箭头,选择功能块(Use Case)。这意味着要创建的数据块将具有 Use Case 的参数。
在 OB1 中为函数标记创建的数据块。
每次调用此块时,都需要一个单独的数据块实例如下图所示。
3.1 参数实例的优点
- 可以在运行时指定当前正在使用的实例。
- 在程序循环中,可以迭代处理多个实例。
4、多实例
当功能块(FB)调用另一个功能块时,它可以将实例数据保存在调用 FB 的实例数据库中。多实例块调用就是这种类型的块调用。
创建一个功能块并命名为 "Use case"。在 ''This Case 功能块中调用该功能块,并选择多实例作为调用选项。

在这里,Use Case 实例数据存储在调用功能块的静态参数中。

我们注意到 Use Case 数据块存储在调用功能块的静态变量参数区域中。
在 OB1 中调用功能块将提示创建数据块,选择 ''ok'。

我们可以看到数据正在存储在调用功能块的数据块中,如下图所示

再次调用 "Use Case" 功能块将显示以下内容

因此,对于每次块调用,数据都存储在静态数据区域中。
5、多实例的数组方法
多实例块调用的另一种方法是使用数组。删除功能块静态区域中之前创建的数据,并如下所示创建数组。

在这里,选择的数据类型是 "Use Case"。这将提供创建 Use Case 参数的数组格式。
如下所示寻址功能块。

最终寻址如下所示

更新 OB1 中的块调用。数据也存储在 ''This Case'' 数据块中。

这是创建功能块多实例的另一种有效方法。
4.2 多实例的优点
- 更少的实例数据块
- 为复杂块提供良好的结构化方法
5、更多关于参数实例
参数实例也可以是来自另一个功能块的多实例数组。从我们之前关于参数实例的示例中,让我们使用我们创建的多实例数组作为实例参数。

因此,每次调用高级功能块时,可以传递以下类型的实例作为参数实例:
- 单实例:传输被调用功能块的现有实例数据块。
- 多实例:传输被调用功能块的现有多实例。
- 多实例数组的单个元素:传输现有数组的元素。
6、结束语
作为使用 TIA Portal 的西门子 PLC 程序员,功能块实例是你需要掌握的知识。这使得块的参数化更加容易和高效。这适用于希望将编程技能提升到更高水平的高级 PLC 程序员。一个好的做法是尝试本教程中教授的不同实例方法,以便熟练掌握它们。
原文链接:Understanding Function Block Instances (Single, Multi and Parameter) in Siemens TIA Portal
汇智网翻译整理,转载请标明出处