自动化立体仓库 - WCS系统
#
zwl
2023-02-03 611cf1f97da4d177f5ecc7fe4a3d994f773a3b41
#
5个文件已修改
121 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/LocTypeDto.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/crn.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -298,7 +298,11 @@
                }
//                // 入出库模式判断
                if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
               // if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
                if ( inSta.getStaNo()==101 && devpThread.ioModeOf1F == IoModeType.PAKOUT_MODE) { continue; }
                if ( inSta.getStaNo()==103 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { continue; }
                if ( inSta.getStaNo()==105 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) { continue; }
                if ( inSta.getStaNo()==107 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) { continue; }
                // 判断是否满足入库条件
                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
@@ -1264,9 +1268,12 @@
//                // 入出库模式判断
//                if ( emptyInSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
                if ( emptyInSta.getStaNo()==203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { continue; }
                if ( emptyInSta.getStaNo()==402 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) { continue; }
//                if ( emptyInSta.getStaNo()==203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { continue; }
//                if ( emptyInSta.getStaNo()==402 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) { continue; }
                if ( emptyInSta.getStaNo()==101 && devpThread.ioModeOf1F == IoModeType.PAKOUT_MODE) { continue; }
                if ( emptyInSta.getStaNo()==103 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { continue; }
                if ( emptyInSta.getStaNo()==105 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) { continue; }
                if ( emptyInSta.getStaNo()==107 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) { continue; }
                // 站点条件判断
                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
                        && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() > 9990 && staProtocol.getWorkNo() <= 9999) && staProtocol.isPakMk()) {
@@ -1927,7 +1934,7 @@
                                devpThread.ioModeOf1F = IoModeType.PAKIN_MODE;
                            }
                            break;
                        case 103://1F
                        case 103://2F
                            if (pakout != null) {
                                if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
                                    // 出库切换中
@@ -1945,7 +1952,7 @@
                                devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
                            }
                            break;
                        case 105://1F
                        case 105://3F
                            if (pakout != null) {
                                if (devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) {
                                    // 出库切换中
@@ -1963,7 +1970,7 @@
                                devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
                            }
                            break;
                        case 107://1F
                        case 107://4F
                            if (pakout != null) {
                                if (devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {
                                    // 出库切换中
src/main/java/com/zy/common/model/LocTypeDto.java
@@ -23,14 +23,15 @@
    }
    public LocTypeDto(StaProtocol staProtocol) {
        if (staProtocol.isHigh() == staProtocol.isLow()) {
            throw new CoolException("plc高低检测异常");
        }
        if (staProtocol.isLow()) {
            this.locType1 = 1; // 低库位
        } else {
            this.locType1 = 2; // 高库位
        }
//        if (staProtocol.isHigh() == staProtocol.isLow()) {
//            throw new CoolException("plc高低检测异常");
//        }
//        if (staProtocol.isLow()) {
//            this.locType1 = 1; // 低库位
//        } else {
//            this.locType1 = 2; // 高库位
//        }
        this.locType1 = 1;
    }
    /**
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -45,7 +45,7 @@
    public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
        add(100);add(101);add(102);add(103);add(104);
        add(201);add(202);add(203);
        add(105);add(106);add(107);
    }};
    public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
@@ -181,7 +181,7 @@
        updateIoMode();
        ArrayList<Integer> staNos = getStaNo();
        int staNoSize = staNos.size();
        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNoSize*2));
        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNoSize*4));
        if (result.IsSuccess) {
            for (int i = 0; i < staNoSize; i++) {
                Integer siteId = staNos.get(i); // 站点编号
@@ -191,33 +191,33 @@
                    staProtocol.setSiteId(siteId);
                    station.put(siteId, staProtocol);
                }
                staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*2));     // 工作号
                staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4));     // 工作号
//                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4 + 2));   // 目标站
               staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4 + 2));   // 目标站
            }
        }
        Thread.sleep(200);
        OperateResultExOne<byte[]> result0 = siemensS7Net.Read("DB101.0", (short) (staNoSize*2));
        if (result0.IsSuccess) {
            for (int i = 0; i < staNoSize; i++) {
                Integer siteId = staNos.get(i); // 站点编号
                StaProtocol staProtocol = station.get(siteId);
                if (null == staProtocol) {
                    staProtocol = new StaProtocol();
                    staProtocol.setSiteId(siteId);
                    station.put(siteId, staProtocol);
                }
                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result0.Content, i*2));   // 目标站
            }
        }
        Thread.sleep(200);
//        OperateResultExOne<byte[]> result0 = siemensS7Net.Read("DB100.2", (short) (staNoSize*2));
//        if (result0.IsSuccess) {
//            for (int i = 0; i < staNoSize; i++) {
//                Integer siteId = staNos.get(i); // 站点编号
//                StaProtocol staProtocol = station.get(siteId);
//                if (null == staProtocol) {
//                    staProtocol = new StaProtocol();
//                    staProtocol.setSiteId(siteId);
//                    station.put(siteId, staProtocol);
//                }
//                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result0.Content, i*2));   // 目标站
//            }
//        }
//        Thread.sleep(200);
        OperateResultExOne<byte[]> result1 = null;
        if(slave.getId()==1) {
            result1 = siemensS7Net.Read("DB102.100", (short) (staNoSize));
            result1 = siemensS7Net.Read("DB102.0", (short) (staNoSize*2));
            if (result1.IsSuccess) {
                for (int i = 0; i < staNoSize; i++) {
                    Integer siteId = staNos.get(i); // 站点编号
                    boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i, 1);
                    boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*2, 1);
                    StaProtocol staProtocol = station.get(siteId);
                    staProtocol.setAutoing(status[0]);  // 自动
                    staProtocol.setLoading(status[1]);  // 有物
@@ -260,7 +260,7 @@
        Thread.sleep(200);
        if(slave.getId()==1) {
            OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.200", (short) (barcodeSize * 8));
            OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.40", (short) (barcodeSize * 8));
            if (result2.IsSuccess) {
                for (int i = 0; i < barcodeSize; i++) {
                    String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
@@ -319,11 +319,11 @@
        short[] array = new short[2];
        array[0] = staProtocol.getWorkNo();
        array[1] = staProtocol.getStaNo();
//        OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
          OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
        OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 工作号
        Thread.sleep(500);
        OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo());    // 目标站
//        OperateResult write = siemensS7Net.Write("DB100.0" + index*4, staProtocol.getWorkNo());    // 工作号
//        Thread.sleep(500);
//        OperateResult write1 = siemensS7Net.Write("DB100.2" + index*4+2, staProtocol.getStaNo());    // 目标站
        if (!write.IsSuccess) {
            staProtocol = station.get(staProtocol.getSiteId());
@@ -341,25 +341,25 @@
    // 更新入出库模式
    private void updateIoMode() throws InterruptedException {
        if (this.ioModeOf1F != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.180", this.ioModeOf1F.id).IsSuccess) {
            if (!siemensS7Net.Write("DB100.80", this.ioModeOf1F.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线F1入出库模式失败。输送线plc编号={1}", slave.getId()));
                log.error("写入输送线1F入出库模式失败。输送线plc编号={}", slave.getId());
            }
        }
        if (this.ioModeOf2F != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.182", this.ioModeOf2F.id).IsSuccess) {
            if (!siemensS7Net.Write("DB100.82", this.ioModeOf2F.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线F2入出库模式失败。输送线plc编号={1}", slave.getId()));
                log.error("写入输送线2F入出库模式失败。输送线plc编号={}", slave.getId());
            }
        }
        if (this.ioModeOf3F != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.184", this.ioModeOf3F.id).IsSuccess) {
            if (!siemensS7Net.Write("DB100.84", this.ioModeOf3F.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线F3入出库模式失败。输送线plc编号={1}", slave.getId()));
                log.error("写入输送线3F入出库模式失败。输送线plc编号={}", slave.getId());
            }
        }
        if (this.ioModeOf4F != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.186", this.ioModeOf4F.id).IsSuccess) {
            if (!siemensS7Net.Write("DB100.86", this.ioModeOf4F.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线F4入出库模式失败。输送线plc编号={1}", slave.getId()));
                log.error("写入输送线4F入出库模式失败。输送线plc编号={}", slave.getId());
            }
src/main/resources/application.yml
@@ -8,9 +8,9 @@
    name: @pom.build.finalName@
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://192.168.4.15:1433;databasename=tzhtasrs
    username: sa
    password: sa@123
    url: jdbc:sqlserver://localhost:1433;databasename=tzhtasrs
    username: SA
    password: SQLsqlserver1234
  mvc:
    static-path-pattern: /**
  redis:
@@ -34,7 +34,7 @@
  enable: false
wms:
  url: 127.0.0.1:8081/lywms
  url: 127.0.0.1:8080/htwms
# 下位机配置
wcs-slave:
@@ -47,7 +47,7 @@
  # 堆垛机1
  crn[0]:
    id: 1
    ip: 10.10.10.101
    ip: 10.10.10.110
    port: 102
    rack: 0
    slot: 0
@@ -86,7 +86,7 @@
  # 堆垛机2
  crn[1]:
    id: 2
    ip: 10.10.10.111
    ip: 10.10.10.120
    port: 102
    rack: 0
    slot: 0
@@ -123,7 +123,7 @@
  # 输送线
  devp[0]:
    id: 1
    ip: 10.10.10.50
    ip: 10.10.10.100
    port: 102
    rack: 0
    slot: 0
@@ -191,19 +191,19 @@
  # 条码扫描仪
  barcode[0]:
    id: 1
    ip: 10.10.10.52
    ip: 10.10.10.105
    port: 51236
  barcode[1]:
    id: 2
    ip: 10.10.10.53
    ip: 10.10.10.106
    port: 51236
  barcode[2]:
    id: 3
    ip: 10.10.10.54
    ip: 10.10.10.107
    port: 51236
  barcode[3]:
    id: 4
    ip: 10.10.10.95
    ip: 10.10.10.108
    port: 51236
   # LED1
  led[0]:
src/main/webapp/views/crn.html
@@ -133,9 +133,6 @@
                    <div class="select-container" style="padding: 20px 0;">
                        <label><input type="radio" name="crnSelect" value="1" checked>&nbsp;1号堆垛机</label>
                        <label><input type="radio" name="crnSelect" value="2">&nbsp;2号堆垛机</label>
                        <label><input type="radio" name="crnSelect" value="3">&nbsp;3号堆垛机</label>
                        <label><input type="radio" name="crnSelect" value="4">&nbsp;4号堆垛机</label>
                        <label><input type="radio" name="crnSelect" value="5">&nbsp;5号堆垛机</label>
                    </div>
                </div>
                <!-- 源站/源库位 选择 -->