自动化立体仓库 - WCS系统
Junjie
2023-07-29 21eac69df8b18ef44ab267a4e2efe714f985d8d9
src/main/java/com/zy/core/thread/LiftThread.java
@@ -4,15 +4,19 @@
import HslCommunication.Core.Types.OperateResult;
import HslCommunication.Core.Types.OperateResultExOne;
import HslCommunication.ModBus.ModbusTcpNet;
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.alibaba.fastjson.JSON;
import com.core.common.DateUtils;
import com.core.common.RadixTools;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.BasLift;
import com.zy.asrs.entity.BasLiftOpt;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.service.BasLiftOptService;
import com.zy.asrs.service.BasLiftService;
import com.zy.asrs.utils.Utils;
import com.zy.common.utils.CommonUtils;
import com.zy.common.utils.RedisUtil;
import com.zy.core.DevpThread;
@@ -42,7 +46,7 @@
@Slf4j
public class LiftThread implements  Runnable, ThreadHandler {
    private ModbusTcpNet modbusTcpNet;
    private SiemensS7Net siemensS7Net;
    private LiftSlave slave;
    private LiftProtocol liftProtocol;
    private RedisUtil redisUtil;
@@ -65,7 +69,7 @@
                switch (step) {
                    // 读数据
                    case 1:
                        readStatus();
                        read();
                        break;
                    // 写入数据
                    case 2:
@@ -89,10 +93,8 @@
    public boolean connect() {
        boolean result = false;
        //-------------------------提升机连接方法------------------------//
        modbusTcpNet = new ModbusTcpNet(slave.getIp(), slave.getPort(), (byte) 0x02);
        // 当你需要指定格式的数据解析时,就需要设置下面的这个信息
        modbusTcpNet.setDataFormat(DataFormat.ABCD);
        OperateResult connect = modbusTcpNet.ConnectServer();
        siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp());
        OperateResult connect = siemensS7Net.ConnectServer();
        if(connect.IsSuccess){
            result = true;
            OutputQueue.CRN.offer(MessageFormat.format( "【{0}】提升机plc连接成功 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
@@ -101,19 +103,40 @@
            OutputQueue.CRN.offer(MessageFormat.format("【{0}】提升机plc连接失败!!! ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
            log.error("提升机plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
        }
        modbusTcpNet.ConnectClose();
        siemensS7Net.ConnectClose();
        //-------------------------提升机连接方法------------------------//
        return result;
    }
    @Override
    public void close() {
        modbusTcpNet.ConnectClose();
        siemensS7Net.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()));
        }
    }
    private void readStatus() {
        try {
            OperateResultExOne<byte[]> result = modbusTcpNet.Read("41117", (short) 50);
            OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.200", (short) 24);
            if (result.IsSuccess) {
                if (null == liftProtocol) {
                    liftProtocol = new LiftProtocol();
@@ -122,110 +145,97 @@
                //----------读取提升机状态-----------
                //获取数据
                byte[] content = result.Content;
                //提升机锁定
                liftProtocol.setLiftLock(CommonUtils.shortToBoolean(modbusTcpNet.getByteTransform().TransInt16(content, 0)));
                //位置到达反馈
                liftProtocol.setPositionArrivalFeedback(modbusTcpNet.getByteTransform().TransInt16(content,2));
                byte b1 = modbusTcpNet.getByteTransform().TransByte(content, 5);
                byte b2 = modbusTcpNet.getByteTransform().TransByte(content, 4);
                int[] datas1 = CommonUtils.byteToBits(b1);
                int[] datas2 = CommonUtils.byteToBits(b2);
                //准备就绪
                liftProtocol.setReady(CommonUtils.intToBoolean(datas1[0]));
                //运行中
                liftProtocol.setRunning(CommonUtils.intToBoolean(datas1[1]));
                //联机/单机
                liftProtocol.setMode(CommonUtils.intToBoolean(datas1[2]));
                //输送线前端光电有货
                liftProtocol.setLineFrontHasStock(CommonUtils.intToBoolean(datas1[3]));
                //输送线正转反馈
                liftProtocol.setForwardRotationFeedback(CommonUtils.intToBoolean(datas1[4]));
                //输送线反转反馈
                liftProtocol.setReverseFeedback(CommonUtils.intToBoolean(datas1[5]));
                //输送线电机过载
                liftProtocol.setMotorOverload(CommonUtils.intToBoolean(datas1[6]));
                //输送线末端光电有货
                liftProtocol.setLineEndHasStock(CommonUtils.intToBoolean(datas1[7]));
                //进输送线卡托盘报警
                liftProtocol.setInConveyLineCardTrayAlarm(CommonUtils.intToBoolean(datas2[0]));
                //出输送线卡托盘报警
                liftProtocol.setOutConveyLineCardTrayAlarm(CommonUtils.intToBoolean(datas2[1]));
                //平台位置偏差报警
                liftProtocol.setPlatPositionDeviationAlarm(CommonUtils.intToBoolean(datas2[2]));
                //平台扭矩偏差报警
                liftProtocol.setPlatTorqueDeviationAlarm(CommonUtils.intToBoolean(datas2[3]));
                //平台四向车检测
                liftProtocol.setPlatShuttleCheck(CommonUtils.intToBoolean(datas2[4]));
                //未就绪状态
                liftProtocol.setNotReady(modbusTcpNet.getByteTransform().TransInt16(content,6));
                //伺服1错误
                liftProtocol.setServoError1(modbusTcpNet.getByteTransform().TransInt16(content,8));
                //伺服2错误
                liftProtocol.setServoError2(modbusTcpNet.getByteTransform().TransInt16(content,10));
                //伺服3错误
                liftProtocol.setServoError3(modbusTcpNet.getByteTransform().TransInt16(content,12));
                //伺服4错误
                liftProtocol.setServoError4(modbusTcpNet.getByteTransform().TransInt16(content,14));
                //提升机实际速度反馈
                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);
                BasLift basLift = liftService.selectById(liftProtocol.getLiftNo());
                if (basLift == null) {
                    basLift = new BasLift();
                    //提升机号
                    basLift.setLiftNo(slave.getId());
                    liftService.insert(basLift);
                }
                basLift.setStatus(liftProtocol.getProtocolStatus());
                basLift.setWrkNo(liftProtocol.getTaskNo().intValue());
                basLift.setUpdateTime(new Date());
                basLift.setPakMk(liftProtocol.getPakMk());
                basLift.setLiftLock(liftProtocol.getLiftLock());
                basLift.setPositionArrivalFeedback(liftProtocol.getPositionArrivalFeedback().intValue());
                basLift.setReady(liftProtocol.getReady());
                basLift.setRunning(liftProtocol.getRunning());
                basLift.setMode(liftProtocol.getMode());
                basLift.setLineFrontHasStock(liftProtocol.getLineFrontHasStock());
                basLift.setForwardRotationFeedback(liftProtocol.getForwardRotationFeedback());
                basLift.setReverseFeedback(liftProtocol.getReverseFeedback());
                basLift.setMotorOverload(liftProtocol.getMotorOverload());
                basLift.setLineEndHasStock(liftProtocol.getLineEndHasStock());
                basLift.setInConveyLineCardTrayAlarm(liftProtocol.getInConveyLineCardTrayAlarm());
                basLift.setOutConveyLineCardTrayAlarm(liftProtocol.getOutConveyLineCardTrayAlarm());
                basLift.setPlatPositionDeviationAlarm(liftProtocol.getPlatPositionDeviationAlarm());
                basLift.setPlatTorqueDeviationAlarm(liftProtocol.getPlatTorqueDeviationAlarm());
                basLift.setPlatShuttleCheck(liftProtocol.getPlatShuttleCheck());
                basLift.setNotReady(liftProtocol.getNotReady().intValue());
                basLift.setServoError1(liftProtocol.getServoError1().intValue());
                basLift.setServoError2(liftProtocol.getServoError2().intValue());
                basLift.setServoError3(liftProtocol.getServoError3().intValue());
                basLift.setServoError4(liftProtocol.getServoError4().intValue());
                basLift.setLiftActualSpeed(liftProtocol.getLiftActualSpeed().intValue());
                if (liftService.updateById(basLift)) {
                    OutputQueue.LIFT.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
//                    log.info(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
                }
//                byte[] content = result.Content;
//                //提升机锁定
//                liftProtocol.setLiftLock(CommonUtils.shortToBoolean(modbusTcpNet.getByteTransform().TransInt16(content, 0)));
//                //位置到达反馈
//                liftProtocol.setPositionArrivalFeedback(modbusTcpNet.getByteTransform().TransInt16(content,2));
//
//
//                byte b1 = modbusTcpNet.getByteTransform().TransByte(content, 5);
//                byte b2 = modbusTcpNet.getByteTransform().TransByte(content, 4);
//                int[] datas1 = CommonUtils.byteToBits(b1);
//                int[] datas2 = CommonUtils.byteToBits(b2);
//                //准备就绪
//                liftProtocol.setReady(CommonUtils.intToBoolean(datas1[0]));
//                //运行中
//                liftProtocol.setRunning(CommonUtils.intToBoolean(datas1[1]));
//                //联机/单机
//                liftProtocol.setMode(CommonUtils.intToBoolean(datas1[2]));
//                //输送线前端光电有货
//                liftProtocol.setLineFrontHasStock(CommonUtils.intToBoolean(datas1[3]));
//                //输送线正转反馈
//                liftProtocol.setForwardRotationFeedback(CommonUtils.intToBoolean(datas1[4]));
//                //输送线反转反馈
//                liftProtocol.setReverseFeedback(CommonUtils.intToBoolean(datas1[5]));
//                //输送线电机过载
//                liftProtocol.setMotorOverload(CommonUtils.intToBoolean(datas1[6]));
//                //输送线末端光电有货
//                liftProtocol.setLineEndHasStock(CommonUtils.intToBoolean(datas1[7]));
//                //进输送线卡托盘报警
//                liftProtocol.setInConveyLineCardTrayAlarm(CommonUtils.intToBoolean(datas2[0]));
//                //出输送线卡托盘报警
//                liftProtocol.setOutConveyLineCardTrayAlarm(CommonUtils.intToBoolean(datas2[1]));
//                //平台位置偏差报警
//                liftProtocol.setPlatPositionDeviationAlarm(CommonUtils.intToBoolean(datas2[2]));
//                //平台扭矩偏差报警
//                liftProtocol.setPlatTorqueDeviationAlarm(CommonUtils.intToBoolean(datas2[3]));
//                //平台四向车检测
//                liftProtocol.setPlatShuttleCheck(CommonUtils.intToBoolean(datas2[4]));
//
//                //未就绪状态
//                liftProtocol.setNotReady(modbusTcpNet.getByteTransform().TransInt16(content,6));
//                //伺服1错误
//                liftProtocol.setServoError1(modbusTcpNet.getByteTransform().TransInt16(content,8));
//                //伺服2错误
//                liftProtocol.setServoError2(modbusTcpNet.getByteTransform().TransInt16(content,10));
//                //伺服3错误
//                liftProtocol.setServoError3(modbusTcpNet.getByteTransform().TransInt16(content,12));
//                //伺服4错误
//                liftProtocol.setServoError4(modbusTcpNet.getByteTransform().TransInt16(content,14));
//                //提升机实际速度反馈
//                liftProtocol.setLiftActualSpeed(modbusTcpNet.getByteTransform().TransInt16(content,16));
//
//                ///读取提升机状态-end
//
//                //将提升机状态保存至数据库
//                BasLiftService liftService = SpringUtils.getBean(BasLiftService.class);
//                BasLift basLift = liftService.selectById(liftProtocol.getLiftNo());
//                if (basLift == null) {
//                    basLift = new BasLift();
//                    //提升机号
//                    basLift.setLiftNo(slave.getId());
//                    liftService.insert(basLift);
//                }
//                basLift.setStatus(liftProtocol.getProtocolStatus());
//                basLift.setWrkNo(liftProtocol.getTaskNo().intValue());
//                basLift.setUpdateTime(new Date());
//                basLift.setPakMk(liftProtocol.getPakMk());
//                basLift.setLiftLock(liftProtocol.getLiftLock());
//                basLift.setPositionArrivalFeedback(liftProtocol.getPositionArrivalFeedback().intValue());
//                basLift.setReady(liftProtocol.getReady());
//                basLift.setRunning(liftProtocol.getRunning());
//                basLift.setMode(liftProtocol.getMode());
//                basLift.setLineFrontHasStock(liftProtocol.getLineFrontHasStock());
//                basLift.setForwardRotationFeedback(liftProtocol.getForwardRotationFeedback());
//                basLift.setReverseFeedback(liftProtocol.getReverseFeedback());
//                basLift.setMotorOverload(liftProtocol.getMotorOverload());
//                basLift.setLineEndHasStock(liftProtocol.getLineEndHasStock());
//                basLift.setInConveyLineCardTrayAlarm(liftProtocol.getInConveyLineCardTrayAlarm());
//                basLift.setOutConveyLineCardTrayAlarm(liftProtocol.getOutConveyLineCardTrayAlarm());
//                basLift.setPlatPositionDeviationAlarm(liftProtocol.getPlatPositionDeviationAlarm());
//                basLift.setPlatTorqueDeviationAlarm(liftProtocol.getPlatTorqueDeviationAlarm());
//                basLift.setPlatShuttleCheck(liftProtocol.getPlatShuttleCheck());
//                basLift.setNotReady(liftProtocol.getNotReady().intValue());
//                basLift.setServoError1(liftProtocol.getServoError1().intValue());
//                basLift.setServoError2(liftProtocol.getServoError2().intValue());
//                basLift.setServoError3(liftProtocol.getServoError3().intValue());
//                basLift.setServoError4(liftProtocol.getServoError4().intValue());
//                basLift.setLiftActualSpeed(liftProtocol.getLiftActualSpeed().intValue());
//                if (liftService.updateById(basLift)) {
//                    OutputQueue.LIFT.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
////                    log.info(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
//                }
            }else {
                OutputQueue.LIFT.offer(MessageFormat.format("【{0}】{1}提升机plc状态信息失败", DateUtils.convert(new Date()), slave.getId()));
@@ -233,7 +243,6 @@
            }
        } 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();
        }
    }
@@ -243,7 +252,57 @@
            return false;
        }
        command.setLiftNo(slave.getId().shortValue());
//        command.setLiftNo(slave.getId().shortValue());
//        short[] array = getCommandArr(command);//获取命令报文
//
//        try {
//            Thread.sleep(500);//命令下发前休眠
//        } catch (InterruptedException e) {
//            throw new RuntimeException(e);
//        }
//
//        OperateResult result = modbusTcpNet.Write("41088", array);
//        if (result != null && result.IsSuccess) {
//            News.info("提升机命令下发[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
//            OutputQueue.LIFT.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
//
//            try {
//                Thread.sleep(500);//命令下发后休眠
//            } catch (InterruptedException e) {
//                throw new RuntimeException(e);
//            }
//
//            for (int i = 0; i < 5; i++) {
//                if (command.getRun().intValue() == 4 || command.getRun().intValue() == 5) {
//                    break;//系统复位和链条停止转动不需要重发
//                }
//                readStatus();//重新读取状态
//                if (liftProtocol.getRunning()) {
//                    break;
//                }
//
//                //判断是否运行中,如不运行,重新下发命令
//                result = modbusTcpNet.Write("41088", array);
//                News.info("提升机命令下发[id:{}] >>>>> {},次数:{}", slave.getId(), JSON.toJSON(command), i);
//                OutputQueue.LIFT.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2},次数:{}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command), i));
//                try {
//                    Thread.sleep(300);//命令下发后休眠
//                } catch (InterruptedException e) {
//                    throw new RuntimeException(e);
//                }
//            }
//            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()));
//            News.error("写入提升机plc数据失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
//            return false;
//        }
        return true;
    }
    //获取命令报文
    private short[] getCommandArr(LiftCommand command) {
        // 开始任务
        short[] array = new short[30];
        //开始运行
@@ -284,23 +343,7 @@
            tmp[1] = array[1];
            array = tmp;
        }
        try {
            Thread.sleep(1000);//命令下发前休眠1s
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        OperateResult result = modbusTcpNet.Write("41088", array);;
        if (result != null && result.IsSuccess) {
            News.info("提升机命令下发[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
            OutputQueue.LIFT.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
            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()));
            News.error("写入提升机plc数据失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
            return false;
        }
        return array;
    }
    //分配任务
