From 09fcc4ec56a1ce6c0fcb308348d8dd5e2c08d336 Mon Sep 17 00:00:00 2001 From: fyxc <fyxc@qq.com> Date: 星期四, 22 五月 2025 14:33:06 +0800 Subject: [PATCH] server commit files --- src/main/java/com/zy/core/thread/impl/FyDevpThread.java | 161 +++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 111 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/zy/core/thread/impl/FyDevpThread.java b/src/main/java/com/zy/core/thread/impl/FyDevpThread.java index 36cb2a9..c13f926 100644 --- a/src/main/java/com/zy/core/thread/impl/FyDevpThread.java +++ b/src/main/java/com/zy/core/thread/impl/FyDevpThread.java @@ -13,6 +13,7 @@ import com.zy.core.News; 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; @@ -39,6 +40,8 @@ private DevpSlave slave; private SiemensS7Net siemensS7Net; private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>(); + + public IoModeType ioModeOf2_5 = IoModeType.PAKOUT_MODE; private short heartBeatVal = 1; private int barcodeSize = 10; @@ -96,6 +99,10 @@ write((StaProtocol) task.getData()); read(); break; + // 鎶ヨ + case 3: + writeError((Integer) task.getData()); + break; default: break; } @@ -133,6 +140,8 @@ * 璇诲彇鐘舵�� ====> 鏁村潡plc */ private void read() throws InterruptedException { + // 鏇存柊鍏ュ嚭搴撴ā寮� + updateIoMode(); int staNoSize = staNos2.size(); OperateResultExOne<byte[]> result = siemensS7Net.Read("DB82.14", (short) (staNoSize * 26)); if (result.IsSuccess) { @@ -142,13 +151,11 @@ if (null == staProtocol) { staProtocol = new StaProtocol(); staProtocol.setSiteId(siteId); - if (siteId == 1015) { staProtocol.setLocNo("1200301"); } else if (siteId == 1026) { staProtocol.setLocNo("1200305"); } - station.put(siteId, staProtocol); } Thread.sleep(300); @@ -156,20 +163,30 @@ staProtocol.setAutoing(status[0]); // 鑷姩 staProtocol.setIdle(status[1]); //绌洪棽 staProtocol.setLoading(status[2]); // 鏈夌墿 + staProtocol.setInEnable(status[3]); // 鍙叆 + staProtocol.setOutEnable(status[4]);// 鍙嚭 + staProtocol.setBackErr(status[5]); staProtocol.setLeftErr(status[6]); staProtocol.setRightErr(status[7]); - staProtocol.setHighErr(status[8]); - staProtocol.setWeightErr(status[9]); - staProtocol.setLow(status[10]); - staProtocol.setHigh(status[11]); - staProtocol.setInEnable(status[13]); // 鍙叆 - staProtocol.setOutEnable(status[14]);// 鍙嚭 +// staProtocol.setHighErr(status[8]); +// staProtocol.setWeightErr(status[9]); +// staProtocol.setLow(status[10]); +// staProtocol.setHigh(status[11]); + + boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result.Content, i * 26 + 1, 2); + staProtocol.setHighErr(status2[0]); + staProtocol.setWeightErr(status2[1]); + staProtocol.setLow(status2[2]); + staProtocol.setHigh(status2[3]); + staProtocol.setBarcodeErr(status2[4]); +// staProtocol.setInEnable(status[13]); // 鍙叆 +// staProtocol.setOutEnable(status[14]);// 鍙嚭 staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 26 + 2)); // 宸ヤ綔鍙� - staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 26 + 4)); // 鐩爣绔� + staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 26 + 4)); // 鐩爣绔� staProtocol.setFinishWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 26 + 6)); //宸插畬鎴愬伐浣滃彿 staProtocol.setBarcode(siemensS7Net.getByteTransform().TransString(result.Content, i * 26 + 10, 12, "UTF-8").trim()); //鏉$爜 staProtocol.setWeight(siemensS7Net.getByteTransform().TransInt32(result.Content, i * 26 + 22)); //閲嶉噺 @@ -185,14 +202,17 @@ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId())); // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� try { + BasDevpService basConveyorStaService = SpringUtils.getBean(BasDevpService.class); + List<BasDevp> stations = new ArrayList<>(); for (Integer sta : staNos2) { StaProtocol staProtocol = station.get(sta); BasDevp sqlModel = staProtocol.toSqlModel(); stations.add(sqlModel); + + } if (!stations.isEmpty()) { - BasDevpService basConveyorStaService = SpringUtils.getBean(BasDevpService.class); if (null != basConveyorStaService && !basConveyorStaService.updateBatchById(stations)) { throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�"); } @@ -220,50 +240,73 @@ index += 1; short[] array = new short[2]; - array[0] = staProtocol.getWorkNo(); - array[1] = staProtocol.getStaNo(); + array[0] = staProtocol.getStaNo(); + array[1] = staProtocol.getWorkNo(); String staNoAddress = "DB83." + (index * 8 + 4); String workNoAddress = "DB83." + (index * 8 + 6); - OperateResult write1 = null; // 宸ヤ綔鍙� - OperateResult write2 = null; // 鐩爣绔� + OperateResult write1 = siemensS7Net.Write(staNoAddress, array); + if (!write1.IsSuccess) { + OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(array))); + log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(array)); + return; + } + OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁鎴愬姛銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(array))); + log.info("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(array)); + } - //浠诲姟涓嬪彂娆℃暟 - int writeCount = 0; - do { - write1 = siemensS7Net.Write(workNoAddress, array[0]); // 宸ヤ綔鍙� - write2 = siemensS7Net.Write(staNoAddress, array[1]); - if ((write1.IsSuccess && write2.IsSuccess)) { - log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋},{}锛屽啓鍏ユ鏁�={}", staProtocol.getSiteId(), JSON.toJSON(staProtocol.getWorkNo()), JSON.toJSON(staProtocol.getStaNo()), writeCount); -// OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB82.14", (short) (staNos2.indexOf(siteId) * 26)); -// //OperateResultExOne<byte[]> readResult = siemensS7Net.Read(staNoAddress, (short) 8); -// if (readResult.IsSuccess) { -// int workNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 2); // 宸ヤ綔鍙� -// int staNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 4); // 鐩爣绔� -// // int staNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0); -// //int workNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0); -// if (workNo == workNo2 && staNo == staNo2) { -// //浠诲姟鍛戒护鍐欏叆鎴愬姛 -// log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋},{}锛屽啓鍏ユ鏁�={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount); -// return true; -// } else {//杩斿洖缁撴灉鏄垚鍔熶簡锛屼絾鏄湡瀹炲�间笉鐩稿悓 -// writeCount++; -// log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={}锛寋},{}锛屽啓鍏ユ鏁�={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount); -// } -// } else { -// writeCount++; -// log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},{},鍐欏叆娆℃暟={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount); -// } - } else { - writeCount++; - } - } while (writeCount < 5); -// StaProtocol staProtocol = station.get(siteId); -// if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) { -// staProtocol.setPakMk(true); -// } - OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(array))); - log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(array)); + /** + * 鎶ヨ + */ + private void writeError(Integer staNo) throws InterruptedException { + if (null == staNo) { + return; + } + + ArrayList<Integer> lift1 = new ArrayList<Integer>() {{ + add(1011); + add(1012); + }}; + + ArrayList<Integer> lift2 = new ArrayList<Integer>() {{ + add(1021); + add(1022); + add(1023); + }}; + + ArrayList<Integer> devp1 = new ArrayList<Integer>() {{ + add(1013); + add(1014); + add(1015); + }}; + + ArrayList<Integer> devp2 = new ArrayList<Integer>() {{ + add(1024); + add(1025); + add(1026); + }}; + + String dbAddress = "DB82.48"; + if (lift1.contains(staNo)) { + dbAddress = "DB82.48"; + } else if (lift2.contains(staNo)) { + dbAddress = "DB82.178"; + } else if (devp1.contains(staNo)) { + dbAddress = "DB82.100"; + } else if (devp2.contains(staNo)) { + dbAddress = "DB82.256"; + }else { + return; + } + + OperateResult write1 = siemensS7Net.Write(dbAddress, (short) 1); + if (!write1.IsSuccess) { + OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鎶ヨ鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(true))); + log.error("鍐欏叆杈撻�佺嚎绔欑偣鎶ヨ鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(true)); + return; + } + OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鎶ヨ鏁版嵁鎴愬姛銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(true))); + log.info("鍐欏叆杈撻�佺嚎绔欑偣鎶ヨ鏁版嵁鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(true)); } /** @@ -316,4 +359,22 @@ } + // 鏇存柊鍏ュ嚭搴撴ā寮� + private void updateIoMode() { + if (this.ioModeOf2_5 != null && (this.ioModeOf2_5.id == 0 || this.ioModeOf2_5.id == 1)) { + short[] array = new short[1]; + array[0] = this.ioModeOf2_5.id; + if (!siemensS7Net.Write("DB83.80", this.ioModeOf2_5.id == 1).IsSuccess) { + OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎2.5F鍏ュ嚭搴撴ā寮忓け璐�", this.ioModeOf2_5)); + log.error("銆恵0}銆戝啓鍏ヨ緭閫佺嚎2.5F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", this.ioModeOf2_5); + } else { + if (station.get(1031) != null) { + station.get(1031).setOutInModel(this.ioModeOf2_5.id); + station.get(1032).setOutInModel(this.ioModeOf2_5.id); + } + } + } + + } + } -- Gitblit v1.9.1