#
TQS
2024-08-16 9f9961b2061f7abb44ff69083154403a15e26363
#
3个文件已修改
221 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -141,6 +141,24 @@
                            News.error("MainServiceImpl  generateStoreWrkFile"+"203为出库模式,禁止入库,退回入库口。!!!");
                            continue;
                        }
                        if ( inSta.getStaNo()==113 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) {
                            //有出库任务,退库到入库口
                            staProtocol.setWorkNo((short) 9999);
                            staProtocol.setStaNo((short)114);
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                            News.error("MainServiceImpl  generateStoreWrkFile"+"103为出库模式,禁止入库,退回入库口。!!!");
                            continue;
                        }
                        if ( inSta.getStaNo()==213 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) {
                            //有出库任务,退库到入库口
                            staProtocol.setWorkNo((short) 9999);
                            staProtocol.setStaNo((short)214);
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                            News.error("MainServiceImpl  generateStoreWrkFile"+"203为出库模式,禁止入库,退回入库口。!!!");
                            continue;
                        }
                    }
                    // 获取条码扫描仪信息
@@ -1424,6 +1442,14 @@
                }
                if (wrkMast.getStaNo() == 203 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
                    News.error("MainServiceImpl  locToCrnStn"+"203非出库模式,禁止出库。任务号:{}!!!",wrkMast.getWrkNo());
                    return false;
                }
                if (wrkMast.getStaNo() == 113 && devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) {
                    News.error("MainServiceImpl  locToCrnStn"+"113非出库模式,禁止出库。任务号:{}!!!",wrkMast.getWrkNo());
                    return false;
                }
                if (wrkMast.getStaNo() == 213 && devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {
                    News.error("MainServiceImpl  locToCrnStn"+"213非出库模式,禁止出库。任务号:{}!!!",wrkMast.getWrkNo());
                    return false;
                }
@@ -3969,6 +3995,24 @@
                        News.error("MainServiceImpl  storeEmptyPlt"+"203为出库模式,禁止入库,退回入库口。!!!");
                        continue;
                    }
                    if ( emptyInSta.getStaNo()==113 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) {
                        //有出库任务,退库到入库口
                        staProtocol.setWorkNo((short) 9999);
                        staProtocol.setStaNo((short)100);
                        devpThread.setPakMk(staProtocol.getSiteId(), false);
                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                        News.error("MainServiceImpl  storeEmptyPlt"+"113为出库模式,禁止入库,退回入库口。!!!");
                        continue;
                    }
                    if ( emptyInSta.getStaNo()==213 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) {
                        //有出库任务,退库到入库口
                        staProtocol.setWorkNo((short) 9999);
                        staProtocol.setStaNo((short)200);
                        devpThread.setPakMk(staProtocol.getSiteId(), false);
                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                        News.error("MainServiceImpl  storeEmptyPlt"+"213为出库模式,禁止入库,退回入库口。!!!");
                        continue;
                    }
                }
                // 站点条件判断
