数组数据中的相同数据的查询SCL
昨天公司同事让我做流水线数据(产品数据)的存和取的小程序框架,我给同事打了一个框架,验证整理后我也同时在论坛上发有一贴,链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1795251&b_id=50&s_id=0&num=7#anch
晚上回家时,想起如何在此基础上增加一个数据查询功能?也方便需要查询的数据在流水线上到底有多少个,我想这个功能应该可以实现的。
今天一早,处理完手头的工作后,想起这件事情,于是就在昨天原程序上,我再添加了数据查询功能的程序段。
添加过程的思路:
1) 查询功能需要一个类似的按钮(无论是硬件的实体按钮,也可以在HMI创建一个虚拟的按钮),当该按钮使能后,进行查询,平时该按钮不使能就不需要工作;
2) 需要在原程序接口上添加一个比对数据(产品序列号:一维码结构的字符串)的源数据码;(同事还让我做一个产品输入相同序列号时的提示信息,这个项目在以后的帖子上再体现,这里不展开)
3) 比对后,需要显示比对后的结果,有几个数据相同。相同的数据在那些数组下标中(这个我暂时还没有理顺,等有机会再试试);
4) 如果比对后没有相同的数据,显示输出没有找到相同数据的指示灯;
程序:
1) 在原FB1的接口表中添加需要的接口变量,图示:
查询程序:
程序也非常简单,说明如下:
仍然是调用IF指令的添加语句,当“数据查询” = 1时,则执行IF ~ END_IF之间的语句。
其中,先进入FOR循环,目的是把所有的数据逐个与源数据轮询一边,来搜索数组数据中可能有的相同数据。如果有,则,“相同数据的个数”+= 1;反正,数据不相同就不加的工作机制。
2) 重新在原DB2块中添加必要的数据参数,编译,在OB1中“更新块的调用”并连接新的接口参数,将程序编译后,下载到cpu,图示:创建必要的监控表。
监控表上测试显示数据10有4个数据相同,返回到FB1的背景数据块上查看:
查看、验证后结果确实有4个10的数据,说明查询程序的框架是可以的。