VAL_STRG:将数字值转换为字符串 (S7-1200, S7-1500) 说明 “VAL_STRG”指令用于将数字值转换为字符串。 • 在 IN输入参数中指定要转换的值。通过选择数据类型来决定数字值的格式。 • 可以在 OUT 输出参数中查询转换结果。转换允许的字符包括数字“0”到“9”、小数点、小数撇、计数制“E”和“e”,以及加减号字符。无效字符将中断转换过程下表列出了“VAL_STRG”指令的参数: 参数 声明 数据类型 存储区 说明 S7-1200 S7-1500IN Input USINT, SINT, UINT, INT, UDINT, DINT, REAL, LREAL USINT,SINT, UINT, INT, UDINT, DINT, ULINT, LINT, REAL, LREAL I、Q、M、D、 L、P或常量 要转换的值 SIZE Input USINT USINT I、Q、M、D、 L、P 或常量 字符位数 PREC InputUSINT USINT I、Q、M、D、 L、P 或常量 小数位数 FORMAT Input WORD WORD I、Q、M、D、L、P 或常量 字符的输出格式 P InOut UINT UINT I、Q、M、D、 L、P 或常量 开始写入结果的字符。 OUTOutput STRING, WSTRING STRING, WSTRING D、L 转换结果有关有效数据类型的更多信息,请参见“有效数据类型概述 (页 255)”。 参数 P 使用 P参数指定从字符串中的哪个字符开始写入结果。例如,如果 P 参数中指定值“2”,则 从字符串的第二个字符开始保存转换值。 SIZE 和P 参数 使用 SIZE 参数指定待写入字符串的字符数。这从 P 参数中指定的字符开始计数。如果输出值比指定长度短,则结果将以右对齐方式写入字符串。空字符位置将填入空格。 如果 SIZE 的值为 0,则所有必需字符都将从字符位置 P处开始写入。 参数 FORMAT 使用 FORMAT 参数,指定转换期间如何解释数字值以及如何将其写入字符串。只能在 USINT参数中指定 FORMAT 数据类型的变量。
参数 PREC 使用PREC 参数定义转换浮点数时保留的小数位数。REAL 数据类型的数字值所支持的Zui大精 度为 7 位数。如果要转换的值为整数,可使用PREC 参数指定放置小数点的位置。 示例 下表列出了调用 VAL_STRG 之前,参数 OUT中包含空字符串时,数值转换为字符串的应用 示例。在任何情况下,参数 IN、SIZE、PREC、FORMAT 和 P的值均相同:IN=123,SIZE=16, PREC=0,FORMAT=4,P=10。仅 OUT 的默认值不同。 • OUT中包含的字符串长度小于 P。 在当前字符串之后,CPU 将使用空格填充 OUT,直至 (P-1) 位置处。从位置 P OUT 处开始,写入时将虑前导空格计算在内。在以下示例中,将 REAL 数据类型的浮点数转换为 STRING 数据类型的字符串。在全局数据块中创建六个用于存储数据的变量。互连该指令的参数,如下所示:选择数据类型: • 可以使用左侧选项指定要转换的值。 •可以使用右侧选项指定要生成的字符串。 根据参数 P" ("(“pointer2STRG”)的值“16”,从第 16个字符处开始写入该字符串。根据参数 SIZE(“sizeSTRG”)的 10 值,从该位置处开始写入该字符串 10个字符长度。由于参数FORMAT(“resultV2Sformat”)的值为“0004”,待转换值(“inputVAL”)中的点将解释为小数点分隔符。根据参数 PREC(“precVAL”)的值“3”,将向字符串写入三个小数位。待转换值的符号作为字符存储在字符串中,作为数字的前缀。字符串的其余 10 个字符作为符号前 的空格写入。字符串通过输出参数OUT(“outputSTRING)”输出。Strg_TO_Chars: 将字符串转换为 Array of CHAR(S7-1200, S7-1500) 说明 通过指令“Strg_TO_Chars”,可将数据类型为 STRING 的字符串复制到Array of CHAR 或 Array of BYTE 中;或将数据类型为 WSTRING 的字符串复制到 Array ofWCHAR 或 Array of WORD 中。该操作只能复制 ASCII 字符。 • 在输入参数 STRG 中指定字符串。 •这些字符将写入数据类型为 Array of CHAR / BYTE / WCHAR / WORD 的参数CHARS 中。 – 目标域中的字符量必须至少与从源字符串中复制的字符数量相同。 –如果目标域包含的字符数少于源字符串中的字符数,则将只写入Zui多与目标域Zui大长 度相同的字符数。 – 如果字符串中包含“$00”或W#16#0000 字符,则不会影响复制操作的执行(见下图)。 – 在参数 CNT 中输出已复制的字符个数。 • 使用参数PCHARS,可指定目标域中将写入的起始位置。 – 示例:如果应从第三个位置开始写入,则在参数 PCHARS中使用值“2”:PCHARS 的默认值为“0”。当 PCHARS = 0 时,将使用数组下标的下限(如 Array [0..5] ofCHAR 的 CHAR[0])。如果数组的下限为负值(例如 Array [-5..5] of CHAR 的CHAR[-5]),此规则也适用。 说明 使用 S7-1200 V2.0 中的指令 S7-1200 V2.0 及以下版本只支持Array [0 .. n] of CHAR / BYTE。不允许使用负数的下标下限 (如 Array [-3..2] ofCHAR)。但软件本身不会检查这一限制条件。下表列出了“Strg_TO_Chars”指令的参数: 参数 声明 数据类型 存储区 说明STRG Input STRING, WSTRING D、L 或常量 复制操作的源 PCHARS Input DINTI、Q、M、D、L、P 或常量 Array of (W)CHAR / BYTE / WORD 结构 中的位置,从该位置处开始写入字符串的相应字符。 CHARS InOut VARIANT D、L 复制操作的目标 将字符复制到Array of (W)CHAR/ BYTE/ WORD 数据类型的结构中。 CNT Output UINTI、Q、M、D、L、P 移动的字符数量 有关有效数据类型的更多信息,请参见“有效数据类型概述 (页 255)”。 示例在以下示例中,将 STRING 数据类型的字符串中的字符复制到 Array of CHAR 数据类型的结 构中。 在全局数据块中,创建4 个变量进行数据存储。将根据 Array of CHAR 数据类型创建一个包含各个字符的结构。CHARS 结构(“myarrayCHARS”)的长度为 10 个字符 (Array ... [0..9])。根据参数 PCHARS(“pointerCHARS”)的值“2”,从该结构的第三个字符开始写入(“0”和“1”为空,“2”包含字符串(“inputSTRG”)的第一个字符)。在字符串(“inputSTRG”)的字符写入到结构(“myarrayCHARS”)后,待创建结构的Zui后一个字符将写入为空。字符串中移动的字符数通 过输出参数CNT(“countCHARS”)输出。Chars_TO_Strg:将 Array of CHAR 转换为字符串 (S7-1200,S7-1500) 说明 通过指令“Chars_TO_Strg”,可将字符串从 Array of CHAR 或 Array ofBYTE 复制到数据类型为 STRING 的字符串中;或将字符串从 ARRAY of WCHAR 或 Array of WORD复制到数据类型为 WSTRING. 的字符串中。复制操作仅支持 ASCII 字符。 • 在输入参数 CHARS中,可指定待复制到字符串中的 Array of (W)CHAR / BYTE / WORD 字 符。 • 这些字符将写入数据类型为(W)STRING 的参数 STRG 中。 – 该字符串中的字符数量至少与源域中复制的字符数量相同。 –如果字符串长度小于源域中的字符个数,则将在字符串中写入Zui大长度的字符数。 – 如果 Array of CHAR / BYTE中包含字符“$00”,或 Array of WCHAR / WORD 中包含字符W#16#0000,则仅将字符复制到指定位置处(见下图)。 • 使用参数 PCHARS,可指定源域中字符复制的位置置。PCHARS =0 为默认值,通常指定 数组的下标下限,该值为负数。 – 示例:如果要从源域中的第三个字符开始进行复制,则参数 PCHARS的值应为“2”:如果在参数 PCHARS 中指定下标,但该下标未包含在复制源中(如,Array [0..5] of CHAR中的“7”),则不执行该指令。. 说明 使用 S7-1200 V2.0 中的指令 S7-1200 V2.0 及以下版本只支持Array [0 .. n] of CHAR / BYTE。不允许使用负数的下标下限 (如 Array [-3..2] ofCHAR)。但软件本身不会检查这一限制条件。下表列出了“Chars_TO_Strg”指令的参数: 参数 声明 数据类型 存储区 说明CHARS Input VARIANT D、L 复制操作的源 从 Array of (W)CHAR / BYTE / WORD 处开始复制字符。 PCHARS Input DINT I、Q、M、D、L、P 或常量 Array of (W)CHAR / BYTE /WORD 中的位 置,从该位置处开始复制字符。 CNT Input UINT I、Q、M、D、L、P 或常量要复制的字符数。使用值“0”将复制所有 字符。 STRG Output STRING, WSTRING D、L 复制操作的目标(W)STRING 数据类型的字符串。遵守数 据类型的Zui大长度: • STRING:254 个字符 • WSTRING:254个字符(默认)/ 16382 个字符(Zui大) 使用 WSTRING 时,请注意必须使用方 括号明确定义超过 254 个字符的长度(例如 WSTRING[16382])。 有关有效数据类型的更多信息,请参见“有效数据类型概述 ”。