| src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/model/LocTypeDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/model/protocol/StaProtocol.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/thread/SiemensCrnThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -117,12 +117,16 @@ staProtocol = staProtocol.clone(); } /* 无条码 没有可入信号 有空板信号 不是满托盘 是2号输送线9995拣料任务 */ String barcode = barcodeThread.getBarcode(); if (Cools.isEmpty(barcode)) { continue; } if(!staProtocol.isInEnable()) { if (Cools.isEmpty(barcode) || !staProtocol.isInEnable() || staProtocol.isEmptyMk() || !staProtocol.isFullPlt() || (staProtocol.getWorkNo() == 9995 && devp.getId() == 2)) { continue; } @@ -169,11 +173,6 @@ } } //拣料、盘点任务,不进入新板入库方法,直接跳出 if(staProtocol.getWorkNo() == 9995){ continue; } // 退回 if (back) { // News.warn("扫码入库失败,{}入库站因{}异常,托盘已被退回", inSta.getStaNo(), errMsg); @@ -195,59 +194,9 @@ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errMsg)); } // String barcode11 = barcodeThread.getBarcode(); // if (Cools.isEmpty(barcode)){ // if (staProtocol.isAutoing()&& !staProtocol.isEmptyMk() && staProtocol.isPakMk() && staProtocol.getStamp()>=2){ // staProtocol.setStamp(0); // News.info(""+mark+" - 7"+" - 扫码失败2 ===>> {}号条码扫描器检测条码信息:{},站点:{}", inSta.getBarcode(), barcode11, inSta.getStaNo()); // staProtocol.setWorkNo((short) 9989); // staProtocol.setStaNo(inSta.getBackSta().shortValue()); // devpThread.setPakMk(staProtocol.getSiteId(), false); // MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); // // led 异常显示 // if (ledThread != null) { // String errorMsg = "扫码失败,请重试"; // MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg)); // } // continue; // } // } if (staProtocol.isAutoing() && staProtocol.isInEnable() && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() > 9000 && staProtocol.isPakMk() && !back) { //&& staProtocol.getStamp()>=2) {// && !Cools.isEmpty(barcode)) { News.warnNoLog(""+mark+" - 0"+" - 开始执行"); // if(!Cools.isEmpty(barcode) ) { //// News.info(""+mark+" - 1"+" - {}号条码扫描器检测条码信息:{}", inSta.getBarcode(), barcode); // // if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { // staProtocol.setWorkNo((short) 9999); // staProtocol.setStaNo(inSta.getBackSta().shortValue()); // devpThread.setPakMk(staProtocol.getSiteId(), false); // MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); // // News.info(""+mark+" - 2"+" - 扫码失败1 ===>> {}号条码扫描器检测条码信息:{},站点:{}", inSta.getBarcode(), barcode, inSta.getStaNo()); // // led 异常显示 // if (ledThread != null) { // String errorMsg = "扫码失败,请重试"; // MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg)); // } // continue; // } // } else { // staProtocol.setWorkNo((short) 9999); // staProtocol.setStaNo(inSta.getBackSta().shortValue()); // devpThread.setPakMk(staProtocol.getSiteId(), false); // MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); // // News.info(""+mark+" - 3"+" - 扫码失败2 ===>> {}号条码扫描器检测条码信息:{},站点:{}", inSta.getBarcode(), barcode, inSta.getStaNo()); // // led 异常显示 // if (ledThread != null) { // String errorMsg = "扫码失败,请重试"; // MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg)); // } // continue; // } && staProtocol.isPakMk() &&!Cools.isEmpty(barcode) && !back) { // 判断重复工作档 WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); //过滤判断,防止拣料再入库货物,经过入库站再入库时,被退回到退库站 @@ -495,7 +444,7 @@ StaDesc staDesc = staDescService.selectOne(wrapper); if (Cools.isEmpty(staDesc)) { News.error(""+mark+" - 2"+" - 入库路径不存在!type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo()); staProtocol.setWorkNo((short) 9989); staProtocol.setWorkNo((short) 9999); staProtocol.setStaNo(pickSta.getBackSta().shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); @@ -875,7 +824,7 @@ continue; } if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() <= 9000 && staProtocol.isInEnable() && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) { flag = true; } @@ -1337,6 +1286,7 @@ crnCommand.setDestinationPosX(sta.getRow1().shortValue()); // 目标库位排 crnCommand.setDestinationPosY(sta.getBay1().shortValue()); // 目标库位列 crnCommand.setDestinationPosZ(sta.getLev1().shortValue()); // 目标库位层 crnCommand.setCommand((short) 1); if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { News.error(""+mark+" - 3"+" - 4"+" - 堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { @@ -1373,7 +1323,6 @@ crnThread.setResetFlag(true); } else { // 获取入库待确认工作档 System.out.println("任务号"+crnProtocol.getTaskNo()); WrkMast wrkMast = wrkMastMapper.selectPakInStep3(Integer.valueOf(crnProtocol.getTaskNo())); if (wrkMast == null) { News.error(""+mark+" - 1"+" - 堆垛机处于等待确认且任务完成状态,但未找到工作档。堆垛机号={},工作号={}", crn.getId(), crnProtocol.getTaskNo()); @@ -1548,15 +1497,13 @@ ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, emptyInSta.getLed()); } if (!staProtocol.isLoading()){ continue; } // 站点条件判断 if (staProtocol.isAutoing() && staProtocol.isInEnable() && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() >= 9990 && staProtocol.getWorkNo() <= 9999) && staProtocol.getWorkNo() > 9000 && staProtocol.isPakMk() && staProtocol.isLoading() ) { News.warnNoLog(""+mark+" - 0"+" - 开始执行:空栈板初始化入库,叉车入库站放货"); src/main/java/com/zy/common/model/LocTypeDto.java
@@ -1,6 +1,5 @@ package com.zy.common.model; import com.core.exception.CoolException; import com.zy.core.model.protocol.StaProtocol; import lombok.Data; @@ -29,9 +28,11 @@ } public LocTypeDto(StaProtocol staProtocol) { if (staProtocol.isHigh() == staProtocol.isLow() == staProtocol.isMedium() == staProtocol.isMedium_high()) { throw new CoolException("plc高低检测异常"); } System.out.println("----------"+staProtocol.getSiteId()+"库位检测原始数据为:"+staProtocol.isWeight()+"------------"); // if (staProtocol.isHigh() == staProtocol.isLow() == staProtocol.isMedium() == staProtocol.isMedium_high()) { // throw new CoolException("plc高低检测异常"); // } if (staProtocol.isLow()) { this.locType1 = 1; // 低库位 } else if (staProtocol.isHigh()){ @@ -41,7 +42,12 @@ } else if (staProtocol.isMedium_high()) { this.locType1 = 4; // 高库位 } if (staProtocol.isWeight() && staProtocol.getSiteId() == 204 || staProtocol.getSiteId() == 104) { this.locType1 = 2; } else { this.locType1 = 1; } System.out.println("----------"+staProtocol.getSiteId()+"库位检测处理为数据为:"+this.locType1+"------------"); } src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -74,6 +74,8 @@ // 扫码失败 private boolean barcodeErr = false; private boolean weight = false; // 入库暂存数 private Short inQty; src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -89,12 +89,12 @@ command.setTaskNo((short) 0); // 工作号 command.setAckFinish((short) 1); // 任务完成确认位 command.setTaskMode(CrnTaskModeType.NONE); // 任务模式 command.setSourcePosX((short)0); // 源库位排 command.setSourcePosY((short)0); // 源库位列 command.setSourcePosZ((short)0); // 源库位层 command.setDestinationPosX((short)0); // 目标库位排 command.setDestinationPosY((short)0); // 目标库位列 command.setDestinationPosZ((short)0); // 目标库位层 command.setSourcePosX((short) 0); // 源库位排 command.setSourcePosY((short) 0); // 源库位列 command.setSourcePosZ((short) 0); // 源库位层 command.setDestinationPosX((short) 0); // 目标库位排 command.setDestinationPosY((short) 0); // 目标库位列 command.setDestinationPosZ((short) 0); // 目标库位层 write(command); break; default: @@ -117,14 +117,14 @@ } crnProtocol.setMode((short) -1); // crnProtocol.setTaskNo((short)0); crnProtocol.setStatus((short)-1); crnProtocol.setBay((short)0); crnProtocol.setLevel((short)0); crnProtocol.setStatus((short) -1); crnProtocol.setBay((short) 0); crnProtocol.setLevel((short) 0); crnProtocol.setForkPos((short) -1); crnProtocol.setLiftPos((short) -1); crnProtocol.setWalkPos((short)0); crnProtocol.setLoaded((short)0); crnProtocol.setAlarm((short)0); crnProtocol.setWalkPos((short) 0); crnProtocol.setLoaded((short) 0); crnProtocol.setAlarm((short) 0); crnProtocol.setxSpeed((short) 0); crnProtocol.setySpeed((short) 0); crnProtocol.setzSpeed((short) 0); @@ -141,13 +141,13 @@ siemensNet.setRack(slave.getRack().byteValue()); siemensNet.setSlot(slave.getSlot().byteValue()); OperateResult connect = siemensNet.ConnectServer(); if(connect.IsSuccess){ if (connect.IsSuccess) { result = true; OutputQueue.CRN.offer(MessageFormat.format( "【{0}】堆垛机plc连接成功 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); News.info("SiemensCrn"+" - 1"+" - 堆垛机plc连接成功 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); OutputQueue.CRN.offer(MessageFormat.format("【{0}】堆垛机plc连接成功 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); News.info("SiemensCrn" + " - 1" + " - 堆垛机plc连接成功 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } else { OutputQueue.CRN.offer(MessageFormat.format("【{0}】堆垛机plc连接失败!!! ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); News.error("SiemensCrn"+" - 2"+" - 堆垛机plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); News.error("SiemensCrn" + " - 2" + " - 堆垛机plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); initCrn(); } // siemensNet.ConnectClose(); @@ -157,7 +157,7 @@ /** * 读取状态 */ private void readStatus(){ private void readStatus() { try { OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 54); if (result.IsSuccess) { @@ -175,79 +175,46 @@ crnProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 14)); crnProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 16)); crnProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 18)); crnProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28)); crnProtocol.setySpeed(siemensNet.getByteTransform().TransInt16(result.Content, 32)); crnProtocol.setzSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 36)); // crnProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 34)); // crnProtocol.setySpeed(siemensNet.getByteTransform().TransInt16(result.Content, 36)); // crnProtocol.setzSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 38)); crnProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40)); crnProtocol.setyDistance(siemensNet.getByteTransform().TransInt16(result.Content, 44)); crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48)); // crnProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40)); // crnProtocol.setyDistance(siemensNet.getByteTransform().TransInt16(result.Content, 42)); // crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 44)); crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 52)); // crnProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 20)); // crnProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 22)); // crnProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 24)); // crnProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 26)); OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId())); // 复位信号 // if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) { // if (resetFlag) { // if(crnProtocol.getTaskNo()==9999){ // backHpFlag = false; // } // CrnCommand crnCommand = new CrnCommand(); // crnCommand.setAckFinish((short)1); // if (write(crnCommand)) { // resetFlag = false; // } // } // } if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) { // News.error("-------------------------------------------第一步、[堆垛机号:{}, 工作号:{}, 载货台信号:{}]==>> 状态为10,等待确认!!", // slave.getId(),crnProtocol.getTaskNo(), crnProtocol.getLoaded()==1 ? "有物" : "无物"); if (resetFlag) { CrnCommand crnCommand = new CrnCommand(); crnCommand.setAckFinish((short)1); if (write(crnCommand)) { resetFlag = false; // cmdFlag = true; } } } try { // 根据实时信息更新数据库 BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class); BasCrnp basCrnp = new BasCrnp(); basCrnp.setCrnNo(slave.getId()); basCrnp.setCrnSts((int)crnProtocol.getMode()); if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){ News.error("SiemensCrn"+" - 3"+" - 堆垛机plc数据库更新失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } } catch (Exception ignore){} } else { initCrn(); OutputQueue.CRN.offer(MessageFormat.format("【{0}】读取堆垛机plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); News.error("SiemensCrn"+" - 4"+" - 读取堆垛机plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); News.error("SiemensCrn" + " - 4" + " - 读取堆垛机plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } // 复位信号 if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING) && resetFlag) { CrnCommand crnCommand = new CrnCommand(); crnCommand.setAckFinish((short) 1); if (write(crnCommand)) { resetFlag = false; } } OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功", DateUtils.convert(new Date()), slave.getId())); try { // 根据实时信息更新数据库 BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class); BasCrnp basCrnp = new BasCrnp(); basCrnp.setCrnNo(slave.getId()); basCrnp.setCrnSts((int) crnProtocol.getMode()); if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))) { News.error("SiemensCrn" + " - 3" + " - 堆垛机plc数据库更新失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } } catch (Exception ignore) { } } catch (Exception e) { e.printStackTrace(); OutputQueue.CRN.offer(MessageFormat.format("【{0}】读取堆垛机plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); News.error("SiemensCrn"+" - 5"+" - 读取堆垛机plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); News.error("SiemensCrn" + " - 5" + " - 读取堆垛机plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initCrn(); } } @@ -266,43 +233,55 @@ */ private boolean write(CrnCommand command) throws InterruptedException { if (null == command) { News.error("SiemensCrn"+" - 6"+" - 堆垛机写入命令为空"); News.error("SiemensCrn" + " - 6" + " - 堆垛机写入命令为空"); return false; } OperateResult result; // convertRow(command); if (command.getAckFinish() == 1) { result = siemensNet.Write("DB100.0", (short) 1); // result = siemensNet.Write("DB100.18", 0); OperateResult result = null; // 写3号堆垛机 if (slave.getId() == 3) { // 写任务完成确认 if (command.getAckFinish() == 1) { result = siemensNet.Write("DB100.0", (short) 1); } else { command.setCrnNo(slave.getId()); short[] array = new short[10]; array[0] = command.getAckFinish(); array[1] = command.getTaskNo(); array[2] = command.getTaskMode(); array[3] = command.getSourcePosX(); array[4] = command.getSourcePosY(); array[5] = command.getSourcePosZ(); array[6] = command.getDestinationPosX(); array[7] = command.getDestinationPosY(); array[8] = command.getDestinationPosZ(); array[9] = command.getCommand(); result = siemensNet.Write("DB100.0", array); } } else { command.setCrnNo(slave.getId()); short[] array = new short[10]; array[0] = command.getAckFinish(); array[1] = command.getTaskNo(); array[2] = command.getTaskMode(); array[3] = command.getSourcePosX(); array[4] = command.getSourcePosY(); array[5] = command.getSourcePosZ(); array[6] = command.getDestinationPosX(); array[7] = command.getDestinationPosY(); array[8] = command.getDestinationPosZ(); // array[9] = command.getSourceStaNo(); // array[10] = command.getDestinationStaNo(); array[9] = command.getCommand(); result = siemensNet.Write("DB100.0", array); // if (command.getAckFinish() == 0) { // short commandFinish = 1; // Thread.sleep(100L); // result = siemensNet.Write("DB100.18", commandFinish); // } // 写任务完成确认 if (command.getAckFinish() == 1) { result = siemensNet.Write("DB100.0", (short) 1); } else { command.setCrnNo(slave.getId()); short[] array = new short[10]; array[0] = command.getAckFinish(); array[1] = command.getTaskNo(); array[2] = command.getTaskMode(); array[3] = command.getSourcePosX(); array[4] = command.getSourcePosY(); array[5] = command.getSourcePosZ(); array[6] = command.getDestinationPosX(); array[7] = command.getDestinationPosY(); array[8] = command.getDestinationPosZ(); array[9] = command.getCommand(); result = siemensNet.Write("DB100.0", array); } } try { // 日志记录 BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class); BasCrnOpt basCrnOpt = new BasCrnOpt( command.getTaskNo().intValue(), // 任务号 BasCrnOpt basCrnOpt = new BasCrnOpt(command.getTaskNo().intValue(), // 任务号 command.getCrnNo(), // 堆垛机[非空] new Date(), // 下发时间 command.getTaskModeType().toString(), // 模式 @@ -319,17 +298,18 @@ null // 修改人员 ); bean.insert(basCrnOpt); } catch (Exception ignore) {} } catch (Exception ignore) { } if (result != null && result.IsSuccess) { Thread.sleep(200); this.readStatus(); News.info("SiemensCrn"+" - 7"+" - 堆垛机命令下发[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); News.info("SiemensCrn" + " - 7" + " - 堆垛机命令下发[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); return true; } else { OutputQueue.CRN.offer(MessageFormat.format("【{0}】写入堆垛机plc数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); News.error("SiemensCrn"+" - 8"+" - 写入堆垛机plc数据失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); News.error("SiemensCrn" + " - 8" + " - 写入堆垛机plc数据失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); return false; } } @@ -345,8 +325,8 @@ /*****************************************************************************************/ public static void main(String[] args) throws InterruptedException { CrnSlave slave = new CrnSlave(); slave.setId(1); slave.setIp("10.10.10.10"); slave.setId(2); slave.setIp("10.10.10.20"); slave.setPort(0); slave.setRack(0); slave.setSlot(0); @@ -357,19 +337,19 @@ Thread.sleep(3000L); // 1.入库 源和目标都发 // CrnCommand command = new CrnCommand(); //// command.setCrnNo(3); // 堆垛机编号 // command.setTaskNo((short) 2); // 工作号 // command.setAckFinish((short) 0); // 任务完成确认位 // command.setTaskMode(CrnTaskModeType.PAKIN); // 任务模式 // command.setSourcePosX((short) 6); // 源库位排 // command.setSourcePosY((short) 2); // 源库位列 // command.setSourcePosZ((short) 2); // 源库位层 // command.setDestinationPosX((short) 6); // 目标库位排 // command.setDestinationPosY((short) 0); // 目标库位列 // command.setDestinationPosZ((short) 1); // 目标库位层 // command.setCommand((short)1); // crnThread.write(command); CrnCommand command = new CrnCommand(); // command.setCrnNo(3); // 堆垛机编号 command.setTaskNo((short) 4676); // 工作号 command.setAckFinish((short) 0); // 任务完成确认位 command.setTaskMode(CrnTaskModeType.PAKIN); // 任务模式 command.setSourcePosX((short) 5); // 源库位排 command.setSourcePosY((short) 1); // 源库位列 command.setSourcePosZ((short) 1); // 源库位层 command.setDestinationPosX((short) 4); // 目标库位排 command.setDestinationPosY((short) 2); // 目标库位列 command.setDestinationPosZ((short) 1); // 目标库位层 command.setCommand((short) 1); crnThread.write(command); // 2.出库 源和目标都发 // CrnCommand command = new CrnCommand(); @@ -386,18 +366,19 @@ // crnThread.write(command); // // 3.库位移转 源和目标都发 pass // 3.库位移转 源和目标都发 pass // CrnCommand command = new CrnCommand(); // command.setCrnNo(slave.getId()); // 堆垛机编号 // command.setTaskNo((short) 0); // 工作号 //// command.setCrnNo(slave.getId()); // 堆垛机编号 // command.setTaskNo((short) 3); // 工作号 // command.setAckFinish((short) 0); // 任务完成确认位 // command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式: 库位移转 // command.setSourcePosX((short)2); // 源库位排 // command.setSourcePosX((short)4); // 源库位排 // command.setSourcePosY((short)2); // 源库位列 // command.setSourcePosZ((short)3); // 源库位层 // command.setDestinationPosX((short)2); // 目标库位排 // command.setDestinationPosY((short)4); // 目标库位列 // command.setDestinationPosZ((short)4); // 目标库位层 // command.setSourcePosZ((short)10); // 源库位层 // command.setDestinationPosX((short)4); // 目标库位排 // command.setDestinationPosY((short)1); // 目标库位列 // command.setDestinationPosZ((short)9); // 目标库位层 // command.setCommand((short)1); // crnThread.write(command); // 4.站位移转 源和目标都发 src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -192,15 +192,58 @@ * 读取状态 ====> 整块plc */ private void read() throws InterruptedException { // // 更新入出库模式 // updateIoMode(); String methodName = Thread.currentThread().getStackTrace()[1].getMethodName(); ArrayList<Integer> staNos = getStaNo(); int staNoSize = staNos.size(); // 读取1号输送线 if (slave.getId() == 1) { OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNoSize * 8)); if (result.IsSuccess) { for (int i = 0; i < staNoSize; i++) { Integer siteId = staNos.get(i); // 站点编号 StaProtocol staProtocol = station.get(siteId); if (null == staProtocol) { staProtocol = new StaProtocol(); staProtocol.setSiteId(siteId); station.put(siteId, staProtocol); } staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4)); // 工作号 staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4 + 2)); // 目标站 boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, 60+i, 1); staProtocol.setAutoing(status[0]); // 自动 staProtocol.setLoading(status[1]); // 有物 staProtocol.setInEnable(status[2]); // 可入 staProtocol.setOutEnable(status[3]);// 可出 staProtocol.setEmptyMk(status[4]); // 空板信号 staProtocol.setFullPlt(status[5]); // 满托盘 staProtocol.setHigh(status[6]); // 高库位 staProtocol.setLow(status[7]); // 低库位 staProtocol.setWeight(status[6]); //是否为重货 if (!staProtocol.isPakMk() && staProtocol.isLoading()) { staProtocol.setPakMk(true); } } } else { OutputQueue.DEVP.offer(MessageFormat.format("【{0}】读取输送线plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); log.error("读取输送线plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort()); } //条码扫描器 Thread.sleep(200); ArrayList<Integer> barcodeList = getBarcodeList(); OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.90", (short) (barcodeList.size() * 8)); if (result2.IsSuccess) { for (int i = 0; i < barcodeList.size(); i++) { Integer barcodeId = barcodeList.get(i); String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8"); BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId); if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { barcodeThread.setBarcode(barcode); } } } } else if (slave.getId() == 2) { OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*8)); OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize * 8)); if (result.IsSuccess) { for (int i = 0; i < staNoSize; i++) { Integer siteId = staNos.get(i); // 站点编号 @@ -211,8 +254,8 @@ station.put(siteId, staProtocol); } staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 8)); // 工作号 staProtocol.setStaNo( siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4 )); // 目标站 boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*8+6, 1); staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 8 + 4)); // 目标站 boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i * 8 + 6, 1); staProtocol.setAutoing(status[0]); // 自动 staProtocol.setLoading(status[1]); // 有物 staProtocol.setInEnable(status[2]); // 可入 @@ -226,24 +269,6 @@ staProtocol.setPakMk(true); } } // 根据实时信息更新数据库 try { List<BasDevp> basDevps = new ArrayList<>(); for (Integer siteId : staNos) { StaProtocol staProtocol = station.get(siteId); basDevps.add(staProtocol.toSqlModel()); } BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) { throw new Exception("更新数据库数据失败"); } } catch (Exception e) { e.printStackTrace(); OutputQueue.DEVP.offer(MessageFormat.format("【{0}】更新数据库数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); News.error(methodName + ":更新数据库数据失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } } else { OutputQueue.DEVP.offer(MessageFormat.format("【{0}】读取输送线plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); log.error("读取输送线plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort()); @@ -251,16 +276,16 @@ //外形检测 OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.42", (short) 8); if (resultErr.IsSuccess){ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, 0, 1); StaProtocol staProtocol = station.get(303); staProtocol.setFrontErr(status[0]); staProtocol.setBackErr(status[1]); staProtocol.setHighErr(status[2]); staProtocol.setLeftErr(status[3]); staProtocol.setRightErr(status[4]); staProtocol.setWeightErr(status[5]); staProtocol.setBarcodeErr(status[6]); if (resultErr.IsSuccess) { boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, 0, 1); StaProtocol staProtocol = station.get(303); staProtocol.setFrontErr(status[0]); staProtocol.setBackErr(status[1]); staProtocol.setHighErr(status[2]); staProtocol.setLeftErr(status[3]); staProtocol.setRightErr(status[4]); staProtocol.setWeightErr(status[5]); staProtocol.setBarcodeErr(status[6]); } //条码扫描器 @@ -270,118 +295,31 @@ if (result2.IsSuccess) { for (int i = 0; i < barcodeList.size(); i++) { Integer barcodeId = barcodeList.get(i); String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8"); String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8"); BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId); if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { barcodeThread.setBarcode(barcode); } } } // //条码扫描器 // Thread.sleep(200); // OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.60",(short)8); // if (result2.IsSuccess) { // String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,0,8, "UTF-8"); // BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, 3); // if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { // barcodeThread.setBarcode(barcode); // } // } } // 根据实时信息更新数据库 try { List<BasDevp> basDevps = new ArrayList<>(); for (Integer siteId : staNos) { StaProtocol staProtocol = station.get(siteId); basDevps.add(staProtocol.toSqlModel()); } // // if (result.IsSuccess) { // for (int i = 0; i < staNoSize; i++) { // Integer siteId = staNos.get(i); // 站点编号 // StaProtocol staProtocol = station.get(siteId); // if (null == staProtocol) { // staProtocol = new StaProtocol(); // staProtocol.setSiteId(siteId); // station.put(siteId, staProtocol); // } // staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4)); // 工作号 // // staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4+2)); // 目标站 // } // } // Thread.sleep(200); // OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.60", (short) (staNoSize * 2)); // if (result1.IsSuccess) { // for (int i = 0; i < staNoSize; i++) { // Integer siteId = staNos.get(i); // 站点编号 // boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*2, 1); // boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result1.Content, i*2+1, 1); // StaProtocol staProtocol = station.get(siteId); // staProtocol.setAutoing(status[0]); // 自动 // staProtocol.setLoading(status[1]); // 有物 // staProtocol.setInEnable(status[2]); // 可入 // staProtocol.setOutEnable(status[3]);// 可出 // staProtocol.setEmptyMk(status[4]); // 空板信号 // staProtocol.setFullPlt(status[5]); // 满托盘 // staProtocol.setLow(status[6]); // 低库位 // staProtocol.setMedium(status[7]); // 中库位 // staProtocol.setMedium_high(status2[0]); //中高库位 // staProtocol.setHigh(status2[1]); // 高库位 // if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { // staProtocol.setPakMk(true); // } // // if (!staProtocol.isLoading()){ // staProtocol.setStamp(0); // } // } // } //接收超宽超高没扫到条码报警 // Thread.sleep(200); // OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB101.34",(short)(1)); // if (result4.IsSuccess) { // startSignal = siemensS7Net.getByteTransform().TransBool(result4.Content, 0, 1); // } //条码扫描器 // Thread.sleep(200); // OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.60",(short)(barcodeSize*8)); // if (result2.IsSuccess) { // for (int i = 0; i < barcodeSize; i++) { // String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8"); // BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1); // if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { // barcodeThread.setBarcode(barcode); // } // } // } // if (result.IsSuccess && result1.IsSuccess) { // // OutputQueue.DEVP.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId())); // // // 根据实时信息更新数据库 // try { // List<BasDevp> basDevps = new ArrayList<>(); // for (Integer siteId : staNos) { // StaProtocol staProtocol = station.get(siteId); // basDevps.add(staProtocol.toSqlModel()); // } // // BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); // if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) { // throw new Exception("更新数据库数据失败"); // } // } catch (Exception e) { // initSite(); // e.printStackTrace(); // OutputQueue.DEVP.offer(MessageFormat.format("【{0}】更新数据库数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); // News.error("SiemensDevp"+" - 3"+" - 更新数据库数据失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); // } // // } else { // OutputQueue.DEVP.offer(MessageFormat.format("【{0}】读取输送线plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); //// log.error("读取输送线plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); // } BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) { throw new Exception("更新数据库数据失败"); } } catch (Exception e) { e.printStackTrace(); OutputQueue.DEVP.offer(MessageFormat.format("【{0}】更新数据库数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); } } /** @@ -392,57 +330,31 @@ return; } ArrayList<Integer> staNos = getStaNo(); int index = staNos.indexOf(staProtocol.getSiteId()); short[] array = new short[2]; array[0] = staProtocol.getWorkNo(); array[1] = staProtocol.getStaNo(); // OperateResult write = siemensS7Net.Write("DB100." + index*4, array); OperateResult write = null; OperateResult write1 = null; // //任务下发次数 // int writeCount = 0; // do { write1 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo()); // 目标站 // 写2号输送线 if (slave.getId() == 1) { int index = staNos.indexOf(staProtocol.getSiteId()); write = siemensS7Net.Write("DB100." + index * 4, staProtocol.getWorkNo()); // 工作号 Thread.sleep(500); write = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo().intValue()); // 工作号 // if(write.IsSuccess || write1.IsSuccess){ // Thread.sleep(200); // OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index*4, (short) 2); // OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB100." + (index*4+2), (short) 2); // if(readResult.IsSuccess && readResult1.IsSuccess){ // short workNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0); // short staNo = siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 0); // if(staProtocol.getWorkNo().equals(workNo) && staProtocol.getStaNo().equals(staNo)){ // //任务命令写入成功 // log.info("写入堆垛机命令后返回成功,并且回读成功。堆垛机plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); // break; // } else {//返回结果是成功了,但是真实值不相同 // writeCount++; // log.error("写入堆垛机命令后返回成功,但是读取任务值不一致。堆垛机plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); // } // } else { // writeCount++; // log.error("写入堆垛机命令后读取失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); // } // } // else { // writeCount++; // log.error("写入堆垛机命令后读取失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); // } // }while (writeCount<5); write1 = siemensS7Net.Write("DB100." + (4 * index + 2), staProtocol.getStaNo()); // 目标站e } else { int index = staNos.indexOf(staProtocol.getSiteId()); write1 = siemensS7Net.Write("DB100." + (index * 6 + 4), staProtocol.getStaNo()); // 目标站 Thread.sleep(500); write = siemensS7Net.Write("DB100." + index * 6, staProtocol.getWorkNo().intValue()); // 工作号 } if (!write.IsSuccess || !write1.IsSuccess) { staProtocol = station.get(staProtocol.getSiteId()); if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) { if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() == 0) { staProtocol.setPakMk(true); } OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点数据失败。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(staProtocol))); News.error("SiemensDevp"+" - 4"+" - 写入输送线站点数据失败。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(staProtocol)); News.error("SiemensDevp" + " - 4" + " - 写入输送线站点数据失败。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(staProtocol)); } else { OutputQueue.DEVP.offer(MessageFormat.format("【{0}】 输送线命令下发 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol))); News.info("SiemensDevp"+" - 5"+" - 输送线命令下发 [id:{}] >>>>> 命令下发: {}", slave.getId(), JSON.toJSON(staProtocol)); News.info("SiemensDevp" + " - 5" + " - 输送线命令下发 [id:{}] >>>>> 命令下发: {}", slave.getId(), JSON.toJSON(staProtocol)); } } src/main/resources/application.yml
@@ -39,61 +39,61 @@ # 下位机配置 wcs-slave: # 双深 doubleDeep: true doubleDeep: false # 双深库位排号 doubleLocs: 1 # 一个堆垛机负责的货架排数 groupCount: 3 # # 堆垛机1 # crn[0]: # id: 1 # ip: 10.10.10.10 # port: 102 # rack: 0 # slot: 0 # # 偏移量,当堆垛机站点列号=1时,偏移量=2 # offset: 2 # demo: false # # 堆垛机入库站点 # crnInStn[0]: # devpPlcId: ${wcs-slave.devp[0].id} # staNo: 104 # row: 3 # bay: 39 # lev: 1 # # 堆垛机出库站点 # crnOutStn[0]: # devpPlcId: ${wcs-slave.devp[0].id} # staNo: 100 # row: 2 # bay: 39 # lev: 1 # # 堆垛机2 # crn[1]: # id: 2 # ip: 10.10.10.18 # port: 102 # rack: 0 # slot: 0 # # 偏移量,当堆垛机站点列号=1时,偏移量=2 # offset: 2 # demo: false # # 堆垛机入库站点 # crnInStn[0]: # devpPlcId: ${wcs-slave.devp[0].id} # staNo: 204 # row: 5 # bay: 39 # lev: 1 # # 堆垛机出库站点 # crnOutStn[0]: # devpPlcId: ${wcs-slave.devp[0].id} # staNo: 200 # row: 4 # bay: 39 # lev: 1 # 堆垛机3 # 堆垛机1 crn[0]: id: 1 ip: 10.10.10.10 port: 0 rack: 0 slot: 0 # 偏移量,当堆垛机站点列号=1时,偏移量=2 offset: 2 demo: false # 堆垛机入库站点 crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 104 row: 3 bay: 1 lev: 1 # 堆垛机出库站点 crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 100 row: 2 bay: 1 lev: 1 # 堆垛机2 crn[1]: id: 2 ip: 10.10.10.20 port: 0 rack: 0 slot: 0 # 偏移量,当堆垛机站点列号=1时,偏移量=2 offset: 2 demo: false # 堆垛机入库站点 crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 204 row: 5 bay: 1 lev: 1 # 堆垛机出库站点 crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 200 row: 4 bay: 1 lev: 1 # 堆垛机3 crn[2]: id: 3 ip: 10.10.10.30 port: 0 @@ -104,67 +104,67 @@ demo: false # 堆垛机入库站点 crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} devpPlcId: ${wcs-slave.devp[1].id} staNo: 304 row: 7 bay: 0 lev: 1 # 堆垛机出库站点 crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} devpPlcId: ${wcs-slave.devp[1].id} staNo: 300 row: 6 bay: 0 lev: 1 # # 输送线1 # devp[0]: # id: 1 # ip: 10.10.10.100 # port: 102 # rack: 0 # slot: 0 # # 入库口1 # inSta[0]: # staNo: 104 # barcode: ${wcs-slave.barcode[0].id} # backSta: 103 # led: ${wcs-slave.led[0].id} # # 入库口2 # inSta[1]: # staNo: 204 # barcode: ${wcs-slave.barcode[1].id} # backSta: 203 # led: ${wcs-slave.led[1].id} # # 空板入库口1 # emptyInSta[0]: # staNo: 104 # barcode: ${wcs-slave.barcode[0].id} # led: ${wcs-slave.led[0].id} # # 空板入库口2 # emptyInSta[1]: # staNo: 204 # barcode: ${wcs-slave.barcode[1].id} # led: ${wcs-slave.led[1].id} # # 拣料入库口1 # pickSta[0]: # staNo: 204 # barcode: ${wcs-slave.barcode[1].id} # led: ${wcs-slave.led[1].id} # # 拣料入库口2 # pickSta[1]: # staNo: 104 # barcode: ${wcs-slave.barcode[0].id} # led: ${wcs-slave.led[0].id} # # 出库口1 # outSta[0]: # staNo: 101 # led: ${wcs-slave.led[0].id} # # 出库口2 # outSta[1]: # staNo: 201 # led: ${wcs-slave.led[1].id} # 输送线2 # 输送线1 devp[0]: id: 1 ip: 10.10.10.100 port: 0 rack: 0 slot: 0 # 入库口1 inSta[0]: staNo: 104 barcode: ${wcs-slave.barcode[0].id} backSta: 103 led: ${wcs-slave.led[0].id} # 入库口2 inSta[1]: staNo: 204 barcode: ${wcs-slave.barcode[1].id} backSta: 203 led: ${wcs-slave.led[1].id} # 空板入库口1 emptyInSta[0]: staNo: 104 barcode: ${wcs-slave.barcode[0].id} led: ${wcs-slave.led[0].id} # 空板入库口2 emptyInSta[1]: staNo: 204 barcode: ${wcs-slave.barcode[1].id} led: ${wcs-slave.led[1].id} # 拣料入库口1 pickSta[0]: staNo: 204 barcode: ${wcs-slave.barcode[1].id} led: ${wcs-slave.led[1].id} # 拣料入库口2 pickSta[1]: staNo: 104 barcode: ${wcs-slave.barcode[0].id} led: ${wcs-slave.led[0].id} # 出库口1 outSta[0]: staNo: 101 led: ${wcs-slave.led[0].id} # 出库口2 outSta[1]: staNo: 201 led: ${wcs-slave.led[1].id} # 输送线2 devp[1]: id: 2 ip: 10.10.10.130 port: 0 @@ -173,61 +173,57 @@ # 入库口1 inSta[0]: staNo: 304 barcode: ${wcs-slave.barcode[0].id} barcode: ${wcs-slave.barcode[2].id} backSta: 303 led: ${wcs-slave.led[0].id} led: ${wcs-slave.led[3].id} # 空板入库口1 emptyInSta[0]: staNo: 304 barcode: ${wcs-slave.barcode[0].id} led: ${wcs-slave.led[0].id} barcode: ${wcs-slave.barcode[2].id} led: ${wcs-slave.led[3].id} # 拣料入库口1 pickSta[0]: staNo: 304 barcode: ${wcs-slave.barcode[0].id} led: ${wcs-slave.led[0].id} barcode: ${wcs-slave.barcode[2].id} led: ${wcs-slave.led[3].id} # 出库口1 outSta[0]: staNo: 301 led: ${wcs-slave.led[0].id} led: ${wcs-slave.led[2].id} # 条码扫描仪1 # barcode[0]: # id: 1 # ip: 10.10.10.102 # port: 51236 # # 条码扫描仪2 # barcode[1]: # id: 2 # ip: 10.10.10.104 # port: 51236 # 条码扫描仪3 barcode[0]: id: 1 # 条码扫描仪2 barcode[1]: id: 2 # 条码扫描仪3 barcode[2]: id: 3 # LED1 # led[0]: # id: 1 # ip: 10.10.10.107 # port: 5005 # devpPlcId: ${wcs-slave.devp[0].id} # staArr: 101 # # LED2 # led[1]: # id: 2 # ip: 10.10.10.105 # port: 5005 # devpPlcId: ${wcs-slave.devp[0].id} # staArr: 201 # LED3 led[0]: id: 3 id: 1 ip: 10.10.10.107 port: 5005 devpPlcId: ${wcs-slave.devp[0].id} staArr: 101 # LED2 led[1]: id: 2 ip: 10.10.10.105 port: 5005 devpPlcId: ${wcs-slave.devp[0].id} staArr: 201 # LED3 led[2]: id: 3 ip: 10.10.10.108 port: 5005 devpPlcId: ${wcs-slave.devp[1].id} staArr: 301 # # LED4 # led[3]: # id: 4 # ip: 10.10.10.105 # port: 5005 # devpPlcId: ${wcs-slave.devp[1].id} # staArr: 304 # LED4 led[3]: id: 4 ip: 10.10.10.109 port: 5005 devpPlcId: ${wcs-slave.devp[1].id} staArr: 304