cpT
2 天以前 4bac95fc34591bc3d61d6192c457052275ae4298
#改造
3个文件已修改
105 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/enums/RgvStatusType.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/RgvThread.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1768,6 +1768,27 @@
                                    sign=true;
                                }
                            }
                            if (sign){
                                for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
                                    if (rgvStn.getStaNo().equals(staList.get(0))) {
                                        TaskWrk taskWrk = deviceDetection(rgvStn);
                                        if (taskWrk != null) {
                                            Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
                                            for (RgvSlave.RgvStn rgvSuper : rgvSlave.getRgvSuperSta()){
                                                if (rgvSuper.getStaNo().equals(outStaNo)){
                                                    System.out.println("运行就近跳过后因最远再次执行==="+rgvSlave.getId()+"===");
                                                    sign=false;
                                                    break;
                                                }
                                            }
                                        } else {
                                            return;
                                        }
                                        break;
                                    }
                                }
                            }
                        }
@@ -1847,9 +1868,7 @@
                                }
                            }
                        }
                        if (!sign) {
                            //  半边区域内放货任务
                        if (!sign && staList.size()>1) {
                            for (Integer staNoNow : rangeListOther) {
                                for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
                                    if (rgvStn.getStaNo().equals(staNoNow)) {
@@ -1877,6 +1896,36 @@
                                    break;
                                }
                            }
                        }else if (!sign && staList.size()==1){
                            for (Integer staNoNow : rangeList) {
                                for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
                                    if (rgvStn.getStaNo().equals(staNoNow)) {
                                        TaskWrk taskWrk = deviceDetection(rgvStn);
                                        if (taskWrk != null) {
                                            Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
                                            for (RgvSlave.RgvStn rgvSuper : rgvSlave.getRgvSuperSta()){
                                                if (rgvSuper.getStaNo().equals(outStaNo)){
                                                    System.out.println("因最远执行半边区域内放货任务==="+rgvSlave.getId()+"===");
                                                    BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
                                                    if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
                                                        sign = taskGenerate(rgvSlave, rgvStn, 0);
                                                    }
                                                    break;
                                                }
                                            }
                                        }
                                        break;
                                    }
                                    if (sign) {
                                        break;
                                    }
                                }
                                if (sign) {
                                    break;
                                }
                            }
                        }
                    } else {
                        //可用区域就近取货
src/main/java/com/zy/core/enums/RgvStatusType.java
@@ -13,6 +13,7 @@
    FETCHWAITING(91, "取货任务完成等待WCS确认"),
    SOS99(99, "报警99"),
    OTHER(100, "其它100"),
    MAN(110, "作业启动中"),
    ROAM(100000, "漫游")
    ;
src/main/java/com/zy/core/thread/RgvThread.java
@@ -66,6 +66,7 @@
    private boolean connectRgv = false;
    private boolean delRgvTask = false;
    private short wrkSign = 0;
    public RgvThread(RgvSlave slave) {
        this.slave = slave;
@@ -140,7 +141,7 @@
                    continue;
                }
                Thread.sleep(20);
//                System.out.println("读线程"+ slave.getId());
//                System.out.println("读线程,小车号"+ slave.getId()+"时间戳:"+System.currentTimeMillis());
                readStatus();
@@ -179,10 +180,12 @@
                    delRgvTask = false;
                    continue;
                }
                Thread.sleep(40);
                Thread.sleep(50L);
                OperateResultExOne<byte[]> result = siemensNet.Read("DB100.12", (short) 1);
                boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, 0, 1);
                if (status[0]){
                    Thread.sleep(500L);
                    OperateResult result4 = siemensNet.Write("DB100.12.0", false);
                }
            } catch (Exception e) {
@@ -300,7 +303,7 @@
                write(issued);
                rgvTaskProtocol.setAvoid(0);
                Thread.sleep(200);
//                Thread.sleep(200);
                RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
            } catch (Exception e) {
@@ -333,13 +336,13 @@
//                System.out.println(JSON.toJSON(rgvRun));
                // 休眠 1 秒
                if (System.currentTimeMillis() - rgvRun.currentTimeMilliOld > 1000) {
                    rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
                if (System.currentTimeMillis() - rgvRun.currentTimeMilliOld > 100) {
                    rgvRun.currentTimeMilliOld = System.currentTimeMillis()+10;
                } else {
                    continue;
                }
                if (!deviceDetection()) {
                    rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
                    rgvRun.currentTimeMilliOld = System.currentTimeMillis()+10;
                    rgvRun.setRgvNo(slave.getOtherId());
                    RgvRunCache.updateRgvStatus(rgvRun);
                    if (!errorRgv.equals("无")){
@@ -356,20 +359,20 @@
                    rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
                }
                if (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)){
                    rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
                    rgvRun.currentTimeMilliOld = System.currentTimeMillis()+10;
                    rgvRun.setRgvNo(slave.getOtherId());
                    RgvRunCache.updateRgvStatus(rgvRun);
                    continue;
                }
                if (rgvProtocol.getLoaded() == -1){
                    rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
                    rgvRun.currentTimeMilliOld = System.currentTimeMillis()+10;
                    rgvRun.setRgvNo(slave.getOtherId());
                    RgvRunCache.updateRgvStatus(rgvRun);
                    RgvErrCache.updateRgvErr(slave.getId(),"小车探物物状态异常");
                    continue;
                }
                if (rgvTaskProtocol.getAvoid() != 0) {
                    rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
                    rgvRun.currentTimeMilliOld = System.currentTimeMillis()+10;
                    rgvRun.setRgvNo(slave.getOtherId());
                    RgvRunCache.updateRgvStatus(rgvRun);
                    continue;
@@ -457,7 +460,7 @@
                        }
                    }
                }
                rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
                rgvRun.currentTimeMilliOld = System.currentTimeMillis()+10;
                rgvRun.setRgvNo(slave.getOtherId());
                RgvRunCache.updateRgvStatus(rgvRun);
            } catch (Exception e) {
@@ -469,7 +472,7 @@
//                    log.error("e2:"+e2.getMessage());
                }
                rgvRun = RgvRunCache.getRgvRun();
                rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
                rgvRun.currentTimeMilliOld = System.currentTimeMillis()+10;
                rgvRun.setRgvNo(slave.getOtherId());
                RgvRunCache.updateRgvStatus(rgvRun);
                continue;
