MultipartFile 支持什么类型_西门子SCL编程入门教程连载(15)-Variant类型

西门子S7-1200/1500系列PLC提供Variant数据类型用于对数据进行引用,有着比ANY类型更强大的功能。今天这篇文章,我们就来聊聊Variant类型,并使用SCL语言编写一个简单的例程。
本文包括如下几个主题:
1、认识Variant类型;
2、Variant与ANY类型的区别;
3、Variant类型使用示例

f86a113e7fa2cc5ba33005a85e013375.png

封面

1、认识Variant类型
Variant是西门子S7-1200/1500系列PLC支持的一种新数据类型,它是一种可以指向基本数据类型、复杂数据类型或者用户自定义类型的引用。Variant的使用限于FB/FC/OB的形参,也就是说,只能在FB/FC/OB的参数列表中声明某个参数的类型为Variant,但FB的静态参数列表除外,也不能声明数据块(DB)的元素为Variant类型;
可以给FB/FC的Variant形参赋任何类型的变量,调用该FB/FC时,不仅会传递变量的值,而且会传递变量的类型;可以使用SCL指令TypeOf识别变量的类型并做相应的处理;2、Variant与ANY类型的区别

有两点:

  1. 两者支持的数据类型不同
    ANY可以指向输入缓存区(I)、输出缓存区(Q)、外设(PI/PO)、位存储区(M)、数据块(DB)等存储区,支持基本数据类型、字符串等;但不支持数组、用户自定义类型等复杂数据类型;
    Variant可以引用几乎所有的数据类型(数组、结构、UDT)的变量,比ANY功能强大;
    注:S7-300/400/1500支持ANY类型
  2. 占用空间大小不同
    ANY需要占用10个字节的存储空间,当把一个变量定义为ANY类型时,无论其是否指向目标变量,都要占用10个字节的存储空间;
    Variant不占用背景数据块或者工作存储器的空间。Variant只是对另一个实例(可以理解为变量)的引用,相当于该实例的一个别名。在使用Variant指向该实例时,该实例已经被创建了;

3、Variant类型使用示例

举个例子,创建一个功能,名称为FC_VariantDemo,参数如下:

输入:

  • oprand1,Variant类型;
  • oprand2,Variant类型;

输出:

  • ouput1,INT类型;
  • ouput2,TIME类型;

FC功能描述:

  • 若oprand1和oprand2的类型为整数,将两者相加,并将结果输出到output1中;
  • 若oprand1和oprand2的类型为TIME,将两者相加,并将结果输出到output2中;

参数声明如下图:

adcf625fd77c9a1b0817c5fc0c0e89d3.png

参数声明

代码如下:

0915d70efd4ee4d47efe70c384a51dbd.png

示例代码

上述代码中的TypeOf指令用来判断变量的类型,VariantGet指令可以访问一个Variant引用并获取其真实的数值及类型;这两个指令及其它与Variant操作的指令我们将在下一篇文章详细介绍。

创建DB_VariantDemo,添加元素如下:

933bd6d026933402852de6e6db496878.png

在OB1中调用FC_VariantDemo的示例如下图所示:

c137f8ff17e6899d87814455e45e5c63.png

调用子程序

好了,关于Variant类型就先介绍这么多。

我的新书《西门子S7-200 SMART PLC应用技术——编程、通信、装调、案例》出版了,欢迎点击下面的链接查看详细介绍:

新书《西门子S7-200 SMART PLC应用技术》出版了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值