|  |  | 
 |  |  |  | 
 |  |  |     private boolean connectRgv = false; | 
 |  |  |     private boolean delRgvTask = false; | 
 |  |  |     private short wrkSign = 0; | 
 |  |  |  | 
 |  |  |     public RgvThread(RgvSlave slave) { | 
 |  |  |         this.slave = slave; | 
 |  |  | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 Thread.sleep(20); | 
 |  |  | //                System.out.println("读线程"+ slave.getId()); | 
 |  |  | //                System.out.println("读线程,小车号"+ slave.getId()+"时间戳:"+System.currentTimeMillis()); | 
 |  |  |  | 
 |  |  |                 readStatus(); | 
 |  |  |  | 
 |  |  | 
 |  |  |                     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) { | 
 |  |  | 
 |  |  |                 write(issued); | 
 |  |  |                 rgvTaskProtocol.setAvoid(0); | 
 |  |  |  | 
 |  |  |                 Thread.sleep(200); | 
 |  |  | //                Thread.sleep(200); | 
 |  |  |                 RgvTaskCache.updateRgvStatus(rgvTaskProtocol); | 
 |  |  |  | 
 |  |  |             } catch (Exception e) { | 
 |  |  | 
 |  |  | //                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("无")){ | 
 |  |  | 
 |  |  |                     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; | 
 |  |  | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; | 
 |  |  |                 rgvRun.currentTimeMilliOld = System.currentTimeMillis()+10; | 
 |  |  |                 rgvRun.setRgvNo(slave.getOtherId()); | 
 |  |  |                 RgvRunCache.updateRgvStatus(rgvRun); | 
 |  |  |             } catch (Exception e) { | 
 |  |  | 
 |  |  | //                    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; | 
 |  |  | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 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)); | 
 |  |  | 
 |  |  |                 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) | 
 |  |  | 
 |  |  |         } | 
 |  |  | //        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(); | 
 |  |  | 
 |  |  |         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); | 
 |  |  | 
 |  |  |         } catch (Exception ignore) { | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         readStatus(); | 
 |  |  |         if (result != null && result.IsSuccess) { | 
 |  |  | //            Thread.sleep(50); | 
 |  |  | //            this.readStatus(); | 
 |  |  | 
 |  |  |         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 { | 
 |  |  |             // 日志记录 |