七十二变的孙悟空──VARIANT_第1页
七十二变的孙悟空──VARIANT_第2页
七十二变的孙悟空──VARIANT_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本文格式为Word版,下载可任意编辑七十二变的孙悟空VARIANT 在S7-1200/1500的数据类型中,VARIANT是不太好理解的。请看它的在线关心:“VARIANT 类型的参数是一个可以指向不同数据类型变量(而不是实例)的指针。 VARIANT 指针可以是基本数据类型(例如,INT 或 REAL)的对象。 还可以是 STRING、DTL、STRUCT 类型的 ARRAY、UDT、UDT 类型的 ARRAY。 VARIANT 指针可以识别结构,并指向各个结构元素。VARIANT 数据类型的操作数不占用背景数据块或工作存储器中的空间。但是,将占用 CPU 上的存储空间。”“VARIANT

2、类型的变量不是一个对象,而是对另一个对象的引用。 在函数的块接口中的 VAR_IN、VAR_IN_OUT 和 VAR_TEMP 部分中,VARIANT 类型的单个元素只能声明为形参。 因此,不能在数据块或函数块的块接口静态部分中声明,例如,由于各元素的大小未知。 所引用对象的大小可以更改。”“可使用 VARIANT 来生成常规函数块或函数。 调用某个块时,可以将该块的参数连接到任何数据类型的变量。 调用某个块时,除了传递变量的指针外,还会传递变量的类型信息。 块代码随后可以依据运行期间传递的变量类型来执行。”英语词典对Variant的解释:变体、多样的。百度中的解释:“在VB中,Variant

3、 数据类型是全部没被显式声明(例如 Dim、Private、Public 或 Static等语句)为其他类型变量的数据类型。”下面是我做的试验:在一个项目中生成一个全局数据块“数据块_1”,在数据块中生成一些复合数据类型的变量(见下图)。生成FB1,其输入参数“变体”的数据类型为Variant。在OB1中调用FB1,试验表明,可以将输入参数“变体”的实参设置为简洁数据类型的变量,还可以设置为数据块_1中的字符串、数组1、结构1、结构1中的元素,结构1.数组2和它的元素,数据类型为DTL的“日时”和它的元素,结构1.时间和它的元素,但是不能将“变体”的实参设置为字符串“串1”中的元素。试验可知,

4、在FB的接口区,可以生成Input、InOut和Temp类型的Variant变量,但是不能生成Output和Static类型的Variant变量。做过试验后,就比较好理解在线关心中的话了。下面是我对VARIANT的理解:1)VARIANT是可以指向不同数据类型的变量的指针。它几乎可以指向全部的变量。数据类型ANY的功能够强大了,它可以指向几乎全部的简洁数据类型,和连续的地址区,但是不能像VARIANT一样,指向复合数据类型。VARIANT比ANY(任意)还要ANY,简直就是一个七十二变的孙悟空!2)由于VARIANT 数据类型的操作数的“实际”数据类型是可变的,甚至其实参“各元素的大小未知。所

5、引用对象的大小可以更改。”全部它不像Pointer和ANY那样,其实参有固定的字节数,所以“VARIANT 数据类型的操作数不占用背景数据块或工作存储器中的空间。”3)“除了传递变量的指针外,(VARIANT)还会传递变量的类型信息。”以VARIANT变量“百变”的实参“"数据块_1".结构1.时间.HOUR”(DB2.DBB53)为例,它包含了变量的地址和各级的数据类型。4)假如变量的实参是复合数据类型(包括多层嵌套的复合数据类型)或它的元素,或者变量或元素的大小可变,必需使用VARIANT指针。在S7-1500硬件平台下,VARIANT 已经完全可以替代ANY的功能了。VARIANT 常用相关指令有1;检查数据类型TypeOf,TypeOfElements,EQ_Type,NE_Type,EQ_ElemType,NE_ElemType2:数组相关指令IS_ARRAY,CountOfElements3 读写VARIANT指向的数据VariantGet,VariantPu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论