『7x24小时有问必答』

▎西门子博途 LGF 库详解 · 14:字符串操作——大小写转换、CharArray 提取与查找

扫码枪输出、上位机报文、HMI 输入——PLC 里处理文本的场景比你想象的多。博途原生的字符串指令有限,LGF 的字符串操作组 5 个块补上了大小写转换、CharArray 文本提取和子串查找。

一、5 个块一览

字符串操作组(4.11 Converter / String Operations)

| 块名 | 类型 | 版本 | 功能 |
|------|------|------|------|
| LGF_ToLower | FC | V1.0.0 | String 转小写 |
| LGF_ToUpper | FC | V1.0.0 | String 转大写 |
| LGF_ExtractStringFromCharArray | FC | V1.1.0 | 从 Variant 字符数组中按前后标记提取字符串 |
| LGF_ExtractStringFromCharArrayAdv | FC | V1.1.0 | 同上 + 指定起始位置和长度 + 可选包含前后标记 |
| LGF_FindStringInCharArray | FC | V1.1.0 | 在 Variant 字符数组中查找子串位置 |

二、引脚详解

#### LGF_ToLower / LGF_ToUpper
引脚类型方向说明
InStringIN输入字符串
Ret_ValStringOUTToLower: 全部转小写;ToUpper: 全部转大写
#### LGF_ExtractStringFromCharArray
引脚类型方向说明
textBeforeStringIN要提取内容的前置标记文本
textAfterStringIN要提取内容的后置标记文本
searchInVariantIN待搜索的字符数组(Array of Char)
Ret_ValWordOUT状态码
extractedStringStringOUT提取出的字符串(不含前后标记)
statusWordOUT状态码
#### LGF_ExtractStringFromCharArrayAdv
引脚类型方向说明
textBeforeStringIN前置标记文本
textAfterStringIN后置标记文本
includeBeforeAfterBoolINTRUE=提取结果包含前后标记
startPosDIntIN搜索起始位置(0-based)
searchInVariantIN待搜索的字符数组
Ret_ValWordOUT状态码
extractedStringStringOUT提取结果
positionDIntOUT找到的位置
lengthIntOUT提取的长度
statusWordOUT状态码
#### LGF_FindStringInCharArray
引脚类型方向说明
searchForStringIN要查找的子串
startPosDIntIN搜索起始位置(0-based)
searchInVariantIN待搜索的字符数组
Ret_ValDIntOUT找到的位置(-1=未找到)
statusWordOUT状态码

三、实战案例

#### 案例 1:扫码枪数据提取产品编码
扫码枪输出格式为 "[PROD]ABC12345[/PROD]",从中提取产品编码:

CharArray 提取产品编码

LGF_ExtractStringFromCharArray(textBefore := '[PROD]', textAfter := '[/PROD]',
searchIn := barcodeArray, extractedString => productCode);
提取结果是 "ABC12345",前后标记被自动去除。
#### 案例 2:HMI 输入规范化
HMI 输入的用户名可能大小写混用,统一转小写后比较:

ToLower 输入规范化

normalizedName := LGF_ToLower(hmiInput);
IF normalizedName = expectedName THEN loginOK := TRUE; END_IF;
#### 案例 3:Adv 版精确提取含前后标记
需要保留标记内容以便后续处理:

Adv 版包含标记提取

LGF_ExtractStringFromCharArrayAdv(textBefore := '<', textAfter := '>',
includeBeforeAfter := TRUE, startPos := 0,
searchIn := xmlArray, extractedString => fullTag);
// 结果包含 '' 而非 'tag'

四、总结与下载

下载信息

| 项目 | 内容 |
|------|------|
| 库名称 | Library of General Functions (LGF) |
| SIOS-ID | 109479728 |
| 下载地址 | 中文站:www.ad.siemens.com.cn/download/documentdetail_12471.html |
| 当前版本 | V5.1.1(中文站最新;SIOS 全球站另有 V5.2.1) |
| 兼容 | TIA Portal V17+、S7-1200 (固件 ≥V4.2)、S7-1500 (固件 ≥V2.0) |
| 费用 | 完全免费 |
> 本文所有引脚数据基于 LGF V5.1.1 官方文档。全球站:support.industry.siemens.com/cs/document/109479728
下篇预告:LGF 库详解 · 15——类型转换(上)。IntString、DTLString(DE/ISO)、TimeString、TaddrString——10 个块覆盖最常用的数据类型互转。欢迎点赞、在看、转发

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码