| | |
| | | @Qualifier("s7SerializerMBTwo") |
| | | private S7Serializer s7SerializerMBTwo; |
| | | |
| | | // @Value("${mes.threshold}") |
| | | |
| | | private int threshold; |
| | | // @Value("${mes.cellLength}") |
| | | |
| | | private int cellLength; |
| | | // @Value("${mes.ratio}") |
| | | |
| | | private int ratio; |
| | | |
| | | // @Value("${mes.min.one.firstLength}") |
| | | private int minOneFirstLength; |
| | | // |
| | | // @Value("${mes.min.one.secondLength}") |
| | | |
| | | private int minOneSecondLength; |
| | | // |
| | | // @Value("${mes.min.two.firstLength}") |
| | | |
| | | private int minTwoFirstLength; |
| | | // |
| | | // @Value("${mes.min.two.secondLength}") |
| | | |
| | | private int minTwoSecondLength; |
| | | // |
| | | // @Value("${mes.max.firstLength}") |
| | | |
| | | private int maxTwoFirstLength; |
| | | // |
| | | // @Value("${mes.max.secondLength}") |
| | | |
| | | private int maxTwoSecondLength; |
| | | // |
| | | // @Value("${mes.maxThickness}") |
| | | |
| | | private int maxThickness; |
| | | |
| | | private String glassInIdOne = ""; |
| | |
| | | S7DataWL s7DataWLOne = s7SerializerWLOne.read(S7DataWL.class); |
| | | log.info("一线卧理: {}", s7DataWLOne); |
| | | //获取第二条线路的卧式理片笼状态 |
| | | // ReadWriteEntity twoInkageEntity = miloService.readFromOpcUa("WL2.WL2.deviceState"); |
| | | Boolean twoInkageEntity = s7DataWLTwo.getDeviceState(); |
| | | // Boolean twoInkageEntity = Boolean.FALSE; |
| | | //默认只跑一台卧式理片,两条线路都可以走 |
| | | int cellFlag = 1; |
| | | //如果两条线都启动则只能跑一条线 |
| | | // if (twoInkageEntity != null && !Boolean.parseBoolean(twoInkageEntity.getValue() + "")) { |
| | | if (twoInkageEntity != null && !twoInkageEntity) { |
| | | cellFlag = 2; |
| | | } |
| | |
| | | S7DataWL s7DataWLOne = s7SerializerWLOne.read(S7DataWL.class); |
| | | S7DataWL s7DataWLTwo = s7SerializerWLTwo.read(S7DataWL.class); |
| | | log.info("二线卧理: {}", s7DataWLTwo); |
| | | // ReadWriteEntity oneInkageEntity = miloService.readFromOpcUa("WL1.WL1.deviceState"); |
| | | Boolean oneInkageEntity = s7DataWLOne.getDeviceState(); |
| | | int cellFlag = 1; |
| | | // if (oneInkageEntity != null && !Boolean.parseBoolean(oneInkageEntity.getValue() + "")) { |
| | | if (oneInkageEntity != null && !oneInkageEntity) { |
| | | cellFlag = 2; |
| | | } |
| | | startOneOpcTaskChild(s7DataWLTwo, 2, cellFlag); |
| | | } |
| | | |
| | | // private void startOneOpcTaskChild(String tableName, int device, int cellFlag) throws Exception { |
| | | private void startOneOpcTaskChild(S7DataWL task, int device, int cellFlag) throws Exception { |
| | | threshold = sysConfigService.queryConfigValue(ConstSysConfig.CACHE_THRESHOLD); |
| | | cellLength = sysConfigService.queryConfigValue(ConstSysConfig.CACHE_CELL_LENGTH); |
| | |
| | | maxTwoSecondLength = sysConfigService.queryConfigValue(ConstSysConfig.CACHE_MAX_SECOND_LENGTH); |
| | | maxThickness = sysConfigService.queryConfigValue(ConstSysConfig.CACHE_MAX_THICKNESS); |
| | | |
| | | // EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(tableName); |
| | | |
| | | if (task == null) { |
| | | log.info("任务表基础数据录入失败,请检查数据是否录入成功"); |
| | |
| | | } else if (request == 4) { |
| | | log.info("设备:{}状态:{}", device, request); |
| | | log.info("将启动子改为4"); |
| | | // task.setTaskRunning(Const.GLASS_CACHE_TYPE_RUNNING); |
| | | // edgStorageDeviceTaskService.updateTaskMessage(tableName, task); |
| | | if (device == 2) { |
| | | task.setTaskRunning(Const.GLASS_CACHE_TYPE_RUNNING); |
| | | s7SerializerWLTwo.write(S7DataWL.builder().taskRunning(Const.GLASS_CACHE_TYPE_RUNNING).build()); |
| | |
| | | log.info("玻璃异常处理"); |
| | | damageTask(task, "", device); |
| | | } |
| | | // } catch(Exception e) |
| | | // |
| | | // { |
| | | // log.info("执行任务过程中发生异常,任务字{},{}", task.getTaskState(), e.getMessage()); |
| | | // log.info("将启动字改为0"); |
| | | // task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY); |
| | | // edgStorageDeviceTaskService.updateTaskMessage(tableName, task); |
| | | // } |
| | | |
| | | } |
| | | |
| | | |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void edgOneOpcTask() throws Exception { |
| | | // EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(EDG_STORAGE_DEVICE_ONE_TASK); |
| | | // String glassId = task.getGlassId(); |
| | | S7DataWL s7DataWLOne = s7SerializerWLOne.read(S7DataWL.class); |
| | | String glassId = s7DataWLOne.getGlassId(); |
| | | log.info("1号线玻璃id{},历史id{}", glassId, glassIdOne); |
| | |
| | | |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void edgTwoOpcTask() throws Exception { |
| | | // EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(EDG_STORAGE_DEVICE_TWO_TASK); |
| | | // String glassId = task.getGlassId(); |
| | | S7DataWL s7DataWLTwo = s7SerializerWLTwo.read(S7DataWL.class); |
| | | // S7DataMB s7DataMB = s7SerializerMBOne.read(S7DataMB.class); |
| | | // log.info("磨边数据{}", s7DataMB); |
| | | String glassId = s7DataWLTwo.getGlassId(); |
| | | log.info("2号线玻璃id{},历史id{}", glassId, glassIdTwo); |
| | | if (StringUtils.isBlank(glassId) || glassId.equals(glassIdTwo)) { |
| | |
| | | return; |
| | | } |
| | | String toEndingId = glassInfo.getTemperingLayoutId() + "" + glassInfo.getTemperingFeedSequence(); |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | //// list.add(generateReadWriteEntity("MB" + cell + ".MB" + cell + ".mesControl", true)); |
| | | // list.add(generateReadWriteEntity("MB" + cell + ".MB" + cell + ".glassId", Integer.parseInt(toEndingId))); |
| | | // list.add(generateReadWriteEntity("MB" + cell + ".MB" + cell + ".toEdingId", Integer.parseInt(toEndingId))); |
| | | // list.add(generateReadWriteEntity("MB" + cell + ".MB" + cell + ".width", (int) Math.max(glassInfo.getWidth() * ratio, glassInfo.getHeight() * ratio))); |
| | | // list.add(generateReadWriteEntity("MB" + cell + ".MB" + cell + ".height", (int) Math.min(glassInfo.getWidth() * ratio, glassInfo.getHeight() * ratio))); |
| | | // |
| | | // miloService.writeToOpcUa(list); |
| | | // miloService.writeToOpcWord(generateReadWriteEntity("MB" + cell + ".MB" + cell + ".thickness", (int) glassInfo.getThickness() * ratio)); |
| | | |
| | | S7DataMB s7DataMB = new S7DataMB(); |
| | | s7DataMB.setToEdingId(Integer.parseInt(toEndingId)); |
| | | s7DataMB.setGlassId(Integer.parseInt(toEndingId)); |
| | |
| | | log.info("结束进片任务设备为{},结束时间为:{},共耗时:{}ms", deviceId, endDate, endDate.getTime() - startDate.getTime()); |
| | | return Boolean.FALSE; |
| | | } |
| | | // EdgStorageCage edgStorageCage = edgStorageCageService.selectNearestEmpty(task.getCurrentCell(), deviceId, Boolean.FALSE); |
| | | EdgStorageCage edgStorageCage = edgStorageCageService.selectNearestEmpty(Integer.parseInt(task.getCurrentCell().toString()), deviceId, Boolean.FALSE); |
| | | Assert.isTrue(null != edgStorageCage, "格子已满"); |
| | | log.info("4、将玻璃信息插入卧式理片笼,当前玻璃信息:{}", glassInfo); |
| | |
| | | edgStorageCageDetailsService.save(details); |
| | | |
| | | //更新任务信息 |
| | | // task.setStartCell(edgStorageCage.getSlot()); |
| | | // task.setTaskRunning(Const.GLASS_CACHE_TYPE_IN); |
| | | // edgStorageDeviceTaskService.updateTaskMessage(tableName, task); |
| | | task.setStartCell(edgStorageCage.getSlot()); |
| | | task.setTaskRunning(Const.GLASS_CACHE_TYPE_IN); |
| | | if (deviceId == 1) { |
| | |
| | | private boolean outTask(S7DataWL task, String tableName, int deviceId, int cellFlag) throws Exception { |
| | | Date startDate = new Date(); |
| | | //获取对应的设备状态信息 |
| | | // ReadWriteEntity oneOutStateEntity = miloService.readFromOpcUa("WL1.WL1.slotState"); |
| | | // ReadWriteEntity twoOutStateEntity = miloService.readFromOpcUa("WL2.WL2.slotState"); |
| | | // ReadWriteEntity d06OutStateEntity = miloService.readFromOpcUa("WL2.WL2.d06SlotState"); |
| | | S7DataWL s7DataWLOne = s7SerializerWLOne.read(S7DataWL.class); |
| | | S7DataWL s7DataWLTwo = s7SerializerWLTwo.read(S7DataWL.class); |
| | | S7DataWLExtra s7DataWLExtraTwo = s7SerializerWLTwo.read(S7DataWLExtra.class); |
| | |
| | | Integer twoOutState = s7DataWLTwo.getSlotState(); |
| | | Integer d06OutState = s7DataWLExtraTwo.getD06SlotState(); |
| | | //状态有3中情况:0空闲 1忙碌 2禁用 |
| | | // int oneOutState = Const.OUT_DISABLE; |
| | | // int twoOutState = Const.OUT_DISABLE; |
| | | // int d06OutState = Const.OUT_DISABLE; |
| | | // if (null != oneOutStateEntity && null != oneOutStateEntity.getValue()) { |
| | | // oneOutState = oneOutStateEntity.getValue().toString(); |
| | | // } |
| | | // if (null != oneOutStateEntity) { |
| | | // oneOutState = oneOutStateEntity.toString(); |
| | | // } |
| | | // if (null != twoOutStateEntity && null != twoOutStateEntity.getValue()) { |
| | | // twoOutState = twoOutStateEntity.getValue().toString(); |
| | | // } |
| | | // if (null != twoOutStateEntity) { |
| | | // twoOutState = twoOutStateEntity.toString(); |
| | | // } |
| | | //两条线都为禁用则不出玻璃 |
| | | if (Const.OUT_DISABLE.equals(oneOutState) && Const.OUT_DISABLE.equals(twoOutState)) { |
| | | log.info("A09、A10为{},{}非自动状态,无法出片", oneOutState, oneOutState); |
| | | return Boolean.FALSE; |
| | | } |
| | | // if (null != d06OutStateEntity && null != d06OutStateEntity.getValue()) { |
| | | // d06OutState = d06OutStateEntity.getValue().toString(); |
| | | // } |
| | | // if (null != d06OutStateEntity) { |
| | | // d06OutState = d06OutStateEntity.toString(); |
| | | // } |
| | | //获取d06片台状态 |
| | | // 1:一对一的情况下不需要判断d06状态 |
| | | // 2:一号线一对多的情况下,获取二号线磨边前片台D07的状态,D07非禁用时,二号线将按照D06片台状态觉得出片 |
| | |
| | | if (cellFlag == 2) { |
| | | if (deviceId == 1) { |
| | | |
| | | // twoOutState = Const.OUT_DISABLE.equals(twoOutState) ? Const.OUT_DISABLE : d06OutState; |
| | | twoOutState = twoOutState & d06OutState; |
| | | } else { |
| | | oneOutState = oneOutState & d06OutState; |
| | | // oneOutState = Const.OUT_DISABLE.equals(oneOutState) ? Const.OUT_DISABLE : d06OutState; |
| | | } |
| | | // if (Const.OUT_BUSY.equals(oneOutState) && Const.OUT_BUSY.equals(twoOutState)) { |
| | | // log.info("A09、A10为{},{}非自动状态,无法出片", oneOutState, oneOutState); |
| | | // return Boolean.FALSE; |
| | | // } |
| | | } |
| | | |
| | | log.info("开始执行出片/直通任务,任务信息为:{},表名为:{},设备id:{},开始时间:{},一号线状态:{},二号线状态:{}", |
| | |
| | | } |
| | | Date startDate = new Date(); |
| | | log.info("开始执行完成任务后清除动作,任务信息为:{},表名为:{},开始时间:{}", task, tableName, startDate); |
| | | // task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY); |
| | | // task.setGlassIdOut(""); |
| | | // task.setStartCell(0); |
| | | // task.setEndCell(0); |
| | | EdgStorageDeviceTaskHistory taskHistory = edgStorageDeviceTaskHistoryService.getOne(new LambdaQueryWrapper<EdgStorageDeviceTaskHistory>() |
| | | .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW) |
| | | .eq(EdgStorageDeviceTaskHistory::getDeviceId, device) |
| | |
| | | ); |
| | | } |
| | | //最后更新任务,保证任务前的动作都做完 |
| | | |
| | | // task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY); |
| | | // task.setGlassIdOut(""); |
| | | // task.setStartCell(0); |
| | | // task.setEndCell(0); |
| | | // edgStorageDeviceTaskService.updateTaskMessage(tableName, task); |
| | | if (device == 1) { |
| | | s7SerializerWLOne.write( |
| | | S7DataWL.builder() |
| | |
| | | .set(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_FAILURE) |
| | | ); |
| | | } |
| | | //最后更新任务,保证任务前的动作都做完 |
| | | // task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY); |
| | | // task.setGlassIdOut(""); |
| | | // task.setStartCell(0); |
| | | // task.setEndCell(0); |
| | | // edgStorageDeviceTaskService.updateTaskMessage(tableName, task); |
| | | if (device == 1) { |
| | | s7SerializerWLOne.write( |
| | | S7DataWL.builder() |
| | |
| | | */ |
| | | public String queryAndChangeGlass(String glassId) { |
| | | GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId)); |
| | | // .inSql(GlassInfo::getEngineerId, "select engineer_id from engineering where state = 1")); |
| | | Assert.isFalse(null == glassInfo, "玻璃信息不存在"); //按照玻璃尺寸 |
| | | LambdaQueryWrapper<GlassInfo> queryWrapper = new LambdaQueryWrapper<GlassInfo>() |
| | | .eq(GlassInfo::getWidth, glassInfo.getWidth()) |
| | |
| | | @Resource |
| | | DamageService damageService; |
| | | |
| | | // @Value("${mes.glassGap}") |
| | | |
| | | private int glassGap; |
| | | // @Value("${mes.threshold}") |
| | | |
| | | private int threshold; |
| | | // @Value("${mes.cellLength}") |
| | | |
| | | private int cellLength; |
| | | // @Value("${mes.ratio}") |
| | | |
| | | private int ratio; |
| | | |
| | | // @Value("${mes.min.one.firstLength}") |
| | | private int minOneFirstLength; |
| | | |
| | | // @Value("${mes.min.one.secondLength}") |
| | | private int minOneSecondLength; |
| | | |
| | | // @Value("${mes.min.two.firstLength}") |
| | | private int minTwoFirstLength; |
| | | |
| | | // @Value("${mes.min.two.secondLength}") |
| | | private int minTwoSecondLength; |
| | | |
| | | private String glassInIdOne = ""; |
| | |
| | | private void startEdgTaskChild(String cell) throws Exception { |
| | | S7DataMBExtra s7DataMBExtra = s7SerializerMBExtra.read(S7DataMBExtra.class); |
| | | log.info("MB04读取数据{}", s7DataMBExtra); |
| | | // ReadWriteEntity request = miloService.readFromOpcUa("MB04.MB04.request" + cell); |
| | | // if (null == request || "0".equals(request.getValue() + "")) { |
| | | String request = ""; |
| | | String glassIdEntity = ""; |
| | | if ("01".equals(cell)) { |
| | |
| | | log.info("未收到玻璃请求,结束本次任务"); |
| | | return; |
| | | } |
| | | // ReadWriteEntity glassIdEntity = miloService.readFromOpcUa("MB04.MB04.plc_glass_id_" + cell); |
| | | // if (null == glassIdEntity || StringUtils.isEmpty(glassIdEntity.getValue() + "")) { |
| | | if (null == glassIdEntity || StringUtils.isEmpty(glassIdEntity)) { |
| | | log.info("有请求但玻璃id为空,结束本次任务"); |
| | | return; |
| | | } |
| | | // String glassId = glassIdEntity.getValue() + ""; |
| | | String glassId = glassIdEntity; |
| | | log.info("获取到{}线的玻璃id:{}", cell, glassId); |
| | | GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId).last("limit 1")); |
| | | |
| | | // List<ReadWriteEntity> ualist = new ArrayList<>(); |
| | | // ualist.add(generateReadWriteEntity("MB04.MB04.width" + cell, (int) Math.max(glassInfo.getWidth() * 10, glassInfo.getHeight() * 10))); |
| | | // ualist.add(generateReadWriteEntity("MB04.MB04.height" + cell, (int) Math.min(glassInfo.getWidth() * 10, glassInfo.getHeight() * 10))); |
| | | // ualist.add(generateReadWriteEntity("MB04.MB04.thickness" + cell, (int) glassInfo.getThickness() * 10)); |
| | | // miloService.writeToOpcWord(ualist); |
| | | // miloService.writeToOpcUa(generateReadWriteEntity("MB04.MB04.mes_glass_Id_" + cell, glassId)); |
| | | log.info("{}线发送尺寸信息宽:{},高:{},厚度:{}", cell, Math.max(glassInfo.getWidth() * 10, glassInfo.getHeight() * 10), Math.min(glassInfo.getWidth() * 10, glassInfo.getHeight() * 10), glassInfo.getThickness() * 10); |
| | | if ("01".equals(cell)) { |
| | | s7SerializerMBExtra.write( |
| | |
| | | password: 123456 |
| | | kangaroohy: |
| | | milo: |
| | | enabled: true |
| | | enabled: false |
| | | primary: default |
| | | config: |
| | | default: |
| | |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void inBigStorageTask() throws Exception { |
| | | S7DataDLPOne s7DataDLPOne = s7SerializerDLPOne.read(S7DataDLPOne.class); |
| | | log.info("进片任务开始{}",s7DataDLPOne); |
| | | // ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1A.DLP1A.mesControl"); |
| | | // if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) { |
| | | log.info("进片任务开始{}", s7DataDLPOne); |
| | | Boolean inkageEntity = s7DataDLPOne.getMesControl(); |
| | | if (true != inkageEntity) { |
| | | log.info("当前为非联机状态,结束进片任务"); |
| | | return; |
| | | } |
| | | // ReadWriteEntity requestEntity = miloService.readFromOpcUa("DLP1A.DLP1A.RequestMes"); |
| | | // if (!"1".equals(requestEntity.getValue() + "")) { |
| | | String requestEntity = s7DataDLPOne.getRequestMes().toString(); |
| | | if (!"1".equals(requestEntity)) { |
| | | log.info("当前未收到进片请求,结束进片任务"); |
| | | return; |
| | | } |
| | | // ReadWriteEntity mesReplyEntity = miloService.readFromOpcUa("DLP1A.DLP1A.MesReply"); |
| | | // if ("1".equals(mesReplyEntity.getValue() + "")) { |
| | | String mesReplyEntity = s7DataDLPOne.getMesReply().toString(); |
| | | if ("1".equals(mesReplyEntity)) { |
| | | log.info("有正在执行的任务,结束进片任务"); |
| | |
| | | } |
| | | //获取进片任务信息 |
| | | List<BigStorageCageTask> inTaskList = new ArrayList(); |
| | | // ReadWriteEntity fromOpcUa = miloService.readFromOpcUa("DLP1A.DLP1A.FROM1"); |
| | | String fromOpcUa = s7DataDLPOne.getFrom1().toString(); |
| | | |
| | | List<String> ids = s7DataDLPOne.getIds(); |
| | | List<String> glassIdList = new ArrayList<>(); |
| | | for (int i = 0; i < 6; i++) { |
| | | // ReadWriteEntity requestWord = miloService.readFromOpcUa("DLP1A.DLP1A.DI" + i); |
| | | String requestWord = ids.get(i); |
| | | // if (null != requestWord.getValue()) { |
| | | if (null != requestWord && !requestWord.isEmpty()) { |
| | | BigStorageCageTask task = new BigStorageCageTask(); |
| | | // task.setGlassId(requestWord.getValue() + ""); |
| | | task.setGlassId(requestWord); |
| | | // task.setStartSlot(Integer.parseInt(fromOpcUa.getValue() + "")); |
| | | task.setStartSlot(Integer.parseInt(fromOpcUa)); |
| | | inTaskList.add(task); |
| | | // glassIdList.add(requestWord.getValue() + ""); |
| | | glassIdList.add(requestWord); |
| | | continue; |
| | | } |
| | |
| | | return; |
| | | } |
| | | log.info("获取任务的玻璃id:{}", glassIdList); |
| | | // ReadWriteEntity countEntity = miloService.readFromOpcUa("DLP1A.DLP1A.glassCount"); |
| | | String countEntity = s7DataDLPOne.getGlassCount().toString(); |
| | | // if (null == countEntity.getValue() || Integer.parseInt(countEntity.getValue() + "") != glassIdList.size()) { |
| | | if (null == countEntity || Integer.parseInt(countEntity) != glassIdList.size()) { |
| | | log.info("当前大车进片玻璃数量{}与mes读取到的数量{}不匹配,结束进片任务", countEntity, glassIdList.size()); |
| | | //向plc发送报警:当前大车进片玻璃数量与mes读取到的数量不匹配 |
| | | // miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 1)); |
| | | s7DataDLPOne = new S7DataDLPOne(); |
| | | s7DataDLPOne.setAlarmSignal(1); |
| | | s7SerializerDLPOne.write(s7DataDLPOne); |
| | |
| | | if (entry.getValue() > 1) { |
| | | log.info("进片玻璃{}存在相同,结束本次任务", entry.getKey()); |
| | | //向plc发送报警:同一车进片玻璃存在相同 |
| | | // miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 2)); |
| | | s7DataDLPOne = new S7DataDLPOne(); |
| | | s7DataDLPOne.setAlarmSignal(2); |
| | | s7SerializerDLPOne.write(s7DataDLPOne); |
| | |
| | | if (CollectionUtil.isNotEmpty(detailsList)) { |
| | | log.info("理片笼存在相同的进片玻璃{},结束本次任务", detailsList); |
| | | //向plc发送报警:理片笼存在相同的进片玻璃 |
| | | // miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 4)); |
| | | s7DataDLPOne = new S7DataDLPOne(); |
| | | s7DataDLPOne.setAlarmSignal(4); |
| | | s7SerializerDLPOne.write(s7DataDLPOne); |
| | |
| | | if (glassInfoList.size() != inTaskList.size()) { |
| | | log.info("进片任务数量{}与玻璃数量{}不匹配,结束本次进片", inTaskList.size(), glassInfoList.size()); |
| | | //向plc发送报警:进片任务数量与系统查询到的玻璃数量不匹配 |
| | | // miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 8)); |
| | | s7DataDLPOne = new S7DataDLPOne(); |
| | | s7DataDLPOne.setAlarmSignal(8); |
| | | s7SerializerDLPOne.write(s7DataDLPOne); |
| | |
| | | GlassInfo info = glassListMap.get(task.getGlassId()).get(0); |
| | | BigStorageDTO bigStorageDTO = bigStorageGlassInfoService.queryBigStorageTargetSlot(info.getEngineerId(), info.getTemperingLayoutId(), info.getTemperingFeedSequence()); |
| | | //获取目标格子信息 |
| | | // BigStorageDTO bigStorageDTO = bigStorageCageDetailsService.queryTargetSlotByTempering(info); |
| | | // 临时更新格子的剩余尺寸:防止相邻玻璃进同一格子造成剩余尺寸不足,玻璃越界的情况,任务完成后再次更新大理片笼表剩余宽度(按照笼内玻璃数量更新大理片笼剩余尺寸) |
| | | bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>() |
| | | .set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - Math.max(info.getWidth(), info.getHeight()) - glassGap) |
| | |
| | | } else { |
| | | BigStorageCageTask task = inTaskList.get(0); |
| | | task.setTargetSlot(THROUGH_SLOT); |
| | | // bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", task); |
| | | //存放历史任务 |
| | | BigStorageCageHistoryTask historyTask = new BigStorageCageHistoryTask(); |
| | | BeanUtils.copyProperties(task, historyTask); |
| | |
| | | //历史数据入库 |
| | | bigStorageCageHistoryTaskService.saveBatch(historyTasks); |
| | | //向opc发送启动信号 |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // for (int i = 1; i <= inTaskList.size(); i++) { |
| | | // list.add(generateReadWriteEntity("DLP1A.DLP1A.TO" + i, inTaskList.get(i - 1).getTargetSlot())); |
| | | // } |
| | | // list.add(generateReadWriteEntity("DLP1A.DLP1A.MesReply", 1)); |
| | | // miloService.writeToOpcWord(list); |
| | | s7DataDLPOne = new S7DataDLPOne(); |
| | | for (int i = 0; i < inTaskList.size(); i++) { |
| | | Integer value = Integer.parseInt(inTaskList.get(i).getTargetSlot().toString()); |
| | |
| | | public void outBigStorageTask() throws Exception { |
| | | Date startDate = new Date(); |
| | | S7DataDLPTwo s7DataWLTwo = s7SerializerDLPTwo.read(S7DataDLPTwo.class); |
| | | log.info("出片任务开始{}",s7DataWLTwo); |
| | | // ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1B.DLP1B.mesControl"); |
| | | // if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) { |
| | | log.info("出片任务开始{}", s7DataWLTwo); |
| | | Boolean inkageEntity = s7DataWLTwo.getMesControl(); |
| | | if (true != inkageEntity) { |
| | | log.info("当前为非联机状态,结束进片任务"); |
| | | return; |
| | | } |
| | | // ReadWriteEntity requestEntity = miloService.readFromOpcUa("DLP1B.DLP1B.RequestMes"); |
| | | // if (!"1".equals(requestEntity.getValue() + "")) { |
| | | String requestEntity = s7DataWLTwo.getRequestMes().toString(); |
| | | if (!"1".equals(requestEntity)) { |
| | | log.info("当前未收到出片请求,结束出片任务"); |
| | |
| | | } |
| | | //获取出片任务表 |
| | | List<BigStorageCageTask> outTaskList = getOutTaskList(s7DataWLTwo); |
| | | // List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_out_one_task"); |
| | | if (CollectionUtil.isNotEmpty(outTaskList)) { |
| | | log.info("有正在执行的出片任务,结束本次出片任务"); |
| | | return; |
| | |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void finishInBigStorageTask() throws Exception { |
| | | S7DataDLPOne s7DataDLPOne = s7SerializerDLPOne.read(S7DataDLPOne.class); |
| | | // ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1A.DLP1A.mesControl"); |
| | | // if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) { |
| | | Boolean inkageEntity = s7DataDLPOne.getMesControl(); |
| | | if (true != inkageEntity) { |
| | | log.info("当前为非联机状态,结束完成进片任务"); |
| | | return; |
| | | } |
| | | //获取进片任务表 |
| | | // List<BigStorageCageTask> inTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_in_one_task"); |
| | | List<BigStorageCageTask> inTaskList = new ArrayList(); |
| | | |
| | | List<String> glassIdList = new ArrayList<>(); |
| | | // ReadWriteEntity toWord = miloService.readFromOpcUa("DLP1A.DLP1A.TO1"); |
| | | // if ("0".equals(toWord.getValue() + "")) { |
| | | String toWord = s7DataDLPOne.getTo1().toString(); |
| | | if ("0".equals(toWord)) { |
| | | log.info("完成任务已执行,结束本次完成进片任务"); |
| | | return; |
| | | } |
| | | for (int i = 0; i < 6; i++) { |
| | | // ReadWriteEntity requestWord = miloService.readFromOpcUa("DLP1A.DLP1A.DI" + i); |
| | | // ReadWriteEntity statetWord = miloService.readFromOpcUa("DLP1A.DLP1A.STATE" + i); |
| | | // ReadWriteEntity toOpcUa = miloService.readFromOpcUa("DLP1A.DLP1A.TO" + i); |
| | | // ReadWriteEntity fromOpcUa = miloService.readFromOpcUa("DLP1A.DLP1A.FROM" + i); |
| | | String requestWord = ""; |
| | | String statetWord = ""; |
| | | String toOpcUa = ""; |
| | |
| | | break; |
| | | } |
| | | |
| | | // if (null != requestWord.getValue()) { |
| | | if (!requestWord.isEmpty()) { |
| | | BigStorageCageTask task = new BigStorageCageTask(); |
| | | // task.setGlassId(requestWord.getValue() + ""); |
| | | // task.setTargetSlot(Integer.parseInt(toOpcUa.getValue() + "")); |
| | | // task.setTaskState(Integer.parseInt(statetWord.getValue() + "")); |
| | | // task.setStartSlot(Integer.parseInt(fromOpcUa.getValue() + "")); |
| | | task.setGlassId(requestWord); |
| | | task.setTargetSlot(Integer.parseInt(toOpcUa)); |
| | | task.setTaskState(Integer.parseInt(statetWord)); |
| | | task.setStartSlot(Integer.parseInt(fromOpcUa)); |
| | | inTaskList.add(task); |
| | | // glassIdList.add(requestWord.getValue() + ""); |
| | | glassIdList.add(requestWord); |
| | | continue; |
| | | } |
| | |
| | | .eq(BigStorageCageHistoryTask::getGlassId, item.getGlassId())); |
| | | item.setTargetSlot(0); |
| | | //清空任务表数据 |
| | | // bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", item); |
| | | } |
| | | //清空启动状态 |
| | | //向opc发送启动信号 |
| | | //向opc发送启动信号 |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // for (int i = 1; i <= 6; i++) { |
| | | // list.add(generateReadWriteEntity("DLP1A.DLP1A.TO" + i, 0)); |
| | | // } |
| | | // list.add(generateReadWriteEntity("DLP1A.DLP1A.MesReply", 0)); |
| | | // miloService.writeToOpcWord(list); |
| | | s7DataDLPOne = new S7DataDLPOne(); |
| | | s7DataDLPOne.setTo1(0); |
| | | s7DataDLPOne.setTo2(0); |
| | |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void finishOutBigStorageTask() throws Exception { |
| | | S7DataDLPTwo s7DataWLTwo = s7SerializerDLPTwo.read(S7DataDLPTwo.class); |
| | | // ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1B.DLP1B.mesControl"); |
| | | // if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) { |
| | | Boolean inkageEntity = s7DataWLTwo.getMesControl(); |
| | | if (true != inkageEntity) { |
| | | log.info("当前为非联机状态,结束完成出片任务"); |
| | |
| | | } |
| | | //获取出片任务表 |
| | | List<BigStorageCageTask> outTaskList = getOutTaskList(s7DataWLTwo); |
| | | // List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_out_one_task"); |
| | | if (CollectionUtil.isEmpty(outTaskList)) { |
| | | log.info("当前大车无出片玻璃,结束完成出片任务"); |
| | | return; |
| | |
| | | } |
| | | } |
| | | // 重置任务表数据 |
| | | // bigStorageCageTaskService.updateOutTaskMessage("big_storage_cage_out_one_task"); |
| | | resetOutTask(); |
| | | //清空启动状态 |
| | | //向opc发送启动信号 |
| | | // miloService.writeToOpcWord(generateReadWriteEntity("DLP1B.DLP1B.MesReply", 0)); |
| | | S7DataDLPTwo s7DataDLPTwo = new S7DataDLPTwo(); |
| | | s7DataDLPTwo.setMesReply(0); |
| | | s7SerializerDLPTwo.write(s7DataDLPTwo); |
| | |
| | | } |
| | | } |
| | | s7SerializerDLPTwo.write(s7DataDLPTwo); |
| | | // bigStorageCageTaskService.removeAll("big_storage_cage_out_one_task"); |
| | | // bigStorageCageTaskService.saveTaskMessage(tableName, bigStorageCageTaskList); |
| | | List<BigStorageCageHistoryTask> historyList = bigStorageCageTaskList.stream().filter(e -> StringUtils.isNotBlank(e.getGlassId())).map(e -> { |
| | | BigStorageCageHistoryTask history = new BigStorageCageHistoryTask(); |
| | | BeanUtils.copyProperties(e, history); |
| | |
| | | password: 123456 |
| | | kangaroohy: |
| | | milo: |
| | | enabled: true |
| | | enabled: false |
| | | primary: default |
| | | config: |
| | | default: |
| | |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void rawStorageTask() throws Exception { |
| | | S7DataCC S7DataCCOne = s7SerializerCC.read(S7DataCC.class); |
| | | log.info("仓储通讯读取{}",S7DataCCOne); |
| | | log.info("仓储通讯读取{}", S7DataCCOne); |
| | | String requestWord = S7DataCCOne.getRequest().toString(); |
| | | String confireWord = S7DataCCOne.getConfirmation().toString(); |
| | | String reportWord = S7DataCCOne.getReportWord().toString(); |
| | | String taskWord = S7DataCCOne.getTaskWord().toString(); |
| | | String requestValue = requestWord; |
| | | // ReadWriteEntity requestWord = miloService.readFromOpcUa("CC.CC.request"); |
| | | // ReadWriteEntity confireWord = miloService.readFromOpcUa("CC.CC.confirmation"); |
| | | // ReadWriteEntity reportWord = miloService.readFromOpcUa("CC.CC.reportWord"); |
| | | // ReadWriteEntity taskWord = miloService.readFromOpcUa("CC.CC.taskWord"); |
| | | // String requestValue = requestWord.getValue() + ""; |
| | | if ("0".equals(requestValue)) { |
| | | if ("1".equals(confireWord) && "0".equals(reportWord)) { |
| | | // if ("1".equals(confireWord.getValue() + "") && "0".equals(reportWord.getValue() + "")) { |
| | | S7DataCC s7Data = new S7DataCC(); |
| | | s7Data.setConfirmation(0); |
| | | s7SerializerCC.write(s7Data); |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // list.add(generateReadWriteEntity("CC.CC.confirmation", 0)); |
| | | // miloService.writeToOpcWord(list); |
| | | } |
| | | if ("1".equals(taskWord)) { |
| | | // if ("1".equals(taskWord.getValue() + "")) { |
| | | S7DataCC s7Data = new S7DataCC(); |
| | | s7Data.setTaskWord(0); |
| | | s7Data.setStartSlot(0); |
| | | s7Data.setEndSlot(0); |
| | | s7SerializerCC.write(s7Data); |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // list.add(generateReadWriteEntity("CC.CC.taskWord", 0)); |
| | | // list.add(generateReadWriteEntity("CC.CC.startSlot", 0)); |
| | | // list.add(generateReadWriteEntity("CC.CC.endSlot", 0)); |
| | | // miloService.writeToOpcWord(list); |
| | | } |
| | | return; |
| | | } |
| | |
| | | public void rawStorageInCar() throws Exception { |
| | | S7DataCC S7DataCCOne = s7SerializerCC.read(S7DataCC.class); |
| | | String value = S7DataCCOne.getInCar().toString(); |
| | | // ReadWriteEntity entity = miloService.readFromOpcUa("CC.CC.inCar"); |
| | | // String value = entity.getValue() + ""; |
| | | if (!"1".equals(value)) { |
| | | log.info("大车上没有架子"); |
| | | return; |
| | |
| | | public void rawStorageFinish() throws Exception { |
| | | S7DataCC S7DataCCOne = s7SerializerCC.read(S7DataCC.class); |
| | | String value = S7DataCCOne.getReportWord().toString(); |
| | | // ReadWriteEntity entity = miloService.readFromOpcUa("CC.CC.reportWord"); |
| | | // String value = entity.getValue() + ""; |
| | | if ("0".equals(value)) { |
| | | log.info("当前任务未汇报,结束本次任务"); |
| | | return; |
| | |
| | | S7DataCC s7Data = new S7DataCC(); |
| | | s7Data.setConfirmation(1); |
| | | s7SerializerCC.write(s7Data); |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // list.add(generateReadWriteEntity("CC.CC.confirmation", 1)); |
| | | // miloService.writeToOpcWord(list); |
| | | } |
| | | |
| | | private boolean isHasRunningTask() { |
| | |
| | | //生成出库任务 |
| | | rawGlassStorageDetailsService.generateTask(startSlot, lefting, startSlot, rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_OUT); |
| | | |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // list.add(generateReadWriteEntity("CC.CC.taskWord", 1)); |
| | | // list.add(generateReadWriteEntity("CC.CC.taskSending", 1)); |
| | | // list.add(generateReadWriteEntity("CC.CC.startSlot", startSlot)); |
| | | // list.add(generateReadWriteEntity("CC.CC.endSlot", lefting)); |
| | | // miloService.writeToOpcWord(list); |
| | | |
| | | //修改出片任务状态 |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getSlot, rawGlassList.get(0).getSlot()) |
| | |
| | | return Boolean.FALSE; |
| | | } |
| | | //生成复位任务 |
| | | |
| | | // rawGlassStorageDetailsService.generatask(rawGlassList.get(0).getSlot(), rawGlassList.get(0).getShelf(), rawGlassList.get(0).getShelf(), rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH); |
| | | |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // list.add(generateReadWriteEntity("CC.CC.taskWord", 1)); |
| | | // list.add(generateReadWriteEntity("CC.CC.taskSending", 1)); |
| | | // list.add(generateReadWriteEntity("CC.CC.startSlot", startSlot)); |
| | | // list.add(generateReadWriteEntity("CC.CC.endSlot", lefting)); |
| | | // miloService.writeToOpcWord(list); |
| | | |
| | | //修改复位任务状态 |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | |
| | | RawGlassStorageDetails details = rawGlassList.get(0); |
| | | rawGlassStorageDetailsService.generateTask(details.getSlot(), details.getShelf(), details.getShelf(), |
| | | details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_IN); |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // list.add(generateReadWriteEntity("CC.CC.taskWord", 1)); |
| | | // list.add(generateReadWriteEntity("CC.CC.taskSending", 1)); |
| | | // list.add(generateReadWriteEntity("CC.CC.startSlot", details.getSlot())); |
| | | // list.add(generateReadWriteEntity("CC.CC.endSlot", details.getShelf())); |
| | | // miloService.writeToOpcWord(list); |
| | | //生成工位任务,将吊装位的玻璃状态改位进笼中 |
| | | //修改吊装位的原片状态为103 出片中 |
| | | //修改出片任务状态 |
| | |
| | | RawGlassStorageDetails twoLoadStation = loadStationList.stream().filter(e -> e.getSlot().equals(loadStation.get(1))).findFirst().orElse(null); |
| | | if (null == twoLoadStation) { |
| | | //按照尺寸生成二号位上片任务信息 |
| | | // LoadGlassDeviceTask loadTask = loadGlassDeviceTaskService.queryTaskMessage(tableName); |
| | | S7DataSP loadTask = new S7DataSP(); |
| | | if (stationCell == 5) { |
| | | loadTask = s7SerializerSPOne.read(S7DataSP.class); |
| | |
| | | } else { |
| | | //todo:当二号为的尺寸大于0时,是否执行调度任务,更换当前原片的尺寸,等待下一次任务的直接执行;还是继续等待,当尺寸不一样,等待一号工位的进出库调度任务。 |
| | | if (twoLoadStation.getRemainQuantity() > 0) { |
| | | // LoadGlassDeviceTask loadTask = loadGlassDeviceTaskService.queryTaskMessage(tableName); |
| | | S7DataSP loadTask = new S7DataSP(); |
| | | if (stationCell == 5) { |
| | | loadTask = s7SerializerSPOne.read(S7DataSP.class); |
| | |
| | | return Boolean.TRUE; |
| | | } |
| | | } |
| | | // return Boolean.FALSE; |
| | | } else { |
| | | log.info("2号上片位仅剩空架子,1号上片位生成出库调度任务"); |
| | | rawGlassStorageDetailsService.generateTask(loadStation.get(0), oneLoadStation.getShelf(), oneLoadStation.getShelf(), oneLoadStation.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH); |
| | |
| | | password: 123456 |
| | | kangaroohy: |
| | | milo: |
| | | enabled: true |
| | | enabled: false |
| | | primary: default |
| | | config: |
| | | default: |
| | |
| | | } |
| | | //任务暂停 |
| | | S7DataSP task = new S7DataSP(); |
| | | // if (LOAD_GLASS_ONE_DEVICE.equals(deviceId)) { |
| | | // s7SerializerSPOne.read(S7DataSP.class); |
| | | // } else { |
| | | // s7SerializerSPTwo.read(S7DataSP.class); |
| | | // } |
| | | // LoadGlassDeviceTask task = loadGlassDeviceTaskService.queryTaskMessage(tableName); |
| | | ; |
| | | if ("0".equals(s7DataSP.getInkageState().toString())) { |
| | | log.info("{}上片线,处于离线状态:{},结束本地上片请求", deviceId, s7DataSP.getInkageState().toString()); |
| | | // if (0 == task.getInkageState()) { |
| | | // log.info("{}上片线,处于离线状态:{},结束本地上片请求", deviceId, task.getInkageState()); |
| | | return; |
| | | } |
| | | if (s7DataSP.getTaskRunning()) { |
| | | // if (task.getTaskRunning().equals(Const.ENGINEERING_RUNNING)) { |
| | | log.info("{}上片线,有正在执行的任务,结束本地上片请求", deviceId); |
| | | return; |
| | | } |
| | |
| | | task.setRawGlassWidth((int) usageVOS.get(0).getWidth()); |
| | | task.setRawGlassHeight((int) usageVOS.get(0).getHeight()); |
| | | task.setSlot(loadStation.get(1)); |
| | | // loadGlassDeviceTaskService.updateTaskMessage(tableName, task); |
| | | S7DataSP s7DataSPWrite = new S7DataSP(); |
| | | s7DataSPWrite.setTotalCount(number); |
| | | s7DataSPWrite.setTaskRunning(Boolean.TRUE); |
| | |
| | | task.setRawGlassWidth((int) usageVOS.get(0).getWidth()); |
| | | task.setRawGlassHeight((int) usageVOS.get(0).getHeight()); |
| | | task.setSlot(loadStation.get(0)); |
| | | // loadGlassDeviceTaskService.updateTaskMessage(tableName, task); |
| | | S7DataSP s7DataSPWrite = new S7DataSP(); |
| | | s7DataSPWrite.setTotalCount(number); |
| | | s7DataSPWrite.setTaskRunning(Boolean.TRUE); |
| | |
| | | s7DataSP = s7SerializerSPTwo.read(S7DataSP.class); |
| | | } |
| | | log.info("{}上片线,当前上片位信息:{}", deviceId, s7DataSP); |
| | | // LoadGlassDeviceTask task = loadGlassDeviceTaskService.queryTaskMessage(tableName); |
| | | if (s7DataSP.getTaskRunning().toString().equals(Const.ENGINEERING_NEW)) { |
| | | // if (task.getTaskRunning().equals(Const.ENGINEERING_NEW)) { |
| | | log.info("无任务,结束"); |
| | | return; |
| | | } |
| | | if (Integer.parseInt(s7DataSP.getTaskState().toString()) <= 1) { |
| | | // if (task.getTaskState() <= 1) { |
| | | log.info("任务正在执行,结束"); |
| | | return; |
| | | } |
| | |
| | | Integer finishCount = Integer.parseInt(s7DataSP.getFinishCount().toString()); |
| | | Integer damageCount = Integer.parseInt(s7DataSP.getDamageCount().toString()); |
| | | Integer slot = Integer.parseInt(s7DataSP.getSlot().toString()); |
| | | // Integer finishCount = task.getFinishCount(); |
| | | // Integer damageCount = task.getDamageCount(); |
| | | |
| | | //更新当前架子上的原片剩余情况 |
| | | rawGlassStorageDetailsService.update(new UpdateWrapper<RawGlassStorageDetails>() |
| | |
| | | .set(UpPattenUsage::getState, Const.LOAD_RAW_GLASS_SUCCESS)); |
| | | } |
| | | //任务表数据情况 |
| | | // task.setTaskRunning(0); |
| | | // task.setTotalCount(0); |
| | | // task.setRawGlassWidth(0); |
| | | // task.setRawGlassHeight(0); |
| | | // task.setSlot(0); |
| | | // loadGlassDeviceTaskService.updateTaskMessage(tableName, task); |
| | | S7DataSP s7DataSPWrite = new S7DataSP(); |
| | | s7DataSPWrite.setTaskRunning(Boolean.FALSE); |
| | | s7DataSPWrite.setTotalCount(0); |
| | |
| | | password: 123456 |
| | | kangaroohy: |
| | | milo: |
| | | enabled: true |
| | | enabled: false |
| | | primary: default |
| | | config: |
| | | default: |
| | |
| | | public void requestTemperingTask() throws Exception { |
| | | S7DataGHOne s7DataGHOne = s7SerializerGHOne.read(S7DataGHOne.class); |
| | | log.info("读取到的GH1S7.GH1S7数据:{}", s7DataGHOne); |
| | | // ReadWriteEntity requestInTempering = miloService.readFromOpcUa("GH1S7.GH1S7.requestInTempering");//请求进片 |
| | | // ReadWriteEntity requestTemperingId = miloService.readFromOpcUa("GH1S7.GH1S7.requestTemperingId");//请求进片 炉号ID |
| | | // Integer request = Integer.parseInt(requestInTempering.getValue().toString()); |
| | | // Integer id = Integer.parseInt(requestTemperingId.getValue().toString()); |
| | | Integer request = (int) s7DataGHOne.getRequestInTempering(); |
| | | Integer id = (int) s7DataGHOne.getRequestTemperingId(); |
| | | if (request == 0) { |
| | | // miloService.writeToOpcUa(generateReadWriteEntity("GH1S7.GH1S7.responseInTempering", 0));//允许送片清零 |
| | | s7SerializerGHOne.write( |
| | | S7DataGHOne.builder().responseInTempering(0).build() |
| | | ); |
| | |
| | | log.info("炉号不能为0"); |
| | | return; |
| | | } |
| | | // ReadWriteEntity placedNumber = miloService.readFromOpcUa("GH1S7.GH1S7.placedNumber");//已摆片数量 |
| | | String placedNumber = s7DataGHOne.getPlacedNumber().toString();//已摆片数量 |
| | | List<TemperingGlassInfo> glassList = temperingAgoService.selectGlassInfoById(id); |
| | | // if (Integer.parseInt(placedNumber.getValue().toString()) == glassList.size()) { |
| | | if (Integer.parseInt(placedNumber) == glassList.size()) { |
| | | // miloService.writeToOpcUa(generateReadWriteEntity("GH1S7.GH1S7.responseInTempering", 1));//写入允许送片 |
| | | s7SerializerGHOne.write( |
| | | S7DataGHOne.builder().responseInTempering(1).build() |
| | | ); |
| | | } else { |
| | | // miloService.writeToOpcUa(generateReadWriteEntity("GH1S7.GH1S7.responseInTempering", 2));//不满足进炉条件 |
| | | s7SerializerGHOne.write( |
| | | S7DataGHOne.builder().responseInTempering(2).build() |
| | | ); |
| | |
| | | log.info("读取到的GH1S7.GH1S7数据:{}", s7DataGHOne); |
| | | Integer loadTemperingId = s7DataGHOne.getLoadTemperingId();//进片完成 炉号ID |
| | | getNewTemperingID(loadTemperingId);//进片完成 下发参数 |
| | | // ReadWriteEntity loadTemperingId = miloService.readFromOpcUa("GH1S7.GH1S7.loadTemperingId");//进片完成 炉号ID |
| | | // getNewTemperingID(Integer.parseInt(loadTemperingId.getValue().toString()));//进片完成 下发参数 |
| | | // getNewTemperingID(19); |
| | | } |
| | | |
| | | /** |
| | |
| | | int furanchiIdEntity = tempModbusTcp.readUInt16(40461 - offset); |
| | | if (StringUtils.isNotBlank(furanchiIdEntity + "")) { |
| | | int temperingid = furanchiIdEntity; |
| | | // ReadWriteEntity furanchiIdEntity = miloService.readFromOpcUa("GH1.GH1.Furanch1Id");//进片完成 炉号ID |
| | | // if (StringUtils.isNotBlank(furanchiIdEntity.getValue()+"")){ |
| | | // int temperingid = Integer.parseInt(furanchiIdEntity.getValue().toString()); |
| | | temperingAgoService.update(new LambdaUpdateWrapper<TemperingGlassInfo>().set(TemperingGlassInfo::getState, Const.TEMPERING_START) |
| | | .in(TemperingGlassInfo::getState, Const.TEMPERING_OUT, Const.TEMPERING_DROP).eq(TemperingGlassInfo::getTemperingLayoutId, temperingid)); |
| | | } |
| | |
| | | private void getNewTemperingID(Integer temperingid) throws Exception { |
| | | int autoStatus = tempModbusTcp.readUInt16(40451 - offset); |
| | | if (1 != autoStatus) { |
| | | // ReadWriteEntity autoStatus = miloService.readFromOpcUa("GH1.GH1.AutoStatus"); |
| | | // if (1 != Integer.parseInt(autoStatus.getValue().toString())) { |
| | | log.info("当前为非联机状态,结束钢化下发参数任务"); |
| | | return; |
| | | } |
| | | int QandA = tempModbusTcp.readUInt16(40422 - offset); |
| | | int RecipeStatus = tempModbusTcp.readUInt16(40456 - offset); |
| | | if (1 == QandA && 2 == RecipeStatus) { |
| | | // ReadWriteEntity QandA = miloService.readFromOpcUa("GH1.GH1.QandA"); |
| | | // ReadWriteEntity RecipeStatus = miloService.readFromOpcUa("GH1.GH1.RecipeStatus"); |
| | | // if (1 == Integer.parseInt(QandA.getValue().toString()) && 2 == Integer.parseInt(RecipeStatus.getValue().toString())) { |
| | | log.info("版面信息已经下发,并且已经匹配参数,结束钢化下发参数任务"); |
| | | return; |
| | | } |
| | |
| | | tempModbusTcp.writeUInt16(40415 - offset, workmode); |
| | | tempModbusTcp.writeUInt16(40416 - offset, furmode); |
| | | |
| | | // miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.TemperingId", temperingid));//写入炉号 |
| | | // miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.GlassType", glasstype));//写入玻璃类型 |
| | | // miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.Process", process));//写入钢化类型 全钢 半钢 防火 |
| | | // miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.Thickness", thiness));//写入厚度 |
| | | // miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.LoadingRate", loadingRate));//写入装载率 |
| | | // miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.Shape", shape));//写入大片比例 |
| | | // miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.WorkMode", workmode));//写入工位数 |
| | | // miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.FurnaceMode", furmode));//写入炉体工作方式 |
| | | log.info("炉号" + temperingid + "版面信息尝试下发"); |
| | | } |
| | | } |
| | |
| | | S7DataGHTwo s7DataGHTwo = s7SerializerGHTwo.read(S7DataGHTwo.class); |
| | | String engineerEntity = s7DataGHTwo.getF09EngineerId(); |
| | | Integer temperingLayoutIdEntity = s7DataGHTwo.getF09TemperingLayoutId(); |
| | | // ReadWriteEntity engineerEntity = miloService.readFromOpcUa("GH2S7.GH2S7.F09_ENGINEER_ID"); |
| | | // ReadWriteEntity temperingLayoutIdEntity = miloService.readFromOpcUa("GH2S7.GH2S7.F09_TEMPERING_LAYOUT_ID"); |
| | | |
| | | if (null == engineerEntity || null == temperingLayoutIdEntity) { |
| | | engineerEntity = s7DataGHTwo.getF08EngineerId(); |
| | | temperingLayoutIdEntity = s7DataGHTwo.getF08TemperingLayoutId(); |
| | | // engineerEntity = miloService.readFromOpcUa("GH2S7.GH2S7.F08_ENGINEER_ID"); |
| | | // temperingLayoutIdEntity = miloService.readFromOpcUa("GH2S7.GH2S7.F08_TEMPERING_LAYOUT_ID"); |
| | | if (null == engineerEntity || null == temperingLayoutIdEntity) { |
| | | log.info("获取参数异常,结束本次任务"); |
| | | return new ArrayList<>(); |
| | |
| | | JSONObject jsonObject = new JSONObject(); |
| | | //正在等待进片的玻璃 |
| | | List<TemperingGlassInfo> waitingGlass = selectWaitingGlassByOpc(); |
| | | // List<TemperingGlassInfo> waitingGlass = temperingAgoService.selectWaitingGlassByOpc(); |
| | | if (waitingGlass != null) { |
| | | jsonObject.append("waitingGlass", waitingGlass); |
| | | } |
| | |
| | | password: 123456 |
| | | kangaroohy: |
| | | milo: |
| | | enabled: true |
| | | enabled: false |
| | | primary: default |
| | | config: |
| | | default: |
| | |
| | | |
| | | Integer slotWidth = sysConfigService.queryConfigValue(ConstSysConfig.HOLLOW_SLOT_WIDTH); |
| | | // Integer glassGap = sysConfigService.queryConfigValue(ConstSysConfig.HOLLOW_GLASS_GAP); |
| | | Integer glassGap = getGlassGapByThickness(tempGlassList.get(0).getThickness()); |
| | | Integer glassGap = getGlassGapByThickness(glassInfo.getThickness()); |
| | | Integer outCarMaxSize = sysConfigService.queryConfigValue(ConstSysConfig.HOLLOW_OUT_CAR_SIZE); |
| | | List<HollowGlassRelationInfo> relationInfoList = new ArrayList(); |
| | | List<List<HollowGlassRelationInfo>> tempHollowList = new ArrayList<>(); |
| | |
| | | if (null != orderDetails) { |
| | | BeanUtils.copyProperties(orderDetails, hollowAllFlowCardVO); |
| | | hollowAllFlowCardVO.setFlowCardId(e); |
| | | |
| | | if (cageDetails.getHollowSequence() == 0) { |
| | | hollowAllFlowCardVO.setIsThroughSlot(Boolean.TRUE); |
| | | } else { |
| | | hollowAllFlowCardVO.setIsThroughSlot(Boolean.FALSE); |
| | | } |
| | | List<FlowCardGlassInfoDTO> flowCardInfoList = hollowBigStorageCageDetailsService.hollowIsAll(e, cageDetails.getTotalLayer(), Boolean.FALSE); |
| | | hollowAllFlowCardVO.setFlowCardGlassInfoDTOList(flowCardInfoList); |
| | | pairTotalCount.addAndGet(flowCardInfoList.get(0).getPairCount()); |
| | | |
| | | log.info("获取到的流程卡信息为:{}", flowCardInfoList); |
| | | if(CollectionUtil.isNotEmpty(flowCardInfoList)){ |
| | | hollowAllFlowCardVO.setFlowCardGlassInfoDTOList(flowCardInfoList); |
| | | pairTotalCount.addAndGet(flowCardInfoList.get(0).getPairCount()); |
| | | } |
| | | resultList.add(hollowAllFlowCardVO); |
| | | } |
| | | }); |
| | |
| | | } |
| | | return sysConfigService.queryConfigValue(sysKey); |
| | | } |
| | | // @Override |
| | | // public List<LackDetailsDTO> queryLackByFlowCard(String flowCardId) { |
| | | // List<LackDetailsDTO> lackDetailsList = this.baseMapper.queryLackByFlowCard(flowCardId); |
| | | // return lackDetailsList; |
| | | // } |
| | | |
| | | private void sortFlowCardIdList(List<HollowAllFlowCardVO> list) { |
| | | Pattern pattern = Pattern.compile("^NG(\\d+)([A-Za-z]+)(\\d+)$"); |
| | |
| | | } |
| | | String glassIdEntitys = readString(modbusTcp, 42003 - offset); |
| | | log.info("除膜{}获取当前的玻璃id:{}", cell, glassIdEntitys); |
| | | // byte[] res = CMJ1ModbusTcp.readHoldRegister(1, 42003, 14); |
| | | // String glassId1 = ByteReadBuff.newInstance(res, 0, false, EByteBuffFormat.CD_AB).getString(10); |
| | | // String glassId2 = ByteReadBuff.newInstance(res, 0, false, EByteBuffFormat.AB_CD).getString(10); |
| | | // String glassId3 = ByteReadBuff.newInstance(res, 0, false, EByteBuffFormat.BA_DC).getString(10); |
| | | // String glassId4 = ByteReadBuff.newInstance(res, 0, false, EByteBuffFormat.DC_BA).getString(10); |
| | | // log.info("获取{}当前的玻璃id1:{}", cell, glassId1); |
| | | // log.info("获取{}当前的玻璃id2:{}", cell, glassId2); |
| | | // log.info("获取{}当前的玻璃id3:{}", cell, glassId3); |
| | | // log.info("获取{}当前的玻璃id4:{}", cell, glassId4); |
| | | Integer requestEntity = modbusTcp.readUInt16(42001 - offset); |
| | | // ReadWriteEntity requestEntity = miloService.readFromOpcUa(cell + "mesControl"); |
| | | // if ("0".equals(requestEntity.getValue() + "")) { |
| | | if (0 == requestEntity) { |
| | | log.info("当前除膜机为单机状态"); |
| | | return; |
| | | } |
| | | // int request = Integer.parseInt(requestEntity.getValue() + ""); |
| | | int request = requestEntity; |
| | | int flagRequest = request & 3; |
| | | if (flagRequest != 3) { |
| | |
| | | return; |
| | | } |
| | | |
| | | |
| | | // String glassIdEntity = modbusTcp.readString(42003 - offset, 20); |
| | | String glassIdEntity = readString(modbusTcp, 42003 - offset); |
| | | // String glassIdEntity = ByteReadBuff.newInstance(res, 0, false, EByteBuffFormat.CD_AB).getString(10); |
| | | //你删了? |
| | | log.info("除膜{}获取当前的信号为:{},玻璃id:{}", cell, flagRequest, glassIdEntity); |
| | | if (null == glassIdEntity || StringUtils.isBlank(glassIdEntity)) { |
| | | // ReadWriteEntity glassIdEntity = miloService.readFromOpcUa(cell + "glassId"); |
| | | // if (null == glassIdEntity.getValue() || StringUtils.isBlank(glassIdEntity.getValue() + "")) { |
| | | log.info("当前未收到玻璃id数据,结束任务"); |
| | | return; |
| | | } |
| | | |
| | | // log.info("除膜{}获取当前的玻璃id:{}", cell, glassIdEntity); |
| | | // if (null == glassIdEntity.getValue() || StringUtils.isBlank(glassIdEntity.getValue() + "")) { |
| | | // log.info("当前未收到玻璃id数据,结束任务"); |
| | | // return; |
| | | // } |
| | | log.info("当前需要除膜的玻璃id为:{}", glassIdEntity); |
| | | //按照玻璃id获取对应的任务id |
| | | HollowGlassFormulaVO detailsVO = hollowFormulaDetailsService.queryFormulaDetailsByGlassId(glassIdEntity, null, null); |
| | |
| | | } |
| | | //按照任务id获取对应的配方信息 |
| | | int Id = 0; |
| | | List<ReadWriteEntity> ualist = new ArrayList<>(); |
| | | List<ReadWriteEntity> wordlist = new ArrayList<>(); |
| | | log.info("除膜{}获取玻璃{},是否除膜:{}", cell, requestEntity, detailsVO.getFilmRemove()); |
| | | if (detailsVO.getFilmRemove() == 0) { |
| | | // 10111011 |
| | | int sendId = request & 63; |
| | | Id = sendId + 4; |
| | | // wordlist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "mesControl", sendId)); |
| | | modbusTcp.writeUInt16(42001 - offset, sendId); |
| | | } else { |
| | | // 先将对应的位置为0,获得请求的玻璃数据, 然后将对应位值 110111011 |
| | |
| | | modbusTcp.writeUInt32(42021 - offset, detailsVO.getTopRemove()); |
| | | modbusTcp.writeUInt32(42023 - offset, detailsVO.getTopRemove()); |
| | | modbusTcp.writeUInt32(42025 - offset, detailsVO.getTopRemove()); |
| | | // wordlist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "mesControl", sendId)); |
| | | // ualist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "glassTop", detailsVO.getTopRemove())); |
| | | // ualist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "glassBottom", detailsVO.getBottomRemove())); |
| | | // ualist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "glassLeft", detailsVO.getLeftRemove())); |
| | | // ualist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "glassRight", detailsVO.getRightRemove())); |
| | | } |
| | | modbusTcp.writeUInt32(42013 - offset, (int) (detailsVO.getThickness() * 10)); |
| | | modbusTcp.writeUInt32(42015 - offset, (int) (Math.max(detailsVO.getWidth(), detailsVO.getHeight())) * 10); |
| | | modbusTcp.writeUInt32(42017 - offset, (int) (Math.min(detailsVO.getWidth(), detailsVO.getHeight())) * 10); |
| | | modbusTcp.writeUInt16(42001 - offset, Id); |
| | | // ualist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "thickness", (int) (detailsVO.getThickness() * 10))); |
| | | // ualist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "firstLength", (int) (Math.max(detailsVO.getWidth(), detailsVO.getHeight())) * 10)); |
| | | // ualist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "secondLength", (int) (Math.min(detailsVO.getWidth(), detailsVO.getHeight())) * 10)); |
| | | // miloService.writeToOpcWord(wordlist); |
| | | // miloService.writeToOpcUa(ualist); |
| | | return; |
| | | } |
| | | |
| | |
| | | //向电气发送清楚信号 |
| | | int sendId = request & 251; |
| | | log.info("{}收到除膜机ID接收完成信号,将写入数据完成置0,发送数据为:{}", cell, sendId); |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // list.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "mesControl", sendId)); |
| | | // miloService.writeToOpcWord(list); |
| | | modbusTcp.writeUInt16(42001 - offset, sendId); |
| | | } |
| | | |
| | |
| | | @Resource |
| | | private RedisUtil redisUtil; |
| | | |
| | | // @Value("${mes.slotWidth}") |
| | | // private Integer slotWidth; |
| | | // |
| | | // @Value("${mes.glassGap}") |
| | | // private Integer glassGap; |
| | | // |
| | | // @Value("${mes.carWidth}") |
| | | // private Integer carWidth; |
| | | // |
| | | // @Value("${mes.outCarMaxSize}") |
| | | // private Integer outCarMaxSize; |
| | | // |
| | | // @Value("${mes.slotMaxHeight}") |
| | | // private Integer slotMaxHeight; |
| | | // @Value("${mes.slotMaxthickness}") |
| | | // private Integer slotMaxthickness; |
| | | |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void inBigStorageTask() throws Exception { |
| | | S7DataZKDLPOne s7DataZKDLPOne = s7SerializerZKDLPOne.read(S7DataZKDLPOne.class); |
| | | log.info("进片任务读取s7DataZKDLPOne:{}", s7DataZKDLPOne); |
| | | // ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP2A.DLP2A.mesControl"); |
| | | // if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) { |
| | | Boolean inkageEntity = s7DataZKDLPOne.getMesControl(); |
| | | if (true != inkageEntity) { |
| | | log.info("当前为非联机状态,结束进片任务"); |
| | | return; |
| | | } |
| | | // ReadWriteEntity requestEntity = miloService.readFromOpcUa("DLP2A.DLP2A.RequestMes"); |
| | | // if (!"1".equals(requestEntity.getValue() + "")) { |
| | | String requestEntity = s7DataZKDLPOne.getRequestMes().toString(); |
| | | if (!"1".equals(requestEntity)) { |
| | | log.info("当前未收到进片请求,结束进片任务"); |
| | | return; |
| | | } |
| | | // ReadWriteEntity mesReplyEntity = miloService.readFromOpcUa("DLP2A.DLP2A.MesReply"); |
| | | // if ("1".equals(mesReplyEntity.getValue() + "")) { |
| | | String mesReplyEntity = s7DataZKDLPOne.getMesReply().toString(); |
| | | if ("1".equals(mesReplyEntity)) { |
| | | log.info("有正在执行的任务,结束进片任务"); |
| | |
| | | } |
| | | |
| | | List<BigStorageCageTask> inTaskList = new ArrayList(); |
| | | // ReadWriteEntity fromOpcUa = miloService.readFromOpcUa("DLP2A.DLP2A.FROM1"); |
| | | String fromOpcUa = s7DataZKDLPOne.getFrom1().toString(); |
| | | List<String> glassIdList = new ArrayList<>(); |
| | | List<String> requestWords = s7DataZKDLPOne.getIds(); |
| | | for (int i = 1; i <= 6; i++) { |
| | | // ReadWriteEntity requestWord = miloService.readFromOpcUa("DLP2A.DLP2A.DI" + i); |
| | | String requestWord = requestWords.get(i - 1); |
| | | // if (null != requestWord.getValue()) { |
| | | if (null != requestWord && !requestWord.isEmpty()) { |
| | | BigStorageCageTask task = new BigStorageCageTask(); |
| | | // task.setGlassId(requestWord.getValue() + ""); |
| | | task.setGlassId(requestWord.toString()); |
| | | // task.setStartSlot(Integer.parseInt(fromOpcUa.getValue() + "")); |
| | | task.setGlassId(requestWord); |
| | | task.setStartSlot(Integer.parseInt(fromOpcUa)); |
| | | inTaskList.add(task); |
| | | // glassIdList.add(requestWord.getValue() + ""); |
| | | glassIdList.add(requestWord.toString()); |
| | | glassIdList.add(requestWord); |
| | | continue; |
| | | } |
| | | } |
| | |
| | | if (entry.getValue() > 1) { |
| | | log.info("进片玻璃{}存在相同,结束本次任务", entry.getKey()); |
| | | //向plc发送报警:同一车进片玻璃存在相同 |
| | | // miloService.writeToOpcWord(generateReadWriteEntity("DLP2A.DLP2A.alarmSignal", 2)); |
| | | s7DataZKDLPOne = new S7DataZKDLPOne(); |
| | | s7DataZKDLPOne.setAlramSignal(2); |
| | | s7SerializerZKDLPOne.write(s7DataZKDLPOne); |
| | |
| | | if (CollectionUtil.isNotEmpty(detailsList)) { |
| | | log.info("理片笼存在相同的进片玻璃{},结束本次任务", detailsList); |
| | | //向plc发送报警:理片笼存在相同的进片玻璃 |
| | | // miloService.writeToOpcWord(generateReadWriteEntity("DLP2A.DLP2A.alarmSignal", 4)); |
| | | s7DataZKDLPOne = new S7DataZKDLPOne(); |
| | | s7DataZKDLPOne.setAlramSignal(4); |
| | | s7SerializerZKDLPOne.write(s7DataZKDLPOne); |
| | |
| | | if (glassInfoList.size() != inTaskList.size()) { |
| | | log.info("进片任务数量{}与玻璃数量{}不匹配,结束本次进片", inTaskList.size(), glassInfoList.size()); |
| | | //向plc发送报警:进片任务数量与系统查询到的玻璃数量不匹配 |
| | | // miloService.writeToOpcWord(generateReadWriteEntity("DLP2A.DLP2A.alarmSignal", 8)); |
| | | s7DataZKDLPOne = new S7DataZKDLPOne(); |
| | | s7DataZKDLPOne.setAlramSignal(8); |
| | | s7SerializerZKDLPOne.write(s7DataZKDLPOne); |
| | |
| | | if (count < entry.getValue()) { |
| | | log.info("笼内格子剩余数量不足,结束本次进片"); |
| | | //向plc发送报警:笼内格子剩余数量不足 |
| | | // miloService.writeToOpcWord(generateReadWriteEntity("DLP2A.DLP2A.alarmSignal", 16)); |
| | | s7DataZKDLPOne = new S7DataZKDLPOne(); |
| | | s7DataZKDLPOne.setAlramSignal(16); |
| | | s7SerializerZKDLPOne.write(s7DataZKDLPOne); |
| | |
| | | if (count > 0) { |
| | | log.info("直通片台存在玻璃,结束本次进片"); |
| | | //向plc发送报警:直通片台存在玻璃,无法继续直通 |
| | | // miloService.writeToOpcWord(generateReadWriteEntity("DLP2A.DLP2A.alarmSignal", 64)); |
| | | s7DataZKDLPOne = new S7DataZKDLPOne(); |
| | | s7DataZKDLPOne.setAlramSignal(64); |
| | | s7SerializerZKDLPOne.write(s7DataZKDLPOne); |
| | |
| | | |
| | | Integer glassGap = sysConfigService.queryConfigValue(ConstSysConfig.HOLLOW_GLASS_GAP); |
| | | try { |
| | | log.info("开始计算目标格子,玻璃id有:{}", inTaskList); |
| | | if (slotMaxHeight > Math.min(glassInfoList.get(0).getWidth(), glassInfoList.get(0).getHeight()) && glassInfoList.get(0).getThickness() < slotMaxthickness) { |
| | | for (BigStorageCageTask task : inTaskList) { |
| | | GlassInfo info = glassListMap.get(task.getGlassId()).get(0); |
| | |
| | | .eq(HollowBigStorageCage::getSlot, bigStorageDTO.getSlot())); |
| | | task.setTargetSlot(bigStorageDTO.getSlot()); |
| | | task.setGlassId(info.getGlassId()); |
| | | // bigStorageCageTaskService.updateTaskMessage(BIG_STORAGE_CAGE_IN_TWO_TASK, task); |
| | | //存放历史任务 |
| | | HollowBigStorageCageHistoryTask historyTask = new HollowBigStorageCageHistoryTask(); |
| | | BeanUtils.copyProperties(task, historyTask); |
| | |
| | | } else { |
| | | BigStorageCageTask task = inTaskList.get(0); |
| | | task.setTargetSlot(THROUGH_SLOT); |
| | | // bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_two_task", task); |
| | | //存放历史任务 |
| | | HollowBigStorageCageHistoryTask historyTask = new HollowBigStorageCageHistoryTask(); |
| | | BeanUtils.copyProperties(task, historyTask); |
| | |
| | | //历史数据入库 |
| | | hollowBigStorageCageHistoryTaskService.saveBatch(historyTasks); |
| | | //向opc发送启动信号 |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // for (int i = 1; i <= inTaskList.size(); i++) { |
| | | // list.add(generateReadWriteEntity("DLP2A.DLP2A.TO" + i, inTaskList.get(i - 1).getTargetSlot())); |
| | | // } |
| | | // list.add(generateReadWriteEntity("DLP2A.DLP2A.MesReply", 1)); |
| | | // miloService.writeToOpcWord(list); |
| | | s7DataZKDLPOne = new S7DataZKDLPOne(); |
| | | for (int i = 0; i < inTaskList.size() && i < 6; i++) { |
| | | Integer value = inTaskList.get(i).getTargetSlot(); |
| | |
| | | Date startDate = new Date(); |
| | | S7DataZKDLPTwo s7DataZKDLPTwo = s7SerializerZKDLPTwo.read(S7DataZKDLPTwo.class); |
| | | log.info("出片任务读取s7DataZKDLPTwo:{}", s7DataZKDLPTwo); |
| | | // ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP2B.DLP2B.mesControl"); |
| | | // if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) { |
| | | Boolean inkageEntity = s7DataZKDLPTwo.getMesControl(); |
| | | if (true != inkageEntity) { |
| | | log.info("当前为非联机状态,结束进片任务"); |
| | | return; |
| | | } |
| | | // ReadWriteEntity requestEntity = miloService.readFromOpcUa("DLP2B.DLP2B.RequestMes"); |
| | | // if (!"1".equals(requestEntity.getValue() + "")) { |
| | | String requestEntity = s7DataZKDLPTwo.getRequestMes().toString(); |
| | | if (!"1".equals(requestEntity)) { |
| | | log.info("当前未收到出片请求,结束出片任务"); |
| | | return; |
| | | } |
| | | //获取出片任务表 |
| | | // List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage(BIG_STORAGE_CAGE_OUT_TWO_TASK); |
| | | |
| | | List<BigStorageCageTask> outTaskList = getOutTaskList(s7DataZKDLPTwo); |
| | | |
| | | if (CollectionUtil.isNotEmpty(outTaskList)) { |
| | |
| | | if (null == hollowGlassOutRelationInfo) { |
| | | Boolean entity = map.get(i); |
| | | cell = i; |
| | | // if (null != entity.getValue() && ("1".equals(entity.getValue() + "") || Boolean.parseBoolean(entity.getValue() + ""))) { |
| | | if (null != entity && entity) { |
| | | hollowGlassOutRelationInfo = hollowGlassOutRelationInfoService |
| | | .getOne(new LambdaQueryWrapper<HollowGlassOutRelationInfo>() |
| | |
| | | .set(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_SUCCESS)); |
| | | } |
| | | } |
| | | // redisUtil.setCacheObject("dispatchHollowSwitch",true); |
| | | //是否存在需要内部调度的格子:执行内部调度任务 |
| | | if (redisUtil.getCacheObject("dispatchHollowSwitch")) { |
| | | //todo:获取笼内单格已经到齐的玻璃格子信息 |
| | |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void finishInBigStorageTask() throws Exception { |
| | | S7DataZKDLPOne s7DataZKDLPOne = s7SerializerZKDLPOne.read(S7DataZKDLPOne.class); |
| | | // ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP2A.DLP2A.mesControl"); |
| | | // if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) { |
| | | Boolean inkageEntity = s7DataZKDLPOne.getMesControl(); |
| | | if (true != inkageEntity) { |
| | | log.info("当前为非联机状态,结束完成进片任务"); |
| | |
| | | //获取进片任务表 |
| | | List<BigStorageCageTask> inTaskList = new ArrayList(); |
| | | List<String> glassIdList = new ArrayList<>(); |
| | | // ReadWriteEntity toWord = miloService.readFromOpcUa("DLP2A.DLP2A.TO1"); |
| | | // if ("0".equals(toWord.getValue() + "")) { |
| | | String toWord = s7DataZKDLPOne.getTo1().toString(); |
| | | if ("0".equals(toWord)) { |
| | | log.info("完成任务已执行,结束本次完成进片任务"); |
| | | return; |
| | | } |
| | | for (int i = 1; i <= 6; i++) { |
| | | // ReadWriteEntity requestWord = miloService.readFromOpcUa("DLP2A.DLP2A.DI" + i); |
| | | // ReadWriteEntity statetWord = miloService.readFromOpcUa("DLP2A.DLP2A.STATE" + i); |
| | | // ReadWriteEntity toOpcUa = miloService.readFromOpcUa("DLP2A.DLP2A.TO" + i); |
| | | // ReadWriteEntity fromOpcUa = miloService.readFromOpcUa("DLP2A.DLP2A.FROM" + i); |
| | | String requestWord = ""; |
| | | String statetWord = ""; |
| | | String toOpcUa = ""; |
| | |
| | | // if (null != requestWord.getValue()) { |
| | | if (null != requestWord && !requestWord.isEmpty()) { |
| | | BigStorageCageTask task = new BigStorageCageTask(); |
| | | // task.setGlassId(requestWord.getValue() + ""); |
| | | // task.setTargetSlot(Integer.parseInt(toOpcUa.getValue() + "")); |
| | | // task.setTaskState(Integer.parseInt(statetWord.getValue() + "")); |
| | | // task.setStartSlot(Integer.parseInt(fromOpcUa.getValue() + "")); |
| | | task.setGlassId(requestWord); |
| | | task.setTargetSlot(Integer.parseInt(toOpcUa)); |
| | | task.setTaskState(Integer.parseInt(statetWord)); |
| | | task.setStartSlot(Integer.parseInt(fromOpcUa)); |
| | | inTaskList.add(task); |
| | | // glassIdList.add(requestWord.getValue() + ""); |
| | | glassIdList.add(requestWord); |
| | | continue; |
| | | } |
| | |
| | | } |
| | | //清空启动状态 |
| | | //向opc发送启动信号 |
| | | //向opc发送启动信号 |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // for (int i = 1; i <= 6; i++) { |
| | | // list.add(generateReadWriteEntity("DLP2A.DLP2A.TO" + i, 0)); |
| | | // } |
| | | // list.add(generateReadWriteEntity("DLP2A.DLP2A.MesReply", 0)); |
| | | // miloService.writeToOpcWord(list); |
| | | s7DataZKDLPOne = new S7DataZKDLPOne(); |
| | | s7DataZKDLPOne.setTo1(0); |
| | | s7DataZKDLPOne.setTo2(0); |
| | |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void finishOutBigStorageTask() throws Exception { |
| | | S7DataZKDLPTwo s7DataZKDLPTwo = s7SerializerZKDLPTwo.read(S7DataZKDLPTwo.class); |
| | | // ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP2B.DLP2B.mesControl"); |
| | | // if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) { |
| | | Boolean inkageEntity = s7DataZKDLPTwo.getMesControl(); |
| | | if (true != inkageEntity) { |
| | | log.info("当前为非联机状态,结束完成出片任务"); |
| | | return; |
| | | } |
| | | //获取出片任务表 |
| | | // List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage(BIG_STORAGE_CAGE_OUT_TWO_TASK); |
| | | List<BigStorageCageTask> outTaskList = getOutTaskList(s7DataZKDLPTwo); |
| | | if (CollectionUtil.isEmpty(outTaskList)) { |
| | | log.info("当前大车无出片玻璃,结束完成出片任务"); |
| | |
| | | } |
| | | |
| | | // 重置任务表数据 |
| | | // bigStorageCageTaskService.updateOutTaskMessage(BIG_STORAGE_CAGE_OUT_TWO_TASK); |
| | | resetOutTask(); |
| | | //清空启动状态 |
| | | //向opc发送启动信号 |
| | | // miloService.writeToOpcWord(generateReadWriteEntity("DLP2B.DLP2B.MesReply", 0)); |
| | | s7DataZKDLPTwo = new S7DataZKDLPTwo(); |
| | | s7DataZKDLPTwo.setMesReply(0); |
| | | s7SerializerZKDLPTwo.write(s7DataZKDLPTwo); |
| | |
| | | for (T t : baseInfoList) { |
| | | bigStorageCageTaskList.add(new BigStorageCageTask(t.getGlassId(), t.getSlot(), targetSlot, 0)); |
| | | } |
| | | // while (bigStorageCageTaskList.size() < 6) { |
| | | // bigStorageCageTaskList.add(new BigStorageCageTask("", 0, 0, 0)); |
| | | // } |
| | | //清空任务表数据 |
| | | resetOutTask(); |
| | | // bigStorageCageTaskService.removeAll(tableName); |
| | | // bigStorageCageTaskService.saveTaskMessage(tableName, bigStorageCageTaskList); |
| | | log.info("生成出片任务数据{}", bigStorageCageTaskList); |
| | | S7DataZKDLPTwo s7DataZKDLPTwo = new S7DataZKDLPTwo(); |
| | | for (int i = 0; i < bigStorageCageTaskList.size() && i < 6; i++) { |
| | |
| | | .ne(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_OUT) |
| | | .in(HollowBigStorageCageDetails::getGlassId, glassIds)); |
| | | try { |
| | | |
| | | // miloService.writeToOpcWord(generateReadWriteEntity("DLP2B.DLP2B.MesReply", 1)); |
| | | s7DataZKDLPTwo = new S7DataZKDLPTwo(); |
| | | s7DataZKDLPTwo.setMesReply(1); |
| | | s7SerializerZKDLPTwo.write(s7DataZKDLPTwo); |
| | |
| | | Integer slotWidth = sysConfigService.queryConfigValue(ConstSysConfig.HOLLOW_SLOT_WIDTH); |
| | | if (CollectionUtils.isNotEmpty(inSlotGlassList)) { |
| | | //存在 将格子内的玻璃分别进行更新 |
| | | // List<HollowBigStorageCage> hollowBigStorageCageList = hollowBigStorageCageService.list(new LambdaQueryWrapper<HollowBigStorageCage>() |
| | | // .lt(HollowBigStorageCage::getRemainWidth, 0).in(HollowBigStorageCage::getSlot, slotList)); |
| | | // List<Integer> resultSlotList = hollowBigStorageCageList.stream().map(HollowBigStorageCage::getSlot).collect(Collectors.toList()); |
| | | slotRemainMap = inSlotGlassList.stream() |
| | | .collect(Collectors.groupingBy(HollowBigStorageCageDetails::getSlot, Collectors.summingDouble(item -> Math.max(item.getWidth(), item.getHeight()) + glassGap))); |
| | | slotRemainMap.forEach((e, v) -> { |
| | |
| | | } |
| | | |
| | | try { |
| | | // ReadWriteEntity freeOneRequestEntity = miloService.readFromOpcUa(isFreeTag); |
| | | jsonObject.append("freeRequest", isFreeTag); |
| | | } catch (Exception e) { |
| | | log.error("opc存在异常", e); |
| | |
| | | try { |
| | | //进片任务数据 |
| | | List<BigStorageTaskVO> inTaskList = new ArrayList(); |
| | | // ReadWriteEntity fromOpcUa = miloService.readFromOpcUa("DLP2A.DLP2A.FROM1"); |
| | | String fromOpcUa = s7DataZKDLPOne.getFrom1().toString(); |
| | | for (int i = 0; i < 6; i++) { |
| | | // ReadWriteEntity requestWord = miloService.readFromOpcUa("DLP2A.DLP2A.DI" + i); |
| | | // ReadWriteEntity targetSlotWord = miloService.readFromOpcUa("DLP2A.DLP2A.TO" + i); |
| | | // ReadWriteEntity stateWord = miloService.readFromOpcUa("DLP2A.DLP2A.STATE" + i); |
| | | String requestWord = ""; |
| | | String stateWord = ""; |
| | | String targetSlotWord = ""; |
| | |
| | | targetSlotWord = s7DataZKDLPOne.getTo6().toString(); |
| | | break; |
| | | } |
| | | // if (null != requestWord.getValue()) { |
| | | if (null != requestWord) { |
| | | BigStorageTaskVO task = new BigStorageTaskVO(); |
| | | // task.setGlassId(requestWord.getValue() + ""); |
| | | task.setGlassId(requestWord); |
| | | int isExistCount = hollowBigStorageCageDetailsService.count(new LambdaQueryWrapper<HollowBigStorageCageDetails>().in(HollowBigStorageCageDetails::getGlassId, task.getGlassId()) |
| | | .in(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL)); |
| | |
| | | } else { |
| | | task.setIsSame(0); |
| | | } |
| | | // task.setStartSlot(Integer.parseInt(fromOpcUa.getValue() + "")); |
| | | // task.setTargetSlot(Integer.parseInt(targetSlotWord.getValue() + "")); |
| | | // task.setTaskState(Integer.parseInt(stateWord.getValue() + "")); |
| | | task.setStartSlot(Integer.parseInt(fromOpcUa)); |
| | | task.setTargetSlot(Integer.parseInt(targetSlotWord)); |
| | | task.setTaskState(Integer.parseInt(stateWord)); |
| | |
| | | } |
| | | try { |
| | | //进片联机 |
| | | // ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP2A.DLP2A.mesControl"); |
| | | // jsonObject.append("inkageEntity", inkageEntity.getValue()); |
| | | Boolean inkageEntity = s7DataZKDLPOne.getMesControl(); |
| | | jsonObject.append("inkageEntity", inkageEntity); |
| | | //进片请求 |
| | | // ReadWriteEntity requestEntity = miloService.readFromOpcUa("DLP2A.DLP2A.RequestMes"); |
| | | // jsonObject.append("requestEntity", requestEntity.getValue()); |
| | | String requestEntity = s7DataZKDLPOne.getRequestMes().toString(); |
| | | jsonObject.append("requestEntity", requestEntity); |
| | | //启动命令 |
| | | // ReadWriteEntity mesReplyEntity = miloService.readFromOpcUa("DLP2A.DLP2A.MesReply"); |
| | | // jsonObject.append("mesReplyEntity", mesReplyEntity.getValue()); |
| | | String mesReplyEntity = s7DataZKDLPOne.getMesReply().toString(); |
| | | jsonObject.append("mesReplyEntity", mesReplyEntity); |
| | | //出片联机 |
| | | // ReadWriteEntity outInkageEntity = miloService.readFromOpcUa("DLP2B.DLP2B.mesControl"); |
| | | // jsonObject.append("outInkageEntity", outInkageEntity.getValue()); |
| | | String outInkageEntity = s7DataZKDLPTwo.getMesControl().toString(); |
| | | jsonObject.append("outInkageEntity", outInkageEntity); |
| | | //出片请求 |
| | | // ReadWriteEntity outRequestEntity = miloService.readFromOpcUa("DLP2B.DLP2B.RequestMes"); |
| | | // jsonObject.append("outRequestEntity", outRequestEntity.getValue()); |
| | | String outRequestEntity = s7DataZKDLPTwo.getRequestMes().toString(); |
| | | jsonObject.append("outInkageEntity", outInkageEntity); |
| | | //930空闲信号 |
| | | // ReadWriteEntity freeOneRequestEntity = miloService.readFromOpcUa("CMJ1.CMJ1.isFree"); |
| | | // jsonObject.append("freeOneRequestEntity", freeOneRequestEntity.getValue()); |
| | | jsonObject.append("freeOneRequestEntity", CMJ1ModbusTcp.readUInt16(42027 - offset)); |
| | | //931空闲信号 |
| | | // ReadWriteEntity freeTwoRequestEntity = miloService.readFromOpcUa("ZKQ2.ZKQ2.isFree"); |
| | | // jsonObject.append("freeTwoRequestEntity", freeTwoRequestEntity.getValue()); |
| | | jsonObject.append("freeTwoRequestEntity", s7DataZKExtra.getIsFree()); |
| | | //932空闲信号 |
| | | // ReadWriteEntity freeThreeRequestEntity = miloService.readFromOpcUa("ZKQ3.ZKQ3.isFree"); |
| | | // jsonObject.append("freeThreeRequestEntity", freeThreeRequestEntity.getValue()); |
| | | jsonObject.append("freeThreeRequestEntity", s7DataZKExtra.getIsFree()); |
| | | } catch (Exception e) { |
| | | //todo:不做任务处理 |
| | | } |
| | | |
| | | //出片任务数据 |
| | | // List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_out_two_task"); |
| | | // jsonObject.append("bigStorageCageDetailsOutTask", outTaskList); |
| | | List<BigStorageCageTask> outTaskList = new ArrayList<>(); |
| | | for (int i = 0; i < 6; i++) { |
| | | |
| | |
| | | password: 123456 |
| | | kangaroohy: |
| | | milo: |
| | | enabled: true |
| | | enabled: false |
| | | primary: default |
| | | config: |
| | | default: |