请教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使用三个通讯扩展模块通讯

    使用三个模块,是不是必须要使用轮询? 问题补充:我使用的是一个端口连接触摸屏采用modbus协议,另外两个使用的是自由口协议,一个是温度模块一个是天平模块,我采用的是类是于互锁机制…

    SIMATIC S7-1200 2017年6月18日
  • 博途V11无法下载程序到PLC

    S71200在线访问点击“更新可访问的设备”,显示扫描。。。接口上的设备已完成,在网络上未找到任何设备! 最佳答案 可以是你的设置问题,或者硬件与软件版本不对应。参考:STEP7&…

    SIMATIC S7-1200 2017年11月13日
  • 博途DB块导出为excel?

    博途中的DB块如何导出成Excel格式,导出的源文件是.db 后缀的、PLC变量表却可以导出Excel?要是用威纶通触摸屏来导入数据 最佳答案 把导出的DB块后缀改为.S…

    SIMATIC S7-1200 2017年6月1日
  • 如何使用FB块的背景DB

    各位师傅,在FB块里面有一系列的输出变量,然后我想通过组态王软件访问这些变量获取它们的值。组态王要读取DB块中的数据。我就在FB块对应的DB里面增加了这些变量,但是程序运行的时候,…

    2017年8月15日
  • S7-1200和MP277-8“的连接

    1. 请问S7-1200系列CPU 1214C DC/DC/Rly(6ES7 214-1HE30-0XB0)的PLC是否可以和MP&nbsp…

    2017年11月4日
  • 博图在打开项目时显示应用程序出现问题

    博图在打开项目时显示应用程序出现问题,需关闭或者重启。 图片说明:    最佳答案 将所有的路径都改为英文的试试,个人感觉在线修改过多内容过多容易出现&nbsp…

    2017年10月29日
  • 与威纶通屏通讯不上

    各位大侠,我现在用的1215C的PLC和威纶通屏MT8071iE 的屏怎么都连不上。 保护那块也勾选了, 优化块的访问也取消了。 昨天整了一…

    2017年6月6日
  • 模拟信号隔离模块的使用

    PLC与PLC之间传输的4-20mA信号,PLC输出到变频器的4-20mA信号需要用隔离模块吗? 最佳答案 隔离模块只是起到保护模块,防止信号干扰的作用,隔离的作用,用上最好,不用…

    SIMATIC S7-1200 2021年7月5日
  • 设备里检测不到CB 1241

    在S7 1200CPU上安装了CB 1241模块,但是在软件上检测不到这个模块,这是为什么? 图片说明:       最…

    2017年6月1日
  • MODBUS ASCⅡ协议通信块

    请问一下,1200与第三方设备通过MODBUS ASCⅡ协议通信,该调用哪个通信块?软件中的都是MODBUS RTU协议的通信块 图片说明:  &nb…

    2017年6月1日