自动化立体仓库 - WCS系统
#
whycq
2023-05-05 98c62cb5d06996054110c9fb93025279ca002829
#
9个文件已修改
857 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/SiteController.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/LocTypeDto.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/StaProtocol.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 359 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/console.map.js 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pipeline.html 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/SiteController.java
@@ -44,7 +44,6 @@
        List<Map<String, Object>> res = new ArrayList<>();
        for (DevpSlave devp : slaveProperties.getDevp()) {
            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
            if (devp.getId() == 1) {
                Map<String, Object> map1 = new HashMap<>();
                map1.put("floor", 1);
                map1.put("modeVal", devpThread.ioModeOf1F1.id);
@@ -56,46 +55,6 @@
                map2.put("modeVal", devpThread.ioModeOf1F2.id);
                map2.put("modeDesc", devpThread.ioModeOf1F2.desc);
                res.add(map2);
            } else {
                Map<String, Object> map3 = new HashMap<>();
                map3.put("floor", 3);
                map3.put("modeVal", devpThread.ioModeOf1F3.id);
                map3.put("modeDesc", devpThread.ioModeOf1F3.desc);
                res.add(map3);
                Map<String, Object> map4 = new HashMap<>();
                map4.put("floor", 4);
                map4.put("modeVal", devpThread.ioModeOf1F4.id);
                map4.put("modeDesc", devpThread.ioModeOf1F4.desc);
                res.add(map4);
                Map<String, Object> map5 = new HashMap<>();
                map5.put("floor", 5);
                map5.put("modeVal", devpThread.ioModeOf2F1.id);
                map5.put("modeDesc", devpThread.ioModeOf2F1.desc);
                res.add(map5);
                Map<String, Object> map6 = new HashMap<>();
                map6.put("floor", 6);
                map6.put("modeVal", devpThread.ioModeOf2F2.id);
                map6.put("modeDesc", devpThread.ioModeOf2F2.desc);
                res.add(map6);
                Map<String, Object> map7 = new HashMap<>();
                map7.put("floor", 7);
                map7.put("modeVal", devpThread.ioModeOf3F1.id);
                map7.put("modeDesc", devpThread.ioModeOf3F1.desc);
                res.add(map7);
                Map<String, Object> map8 = new HashMap<>();
                map8.put("floor", 8);
                map8.put("modeVal", devpThread.ioModeOf3F2.id);
                map8.put("modeDesc", devpThread.ioModeOf3F2.desc);
                res.add(map8);
            }
        }
        return R.ok().add(res);
    }
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -102,58 +102,17 @@
            for (DevpSlave.Sta inSta : devp.getInSta()) {
                // 获取条码扫描仪信息
                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
                BarcodeThread barcodeThread1 = null;
                BarcodeThread barcodeThread2 = null;
                if (barcodeThread == null) {
                    continue;
                }
                String barcode = barcodeThread.getBarcode();
                String barcode1 = "";
                String barcode2 = "";
                //101站有3个扫码器,当0扫码器没有数据时,获取9、10两个扫码器数据
                if((inSta.getStaNo().equals(101) || inSta.getStaNo().equals(104))){
                    barcodeThread1 = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode1());
                    if (barcodeThread1 != null) {
                        barcode1 = barcodeThread1.getBarcode();
                    }
                    barcodeThread2 = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode2());
                    if (barcodeThread2 != null) {
                        barcode2 = barcodeThread2.getBarcode();
                    }
                    Integer len1=0 , len2=0, len3=0;
                    if(barcode != null) {
                        String b[]=barcode.split(";");
                        barcode=b[b.length-1];
                        len1 = barcode.length();
                    }
                    if(barcode1 != null) {
                        String b[]=barcode1.split(";");
                        barcode1=b[b.length-1];
                        len2 = barcode1.length();
                    }
                    if(barcode2 != null) {
                        String b[]=barcode2.split(";");
                        barcode2=b[b.length-1];
                        len3 = barcode2.length();
                    }
                    if(len2 > len1 && len2 >= len3){
                        barcode = barcode1;
                    } else if (len3 > len1 && len3 >= len2){
                        barcode = barcode2;
                    }
                }
                    //判断101和104是否是拣料、并板、盘点再入库
                    WrkMast wrkMast1=wrkMastMapper.selectpj(inSta.getStaNo(),barcode);
                    if((inSta.getStaNo().equals(101) || inSta.getStaNo().equals(104)) &&!Cools.isEmpty(barcode)&&!Cools.isEmpty(wrkMast1)){
                        log.error("101或104拣料、并板、盘点再入库", wrkMast1.getWrkNo());
                        continue;
                    }
                ////判断101和104是否是拣料、并板、盘点再入库
                //WrkMast wrkMast1=wrkMastMapper.selectpj(inSta.getStaNo(),barcode);
                //if((inSta.getStaNo().equals(101) || inSta.getStaNo().equals(104)) &&!Cools.isEmpty(barcode)&&!Cools.isEmpty(wrkMast1)){
                //    log.error("101或104拣料、并板、盘点再入库", wrkMast1.getWrkNo());
                //    continue;
                //}
                if (!Cools.isEmpty(barcode)) {
                    log.info("{}号条码扫描器检测条码信息:{}", inSta.getBarcode(), barcode);
@@ -184,24 +143,6 @@
                    continue;
                }
                if (inSta.getStaNo() == 104 && devpThread.ioModeOf1F2 == IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (inSta.getStaNo() == 111 && devpThread.ioModeOf1F3 == IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (inSta.getStaNo() == 114 && devpThread.ioModeOf1F4 == IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (inSta.getStaNo() == 201 && devpThread.ioModeOf2F1 == IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (inSta.getStaNo() == 204 && devpThread.ioModeOf2F2 == IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (inSta.getStaNo() == 301 && devpThread.ioModeOf3F1 == IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (inSta.getStaNo() == 304 && devpThread.ioModeOf3F2 == IoModeType.PAKOUT_MODE) {
                    continue;
                }
@@ -264,12 +205,6 @@
                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
                            barcodeThread.setBarcode("");
                            if(barcodeThread1 !=null){
                                barcodeThread1.setBarcode("");
                            }
                            if(barcodeThread2 !=null){
                                barcodeThread2.setBarcode("");
                            }
                            staProtocol.setWorkNo(dto.getWorkNo().shortValue());
                            staProtocol.setStaNo(dto.getStaNo().shortValue());
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -411,24 +346,6 @@
                if (inSta.getStaNo() == 101 && devpThread.ioModeOf1F2 != IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (inSta.getStaNo() == 114 && devpThread.ioModeOf1F3 != IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (inSta.getStaNo() == 111 && devpThread.ioModeOf1F4 != IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (inSta.getStaNo() == 204 && devpThread.ioModeOf2F1 != IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (inSta.getStaNo() == 201 && devpThread.ioModeOf2F2 != IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (inSta.getStaNo() == 301 && devpThread.ioModeOf3F1 != IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (inSta.getStaNo() == 304 && devpThread.ioModeOf3F2 != IoModeType.PAKOUT_MODE) {
                    continue;
                }
                // 判断是否满足入库条件
                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
@@ -482,27 +399,9 @@
                String barcode = barcodeThread.getBarcode();
                //101站有3个扫码器,当0扫码器没有数据时,获取9、10两个扫码器数据
                if((pickSta.getStaNo().equals(101) || pickSta.getStaNo().equals(104)) && ( "NoRead".equals(barcode) || Cools.isEmpty(barcode) )){
                    BarcodeThread barcodeThread1 = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode1());
                    if (barcodeThread1 != null) {
                        barcode = barcodeThread1.getBarcode();
                    }
                    if("NoRead".equals(barcode) || Cools.isEmpty(barcode)) {
                        BarcodeThread barcodeThread2 = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode2());
                        if (barcodeThread2 != null) {
                            barcode = barcodeThread2.getBarcode();
                        }
                    }
                }
                if (!Cools.isEmpty(barcode)) {
                    log.info("{}号条码扫描器检测条码信息:{}", pickSta.getBarcode(), barcode);
//                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
//                        continue;
//                    }
                } else {
                    continue;
                }
@@ -575,24 +474,6 @@
                                break;
                            case 103:
                                sourceStaNo = 104;
                                break;
                            case 110:
                                sourceStaNo = 111;
                                break;
                            case 113:
                                sourceStaNo = 114;
                                break;
                            case 200:
                                sourceStaNo = 201;
                                break;
                            case 203:
                                sourceStaNo = 204;
                                break;
                            case 300:
                                sourceStaNo = 301;
                                break;
                            case 303:
                                sourceStaNo = 304;
                                break;
                        }
@@ -986,24 +867,6 @@
                    continue;
                }
                if (wrkMast.getStaNo() == 103 && devpThread.ioModeOf1F2 != IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (wrkMast.getStaNo() == 110 && devpThread.ioModeOf1F3 != IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (wrkMast.getStaNo() == 113 && devpThread.ioModeOf1F4 != IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (wrkMast.getStaNo() == 200 && devpThread.ioModeOf2F1 != IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (wrkMast.getStaNo() == 203 && devpThread.ioModeOf2F2 != IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (wrkMast.getStaNo() == 300 && devpThread.ioModeOf3F1 != IoModeType.PAKOUT_MODE) {
                    continue;
                }
                if (wrkMast.getStaNo() == 303 && devpThread.ioModeOf3F2 != IoModeType.PAKOUT_MODE) {
                    continue;
                }
@@ -2178,24 +2041,6 @@
                        case 104:
                            staNo = 106;
                            break;
                        case 111:
                            staNo = 112;
                            break;
                        case 114:
                            staNo = 116;
                            break;
                        case 201:
                            staNo = 202;
                            break;
                        case 204:
                            staNo = 205;
                            break;
                        case 301:
                            staNo = 302;
                            break;
                        case 304:
                            staNo = 305;
                            break;
                    }
                    WrkMast pakout = wrkMastMapper.selectWorkingPakout(staNo);
                    switch (inSta.getStaNo()) {
@@ -2233,114 +2078,6 @@
                            } else {
                                // 入库模式
                                devpThread.ioModeOf1F2 = IoModeType.PAKIN_MODE;
                            }
                            break;
                        case 111: // 1F3
                            if (pakout != null) {
                                if (devpThread.ioModeOf1F3 != IoModeType.PAKOUT_MODE) {
                                    // 出库切换中
                                    devpThread.ioModeOf1F3 = 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.ioModeOf1F3 = IoModeType.PAKOUT_MODE;
                                    }
                                }
                            } else {
                                // 入库模式
                                devpThread.ioModeOf1F3 = IoModeType.PAKIN_MODE;
                            }
                            break;
                        case 114: // 1F4
                            if (pakout != null) {
                                if (devpThread.ioModeOf1F4 != IoModeType.PAKOUT_MODE) {
                                    // 出库切换中
                                    devpThread.ioModeOf1F4 = 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.ioModeOf1F4 = IoModeType.PAKOUT_MODE;
                                    }
                                }
                            } else {
                                // 入库模式
                                devpThread.ioModeOf1F4 = IoModeType.PAKIN_MODE;
                            }
                            break;
                        case 201: // 2F1
                            if (pakout != null) {
                                if (devpThread.ioModeOf2F1 != IoModeType.PAKOUT_MODE) {
                                    // 出库切换中
                                    devpThread.ioModeOf2F1 = 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.ioModeOf2F1 = IoModeType.PAKOUT_MODE;
                                    }
                                }
                            } else {
                                // 入库模式
                                devpThread.ioModeOf2F1 = IoModeType.PAKIN_MODE;
                            }
                            break;
                        case 204: // 2F2
                            if (pakout != null) {
                                if (devpThread.ioModeOf2F2 != IoModeType.PAKOUT_MODE) {
                                    // 出库切换中
                                    devpThread.ioModeOf2F2 = 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.ioModeOf2F2 = IoModeType.PAKOUT_MODE;
                                    }
                                }
                            } else {
                                // 入库模式
                                devpThread.ioModeOf2F2 = IoModeType.PAKIN_MODE;
                            }
                            break;
                        case 301: // 3F1
                            if (pakout != null) {
                                if (devpThread.ioModeOf3F1 != IoModeType.PAKOUT_MODE) {
                                    // 出库切换中
                                    devpThread.ioModeOf3F1 = 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.ioModeOf3F1 = IoModeType.PAKOUT_MODE;
                                    }
                                }
                            } else {
                                // 入库模式
                                devpThread.ioModeOf3F1 = IoModeType.PAKIN_MODE;
                            }
                            break;
                        case 304: // 3F2
                            if (pakout != null) {
                                if (devpThread.ioModeOf3F2 != IoModeType.PAKOUT_MODE) {
                                    // 出库切换中
                                    devpThread.ioModeOf3F2 = 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.ioModeOf3F2 = IoModeType.PAKOUT_MODE;
                                    }
                                }
                            } else {
                                // 入库模式
                                devpThread.ioModeOf3F2 = IoModeType.PAKIN_MODE;
                            }
                            break;
                    }
src/main/java/com/zy/common/model/LocTypeDto.java
@@ -10,7 +10,7 @@
@Data
public class LocTypeDto {
    // 高低类型{0:未知,1:低库位,2:高库位}
    // 高低类型{0:未知,1:较低库位,2:低库位,3:高库位,4: 特高库位}
    private Short locType1;
    // 宽窄类型{0:未知,1:窄库位,2:宽库位}
@@ -29,13 +29,31 @@
    }
    public LocTypeDto(StaProtocol staProtocol) {
        if (staProtocol.isHigh() == staProtocol.isLow()) {
            throw new CoolException("plc高低检测异常");
        int trueLen = 0;
        if (staProtocol.isHigh()) {
            trueLen++;
        }
        if (staProtocol.isHigh1()) {
            trueLen++;
        }
        if (staProtocol.isLow()) {
            this.locType1 = 1; // 低库位
        } else {
            this.locType1 = 2; // 高库位
            trueLen++;
        }
        if (staProtocol.isLow1()) {
            trueLen++;
        }
        if (trueLen != 1) {
            throw new CoolException("plc高低检测异常");
        }
        if (staProtocol.isLow()) {
            this.locType1 = 1; // 较低库位
        } else if (staProtocol.isLow1()){
            this.locType1 = 2; // 低库位
        } else if (staProtocol.isHigh()){
            this.locType1 = 3; // 高库位
        } else if (staProtocol.isHigh1()){
            this.locType1 = 4; // 特高库位
        }
    }
src/main/java/com/zy/core/MainProcess.java
@@ -87,7 +87,7 @@
                    mainService.outOfDevp();
                    //空托盘自动出库
                    mainService.autoEmptyOut();
                    //mainService.autoEmptyOut();
//                    //空托盘自动入库
//                    mainService.autoEmptyIn();
src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -46,6 +46,12 @@
    // 低
    private boolean low;
    // 高
    private boolean high1;
    // 低
    private boolean low1;
    // 锁定标记
    private boolean pakMk = true;
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -43,19 +43,12 @@
    private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
    private short heartBeatVal = 1;
    public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
        add(100);add(101);add(102);add(103);add(104);add(105);add(106);
        add(100);add(101);add(102);add(103);add(104);add(105);
    }};
    public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
        add(110);add(111);add(112);add(113);add(114);add(115);add(116);
        add(200);add(201);add(202);add(203);add(204);add(205);
        add(300);add(301);add(302);add(303);add(304);add(305);
    }};
    /**
     * 条码数量
     */
    private int barcodeSize = 6;
    private int barcodeSize = 2;
    /**
     * 入出库模式
@@ -67,14 +60,6 @@
     */
    public IoModeType ioModeOf1F1 = IoModeType.NONE;
    public IoModeType ioModeOf1F2 = IoModeType.NONE;
    public IoModeType ioModeOf1F3 = IoModeType.NONE;
    public IoModeType ioModeOf1F4 = IoModeType.NONE;
    public IoModeType ioModeOf2F1 = IoModeType.NONE;
    public IoModeType ioModeOf2F2 = IoModeType.NONE;
    public IoModeType ioModeOf3F1 = IoModeType.NONE;
    public IoModeType ioModeOf3F2 = IoModeType.NONE;
    public SiemensDevpThread(DevpSlave slave) {
        this.slave = slave;
@@ -83,8 +68,6 @@
        switch (slave.getId()) {
            case 1:
                return staNos1;
            case 2:
                return staNos2;
            default:
                throw new CoolException("获取站点失败!");
        }
@@ -181,7 +164,7 @@
        }
        Thread.sleep(200);
        OperateResultExOne<byte[]> result1 = null;
        result1 = siemensS7Net.Read("DB102.100", (short) (staNoSize * 2));
        result1 = siemensS7Net.Read("DB101.1", (short) (staNoSize * 2));
        if (result1.IsSuccess) {
            for (int i = 0; i < staNoSize; i++) {
                Integer siteId = staNos.get(i); // 站点编号
@@ -193,9 +176,10 @@
                staProtocol.setOutEnable(status[3]);// 可出
                staProtocol.setEmptyMk(status[4]);  // 空板信号
                staProtocol.setFullPlt(status[5]);  // 满托盘
                staProtocol.setHigh(status[6]);     // 高库位  捷丰大托盘
                staProtocol.setLow(status[7]);      // 低库位  捷丰小托盘
                staProtocol.setFull(status[8]);      // 托盘是可否整垛
                staProtocol.setHigh(status[6]);
                staProtocol.setHigh1(status[7]);
                staProtocol.setLow(status[8]);
                staProtocol.setLow1(status[9]);
                if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
                    staProtocol.setPakMk(true);
@@ -207,10 +191,10 @@
        if(slave.getId() == 2) {
            Thread.sleep(200);
            OperateResultExOne<byte[]> result2 = null;
            result2 = siemensS7Net.Read("DB100.200", (short) (barcodeSize * 16));
            result2 = siemensS7Net.Read("DB100.200", (short) (barcodeSize * 8));
            if (result2.IsSuccess) {
                for (int i = 0; i < barcodeSize; i++) {
                    String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 16, 8, "UTF-8");
                    String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
                    if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
                        barcodeThread.setBarcode(barcode);
@@ -306,42 +290,6 @@
            if (!siemensS7Net.Write("DB100.302", this.ioModeOf1F2.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线1F2入出库模式失败。输送线plc编号={1}", slave.getId()));
                log.error("写入输送线1F2入出库模式失败。输送线plc编号={}", slave.getId());
            }
        }
        if (slave.getId() == 2 && this.ioModeOf1F3 != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.300", this.ioModeOf1F3.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线1F3入出库模式失败。输送线plc编号={2}", slave.getId()));
                log.error("写入输送线1F3入出库模式失败。输送线plc编号={}", slave.getId());
            }
        }
        if (slave.getId() == 2 && this.ioModeOf1F4 != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.302", this.ioModeOf1F4.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线1F4入出库模式失败。输送线plc编号={2}", slave.getId()));
                log.error("写入输送线1F4入出库模式失败。输送线plc编号={}", slave.getId());
            }
        }
        if (slave.getId() == 2 && this.ioModeOf2F1 != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.304", this.ioModeOf2F1.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线2F1入出库模式失败。输送线plc编号={2}", slave.getId()));
                log.error("写入输送线2F1入出库模式失败。输送线plc编号={}", slave.getId());
            }
        }
        if (slave.getId() == 2 && this.ioModeOf2F2 != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.306", this.ioModeOf2F2.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线2F2入出库模式失败。输送线plc编号={2}", slave.getId()));
                log.error("写入输送线2F2入出库模式失败。输送线plc编号={}", slave.getId());
            }
        }
        if (slave.getId() == 2 && this.ioModeOf3F1 != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.308", this.ioModeOf3F1.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线3F1入出库模式失败。输送线plc编号={2}", slave.getId()));
                log.error("写入输送线3F1入出库模式失败。输送线plc编号={}", slave.getId());
            }
        }
        if (slave.getId() == 2 && this.ioModeOf3F2 != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.310", this.ioModeOf3F2.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线3F2入出库模式失败。输送线plc编号={2}", slave.getId()));
                log.error("写入输送线3F2入出库模式失败。输送线plc编号={}", slave.getId());
            }
        }
    }
