顾乔芝士网

持续更新的前后端开发技术栈

三菱FX5U中字符串的查找与替换怎么用?(附程序案例)

今天我们来讲一下字符串的查找,当在通信过程中,我们收到的是一系列的字符串,我们要在一系列字符串中查找有用的信息并进行与协议对比,然后得出对比结果并进行相应的处理,字符串的查找一般会用在PLC与其他设备通信中,前面我们讲过了一些列的字符串处理方法:
三菱FX5U中如何在一串字符串中随意截取部分字符串-字符串提取指令的应用
三菱FX5U字符串长度检测指令的应用
三菱FX5U字符串传递及字符串转化为浮点型数据相关指令的应用
三菱FX5U与上位机Socket通信(PLC作为客户端,附详细程序及注解)
一、指令介绍
字符串查找指令: INSTR
官方解释:从(s2)中指定的软元件编号以后中存储的字符串数据的左侧第(s3)字符开始,搜索(s1)中指定的软元件编号以后中存储的字符串数据,将搜索结果存储到(d)中指定的软元件中。
内容、范围、数据类型:

(s1): 搜索字符串或存储了搜索字符串的软元件起始编号 字符串类型

(s2): 搜索的字符串或存储了搜索的字符串的软元件起始编号 字符串类型

(d) : 存储搜索结果的软元件起始编号 有符号BIN16位

(s3): 搜索开始位置 有符号BIN16位

可以使用的软元件:

出错代码 (SD0/SD8067)

2820H:

(s1)中指定的软元件以后,相应软元件的范围内没有NULL代码(00H)时。

(s2)中指定的软元件以后,相应软元件的范围内没有NULL代码(00H)时。

3405H:

(s3)的值超过了(s2)的字符数时。

(s1)的字符串超过了16383字符时。

(s2)的字符串超过了16383字符时。

二、程序测试

官方解释永远都是非常晦涩难懂,我们用程序案例来讲解这个指令的使用:

我们将字符串“adcd1234”传送到D122

将字符串“cd”传送到D156

将字符串“12”传送到D158

我们分别在D122中查找D156与D158中的字符串,直接看结果:

我们可以看到,字符串“cd”在字符串“adcd1234”中的位置是从第三个字符开始,所以D166中的数据为“3”,并且我们设置的是从D122的左侧第一个字符开始搜索。

我们又设置了从 D122的左侧第二个字符开始搜索,搜索字符串“12”在D122中的位置,结果发现,搜索结果为“5”,就是不管从第几位开始搜索,字符串的位置始终为从D122第一位开始排序。

注意: 搜索开始位置(s3)为负数或“0”的情况下,不进行处理。如下:

将字符串“12”传送到D160

我们可以看到,指令执行过后,因为S3的值设置的为“0”,所以D170的值没有发生变化。


控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言