#
TQS
2023-02-19 471f10950e67501352d77ef9d285f4583c3991b0
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -15,6 +15,7 @@
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.IoModeType;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.Task;
@@ -58,6 +59,17 @@
        this.slave = slave;
    }
    /**
     * 入出库模式
     * 0:未知
     * 1:入库启动中
     * 2.入库模式
     * 3.出库启动中 (不能生成入库工作档)
     * 4.出库模式
     */
    public IoModeType ioModeOf1F = IoModeType.NONE;
    public IoModeType ioModeOf2F = IoModeType.NONE;
    @Override
    @SuppressWarnings("InfiniteLoopStatement")
    public void run() {
@@ -77,6 +89,8 @@
                    // 写数据 ID+目标站
                    case 2:
                        write((StaProtocol)task.getData());
                        Thread.sleep(300);
                        read();
                        break;
                    default:
                        break;
@@ -114,6 +128,8 @@
     * 读取状态 ====> 整块plc
     */
    private void read() throws InterruptedException {
        // 更新入出库模式
        updateIoMode();
        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 50);
        if (result.IsSuccess) {
            for (int i = 0; i < 25; i++) {
@@ -238,6 +254,22 @@
        }
    }
    // 更新入出库模式
    private void updateIoMode() throws InterruptedException {
        if (this.ioModeOf1F != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.180", this.ioModeOf1F.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线103入出库模式失败。输送线plc编号={1}", slave.getId()));
                News.error("写入输送线103入出库模式失败。输送线plc编号={}", slave.getId());
            }
        }
        if (this.ioModeOf2F != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.182", this.ioModeOf2F.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线203入出库模式失败。输送线plc编号={1}", slave.getId()));
                News.error("写入输送线203入出库模式失败。输送线plc编号={}", slave.getId());
            }
        }
    }
    /**
     * 心跳
     */