| | |
| | | import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol; |
| | | import com.zy.asrs.wcs.rcs.model.protocol.StaProtocol; |
| | | import com.zy.asrs.wcs.rcs.service.DeviceService; |
| | | import com.zy.asrs.wcs.rcs.thread.*; |
| | | import com.zy.asrs.wcs.rcs.thread.DevpThread; |
| | | import com.zy.asrs.wcs.rcs.thread.LedThread; |
| | | import com.zy.asrs.wcs.rcs.thread.LiftThread; |
| | | import com.zy.asrs.wcs.rcs.thread.ShuttleThread; |
| | | import com.zy.asrs.wcs.system.entity.Dict; |
| | | import com.zy.asrs.wcs.system.service.DictService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.*; |
| | | |
| | | /** |
| | |
| | | private LiftDispatcher liftDispatcher; |
| | | @Autowired |
| | | private ShuttleStandbyService shuttleStandbyService; |
| | | |
| | | |
| | | private boolean isInEnable(DevpThread devpThread, Integer staNo) { |
| | | if (staNo == null) { |
| | | return false; |
| | | } |
| | | // 获取入库站信息 |
| | | switch (staNo) { |
| | | case 1011: |
| | | case 1012: |
| | | devpThread.getStation().get(1012).isInEnable(); |
| | | break; |
| | | case 1021: |
| | | case 1022: |
| | | case 1023: |
| | | devpThread.getStation().get(1022).isInEnable(); |
| | | break; |
| | | case 1031: |
| | | case 1032: |
| | | devpThread.getStation().get(1032).isInEnable(); |
| | | break; |
| | | case 1025: |
| | | case 1026: |
| | | devpThread.getStation().get(1025).isInEnable(); |
| | | break; |
| | | case 1013: |
| | | case 1014: |
| | | case 1015: |
| | | devpThread.getStation().get(1014).isInEnable(); |
| | | break; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | private boolean isOutEnable(DevpThread devpThread, Integer staNo) { |
| | | if (staNo == null) { |
| | | return false; |
| | | } |
| | | // 获取入库站信息 |
| | | switch (staNo) { |
| | | case 1011: |
| | | case 1012: |
| | | devpThread.getStation().get(1012).isOutEnable(); |
| | | break; |
| | | case 1021: |
| | | case 1022: |
| | | case 1023: |
| | | devpThread.getStation().get(1022).isOutEnable(); |
| | | break; |
| | | case 1031: |
| | | case 1032: |
| | | devpThread.getStation().get(1032).isOutEnable(); |
| | | break; |
| | | case 1025: |
| | | case 1026: |
| | | devpThread.getStation().get(1025).isOutEnable(); |
| | | break; |
| | | case 1013: |
| | | case 1014: |
| | | case 1015: |
| | | devpThread.getStation().get(1014).isOutEnable(); |
| | | break; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 组托 |
| | |
| | | |
| | | // 判断是否满足入库条件 |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() |
| | | && staProtocol.isInEnable() |
| | | && isInEnable(devpThread, inSta.getStaNo()) |
| | | && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) |
| | | && staProtocol.isPakMk() |
| | | ) { |
| | |
| | | if (task1 != null) { |
| | | News.error("工作档已存在,工作号={}", task1.getTaskNo()); |
| | | if (staProtocol.getWorkNo().intValue() != Integer.parseInt(task1.getTaskNo())) { |
| | | devpThread.writeWorkSta(staProtocol.getSiteId(), Short.parseShort(task1.getTaskNo()), Short.parseShort(task1.getOriginSite())); |
| | | devpThread.writeWorkSta(staProtocol.getSiteId(), Short.parseShort(task1.getTaskNo()), Short.parseShort(task1.getDestSite())); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | News.info("输送线入库命令下发,任务数据={}", JSON.toJSON(task1)); |
| | | } |
| | |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | int workNo = staProtocol.getWorkNo().intValue(); |
| | | |
| | | int workNo = 0; |
| | | // 判断是否满足入库条件 |
| | | if (staProtocol.isAutoing() |
| | | && staProtocol.isLoading() |
| | | && staProtocol.isInEnable() |
| | | && (workNo >= 0) |
| | | // && staProtocol.isPakMk() |
| | | ) { |
| | | if ((staProtocol.getSiteId() == 1015 || staProtocol.getSiteId() == 1023 || staProtocol.getSiteId() == 1026 || staProtocol.getSiteId() == 1032) && |
| | | staProtocol.isAutoing() && staProtocol.isLoading()) { |
| | | workNo = staProtocol.getFinishWorkNo().intValue(); |
| | | } else if ((staProtocol.getSiteId() == 1012) && staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) { |
| | | workNo = staProtocol.getWorkNo().intValue(); |
| | | } else { |
| | | continue; |
| | | } |
| | | |
| | | Task task = taskService.getOne(new LambdaQueryWrapper<Task>() |
| | | .in(Task::getTaskSts, TaskStsType.NEW_INBOUND.sts) |
| | |
| | | News.error("更新工作档失败!!! [工作号:{}]", task.getTaskNo()); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | for (Integer staNo : staArr) { |
| | | // 获取叉车站点 |
| | | StaProtocol staProtocol = devpThread.getStation().get(staNo); |
| | | if (staProtocol == null) { continue; } |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } |
| | | if (staProtocol.getWorkNo() != 0) { |
| | | reset = false; |
| | | break; |
| | |
| | | } |
| | | } |
| | | |
| | | ProcessBuilder processBuilder = new ProcessBuilder("python", pythonScriptPath, maps, startStr, targetStr, mapDirection); |
| | | ProcessBuilder processBuilder = new ProcessBuilder("python3", pythonScriptPath, maps, startStr, targetStr, mapDirection); |
| | | processBuilder.redirectErrorStream(true); |
| | | |
| | | try { |
| | |
| | | second.add(new int[]{node.getX(), node.getY()}); |
| | | } |
| | | |
| | | ProcessBuilder processBuilder = new ProcessBuilder("python", pythonCalcSimilarity, JSON.toJSONString(first), JSON.toJSONString(second)); |
| | | ProcessBuilder processBuilder = new ProcessBuilder("python3", pythonCalcSimilarity, JSON.toJSONString(first), JSON.toJSONString(second)); |
| | | processBuilder.redirectErrorStream(true); |
| | | |
| | | Process process = processBuilder.start(); |
| | |
| | | Constructor<?> constructor = clazz.getConstructor(Device.class, RedisUtil.class); |
| | | Object instance = constructor.newInstance(device, redisUtil); |
| | | new Thread((Runnable) instance).start(); |
| | | |
| | | SlaveConnection.put(SlaveType.findInstance(type.getFlag()), device.getId().intValue(), (ThreadHandler) instance); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | |
| | | public static ArrayList<BasConveyorSta> stationList = new ArrayList<>(); |
| | | |
| | | public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{ |
| | | add(1012);add(1014);add(1015);add(1022); |
| | | add(1023);add(1025);add(1026);add(1031); |
| | | add(1012); |
| | | add(1014); |
| | | add(1015); |
| | | add(1022); |
| | | add(1023); |
| | | add(1025); |
| | | add(1026); |
| | | add(1031); |
| | | add(1032); |
| | | }}; |
| | | |
| | | |
| | | public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{ |
| | | add(1011); |
| | | add(1012); |
| | | add(1013); |
| | | add(1014); |
| | | add(1015); |
| | | add(1021); |
| | | add(1022); |
| | | add(1023); |
| | | add(1024); |
| | | add(1025); |
| | | add(1026); |
| | | add(1031); |
| | | add(1032); |
| | | }}; |
| | | |
| | | /** |
| | |
| | | |
| | | |
| | | staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*26+2)); // 工作号 |
| | | staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 26 + 4)); // 目标站 |
| | | staProtocol.setFinishWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*26+6)); //已完成工作号 |
| | | staProtocol.setBarcode(siemensS7Net.getByteTransform().TransString(result.Content,i*26+10,12, "UTF-8").trim()); //条码 |
| | | staProtocol.setWeight(siemensS7Net.getByteTransform().TransInt32(result.Content, i*26+22)); //重量 |
| | | |
| | | |
| | | // staProtocol.setWorkMode((int) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 40 + 8));// 工作模式 |
| | | staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18 + 10)); // 工作号 |
| | | staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18 + 12)); // 目标站 |
| | | //staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18 + 10)); // 工作号 |
| | | |
| | | if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { |
| | | staProtocol.setPakMk(true); |
| | |
| | | return false; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public boolean writeWorkSta(int siteId, short workNo, short staNo) { |
| | | int index = staNos1.indexOf(siteId); |
| | |
| | | array[0] = workNo; |
| | | array[1] = staNo; |
| | | |
| | | String workNoAddress = "DB83." + (index * 8 + 6); |
| | | String staNoAddress = "DB83." + (index * 8 + 4); |
| | | String workNoAddress = "DB83." + (index * 8 + 6); |
| | | OperateResult write1 = null; // 工作号 |
| | | OperateResult write2 = null; // 目标站 |
| | | |
| | |
| | | write1 = siemensS7Net.Write(workNoAddress, workNo); // 工作号 |
| | | write2 = siemensS7Net.Write(staNoAddress, staNo); |
| | | if ((write1.IsSuccess && write2.IsSuccess)) { |
| | | OperateResultExOne<byte[]> readResult = siemensS7Net.Read(staNoAddress, (short) 8); |
| | | if (readResult.IsSuccess) { |
| | | int staNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0); |
| | | int workNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 4); |
| | | if (workNo == workNo2 && staNo == staNo2) { |
| | | //任务命令写入成功 |
| | | log.info("写入输送线命令后返回成功,并且回读成功。输送线plc编号={},{},{},写入次数={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount); |
| | | return true; |
| | | } else {//返回结果是成功了,但是真实值不相同 |
| | | writeCount++; |
| | | log.error("写入输送线命令后返回成功,但是读取任务值不一致。输送线plc编号={},{},{},写入次数={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount); |
| | | } |
| | | } else { |
| | | writeCount++; |
| | | log.error("写入输送线命令后读取失败。输送线plc编号={},站点数据={},{},写入次数={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount); |
| | | } |
| | | // OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB82.14", (short) (staNos2.indexOf(siteId) * 26)); |
| | | // //OperateResultExOne<byte[]> readResult = siemensS7Net.Read(staNoAddress, (short) 8); |
| | | // if (readResult.IsSuccess) { |
| | | // int workNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 2); // 工作号 |
| | | // int staNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 4); // 目标站 |
| | | // // int staNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0); |
| | | // //int workNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0); |
| | | // if (workNo == workNo2 && staNo == staNo2) { |
| | | // //任务命令写入成功 |
| | | // log.info("写入输送线命令后返回成功,并且回读成功。输送线plc编号={},{},{},写入次数={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount); |
| | | // return true; |
| | | // } else {//返回结果是成功了,但是真实值不相同 |
| | | // writeCount++; |
| | | // log.error("写入输送线命令后返回成功,但是读取任务值不一致。输送线plc编号={},{},{},写入次数={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount); |
| | | // } |
| | | // } else { |
| | | // writeCount++; |
| | | // log.error("写入输送线命令后读取失败。输送线plc编号={},站点数据={},{},写入次数={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount); |
| | | // } |
| | | }else { |
| | | writeCount++; |
| | | } |
| | |
| | | # password: zy@123 |
| | | url: jdbc:mysql://127.0.0.1:3306/fyxcasrs?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai |
| | | username: root |
| | | password: root |
| | | password: zhangchao |
| | | # driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver |
| | | # url: jdbc:sqlserver://47.97.1.152:51433;databasename=jkasrs |
| | | # username: sa |
| | |
| | | config: |
| | | token-key: KUHSMcYQ4lePt3r6bckz0P13cBJyoonYqInThvQlUnbsFCIcCcZZAbWZ6UNFztYNYPhGdy6eyb8WdIz8FU2Cz396TyTJk3NI2rtXMHBOehRb4WWJ4MdYVVg2oWPyqRQ2 |
| | | |
| | | pythonCalcPath: D:\\path\\cpu.py |
| | | pythonCalcSimilarity: D:\\path\\similarity.py |
| | | pythonCalcPath: /Users/zhangc/workspace/zoneyang/cpu.py |
| | | pythonCalcSimilarity: /Users/zhangc/workspace/zoneyang/similarity.py |