#
lty
2025-08-16 d9b90148df8ce5b6ae7cba019359430df8c61742
#
6个文件已修改
235 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/RgvSlave.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/RgvThread.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 126 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/console.map.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -2803,18 +2803,7 @@
                        }
                    }
                    if (rgvProtocol.getTaskNo1()!=0 && rgvProtocol.getTaskNo1()!=9999){
//                        if (rgvProtocol.getTaskNo1()==32222){
//                            boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
//                            if (!rgvComplete){
//                                log.error("小车复位失败,小车号{}!",rgvProtocol.getRgvNo());
//                            }
//                            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
//                            basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
//                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2415");
//                            rgvThread.setPakMk(true);
//                            break;
//                        }
                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());
                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){
                            log.error("未查到小车执行任务或者执行任务状态不符合!"+wrkMastSta);
                            continue;
@@ -2844,20 +2833,6 @@
                                continue;
                            }
                        }
//                        else {
//                            log.error("rgv任务完成给输送线下发命令,但未查询到工作档");
//                            // 下发站点信息
//                            Map<Integer,Integer> map = new HashMap<>();
//                            map.put(101,102);map.put(112,111);
//                            map.put(100,100);
//                            staProtocol.setWorkNo(rgvProtocol.getTaskNo1().intValue());
//                            staProtocol.setStaNo(map.get(rgvProtocol.getRgvPosI()).shortValue());
//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
////                            log.error("rgv任务完成给输送线下发命令:"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
//                            if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
//                                continue;
//                            }
//                        }
                        int sourceSta = wrkMast.getSourceStaNo();
                        boolean rgvComplete = false;
@@ -2872,7 +2847,7 @@
                            log.error("小车复位失败,小车号{}!",rgvProtocol.getRgvNo());
                            break;
                        }
                        WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
                        WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1());
                        wrkMast1.setPdcType("Y");
                        wrkMastService.updateById(wrkMast1);
