From 76d3fff7c27d020fd7110e4a5e84cc87e3fe7e43 Mon Sep 17 00:00:00 2001 From: lsh <lsh123456> Date: 星期五, 03 三月 2023 15:45:32 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/controller/SiteController.java | 4 src/main/java/com/zy/core/thread/SiemensCrnThread.java | 4 src/main/java/com/zy/core/thread/SteThread.java | 27 ++++++ src/main/java/com/zy/core/model/protocol/SteProtocol.java | 5 + src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 112 +++++++++++++++++++++++++-- src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 2 src/main/java/com/zy/core/enums/SteTaskModeType.java | 4 src/main/java/com/zy/core/MainProcess.java | 9 ++ src/main/java/com/zy/core/thread/SiemensDevpThread.java | 51 +++++++++++- src/main/resources/application.yml | 6 10 files changed, 196 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/SiteController.java b/src/main/java/com/zy/asrs/controller/SiteController.java index a39ae86..941bc9f 100644 --- a/src/main/java/com/zy/asrs/controller/SiteController.java +++ b/src/main/java/com/zy/asrs/controller/SiteController.java @@ -63,8 +63,8 @@ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); Map<String, Object> map1 = new HashMap<>(); map1.put("floor", 1); - map1.put("modeVal", devpThread.charge0); - map1.put("modeDesc", devpThread.charge0?"鍏呯數涓�":"鍏抽棴"); + map1.put("modeVal", !devpThread.charge0); + map1.put("modeDesc", !devpThread.charge0?"鍏呯數涓�":"鍏抽棴"); res.add(map1); Map<String, Object> map2 = new HashMap<>(); map2.put("floor", 2); diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java index 5de2551..08d4b5f 100644 --- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java +++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java @@ -91,4 +91,6 @@ WrkMast selectPakoutWorkingByGroupLoc(@Param("locNos")List<String> locNos); + List<WrkMast> selectAll(@Param("staNo")Integer staNo); + } diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index 6407cd7..4008615 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; +import com.core.common.SpringUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.mapper.*; @@ -1835,6 +1836,22 @@ } } // 绉诲簱 ===>> 鍫嗗灈鏈烘惉鑷崇洰鏍囧簱浣嶇粍 瀹屾垚 + } else if (wrkMast.getWrkSts() == 16) { + // 16.鍚婅溅鍑哄簱涓� ==> 17.鍑哄簱瀹屾垚 + wrkMast.setWrkSts(17L); + Date now = new Date(); + wrkMast.setCrnEndTime(now); + wrkMast.setModiTime(now); + LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); + Integer outCrnNo = locMastService.getOutCrnNo(locMast); + wrkMast.setCrnNo(outCrnNo); + // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 + if (wrkMastMapper.updateById(wrkMast) > 0) { + // 鍫嗗灈鏈哄浣� + crnThread.setResetFlag(true); + } else { + News.error("淇敼宸ヤ綔妗g姸鎬� 16.鍚婅溅鍑哄簱涓� ==> 17.鍑哄簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } } } } @@ -1879,15 +1896,17 @@ } else { steThread.setResetFlag(true); } - } else if (wrkCharge.getWrkSts() == 29) { - // 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 - wrkCharge.setWrkSts(30L); - if (!wrkChargeService.updateById(wrkCharge)) { - News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); - } else { - steThread.setResetFlag(true); - } - } else if (wrkCharge.getWrkSts() == 32) { + } +// else if (wrkCharge.getWrkSts() == 29) { +// // 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 +// wrkCharge.setWrkSts(30L); +// if (!wrkChargeService.updateById(wrkCharge)) { +// News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); +// } else { +// steThread.setResetFlag(true); +// } +// } + else if (wrkCharge.getWrkSts() == 32) { // 32.灏忚溅璧拌 ===>> 33.灏忚溅寰呮惉 wrkCharge.setWrkSts(33L); if (!wrkChargeService.updateById(wrkCharge)) { @@ -2486,7 +2505,7 @@ SteChargeType steCharge = null; do { String locNo; - if (!devpThread.charge0) { + if (devpThread.charge0) { SteChargeType first = SteChargeType.FIRST; locNo = first.locNo; if (basSteService.hasCarOfLocNo(locNo) == null @@ -2582,6 +2601,7 @@ return; } if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) { + MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 999));//鍏呯數鏍囪 wrkCharge.setWrkSts(30L); wrkChargeMapper.updateById(wrkCharge); return; @@ -2644,7 +2664,7 @@ SteCommand steCommand = new SteCommand(); steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙� steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙� - steCommand.setTaskMode(SteTaskModeType.GO_ORIGIN); // 鍘诲彸绔� + steCommand.setTaskMode(SteTaskModeType.BACK_ORIGIN); // 鍘诲彸绔� steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue()); steCommand.setBay(steProtocol.getBay()); @@ -2675,6 +2695,19 @@ wrkCharge.setWrkSts(29L); if (!wrkChargeService.updateById(wrkCharge)) { News.error("淇敼鍏呯數浠诲姟鐘舵�� 28.鍏呯數灏辩华 ===>> 29.寮�濮嬪厖鐢� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } + } + } else if (wrkCharge.getWrkSts() == 29) { + Float idle2 = steProtocol.isIdle2(); + String chargeLine = SpringUtils.getBean(BasSteService.class).selectById(1).getChargeLine(); + if (idle2<(Float.parseFloat(chargeLine)+2)){ + MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 666));//鍏呯數鏍囪 + }else if (idle2 > 70f){ + MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 999));//鍏呯數鏍囪 + // 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 + wrkCharge.setWrkSts(30L); + if (!wrkChargeService.updateById(wrkCharge)) { + News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } } } @@ -3201,6 +3234,63 @@ } } + /** + * 鍑哄叆搴撴ā寮忓垏鎹� + */ + public synchronized void outAndIn() { + try { + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 + for (DevpSlave devp : slaveProperties.getDevp()) { + for (DevpSlave.Sta inSta : devp.getInSta()) { + Thread.sleep(500); + boolean a=true,b=true; + List<WrkMast> wrkMasts = wrkMastMapper.selectAll(inSta.getStaNo()); + if (Cools.isEmpty(wrkMasts)){ + b=false; + }else { + for (WrkMast wrkMast:wrkMasts){ + if (wrkMast.getSourceStaNo()!=wrkMast.getStaNo()){ + a=false; + break; + } + } + } + switch (inSta.getStaNo()) { + case 102://1F + if (a && b){ + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 11)); + }else if (b){ + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 12)); + }else { + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 10)); + } + break; + case 202://2F + if (a && b){ + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 21)); + }else if (b){ + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 22)); + }else { + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 20)); + } + break; + case 302://3F + if (a && b){ + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 31)); + }else if (b){ + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 32)); + }else { + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 30)); + } + break; + } + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java index a54f050..c5895a9 100644 --- a/src/main/java/com/zy/core/MainProcess.java +++ b/src/main/java/com/zy/core/MainProcess.java @@ -22,6 +22,8 @@ private MainServiceImpl mainService; // 鎵�灞炵嚎绋� private Thread thread; + // 棰戠巼 + private int i = 0; /** * =====>> 寮�濮嬪伐浣� @@ -70,6 +72,13 @@ // 绌挎杞� ===>> 灏忚溅鐢甸噺妫�娴嬪厖鐢� mainService.loopSteCharge(); mainService.executeSteCharge(); + //鍑哄叆搴撴ā寮� + i++; + if (i > 1) { + mainService.outAndIn(); + i = 0; + } + // 闂撮殧 Thread.sleep(200); // 绌挎杞� ===>> 灏忚溅澶嶄綅鑷冲緟鏈哄簱浣� diff --git a/src/main/java/com/zy/core/enums/SteTaskModeType.java b/src/main/java/com/zy/core/enums/SteTaskModeType.java index b1b9d39..02930f9 100644 --- a/src/main/java/com/zy/core/enums/SteTaskModeType.java +++ b/src/main/java/com/zy/core/enums/SteTaskModeType.java @@ -96,9 +96,9 @@ public static SteTaskModeType findOriginByLoc(Integer row) { if (Utils.FIRST_GROUP_ROW_LIST.contains(row)) { - return SteTaskModeType.BACK_ORIGIN; - } else if (Utils.SECOND_GROUP_ROW_LIST.contains(row)) { return SteTaskModeType.GO_ORIGIN; + } else if (Utils.SECOND_GROUP_ROW_LIST.contains(row)) { + return SteTaskModeType.BACK_ORIGIN; } else { throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�"); } diff --git a/src/main/java/com/zy/core/model/protocol/SteProtocol.java b/src/main/java/com/zy/core/model/protocol/SteProtocol.java index a7e6571..5ed0d12 100644 --- a/src/main/java/com/zy/core/model/protocol/SteProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/SteProtocol.java @@ -536,6 +536,11 @@ } } + // 灏忚溅鐢甸噺 + public Float isIdle2() { + return this.charge; + } + // 鏄惁澶勪簬鎶ヨ鐘舵�� public Boolean isAlarm() { return this.alarm > 1; diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index 75e9700..9ce7789 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -226,7 +226,7 @@ News.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); return false; } - siemensNet.Write("DB100.18", (short) 0); +// siemensNet.Write("DB100.18", (short) 0); // convertRow(command); command.setCrnNo(slave.getId()); short[] array = new short[10]; @@ -258,11 +258,9 @@ OperateResult result = siemensNet.Write("DB100.0", array); if (command.getAckFinish() == 0) { - if (result.IsSuccess) { short commandFinish = 1; Thread.sleep(300); result = siemensNet.Write("DB100.18", commandFinish); - } } try { diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index 4fc1742..718f5af 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -8,6 +8,7 @@ import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.SpringUtils; +import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.service.BasDevpService; import com.zy.core.DevpThread; @@ -75,6 +76,10 @@ // 鍐欐暟鎹� ID+鐩爣绔� case 2: write((StaProtocol)task.getData()); + break; + // 鍑哄叆搴撴ā寮� + case 3: + write3((int)task.getData()); break; default: break; @@ -150,10 +155,10 @@ //璇绘潯鐮� Thread.sleep(100); - OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.150",(short)31); + OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.150",(short)24); if (result2.IsSuccess) { - for (int i = 0; i < barcodeSize; i++) { - String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*16,15, "UTF-8"); + 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); @@ -163,12 +168,17 @@ // 鍏呯數淇″彿浣� Thread.sleep(50); - OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB102.128", (short)1); + OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB102.109", (short)1); if (result3.IsSuccess) { boolean[] status = siemensS7Net.getByteTransform().TransBool(result3.Content, 0, 1); charge0 = status[0]; - charge1 = status[1]; - charge2 = status[2]; + } + // 鍏呯數淇″彿浣� + Thread.sleep(50); + OperateResultExOne<byte[]> result31 = siemensS7Net.Read("DB100.201", (short)1); + if (result3.IsSuccess) { + boolean[] status = siemensS7Net.getByteTransform().TransBool(result31.Content, 0, 1); + charge1 = status[0]; } // 澶栧舰妫�娴� - 102 @@ -225,6 +235,35 @@ // News.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } } + /** + * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏� + */ + private void write3(int outAndIn) throws InterruptedException{ + if (Cools.isEmpty(outAndIn)) { + return; + } + if (outAndIn==666){ + siemensS7Net.Write("DB100.200", (short) 1); + }else if (outAndIn==999){ + siemensS7Net.Write("DB100.200", (short) 0); + }else { + String Db=null; + if (outAndIn<20){ + Db="DB100.180"; + }else if (outAndIn<30){ + Db="DB100.182"; + }else { + Db="DB100.184"; + } + if (outAndIn == 11 || outAndIn == 21 || outAndIn == 31){ + siemensS7Net.Write(Db, (byte) 1); // 鍏ュ簱 + }else if (outAndIn == 12 || outAndIn == 22 || outAndIn == 32){ + siemensS7Net.Write(Db, (byte) 2); // 鍑哄簱 + }else if (outAndIn == 10 || outAndIn == 20 || outAndIn == 30){ + siemensS7Net.Write(Db, (byte) 0); // 鍑哄簱 + } + } + } /** * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏� diff --git a/src/main/java/com/zy/core/thread/SteThread.java b/src/main/java/com/zy/core/thread/SteThread.java index 823247a..e6786c8 100644 --- a/src/main/java/com/zy/core/thread/SteThread.java +++ b/src/main/java/com/zy/core/thread/SteThread.java @@ -11,12 +11,16 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.BasSte; import com.zy.asrs.entity.BasSteOpt; +import com.zy.asrs.entity.WrkCharge; import com.zy.asrs.service.BasSteOptService; import com.zy.asrs.service.BasSteService; +import com.zy.common.model.enums.WrkChargeType; +import com.zy.core.DevpThread; import com.zy.core.News; import com.zy.core.ThreadHandler; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; +import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.enums.SteStatusType; import com.zy.core.model.SteSlave; @@ -175,7 +179,13 @@ steProtocol.setCrnStopRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 38)); steProtocol.setCrnStopFork(siemensS7Net.getByteTransform().TransInt16(result.Content, 40)); steProtocol.setCrnAllowRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 42)); - steProtocol.setChargeStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 44)); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); + if (!devpThread.charge0 || devpThread.charge1){ + steProtocol.setChargeStatus((short)1); + }else { + steProtocol.setChargeStatus((short)0); + } + OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); @@ -286,6 +296,21 @@ News.error("绌挎杞﹀啓鍏ュ懡浠や负绌�"); return false; } + //鍒ゆ柇灏忚溅鏄惁鍦ㄥ厖鐢� + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); + if (!devpThread.charge0 || devpThread.charge1){ + // led 寮傚父鏄剧ず + LedThread ledThread1 = (LedThread) SlaveConnection.get(SlaveType.Led, 1); + LedThread ledThread2 = (LedThread) SlaveConnection.get(SlaveType.Led, 1); + LedThread ledThread3 = (LedThread) SlaveConnection.get(SlaveType.Led, 1); + if (ledThread1 != null && ledThread2 != null && ledThread3 != null) { + MessageQueue.offer(SlaveType.Led, 1, new Task(3, "绌挎杞︽鍦ㄥ厖鐢�")); + MessageQueue.offer(SlaveType.Led, 2, new Task(3, "绌挎杞︽鍦ㄥ厖鐢�")); + MessageQueue.offer(SlaveType.Led, 3, new Task(3, "绌挎杞︽鍦ㄥ厖鐢�")); + } + News.error("绌挎杞︽鍦ㄥ厖鐢�"); + return false; + } command.setSteNo(slave.getId()); OperateResult result = null; // 寮�濮嬩换鍔� diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index d8701c4..cdfc724 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -183,21 +183,21 @@ # LED1 led[0]: id: 1 - ip: 10.10.10.205 + ip: 10.10.10.231 port: 5005 devpPlcId: ${wcs-slave.devp[0].id} staArr: 102 # LED1 led[1]: id: 2 - ip: 10.10.10.207 + ip: 10.10.10.232 port: 5005 devpPlcId: ${wcs-slave.devp[0].id} staArr: 202 # LED1 led[2]: id: 3 - ip: 10.10.10.206 + ip: 10.10.10.233 port: 5005 devpPlcId: ${wcs-slave.devp[0].id} staArr: 302 -- Gitblit v1.9.1