|  |  | 
 |  |  |     private boolean resetFlag2 = false; | 
 |  |  |  | 
 |  |  |     private boolean connectRgv = false; | 
 |  |  |     public Long currentTimeMilliConnectRgv= 0L; | 
 |  |  |  | 
 |  |  |     private boolean delRgvTask = false; | 
 |  |  |     private short wrkSign = 0; | 
 |  |  |  | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     @SuppressWarnings("InfiniteLoopStatement") | 
 |  |  |     public void run() { | 
 |  |  |         initRgv(); | 
 |  |  |         try{ | 
 |  |  |             Thread.sleep(2000); | 
 |  |  |         } catch (Exception e){ | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |         connectRgv = this.connect(); | 
 |  |  |         while(!connectRgv){ | 
 |  |  |             try { | 
 |  |  | 
 |  |  |                 log.error("rgv连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); | 
 |  |  |                 try{ | 
 |  |  |                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                     deviceErrorService.addDeviceError("rgv", slave.getId(), "rgv连接失败"+e.getMessage()); | 
 |  |  |                     deviceErrorService.addDeviceError("rgvErr", slave.getId(), "rgv连接失败"+e.getMessage()); | 
 |  |  |                 } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                 } | 
 |  |  | 
 |  |  |                 log.error("RGV数据读取线程异常!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); | 
 |  |  |                 try{ | 
 |  |  |                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                     deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV数据读取线程异常"+e.getMessage()); | 
 |  |  |                     deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV数据读取线程异常"+e.getMessage()); | 
 |  |  |                 } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                 } | 
 |  |  | 
 |  |  |                 log.error("RGV数据任务下发复位线程异常!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); | 
 |  |  |                 try{ | 
 |  |  |                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                     deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV数据任务下发复位线程异常"+e.getMessage()); | 
 |  |  |                     deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV数据任务下发复位线程异常"+e.getMessage()); | 
 |  |  |                 } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                 } | 
 |  |  | 
 |  |  | //                log.error("RGV任务下发线程异常!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); | 
 |  |  | //                try{ | 
 |  |  | //                    DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  | //                    deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV任务下发线程异常"+e.getMessage()); | 
 |  |  | //                    deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV任务下发线程异常"+e.getMessage()); | 
 |  |  | //                } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  | //                } | 
 |  |  | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             try { | 
 |  |  |                 Thread.sleep(50); | 
 |  |  |                 Thread.sleep(100); | 
 |  |  |                 rgvRun = RgvRunCache.getRgvRun(); | 
 |  |  | //                System.out.println(JSON.toJSON(rgvRun)); | 
 |  |  |  | 
 |  |  |                 // 休眠 1 秒 | 
 |  |  |                 if (System.currentTimeMillis() - rgvRun.currentTimeMilliOld > 100) { | 
 |  |  |                     rgvRun.currentTimeMilliOld = System.currentTimeMillis()+10; | 
 |  |  |                 if (System.currentTimeMillis() - rgvRun.currentTimeMilliOld > 500L) { | 
 |  |  |                     rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; | 
 |  |  |                 } else { | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 if (!deviceDetection()) { | 
 |  |  |                     rgvRun.currentTimeMilliOld = System.currentTimeMillis()+10; | 
 |  |  |                     rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; | 
 |  |  |                     rgvRun.setRgvNo(slave.getOtherId()); | 
 |  |  |                     RgvRunCache.updateRgvStatus(rgvRun); | 
 |  |  |                     if (!errorRgv.equals("无")){ | 
 |  |  | 
 |  |  |                     rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); | 
 |  |  |                 } | 
 |  |  |                 if (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)){ | 
 |  |  |                     rgvRun.currentTimeMilliOld = System.currentTimeMillis()+10; | 
 |  |  |                     rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; | 
 |  |  |                     rgvRun.setRgvNo(slave.getOtherId()); | 
 |  |  |                     RgvRunCache.updateRgvStatus(rgvRun); | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 if (rgvProtocol.getLoaded() == -1){ | 
 |  |  |                     rgvRun.currentTimeMilliOld = System.currentTimeMillis()+10; | 
 |  |  |                     rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; | 
 |  |  |                     rgvRun.setRgvNo(slave.getOtherId()); | 
 |  |  |                     RgvRunCache.updateRgvStatus(rgvRun); | 
 |  |  |                     RgvErrCache.updateRgvErr(slave.getId(),"小车探物物状态异常"); | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 if (rgvTaskProtocol.getAvoid() != 0) { | 
 |  |  |                     rgvRun.currentTimeMilliOld = System.currentTimeMillis()+10; | 
 |  |  |                     rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; | 
 |  |  |                     rgvRun.setRgvNo(slave.getOtherId()); | 
 |  |  |                     RgvRunCache.updateRgvStatus(rgvRun); | 
 |  |  |                     continue; | 
 |  |  | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 rgvRun.currentTimeMilliOld = System.currentTimeMillis()+10; | 
 |  |  |                 rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; | 
 |  |  |                 rgvRun.setRgvNo(slave.getOtherId()); | 
 |  |  |                 RgvRunCache.updateRgvStatus(rgvRun); | 
 |  |  |             } catch (Exception e) { | 
 |  |  |                 log.error("RGV任务下发线程异常!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); | 
 |  |  |                 try{ | 
 |  |  |                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                     deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV任务下发线程异常"+e.getMessage()); | 
 |  |  |                     deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV任务下发线程异常"+e.getMessage()); | 
 |  |  |                 } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                 } | 
 |  |  |                 rgvRun = RgvRunCache.getRgvRun(); | 
 |  |  |                 rgvRun.currentTimeMilliOld = System.currentTimeMillis()+10; | 
 |  |  |                 rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; | 
 |  |  |                 rgvRun.setRgvNo(slave.getOtherId()); | 
 |  |  |                 RgvRunCache.updateRgvStatus(rgvRun); | 
 |  |  |                 continue; | 
 |  |  | 
 |  |  |                                                 errorRgv = "RGV行走目标超出范围"; | 
 |  |  |                                                 try{ | 
 |  |  |                                                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                                                     deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                                                     deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                                                 } catch (Exception e2){ | 
 |  |  | //                                                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                                                 } | 
 |  |  | 
 |  |  |  | 
 |  |  |                         try{ | 
 |  |  |                             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                             deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                             deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                         } catch (Exception e2){ | 
 |  |  | //                            log.error("e2:"+e2.getMessage()); | 
 |  |  |                         } | 
 |  |  | 
 |  |  |  | 
 |  |  |                         try{ | 
 |  |  |                             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                             deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                             deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                         } catch (Exception e2){ | 
 |  |  | //                            log.error("e2:"+e2.getMessage()); | 
 |  |  |                         } | 
 |  |  | 
 |  |  |  | 
 |  |  |                             try{ | 
 |  |  |                                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                                 deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                                 deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                             } catch (Exception e2){ | 
 |  |  | //                                log.error("e2:"+e2.getMessage()); | 
 |  |  |                             } | 
 |  |  | 
 |  |  |  | 
 |  |  |                                                 try{ | 
 |  |  |                                                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                                                     deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                                                     deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                                                 } catch (Exception e2){ | 
 |  |  | //                                                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                                                 } | 
 |  |  | 
 |  |  |  | 
 |  |  |                         try{ | 
 |  |  |                             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                             deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                             deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                         } catch (Exception e2){ | 
 |  |  | //                            log.error("e2:"+e2.getMessage()); | 
 |  |  |                         } | 
 |  |  | 
 |  |  |  | 
 |  |  |                         try{ | 
 |  |  |                             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                             deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                             deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                         } catch (Exception e2){ | 
 |  |  | //                            log.error("e2:"+e2.getMessage()); | 
 |  |  |                         } | 
 |  |  | 
 |  |  |  | 
 |  |  |                             try{ | 
 |  |  |                                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                                 deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                                 deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV行走超出范围"); | 
 |  |  |                             } catch (Exception e2){ | 
 |  |  | //                                log.error("e2:"+e2.getMessage()); | 
 |  |  |                             } | 
 |  |  | 
 |  |  |             log.error("RGV异常!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); | 
 |  |  |             try{ | 
 |  |  |                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                 deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV异常"+e.getMessage()); | 
 |  |  |                 deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV异常"+e.getMessage()); | 
 |  |  |             } catch (Exception e2){ | 
 |  |  | //                log.error("e2:"+e2.getMessage()); | 
 |  |  |             } | 
 |  |  | 
 |  |  | //            OutputQueue.RGV.offer(MessageFormat.format("【{0}】RGV plc连接失败!!! ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); | 
 |  |  |             log.error("RGV plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); | 
 |  |  |  | 
 |  |  |             try{ | 
 |  |  |                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                 deviceErrorService.addDeviceError("rgv", slave.getId(), "RGVplc连接失败"); | 
 |  |  |             } catch (Exception e2){ | 
 |  |  |             if (System.currentTimeMillis()-currentTimeMilliConnectRgv>1000*60*10){ | 
 |  |  |                 try{ | 
 |  |  |                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                     deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGVplc连接失败"); | 
 |  |  |                 } catch (Exception e2){ | 
 |  |  | //                log.error("e2:"+e2.getMessage()); | 
 |  |  |                 } | 
 |  |  |                 if (currentTimeMilliConnectRgv == 0){ | 
 |  |  |                     currentTimeMilliConnectRgv = System.currentTimeMillis()-1000*60*10-1; | 
 |  |  |                 } else { | 
 |  |  |                     currentTimeMilliConnectRgv = System.currentTimeMillis(); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         initRgv(); | 
 |  |  | 
 |  |  |                 rgvProtocol.setErr4(status[11]); | 
 |  |  |                 rgvProtocol.setErr5(status[12]); | 
 |  |  |                 rgvProtocol.setErr6(status[13]); | 
 |  |  |                 rgvProtocol.setErr7(status[14]); | 
 |  |  |                 rgvProtocol.setErr8(status[15]); | 
 |  |  | //                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) | 
 |  |  | 
 |  |  |  | 
 |  |  |                         try{ | 
 |  |  |                             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                             deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV plc数据库更新失败"); | 
 |  |  |                             deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV plc数据库更新失败"); | 
 |  |  |                         } catch (Exception e2){ | 
 |  |  | //                            log.error("e2:"+e2.getMessage()); | 
 |  |  |                         } | 
 |  |  | 
 |  |  |  | 
 |  |  |                 try{ | 
 |  |  |                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                     deviceErrorService.addDeviceError("rgv", slave.getId(), "读取RGV plc状态信息失败"); | 
 |  |  |                     deviceErrorService.addDeviceError("rgvErr", slave.getId(), "读取RGV plc状态信息失败"); | 
 |  |  |                 } catch (Exception e2){ | 
 |  |  | //                    log.error("e2:"+e2.getMessage()); | 
 |  |  |                 } | 
 |  |  | 
 |  |  |  | 
 |  |  |             try{ | 
 |  |  |                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                 deviceErrorService.addDeviceError("rgv", slave.getId(), "读取RGV plc状态信息失败"); | 
 |  |  |                 deviceErrorService.addDeviceError("rgvErr", slave.getId(), "读取RGV plc状态信息失败"); | 
 |  |  |             } catch (Exception e2){ | 
 |  |  | //                log.error("e2:"+e2.getMessage()); | 
 |  |  |             } | 
 |  |  | 
 |  |  |  | 
 |  |  |             try{ | 
 |  |  |                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                 deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV写入命令为空"); | 
 |  |  |                 deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV写入命令为空"); | 
 |  |  |             } catch (Exception e2){ | 
 |  |  | //                log.error("e2:"+e2.getMessage()); | 
 |  |  |             } | 
 |  |  | 
 |  |  |         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()); | 
 |  |  |         this.wrkSign = 1; | 
 |  |  |  | 
 |  |  | //        log.info("任务下发线程,小车号"+ slave.getId()+"时间戳:"+System.currentTimeMillis()); | 
 |  |  |  | 
 |  |  | //        if (taskProtocol.getAckFinish1() == 0) { | 
 |  |  | //            short commandFinish = 3;  //工位1、2任务同时写入 | 
 |  |  | 
 |  |  |  | 
 |  |  |             try{ | 
 |  |  |                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); | 
 |  |  |                 deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV 命令下发"+JSON.toJSON(taskProtocol)); | 
 |  |  |                 deviceErrorService.addDeviceError("rgvWrite", slave.getId(), "RGV 命令下发"+JSON.toJSON(taskProtocol)); | 
 |  |  |             } catch (Exception e2){ | 
 |  |  | //                log.error("e2:"+e2.getMessage()); | 
 |  |  |             } | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 清除作业启动中 | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  |     public void setWrkSign() { | 
 |  |  |         this.wrkSign = 0; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public void setDelRgvTask() { | 
 |  |  |         delRgvTask = true; | 
 |  |  |     } |