数据的存和取SCL
今天公司同事又过来和我说,想让我给流水线添加一个小程序,用于工厂产品流水线上的产品做检测判断,通过判断后来确认是那一条分支流水线过来的产品,方便现场操作员做出及时调整设备工艺。
从公司同事那里大概了解了该流水线的大致情况,是由5~6条分支生产线过来的产品,集中在该处分拣,分拣后分别输送到各自的流水线上分别加工,由于目前工艺原因,需要在流水线上提前判断每一条流水线过来产品的大致情况,及早做出产品的判断,方便与上道工序的工艺修改和匹配。
这样的控制程序我想应该需要如下几个功能:
1) 具备流水线产品数量的记录,即通过工业相机和扫描枪、激光测高仪等工具检测到的数据,需要记录,相当于需要创建应该数据表格之类的;
2) 进这个表格,需要一个记录条件,可以利用流水线上的光电开关的下降沿;
3) 判断后移出表格的数据,需要在表格上减去,实际上就是一个典型的先进先出的应用例子,仍然是以流水线上检测判断工位的光电下降沿作为判断依据;
4) 表格记录不需要员工干预,只在合适的媒介上显示表格空和满,两种绝端的情况及数据存入表格的数量(产品个数);
5) 现场操作员根据数据取出的数据,现场判断分析,知道是那一条流水线下来的产品。
程序:
测试项目创建10个int,实际现场数据为12个字符长度的字符串数据,为方便测试,样例用10个int数据存储区验证。
1) 新建一个测试项目,用S7-1214C作为样例程序,创建一个FB1,图示:
创建一些必要的接口参数。
程序架构非常简单,分3部分内容。
第一部分:判断数据存入的“光电开关信号”是否为1,如果是1,则数据记录加1的同时,将数据存入的数据传送给“index”(相当于数据的一个索引),完成后,关闭“光电开关信号”为0。
第二部分:判断数据取出的“光电开关信号”是否为1的同时,判断数据存储器“index”有已经存储的数据后,取出已经存放的数据,同样完成后关闭取出的“光电开关信号”为0。
第三部分:判断数据存储的状态,当index = 0时,数据空指示灯亮,当index = 10时,数据满指示灯亮,其余的状态指示灯均灭。
2) 新建一个数据块DB2,用于子程序接口的实参,图示:
3) 在OB1调用的情况,图示:
4) 新建一个监控表,写入需要测试的变量地址,将验证程序下载到cpu,图示:
数据空的指示灯亮起。
说明判断数据空的程序没有问题。
5) 分别将数据11、12、13、14输入给数据存入变量,图示:监控FB1的背景数据块。
数据能够正常存储到数据数组中,记录部分基本正常。
6) 直接给index写大于10的数据,看数据满的指示灯是否会亮起:
数据满指示灯显示也正常。
7) 最后,测试取出数据部分程序,使能启动取出按钮,图示:
取出数据的程序也正常,此,程序的框架基本引成,把这个验证程序通过微信发送给公司同事作为参考,同时也分享给论坛的朋友们。