@@ -2894,6 +2869,57 @@
        }catch (Exception e){
            log.error("小车复位线程报错!"+e);
        }
    }
    /**
     * rgv出入库任务下发
     */
    public synchronized void rgvIoExecute(Integer mark) {
        List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
        for (BasRgvMap rgvSlave:basRgvMaps) {
            // 获取堆垛机信息
            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
            if (rgvProtocol == null) {
                continue;
            }
            BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
            if (basRgv == null) {
                log.error("{}号RGV尚未在数据库进行维护!4", rgvSlave.getRgvNo());
                continue;
            }
            // 只有当堆垛机空闲 并且 无任务时才继续执行
            if (rgvProtocol.getStatusType() == CrnStatusType.IDLE && rgvProtocol.getTaskNo() == 0 && rgvProtocol.getModeType() == CrnModeType.AUTO
                    && rgvProtocol.getLoaded() == 0 && rgvProtocol.getForkPos() == 0) {
                News.warnNoLog(""+mark+" - 0"+" - 开始执行堆垛机入出库作业下发");
                // 如果最近一次是入库模式
                if (rgvProtocol.getLastIo().equals("I")) {
                    if (basCrnp.getInEnable().equals("Y")) {
                        //mark - 1 - ....
                        this.crnStnToLoc(crn, crnProtocol,mark); //  入库
                        crnProtocol.setLastIo("O");
                    } else if (basCrnp.getOutEnable().equals("Y")) {
                        //mark - 2 - ....
                        this.locToCrnStn(crn, crnProtocol,mark); //  出库
                        crnProtocol.setLastIo("I");
                    }
                }
                // 如果最近一次是出库模式
                else if (crnProtocol.getLastIo().equals("O")) {
                    if (basCrnp.getOutEnable().equals("Y")) {
                        this.locToCrnStn(crn, crnProtocol,mark); //  出库
                        crnProtocol.setLastIo("I");
                    } else if (basCrnp.getInEnable().equals("Y")) {
                        this.crnStnToLoc(crn, crnProtocol,mark); //  入库
                        crnProtocol.setLastIo("O");
                    }
                }
            }
        }
//        News.infoNoLog(""+mark+" - 0"+" - 堆垛机入出库作业下发执行完成");
    }
    /**
     * 执行小车搬运任务
@@ -2985,7 +3011,7 @@
                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
                    for (WrkMastSta wrkMastSta : wrkMastStaList){
                        List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//入库口
                        if (staNos.contains(wrkMastSta.getStaStart())) {
                        if (staNos.contains(wrkMastSta.getStaStart())) {//非入库口(出库口)限制
                            continue;
                        }
                        boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //命令下发
@@ -3062,6 +3088,7 @@
                    // 根据输送线plc遍历
                    for (DevpSlave devp : slaveProperties.getDevp()) {
                        // 遍历入库口  入库预调度
                        for()
                        List<Integer> staNos = Arrays.asList(1042, 1043, 1105, 1104);
                        for (Integer staNo : staNos) {
                            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
src/main/java/com/zy/core/MainProcess.java
@@ -123,7 +123,12 @@
                    // RGV  ===>>  小车任务作业下发
                    try{
                        //RGV小车出入口下发
                        mainService.rgvIoExecute(11);
                        //小车取货下发
                        mainService.rgvRunWrkMastFullSta();
                        //小车放货任务更新
                        //小车预调度
                        mainService.rgvPreScheduling();
                    }catch (Exception e){
                        log.error("RGV  ===>>  小车任务作业下发异常"+e);
src/main/java/com/zy/core/model/RgvSlave.java
@@ -37,6 +37,15 @@
    // RGV出库目标站点
    private List<RgvStn> rgvDestStn = new ArrayList<>();
    // RGV入库取货站点
    private List<RgvStn> rgvInTStn = new ArrayList<>();
    // RGV入库放货站点
    private List<RgvStn> rgvInPStn = new ArrayList<>();
    // RGV出库取货站点
    private List<RgvStn> rgvOutTStn = new ArrayList<>();
    //RGV出库放货站点
    private List<RgvStn> rgvOutPStn = new ArrayList<>();
    @Data
    public static class RgvStn {
src/main/java/com/zy/core/thread/RgvThread.java
@@ -114,8 +114,8 @@
                        command2.setTaskNo2(0); // 工作号
                        command2.setAckFinish2(true);  // 任务完成确认位
                        command2.setTaskStatus2(RgvTaskStatusType.NONE); // 任务模式
                        command2.setSourceStaNo2((short)0);     // 源站
                        command2.setDestinationStaNo2((short)0);     // 目标站
                        command2.setTargetPosition2( 0);     // 源站
                        command2.setEndStaNo2(0);     // 目标站
                        command2.setCommand(false);
                        write2(command2);
                        break;
src/main/resources/application.yml
@@ -174,27 +174,62 @@
    port: 502
    rack: 0
    slot: 0
    #RGV入库源站点
    rgvInSStn[0]:
    #RGV入库取货站点
    rgvInTStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 100
    rgvInSStn[1]:
      staNo: 1042
    rgvInTStn[1]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 101
    #RGV出库源站点
    rgvOutSStn[0]:
      staNo: 1105
    rgvInTStn[2]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 110
    rgvOutSStn[1]:
      staNo: 1038
    rgvInTStn[3]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 112
    #RGV目标站点
    rgvDestStn[0]:
      staNo: 1036
    #RGV入库放货站点
    rgvInPStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 102
    rgvDestStn[1]:
      staNo: 1004
    rgvInPStn[1]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 103
      staNo: 1014
    rgvInPStn[2]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1018
    rgvInPStn[3]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1028
    rgvInPStn[4]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1035
    #RGV出库取货站点
    rgvOutTStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1007
    rgvOutTStn[1]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1010
    rgvOutTStn[2]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1021
    rgvOutTStn[3]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1024
    rgvOutTStn[4]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1031
    #RGV出库放货站点
    rgvOutPStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1106
    rgvOutPStn[1]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1041
    rgvOutPStn[2]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1036
  # RGV穿梭车2
  rgv[1]:
    id: 2
@@ -202,27 +237,46 @@
    port: 502
    rack: 0
    slot: 0
    #RGV入库源站点
    rgvInSStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 100
    rgvInSStn[1]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 101
    #RGV出库源站点
    rgvOutSStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 110
    rgvOutSStn[1]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 112
    #RGV目标站点
    rgvDestStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 102
    rgvDestStn[1]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 103
    #RGV入库取货站点
    rgvInTStn[0]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2037
    #RGV入库放货站点
    rgvInPStn[0]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2006
    rgvInPStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2012
    rgvInPStn[2]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2018
    rgvInPStn[3]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2024
    rgvInPStn[4]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2030
    #RGV出库取货站点
    rgvOutTStn[0]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2003
    rgvOutTStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2009
    rgvOutTStn[2]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2015
    rgvOutTStn[3]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2021
    rgvOutTStn[4]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2027
    #RGV出库放货站点
    rgvOutPStn[0]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2031
  # 输送线1
  devp[0]:
    id: 1
src/main/webapp/static/js/console.map.js
@@ -309,8 +309,8 @@
            "stns": [
                {"type": "track", "id": "lb_trCart11", "text": "", "top": 65, "left": 1000, "width": 6, "height": 560},
                {"type": "track", "id": "lb_trCart12", "text": "", "top": 65, "left": 1020, "width": 6, "height": 560},
                { "type": "stn", "id": "site-1", "text": "1", "top": 84, "left": 984, "width": 30, "height": 20 },
                { "type": "stn", "id": "site-2", "text": "2", "top": 84, "left": 1016, "width": 30, "height": 20 },
                { "type": "stn", "id": "site-2", "text": "2", "top": 84, "left": 984, "width": 30, "height": 20 },
                { "type": "stn", "id": "site-1", "text": "1", "top": 84, "left": 1016, "width": 30, "height": 20 },
                { "type": "stn", "id": "site-1001", "text": "1001", "top": 84, "left": 870, "width": 35, "height": 20 },
                { "type": "stn", "id": "site-1002", "text": "1002", "top": 84, "left": 907, "width": 35, "height": 20 },
@@ -446,8 +446,8 @@
            "width": 2900,
            "height": 600,
            "stns": [
                { "type": "stn", "id": "site-3", "text": "1", "top": 84, "left": 984, "width": 30, "height": 20 },
                { "type": "stn", "id": "site-4", "text": "2", "top": 84, "left": 1016, "width": 30, "height": 20 },
                { "type": "stn", "id": "site-4", "text": "2", "top": 84, "left": 984, "width": 30, "height": 20 },
                { "type": "stn", "id": "site-3", "text": "1", "top": 84, "left": 1016, "width": 30, "height": 20 },
                {"type": "track", "id": "lb_trCart21", "text": "", "top": 65, "left": 1000, "width": 6, "height": 560},
                {"type": "track", "id": "lb_trCart22", "text": "", "top": 65, "left": 1020, "width": 6, "height": 560},
                { "type": "stn", "id": "site-2003", "text": "2003", "top": 84, "left": 926, "width": 54, "height": 20 },