S5TIME(持续时间) (S7-300,S7-400) 格式 数据类型 S5TIME 将持续时间存储为 BCD 格式。持续时间的生成基于 0 到 999 范围内的时间值和时间基线。时间基线指示定时器时间值按步长 1 减少直至为“0”的时间间隔。时间的 分辨率可以通过时间基线来控制。下表列出了数据类型 S5TIME 的取值范围:数据类型 DTL 的结构由几个部分组成,每一部分都包含不同的数据类型和取值范围。指定值的数据类型必须与相应元素的数据类型相匹配。 说明 DTL 变量的十六进制监视值无效 如果 DTL变量的监视值使用十六进制格式表示,则可能是一位某个值(YEAR、MONTH、DAY 等)无效。例如,HOUR 变量处指定的值大于24。 下表给出了数据类型 DTL 的结构组成及其属性:CHAR 说明 CHAR (Character) 数据类型的变量长度为 8位,占用一个 BYTE 的内存。 CHAR 数据类型将单个字符存储为 ASCII 编码形式。有关特殊字符编码的信息,请参见“另 请参见> STRING”(See also > STRING)。 下表列出了 CHAR 数据类型的取值范围:WCHAR(S7-1200, S7-1500) 说明 WCHAR(宽字符)数据类型的变量长度为 16 位,占用两个 BYTE 的内存。WCHAR 数据类型将扩展字符集中的单个字符保存为 UTF-16 编码形式。但只涉及到整个 Unicode范围的一部分。不能显示的字符将使用一个转义字符进行显示。STRING 说明 数据类型为 STRING的操作数在一个字符串中存储多个字符,Zui多可包括 254 个字符。在一个字符串中,可使用系统所创建代码页的所有字符。字符在单引号中指定。 字符串中还可包含特殊字符。转义字符 $可用于标识控制字符、美元符号和单引号。 说明 不同代码页 请注意,在 Windows系统中,特殊字符使用当前设置的代码页进行编码。即,由于各操作 系统使用的代码页不同,包含有特殊字符的字符串的显示也将不同。正是因为代码页对所在系统的依赖性,用户程序的国际通用性变得极为困难。目前,仅 7 位 ASCII编码中的字符才具有国际通用性。如果转义字符 $ 后面跟有该表格中的某个字母,则表格中指定该字符将包含在字符串中。如 果转义字符 $后面跟随的字母不在该表格中,则该字母将包含在该字符串中。如果转义字符 $ 后跟随两个或一个十六进制数字,该代码将包含在字符串中。监控表中的应用 以下示例适用于 S7-300/400 系列 CPU:监视一个数据类型为 STRING 的变量时,将仅显示前 30个字符。如果实际长度大于 30 个字符,则将显示一个省略号 (…) 而非闭合撇号 (')。当 STRING 的值超过 30个字符时,无法进行更改。
字符串的Zui大长度在操作数的声明过程中,可在关键字 STRING 后使用方括号指定字符串的Zui大长度(如,STRING[4])。也可以使用局部或全局常量声明字符串的Zui大长度(如,STRING[#loc_const] 或STRING["glob_const"])。如果未指定Zui大长度,则相应的操作数长度设置为标准的 254 个字符。有关使用局部或全局常量声明字符串的Zui大长度的更多信息,请参见: • 声明块接口:声明 STRING 和 WSTRING 数据类型的变量(页 9621) • 编程数据块:声明 STRING 数据类型的变量 (页 9675) • 使用常量的示例(页 118) 如果指定字符串的实际长度小于所声明的Zui大长度,则字符将以左对齐方式写入字符串,并将剩余的字符空间保持为未定义。在值处理和各种显示过程中,仅涉及可确定字符串实际长 度的所有字符空间量。 说明 对于S7-300/400 CPU,请注意:如果定义了 STRING 数据类型的临时变量,则在用户程序中 使用变量之前必须使用指定的长度定义BYTE“字符串Zui大长度”。 传送 STRING 数据类型的参数 STRING 数据类型可作为参数进行传送。有关将 STRING作为参数的更多信息,请参见STRING 变量的结构 简介 STRING 数据类型(字符串)变量的Zui大长度为 256 个字符,包含254 个字节的用户数据。 该变量从一个非优化块的一个字的限值处开始(偶数地址的字节处)。在优化块中,该变量 可在任何字节限值处开始。创建变量时,需指定变量的Zui大长度。对字符串进行预分配或编辑时,需输入当前长度(字 符串实际使用的长度 =有效的字符数量)。Zui大长度位于字符串的第一个字符中。当前长度 位于第二个字节中。之后为具体字符,字符编码取决于 Windows中的代码页设置。 STRING 变量的结构。WSTRING (S7-1200, S7-1500) 说明 数据类型为 WSTRING(宽字符串)的操作数用于在一个字符串中存储多个数据类型为 WCHAR 的 Unicode 字符。如果未指定长度,则字符串的长度为预置的254 个字符。在一个 字符串中,可使用操作系统支持的所有字符。这意味着也可在字符串中使用中文字符。 Windows 仅支持Unicode 定义的部分(大部分)字符。 说明 编码 在 STEP 7 中,禁用从 $D000 到 $FFFF 的所有代码。声明数据类型为 WSTRING 的操作数时,可使用方括号定义其长度(例如,WSTRING[10])。如果不指定长度,则在默认情况下,将 WSTRING 的长度设为 254 个字符。可声明Zui多 16382 个字符的长度(WSTRING[16382])。 字符在单引号中指定,并且始终通过限定符 WSTRING# 指定。
如果转义字符 $后面跟有该表格中的某个字母,则表格中指定该字符将包含在字符串中。如 果转义字符 $后面跟随的字母不在该表格中,则该字母将包含在该字符串中。如果转义字符 $ 后面跟随四个十六进制数字,则该代码将包含在字符串中。 说明WSTRING 变量的转换 数据类型 WSTRING 不支持后台转换。需要显式地将 WSTRING 数据类型转换为 STRING 数据类型。但标准情况下,只能转换 Windows 代码页中 0 到 127 范围内的字符。该范围之外的 所有字符,代码页字符和Unicode 字符低位字节的位置必须完全相同,以确保转换无错误。 监控表中的应用 监视一个数据类型为 WSTRING的变量时,将仅显示前 254 个字符。如果实际长度大于 254 个字符,则将显示一个省略号 (…) 而非闭合撇号 (')。当WSTRING 的值超过 254 个字符时, 无法进行更改。 在 SCL 中使用 在极少数情况下,在 SCL 中使用 WSTRING生成功能(如,CONCAT、INSERT、JOIN、SPLIT、 LEFT、MID、RIGHT)生成超长的 WSTRING时,WSTRING 结果可能会被系统截断。 需检查这些功能的 ENO 是否为 FALSE,以确认 WSTRING 是否被截断。字符串的Zui大长度 在操作数的声明过程中,可在关键字 WSTRING 后使用方括号指定字符串的Zui大长度(如,WSTRING[4])。也可以使用局部或全局常量声明字符串的Zui大长度(如, WSTRING[#loc_const] 或WSTRING["glob_const"])。如果未指定Zui大长度,则相应的操作 数长度设置为标准的 254 个字符。有关使用局部或全局常量声明字符串的Zui大长度的更多信息,请参见: • 声明块接口:声明 STRING 和 WSTRING 数据类型的变量(页 9621) • 编程数据块:声明 STRING 数据类型的变量 (页 9675) • 使用常量的示例(页 118) 如果指定字符串的实际长度小于所声明的Zui大长度,则字符将以左对齐方式写入字符串,并将剩余的字符空间保持为未定义。在值处理过程中仅考虑已占用的字符空间。传送 WSTRING 数据类型的参数 数据类型 WSTRING的操作数可作为参数传递,长度为具有“优化”访问权的块的Zui大长度。 对于具有“标准”访问权的函数块 (FB),数据类型 WSTRING的操作数可在块接口的所有区 域中声明为参数,但在“InOut”区域中例外。对于具有有“标准”访问权的函数 (FC),仅数 据类型为WSTRING 的操作数可作为参数传递。 本规则的例外情况是“Return”区域 FC 的函数值和 SCL编程语言中的表达式。在这些情况下, WSTRING 变量的长度不得超过 1022 个字符。 声明的形参和实参长度可以不同。有关将WSTRING 作为参数的更多信息,请参见 • 传递 STRING 或 WSTRING 数据类型的变量 (页 303) •块接口中的有效数据类型示例 以下示例显示了通过输出值“QB”指定 WSTRING[4] 数据类型时的字节序列:调用和寻址命名空间中的块在程序代码中,命名空间中的程序元素使用 IEC 格式进行表示: • 块名称不使用引号括起。 •名称空间位于块名称之前,使用点分进行分隔。 有关命名空间格式的详细信息,请参见:“命名空间简介 (页 9503)”W(STRING) 访问的故障查找与排除 在运行过程中访问的字符超出 STRING 长度时,将导致访问错误。对该字符串进行读取访问时,将接收到字符“$00”或“$0000”;不会对该字符串进行写入访问。如果该指令中带有 使能输出 ENO,则 ENO的信号状态将设置为 FALSE。CPU 不会切换为 STOP 模式。 唯一例外:在字符串的实际长度之后直接写入该字符。以下示例显示了实际长度为 5 时的字符串“Hello”。该 STRING 的第 27 个字符超出了实际长度, 无法写入。STRING将保持不变,赋值结果为“hello”。