每周一个编程小例子:轻松去除字符串前导字符

引言

在自动化控制领域中,PLC(可编程逻辑控制器)广泛应用于生产和工业控制过程。作为 PLC 工程师,编写程序实现特定功能是日常工作的重要组成部分。今天我们将介绍一段常见的字符串处理程序——清除字符串开头连续特定字符。这个功能在需要处理或格式化输入字符串时非常有用,尤其是在设备通讯或者数据采集系统中,确保数据的准确性和规范性。本文将对该程序的结构、工作原理及应用场景进行详细介绍。

1  程序代码及介绍

下面是完整的 PLC 程序代码(代码基于 TIA 平台的 SCL 语言):

  • FUNCTION_BLOCK "ClearLeadingCharOfString"
  • { S7_Optimized_Access := 'TRUE' }
  • VERSION : 0.1
  •         VAR_INPUT 
  •                 sourceString : String;   // 输入字符串   
  •                  Identifier : Char := '0';   // 清除的字符(最左边的连续字符) 
  •         END_VAR 
  •          VAR_OUTPUT 
  •                 outString : String;   // 输出字符串 
  •         END_VAR
  •         VAR 
  •                 i : Int;   
  •                 lenght : Int;   // 字符串长度
  •                 Cnt : Int;   // 清除字符个数 
  •                 sta_str : String; 
  •         END_VAR
  • BEGIN
  •                     #lenght := LEN(#sourceString);
  •                     FOR #i := 1 TO #lenght DO
  •                               #sta_str := MID(IN := #sourceString, L := 1, P := #i);
  •                               IF #sta_str = #Identifier THEN      
  •                                       #Cnt := #i;
  •                               ELSE
  •                                      #outString := RIGHT(IN := #sourceString, L := #lenght - #Cnt);        
  •                                      EXIT;
  •                                END_IF;
  •                     END_FOR;
  •                     IF #Cnt = 0 THEN    
  •                                #outString := #sourceString;
  •                     END_IF;
  • END_FUNCTION_BLOCK 

1.1 代码解析

功能定义:

  • 输入参数:sourceString(输入的字符串)、Identifier(需要去除的字符,默认为'0')。

  • 输出参数:outString(处理后的输出字符串)。

  • 该函数块的目的是去除输入字符串中从左边开始,连续的指定字符(默认为‘0’),直至遇到不同的字符为止。

内部变量:

  • lenght:字符串的总长度。

  • Cnt:记录已去除字符的数量。

  • sta_str:在循环过程中,用于逐个字符检查的临时变量。

程序逻辑:

  • 通过FOR循环遍历字符串中的每个字符,逐个与Identifier(指定字符)进行比较。

  • 当遇到不同字符时,程序通过RIGHT函数从原始字符串中截取有效部分,去除最左边的连续Identifier字符。

  • 如果整个字符串都是由Identifier字符构成,则输出原字符串。

2  应用场景

该函数块在以下几种场景中非常有用:

数据清洗:在工业控制系统中,有时从外部设备读取的数据可能包含多余的前导字符(如零、空格等)。通过该程序,可以快速清除这些无效字符,确保数据的准确性和规范性。

通讯协议处理:在设备通讯过程中,某些协议可能要求发送的数据以特定的字符填充,如使用'0'字符进行填充。此时,接收到的数据需要去除前导的填充字符以获取有效信息。

报表生成:在自动化系统生成报表时,若数据字段中有不必要的填充字符,可以通过此程序进行处理,使报表更清晰、规范。

3  拓展思考

支持多种字符去除:当前程序仅支持去除单一字符。如果要扩展程序以支持去除多种字符,可以考虑修改Identifier为字符串类型,并使用循环检查每个字符是否匹配。

性能优化:该程序采用逐个字符比较的方式,对于较长的字符串,效率可能较低。优化方向可以考虑使用更多内建的字符串操作函数或并行处理方法。

用户自定义输入:可以添加用户输入验证功能,确保输入的Identifier字符有效,避免程序因无效输入导致运行错误。

总结

本文介绍的 PLC 程序实现了从输入字符串中去除指定字符的功能。通过该程序,我们能够灵活地处理工业自动化系统中的字符串数据,确保数据规范性和精确性。此功能在实际应用中非常广泛,尤其是在数据清洗和通讯协议处理中。我们还探讨了拓展思考,提出了多个优化方向,以便在不同的应用场景中能够满足更多的需求。

图片

你来出题 我来答图片图片图片

欢迎大家在评论区提一些标准功能块的需求,如果合适,我们会在以后的文章中与大家分享。

图片

往期回顾

每周一个编程小例子 :Bit 到 Word 转换的两种实现方案对比

每周一个编程小例子:记录设备运行时间

每周一个编程小例子:基于长按检测的启动控制系统

每周一个编程小例子:探秘 PLC 数据记录功能块

每周一个编程小例子:心跳检测与 PLC 应用

每周一个编程小例子:斜坡发生器

每周一个编程小例子:旋转速度计算

每周一个编程小例子:计算 PLC 循环周期|例程需求征集!

每周一个编程小例子:如何优雅的分割字符串

每周一个编程小例子:带反馈的阀门控制程序

每周一个编程小例子:西门子 LGF 库中的脉冲继电器功能块

每周一个编程小例子:曲线加减速的控制应用

图片

2025年07月

Tags: