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

封面

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中;

参数声明如下图:

参数声明

代码如下:

示例代码

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

创建DB_VariantDemo,添加元素如下:

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

调用子程序

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

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

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

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

  1. js 获取中括号里面字符串_西门子SCL编程入门教程连载(18)——字符串

    今天这篇文章,我们来聊聊西门子S7系列PLC的一种数据类型--字符串. 本文包括如下几个主题: 什么是字符串: 怎样声明字符串变量: 怎样给字符串变量赋值: 1.什么是字符串 字符串(string)是 ...

  2. 西门子scl语言编程手册_西门子SCL编程PEEK指令讲解

    单词"peek"在英语中表示"偷看,瞥一眼",在计算机编程中表示"读取数据". 在西门子SCL编程中,PEEK指令可以用来读取输入缓存区(I ...

  3. 怎么查看电脑有没有python_python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学...

    本文由简码编程原创,保留所有版权,转载请注明出处. 本python人工智能爬虫系列教程基于Python3.0版本, 将python结合windows桌面开发工具aardio一起做可视化的开发, 用py ...

  4. 爬虫python对电脑要求_python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学...

    本文由简码编程原创,保留所有版权,转载请注明出处. 本python人工智能爬虫系列教程基于Python3.0版本, 将python结合windows桌面开发工具aardio一起做可视化的开发, 用py ...

  5. 西门子上升沿指令_西门子SCL编程实例——霓虹灯顺序控制(DECO指令)

    有如下控制任务: 舞台上有8根霓虹灯灯管,要求顺序点亮灯管.灯管编号1到8,从1号开始,每次只有一根灯管点亮,持续的时间为2秒钟.当8号灯管点亮结束后,再次从1号开始,如此循环. 今天这篇文章,我们使 ...

  6. 【转载】PHP面向对象(OOP)编程入门教程

    面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持. 如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们 ...

  7. PHP面向对象(OOP)编程入门教程

    面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们就 ...

  8. TZC Python编程入门教程 ————题解

    本博客原文地址:Python编程入门教程(以在线评测平台为载体) - 暴力都不会的蒟蒻 - 博客园,原文体验更佳 如果你是一名浙江2020级及以后的高中生要学习Python,抑或是一位科学工作者要学习 ...

  9. JAVA入门Hwork,HBase Java编程入门教程

    一款优秀的数据库除了会提供客户端,还会提供编程语言接口,HBase 也不例外.HBase 除了支持使用 Shell 客户端来操作(请看<HBase Shell及其常用命令>),还提供了多种 ...

最新文章

  1. 玩转GridView
  2. netstat和lsof端口结果不一致
  3. window.open 弹出居中窗口
  4. 满汉全席(洛谷-P4171)
  5. 深度残差收缩网络:(四)注意力机制下的阈值设置
  6. 以太坊到底是什么 | 工作原理
  7. 【渝粤教育】国家开放大学2018年秋季 1141t工程经济与管理 参考试题
  8. 4g网络切换软件_游戏掉线坑队友?OPPO Reno网络切换超快,上分吃鸡更稳
  9. 数字图像处理学习路线
  10. html设置请求头host,Http请求头Host字段作用
  11. postgresql安装报错
  12. 2021年IEEE Fellow刚刚放榜!84位华人学者当选再创新高!
  13. Labview八段数码管0—9数字显示
  14. LaTeX 中使用三级标题
  15. js实现图片拖拽,定点缩放,旋转 (二)
  16. 攻防世界illusion暴力破解
  17. Python 使用requests实现网络小说爬虫案例(一)
  18. 三维格式学习-wrl
  19. Shell中的美元符号$
  20. 阿里云HPC助力新制造 | 上汽仿真计算云SSCC

热门文章

  1. 假期来啦!技术人如何用 Python 实现景区安防系统
  2. Thinkpad笔记本适配器器已连接,未充电(不是充电60%限制的问题)
  3. Spring源码-AnnotationConfigApplicationContext容器的创建过程
  4. iOS drawRect绘制圆形/圆环/饼图
  5. thinkphp5.0提示不支持redis详细解决办法
  6. 达摩院公布:2022十大科技趋势发布,我一个都看不懂!
  7. C#复习(十五)事件一_该用户还没想到昵称_新浪博客
  8. HTML合并单元格、折叠边框
  9. vue.js表情文本输入框组件
  10. 基于node批量上传图片cdn并且替换本地地址