回复:FB 接口只有in_out 才能定义variant,FC的in,output,和in_out都可以定义variant

yming

西门子1847工业学习平台

  • 帖子

    23148
  • 精华

    881
  • 被关注

    1253

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2017-09-24 11:54:32

9楼

关于Variant这种数据类型我很少使用,因为我不是做专业软件编程的,大部分的时间还是机械设计。

撇开Variant序列化,反序列化不谈(这些是为通讯使用的)。对于Variant这个数据类型说一点认识:

如果你观察TIA 提供的许许多多的指令(LAD常规指令,扩展指令),都可以发现,它的输入就是Variant类型。它自带了数据类型识别。

例如,一个最简单的MOVE,你不用去考虑数据类型,直接将一个变量拖到输入即可。这个MOVE指令函数,对所有PLC数据类型通用。这个MOVE指令函数的输入,就是Variant。

对于我们非专业软件编程的来说,博图提供的这些基本指令,扩展指令...已经满足:够用的要求了。但是,对于专业的软件编程来说,可能还不够。

比如:需要一个通用函数,其功能就是将输入的变量数值减半输出。而它可以接受INT、DINT、浮点之类的数据类型。

怎么办呢?其实就是用Variant作为FC的输入输出;用VariantGet获得数据值(类型),按各类型处理减半,用VariantPut输出。(这个VariantGet的最大好处就是数据类型不对,不传送!不用你再去写判断!这样处理就变得简单多了。)

一个通用的FC就完成了,做好注释,你就可以把它保存到自己的全局库中,随时调用。

这就是西门子的开放。

你也可以写个单极值的0.618法,可以处理整数、长整数、浮点的函数么?

这就是Variant的意义,它在输入处,接受除它自己之外的所有数据类型,只在VariantGet处有真正的数值。

你说对么?

学而时习之,不亦说乎?温故而知新,不亦乐乎?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10592条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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