src/main/resources/application.yml
@@ -35,16 +35,16 @@
  enable: false
wms:
  url: localhost:8088/jfwms
  url: localhost:8088/kdywms
# 下位机配置
wcs-slave:
  # 双深
  doubleDeep: true
  doubleDeep: false
  # 双深库位排号
  doubleLocs: 1,4,5,8
  doubleLocs: 1
  # 一个堆垛机负责的货架排数
  groupCount: 4
  groupCount: 2
  # 堆垛机1
  crn[0]:
    id: 1
@@ -55,128 +55,34 @@
    # 偏移量,当堆垛机站点列号=1时,偏移量=2
    offset: 2
    demo: false
    # 堆垛机入库站点1 右上
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 106
      row: 2
      bay: 84
      lev: 1
    # 堆垛机入库站点2 左上
    crnInStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 116
      row: 2
      bay: 1
      lev: 1
    # 堆垛机入库站点3 左上 2楼
    crnInStn[2]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 205
      row: 2
      bay: 1
      lev: 4
    # 堆垛机入库站点 左上 3楼
    crnInStn[3]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 305
      row: 2
      bay: 1
      lev: 7
    # 堆垛机出库站点1 右上
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 106
      row: 2
      bay: 84
      lev: 1
    # 堆垛机出库站点2 左上
    crnOutStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 116
      row: 2
      bay: 1
      lev: 1
    # 堆垛机出库站点3 左上 2楼
    crnOutStn[2]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 205
      row: 2
      bay: 1
      lev: 4
    # 堆垛机出库站点 左上 3楼
    crnOutStn[3]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 305
      row: 2
      bay: 1
      lev: 7
  # 堆垛机2
  crn[1]:
    id: 2
    ip: 10.10.10.20
    port: 102
    rack: 0
    slot: 0
    # 偏移量,当堆垛机站点列号=1时,偏移量=2
    offset: 2
    demo: false
    # 堆垛机入库站点1 右下
    # 堆垛机入库站1
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 102
      row: 7
      bay: 84
      row: 2
      bay: 32
      lev: 1
    # 堆垛机入库站点2 左下
    # 堆垛机入库站点2
    crnInStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 112
      row: 7
      bay: 1
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 105
      row: 2
      bay: 31
      lev: 1
    # 堆垛机入库站点3 左下 2楼
    crnInStn[2]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 202
      row: 7
      bay: 1
      lev: 4
    # 堆垛机入库站点4 左下 3楼
    crnInStn[3]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 302
      row: 7
      bay: 1
      lev: 7
    # 堆垛机出库站点1 右下
    # 堆垛机出库站点1
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 102
      row: 7
      bay: 84
      row: 2
      bay: 32
      lev: 1
    # 堆垛机出库站点2 左下
    # 堆垛机出库站点2
    crnOutStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 112
      row: 7
      bay: 1
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 105
      row: 2
      bay: 31
      lev: 1
    # 堆垛机出库站点3 左下 2楼
    crnOutStn[2]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 202
      row: 7
      bay: 1
      lev: 4
    # 堆垛机出库站点3 左下 3楼
    crnOutStn[3]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 302
      row: 7
      bay: 1
      lev: 7
  # 输送线1
  devp[0]:
    id: 1
