| | |
| | | import com.zy.core.thread.LedThread; |
| | | import com.zy.core.thread.RgvThread; |
| | | import com.zy.core.thread.SiemensDevpThread; |
| | | import com.zy.system.entity.Config; |
| | | import com.zy.system.service.ConfigService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | |
| | | private WaitPakinMapper waitPakinMapper; |
| | | @Autowired |
| | | private LocMastService locMastService; |
| | | @Autowired |
| | | private ConfigService configService; |
| | | @Autowired |
| | | private StaDescService staDescService; |
| | | @Autowired |
| | |
| | | break; |
| | | // continue; |
| | | } |
| | | if (staProtocol2.isLoading() && staProtocol2.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) { |
| | | if (staProtocol2.isLoading() && staProtocol2.isAutoing() && staProtocol2.getWorkNo() == 9997) { |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | // continue; |
| | |
| | | break; |
| | | } |
| | | } |
| | | if (staProtocol3.isLoading() && staProtocol3.isAutoing()) { |
| | | if (staProtocol3.isLoading() && staProtocol3.isAutoing()&& staProtocol3.getWorkNo() == 9997) { |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | // continue; |
| | |
| | | rgvCommand.setRgvNo(rgvId); // RGV编号 |
| | | RgvTaskStatusType type; |
| | | Integer targetPosition = 0; |
| | | String typeNo = null; |
| | | if(wrkMastSta.getWrkSts() == 0){ |
| | | type = RgvTaskStatusType.FETCH; //取货 |
| | | targetPosition = wrkMastSta.getStaStart(); |
| | | typeNo = "2"; |
| | | }else{ |
| | | type = RgvTaskStatusType.PUT; //放货 |
| | | targetPosition = wrkMastSta.getStaEnd(); |
| | | typeNo = "3"; |
| | | } |
| | | Date now = new Date(); |
| | | if (targetPosition == 1038) { |
| | | System.out.println("小车下发命令时间:" + |
| | | new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(now)); |
| | | } |
| | | EntityWrapper<BasRgvOpt> entityWrapper = new EntityWrapper<>(); |
| | | entityWrapper.eq("rgv_no", rgvId) |
| | | .orderBy("send_time"); |
| | | BasRgvOpt basRgvOpt = basRgvOptService.selectOne(entityWrapper); |
| | | BasRgvOpt basRgvOpt = basRgvOptService.getBasRgvOpt(rgvId); |
| | | // 防止重复下发命令 |
| | | if (basRgvOpt != null) { |
| | | // 获取最新记录的 mode 对应的任务类型 |
| | | RgvTaskStatusType latestTaskStatus = RgvTaskStatusType.valueOf(basRgvOpt.getMode()); |
| | | // 判断当前命令与最新记录是否相同 |
| | | if (latestTaskStatus == type && basRgvOpt.getPosSta().equals(wrkMastSta.getWorkSta())) { |
| | | if (typeNo.equals(basRgvOpt.getMode()) && basRgvOpt.getPosSta().equals(wrkMastSta.getWorkSta())) { |
| | | // 如果最新记录的 mode 和 posSta 与当前命令相同,认为是重复命令 |
| | | log.error("命令重复下发,当前命令与最新记录相同,任务不下发!"); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | rgvCommand.setTaskNo(Math.toIntExact(wrkMastSta.getWrkNo())); // 工位工作号 |
| | | rgvCommand.setTaskStatus(type); // 工位任务模式: 取货 |
| | | rgvCommand.setTargetPosition(targetPosition); //工位目标站点 |
| | |
| | | * agv任务生成 Empty |
| | | * */ |
| | | public synchronized void agvTaskCreateR() { |
| | | |
| | | Config configAGVAUTOIN = configService.selectConfigByCode("AGVAUTOIN"); |
| | | |
| | | // 根据输送线plc遍历 |
| | | for (DevpSlave devp : slaveProperties.getDevp()) { |
| | | // 遍历出库口 |
| | |
| | | .le("row1", 26) |
| | | .orderBy("io_time",true) |
| | | ); |
| | | }else if(inStaAgv.getStaNo() < 4000){ |
| | | }else if(inStaAgv.getStaNo() < 4000 && Boolean.parseBoolean(configAGVAUTOIN.getValue())){ |
| | | locMastList = locMastService.selectList(new EntityWrapper<LocMast>() |
| | | .eq("loc_sts", "R") |
| | | .ge("row1", 28) |
| | | .le("row1", 31) |
| | | .orderBy("io_time",true)); |
| | | floorNo = 2; |
| | | }else{ |
| | | }else if(inStaAgv.getStaNo() < 5000){ |
| | | locMastList = locMastService.selectList(new EntityWrapper<LocMast>() |
| | | .eq("loc_sts", "R") |
| | | .ge("row1", 32) |
| | | .le("row1", 38) |
| | | .orderBy("io_time",true)); |
| | | floorNo = 3; |
| | | }else{ |
| | | continue; |
| | | } |
| | | |
| | | for (LocMast locMast : locMastList){ |