#
Junjie
2025-04-03 ac09ee9c9f39cb9d452b57504e5c79321e0371eb
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/FyxcDevpThread.java
@@ -158,9 +158,8 @@
//                staProtocol.setWorkMode((int) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 40 + 8));// 工作模式
                staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 18 + 10));     // 工作号
                staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 18 + 14));   // 目标站
                staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18 + 10));     // 工作号
                staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18 + 12));   // 目标站
                if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
                    staProtocol.setPakMk(true);
@@ -245,6 +244,7 @@
    @Override
    public boolean writeWorkNo(int siteId, short workNo) {
        int index = staNos1.indexOf(siteId);
        index += 1;
        OperateResult write = siemensS7Net.Write("DB83." + (index *8+6),(int) workNo);    // 工作号
@@ -266,6 +266,7 @@
    @Override
    public boolean writeStaNo(int siteId,short staNo) {
        int index = staNos1.indexOf(siteId);
        index += 1;
        OperateResult write = siemensS7Net.Write("DB101." + (index * 8 + 4),(int) staNo);    // 目标站
@@ -287,27 +288,27 @@
    @Override
    public boolean writeWorkSta(int siteId, short workNo, short staNo) {
        int index = staNos1.indexOf(siteId);
        index += 1;
        short[] array = new short[2];
        array[0] = workNo;
        array[1] = staNo;
        String workNoAddress = "DB101." + (index * 8 + 6);
        String staNoAddress = "DB101." + (index * 8 + 4);
        String workNoAddress = "DB83." + (index * 8 + 6);
        String staNoAddress = "DB83." + (index * 8 + 4);
        OperateResult write1 = null;    // 工作号
        OperateResult write2 = null;     // 目标站
        //任务下发次数
        int writeCount = 0;
        do {
            write1 = siemensS7Net.Write(workNoAddress, (int) workNo);    // 工作号
            write2 = siemensS7Net.Write(staNoAddress, (int) staNo);
            write1 = siemensS7Net.Write(workNoAddress,  workNo);    // 工作号
            write2 = siemensS7Net.Write(staNoAddress, staNo);
            if ((write1.IsSuccess && write2.IsSuccess)) {
                OperateResultExOne<byte[]> readResult = siemensS7Net.Read(staNoAddress, (short) 8);
                if (readResult.IsSuccess) {
                    int staNo2 = siemensS7Net.getByteTransform().TransInt32(readResult.Content, 0);
                    int workNo2 = siemensS7Net.getByteTransform().TransInt32(readResult.Content, 4);
                    int staNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0);
                    int workNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 4);
                    if (workNo == workNo2 && staNo == staNo2) {
                        //任务命令写入成功
                        log.info("写入输送线命令后返回成功,并且回读成功。输送线plc编号={},{},{},写入次数={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount);