PLC_博图系列☞参数实例_PLC

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”)),用于在运行期间传送该特定实例。

PLC_博图系列☞参数实例_PLC_02

创建参数实例

参数实例在调用函数块时定义。调用函数块时,可在显示的对话框中指定将该函数块作为单实例、多重实例或参数实例进行调用。此外,也可以在块接口中直接手动输入参数实例。

下图显示了函数块“Valve”的参数实例调用:

PLC_博图系列☞参数实例_西门子_03

将实例作为参数传送

每次调用较高级别函数块时(本示例中为“Caller”),将为被调用函数块传送一个实例(本示例为“Valve”)。可传送以下类型的实例:

  • 单实例
    传送被调用函数块的现有背景数据块。
  • 多重实例
    传送被调用函数块现有的多重实例。
  • 多重实例 ARRAY 的各个元素
    传送多重实例现有 ARRAY 的元素。
  • 数据类型为“DB_ANY”的变量 (S7-1200 >= V4.2 / S7-1500 >= V2.0)
    将数据类型为“DB_Any”的变量传送到运行期间所分配的相应实例处。
    请注意,“指令”(Instructions) 任务卡中的系统块实例不支持这种参数传递方式。

下图显示了函数块“Caller”的调用。通过“valveInstance”参数,传送实例“#currValve”。在运行期间,将通过 #currValve 参数处未决的实例调用“Valve”。

PLC_博图系列☞参数实例_参数实例_04

在 S7-1200/S7-1500 系列的 CPU 中,也可将位于另一函数块的背景数据块中的实例作为参数传送。

在以下示例中,所传递的实例位于背景数据块“MyOtherIDB”中 (S7-1200/S7-1500):

PLC_博图系列☞参数实例_博图_05

在以下示例中,所传递的实例位于背景数据块“MyOtherIDB”的 ARRAY of multi-instances 中 (S7-1200/S7-1500):

PLC_博图系列☞参数实例_博图_06

在以下示例中,从数据类型为“DB_ANY”的 ARRAY 中传送来的实例位于全局数据块“DB_ValveInstances”中:

PLC_博图系列☞参数实例_PLC_07


PLC_博图系列☞参数实例_PLC_08