[西门子] ​西门子博途:参数实例

[复制链接]
查看275 | 回复0 | 2024-6-9 21:05:19 | 显示全部楼层 |阅读模式
>


参数实例:

定义
参数实例是一种特殊的实例化方式:
在运行过程中,可以将待使用的块实例作为 in-out 参数 (InOut) 传送到调用块中。

优势
使用参数实例具有以下优势:

  • 在运行过程中,可定义当前使用的实例。
  • 在程序循环中,可通过迭代方式处理不同的实例。


说明
ARRAY 实例
要简化程序循环中实例的迭代处理过程,可定义一个 ARRAY 实例。

  • 数据类型为“DB_ANY”的 ARRAY
  • 多重实例 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”中:






声明参数实例

简介
下表列出了块接口中的声明方式和使用的参数实例:
声明
块类型
应用
InOut
FB
FC
之后,可调用在函数块中作为实参传送的实例。
Input
FC
用户读取作为实参传送的实例数据,但无法在块中调用该实例。
Output
FC
用户可写入作为实参传送的实例数据,但无法在块中调用该实例。



要求
块接口已打开。

操作步骤
要声明参数实例,请按以下步骤操作:

  • 打开块接口的指定区域(参见表格)。
  • 在“名称”(Name) 列中,输入实例待传送的 in/out 参数名称。
  • 在“数据类型”(Data type) 列中,输入应定义实例的函数块名称。块名称必须用引号括起。


说明
自动声明参数实例
在程序段中编程一个块调用时,程序编辑器会自动声明参数实例,然后在“调用方式”(Call options) 对话框中指定将该块作为参数实例调用。















免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则