#
TQS
2024-08-15 3ad8eac4b257e4bfcaef175ec1477758ad71a420
#
3个文件已修改
130 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/Utils.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -213,7 +213,7 @@
                            // plc 处理
                            barcodeThread.setBarcode("");
                            staProtocol.setWorkNo(dto.getWorkNo().shortValue());
                            staProtocol.setStaNo(dto.getStaNo().shortValue());
                            staProtocol.setStaNo(Utils.getStaNoConvertCentreOther3(dto.getStaNo(),inSta.getStaNo()).shortValue());
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
                            ledThread.errorReset();
@@ -854,9 +854,33 @@
                                    continue;
                                }
                                WrkMast onlyWrkNo = wrkMastMapper.selectByOnlyWrkNo(crnProtocol.getTaskNo().intValue());
                                if (Cools.isEmpty(onlyWrkNo) && (crnStn.getStaNo()  == 112 || crnStn.getStaNo() == 212)){
                                    //  判断堆垛机状态等待确认
                                    if (crnProtocol.modeType == CrnModeType.AUTO
                                            && crnProtocol.statusType == CrnStatusType.WAITING
                                            && crnProtocol.forkPosType == CrnForkPosType.HOME
                                            && crnProtocol.getBay().equals(crnStn.getBay().shortValue()) && crnProtocol.getLevel().equals(crnStn.getLev().shortValue())) {
                                        News.info("堆垛机接驳任务完成,工作号:"+crnProtocol.getTaskNo()+";执行堆垛机号:"+crnSlave.getId()+";接驳放货位:"+crnStn.getStaNo()+";接驳行走目标站:"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()));
                                        // 下发站点信息
                                        News.error("new867===>"+crnProtocol.getTaskNo());
                                        News.error("new867===>"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).toString());
                                        staProtocol.setWorkNo(crnProtocol.getTaskNo());
                                        staProtocol.setStaNo(Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).shortValue());
                                        if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
                                            continue;
                                        }
                                        // 复位堆垛机
                                        crnThread.setResetFlag(true);
                                        continue;
                                    }
                                }
                                if (Cools.isEmpty(onlyWrkNo) ||
                                        (onlyWrkNo.getStaNo()!=114 && onlyWrkNo.getStaNo()!=214 &&
                                        onlyWrkNo.getSourceStaNo()!=114 && onlyWrkNo.getSourceStaNo()!=214)){
                                        ((onlyWrkNo.getStaNo()!=114 && onlyWrkNo.getStaNo()!=214 &&
                                                onlyWrkNo.getSourceStaNo()!=114 && onlyWrkNo.getSourceStaNo()!=214)
                                                &&
                                                (onlyWrkNo.getStaNo()!=113 && onlyWrkNo.getStaNo()!=213 &&
                                                        onlyWrkNo.getSourceStaNo()!=113 && onlyWrkNo.getSourceStaNo()!=213))
                                ){
                                    continue;
                                }
                                //  判断堆垛机状态等待确认
@@ -1031,7 +1055,39 @@
                            crnCommand.setTaskNo(onlyWrkNo.getWrkNo().shortValue()); // 工作号
                            crnCommand.setAckFinish((short) 0);  // 任务完成确认位
                            crnCommand.setCommand((short) 0);
                            crnCommand.setTaskMode(CrnTaskModeType.XY_MOVE); // 任务模式:  站位转移
                            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式:  库位移转
                            crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 源库位排
                            crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 源库位列
                            crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 源库位层
                            crnCommand.setDestinationPosX(Utils.getRow(staProtocol.getSiteId()));     // 目标库位排
                            crnCommand.setDestinationPosY(Utils.getBay(staProtocol.getSiteId()));     // 目标库位列
                            crnCommand.setDestinationPosZ(Utils.getLev(staProtocol.getSiteId()));     // 目标库位层
                            if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
                                News.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", slave.getId(), JSON.toJSONString(crnCommand));
                            }
                            return true;
                        }
                    } else if (!Cools.isEmpty(onlyWrkNo) && onlyWrkNo.getCrnNo()==2 && onlyWrkNo.getWrkSts()>16 && crnProtocol.getCrnNo()!=2 && onlyWrkNo.getIoType()>100){
                        //                News.error("{}站点查询无待入库数据 工作号={}", crnStn.getStaNo(), staProtocol.getWorkNo());
                        // 已经存在吊车执行任务时,则过滤
                        if (wrkMastMapper.selectWorking(slave.getId()) != null) {
                            continue;
                        }
                        if (Cools.isEmpty(staProtocol.getWorkNo()) || !staProtocol.isLoading()){
                            continue;
                        }
                        //  判断堆垛机状态等待确认
                        if (crnProtocol.modeType == CrnModeType.AUTO
                                && crnProtocol.statusType == CrnStatusType.IDLE
                                && crnProtocol.forkPosType == CrnForkPosType.HOME) {
                            News.info("堆垛机接驳任务执行,工作号:"+staProtocol.getWorkNo()+";执行堆垛机号:"+slave.getId()+";接驳取货位:"+crnStn.getStaNo()+";接驳放货位:"+staProtocol.getSiteId());
                            // 堆垛机接驳任务命令下发区 --------------------------------------------------------------------------
                            CrnCommand crnCommand = new CrnCommand();
                            crnCommand.setCrnNo(slave.getId()); // 堆垛机编号
                            crnCommand.setTaskNo(onlyWrkNo.getWrkNo().shortValue()); // 工作号
                            crnCommand.setAckFinish((short) 0);  // 任务完成确认位
                            crnCommand.setCommand((short) 0);
                            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式:  库位移转
                            crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 源库位排
                            crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 源库位列
                            crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 源库位层
@@ -1044,7 +1100,7 @@
                            return true;
                        }
                    }
                    continue;
                        continue;
                } catch (Exception e){
                    News.info("堆垛机接驳任务执行,异常:"+e.getMessage());
                }
