请教ANY与VARIANT数据类型的联系和区别?

1、对ANY与VARIANT两个数据类型有点混淆,手册中ANY的示例:P#M20.0 BYTE 10,VARIANT的示例:P#DB10.DBX10.0 INT12,这两个示例从形式上是一样的。那么ANY与VARIANT数据类型有哪些异同呢?
2、手册中 VARIANT符号示例如截图所示MY.DB.STRUCT1.PRESSURE1,这种表示方式是不是只指明了起始地址而没有指明地址的长度?那么我应该何时用绝对表示方式?何时用符号表示方式?
问题比较多,还请各位老师传到授业解惑。非常感谢。

问题补充:
我有个疑问,比如自由口发送指令SEND_PTP的BUFFER管脚是VARIANT数据类型,如果用符号寻址的话就指定了发送缓存区的首地址,那么发送长度从哪里指令呢?

图片说明:

请教ANY与VARIANT数据类型的联系和区别?    请教ANY与VARIANT数据类型的联系和区别?   

最佳答案

1、ANY和VARIANT都是指针型数据类型,西门子300/400/1500支持ANY类型,1200/1500支持VARIANT类型,见图示
2、 ANY 类型的参数指向数据区的起始位置,并指定其长度。 ANY 指针使用存储器中的 10 个字节。
3、VARIANT 类型的参数是一个可以指向不同数据类型变量(而不是实例)的指针。 VARIANT 指针可以是一个元素数据类型的对象,例如 INT 或 REAL。 也可以是一个 STRING、DTL、STRUCT 数组、UDT 或 UDT 数组。 VARIANT 指针可以识别结构,并指向各个结构元素。 VARIANT 数据类型的操作数在背景 DB 或 L 堆栈中不占用任何空间。 但是,将占用 CPU 上的存储空间。

VARIANT 类型的变量不是一个对象,而是对另一个对象的引用。 VARIANT 类型的各元素只能在函数的块接口中声明。 因此,不能在数据块或函数块的块接口静态部分中声明,例如,因为各元素的大小未知。 所引用对象的大小可以更改。

图片说明:

请教ANY与VARIANT数据类型的联系和区别?  

提问者对于答案的评价:
谢谢回答。
手册中有107页有VARIANT数据类型的举例。个人感觉VARIANT的符号表示方法和绝对表示方法还是有挺大差异的。绝对表示方法P#DB10.DBX10.0 INT 12指定了起始地址和长度,而符号表示方法MyDB.Struct1.pressure1只指定了起始地址而没有指定长度。
有些指令如ATH的输入管脚中是有起始地址和长度两个输入,有些指令如SEND PTP的输入管脚中只有起始地址。这两种情况下用VARIANT的符号表示方法和绝对表示方法是否会有差异。问了400热线给出的回答是SEND PTP指令用的VARIANT输入如果用符号表示方法的话指针指向数组则长度为整个数组的长度,指针指向字符串则长度为整个字符串的长度。
个人感觉VARIANT的这两种表示方法还是有很大区别的,哪位老师有相关的资料或者范例可供分享呀?谢谢。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc202871.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年11月1日 上午12:54
下一篇 2017年11月1日 上午12:54

相关推荐

  • s7-1200 CPU与CPU间的通讯。

    结构是有2个主CPU,6个从CPU,2个主CPU都可以从6个从CPU中采集数据或下发命令。2个主CPU间不需要通讯。主CPU和从CPU间通讯不超过20个字节。请问在这种情况下,CP…

    SIMATIC S7-1200 2017年8月26日
  • 1200模块选型问题

    6ES7 234-4HE32-0XB0模拟量模块(最新的)配1214C 3.0版本的PLC可以用吗? 最佳答案 可以,新的信号模块(6ES7 2XX-…

    SIMATIC S7-1200 2017年6月3日
  • S7-1200最大支持几个MODBUS TCP从站?

    我用1214C作为主站,通过MODBUS TCP协议读写从站仪表,最多能读几个? 问题补充:最多能读写几个仪表? 最佳答案 不是主、从关系,应该是服务器还是客户端的关系。…

    SIMATIC S7-1200 2017年6月24日
  • 1200数据传送问题

    我想把M100.0-M200.0的状态传送到DB块里,请问怎么做呢?试过MOVE_BLK,不过它不能传送bool型 问题补充:图中的DB块选择的是ARRAY,Word类型,MW0位…

    2017年6月1日
  • 1200PLC加分布式用ET200,都需要选什么?

    我用1214CPU.想建立分站,用ET200,IM155-6PN 标准型接口模块,和4个DI 16X24VDC   4个DO&nb…

    SIMATIC S7-1200 2017年7月26日
  • s71200模块连接线

    你好 由于 s71200后面带了太多模块 如果直接一个个连接的话 控制柜宽度不够放不下 有没有连接线可以把一部分模块分开放啊 问题…

    SIMATIC S7-1200 2017年5月28日
  • 西门子1200定时器用法的区别

    1200里有“接通延时定时器”TON ,还有个叫“——(TON)”启动接通延时定时器“这2个有什么区别?在IN里输入TIME没错,但是我在按照他示例给它指定一个IEC_T…

    2017年7月26日
  • 西门子1200round指令

    寄存器MD地址里的数据为浮点数,用round取舍有问题,round我选择的是real  to  int 但是我把MD的地址加进去以…

    2017年6月8日
  • 1200选型I/O

    请教各位,关于1200选型,CPU 1211C 最大本地I/O 数字量 14   CPU1212C …

    2017年6月1日
  • s7-1200多轴运动控制问题

    各位大神s7-1200多轴运动控制程序中,两个轴之间的切换动作怎么实现? 问题补充:补充问题:例如在主程序段里,程序段一里轴1动作,程序段二轴二动作,程序段三轴三动作,用轴一的完成…

    SIMATIC S7-1200 2017年6月13日