@@ -187,17 +93,13 @@
    # 入库口1
    inSta[0]:
      staNo: 101
      barcode: ${wcs-slave.barcode[6].id}
      barcode1: ${wcs-slave.barcode[7].id}
      barcode2: ${wcs-slave.barcode[8].id}
      barcode: ${wcs-slave.barcode[0].id}
      backSta: 100
      led: ${wcs-slave.led[0].id}
    # 入库口2
    inSta[1]:
      staNo: 104
      barcode: ${wcs-slave.barcode[9].id}
      barcode1: ${wcs-slave.barcode[10].id}
      barcode2: ${wcs-slave.barcode[11].id}
      barcode: ${wcs-slave.barcode[1].id}
      backSta: 103
      led: ${wcs-slave.led[0].id}
    # 空板入库口1
@@ -215,136 +117,15 @@
    # 拣料入库口1
    pickSta[0]:
      staNo: 101
      barcode: ${wcs-slave.barcode[6].id}
      barcode1: ${wcs-slave.barcode[7].id}
      barcode2: ${wcs-slave.barcode[8].id}
      barcode: ${wcs-slave.barcode[0].id}
      backSta: 100
      led: ${wcs-slave.led[0].id}
    # 拣料入库口2
    pickSta[1]:
      staNo: 104
      barcode: ${wcs-slave.barcode[9].id}
      barcode1: ${wcs-slave.barcode[10].id}
      barcode2: ${wcs-slave.barcode[11].id}
      barcode: ${wcs-slave.barcode[1].id}
      backSta: 103
      led: ${wcs-slave.led[0].id}
  # 输送线2
  devp[1]:
    id: 2
    ip: 10.10.10.90
    port: 102
    rack: 0
    slot: 0
    # 入库口1
    inSta[0]:
      staNo: 111
      barcode: ${wcs-slave.barcode[0].id}
      backSta: 110
      led: ${wcs-slave.led[0].id}
    # 入库口2
    inSta[1]:
      staNo: 114
      barcode: ${wcs-slave.barcode[1].id}
      backSta: 113
      led: ${wcs-slave.led[0].id}
    # 入库口3
    inSta[2]:
      staNo: 201
      barcode: ${wcs-slave.barcode[2].id}
      backSta: 200
      led: ${wcs-slave.led[0].id}
    # 入库口4
    inSta[3]:
      staNo: 204
      barcode: ${wcs-slave.barcode[3].id}
      backSta: 203
      led: ${wcs-slave.led[0].id}
    # 入库口5
    inSta[4]:
      staNo: 301
      barcode: ${wcs-slave.barcode[4].id}
      backSta: 300
      led: ${wcs-slave.led[0].id}
    # 入库口6
    inSta[5]:
      staNo: 304
      barcode: ${wcs-slave.barcode[5].id}
      backSta: 303
      led: ${wcs-slave.led[0].id}
    # 空板入库口1
    emptyInSta[0]:
      staNo: 111
    # 空板入库口2
    emptyInSta[1]:
      staNo: 114
    # 空板入库口3
    emptyInSta[2]:
      staNo: 201
    # 空板入库口4
    emptyInSta[3]:
      staNo: 204
    # 空板入库口5
    emptyInSta[4]:
      staNo: 301
    # 空板入库口6
    emptyInSta[5]:
      staNo: 304
    # 出库口1
    outSta[0]:
      staNo: 110
    # 出库口2
    outSta[1]:
      staNo: 113
    # 出库口3
    outSta[2]:
      staNo: 200
    # 出库口4
    outSta[3]:
      staNo: 203
    # 出库口5
    outSta[4]:
      staNo: 300
    # 出库口6
    outSta[5]:
      staNo: 303
    # 拣料入库口1
    pickSta[0]:
      staNo: 111
      barcode: ${wcs-slave.barcode[0].id}
      backSta: 110
      led: ${wcs-slave.led[0].id}
    # 拣料入库口2
    pickSta[1]:
      staNo: 114
      barcode: ${wcs-slave.barcode[1].id}
      backSta: 113
      led: ${wcs-slave.led[0].id}
    # 拣料入库口3
    pickSta[2]:
      staNo: 201
      barcode: ${wcs-slave.barcode[2].id}
      backSta: 200
      led: ${wcs-slave.led[0].id}
    # 拣料入库口4
    pickSta[3]:
      staNo: 204
      barcode: ${wcs-slave.barcode[3].id}
      backSta: 203
      led: ${wcs-slave.led[0].id}
    # 拣料入库口5
    pickSta[4]:
      staNo: 301
      barcode: ${wcs-slave.barcode[4].id}
      backSta: 300
      led: ${wcs-slave.led[0].id}
    # 拣料入库口6
    pickSta[5]:
      staNo: 304
      barcode: ${wcs-slave.barcode[5].id}
      backSta: 303
      led: ${wcs-slave.led[0].id}
  # 条码扫描仪1 左下 1楼开始,111
  barcode[0]:
    id: 1
