From 236b02d3d3d59025697fe9837b70b678ee339c46 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期四, 14 十二月 2023 19:52:38 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/task/DevpReadScheduler.java | 171 ++++++++++++++++++++++++++++ src/main/java/com/zy/core/thread/SiemensDevpThread.java | 172 ++++++++++++++-------------- 2 files changed, 257 insertions(+), 86 deletions(-) diff --git a/src/main/java/com/zy/asrs/task/DevpReadScheduler.java b/src/main/java/com/zy/asrs/task/DevpReadScheduler.java new file mode 100644 index 0000000..2db8de2 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/DevpReadScheduler.java @@ -0,0 +1,171 @@ +package com.zy.asrs.task; + +import HslCommunication.Core.Types.OperateResult; +import HslCommunication.Core.Types.OperateResultExOne; +import HslCommunication.Profinet.Siemens.SiemensPLCS; +import HslCommunication.Profinet.Siemens.SiemensS7Net; +import com.zy.core.cache.SlaveConnection; +import com.zy.core.enums.SlaveType; +import com.zy.core.model.DevpSlave; +import com.zy.core.model.protocol.StaProtocol; +import com.zy.core.properties.SlaveProperties; +import com.zy.core.thread.SiemensDevpThread; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.Map; + +@Component +public class DevpReadScheduler { + + @Autowired + private SlaveProperties slaveProperties; + + //鍑哄叆搴撶珯鐐规娴嬫姤璀︿俊鎭� + public static final ArrayList<Integer> outInAlarmStaNos = new ArrayList<Integer>(){{ + add(101);add(102);add(104); + add(201);add(202);add(204); + add(340);add(345); + }}; + + public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{ + add(302);add(304); + add(305);add(306); + add(307);add(308); + add(310);add(311); + add(312);add(313); + add(314);add(315); + add(316);add(318); + add(319);add(320); + add(321);add(322); + add(323);add(324); + add(326);add(327); + add(328);add(329); + add(330);add(332); + add(334);add(335); + add(336);add(337); + add(338);add(342); + add(343);add(344); + }}; + + public static final ArrayList<Integer> staNos3 = new ArrayList<Integer>() {{//218 + add(302);add(304); + add(315);add(322); + add(324);add(330); + add(332);add(337); + }}; + + public static final ArrayList<Integer> staNos4 = new ArrayList<Integer>() {{//250 + add(318);add(320); + add(343); + }}; + + @Scheduled(cron = "0/1 * * * * ? ") + public void read() { + try { + for (DevpSlave slave : slaveProperties.getDevp()) { + SiemensS7Net siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp()); + siemensS7Net.setRack(slave.getRack().byteValue()); + siemensS7Net.setSlot(slave.getSlot().byteValue()); + OperateResult connect = siemensS7Net.ConnectServer(); + + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, slave.getId()); + Map<Integer, StaProtocol> station = devpThread.getStation(); + if (connect.IsSuccess) { + //鍑哄叆搴撶珯鐐规娴嬫姤璀︿俊鎭� + Thread.sleep(100); + for (Integer staNo : outInAlarmStaNos) { + OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".20.0", (short) 2); + if (result5.IsSuccess) { + if (staNo == 101 || staNo == 201) { + staNo--; + } else { + staNo++; + } + StaProtocol staProtocol = station.get(staNo); + boolean[] status = siemensS7Net.getByteTransform().TransBool(result5.Content, 0, 2); + staProtocol.setBarcodeErr(status[4]);//鎵爜澶辫触 + staProtocol.setFrontErr(status[8]);//鍓嶈秴闄� + staProtocol.setBackErr(status[9]);//鍚庤秴闄� + staProtocol.setLeftErr(status[10]);//宸﹁秴闄� + staProtocol.setRightErr(status[11]);//鍙宠秴闄� + staProtocol.setHighErr(status[12]);//瓒呴珮 + staProtocol.setWeightErr(status[13]);//瓒呴噸 + } + } + + Thread.sleep(100); + for (Integer staNo : staNos2) { + OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".0", (short) 48); + if (result5.IsSuccess) { + StaProtocol staProtocol = station.get(staNo); + StaProtocol staProtocol300 = station.get(300); + if (null == staProtocol) { + staProtocol = new StaProtocol(); + staProtocol.setSiteId(staNo); + station.put(staNo, staProtocol); + } + + boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result5.Content, 1, 1); + staProtocol.setAutoing(staProtocol300.isAutoing()); // 鑷姩 + staProtocol.setLoading(!status1[2]); // 鏈夌墿 + + if (staNos3.contains(staNo) || staNos4.contains(staNo)) { + continue; + } + if (staNo == 344) { + staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result5.Content, 34)); // 宸ヤ綔鍙� + } else { + staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result5.Content, 22)); // 宸ヤ綔鍙� + } + } + } + + Thread.sleep(100); + for (Integer staNo : staNos3) { + OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".22.0", (short) 2); + OperateResultExOne<byte[]> result6 = siemensS7Net.Read("DB" + staNo + ".218.0", (short) 2); + if (result5.IsSuccess && result6.IsSuccess) { + StaProtocol staProtocol = station.get(staNo); + short wrkNo1 = siemensS7Net.getByteTransform().TransInt16(result5.Content, 0); + short wrkNo2 = siemensS7Net.getByteTransform().TransInt16(result6.Content, 0); + short wrkNo = 0; + if (wrkNo1 != 0) { + wrkNo = wrkNo1; + } + if (wrkNo2 != 0) { + wrkNo = wrkNo2; + } + staProtocol.setWorkNo(wrkNo); // 宸ヤ綔鍙� + } + } + + Thread.sleep(100); + for (Integer staNo : staNos4) { + OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".22.0", (short) 2); + OperateResultExOne<byte[]> result6 = siemensS7Net.Read("DB" + staNo + ".250.0", (short) 2); + if (result5.IsSuccess && result6.IsSuccess) { + StaProtocol staProtocol = station.get(staNo); + short wrkNo1 = siemensS7Net.getByteTransform().TransInt16(result5.Content, 0); + short wrkNo2 = siemensS7Net.getByteTransform().TransInt16(result6.Content, 0); + short wrkNo = 0; + if (wrkNo1 != 0) { + wrkNo = wrkNo1; + } + if (wrkNo2 != 0) { + wrkNo = wrkNo2; + } + staProtocol.setWorkNo(wrkNo); // 宸ヤ綔鍙� + } + } + } + siemensS7Net.ConnectClose(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index c070adc..09a24c6 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -260,92 +260,92 @@ } } - //鍑哄叆搴撶珯鐐规娴嬫姤璀︿俊鎭� - Thread.sleep(100); - for (Integer staNo : outInAlarmStaNos) { - OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".20.0", (short) 2); - if (result5.IsSuccess) { - if (staNo == 101 || staNo == 201) { - staNo--; - }else { - staNo++; - } - StaProtocol staProtocol = station.get(staNo); - boolean[] status = siemensS7Net.getByteTransform().TransBool(result5.Content, 0, 2); - staProtocol.setBarcodeErr(status[4]);//鎵爜澶辫触 - staProtocol.setFrontErr(status[8]);//鍓嶈秴闄� - staProtocol.setBackErr(status[9]);//鍚庤秴闄� - staProtocol.setLeftErr(status[10]);//宸﹁秴闄� - staProtocol.setRightErr(status[11]);//鍙宠秴闄� - staProtocol.setHighErr(status[12]);//瓒呴珮 - staProtocol.setWeightErr(status[13]);//瓒呴噸 - } - } - - Thread.sleep(100); - for (Integer staNo : staNos2) { - OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".0", (short) 48); - if (result5.IsSuccess) { - StaProtocol staProtocol = station.get(staNo); - StaProtocol staProtocol300 = station.get(300); - if (null == staProtocol) { - staProtocol = new StaProtocol(); - staProtocol.setSiteId(staNo); - station.put(staNo, staProtocol); - } - - boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result5.Content, 1, 1); - staProtocol.setAutoing(staProtocol300.isAutoing()); // 鑷姩 - staProtocol.setLoading(!status1[2]); // 鏈夌墿 - - if (staNos3.contains(staNo) || staNos4.contains(staNo)) { - continue; - } - if (staNo == 344) { - staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result5.Content, 34)); // 宸ヤ綔鍙� - }else { - staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result5.Content, 22)); // 宸ヤ綔鍙� - } - } - } - - Thread.sleep(100); - for (Integer staNo : staNos3) { - OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".22.0", (short) 2); - OperateResultExOne<byte[]> result6 = siemensS7Net.Read("DB" + staNo + ".218.0", (short) 2); - if (result5.IsSuccess && result6.IsSuccess) { - StaProtocol staProtocol = station.get(staNo); - short wrkNo1 = siemensS7Net.getByteTransform().TransInt16(result5.Content, 0); - short wrkNo2 = siemensS7Net.getByteTransform().TransInt16(result6.Content, 0); - short wrkNo = 0; - if (wrkNo1 != 0) { - wrkNo = wrkNo1; - } - if (wrkNo2 != 0) { - wrkNo = wrkNo2; - } - staProtocol.setWorkNo(wrkNo); // 宸ヤ綔鍙� - } - } - - Thread.sleep(100); - for (Integer staNo : staNos4) { - OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".22.0", (short) 2); - OperateResultExOne<byte[]> result6 = siemensS7Net.Read("DB" + staNo + ".250.0", (short) 2); - if (result5.IsSuccess && result6.IsSuccess) { - StaProtocol staProtocol = station.get(staNo); - short wrkNo1 = siemensS7Net.getByteTransform().TransInt16(result5.Content, 0); - short wrkNo2 = siemensS7Net.getByteTransform().TransInt16(result6.Content, 0); - short wrkNo = 0; - if (wrkNo1 != 0) { - wrkNo = wrkNo1; - } - if (wrkNo2 != 0) { - wrkNo = wrkNo2; - } - staProtocol.setWorkNo(wrkNo); // 宸ヤ綔鍙� - } - } +// //鍑哄叆搴撶珯鐐规娴嬫姤璀︿俊鎭� +// Thread.sleep(100); +// for (Integer staNo : outInAlarmStaNos) { +// OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".20.0", (short) 2); +// if (result5.IsSuccess) { +// if (staNo == 101 || staNo == 201) { +// staNo--; +// }else { +// staNo++; +// } +// StaProtocol staProtocol = station.get(staNo); +// boolean[] status = siemensS7Net.getByteTransform().TransBool(result5.Content, 0, 2); +// staProtocol.setBarcodeErr(status[4]);//鎵爜澶辫触 +// staProtocol.setFrontErr(status[8]);//鍓嶈秴闄� +// staProtocol.setBackErr(status[9]);//鍚庤秴闄� +// staProtocol.setLeftErr(status[10]);//宸﹁秴闄� +// staProtocol.setRightErr(status[11]);//鍙宠秴闄� +// staProtocol.setHighErr(status[12]);//瓒呴珮 +// staProtocol.setWeightErr(status[13]);//瓒呴噸 +// } +// } +// +// Thread.sleep(100); +// for (Integer staNo : staNos2) { +// OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".0", (short) 48); +// if (result5.IsSuccess) { +// StaProtocol staProtocol = station.get(staNo); +// StaProtocol staProtocol300 = station.get(300); +// if (null == staProtocol) { +// staProtocol = new StaProtocol(); +// staProtocol.setSiteId(staNo); +// station.put(staNo, staProtocol); +// } +// +// boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result5.Content, 1, 1); +// staProtocol.setAutoing(staProtocol300.isAutoing()); // 鑷姩 +// staProtocol.setLoading(!status1[2]); // 鏈夌墿 +// +// if (staNos3.contains(staNo) || staNos4.contains(staNo)) { +// continue; +// } +// if (staNo == 344) { +// staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result5.Content, 34)); // 宸ヤ綔鍙� +// }else { +// staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result5.Content, 22)); // 宸ヤ綔鍙� +// } +// } +// } +// +// Thread.sleep(100); +// for (Integer staNo : staNos3) { +// OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".22.0", (short) 2); +// OperateResultExOne<byte[]> result6 = siemensS7Net.Read("DB" + staNo + ".218.0", (short) 2); +// if (result5.IsSuccess && result6.IsSuccess) { +// StaProtocol staProtocol = station.get(staNo); +// short wrkNo1 = siemensS7Net.getByteTransform().TransInt16(result5.Content, 0); +// short wrkNo2 = siemensS7Net.getByteTransform().TransInt16(result6.Content, 0); +// short wrkNo = 0; +// if (wrkNo1 != 0) { +// wrkNo = wrkNo1; +// } +// if (wrkNo2 != 0) { +// wrkNo = wrkNo2; +// } +// staProtocol.setWorkNo(wrkNo); // 宸ヤ綔鍙� +// } +// } +// +// Thread.sleep(100); +// for (Integer staNo : staNos4) { +// OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".22.0", (short) 2); +// OperateResultExOne<byte[]> result6 = siemensS7Net.Read("DB" + staNo + ".250.0", (short) 2); +// if (result5.IsSuccess && result6.IsSuccess) { +// StaProtocol staProtocol = station.get(staNo); +// short wrkNo1 = siemensS7Net.getByteTransform().TransInt16(result5.Content, 0); +// short wrkNo2 = siemensS7Net.getByteTransform().TransInt16(result6.Content, 0); +// short wrkNo = 0; +// if (wrkNo1 != 0) { +// wrkNo = wrkNo1; +// } +// if (wrkNo2 != 0) { +// wrkNo = wrkNo2; +// } +// staProtocol.setWorkNo(wrkNo); // 宸ヤ綔鍙� +// } +// } if (result.IsSuccess && result1.IsSuccess) { OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); -- Gitblit v1.9.1