RTM:运行时间定时器 (S7-1200, S7-1500) 说明 可使用该指令对 CPU 的 32位运行小时计数器执行设置、启动、停止和读取操作。 请注意,在执行用户程序期间也可以停止或重新启动运行小时计数器,但这可能会导致保存的值不正确。下表列出了“RTM”指令的参数: 参数 声明 数据类型 存储区 说明 NR Input RTM I、Q、M、D、L 或常量 运行小时计数器的编号 编号从 0 开始。 有关 CPU 的运行小时计数器数目的信息,请 参见技术规范。 MODE InputBYTE I、Q、M、D、L 或 常量 作业 ID: • 0:读取(随后将状态写入 CQ,当前值 写入 CV)。在运行小时计数器达到(2^31) - 1 小时后,将停在可显示的Zui后 一个值处并输出一条“上溢”(Overflow) 错误消息。 •1:启动(从上一计数值开始) • 2:停止 • 4:设置为参数 PV 中指定的值 • 5:设置为参数 PV 中指定的值并启动 •6:设置为参数 PV 中指定的值并停止 PV Input DINT I、Q、M、D、L 或 常量 运行小时计数器的新值 RET_VALReturn INT I、Q、M、D、L 在指令执行过程中如果发生错误,则返回值 将包含错误代码。 CQ Output BOOLI、Q、M、D、L 运行小时计数器的状态(1:正在运行) CV Output DINT I、Q、M、D、L 运行小时计数器的当前值有关有效数据类型的更多信息,请参见“有效数据类型概述。
在以下示例中,设置 CPU的运行小时计数器,并在一小时后读取值。 在全局数据块中创建六个用于存储数据的变量。 互连该指令的参数,如下所示:在输入参数 NR中,指定 CPU 的运行小时计数器编号。 如果常开触点(“execute”)的信号状态为“TRUE”,则执行“RTM”指令。CPU的运行小时计数 器设置为目标值(“in_processValue”)并启动。在启动运行小时计数器后,将输入参数 MODE(“comandMODE”)的值设置为“0”。(要执行此操作,请单击参数并选择“修改操作数 > 设 置为 0”(Modifyoperand > Set to 0)。)“RTM”指令仅原样读取运行小时计数器的当前值(“currentValue”)。输出参数 CQ(“statusRTM”)指示在运行小时计数器启动后,运行小时计数器正在运行(值为“TRUE”)。输出参数 RET_VAL(“returnValue”)指示处理正在运行, 且无错误。字符串 +字符 (S7-1200, S7-1500) S_MOVE: 移动字符串 (S7-1200, S7-1500) 说明可以使用此指令将参数 IN 中字符串 (W)STRING 的内容写入在参数 OUT 中指定的数据区域。 要复制数据类型为 ARRAY的变量,可使用指令“MOVE_BLK”和“UMOVE_BLK”。有关有效数据类型的更多信息,请参见“有效数据类型概述(页 255)”。 示例 在以下示例中,将输入参数 IN 中字符串的内容复制到输出参数 OUT 中的另一个字符串。使用的数据类型为 STRING。 在全局数据块中创建两个用于存储数据的变量。S_COMP: 比较字符串 (S7-1500) 说明使用该指令,可比较两个 (W)STRING 格式的变量的内容,并将比较结果作为返回值输出。要 比较的变量连接到输入 IN1 和 IN2。只能为这些输入参数指定用符号定义的变量。 使用指令框,可选择比较条件。如果满足比较条件(例如大于或等于),则输出参数 OUT 的信号状态将设置为“1”。 选择以下某个比较条件: 符号 说明 EQ 如果参数 IN1 处的字符串与参数 IN2处的字符串相同,则返回值的信号状态为 “1”。 NE 如果参数 IN1 处的字符串与参数 IN2 处的字符串不同,则返回值的信号状态为“1”。 GT (1) 如果参数 IN1 处的字符串大于参数 IN2 处的字符串,则返回值的信号状态为“1”。 LT (1) 如果参数IN1 处的字符串小于参数 IN2 处的字符串,则返回值的信号状态为“1”。 GE (1) 如果参数 IN1 处的字符串大于或等于参数IN2 处的字符串,则返回值的信号状 态为“1”。 LE (1) 如果参数 IN1 处的字符串小于或等于参数 IN2处的字符串,则返回值的信号状 态为“1”。 (1) 按照字符的 ASCII码从左侧开始比较字符(例如“a”大于“A”)。第一个不同的字符决定比较结果。如果较长字符串的左侧部分与较短字符串相同,则表示较长字符串更长。 参数 下表列出了“S_COMP”指令的参数: 参数 声明数据类型 存储区 说明 IN1 Input STRING, WSTRING* D、L 或常量 输入变量,格式为 STRING /WSTRING。 IN2 Input STRING, WSTRING* D、L 或常量 输入变量,格式为 STRING /WSTRING。S_CONV:转换字符串 (S7-1200, S7-1500) 说明 使用该指令将 IN 输入中的值转换为 OUT输出中指定的数据格式。通过为 OUT 输出参数选 择数据类型,确定转换的输出格式。 可实现下列转换: • 转换字符串 •将一个数字值或字符转换为字符串 • 将字符转换为字符 说明 显式转换 有关显式转换的更多信息,请参见: •S7-1200-CPU:“显式转换 (页 615)” • S7-1500-CPU:“显式转换(页 484)”转换字符串 • 转换数字值(整数或浮点数): 将针对 IN输入参数中指定的字符串的所有字符执行转换。允许的字符包括数字“0”到“9”、小数点以及加减号。字符串的第一个字符可以是有效数字或符号。将忽略前导空格和指 数计数制。 • 转换字符:将字符串转换为字符时,字符串中的第一个字符将传送到参数 OUT 中。 • 转换字符串: 将一个数字值或字符转换为字符串 • 通过为IN 输入选择数据类型,确定要转换的数字值的格式。在输出 (W)STRING 处,指定 一个 OUT数据类型的有效变量。转换后字符串的长度取决于 IN 输入中的值。 说明 返回值处变量中的内容 在 SCL中,运算后返回的字符串将覆盖返回值处变量中的内容 在其它编程语言中,返回的字符串仅插入返回值处的变量中。例如,如果返回的字符串 长度为6 个字符,而返回值处的变量已包含了 10 个字符,则返回值处该变量中的其余 4 个字符将保留,与返回的字符串一同包含在该变量中。 •转换结果将从第三个字节开始另存为字符串。该字符串的第一个字节记录了字符串的Zui大长度,第二个字节记录了字符串的实际长度。输出正数字值时不带符号。 说明 SCL 中的符号 在 SCL中,字符串显示时通常带有一个前置符号。 • 如果将数字值 0(INT 或 UINT数据类型)转换为一个字符串(如,INT_TO_STRING(0)), 则转换后字符串的长度为 6 个字符。 •当数字值转换为字符串时,字符串的第一个字符用空格填充。空格的数量取决于数字值 的长度。 说明 SCL 特定信息当数字值转换为字符串时,字符串的第一个字符不会使用空格进行填充。如果要将该字符串的第一个字符填充为空格,则可使用“VAL_STRG”指令。 • 转换 (W)CHAR字符时,该字符将写入字符串的第一个位置处。转换浮点数期间的指数计数法使用指令“S_CONV”转换浮点数时,请勿使用指数计数法(“e”或“E”)。转换浮点数时,应使用指数计数法,而非指令“STRG_VAL”。通过该指令的参数 FORMAT,可选择指数计数法输入 格式。 参数下表依据可能的转换显示了“S_CONV”指令的参数: 表格 4-11 将字符串转换为数字值的参数: 参数 声明 数据类型 存储区 说明IN Input STRING, WSTRING D、L 或常量 要转换的值 OUT Output CHAR, WCHAR,USINT, UINT, UDINT, ULINT, SINT, INT, DINT, LINT, REAL, LREALI、Q、M、D、L 转换结果 表格 4-12 将字符串转换为字符串时的参数: 参数 声明 数据类型 存储区 说明 IN InputSTRING, WSTRING D、L 或常量 要转换的值 OUT Output STRING, WSTRING D、L转换结果(可能的转换:STRING 到 WSTRING 或)有关有效数据类型的更多信息,请参见“有效数据类型概述(页 255)”。 示例 在以下示例中,将 INT 数据类型的数值转换为一个 STRING 数据类型的字符串。在全局数据块中创建两个用于存储数据的变量。 互连该指令的参数,如下所示:要执行此操作,请选择数据类型。使用第一个选项,指定待转换值的数据类型(“inputValueNBR”)。使用第二个选项,指定待生成字符串的数据类型(“resultSTRING”)。STRG_VAL: 将字符串转换为数字值 (S7-1200, S7-1500) 说明“STRG_VAL”指令可将字符串转换为整数或浮点数: • 在 IN 输入参数中指定要转换的字符串。 • 通过为 OUT输出参数选择数据类型,确定输出值的格式。转换允许的字符包括数字“0”到“9”、小数点、小数撇、计数制“E”和“e”,以及加减号字符。如果发现无效字符,将取消转换过程。在以下示例中,将 STRING 数据类型的数字字符串转换为一个 REAL 数据类型的浮点数。结果的长度将是 32 位,并且由于是 REAL 数据类型,可能还会有一个符号位。 在全局数据块中,创建 4 个变量进行数据存储。互连该指令的参数,如下所示:使用左侧的选项,选择字符串的数据类型。使用右侧的选项, 选择浮点数的数据类型。 数字字符串将根据参数P(“pointerSTRG”)的值“1”,从第一个字符开始转换。由于参数FORMAT(“resultSformat”)的值为“0001”,数字字符串中的点将解释为千位分隔符。