|  |  | 
 |  |  |                         command.setDestinationPosX((short)0);     // 目标库位排 | 
 |  |  |                         command.setDestinationPosY((short)0);     // 目标库位列 | 
 |  |  |                         command.setDestinationPosZ((short)0);     // 目标库位层 | 
 |  |  |                         command.setTaskCount((short) 0); | 
 |  |  |                         write(command); | 
 |  |  |                         break; | 
 |  |  |                     default: | 
 |  |  | 
 |  |  |             crnProtocol = new CrnProtocol(); | 
 |  |  |         } | 
 |  |  |         crnProtocol.setMode((short) -1); | 
 |  |  |         crnProtocol.setCrnNo(slave.getId()); | 
 |  |  | //        crnProtocol.setTaskNo((short)0); | 
 |  |  |         crnProtocol.setStatus((short)-1); | 
 |  |  |         crnProtocol.setBay((short)0); | 
 |  |  | 
 |  |  | //        convertRow(command); | 
 |  |  |         command.setCrnNo(slave.getId()); | 
 |  |  | //        short[] array = new short[10]; | 
 |  |  |         short[] array = new short[10]; | 
 |  |  |         short[] array = new short[12]; | 
 |  |  |         array[0] = command.getAckFinish(); // 任务完成确认位 | 
 |  |  |         array[1] = command.getTaskNo();  // 任务号 | 
 |  |  |         array[2] = command.getTaskMode();  // 模式 | 
 |  |  | 
 |  |  |         array[7] = command.getDestinationPosY(); // 目标位置列号 | 
 |  |  |         array[8] = command.getDestinationPosZ(); // 目标位置层号 | 
 |  |  |         array[9] = command.getCommand(); | 
 |  |  | //        array[10] = 0;   //备用1 | 
 |  |  |  | 
 |  |  | //        boolean[] array2 = new boolean[1]; | 
 |  |  | //        array2[0] = command.isTraySize(); | 
 |  |  |         array[11] = command.getTaskCount(); // 空桶出库,告诉堆垛机取一个货还是两个货 | 
 |  |  |         OperateResult result = siemensNet.Write("DB100.0", array); | 
 |  |  | //        OperateResult result2 = siemensNet.Write("DB100.22", array2); | 
 |  |  |         News.info("堆垛机命令下发[id:{}] >>>>> {}", slave.getId(), array); | 
 |  |  |  | 
 |  |  | //        if(!result.IsSuccess || !result2.IsSuccess){ | 
 |  |  |             if(!result.IsSuccess){ | 
 |  |  |         if(!result.IsSuccess){ | 
 |  |  |             News.error("写入堆垛机plc数据失败,重新添加任务到队列 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command)); | 
 |  |  |             MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command)); | 
 |  |  |             Thread.sleep(100); | 
 |  |  | 
 |  |  |                     } | 
 |  |  |                 }while (writeCount2<5); | 
 |  |  |             } | 
 |  |  |         } else { | 
 |  |  |             BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class); | 
 |  |  |             BasCrnp basCrnp = basCrnpService.selectById(slave.getId()); | 
 |  |  |             basCrnp.setModiTime(new Date()); | 
 |  |  |             basCrnpService.updateById(basCrnp); | 
 |  |  | //            log.info("更新{}号堆垛机执行任务完成复位时间",slave.getId()); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  | //        if (command.getAckFinish() == 0) { | 
 |  |  | //            short commandFinish = 1; | 
 |  |  | //            Thread.sleep(200L); | 
 |  |  | //            result = siemensNet.Write("DB100.18", commandFinish); | 
 |  |  | //            log.info("堆垛机commandFinish下发[id:{}] >>>>> {}", slave.getId(), commandFinish); | 
 |  |  | ////            result = siemensNet.Write("DB100.22", commandFinish); | 
 |  |  | //        } | 
 |  |  |  | 
 |  |  |         try { | 
 |  |  |             // 日志记录 | 
 |  |  | 
 |  |  |             bean.insert(basCrnOpt); | 
 |  |  |         } catch (Exception ignore) {} | 
 |  |  |  | 
 |  |  |         if (result != null && result.IsSuccess) { | 
 |  |  |         if (result.IsSuccess) { | 
 |  |  |             this.readStatus(); | 
 |  |  |             News.info("堆垛机命令下发[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); | 
 |  |  |             OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); |