关于Variant数据类型在LAD中的简单用法。

已锁定

yming

西门子1847工业学习平台

  • 帖子

    21931
  • 精华

    828
  • 被关注

    1089

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

关于Variant数据类型在LAD中的简单用法。

9425

26

2017-09-27 16:03:08

star star star star star

 在1200/1500版区中,有不少关于Variant的疑惑、讨论。根据我对这个Variant的学习和使用,

结合各位大侠的表述,说一下我对它的认识和理解。


一、什么情况下,会考虑使用Variant?
如果你想做一个通用功能的函数、函数块,而被处理的数据类型是不确定的(被处理数据可能是

整数;也可能是实数等等);但执行的功能是一样的时候,就要考虑使用Variant。


二、Variant用在哪里?
Variant主要用在这个通用的函数(FC)、函数块(FB)的接口处和它们的局部变量中。(如果

是一个专用的函数、函数块,数据类型都是确定的,你不需要用Variant。)


三、Variant到底是什么?
Variant在使用上,虽然把它称为指针,但实际上,它是在函数、函数块上开了一个个不占用

空间的“口子”,对于函数要处理的各种数据类型变量,都可以通过它进入函数(只是进入哦,

函数内的计算,不能在此取得数值)。


四、在哪里可以取得进入函数的Variant变量的值呢?
取得Variant变量的值是要用VariantGet获得,用VariantPut输出。


下面用个简单例子来详细说明:

首先注意到,用Variant做函数,它只支持固件版本4.0以上的1200PLC。


例如:我需要个通用的功能函数,来处理一个数值的1/2,然后输出。根据以往项目经验,主要是处理整数

,双精度整数、实数、长实数四种。准备写个通用函数放到全局库中,各项目可以调用。(否则我需要针对不同的数据类型写四个FC。)


1、首先,新建个FC(取个名字HafB)
2、在函数输入接口处写个变量,数据类型选择Variant;在输出接口也写个变量,数据类型也选

Variant。为了处理出错,添加个状态字。
然后使用中间局部变量,添加可能需要的各种数据类型,用它们来获取实际使用时的值。最后用

个布尔值变量,控制本函数的ENO。
见下图:

 


3、写FC程序
程序很简单,写出一个程序段,然后就是复制-拷贝-粘贴,然后再用鼠标按住那几个声明的变量

拖-拽-放。


 


每一个处理程序段中,都是从VariantGet指令获取这个数据类型的数值,然后处理计算,发送到

输出,然后置位旗标。


4、函数测试


为方便测试,我建了个数据类型(一股脑的把四种类型都写进去);然后建个全局DB,使用这个

自定义数据类型,分别作测试函数的输入和输出。
下图:

 

然后

在主循环OB1中拖入4个写好的FC(HafB),打开上述DB,用鼠标按住变量旗标,拖入到各自的

FC接口。下载硬件配置,下载全部程序,启动运行。
故意用个不在范围的数据类型,看看FC是如何处理的。

 

 

至此,一个简单地、通用的FC就完成了。可以拖到自己的全局库中,供以后调用啦。


 

关于Variant数据类型在LAD中的简单用法。 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有12956条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。