#
luxiaotao1123
2023-04-17 d014ca67872527703ef949b6874984df0208f17b
src/main/java/com/zy/core/thread/SteThread.java
@@ -67,6 +67,8 @@
                    // 写入数据
                    case 2:
                        write((SteCommand) task.getData());
                        Thread.sleep(200);
                        readStatus();
                        break;
                    default:
                        break;
@@ -89,7 +91,7 @@
            steProtocol = new SteProtocol();
        }
        steProtocol.setSteNo(slave.getId().shortValue());
        steProtocol.setMode((short) 0);
        steProtocol.setMode((short) -1);
        steProtocol.setStatus(SteStatusType.OFF_LINE);
        steProtocol.setTaskNo((short) 0);
        steProtocol.setExecute(false);
@@ -181,8 +183,8 @@
                // 复位信号
                if (steProtocol.getWaiting()) {
                    News.error("-------------------------------------------第一步、[穿梭车号:{}, 工作号:{}]==>> 状态为3,等待WCS确认!!",
                            slave.getId(),steProtocol.getTaskNo());
                    News.error("-------------------------------------------第一步、[穿梭车号:{}, 工作号:{}]==>> 状态为{},等待WCS确认!!",
                            slave.getId(),steProtocol.getTaskNo(),steProtocol.getStatus());
                    if (resetFlag) {
                        SteCommand steCommand = new SteCommand();
                        steCommand.setComplete(true);
@@ -235,8 +237,8 @@
        // 开始任务
        if (!command.getComplete()) {
            //组织任务前,先清空写任务确认位,以及任务完成确认位
            siemensS7Net.Write("V2000.0", false);
            siemensS7Net.Write("V2000.1", false);
            OperateResult result01 = siemensS7Net.Write("V2000.0", false);
            OperateResult result02 = siemensS7Net.Write("V2000.1", false);
            // 1.任务号
            OperateResult result0 = siemensS7Net.Write("V998", command.getTaskNo().shortValue());
            try {
@@ -340,6 +342,12 @@
        } else {
            OutputQueue.STE.offer(MessageFormat.format("【{0}】写入穿梭车plc数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
            News.error("写入穿梭车plc数据失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
            //写入失败后,重新添加commanddao 任务队列中,并立即回读一次设备状态
            MessageQueue.offer(SlaveType.Ste, slave.getId(), new Task(2, command));
            readStatus();
            initSte();
            return false;
        }
    }