1
zhangchao
2024-10-25 c9ec99f0a637a964ebd3f0f4c474c507d0cb8f60
1
1个文件已修改
65 ■■■■ 已修改文件
src/main/java/com/zy/core/thread/SiemensDevpThread.java 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -350,48 +350,46 @@
        boolean staNoFlag = false;
        do {
            if (!wrkNoFlag) {
                Thread.sleep(180);
                write = siemensS7Net.Write("DB100." + index * 6, (int) staProtocol.getWorkNo());    // 工作号
                if (write.IsSuccess) {
                    OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index * 6, (short) 4);
                    if (readResult.IsSuccess) {
                        short workNo = (short) siemensS7Net.getByteTransform().TransInt32(readResult.Content, 0);
                        if (staProtocol.getWorkNo().equals(workNo)) {
                            //任务命令写入成功
                            log.info("写入工作号命令后返回成功,并且回读成功。堆垛机plc编号={},{},{},写入次数={}", slave.getId(), staProtocol.getWorkNo(), workNo, writeCount);
                            wrkNoFlag = true;
                        } else {//返回结果是成功了,但是真实值不相同
                            writeCount++;
                            log.error("写入工作号命令后返回成功,但是读取任务值不一致。堆垛机plc编号={},{},{},写入次数={}", slave.getId(), staProtocol.getWorkNo(), workNo, writeCount);
                        }
                    } else {
                        writeCount++;
                        log.error("写入工作号命令后读取失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
                    }
//                    OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index * 6, (short) 4);
//                    if (readResult.IsSuccess) {
//                        short workNo = (short) siemensS7Net.getByteTransform().TransInt32(readResult.Content, 0);
//                        if (staProtocol.getWorkNo().equals(workNo)) {
//                            //任务命令写入成功
//                            log.info("写入工作号命令后返回成功,并且回读成功。堆垛机plc编号={},{},{},写入次数={}", slave.getId(), staProtocol.getWorkNo(), workNo, writeCount);
//                            wrkNoFlag = true;
//                        } else {//返回结果是成功了,但是真实值不相同
//                            writeCount++;
//                            log.error("写入工作号命令后返回成功,但是读取任务值不一致。堆垛机plc编号={},{},{},写入次数={}", slave.getId(), staProtocol.getWorkNo(), workNo, writeCount);
//                        }
//                    } else {
//                        writeCount++;
//                        log.error("写入工作号命令后读取失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
//                    }
                } else {
                    writeCount++;
                    log.error("写入工作号命令失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
                }
            }
            if (!staNoFlag) {
                Thread.sleep(180);
                write1 = siemensS7Net.Write("DB100." + (index * 6 + 4), staProtocol.getStaNo());    // 目标站
                if (write1.IsSuccess) {
                    OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB100." + (index * 6 + 4), (short) 2);
                    if (readResult1.IsSuccess) {
                        short staNo = siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 0);
                        if (staProtocol.getStaNo().equals(staNo)) {
                            //任务命令写入成功
                            log.info("写入目标站命令后返回成功,并且回读成功。堆垛机plc编号={},{},{},写入次数={}", slave.getId(), staProtocol.getStaNo(), staNo, writeCount);
                            staNoFlag = true;
                        } else {//返回结果是成功了,但是真实值不相同
                            writeCount++;
                            log.error("写入目标站命令后返回成功,但是读取任务值不一致。堆垛机plc编号={},{},{},写入次数={}", slave.getId(), staProtocol.getStaNo(), staNo, writeCount);
                        }
                    } else {
                        writeCount++;
                        log.error("写入目标站命令后读取失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
                    }
//                    OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB100." + (index * 6 + 4), (short) 2);
//                    if (readResult1.IsSuccess) {
//                        short staNo = siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 0);
//                        if (staProtocol.getStaNo().equals(staNo)) {
//                            //任务命令写入成功
//                            log.info("写入目标站命令后返回成功,并且回读成功。堆垛机plc编号={},{},{},写入次数={}", slave.getId(), staProtocol.getStaNo(), staNo, writeCount);
//                            staNoFlag = true;
//                        } else {//返回结果是成功了,但是真实值不相同
//                            writeCount++;
//                            log.error("写入目标站命令后返回成功,但是读取任务值不一致。堆垛机plc编号={},{},{},写入次数={}", slave.getId(), staProtocol.getStaNo(), staNo, writeCount);
//                        }
//                    } else {
//                        writeCount++;
//                        log.error("写入目标站命令后读取失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
//                    }
                } else {
                    writeCount++;
                    log.error("写入目标站命令失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
@@ -400,7 +398,8 @@
            if (wrkNoFlag && staNoFlag) {
                break;
            }
        } while (writeCount < 40);
            Thread.sleep(200);
        } while (writeCount < 20);
        if (!write.IsSuccess) {
            staProtocol = station.get(staProtocol.getSiteId());