| | |
| | | import com.example.springboot.component.S7control; |
| | | import com.example.springboot.entity.GlassInfo; |
| | | import com.example.springboot.entity.StorageCage; |
| | | import com.example.springboot.entity.glassinfo; |
| | | import com.example.springboot.entity.device.PlcParameterObject; |
| | | import com.example.springboot.mapper.AlbaniaMapper; |
| | | import com.example.springboot.mapper.SpianMapper; |
| | | import com.google.common.primitives.Bytes; |
| | | |
| | | |
| | |
| | | //读取DB105区文件 |
| | | private PlcParameterObject plcmes=PLCAutoMes.PlcMesObject; |
| | | public Short selectAll(GlassInfo glassInfo) { |
| | | if(glassInfo==null){ |
| | | //有进片请求但是测量台没有玻璃 |
| | | return 400; |
| | | } |
| | | //定义初始字段 |
| | | int cageid; |
| | | |
| | | StorageCage cage; |
| | | String glassid=glassInfo.getGlassid(); |
| | | Double width=glassInfo.getWidth(); |
| | | Double height=glassInfo.getHeight(); |
| | | String flowcard=glassInfo.getFlowcard(); |
| | | int glasstype=glassInfo.getGlasstype(); |
| | | //判断是否有同类型的 |
| | | cageid=albaniaMapper.SelectCage(glassInfo.getGlasstype(), glassInfo.getWidth(), 50); |
| | | cage=albaniaMapper.SelectCage(glasstype,width, 50); |
| | | |
| | | //如果有同类型时直接增加 |
| | | if(cageid!=Integer.MIN_VALUE){ |
| | | albaniaMapper.UpdateCageNumberAdd(cageid); |
| | | }else{ |
| | | if(cage!=null){ |
| | | //发送plc任务 |
| | | Mestast(glassid, 1001, cage.getId(), 1,"MESID1",1); |
| | | |
| | | }else{ |
| | | //判断玻璃是否进入大片笼 |
| | | if(glassInfo.getThickness()>=15){ |
| | | cageid=albaniaMapper.SelectNewCell(3,5); |
| | | if(glassInfo.getThickness()>=15){ |
| | | cage=albaniaMapper.SelectNewCell(3,5); |
| | | }else{ |
| | | cageid=albaniaMapper.SelectNewCell(3,5); |
| | | cage=albaniaMapper.SelectNewCell(0,5); |
| | | } |
| | | //当返回的格子号为空时,返回400笼子已满 |
| | | if(cageid==Integer.MIN_VALUE){ |
| | | if(cage!=null){ |
| | | albaniaMapper.AddCage(cage.getId(), glassid,width, height, 1, cage.getGlasstype(), 0); |
| | | Mestast(glassid,1001,cage.getId(),1,"MESID1",1); |
| | | albaniaMapper.UpdateStorage(width,height,cage.getId()); |
| | | albaniaMapper.UpdateQueueState(glassid); |
| | | }else{ |
| | | return(400); |
| | | } |
| | | } |
| | | //增加任务记录 |
| | | albaniaMapper.Inserttask(0, 0, 1001, cage.getId(), glassid,glasstype, flowcard,0,0); |
| | | return(200); |
| | | |
| | | } |
| | | |
| | | public Short selectout2(String glassid) { |
| | | |
| | | //出片 |
| | | public Short selectout(int line) { |
| | | GlassInfo glassmate=new GlassInfo(); |
| | | GlassInfo method=new GlassInfo(); |
| | | StorageCage glass=new StorageCage(); |
| | | method=albaniaMapper.SelectMethod(line); |
| | | double width=0; |
| | | for(int i=1;i<=7;i++){ |
| | | //如果不是直通模式只出有完整配片的流程卡 |
| | | if(method.getMethod()==0){ |
| | | glassmate= albaniaMapper.SelectOutGlass(line); |
| | | }else{ |
| | | //直通模式时按顺序直出 |
| | | glassmate= albaniaMapper.SelectOutGlass2(line); |
| | | } |
| | | |
| | | if(glassmate==null){ |
| | | //未领取任务 |
| | | return (400); |
| | | }else{ |
| | | |
| | | glass= albaniaMapper.SelectCageGlass(glassmate.getGlasstype()); |
| | | if(glass!=null){ |
| | | //发送任务之前判断车上的剩余宽度是否大于此玻璃 |
| | | width=width+glassmate.getWidth()+50; |
| | | //大于车上空余宽度时提前发送出片启动 |
| | | if(width>5000){ |
| | | //本次配片完成发送启动命令 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short)1);//出片任务启动 |
| | | return (200);//结束 |
| | | } |
| | | //发送配片数据 |
| | | Mestast(glass.getGlassId(), glass.getId(),40, 0,"MESID"+i,i); |
| | | albaniaMapper.AddFinishNumber(glassmate.getFlowcard(), glassmate.getMateid(), glassmate.getTier()); |
| | | albaniaMapper.Inserttask(1, 0, glass.getId(), 2002, glassmate.getGlassid(), glassmate.getGlasstype(),glass.getFlowcard(),glassmate.getMateid(),glassmate.getTier()); |
| | | if(glassmate.getTier()==glassmate.getId()){//当配片数量等于成品小片总片数时 |
| | | //本次配片完成发送启动命令 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short)1);//出片任务启动 |
| | | return (200);//结束 |
| | | } |
| | | |
| | | }else{ |
| | | return (400);//结束 |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | return(200);// 结束 |
| | | } |
| | | |
| | |
| | | glassidlist.add((byte) iditem); |
| | | } |
| | | byte[] bytes = Bytes.toArray(glassidlist); |
| | | //writeString |
| | | System.out.println("outmesidbytes:" + bytes.length); |
| | | S7control.getinstance().WriteByte(plcmes.getPlcParameter(address).getAddress(plcmes.getPlcParameter(address).getAddressIndex()),bytes); |
| | | //S7control.getinstance().WriteByte(address, bytes);// 派发出片id |
| | | System.out.println(plcmes.getPlcParameter(address).getAddress()); |
| | | System.out.println(); |
| | | |
| | | } |
| | | |
| | |
| | | writedstrIdOut.append((char) iditem); |
| | | } |
| | | } |
| | | return writedstrIdOut; |
| | | return writedstrIdOut; |
| | | } |
| | | |
| | | // char数组转化成bit数组 |
| | |
| | | return listbool; |
| | | } |
| | | |
| | | // 根据玻璃id完成在进行中的任务 |
| | | public void overtask(String glassid) { |
| | | |
| | | // spianMapper.UpdatetaskOut(glassid.toString());// 完成上一次 出片或者进片任务 |
| | | // spianMapper.OverOutSlice(glassid.toString(), 2, 1);// 完成出片队列任务 |
| | | // spianMapper.UpdataGlassCage(glassid.toString(), 0);// 清除出片格子玻璃信息 |
| | | // spianMapper.UpdateCageOver(glassid.toString(), 0);// 更改笼子表出片状态 |
| | | // spianMapper.UpdateCageadd(glassid.toString(), 1);// 更改笼子表进片状态 |
| | | // spianMapper.UpdateAddQueue(glassid.toString());// 把进片的玻璃更新到出片队列中 |
| | | //下发理片任务 |
| | | public void Mestast(String glassid,int MESToPLCStart1,int MESToPLCTarget1,int MESToPLC,String address,int i) { |
| | | S7control.getinstance().writeString(plcmes.getPlcParameter(address).getAddress(),glassid);//玻璃id |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCStart"+i).getAddress(), (short) MESToPLCStart1);//起始位置 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCTarget"+i).getAddress(), (short) MESToPLCTarget1);//目标位置 |
| | | if(MESToPLC!=0){ |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short)MESToPLC);//mes理片任务类型 |
| | | } |
| | | } |
| | | |
| | | |
| | | } |