| src/main/java/com/zy/asrs/entity/AgvTask.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/entity/WaitPakin.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/enums/RcsRetMethodEnum.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/utils/HikUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/entity/AgvTask.java
@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.enums.IdType; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.SpringUtils; import com.zy.asrs.service.BasCrnpService; @@ -345,6 +344,12 @@ @TableField("task_no") private String taskNo; /** * PDA下发任务 */ @TableField("is_PDA") private String isPDA; public String getYmd$(){ if (Cools.isEmpty(this.ymd)){ return ""; src/main/java/com/zy/asrs/entity/WaitPakin.java
@@ -32,32 +32,9 @@ /** * 仓库号 */ @ApiModelProperty(value= "规格") private String lgnum; /** * 仓库号 */ @ApiModelProperty(value= "型号") private String type; /** * 仓库号 */ @ApiModelProperty(value= "条码") private String color; /** * 仓库号 */ @ApiModelProperty(value= "批号") private String supplier; /** * 仓库号 */ @ApiModelProperty(value= "单据编号") private String warehouse; /** * 仓库号 @@ -72,22 +49,11 @@ private Double anfme; /** * 单位 */ @ApiModelProperty(value= "单位") private String altme; /** * 托盘条码 */ @ApiModelProperty(value= "托盘条码") private String zpallet; /** * 用户ID */ @ApiModelProperty(value= "客户名称") private String bname; @ApiModelProperty(value= "库位号") @TableField("loc_no") src/main/java/com/zy/asrs/enums/RcsRetMethodEnum.java
@@ -10,7 +10,7 @@ APPLY_IN_OFF_STATION("applyInOffStation", "取货离站请求"), APPLY_OFF_STATION("applyOutOffStation", "放货离站请求"), ARRIVE_ON_STATION("arriveOnStation", "到站完成"), ARRIVE_PUT_STATION("arrivePutStation", "放货到站完成"), /*ARRIVE_PUT_STATION("arrivePutStation", "放货到站完成"),*/ ARRIVE_OFF_STATION("arriveOffStation", "离站完成"), src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -173,7 +173,7 @@ && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() > 9990 && staProtocol.getWorkNo() <9998 && (staProtocol.isEmptyOutType() || staProtocol.getSiteId() == 301 || staProtocol.getSiteId() == 304) && (staProtocol.getSiteId() == 307 || staProtocol.getSiteId() == 301 || staProtocol.getSiteId() == 304) && staProtocol.isPakMk()) { News.warnNoLog("" + mark + " - 0" + " - 开始执行"); Short wrkNo = 9981; @@ -215,12 +215,6 @@ String errorMsg = "扫码失败,请重试"; MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg)); } log.error("输送线异常组托退回={}", errMsg); staProtocol.setWorkNo(wrkNo); staProtocol.setStaNo(bark); // devpThread.setPakMk(staProtocol.getSiteId(), false); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); continue; } } else { @@ -235,16 +229,6 @@ String errorMsg = "扫码失败,请重试"; MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg)); } log.error("输送线异常组托退回={}", errMsg); staProtocol.setWorkNo(wrkNo); staProtocol.setStaNo(bark); // devpThread.setPakMk(staProtocol.getSiteId(), false); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); continue; } WaitPakin waitPakin = waitPakinMapper.selectByBarcode(barcode); if (waitPakin == null){ continue; } // 判断重复工作档 @@ -291,7 +275,17 @@ SearchLocParam param = new SearchLocParam(); param.setBarcode(barcode); WaitPakin waitPakin = new WaitPakin(); List<WaitPakin> waitPakinList = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>() .eq("zpallet", param.getBarcode()) ); if (waitPakinList.isEmpty()) { param.setIoType(10); } else { param.setIoType(1); } param.setSourceStaNo(inSta.getStaNo()); param.setLocType1(locTypeDto.getLocType1()); String response = new HttpHandler.Builder() @@ -345,25 +339,19 @@ // } } else { News.error("" + mark + " - 5" + " - 请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); // staProtocol.setWorkNo((short)9992); // staProtocol.setStaNo(inSta.getBackSta().shortValue()); // devpThread.setPakMk(staProtocol.getSiteId(), false); // boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); // if (!result) { // throw new CoolException("更新plc站点信息失败"); // } staProtocol.setWorkNo((short)9992); staProtocol.setStaNo(inSta.getBackSta().shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); if (!result) { throw new CoolException("更新plc站点信息失败"); } // led 异常显示 if (ledThread != null) { String errorMsg = jsonObject.getString("msg"); MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg)); } log.error("输送线异常组托退回={}", errMsg); staProtocol.setWorkNo(wrkNo); staProtocol.setStaNo(bark); // devpThread.setPakMk(staProtocol.getSiteId(), false); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); } } catch (Exception e) { @@ -1140,11 +1128,11 @@ } else if (wrkMast.getStaNo() == 402) { ip = "172.26.4.232"; } else if (wrkMast.getStaNo() == 307) { ip = "172.26.1.231"; } else if (wrkMast.getStaNo() == 303) { ip = "172.26.1.232"; ip = "172.26.1.182"; } else if (wrkMast.getStaNo() == 301) { ip = "172.26.1.180"; } else if (wrkMast.getStaNo() == 304) { ip = "172.26.1.233"; ip = "172.26.1.181"; } SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); String newName = sf.format(new Date()) + "_" + locMast.getLocNo(); @@ -1311,7 +1299,7 @@ break; } // 双深库位且浅库位有货,则需先对浅库位进行库位移转 // 双深库位且浅库位有货,则需先对0浅库位进行库位移转 if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) { String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo()); LocMast shallowLoc = locMastService.selectById(shallowLocNo); @@ -2188,7 +2176,7 @@ // ledCommand.setTitle("并板入库"); // break; default: News.error("" + mark + " - 1" + " - 任务入出库类型错误!!![工作号:{}] [入出库类型:{}]", wrkMast.getWrkNo(), wrkMast.getIoType()); // News.error("" + mark + " - 1" + " - 任务入出库类型错误!!![工作号:{}] [入出库类型:{}]", wrkMast.getWrkNo(), wrkMast.getIoType()); break; } ledCommand.setSourceLocNo(wrkMast.getSourceLocNo()); src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -1,6 +1,7 @@ package com.zy.asrs.service.impl; import com.alibaba.excel.util.StringUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; @@ -11,6 +12,7 @@ import com.zy.core.cache.MessageQueue; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.Task; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.thread.SiemensDevpThread; import lombok.extern.slf4j.Slf4j; @@ -68,7 +70,12 @@ String slotCategory = values.getString("slotCategory"); String slotCode = values.getString("slotCode"); EntityWrapper<AgvTask> wrapper = new EntityWrapper<>(); wrapper.eq("task_no", rcsReporterTask.getRobotTaskCode().substring(0, rcsReporterTask.getRobotTaskCode().length() - 2)); // 修改后的逻辑:有"-"则去掉最后一个"-"及后面内容,没有则保持原样 String taskNo = rcsReporterTask.getRobotTaskCode(); if (taskNo.contains("-")) { taskNo = taskNo.substring(0, taskNo.lastIndexOf("-")); } wrapper.eq("task_no", taskNo); AgvTask task = agvTaskService.selectOne(wrapper); if (!Cools.isEmpty(task)) { try { @@ -100,7 +107,7 @@ rcsReturn.setData(data); } else { //出发PLC站点的扫码器扫码 boolean result = MessageQueue.offer(SlaveType.Devp, 1, new com.zy.core.model.Task(3, staProtocol)); boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol)); if (result) { log.info("入库站点={}触发扫码成功", staProtocol.getSiteId()); // 返回RCS @@ -134,7 +141,6 @@ transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setStationId(task.getStaNo()); transParent.setStartStation(task.getSourceStaNo()); transParent.setAgvCode("2");//连接器库 //08-1是空托盘转序任务 //08-2是物料转序任务 @@ -169,7 +175,26 @@ //放货完成 --》agv已经离开 case TASK_END: { if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().equals("307")) { try { Thread.sleep(5000); } catch (InterruptedException e) { throw new RuntimeException(e); } if (task.getStaNo().equals("Q-E1")){ // 更新任务状态等内部逻辑 task.setWrkSts(304L); // 301 任务下发、302 任务执行、303 任务中断、304 任务结束 task.setModiTime(new Date()); agvTaskService.updateById(task); // 返回RCS rcsReturn.setCode("SUCCESS"); rcsReturn.setMessage(""); JSONObject data = new JSONObject(); data.put("robotTaskCode", robotTaskCode); rcsReturn.setData(data); } else if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().equals("307")) { Integer sourceStaNo = Integer.valueOf(task.getStaNo()); SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); StaProtocol staProtocol = siemensDevpThread.getStation().get(sourceStaNo).clone(); @@ -190,8 +215,8 @@ if (boo) { staProtocol.setWorkNo(wrkNo);//空料架到位信号点 staProtocol.setStaNo(Short.valueOf("0")); boolean result = MessageQueue.offer(SlaveType.Devp, 1, new com.zy.core.model.Task(2, staProtocol)); log.info("AGV放货完成,给站点写9991工作号,下发任务:{},站点:{},agv任务号:{}", result, task.getStaNo(), task.getTaskNo()); boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); log.info("AGV放货完成,给站点写9997工作号,下发任务:{},站点:{},agv任务号:{}", result, task.getStaNo(), task.getTaskNo()); if (result) { // 更新任务状态等内部逻辑 task.setWrkSts(304L); // 301 任务下发、302 任务执行、303 任务中断、304 任务结束 @@ -200,6 +225,7 @@ // 返回RCS rcsReturn.setCode("SUCCESS"); rcsReturn.setMessage(""); JSONObject data = new JSONObject(); data.put("robotTaskCode", robotTaskCode); rcsReturn.setData(data); @@ -224,7 +250,6 @@ transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setStationId(task.getStaNo()); transParent.setStartStation(task.getSourceStaNo()); transParent.setAgvCode("2");//连接器库 //08-1是空托盘转序任务 //08-2是物料转序任务 @@ -299,8 +324,7 @@ TransParent transParent = new TransParent(); transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setStationId(task.getStaNo()); transParent.setStartStation(task.getSourceStaNo()); transParent.setStationId(task.getSourceStaNo()); transParent.setAgvCode("2");//连接器库 //08-1是空托盘转序任务 //08-2是物料转序任务 @@ -341,9 +365,11 @@ if (staProtocol != null && !staProtocol.isLoading() && !staProtocol.isEmptyOutType()) { staProtocol.setWorkNo((short) 0); staProtocol.setStaNo((short) 0); boolean result = MessageQueue.offer(SlaveType.Devp, 1, new com.zy.core.model.Task(2, staProtocol)); boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); log.info("AGV取货完成,给站点写0工作号,下发任务:{},站点:{},agv任务号:{}", result, task.getStaNo(), task.getTaskNo()); if (result) { task.setWrkSts(303L); agvTaskService.updateById(task); // 返回RCS rcsReturn.setCode("SUCCESS"); rcsReturn.setMessage(""); @@ -358,15 +384,12 @@ data.put("robotTaskCode", robotTaskCode); rcsReturn.setData(data); } } } else { TransParent transParent = new TransParent(); transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setStationId(task.getStaNo()); transParent.setStartStation(task.getSourceStaNo()); transParent.setStationId(task.getSourceStaNo()); transParent.setAgvCode("2");//连接器库 //08-1是空托盘转序任务 //08-2是物料转序任务 @@ -400,6 +423,7 @@ break; //AGV取货离站请求 case APPLY_IN_OFF_STATION: { //如果是立库站点直接允许离站 if (task.getSourceStaNo().equals("401") || task.getSourceStaNo().equals("402") || task.getSourceStaNo().equals("307")) { RcsTaskContinue rcsTaskContinue = new RcsTaskContinue(); @@ -428,12 +452,20 @@ } } } else { // 延迟处理,确保到站完成信号优先处理 try { Thread.sleep(5000); // 睡眠5秒 } catch (InterruptedException e) { Thread.currentThread().interrupt(); } //如果是工位需要像mes请求离站 TransParent transParent = new TransParent(); transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setStationId(task.getStaNo()); transParent.setStartStation(task.getSourceStaNo()); transParent.setStationId(values.getString("slotName")); transParent.setAgvCode("2");//连接器库 //08-1是空托盘转序任务 //08-2是物料转序任务 @@ -467,7 +499,7 @@ //AGV放货离站请求 case APPLY_OFF_STATION: { //如果是立库站点直接允许离站 if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().equals("307")) { if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().equals("307") || task.getTaskType().equals("AGV补空料架")) { RcsTaskContinue rcsTaskContinue = new RcsTaskContinue(); rcsTaskContinue.setRobotTaskCode(task.getTaskNo() + "-" + (task.getCtnType() - 1)); rcsTaskContinue.setTriggerType("TASK"); @@ -494,12 +526,19 @@ } } } else { // 延迟处理,确保到站完成信号优先处理 try { Thread.sleep(5000); // 睡眠5秒 } catch (InterruptedException e) { Thread.currentThread().interrupt(); } //如果是工位需要像mes请求离站 TransParent transParent = new TransParent(); transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setStationId(task.getStaNo()); transParent.setStartStation(task.getSourceStaNo()); transParent.setStationId(values.getString("slotName")); transParent.setAgvCode("2");//连接器库 //08-1是空托盘转序任务 //08-2是物料转序任务 @@ -533,7 +572,7 @@ } //到站完成 case ARRIVE_ON_STATION: { if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().equals("307")) { if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || values.getString("slotName").equals("307")) { // 返回RCS rcsReturn.setCode("SUCCESS"); rcsReturn.setMessage(""); @@ -544,53 +583,7 @@ TransParent transParent = new TransParent(); transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setStationId(task.getStaNo()); transParent.setStartStation(task.getSourceStaNo()); transParent.setAgvCode("2");//连接器库 //08-1是空托盘转序任务 //08-2是物料转序任务 if (task.getTaskType().equals("ZX-AGV-08-1")) { transParent.setTransType("08-1"); } else if (task.getTaskType().equals("ZX-AGV-08-2")) { transParent.setTransType("08-2"); } else if (task.getTaskType().equals("PP-AGV")) { transParent.setTransType("10"); } else if (task.getTaskType().equals("ZP-AGV")) { transParent.setTransType("11"); } int i = AGVArrivalCompletedFit(transParent); if (i == 1) { rcsReturn.setCode("SUCCESS"); rcsReturn.setMessage(""); JSONObject data = new JSONObject(); data.put("robotTaskCode", robotTaskCode); rcsReturn.setData(data); } else { // 返回RCS rcsReturn.setCode("Err_Internal"); rcsReturn.setMessage(""); JSONObject data = new JSONObject(); data.put("robotTaskCode", robotTaskCode); rcsReturn.setData(data); } } break; } //到站完成 case ARRIVE_PUT_STATION: { if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().equals("307")) { // 返回RCS rcsReturn.setCode("SUCCESS"); rcsReturn.setMessage(""); JSONObject data = new JSONObject(); data.put("robotTaskCode", robotTaskCode); rcsReturn.setData(data); } else { TransParent transParent = new TransParent(); transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1)); transParent.setStationId(task.getStaNo()); transParent.setStartStation(task.getSourceStaNo()); transParent.setStationId(values.getString("slotName")); transParent.setAgvCode("2");//连接器库 //08-1是空托盘转序任务 //08-2是物料转序任务 @@ -781,4 +774,25 @@ return 0; } public void agvPause(StaProtocol staProtocol){ if (staProtocol.isHighError()) { String url = HIK_URL + "/api/robot/controller/zone/pause"; try { System.out.println("超高报警"); JSONObject params = null; params.put("zoneCode", "GK307"); params.put("mapCode", "BB"); params.put("invoke", "FREEZE"); String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(params)); JSONObject jsonObject = JSON.parseObject(response); if (!StringUtils.isEmpty(response) && (jsonObject.getString("code").equals("SUCCESS") || jsonObject.getInteger("code") == 200)) { System.out.println("暂停成功"); } } catch (Exception e) { throw new RuntimeException(e); } } } } src/main/java/com/zy/common/utils/HikUtils.java
@@ -15,6 +15,18 @@ public void startPic(String ip, String filename) { try { if (hikUrl == null || "".equals(hikUrl)) { News.error("hikUrl配置为空,无法进行拍摄"); return; } if (ip == null || "".equals(ip)) { News.error("IP地址为空,无法进行拍摄"); return; } if (filename == null || "".equals(filename)) { News.error("文件名为空,无法进行拍摄"); return; } HashMap<String, Object> data = new HashMap<>(); data.put("ip", ip); data.put("filename", filename); @@ -25,13 +37,23 @@ .setJson(JSON.toJSONString(data)) .build() .doPost(); if (response == null || "".equals(response)) { News.error("请求接口失败,返回值为空"); return; } JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { if (jsonObject == null) { News.error("解析响应失败,返回值不是有效的JSON"); return; } Boolean success = jsonObject.getBoolean("success"); if (success != null && success) { News.error("请求接口成功!!!url:{};request:{};response:{}", hikUrl + "/capture", JSON.toJSONString(data), response); } else { News.error("请求接口失败!!!url:{};request:{};response:{}", hikUrl + "/capture", JSON.toJSONString(data), response); } } catch (Exception e) { News.error("拍摄失败:{}", e.getMessage()); e.printStackTrace(); } } src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -13,6 +13,7 @@ import com.zy.asrs.entity.DeviceDataLog; import com.zy.asrs.service.BasDevpService; import com.zy.asrs.service.DeviceDataLogService; import com.zy.asrs.service.impl.RcsServiceImpl; import com.zy.common.utils.News; import com.zy.core.DevpThread; import com.zy.core.cache.MessageQueue; @@ -250,6 +251,9 @@ staProtocol1.setRightError(status1[4]); staProtocol1.setWeightError(status1[5]); staProtocol1.setBarcodeError(status1[6]); RcsServiceImpl rcsService = new RcsServiceImpl(); rcsService.agvPause(staProtocol1); } } src/main/resources/application.yml
@@ -38,8 +38,9 @@ #mes对接 mes: url: http://172.26.160.5:80/dev-api/basicmodel/WmsFit/Api/ # url: http://192.9.100.173:8088/prod-api/basicmodel/WmsFit/Api/ url: http://172.26.160.73:8080/basicmodel/WmsFit/Api/ # url: http://172.26.160.5:8080/basicmodel/WmsFit/Api/ #默认接口操作人员id defaultUserId: 30 @@ -48,22 +49,22 @@ switch: false url: http://172.26.11.98:80/rcs/rtas/ zyHikUrl: 127.0.0.1:8000 zyHikUrl: 172.26.1.189:8000 # 下位机配置 wcs-slave: # 双深 doubleDeep: true # 双深库位排号 doubleLocs: 1 doubleLocs: 3 # 左深库位排号 # doubleLocsLeft: 4,7,11,15,19,23 # 右深库位排号 doubleLocsRight: 1 doubleLocsRight: 3 # 左浅库位排号 shallowLocsLeft: 2 shallowLocsLeft: 4 # 右浅库位排号 shallowLocsRight: 2 shallowLocsRight: 4 # 一个堆垛机负责的货架排数 groupCount: 2 # 堆垛机1 @@ -80,42 +81,42 @@ crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 301 row: 2 row: 4 bay: 1 lev: 1 # 堆垛机入库站点 crnInStn[1]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 307 row: 3 row: 5 bay: 5 lev: 1 # 堆垛机入库站点 crnInStn[2]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 304 row: 3 row: 5 bay: 1 lev: 1 # 堆垛机出库站点 crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 304 row: 3 row: 5 bay: 1 lev: 1 # 堆垛机出库站点 crnOutStn[1]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 307 row: 3 row: 5 bay: 5 lev: 1 # 堆垛机出库站点 crnOutStn[2]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 301 row: 2 row: 4 bay: 1 lev: 1 # 输送线1