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

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

3天内不再提示

博途新变量:有关VARIANT的基本信息

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

说明

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)
长度(字节) 表示法 格式 输入值示例
0 符号 操作数 "TagResult"
数据块名称.操作数名称.元素 "Data_TIA_Portal".StructVariable.FirstComponent
绝对 操作数 %MW10
数据块编号.操作数 类型长度 P#DB10.DBX10.0 INT 12 1)
NULL 指针 NULL

数据类型的编码

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

BOOL

BYTE

CHAR

WORD

INT

DWORD

DINT

REAL

TIME

S5TIME

DATE

TOD

DT

示例

以下示例说明了 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”操作数中。

VARIANT 指令的应用方式

简介

在下一章中,您将了解可用于 VARIANT 指令的应用选项。

对 VARIANT 指向的变量的数据类型求值

在下表中,您将看到可使用哪些指令来对 VARIANT 指向的变量的数据类型求值:

函数 指令 说明
确定数据类型 TypeOf():检查 VARIANT 变量的数据类型
(该指令仅适用于 SCL,且只能与 IF 或 CASE 指令一起使用。)
可使用该指令将 VARIANT 变量指向的数据类型与任何其它变量的数据类型进行比较。也可以与 PLC 数据类型作比较。
TypeOfElements():扫描 VARIANT 变量 ARRAY 元素的数据类型
(该指令仅适用于 SCL,且只能与 IF 或 CASE 指令一起使用。)
可使用该指令将 VARIANT 变量指向的数据类型与任何其它变量的数据类型进行比较。也可以与 PLC 数据类型作比较。如果 VARIANT 变量的数据类型为 ARRAY,则将比较 ARRAY 元素的数据类型。
EQ_Type:比较数据类型与变量数据类型是否“相等”
NE_Type:比较数据类型与变量数据类型是否“不相等”
可使用该指令将 VARIANT 变量指向的数据类型与任何其它变量的数据类型进行比较。也可以与 PLC 数据类型作比较。
EQ_ElemType:比较 ARRAY 元素数据类型与变量数据类型是否“相等”
NE_ElemType:比较 ARRAY 元素数据类型与变量数据类型是否“不相等”
可使用该指令将 VARIANT 变量指向的数据类型与任何其它变量的数据类型进行比较。也可以与 PLC 数据类型作比较。如果 VARIANT 变量的数据类型为 ARRAY,则将比较 ARRAY 元素的数据类型。
对 ARRAY 元素求值 IS_ARRAY:检查 ARRAY 可使用该指令检查 VARIANT 变量指向的数据类型是否为 ARRAY。
CountOfElements:获取 ARRAY 元素个数 可使用该指令读出该变量中 VARIANT 变量指向了多少个 ARRAY 元素。

可以在信息系统的“基本指令 > 对应编程语言”(Basic instructions > Respective programming language) 下找到有关各种指令的其它信息。

读取 VARIANT 指向的数据

为了能够使用数据,您必须在一个中间步骤中将该数据移到变量中,因为无法直接处理该数据。

指令 说明 示例 结果
VARIANT 指向 目标数据类型
VariantGet:读取 VARIANT 变量值 可使用该指令将单个变量的值移到另一个变量中。这两个变量的数据类型必须匹配。 UDT_1 UDT_1 已执行该指令。
REAL REAL
DINT DWORD 该指令未执行。

将数据分配给 VARIANT 变量

无法使用该指令来初始化 VARIANT 变量。因此,在将数据返回到变量时必须已经初始化 VARIANT 变量。请勿使用未初始化的临时 VARIANT 变量。

指令 说明 示例 结果
源数据类型 VARIANT 指向:
VariantPut:写入 VARIANT 变量值 可使用该指令将单个变量的值移到另一个变量中。这两个变量的数据类型必须匹配。 UDT_1 UDT_1 已执行该指令。
REAL REAL
DINT DWORD 将不执行该指令,因为数据类型不同。

处理动态 ARRAY 结构

对 ARRAY 元素求值 TypeOfElements():扫描 VARIANT 变量 ARRAY 元素的数据类型
(该指令仅适用于 SCL,且只能与 IF 或 CASE 指令一起使用。)
可使用该指令将 VARIANT 变量指向的数据类型与任何其它变量的数据类型进行比较。也可以与 PLC 数据类型作比较。如果 VARIANT 变量的数据类型为 ARRAY,则将比较 ARRAY 元素的数据类型。
IS_ARRAY:检查 ARRAY 可使用该指令检查 VARIANT 变量指向的数据类型是否为 ARRAY。
CountOfElements:获取 ARRAY 元素个数 可使用该指令读出该变量中 VARIANT 变量指向了多少个 ARRAY 元素。
MOVE_BLK_VARIANT:块移动 可使用该指令移动动态和类型安全(集成类型测试)ARRAY。可以为源和目标 ARRAY 自由选择限值。ARRAY 元素的数据类型必须匹配。
说明
MOVE、MOVE_BLK 和 MOVE_BLK_VARIANT 之间的区别
可使用“MOVE”指令来复制完整的结构。
可使用“MOVE_BLK”指令来移动具有已知数据类型的 ARRAY 的部分。
仅在您想要移动其数据类型仅在程序运行时期间已知的 ARRAY 的部分时,才需要使用 MOVE_BLK_VARIANT 指令。

