|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | public class LiftThread implements  Runnable, ThreadHandler { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private ModbusTcpNet modbusTcpNet; | 
|---|
|  |  |  | private SiemensS7Net siemensS7Net; | 
|---|
|  |  |  | private LiftSlave slave; | 
|---|
|  |  |  | private LiftProtocol liftProtocol; | 
|---|
|  |  |  | private RedisUtil redisUtil; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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())); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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() { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } 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() { | 
|---|
|  |  |  | 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(); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //----------读取提升机状态----------- | 
|---|
|  |  |  | //获取数据 | 
|---|
|  |  |  | 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())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //                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())); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } 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(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | command.setLiftNo(slave.getId().shortValue()); | 
|---|
|  |  |  | short[] array = getCommandArr(command);//获取命令报文 | 
|---|
|  |  |  | //        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; | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //获取命令报文 | 
|---|