0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

西门子博途:有关VARIANT的基本信息

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-06-12 10:03 次阅读

说明

VARIANT 数据类型的参数是一个指针或引用,可指向各种不同数据类型的变量。VARIANT 指针无法指向实例,因此不能指向多重实例或多重实例的 ARRAY。VARIANT 指针可以是基本数据类型(例如,INT 或 REAL)的对象。还可以是 STRING、DTL、STRUCT 类型的 ARRAY、UDT、UDT 类型的 ARRAY。VARIANT 指针可以识别结构,并指向各个结构元素。VARIANT 数据类型的操作数不占用背景数据块或工作存储器中的空间。但是,将占用 CPU 上的存储空间。

VARIANT 类型的变量不是一个对象,而是对另一个对象的引用。在函数的块接口中的 VAR_IN、VAR_IN_OUT 和 VAR_TEMP 部分中,VARIANT 类型的单个元素只能声明为形参。因此,不能在数据块或函数块的块接口静态部分中声明,例如,因为各元素的大小未知。所引用对象的大小可以更改。

使用 VARIANT 数据类型时,可为各种数据类型创建通用的标准函数块 (FB) 或函数 (FC)。为此,可使用所有编程语言中的各种指令。在程序创建过程中,可指定该块可处理数据类型。在此,可使用 VARIANT 数据类型对各种变量进行互连。之后,再根据这些变量在块中的数据类型进行响应。调用某个块时,可以将该块的参数连接到任何数据类型的变量。调用某个块时,除了传递变量的指针外,还会传递变量的类型信息。块代码随后可以根据运行期间传递的变量类型来执行。

例如,如果函数的块参数为 VARIANT 数据类型,那么整数数据类型的变量可以在程序中的一个点处传递,而 PLC 数据类型的变量可以在程序中的另一个点处传递。借助 VARIANT 指令,函数随后可以正确响应这种情况,而不会出错。

说明
如果一个数据块最初的数据类型为用户自定义的数据类型 (UDT),那么只能指向完整的数据块。
说明
访问 I/O
只有 S7-1500 模块的 CPU 才能直接读写 I/O 输出或输出中的信号。(<操作数>:P)

下表列出了 VARIANT 指针的属性:

长度(字节) 表示法 格式 输入值示例
0 符号 操作数 "TagResult"
数据块名称.操作数名称.元素 "Data_TIA_Portal".StructVariable.FirstComponent
绝对 操作数 %MW10
数据块编号.操作数 类型长度
(仅对可标准访问的块有效)
P#DB10.DBX10.0 INT 12 1)
NULL 指针 NULL
1) 如果使用前缀 P#,则只能指向“标准”访问模式的存储区。

数据类型的编码

如果通过 P# 使用绝对寻址,则允许使用以下数据类型:

十六进制代码 数据类型 说明
B#16#00 NIL Null 指针
B#16#01 BOOL
B#16#02 BYTE 字节,8 位
B#16#03 CHAR 8 位字符
B#16#04 WORD 16 位字
B#16#05 INT 16 位整数
B#16#06 DWORD 32 位字
B#16#07 DINT 32 位整数
B#16#08 REAL 32 位浮点数
B#16#0B TIME 持续时间
B#16#0C S5TIME 持续时间
B#16#09 DATE 日期
B#16#0A TOD 日期和时间
B#16#0E DT 日期和时间
B#16#13 STRING 字符串
B#16#17 BLOCK_FB 函数块
B#16#18 BLOCK_FC 函数
B#16#19 BLOCK_DB 数据块
B#16#1A BLOCK_SDB 系统数据块
B#16#1C COUNTER 计数器
B#16#1D TIMER 定时器

示例

以下示例说明了 VARIANT 使用 STL 指令“MOVE:移动值”的工作原理

STL 说明
CALL MOVE // 调用指令。
value_type := VARIANT // 参数 IN 和 OUT 的数据类型
IN := "Data_TIA_Portal".StructVariable.FirstComponent // 从“Data_TIA_Portal”数据块移动操作数“FirstComponent”中的数据。
OUT := "MotorDB".StructResult.TagResult // 从“MotorDB”数据块传送到“TagResult”操作数中。

