| | |
| | | } |
| | | //按照线路及玻璃id获取相邻两块玻璃 卧转立上的玻璃: 状态为0不操作(D01送片,0不操作,1允许送片),请求字为1, (02玻璃id为空或者卧转立未启动) |
| | | if (!REQUEST_WORD.equals(mesD01Value) && REQUEST_WORD.equals(d01ToMES) && (StringUtils.isBlank(d02State) || !REQUEST_WORD.equals(d03State))) { |
| | | if (!d01GlassId.equals(d01Id)) { |
| | | judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION, mesD01Address); |
| | | edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>() |
| | | .set(EdgGlassTaskInfo::getStatus, Const.EDG_GLASS_SUCCESS).eq(EdgGlassTaskInfo::getGlassId, d01Id)); |
| | | List<BigStorageCageFeedTask> bigStorageCageFeedTasks=bigStorageCageFeedTaskService.list( |
| | | new LambdaQueryWrapper<BigStorageCageFeedTask>() |
| | | .gt(BigStorageCageFeedTask::getTargetSlot,0) |
| | | .eq(BigStorageCageFeedTask::getLine,Const.A09_OUT_TARGET_POSITION) |
| | | .eq(BigStorageCageFeedTask::getTaskState,Const.BIG_STORAGE_IN_UP) |
| | | ); |
| | | if(CollectionUtils.isEmpty(bigStorageCageFeedTasks)){ |
| | | if (!d01GlassId.equals(d01Id)) { |
| | | judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION, mesD01Address); |
| | | edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>() |
| | | .set(EdgGlassTaskInfo::getStatus, Const.EDG_GLASS_SUCCESS).eq(EdgGlassTaskInfo::getGlassId, d01Id)); |
| | | // d01GlassId = d01Id; |
| | | } |
| | | } |
| | | } |
| | | // 状态为0不操作(D01送片,0不操作,1允许送片),请求字为1, 卧转立未启动 |
| | | if (!REQUEST_WORD.equals(mesD04Value) && REQUEST_WORD.equals(d04ToMES) && !REQUEST_WORD.equals(d05State)) { |
| | | if (!d04GlassId.equals(d04Id)) { |
| | | judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION, mesD04Address); |
| | | edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>() |
| | | .set(EdgGlassTaskInfo::getStatus, Const.EDG_GLASS_SUCCESS).eq(EdgGlassTaskInfo::getGlassId, d04Id)); |
| | | List<BigStorageCageFeedTask> bigStorageCageFeedTasks=bigStorageCageFeedTaskService.list( |
| | | new LambdaQueryWrapper<BigStorageCageFeedTask>() |
| | | .gt(BigStorageCageFeedTask::getTargetSlot,0) |
| | | .eq(BigStorageCageFeedTask::getLine,Const.A10_OUT_TARGET_POSITION) |
| | | .eq(BigStorageCageFeedTask::getTaskState,Const.BIG_STORAGE_IN_UP) |
| | | ); |
| | | if(CollectionUtils.isEmpty(bigStorageCageFeedTasks)){ |
| | | if (!d04GlassId.equals(d04Id)) { |
| | | judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION, mesD04Address); |
| | | edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>() |
| | | .set(EdgGlassTaskInfo::getStatus, Const.EDG_GLASS_SUCCESS).eq(EdgGlassTaskInfo::getGlassId, d04Id)); |
| | | // d04GlassId = d04Id; |
| | | } |
| | | } |
| | | |
| | | } |
| | | Date endDate = new Date(); |
| | | log.info("大理片笼扫码任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime()); |
| | |
| | | } |
| | | if (!REQUEST_WORD.equals(d03ToMES) && !REQUEST_WORD.equals(d05ToMES)) { |
| | | Date endDate = new Date(); |
| | | log.info("卧转立没有送片请求,结束送片任务,任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime()); |
| | | log.info("卧转立第一次没有送片请求,结束送片任务,任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime()); |
| | | return; |
| | | } |
| | | if (!REQUEST_WORD.equals(d03ToMES) && !REQUEST_WORD.equals(d05ToMES)) { |
| | | Date endDate = new Date(); |
| | | log.info("卧转立第二次没有送片请求,结束送片任务,任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime()); |
| | | return; |
| | | } |
| | | // List<Integer> lines=new ArrayList<>(); |
| | | // if(REQUEST_WORD.equals(d03ToMES)){ |
| | | // lines.add(Const.A09_OUT_TARGET_POSITION); |
| | | // } |
| | | // if(REQUEST_WORD.equals(d05ToMES)){ |
| | | // lines.add(Const.A10_OUT_TARGET_POSITION); |
| | | // } |
| | | LambdaQueryWrapper<BigStorageCageFeedTask> wrapper = new LambdaQueryWrapper<BigStorageCageFeedTask>() |
| | | .eq(BigStorageCageFeedTask::getTaskType, Const.BIG_STORAGE_IN_RUN) |
| | | .and(e -> e.isNull(BigStorageCageFeedTask::getTargetSlot).or().eq(BigStorageCageFeedTask::getTargetSlot, Const.OUT_TARGET_POSITION_ZERO)) |
| | | .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP); |
| | | // .in(BigStorageCageFeedTask::getLine,lines); |
| | | //获取可以启动卧转立的任务线路 |
| | | List<BigStorageCageFeedTask> feedTaskList = bigStorageCageFeedTaskService.list(wrapper); |
| | | if (CollectionUtils.isNotEmpty(feedTaskList)) { |
| | |
| | | //获取卧转立剩余宽度 |
| | | if (computeIsRun(lineFirst, lineGlassId)) { |
| | | computeTargetByLine(lineFirst); |
| | | }else{ |
| | | log.info("当前线路:{},有扫码玻璃:{}",lineFirst,lineGlassId); |
| | | } |
| | | } |
| | | Date endDate = new Date(); |
| | |
| | | String d04ToMES = plcParameterObject.getPlcParameter("D04ToMES").getValue(); |
| | | String mesD01Address = plcParameterObject.getPlcParameter("MESToD01").getAddress(); |
| | | String mesD04Address = plcParameterObject.getPlcParameter("MESToD04").getAddress(); |
| | | String d03ToMES = plcParameterObject.getPlcParameter("D03ToMES").getValue(); |
| | | String d05ToMES = plcParameterObject.getPlcParameter("D05ToMES").getValue(); |
| | | // String d03ToMES = plcParameterObject.getPlcParameter("D03ToMES").getValue(); |
| | | // String d05ToMES = plcParameterObject.getPlcParameter("D05ToMES").getValue(); |
| | | String d03ToMES = plcParameterObject.getPlcParameter("D03Request").getValue(); |
| | | String d05ToMES = plcParameterObject.getPlcParameter("D05Request").getValue(); |
| | | String mesD03Address = plcParameterObject.getPlcParameter("MESToD03").getAddress(); |
| | | String mesD05Address = plcParameterObject.getPlcParameter("MESToD05").getAddress(); |
| | | if (!REQUEST_WORD.equals(d01ToMES)) { |
| | | log.info("地址:{}写入0",mesD01Address); |
| | | S7object.getinstance().plccontrol.writeWord(mesD01Address, 0); |
| | | } |
| | | if (!REQUEST_WORD.equals(d04ToMES)) { |
| | | log.info("地址:{}写入0",mesD04Address); |
| | | S7object.getinstance().plccontrol.writeWord(mesD04Address, 0); |
| | | } |
| | | if (!REQUEST_WORD.equals(d03ToMES)) { |
| | | log.info("地址:{}写入0",mesD03Address); |
| | | S7object.getinstance().plccontrol.writeWord(mesD03Address, 0); |
| | | } |
| | | if (!REQUEST_WORD.equals(d05ToMES)) { |
| | | log.info("地址:{}写入0",mesD05Address); |
| | | S7object.getinstance().plccontrol.writeWord(mesD05Address, 0); |
| | | } |
| | | } |
| | |
| | | @Scheduled(fixedDelay = 300) |
| | | public void feedStatusUpdate() { |
| | | PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; |
| | | String mesD03Address = plcParameterObject.getPlcParameter("MESToD03").getAddress(); |
| | | String mesD05Address = plcParameterObject.getPlcParameter("MESToD05").getAddress(); |
| | | List<String> glassIds1 = new ArrayList<>(); |
| | | List<String> glassIds2 = new ArrayList<>(); |
| | | for (int i = 1; i <= 6; i++) { |
| | |
| | | .filter(glassIds1::contains) |
| | | .distinct() |
| | | .collect(Collectors.toList()); |
| | | bigStorageCageFeedTaskService.update( |
| | | new LambdaUpdateWrapper<BigStorageCageFeedTask>() |
| | | .in(BigStorageCageFeedTask::getGlassId, matchingIds1) |
| | | .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) |
| | | .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) |
| | | ); |
| | | log.info("D3id{},匹配id:{}",glassIds1,matchingIds1); |
| | | if(CollectionUtils.isNotEmpty(matchingIds1)){ |
| | | bigStorageCageFeedTaskService.update( |
| | | new LambdaUpdateWrapper<BigStorageCageFeedTask>() |
| | | .in(BigStorageCageFeedTask::getGlassId, matchingIds1) |
| | | .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) |
| | | .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) |
| | | ); |
| | | } |
| | | } |
| | | if (CollectionUtils.isNotEmpty(bigStorageCageFeedTasks2) && CollectionUtils.isNotEmpty(glassIds2)) { |
| | | List<String> matchingIds2 = bigStorageCageFeedTasks2.stream() |
| | |
| | | .filter(glassIds2::contains) |
| | | .distinct() |
| | | .collect(Collectors.toList()); |
| | | bigStorageCageFeedTaskService.update( |
| | | new LambdaUpdateWrapper<BigStorageCageFeedTask>() |
| | | .in(BigStorageCageFeedTask::getGlassId, matchingIds2) |
| | | .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) |
| | | .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) |
| | | ); |
| | | log.info("D5id{},匹配id:{}",glassIds2,matchingIds2); |
| | | if(CollectionUtils.isNotEmpty(matchingIds2)){ |
| | | bigStorageCageFeedTaskService.update( |
| | | new LambdaUpdateWrapper<BigStorageCageFeedTask>() |
| | | .in(BigStorageCageFeedTask::getGlassId, matchingIds2) |
| | | .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) |
| | | .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) |
| | | ); |
| | | } |
| | | } |
| | | if (CollectionUtils.isEmpty(glassIds1)) { |
| | | S7object.getinstance().plccontrol.writeWord(mesD03Address, 0); |
| | | log.info("{}线修改玻璃状态为3",Const.A09_OUT_TARGET_POSITION); |
| | | bigStorageCageFeedTaskService.update( |
| | | new LambdaUpdateWrapper<BigStorageCageFeedTask>() |
| | | .eq(BigStorageCageFeedTask::getLine, Const.A09_OUT_TARGET_POSITION) |
| | |
| | | ); |
| | | } |
| | | if (CollectionUtils.isEmpty(glassIds2)) { |
| | | S7object.getinstance().plccontrol.writeWord(mesD05Address, 0); |
| | | log.info("{}线修改玻璃状态为3",Const.A10_OUT_TARGET_POSITION); |
| | | bigStorageCageFeedTaskService.update( |
| | | new LambdaUpdateWrapper<BigStorageCageFeedTask>() |
| | | .eq(BigStorageCageFeedTask::getLine, Const.A10_OUT_TARGET_POSITION) |
| | |
| | | String mesD03Address = plcMesObject.getPlcParameter("MESToD03").getAddress(); |
| | | String mesD05Address = plcMesObject.getPlcParameter("MESToD05").getAddress(); |
| | | String outLine = line.equals(Const.A09_OUT_TARGET_POSITION) ? mesD03Address : mesD05Address; |
| | | List<String> returnData = new ArrayList<>(); |
| | | |
| | | for (int i = 1; i <= taskList.size(); i++) { |
| | | s7control.writeWord(plcMesObject.getPlcParameter("StartAddToImport" + i).getAddress(), taskList.get(i - 1).getLine()); |
| | | s7control.writeWord(plcMesObject.getPlcParameter("TargetAddToImport" + i).getAddress(), taskList.get(i - 1).getTargetSlot()); |
| | | returnData.add(taskList.get(i - 1).getGlassId()); |
| | | log.info("向plc发送第{}片玻璃已完成,起始位置是{},目标位置是", i, taskList.get(i - 1).getLine(), taskList.get(i - 1).getTargetSlot()); |
| | | } |
| | | int returnData = 1; |
| | | // int returnData = 1; |
| | | int count = 1; |
| | | while (returnData != 0) { |
| | | |
| | | |
| | | while (CollectionUtils.isNotEmpty(returnData)) { |
| | | List<String> glassIds1 = new ArrayList<>(); |
| | | List<String> glassIds2 = new ArrayList<>(); |
| | | s7control.writeWord(outLine, 2); |
| | | for (int i = 1; i <= 6; i++) { |
| | | String line1GlassId = plcMesObject.getPlcParameter("D03ID" + i).getValue(); |
| | | if (StringUtils.isNotEmpty(line1GlassId)) { |
| | | glassIds1.add(line1GlassId); |
| | | } |
| | | String line2GlassId = plcMesObject.getPlcParameter("D05ID" + i).getValue(); |
| | | if (StringUtils.isNotEmpty(line2GlassId)) { |
| | | glassIds2.add(line2GlassId); |
| | | } |
| | | } |
| | | if (line.equals(Const.A09_OUT_TARGET_POSITION)) { |
| | | returnData = Integer.parseInt(plcMesObject.getPlcParameter("D03ToMES").getValue()); |
| | | // returnData = Integer.parseInt(plcMesObject.getPlcParameter("D03ToMES").getValue()); |
| | | returnData = glassIds1; |
| | | } else { |
| | | returnData = Integer.parseInt(plcMesObject.getPlcParameter("D05ToMES").getValue()); |
| | | // returnData = Integer.parseInt(plcMesObject.getPlcParameter("D05ToMES").getValue()); |
| | | returnData = glassIds2; |
| | | } |
| | | // returnData = s7control.readWord(outLine, 1).get(0); |
| | | log.info("已向plc第{}次发送进片任务确认,地址为:{},写入的内容为{}", count++, outLine, 2); |
| | | log.info("已向plc第{}次发送进片任务确认,地址为:{},写入的内容为{},读到的请求为{}", count++, outLine, 2,returnData); |
| | | } |
| | | // while (returnData != 0) { |
| | | // s7control.writeWord(outLine, 2); |
| | | // if (line.equals(Const.A09_OUT_TARGET_POSITION)) { |
| | | //// returnData = Integer.parseInt(plcMesObject.getPlcParameter("D03ToMES").getValue()); |
| | | // returnData = s7control.readWord(plcMesObject.getPlcParameter("D03Request").getAddress(), 1).get(0); |
| | | // } else { |
| | | //// returnData = Integer.parseInt(plcMesObject.getPlcParameter("D05ToMES").getValue()); |
| | | // returnData = s7control.readWord(plcMesObject.getPlcParameter("D05Request").getAddress(), 1).get(0); |
| | | // } |
| | | //// returnData = s7control.readWord(outLine, 1).get(0); |
| | | // log.info("已向plc第{}次发送进片任务确认,地址为:{},写入的内容为{},读到的请求为{}", count++, outLine, 2,returnData); |
| | | // } |
| | | } |
| | | |
| | | /** |