自动化立体仓库 - WCS系统
#
Junjie
2023-11-09 02fcf6d4c840b6b6c279976147ad5dfd8aebb401
#
3个文件已修改
151 ■■■■ 已修改文件
src/main/java/com/zy/core/MainProcess.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java
@@ -91,12 +91,12 @@
//                    //空托盘自动入库
//                    mainService.autoEmptyIn();
                    // 其他  ===>> 入出库模式切换
                    i++;
                    if (i > 1) {
                        mainService.ioConvert();
                        i = 0;
                    }
//                    // 其他  ===>> 入出库模式切换
//                    i++;
//                    if (i > 1) {
//                        mainService.ioConvert();
//                        i = 0;
//                    }
                } catch (Exception e) {
                    e.printStackTrace();
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -42,8 +42,15 @@
    private SiemensS7Net siemensS7Net;
    private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
    private short heartBeatVal = 1;
    public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{
    public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
        add(100);add(101);add(102);add(103);add(104);add(105);
        add(200);add(201);add(202);add(203);add(204);add(205);add(206);
    }};
    public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
        add(300);add(301);add(302);add(303);add(304);add(305);add(306);add(307);
        add(400);add(401);add(402);add(403);add(404);add(405);add(406);add(407);add(408);add(409);
    }};
    /**
     * 条码数量
@@ -67,7 +74,9 @@
    private ArrayList<Integer> getStaNo() {
        switch (slave.getId()) {
            case 1:
                return staNos;
                return staNos1;
            case 2:
                return staNos2;
            default:
                throw new CoolException("获取站点失败!");
        }
@@ -129,11 +138,9 @@
     * 读取状态 ====> 整块plc
     */
    private void read() throws InterruptedException {
        // 更新入出库模式
        updateIoMode();
        ArrayList<Integer> staNos = getStaNo();
        int staNoSize = staNos.size();
        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNoSize*4));
        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*8));
        if (result.IsSuccess) {
            for (int i = 0; i < staNoSize; i++) {
                Integer siteId = staNos.get(i); // 站点编号
@@ -143,32 +150,17 @@
                    staProtocol.setSiteId(siteId);
                    station.put(siteId, staProtocol);
                }
                staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4));     // 工作号
                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4 + 2 ));   // 目标站
                staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 8));     // 工作号
                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4 ));   // 目标站
            }
        }
        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[]> result1 = null;
        result1 = siemensS7Net.Read("DB100.100", (short) (staNoSize * 2));
        result1 = siemensS7Net.Read("DB101.0", (short) (staNoSize * 8));
        if (result1.IsSuccess) {
            for (int i = 0; i < staNoSize; i++) {
                Integer siteId = staNos.get(i); // 站点编号
                boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*2, 2);
                boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*8+6, 1);
                StaProtocol staProtocol = station.get(siteId);
                staProtocol.setAutoing(status[0]);  // 自动
                staProtocol.setLoading(status[1]);  // 有物
@@ -176,10 +168,8 @@
                staProtocol.setOutEnable(status[3]);// 可出
                staProtocol.setEmptyMk(status[4]);  // 空板信号
                staProtocol.setFullPlt(status[5]);  // 满托盘
                staProtocol.setLow(status[6]);   // 低 -- 高
                staProtocol.setLow1(status[7]);
                staProtocol.setHigh(status[8]);
                staProtocol.setHigh1(status[9]);
                staProtocol.setHigh(status[6]);     // 高库位
                staProtocol.setLow(status[7]);      // 低库位
                if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
                    staProtocol.setPakMk(true);
@@ -187,11 +177,11 @@
            }
        }
//        条码扫描器
        // 条码扫描器
        if(slave.getId() == 1) {
            Thread.sleep(200);
            OperateResultExOne<byte[]> result2 = null;
            result2 = siemensS7Net.Read("DB100.150", (short) (barcodeSize * 8));
            result2 = siemensS7Net.Read("DB101.840.0", (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");
@@ -202,22 +192,6 @@
                }
            }
        }
