From 2b3c541d34ef2735182695d13cd28d5c107f46ef Mon Sep 17 00:00:00 2001 From: 18516761980 <56479841@qq.com> Date: 星期四, 25 八月 2022 09:37:40 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/enums/CrnTaskModeType.java | 9 src/main/java/com/zy/core/thread/SiemensCrnThread.java | 422 +++++++++++++++++++---------- src/main/java/com/zy/core/enums/CrnStatusType.java | 38 +- src/main/java/com/zy/core/CrnThread.java | 6 src/main/java/com/zy/core/enums/CrnLiftPosType.java | 10 src/main/java/com/zy/core/model/protocol/CrnProtocol.java | 314 ++++++++++++++++----- src/main/java/com/zy/core/enums/CrnModeType.java | 8 7 files changed, 542 insertions(+), 265 deletions(-) diff --git a/src/main/java/com/zy/core/CrnThread.java b/src/main/java/com/zy/core/CrnThread.java index 7b4ded6..70c3d75 100644 --- a/src/main/java/com/zy/core/CrnThread.java +++ b/src/main/java/com/zy/core/CrnThread.java @@ -8,10 +8,4 @@ void setResetFlag(boolean flag); - void setBackHpFlag(boolean flag); - - /** - * 鍫嗗灈鏈烘槸鍚﹀湪鍥炲師鐐硅繍鍔ㄤ腑鏍囪 - */ - boolean isBackHpFlag(); } diff --git a/src/main/java/com/zy/core/enums/CrnLiftPosType.java b/src/main/java/com/zy/core/enums/CrnLiftPosType.java index 71b809c..62bbf5e 100644 --- a/src/main/java/com/zy/core/enums/CrnLiftPosType.java +++ b/src/main/java/com/zy/core/enums/CrnLiftPosType.java @@ -2,12 +2,12 @@ public enum CrnLiftPosType { - ERROR(-1, "鏈煡"), // 涓嶅湪瀹氫綅 + _DOWN(4, "鍙屼几浣嶄綆浣�"), + _UP(3, "鍙屼几浣嶉珮浣�"), + DOWN(2, "鍗曚几浣嶄綆浣�"), // 涓嬪畾浣� + UP(1, "鍗曚几浣嶉珮浣�"), // 涓婂畾浣� NONE(0, "涓嶅湪瀹氫綅"), // 涓嶅湪瀹氫綅 - _DOWN(1, "鍙屾繁浣庝綅"), // - DOWN(2, "鍗曟繁浣庝綅"), // - _UP(3, "鍗曟繁楂樹綅"), // - UP(4, "鍙屾繁楂樹綅"), // + ERROR(-1, "鏈煡"), // 涓嶅湪瀹氫綅 ; public Integer id; diff --git a/src/main/java/com/zy/core/enums/CrnModeType.java b/src/main/java/com/zy/core/enums/CrnModeType.java index 7f2d84a..0b75045 100644 --- a/src/main/java/com/zy/core/enums/CrnModeType.java +++ b/src/main/java/com/zy/core/enums/CrnModeType.java @@ -2,11 +2,11 @@ public enum CrnModeType { - NONE(-1, "绂荤嚎"), - STOP(0, "缁翠慨"), - HAND(1, "鎵嬪姩"), + NONE(0, "鏈�夋嫨"), + AUTO(1, "鑷姩"), HALF_AUTO(2, "鍗婅嚜鍔�"), - AUTO(3, "鑷姩"), + HAND(3, "鎵嬪姩"), + STOP(4, "缁翠慨"), ; public Integer id; diff --git a/src/main/java/com/zy/core/enums/CrnStatusType.java b/src/main/java/com/zy/core/enums/CrnStatusType.java index 371c87f..1229af0 100644 --- a/src/main/java/com/zy/core/enums/CrnStatusType.java +++ b/src/main/java/com/zy/core/enums/CrnStatusType.java @@ -2,20 +2,28 @@ public enum CrnStatusType { - NONE(-1, "绂荤嚎"), - IDLE(0, "绌洪棽"), - FETCH_MOVING(1, "鍙栬揣琛岃蛋"), - FETCH_WAITING(2, "鍙栬揣绛夊緟"), - FETCHING(3, "鍙栬揣涓�"), - PUT_MOVING(4, "鏀捐揣璧拌"), - PUT_WAITING(5, "鏀捐揣绛夊緟"), - PUTTING(6, "鏀捐揣涓�"), - ORIGIN_GO(7, "鍥炲師鐐�"), - ORIGIN_BACK(8, "鍥炲弽鍘熺偣"), - MOVING(9, "璧拌涓�"), - WAITING(10, "浠诲姟瀹屾垚绛夊緟WCS纭"), - PAUSE(11, "浠诲姟鏆傚仠"), - SOS(99, "鎶ヨ"), +// NONE(-1, "绂荤嚎"), +// IDLE(0, "绌洪棽"), +// FETCH_MOVING(1, "鍙栬揣琛岃蛋"), +// FETCH_WAITING(2, "鍙栬揣绛夊緟"), +// FETCHING(3, "鍙栬揣涓�"), +// PUT_MOVING(4, "鏀捐揣璧拌"), +// PUT_WAITING(5, "鏀捐揣绛夊緟"), +// PUTTING(6, "鏀捐揣涓�"), +// ORIGIN_GO(7, "鍥炲師鐐�"), +// ORIGIN_BACK(8, "鍥炲弽鍘熺偣"), +// MOVING(9, "璧拌涓�"), +// WAITING(10, "浠诲姟瀹屾垚绛夊緟WCS纭"), +// PAUSE(11, "浠诲姟鏆傚仠"), +// SOS(99, "鎶ヨ"), +// ; + + IDLE(0, "绌洪棽锛屾棤浠诲姟"), + NONE_MOVING(1, "鏃犺揣琛岃蛋"), + FETCHING(2, "鍙栬揣"), + MOVING(3, "鏈夎揣琛岃蛋"), + PUTTING(4, "鏀捐揣"), + PUT_COMPLETE(5, "鏀捐揣瀹屾垚"), ; public Integer id; @@ -34,7 +42,7 @@ return type; } } - return NONE; + return null; } public static CrnStatusType get(CrnStatusType type) { diff --git a/src/main/java/com/zy/core/enums/CrnTaskModeType.java b/src/main/java/com/zy/core/enums/CrnTaskModeType.java index be4761d..968c075 100644 --- a/src/main/java/com/zy/core/enums/CrnTaskModeType.java +++ b/src/main/java/com/zy/core/enums/CrnTaskModeType.java @@ -6,12 +6,9 @@ PAKIN(1), // 鍏ュ簱 PAKOUT(2), // 鍑哄簱 LOC_MOVE(3), // 搴撲綅绉昏浆 - X_MOVE(4), // 绔欎綅绉昏浆 - Y_MOVE(5), // 绔欎綅绉昏浆 - XY_MOVE(6), // 绔欎綅绉昏浆 - GO_ORIGIN(7), // 鍥炲師鐐� - BACK_ORIGIN(8), // 鍥炲弽鍘熺偣 - CLEAR(9), // 娓呴敊 + SITE_MOVE(4), // 绔欎綅绉昏浆 + GO_ORIGIN(5), // 鍥炲師鐐� + CLEAR(7), // 娓呴敊 ; public Integer id; diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java index a63b90b..87c0781 100644 --- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java @@ -1,10 +1,7 @@ package com.zy.core.model.protocol; import com.zy.asrs.entity.BasCrnp; -import com.zy.core.enums.CrnForkPosType; -import com.zy.core.enums.CrnLiftPosType; -import com.zy.core.enums.CrnModeType; -import com.zy.core.enums.CrnStatusType; +import com.zy.core.enums.*; import lombok.Data; /** @@ -12,8 +9,6 @@ */ @Data public class CrnProtocol { - - private Integer crnNo; /** * 1 = 鎵嬪姩妯″紡 @@ -25,14 +20,19 @@ public CrnModeType modeType; /** + * 鍫嗗灈鏈轰换鍔″畬鎴� + */ + public Short taskFinish; + + /** + * 鏍¢獙缁撴灉 1琛ㄧず妫�楠屾垚鍔� + */ + public Short valid; + + /** * 1 = 鎬ュ仠 */ public Short eStop; - - /** - * 寮傚父鐮� - */ - public Short alarm; /** * 浠诲姟鍙� @@ -70,45 +70,175 @@ public Short level; /** + * 鍫嗗灈鏈哄綋鍓嶆帓 + */ + public Short row; + + /** + * 鍫嗗灈鏈哄綋鍓嶅贩閬撳彿 + */ + public Short lane; + + /** + * 鍫嗗灈鏈洪�氳鐘舵�� + */ + public Boolean connStatus; + + /** + * 鐢宠鍏ュ簱淇 + */ + public Boolean correction; + + /** + * 鎵樼洏鍙烽敊 + */ + public Boolean tuError; + + /** + * 鍙栬揣鏃犵 + */ + public Boolean noneError; + + /** + * 鍙岄噸鍏ュ簱 + */ + public Boolean stockError; + + /** + * 浣滀笟鏁版嵁鏃犳晥 + */ + public Boolean jobInvalid; + + /** + * 绌洪棽鐘舵�� + */ + public Boolean idle; + + /** + * 鎺у埗鏌滀娇鑳� + */ + public Boolean control; + + /** + * 鍋滃噯 + */ + public Boolean stopQuasi; + + /** + * 杩愯 + */ + public Boolean running; + + /** + * 鏁呴殰 + */ + public Boolean fault; + + /** + * 璐у弶涓綅 + */ + public Boolean forkHome; + /** + * 鍗曚几浣嶈揣鍙夊乏浣� + */ + public Boolean forkSingleLeft; + /** + * 鍗曚几浣嶈揣鍙夊彸浣� + */ + public Boolean forkSingleRight; + /** + * 鍙屼几浣嶈揣鍙夊乏浣� + */ + public Boolean forkDoubleLeft; + /** + * 鍙屼几浣嶈揣鍙夊彸浣� + */ + public Boolean forkDoubleRight; + /** + * 鍗曚几浣嶉珮浣� + */ + public Boolean singleHigh; + /** + * 鍗曚几浣嶄綆浣� + */ + public Boolean singleLow; + /** + * 鍙屼几浣嶉珮浣� + */ + public Boolean doubleHigh; + /** + * 鍙屼几浣嶄綆浣� + */ + public Boolean doubleLow; + /** + * 绔欏彴楂樹綅 + */ + public Boolean platformHigh; + /** + * 绔欏彴浣庝綅 + */ + public Boolean platformLow; + + /** * 褰撳墠璐у弶浣嶇疆 * 0 = 璐у弶鍘熶綅 * 1 = 璐у弶鍦ㄥ乏渚� * 2 = 璐у弶鍦ㄥ彸渚� */ - public Short forkPos; + public Short forkPos = -1; - public CrnForkPosType forkPosType; + public CrnForkPosType forkPosType = CrnForkPosType.NONE; /** * 褰撳墠杞借揣鍙颁綅缃� * 0 = 涓嬪畾浣� * 1 = 涓婂畾浣� */ - public Short liftPos; + public Short liftPos = -1; - public CrnLiftPosType liftPosType; + public CrnLiftPosType liftPosType = CrnLiftPosType.ERROR; /** * 璧拌鍦ㄥ畾浣� * 0 = 鍦ㄥ畾浣� * 1 = 涓嶅湪瀹氫綅 */ - public Short walkPos; + public Short walkPos = 0; + + /** + * 鎷ㄦ寚浣嶇疆 + * 0 = 涓嶅湪瀹氫綅 + * 1 = 涓婂畾浣� + * 2 = 涓嬪畾浣� + */ + public Short fingerPos; + + public CrnFingerPosType fingerPosType; /** * 杞借揣鍙版湁鐗� */ public Short loaded; - private Short temp1; + /** + * 鍫嗗灈鏈哄瀭鐩存晠闅滀唬鐮侊紙鏁板�兼樉绀猴級 + */ + private Integer alarm1 = 0; - private CrnTemp1 crnTemp1; + /** + * 鍫嗗灈鏈烘按骞虫晠闅滀唬鐮侊紙鏁板�兼樉绀猴級 + */ + private Integer alarm2 = 0;; - private Short temp2; + /** + * 鍫嗗灈鏈鸿揣鍙夋晠闅滀唬鐮侊紙鏁板�兼樉绀猴級 + */ + private Integer alarm3 = 0;; - private Short temp3; - - private Short temp4; + /** + * 鍫嗗灈鏈虹姸鎬佹晠闅滀唬鐮侊紙鏁板�兼樉绀猴級 + */ + private Integer alarm4 = 0;; /** * 寮傚父1 @@ -139,53 +269,39 @@ private CrnError4 crnError4; /** - * 寮傚父5 - */ - private boolean[] error5; - - private CrnError5 crnError5; - - /** - * 寮傚父6 - */ - private boolean[] error6; - - private CrnError6 crnError6; - - /** * X琛岃蛋绾块�熷害m/min */ - private Float xSpeed; + private Float xSpeed = 0F; /** * Y琛岃蛋绾块�熷害m/min */ - private Float ySpeed; + private Float ySpeed = 0F; /** * Z琛岃蛋绾块�熷害m/min */ - private Float zSpeed; + private Float zSpeed = 0F; /** * 鍫嗗灈鏈虹疮璁¤蛋琛岃窛绂籯m */ - public Float xDistance; + public Float xDistance = 0F; /** * 鍫嗗灈鏈虹疮璁″崌闄嶈窛绂籯m */ - public Float yDistance; + public Float yDistance = 0F; /** * 鍫嗗灈鏈虹疮璁¤蛋琛屾椂闀縣 */ - public Float xDuration; + public Float xDuration = 0F; - /** + /**w * 鍫嗗灈鏈虹疮璁″崌闄嶆椂闀縣 */ - public Float yDuration; + public Float yDuration = 0F; public void setMode(Short mode) { this.mode = mode; @@ -227,12 +343,81 @@ this.status = CrnStatusType.get(type).id.shortValue(); } - public Short getTemp1() { - return temp1; + public void setFingerPos(Short type) { + this.fingerPos = type; + this.fingerPosType = CrnFingerPosType.get(type); } - public void setTemp1(Short temp1) { - this.temp1 = temp1; + public void setError1(boolean[] error1){ + this.error1 = error1; + this.crnError1 = new CrnError1(); + this.crnError1.remoteStop = error1[0]; + this.crnError1.mainStop = error1[1]; + this.crnError1.controlStop = error1[2]; + this.crnError1.xCoverErr = error1[3]; + this.crnError1.yCoverErr = error1[4]; + this.crnError1.zCoverErr = error1[5]; + this.crnError1.laserErr = error1[6]; + this.crnError1.barcodeErr = error1[7]; + this.crnError1.xFrontLimitErr = error1[8]; + this.crnError1.xBackLimitErr = error1[9]; + this.crnError1.yUpLimitErr = error1[10]; + this.crnError1.yDownLimitErr = error1[11]; + this.crnError1.zLeftLimitErr = error1[12]; + this.crnError1.zRightLimitErr = error1[13]; + this.crnError1.leftOverWidthErr1 = error1[14]; + this.crnError1.leftOverWidthErr2 = error1[15]; + } + + public void setError2(boolean[] error2){ + this.error2 = error2; + this.crnError2 = new CrnError2(); + this.crnError2.leftOverLenErr1 = error2[0]; + this.crnError2.leftOverLenErr2 = error2[1]; + this.crnError2.leftOverHighErr = error2[2]; + this.crnError2.rightOverWidthErr1 = error2[3]; + this.crnError2.rightOverWidthErr2 = error2[4]; + this.crnError2.rightOverLenErr1 = error2[5]; + this.crnError2.rightOverLenErr2 = error2[6]; + this.crnError2.rightOverHighErr = error2[7]; + this.crnError2.leftLooseRopeErr = error2[8]; + this.crnError2.rightLooseRopeErr = error2[9]; + this.crnError2.frontDoorErr = error2[10]; + this.crnError2.backDoorErr = error2[11]; + this.crnError2.startupErr = error2[12]; + this.crnError2.xFrontLocaUpErr = error2[13]; + this.crnError2.xFrontLocaDownErr = error2[14]; + this.crnError2.xBackLocaUpErr = error2[15]; + } + + public void setError3(boolean[] error3) { + this.error3 = error3; + this.crnError3 = new CrnError3(); + this.crnError3.xBackLocaDownErr = error3[0]; + this.crnError3.yUpLocaUpErr = error3[1]; + this.crnError3.yUpLocaDownErr = error3[2]; + this.crnError3.yDownLocaUpErr = error3[3]; + this.crnError3.yDownLocaDownErr = error3[4]; + this.crnError3.zLeftLocaUpErr = error3[5]; + this.crnError3.zLeftLocaDownErr = error3[6]; + this.crnError3.zRightLocaUpErr = error3[7]; + this.crnError3.zRightLocaDownErr = error3[8]; + this.crnError3.leftTakeNoneErr = error3[9]; + this.crnError3.rightTakeNoneErr = error3[10]; + this.crnError3.leftTakeThenLoadErr = error3[11]; + this.crnError3.rightTakeThenLoadErr = error3[12]; + this.crnError3.leftPutAndLoadErr = error3[13]; + this.crnError3.rightPutAndLoadErr = error3[14]; + this.crnError3.leftPutThenNoneErr = error3[15]; + } + + public void setError4(boolean[] error4) { + this.error4 = error4; + this.crnError4 = new CrnError4(); + this.crnError4.rightPutThenNoneErr = error4[0]; + this.crnError4.xLooseBrakeTimeout = error4[1]; + this.crnError4.yLooseBrakeTimeout = error4[2]; + this.crnError4.zLooseBrakeTimeout = error4[3]; } /** @@ -244,39 +429,8 @@ public BasCrnp toSqlModel(BasCrnp basCrnp){ - if (alarm!=null) { - basCrnp.setCrnErr(alarm.longValue()); - } + basCrnp.setCrnErr(alarm1.longValue()); basCrnp.setWrkNo(taskNo.intValue()); return basCrnp; } - - public void setxSpeed(Short xSpeed) { - this.xSpeed = Float.valueOf(xSpeed); - } - - public void setySpeed(Short ySpeed) { - this.ySpeed = Float.valueOf(ySpeed); - } - - public void setzSpeed(Short zSpeed) { - this.zSpeed = Float.valueOf(zSpeed); - } - - public void setxDistance(Short xDistance) { - this.xDistance = Float.valueOf(xDistance); - } - - public void setyDistance(Short yDistance) { - this.yDistance = Float.valueOf(yDistance); - } - - public void setxDuration(Short xDuration) { - this.xDuration = Float.valueOf(xDuration); - } - - public void setyDuration(Short yDuration) { - this.yDuration = Float.valueOf(yDuration); - } - } diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index 9bc94c7..f51d5c1 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -38,11 +38,6 @@ private CrnProtocol crnProtocol; private boolean resetFlag = false; - /** - * 鍫嗗灈鏈烘槸鍚﹀湪鍥炲師鐐硅繍鍔ㄤ腑鏍囪 - */ - private boolean backHpFlag = false; - public SiemensCrnThread(CrnSlave slave) { this.slave = slave; } @@ -50,6 +45,7 @@ @Override @SuppressWarnings("InfiniteLoopStatement") public void run() { + initCrnProtocol(); this.connect(); while (true) { try { @@ -97,29 +93,19 @@ } /** - * 鍒濆鍖栧爢鍨涙満鐘舵�� + * 鍒濆鍖栧爢鍨涙満 */ - private void initCrn() { - if (null == crnProtocol) { - crnProtocol = new CrnProtocol(); - } - crnProtocol.setMode((short) -1); -// crnProtocol.setTaskNo((short)0); - crnProtocol.setStatus((short)-1); - crnProtocol.setBay((short)0); - crnProtocol.setLevel((short)0); - crnProtocol.setForkPos((short) -1); - crnProtocol.setLiftPos((short) -1); - crnProtocol.setWalkPos((short)0); - crnProtocol.setLoaded((short)0); - crnProtocol.setAlarm((short)0); - crnProtocol.setxSpeed((short) 0); - crnProtocol.setySpeed((short) 0); - crnProtocol.setzSpeed((short) 0); - crnProtocol.setxDistance((short) 0); - crnProtocol.setyDistance((short) 0); - crnProtocol.setxDuration((short) 0); - crnProtocol.setyDuration((short) 0); + private void initCrnProtocol(){ + crnProtocol = new CrnProtocol(); + crnProtocol.setMode((short) 0); + crnProtocol.setStatus((short) 0); + crnProtocol.setTaskNo((short) 0); + crnProtocol.setTaskFinish((short) 0); + crnProtocol.setValid((short) 0); + crnProtocol.setBay((short) 0); + crnProtocol.setLevel((short) 0); + crnProtocol.setRow((short) 0); + crnProtocol.setLane((short) 0); } @Override @@ -136,9 +122,8 @@ } else { OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝爢鍨涙満plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); log.error("鍫嗗灈鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); - initCrn(); } -// siemensNet.ConnectClose(); + siemensNet.ConnectClose(); return result; } @@ -146,151 +131,290 @@ * 璇诲彇鐘舵�� */ private void readStatus(){ - try { - OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56); - if (result.IsSuccess) { - if (null == crnProtocol) { - crnProtocol = new CrnProtocol(); - crnProtocol.setCrnNo(slave.getId()); - } - crnProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0)); - crnProtocol.setTaskNo(siemensNet.getByteTransform().TransInt16(result.Content, 2)); - crnProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 4)); - crnProtocol.setBay(siemensNet.getByteTransform().TransInt16(result.Content, 6)); - crnProtocol.setLevel(siemensNet.getByteTransform().TransInt16(result.Content, 8)); - crnProtocol.setForkPos(siemensNet.getByteTransform().TransInt16(result.Content, 10)); - crnProtocol.setLiftPos(siemensNet.getByteTransform().TransInt16(result.Content, 12)); - crnProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 14)); - crnProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 16)); - crnProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 18)); - crnProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 20)); - crnProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 22)); - crnProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 24)); - crnProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 26)); - crnProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28)); - crnProtocol.setySpeed(siemensNet.getByteTransform().TransInt16(result.Content, 32)); - crnProtocol.setzSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 36)); - crnProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40)); - crnProtocol.setyDistance(siemensNet.getByteTransform().TransInt16(result.Content, 44)); - crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48)); - crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 52)); - - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); - - // 澶嶄綅淇″彿 - if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) { - if (resetFlag) { - if(crnProtocol.getTaskNo()==9999){ - backHpFlag = false; - } - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setAckFinish((short)1); - if (write(crnCommand)) { - resetFlag = false; - } - } - } - - try { - // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� - BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class); - BasCrnp basCrnp = new BasCrnp(); - basCrnp.setCrnNo(slave.getId()); - basCrnp.setCrnSts((int)crnProtocol.getMode()); - if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){ - log.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); - } - } catch (Exception ignore){} - - } else { - initCrn(); - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); - log.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); + OperateResultExOne<byte[]> result = siemensNet.Read("DB11.2", (short) 104); + if (result.IsSuccess) { + if (null == crnProtocol) { + crnProtocol = new CrnProtocol(); } - } 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()); - initCrn(); - } - } + crnProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0)); // 2 + crnProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 2)); // 4 + crnProtocol.setTaskNo(siemensNet.getByteTransform().TransInt16(result.Content, 4)); // 6 + crnProtocol.setTaskFinish(siemensNet.getByteTransform().TransInt16(result.Content, 6)); // 8 + crnProtocol.setValid(siemensNet.getByteTransform().TransInt16(result.Content, 8)); // 10 - private void convertRow(CrnCommand crnCommand) { - if (crnCommand.getSourcePosX() != null && crnCommand.getSourcePosX() != 0) { - crnCommand.setSourcePosX((short) (crnCommand.getSourcePosX() - ((slave.getId() - 1) * 4))); - } - if (crnCommand.getDestinationPosX() != null && crnCommand.getDestinationPosX() != 0) { - crnCommand.setDestinationPosX((short) (crnCommand.getDestinationPosX() - ((slave.getId() - 1) * 4))); + crnProtocol.setLevel(siemensNet.getByteTransform().TransInt16(result.Content, 14)); // 16 + crnProtocol.setBay(siemensNet.getByteTransform().TransInt16(result.Content, 16)); // 18 + crnProtocol.setRow(siemensNet.getByteTransform().TransInt16(result.Content, 18)); // 20 + crnProtocol.setLane(siemensNet.getByteTransform().TransInt16(result.Content, 20)); // 22 + + // 寮傚父 + crnProtocol.setAlarm1(0); + crnProtocol.setAlarm2(0); + crnProtocol.setAlarm3(0); + crnProtocol.setAlarm4(0); + boolean[] err1 = siemensNet.getByteTransform().TransBool(result.Content, 28, 1); // 30 + if (err1[0]) { crnProtocol.setAlarm1(1); } + if (err1[1]) { crnProtocol.setAlarm1(2); } + if (err1[2]) { crnProtocol.setAlarm1(3); } + boolean[] err2 = siemensNet.getByteTransform().TransBool(result.Content, 29, 1); // 31 + if (err2[0]) { crnProtocol.setAlarm1(4); } + if (err2[1]) { crnProtocol.setAlarm1(5); } + if (err2[2]) { crnProtocol.setAlarm1(6); } + boolean[] err3 = siemensNet.getByteTransform().TransBool(result.Content, 30, 1); // 32 + if (err3[6]) { crnProtocol.setAlarm1(7); } + if (err3[7]) { crnProtocol.setAlarm1(8); } + boolean[] err4 = siemensNet.getByteTransform().TransBool(result.Content, 31, 1); // 33 + if (err4[1]) { crnProtocol.setAlarm1(9); } + if (err4[5]) { crnProtocol.setAlarm1(10); } + if (err4[6]) { crnProtocol.setAlarm1(11); } + if (err4[7]) { crnProtocol.setAlarm1(12); } + boolean[] err5 = siemensNet.getByteTransform().TransBool(result.Content, 32, 1); // 34 + if (err5[0]) { crnProtocol.setAlarm2(13); } + if (err5[2]) { crnProtocol.setAlarm2(14); } + if (err5[3]) { crnProtocol.setAlarm2(15); } + if (err5[5]) { crnProtocol.setAlarm2(16); } + if (err5[6]) { crnProtocol.setAlarm2(17); } + if (err5[7]) { crnProtocol.setAlarm2(18); } + boolean[] err6 = siemensNet.getByteTransform().TransBool(result.Content, 33, 1); // 35 + if (err6[1]) { crnProtocol.setAlarm2(19); } + if (err6[2]) { crnProtocol.setAlarm2(20); } + if (err6[3]) { crnProtocol.setAlarm2(21); } + if (err6[4]) { crnProtocol.setAlarm2(22); } + boolean[] err7 = siemensNet.getByteTransform().TransBool(result.Content, 34, 1); // 36 + if (err7[4]) { crnProtocol.setAlarm2(23); } + if (err7[5]) { crnProtocol.setAlarm2(24); } + if (err7[6]) { crnProtocol.setAlarm2(25); } + boolean[] err8 = siemensNet.getByteTransform().TransBool(result.Content, 36, 1); // 38 + if (err8[0]) { crnProtocol.setAlarm3(26); } + if (err8[1]) { crnProtocol.setAlarm3(27); } + if (err8[2]) { crnProtocol.setAlarm3(28); } + if (err8[3]) { crnProtocol.setAlarm3(29); } + if (err8[4]) { crnProtocol.setAlarm3(30); } + if (err8[5]) { crnProtocol.setAlarm3(31); } + if (err8[6]) { crnProtocol.setAlarm3(32); } + if (err8[7]) { crnProtocol.setAlarm3(33); } + boolean[] err9 = siemensNet.getByteTransform().TransBool(result.Content, 37, 1); // 39 + if (err9[0]) { crnProtocol.setAlarm3(34); } + if (err9[1]) { crnProtocol.setAlarm3(35); } + if (err9[2]) { crnProtocol.setAlarm3(36); } + if (err9[3]) { crnProtocol.setAlarm3(37); } + if (err9[4]) { crnProtocol.setAlarm3(38); } + if (err9[5]) { crnProtocol.setAlarm3(39); } + if (err9[6]) { crnProtocol.setAlarm3(40); } + if (err9[7]) { crnProtocol.setAlarm3(41); } + boolean[] err10 = siemensNet.getByteTransform().TransBool(result.Content, 38, 1); // 40 + if (err10[0]) { crnProtocol.setAlarm3(42); } + if (err10[1]) { crnProtocol.setAlarm3(43); } + if (err10[2]) { crnProtocol.setAlarm3(44); } + if (err10[3]) { crnProtocol.setAlarm3(45); } + if (err10[4]) { crnProtocol.setAlarm3(46); } + boolean[] err11 = siemensNet.getByteTransform().TransBool(result.Content, 39, 1); // 41 + if (err11[0]) { crnProtocol.setAlarm3(47); } + if (err11[1]) { crnProtocol.setAlarm3(48); } + if (err11[2]) { crnProtocol.setAlarm3(49); } + boolean[] err12 = siemensNet.getByteTransform().TransBool(result.Content, 40, 1); // 42 + if (err12[0]) { crnProtocol.setAlarm4(50); } + if (err12[1]) { crnProtocol.setAlarm4(51); } + if (err12[2]) { crnProtocol.setAlarm4(52); } + if (err12[3]) { crnProtocol.setAlarm4(53); } + if (err12[4]) { crnProtocol.setAlarm4(54); } + if (err12[5]) { crnProtocol.setAlarm4(55); } + boolean[] err13 = siemensNet.getByteTransform().TransBool(result.Content, 41, 1); // 43 + if (err13[0]) { crnProtocol.setAlarm4(56); } + if (err13[1]) { crnProtocol.setAlarm4(57); } + if (err13[2]) { crnProtocol.setAlarm4(58); } + if (err13[3]) { crnProtocol.setAlarm4(59); } + boolean[] err14 = siemensNet.getByteTransform().TransBool(result.Content, 42, 1); // 44 + if (err14[0]) { crnProtocol.setAlarm4(60); } + if (err14[1]) { crnProtocol.setAlarm4(61); } + if (err14[2]) { crnProtocol.setAlarm4(62); } + if (err14[3]) { crnProtocol.setAlarm4(63); } + if (err14[4]) { crnProtocol.setAlarm4(64); } + if (err14[5]) { crnProtocol.setAlarm4(65); } + if (err14[6]) { crnProtocol.setAlarm4(66); } + if (err14[7]) { crnProtocol.setAlarm4(67); } + boolean[] err15 = siemensNet.getByteTransform().TransBool(result.Content, 43, 1); // 45 + if (err15[1]) { crnProtocol.setAlarm4(68); } + if (err15[2]) { crnProtocol.setAlarm4(69); } + if (err15[3]) { crnProtocol.setAlarm4(70); } + if (err15[4]) { crnProtocol.setAlarm4(71); } + if (err15[5]) { crnProtocol.setAlarm4(72); } + if (err15[6]) { crnProtocol.setAlarm4(73); } + + boolean[] bool1 = siemensNet.getByteTransform().TransBool(result.Content, 60, 1); // 62 + crnProtocol.setConnStatus(bool1[0]); + crnProtocol.setCorrection(bool1[3]); + crnProtocol.setTuError(bool1[4]); + crnProtocol.setNoneError(bool1[5]); + crnProtocol.setStockError(bool1[6]); + crnProtocol.setJobInvalid(bool1[7]); + boolean[] bool2 = siemensNet.getByteTransform().TransBool(result.Content, 61, 1); // 63 + crnProtocol.setIdle(bool2[0]); + crnProtocol.setControl(bool2[1]); + crnProtocol.setStopQuasi(bool2[2]); + crnProtocol.setRunning(bool2[3]); + crnProtocol.setFault(bool2[4]); + crnProtocol.setForkHome(bool2[5]); + crnProtocol.setForkSingleLeft(bool2[6]); + crnProtocol.setForkSingleRight(bool2[7]); + boolean[] bool3 = siemensNet.getByteTransform().TransBool(result.Content, 62, 1); // 64 + crnProtocol.setForkDoubleLeft(bool3[0]); + crnProtocol.setForkDoubleRight(bool3[1]); + crnProtocol.setSingleHigh(bool3[2]); + crnProtocol.setSingleLow(bool3[3]); + crnProtocol.setDoubleHigh(bool3[4]); + crnProtocol.setDoubleLow(bool3[5]); + crnProtocol.setPlatformHigh(bool3[6]); + crnProtocol.setPlatformLow(bool3[7]); + boolean[] bool4 = siemensNet.getByteTransform().TransBool(result.Content, 64, 1); // 66 + crnProtocol.setLoaded((short) (bool4[4]?1:0)); // 鏈夌墿 + + // 閫熷害 + crnProtocol.setXSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 22)); // 24 + crnProtocol.setYSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 24)); // 26 + crnProtocol.setZSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 26)); // 28 + // 绱閲岀▼銆佹椂闀� + crnProtocol.setXDistance((float) siemensNet.getByteTransform().TransInt32(result.Content, 88)); // 90 + crnProtocol.setYDistance((float) siemensNet.getByteTransform().TransInt32(result.Content, 92)); // 94 + crnProtocol.setXDuration((float) siemensNet.getByteTransform().TransInt32(result.Content, 96)); // 98 + crnProtocol.setYDuration((float) siemensNet.getByteTransform().TransInt32(result.Content, 100)); // 102 + + // 澧炲己 + if (crnProtocol.getForkHome()) { + crnProtocol.setForkPos(CrnForkPosType.HOME); + } + if (crnProtocol.getForkSingleLeft()) { + crnProtocol.setForkPos(CrnForkPosType.LEFT); + } + if (crnProtocol.getForkSingleRight()) { + crnProtocol.setForkPos(CrnForkPosType.RIGHT); + } + if (crnProtocol.getForkDoubleLeft()) { + crnProtocol.setForkPos(CrnForkPosType._LEFT); + } + if (crnProtocol.getForkDoubleRight()) { + crnProtocol.setForkPos(CrnForkPosType._RIGHT); + } + if (crnProtocol.getSingleHigh()) { + crnProtocol.setLiftPos(CrnLiftPosType.UP); + } + if (crnProtocol.getSingleLow()) { + crnProtocol.setLiftPos(CrnLiftPosType.DOWN); + } + if (crnProtocol.getDoubleHigh()) { + crnProtocol.setLiftPos(CrnLiftPosType._UP); + } + if (crnProtocol.getDoubleLow()) { + crnProtocol.setLiftPos(CrnLiftPosType._DOWN); + } + if (crnProtocol.getIdle()) { + crnProtocol.setStatus(CrnStatusType.IDLE); + } + + OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); + + // 澶嶄綅淇″彿 + if (crnProtocol.getTaskFinish() == 1) { + if (resetFlag) { + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setAckFinish((short)1); + if (write(crnCommand)) { + resetFlag = false; + } + + } + } + + try { + // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� + BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class); + BasCrnp basCrnp = new BasCrnp(); + basCrnp.setCrnNo(slave.getId()); + if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){ + log.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); + } + } catch (Exception ignore){} + + } else { + OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); + log.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } } /** * 鍐欏叆鏁版嵁 */ - private boolean write(CrnCommand command) throws InterruptedException { + private boolean write(CrnCommand command){ if (null == command) { log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); return false; } -// convertRow(command); + if (command.getTaskNo() == 0 && command.getAckFinish() == 0) { + command.setTaskNo((short) 9999); + } command.setCrnNo(slave.getId()); - short[] array = new short[10]; - array[0] = command.getAckFinish(); - array[1] = command.getTaskNo(); - array[2] = command.getTaskMode(); - array[3] = command.getSourcePosX(); - array[4] = command.getSourcePosY(); - array[5] = command.getSourcePosZ(); - array[6] = command.getDestinationPosX(); - array[7] = command.getDestinationPosY(); - array[8] = command.getDestinationPosZ(); -// array[9] = command.getSourceStaNo(); -// array[10] = command.getDestinationStaNo(); - array[9] = command.getCommand(); - OperateResult result = siemensNet.Write("DB100.0", array); - + short[] array = new short[9]; if (command.getAckFinish() == 0) { - short commandFinish = 1; - Thread.sleep(100L); - result = siemensNet.Write("DB100.18", commandFinish); + array[0] = 5; + } else { + array[0] = 0; + } + array[1] = command.getSourcePosZ(); + array[2] = command.getSourcePosY(); + array[3] = command.getSourcePosX(); + array[4] = command.getDestinationPosZ(); + array[5] = command.getDestinationPosY(); + array[6] = command.getDestinationPosX(); + array[7] = command.getSourceStaNo(); + array[8] = command.getDestinationStaNo(); + // 浣滀笟淇℃伅 + OperateResult result = siemensNet.Write("DB1000.0", array); + // 浠诲姟鍙� + 瀹屾垚浣� + short[] array2 = new short[2]; + array2[0] = command.getTaskNo(); + array2[1] = command.getAckFinish(); + OperateResult result1 = siemensNet.Write("DB1000.24", array2); + + // 缁撴潫浣� + if (command.getAckFinish() == 0) { + OperateResult result2 = siemensNet.Write("DB1000.28.1", true); } + // 鏃ュ織璁板綍 try { - // 鏃ュ織璁板綍 - BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class); - BasCrnOpt basCrnOpt = new BasCrnOpt( - command.getTaskNo().intValue(), // 浠诲姟鍙� - command.getCrnNo(), // 鍫嗗灈鏈篬闈炵┖] - new Date(), // 涓嬪彂鏃堕棿 - command.getTaskModeType().toString(), // 妯″紡 - command.getSourcePosX().intValue(), // 婧愭帓 - command.getSourcePosY().intValue(), // 婧愬垪 - command.getSourcePosZ().intValue(), // 婧愬眰 - null, // 婧愮珯 - command.getDestinationPosX().intValue(), // 鐩爣鎺� - command.getDestinationPosY().intValue(), // 鐩爣鍒� - command.getDestinationPosZ().intValue(), // 鐩爣灞� - null, // 鐩爣绔� - null, // 鍝嶅簲缁撴灉 - null, // 淇敼鏃堕棿 - null // 淇敼浜哄憳 - ); - bean.insert(basCrnOpt); + if (command.getAckFinish() != 1) { + BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class); + BasCrnOpt basCrnOpt = new BasCrnOpt( + command.getTaskNo().intValue(), // 浠诲姟鍙� + command.getCrnNo(), // 鍫嗗灈鏈篬闈炵┖] + new Date(), // 涓嬪彂鏃堕棿 + command.getTaskModeType().toString(), // 妯″紡 + command.getSourcePosX().intValue(), // 婧愭帓 + command.getSourcePosY().intValue(), // 婧愬垪 + command.getSourcePosZ().intValue(), // 婧愬眰 + null, // 婧愮珯 + command.getDestinationPosX().intValue(), // 鐩爣鎺� + command.getDestinationPosY().intValue(), // 鐩爣鍒� + command.getDestinationPosZ().intValue(), // 鐩爣灞� + null, // 鐩爣绔� + null, // 鍝嶅簲缁撴灉 + null, // 淇敼鏃堕棿 + null // 淇敼浜哄憳 + ); + bean.insert(basCrnOpt); + } } catch (Exception ignore) {} - if (result != null && result.IsSuccess) { - Thread.sleep(200); - this.readStatus(); - log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); + if (result.IsSuccess && result1.IsSuccess) { + log.warn("鍫嗗灈鏈哄懡浠や笅鍙慬id:{},鏃堕棿锛歿}] >>>>> {}", slave.getId(), DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmsssss_F), 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}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); + log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); return false; } } - @Override public void close() { -- Gitblit v1.9.1