@@ -355,56 +136,6 @@
    id: 2
    ip: 10.10.10.101
    port: 51236
  # 条码扫描仪3, 201
  barcode[2]:
    id: 3
    ip: 10.10.10.102
    port: 51236
  # 条码扫描仪4,204
  barcode[3]:
    id: 4
    ip: 10.10.10.103
    port: 51236
  # 条码扫描仪5,301
  barcode[4]:
    id: 5
    ip: 10.10.10.104
    port: 51236
  # 条码扫描仪6,304
  barcode[5]:
    id: 6
    ip: 10.10.10.105
    port: 51236
  # 条码扫描仪7,101
  barcode[6]:
    id: 7
    ip: 10.10.10.106
    port: 2002
  # 条码扫描仪8,101
  barcode[7]:
    id: 8
    ip: 10.10.10.107
    port: 2002
  # 条码扫描仪9,101
  barcode[8]:
    id: 9
    ip: 10.10.10.108
    port: 2002
  # 条码扫描仪10,104
  barcode[9]:
    id: 10
    ip: 10.10.10.109
    port: 2002
  barcode[10]:
    id: 11
    ip: 10.10.10.110
    port: 2002
  barcode[11]:
    id: 12
    ip: 10.10.10.111
    port: 2002
  # LED1
  led[0]:
    id: 1
