src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/MainProcess.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/ServerBootstrap.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/DevpSlave.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/protocol/StaProtocol.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -4582,20 +4582,15 @@ } /** * JarWrkMastExecute任务创建 //未完成 * 开门、入硫化罐 * JarWrkMastExecute任务创建 //完成 */ public synchronized void jarWrkMastExecuteGenerate() { public synchronized void jarWrkMastExecuteGenerate(Integer sign) { for (JarSlave jarSlave : slaveProperties.getJar()) { try{ if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ continue; } List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusList(jarSlave.getId(), new ArrayList<Integer>() {{ add(0); add(2); }}); for (BasJarMast basJarMast : basJarMastList){ // 获取硫化罐信息 JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); JarProtocol jarProtocol = jarThread.getJarProtocol(); @@ -4623,6 +4618,68 @@ //门作业 无 //自动、空闲、右门关闭、 Other左门关闭 if (jarProtocol.isAutoing() && jarProtocol.jarErr==0 && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0 && jarProtocol.rightDoorClose==0){ switch (sign){ case 0: case 2: if (jarWrkMastExecuteGenerate1(jarSlave,sign)){ break; } case 3: // if (jarWrkMastExecuteGenerate2(jarSlave,sign)){ // break; // } } } } catch (Exception e){ log.error("{}号硫化罐JarWrkMastExecute任务创建异常,异常原因={}",jarSlave.getId(),e.getMessage()); } } } /** * JarWrkMastExecute任务创建 //完成 * 开门任务 * 生成入硫化罐任务 */ public synchronized boolean jarWrkMastExecuteGenerate1(JarSlave jarSlave,Integer sign) { try{ if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ return false; } List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusList(jarSlave.getId(), new ArrayList<Integer>() {{ add(0); add(2); }}); for (BasJarMast basJarMast : basJarMastList){ // 获取硫化罐信息 JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); JarProtocol jarProtocol = jarThread.getJarProtocol(); if (jarProtocol == null) { return false; } if (jarProtocol.modeType != JarModeType.AUTO){ return false; } JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId()); JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol(); if (jarOtherProtocol == null) { return false; } // if (jarOtherProtocol.modeType != JarModeType.AUTO){ // continue; // } BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo()); if (Cools.isEmpty(basJar)){ log.error("{}号硫化罐查询设备档案无信息!!!",jarProtocol.getJarNo()); return false; } //门作业 无 //自动、空闲、右门关闭、 Other左门关闭 if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0 && jarProtocol.rightDoorClose==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.leftDoorOpen==0 && jarOtherProtocol.leftDoorClose==0){ @@ -4631,23 +4688,91 @@ if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),1,1})){ log.error("JarWrkMastExecute任务创建===>执行异常===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); } return; return true; } else if (jarProtocol.statusType == JarStatusType.MOVING && jarProtocol.isLeftDoor()){ //生成入硫化罐任务 if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),5,1})){ log.error("JarWrkMastExecute任务创建===>执行异常===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); } return; return true; } else if (jarProtocol.statusType == JarStatusType.IDLE && jarProtocol.isLeftDoor()){ log.error("JarWrkMastExecute任务创建===>执行异常===》硫化罐空闲但是门未关===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); } } break; return false; } } catch (Exception e){ log.error("{}号硫化罐JarWrkMastExecute任务创建异常,异常原因={}",jarSlave.getId(),e.getMessage()); } return false; } /** * JarWrkMastExecute任务创建 //未完成 * 关入料门、开出料门、关出料门 */ public synchronized boolean jarWrkMastExecuteGenerate2(JarSlave jarSlave,Integer sign) { try{ if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ return false; } List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusList(jarSlave.getId(), new ArrayList<Integer>() {{ add(0); add(2); }}); for (BasJarMast basJarMast : basJarMastList){ // 获取硫化罐信息 JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); JarProtocol jarProtocol = jarThread.getJarProtocol(); if (jarProtocol == null) { return false; } if (jarProtocol.modeType != JarModeType.AUTO){ return false; } JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId()); JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol(); if (jarOtherProtocol == null) { return false; } // if (jarOtherProtocol.modeType != JarModeType.AUTO){ // continue; // } BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo()); if (Cools.isEmpty(basJar)){ log.error("{}号硫化罐查询设备档案无信息!!!",jarProtocol.getJarNo()); return false; } //门作业 无 //自动、空闲、右门关闭、 Other左门关闭 if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0 && jarProtocol.rightDoorClose==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.leftDoorOpen==0 && jarOtherProtocol.leftDoorClose==0){ if (jarProtocol.statusType == JarStatusType.IDLE && !jarProtocol.isLeftDoor() && basJarMast.getStatus()==0){ //生成开门任务 OpenTheDoor if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),1,1})){ log.error("JarWrkMastExecute任务创建===>执行异常===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); } return true; } else if (jarProtocol.statusType == JarStatusType.MOVING && jarProtocol.isLeftDoor()){ //生成入硫化罐任务 if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),5,1})){ log.error("JarWrkMastExecute任务创建===>执行异常===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); } return true; } else if (jarProtocol.statusType == JarStatusType.IDLE && jarProtocol.isLeftDoor()){ log.error("JarWrkMastExecute任务创建===>执行异常===》硫化罐空闲但是门未关===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); } } return false; } } catch (Exception e){ log.error("{}号硫化罐JarWrkMastExecute任务创建异常,异常原因={}",jarSlave.getId(),e.getMessage()); } return false; } /** @@ -4664,18 +4789,6 @@ return wrkMastExecuteService.insert(wrkMastExecute); }catch (Exception e){ log.error("JarWrkMastExecute任务创建===>执行异常===》异常原因:"+e.getMessage()); } return false; } /* * 开门任务创建 * */ public synchronized boolean jarWrkMastExecuteGenerate2(){ try{ } catch (Exception e){ log.error("{}号硫化罐OpenTheDoorGenerate==》JarWrkMastExecute任务创建异常,异常原因={}",null,e.getMessage()); } return false; } src/main/java/com/zy/core/MainProcess.java
@@ -36,6 +36,9 @@ thread = new Thread(() -> { while (!Thread.currentThread().isInterrupted()) { try { k++; if (k>10) k=0; i++; if (i>5) i=0; j++; if (j>5) j=0; // 间隔 Thread.sleep(1000); @@ -76,10 +79,6 @@ mainService.storeFinishedTwo(); } i++; if (i>5){ i=0; } // // 异常信息记录 // mainService.recErr(); @@ -97,7 +96,7 @@ /************************************JAR调度************************************/ //开门、入硫化罐 mainService.jarWrkMastExecuteGenerate(); mainService.jarWrkMastExecuteGenerate(k); //Jar任务创建 //完成 mainService.jarMastGenerate(); src/main/java/com/zy/core/ServerBootstrap.java
@@ -57,10 +57,10 @@ for (Slave crn : slaveProperties.getCrn()) { MessageQueue.init(SlaveType.Crn, crn); } // 初始化RGVmq for (Slave rgv : slaveProperties.getRgv()) { MessageQueue.init(SlaveType.Rgv, rgv); } // // 初始化RGVmq // for (Slave rgv : slaveProperties.getRgv()) { // MessageQueue.init(SlaveType.Rgv, rgv); // } // 初始化输送线mq for (Slave devp : slaveProperties.getDevp()) { MessageQueue.init(SlaveType.Devp, devp); @@ -101,13 +101,13 @@ map.put(crnThread, thread); SlaveConnection.put(SlaveType.Crn, crn.getId(), crnThread); } // 初始化穿梭车线程 log.info("初始化RGV线程..................................................."); for (RgvSlave rgv : slaveProperties.getRgv()) { RgvThread rgvThread = new RgvThread(rgv); new Thread((Runnable) rgvThread).start(); SlaveConnection.put(SlaveType.Rgv, rgv.getId(), rgvThread); } // // 初始化穿梭车线程 // log.info("初始化RGV线程..................................................."); // for (RgvSlave rgv : slaveProperties.getRgv()) { // RgvThread rgvThread = new RgvThread(rgv); // new Thread((Runnable) rgvThread).start(); // SlaveConnection.put(SlaveType.Rgv, rgv.getId(), rgvThread); // } // 初始化输送线线程 log.info("初始化输送线线程..................................................."); for (DevpSlave devp : slaveProperties.getDevp()) { src/main/java/com/zy/core/model/DevpSlave.java
@@ -40,6 +40,10 @@ private List<Sta> inRgvSta = new ArrayList<>(); private List<Rgv> enterRgv = new ArrayList<>(); private List<Rgv> endRgv = new ArrayList<>(); @Data public static class Sta { @@ -51,4 +55,34 @@ } @Data public static class Rgv { private Integer rgvNo;//RGV编号 private Integer steNo;//Ste编号 private Integer jarNo;//Jar编号 private Integer jarRegin;//区域 private Integer burial;//冷却 private List<Site> staNoEnter = new ArrayList<>();//入库站点 private List<Site> staNoEnd = new ArrayList<>();//出库站点 } @Data public static class Site { private Integer devpPlcId;//RGV编号 private Integer staNo;//RGV编号 private Integer row;//点位 } } src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -78,6 +78,15 @@ // 扫码失败 private boolean barcodeErr; private short endRow;//小车目标位 private short nowRow;//小车当前位 private boolean RGV1;//小车无货空闲 private boolean RGV2;//小车输送线取货到位 private boolean RGV3;//小车运行中 private boolean RGV4;//小车改左侧货物目标站 private boolean RGV5;//小车改右侧货物目标站 private boolean RGV6;//上位机清除平移车资料 public BasDevp toSqlModel(){ BasDevp basDevp = new BasDevp(); basDevp.setDevNo(siteId); src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -289,20 +289,33 @@ staProtocol.setBarcodeErr(status[6]);// 扫码失败 } } // Thread.sleep(200); // OperateResultExOne<byte[]> result0 = siemensS7Net.Read("DB101.0", (short) 186); // if (result0.IsSuccess) { // for (int i = 0; i < 93; i++) { // Integer siteId = staNos.get(i); // 站点编号 // StaProtocol staProtocol = station.get(siteId); // if (null == staProtocol) { // staProtocol = new StaProtocol(); // staProtocol.setSiteId(siteId); // station.put(siteId, staProtocol); // } // staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result0.Content, i*2)); // 目标站 // } // } if (slave.getId()==2){ Thread.sleep(200); int[] staNosRgv = {623,624,625,626}; for (int i = 0; i < staNosRgv.length; i++) { OperateResultExOne<byte[]> resultRgv = siemensS7Net.Read("DB100."+(1800+i*6), (short) 5); if (resultRgv.IsSuccess) { Integer siteId = staNosRgv[i]; // 站点编号 StaProtocol staProtocol = station.get(siteId); if (null == staProtocol) { staProtocol = new StaProtocol(); staProtocol.setSiteId(siteId); station.put(siteId, staProtocol); } staProtocol.setEndRow(siemensS7Net.getByteTransform().TransInt16(result.Content, 0)); // 小车目标位 staProtocol.setNowRow(siemensS7Net.getByteTransform().TransInt16(result.Content, 2)); // 目标站 boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, 4, 1); staProtocol.setRGV1(status[0]); // 自动 staProtocol.setRGV2(status[1]); // 有物 staProtocol.setRGV3(status[2]); // 可入 staProtocol.setRGV4(status[3]);// 可出 staProtocol.setRGV5(status[4]); // 空板信号 staProtocol.setRGV6(status[5]); // 满托盘 } } } // Thread.sleep(200); // OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.100", (short) (staNoSize * 2)); // if (result1.IsSuccess) { src/main/resources/application.yml
@@ -234,34 +234,6 @@ row: 25 bay: 1 lev: 1 # RGV穿梭车1 rgv[0]: id: 1 ip: 192.168.18.77 port: 502 rack: 0 slot: 0 #RGV入库源站点 rgvInSStn[0]: devpPlcId: ${wcs-slave.devp[1].id} staNo: 100 rgvInSStn[1]: devpPlcId: ${wcs-slave.devp[1].id} staNo: 101 #RGV出库源站点 rgvOutSStn[0]: devpPlcId: ${wcs-slave.devp[1].id} staNo: 110 rgvOutSStn[1]: devpPlcId: ${wcs-slave.devp[1].id} staNo: 112 #RGV目标站点 rgvDestStn[0]: devpPlcId: ${wcs-slave.devp[1].id} staNo: 102 rgvDestStn[1]: devpPlcId: ${wcs-slave.devp[1].id} staNo: 103 # 输送线 devp[0]: @@ -307,6 +279,56 @@ # 空板入库口1(临时) emptyInSta[0]: staNo: 511 # 入硫化罐RGV enterRgv[0]: rgvNo: 623 steNo: 1 jarRegin: 1 burial: 1 staNoEnter[0]: devpPlcId: ${wcs-slave.devp[1].id} staNo: 113 row: 1 staNoEnter[1]: devpPlcId: ${wcs-slave.devp[1].id} staNo: 114 row: 3 # 入硫化罐RGV enterRgv[1]: rgvNo: 624 steNo: 1 jarRegin: 1 burial: 1 staNoEnter[0]: devpPlcId: ${wcs-slave.devp[1].id} staNo: 113 row: 1 staNoEnter[1]: devpPlcId: ${wcs-slave.devp[1].id} staNo: 114 row: 3 # 出硫化罐RGV endRgv[0]: rgvNo: 625 steNo: 1 jarNo: 1 jarRegin: 1 burial: 1 staNoEnd[0]: devpPlcId: ${wcs-slave.devp[1].id} staNo: 114 row: 1 # 出硫化罐RGV endRgv[1]: rgvNo: 626 steNo: 1 jarNo: 1 jarRegin: 1 burial: 1 staNoEnd[0]: devpPlcId: ${wcs-slave.devp[1].id} staNo: 114 row: 1 # 条码扫描仪 barcode[0]: