回复:TIA PORTAL(博图)中的Variant类型

HwLib(慧兰博)

  • 帖子

    59
  • 精华

    5
  • 被关注

    114

论坛等级:侠士

注册时间:2016-11-25

普通 普通 如何晋级?

发布于 2017-09-26 08:51:25

23楼

展开查看
以下是引用yming在2017-09-25 21:02:22的发言 >22楼

楼主只是研究一下Variant这个类型而写的程序。

其实,真正使用并不需要去判断数据类型

为什么?

因为 指令 VariantGet 指令在获取值的时候,就会检查数据类型是否正确。不正确,它就不传送!

既然如此,就不用去判断。

使用Variant的主要原因,正如楼主说的那样,是为了能用一个函数、函数块来实现(TIA未提供的)某种功能、某种计算。并且要求它能接受不同的数据类型。

而针对上述具体的某种功能、计算,往往数据类型是有限的。比如计算,数据类型就是整型、双整型、单精度实型和双精度实型这几种。你只需要声明这几个类型的TEMP局部变量,用VariantGet逐一获得对应的值即可,反正类型不对,不传送,ENO=0;只有正确的(唯一的)ENO=1。余下的计算处理就明确了数据类型。

,处理结束时,就把结果给VariantPut输出即可。(通常,计算Input 是啥,结果也是相同数据类型)

这种方法,确实如楼主所说,占用不少存储区。如果只是占用程序存储区,而不是工作存储区,还是可以接受的。(这点是我猜的。因为当你调用这个功能或功能块的时候,数据类型已经确定了。编译后,TIA不会把你没用到的也放到工作存储区中。就像基本指令MOVE,它各种有效数据类型都接受,但绝不会把所有类型的MOVE功能,都放到工作存储区中的。)

所以,就像Zane 版主所说那样,其实Variant就是个对变量的解释说明,更形象的如kayan大侠说的“更像个管道”。



谢谢关注!

个人认为,除非必要,否则那样写还是不妥的。

而为什么MOVE可以呢?我认为是CPU在系统层面对传入和传出类型进行了解析,而对VARIANT类型的判断需要在用户程序中完成。

Variant的类型按照高级编程语言的说法属于“推断类型”


www.hwlib.com.cn 《TIA PORTAL顶级编程技术》
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10587条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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