将 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
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号