有关扩展指令的一般注意事项 (S7-1200, S7-1500) 具有 I/O 访问功能的指令的 LADDR输入参数 (S7-1200, S7-1500) 选择 LADDR 输入参数 很多访问 I/O 设备的扩展指令都包含 LADDR输入参数。其数据类型为 HW_IO,并包含将由 指令处理的硬件对象的硬件标识符。硬件标识符将由网络视图中的硬件对象属性、或默认变量表的“系统常量”(System constants) 选项卡获取。如果为硬件标识符选择其它值,通常会收到下列非 0 错误代码之一,具体见下例: • 8090:在 LADDR参数中指定的地址无效(WR_REC、RD_REC)。 • 8091:使用 LADDR 参数寻址的硬件组件不存在 (LED)。 •8093:不允许为 LADDR 中指定的硬件 ID 使用该指令(WR_REC、RD_REC)。 有些 CPU内部对象的硬件标识符不会显示出来,例如默认变量表的“系统常量”(System constant)选项卡中的对象。如果随机选择此类硬件标识符并在 LADDR 参数中指定该硬件标 识符,则既无法保证输出非 0错误代码,也无法保证指令正确执行。 强烈建议仅将数值分配给网络视图中的硬件对象属性、或默认变量表的“系统常 量”(Systemconstants) 选项卡中显示的 LADDR 参数。yongjiu设置为 0 (S7-1200, S7-1500) 说明动作“R:yongjiu设置为 0”将结果输入处的信号状态设置为“0”。所分配的原因变为未 激活,该信号状态仍保持为“0”。在交叉点列中,动作“S:yongjiu设置为 1”和“R:yongjiu设置为 0”始终成对使用。动作“S”将信号 状态设置为1,之后动作“R”将信号状态重新设置为“0”。 示例 以下示例说明了该动作的工作原理。该示例显示了三个连续周期。为简化起见,结果是水平对齐的。
日期和时间(S7-1200, S7-1500) T_COMP:比较时间变量 (S7-1500) 说明此指令用于对数据类型为“定时器”或“日期和时间”的两个变量的内容进行比较。 该指令支持以下数据类型的比较:DATE, TIME,LTIME, TOD (TIME_OF_DAY), LTOD (LTIME_OF_DAY), DT (DATE_AND_TIME),LDT (DATE_AND_LTIME), DTL、S5Time。 要进行比较,数据类型的长度和格式必须相同。 比较的结果将在 OUT参数中作为返回值输出。为此,在满足比较条件时,参数 OUT 将置位为 “1”。 可通过以下几种方式进行比较: 符号 说明 EQ如果参数 IN1 和 IN2 的时间点相同,则返回值的信号状态为“1”。 NE 如果参数 IN1 和 IN2的时间点不同,则返回值的信号状态为“1”。 GE 如果参数 IN1 的时间点大于(晚于)或等于参数 IN2的时间点,则返回值的信号状态为“1”。 LE 如果参数 IN1 的时间点小于(晚于)或等于参数 IN2的时间点,则返回值的信号状态为“1”。 GT 如果参数 IN1 的时间点大于(早于)参数 IN2的时间点,则返回值的信号状态为“1”。 LT 如果参数 IN1 的时间点小于(晚于)参数 IN2的时间点,则返回值的信号状态为“1”。下表列出了“T_COMP”指令的参数: 参数 声明 数据类型 存储区 说明 IN1 InputDATE, TIME, LTIME, TOD, LTOD, DT, LDT, DTL, S5Time I、Q、M、D、L、P 或常量待比较的第一个值。 IN2 Input DATE, TIME, LTIME, TOD, LTOD, DT, LDT, DTL,S5Time I、Q、M、D、L、P 或常量 待比较的第二个值。 OUT Output BOOL I、Q、M、D、L、P 返回值有关有效数据类型的更多信息,请参见“有效数据类型概述 (页 255)”。 示例在以下示例中,可以使用“大于或等于”(Greater or equal) 比较选项比较两个 LTIME 数据类 型的时间。在全局数据块中,创建 3个变量进行数据存储。由于第一个待比较的时间值(“timeValue1”)大于或等于第二个值(“timeValue2”),返回值(“value1GEvalue2”)显示信号状态“TRUE”。有关上述示例的更多信息和程序代码,请参见“SampleLibrary for Instructions (页 713)” T_CONV:转换时间并提取 (S7-1200,S7-1500) 说明 使用指令“T_CONV”将 IN 输入参数的数据类型转换为 OUT 输出上输出的数据类型。从输入和输出的指令框中选择进行转换的数据格式。 参数 下表列出了“T_CONV”指令的参数:如果使用了相同数据类型的输入和输出参数,则该指令将复制对应值。 参数 声明 数据类型 存储区 说明 S7-1200 S7-1500 IN Input 整数、TIME、 日期和时间*WORD、整 数、时间、 日期和时间* I、Q、M、D、 L、P 或常量 要转换的值 OUT Return 整数、TIME、日期和时间* WORD、整 数、时间、 日期和时间* I、Q、M、D、 L、P 转换结果 * 支持的数据类型范围取决于 CPU。有关S7-1200 和 S7-1500 模块支持哪些数据类型,请参见有效数据类型 概述。有关有效数据类型的更多信息,请参见“有效数据类型概述在以下示例中,将 DATE AND TIME 数据类型的时间转换为 LTIMEOF DAY 数据类型的时间。 在全局数据块中创建两个用于存储数据的变量。T_ADD: 时间加运算 (S7-1200,S7-1500) 说明 使用该指令将 IN1 输入中的时间信息加到 IN2 输入中的时间信息上。可以在 OUT 输出参数中查询结果。可以对下列格式进行相加操作: • 将一个时间段加到另一个时间段上。 示例:将一个 TIME 数据类型加到另一个 TIME数据类型上。 • 将一个时间段加到某个时间上。 示例:将一个 TIME 数据类型加到 DTL 数据类型上。在输入和输出的指令框中选择即可定义输入参数 IN1 和输出参数 OUT 中的值对应的数据类型。 在 IN2 输入参数中,只能指定TIME 格式的时间信息(对于 S7-1500 模块,还支持 LTIME 格 式)。 说明 上溢/下溢 在计算过程中,可能超出输出参数OUT 的Zui大值或低于Zui小值。通过评估使能输出 ENO,可 检测这一错误。 参数 下表依据可能的转换显示了“T_ADD”指令的参数:表格 4-7 将一个时间段加到另一个时间段上 参数 声明 数据类型 存储区 说明 S7-1200 S7-1500 IN1 InputTIME TIME, LTIME I、Q、M、D、 L、P 或常量 要相加的第一个数 IN2 Input TIME TIME,LTIME I、Q、M、D、 L、P 或常量 要相加的第二个数 OUT Return DINT, DWORD, TIME, TODTIME, LTIME, I、Q、M、D、 L、P 相加的结果 数据类型的选择取决于为 IN1 和 IN2输入参数选择的数据类型。将一个时间段加到某个时间上 参数 声明 数据类型 存储区 说明 S7-1200 S7-1500 IN1Input DTL, TOD DT, TOD, LTOD, LDT, DTL I、Q、M、D、 L、P 或常量 要相加的第一个数对于参数 IN2 中的 LTIME,只能 使用 LTOD、LDT 或 DTL。 IN2 Input TIME TIME, LTIMEI、Q、M、D、 L、P 或常量 要相加的第二个数 OUT Return DINT, DWORD, TIME, TOD, UDINT,DTL DT, DTL, LDT, TOD, LTOD I、Q、M、D、 L、P 相加的结果 数据类型的选择取决于为 IN1 和IN2 输入参数选择的数据类型。T_SUB:时间相减 (S7-1200, S7-1500) 说明 使用该指令将 IN1输入参数中的时间值减去 IN2 输入参数中的时间值。可通过输出参数 OUT 查询差值。可以对下列格式进行相减操作: •将时间段减去另一个时间段 示例:将数据类型为 TIME 的时间段减去数据类型为 TIME 的另一个时间段。结果可输出 到 TIME格式的变量中。 • 从某个时间中减去时间段 示例:将数据类型为 TIME 的时间段减去数据类型为 DTL 的时间。结果可输出到 DTL格 式的变量中。 通过为该指令的输入和输出参数选择数据类型,确定 IN1 输入参数和 OUT 输出参数中值的 格式。 说明 上溢/下溢在计算过程中,可能超出输出参数 OUT 的Zui大值或低于Zui小值。通过评估使能输出 ENO,可 检测这一错误。T_DIFF: 时间值相减(S7-1200, S7-1500) 说明 使用该指令将 IN1 输入参数中的时间值减去 IN2输入参数中的时间值。结果将发送到输出参 数 OUT 中。 • 如果 IN2 输入参数中的时间值大于 IN1 输入参数中的时间值,则OUT 输出参数中将输出 一个负数结果。 • 如果减法运算的结果超出 TIME 值范围,则使能输出 ENO的值为“0”。根据所用的数据类 型,获得的结果值截断或为“0”(0:00)。 – 如果选择 DTL数据类型的被减数和减数,则计算结果的数据类型为 TIME。不能大于 24 天,否则使能输出 ENO 的值为“0”,且结果为“0”。 –如果选择数据类型为 LDT 的被减数和减数,则可避免该限制条件。使用 SCL 中的“T_DIFF”指令 在 SCL 中,OUT参数预设的数据类型为 TIME(另请参见“SCL 指令数据类型的基本信息 (页 9999)”;如果 OUT 参数的数据类型为INT,则需为指令名称 T_DIFF 添加“_INT”扩展(另 请参见:“更改 SCL 指令的数据类型。