比较定时器、日期和时间并非所有时间类型都可以直接相互比较,如 S5TIME。此时,需要将其显式转换为其它时间 类型(如,TIME),然后再进行比较。如果要比较不同数据类型的日期和时间,则需将较小的日期或时间数据类型显式转换为较大 的日期或时间数据类型。例如,比较日期和时间数据类型DATE 和 DTL 时,将基于 DTL 进行 比较。 如果显式转换失败,则比较结果为 FALSE。 比较结构要比较结构,可使用指令“CMP <>”。匿名结构通常无法编辑,除非是同一个 ARRAY 的某个 部分。
E:比较ARRAY 元素数据类型与变量数据类型是否“相等” (S7-1200, S7-1500) 说明 可以使用“比较 ARRAY元素数据类型与变量数据类型是否“相等””指令查询 VARIANT 指 向的变量的数据类型。比较块接口中声明的 IN1参数变量的数据类型与 IN2 参数变量的数据 类型,确定这两者是否“相等”。 IN1 参数的变量必须为 VARIANT数据类型。IN2 参数的变量可以是基本数据类型或 PLC 数据 类型。 如果 VARIANT 变量的数据类型为 ARRAY,将比较ARRAY 元素的数据类型。 如果满足比较条件,则该指令返回逻辑运算结果 (RLO)“1”。如果不满足比较条件,则该指令 返回RLO“0”。 比较定时器、日期和时间 并非所有时间类型都可以直接相互比较,如 S5TIME。此时,需要将其显式转换为其它时间类型(如,TIME),然后再进行比较。 如果要比较不同数据类型的日期和时间,则需将较小的日期或时间数据类型显式转换为较大的日期或时间数据类型。例如,比较日期和时间数据类型 DATE 和 DTL 时,将基于 DTL 进行 比较。如果显式转换失败,则比较结果为 FALSE。 比较结构 要比较结构,可使用指令“CMP ==”。匿名结构通常无法编辑,除非是同一个ARRAY 的某个 部分。NE_ElemType:比较 ARRAY 元素数据类型与变量数据类型是否“不相等” (S7-1200,S7-1500) 说明 可以使用“比较 ARRAY 元素数据类型与变量数据类型是否“不相等””指令查询 VARIANT 指向的变量没有的数据类型。比较在块接口中声明的 IN1 参数一个变量的数据类型与 IN2 参数一个变量的数据类型,确定这两者是否“不相等”。 IN1 参数的变量必须为 VARIANT 数据类型。IN2参数的变量可以是基本数据类型或 PLC 数据 类型。 如果 VARIANT 变量的数据类型为 ARRAY,将比较 ARRAY元素的数据类型。 如果满足比较条件,则该指令返回逻辑运算结果 (RLO)“1”。如果不满足比较条件,则该指令 返回 RLO“0”。比较定时器、日期和时间 并非所有时间类型都可以直接相互比较,如 S5TIME。此时,需要将其显式转换为其它时间类型(如,TIME),然后再进行比较。 如果要比较不同数据类型的日期和时间,则需将较小的日期或时间数据类型显式转换为较大的日期或时间数据类型。例如,比较日期和时间数据类型 DATE 和 DTL 时,将基于 DTL 进行 比较。如果显式转换失败,则比较结果为 FALSE。 比较结构 要比较结构,可使用指令“CMP<>”。匿名结构通常无法编辑,除非是同一个 ARRAY 的某个 部分。IS_NULL:检查 EQUALS NULL 指针(S7-1200, S7-1500) 说明 使用指令“检查 EQUALS NULL 指针”,可查询 VARIANT 或引用是否指向一个NULL 指针, 而非指向一个对象。 <操作数> 的数据类型必须为 VARIANT 或 REF_TO<数据类型>。 说明 VARIANT 变量指向 ANY 指针 如果 VARIANT 变量指向 ANY指针,指令始终会返回结果 RLO =“0”,即使 ANY 指针为 NULL。NOT_NULL:检查 UNEQUALS NULL 指针(S7-1200, S7-1500) 说明 使用指令“检查 UNEQUALS NULL 指针”,可查询 VARIANT或引用是否未指向一个 NULL 指 针,而指向一个对象。 <操作数> 的数据类型必须为 VARIANT 或 REF_TO<数据类型>。 说明 VARIANT 变量指向 ANY 指针 如果 VARIANT 变量指向 ANY指针,指令始终会返回结果 RLO =“1”,即使 ANY 指针为 NULL。IS_ARRAY:检查 ARRAY (S7-1200,S7-1500) 说明 可以使用“检查 ARRAY”指令查询 VARIANT 是否指向 ARRAY 数据类型的变量。<操作数> 必须为 VARIANT 数据类型。检查 ARRAY 数据块 如果 IS_ARRAY 指令中使用 ArrayDB并通过 DB_ANY_TO_VARIANT 生成输入参数 VARIANT, 则程序中需使用 ArrayDB 符号作为数据类型为VARIANT 的形参的实参。只需下载使用点即 可正常运行,而无需执行该使用点。E:比较 EQUAL 间接寻址DB 的数据类型与某种数据类型 (S7-1200, S7-1500) 说明 指令“比较 EQUAL 间接寻址 DB的数据类型与某种数据类型”用于查询某个数据块的数据 类型,该数据块由 DB_ANY 数据类型变量进行寻址。参数 IN1处由该变量寻址的 DB 数据类 型,可与另一个变量的数据类型进行比较,也可以直接与“Equal”中参数 IN2 的数据类型进行 比较。参数 IN1 处该变量必须为 DB_ANY 数据类型。例如,参数 IN2 处该变量可以是 PLC 数据类型、 系统数据类型、轴或FB。NE_TypeOfDB:比较 UNEQUAL 间接寻址 DB 的数据类型与某种数据类型 (S7-1200, S7-1500)说明 指令“比较 NOT EQUAL 间接寻址 DB 的数据类型与某种数据类型”用于查询用于查询某个数据块不具有的数据类型,该数据块由 DB_ANY 数据类型变量进行寻址。参数 IN1 处由该变 量寻址的 DB数据类型,可与另一个变量的数据类型进行比较,也可以直接与“Not equall”中 参数 IN2 的数据类型进行比较。 参数 IN1处该变量必须为 DB_ANY 数据类型。例如,参数 IN2 处该变量可以是 PLC 数据类型、 系统数据类型、轴或 FB。如果满足比较条件,则该指令返回逻辑运算结果 (RLO)“1”。如果不满足比较条件,则该指令 返回 RLO“0”。数学函数(S7-1200, S7-1500) CALCULATE:计算 (S7-1200, S7-1500) 说明可以使用“计算”指令定义并执行表达式,根据所选数据类型计算数学运算或复杂逻辑运算。可以从指令框的“???”下拉列表中选择该指令的数据类型。根据所选数据类型,可以组合特定指令的功能,以执行复杂计算。将在一个对话框中指定待计算的表达式,单击指令框上方的“计算器”图标可打开该对话框。表达式可以包含输入参数的名称和指令的语法。不允许指定操作数名称或操作数地址。在初始状态下,指令框至少包含两个输入(IN1 和 IN2)。可以扩展输入数目。在功能框中按升序对插入的输入编号。 输入的值可用于执行特定表达式。不是所有定义的输入都必须用于表达式。该指令的结果传 送到功能框输出 OUT中。 说明 如果表达式中的一个数学运算失败,则没有结果传送到输出 OUT,并且使能输出 ENO 返回 信号状态“1”。在表达式中,如果使用功能框中不可用的输入,则将自动插入这些输入。这要求表达式中新 定义的输入编号是连续的。例如,如果未定义输入IN3,则无法在表达式中使用输入 IN4。 如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”: • 使能输入 EN的信号状态为“0”。 • “计算”指令的结果或中间结果超出输出 OUT 所指定的数据类型允许的范围。 • 浮点数的值无效。 •执行表达式中指定的指令之一时出错。下表根据所选数据类型,列出了可以在“计算”指令的表达式中组合和执行的指令:如果“Tag_Input”的信号状态为“1”,则执行该指令。将操作数“Tag_Value_1”的值与操作数“Tag_Value_2”的值相加。和值与操作数“Tag_Value_3”的值相乘。乘积除以操作数“Tag_Value_4”的值。求得的商作为Zui终结果传送到操作数“Tag_Result”中,并复制到该指令 的输出 OUT中。如果各个指令执行期间未发生错误,则输出 ENO 和操作数“Tag_Output”都 设置为“1”。ADD:加 (S7-1200,S7-1500) 说明 可以使用“加”指令,将输入 IN1 的值与输入 IN2 的值相加,并在输出 OUT (OUT :=IN1+IN2) 处查询总和。 在初始状态下,指令框至少包含两个输入(IN1 和 IN2)。可以扩展输入数目。在功能框中按升序对插入的输入编号。在该指令执行期间,会将所有可用输入参数的值相加。和值存储 在输出“OUT”中。如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”: • 使能输入 EN 的信号状态为“0”。 • 该指令的结果超出输出OUT 指定的数据类型的允许范围。 •浮点数的值无效。如果操作数“TagIn”的信号状态为“1”,则执行该指令。将操作数“Tag_Value1”的值与操作数“Tag_Value2”的值相加。相加结果存储在操作数“Tag_Result”中。如果该指令执行成功,则使 能输出 ENO的信号状态为“1”,同时置位输出“TagOut”。SUB:减 (S7-1200, S7-1500) 说明 可以使用“减”指令,从输入IN1 的值中减去输入 IN2 的值,并在输出 OUT (OUT := IN1-IN2) 处查询差值。如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”: • 使能输入 EN 的信号状态为“0”。 • 该指令的结果超出输出OUT 指定的数据类型的允许范围。 • 浮点数的值无效。