#
lsh
2023-03-07 035331e18802456a070b61a01b1466f59d43a29d
src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -255,12 +255,40 @@
        array[7] = command.getDestinationPosY();
        array[8] = command.getDestinationPosZ();
        array[9] = command.getCommand();
        OperateResult result = siemensNet.Write("DB100.0", array);
        OperateResult result=null;
        //任务下发次数
        int writeCount = 0;
        do {
            result = siemensNet.Write("DB100.0", array);
            if(result.IsSuccess){
                Thread.sleep(200);
                OperateResultExOne<byte[]> readResult = siemensNet.Read("DB100.0", (short) 20);
                if(readResult.IsSuccess){
                    short ackFinish = siemensNet.getByteTransform().TransInt16(readResult.Content, 0);
                    short taskNo = siemensNet.getByteTransform().TransInt16(readResult.Content, 2);
                    if(command.getTaskNo().equals(taskNo) && command.getAckFinish().equals(ackFinish)){
                        //任务命令写入成功
                        log.info("写入堆垛机命令后返回成功,并且回读成功。堆垛机plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(command), writeCount);
                        break;
                    } else {//返回结果是成功了,但是真实值不相同
                        writeCount++;
                        log.error("写入堆垛机命令后返回成功,但是读取任务值不一致。堆垛机plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(command), writeCount);
                    }
                } else {
                    writeCount++;
                    log.error("写入堆垛机命令后读取失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(command), writeCount);
                }
            }
            else {
                writeCount++;
                log.error("写入堆垛机命令后读取失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(command), writeCount);
            }
        }while (writeCount<5);
        if (command.getAckFinish() == 0) {
                short commandFinish = 1;
                Thread.sleep(300);
                result = siemensNet.Write("DB100.18", commandFinish);
            short commandFinish = 1;
            Thread.sleep(300);
            result = siemensNet.Write("DB100.18", commandFinish);
        }
        try {