今天,看到有人问关于西门子博途中的DB_ANY数据类型的相关问题,那么索性谈谈自己对西门子博途中DB_ANY数据类型的使用心得。
西门子博途中的DB_ANY 数据类型主要是用来标识任意数据块的。对于西门子最新的S7-1200/1500 系列的PLC来说,可以用来选择访问编程期间尚不可用的数据块,但是300/400系列的PLC没有用过,不知道是否支持。所以,在访问块的接口时,需要先创建一个 块参数,数据类型为DB_ANY 数据类型。其中数据块名称或先前分配给数据块名称的 DB_ANY 数据类型的变量将在运行期间传送到此参数中。然后通过以下指令,处理数据块中用符号表示的内容。
VARIANT_TO_DB_ANY:将 VARIANT 转换为 DB_ANY
DB_ANY_TO_VARIANT:将 DB_ANY 转换为 VARIANT
有关这些指令的更多信息,请参见“基本指令 > STL/SCL > 转换操作 > VARIANT”(Basic instructions > STL/SCL > Conversion operations > VARIANT)。
该过程具有以下优势:不需要知道将要处理的数据块就能创建程序代码。
另外关于ANY数据类型,在编程语言 SCL 和 STL 中,如果在块参数中设定了一个 ANY 指针,则任意类型的存储器都可以在块调用时传递。但是,ANY 指针不能存储有关存储器结构的任何信息。例如,ANY 指针不能保存指向 PLC数据类型变量的信息。ANY 指针将其作为 BYTE 类型的 ARRAY。
ANY 数据类型的参数可以被传递到系统函数块 (SFB) 或系统函数 (SFC)。
ANY数据类型允许用作FB和FC的形式输入参数、输入/输出参数,及FC的输出参数。常量不允许用作其实际参数或用在其赋值语句的右边,除NIL常量外。
当调用FB或FC时,如果将临时变量用作ANY类型的形式参数,不能传递参数到远程块,传递他们时临时变量将失效。
这种类型变量不能用作结构类型的组件类型或作为数组的元素类型。
当调用FC或FB时,如果形式参数作为输入参数声明,只能指定过程输入(%PEW)给ANY类型的形式参数。
当调用FB时,如果形式参数作为输出参数声明,只能指定过程输出(%PAW)给ANY类型的形式参数。
就简单说这么多,自己用的也不是很多,望大家指正并补充