自动化立体仓库 - WCS系统
Junjie
2023-07-19 c605b435cb4be68de70c822162a96e9a78f45a88
src/main/java/com/zy/core/thread/LiftThread.java
@@ -65,7 +65,7 @@
                switch (step) {
                    // 读数据
                    case 1:
                        readStatus();
                        read();
                        break;
                    // 写入数据
                    case 2:
@@ -109,6 +109,28 @@
    @Override
    public void close() {
        modbusTcpNet.ConnectClose();
    }
    private void read() {
        try {
            readStatus();
            //提升机处于运行状态,将标记置为true
            if (liftProtocol.getRunning()) {
                liftProtocol.setPakMk(true);
            }
            //提升机处于未运行、就绪、标记true、有任务号
            if (!liftProtocol.getRunning()
                    && liftProtocol.getPakMk()
                    && liftProtocol.getTaskNo() != 0) {
                //还有未完成的命令
                executeWork(liftProtocol.getTaskNo());
            }
        } catch (Exception e) {
            OutputQueue.LIFT.offer(MessageFormat.format("【{0}】提升机plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
            initLift();
        }
    }
    private void readStatus() {
@@ -174,19 +196,6 @@
                liftProtocol.setLiftActualSpeed(modbusTcpNet.getByteTransform().TransInt16(content,16));
                ///读取提升机状态-end
                //提升机处于运行状态,将标记置为true
                if (liftProtocol.getRunning()) {
                    liftProtocol.setPakMk(true);
                }
                //提升机处于未运行、就绪、标记true、有任务号
                if (!liftProtocol.getRunning()
                        && liftProtocol.getPakMk()
                        && liftProtocol.getTaskNo() != 0) {
                    //还有未完成的命令
                    executeWork(liftProtocol.getTaskNo());
                }
                //将提升机状态保存至数据库
                BasLiftService liftService = SpringUtils.getBean(BasLiftService.class);
@@ -264,6 +273,9 @@
            }
            for (int i = 0; i < 5; i++) {
                if (command.getRun().intValue() == 4 || command.getRun().intValue() == 5) {
                    break;//系统复位和链条停止转动不需要重发
                }
                readStatus();//重新读取状态
                if (liftProtocol.getRunning()) {
                    break;
@@ -281,7 +293,7 @@
            }
            return true;
        } else {
            OutputQueue.LIFT.offer(MessageFormat.format("【{0}】写入提升机plc数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
            OutputQueue.LIFT.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());
            return false;
        }