@@ -419,45 +150,3 @@
    port: 5005
    devpPlcId: ${wcs-slave.devp[0].id}
    staArr: 103
  # LED3
  led[2]:
    id: 3
    ip: 10.10.10.223
    port: 5005
    devpPlcId: ${wcs-slave.devp[1].id}
    staArr: 110
  # LED4
  led[3]:
    id: 4
    ip: 10.10.10.224
    port: 5005
    devpPlcId: ${wcs-slave.devp[1].id}
    staArr: 113
  # LED5
  led[4]:
    id: 5
    ip: 10.10.10.225
    port: 5005
    devpPlcId: ${wcs-slave.devp[1].id}
    staArr: 200
  # LED6
  led[5]:
    id: 6
    ip: 10.10.10.226
    port: 5005
    devpPlcId: ${wcs-slave.devp[1].id}
    staArr: 203
  # LED7
  led[6]:
    id: 7
    ip: 10.10.10.227
    port: 5005
    devpPlcId: ${wcs-slave.devp[1].id}
    staArr: 300
  # LED8
  led[7]:
    id: 8
    ip: 10.10.10.228
    port: 5005
    devpPlcId: ${wcs-slave.devp[1].id}
    staArr: 303
src/main/webapp/static/js/console.map.js
@@ -90,19 +90,10 @@
                    "stns": [
                        {
                            "type": "stn",
                            "id": "site-100",
                            "text": "100",
                            "id": "site-105",
                            "text": "105",
                            "top": 386,
                            "left": 1067,
                            "width": 78,
                            "height": 24
                        },
                        {
                            "type": "stn",
                            "id": "site-101",
                            "text": "101",
                            "top": 386,
                            "left": 1147,
                            "width": 78,
                            "height": 24
                        },
@@ -110,16 +101,7 @@
                            "type": "stn",
                            "id": "site-102",
                            "text": "102",
                            "top": 412,
                            "left": 1067,
                            "width": 78,
                            "height": 24
                        },
                        {
                            "type": "stn",
                            "id": "site-103",
                            "text": "103",
                            "top": 412,
                            "top": 386,
                            "left": 1147,
                            "width": 78,
                            "height": 24
@@ -128,6 +110,24 @@
                            "type": "stn",
                            "id": "site-104",
                            "text": "104",
                            "top": 412,
                            "left": 1067,
                            "width": 78,
                            "height": 24
                        },
                        {
                            "type": "stn",
                            "id": "site-101",
                            "text": "101",
                            "top": 412,
                            "left": 1147,
                            "width": 78,
                            "height": 24
                        },
                        {
                            "type": "stn",
                            "id": "site-103",
                            "text": "103",
                            "top": 438,
                            "left": 1067,
                            "width": 78,
@@ -135,8 +135,8 @@
                        },
                        {
                            "type": "stn",
                            "id": "site-105",
                            "text": "105",
                            "id": "site-100",
                            "text": "100",
                            "top": 438,
                            "left": 1147,
                            "width": 78,
src/main/webapp/views/pipeline.html
@@ -60,36 +60,12 @@
                        <fieldset>
                            <legend>入出库模式(IO-Mode)</legend>
                            <div class="io-mode-box">
                                <label>1F1</label>
                                <label>102</label>
                                <button id="io-mode-1" class="ioModeBtn" onclick="ioModeSwitch(this.id)"> - </button>
                            </div>
                            <div class="io-mode-box">
                                <label>1F2</label>
                                <label>105</label>
                                <button id="io-mode-2" class="ioModeBtn" onclick="ioModeSwitch(this.id)"> - </button>
                            </div>
                            <div class="io-mode-box">
                                <label>1F3</label>
                                <button id="io-mode-3" class="ioModeBtn" onclick="ioModeSwitch(this.id)"> - </button>
                            </div>
                            <div class="io-mode-box">
                                <label>1F4</label>
                                <button id="io-mode-4" class="ioModeBtn" onclick="ioModeSwitch(this.id)"> - </button>
                            </div>
                            <div class="io-mode-box">
                                <label>2F1</label>
                                <button id="io-mode-5" class="ioModeBtn" onclick="ioModeSwitch(this.id)"> - </button>
                            </div>
                            <div class="io-mode-box">
                                <label>2F2</label>
                                <button id="io-mode-6" class="ioModeBtn" onclick="ioModeSwitch(this.id)"> - </button>
                            </div>
                            <div class="io-mode-box">
                                <label>3F1</label>
                                <button id="io-mode-7" class="ioModeBtn" onclick="ioModeSwitch(this.id)"> - </button>
                            </div>
                            <div class="io-mode-box">
                                <label>3F2</label>
                                <button id="io-mode-8" class="ioModeBtn" onclick="ioModeSwitch(this.id)"> - </button>
                            </div>
                        </fieldset>
                    </div>