PLC_博图系列☞参数实例
文章目录
- PLC_博图系列☞参数实例
- 背景介绍
- 参数实例
- 参数实例的工作原理
- 创建参数实例
- 将实例作为参数传送
关键字:
PLC
、
西门子
、
博图
、
Siemens
、
参数实例
背景介绍
这是一篇关于
PLC
编程的文章,特别是关于西门子的博图软件。我并不是专业的PLC
编程人员,也不懂电路,所以如果你希望从这里学习PLC
编程技术,可能会有些失望。然而,因为工作需要,我开始了解PLC
编程,特别是西门子的博图软件,并记录了这些经验。随着我国工业4.0
的推进,相信会有更多的人从事类似的工作。如果这篇文章能对你有所帮助,欢迎点赞
和关注
我❥(^_-)。
参数实例
在PLC编程中,"参数实例"是一个重要的概念。它是指将函数块的实例作为输入输出参数 (InOut) 传送到另一数据块中。这个数据块可以访问已传送实例中的数据或调用关联函数块。
参数实例的优势在于:
- 在运行过程中,可以定义当前使用的实例。
- 在程序循环中,可以通过迭代方式处理不同的实例。
注意,参数实例数据位于调用块的“InOut”区域中。
为了更好地理解这个概念,我们可以将其与"单个实例"和"多重实例"进行比较:
- 单个实例:被调用的函数块将数据保存在自已的背景数据块中。使用单实例具有以下优势:函数块可重用,适用于简单程序的完美结构。但是,如果重复调用会导致大量数据块,不方便管理²。
- 多重实例:被调用函数块不会将数据保存在自已的背景数据块中,而是保存在另一函数块的实例中。使用多重实例具有以下优势:适用于复杂块的完美结构,背景数据块的数量较少,轻松编写本地子程序,如本地定时器或边沿评估等。注意,多重实例数据位于调用块的“Static”区域中。
定义
参数实例是一种特殊的实例化方式:
在运行过程中,可以将待使用的块实例作为 in-out 参数 (InOut) 传送到调用块中。
优势
使用参数实例具有以下优势:
-
在运行过程中,可定义当前使用的实例。
-
在程序循环中,可通过迭代方式处理不同的实例。
说明
ARRAY 实例
要简化程序循环中实例的迭代处理过程,可定义一个 ARRAY 实例。
数据类型为“DB_ANY”的 ARRAY
多重实例 ARRAY
参数实例的工作原理
下图显示了“Caller”,正使用另一函数块(“Valve”)。“Valve”的实例将作为参数实例进行传递。为此,需定义一个 in-out 参数((“#valveInstance”)),用于在运行期间传送该特定实例。
创建参数实例
参数实例在调用函数块时定义。调用函数块时,可在显示的对话框中指定将该函数块作为单实例、多重实例或参数实例进行调用。此外,也可以在块接口中直接手动输入参数实例。
下图显示了函数块“Valve”的参数实例调用:
将实例作为参数传送
每次调用较高级别函数块时(本示例中为“Caller”),将为被调用函数块传送一个实例(本示例为“Valve”)。可传送以下类型的实例:
-
单实例
传送被调用函数块的现有背景数据块。
-
多重实例
传送被调用函数块现有的多重实例。
-
多重实例 ARRAY 的各个元素
传送多重实例现有 ARRAY 的元素。
-
数据类型为“DB_ANY”的变量 (S7-1200 >= V4.2 / S7-1500 >= V2.0)
将数据类型为“DB_Any”的变量传送到运行期间所分配的相应实例处。
请注意,“指令”(Instructions) 任务卡中的系统块实例不支持这种参数传递方式。
下图显示了函数块“Caller”的调用。通过“valveInstance”参数,传送实例“#currValve”。在运行期间,将通过 #currValve 参数处未决的实例调用“Valve”。
在 S7-1200/S7-1500 系列的 CPU 中,也可将位于另一函数块的背景数据块中的实例作为参数传送。
在以下示例中,所传递的实例位于背景数据块“MyOtherIDB”中 (S7-1200/S7-1500):
在以下示例中,所传递的实例位于背景数据块“MyOtherIDB”的 ARRAY of multi-instances 中 (S7-1200/S7-1500):
在以下示例中,从数据类型为“DB_ANY”的 ARRAY 中传送来的实例位于全局数据块“DB_ValveInstances”中: