From ea8833f7c9fa7e6cda12319a79af8ffcda1f9e25 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期四, 03 三月 2022 15:30:31 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/model/command/SteCommand.java | 116 +++++++++-------------- src/main/java/com/zy/core/thread/SteThread.java | 88 +++++++---------- src/main/java/com/zy/core/enums/SteTaskModeType.java | 52 ++++++++++ 3 files changed, 135 insertions(+), 121 deletions(-) diff --git a/src/main/java/com/zy/core/enums/SteTaskModeType.java b/src/main/java/com/zy/core/enums/SteTaskModeType.java new file mode 100644 index 0000000..be7cfce --- /dev/null +++ b/src/main/java/com/zy/core/enums/SteTaskModeType.java @@ -0,0 +1,52 @@ +package com.zy.core.enums; + +public enum SteTaskModeType { + + INIT(0), // 鍒濆 + OUT_LEFT(1), // 宸﹀嚭搴� + OUT_RIGHT(2), // 鍙冲嚭搴� + IN_LEFT(3), // 宸﹀叆搴� + IN_RIGHT(4), // 鍙冲叆搴� + MOVE_LEFT(5), // 宸︾Щ搴� + MOVE_RIGHT(6), // 鍙崇Щ搴� + GO_ORIGIN(7), // 鍥炲師鐐� + BACK_ORIGIN(8), // 鍥炲弽鍘熺偣 + TO_A(9), // A鐐� + TO_B(10), // B鐐� + FIT_LEFT(11), // 宸︽惉绉� + FIT_RIGHT(12), // 鍙虫惉绉� + CHARGE(13), // 鍏呯數 + CHECK_LEFT(14), // 宸︾洏鐐� + CHECK_RIGHT(15), // 鍙崇洏鐐� + ; + + public Integer id; + SteTaskModeType(Integer id) { + this.id = id; + } + + public static SteTaskModeType get(Short id) { + if (null == id) { + return null; + } + for (SteTaskModeType type : SteTaskModeType.values()) { + if (type.id.equals(id.intValue())) { + return type; + } + } + return null; + } + + public static SteTaskModeType get(SteTaskModeType type) { + if (null == type) { + return null; + } + for (SteTaskModeType crnTaskModeType : SteTaskModeType.values()) { + if (crnTaskModeType == type) { + return crnTaskModeType; + } + } + return null; + } + +} 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 4deb5d5..88fa4ef 100644 --- a/src/main/java/com/zy/core/model/command/SteCommand.java +++ b/src/main/java/com/zy/core/model/command/SteCommand.java @@ -1,11 +1,8 @@ package com.zy.core.model.command; import com.alibaba.fastjson.annotation.JSONField; -import com.zy.core.enums.CrnTaskModeType; +import com.zy.core.enums.SteTaskModeType; import lombok.Data; - -import java.util.Calendar; -import java.util.Date; /** * 绌挎杞﹀懡浠ゆ姤鏂� @@ -14,96 +11,75 @@ @Data public class SteCommand { - // 鍫嗗灈鏈哄彿 - private Integer crnNo = 0; - - // 浠诲姟瀹屾垚纭浣� - private Short ackFinish = 0; + // 绌挎杞﹀彿 + private Integer steNo = 0; // 浠诲姟鍙� private Short taskNo = 0; - /** - * 浠诲姟妯″紡锛� - * 0 = 鏃� - * 1 = 鍏ュ簱 婧愬拰鐩爣閮藉彂 - * 2 = 鍑哄簱 婧愬拰鐩爣閮藉彂 - * 3 = 搴撲綅绉昏浆 婧愬拰鐩爣閮藉彂 - * 4 = 绔欎綅绉昏浆 婧愬拰鐩爣閮藉彂 - * 5 = 鍥炲師鐐� 涓嶇敤鍙� - * 6 = 鍘诲弽鍘熺偣 鐩爣鍙� - * 7 = 鍧愭爣绉昏 鐩爣鍙� - * 90 = 璁剧疆鏃堕棿 - * 99 = 鍙栨秷褰撳墠浠诲姟 - */ + // 浣滀笟绫诲瀷 private Short taskMode = 0; @JSONField(serialize = false) - private CrnTaskModeType taskModeType; + private SteTaskModeType taskModeType; - // 婧愪綅缃帓鍙� - private Short sourcePosX = 0; + // 鎺� + private Integer row; - // 婧愪綅缃垪鍙� - private Short sourcePosY = 0; + // 鍒� + private Integer bay; - // 婧愪綅缃眰鍙� - private Short sourcePosZ = 0; + // 灞� + private Integer lev; - // 婧愮珯 - private Short sourceStaNo = 0; + // 璧峰璁惧鍙� + private Integer startSsbm; - // 婧愬贩閬� - private Short sourceLane = 0; + // 鐩殑璁惧鍙� + private Integer endSsbm; - // 鐩爣浣嶇疆鎺掑彿 - private Short destinationPosX = 0; + // 鎺у埗妯″紡 0=鑴辨満 1=鑱旀満 + private Integer controlMode; - // 鐩爣浣嶇疆鍒楀彿 - private Short destinationPosY = 0; + // 寮�鍚俊鍙� 1-鍚姩 + private Integer open; - // 鐩爣浣嶇疆灞傚彿 - private Short destinationPosZ = 0; + // 鍒濆鍖� + private Integer init; - // 鐩爣绔� - private Short destinationStaNo = 0; + // 澶嶄綅淇″彿 1=澶嶄綅 + private Integer reset; - // 鐩爣宸烽亾 - private Short destinationLane = 0; + // 鍒犻櫎鎸囦护 1=鍒犻櫎 + private Integer delete; - // 浠诲姟纭 0锛氭湭纭 1锛氬凡纭 - private Short command = 0; + // 鎵樼洏闂磋窛 涓棿鎵樼洏涔嬮棿璺濈 鍗曚綅姣背 + private Integer space; + + // 闂磋窛纭 + private Integer spaceYes; + + // 鎺掍慨鏀� + private Integer rowModify; + + // 鍒椾慨鏀� + private Integer bayModify; + + // 灞備慨鏀� + private Integer levModify; + + // 淇敼纭 + private Integer modifyYes; + public void setTaskMode(Short taskMode){ this.taskMode = taskMode; - this.taskModeType = CrnTaskModeType.get(taskModeType); + this.taskModeType = SteTaskModeType.get(taskModeType); } - public void setTaskMode(CrnTaskModeType type) { + public void setTaskMode(SteTaskModeType type) { this.taskModeType = type; - this.taskMode = CrnTaskModeType.get(type).id.shortValue(); + this.taskMode = SteTaskModeType.get(type).id.shortValue(); } - public static void main(String[] args) { - Date date = new Date(); - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - - System.out.println(cal.get(Calendar.YEAR)); - //榛樿浠�0-11 - System.out.println(cal.get(Calendar.MONTH)+1); - System.out.println(cal.get(Calendar.DATE)); - int hour = cal.get(Calendar.HOUR_OF_DAY); - System.out.println("鏃�"); - System.out.println(hour); - int minute = cal.get(Calendar.MINUTE); - System.out.println("鍒�"); - System.out.println(minute); - int second = cal.get(Calendar.SECOND); - System.out.println("绉�"); - System.out.println(second); - int mm = cal.get(Calendar.DAY_OF_WEEK) - 1; // 鏄熸湡锛�0(鏃�)锝�6(鍏�) - System.out.println("绀兼嫓"); - System.out.println(mm); - } } diff --git a/src/main/java/com/zy/core/thread/SteThread.java b/src/main/java/com/zy/core/thread/SteThread.java index c3e317a..c44d079 100644 --- a/src/main/java/com/zy/core/thread/SteThread.java +++ b/src/main/java/com/zy/core/thread/SteThread.java @@ -2,7 +2,8 @@ import HslCommunication.Core.Types.OperateResult; import HslCommunication.Core.Types.OperateResultExOne; -import HslCommunication.Profinet.Melsec.MelsecMcNet; +import HslCommunication.Profinet.Siemens.SiemensPLCS; +import HslCommunication.Profinet.Siemens.SiemensS7Net; import com.alibaba.fastjson.JSON; import com.core.common.DateUtils; import com.core.common.SpringUtils; @@ -35,7 +36,7 @@ @Slf4j public class SteThread implements Runnable, ThreadHandler { - private MelsecMcNet melsecMcNet; + private SiemensS7Net siemensS7Net; private SteSlave slave; private SteProtocol steProtocol; private short heartBeatVal = 1; @@ -49,11 +50,6 @@ @SuppressWarnings("InfiniteLoopStatement") public void run() { this.connect(); -// try { -// Thread.sleep(2000); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } while (true) { try { int step = 1; @@ -76,7 +72,7 @@ if (null == command) { command = new SteCommand(); } - command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + command.setCrnNo(slave.getId()); // 绌挎杞︾紪鍙� command.setTaskNo((short) 0); // 宸ヤ綔鍙� command.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣� command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡 @@ -130,15 +126,17 @@ @Override public boolean connect() { boolean result = false; - melsecMcNet = new MelsecMcNet(slave.getIp(), slave.getPort()); - OperateResult connect = melsecMcNet.ConnectServer(); + 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; - OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戝爢鍨涙満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - log.info("鍫嗗灈鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戠┛姊溅plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + log.info("绌挎杞lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } else { - OutputQueue.CRN.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()); + OutputQueue.CRN.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()); initSte(); } // melsecMcNet.ConnectClose(); @@ -155,38 +153,26 @@ // flag1=1; // System.out.println("==="); // } - OperateResultExOne<byte[]> result = melsecMcNet.Read("D20", (short) 70); + OperateResultExOne<byte[]> result = siemensS7Net.Read("D20", (short) 70); if (result.IsSuccess) { if (null == steProtocol) { steProtocol = new SteProtocol(); } - steProtocol.setMode(melsecMcNet.getByteTransform().TransInt16(result.Content, 0)); - steProtocol.setTaskNo(melsecMcNet.getByteTransform().TransInt16(result.Content, 2)); - steProtocol.setStatus(melsecMcNet.getByteTransform().TransInt16(result.Content, 4)); - steProtocol.setBay(melsecMcNet.getByteTransform().TransInt16(result.Content, 6)); - steProtocol.setLevel(melsecMcNet.getByteTransform().TransInt16(result.Content, 8)); - steProtocol.setForkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 10)); - steProtocol.setLiftPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 12)); - steProtocol.setWalkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 14)); - steProtocol.setLoaded(melsecMcNet.getByteTransform().TransInt16(result.Content, 16)); - steProtocol.setAlarm(melsecMcNet.getByteTransform().TransInt16(result.Content, 18)); - steProtocol.setTemp1(melsecMcNet.getByteTransform().TransInt16(result.Content, 20)); - steProtocol.setTemp2(melsecMcNet.getByteTransform().TransInt16(result.Content, 22)); - steProtocol.setTemp3(melsecMcNet.getByteTransform().TransInt16(result.Content, 24)); - steProtocol.setTemp4(melsecMcNet.getByteTransform().TransInt16(result.Content, 26)); - steProtocol.setXSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 28)); - steProtocol.setYSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 32)); - steProtocol.setZSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 36)); - steProtocol.setXDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 40)); - steProtocol.setYDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 44)); - steProtocol.setXDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 48)); - steProtocol.setYDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 52)); + steProtocol.setMode(siemensS7Net.getByteTransform().TransInt16(result.Content, 0)); + steProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 2)); + steProtocol.setStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 4)); + steProtocol.setBay(siemensS7Net.getByteTransform().TransInt16(result.Content, 6)); + steProtocol.setLevel(siemensS7Net.getByteTransform().TransInt16(result.Content, 8)); + steProtocol.setForkPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 10)); + steProtocol.setLiftPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 12)); + steProtocol.setWalkPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 14)); + steProtocol.setLoaded(siemensS7Net.getByteTransform().TransInt16(result.Content, 16)); + steProtocol.setAlarm(siemensS7Net.getByteTransform().TransInt16(result.Content, 18)); OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); // 澶嶄綅淇″彿 if (steProtocol.getStatusType().equals(CrnStatusType.WAITING)) { - log.error("-------------------------------------------绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}][宸ヤ綔鍙凤細{}]==>> 鐘舵�佷负90锛岀瓑寰呯‘璁わ紒锛�",slave.getId(),steProtocol.getTaskNo()); if (resetFlag) { SteCommand steCommand = new SteCommand(); steCommand.setAckFinish((short)1); @@ -203,17 +189,17 @@ basCrnp.setCrnErr(steProtocol.getAlarm()==null?0:steProtocol.getAlarm().longValue()); basCrnp.setCrnNo(slave.getId()); if (!basCrnpService.updateById(steProtocol.toSqlModel(basCrnp))){ - log.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + log.error("绌挎杞lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } } else { - OutputQueue.CRN.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())); + OutputQueue.CRN.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.CRN.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()); + OutputQueue.CRN.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()); initSte(); } @@ -224,7 +210,7 @@ */ private boolean write(SteCommand command){ if (null == command) { - log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); + log.error("绌挎杞﹀啓鍏ュ懡浠や负绌�"); return false; } command.setCrnNo(slave.getId()); @@ -239,11 +225,11 @@ array[7] = command.getDestinationPosY(); array[8] = command.getDestinationPosZ(); array[9] = command.getCommand(); - OperateResult result = melsecMcNet.Write("D0", array); + OperateResult result = siemensS7Net.Write("D0", array); if (command.getAckFinish() == 0) { short commandFinish = 1; - result = melsecMcNet.Write("D9", commandFinish); + result = siemensS7Net.Write("D9", commandFinish); } try { @@ -251,7 +237,7 @@ BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class); BasCrnOpt basCrnOpt = new BasCrnOpt( command.getTaskNo().intValue(), // 浠诲姟鍙� - command.getCrnNo(), // 鍫嗗灈鏈篬闈炵┖] + command.getCrnNo(), // 绌挎杞闈炵┖] new Date(), // 涓嬪彂鏃堕棿 command.getTaskModeType().toString(), // 妯″紡 command.getSourcePosX().intValue(), // 婧愭帓 @@ -270,19 +256,19 @@ } catch (Exception ignore) {} if (result.IsSuccess) { - log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); + log.info("绌挎杞﹀懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); return true; } else { - OutputQueue.CRN.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()); + OutputQueue.CRN.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()); return false; } } @Override public void close() { - melsecMcNet.ConnectClose(); + siemensS7Net.ConnectClose(); } /** @@ -294,7 +280,7 @@ } else { heartBeatVal = 1; } - OperateResult write = melsecMcNet.Write("D10", heartBeatVal); + OperateResult write = siemensS7Net.Write("D10", heartBeatVal); if (!write.IsSuccess) { log.error("杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId()); } -- Gitblit v1.9.1