//        //RGV小车
//        Thread.sleep(200);
//        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB100.160",(short)2);
//        if (result3.IsSuccess) {
//            Integer siteId = 16;
//            StaProtocol staProtocol = station.get(siteId);
//            if (null == staProtocol) {
//                staProtocol = new StaProtocol();
//                staProtocol.setSiteId(siteId);
//                station.put(siteId, staProtocol);
//            }
//            staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, 0)));
//        }
        if (result.IsSuccess && !Cools.isEmpty(result1) && result1.IsSuccess) {
@@ -256,16 +230,11 @@
        }
        ArrayList<Integer> staNos = getStaNo();
        int index = staNos.indexOf(staProtocol.getSiteId());
        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*6, staProtocol.getWorkNo().intValue());    // 工作号
        Thread.sleep(500);
        OperateResult write1 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo());    // 目标站
//        OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 工作号
//        Thread.sleep(300);
//        OperateResult write1 = siemensS7Net.Write("DB100." + index*2, staProtocol.getStaNo());    // 目标站
        if (!write.IsSuccess) {
        if (!write.IsSuccess || !write1.IsSuccess) {
            staProtocol = station.get(staProtocol.getSiteId());
            if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
                staProtocol.setPakMk(true);
@@ -326,16 +295,16 @@
    }
    public static void main(String[] args) {
        System.out.println(staNos.indexOf(129));
        System.out.println(staNos.size());
        for (int i = 0; i<staNos.size(); i++) {
//            System.out.println(i*2);
//            System.out.println(i*2 + 200);
//            System.out.println(i);
        }
        int index = staNos.indexOf(128);
        System.out.println(index*2);
        System.out.println(index*2 + 200);
//        System.out.println(staNos.indexOf(129));
//        System.out.println(staNos.size());
//        for (int i = 0; i<staNos.size(); i++) {
////            System.out.println(i*2);
////            System.out.println(i*2 + 200);
////            System.out.println(i);
//        }
//        int index = staNos.indexOf(128);
//        System.out.println(index*2);
//        System.out.println(index*2 + 200);
    }
//    public static void main(String[] args) throws Exception {
src/main/resources/application.yml
@@ -123,7 +123,7 @@
  # 输送线1
  devp[0]:
    id: 1
    ip: 10.10.10.1
    ip: 10.10.10.50
    port: 102
    rack: 0
    slot: 0
@@ -131,39 +131,59 @@
    inSta[0]:
      staNo: 101
      barcode: ${wcs-slave.barcode[0].id}
      backSta: 100
      backSta: 101
      led: ${wcs-slave.led[0].id}
    # 入库口2
    inSta[1]:
      staNo: 104
      staNo: 201
      barcode: ${wcs-slave.barcode[1].id}
      backSta: 103
      backSta: 201
      led: ${wcs-slave.led[1].id}
    # 空板入库口1
    emptyInSta[0]:
      staNo: 101
    # 空板入库口2
    emptyInSta[1]:
      staNo: 104
      staNo: 201
    # 出库口1
    outSta[0]:
      staNo: 100
      staNo: 104
    # 出库口2
    outSta[1]:
      staNo: 103
      staNo: 205
    # 拣料入库口1
    pickSta[0]:
      staNo: 101
      barcode: ${wcs-slave.barcode[0].id}
      backSta: 100
      backSta: 101
      led: ${wcs-slave.led[0].id}
    # 拣料入库口2
    pickSta[1]:
      staNo: 104
      staNo: 201
      barcode: ${wcs-slave.barcode[1].id}
      backSta: 103
      backSta: 201
      led: ${wcs-slave.led[1].id}
  # 输送线2
  devp[1]:
    id: 2
    ip: 10.10.10.51
    port: 102
    rack: 0
    slot: 0
    # 空板入库口1
    emptyInSta[0]:
      staNo: 305
    # 空板入库口2
    emptyInSta[1]:
      staNo: 400
    # 出库口1
    outSta[0]:
      staNo: 305
    # 出库口2
    outSta[1]:
      staNo: 400
  # 条码扫描仪1
  barcode[0]:
    id: 1