From e73873f9406fb991c48cf7b0bc911e2a9103e7c7 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期一, 14 三月 2022 13:22:33 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/enums/SteHisTaskStatusType.java | 41 ++++++++ src/main/java/com/zy/core/thread/SteThread.java | 160 +++++++++++++++++++------------ src/main/java/com/zy/core/model/protocol/SteProtocol.java | 50 ++++++++- src/main/java/com/zy/core/enums/SteTaskModeType.java | 36 +++--- 4 files changed, 197 insertions(+), 90 deletions(-) diff --git a/src/main/java/com/zy/core/enums/SteHisTaskStatusType.java b/src/main/java/com/zy/core/enums/SteHisTaskStatusType.java new file mode 100644 index 0000000..b29f2a4 --- /dev/null +++ b/src/main/java/com/zy/core/enums/SteHisTaskStatusType.java @@ -0,0 +1,41 @@ +package com.zy.core.enums; + +public enum SteHisTaskStatusType { + + INIT(0, "鍒濆"), + COMPLETE(1, "鎵ц瀹屾垚"), + REMOVE(2, "鍒犻櫎"), + ; + + public Integer id; + public String desc; + SteHisTaskStatusType(Integer id, String desc) { + this.id = id; + this.desc = desc; + } + + public static SteHisTaskStatusType get(Short id) { + if (null == id) { + return null; + } + for (SteHisTaskStatusType type : SteHisTaskStatusType.values()) { + if (type.id.equals(id.intValue())) { + return type; + } + } + return null; + } + + public static SteHisTaskStatusType get(SteHisTaskStatusType type) { + if (null == type) { + return null; + } + for (SteHisTaskStatusType statusType : SteHisTaskStatusType.values()) { + if (statusType == type) { + return statusType; + } + } + return null; + } + +} diff --git a/src/main/java/com/zy/core/enums/SteTaskModeType.java b/src/main/java/com/zy/core/enums/SteTaskModeType.java index be7cfce..01e51b4 100644 --- a/src/main/java/com/zy/core/enums/SteTaskModeType.java +++ b/src/main/java/com/zy/core/enums/SteTaskModeType.java @@ -2,27 +2,29 @@ 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), // 鍙崇洏鐐� + 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鐐�"), // A鐐� + TO_B(10, "B鐐�"), // B鐐� + FIT_LEFT(11, "宸︽惉绉�"), // 宸︽惉绉� + FIT_RIGHT(12, "鍙虫惉绉�"), // 鍙虫惉绉� + CHARGE(13, "鍏呯數"), // 鍏呯數 + CHECK_LEFT(14, "宸︾洏鐐�"), // 宸︾洏鐐� + CHECK_RIGHT(15, "鍙崇洏鐐�"), // 鍙崇洏鐐� ; public Integer id; - SteTaskModeType(Integer id) { + public String desc; + SteTaskModeType(Integer id, String desc) { this.id = id; + this.desc = desc; } public static SteTaskModeType get(Short id) { diff --git a/src/main/java/com/zy/core/model/protocol/SteProtocol.java b/src/main/java/com/zy/core/model/protocol/SteProtocol.java index 57efadd..1890496 100644 --- a/src/main/java/com/zy/core/model/protocol/SteProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/SteProtocol.java @@ -1,7 +1,8 @@ package com.zy.core.model.protocol; -import com.zy.asrs.entity.BasCrnp; -import com.zy.core.enums.*; +import com.zy.asrs.entity.BasSte; +import com.zy.core.enums.SteHisTaskStatusType; +import com.zy.core.enums.SteStatusType; import lombok.Data; /** @@ -29,10 +30,18 @@ */ public Short status; - /** - * 鐘舵�佹灇涓� - */ public SteStatusType statusType; + + /** + * 姝e湪鎵ц浠诲姟 + */ + public Boolean execute; + + /** + * 浠诲姟瀹屾垚锛岀瓑寰匴CS纭 + */ + public Boolean waiting; + /** * 寮傚父鐮�1 @@ -49,6 +58,16 @@ * 鐢垫睜鐢甸噺 */ public Short charge; + + /** + * 婊$數 + */ + public Boolean fullCharge; + + /** + * 浣庣數閲� + */ + public Boolean lowCharge; /** * 鐢垫睜棣堢數 0锛屾甯革紝1棣堢數 @@ -118,8 +137,11 @@ /** * 杩囪处鎸囦护鐘舵�� + * 0鍒濆 1鎵ц瀹屾垚 2鍒犻櫎 */ public Short hisTaskStatus; + + public SteHisTaskStatusType hisTaskStatusType; /** * 鐩樼偣鏁伴噺 @@ -166,6 +188,16 @@ this.status = SteStatusType.get(type).id.shortValue(); } + public void setHisTaskStatus(Short hisTaskStatus){ + this.hisTaskStatus = hisTaskStatus; + this.hisTaskStatusType = SteHisTaskStatusType.get(hisTaskStatus); + } + + public void setHisTaskStatus(SteHisTaskStatusType type){ + this.hisTaskStatusType = type; + this.hisTaskStatus = SteHisTaskStatusType.get(type).id.shortValue(); + } + /** * 鏈�杩戜竴娆″叆鍑哄簱绫诲瀷 * I:鍏ュ簱 @@ -174,11 +206,11 @@ private String lastIo = "I"; - public BasCrnp toSqlModel(BasCrnp basCrnp){ + public BasSte toSqlModel(BasSte basSte){ if (alarm!=null) { - basCrnp.setCrnErr(alarm.longValue()); + basSte.setSteErr(alarm.longValue()); } - basCrnp.setWrkNo(taskNo); - return basCrnp; + basSte.setWrkNo(taskNo); + return basSte; } } diff --git a/src/main/java/com/zy/core/thread/SteThread.java b/src/main/java/com/zy/core/thread/SteThread.java index 280813a..e74e48e 100644 --- a/src/main/java/com/zy/core/thread/SteThread.java +++ b/src/main/java/com/zy/core/thread/SteThread.java @@ -4,11 +4,12 @@ import HslCommunication.Core.Types.OperateResultExOne; 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; import com.core.exception.CoolException; -import com.zy.asrs.entity.BasCrnp; -import com.zy.asrs.service.BasCrnpService; +import com.zy.asrs.entity.BasSte; +import com.zy.asrs.service.BasSteService; import com.zy.core.ThreadHandler; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; @@ -39,6 +40,10 @@ private short heartBeatVal = 1; private boolean resetFlag = false; + private Integer lastRow; + private Integer lastBay; + private Integer lastLev; + public SteThread(SteSlave slave) { this.slave = slave; } @@ -62,24 +67,6 @@ // 鍐欏叆鏁版嵁 case 2: write((SteCommand) task.getData()); - break; - // 澶嶄綅 - case 3: - SteCommand command = (SteCommand) task.getData(); - if (null == command) { - command = new SteCommand(); - } -// command.setSteNo(slave.getId()); // 绌挎杞︾紪鍙� -// command.setTaskNo((short) 0); // 宸ヤ綔鍙� -// command.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣� -// command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡 -// command.setSourcePosX((short)0); // 婧愬簱浣嶆帓 -// command.setSourcePosY((short)0); // 婧愬簱浣嶅垪 -// command.setSourcePosZ((short)0); // 婧愬簱浣嶅眰 -// command.setDestinationPosX((short)0); // 鐩爣搴撲綅鎺� -// command.setDestinationPosY((short)0); // 鐩爣搴撲綅鍒� -// command.setDestinationPosZ((short)0); // 鐩爣搴撲綅灞� - write(command); break; default: break; @@ -146,26 +133,44 @@ */ private void readStatus(){ try { -// if (this.slave.getId() == 1 && flag1.equals(0)) { -// Thread.sleep(3000); -// flag1=1; -// System.out.println("==="); -// } OperateResultExOne<byte[]> result = siemensS7Net.Read("V20", (short) 70); if (result.IsSuccess) { if (null == steProtocol) { steProtocol = new SteProtocol(); } -// 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)); +// steProtocol.setSteNo(); +// steProtocol.setMode(); +// steProtocol.setStatus(); +// steProtocol.setExecute(); +// steProtocol.setWaiting(); +// steProtocol.setAlarm(); +// steProtocol.setAlarm0(); +// steProtocol.setCharge(); +// steProtocol.setFullCharge(); +// steProtocol.setLowCharge(); +// steProtocol.setFeed(); +// steProtocol.setLoca(); +// steProtocol.setCloser(); +// steProtocol.setSpeed(); +// steProtocol.setPos(); +// steProtocol.setLoad(); +// steProtocol.setTrack(); +// steProtocol.setTaskNo(); +// steProtocol.setTaskType(); +// steProtocol.setRow(); +// steProtocol.setBay(); +// steProtocol.setLev(); +// +// steProtocol.setHisTaskNo(); +// steProtocol.setHisTaskStatus(); +// steProtocol.setCheckQty(); +// steProtocol.setReady(); +// steProtocol.setChargeNo(); +// +// steProtocol.setHeart(); +// steProtocol.setCrnStopRun(); +// steProtocol.setCrnStopFork(); +// steProtocol.setCrnAllowRun(); OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); @@ -174,7 +179,7 @@ if (resetFlag) { SteCommand steCommand = new SteCommand(); // steCommand.setAckFinish((short)1); - if (write(steCommand)) { + if (write(steCommand) && confirmPos()) { resetFlag = false; } } @@ -182,11 +187,10 @@ // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� - BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class); - BasCrnp basCrnp = new BasCrnp(); - basCrnp.setCrnErr(steProtocol.getAlarm()==null?0:steProtocol.getAlarm().longValue()); - basCrnp.setCrnNo(slave.getId()); - if (!basCrnpService.updateById(steProtocol.toSqlModel(basCrnp))){ + BasSteService service = SpringUtils.getBean(BasSteService.class); + BasSte basSte = new BasSte(); + basSte.setSteNo(slave.getId()); + if (!service.updateById(steProtocol.toSqlModel(basSte))){ log.error("绌挎杞lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } @@ -207,13 +211,12 @@ * 鍐欏叆鏁版嵁 */ private boolean write(SteCommand command){ - return true; -// if (null == command) { -// log.error("绌挎杞﹀啓鍏ュ懡浠や负绌�"); -// return false; -// } -// command.setCrnNo(slave.getId()); -// short[] array = new short[10]; + if (null == command) { + log.error("绌挎杞﹀啓鍏ュ懡浠や负绌�"); + return false; + } + command.setSteNo(slave.getId()); + short[] array = new short[10]; // array[0] = command.getAckFinish(); // array[1] = command.getTaskNo(); // array[2] = command.getTaskMode(); @@ -224,15 +227,15 @@ // array[7] = command.getDestinationPosY(); // array[8] = command.getDestinationPosZ(); // array[9] = command.getCommand(); -// OperateResult result = siemensS7Net.Write("D0", array); -// + OperateResult result = siemensS7Net.Write("D0", array); + // if (command.getAckFinish() == 0) { // short commandFinish = 1; // result = siemensS7Net.Write("D9", commandFinish); // } -// -// try { -// // 鏃ュ織璁板綍 + + try { + // 鏃ュ織璁板綍 // BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class); // BasCrnOpt basCrnOpt = new BasCrnOpt( // command.getTaskNo().intValue(), // 浠诲姟鍙� @@ -252,17 +255,46 @@ // null // 淇敼浜哄憳 // ); // bean.insert(basCrnOpt); -// } catch (Exception ignore) {} -// -// if (result.IsSuccess) { -// 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()); -// return false; -// } + } catch (Exception ignore) {} + + if (result.IsSuccess) { + // 缁存姢鏁版嵁搴撴帓鍒楀眰 +// this.modifyPos(); + + 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()); + return false; + } + } + + public void modifyPos(Integer row, Integer bay, Integer lev) { + this.lastRow = row; + this.lastBay = bay; + this.lastLev = lev; + } + + public boolean confirmPos() { + if (this.lastRow != null && this.lastRow != 0) { + if (this.lastBay != null && this.lastBay != 0) { + if (this.lastLev != null && this.lastLev != 0) { + BasSteService service = SpringUtils.getBean(BasSteService.class); + BasSte basSte = service.selectById(slave.getId()); + if (basSte != null) { + if (service.updatePos(this.lastRow, this.lastBay, this.lastLev) > 0) { + return true; + } else { + log.error("{}鍙风┛姊溅淇敼鏁版嵁搴撳畾浣嶅け璐ワ紒锛侊紒", slave.getId()); + } + } + + } + } + } + return false; } @Override -- Gitblit v1.9.1