@@ -363,6 +406,7 @@
            return false;
        }
        WrkMastMapper wrkMastMapper = SpringUtils.getBean(WrkMastMapper.class);
        Object o = redisUtil.get("lift_wrk_no_" + wrkNo);
        if (o == null) {
            return false;
@@ -375,12 +419,50 @@
        int size = commands.size();
        LiftAssignCommand assignCommand = redisCommand.getAssignCommand();
        if (commandStep != 0) {
            //判断上一条指令是否完成
            LiftCommand command = commands.get(commandStep - 1);
            if (command.getRun().intValue() == 1) {
                //提升机升降命令
                if (command.getDistPosition().intValue() == liftProtocol.getPositionArrivalFeedback().intValue()) {
                    //提升机目标楼层和实际楼层相同,则认定命令完成
                    command.setComplete(true);
                }
            } else if (command.getRun().intValue() == 2 || command.getRun().intValue() == 3) {
                //无货正转,有货正转
                if (!liftProtocol.getForwardRotationFeedback()) {
                    //输送线正转反馈不在运行中,认定命令完成
                    command.setComplete(true);
                }
            } else if (command.getRun().intValue() == 6 || command.getRun().intValue() == 7) {
                //有货反转,无货反转
                if (!liftProtocol.getReverseFeedback()) {
                    //输送线反转反馈不在运行中,认定命令完成
                    command.setComplete(true);
                }
            } else if (command.getRun().intValue() == 4) {
                //输送线停止
                if (!liftProtocol.getForwardRotationFeedback() && !liftProtocol.getReverseFeedback()) {
                    //输送线正转反转都不在运行中,认定命令完成
                    command.setComplete(true);
                }
            }
            //任务数据保存到redis
            redisUtil.set("lift_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
            if (!command.getComplete()) {
                //上一条任务未完成,禁止下发命令
                return false;
            }
        }
        //取出命令
        LiftCommand command = commands.get(commandStep);
        if (command.getOperaStaNo() != null && command.getDevpId() != null) {
            //站点和输送线ID不为null,需要下发站点指令调度指定站点进行链条转动
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, command.getDevpId());
            StaProtocol staProtocol = devpThread.getStation().get(command.getOperaStaNo().intValue());
            staProtocol = staProtocol.clone();
            if (!staProtocol.isLiftArrival()) {//链条转动条件,需要有提升机到位信号
                liftProtocol.setPakMk(true);
                return false;
@@ -397,6 +479,24 @@
            boolean result1 = MessageQueue.offer(SlaveType.Devp, devpId, new Task(3, staProtocol));//下发命令使输送线链条运转
        }
        WrkMast wrkMast = wrkMastMapper.selectByWorkNo(wrkNo.intValue());
        if (wrkMast != null) {
            if (wrkMast.getWrkSts() == 28) {//28.提升机搬运中
                if (command.getRun().intValue() == 1 && command.getDistPosition().intValue() == LiftLevType.TWO.lev) {
                    //提升机移动且位置是到输送线楼层,需要判断站点货物是否无物,提升机是否有物
                    DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, command.getDevpId());
                    //工作档源库位楼层
                    int wrkMastLocNoLey = Utils.getLev(wrkMast.getSourceLocNo());
                    StaProtocol staProtocol = devpThread.getStation().get(Utils.levToOutInStaNo(wrkMastLocNoLey >= 2 ? wrkMastLocNoLey + 1 : wrkMastLocNoLey));//起始站点
                    //判断输送站点是否有物,只有无物情况才能继续调度提升机
                    if (staProtocol.isLoading()) {
                        //有物禁止调度
                        return false;
                    }
                }
            }
        }
        //下发命令
        if (!write(command)) {
            News.error("提升机命令下发失败,提升机号={},任务数据={}", command.getLiftNo(), JSON.toJSON(command));
@@ -411,6 +511,7 @@
            //保存数据到数据库做流水
            BasLiftOptService liftOptService = SpringUtils.getBean(BasLiftOptService.class);
            if (liftOptService != null) {
                short[] commandArr = getCommandArr(command);//获取命令报文
                BasLiftOpt opt = new BasLiftOpt(
                        redisCommand.getWrkNo().intValue(),
                        redisCommand.getLiftNo().intValue(),
@@ -418,7 +519,8 @@
                        null,
                        null,
                        null,
                        JSON.toJSONString(command)
                        JSON.toJSONString(command),
                        JSON.toJSONString(commandArr)
                );
                liftOptService.insert(opt);
            }
@@ -558,6 +660,7 @@
     * 初始化提升机
     */
    private void initLift() {
        this.connect();
        if (null == liftProtocol) {
            liftProtocol = new LiftProtocol();
        }