自动化立体仓库 - WCS系统
#
Junjie
2025-04-12 3be5c88fbc583d17a932ca937d8e293d28b5c974
src/main/java/com/zy/core/thread/impl/FyDevpThread.java
@@ -192,6 +192,12 @@
                    StaProtocol staProtocol = station.get(sta);
                    BasDevp sqlModel = staProtocol.toSqlModel();
                    stations.add(sqlModel);
                    //暂时写入数据库
                    BasDevp basDevp = basConveyorStaService.selectById(sta);
                    if (basDevp == null) {
                        basConveyorStaService.insert(sqlModel);
                    }
                }
                if (!stations.isEmpty()) {
                    if (null != basConveyorStaService && !basConveyorStaService.updateBatchById(stations)) {
@@ -221,50 +227,19 @@
        index += 1;
        short[] array = new short[2];
        array[0] = staProtocol.getWorkNo();
        array[1] = staProtocol.getStaNo();
        array[0] = staProtocol.getStaNo();
        array[1] = staProtocol.getWorkNo();
        String staNoAddress = "DB83." + (index * 8 + 4);
        String workNoAddress = "DB83." + (index * 8 + 6);
        OperateResult write1 = null;    // 工作号
        OperateResult write2 = null;     // 目标站
        //任务下发次数
        int writeCount = 0;
        do {
            write1 = siemensS7Net.Write(workNoAddress, array[0]);    // 工作号
            write2 = siemensS7Net.Write(staNoAddress, array[1]);
            if ((write1.IsSuccess && write2.IsSuccess)) {
                log.info("写入输送线命令后返回成功,并且回读成功。输送线plc编号={},{},{},写入次数={}", staProtocol.getSiteId(), JSON.toJSON(staProtocol.getWorkNo()), JSON.toJSON(staProtocol.getStaNo()), writeCount);
//                OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB82.14", (short) (staNos2.indexOf(siteId) * 26));
//                //OperateResultExOne<byte[]> readResult = siemensS7Net.Read(staNoAddress, (short) 8);
//                if (readResult.IsSuccess) {
//                    int workNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 2);     // 工作号
//                    int staNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 4);   // 目标站
//                    // int staNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0);
//                    //int workNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0);
//                    if (workNo == workNo2 && staNo == staNo2) {
//                        //任务命令写入成功
//                        log.info("写入输送线命令后返回成功,并且回读成功。输送线plc编号={},{},{},写入次数={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount);
//                        return true;
//                    } else {//返回结果是成功了,但是真实值不相同
//                        writeCount++;
//                        log.error("写入输送线命令后返回成功,但是读取任务值不一致。输送线plc编号={},{},{},写入次数={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount);
//                    }
//                } else {
//                    writeCount++;
//                    log.error("写入输送线命令后读取失败。输送线plc编号={},站点数据={},{},写入次数={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount);
//                }
            } else {
                writeCount++;
            }
        } while (writeCount < 5);
//        StaProtocol staProtocol = station.get(siteId);
//        if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
//            staProtocol.setPakMk(true);
//        }
        OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点数据失败。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(array)));
        log.error("写入输送线站点数据失败。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(array));
        OperateResult write1 = siemensS7Net.Write(staNoAddress, array);
        if (!write1.IsSuccess) {
            OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点数据失败。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(array)));
            log.error("写入输送线站点数据失败。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(array));
            return;
        }
        OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点数据成功。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(array)));
        log.info("写入输送线站点数据成功。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(array));
    }
    /**