LDT (DATE_AND_LTIME) (S7-1500) 格式 数据类型 LDT (DATE_AND_LTIME) 可存储自 1970 年 1 月 1 日 0:0 以来的日期和时间信息(单 位为纳秒)。 下表列出了数据类型 LDT 的属性:DTL (S7-1200, S7-1500) 说明 数据类型 DTL 的操作数长度为 12 个字节,以预定义结构存储日期和时间信息。数据类型 DTL 的结构由几个部分组成,每一部分都包含不同的数据类型和取值范围。指定值 的数据类型必须与相应元素的数据类型相匹配。 说明 DTL 变量的十六进制监视值无效 如果 DTL 变量的监视值使用十六进制格式表示,则可能是一位某个值(YEAR、MONTH、DAY 等)无效。例如,HOUR 变量处指定的值大于 24。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 数据类型(字符串)变量的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 数据类型的变量 传送 WSTRING 数据类型的参数 数据类型 WSTRING 的操作数可作为参数传递,长度为具有“优化”访问权的块的Zui大长度。 对于具有“标准”访问权的函数块 (FB),数据类型 WSTRING 的操作数可在块接口的所有区 域中声明为参数,但在“InOut”区域中例外。对于具有有“标准”访问权的函数 (FC),仅数 据类型为 WSTRING 的操作数可作为参数传递。 本规则的例外情况是“Return”区域 FC 的函数值和 SCL 编程语言中的表达式。在这些情况下, WSTRING 变量的长度不得超过 1022 个字符。 声明的形参和实参长度可以不同。有关将 WSTRING 作为参数的更多信息,请参见 • 传递 STRING 或 WSTRING 数据类型的变量 • 编程数据块:声明 STRING 数据类型的变量 (页 9675) • 使用常量的示例 (页 118) 如果指定字符串的实际长度小于所声明的Zui大长度,则字符将以左对齐方式写入字符串,并 将剩余的字符空间保持为未定义。在值处理过程中仅考虑已占用的字符空间。寻址 STRING 或 WSTRING 中的具体字符 (S7-1200, S7-1500) 寻址 STRING 或 WSTRING 中的具体字符 通过语法 StringName[i],可访问 STRING 或 WSTRING 变量中的具体字符。计数下标“i”以 “1”开头。因此,可以使用 StringName[1] 访问字符串的第一个字符。 但不能访问 STRING 或 WSTRING 常量中的各个字符。调用和寻址命名空间中的块 在程序代码中,命名空间中的程序元素使用 IEC 格式进行表示: • 块名称不使用引号括起。 • 名称空间位于块名称之前,使用点分进行分隔。 有关命名空间格式的详细信息,请参见:“命名空间简介 (页 9503)” W(STRING) 访问的故障查找与排除 在运行过程中访问的字符超出 STRING 长度时,将导致访问错误。对该字符串进行读取访问 时,将接收到字符“$00”或“$0000”;而且不会对该字符串进行写入访问。如果该指令中带有 使能输出 ENO,则 ENO 的信号状态将设置为 FALSE。CPU 不会切换为 STOP 模式。 唯一例外:在字符串的实际长度之后直接写入该字符。 以下示例显示了实际长度为 5 时的字符串“Hello”。该 STRING 的第 27 个字符超出了实际长度, 无法写入。STRING 将保持不变,赋值结果为“hello”。