加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线15915421161
公司新闻
西门子TIA博途SCL实现带有不固定位数空格的字符串截取处理
发布时间: 2024-03-12 09:38 更新时间: 2024-11-06 07:00

一、前序

在西门子(TIA博途)PLC编程,环境下我们经常会遇到空格字符串需要截取,如果是后固定的字符串需要截取,我们可以使用自带指令进行指定
MOVE_BLK指令进行处理。

图片

但是如果前后出现不固定位数的空格字符的时候,西门子自带的常规的指令就很难处理了。

今天我们分享一段SCL小程序,实现带有空格的字符串截取方法

二、步骤及要点说明 

1.新建一个FB程序块

图片

2.在新建FB功能块中填入下面图片中变量

图片

3.在新建FB功能块中填入下面程序。*考虑到程序可读性,程序添加了注释

图片






























  • //截取字符赋值#截取字符 := ' ';IF #截取触发 THEN    //字符串总长度获取    #数据总长度 := LEN(#处理前字符串);    //前空格截取**************************************************************************************************************    //循环查找需要截取字符    FOR #i := 1 TO #数据总长度 DO        //循环截取1个符比较        #截取比较字符 := MID(IN := #处理前字符串, L := 1, P := #i);        //循环截取字符没有找到后进行截取赋值,退出循环        IF #截取比较字符 <> ' ' THEN           #字符串中转 := RIGHT(IN := #处理前字符串, L := #数据总长度 - (#i - 1));         //#字符串中转 := MID(IN := #处理前字符串, L := #数据总长度 - #i + 1, P := #i);            EXIT;        END_IF;    END_FOR;    //后空格处理**************************************************************************************************************    //找出需要截取的后空格符位置    #字符比较位置 := FIND(IN1 := #字符串中转, IN2 := #截取字符);    //后字符比较判断          IF #字符比较位置 = 0 THEN                         //等于0表示没有找到要比较字符,则直接复制        #处理后字符串 := #字符串中转;    ELSE                                              //不等于0表示找到要比较字符,把检测到字符串位置减1,等于需要截取字符串总数          #处理后字符串 := MID(IN := #字符串中转, L := #字符比较位置 - 1, P := 1);    END_IF;    #截取触发 := FALSE;END_IF;
    4.新建一个全局DB数据块。图片5.在新建的全局DB数据块,按照下图添加变量。

    图片

    6.把新建的FB功能块添加进OB1块中,并填入全局DB数据块中变量。

    图片

    7.测试输出结果

    (1)字符后面,有空格字符处理效果

    图片

    (2)字符前面,有空格字符处理效果

    图片

    (3)字符前后,都有空格字符处理效果

    图片


    联系方式

    • 电  话:15903418770
    • 联系人:张经理
    • 手  机:15915421161
    • 微  信:15915421161