From dfafabacf23bf22181d7c3f3665e684be7921f7d Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期三, 07 八月 2024 16:45:54 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/SiemensDevpThread.java | 257 ++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 183 insertions(+), 74 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index 1892047..5c16180 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -5,7 +5,6 @@ import HslCommunication.Profinet.Siemens.SiemensPLCS; import HslCommunication.Profinet.Siemens.SiemensS7Net; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.SpringUtils; @@ -21,15 +20,16 @@ import com.zy.core.model.protocol.StaError1; import com.zy.core.model.protocol.StaProtocol; import com.zy.entity.BasDevp; -import com.zy.entity.WrkMast; import com.zy.service.BasDevpService; -import com.zy.service.WrkMastService; import com.zy.utils.News; import lombok.Data; import lombok.extern.slf4j.Slf4j; import java.text.MessageFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** @@ -108,6 +108,10 @@ write((StaProtocol)task.getData()); log.error("杈撻�佺嚎涓嬪彂鍛戒护锛�"+((StaProtocol) task.getData()).getWorkNo()+","+((StaProtocol) task.getData()).getStaNo()); break; + // 鍐欏紑闂� + case 3: + write2((Integer) task.getData()); + break; default: break; } @@ -120,6 +124,42 @@ } } + + private void write2(int flag) throws InterruptedException { + if (flag == 0) { + OperateResultExOne<byte[]> readOpenResult = siemensS7Net.Read("DB100.826", (short) 1); + if (readOpenResult.IsSuccess) { + boolean[] booleans = siemensS7Net.getByteTransform().TransBool(readOpenResult.Content, 0, 1); + booleans[1] = true; // 鍏抽棬淇″彿 + booleans[0] = false; + siemensS7Net.Write("DB100.826",booleans); + } + } else if(flag == 1) { + OperateResultExOne<byte[]> readOpenResult = siemensS7Net.Read("DB100.826", (short) 1); + if (readOpenResult.IsSuccess) { + boolean[] booleans = siemensS7Net.getByteTransform().TransBool(readOpenResult.Content, 0, 1); + booleans[0] = true; // 寮�闂ㄤ俊鍙� + booleans[1] = false; + siemensS7Net.Write("DB100.826",booleans); + } + } + Thread.sleep(500); + OperateResultExOne<byte[]> readOpenResult = siemensS7Net.Read("DB100.826", (short) 1); + if (readOpenResult.IsSuccess) { + boolean[] booleans = siemensS7Net.getByteTransform().TransBool(readOpenResult.Content, 0, 1); + StaProtocol staProtocol = station.get(305); + if (null == staProtocol) { + staProtocol = new StaProtocol(); + staProtocol.setSiteId(305); + station.put(305, staProtocol); + } + staProtocol.setOpenAskDoor(booleans[0]); + staProtocol.setCloseAskDoor(booleans[1]); + staProtocol.setIfOpenDoor(booleans[2]); + staProtocol.setIfCloseDoor(booleans[3]); + } + } + /** * 鍒濆鍖栫珯鐐圭姸鎬� */ @@ -263,7 +303,36 @@ staProtocol.setPakMk(true); } } + // 璇讳簩妤�3鍖� + OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB101.1600", (short) (6*8)); + if (result2.IsSuccess) { + for (int i = 13; i < staNos.size(); i++) { + Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 + StaProtocol staProtocol = station.get(siteId); + if (null == staProtocol) { + staProtocol = new StaProtocol(); + staProtocol.setSiteId(siteId); + station.put(siteId, staProtocol); + } + staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result4.Content, (i-13)*8)); // 宸ヤ綔鍙� + staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result4.Content, (i-13)*8 + 4)); // 鐩爣绔� + + boolean[] status = siemensS7Net.getByteTransform().TransBool(result4.Content, (i-13)*8 + 6, 2); + staProtocol.setAutoing(status[0]); // 鑷姩 + staProtocol.setLoading(status[1]); // 鏈夌墿 + staProtocol.setInEnable(status[2]); // 鍙叆 + staProtocol.setOutEnable(status[3]);// 鍙嚭 + staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿 + staProtocol.setFullPlt(status[5]); // 婊℃墭鐩� + staProtocol.setHigh(status[6]); // 楂樺簱浣� + staProtocol.setLow(status[7]); // 浣庡簱浣� + + if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { + staProtocol.setPakMk(true); + } + } + } // BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class); //RGV灏忚溅1 // Thread.sleep(100); @@ -343,72 +412,105 @@ staProtocol.setUpcontactErr(status[7]); } } - - // 涓�妤煎嚭鍏ュ簱妯″紡鍒囨崲 - OperateResultExOne<byte[]> ioModeResult = siemensS7Net.Read("DB101.3724", (short) 1); - if (ioModeResult.IsSuccess) { - boolean[] ioModelBooleans = siemensS7Net.getByteTransform().TransBool(ioModeResult.Content, 0, 1); -// log.info("璇诲彇鍑哄叆搴撴ā寮忥細" + Arrays.toString(ioModelBooleans)); - WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class); - if (ioModelBooleans[0]) { // 100鍒囧叆搴� - if (ioModeOf101 == IoModeType.PAKOUT_MODE) { - int outCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 101) - .eq("sta_no", 100).in("wrk_sts", 12, 13, 14)); - if (outCount == 0) { - boolean[] booleans = new boolean[8]; - booleans[0]=true; - ioModeOf101 = IoModeType.PAKIN_MODE; - siemensS7Net.Write("DB100.824",booleans); - log.info("101鍒囨崲鍏ュ簱妯″紡鎴愬姛"); - } - } - } - if (ioModelBooleans[1]) { // 100鍒囧嚭搴� - if (ioModeOf101 == IoModeType.PAKIN_MODE) { - int inCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 1) - .eq("sta_no", 101).in("wrk_sts", 2, 3, 4)); - if (inCount == 0) { - boolean[] booleans = new boolean[8]; - booleans[0]=true; - ioModeOf101 = IoModeType.PAKOUT_MODE; - siemensS7Net.Write("DB100.824",booleans); - log.info("101鍒囨崲鍑哄簱妯″紡鎴愬姛"); - } - } - } - if (ioModelBooleans[2]) { // 102鍒囧叆搴� - if (ioModeOf103 == IoModeType.PAKOUT_MODE) { - int outCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 101) - .eq("sta_no", 102).in("wrk_sts", 12, 13, 14)); - if (outCount == 0) { - boolean[] booleans = new boolean[8]; - booleans[1]=true; - ioModeOf103 = IoModeType.PAKIN_MODE; - siemensS7Net.Write("DB100.824",booleans); - log.info("103鍒囨崲鍏ュ簱妯″紡鎴愬姛"); - } - } - } - if (ioModelBooleans[3]) { // 102鍒囧嚭搴� - if (ioModeOf103 == IoModeType.PAKIN_MODE) { - int inCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 1) - .eq("sta_no", 103).in("wrk_sts", 2, 3, 4)); - if (inCount == 0) { - boolean[] booleans = new boolean[8]; - booleans[1]=true; - ioModeOf103 = IoModeType.PAKOUT_MODE; - siemensS7Net.Write("DB100.824",booleans); - log.info("103鍒囨崲鍑哄簱妯″紡鎴愬姛"); - } - } + // 璇讳笁鍖烘晠闅滀俊鎭弽棣� + OperateResultExOne<byte[]> resultErr4 = siemensS7Net.Read("DB101.2096", (short) (6*2)); + if (resultErr4.IsSuccess) { + for (int i = 13; i < staNos.size(); i++) { + boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr4.Content, (i-13) * 2 + 1, 1); + StaProtocol staProtocol = station.get(staNos.get(i)); // 绔欑偣缂栧彿 + staProtocol.setBreakerErr(status[0]); + staProtocol.setInfraredErr(status[1]); + staProtocol.setOutTimeErr(status[2]); + staProtocol.setSeizeSeatErr(status[3]); + staProtocol.setWrkYgoodsN(status[4]); + staProtocol.setInverterErr(status[5]); + staProtocol.setContactErr(status[6]); + staProtocol.setUpcontactErr(status[7]); } } + // 涓�妤煎嚭鍏ュ簱妯″紡鍒囨崲 +// OperateResultExOne<byte[]> ioModeResult = siemensS7Net.Read("DB101.3724", (short) 1); +// if (ioModeResult.IsSuccess) { +// boolean[] ioModelBooleans = siemensS7Net.getByteTransform().TransBool(ioModeResult.Content, 0, 1); +//// log.info("璇诲彇鍑哄叆搴撴ā寮忥細" + Arrays.toString(ioModelBooleans)); +// WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class); +// if (ioModelBooleans[0]) { // 100鍒囧叆搴� +// if (ioModeOf101 == IoModeType.PAKOUT_MODE) { +// int outCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 101) +// .eq("sta_no", 100).in("wrk_sts", 12, 13, 14)); +// if (outCount == 0) { +// boolean[] booleans = new boolean[8]; +// booleans[0]=true; +// ioModeOf101 = IoModeType.PAKIN_MODE; +// siemensS7Net.Write("DB100.824",booleans); +// log.info("101鍒囨崲鍏ュ簱妯″紡鎴愬姛"); +// } +// } +// } +// if (ioModelBooleans[1]) { // 100鍒囧嚭搴� +// if (ioModeOf101 == IoModeType.PAKIN_MODE) { +// int inCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 1) +// .eq("sta_no", 101).in("wrk_sts", 2, 3, 4)); +// if (inCount == 0) { +// boolean[] booleans = new boolean[8]; +// booleans[0]=true; +// ioModeOf101 = IoModeType.PAKOUT_MODE; +// siemensS7Net.Write("DB100.824",booleans); +// log.info("101鍒囨崲鍑哄簱妯″紡鎴愬姛"); +// } +// } +// } +// if (ioModelBooleans[2]) { // 102鍒囧叆搴� +// if (ioModeOf103 == IoModeType.PAKOUT_MODE) { +// int outCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 101) +// .eq("sta_no", 102).in("wrk_sts", 12, 13, 14)); +// if (outCount == 0) { +// boolean[] booleans = new boolean[8]; +// booleans[1]=true; +// ioModeOf103 = IoModeType.PAKIN_MODE; +// siemensS7Net.Write("DB100.824",booleans); +// log.info("103鍒囨崲鍏ュ簱妯″紡鎴愬姛"); +// } +// } +// } +// if (ioModelBooleans[3]) { // 102鍒囧嚭搴� +// if (ioModeOf103 == IoModeType.PAKIN_MODE) { +// int inCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 1) +// .eq("sta_no", 103).in("wrk_sts", 2, 3, 4)); +// if (inCount == 0) { +// boolean[] booleans = new boolean[8]; +// booleans[1]=true; +// ioModeOf103 = IoModeType.PAKOUT_MODE; +// siemensS7Net.Write("DB100.824",booleans); +// log.info("103鍒囨崲鍑哄簱妯″紡鎴愬姛"); +// } +// } +// } +// } -// OperateResultExOne<byte[]> resultErr3 = siemensS7Net.Read("DB13.400", (short) 3); -// if (resultErr3.IsSuccess) { -// if (staError1 == null){ -// staError1 = new StaError1(); + // 璇诲紑闂ㄤ俊鍙� +// OperateResultExOne<byte[]> readOpenResult = siemensS7Net.Read("DB100.826", (short) 1); +// if (readOpenResult.IsSuccess) { +// boolean[] booleans = siemensS7Net.getByteTransform().TransBool(readOpenResult.Content, 0, 1); +// StaProtocol staProtocol = station.get(305); +// if (null == staProtocol) { +// staProtocol = new StaProtocol(); +// staProtocol.setSiteId(305); +// station.put(305, staProtocol); +// } +// staProtocol.setOpenAskDoor(booleans[0]); +// staProtocol.setCloseAskDoor(booleans[1]); +// staProtocol.setIfOpenDoor(booleans[2]); +// staProtocol.setIfCloseDoor(booleans[3]); +//// log.info("寮�闂ㄤ俊鍙凤細" + Arrays.toString(booleans)); +// } + + +//// OperateResultExOne<byte[]> resultErr3 = siemensS7Net.Read("DB13.400", (short) 3); +//// if (resultErr3.IsSuccess) { +//// if (staError1 == null){ +//// staError1 = new StaError1(); // } // boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr3.Content, 0, 3); // staError1.setEMERGENCY_Stop_Core(status[0]); @@ -486,6 +588,12 @@ case 202: address = 408; break; case 203: address = 412; break; case 210: address = 440; break; + case 300: address = 800; break; + case 301: address = 804; break; + case 302: address = 808; break; + case 303: address = 812; break; + case 304: address = 816; break; + case 305: address = 820; break; default: } if(address == -1) { @@ -562,12 +670,13 @@ siemensS7Net.ConnectClose(); } -// public static void main(String[] args) throws Exception { -// DevpSlave slave = new DevpSlave(); -// slave.setIp("192.168.2.125"); -// SiemensDevpThread devpThread = new SiemensDevpThread(slave); -// devpThread.connect(); -// devpThread.read(); + public static void main(String[] args) throws Exception { + DevpSlave slave = new DevpSlave(); + slave.setIp("10.10.10.18"); + SiemensDevpThread devpThread = new SiemensDevpThread(slave); + devpThread.connect(); + devpThread.write2(0); + devpThread.read(); // // 鍐� // StaProtocol staProtocol = devpThread.getStation().get(1); // staProtocol.setWorkNo((short) 232); @@ -580,7 +689,7 @@ // // 璇� // devpThread.read(); // System.out.println(JSON.toJSONString(devpThread.station)); -// -// } + + } } -- Gitblit v1.9.1