From 4ce8f5eda14070c14a7401381a2a542d4441cd68 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 28 十二月 2020 19:10:16 +0800 Subject: [PATCH] ## --- src/main/java/com/zy/core/thread/MelsecDevpThread.java | 110 +++++++++++++++++++++++++++--------------------------- 1 files changed, 55 insertions(+), 55 deletions(-) diff --git a/src/main/java/com/zy/core/thread/MelsecDevpThread.java b/src/main/java/com/zy/core/thread/MelsecDevpThread.java index 36a4017..a07d2f0 100644 --- a/src/main/java/com/zy/core/thread/MelsecDevpThread.java +++ b/src/main/java/com/zy/core/thread/MelsecDevpThread.java @@ -8,6 +8,7 @@ import com.core.common.SpringUtils; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.service.BasDevpService; +import com.zy.asrs.utils.Utils; import com.zy.core.DevpThread; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; @@ -40,6 +41,7 @@ public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{ add(101);add(102);add(103);add(104);add(105);add(106);add(107); }}; + private List<Integer> errors = new ArrayList<>(); public MelsecDevpThread(DevpSlave slave) { this.slave = slave; @@ -93,6 +95,9 @@ log.error("杈撻�佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } melsecMcNet.ConnectClose(); + try { + Thread.sleep(1000); + } catch (InterruptedException ignore) {} return result; } @@ -100,9 +105,10 @@ * 璇诲彇鐘舵�� ====> 鏁村潡plc */ private void read() throws InterruptedException { - OperateResultExOne<byte[]> result = melsecMcNet.Read("DB100.0", (short) 40); + OperateResultExOne<byte[]> result = melsecMcNet.Read("D101", (short) 30); if (result.IsSuccess) { - for (int i = 1; i <= 7; i++) { + // 绔欑偣鏁版嵁 + for (int i = 0; i < staNos.size(); i++) { Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 StaProtocol staProtocol = station.get(siteId); if (null == staProtocol) { @@ -110,47 +116,45 @@ staProtocol.setSiteId(siteId); station.put(siteId, staProtocol); } - - staProtocol.setWorkNo(melsecMcNet.getByteTransform().TransInt16(result.Content, (i-1)*2)); // 宸ヤ綔鍙� - staProtocol.setStaNo(melsecMcNet.getByteTransform().TransInt16(result.Content, (i-1)*2+20)); // 鐩爣绔� + staProtocol.setWorkNo(melsecMcNet.getByteTransform().TransInt16(result.Content, (i)*2)); // 宸ヤ綔鍙� + staProtocol.setStaNo(melsecMcNet.getByteTransform().TransInt16(result.Content, (i)*2+40)); // 鐩爣绔� } } - Thread.sleep(100); - OperateResultExOne<byte[]> result1 = melsecMcNet.Read("DB100.40", (short) 8); + Thread.sleep(5000); + OperateResultExOne<boolean[]> result1 = melsecMcNet.ReadBool("M800", (short) 64); if (result1.IsSuccess) { - for (int i = 1; i <= 8; i++) { - boolean[] status = melsecMcNet.getByteTransform().TransBool(result1.Content, i-1, 1); - StaProtocol staProtocol = station.get(i); - staProtocol.setAutoing(status[0]); // 鑷姩 - staProtocol.setLoading(status[1]); // 鏈夌墿 - staProtocol.setInEnable(status[2]); // 鍙叆 - staProtocol.setOutEnable(status[3]);// 鍙嚭 - staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿 + for (int i = 0; i < staNos.size(); i++) { + Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 + StaProtocol staProtocol = station.get(siteId); + staProtocol.setAutoing(result1.Content[(i)*8]); // 鑷姩 + staProtocol.setLoading(result1.Content[(i)*8+1]); // 鏈夌墿 + staProtocol.setInEnable(result1.Content[(i)*8+2]); // 鍙叆 + staProtocol.setOutEnable(result1.Content[(i)*8+3]);// 鍙嚭 + staProtocol.setEmptyMk(result1.Content[(i)*8+4]); // 绌烘澘淇″彿 if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { staProtocol.setPakMk(true); } } } - // 鍙拌溅浣嶇疆 - OperateResultExOne<Short> result2 = melsecMcNet.ReadInt16("DB100.48"); - if (result2.IsSuccess) { - StaProtocol staProtocol = station.get(8); - staProtocol.setPosition(result2.Content); - } else { - OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆�8鍙峰彴杞﹁幏鍙栧疄鏃朵綅缃け璐ワ紒锛侊紒", DateUtils.convert(new Date()))); - log.error("8鍙峰彴杞﹁幏鍙栧疄鏃朵綅缃け璐ワ紒锛侊紒"); - } - +// Thread.sleep(100); +// errors.clear(); +// OperateResultExOne<boolean[]> result2 = melsecMcNet.ReadBool("M1000", (short) 21); +// if (result2.IsSuccess) { +// for (int i = 0; i < result2.Content.length; i++) { +// if (result2.Content[i]) { +// errors.add(i); +// } +// } +// } if (result.IsSuccess && result1.IsSuccess) { - OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� try { List<BasDevp> basDevps = new ArrayList<>(); - for (int i = 1; i <= 8; i++) { - StaProtocol staProtocol = station.get(i); + for (Integer siteId : staNos) { + StaProtocol staProtocol = station.get(siteId); basDevps.add(staProtocol.toSqlModel()); } BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); @@ -164,7 +168,7 @@ } else { OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - log.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort()); } } @@ -175,16 +179,10 @@ if (null == staProtocol) { return; } - OperateResult write = melsecMcNet.Write("DB100." + (staProtocol.getSiteId() - 1) * 2, staProtocol.getWorkNo()); // 宸ヤ綔鍙� - Thread.sleep(300); - OperateResult write1 = melsecMcNet.Write("DB100." + ((staProtocol.getSiteId() - 1) * 2 + 20), staProtocol.getStaNo()); // 鐩爣绔� -// boolean[] status = new boolean[8]; -// status[0] = staProtocol.isAutoing(); -// status[1] = staProtocol.isLoading(); -// status[2] = staProtocol.isInEnable(); -// status[3] = staProtocol.isOutEnable(); -// status[4] = staProtocol.isEmptyMk(); -// OperateResult write2 = siemensS7Net.Write("DB100." + ((staProtocol.getSiteId() - 1) + 40), status); // 鐘舵�� + System.out.println(); + OperateResult write = melsecMcNet.Write("D1" + Utils.zerofill(String.valueOf(staNos.indexOf(staProtocol.getSiteId())+1), 2), staProtocol.getWorkNo()); // 宸ヤ綔鍙� + Thread.sleep(400); + OperateResult write1 = melsecMcNet.Write("D1" + Utils.zerofill(String.valueOf(staNos.indexOf(staProtocol.getSiteId())+21), 2), staProtocol.getStaNo()); // 鐩爣绔� if (!write.IsSuccess || !write1.IsSuccess) { staProtocol = station.get(staProtocol.getSiteId()); if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) { @@ -193,6 +191,7 @@ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol))); log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol)); } else { + log.error("-------------------------------------------绗笁姝ャ�乕绔欑偣鍙凤細{}][宸ヤ綔鍙凤細{}]==>> 涓嬪彂杈撻�佺嚎鍚姩淇″彿鎴愬姛锛侊紒",staProtocol.getSiteId(),staProtocol.getWorkNo()); 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)); } @@ -207,7 +206,7 @@ } else { heartBeatVal = 1; } - OperateResult write = melsecMcNet.Write("DB100.50", heartBeatVal); + OperateResult write = melsecMcNet.Write("D141", heartBeatVal); if (!write.IsSuccess) { log.error("杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId()); } @@ -231,23 +230,24 @@ public static void main(String[] args) throws Exception { DevpSlave slave = new DevpSlave(); - slave.setIp("192.168.2.125"); + slave.setIp("192.168.6.21"); + slave.setPort(6000); MelsecDevpThread devpThread = new MelsecDevpThread(slave); devpThread.connect(); - devpThread.read(); - // 鍐� - StaProtocol staProtocol = devpThread.getStation().get(1); - staProtocol.setWorkNo((short) 232); - staProtocol.setStaNo((short) 6); - staProtocol.setAutoing(true); - staProtocol.setEmptyMk(true); - staProtocol.setInEnable(true); - devpThread.write(staProtocol); - System.out.println("----------------------------------------"); - // 璇� - devpThread.read(); - System.out.println(JSON.toJSONString(devpThread.station)); - + for (int i = 1; i < 999; i ++) { + OperateResultExOne<Short> d = devpThread.getMelsecMcNet().ReadInt16("D" + i); + Thread.sleep(200); + if (d.IsSuccess) { + System.out.println(DateUtils.convert(new Date()) + d.Content); + } else { + System.out.println("璇诲彇澶辫触"); + } + } + devpThread.getMelsecMcNet().ConnectClose(); } + + + + } -- Gitblit v1.9.1