@@ -4108,9 +4164,6 @@
     */
    public synchronized void ledReset() {
        for (LedSlave led : slaveProperties.getLed()) {
            if (led.getId()>3){
                continue;
            }
            // 获取输送线plc线程
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
            // 命令集合
src/main/java/com/zy/asrs/utils/Utils.java
@@ -224,14 +224,14 @@
     */
    public static short getRow(Integer staNo) {
        switch (staNo){
            case 108:
                return 4;
            case 208:
                return 18;
            case 112:
            case 107:
                return 3;
            case 212:
            case 207:
                return 19;
            case 112:
                return 4;
            case 212:
                return 18;
        }
        throw new RuntimeException("站点解析异常");
    }
@@ -241,14 +241,14 @@
     */
    public static short getBay(Integer staNo) {
        switch (staNo){
            case 108:
                return 5;
            case 208:
                return 5;
            case 112:
            case 107:
                return 2;
            case 212:
            case 207:
                return 6;
            case 112:
                return 5;
            case 212:
                return 5;
        }
        throw new RuntimeException("站点解析异常");
    }
@@ -274,6 +274,17 @@
        }
    }
    public static Integer getStaNoConvertCentreOther3(Integer staNo,Integer staNoS){//放货为获取行走目标位
        switch (staNoS){
            case 113:
                return 112;
            case 213:
                return 212;
            default:
                return staNo;
        }
    }
    /**
     * 通过排列层拼接出库位号
     */
src/main/resources/application.yml
@@ -63,6 +63,13 @@
      row: 4
      bay: 4
      lev: 1
    # 堆垛机入库站点
    crnInStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 112
      row: 3
      bay: 2
      lev: 1
    # 堆垛机出库站点
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
@@ -131,6 +138,13 @@
      staNo: 207
      row: 18
      bay: 4
      lev: 1
    # 堆垛机入库站点
    crnInStn[1]:
      devpPlcId: ${wcs-slave.devp[2].id}
      staNo: 212
      row: 19
      bay: 6
      lev: 1
    # 堆垛机出库站点
    crnOutStn[0]:
@@ -226,7 +240,7 @@
    inSta[0]:
      staNo: 113
      barcode: ${wcs-slave.barcode[2].id}
      backSta: 100
      backSta: 114
      led: ${wcs-slave.led[2].id}
    # 空板入库口1
    emptyInSta[0]:
@@ -246,7 +260,7 @@
    inSta[0]:
      staNo: 213
      barcode: ${wcs-slave.barcode[3].id}
      backSta: 100
      backSta: 214
      led: ${wcs-slave.led[3].id}
    # 空板入库口1
    emptyInSta[0]:
@@ -301,14 +315,14 @@
  # LED4
  led[3]:
    id: 4
    ip: 10.10.10.207
    ip: 10.10.10.208
    port: 5005
    devpPlcId: ${wcs-slave.devp[1].id}
    staArr: 200
    staArr: 114
  # LED5
  led[4]:
    id: 5
    ip: 10.10.10.207
    ip: 10.10.10.209
    port: 5005
    devpPlcId: ${wcs-slave.devp[2].id}
    staArr: 200
    staArr: 214