From 7b8021d7ff94015d7034ead10fea5006d0032301 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期五, 24 四月 2026 09:13:51 +0800
Subject: [PATCH] WCS功能完善
---
src/main/java/com/zy/core/thread/SiemensCrnThread.java | 543 ++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 369 insertions(+), 174 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 6986acf..64f0104 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -5,22 +5,22 @@
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.zy.core.CrnThread;
+import com.zy.core.cache.MessageQueue;
+import com.zy.core.cache.OutputQueue;
+import com.zy.core.enums.CrnTaskModeType;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.model.CrnSlave;
+import com.zy.core.model.Task;
+import com.zy.core.model.command.CrnCommand;
+import com.zy.core.model.protocol.CrnProtocol;
import com.zy.entity.BasCrnOpt;
import com.zy.entity.BasCrnp;
import com.zy.service.BasCrnOptService;
import com.zy.service.BasCrnpService;
import com.zy.utils.News;
-import com.zy.core.CrnThread;
-import com.zy.core.cache.MessageQueue;
-import com.zy.core.cache.OutputQueue;
-import com.zy.core.enums.*;
-import com.zy.core.model.CrnSlave;
-import com.zy.core.model.Task;
-import com.zy.core.model.command.CrnCommand;
-import com.zy.core.model.protocol.CrnProtocol;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@@ -80,15 +80,16 @@
command = new CrnCommand();
}
command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
- command.setTaskNo((short) 0); // 宸ヤ綔鍙�
+ command.setTaskNo((short)0); // 宸ヤ綔鍙�
command.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣�
- command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡
+ command.setTaskMode(CrnTaskModeType.RESET); // 浠诲姟妯″紡
command.setSourcePosX((short)0); // 婧愬簱浣嶆帓
command.setSourcePosY((short)0); // 婧愬簱浣嶅垪
command.setSourcePosZ((short)0); // 婧愬簱浣嶅眰
command.setDestinationPosX((short)0); // 鐩爣搴撲綅鎺�
command.setDestinationPosY((short)0); // 鐩爣搴撲綅鍒�
command.setDestinationPosZ((short)0); // 鐩爣搴撲綅灞�
+ command.setCommand((short)0);
write(command);
break;
default:
@@ -194,23 +195,57 @@
crnProtocol.setyDistance(siemensNet.getByteTransform().TransSingle(result.Content, 44));
crnProtocol.setxDuration(siemensNet.getByteTransform().TransSingle(result.Content, 48));
crnProtocol.setyDuration(siemensNet.getByteTransform().TransSingle(result.Content, 52));
+// crnProtocol.setTaskReceive(siemensNet.getByteTransform().TransInt16(result.Content, 60));
OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+// if (crnProtocol.getStatus() == 0 && crnProtocol.getTaskReceive() == 0) {
+// OperateResultExOne<byte[]> taskResult = siemensNet.Read("DB100.0", (short) 20);
+// if (taskResult.IsSuccess) {
+// short taskNo = siemensNet.getByteTransform().TransInt16(taskResult.Content, 2);
+// short taskMode = siemensNet.getByteTransform().TransInt16(taskResult.Content, 4);
+// short sourcePosX = siemensNet.getByteTransform().TransInt16(taskResult.Content, 6);
+// short sourcePosY = siemensNet.getByteTransform().TransInt16(taskResult.Content, 8);
+// short sourcePosZ = siemensNet.getByteTransform().TransInt16(taskResult.Content, 10);
+// short destinationPosX = siemensNet.getByteTransform().TransInt16(taskResult.Content, 12);
+// short destinationPosY = siemensNet.getByteTransform().TransInt16(taskResult.Content, 14);
+// short destinationPosZ = siemensNet.getByteTransform().TransInt16(taskResult.Content, 16);
+// short confirm = siemensNet.getByteTransform().TransInt16(taskResult.Content, 18);
+//
+// if(taskNo != 0 || taskMode != 0 || sourcePosX != 0 || sourcePosY != 0 || sourcePosZ != 0 || destinationPosX != 0 || destinationPosY != 0 || destinationPosZ != 0 || confirm != 0) {
+// short[] array = new short[10];
+// array[0] = (short) 0;
+// array[1] = (short) 0;
+// array[2] = (short) 0;
+// array[3] = (short) 0;
+// array[4] = (short) 0;
+// array[5] = (short) 0;
+// array[6] = (short) 0;
+// array[7] = (short) 0;
+// array[8] = (short) 0;
+// array[9] = (short) 0;
+// siemensNet.Write("DB100.0", array);
+//
+// // 鏈�鍚庝换鍔″畬鎴愭椂闂�
+// basCrnp.setModiTime(new Date());
+// Thread.sleep(300);
+// }
+// }
+// }
// 澶嶄綅淇″彿
- if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
- News.info("{}鍙峰爢鍨涙満锛屾敹鍒颁换鍔}瀹屾垚淇″彿",crnProtocol.getCrnNo(),crnProtocol.getTaskNo());
- if (resetFlag) {
- if(crnProtocol.getTaskNo()==9999){
- backHpFlag = false;
- }
- CrnCommand crnCommand = new CrnCommand();
- crnCommand.setAckFinish((short)1);
- if (write(crnCommand)) {
- resetFlag = false;
- }
- }
- }
+// if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
+// News.info("{}鍙峰爢鍨涙満锛屾敹鍒颁换鍔}瀹屾垚淇″彿",crnProtocol.getCrnNo(),crnProtocol.getTaskNo());
+// if (resetFlag) {
+// if(crnProtocol.getTaskNo()==9999){
+// backHpFlag = false;
+// }
+// CrnCommand crnCommand = new CrnCommand();
+// crnCommand.setAckFinish((short)1);
+// if (write(crnCommand)) {
+// resetFlag = false;
+// }
+// }
+// }
try {
// 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
@@ -244,140 +279,297 @@
News.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
return false;
}
- // 鍚戝爢鍨涙満鍙戜换鍔″墠鐨勫爢鍨涙満鐘舵��
- try{
- 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())
- ){
- News.error("涓嬪彂鍓嶏細[id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
- } else {
- News.info("涓嬪彂鍓嶏細[id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+
+ // 浠诲姟瀹屾垚纭浣嶆槸鍚︾疆0
+ int writeAck = 0;
+ boolean commandResult = false;
+ do {
+ OperateResult result = siemensNet.Write("DB100.0", (short) 0);
+ if (result.IsSuccess) {
+ OperateResultExOne<byte[]> commandReadResult = siemensNet.Read("DB100.0", (short) 2);
+ if (commandReadResult.IsSuccess) {
+ short commandRead = siemensNet.getByteTransform().TransInt16(commandReadResult.Content, 0);
+ if (commandRead == 1) {
+ Thread.sleep(500);
+ } else {
+ commandResult = true;
+ break;
+ }
}
}
- }catch (Exception e){
- News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�");
- }
+ writeAck++;
+ Thread.sleep(200);
+ } while (writeAck < 5);
- 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.getCommand();
-// array[10] = 0; //澶囩敤1
-
- OperateResult result = siemensNet.Write("DB100.0", array);
- News.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array);
-
- if (!result.IsSuccess) {
- News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
- MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command));
- Thread.sleep(100);
- readStatus();
+ if (!commandResult) {
+ News.error("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}" + command.getCrnNo() + "浠诲姟鐘舵�佷綅寮傚父");
return false;
}
- //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
- Thread.sleep(200);
- try{
- 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));
- one.setTraySize(siemensNet.getByteTransform().TransBool(resultRead.Content, 22));
- 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())
+ if(command.getTaskModeType() == CrnTaskModeType.RESET) {
+ short[] array = new short[9];
+ array[0] = command.getAckFinish();
+ array[1] = (short) 0;
+ array[2] = (short) 0;
+ array[3] = (short) 0;
+ array[4] = (short) 0;
+ array[5] = (short) 0;
+ array[6] = (short) 0;
+ array[7] = (short) 0;
+ array[8] = (short) 0;
- ){
- try{
- News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
- }catch (Exception e){
- try{
- News.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSON(command),JSON.toJSON(resultRead));
- }catch (Exception e1){
- News.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+ // 鍐欏叆浠诲姟鏁版嵁
+ int idx = 0;
+ boolean commandDataResult = false;
+ do {
+ OperateResult result = siemensNet.Write("DB100.0", array);
+ if (result.IsSuccess) {
+ OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20);
+ if (resultRead.IsSuccess) {
+ short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2);
+ short taskMode = siemensNet.getByteTransform().TransInt16(resultRead.Content, 4);
+ short sourcePosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 6);
+ short sourcePosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 8);
+ short sourcePosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 10);
+ short destinationPosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 12);
+ short destinationPosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 14);
+ short destinationPosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 16);
+ if (taskNo != 0 || taskMode != 0 || sourcePosX != 0 || sourcePosY != 0 || sourcePosZ != 0 || destinationPosX != 0 || destinationPosY != 0 || destinationPosZ != 0) {
+ result = siemensNet.Write("DB100.0", array);
+ } else {
+ commandDataResult = true;
+ break;
}
}
- News.error("鍫嗗灈鏈哄懡浠ゅ洖璇诲け璐ュ悗锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
- MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command));
- Thread.sleep(100);
- readStatus();
- return false;
- } else {
- News.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
}
+ idx++;
+ Thread.sleep(200);
+ } while (idx < 5);
+
+ if (!commandDataResult) {
+ News.error("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}" + command.getCrnNo() + "鍫嗗灈鏈哄啓鍏ヤ换鍔℃暟鎹け璐�");
+ return false;
}
- }catch (Exception e){
- News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�");
- }
-
-
- if (command.getAckFinish() == 0) {
- if (result.IsSuccess) {
- Thread.sleep(300);
- //浠诲姟涓嬪彂娆℃暟
- int writeCount2 = 0;
-
- do {
- writeCount2++;
- short commandFinish = (short) 1;
- result = siemensNet.Write("DB100.18", commandFinish);
- if(result.IsSuccess){
- //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
- Thread.sleep(200);
- OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.18", (short) 2);
- if (resultRead.IsSuccess) {
- commandFinish=siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
- if (commandFinish != 1){
- News.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
- }else{
- //浠诲姟鍛戒护鍐欏叆鎴愬姛
- News.info("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍥炶鎴愬姛锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
- break;
- }
- }else {
- News.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍥炶澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
- }
- } else {
- News.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍐欏叆澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
- }
- }while (writeCount2<5);
- }
- } else {
BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
BasCrnp basCrnp = basCrnpService.selectById(slave.getId());
basCrnp.setModiTime(new Date());
basCrnpService.updateById(basCrnp);
+
+ } else {
+ short[] array = new short[9];
+ 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();
+
+ // 鍐欏叆浠诲姟鏁版嵁
+ int idx = 0;
+ boolean commandDataResult = false;
+ do {
+ OperateResult result = siemensNet.Write("DB100.0", array);
+ if (result.IsSuccess) {
+ OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20);
+ if (resultRead.IsSuccess) {
+ short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2);
+ short taskMode = siemensNet.getByteTransform().TransInt16(resultRead.Content, 4);
+ short sourcePosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 6);
+ short sourcePosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 8);
+ short sourcePosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 10);
+ short destinationPosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 12);
+ short destinationPosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 14);
+ short destinationPosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 16);
+ if (taskNo != command.getTaskNo()
+ || taskMode != command.getTaskMode()
+ || sourcePosX != command.getSourcePosX()
+ || sourcePosY != command.getSourcePosY()
+ || sourcePosZ != command.getSourcePosZ()
+ || destinationPosX != command.getDestinationPosX()
+ || destinationPosY != command.getDestinationPosY()
+ || destinationPosZ != command.getDestinationPosZ()) {
+ result = siemensNet.Write("DB100.0", array);
+ } else {
+ commandDataResult = true;
+ break;
+ }
+ }
+ }
+ idx++;
+ Thread.sleep(200);
+ } while (idx < 5);
+
+ if (!commandDataResult) {
+ News.error("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}" + command.getCrnNo() + "鍫嗗灈鏈哄啓鍏ヤ换鍔℃暟鎹け璐�");
+ return false;
+ }
+
+ // 涓嬪彂浠诲姟涓嬪彂纭浣�
+ int writeConfirmIdx = 0;
+ boolean commandConfirmResult = false;
+ do {
+ OperateResult result = siemensNet.Write("DB100.18", (short) 1);
+ if (result.IsSuccess) {
+ OperateResultExOne<byte[]> commandReadResult = siemensNet.Read("DB100.18", (short) 2);
+ if (commandReadResult.IsSuccess) {
+ short commandRead = siemensNet.getByteTransform().TransInt16(commandReadResult.Content, 0);
+ if (commandRead == 0) {
+ Thread.sleep(500);
+ } else {
+ commandConfirmResult = true;
+ break;
+ }
+ }
+ }
+ writeConfirmIdx++;
+ Thread.sleep(200);
+ } while (writeConfirmIdx < 5);
+
+ if (!commandConfirmResult) {
+ News.error("鍫嗗灈鏈哄啓鍏ョ‘璁ゆ暟鎹け璐� ===>> [id:{}]", command.getCrnNo());
+ return false;
+ }
}
+ // 鍚戝爢鍨涙満鍙戜换鍔″墠鐨勫爢鍨涙満鐘舵��
+// try{
+// 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())
+// ){
+// News.error("涓嬪彂鍓嶏細[id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+// } else {
+// News.info("涓嬪彂鍓嶏細[id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+// }
+// }
+// }catch (Exception e){
+// News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�");
+// }
+//
+// 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.getCommand();
+//// array[10] = 0; //澶囩敤1
+//
+// OperateResult result = siemensNet.Write("DB100.0", array);
+// News.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array);
+//
+// if (!result.IsSuccess) {
+// News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+// MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command));
+// Thread.sleep(100);
+// readStatus();
+// return false;
+// }
+//
+// //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
+// Thread.sleep(200);
+// try{
+// 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));
+// one.setTraySize(siemensNet.getByteTransform().TransBool(resultRead.Content, 22));
+// 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{
+// News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+// }catch (Exception e){
+// try{
+// News.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSON(command),JSON.toJSON(resultRead));
+// }catch (Exception e1){
+// News.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+// }
+// }
+// News.error("鍫嗗灈鏈哄懡浠ゅ洖璇诲け璐ュ悗锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+// MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command));
+// Thread.sleep(100);
+// readStatus();
+// return false;
+// } else {
+// News.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+// }
+// }
+// }catch (Exception e){
+// News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�");
+// }
+//
+//
+// if (command.getAckFinish() == 0) {
+// if (result.IsSuccess) {
+// Thread.sleep(300);
+// //浠诲姟涓嬪彂娆℃暟
+// int writeCount2 = 0;
+//
+// do {
+// writeCount2++;
+// short commandFinish = (short) 1;
+// result = siemensNet.Write("DB100.18", commandFinish);
+// if(result.IsSuccess){
+// //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
+// Thread.sleep(200);
+// OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.18", (short) 2);
+// if (resultRead.IsSuccess) {
+// commandFinish=siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
+// if (commandFinish != 1){
+// News.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+// }else{
+// //浠诲姟鍛戒护鍐欏叆鎴愬姛
+// News.info("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍥炶鎴愬姛锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+// break;
+// }
+// }else {
+// News.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍥炶澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+// }
+// } else {
+// News.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍐欏叆澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+// }
+// }while (writeCount2<5);
+// }
+// } else {
+// BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
+// BasCrnp basCrnp = basCrnpService.selectById(slave.getId());
+// basCrnp.setModiTime(new Date());
+// basCrnpService.updateById(basCrnp);
+// }
+// if (command.getAckFinish() == 1) {
+
+// }
try {
// 鏃ュ織璁板綍
@@ -402,16 +594,16 @@
bean.insert(basCrnOpt);
} catch (Exception ignore) {}
- if (result.IsSuccess) {
- this.readStatus();
+// if (result.IsSuccess) {
+// this.readStatus();
News.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()));
- News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
- return false;
- }
+// } else {
+// OutputQueue.CRN.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());
+// return false;
+// }
}
@Override
@@ -424,8 +616,8 @@
/*****************************************************************************************/
public static void main(String[] args) throws InterruptedException {
CrnSlave slave = new CrnSlave();
- slave.setId(1);
- slave.setIp("10.10.10.1");
+ slave.setId(3);
+ slave.setIp("10.10.10.100");
slave.setRack(0);
slave.setSlot(0);
SiemensCrnThread crnThread = new SiemensCrnThread(slave);
@@ -435,39 +627,41 @@
Thread.sleep(3000L);
// 1.鍏ュ簱 婧愬拰鐩爣閮藉彂
-// CrnCommand command = new CrnCommand();
-// command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
-// command.setTaskNo((short) 0); // 宸ヤ綔鍙�
+ CrnCommand command = new CrnCommand();
+ command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
+ command.setTaskNo((short) 80); // 宸ヤ綔鍙�
// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
-// command.setTaskMode(CrnTaskModeType.PAKIN); // 浠诲姟妯″紡
-// command.setSourcePosX((short) 1); // 婧愬簱浣嶆帓
-// command.setSourcePosY((short) 0); // 婧愬簱浣嶅垪
-// command.setSourcePosZ((short) 1); // 婧愬簱浣嶅眰
-// command.setDestinationPosX((short) 2); // 鐩爣搴撲綅鎺�
-// command.setDestinationPosY((short) 3); // 鐩爣搴撲綅鍒�
-// command.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞�
-// crnThread.write(command);
+ command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡
+ command.setSourcePosX((short) 11); // 婧愬簱浣嶆帓
+ command.setSourcePosY((short) 4); // 婧愬簱浣嶅垪
+ command.setSourcePosZ((short) 1); // 婧愬簱浣嶅眰
+ command.setDestinationPosX((short) 12); // 鐩爣搴撲綅鎺�
+ command.setDestinationPosY((short) 5); // 鐩爣搴撲綅鍒�
+ command.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞�
+ command.setCommand((short) 1); // 鐩爣搴撲綅灞�
+ crnThread.write(command);
// 2.鍑哄簱 婧愬拰鐩爣閮藉彂
// CrnCommand command = new CrnCommand();
-// command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
-// command.setTaskNo((short) 0); // 宸ヤ綔鍙�
-// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
-// command.setTaskMode(CrnTaskModeType.PAKOUT); // 浠诲姟妯″紡
-// command.setSourcePosX((short) 2); // 婧愬簱浣嶆帓
-// command.setSourcePosY((short) 4); // 婧愬簱浣嶅垪
-// command.setSourcePosZ((short) 3); // 婧愬簱浣嶅眰
-// command.setDestinationPosX((short) 1); // 鐩爣搴撲綅鎺�
-// command.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒�
+// command.setCrnNo(2); // 鍫嗗灈鏈虹紪鍙�
+// command.setTaskNo((short) 80); // 宸ヤ綔鍙�
+//// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+// command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡
+// command.setSourcePosX((short) 5); // 婧愬簱浣嶆帓
+// command.setSourcePosY((short) 1); // 婧愬簱浣嶅垪
+// command.setSourcePosZ((short) 1); // 婧愬簱浣嶅眰
+// command.setDestinationPosX((short) 7); // 鐩爣搴撲綅鎺�
+// command.setDestinationPosY((short) 1); // 鐩爣搴撲綅鍒�
// command.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞�
+// command.setCommand((short) 1);
// crnThread.write(command);
// // 3.搴撲綅绉昏浆 婧愬拰鐩爣閮藉彂 pass
// CrnCommand command = new CrnCommand();
-// command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-// command.setTaskNo((short) 2); // 宸ヤ綔鍙�
-// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+// command.setCrnNo(2); // 鍫嗗灈鏈虹紪鍙�
+// command.setTaskNo((short) 88); // 宸ヤ綔鍙�
+//// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
// command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
// command.setSourcePosX((short)2); // 婧愬簱浣嶆帓
// command.setSourcePosY((short)1); // 婧愬簱浣嶅垪
@@ -475,6 +669,7 @@
// command.setDestinationPosX((short)3); // 鐩爣搴撲綅鎺�
// command.setDestinationPosY((short)1); // 鐩爣搴撲綅鍒�
// command.setDestinationPosZ((short)1); // 鐩爣搴撲綅灞�
+// command.setCommand((short)1);
// crnThread.write(command);
// 4.绔欎綅绉昏浆 婧愬拰鐩爣閮藉彂
--
Gitblit v1.9.1