#
zjj
2023-05-13 f5e8074d44ac8c39e0a8e128b06e3c7572422810
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -47,30 +47,13 @@
//
//    }};
    public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
        add(100);add(101);add(102);add(103);
        add(104);add(105);add(106);add(107);
        add(108);add(109);add(110);add(111);
        add(112);add(113);add(114);add(115);
        add(116);add(117);add(118);add(119);
        add(120);add(121);add(122);add(123);
        add(124);add(125);add(126);add(127);
        add(128);add(129);add(130);add(131);
        add(132);add(133);add(134);add(135);
        add(136);add(137);add(138);add(139);
        add(140);add(141);add(142);add(143);
        add(144);add(145);add(146);add(147);
        add(148);add(149);add(150);add(151);
        add(152);add(153);add(154);add(155);
        add(156);add(157);add(158);
        add(1);add(2);add(3);add(4);
        add(5);add(6);add(7);add(8);
        add(9);add(10);add(11);add(12);
        add(13);
    }};
    public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
        add(200);add(201);add(202);add(203);
        add(204);add(205);add(206);add(207);
        add(208);add(209);add(210);add(211);
        add(212);add(213);add(214);add(215);
        add(216);add(217);
    }};
    private Integer count=0;
@@ -101,8 +84,6 @@
        switch (slave.getId()) {
            case 1:
                return staNos1;
            case 2:
                return staNos2;
            default:
                throw new CoolException("服务器异常");
        }
@@ -274,9 +255,10 @@
                    staProtocol.setPakMk(true);
                }
                if (staProtocol.getStamp()>=2 && !staProtocol.isLoading()){
                if (!staProtocol.isLoading()){
                    staProtocol.setStamp(0);
                }else if (staProtocol.getStamp()<2 && staProtocol.isLoading()){
                }
                if (staProtocol.getStamp()<2 && staProtocol.isLoading()){
                    //lfd入库印记  当stamp>=2时才入库
                    staProtocol.setStamp(staProtocol.getStamp()+1);
                }
@@ -377,11 +359,41 @@
        array[1] = staProtocol.getStaNo();
//        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 = null;
        OperateResult write1 = null;
        //任务下发次数
        int writeCount = 0;
        do {
            write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 工作号
            Thread.sleep(500);
            write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo());    // 目标站
            if(write.IsSuccess || write1.IsSuccess){
                Thread.sleep(200);
                OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index*2, (short) 2);
                OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB101." + index*2, (short) 2);
                if(readResult.IsSuccess && readResult1.IsSuccess){
                    short workNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0);
                    short staNo = siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 0);
                    if(staProtocol.getWorkNo().equals(workNo) && staProtocol.getStaNo().equals(staNo)){
                        //任务命令写入成功
                        log.info("写入堆垛机命令后返回成功,并且回读成功。堆垛机plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
                        break;
                    } else {//返回结果是成功了,但是真实值不相同
                        writeCount++;
                        log.error("写入堆垛机命令后返回成功,但是读取任务值不一致。堆垛机plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
                    }
                } else {
                    writeCount++;
                    log.error("写入堆垛机命令后读取失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
                }
            }
            else {
                writeCount++;
                log.error("写入堆垛机命令后读取失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
            }
        }while (writeCount<5);
        if (!write.IsSuccess) {
        if (!write.IsSuccess || !write1.IsSuccess) {
            staProtocol = station.get(staProtocol.getSiteId());
            if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
                staProtocol.setPakMk(true);