字符串与文本
数据操作
像专家一样处理文本数据。从动态标签生成到协议解析,掌握 PLC 中的每一条字符串处理指令。
为什么在 PLC 中处理字符串?
虽然 PLC 主要设计用于二进制和数值逻辑,但字符串操作对于现代工业界面至关重要。它们允许为 HMI 生成动态消息,解析扫描仪的条形码或二维码,并通过格式化文本协议与 IT 系统进行通信。
TIA Portal 提供了一套强大的指令来管理 STRING (ASCII) 和 WSTRING (Unicode) 类型,确保您的机器可以用任何语言进行清晰的沟通。
拼接与插入
构建动态消息
CONCAT — 拼接字符串
CONCAT功能描述
将两个或多个字符串合并为一个输出字符串。源字符串按定义顺序进行追加。
使用场景
通过前缀和变量名创建完整的状态消息,或构建用于日志记录的 CSV 行。
专业技巧
务必检查目标字符串的最大长度以避免截断。
在 SCL 中,如果支持,可以使用 '+' 运算符进行更简单的拼接。
将 CONCAT 与空格字符结合使用,以确保 HMI 输出的可读性。
INSERT — 插入字符串
INSERT功能描述
在现有字符串的指定字符位置 (P) 插入子字符串。
使用场景
在动态文本模板中添加单位符号(如 'kg' 或 '°C')。
专业技巧
如果 P 为 0,子字符串将插入到开头。
如果 P 大于字符串长度,子字符串将追加到末尾。
适用于日期/时间字符串的动态格式化。
搜索与修改
分析文本数据
FIND — 搜索子字符串
FIND功能描述
在字符串中搜索特定模式并返回起始位置。如果未找到,则返回 0。
使用场景
在扫描仪输入字符串中定位分隔符(如逗号或分号)。
专业技巧
搜索区分大小写。'Error' 与 'error' 不同。
直接在 MID 指令中使用返回的位置来提取数据。
在循环中,可以通过更新起始字符串来查找多次出现的位置。
REPLACE — 替换部分内容
REPLACE功能描述
从位置 P 开始,用新的子字符串替换特定数量的字符。
使用场景
更新静态消息的变量部分,而无需重建整个字符串。
专业技巧
若要删除字符而不添加新字符,请使用空字符串作为替换内容。
常用于将 {val} 等占位符替换为实际数值。
注意字符计数,以避免意外移动文本的其余部分。
转换与提取
连接数字与文本
VAL_STRG / STRG_VAL — 转换
VAL_STRG功能描述
将数值(Int, Real)转换为 STRING (VAL_STRG) 或从 STRING 中解析数字 (STRG_VAL)。
使用场景
在自定义文本消息中显示 Real 类型温度,或将串口输入转换为 Integer。
专业技巧
配置 FORMAT 输入以定义小数点和正负号行为。
STRG_VAL 对小数点分隔符(点或逗号)敏感。
检查状态输出以确保转换成功。
LEFT / RIGHT / MID — 提取
MID功能描述
从左侧、右侧或特定的中间位置 (MID) 提取字符串的一部分。
使用场景
从条形码中获取前缀,或提取括号之间的值。
专业技巧
MID(IN, L, P) 从位置 P 开始提取 L 个字符。
如果 L 超过可用字符数,指令将返回到末尾的所有内容。
对于从第三方串口协议中“拆箱”数据至关重要。
STRING 与 WSTRING 对比
选择正确的文本格式
| 属性 | STRING | WSTRING |
|---|---|---|
| 编码 | ASCII / 扩展 ASCII | Unicode (UTF-16) |
| 每字符字节数 | 1 字节 | 2 字节 |
| 最大长度 | 254 字符 | 16382 字符 |
| 用途 | 标准西欧文本 | 国际化 / 特殊字符 |
| 内存占用 | 低 | 高(双倍) |
| SCL 前缀 | '' (单引号) | W#'' |
常见问题解答
TIA Portal 中 STRING 的最大长度是多少?
标准 STRING 最多可容纳 254 个字符。如果您需要更多,必须使用 WSTRING 类型,在 S7-1500 上它可以处理多达 16,382 个字符。
为什么我的 VAL_STRG 转换失败了?
最常见的原因是目标字符串长度不足,或 FORMAT 参数不匹配(例如,试图将较大的 REAL 放入较小的 STRING 中)。
我可以在优化的数据块中使用字符串吗?
可以,优化的 DB 完全支持字符串。但请记住,它们在内存中始终占用其定义的最大大小,外加 2 字节的长度表头。
如何在 SCL 中比较两个字符串?
您可以使用标准比较运算符(=, <>, <, >)。TIA Portal 会根据字符串的 ASCII/Unicode 值逐个字符进行比较。