@@ -4735,10 +4779,10 @@
                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                for (DevpSlave.Sta inSta : devp.getInSta()) {
                    Integer sourceStaNo = inSta.getStaNo()==103 ? 104 : 204;
                    Integer sourceStaNo = inSta.getStaNo()==103 ? 104 : inSta.getStaNo()==113 ? 104 : 204;
                    WrkMast pakout = wrkMastMapper.selectWorkingPakout(sourceStaNo);
                    switch (inSta.getStaNo()) {
                        case 103://1F
                        case 103://1F1
                            if (pakout != null) {
                                if (devpThread.ioModeOf1F != IoModeType.PAKOUT_MODE) {
                                    // 出库切换中
@@ -4756,7 +4800,7 @@
                                devpThread.ioModeOf1F = IoModeType.PAKIN_MODE;
                            }
                            break;
                        case 203://2F
                        case 203://1F2
                            if (pakout != null) {
                                if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
                                    // 出库切换中
@@ -4774,6 +4818,123 @@
                                devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
                            }
                            break;
//                        case 113://2F1
//                            if (pakout != null) {
//                                if (devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) {
//                                    // 出库切换中
////                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
////                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
////                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
////                                            && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
////                                            && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
////                                        // 出库模式
//                                    devpThread.ioModeOf3F = IoModeType.PAKOUT_MODE;
////                                    }
//                                }
//                            } else {
//                                // 入库模式
//                                devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
//                            }
//                            break;
//                        case 213://2F2
//                            if (pakout != null) {
//                                if (devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {
//                                    // 出库切换中
////                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
////                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
////                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
////                                            && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
////                                            && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
////                                        // 出库模式
//                                    devpThread.ioModeOf4F = IoModeType.PAKOUT_MODE;
////                                    }
//                                }
//                            } else {
//                                // 入库模式
//                                devpThread.ioModeOf4F = IoModeType.PAKIN_MODE;
//                            }
//                            break;
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public synchronized void ioConvert2F() {
        try {
            // 根据输送线plc遍历
            for (DevpSlave devp : slaveProperties.getDevp()) {
                if (devp.getId() == 1){
                    continue;
                }
                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                for (DevpSlave.Sta inSta : devp.getInSta()) {
                    Integer sourceStaNo = inSta.getStaNo()==103 ? 104 : inSta.getStaNo()==113 ? 104 : 204;
                    WrkMast pakout = wrkMastMapper.selectWorkingPakout(sourceStaNo);
                    boolean sign = true;
                    int[] staNos = new int[3];
                    switch (inSta.getStaNo()) {
                        case 113://2F1
                            staNos = new int[]{112,113,114};
                            for (int staNo : staNos){
                                StaProtocol staProtocol = devpThread.getStation().get(staNo);
                                if (!staProtocol.isAutoing() || staProtocol.isLoading()){
                                    sign = false;
                                }
                            }
                            if (sign){
                                if (pakout != null) {
                                    if (devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) {
                                        // 出库切换中
//                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
//                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
//                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
//                                            && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
//                                            && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
//                                        // 出库模式
                                        devpThread.ioModeOf3F = IoModeType.PAKOUT_MODE;
//                                    }
                                    }
                                } else {
                                    // 入库模式
                                    devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
                                }
                            }
                            break;
                        case 213://2F2
                            staNos = new int[]{212,213,214};
                            for (int staNo : staNos){
                                StaProtocol staProtocol = devpThread.getStation().get(staNo);
                                if (!staProtocol.isAutoing() || staProtocol.isLoading()){
                                    sign = false;
                                }
                            }
                            if (sign){
                                if (pakout != null) {
                                    if (devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {
                                        // 出库切换中
//                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
//                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
//                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
//                                            && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
//                                            && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
//                                        // 出库模式
                                        devpThread.ioModeOf4F = IoModeType.PAKOUT_MODE;
//                                    }
                                    }
                                } else {
                                    // 入库模式
                                    devpThread.ioModeOf4F = IoModeType.PAKIN_MODE;
                                }
                            }
                            break;
                    }
                }
src/main/java/com/zy/core/MainProcess.java
@@ -83,6 +83,7 @@
                    i++;
                    if (i > 1) {
                        mainService.ioConvert();
                        mainService.ioConvert2F();
                        i = 0;
                    }
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -77,6 +77,12 @@
     */
    public IoModeType ioModeOf1F = IoModeType.NONE;
    public IoModeType ioModeOf2F = IoModeType.NONE;
    public IoModeType ioModeOf3F = IoModeType.NONE;
    public short ioModeOf3FX = 0;
    public short ioModeOf3FD = 0;
    public IoModeType ioModeOf4F = IoModeType.NONE;
    public short ioModeOf4FX = 0;
    public short ioModeOf4FD = 0;
    private ArrayList<Integer> getStaNo() {
        switch (slave.getId()) {
@@ -179,6 +185,19 @@
                    station.put(siteId, staProtocol);
                }
                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result0.Content, i*2));   // 目标站
            }
        }
        if (slave.getId()!=1){
            Thread.sleep(200);
            OperateResultExOne<byte[]> result2F = siemensS7Net.Read("DB102.50", (short) (4));
            if (result2F.IsSuccess) {
                if (slave.getId()==2){
                    this.ioModeOf3FX = siemensS7Net.getByteTransform().TransInt16(result2F.Content, 0);
                    this.ioModeOf3FD = siemensS7Net.getByteTransform().TransInt16(result2F.Content, 2);
                } if (slave.getId()==3){
                    this.ioModeOf4FX = siemensS7Net.getByteTransform().TransInt16(result2F.Content, 0);
                    this.ioModeOf4FD = siemensS7Net.getByteTransform().TransInt16(result2F.Content, 2);
                }
            }
        }
        Thread.sleep(200);
@@ -416,16 +435,32 @@
    // 更新入出库模式
    private void updateIoMode() throws InterruptedException {
        if (this.ioModeOf1F != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.180", this.ioModeOf1F.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线103入出库模式失败。输送线plc编号={1}", slave.getId()));
                News.error("写入输送线103入出库模式失败。输送线plc编号={}", slave.getId());
        if (slave.getId()==1){
            if (this.ioModeOf1F != IoModeType.NONE) {
                if (!siemensS7Net.Write("DB100.180", this.ioModeOf1F.id).IsSuccess) {
                    OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线103入出库模式失败。输送线plc编号={1}", slave.getId()));
                    News.error("写入输送线103入出库模式失败。输送线plc编号={}", slave.getId());
                }
            }
        }
        if (this.ioModeOf2F != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.182", this.ioModeOf2F.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线203入出库模式失败。输送线plc编号={1}", slave.getId()));
                News.error("写入输送线203入出库模式失败。输送线plc编号={}", slave.getId());
            if (this.ioModeOf2F != IoModeType.NONE) {
                if (!siemensS7Net.Write("DB100.182", this.ioModeOf2F.id).IsSuccess) {
                    OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线203入出库模式失败。输送线plc编号={1}", slave.getId()));
                    News.error("写入输送线203入出库模式失败。输送线plc编号={}", slave.getId());
                }
            }
        } else if (slave.getId()==2){
            if (this.ioModeOf3F != IoModeType.NONE && this.ioModeOf3F.id/2 != this.ioModeOf3FX) {
                if (!siemensS7Net.Write("DB102.50", (short) (this.ioModeOf3F.id/2)).IsSuccess) {
                    OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线113入出库模式失败。输送线plc编号={1}", slave.getId()));
                    News.error("写入输送线113入出库模式失败。输送线plc编号={}", slave.getId());
                }
            }
        } else if (slave.getId()==3){
            if (this.ioModeOf4F != IoModeType.NONE  && this.ioModeOf4F.id/2 != this.ioModeOf4FX) {
                if (!siemensS7Net.Write("DB102.50", (short) (this.ioModeOf4F.id/2)).IsSuccess) {
                    OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线213入出库模式失败。输送线plc编号={1}", slave.getId()));
                    News.error("写入输送线213入出库模式失败。输送线plc编号={}", slave.getId());
                }
            }
        }
    }