[西门子] 西门子博途:VARIANT_TO_DB_ANY:将 VARIANT 转换为 DB_ANY

[复制链接]
查看293 | 回复0 | 2024-6-9 21:07:17 | 显示全部楼层 |阅读模式
>

说明
可以使用指令“将 VARIANT 转换为 DB_ANY”查询 IN 参数地址指定的操作数的数据块编号。它可以是背景数据块或 ARRAY 数据块。IN 参数的操作数具有数据类型 VARIANT,这意味着在创建程序时不需要知道将被查询编号的数据块的数据类型。在运行期间将会读取数据块编号,并将其写入 RET_VAL 参数指定的操作数。


要求
如果满足条件,则执行该指令。如果不满足条件,则输出“0”作为数据块编号。




输出变量...
转换结果...
转换选项
VARIANT
... 作为 PLC 数据类型或系统数据类型 (SDT) 的背景数据块的数据块。
可以将该输出变量转换为数据块编号。
VARIANT
... 作为 ARRAY 数据块的数据块。
可以将该输出变量转换为数据块编号。
VARIANT
... 带有基本数据类型的对象
由于数据块中并不仅仅只包含一个基本数据类型,因此无法将该输出变量转换为数据库编号。
VARIANT
... 数据块中的结构
由于该结构仅仅是数据块中的一部分,因此无法将该输出变量转换为数据库编号。


参数
下表列出了该指令的参数:




参数
声明
数据类型
存储区
说明
IN
Input
VARIANT
L(可在块接口的“Input”、“InOut”和“Temp”部分进行声明。)
待读取的变量(“DB_ANY_TO_VARIANT”指令的函数值)。IN 参数处可使用全局变量或局部变量。
ERR
Output
INT
I、Q、M、D、L
错误信息
函数值 (RET_VAL)
DB_ANY
I、Q、M、D、L
结果:背景数据块的编号


有关有效数据类型的更多信息,请参见“另请参见”。
ERR 参数
下表列出了 ERR 参数值的含义:


错误代码*
(W#16#...)
说明
0000
无错误
252C
IN 参数的 VARIANT 数据类型的值为“0”,并且 CPU 更改为 STOP 模式。
80B4
存储在 ARRAY 数据块中的元素数据类型与 VARIANT 中传输的元素数据类型不匹配。
8130
IN 参数的数据类型为 ANY。
8131
数据块不存在、太短或位于装载存储器中。
8132
该数据块太短且不是 ARRAY 数据块。
8150
参数 IN 中数据类型 VARIANT 的值为“0”。要接收此错误消息,必须激活“在块内处理错误”块属性。否则 CPU 将更改为 STOP 模式并发送错误代码 16#252C。
8153
IN 参数的 VARIANT 数据类型不指向 ARRAY 数据块的起点,或者 VARIANT 的长度与数据块的长度不匹配。
8154
该数据块的数据类型不正确。
* 在程序编辑器中,错误代码可显示为整数或十六进制值。有关切换显示格式的更多信息,请参见“另请参见”。


示例
以下示例说明了该指令的工作原理:
SCL
"OutputDBNumber" := VARIANT_TO_DB_ANY(IN := #tempVARIANT,
ERR := "Tag_Error");


下表将通过具体的操作数值对该指令的工作原理进行说明:


参数
块接口中的声明
操作数

IN
Input
tempVARIANT
-
<函数值>
Output
OutputDBNumber
11


读取 tempVARIANT 操作数中指定的数据块的编号。由于操作数具有数据类型 VARIANT,所以在创建程序时不需要知道变量的数据类型。编号将写入具有 DB_ANY 数据类型的“OutputDBNumber”变量。







免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则