@@ -1087,6 +1090,16 @@
                }
                rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 8));
//                rgvProtocol.setStatus((short)1);
                //作业启动中  解决任务下发后小车状态未更新,小车状态不及时
                if (this.wrkSign == 1 && rgvProtocol.getStatus()!=(short)1){
                    this.wrkSign = 0;
                }
                if (this.wrkSign == 1){
                    rgvProtocol.setStatus((short)110);
                }
                rgvProtocol.setTaskNo((long)siemensNet.getByteTransform().TransInt32(result.Content, 10));
                rgvProtocol.setRgvNo((int)siemensNet.getByteTransform().TransInt16(result.Content, 14));
@@ -1106,7 +1119,10 @@
                rgvProtocol.setErr5(status[12]);
                rgvProtocol.setErr6(status[13]);
//                System.out.println("读线程"+ slave.getId()+"---"+JSON.toJSONString(rgvProtocol));
//                System.out.println("读线程,小车号"+ slave.getId()+"时间戳:"+System.currentTimeMillis()+"小车数据:"+JSON.toJSONString(rgvProtocol));
                if (rgvProtocol.getRgvNo()==1){
                    log.info("读线程,小车号"+ slave.getId()+"时间戳:"+System.currentTimeMillis()+"小车数据:"+JSON.toJSONString(rgvProtocol));
                }
                OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功", DateUtils.convert(new Date()), slave.getId()));
//                // 工位1复位信号
//                if (rgvProtocol.getStatusType().equals(RgvStatusType.WAITING)
@@ -1198,9 +1214,8 @@
        }
//        convertRow(command);
//        taskProtocol.setRgvNo(slave.getId());
        Long[] array = new Long[11];
//        Long[] array = new Long[11];
        OperateResult result41 = siemensNet.Write("DB100.12.0", false);
//        array[0] = taskProtocol.getAckFinish1();
//        array[1] = taskProtocol.getTaskNo();
//        array[2] = taskProtocol.getTaskMode();
@@ -1212,8 +1227,12 @@
        OperateResult result1 = siemensNet.Write("DB100.4", (short) taskStatus);
        OperateResult result2 = siemensNet.Write("DB100.6", taskProtocol.getTaskNo().intValue());
        OperateResult result3 = siemensNet.Write("DB100.10", taskProtocol.isDirection()? (short) 1 :  (short) 2); // 执行方向(面朝轨道 定位值左小右大)    true:左   false:右
        Thread.sleep(20L);
        this.wrkSign = 1;
        OperateResult result4 = siemensNet.Write("DB100.12.0", true);
        log.info("任务下发线程,小车号"+ slave.getId()+"时间戳:"+System.currentTimeMillis());
//        if (taskProtocol.getAckFinish1() == 0) {
//            short commandFinish = 3;  //工位1、2任务同时写入
//            Thread.sleep(100L);
@@ -1241,6 +1260,7 @@
        } catch (Exception ignore) {
        }
        readStatus();
        if (result != null && result.IsSuccess) {
//            Thread.sleep(50);
//            this.readStatus();
@@ -1269,6 +1289,7 @@
        OperateResult result1 = siemensNet.Write("DB100.4", (short) 0);
        OperateResult result2 = siemensNet.Write("DB100.6", (int) 0);
        OperateResult result3 = siemensNet.Write("DB100.10", (short) 0); // 执行方向(面朝轨道 定位值左小右大)    true:左   false:右
        log.info("任务完成下发线程,小车号"+ slave.getId()+"时间戳:"+System.currentTimeMillis());
        try {
            // 日志记录