编程示例

在此编程示例中,将移动在生产班次期间为示例收集的数据值以作进一步处理。收集的数据放在 ARRAY 中。通过“MOVE_BLK_VARIANT:移动块”(Move block) 指令,可以动态或以类型安全方式移动整个 ARRAY 或个别 ARRAY 元素。可以为源和目标 ARRAY 自由选择 ARRAY 限值,这些限值不必匹配。但是,要移动的数据值的数据类型必须匹配。该指令在所有编程语言中都可用。

通过 VARIANT 数据类型,也可以使用已创建的程序代码并通过在块调用中指定不同的源和目标区域来移动另一个生产班次的数据。

使用 SCL 编程语言创建函数并将其命名为“FC_PartialArrayCopy”。
按如下方式声明块接口:
436d75be-0855-11ee-962d-dac502259ad0.png
436d75be-0855-11ee-962d-dac502259ad0.png
按如下方式创建 SCL 程序代码:
可以找到以下程序代码作为模板。
43b8c708-0855-11ee-962d-dac502259ad0.png
43b8c708-0855-11ee-962d-dac502259ad0.png
创建 PLC 数据类型“UDT_MyStruct”:
43fc73ae-0855-11ee-962d-dac502259ad0.png
43fc73ae-0855-11ee-962d-dac502259ad0.png
创建全局数据块“DB_WithArrays”:
443bc658-0855-11ee-962d-dac502259ad0.png
443bc658-0855-11ee-962d-dac502259ad0.png
在组织块(例如 OB1)中调用“FC_PartialArrayCopy”函数,并使用 DB_WithArrays 数据块初始化参数。输入指定的常量:
447254c0-0855-11ee-962d-dac502259ad0.png
447254c0-0855-11ee-962d-dac502259ad0.png
也可以使用第三个和第四个 ARRAY(数据类型为 REAL)来代替使用前两个 ARRAY (数据类型为 UDT_MyStruct)。
44b7ee54-0855-11ee-962d-dac502259ad0.png
44b7ee54-0855-11ee-962d-dac502259ad0.png

结果

在程序周期中调用“FC_PartialArrayCopy”块后,会将从第四个元素开始的两个数据值立即从“DB_WithArrays”全局数据块的第一个 ARRAY 复制到该数据块的第二个 ARRAY 中。复制的数据值将插入到第二个 ARRAY 中(从第四个元素开始)。

用于复制的 SCL 程序代码:

