From e3b8bc50db4cf9d5fcac58b56d1cb7e25154c3a6 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期五, 09 八月 2024 10:34:26 +0800 Subject: [PATCH] #改造 --- src/main/java/com/zy/asrs/utils/Utils.java | 55 +++++++++++ src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 54 ++++++++++ src/main/java/com/zy/asrs/entity/WrkMast.java | 23 ++++ src/main/java/com/zy/core/thread/SiemensDevpThread.java | 26 +++++ src/main/resources/application.yml | 90 +++++++++++++++++- 5 files changed, 240 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java index 6f5652b..81b31be 100644 --- a/src/main/java/com/zy/asrs/entity/WrkMast.java +++ b/src/main/java/com/zy/asrs/entity/WrkMast.java @@ -380,6 +380,29 @@ } return null; } + public Integer getStaNoConvert(Integer crnNo){ + switch (this.staNo){ + case 114: + switch (crnNo){ + case 1: + return 114; + case 2: + return 107; + case 3: + return 211; + } + case 214: + switch (crnNo){ + case 1: + return 111; + case 2: + return 207; + case 3: + return 214; + } + } + return this.staNo; + } public String getSourceStaNo$(){ BasDevpService service = SpringUtils.getBean(BasDevpService.class); 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 2e3d34e..c2293c8 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -844,6 +844,29 @@ // 鏌ヨ宸ヤ綔妗� WrkMast wrkMast = wrkMastMapper.selectPakOutStep16(staProtocol.getSiteId()); if (wrkMast == null) { + // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗� + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId()); + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) { + // 绉诲姩涓� + continue; + } + // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁� + if (crnProtocol.modeType == CrnModeType.AUTO + && crnProtocol.statusType == CrnStatusType.WAITING + && crnProtocol.forkPosType == CrnForkPosType.HOME + && crnProtocol.getBay().equals(crnStn.getBay().shortValue()) && crnProtocol.getLevel().equals(crnStn.getLev().shortValue())) { + News.info("鍫嗗灈鏈烘帴椹充换鍔″畬鎴愶紝宸ヤ綔鍙凤細"+crnProtocol.getTaskNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+crnSlave.getId()+"锛涙帴椹虫斁璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹宠璧扮洰鏍囩珯锛�"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo())); + // 涓嬪彂绔欑偣淇℃伅 + staProtocol.setWorkNo(crnProtocol.getTaskNo()); + staProtocol.setStaNo(Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).shortValue()); + if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { + continue; + } + // 澶嶄綅鍫嗗灈鏈� + crnThread.setResetFlag(true); + continue; + } continue; } // 鍒ゆ柇宸ヤ綔妗f潯浠� @@ -866,7 +889,7 @@ // 涓嬪彂绔欑偣淇℃伅 staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); - staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); + staProtocol.setStaNo(wrkMast.getStaNoConvert(crnProtocol.getCrnNo()).shortValue()); if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { continue; } @@ -969,8 +992,35 @@ // 鑾峰彇宸ヤ綔鐘舵�佷负 2,3,4,5,6 鐨勫叆搴撳伐浣滄。 WrkMast wrkMast = wrkMastMapper.selectPakInStep23456(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo()); - if(null == wrkMast) { + if(null == wrkMast || (wrkMast.getCrnNo()==2 && wrkMast.getWrkSts()==2 && crnProtocol.getCrnNo()!=2)) { // News.error("{}绔欑偣鏌ヨ鏃犲緟鍏ュ簱鏁版嵁 宸ヤ綔鍙�={}", crnStn.getStaNo(), staProtocol.getWorkNo()); + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (wrkMastMapper.selectWorking(slave.getId()) != null) { + continue; + } + // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁� + if (crnProtocol.modeType == CrnModeType.AUTO + && crnProtocol.statusType == CrnStatusType.IDLE + && crnProtocol.forkPosType == CrnForkPosType.HOME) { + News.info("鍫嗗灈鏈烘帴椹充换鍔℃墽琛岋紝宸ヤ綔鍙凤細"+staProtocol.getWorkNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+slave.getId()+"锛涙帴椹冲彇璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹虫斁璐т綅锛�"+staProtocol.getSiteId()); + // 鍫嗗灈鏈烘帴椹充换鍔″懡浠や笅鍙戝尯 -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(staProtocol.getWorkNo()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setCommand((short) 0); + crnCommand.setTaskMode(CrnTaskModeType.XY_MOVE); // 浠诲姟妯″紡: 绔欎綅杞Щ + crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(Utils.getRow(staProtocol.getSiteId())); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(Utils.getBay(staProtocol.getSiteId())); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(Utils.getLev(staProtocol.getSiteId())); // 鐩爣搴撲綅灞� + if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) { + News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", slave.getId(), JSON.toJSONString(crnCommand)); + } + return true; + } continue; } diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java index 9a49a36..d16c27a 100644 --- a/src/main/java/com/zy/asrs/utils/Utils.java +++ b/src/main/java/com/zy/asrs/utils/Utils.java @@ -220,6 +220,61 @@ } /** + * 閫氳繃搴撲綅鍙疯幏鍙� 鎺� + */ + public static short getRow(Integer staNo) { + switch (staNo){ + case 108: + return 4; + case 208: + return 18; + case 112: + return 3; + case 212: + return 19; + } + throw new RuntimeException("绔欑偣瑙f瀽寮傚父"); + } + + /** + * 閫氳繃搴撲綅鍙疯幏鍙� 鍒� + */ + public static short getBay(Integer staNo) { + switch (staNo){ + case 108: + return 5; + case 208: + return 5; + case 112: + return 2; + case 212: + return 6; + } + throw new RuntimeException("绔欑偣瑙f瀽寮傚父"); + } + + /** + * 閫氳繃搴撲綅鍙疯幏鍙� 灞� + */ + public static short getLev(Integer staNo) { + return 1; + } + public static Integer getStaNoConvertCentreOther2(Integer staNo){//鏀捐揣涓鸿幏鍙栬璧扮洰鏍囦綅 + switch (staNo){ + case 108: + return 111; + case 208: + return 211; + case 112: + return 114; + case 212: + return 214; + default: + return staNo; + } + } + + /** * 閫氳繃鎺掑垪灞傛嫾鎺ュ嚭搴撲綅鍙� */ public static String append(int row, int bay, int lev) { diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index 1a2bfc5..bda6582 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.core.exception.CoolException; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.mapper.BasDevpMapper; import com.zy.asrs.service.BasDevpService; @@ -44,12 +45,18 @@ private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>(); private short heartBeatVal = 1; private int barcodeSize = 2; - public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{ + public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{ add(100);add(101);add(102);add(103);add(104);add(105);add(106);add(107);add(108);add(109); add(110);add(111); add(200);add(201);add(202);add(203);add(204);add(205);add(206);add(207);add(208);add(209); add(210);add(211); add(300); + }}; + public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{ + add(112);add(113);add(114); + }}; + public static final ArrayList<Integer> staNos3 = new ArrayList<Integer>() {{ + add(212);add(213);add(214); }}; public boolean charge0; @@ -70,6 +77,20 @@ */ public IoModeType ioModeOf1F = IoModeType.NONE; public IoModeType ioModeOf2F = IoModeType.NONE; + + private ArrayList<Integer> getStaNo() { + switch (slave.getId()) { + case 1: + return staNos1; + case 2: + return staNos2; + case 3: + return staNos3; + default: + throw new CoolException("鏈嶅姟鍣ㄥ紓甯�"); + } + } + @Override @SuppressWarnings("InfiniteLoopStatement") @@ -132,6 +153,7 @@ private void read() throws InterruptedException { // 鏇存柊鍏ュ嚭搴撴ā寮� updateIoMode(); + ArrayList<Integer> staNos = getStaNo(); OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 50); if (result.IsSuccess) { for (int i = 0; i < 25; i++) { @@ -244,6 +266,7 @@ if (null == staProtocol) { return; } + ArrayList<Integer> staNos = getStaNo(); int index = staNos.indexOf(staProtocol.getSiteId()); OperateResult writeId,writeDest; @@ -358,6 +381,7 @@ if (null == staProtocol || times > 3) { return; } + ArrayList<Integer> staNos = getStaNo(); int index = staNos.indexOf(staProtocol.getSiteId()); OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo()); // 宸ヤ綔鍙� Thread.sleep(200); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index aa11a99..f2fcaf2 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -70,6 +70,13 @@ row: 4 bay: 5 lev: 1 + # 鍫嗗灈鏈哄嚭搴撶珯鐐� + crnOutStn[1]: + devpPlcId: ${wcs-slave.devp[1].id} + staNo: 112 + row: 3 + bay: 2 + lev: 1 # 鍫嗗灈鏈�2 crn[1]: id: 2 @@ -132,6 +139,13 @@ row: 18 bay: 5 lev: 1 + # 鍫嗗灈鏈哄嚭搴撶珯鐐� + crnOutStn[1]: + devpPlcId: ${wcs-slave.devp[2].id} + staNo: 212 + row: 19 + bay: 6 + lev: 1 # 绌挎杞�1 ste[0]: id: 1 @@ -153,7 +167,7 @@ port: 502 rack: 0 slot: 0 - # 杈撻�佺嚎 + # 杈撻�佺嚎1 devp[0]: id: 1 ip: 10.10.10.61 @@ -201,6 +215,46 @@ barcode: ${wcs-slave.barcode[1].id} backSta: 200 led: ${wcs-slave.led[2].id} + # 杈撻�佺嚎2 + devp[1]: + id: 2 + ip: 10.10.11.61 + port: 102 + rack: 0 + slot: 0 + # 鍏ュ簱鍙�1 + inSta[0]: + staNo: 114 + barcode: ${wcs-slave.barcode[2].id} + backSta: 100 + led: ${wcs-slave.led[2].id} + # 绌烘澘鍏ュ簱鍙�1 + emptyInSta[0]: + staNo: 114 + barcode: ${wcs-slave.barcode[2].id} + # 鍑哄簱鍙�1 + outSta[0]: + staNo: 114 + # 杈撻�佺嚎3 + devp[2]: + id: 3 + ip: 10.10.12.61 + port: 102 + rack: 0 + slot: 0 + # 鍏ュ簱鍙�1 + inSta[0]: + staNo: 214 + barcode: ${wcs-slave.barcode[3].id} + backSta: 100 + led: ${wcs-slave.led[3].id} + # 绌烘澘鍏ュ簱鍙�1 + emptyInSta[0]: + staNo: 214 + barcode: ${wcs-slave.barcode[3].id} + # 鍑哄簱鍙�1 + outSta[0]: + staNo: 214 # 鏉$爜鎵弿浠� barcode[0]: id: 1 @@ -212,23 +266,49 @@ ip: 10.10.10.53 port: 51236 # LED1 + # 鏉$爜鎵弿浠� + barcode[2]: + id: 3 + ip: 10.10.11.53 + port: 51236 + # LED1 + # 鏉$爜鎵弿浠� + barcode[3]: + id: 4 + ip: 10.10.12.53 + port: 51236 + # LED1 led[0]: id: 1 ip: 10.10.10.205 port: 5005 - devpPlcId: ${wcs-slave.devp[0].id} + devpPlcId: ${wcs-slave.devp[1].id} staArr: 100 - # LED1 + # LED2 led[1]: id: 2 ip: 10.10.10.206 port: 5005 - devpPlcId: ${wcs-slave.devp[0].id} + devpPlcId: ${wcs-slave.devp[2].id} staArr: 300 - # LED1 + # LED3 led[2]: id: 3 ip: 10.10.10.207 port: 5005 devpPlcId: ${wcs-slave.devp[0].id} staArr: 200 + # LED4 + led[3]: + id: 4 + ip: 10.10.11.207 + port: 5005 + devpPlcId: ${wcs-slave.devp[1].id} + staArr: 200 + # LED5 + led[4]: + id: 5 + ip: 10.10.12.207 + port: 5005 + devpPlcId: ${wcs-slave.devp[2].id} + staArr: 200 -- Gitblit v1.9.1