审核编辑:汤梓红

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

    关注

    5011

    文章

    13290

    浏览量

    463261
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10860

    浏览量

    211722
  • 变量
    +关注

    关注

    0

    文章

    613

    浏览量

    28366
  • 数据类型
    +关注

    关注

    0

    文章

    236

    浏览量

    13623
  • S7-1500
    +关注

    关注

    3

    文章

    300

    浏览量

    6403

原文标题:博途新变量: 有关 VARIANT 的基本信息

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

收藏 人收藏

    评论

    相关推荐

    请教软件安装顺序

    `如图是V14软件,大多文件了,不知道装那个文件夹的文件先`
    发表于 07-29 21:37

    VARIANT变量的类型VARTYPE

    VARIANT类型变量的vt值,得以确认: enum VARENUM { VT_EMPTY =0,VT_NULL = 1,VT_I2 = 2,VT_I4 = 3,VT_R4 = 4,VT_R8
    发表于 07-09 04:47

    软件安装后开机弹出安装介质不可用

    软件安装后开机弹出安装介质不可用,请插入DVD或检查网络连接。请问有大神遇到过吗?
    发表于 10-18 16:26

    TIAS7-1200学习笔记指令集

    本文章对S7-1200plc在软件梯形图方式编程中使用的指令进行了总结和俗语化描述。
    发表于 07-01 09:20

    TIAS7-1200学习笔记

    西门子S7-1200数据类型总结笔记,来源于帮助文档。
    发表于 07-01 11:51

    西门子1200码垛机程序应用

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

    Variant类型的变量指令说明

    SCL指令:TypeOf(操作数),操作数是FC/FB的Input/Output/InOut/Temp中定义为Variant类型的参数,该语句输出是数据类型,在程序中只能用在IF与CASE进行比较。
    的头像 发表于 03-30 15:13 2854次阅读

    用小电器来显示厨房的基本信息

    电子发烧友网站提供《用小电器来显示厨房的基本信息.zip》资料免费下载
    发表于 10-21 14:22 0次下载
    用小电器来显示厨房的<b class='flag-5'>基本信息</b>

    支持处理Variant类型的变量的指令说明

    从TIA V13SP1 开始,S7-1200 V4.0开始,支持以下处理Variant类型的变量的指令。
    的头像 发表于 01-03 16:56 2542次阅读

    SIMATIC S7-1500 PLC 变量表定义全局符号和导出和导入变量

    TIA软件的项目视图中的项目树中,双击“添加新变量表”,即可生成绩新的变量
    发表于 03-27 09:17 1.3w次阅读

    西门子:有关VARIANT基本信息

    VARIANT 数据类型的参数是一个指针或引用,可指向各种不同数据类型的变量VARIANT 指针无法指向实例,因此不能指向多重实例或多重实例的 ARRAY。VARIANT 指针可以是
    的头像 发表于 06-12 10:03 7160次阅读
    西门子<b class='flag-5'>博</b><b class='flag-5'>途</b>:<b class='flag-5'>有关</b><b class='flag-5'>VARIANT</b>的<b class='flag-5'>基本信息</b>

    西门子:PLC变量

    PLC 变量表包含在整个 CPU 范围有效的变量和符号常量的定义。系统会为项目中使用的每个 CPU 自动创建一个 PLC 变量表。可以创建其它变量表用于对
    的头像 发表于 06-14 10:32 8851次阅读
    西门子<b class='flag-5'>博</b><b class='flag-5'>途</b>:PLC<b class='flag-5'>变量</b>

    西门子有关STRUCT的基本信息

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

    压力检测器的基本信息是什么

    压力检测器的基本信息是什么
    的头像 发表于 08-25 15:59 763次阅读

    西门子设计 ProDiag 变量监控操作方式

    如果是 FB_Bauteilkontrolle,在检查容器的情况下允许通过 Config-Bit 取消块内部的消息,并且在输出端 Stoexx 将用户定义的变量监控参数化(可从块帮助得知详细信息)。
    发表于 10-25 10:28 3943次阅读
    西门子<b class='flag-5'>博</b><b class='flag-5'>途</b>设计 ProDiag <b class='flag-5'>变量</b>监控操作方式