首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >PLC Control with ST,V3版本学习笔记11—字符CHAR及字符串STRING!

PLC Control with ST,V3版本学习笔记11—字符CHAR及字符串STRING!

作者头像
Hello工控
发布2025-12-23 14:16:19
发布2025-12-23 14:16:19
1420
举报
文章被收录于专栏:Hello工控Hello工控

STRING(字符串)类型数据在我们的PLC编程应用中,是非常常见的类型。特别在HMI里面,对程序数据的说明、变量的解释、多文本的显示及报警显示等等,都有大量的使用!

这期我们重点介绍STRING(字符串) ,这个 PLC 编程中用于处理文本的数据类型。

主要应用

字符CHAR和STRING主要的应用在:

(1) HMI(人机界面)显示动态文本和数字
  • 在操作面板上在线切换语言(如丹麦语和英语),无需修改 PLC 代码(多语言支持)。
  • 向用户显示消息和指令,如生产信息、密码输入、字母读取、时间/日期、报警文本。
(2) 文件和数据库数据处理
  • 从硬盘读取文件数据(如设备配置、参数设定点)。
  • 数据记录(如事件测量、设置更改或机械状态变化)。
  • 从硬盘或存储卡读取文本。
  • 与生产系统(ERP、SAP、MES、WCS)交换消息。
  • 处理文件名、文件夹名、电子邮件等。
(3) PLC/PC/仪器之间的数据通信
  • 仪器以 ASCII 格式发送数据(如条形码、QR 码、RFID 标签)。
  • 向标签打印机发送信息(如包装盒标签、生产日期)。
  • 发送 SMS(如手机报警/指令)。
  • 处理混合字母的长数字(如自动化设备的测量数据、报警信息)。

除了这些,还有其他的具体应用不一一列举。

文本相关数据类型

主要有以下几种数据类型:

对应的IEC61131-3标准里面的定义:

在使用这些类型的数据需要注意以下事项:
  1. 仅在必要时使用 STRING,因为它会占用较多 CPU 资源和内存。
  2. 按需定义 STRING 长度,避免浪费内存(如 STRING[20] 而非默认 254)。
  3. 并非所有 PLC 都支持 CHAR/WCHAR,若需存储单个字符,可用 STRING[1]BYTE 替代。
  1. STRING 的长度计算
    • 遇到 0(NULL 终止符) 为止(某些编程语言在索引 0 存储字符串长度,需注意跨设备通信兼容性)。
  2. STRING 的存储方式
    • PLC 以 ASCII 码(整数形式) 存储字符,CPU 只能处理整数数据。可以参考下表:

6. 长文本处理

  • PLC 通常限制 STRING 最大长度为 255 字符
  • 若文本超长,可拆分为多个 STRING 存储(如 STRING[255] 分段处理)。

字符串定义的示例如下:

内存占用说明

  • 未指定长度(如 szDemo):占用 254 字节 + 1 字节终止符
  • 固定长度(如 szDemoFix):占用 35 字节 + 1 字节终止符

特殊字符与转义序列

除了上述常规的字符以外,还有显示:‘,“,$等等特殊的字符,在PLC中如何处理呢?

那就需要用到转义字符或序列来处理了,如下表所示:

多文本语言的示例:

特殊的字符使用的关键注意事项
  1. 转义字符一致性:不同 PLC 厂商可能支持不同的转义规则(需查阅手册)。
  2. HMI 兼容性:某些 HMI 设备可能不识别 $N,需使用 \n
  3. 调试技巧
    • 若字符串显示异常,检查是否遗漏转义符(如未转义的 " 会导致解析错误)。
    • 使用 ASCII 码直接赋值(如 STRING[1] := 34; 表示 ")。

有关STRING的标准函数

在字符串需要进行拼接、删除某个字符、或者查找某个字符等等功能时,那就需要用到有关STRING字符串的相关函数了。

我们下表总结以下函数:

函数名称

语法示例

功能说明

注意事项

CONCAT

CONCAT(str1, str2)

连接两个字符串,返回 str1 + str2。

结果长度不能超过目标变量的定义长度(如 STRING[50])。

DELETE

DELETE(str, pos, len)

从字符串 str 的 pos 位置开始删除 len 个字符。

- pos 从 1 开始计数。- 若 pos + len 超出长度,删除到字符串末尾。

FIND

FIND(strMain, strSub)

返回子串 strSub 在 strMain 中的起始位置(未找到返回 0)。

区分大小写(如 'A' ≠ 'a')。

INSERT

INSERT(str1, str2, pos)

在 str1 的 pos 位置插入 str2。

- pos 超出范围时可能追加到末尾或忽略。- 总长度需合法。

LEFT

LEFT(str, len)

返回字符串左侧的 len 个字符。

若 len 超过字符串长度,返回完整字符串。

LEN

LEN(str)

返回字符串的实际长度(不包含终止符 \0)。

空字符串('')返回 0。

MID

MID(str, pos, len)

从 str 的 pos 位置开始提取 len 个字符。

- pos 从 1 开始计数。- 若 pos 或 len 超限,返回有效部分或空字符串。

REPLACE

REPLACE(str, pos, len, strNew)

将 str 中从 pos 开始的 len 个字符替换为 strNew。

替换后总长度不能超过目标变量定义。

RIGHT

RIGHT(str, len)

返回字符串右侧的 len 个字符。

同 LEFT 函数逻辑。

当然,需要注意的时STRING可以看作是特殊的一个数组类型,例如插入一个字符可以用下方这种方式:

最后结果:

另外,在做数据转换时,要考虑我们在第8章介绍的内容:

特别是在STRING类型转换成INT、REAL等数据类型的时候,需要确定STRING是否是数值类型的,例如’12A3‘,这种转换就会出错了:

推荐使用IsNumber函数进行判断后,再来进行转换!

代码语言:javascript
复制
FUNCTION IsNumber : BOOL
VAR_INPUT
    str : STRING;
END_VAR
VAR
    i : INT;
    ch : CHAR;
END_VAR
IsNumber := TRUE;
FOR i := 1 TO LEN(str) DO
    ch := MID(str, i, 1);
    IF NOT (ch >= '0' AND ch <= '9' OR ch = '.' OR ch = '-') THEN
        IsNumber := FALSE;
        EXIT;
    END_IF;
END_FOR;

END_FUNCTION

最后,关于WSTRING的说明,我们实际应用主要是让它显示成中文字符,所以用这类变量就很方便!

针对WSTRING类型的函数,例如WCONCAT、WLEN并不是所有的PLC支持,所以应用时要查看对应的手册!

具体的示例我们这里不做介绍,大家有兴趣的可以直接查阅原书第11章节的11.3-11.5节。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hello工控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主要应用
    • (1) HMI(人机界面)显示动态文本和数字
    • (2) 文件和数据库数据处理
    • (3) PLC/PC/仪器之间的数据通信
    • 在使用这些类型的数据需要注意以下事项:
  • 6. 长文本处理
    • 特殊的字符使用的关键注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档