西门子PLC数据类型-指针2

将 VARIANT 指定给引用尝试


说明

使用赋值尝试“?=”,可将 VARIANT 数据类型的变量分配给一个引用。

如果在运行过程中由 VARIANT 寻址的变量的数据类型正确,且该变量位于一个优化的存储区内,则执行赋值操作后目标变量中将包含一个有效引用,否则为 NULL。

尝试赋值后,可以检查尝试是否成功,并根据该结果继续处理程序。在 LAD 和 FBD 中,可以针对检查使用使能输出 ENO。如果赋值尝试成功,ENO 将返回信号状态“1”。这样才能在程序段中继续执行后续指令。

在 STL 和 SCL 中,可使用指令“IS_NULL”或“NOT_NULL”来检查赋值尝试是否成功等。请参见以下示例。

规则

以下规则适用于该赋值操作:

示例

以下示例说明了如何使用引用直接对 VARIANT 变量值进行符号化读写操作。无需再使用“VariantGet”和“VariantPut”指令复制值。

VARIANT 变量“variantTelegramData”可传送类型为“Telegram1”和“Telegram2”的数据。

赋值尝试可用于测试该数据的类型是否为“Telegram1”。在本示例中,如果是,则将值“T”和“W”赋值给参数“Info1”和“Info2”。

SCL 中的示例:

LAD 中的示例:

将引用作为块参数进行传递


说明

在函数或函数块调用时,引用也可作为块参数进行传递。

在调用一个块时,如果在块接口处将引用声明为一个形参,则可将引用以“REF()”或“#MyRef”形式作为实参进行传递。

规则

将引用作为块参数进行传递时应遵循以下规则:

示例 1

在以下示例中,显示了“Callee”函数的接口。该接口中包含有多个声明为引用的参数:

下图显示了 SCL 中对该块的调用以及所声明引用的参数分配:

示例 2

以下示例介绍了调用块期间针对传递引用的更多选项:

以下示例介绍了两种可能的传递方式:

该示例显示了“通过引用将数据返回到调用块”中的部分编程示例。

示例:使用引用传递不同数据类型的变量


任务

在以下应用示例中,制造厂请求数据。根据所请求的数据结构类型,会向设备传送不同的数据。

数据结构映射到两种不同的 PLC 数据类型。PLC 数据类型“typeTelegram1”包含数据类型“CHAR”的常规类型,PLC 数据类型“typeTelegram2”包含数据类型“STRING”的零件 ID。这两种 PLC 数据类型均可生成数据块:

示例程序

下图说明了使用和不使用 SCL 引用实施任务的两种情况。

由于两个块应该都能够处理不同的消息帧格式,所以它们的输入输出参数 (InOut) 的数据类型为“VARIANT”,其中消息帧以结构化变量的形式传送。由于创建程序时数据类型为 VARIANT 的参数未知,因此不能直接访问该参数。因此,在两个示例中均使用“TypeOf”来确定调用时可用的数据类型。

在左侧块中,现使用“VariantGet”指令将运行期间的待决变量复制到相应数据类型的临时变量中,并在其中描述了相应的值。随后使用“VariantPut”指令将该结构复制回“telegram”参数。复制操作对程序运行具有不利影响,并且耗费内存空间。

在右侧块中,使用引用来解决任务:该接口包含可用于两种可用数据结构的引用参数。根据当前的待决变量,使用“AssignmentAttempt”对匹配引用进行初始化,且该引用现指向数据块中的变量内存位置。这些值现在可直接写入数据块中。

这样程序代码将更加清晰并更易于维护。由于不需要复制结构化变量,因此程序运行和内存要求都不会受影响。

示例:通过引用将数据返回到调用块


任务

在以下应用示例中,组态一个包含多个站的制造厂。这些站由两个 CPU 控制,它们想控制 CPU 发送数据。该 CPU 必须分析哪个站存在新数据并执行更高级别的控制任务,例如汇总所生产的工件数量。

下图显示了制造厂的结构:

示例程序中的块

控制 CPU 上的程序结构如下:

示例程序

下图说明了在 SCL 中实施任务的情况:

“FB LineData”调用“FC StationData”并在被“REF("ReceiveData")”调用时将引用传递到接收数据块。

通过取消对所传递的接收数据块的引用,该 FC 可读出站号并将其写入临时变量“stationNo”。

将接收数据块中的生产数据复制到全局 DB“Station”中的相应 ARRAY 元素中。

通过 "refProductionData" 输出将此 ARRAY 元素作为引用返回到调用 "FB LineData"。

随后它可以通过取消引用直接访问所传递的 ARRAY 元素,从而更新整条生产线的单元计数器。

展开阅读全文

页面更新:2024-04-10

标签:数据类型   赋值   示例   指针   变量   指令   声明   参数   类型   程序   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top