From 0c60480362efdcffa0cbb3f6dd4272f43859adb1 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期二, 01 四月 2025 15:05:15 +0800 Subject: [PATCH] * --- src/main/java/com/zy/core/thread/SiemensCrnThread.java | 515 ++------------------------------------------------------- 1 files changed, 19 insertions(+), 496 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index ab05097..40592be 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -21,7 +21,6 @@ import com.zy.core.model.CrnSlave; import com.zy.core.model.Task; import com.zy.core.model.command.CrnCommand; -import com.zy.core.model.cpmmandParam.CrnCommandParam; import com.zy.core.model.protocol.CrnProtocol; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -41,7 +40,6 @@ private CrnSlave slave; private CrnProtocol crnProtocol; private boolean resetFlag = false; - private boolean resetFlagTwo = false; public Long sign = System.currentTimeMillis(); @@ -51,7 +49,6 @@ * 鍫嗗灈鏈烘槸鍚﹀湪鍥炲師鐐硅繍鍔ㄤ腑鏍囪 */ private boolean backHpFlag = false; - private boolean backHpFlagTwo = false; public SiemensCrnThread(CrnSlave slave) { this.slave = slave; @@ -61,7 +58,6 @@ @SuppressWarnings("InfiniteLoopStatement") public void run() { this.connect(); - sign = System.currentTimeMillis(); while (isRunning) { try { int step = 1; @@ -96,32 +92,6 @@ command.setDestinationPosZ((short)0); // 鐩爣搴撲綅灞� write(command); break; - // 鍐欏叆鏁版嵁 - case 5: - write5((CrnCommand) task.getData()); - break; - // 澶嶄綅 - case 6: - CrnCommand command2 = (CrnCommand) task.getData(); - if (null == command2) { - command2 = new CrnCommand(); - } - command2.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� - command2.setTaskNo((short) 0); // 宸ヤ綔鍙� - command2.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣� - command2.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡 - command2.setSourcePosX((short)0); // 婧愬簱浣嶆帓 - command2.setSourcePosY((short)0); // 婧愬簱浣嶅垪 - command2.setSourcePosZ((short)0); // 婧愬簱浣嶅眰 - command2.setDestinationPosX((short)0); // 鐩爣搴撲綅鎺� - command2.setDestinationPosY((short)0); // 鐩爣搴撲綅鍒� - command2.setDestinationPosZ((short)0); // 鐩爣搴撲綅灞� - write5(command2); - break; - // 鍙屽伐浣嶅悓鏃朵綔涓� - case 9: - write9((CrnCommandParam) task.getData()); - break; default: break; } @@ -144,7 +114,6 @@ crnProtocol.setMode((short) -1); // crnProtocol.setTaskNo((short)0); crnProtocol.setStatus((short)-1); - crnProtocol.setStatusTwo((short)-1); crnProtocol.setBay((short)0); crnProtocol.setLevel((short)0); crnProtocol.setForkPos((short) -1); @@ -159,16 +128,6 @@ crnProtocol.setyDistance((short) 0); crnProtocol.setxDuration((short) 0); crnProtocol.setyDuration((short) 0); - - // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� - BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class); - BasCrnp basCrnp = basCrnpService.selectById(slave.getId()); - basCrnp.setCrnSts((int)crnProtocol.getMode()); - basCrnp.setCrnStatusOne(-1); - basCrnp.setCrnStatusTwo(-1); - if (!basCrnpService.updateById(basCrnp)){ - log.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); - } } @Override @@ -196,74 +155,40 @@ */ private void readStatus(){ try { - OperateResultExOne<byte[]> result = new OperateResultExOne<byte[]>(); - if (slave.getId()>2 && slave.getId()<6){ - result = siemensNet.Read("DB101.0", (short) 66); - } else { - result = siemensNet.Read("DB101.0", (short) 56); - } + OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56); if (result.IsSuccess) { if (null == crnProtocol) { crnProtocol = new CrnProtocol(); crnProtocol.setCrnNo(slave.getId()); } - 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)); - - if (slave.getId()<3 || slave.getId()>5){ - 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)); - } else { - crnProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 12)); - - crnProtocol.setTaskNoTwo(siemensNet.getByteTransform().TransInt16(result.Content, 14)); - crnProtocol.setStatusTwo(siemensNet.getByteTransform().TransInt16(result.Content, 16)); - crnProtocol.setBayTwo(siemensNet.getByteTransform().TransInt16(result.Content, 18)); - crnProtocol.setLevelTwo(siemensNet.getByteTransform().TransInt16(result.Content, 20)); - crnProtocol.setForkPosTwo(siemensNet.getByteTransform().TransInt16(result.Content, 22)); - crnProtocol.setLoadedTwo(siemensNet.getByteTransform().TransInt16(result.Content, 24)); - - crnProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 26)); - crnProtocol.setWalkPosTwo(siemensNet.getByteTransform().TransInt16(result.Content, 28)); - - crnProtocol.setLiftPos(siemensNet.getByteTransform().TransInt16(result.Content, 30)); - crnProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 32)); - - crnProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 34)); - crnProtocol.setySpeed(siemensNet.getByteTransform().TransInt16(result.Content, 38)); - crnProtocol.setzSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 42)); -// crnProtocol.setzSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 42)); - - crnProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 50)); - crnProtocol.setyDistance(siemensNet.getByteTransform().TransInt16(result.Content, 54)); - crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 58)); - crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 62)); - } + 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 (!Cools.isEmpty(crnProtocol.getStatusType()) && (crnProtocol.getStatusType().equals(CrnStatusType.WAITING) || crnProtocol.getStatusType().equals(CrnStatusType.SEPARATE_WAITING))) { - log.error("-------------------------宸ヤ綅1-------------------------绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}, 宸ヤ綔鍙凤細{}, 杞借揣鍙�:{}]==>> 鐘舵�佷负{}锛岀瓑寰呯‘璁わ紒锛�", - slave.getId(),crnProtocol.getTaskNo(), crnProtocol.getLoaded()==1 ? "鏈夌墿" : "鏃犵墿",crnProtocol.getStatusType()); + if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) { + log.error("-------------------------------------------绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}, 宸ヤ綔鍙凤細{}, 杞借揣鍙�:{}]==>> 鐘舵�佷负10锛岀瓑寰呯‘璁わ紒锛�", + slave.getId(),crnProtocol.getTaskNo(), crnProtocol.getLoaded()==1 ? "鏈夌墿" : "鏃犵墿"); if (resetFlag) { if(crnProtocol.getTaskNo()==9999){ backHpFlag = false; @@ -272,22 +197,6 @@ crnCommand.setAckFinish((short)1); if (write(crnCommand)) { resetFlag = false; - } - } - } - - // 澶嶄綅淇″彿 - if (!Cools.isEmpty(crnProtocol.getStatusTypeTwo()) && (crnProtocol.getStatusTypeTwo().equals(CrnStatusType.WAITING) || crnProtocol.getStatusTypeTwo().equals(CrnStatusType.SEPARATE_WAITING))) { - log.error("-------------------------宸ヤ綅2-------------------------绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}, 宸ヤ綔鍙凤細{}, 杞借揣鍙�:{}]==>> 鐘舵�佷负{}锛岀瓑寰呯‘璁わ紒锛�", - slave.getId(),crnProtocol.getTaskNoTwo(), crnProtocol.getLoadedTwo()==1 ? "鏈夌墿" : "鏃犵墿",crnProtocol.getStatusTypeTwo()); - if (resetFlagTwo) { - if(crnProtocol.getTaskNoTwo()==9999){ - backHpFlagTwo = false; - } - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setAckFinish((short)1); - if (write5(crnCommand)) { - resetFlagTwo = false; } } } @@ -348,398 +257,12 @@ // array[9] = command.getSourceStaNo(); // array[10] = command.getDestinationStaNo(); array[9] = command.getCommand(); - OperateResult result18 = siemensNet.Write("DB100.18", (short)0); OperateResult result = siemensNet.Write("DB100.0", array); - log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array); - - - - //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� - Thread.sleep(200); - int writeCount = 1; - do { - try{ - if(!result.IsSuccess){ - log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSONString(command),writeCount); - result = siemensNet.Write("DB100.0", array); - Thread.sleep(100); - writeCount++; - continue; - } - OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 24); - if (resultRead.IsSuccess) { - CrnCommand one = new CrnCommand(); - one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2)); - one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4)); - one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6)); - one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8)); - one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10)); - one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12)); - one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14)); - one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16)); - if (!command.getTaskNo().equals(one.getTaskNo()) || !command.getTaskMode().equals(one.getTaskMode()) - || !command.getSourcePosX().equals(one.getSourcePosX()) || !command.getSourcePosY().equals(one.getSourcePosY()) - || !command.getSourcePosZ().equals(one.getSourcePosZ()) || !command.getDestinationPosX().equals(one.getDestinationPosX()) - || !command.getDestinationPosY().equals(one.getDestinationPosY()) || !command.getDestinationPosZ().equals(one.getDestinationPosZ()) - ){ - try{ - log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(one)); - }catch (Exception e){ - try{ - log.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(resultRead)); - }catch (Exception e1){ - log.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSONString(command)); - } - } - try{ - Thread.sleep(100); - }catch (Exception e){ - - } - log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSONString(command),writeCount); - result = siemensNet.Write("DB100.0", array); - writeCount++; - continue; - } else { - log.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(one)); - break; - } - } - }catch (Exception e){ - log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�,寮傚父锛�"+e); - } - writeCount++; - } while (writeCount<6); if (command.getAckFinish() == 0) { short commandFinish = 1; Thread.sleep(100L); result = siemensNet.Write("DB100.18", commandFinish); - int signFinish = 1; - while (signFinish<5){ - OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.18", (short) 2); - short transInt16 = siemensNet.getByteTransform().TransInt16(result10018.Content, 0); - if (transInt16 != commandFinish){ - log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "commandFinish:"+commandFinish); - log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "array:"+ JSON.toJSONString(array)); - result = siemensNet.Write("DB100.18", commandFinish); - signFinish++; - }else { - log.info("涓嬪彂DB100.18" + "commandFinish:"+commandFinish); - log.info("涓嬪彂DB100.18" + "array:"+ JSON.toJSONString(array)); - break; - } - } - } - - 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); - } catch (Exception ignore) {} - - if (result != null && result.IsSuccess) { - Thread.sleep(200); - this.readStatus(); - log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSONString(command)); - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSONString(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; - } - } - - /** - * 鍐欏叆鏁版嵁 宸ヤ綅2 - */ - private boolean write5(CrnCommand command) throws InterruptedException { - if (null == command) { - log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); - return false; - } -// convertRow(command); - 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 result18 = siemensNet.Write("DB100.38", (short)0); - OperateResult result = siemensNet.Write("DB100.20", array); - log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array); - - //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� - Thread.sleep(200); - int writeCount = 1; - do { - try{ - if(!result.IsSuccess){ - log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSONString(command),writeCount); - result = siemensNet.Write("DB100.20", array); - Thread.sleep(100); - writeCount++; - continue; - } - OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.20", (short) 24); - if (resultRead.IsSuccess) { - CrnCommand one = new CrnCommand(); - one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2)); - one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4)); - one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6)); - one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8)); - one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10)); - one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12)); - one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14)); - one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16)); - if (!command.getTaskNo().equals(one.getTaskNo()) || !command.getTaskMode().equals(one.getTaskMode()) - || !command.getSourcePosX().equals(one.getSourcePosX()) || !command.getSourcePosY().equals(one.getSourcePosY()) - || !command.getSourcePosZ().equals(one.getSourcePosZ()) || !command.getDestinationPosX().equals(one.getDestinationPosX()) - || !command.getDestinationPosY().equals(one.getDestinationPosY()) || !command.getDestinationPosZ().equals(one.getDestinationPosZ()) - ){ - try{ - log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(one)); - }catch (Exception e){ - try{ - log.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(resultRead)); - }catch (Exception e1){ - log.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSONString(command)); - } - } - try{ - Thread.sleep(100); - }catch (Exception e){ - - } - log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSONString(command),writeCount); - result = siemensNet.Write("DB100.20", array); - writeCount++; - continue; - } else { - log.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(one)); - break; - } - } - }catch (Exception e){ - log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�,寮傚父锛�"+e); - } - writeCount++; - } while (writeCount<6); - - if (command.getAckFinish() == 0) { - short commandFinish = 1; - Thread.sleep(100L); - result = siemensNet.Write("DB100.38", commandFinish); - int signFinish = 1; - while (signFinish<5){ - OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.38", (short) 2); - short transInt16 = siemensNet.getByteTransform().TransInt16(result10018.Content, 0); - if (transInt16 != commandFinish){ - log.info("涓嬪彂DB100.38 鍥炶澶辫触" + "commandFinish:"+commandFinish); - log.info("涓嬪彂DB100.38 鍥炶澶辫触" + "array:"+ JSON.toJSONString(array)); - result = siemensNet.Write("DB100.38", commandFinish); - signFinish++; - }else { - log.info("涓嬪彂DB100.38" + "commandFinish:"+commandFinish); - log.info("涓嬪彂DB100.38" + "array:"+ JSON.toJSONString(array)); - break; - } - } - } - - 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); - } catch (Exception ignore) {} - - if (result != null && result.IsSuccess) { - Thread.sleep(200); - this.readStatus(); - log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSONString(command)); - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSONString(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; - } - } - - /** - * 鍐欏叆鏁版嵁 鍙屽伐浣� - */ - private boolean write9(CrnCommandParam command) throws InterruptedException { - if (null == command) { - log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); - return false; - } - command.setCrnNo(slave.getId()); - short[] array = new short[22]; - 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.getCommand(); - array[10] = command.getAckFinish2(); - array[11] = command.getTaskNo2(); - array[12] = command.getTaskMode2(); - array[13] = command.getSourcePosX2(); - array[14] = command.getSourcePosY2(); - array[15] = command.getSourcePosZ2(); - array[16] = command.getDestinationPosX2(); - array[17] = command.getDestinationPosY2(); - array[18] = command.getDestinationPosZ2(); - array[19] = command.getCommand(); - array[20] = (short)1; - array[21] = (short)1; - OperateResult result18 = siemensNet.Write("DB100.18", (short)0); - OperateResult result38 = siemensNet.Write("DB100.38", (short)0); - OperateResult result = siemensNet.Write("DB100.0", array); -// OperateResult result = siemensNet.Write("DB100.20", array); - log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array); - - //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� - Thread.sleep(200); - int writeCount = 1; - do { - try{ - if(!result.IsSuccess){ - log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount); - result = siemensNet.Write("DB100.0", array); - Thread.sleep(100); - writeCount++; - continue; - } - OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 40); - if (resultRead.IsSuccess) { - CrnCommandParam one = new CrnCommandParam(); - one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2)); - one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4)); - one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6)); - one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8)); - one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10)); - one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12)); - one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14)); - one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16)); - one.setTaskNo2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 22)); - one.setTaskMode2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 24)); - one.setSourcePosX2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 26)); - one.setSourcePosY2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 28)); - one.setSourcePosZ2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 30)); - one.setDestinationPosX2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 32)); - one.setDestinationPosY2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 34)); - one.setDestinationPosZ2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 36)); - if (!command.getTaskNo().equals(one.getTaskNo()) || !command.getTaskMode().equals(one.getTaskMode()) - || !command.getSourcePosX().equals(one.getSourcePosX()) || !command.getSourcePosY().equals(one.getSourcePosY()) - || !command.getSourcePosZ().equals(one.getSourcePosZ()) || !command.getDestinationPosX().equals(one.getDestinationPosX()) - || !command.getDestinationPosY().equals(one.getDestinationPosY()) || !command.getDestinationPosZ().equals(one.getDestinationPosZ()) - || - !command.getTaskNo2().equals(one.getTaskNo2()) || !command.getTaskMode2().equals(one.getTaskMode2()) - || !command.getSourcePosX2().equals(one.getSourcePosX2()) || !command.getSourcePosY2().equals(one.getSourcePosY2()) - || !command.getSourcePosZ2().equals(one.getSourcePosZ2()) || !command.getDestinationPosX2().equals(one.getDestinationPosX2()) - || !command.getDestinationPosY2().equals(one.getDestinationPosY2()) || !command.getDestinationPosZ2().equals(one.getDestinationPosZ2()) - ){ - try{ - log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); - }catch (Exception e){ - try{ - log.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSON(command),JSON.toJSON(resultRead)); - }catch (Exception e1){ - log.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSON(command)); - } - } - try{ - Thread.sleep(100); - }catch (Exception e){ - - } - log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount); - result = siemensNet.Write("DB100.0", array); - writeCount++; - continue; - } else { - log.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); - break; - } - } - }catch (Exception e){ - log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�,寮傚父锛�"+e); - } - writeCount++; - } while (writeCount<6); - - if (command.getAckFinish() == 0) { - short commandFinish = 1; - Thread.sleep(100L); - result18 = siemensNet.Write("DB100.18", commandFinish); - result38 = siemensNet.Write("DB100.38", commandFinish); - int signFinish = 1; - while (signFinish<5){ - OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.18", (short) 2); - OperateResultExOne<byte[]> result10038 = siemensNet.Read("DB100.38", (short) 2); - short transInt1618 = siemensNet.getByteTransform().TransInt16(result10018.Content, 0); - short transInt1638 = siemensNet.getByteTransform().TransInt16(result10038.Content, 0); - if (transInt1618 != commandFinish || transInt1638 != commandFinish){ - log.info("涓嬪彂DB100.18/DB100.38 鍥炶澶辫触" + "commandFinish:"+commandFinish); - log.info("涓嬪彂DB100.18/DB100.38 鍥炶澶辫触" + "array:"+ JSON.toJSONString(array)); - result18 = siemensNet.Write("DB100.18", commandFinish); - result38 = siemensNet.Write("DB100.38", commandFinish); - signFinish++; - }else { - log.info("涓嬪彂DB100.18/DB100.38" + "commandFinish:"+commandFinish); - log.info("涓嬪彂DB100.18/DB100.38" + "array:"+ JSON.toJSONString(array)); - break; - } - } } try { -- Gitblit v1.9.1