From 9aefce26355af7cd43bc958c045b196b355693b8 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期五, 10 五月 2024 19:49:46 +0800 Subject: [PATCH] #一楼rgv --- src/main/java/com/zy/core/enums/RgvStatusType.java | 5 src/main/java/com/zy/core/enums/RgvModeType.java | 2 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 161 ++++++++++++++++++++++++-- src/main/resources/mapper/WrkMastStaMapper.xml | 2 src/main/java/com/zy/core/model/protocol/StaProtocol.java | 7 + src/main/java/com/zy/asrs/entity/WrkMastSta.java | 7 + src/main/java/com/zy/asrs/utils/Utils.java | 3 src/main/java/com/zy/core/model/RgvSlave.java | 2 src/main/java/com/zy/core/MainProcess.java | 5 src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 2 src/main/java/com/zy/core/model/command/RgvCommand.java | 4 src/main/java/com/zy/core/thread/SiemensDevpThread.java | 133 +++++++++++++++++++++ src/main/resources/application.yml | 4 13 files changed, 311 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/zy/asrs/entity/WrkMastSta.java b/src/main/java/com/zy/asrs/entity/WrkMastSta.java index b18cf68..666144e 100644 --- a/src/main/java/com/zy/asrs/entity/WrkMastSta.java +++ b/src/main/java/com/zy/asrs/entity/WrkMastSta.java @@ -123,6 +123,13 @@ @TableField("wrk_crn") private Integer wrkCrn; + @ApiModelProperty(value= "") + @TableField("matnr1") + private Integer matnr1; + + @ApiModelProperty(value= "") + @TableField("matnr2") + private Integer matnr2; public WrkMastSta() {} public WrkMastSta(Long wrkNo,Integer wrkStart,Integer wrkEnd,Integer staStart,Integer staEnd,Date createTime,Date updateTime,Integer type,Integer wrkSts,Integer lineNumber,Integer wrkType,Date bignTime,Integer wrkCrn) { 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 d2181a2..d33e81d 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -2507,6 +2507,8 @@ short sta1 = 0; short souSta2 = 0; short sta2 = 0; + short matnr = 0; + short matnr2 = 0; //宸ヤ綅涓�浠诲姟 for (RgvSlave.Sta inStn : rgvSlave.getInStn()){ @@ -2534,9 +2536,19 @@ } workNo1 = workNo++; souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getSourceStaNo()); - sta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo()); + if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 1){ + sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2103); + } else if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 2) { + sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2002); + }else { + sta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo()); + } work1 = true; + if (inStn.getSourcePlcId() == 4){ + matnr = staProtocol.getMatnr(); + } devpThread.setPakMk(inStn.getSourceStaNo(),false); + break; } } @@ -2573,6 +2585,9 @@ souSta2 = inStn.getSourceStaNo().shortValue(); sta2 = inStn.getStaNo().shortValue(); work2 = true; + if (inStn.getSourcePlcId() == 4){ + matnr2 = staProtocol.getMatnr(); + } devpThread.setPakMk(inStn.getSourceStaNo(),false); break; } @@ -2594,12 +2609,15 @@ command.setDestinationStaNo2(sta2); // 鐩爣绔� command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� + command.setMatnr(matnr); + command.setMatnr2(matnr2); + if (workNo1 == 0 && workNo2 !=0){ - command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 浠诲姟妯″紡: 鍙栨斁璐� + command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 浠诲姟妯″紡: 2鍙栨斁璐� } else if (workNo1 != 0 && workNo2 ==0) { - command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 浠诲姟妯″紡: 鍙栨斁璐� + command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 浠诲姟妯″紡: 1鍙栨斁璐� }else { - command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 浠诲姟妯″紡: 鍙栨斁璐� + command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 浠诲姟妯″紡: all鍙栨斁璐� } command.setCommand(false); rgvTaskSave(command); @@ -2627,23 +2645,24 @@ } //宸ヤ綅涓�浠诲姟瀹屾垚 - if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 1) { + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 0) { WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1()); if (Cools.isEmpty(wrkMastSta)){ log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); continue; } for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId()); - StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo()); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo()); if (staProtocol == null) { continue; } else { staProtocol = staProtocol.clone(); } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isPakMk()){ -// staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); -// staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); + staProtocol.setWorkNo(wrkMastSta.getWrkNo().shortValue()); + staProtocol.setStaNo(wrkMastSta.getWrkEnd().shortValue()); if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) { continue; } @@ -2656,15 +2675,15 @@ } //宸ヤ綅浜屼换鍔″畬鎴� - if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 1) { - WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2()); + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 0) { + WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo2(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2()); if (Cools.isEmpty(wrkMastSta)){ log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2()); continue; } for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId()); - StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo()); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo()); if (staProtocol == null) { continue; } else { @@ -2672,16 +2691,122 @@ } if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isPakMk()){ // staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); -// staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); - if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) { - continue; - } +//// staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); +// if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) { +// continue; +// } } } MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand())); log.info("{}鍙穜gv宸ヤ綅浜屽伐浣滃畬鎴愬浣�,宸ヤ綔鍙�:{}",rgvSlave.getId(),wrkMastSta.getWrkNo2()); + } + } + } + + //浜屽彿rgv杈撻�佺嚎鍛戒护涓嬪彂 + public synchronized void RGV2Taskput() { + for (RgvSlave rgvSlave:slaveProperties.getRgv()) { + if (rgvSlave.getId() !=2){ + continue; + } + ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (Cools.isEmpty(rgvProtocol)){ + continue; + }else { + rgvProtocol = rgvProtocol.clone(); + } + + //宸ヤ綅涓�浠诲姟瀹屾垚 + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN1 && rgvProtocol.getLoaded1() == 1) { + WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1()); + if (Cools.isEmpty(wrkMastSta)){ + log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); + continue; + } + for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + + if (outStn.getStaPlcId() == 2){ + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isPakMk()){ + staProtocol.setWorkNo(wrkMastSta.getWrkNo().shortValue()); + staProtocol.setStaNo((short) 2106); + staProtocol.setMatnr(wrkMastSta.getMatnr1().shortValue()); + + if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) { + continue; + } + } + } + + } + } + + //宸ヤ綅浜屼换鍔″畬鎴� + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN8 && rgvProtocol.getLoaded1() == 1) { + WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2()); + if (Cools.isEmpty(wrkMastSta)){ + log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2()); + continue; + } + for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (outStn.getStaPlcId() == 2){ + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isPakMk()){ + staProtocol.setWorkNo(wrkMastSta.getWrkNo2().shortValue()); + staProtocol.setStaNo((short) 2106); + staProtocol.setMatnr(wrkMastSta.getMatnr2().shortValue()); + + if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) { + continue; + } + } + } + } + } + } + } + + public synchronized void RGV2TaskOver() { + for (RgvSlave rgvSlave:slaveProperties.getRgv()) { + if (rgvSlave.getId() !=2){ + continue; + } + ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (Cools.isEmpty(rgvProtocol)){ + continue; + }else { + rgvProtocol = rgvProtocol.clone(); + } + + //宸ヤ綅涓�浠诲姟瀹屾垚 + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 0) { + + MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(3,new RgvCommand())); + log.info("{}鍙穜gv宸ヤ綅涓�宸ヤ綔瀹屾垚澶嶄綅,宸ヤ綔鍙�:{}",rgvSlave.getId(),rgvProtocol.getTaskNo1()); + } + + //宸ヤ綅浜屼换鍔″畬鎴� + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 0) { + + + MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand())); + log.info("{}鍙穜gv宸ヤ綅浜屽伐浣滃畬鎴愬浣�,宸ヤ綔鍙�:{}",rgvSlave.getId(),rgvProtocol.getTaskNo2()); } } } @@ -2705,6 +2830,8 @@ wrkMastSta.setUpdateTime(now); wrkMastSta.setWrkCrn(command.getRgvNo()); wrkMastSta.setWrkType(command.getTaskMode().intValue()); + wrkMastSta.setMatnr1(command.getMatnr().intValue()); + wrkMastSta.setMatnr2(command.getMatnr2().intValue()); return wrkMastStaService.insert(wrkMastSta); } diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java index 2281702..a41eae0 100644 --- a/src/main/java/com/zy/asrs/utils/Utils.java +++ b/src/main/java/com/zy/asrs/utils/Utils.java @@ -40,7 +40,8 @@ public static short getRgvEndStaNo(Integer rgvNo,Integer staNo){ Map<Integer, Integer> rgv1Map = new HashMap<>(); Map<Integer, Integer> rgv2Map = new HashMap<>(); - rgv2Map.put(4007,2103); + rgv2Map.put(4002,4001); rgv2Map.put(4011,4010); + rgv2Map.put(2101,2102); Map<Integer, Integer> rgv3Map = new HashMap<>(); switch (rgvNo){ case 1: diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java index 5343a4f..d75b130 100644 --- a/src/main/java/com/zy/core/MainProcess.java +++ b/src/main/java/com/zy/core/MainProcess.java @@ -75,8 +75,11 @@ // mainService.crn5StnToOutStn(); //rgv浠诲姟 mainService.RGVTaskPut(); - //rgv浠诲姟瀹屾垚 + //rgv1,3浠诲姟瀹屾垚 mainService.RGVTaskOver(); + //rgv2浠诲姟瀹屾垚 + mainService.RGV2Taskput(); + mainService.RGV2TaskOver(); } catch (Exception e) { diff --git a/src/main/java/com/zy/core/enums/RgvModeType.java b/src/main/java/com/zy/core/enums/RgvModeType.java index 81d1747..70d4104 100644 --- a/src/main/java/com/zy/core/enums/RgvModeType.java +++ b/src/main/java/com/zy/core/enums/RgvModeType.java @@ -10,6 +10,8 @@ HAND(1, "鎵嬪姩"), HALF_AUTO(2, "鍗婅嚜鍔�"), AUTO(3, "鑷姩"), + OUTSTN1(7,"宸ヤ綔浣�1璇锋眰鍑虹珯"), + OUTSTN8(8,"宸ヤ綔浣�1璇锋眰鍑虹珯"), AUTO2(100, "鍏跺畠"), ; diff --git a/src/main/java/com/zy/core/enums/RgvStatusType.java b/src/main/java/com/zy/core/enums/RgvStatusType.java index 5927760..6159b49 100644 --- a/src/main/java/com/zy/core/enums/RgvStatusType.java +++ b/src/main/java/com/zy/core/enums/RgvStatusType.java @@ -11,8 +11,9 @@ PICK_WAIT((short) 2, "鍙栬揣绛夊緟"), PICK_WORKING((short) 3, "鍙栬揣涓�"), RELEASE_WALK((short) 4, "鏀捐揣璧拌"), - RELEASE_WAIT((short) 5, "鏀捐揣绛夊緟"), - RELEASE_WORKING((short) 6, "鏀捐揣涓�"), + + OUTSTN1((short)5,"宸ヤ綔浣�1璇锋眰鍑虹珯"), + OUTSTN8((short)6,"宸ヤ綔浣�2璇锋眰鍑虹珯"), WALKING((short) 9, "璧拌涓�"), WAITING((short) 90, "宸ヤ綅涓�浠诲姟瀹屾垚绛夊緟WCS纭"), WAITING2((short) 91, "宸ヤ綅浜屼换鍔″畬鎴愮瓑寰匴CS纭"), diff --git a/src/main/java/com/zy/core/model/RgvSlave.java b/src/main/java/com/zy/core/model/RgvSlave.java index a89d9d0..5611a67 100644 --- a/src/main/java/com/zy/core/model/RgvSlave.java +++ b/src/main/java/com/zy/core/model/RgvSlave.java @@ -24,6 +24,8 @@ private Integer sourceStaNo;//婧愮珯 private Integer sourcePlcId; + + private Integer staNo;//鐩爣绔� private Integer staPlcId; diff --git a/src/main/java/com/zy/core/model/command/RgvCommand.java b/src/main/java/com/zy/core/model/command/RgvCommand.java index 1472669..ec5ea94 100644 --- a/src/main/java/com/zy/core/model/command/RgvCommand.java +++ b/src/main/java/com/zy/core/model/command/RgvCommand.java @@ -53,6 +53,10 @@ @JSONField(serialize = false) private RgvTaskModeType taskModeType; + private Short matnr; + + private Short matnr2; + //**************宸ヤ綅2************** diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java index d6df231..32f1deb 100644 --- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java @@ -11,7 +11,7 @@ import java.util.Map; @Data -public class RgvProtocol { +public class RgvProtocol implements Cloneable{ private Integer RgvNo; diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java index fb81cc3..dc03705 100644 --- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java @@ -22,6 +22,10 @@ private Short staNo; // ---------------------------------------------------------------- + // 鐗╂枡浠g爜 + private Short matnr; + + // ---------------------------------------------------------------- // 鑷姩 private boolean autoing; @@ -87,6 +91,7 @@ private boolean force = false; private short amount = 0; + private Short tongType = 0; public Boolean isErr(){ if (frontErr || backErr || highErr || leftErr || rightErr || weightErr || barcodeErr){ @@ -107,7 +112,7 @@ basDevp.setLocType1((short) 0); // 楂樹綆绫诲瀷{0:鏈煡,1:浣庡簱浣�,2:楂樺簱浣峿 basDevp.setLocType2((short) 0); // 瀹界獎绫诲瀷{0:鏈煡,1:绐勫簱浣�,2:瀹藉簱浣峿 basDevp.setLocType3((short) 0); // 杞婚噸绫诲瀷{0:鏈煡,1:杞诲簱浣�,2:閲嶅簱浣峿 - basDevp.setLocType1(high != low && high ? (short) 2 : (short) 1); + basDevp.setLocType1(high != low && low ? (short) 1 : (short) 2); // basDevp. return basDevp; } diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index 81e9870..85db633 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -205,8 +205,9 @@ case 1: switch (slave.getId()){ case 1: - case 2: read();break; + case 2: + read10();break; case 3: read30();break; case 4: @@ -216,7 +217,16 @@ break; // 鍐欐暟鎹� ID+鐩爣绔� case 2: - write((StaProtocol)task.getData()); + switch (slave.getId()){ + case 1: + case 3: + write((StaProtocol)task.getData()); + case 2: + write10((StaProtocol)task.getData());break; + + + } + break; default: break; @@ -359,6 +369,95 @@ } } + private void read10() throws InterruptedException { + ArrayList<Integer> staNos = getStaNo(); + int staNoSize = staNos.size(); + OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (getStaNo().size() * 10)); + 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((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 10)); // 宸ヤ綔鍙� + staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*10 + 4 )); // 鐩爣绔� + staProtocol.setMatnr(siemensS7Net.getByteTransform().TransInt16(result.Content, i*10 + 6 )); // 鐩爣绔� + } + } + Thread.sleep(200); + OperateResultExOne<byte[]> result1 = null; + result1 = siemensS7Net.Read("DB101.0", (short) (getStaNo().size() * 10)); + if (result1.IsSuccess) { + for (int i = 0; i < staNoSize; i++) { + Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 + boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*10+8, 2); + 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.setHigh(status[6]); // 楂樺簱浣� + staProtocol.setLow(status[7]); // 浣庡簱浣� + staProtocol.setEmptyOutPalletRequire(status[8]); // 绌烘墭鐩樺彲鍑洪渶姹備俊鍙� + staProtocol.setEmptyInPalletRequire(status[9]); // 绌烘墭鐩樺彲鍏ラ渶姹備俊鍙� + + if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { + staProtocol.setPakMk(true); + } + } + } + + // 鏉$爜鎵弿鍣� + if(slave.getId() == 1) { + Thread.sleep(200); + OperateResultExOne<byte[]> result2 = null; + result2 = siemensS7Net.Read("DB101.208.0", (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 && !Cools.isEmpty(result1) && 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) { + 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())); + log.error("鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [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()); + } + } + private void read30() throws InterruptedException { ArrayList<Integer> staNos = getStaNo(); int staNoSize = staNos.size(); @@ -440,7 +539,9 @@ staProtocol.setAutoing(status[0]); // 鑷姩 staProtocol.setLoading(status[1]); // 鏈夌墿 staProtocol.setInEnable(status[2]); // 鍙叆 - staProtocol.setAmount(matnr); + staProtocol.setMatnr(matnr); + staProtocol.setTongType(tongType); + staProtocol.setLow(true); @@ -505,6 +606,32 @@ } /** + * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏� + */ + private void write10(StaProtocol staProtocol) throws InterruptedException { + if (null == staProtocol) { + return; + } + ArrayList<Integer> staNos = getWriteStaNo(); + int index = staNos.indexOf(staProtocol.getSiteId()); + OperateResult write = siemensS7Net.Write("DB100." + index*8, staProtocol.getWorkNo().intValue()); // 宸ヤ綔鍙� + OperateResult write1 = siemensS7Net.Write("DB100." + (index*8+4), staProtocol.getStaNo()); // 鐩爣绔� + OperateResult write2 = siemensS7Net.Write("DB100." + (index*8+6), staProtocol.getMatnr()); // 鐩爣绔� + + if (!write.IsSuccess || !write1.IsSuccess || !write2.IsSuccess) { + staProtocol = station.get(staProtocol.getSiteId()); + if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) { + staProtocol.setPakMk(true); + } + OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol))); + log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎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))); + log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol)); + } + } + + /** * 蹇冭烦 */ private void heartbeat(){ diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ea37b45..fd78601 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -258,6 +258,10 @@ sourcePlcId: 4 staNo: 2103 staPlcId: 2 + inStn[1]: + sourceStaNo: 2003 + sourcePlcId: 4 + outStn[0]: staNo: 2103 staPlcId: 2 diff --git a/src/main/resources/mapper/WrkMastStaMapper.xml b/src/main/resources/mapper/WrkMastStaMapper.xml index cb23804..1a5a379 100644 --- a/src/main/resources/mapper/WrkMastStaMapper.xml +++ b/src/main/resources/mapper/WrkMastStaMapper.xml @@ -19,6 +19,8 @@ <result column="bign_time" property="bignTime" /> <result column="wrk_crn" property="wrkCrn" /> <result column="wrk_no2" property="wrkNo2"/> + <result column="matnr1" property="matnr1"/> + <result column="matnr2" property="matnr2"/> </resultMap> <select id="selectByRgvNoandWrkNo" resultMap="BaseResultMap"> -- Gitblit v1.9.1