From e1ab7f1517041275be4b2e30210b2b65736b9d4a Mon Sep 17 00:00:00 2001 From: whycq <whycq> Date: 星期三, 16 三月 2022 13:02:50 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/xgmwcs' into xgmwcs --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 66 ++++++++++++++++++++- src/main/java/com/zy/core/thread/MelsecCrnThread.java | 1 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 4 + src/main/resources/mapper/WrkMastMapper.xml | 21 +++++++ src/main/java/com/zy/core/MainProcess.java | 5 + src/main/java/com/zy/core/enums/IoModeType.java | 32 ++++++++++ src/main/java/com/zy/core/thread/SiemensDevpThread.java | 29 ++++++++- src/main/resources/application.yml | 10 +++ 8 files changed, 155 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java index 604c778..6f9c9c0 100644 --- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java +++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java @@ -70,4 +70,8 @@ @Update("update cust_wait_pakin set io_status='F' where zpallet = #{barcode}") int updateWaitPakInStep2(String barcode); + WrkMast selectWorkingPakin(); + + WrkMast selectWorkingPakout(); + } 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 b3318a2..1c15707 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -37,6 +37,7 @@ import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.BarcodeThread; import com.zy.core.thread.LedThread; +import com.zy.core.thread.SiemensDevpThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -114,13 +115,17 @@ // } // 鑾峰彇鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); if (staProtocol == null) { continue; } else { staProtocol = staProtocol.clone(); } + + // 鍏ュ嚭搴撴ā寮忓垽鏂� + if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; } + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() @@ -265,13 +270,17 @@ // 閬嶅巻鍏ュ簱鍙� for (DevpSlave.Sta inSta : devp.getInSta()) { // 鑾峰彇鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); if (staProtocol == null) { continue; } else { staProtocol = staProtocol.clone(); } + + // 鍏ュ嚭搴撴ā寮忓垽鏂� + if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; } + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999) @@ -329,13 +338,17 @@ // } // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); if (staProtocol == null) { continue; } else { staProtocol = staProtocol.clone(); } + + // 鍏ュ嚭搴撴ā寮忓垽鏂� + if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){ if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) { @@ -690,13 +703,18 @@ continue; } // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); if (staProtocol == null) { continue; } else { staProtocol = staProtocol.clone(); } + + // 鍏ュ嚭搴撴ā寮忓垽鏂� + if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; } + + // 鏌ヨ绔欑偣璇︾粏淇℃伅 BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); if (staDetl == null) { @@ -1016,13 +1034,17 @@ // 閬嶅巻绌烘澘鍏ュ簱鍙� for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) { // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo()); if (staProtocol == null) { continue; } else { staProtocol = staProtocol.clone(); } + + // 鍏ュ嚭搴撴ā寮忓垽鏂� + if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; } + // 绔欑偣鏉′欢鍒ゆ柇 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999 || staProtocol.getWorkNo() == 9990 || staProtocol.getWorkNo() == 9997) && staProtocol.isPakMk()) { @@ -1588,5 +1610,39 @@ } } + /** + * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁� + */ + public void ioConvert() { + try { + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 + for (DevpSlave devp : slaveProperties.getDevp()) { + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + + WrkMast pakout = wrkMastMapper.selectWorkingPakout(); + if (pakout != null) { + if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { + // 鍑哄簱鍒囨崲涓� + devpThread.ioMode = IoModeType.PAKOUT_BOOTING; + + WrkMast pakin = wrkMastMapper.selectWorkingPakin(); + if (pakin == null && !devpThread.getStation().get(201).isLoading() && !devpThread.getStation().get(202).isLoading()) { + // 鍑哄簱妯″紡 + devpThread.ioMode = IoModeType.PAKOUT_MODE; + } + } + } else { + // 鍏ュ簱妯″紡 + devpThread.ioMode = IoModeType.PAKIN_MODE; + } + } + + } 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 0f4eae7..810f454 100644 --- a/src/main/java/com/zy/core/MainProcess.java +++ b/src/main/java/com/zy/core/MainProcess.java @@ -41,7 +41,8 @@ // 婕旂ず mainService.crnDemoOfLocMove1(); - + // 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁� + mainService.ioConvert(); // 鍏ュ簱 ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。 mainService.generateStoreWrkFile(); // 缁勬墭 mainService.generateStoreWrkFile0(); // WMS鍏ュ簱 @@ -58,7 +59,7 @@ // 鍫嗗灈鏈哄紓甯镐俊鎭褰� mainService.recCrnErr(); // 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐� - mainService.storeEmptyPlt(); +// mainService.storeEmptyPlt(); // 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣� mainService.ledExecute(); // 鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅 diff --git a/src/main/java/com/zy/core/enums/IoModeType.java b/src/main/java/com/zy/core/enums/IoModeType.java new file mode 100644 index 0000000..6fe2be5 --- /dev/null +++ b/src/main/java/com/zy/core/enums/IoModeType.java @@ -0,0 +1,32 @@ +package com.zy.core.enums; + +/** + * 鍏ュ嚭搴撴ā寮忔灇涓� + */ +public enum IoModeType { + + NONE((short) 0, "鏈煡"), + PAKIN_BOOTING((short) 1, "鍏ュ簱鍚姩涓�"), + PAKIN_MODE((short) 2, "鍏ュ簱妯″紡"), + PAKOUT_BOOTING((short) 3, "鍑哄簱鍚姩涓�"), + PAKOUT_MODE((short) 4, "鍑哄簱妯″紡"), + ; + + public Short id; + public String desc; + + IoModeType(Short id, String desc) { + this.id = id; + this.desc = desc; + } + + public static IoModeType get(Short id) { + for (IoModeType type : IoModeType.values()) { + if (id.equals(type.id)) { + return type; + } + } + return IoModeType.NONE; + } + +} diff --git a/src/main/java/com/zy/core/thread/MelsecCrnThread.java b/src/main/java/com/zy/core/thread/MelsecCrnThread.java index a3f1130..ce0f98d 100644 --- a/src/main/java/com/zy/core/thread/MelsecCrnThread.java +++ b/src/main/java/com/zy/core/thread/MelsecCrnThread.java @@ -198,7 +198,6 @@ } } - // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class); BasCrnp basCrnp = new BasCrnp(); diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index b4d912f..6eb8cb3 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -12,6 +12,7 @@ import com.zy.core.DevpThread; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; +import com.zy.core.enums.IoModeType; import com.zy.core.enums.SlaveType; import com.zy.core.model.DevpSlave; import com.zy.core.model.Task; @@ -47,8 +48,11 @@ add(150);add(151);add(152);add(153);add(154);add(155);add(156);add(157);add(158);add(159); add(160);add(161);add(162);add(163);add(164);add(165);add(166);add(167);add(168);add(169); add(170);add(171);add(172);add(173);add(174);add(175);add(176);add(177);add(178);add(179); - add(180);add(181);add(182); + add(180);add(181);add(182);add(183);add(184);add(185);add(186);add(187);add(188);add(189); + add(190);add(191);add(192); }}; + + public IoModeType ioMode = IoModeType.NONE; public SiemensDevpThread(DevpSlave slave) { this.slave = slave; @@ -110,7 +114,9 @@ * 璇诲彇鐘舵�� ====> 鏁村潡plc */ private void read() throws InterruptedException { - OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 166); + // 鏇存柊鍏ュ嚭搴撴ā寮� + updateIoMode(); + OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 186); if (result.IsSuccess) { for (int i = 0; i < 83; i++) { Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 @@ -124,7 +130,7 @@ } } Thread.sleep(200); - OperateResultExOne<byte[]> result0 = siemensS7Net.Read("DB101.0", (short) 166); + OperateResultExOne<byte[]> result0 = siemensS7Net.Read("DB101.0", (short) 186); if (result0.IsSuccess) { for (int i = 0; i < 83; i++) { Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 @@ -138,7 +144,7 @@ } } Thread.sleep(200); - OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB102.0", (short) 166); + OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB102.0", (short) 186); if (result1.IsSuccess) { for (int i = 0; i < 83; i++) { Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 @@ -157,6 +163,11 @@ staProtocol.setPakMk(true); } } + } + + OperateResultExOne<Short> result2 = siemensS7Net.ReadInt16("DB200.0"); + if (result2.IsSuccess) { + this.ioMode = IoModeType.get(result2.Content); } if (result.IsSuccess && result0.IsSuccess && result1.IsSuccess) { @@ -210,6 +221,16 @@ } } + // 鏇存柊鍏ュ嚭搴撴ā寮� + private void updateIoMode() throws InterruptedException { + if (this.ioMode != IoModeType.NONE) { + if (!siemensS7Net.Write("DB200", this.ioMode.id).IsSuccess) { + OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎1F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId())); + log.error("鍐欏叆杈撻�佺嚎1F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId()); + } + } + } + /** * 蹇冭烦 */ diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 9d1b6d9..e2b441a 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -11,7 +11,8 @@ # url: jdbc:sqlserver://47.97.1.152:51433;databasename=xgmasrs # username: sa # password: Zoneyung@zy56$ - url: jdbc:sqlserver://10.10.10.238:1433;databasename=xgmasrs +# url: jdbc:sqlserver://10.10.10.238:1433;databasename=xgmasrs + url: jdbc:sqlserver://localhost:1433;databasename=xgmasrs username: sa password: sa@123 mvc: @@ -169,6 +170,9 @@ inSta[0]: staNo: 176 barcode: ${wcs-slave.barcode[0].id} + inSta[1]: + staNo: 180 + barcode: ${wcs-slave.barcode[1].id} # 绌烘澘鍏ュ簱鍙�1 emptyInSta[0]: staNo: 176 @@ -187,6 +191,10 @@ id: 1 ip: 10.10.10.52 port: 51236 + barcode[1]: + id: 2 + ip: 10.10.10.53 + port: 51236 # LED1 led[0]: id: 1 diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml index ee26d24..5436457 100644 --- a/src/main/resources/mapper/WrkMastMapper.xml +++ b/src/main/resources/mapper/WrkMastMapper.xml @@ -119,4 +119,25 @@ select top 1 * from dbo.asr_wrk_mast where 1=1 and (wrk_sts=3 or wrk_sts=12) and crn_no=#{crnNo} order by io_time,wrk_no </select> + <!-- 鍏ュ簱浠诲姟 --> + <select id="selectWorkingPakin" resultMap="BaseResultMap"> + select top 1 * from dbo.asr_wrk_mast where wrk_sts in (2,3,4) and io_type != 11 order by io_time,wrk_no + </select> + + <!-- 鍑哄簱浠诲姟 --> + <select id="selectWorkingPakout" resultMap="BaseResultMap"> + select top 1 * + from dbo.asr_wrk_mast + where (wrk_sts in (11,12) + or (wrk_sts in (14,15) and wrk_no in + ( + select wrk_no + from asr_bas_devp + where wrk_no > 0) + )) + and io_type != 11 + order by io_time,wrk_no + </select> + + </mapper> -- Gitblit v1.9.1