恭喜,你发布的帖子
发布于 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处有真正的数值。
你说对么?
请填写推广理由:
分享
只看
楼主