[西门子] SCL语言中的比较指令

[复制链接]
查看147 | 回复0 | 2024-10-29 16:09:56 | 显示全部楼层 |阅读模式

SCL语言中的比较指令

TypeOf:检查 VARIANT 变量的数据类型

可以使用“检查 VARIANT 变量的数据类型”指令查询 VARIANT 变量所指向的变量的数据类型。可以将块接口中声明的数据类型与其它变量的数据类型或一个直接数据类型进行比较,以确定它们是“相等”还是“不相等”。

比较操作数可以是基本数据类型或 PLC 数据类型。

在 IF 或 CASE 指令中,只能使用“检查 VARIANT 变量的数据类型”指令。

以下示例说明了与其它变量的比较:

IF TypeOf(#TagVARIANT) = TypeOf("TagBYTE") THEN

...;

END_IF;

以下示例说明了与某个数据类型的比较:

IF TypeOf(#TagVARIANT) = BYTE THEN

...;

END_IF;

TypeOfElements:检查 VARIANT 变量的 ARRAY 元素的数据类型

可以使用“检查 VARIANT 变量的 ARRAY 元素的数据类型”指令查询 VARIANT 变量所指向的变量的数据类型。比较变量的数据类型与在块接口中声明的变量的数据类型,确定这两者是“相等”还是“不相等”。

操作数必须具有 VARIANT 数据类型。比较操作数可以是基本数据类型或 PLC 数据类型。

如果 VARIANT 变量的数据类型为 ARRAY,将比较 ARRAY 元素的数据类型。

在 IF 或 CASE 指令中,只能使用指令“检查 VARIANT 变量中 ARRAY 元素的数据类型”。

以下示例说明了该指令的工作原理:

IF TypeOfElements("Tag_Variant") =TypeOF("GlobalDB".Product[1]) THEN

"Tag_Variant" :="GlobalDB".Product[1] * 3;

END_IF;

IS_ARRAY:检查 ARRAY

可以使用“检查 ARRAY”指令查询 VARIANT 是否指向 ARRAY 数据类型的变量。

只能使用 IF 指令中的“检查 ARRAY”指令。

检查 ARRAY 数据块

如果 IS_ARRAY 指令中使用 ArrayDB 并通过 DB_ANY_TO_VARIANT 生成输入参数 VARIANT,则程序中需使用 ArrayDB 符号作为数据类型为 VARIANT 的形参的实参。只需下载使用点即可正常运行,而无需执行该使用点。

以下示例说明了该指令的工作原理:

IF IS_ARRAY(#Tag_VARIANTToArray) THEN

"Tag_Result" :=CountOfElements(#Tag_VARIANTToArray);

END_IF;

如果 VARIANT 指向的变量是 ARRAY,将输出 ARRAY 元素的数量。

TypeOfDB:查询 DB 的数据类型

指令“查询 DB 的数据类型”用于查询某个数据块的数据类型,该数据块由 DB_ANY 数据类型变量进行寻址。由变量寻址的 DB 的数据类型可与另一个变量的数据类型进行比较,也可以直接与“Equal”或“Not equal”中的某个数据类型进行比较。

该变量必须为 DB_ANY 数据类型。例如,比较操作数可以是 PLC 数据类型、系统数据类型、轴或 FB。

在 IF 或 CASE 指令中,只能使用指令“查询 DB 的数据类型”。

以下示例说明了该指令的工作原理:

// 如果寻址 DB 的操作数 #InputDBAny 操作数的数据类型等于 TO_SpeedAxis 数据类型,则置位输出“TagOut”。

满足以下条件时,不置位输出“TagOut”:

数据块的编号为“0”。

数据块不存在。

该数据块是一个 ARRAY 数据块。

数据块包含数据类型 UDT(PLC 数据类型)的变量。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则