VARIANT (S7-1200, S7-1500) EQ_Type:比较数据类型与变量数据类型是否“相等” (S7-1200, S7-1500) 说明 可以使用“比较数据类型与变量数据类型是否“相等””指令查询 VARIANT 所指向变量的 数据类型。比较在块接口中声明的变量(<操作数 1>)的数据类型与变量(<操作数 2>)的 数据类型,确定这两者是否“相等”。 <操作数 1> 的数据类型必须为 VARIANT;<操作数 2> 可以为基本数据类型或 PLC 数据类型。 如果满足比较条件,则该指令返回逻辑运算结果 (RLO)“1”。如果不满足比较条件,则该指令 返回 RLO“0”。该指令的 RLO 将按照以下方式与整个程序段的 RLO 进行逻辑运算: • 串联比较指令时,将执行“与”运算。 • 并联比较指令时,将进行“或”运算。 在该指令上方的操作数占位符中,指定 <操作数 1>。在该指令下方的操作数占位符中,指定 < 操作数 2>。 比较定时器、日期和时间 并非所有时间类型都可以直接相互比较,如 S5TIME。此时,需要将其显式转换为其它时间 类型(如,TIME),然后再进行比较。 如果要比较不同数据类型的日期和时间,则需将较小的日期或时间数据类型显式转换为较大 的日期或时间数据类型。例如,比较日期和时间数据类型 DATE 和 DTL 时,将基于 DTL 进行 比较。 如果显式转换失败,则比较结果为 FALSE。 比较结构 要比较结构,可使用指令“CMP ==”。匿名结构通常无法编辑,除非是同一个 ARRAY 的某个 部分。
CMP <:小于 (S7-1200, S7-1500) 说明 可以使用“小于”指令判断第一个比较值(<操作数 1>)是否小于第二个比较值(<操作数 2>)。要比较的两个值必须为相同的数据类型。 如果满足比较条件,则指令返回逻辑运算结果 (RLO)“1”。如果不满足比较条件,则该指令返 回 RLO“0”。该指令的 RLO 通过以下方式与整个程序段中的 RLO 进行逻辑运算: • 串联比较指令时,将执行“与”运算。 • 并联比较指令时,将进行“或”运算。 在指令上方的操作数占位符中指定第一个比较值(<操作数 1>)。在指令下方的操作数占位 符中指定第二个比较值(<操作数 2>)。 比较字符串 在比较字符串时,通过字符的代码比较各字符(例如“a”大于“A”)。从左到右执行比较。第 一个不同的字符决定比较结果。如果较长字符串的左侧部分和较短字符串相同,则认为较短 字符串更小。 下表举例说明了字符串的比较:
此外,也可以对字符串中的各个字符进行比较。在操作数名称旁的方括号内,指定了待比较 的字符位数。例如,“MyString[2]”与“MyString”字符串的第二个字符进行比较。 说明 即使执行“inactive”指令,仍会显示状态 请注意以下要求: • 执行指令“CMP <:小于”(数据类型 STRING、WSTRING 或 VARIANT)之前,系统将查询程 序段中的条件(如,常开触点的值)。 • “开启监视”已启用。 • 该条件的新结果将程序段复位为 FALSE。指令“CMP <:小于”将取消激活。 结果: 对于指令“CMP <:小于”(数据类型 STRING、WSTRING 或 VARIANT),程序段中仍然显示 之前的状态。 仅当关闭“开启监视”功能后再重新启用或移动到其它程序段中时,指令“CMP <:小 于”(数据类型 STRING、WSTRING 或 VARIANT)的状态才会正确显示。指令“CMP <:小 于”将在程序段中灰显为取消激活状态。 比较定时器、日期和时间 比较时间值时,如果 <操作数 1> 中的时间点小于(早于)<操作数 2> 中的时间点,则该指 令的 RLO 为“1” 并非所有时间类型都可以直接相互比较,如 S5TIME。此时,需要将其显式转换为其它时间 类型(如,TIME),然后再进行比较。 如果要比较不同数据类型的日期和时间,则需将较小的日期或时间数据类型显式转换为较大 的日期或时间数据类型。例如,比较日期和时间数据类型 DATE 和 DTL 时,将基于 DTL 进行 比较。 如果显式转换失败,则比较结果为 FALSE。 比较 WORD 数据类型的变量与 S5TIME 数据类型的变量 将 WORD 数类型的变量与 S5TIME 数据类型的变量进行比较时,这两种变量都将转换为 TIME 数据类型。WORD 变量将解释为一个 S5TIME 值。如果这两个变量中的某个变量无法转换, 则不进行比较且输出结果 FALSE。如果转换成功,则系统将基于所选的比较指令进行比较操 作。IN_RANGE:值在范围内 (S7-1200, S7-1500) 说明 可以使用“值在范围内”指令查询输入 VAL 的值是否在指定的取值范围内。 使用输入 MIN 和 MAX 可以指定取值范围的限值。“值在范围内”指令将输入 VAL 的值与输 入 MIN 和 MAX 的值进行比较,并将结果发送到功能框输出中。如果输入 VAL 的值满足 MIN <= VAL 或 VAL <=MAX 比较条件,则功能框输出的信号状态为“1”。如果不满足比较条件,则 功能框输出的信号状态为“0”。 如果功能框输入的信号状态为“0”,则不执行“值在范围内”指令。 只有待比较值的数据类型相同且互连了功能框输入时,才能执行该比较功能。OUT_RANGE:值超出范围 (S7-1200, S7-1500) 说明 可以使用“值超出范围”指令查询输入 VAL 的值是否超出指定的取值范围。 使用输入 MIN 和 MAX 可以指定取值范围的限值。“值超出范围”指令将输入 VAL 的值与输 入 MIN 和 MAX 的值进行比较,并将结果发送到功能框输出中。如果输入 VAL 的值满足 MIN > VAL 或 VAL >MAX 比较条件,则功能框输出的信号状态为“1”。如果指定的 REAL 数据类型 的操作数具有无效值,则功能框输出的信号状态也为“1”。 如果输入 VAL 的值不满足 MIN > VAL 或 VAL > MAX 的条件,则功能框输出返回信号状态“0”。 如果功能框输入的信号状态为“0”,则不执行“值超出范围”指令。 只有待比较值的数据类型相同且互连了功能框输入时,才能执行该比较功能。检查有效性 (S7-1200, S7-1500) 说明 可使用“检查有效性”指令检查操作数的值(<操作数>)是否为有效的浮点数。如果该指 令输入的信号状态为“1”,则在每个程序周期内都进行检查。 查询时,如果操作数的值是有效浮点数且指令的信号状态为“1”,则该指令输出的信号状态为 “1”。在其它任何情况下,“检查有效性”指令输出的信号状态都为“0”。 可以同时使用“检查有效性”指令和 EN 机制。如果将该指令功能框连接到 EN 使能输入,则 仅在值的有效性查询结果为正数时才置位使能输入。使用该功能,可确保仅在指定操作数的 值为有效浮点数时才启用该指令。检查无效性 (S7-1200, S7-1500) 说明 可使用“检查无效性”指令检查操作数的值(<操作数>)是否为无效的浮点数。如果该指 令输入的信号状态为“1”,则在每个程序周期内都进行检查。 查询时,如果操作数的值是无效浮点数且指令的信号状态为“1”,则该指令输出的信号状态为 “1”。在其它任何情况下,“检查无效性”指令输出的信号状态都为“0”。NE_Type:比较数据类型与变量数据类型是否“不相等” (S7-1200, S7-1500) 说明 可以使用“比较数据类型与变量数据类型是否“不相等””指令,查询 VARIANT 指向而变 量中未包含的数据类型。比较在块接口中声明的变量(<操作数 1>)的数据类型与变量(<操 作数 2>)的数据类型,确定这两者是否“不相等”。 <操作数 1> 的数据类型必须为 VARIANT;<操作数 2> 可以为基本数据类型或 PLC 数据类型。 如果满足比较条件,则该指令返回逻辑运算结果 (RLO)“1”。如果不满足比较条件,则该指令 返回 RLO“0”。该指令的 RLO 将按照以下方式与整个程序段的 RLO 进行逻辑运算: • 串联比较指令时,将执行“与”运算。 • 并联比较指令时,将进行“或”运算。 在该指令上方的操作数占位符中,指定 <操作数 1>。在该指令下方的操作数占位符中,指定 < 操作数 2>。 比较定时器、日期和时间 并非所有时间类型都可以直接相互比较,如 S5TIME。此时,需要将其显式转换为其它时间 类型(如,TIME),然后再进行比较。 如果要比较不同数据类型的日期和时间,则需将较小的日期或时间数据类型显式转换为较大 的日期或时间数据类型。例如,比较日期和时间数据类型 DATE 和 DTL 时,将基于 DTL 进行 比较。 如果显式转换失败,则比较结果为 FALSE。 比较结构 要比较结构,可使用指令“CMP <>”。匿名结构通常无法编辑,除非是同一个 ARRAY 的某个 部分。EQ_ElemType:比较 ARRAY 元素数据类型与变量数据类型是否“相等” (S7-1200, S7-1500) 说明 可以使用“比较 ARRAY 元素数据类型与变量数据类型是否“相等””指令查询 VARIANT 指 向的变量的数据类型。比较在块接口中声明的变量(<操作数 1>)的数据类型与变量(<操 作数 2>)的数据类型,确定这两者是否“相等”。 <操作数 1> 的数据类型必须为 VARIANT;<操作数 2> 可以为基本数据类型或 PLC 数据类型。 如果 VARIANT 变量(<操作数 1>)的数据类型是 ARRAY,将比较 ARRAY 元素的数据类型。 如果满足比较条件,则该指令返回逻辑运算结果 (RLO)“1”。如果不满足比较条件,则该指令 返回 RLO“0”。该指令的 RLO 将按照以下方式与整个程序段的 RLO 进行逻辑运算: • 串联比较指令时,将执行“与”运算。 • 并联比较指令时,将进行“或”运算。 在该指令上方的操作数占位符中,指定 <操作数 1>。在该指令下方的操作数占位符中,指定 < 操作数 2>。 比较定时器、日期和时间 并非所有时间类型都可以直接相互比较,如 S5TIME。此时,需要将其显式转换为其它时间 类型(如,TIME),然后再进行比较。 如果要比较不同数据类型的日期和时间,则需将较小的日期或时间数据类型显式转换为较大 的日期或时间数据类型。例如,比较日期和时间数据类型 DATE 和 DTL 时,将基于 DTL 进行 比较。 如果显式转换失败,则比较结果为 FALSE。