SCL
IF IS_ARRAY(#SourceArray) AND TypeOfElements(#SourceArray) = TypeOfElements(#DestinationArray) THEN
#Error := MOVE_BLK_VARIANT(COUNT := #Count, SRC := #SourceArray, SRC_INDEX := #SourceIndex,
DEST => #DestinationArray, DEST_INDEX := #DestinationIndex);
END_IF;
#FC_PartialArrayCopy := #Error;

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7490

    浏览量

    163818
  • 西门子
    +关注

    关注

    94

    文章

    3039

    浏览量

    115854
  • 函数
    +关注

    关注

    3

    文章

    4331

    浏览量

    62594
  • SCL
    SCL
    +关注

    关注

    1

    文章

    239

    浏览量

    17067

原文标题:西门子博途:有关 VARIANT 的基本信息

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    北京回收西门子组态软件

    回收西门子变频器SINAMICS V10系列变频器回收西门子触摸屏回收西门子组态软件回收西门子
    发表于 05-27 12:16

    西门子1200码垛机程序应用

    西门子1200码垛机、立体仓库程序(带注释),程序应用到变频器、触摸屏、步进电机、工业机器人、视觉相机。
    发表于 09-03 07:42

    畅销西门子助听器价格表_西门子助听器价格大全

    畅销西门子助听器价格表_西门子助听器价格大全 1、西门子盒式助听器 AMIGA 176AO Pocket AMIGA 176AO 西门子助听器价格:441元
    发表于 08-23 12:19 1.5w次阅读
    畅销<b class='flag-5'>西门子</b>助听器价格表_<b class='flag-5'>西门子</b>助听器价格大全

    西门子大赛1200电梯参考程序

    西门子大赛1200电梯参考程序,V13文件.有需要的加油!
    发表于 06-22 15:56 183次下载

    博世和西门子哪个好_博世和西门子的关系

    本文开始阐述了博世和西门子的关系以及分析了西门子和博世哪个更好,其次分析了西门子和博世的冰箱哪个更好,最后介绍了博世和西门子家电集团在中国的发展。
    的头像 发表于 04-04 09:30 15.9w次阅读

    解析ABB机器人与西门子S7-1200 profinet通讯

    西门子软件中做PLC硬件组态,设置以太网连接。
    的头像 发表于 01-18 16:55 4.9w次阅读
    解析ABB机器人与<b class='flag-5'>西门子</b>S7-1200 profinet通讯

    详解编程实现S7300与西门子触摸屏通讯

    目前国内流行用昆仑通泰或者威纶通触摸屏做项目,一方面价格便宜,另一方面编程简单。但西门子屏也经常会被用到,所以不得不学。简单写一下会用图建立西门子触摸屏和S7300PLC的通讯。
    的头像 发表于 05-05 11:37 1.7w次阅读

    西门子PLC编程软件下载

    西门子PLC编程软件TIA V13 SP1 SIMATIC_WinCC_Runtime_Professional_SP1_for_V13---江西工控论坛有下载密码www.jx-gongkong.com
    发表于 03-01 11:04 68次下载

    Unity3D与西门子PLC通讯

    本文是做实体PLC和Unity的通讯,如果没有实体PLC可以参考我之前的文上位机与西门子TIA的PROFINET通讯仿真(虚拟通讯),这篇
    发表于 04-19 11:43 6次下载
    Unity3D与<b class='flag-5'>西门子</b>PLC通讯

    如何在平台调试西门子G120变频器

      随着工业自动化迈向智能化越来越近,科技工作者不断的突破,近年在传动领域,采用工业以太网(Profinet)和变频器通讯非常广泛,今天我们简单的介绍下在平台调试西门子G120变频器。
    的头像 发表于 04-25 10:17 2.9w次阅读
    如何在<b class='flag-5'>博</b><b class='flag-5'>途</b>平台调试<b class='flag-5'>西门子</b>G120变频器

    新变量:有关VARIANT基本信息

    VARIANT 数据类型的参数是一个指针或引用,可指向各种不同数据类型的变量。VARIANT 指针无法指向实例,因此不能指向多重实例或多重实例的 ARRAY。VARIANT 指针可以是基本数
    的头像 发表于 06-07 10:49 2628次阅读

    西门子有关STRUCT的基本信息

    STRUCT 数据类型是指一种元素数量固定但数据类型不同的数据结构。在结构中,也可嵌套 STRUCT 或 ARRAY 数据类型的元素。结构可用于根据过程控制系统分组数据以及作为一个数据单元来传送参数。
    的头像 发表于 07-12 10:03 5998次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>博</b><b class='flag-5'>途</b><b class='flag-5'>有关</b>STRUCT的<b class='flag-5'>基本信息</b>

    西门子1200/1500PLC单按钮启停控制10种设计方法

    西门子1200/1500PLC单按钮启停控制10种设计方法
    的头像 发表于 08-31 09:14 8093次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>博</b><b class='flag-5'>途</b>1200/1500PLC单按钮启停控制10种设计方法

    西门子plc单按钮启停的十种方法(1200/1500PLC)

    西门子1200/1500PLC单按钮启停控制10种设计方法
    发表于 08-31 09:15 6634次阅读
    <b class='flag-5'>西门子</b>plc单按钮启停的十种方法(<b class='flag-5'>博</b><b class='flag-5'>途</b>1200/1500PLC)

    如何在平台调试西门子G120变频器

    随着工业自动化迈向智能化越来越近,科技工作者不断的突破,近年在传动领域,采用工业以太网(Profinet)和变频器通讯非常广泛,今天我们简单的介绍下在平台调试西门子G120变频器。
    发表于 09-07 12:50 4976次阅读
    如何在<b class='flag-5'>博</b><b class='flag-5'>途</b>平台调试<b class='flag-5'>西门子</b>G120变频器