前言:
目前我们对“字符串数字减一”大约比较关注,咱们都想要剖析一些“字符串数字减一”的相关内容。那么小编也在网上搜集了一些有关“字符串数字减一””的相关资讯,希望同学们能喜欢,兄弟们快快来了解一下吧!一、前序
在西门子(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)前后都有空格字符的处理效果
三、程序仿真
视频加载中...
延伸小知识:PLC-Recorder专业数据采集与分析软件可以采集字符串变量,和数值变量一样便捷。
后期我们会不定期奉献更多PLC工程小技巧。加关注,不迷路。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #字符串数字减一