January 10, 2025
By: Kevin

西门子 S7-1200/1500 PLC 字符串类型详解: STRING 与 WSTRING

  1. 1. 字符串类型概述
  2. 2. 存储方式
    1. 2.1 长度前缀
    2. 2.2 数据存储
    3. 2.3 示例
  3. 3. 编码方式
    1. 3.1 STRING
    2. 3.2 WSTRING
  4. 4. 限制
    1. 4.1 最大长度
    2. 4.2 结尾符
  5. 5. 如何获取字符串长度
  6. 6. 编程示例 (TIA Portal)
  7. 7. 总结
  8. 8. 参考资料

在西门子 S7-1200 和 S7-1500 PLC 编程中, 字符串处理是一项常见的任务. 理解 PLC 中字符串的存储方式, 编码和限制对于编写高效且可靠的程序至关重要. 本文将深入探讨 S7-1200/1500 PLC 中的两种主要字符串类型: STRING 和 WSTRING.

1. 字符串类型概述

西门子 PLC 提供了两种字符串类型:

  • STRING: 用于存储单字节字符的字符串. 通常使用 ASCII 或扩展 ASCII 编码.
  • WSTRING: 用于存储 Unicode 字符的字符串. 使用 UTF-16 编码, 支持多语言字符.

2. 存储方式

2.1 长度前缀

STRING 和 WSTRING 都使用长度前缀来指示字符串的实际长度. 长度前缀存储在字符串数据块的开头:

  • STRING: 长度前缀占用 1个字节.
  • WSTRING: 长度前缀占用 2个字节.

长度前缀的值表示字符串中实际字符的个数.

2.2 数据存储

实际的字符数据紧跟在长度前缀之后存储. PLC 会为字符串变量分配固定大小的内存空间, 即使实际字符串的长度小于最大长度.

2.3 示例

假设我们有一个 STRING 变量 MyString, 其值为 "Hello", 最大长度为10. 在 PLC 内存中, 它的存储方式如下:

  • 长度前缀: 0x05 (表示字符串长度为 5)
  • 数据: "Hello" (48 65 6C 6C 6F)
  • 剩余空间: (未使用的空间可能填充为 0)

3. 编码方式

3.1 STRING

STRING 类型通常使用 ASCII 或扩展 ASCII 编码. 这意味着每个字符占用 1 个字节. 这种类型适合存储英文字符和一些常用符号.

3.2 WSTRING

WSTRING 类型使用 UTF-16 编码. 这意味着每个字符占用 2 个字节. UTF-16 能够表示 Unicode 字符集中的大部分字符, 包括中文, 日文, 韩文等.

4. 限制

4.1 最大长度

STRING 和 WSTRING 类型都具有最大长度限制. 在 S7-1200 和 S7-1500 PLC 中, 最大长度为 254个字符. 这意味着:

  • STRING: 最多可以存储 254 个单字节字符.
  • WSTRING: 最多可以存储 254 个 Unicode 字符.

尝试创建超过 254 个字符的 STRING 或 WSTRING 变量会导致编译错误.

4.2 结尾符

西门子 PLC 的 STRING 和 WSTRING不强制以空字符 (\0)结尾. 字符串的实际长度由长度前缀指定.

5. 如何获取字符串长度

要获取 STRING 或 WSTRING 的长度, 你需要:

  1. 读取长度前缀: 从 PLC 中读取字符串的第一个字节(STRING)或前两个字节(WSTRING).
  2. 转换长度前缀为数值: 将读取到的字节转换为对应的数值. 这个数值就是字符串的实际长度.

6. 编程示例 (TIA Portal)

以下是一个使用 TIA Portal 读取 STRING 变量长度和值的示例:

// 假设 "MyString" 是一个 STRING 变量, 最大长度为 20
// "MyStringLength" 是一个 INT 变量, 用于存储字符串长度
// "MyStringValue" 是一个 STRING 变量, 用于存储字符串值

#MyStringLength := LEN(#MyString); // 使用 LEN 函数获取字符串长度
#MyStringValue := #MyString; // 将字符串值赋给另一个变量

对于 WSTRING, 可以使用类似的 SCL 代码, 但需要注意编码方式和字节长度.

7. 总结

理解西门子 S7-1200 和 S7-1500 PLC 中的 STRING 和 WSTRING 类型对于进行字符串处理至关重要. 掌握长度前缀, 编码方式和最大长度等概念, 可以帮助你编写出高效, 可靠且能够正确处理各种字符集的 PLC 程序.

8. 参考资料

  • 西门子 S7-1200 编程手册
  • 西门子 S7-1500 编程手册
  • TIA Portal 帮助文档
Tags: plc