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/model/CrnSlave.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -46,10 +46,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Set; import java.util.*; import java.util.stream.Collectors; /** @@ -2100,28 +2097,93 @@ } } /** * 扫描碟盘机自动入库空托盘 */ public synchronized void autoEmptyIn() { for (CrnSlave crnSlave : slaveProperties.getCrn()) { // 遍历空板入库口 for (CrnSlave.CrnStn emptyInStn : crnSlave.getEmptyCrnInStn()) { // 获取空板入库站信息 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, emptyInStn.getDevpPlcId()); StaProtocol staProtocol = devpThread.getStation().get(emptyInStn.getStaNo()); if (staProtocol == null) { continue; } else { staProtocol = staProtocol.clone(); } // 站点条件判断 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() >= 9990 && staProtocol.getWorkNo() <= 9999)) { try { LocTypeDto locTypeDto = new LocTypeDto(staProtocol); SearchLocParam param = new SearchLocParam(); param.setIoType(10); param.setSourceStaNo(emptyInStn.getStaNo()); param.setLocType1(locTypeDto.getLocType1()); String response = new HttpHandler.Builder() .setUri(wmsUrl) .setPath("/rpc/pakin/loc/v1") .setJson(JSON.toJSONString(param)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { StartupDto dto = jsonObject.getObject("data", StartupDto.class); // 更新站点信息 且 下发plc命令 staProtocol.setWorkNo(dto.getWorkNo().shortValue()); staProtocol.setStaNo(dto.getStaNo().shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol)); if (!result) { throw new CoolException("更新plc站点信息失败"); } } else { log.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); } } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } } } } } /** * 扫描拆盘机自动出库空托盘 */ public synchronized void autoEmptyOut() { DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); Integer autoOutSite = 12; //如果站点可出禁用,则不生成空盘出库任务 StaProtocol staProtocol = devpThread.getStation().get(autoOutSite); for (CrnSlave crnSlave : slaveProperties.getCrn()) { for (CrnSlave.CrnStn emptyOutStn : crnSlave.getEmptyCrnOutStn()) { DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, emptyOutStn.getDevpPlcId()); StaProtocol staProtocol = devpThread.getStation().get(emptyOutStn.getStaNo()); if (staProtocol == null) { return; } else { staProtocol = staProtocol.clone(); } if (staProtocol.isAutoing() //自动 && !staProtocol.isLoading() //无物 && staProtocol.isOutEnable() //可出信号 && staProtocol.getWorkNo() == 0 ) { WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(autoOutSite); WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(emptyOutStn.getStaNo()); if (null != pakoutEmpty) { return; } try { HashMap<String, Object> map = new HashMap<>(); map.put("crnNo", crnSlave.getId()); String response = new HttpHandler.Builder() .setUri(wmsUrl) .setParams(map) .setPath("/rpc/auto/emptyOut/v1") .build() .doPost(); @@ -2138,5 +2200,8 @@ } } } } } } src/main/java/com/zy/core/MainProcess.java
@@ -45,58 +45,32 @@ // 演示 //mainService.crnDemoOfLocMove1(); // 演示 所有库位轮询 mainService.crnDemoOfLocMove2(); // 入出库模式切换函数 // mainService.ioConvert(); // 入库 ===>> 入库站到堆垛机站,根据条码扫描生成入库工作档 mainService.generateStoreWrkFile(); // 组托 mainService.generateStoreWrkFile0(); // WMS入库 // 拣料、并板、盘点再入库 mainService.stnToCrnStnPick(); // 出库 ===>> 堆垛机出库站到出库站 mainService.crnStnToOutStn(); // 入出库 ===>> 堆垛机入出库作业下发 mainService.crnIoExecute(); // 入出库增强 ===>> 堆垛机命令下发后,异步修改工作档状态 // mainService.crnIoWrkMast(); // 入库 ===>> 执行对工作档的完成操作 mainService.storeFinished(); // 堆垛机异常信息记录 mainService.recCrnErr(); // 入库 ===>> 空栈板初始化入库,叉车入库站放货 mainService.storeEmptyPlt(); // 空板入库 // 出库 ===>> 工作档信息写入led显示器 mainService.ledExecute(); // 其他 ===>> LED显示器复位,显示默认信息 mainService.ledReset(); mainService.outOfDevp(); //空托盘自动出库 //mainService.autoEmptyOut(); // //空托盘自动入库 // mainService.autoEmptyIn(); // // 其他 ===>> 入出库模式切换 // i++; // if (i > 1) { // mainService.ioConvert(); // i = 0; // } // 扫描碟盘机自动入库空托盘 mainService.autoEmptyIn(); // 扫描拆盘机自动出库空托盘 mainService.autoEmptyOut(); } catch (Exception e) { e.printStackTrace(); src/main/java/com/zy/core/model/CrnSlave.java
@@ -28,6 +28,12 @@ // 堆垛机出库站点 private List<CrnStn> crnOutStn = new ArrayList<>(); // 空托入库站点 private List<CrnStn> emptyCrnInStn = new ArrayList<>(); // 空托出库站点 private List<CrnStn> emptyCrnOutStn = new ArrayList<>(); @Data public static class CrnStn { src/main/resources/application.yml
@@ -57,30 +57,30 @@ # 堆垛机入库站1 crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 102 row: 1 bay: 1 lev: 1 # 堆垛机入库站点2 crnInStn[1]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 105 staNo: 100 row: 1 bay: 1 lev: 1 # 堆垛机出库站点1 crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 102 row: 1 bay: 1 devpPlcId: ${wcs-slave.devp[1].id} staNo: 300 row: 3 bay: 36 lev: 1 # 堆垛机出库站点2 crnOutStn[1]: # 空托入库站点 emptyCrnInStn[0]: devpPlcId: ${wcs-slave.devp[1].id} staNo: 307 row: 3 bay: 36 lev: 1 # 空托出库站点 emptyCrnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 105 row: 1 bay: 1 staNo: 103 row: 3 bay: 36 lev: 1 # 堆垛机2 crn[1]: @@ -95,30 +95,37 @@ # 堆垛机入库站1 crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 102 row: 1 bay: 1 lev: 5 # 堆垛机入库站点2 crnInStn[1]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 105 staNo: 203 row: 1 bay: 1 lev: 5 # 堆垛机出库站点1 crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 102 row: 1 bay: 1 staNo: 406 row: 8 bay: 27 lev: 5 # 堆垛机出库站点2 crnOutStn[1]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 105 row: 1 bay: 26 staNo: 407 row: 10 bay: 27 lev: 1 # 空托入库站点 emptyCrnInStn[0]: devpPlcId: ${wcs-slave.devp[1].id} staNo: 408 row: 3 bay: 36 lev: 1 # 空托出库站点 emptyCrnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 204 row: 3 bay: 36 lev: 1 # 输送线1 devp[0]: @@ -173,10 +180,10 @@ slot: 0 # 空板入库口1 emptyInSta[0]: staNo: 305 staNo: 307 # 空板入库口2 emptyInSta[1]: staNo: 400 staNo: 408 # 出库口1 outSta[0]: staNo: 305