自动化立体仓库 - WCS系统
#
zjj
2024-04-23 01a2d01abeadef5488a100ddf58a22dbcf7b95d6
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -143,10 +143,22 @@
        add(4010);add(4016);
    }};
    public static final ArrayList<Integer> errorStaNos1 = new ArrayList<Integer>() {{
        add(1002);add(1012);
    }};
    public static final ArrayList<Integer> errorStaNos2 = new ArrayList<Integer>() {{
        add(2107);
    }};
    public static final ArrayList<Integer> errorStaNos4 = new ArrayList<Integer>() {{
        add(3007);add(3012);
    }};
    /**
     * 条码数量
     */
    private int barcodeSize = 4;
    private int barcodeSize = 2;
    /**
     * 入出库模式
@@ -195,6 +207,19 @@
                return writeStaNos5;
            case 6:
                return writeStaNos6;
            default:
                throw new CoolException("获取站点失败!");
        }
    }
    private ArrayList<Integer> getErrorStaNo() {
        switch (slave.getId()) {
            case 1:
                return errorStaNos1;
            case 2:
                return errorStaNos2;
            case 4:
                return errorStaNos4;
            default:
                throw new CoolException("获取站点失败!");
        }
@@ -278,7 +303,7 @@
        if (result1.IsSuccess) {
            for (int i = 0; i < staNoSize; i++) {
                Integer siteId = staNos.get(i); // 站点编号
                boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*8+6, 1);
                boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*8+6, 2);
                StaProtocol staProtocol = station.get(siteId);
                staProtocol.setAutoing(status[0]);  // 自动
                staProtocol.setLoading(status[1]);  // 有物
@@ -288,7 +313,8 @@
                staProtocol.setFullPlt(status[5]);  // 满托盘
                staProtocol.setHigh(status[6]);     // 高库位
                staProtocol.setLow(status[7]);      // 低库位
                staProtocol.setEmptyPalletRequire(status[8]);      // 空托盘需求信号
                staProtocol.setEmptyOutPalletRequire(status[8]);      // 空托盘可出需求信号
                staProtocol.setEmptyInPalletRequire(status[9]);      // 空托盘可入需求信号
                if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
                    staProtocol.setPakMk(true);
@@ -300,7 +326,7 @@
        if(slave.getId() == 1) {
            Thread.sleep(200);
            OperateResultExOne<byte[]> result2 = null;
            result2 = siemensS7Net.Read("DB101.840.0", (short) (barcodeSize * 8));
            result2 = siemensS7Net.Read("DB101.208.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");
@@ -312,6 +338,26 @@
            }
        }
        //报警信息
        Thread.sleep(200);
        OperateResultExOne<byte[]> result3 = null;
        result3 = siemensS7Net.Read("DB101.200.0", (short) (getErrorStaNo().size() * 4));
        if (result3.IsSuccess) {
            for (int i = 0; i < getErrorStaNo().size(); i++) {
                Integer siteId = getErrorStaNo().get(i); // 站点编号
                StaProtocol staProtocol = station.get(siteId);
//                staProtocol.setLocType1(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4));   // 库位高度
                boolean[] status = siemensS7Net.getByteTransform().TransBool(result3.Content, i*4+2, 1);
                staProtocol.setFrontErr(status[0]);
                staProtocol.setBackErr(status[1]);
                staProtocol.setHighErr(status[2]);
                staProtocol.setLeftErr(status[3]);
                staProtocol.setRightErr(status[4]);
                staProtocol.setWeightErr(status[5]);
                staProtocol.setBarcodeErr(status[6]);
            }
        }
        if (result.IsSuccess && !Cools.isEmpty(result1) && result1.IsSuccess) {
            OutputQueue.DEVP.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));