From c147a3dc2a56ab23b1cfeafef3de2867593f4206 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期五, 21 六月 2024 18:24:05 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/enums/JarTaskModeType.java | 44 ++++ src/main/java/com/zy/core/model/JarSlave.java | 2 src/main/java/com/zy/core/model/command/SteCommand.java | 2 src/main/java/com/zy/core/thread/SteThread.java | 301 +++++++++--------------------- src/main/java/com/zy/core/thread/JarThread.java | 41 +-- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 86 ++++++++ src/main/java/com/zy/core/model/protocol/JarProtocol.java | 22 ++ src/main/java/com/zy/core/MainProcess.java | 5 src/main/java/com/zy/asrs/entity/BasJar.java | 2 src/main/java/com/zy/core/model/command/JarCommand.java | 47 ++++ src/main/resources/application.yml | 28 ++ 11 files changed, 332 insertions(+), 248 deletions(-) diff --git a/src/main/java/com/zy/asrs/entity/BasJar.java b/src/main/java/com/zy/asrs/entity/BasJar.java index f4e48b3..8c5d91f 100644 --- a/src/main/java/com/zy/asrs/entity/BasJar.java +++ b/src/main/java/com/zy/asrs/entity/BasJar.java @@ -1,6 +1,6 @@ package com.zy.asrs.entity; -import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.enums.IdType; import com.baomidou.mybatisplus.annotations.TableField; 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 99755c1..cc21f70 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -4417,7 +4417,7 @@ continue; } BasJarMast jarMastByJarIdMax = basJarMastService.getJarMastByJarIdMax(jarSlave.getId().longValue()); - if (jarMastByJarIdMax.getJarLocDigit()==7){ + if (!Cools.isEmpty(jarMastByJarIdMax) && jarMastByJarIdMax.getJarLocDigit()==7){ continue; } jarGenerateWrkMastStaExecute(jarSlave); @@ -4441,7 +4441,20 @@ if (jarProtocol.modeType != JarModeType.AUTO){ return false; } - // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1 + + JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId()); + JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol(); + if (jarOtherProtocol == null) { + return false; + } + if (jarOtherProtocol.modeType != JarModeType.AUTO){ + return false; + } + + //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂�� + if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.jarErr==0){ + + } } catch (Exception e){ // log.error("鍫嗗灈鏈哄伐浣嶄簩瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),2); @@ -4449,6 +4462,75 @@ return false; } + /** + * Jar浠诲姟鍒涘缓 鎵ц + */ + public synchronized boolean jarGenerateWrkMastStaExecuteOne(JarSlave jarSlave) { + try{ + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); + JarProtocol jarProtocol = jarThread.getJarProtocol(); + if (jarProtocol == null) { + return false; + } + if (jarProtocol.modeType != JarModeType.AUTO){ + return false; + } + + JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId()); + JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol(); + if (jarOtherProtocol == null) { + return false; + } + if (jarOtherProtocol.modeType != JarModeType.AUTO){ + return false; + } + + //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂�� + if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.jarErr==0){ + + } + + } catch (Exception e){ +// log.error("鍫嗗灈鏈哄伐浣嶄簩瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),2); + } + return false; + } + + /** + * Jar浠诲姟鍒涘缓 鎵ц + */ + public synchronized boolean jarGenerateWrkMastStaExecuteTwo(JarSlave jarSlave) { + try{ + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); + JarProtocol jarProtocol = jarThread.getJarProtocol(); + if (jarProtocol == null) { + return false; + } + if (jarProtocol.modeType != JarModeType.AUTO){ + return false; + } + + JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId()); + JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol(); + if (jarOtherProtocol == null) { + return false; + } + if (jarOtherProtocol.modeType != JarModeType.AUTO){ + return false; + } + + //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂�� + if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.jarErr==0){ + + } + + } catch (Exception e){ +// log.error("鍫嗗灈鏈哄伐浣嶄簩瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),2); + } + return false; + } /** * Jar浠诲姟鎵ц diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java index 6dcb83e..eabfd96 100644 --- a/src/main/java/com/zy/core/MainProcess.java +++ b/src/main/java/com/zy/core/MainProcess.java @@ -76,6 +76,11 @@ mainService.storeFinishedTwo(); } + i++; + if (i>5){ + i=0; + } + // // 寮傚父淇℃伅璁板綍 // mainService.recErr(); // 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱 diff --git a/src/main/java/com/zy/core/enums/JarTaskModeType.java b/src/main/java/com/zy/core/enums/JarTaskModeType.java new file mode 100644 index 0000000..a0a324f --- /dev/null +++ b/src/main/java/com/zy/core/enums/JarTaskModeType.java @@ -0,0 +1,44 @@ +package com.zy.core.enums; +/* +* 2024/6/21 +* */ +public enum JarTaskModeType { + + INIT(1, "宸﹂棬寮�"), // 鍒濆 + OUT_RIGHT(2, "宸﹂棬鍏�"), // 鍙冲嚭搴� + OUT_LEFT(3, "鍙抽棬寮�"), // 宸﹀嚭搴� + IN_RIGHT(4, "鍙抽棬鍏�"), // 鍙冲叆搴� + ; + + public Integer id; + public String desc; + JarTaskModeType(Integer id, String desc) { + this.id = id; + this.desc = desc; + } + + public static JarTaskModeType get(Short id) { + if (null == id) { + return null; + } + for (JarTaskModeType type : JarTaskModeType.values()) { + if (type.id.equals(id.intValue())) { + return type; + } + } + return null; + } + + public static JarTaskModeType get(JarTaskModeType type) { + if (null == type) { + return null; + } + for (JarTaskModeType crnTaskModeType : JarTaskModeType.values()) { + if (crnTaskModeType == type) { + return crnTaskModeType; + } + } + return null; + } + +} diff --git a/src/main/java/com/zy/core/model/JarSlave.java b/src/main/java/com/zy/core/model/JarSlave.java index d39fa08..7e65d88 100644 --- a/src/main/java/com/zy/core/model/JarSlave.java +++ b/src/main/java/com/zy/core/model/JarSlave.java @@ -20,6 +20,8 @@ private Boolean demo; + private Integer jarOtherId; + // 纭寲缃愬叆搴撶珯鐐� private List<StaStn> jarInSta = new ArrayList<>(); diff --git a/src/main/java/com/zy/core/model/command/JarCommand.java b/src/main/java/com/zy/core/model/command/JarCommand.java new file mode 100644 index 0000000..95593db --- /dev/null +++ b/src/main/java/com/zy/core/model/command/JarCommand.java @@ -0,0 +1,47 @@ +package com.zy.core.model.command; + +import com.alibaba.fastjson.annotation.JSONField; +import com.zy.core.enums.SteTaskModeType; +import lombok.Data; + +/** + * 绌挎杞﹀懡浠ゆ姤鏂� + * Created by vincent on 2024/6/21 + */ +@Data +public class JarCommand { + + // 纭寲缃愬彿 + private Integer jarNo = 0; + + // 浠诲姟鍙� + private Integer taskNo = 0; + + // 浣滀笟绫诲瀷 + private Short taskMode = 0; + + // 姝e湪鎵ц浠诲姟 + public Boolean execute = Boolean.FALSE; + + // 纭浠诲姟瀹屾垚 + public Boolean complete = Boolean.FALSE; + + @JSONField(serialize = false) + private SteTaskModeType taskModeType; + + /** + * 杈撳叆绌挎杞﹁繍琛岀姝� 1杩愯锛�0绂佹 + */ + private Short run; + + public void setTaskMode(Short taskMode){ + this.taskMode = taskMode; + this.taskModeType = SteTaskModeType.get(taskModeType); + } + + public void setTaskMode(SteTaskModeType type) { + this.taskModeType = type; + this.taskMode = SteTaskModeType.get(type).id.shortValue(); + } + +} diff --git a/src/main/java/com/zy/core/model/command/SteCommand.java b/src/main/java/com/zy/core/model/command/SteCommand.java index 1b91911..08a1ba2 100644 --- a/src/main/java/com/zy/core/model/command/SteCommand.java +++ b/src/main/java/com/zy/core/model/command/SteCommand.java @@ -6,7 +6,7 @@ /** * 绌挎杞﹀懡浠ゆ姤鏂� - * Created by vincent on 2020/8/11 + * Created by vincent on 2024/6/21 */ @Data public class SteCommand { diff --git a/src/main/java/com/zy/core/model/protocol/JarProtocol.java b/src/main/java/com/zy/core/model/protocol/JarProtocol.java index e2d5ac4..29966ae 100644 --- a/src/main/java/com/zy/core/model/protocol/JarProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/JarProtocol.java @@ -8,7 +8,7 @@ import lombok.extern.slf4j.Slf4j; /** - * Created by vincent on 2020/8/7 + * Created by vincent on 2024/6/21 */ @Slf4j @Data @@ -73,6 +73,26 @@ * */ private boolean autoing; + /* + * open the left door + * */ + public Integer leftDoorOpen; + + /* + * close the left door + * */ + public Integer leftDoorClose; + + /* + * open the right door + * */ + public Integer rightDoorOpen; + + /* + * close the right door + * */ + public Integer rightDoorClose; + /** * 寮傚父鐮� diff --git a/src/main/java/com/zy/core/thread/JarThread.java b/src/main/java/com/zy/core/thread/JarThread.java index 836bb08..7a2f354 100644 --- a/src/main/java/com/zy/core/thread/JarThread.java +++ b/src/main/java/com/zy/core/thread/JarThread.java @@ -5,7 +5,6 @@ import HslCommunication.Profinet.Siemens.SiemensPLCS; import HslCommunication.Profinet.Siemens.SiemensS7Net; import com.alibaba.fastjson.JSON; -import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.SpringUtils; import com.core.exception.CoolException; @@ -21,9 +20,8 @@ import com.zy.core.enums.SlaveType; import com.zy.core.model.JarSlave; import com.zy.core.model.Task; -import com.zy.core.model.command.SteCommand; +import com.zy.core.model.command.JarCommand; import com.zy.core.model.protocol.JarProtocol; -import com.zy.core.model.protocol.StaProtocol; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -32,8 +30,7 @@ /** * shuttle 纭寲缃愮嚎绋� - * Created by vincent on 2020/8/4 - * 涓嶈兘鏈� 妲藉彿 鍜� 鏈烘灦鍙� + * Created by vincent on 2024/3/01 */ @Data @Slf4j @@ -139,6 +136,14 @@ jarProtocol.setStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 16));//鐘舵�� + jarProtocol.setLeftDoorOpen((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 18));//open the left door + + jarProtocol.setLeftDoorClose((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 20));//close the left door + + jarProtocol.setRightDoorOpen((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 22));//open the right door + + jarProtocol.setRightDoorClose((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 24));//close the right door + jarProtocol.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, 12) != 2);//鑷姩 // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� @@ -168,12 +173,12 @@ /** * 鍐欏叆鏁版嵁 */ - private synchronized boolean write(SteCommand command){ + private synchronized boolean write(JarCommand command){ if (null == command) { News.error("绌挎杞﹀啓鍏ュ懡浠や负绌�"); return false; } - command.setSteNo(slave.getId()); + command.setJarNo(slave.getId()); OperateResult result = null; // 寮�濮嬩换鍔� if (!command.getComplete()) { @@ -212,7 +217,7 @@ if (null != bean) { BasSteOpt basSteOpt = new BasSteOpt( command.getTaskNo(), // 浠诲姟鍙� - command.getSteNo(), // 绌挎杞� + command.getJarNo(), // 纭寲缃� new Date(), // 涓嬪彂鏃堕棿 command.getTaskModeType().desc, // 浣滀笟 null, // 婧愭帓 @@ -236,30 +241,18 @@ if (result != null && result.IsSuccess) { - - News.info("绌挎杞﹀懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); + News.info("纭寲缃愬懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSONString(command)); + OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 纭寲缃愬懡浠や笅鍙戯細 {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSONString(command))); try { Thread.sleep(500); } catch (Exception e){ } - OperateResultExOne<byte[]> result1 = siemensS7Net.Read("V998", (short) 4); - if (result1.IsSuccess) { - short taskNo = siemensS7Net.getByteTransform().TransInt16(result1.Content, 0); - short taskType = siemensS7Net.getByteTransform().TransInt16(result1.Content, 2); -// readStatus(); - } return true; } else { - OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆戝啓鍏ョ┛姊溅plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - News.error("鍐欏叆绌挎杞lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - - //鍐欏叆澶辫触鍚庯紝閲嶆柊娣诲姞commanddao 浠诲姟闃熷垪涓�,骞剁珛鍗冲洖璇讳竴娆¤澶囩姸鎬� -// MessageQueue.offer(SlaveType.Ste, slave.getId(), new Task(2, command)); -// readStatus(); - + OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆戝啓鍏ョ~鍖栫綈plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + News.error("鍐欏叆纭寲缃恜lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initSte(); return false; } diff --git a/src/main/java/com/zy/core/thread/SteThread.java b/src/main/java/com/zy/core/thread/SteThread.java index 9a4be94..536e038 100644 --- a/src/main/java/com/zy/core/thread/SteThread.java +++ b/src/main/java/com/zy/core/thread/SteThread.java @@ -17,8 +17,8 @@ import com.zy.core.ThreadHandler; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; -import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; +import com.zy.core.enums.SteLocaType; import com.zy.core.enums.SteStatusType; import com.zy.core.model.SteSlave; import com.zy.core.model.Task; @@ -43,8 +43,6 @@ private SteSlave slave; private SteProtocol steProtocol; private short heartBeatVal = 1; - private boolean V20011 = true; - private boolean V20001 = true; private boolean resetFlag = false; public SteThread(SteSlave slave) { @@ -102,10 +100,10 @@ @Override public boolean connect() { boolean result = false; - // 涓嶈兘鏈� 妲藉彿 鍜� 鏈烘灦鍙� - siemensS7Net = new SiemensS7Net(SiemensPLCS.S200Smart, slave.getIp()); -// siemensS7Net.setRack(slave.getRack().byteValue()); -// siemensS7Net.setSlot(slave.getSlot().byteValue()); + // + siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp()); + siemensS7Net.setRack(slave.getRack().byteValue()); + siemensS7Net.setSlot(slave.getSlot().byteValue()); OperateResult connect = siemensS7Net.ConnectServer(); if(connect.IsSuccess){ result = true; @@ -125,106 +123,77 @@ */ private void readStatus(){ try { - OperateResultExOne<byte[]> result = siemensS7Net.Read("V800", (short) 70); + OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) 22); if (result.IsSuccess) { if (null == steProtocol) { steProtocol = new SteProtocol(); steProtocol.setSteNo(slave.getId().shortValue()); } -// steProtocol.setSteNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 0)); steProtocol.setMode(siemensS7Net.getByteTransform().TransInt16(result.Content, 2)); steProtocol.setStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 4)); - OperateResultExOne<Boolean> executeRes = siemensS7Net.ReadBool("V2001.0"); - if (executeRes.IsSuccess) { - steProtocol.setExecute(executeRes.Content); - } - OperateResultExOne<Boolean> waitingRes = siemensS7Net.ReadBool("V2001.1"); + + OperateResultExOne<Boolean> waitingRes = siemensS7Net.ReadBool("DB101.20.2"); if (waitingRes.IsSuccess) { steProtocol.setWaiting(waitingRes.Content); } -// if (steProtocol.getSteNo()==1){ -// if (!steProtocol.getWaiting().equals(V20011)){ -// News.error("灏忚溅鍙� ={} :V2001.1鍦板潃璇诲彇鍊间笉涓�鑷达紝璇�={} 璁板綍={}",steProtocol.getSteNo(),steProtocol.getWaiting(),V20011); -// } -// V20011=steProtocol.getWaiting(); -// OperateResultExOne<Boolean> waitingRes2 = siemensS7Net.ReadBool("V2000.1"); -// if (waitingRes2.IsSuccess) { -// if (!waitingRes2.Content.equals(V20001)){ -// News.error("灏忚溅鍙� ={} :V2000.1鍦板潃璇诲彇鍊间笉涓�鑷达紝璇�={} 璁板綍={}",steProtocol.getSteNo(),waitingRes2.Content,V20001); -// } -// V20001=waitingRes2.Content; -// } -// OperateResultExOne<Boolean> waitingRes3 = siemensS7Net.ReadBool("V2500.1"); -// if (waitingRes3.IsSuccess) { -// if (!waitingRes3.Content.equals(waitingRes2.Content)){ -// News.error("灏忚溅鍙� ={} :V2000.1鍦板潃璇诲彇鍊间笉涓�鑷达紝璇�={} 锛� V2500.1鍦板潃璇诲彇鍊间笉涓�鑷达紝璇�={}",steProtocol.getSteNo(),waitingRes2.Content,waitingRes3.Content); -// } -// } -// } - OperateResultExOne<Boolean> inEmptyRes = siemensS7Net.ReadBool("V2001.2"); - if (inEmptyRes.IsSuccess) { - steProtocol.setInEmpty(inEmptyRes.Content); - } - OperateResultExOne<Boolean> outEmptyRes = siemensS7Net.ReadBool("V2001.3"); - if (outEmptyRes.IsSuccess) { - steProtocol.setOutEmpty(outEmptyRes.Content); - } - steProtocol.setAlarm(siemensS7Net.getByteTransform().TransInt16(result.Content, 6)); - steProtocol.setAlarm0(siemensS7Net.getByteTransform().TransInt16(result.Content, 8)); - steProtocol.setCharge(siemensS7Net.getByteTransform().TransSingle(result.Content, 10)); -// steProtocol.setFullCharge(); -// steProtocol.setLowCharge(); - steProtocol.setFeed(siemensS7Net.getByteTransform().TransInt16(result.Content, 14)); - steProtocol.setLoca(siemensS7Net.getByteTransform().TransInt16(result.Content, 16)); -// steProtocol.setCloser(); -// steProtocol.setSpeed(); - steProtocol.setPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 18)); - steProtocol.setLoad(siemensS7Net.getByteTransform().TransInt16(result.Content, 20)); - steProtocol.setTrack(siemensS7Net.getByteTransform().TransInt16(result.Content, 22)); - steProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 24)); - steProtocol.setTaskType(siemensS7Net.getByteTransform().TransInt16(result.Content, 28)); - steProtocol.setRow(siemensS7Net.getByteTransform().TransInt16(result.Content, 30)); - steProtocol.setBay(siemensS7Net.getByteTransform().TransInt16(result.Content, 32)); - steProtocol.setLev(siemensS7Net.getByteTransform().TransInt16(result.Content, 34)); -// steProtocol.setHisTaskNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 58)); -// steProtocol.setHisTaskStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 62)); -// steProtocol.setCheckQty(siemensS7Net.getByteTransform().TransInt16(result.Content, 64)); - steProtocol.setReady(siemensS7Net.getByteTransform().TransInt16(result.Content, 36)); -// steProtocol.setChargeNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 68)); + steProtocol.setCharge(siemensS7Net.getByteTransform().TransSingle(result.Content, 6)); + steProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 10)); + steProtocol.setTaskType(siemensS7Net.getByteTransform().TransInt16(result.Content, 12)); + steProtocol.setRow(siemensS7Net.getByteTransform().TransInt16(result.Content, 14)); + steProtocol.setBay(siemensS7Net.getByteTransform().TransInt16(result.Content, 16)); + steProtocol.setLev(siemensS7Net.getByteTransform().TransInt16(result.Content, 18)); -// steProtocol.setHeart(siemensS7Net.getByteTransform().TransInt16(result.Content, 72)); - steProtocol.setCrnStopRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 38)); - steProtocol.setCrnStopFork(siemensS7Net.getByteTransform().TransInt16(result.Content, 40)); - steProtocol.setCrnAllowRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 42)); - steProtocol.setChargeStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 44)); - OperateResultExOne<Boolean> steChargeRes = siemensS7Net.ReadBool("V740.6"); - if (steChargeRes.IsSuccess) { - steProtocol.setSteCharge(steChargeRes.Content); - if (steChargeRes.Content){ - steProtocol.setChargeStatus((short)1); +// steProtocol.setReady(siemensS7Net.getByteTransform().TransInt16(result.Content, 20)); + boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, 20, 1); + steProtocol.setReady(status[0]?(short)1:(short)0); +// steProtocol.setReady(status[1]?(short)1:(short)0); +// steProtocol.setReady(status[2]?(short)1:(short)0); +// steProtocol.setLoad(status[3]?(short)1:(short)0); +// steProtocol.setReady(status[4]?(short)1:(short)0); + steProtocol.setChargeStatus(status[5]?(short)1:(short)0); + steProtocol.setTrack(status[6]?(short)1:(short)0); + + SteLocaType locaType = SteLocaType.NONE; + boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result.Content, 21, 1); + if (steProtocol.getRow().intValue() >= 6) { + if (status[7]){//A鐐� + locaType = SteLocaType.A; } - } - - OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId())); - - // 澶嶄綅淇″彿 - if (steProtocol.getWaiting()) { - News.info("-------------绗竴姝ャ�乕绌挎杞﹀彿锛歿}, 宸ヤ綔鍙凤細{}]==>> 鐘舵�佷负{}锛岀瓑寰匴CS纭锛侊紒{}", - slave.getId(),steProtocol.getTaskNo(),steProtocol.getStatus(), resetFlag); - if (resetFlag) { - News.info("绗簩姝ャ�佹敹鍒颁富绾跨▼澶嶄綅鏍囪 resetFlag = true,[绌挎杞﹀彿锛歿}, 宸ヤ綔鍙凤細{}]==>> 鐘舵�佷负{}锛岀瓑寰匴CS纭锛侊紒{}", - slave.getId(),steProtocol.getTaskNo(),steProtocol.getStatus(), resetFlag); - SteCommand steCommand = new SteCommand(); - steCommand.setComplete(true); - if (write(steCommand) && confirmPos()) { - resetFlag = false; - News.info("绗笁姝ャ�佸彂閫佸浣嶅懡浠ゆ垚鍔� resetFlag = false,[绌挎杞﹀彿锛歿}, 宸ヤ綔鍙凤細{}]==>> 鐘舵�佷负{}锛岀瓑寰匴CS纭锛侊紒{}", - slave.getId(),steProtocol.getTaskNo(),steProtocol.getStatus(), resetFlag); + if (status2[1]){//A寰呮満鐐� + if (locaType.equals(SteLocaType.NONE)) { + locaType = SteLocaType.A_WAITING; + } + } + }else { + if (status2[0]){//B鐐� + if (locaType.equals(SteLocaType.NONE)) { + locaType = SteLocaType.B; + } + } + if (status2[2]){//B寰呮満鐐� + if (locaType.equals(SteLocaType.NONE)) { + locaType = SteLocaType.B_WAITING; } } } + steProtocol.setLoca(locaType.id.shortValue()); + steProtocol.setReady(status2[3]?(short)1:(short)0); + steProtocol.setLoad(status2[4]?(short)1:(short)0); + + OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); + + // 澶嶄綅淇″彿 + if (steProtocol.getWaiting()) { + if (resetFlag) { + SteCommand steCommand = new SteCommand(); + steCommand.setComplete(true); + if (write(steCommand) && confirmPos()) { + resetFlag = false; + } + } + } // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� BasSteService service = SpringUtils.getBean(BasSteService.class); @@ -243,13 +212,11 @@ } } else { - OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆憑1}绌挎杞lc鐘舵�佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId())); + OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆憑1}绌挎杞lc鐘舵�佷俊鎭け璐�",DateUtils.convert(new Date()), slave.getId())); throw new CoolException(MessageFormat.format( "绌挎杞lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort())); } } catch (Exception e) { -// e.printStackTrace(); OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆戣鍙栫┛姊溅plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); -// News.error("璇诲彇绌挎杞lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initSte(); } @@ -258,40 +225,16 @@ /** * 鍐欏叆鏁版嵁 */ - private boolean write(SteCommand command) throws InterruptedException { - if (null == command) { + private boolean write(SteCommand command){ + return this.write(command, 1); + } + + /** + * 鍐欏叆鏁版嵁 + */ + private boolean write(SteCommand command, int times){ + if (null == command || times > 2) { News.error("绌挎杞﹀啓鍏ュ懡浠や负绌�"); - return false; - } - //鍒ゆ柇灏忚溅鏄惁鍦ㄥ厖鐢� - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); - if (devpThread.charge0 - && !Cools.isEmpty(command.getRow(),command.getBay(),command.getLev()) - && command.getRow().intValue()==1 && command.getBay().intValue()==1 && command.getLev().intValue()==1){ - // led 寮傚父鏄剧ず - LedThread ledThread1 = (LedThread) SlaveConnection.get(SlaveType.Led, 1); - LedThread ledThread2 = (LedThread) SlaveConnection.get(SlaveType.Led, 2); - LedThread ledThread3 = (LedThread) SlaveConnection.get(SlaveType.Led, 3); - if (ledThread1 != null && ledThread2 != null && ledThread3 != null) { - MessageQueue.offer(SlaveType.Led, 1, new Task(3, "绌挎杞︽鍦�1鎺掑厖鐢垫々鍏呯數")); - MessageQueue.offer(SlaveType.Led, 2, new Task(3, "绌挎杞︽鍦�1鎺掑厖鐢垫々鍏呯數")); - MessageQueue.offer(SlaveType.Led, 3, new Task(3, "绌挎杞︽鍦�1鎺掑厖鐢垫々鍏呯數")); - } - News.error("绌挎杞︽鍦�1鎺掑厖鐢垫々鍏呯數"); - return false; - }else if (devpThread.charge1 - && !Cools.isEmpty(command.getRow(),command.getBay(),command.getLev()) - && command.getRow().intValue()==13 && command.getBay().intValue()==1 && command.getLev().intValue()==1){ - // led 寮傚父鏄剧ず - LedThread ledThread1 = (LedThread) SlaveConnection.get(SlaveType.Led, 1); - LedThread ledThread2 = (LedThread) SlaveConnection.get(SlaveType.Led, 2); - LedThread ledThread3 = (LedThread) SlaveConnection.get(SlaveType.Led, 3); - if (ledThread1 != null && ledThread2 != null && ledThread3 != null) { - MessageQueue.offer(SlaveType.Led, 1, new Task(3, "绌挎杞︽鍦�13鎺掑厖鐢垫々鍏呯數")); - MessageQueue.offer(SlaveType.Led, 2, new Task(3, "绌挎杞︽鍦�13鎺掑厖鐢垫々鍏呯數")); - MessageQueue.offer(SlaveType.Led, 3, new Task(3, "绌挎杞︽鍦�13鎺掑厖鐢垫々鍏呯數")); - } - News.error("绌挎杞︽鍦�13鎺掑厖鐢垫々鍏呯數"); return false; } command.setSteNo(slave.getId()); @@ -299,23 +242,12 @@ // 寮�濮嬩换鍔� if (!command.getComplete()) { //缁勭粐浠诲姟鍓嶏紝鍏堟竻绌哄啓浠诲姟纭浣嶏紝浠ュ強浠诲姟瀹屾垚纭浣� - siemensS7Net.Write("V2000.0", false); - siemensS7Net.Write("V2000.1", false); -// siemensS7Net.Write("V2500.1", false); - Thread.sleep(200); - OperateResultExOne<Boolean> waitingRes2 = siemensS7Net.ReadBool("V2000.1"); - if (waitingRes2.IsSuccess) { - if(!waitingRes2.Content){ - News.error("閲嶇疆浠诲姟瀹屾垚纭浣嶆垚鍔�"); - } else { - News.error("閲嶇疆浠诲姟瀹屾垚纭浣嶅け璐�1"); - } - } else { - News.error("閲嶇疆浠诲姟瀹屾垚纭浣嶅け璐�2"); - } - + siemensS7Net.Write("DB100.0", (short) 0);//璁惧鍙� + siemensS7Net.Write("DB100.2", (short) 0);//浠诲姟鍙� + siemensS7Net.Write("DB100.12.0", false);//浠诲姟寮�濮嬬‘璁や綅 + siemensS7Net.Write("DB100.12.1", false);//浠诲姟瀹屾垚纭 // 1.浠诲姟鍙� - OperateResult result0 = siemensS7Net.Write("V998", command.getTaskNo().shortValue()); + OperateResult result0 = siemensS7Net.Write("DB100.2", command.getTaskNo().shortValue()); try { Thread.sleep(200); } catch (InterruptedException e) { @@ -324,41 +256,25 @@ // 浣滀笟 if (command.getTaskMode() != 0) { // 2.浣滀笟 - OperateResult result1 = siemensS7Net.Write("V1000", command.getTaskMode()); + OperateResult result1 = siemensS7Net.Write("DB100.4", command.getTaskMode()); // 3.纭寮�濮嬩换鍔� if (result0.IsSuccess && result1.IsSuccess) { - result = siemensS7Net.Write("V2000.0", true); - siemensS7Net.Write("V2000.1", false); -// siemensS7Net.Write("V2500.1", false); - } + result = siemensS7Net.Write("DB100.12.0", true); - // 鍏朵粬鎸囦护 - } else { - // 鎺у埗妯″紡 - if (command.getControlMode() != null) { - result = siemensS7Net.Write("V1010", command.getControlMode()); - // 澶嶄綅淇″彿 - } else if (command.getReset() != null) { - result = siemensS7Net.Write("V2000.2", command.getReset()); - // 鍒犻櫎鎸囦护 - } else if (command.getDelete() != null) { - result = siemensS7Net.Write("V2000.3", command.getDelete()); - // 鏃犳晥鎸囦护 - } else if (command.getRun() != null) { - result = siemensS7Net.Write("V1016", command.getRun()); - // 鏃犳晥鎸囦护 - }else { - return false; + try { + Thread.sleep(300); + } catch (InterruptedException e) { + e.printStackTrace(); + } } } - - // 浠诲姟瀹屾垚 + // 浠诲姟瀹屾垚 } else { - siemensS7Net.Write("V2000.0", false); - siemensS7Net.Write("V998", (short) 0); - siemensS7Net.Write("V1000", (short) 0); - result = siemensS7Net.Write("V2000.1", true); -// result = siemensS7Net.Write("V2500.1", true); + siemensS7Net.Write("DB100.2", (short) 0);//浠诲姟鍙� + siemensS7Net.Write("DB100.4.0", (short) 0);//浠诲姟绫诲瀷 + siemensS7Net.Write("DB100.12.0", false);//浠诲姟寮�濮嬬‘璁や綅 + + result = siemensS7Net.Write("DB100.12.1", true);//浠诲姟瀹屾垚纭 } try { @@ -421,7 +337,7 @@ if (basSte != null) { // 鏇存柊plc鏁版嵁鍧� short[] arr = new short[] {basSte.getRow().shortValue(), basSte.getBay().shortValue(), basSte.getLev().shortValue()}; - OperateResult result = siemensS7Net.Write("V1002", arr); + OperateResult result = siemensS7Net.Write("DB100.6", arr); if (result.IsSuccess) { // 鏇存柊鏁版嵁搴� if (service.updatePakMk(this.slave.getId(), "N")) { @@ -436,7 +352,7 @@ public boolean modifyPosHandle(Integer row, Integer bay, Integer lev) { short[] arr = new short[] {row.shortValue(), bay.shortValue(), lev.shortValue()}; - OperateResult result = siemensS7Net.Write("V1002", arr); + OperateResult result = siemensS7Net.Write("DB100.6", arr); if (!result.IsSuccess) { News.error("鏇存柊{}鍙风┛姊溅瀹氫綅澶辫触 ===>> 鎺掞細銆恵}銆�, 鍒楋細銆恵}銆戯紝灞傦細銆恵}銆�", this.slave.getId(), row, bay, lev); return false; @@ -451,7 +367,7 @@ @Override public void close() { -// siemensS7Net.ConnectClose(); + siemensS7Net.ConnectClose(); } /** @@ -469,13 +385,6 @@ } } -// public void modifyPos(int wrkNo, int row, int bay, int lev) { -// BasSteService service = SpringUtils.getBean(BasSteService.class); -// if (!service.updatePos(wrkNo,this.slave.getId(), row, bay, lev)) { -// News.error("鏇存柊{}鍙风┛姊溅瀹氫綅澶辫触 ===>> 鎺掞細銆恵}銆�, 鍒楋細銆恵}銆戯紝灞傦細銆恵}銆�", this.slave.getId(), row, bay, lev); -// } -// } - /******************************************************************************************/ /**************************************** 娴嬭瘯涓撶敤 *****************************************/ /*****************************************************************************************/ @@ -488,36 +397,6 @@ thread.connect(); thread.readStatus(); System.out.println(JSON.toJSONString(thread.steProtocol)); - - // 浠诲姟浣滀笟 -// SteCommand command = new SteCommand(); -// command.setSteNo(1); // 鍫嗗灈鏈虹紪鍙� -// Random random = new Random(); -// int taskNo = random.nextInt(9090); -// command.setTaskNo(taskNo); // 宸ヤ綔鍙� -// command.setTaskMode(SteTaskModeType.MOVE_LEFT); // 浠诲姟妯″紡 -// thread.write(command); - - // 浠诲姟瀹屾垚 -// SteCommand command = new SteCommand(); -// command.setSteNo(1); // 鍫嗗灈鏈虹紪鍙� -// command.setComplete(Boolean.TRUE); // 浠诲姟妯″紡 -// thread.write(command); - - // 鎺у埗妯″紡 -// SteCommand command = new SteCommand(); -// command.setControlMode((short) 1); -// thread.write(command); - - // 澶嶄綅淇″彿 -// SteCommand command = new SteCommand(); -// command.setReset(Boolean.TRUE); -// thread.write(command); - - // 鍒犻櫎鎸囦护 -// SteCommand command = new SteCommand(); -// command.setDelete(Boolean.TRUE); -// thread.write(command); // 绌挎杞﹁繍琛岀姝� SteCommand command = new SteCommand(); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 055947f..5906c83 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -345,6 +345,7 @@ id: 1 ip: 10.10.10.190 port: 120 + jarOtherId: 2 # 纭寲缃愬叆搴撶珯鐐� jarInSta[0]: devpPlcId: ${wcs-slave.devp[1].id} @@ -385,6 +386,7 @@ id: 2 ip: 10.10.10.191 port: 120 + jarOtherId: 1 # 纭寲缃愬叆搴撶珯鐐� jarInSta[0]: devpPlcId: ${wcs-slave.devp[1].id} @@ -425,6 +427,7 @@ id: 3 ip: 10.10.10.192 port: 120 + jarOtherId: 4 # 纭寲缃愬叆搴撶珯鐐� jarInSta[0]: devpPlcId: ${wcs-slave.devp[1].id} @@ -465,6 +468,7 @@ id: 4 ip: 10.10.10.193 port: 120 + jarOtherId: 3 # 纭寲缃愬叆搴撶珯鐐� jarInSta[0]: devpPlcId: ${wcs-slave.devp[1].id} @@ -503,20 +507,28 @@ # ste1 ste[0]: id: 1 - ip: 10.10.10.100 - port: 120 + ip: 10.10.10.10 + port: 502 + rack: 0 + slot: 0 # ste2 ste[1]: id: 2 - ip: 10.10.10.100 - port: 120 + ip: 10.10.10.10 + port: 502 + rack: 0 + slot: 0 # ste3 ste[2]: id: 3 - ip: 10.10.10.100 - port: 120 + ip: 10.10.10.10 + port: 502 + rack: 0 + slot: 0 # ste4 ste[3]: id: 4 - ip: 10.10.10.100 - port: 120 \ No newline at end of file + ip: 10.10.10.10 + port: 502 + rack: 0 + slot: 0 \ No newline at end of file -- Gitblit v1.9.1