src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/command/LiftCommand.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/command/ShuttleCommand.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/LiftThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/ShuttleThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1701,9 +1701,6 @@ && !liftProtocol.getRunning() ) { //标记复位 liftProtocol.setPakMk(true); DevpThread devpThread = null; Integer devpId = null; for (DevpSlave devp : slaveProperties.getDevp()){ @@ -1715,6 +1712,16 @@ //将任务档标记为完成 WrkMast wrkMast = wrkMastMapper.selectByWorkNo372428(liftProtocol.getTaskNo().intValue()); if (wrkMast != null) { //判断提升机是否到达任务楼层 String locNo = wrkMast.getIoType() < 101 ? wrkMast.getLocNo() : wrkMast.getSourceLocNo(); int lev = Utils.getLev(locNo);//任务目标楼层 if (liftProtocol.getLev().intValue() != lev) { continue;//提升机没有到达目标 } //标记复位 liftProtocol.setPakMk(true); switch (wrkMast.getWrkSts().intValue()) { case 3://3.提升机搬运中 ==> 4.提升机搬运完成 //给目标站设置工作号 @@ -1758,6 +1765,9 @@ //查询是否有充电任务 WrkCharge wrkCharge = wrkChargeMapper.selectByWorkNo(liftProtocol.getTaskNo().intValue()); if (wrkCharge != null) { //标记复位 liftProtocol.setPakMk(true); switch (wrkCharge.getWrkSts().intValue()) { case 54://提升机搬运中 wrkCharge.setWrkSts(55L);//提升机搬运完成 src/main/java/com/zy/core/model/command/LiftCommand.java
@@ -80,6 +80,11 @@ */ private Short staNo; /** * 命令是否完成,默认false未完成 */ private Boolean complete = false; public Short getLiftLockShortValue() { if (liftLock == null) { return (short) 0; src/main/java/com/zy/core/model/command/ShuttleCommand.java
@@ -93,4 +93,9 @@ */ private Short commandEnd; /** * 命令是否完成,默认false未完成 */ private Boolean complete = false; } src/main/java/com/zy/core/thread/LiftThread.java
@@ -375,6 +375,43 @@ 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) { src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -739,8 +739,57 @@ if (commandStep != 0) { //判断上一条指令是否完成 ShuttleCommand command = commands.get(commandStep - 1); if (command.getDistCodeNum().intValue() == shuttleProtocol.getCurrentCode().intValue()) { //上一条指令的目标位置 if (command.getCommandWord().intValue() == 1) { //移动命令 if (command.getDistCodeNum().intValue() == shuttleProtocol.getCurrentCode().intValue()) { //上一条指令的目标位置和当前小车位置相同,则认定上一条任务完成 command.setComplete(true); } } else if (command.getCommandWord().intValue() == 2) { //托盘顶升命令 if (command.getPalletLift().intValue() == 1) { //顶升 //判断是否顶升到位 if (shuttleProtocol.getPlcOutputLift()) { //自动模式 if (assignCommand.getAuto() && shuttleProtocol.getPlcInputStatus().intValue() == 1) { //顶升到位,且托盘雷达有物,认定任务完成 command.setComplete(true); }else { //手动模式,不判断托盘雷达 //顶升到位,认定任务完成 command.setComplete(true); } } }else { //下降 //判断是否下降到位,判断托盘雷达是否无物 if (!shuttleProtocol.getPlcOutputLift() && !shuttleProtocol.getPlcOutputTransfer()) { //自动模式 if (assignCommand.getAuto() && shuttleProtocol.getPlcInputStatus().intValue() == 0) { //下降到位,且托盘雷达无物,认定任务完成 command.setComplete(true); }else { //手动模式,不判断托盘雷达 //下降到位,且托盘雷达无物,认定任务完成 command.setComplete(true); } } } } else if (command.getCommandWord().intValue() == 5) { //充电命令 //判断小车充电开关 if (shuttleProtocol.getPlcOutputCharge()) { //正常充电,认定任务完成 command.setComplete(true); } } //任务数据保存到redis redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); if (!command.getComplete()) { //上一条任务未完成,禁止下发命令 return false; } }