From 9784ec36b190d0f0103b42059585d04ea0b10745 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期一, 22 九月 2025 13:33:17 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/RgvThread.java | 97 ++++++---
src/main/java/com/zy/asrs/controller/SiteController.java | 2
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 68 +++++-
src/main/java/com/zy/core/MainProcess.java | 12
src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 4
src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java | 2
src/main/java/com/zy/core/model/command/RgvCommand.java | 3
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 385 +++++++++++++++++++++++--------------
src/main/resources/application.yml | 8
src/main/resources/mapper/WrkMastStaMapper.xml | 4
10 files changed, 382 insertions(+), 203 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/SiteController.java b/src/main/java/com/zy/asrs/controller/SiteController.java
index acdda6d..76ab637 100644
--- a/src/main/java/com/zy/asrs/controller/SiteController.java
+++ b/src/main/java/com/zy/asrs/controller/SiteController.java
@@ -73,7 +73,7 @@
for (BasDevp devp : basDevps) {
SiteTableVo vo = new SiteTableVo();
vo.setDevNo(devp.getDevNo()); // 绔欑偣缂栧彿
-
+ vo.setWorkNo(devp.getWrkNo());
list.add(vo);
StaProtocol staProtocol = station.get(devp.getDevNo());
if (null == staProtocol) { continue; }
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
index 743cefb..36117fd 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
@@ -35,6 +35,6 @@
List<WrkMastSta> selectNoInterfereList(@Param("staStarts") List<Integer> staStarts, @Param("staEnds") List<Integer> staEnds);
- WrkMastSta selectByWorkSta(@Param("workSta") Integer workSta, @Param("rgv_no") Integer rgv_no);
+ WrkMastSta selectByWorkSta(@Param("workSta") Integer workSta, @Param("rgvo") Integer rgvNo);
}
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index d5f05ac..ba96987 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3218,16 +3218,18 @@
// 鍙湁褰揜GV绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
if ((rgvProtocol.getStatusType1() == RgvStatusType.IDLE || rgvProtocol.getStatusType2() == RgvStatusType.IDLE)
- && rgvProtocol.getModeType() == RgvModeType.AUTO
+// && rgvProtocol.getModeType() == RgvModeType.AUTO
&& rgvThread.isPakMk()) {
News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛孯GV鍏ュ嚭搴撲綔涓氫笅鍙�");
// 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
+// rgvRunWrkMastInTest();
+
if (rgvProtocol.getLastIo().equals("I")) {
- if (basRgv.getInEnable().equals("Y") && rgvThread.isPakIn()) {
+ if (basRgv.getInEnable().equals("1") && rgvThread.isPakIn()) {
//mark - 1 - ....
this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); // 鍏ュ簱
rgvProtocol.setLastIo("O");
- } else if (basRgv.getOutEnable().equals("Y") && rgvThread.isPakOut()) {
+ } else if (basRgv.getOutEnable().equals("1") && rgvThread.isPakOut()) {
//mark - 2 - ....
this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 鍑哄簱
rgvProtocol.setLastIo("I");
@@ -3235,10 +3237,10 @@
}
// 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
else if (rgvProtocol.getLastIo().equals("O")) {
- if (basRgv.getOutEnable().equals("Y") && rgvThread.isPakOut()) {
+ if (basRgv.getOutEnable().equals("1") && rgvThread.isPakOut()) {
this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 鍑哄簱
rgvProtocol.setLastIo("I");
- } else if (basRgv.getInEnable().equals("Y") && rgvThread.isPakIn()) {
+ } else if (basRgv.getInEnable().equals("1") && rgvThread.isPakIn()) {
this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); // 鍏ュ簱
rgvProtocol.setLastIo("O");
}
@@ -3259,6 +3261,44 @@
rgvOutExecute();
}
+ }
+ }
+ public synchronized void rgvRunWrkMastInTest(){
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(1);
+ List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ basRgvMap.setNowRoute(1031); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(342);//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+
+// WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, 1);
+ boolean result = false;
+// if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
+// result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣
+// }
+// if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣
+// rgvThread.setPakRgv(false);
+// continue;
+// }
+ wrkMastSta.setWorkSta(1);
+ wrkMastSta.setRgvNo(1);
+ wrkMastSta.setStaStart(1031);
+ Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃�
+ boolean sign = false;
+ sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction); //鍛戒护涓嬪彂
+ if (sign){
+ wrkMastSta.setWrkSts(1);
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+// rgvThread.setPakOut(false);//鍑哄簱涓嶅厑璁�
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+ if (!signMap){
+ log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+ }
+ } else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
}
}
/**
@@ -3920,7 +3960,8 @@
rgvCommand.setTaskStatus2(RgvTaskStatusType.X_MOVE); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐�
rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣
- rgvCommand.setDirection2(direction);
+// rgvCommand.setDirection1((short) 2);
+// rgvCommand.setWrkTaskMove2(direction);
rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
pakIn1 = false;
}else{ //鍏ュ簱RGV鍙栬揣琛岃蛋
@@ -3929,11 +3970,12 @@
rgvCommand.setTaskStatus1(RgvTaskStatusType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣
- rgvCommand.setDirection1(direction);
+// rgvCommand.setDirection1((short) 1);
+// rgvCommand.setDirection1(direction);
rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
}
if(!pakIn1){
- if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
//step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
return false;
@@ -3941,7 +3983,7 @@
return true;
}
}else{
- if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
//step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
return false;
@@ -3957,7 +3999,8 @@
rgvCommand.setTaskStatus2(RgvTaskStatusType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐�
rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣
- rgvCommand.setDirection2(direction);
+ rgvCommand.setDirection1((short)2);
+ rgvCommand.setWrkTaskMove2(direction);
rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
pakIn1 = false;
}else{ //鍏ュ簱RGV鍙栬揣
@@ -3966,7 +4009,8 @@
rgvCommand.setTaskStatus1(RgvTaskStatusType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣
- rgvCommand.setDirection1(direction);
+ rgvCommand.setDirection1((short)1);
+ rgvCommand.setWrkTaskMove1(direction);
rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
}
if(!pakIn1){
@@ -3994,6 +4038,7 @@
rgvCommand.setTaskStatus2(RgvTaskStatusType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣
rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
rgvCommand.setTargetPosition1(wrkMastSta.getStaEnd()); //宸ヤ綅2鐩爣绔欑偣
+ rgvCommand.setDirection1((short)2);
rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
pakIn2 = false;
}else{ //宸ヤ綅1浠诲姟鏀捐揣
@@ -4002,6 +4047,7 @@
rgvCommand.setTaskStatus1(RgvTaskStatusType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣
rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
rgvCommand.setTargetPosition1(wrkMastSta.getStaEnd()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setDirection1((short)1);
rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
}
if(!pakIn2){
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index ea22412..a6a86c4 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -157,12 +157,12 @@
continue;
}
- //arm浠诲姟瀹屾垚
- mainService.armMissionAccomplished();
- mainService.armMissionAccomplishedScanToCheckIn();
-
- //arm浠诲姟涓嬪彂
- mainService.armTaskAssignment();
+// //arm浠诲姟瀹屾垚
+// mainService.armMissionAccomplished();
+// mainService.armMissionAccomplishedScanToCheckIn();
+//
+// //arm浠诲姟涓嬪彂
+// mainService.armTaskAssignment();
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/main/java/com/zy/core/model/command/RgvCommand.java b/src/main/java/com/zy/core/model/command/RgvCommand.java
index d6c6da9..7ea6cbd 100644
--- a/src/main/java/com/zy/core/model/command/RgvCommand.java
+++ b/src/main/java/com/zy/core/model/command/RgvCommand.java
@@ -140,6 +140,9 @@
*/
Short wrkTaskPri = 0;
+ Short wrkTaskMove1 = 0;
+ Short wrkTaskMove2 = 0;
+
public void setTaskMode1(Short taskMode1){
this.taskMode1 = taskMode1;
this.taskModeType1 = RgvTaskModeType.get(taskModeType1);
diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
index a0bfe6d..ad4bcae 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -36,6 +36,10 @@
*/
public Short wrkTaskPri;
+ public Short wrkTaskMove1;
+
+ public Short wrkTaskMove2;
+
/**
* RGV褰撳墠鐘舵�佸伐浣�1
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 4817eb5..1235f3e 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -104,6 +104,7 @@
command.setTaskStatus1(RgvTaskStatusType.NONE); // 浠诲姟妯″紡
command.setTargetPosition1( 0); // 婧愮珯
command.setEndStaNo1(0); // 鐩爣绔�
+ command.setWrkTaskMove1((short) 0);
command.setWrkTaskPri((short)0);
command.setCommand(false);
write1(command);
@@ -120,6 +121,7 @@
command2.setTargetPosition2( 0); // 婧愮珯
command2.setEndStaNo2(0); // 鐩爣绔�
command2.setWrkTaskPri((short)0);
+ command2.setWrkTaskMove2((short)0);
command2.setCommand(false);
write2(command2);
break;
@@ -204,10 +206,12 @@
rgvProtocol.setTaskNo1(0);
rgvProtocol.setStatus1((short)-1);
rgvProtocol.setLoaded1(false);
+ rgvProtocol.setWrkTaskMove1((short)0);
//宸ヤ綅2鐘舵��
rgvProtocol.setTaskNo2(0);
rgvProtocol.setStatus2((short)-1);
rgvProtocol.setLoaded2(false);
+ rgvProtocol.setWrkTaskMove2((short)0);
// rgvProtocol.setAlarm((short)0);
// rgvProtocol.setxSpeed((short) 0);
// rgvProtocol.setxDistance((short) 0);
@@ -273,14 +277,14 @@
rgvProtocol.setErr5(status2[4]);
rgvProtocol.setErr6(status2[5]);
rgvProtocol.setErr7(status2[6]);
- boolean[] status3 = siemensNet.getByteTransform().TransBool(result.Content, 27, 1);
- rgvProtocol.setErr1(status3[0]);
- rgvProtocol.setErr2(status3[1]);
- rgvProtocol.setErr3(status3[2]);
- rgvProtocol.setErr4(status3[3]);
- rgvProtocol.setErr5(status3[4]);
- rgvProtocol.setErr6(status3[5]);
- rgvProtocol.setErr7(status3[6]);
+// boolean[] status3 = siemensNet.getByteTransform().TransBool(result.Content, 27, 1);
+// rgvProtocol.setErr1(status3[0]);
+// rgvProtocol.setErr2(status3[1]);
+// rgvProtocol.setErr3(status3[2]);
+// rgvProtocol.setErr4(status3[3]);
+// rgvProtocol.setErr5(status3[4]);
+// rgvProtocol.setErr6(status3[5]);
+// rgvProtocol.setErr7(status3[6]);
// rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 12));
@@ -544,6 +548,7 @@
one.setTaskStatus1(siemensNet.getByteTransform().TransInt16(result1.Content, 8));
one.setTaskNo1(siemensNet.getByteTransform().TransInt32(result1.Content, 10));
one.setDirection1(siemensNet.getByteTransform().TransInt16(result1.Content, 14));
+ one.setWrkTaskMove1(siemensNet.getByteTransform().TransInt16(result1.Content, 36));
// one.setAckFinish1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 0));
// one.setTaskNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 2));
// one.setTaskMode1(siemensNet.getByteTransform().TransInt16(result3.Content, 4));
@@ -561,23 +566,17 @@
}
byte[] writeBytes = new byte[34];
command.setRgvNo(slave.getId());
- siemensNet.getByteTransform().TransInt32(writeBytes, 0, command.getTargetPosition1());
- siemensNet.getByteTransform().TransInt32(writeBytes, 4, command.getEndStaNo1());
- siemensNet.getByteTransform().TransInt16(writeBytes, 8, command.getTaskStatus1());
- siemensNet.getByteTransform().TransInt32(writeBytes, 10, command.getTaskNo1());
- siemensNet.getByteTransform().TransInt16(writeBytes, 14, command.getDirection1());
- setBool(writeBytes, 32, 0, command.getAckFinish1());
-// command.setRgvNo(slave.getId());
-// short[] array = new short[5];
-// array[0] = command.getAckFinish1();
-// array[1] = command.getTaskNo1();
-// array[2] = command.getTaskMode1();
-// array[3] = command.getSourceStaNo1();
-// array[4] = command.getDestinationStaNo1();
-// siemensNet.Write("DB100.10", command.getCommand());
+ writeInt32(writeBytes, 0, command.getTargetPosition1());
+ writeInt32(writeBytes, 4, command.getEndStaNo1());
+ writeInt16(writeBytes, 8, (short)command.getTaskStatus1());
+ writeInt32(writeBytes, 10, command.getTaskNo1());
+ writeInt16(writeBytes, 14, (short)command.getDirection1());
+ writeBool(writeBytes, 32, 0, command.getAckFinish1());
+ writeInt16(writeBytes, 36, (short)command.getWrkTaskMove1());
OperateResult result = siemensNet.Write("DB100.0", writeBytes);
+
if (!result.IsSuccess){
News.error("鍐欏叆RGVplc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===> [id:{}],{}",slave.getId(),JSON.toJSON(command));
@@ -593,6 +592,7 @@
OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 34);
if (resultRead.IsSuccess){
RgvCommand one = new RgvCommand();
+ one.setWrkTaskMove1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 36));
one.setDirection1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14));
one.setTaskNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 10));
one.setTaskStatus1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
@@ -603,7 +603,8 @@
!command.getTaskNo1().equals(one.getTaskNo1()) ||
!command.getTaskStatus1().equals(one.getTaskStatus1()) ||
!command.getEndStaNo1().equals(one.getEndStaNo1()) ||
- !command.getTargetPosition1().equals(one.getTargetPosition1())
+ !command.getTargetPosition1().equals(one.getTargetPosition1()) ||
+ !command.getWrkTaskMove1().equals(one.getWrkTaskMove1())
) {
try{
News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
@@ -643,7 +644,7 @@
OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.32", (short) 2);
if (resultRead.IsSuccess) {
commandFinish=siemensNet.getByteTransform().TransBool(resultRead.Content, 0);
- if (!commandFinish){
+ if (commandFinish){
News.error("RGV浠诲姟纭浣�"+commandFinish+"鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
}else{
//浠诲姟鍛戒护鍐欏叆鎴愬姛
@@ -715,6 +716,7 @@
one.setTaskStatus2(siemensNet.getByteTransform().TransInt16(result1.Content, 24));
one.setTaskNo2(siemensNet.getByteTransform().TransInt32(result1.Content, 26));
one.setDirection2(siemensNet.getByteTransform().TransInt16(result1.Content, 30));
+ one.setWrkTaskMove2(siemensNet.getByteTransform().TransInt16(result1.Content, 38));
News.error("RGV鍛戒护涓嬪彂鍓嶈鍙栫姸鎬乕id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
}
@@ -723,16 +725,23 @@
if (result2.IsSuccess){
News.error("涓嬪彂鍓嶆妸杞﹀瓙纭浣嶇疆涓�0");
}
+
+
byte[] writeBytes = new byte[34];
command.setRgvNo(slave.getId());
- siemensNet.getByteTransform().TransInt32(writeBytes, 16, command.getTargetPosition2());
- siemensNet.getByteTransform().TransInt32(writeBytes, 20, command.getEndStaNo2());
- siemensNet.getByteTransform().TransInt16(writeBytes, 24, command.getTaskStatus2());
- siemensNet.getByteTransform().TransInt32(writeBytes, 26, command.getTaskNo2());
- siemensNet.getByteTransform().TransInt16(writeBytes, 30, command.getDirection2());
- setBool(writeBytes, 32, 1, command.getAckFinish2());
+
+ writeInt32(writeBytes, 16, command.getTargetPosition1());
+ writeInt32(writeBytes, 20, command.getEndStaNo2());
+ writeInt16(writeBytes, 24, (short)command.getTaskStatus2());
+ writeInt32(writeBytes, 26, command.getTaskNo2());
+ writeInt16(writeBytes, 30, (short)command.getDirection2());
+ writeBool(writeBytes, 32, 0, command.getAckFinish2());
+ writeInt16(writeBytes, 38, (short)command.getWrkTaskMove2());
+
OperateResult result = siemensNet.Write("DB100.0", writeBytes);
+
+
if (!result.IsSuccess){
News.error("鍐欏叆RGVplc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===> [id:{}],{}",slave.getId(),JSON.toJSON(command));
@@ -748,6 +757,7 @@
OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 34);
if (resultRead.IsSuccess){
RgvCommand one = new RgvCommand();
+ one.setWrkTaskMove2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 38));
one.setDirection2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 30));
one.setTaskNo2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 26));
one.setTaskStatus2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 24));
@@ -758,7 +768,8 @@
!command.getTaskNo2().equals(one.getTaskNo2()) ||
!command.getTaskStatus2().equals(one.getTaskStatus2()) ||
!command.getEndStaNo2().equals(one.getEndStaNo2()) ||
- !command.getTargetPosition2().equals(one.getTargetPosition2())
+ !command.getTargetPosition2().equals(one.getTargetPosition2()) ||
+ !command.getWrkTaskMove2().equals(one.getWrkTaskMove2())
) {
try{
News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
@@ -798,7 +809,7 @@
OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.32", (short) 2);
if (resultRead.IsSuccess) {
commandFinish=siemensNet.getByteTransform().TransBool(resultRead.Content, 1);
- if (!commandFinish){
+ if (commandFinish){
News.error("RGV浠诲姟纭浣�"+commandFinish+"鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
}else{
//浠诲姟鍛戒护鍐欏叆鎴愬姛
@@ -844,6 +855,28 @@
return false;
}
}
+ public static void writeInt32(byte[] buffer, int index, int value) {
+ buffer[index] = (byte)((value >> 24) & 0xFF);
+ buffer[index + 1] = (byte)((value >> 16) & 0xFF);
+ buffer[index + 2] = (byte)((value >> 8) & 0xFF);
+ buffer[index + 3] = (byte)(value & 0xFF);
+ }
+
+
+ public static void writeInt16(byte[] buffer, int index, short value) {
+ buffer[index] = (byte)((value >> 8) & 0xFF); // 楂樺瓧鑺�
+ buffer[index + 1] = (byte)(value & 0xFF); // 浣庡瓧鑺�
+ }
+
+ public static void writeBool(byte[] buffer, int byteIndex, int bitIndex, boolean value) {
+ if (value) {
+ buffer[byteIndex] |= (1 << bitIndex);
+ } else {
+ buffer[byteIndex] &= ~(1 << bitIndex);
+ }
+ }
+
+
@Override
public void close() {
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index d08b7be..b203b7b 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -28,10 +28,7 @@
import lombok.extern.slf4j.Slf4j;
import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
/**
@@ -51,20 +48,58 @@
//
// }};
public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
- add(100);add(101);add(102);add(103);
- add(104);add(105);add(106);add(107);
- add(108);add(109);add(110);add(111);
- add(112);add(113);add(114);add(115);
- add(116);add(117);add(118);add(119);
-
+ add(1001);add(1002);add(1004);
+ add(1005);add(1007);
+ add(1008);add(1010);
+ add(1011);add(1012);add(1014);
+ add(1015);add(1016);add(1018);
+ add(1019);add(1021);
+ add(1022);add(1024);
+ add(1025);add(1026);add(1028);
+ add(1029);add(1031);
+ add(1032);add(1033);add(1035);
+ add(1036);add(1037);add(1038);
+ add(1039);add(1041);
+// add(1042);add(1043);add(1044);add(1045);add(1046);add(1047);add(1048);add(1050);add(1051);add(1052);add(1053);add(1054);add(1055);add(1056);add(1057);
+// add(1058);add(1059);add(1060);add(1061);add(1062);add(1063);add(1064);add(1065);add(1066);add(1067);add(1068);add(1069);add(1070);add(1071);add(1072);
+// add(1073);add(1074);add(1075);add(1076);add(1077);add(1078);add(1079);add(1080);add(1081);add(1082);add(1083);add(1084);add(1085);add(1086);add(1087);
+// add(1088);add(1089);add(1090);add(1091);add(1092);add(1093);add(1094);add(1095);add(1096);add(1097);add(1098);add(1099);add(1100);add(1101);add(1102);
+// add(1103);add(1104);add(1105);add(1106);add(1107);add(1108);add(1109);
}};
public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
- add(100);add(101);add(102);add(103);
- add(104);add(105);add(106);add(107);
- add(108);add(109);add(110);add(111);
+ add(2001);add(2003);
+ add(2004);add(2006);
+ add(2007);add(2009);
+ add(2010);add(2012);
+ add(2013);add(2015);
+ add(2016);add(2018);
+ add(2019);add(2021);
+ add(2022);add(2024);
+ add(2025);add(2027);
+ add(2031);add(2033);
+ add(2034);add(2035);add(2037);
+ add(2041);add(2042);add(2043);add(2044);
+ add(2045);add(2046);add(2047);add(2048);
+ add(2101);add(2102);add(2103);add(2104);add(2105);add(2106);add(2107);add(2108);add(2109);add(2110);
+ add(2111);add(2112);add(2113);add(2114);add(2115);add(2116);add(2117);add(2118);add(2119);add(2120);
+ add(4001);add(4003);add(4004);add(4006);
}};
+ // 绔欑偣鍋忕Щ閲忔槧灏勮〃
+ public static final Map<Integer, Integer> siteOffsetMap = new HashMap<Integer, Integer>() {{
+ put(1001, 0);put(1002, 116);put(1003, 208);put(1004, 300);put(1005, 392);put(1006, 508);put(1007, 600);
+ put(1008, 692);put(1009, 808);put(1010, 900);put(1011, 992);put(1012, 1108);put(1013, 1200);put(1014, 1292);
+ put(1015, 1384);put(1016, 1500);put(1017, 1592);put(1018, 1684);put(1019, 1776);put(1020, 1892);put(1021, 1984);
+ put(1022, 2076);put(1023, 2192);put(1024, 2284);put(1025, 2376);put(1026, 2492);put(1027, 2584);put(1028, 2676);
+ put(1029, 0);put(1030, 116);put(1031, 208);put(1032, 300);put(1033, 416);put(1034, 508);put(1035, 600);
+ put(1036, 692);put(1037, 784);put(1038, 876);put(1039, 968);put(1040, 1084);put(1041, 1176);
+ // 鍏朵粬绔欑偣鍚岀悊缁х画鍔�
+ }};
+
+ // 鐗规畩绔欑偣闆嗗悎
+ private static final Set<Integer> specialSites = new HashSet<>(
+ Arrays.asList(1001,1005,1008,1011,1015,1019,1022,1025,1029, 1032,1039));
public static final ArrayList<Integer> BarcodeList = new ArrayList<Integer>() {{
@@ -74,10 +109,31 @@
add(3); add(4);
}};
public static final ArrayList<Integer> staNosErrList = new ArrayList<Integer>() {{
- add(106); add(107); add(159);
+ add(1036);
}};
private Integer count=0;
+
+ // 鍋忕Щ閲忚绠楁柟娉�
+ public static int getOffsetBySiteId(int siteId) {
+ int offset = 0;
+ if (specialSites.contains(siteId)) {
+ offset = 96; // 鐗规畩绔欑偣鍗� 96
+ } else {
+ offset = 72; // 鏅�氱珯鐐瑰崰 72
+ }
+ return offset;
+ }
+ // 鍋忕Щ閲忚绠楁柟娉�
+ public static int getOffsetBySiteId2(int siteId) {
+ int offset = 0;
+ if (specialSites.contains(siteId)) {
+ offset = 72; // 鐗规畩绔欑偣鍗� 96
+ } else {
+ offset = 60; // 鏅�氱珯鐐瑰崰 72
+ }
+ return offset;
+ }
/**
* 鏉$爜鏁伴噺
@@ -204,8 +260,11 @@
// updateIoMode();
ArrayList<Integer> staNos = getStaNo();
int staNoSize = staNos.size();
- OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*8));
- if (result.IsSuccess) {
+ OperateResultExOne<byte[]> result = null;
+ OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.0", (short) (2764));
+ OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.0", (short) (1264));
+
+ if (result1.IsSuccess && result2.IsSuccess) {
for (int i = 0; i < staNoSize; i++) {
Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
StaProtocol staProtocol = station.get(siteId);
@@ -214,60 +273,81 @@
staProtocol.setSiteId(siteId);
station.put(siteId, staProtocol);
}
- staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, i*8)); // 宸ヤ綔鍙�
+ if(siteId < 1029){
+ result = result1;
+ }else{
+ result = result2;
+ }
+ // 鑾峰彇璇ョ珯鐐瑰搴旂殑鍋忕Щ閲�
+ Integer offset = siteOffsetMap.get(siteId);
+ if (offset == null) {
+ continue; // 濡傛灉娌″畾涔夊亸绉婚噺锛岃烦杩�
+ }
+ Integer offset2 = getOffsetBySiteId(siteId);
+ Integer offset3 = getOffsetBySiteId2(siteId);
+ staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, offset + offset2)); // 宸ヤ綔鍙�
- staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4)); // 鐩爣绔�
+ staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, offset + offset2 + 12)); // 鐩爣绔�
- boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*8 + 6, 2);
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, offset + offset3, 2);
staProtocol.setAutoing(status[0]); // 鑷姩
- staProtocol.setLoading(status[1]); // 鏈夌墿
- staProtocol.setInEnable(status[2]); // 鍙叆
- staProtocol.setOutEnable(status[3]);// 鍙嚭
- staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿
- staProtocol.setFullPlt(status[5]); // 婊℃墭鐩�
- staProtocol.setHigh(status[6]); // 楂樺簱浣�
- staProtocol.setLow(status[7]); // 浣庡簱浣�
+ boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result.Content, offset + offset3 - 4, 3);
+
+ staProtocol.setLoading(status1[0]); // 鏈夌墿
+ if(staProtocol.isLoading()){
+ staProtocol.setInEnable(false); // 鍙叆
+ staProtocol.setOutEnable(false);// 鍙嚭
+ }else{
+ staProtocol.setInEnable(true); // 鍙叆
+ staProtocol.setOutEnable(true);// 鍙嚭
+ }
+// staProtocol.setInEnable(status1[1]); // 鍙叆
+// staProtocol.setOutEnable(status1[3]);// 鍙嚭
+// staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿
+// staProtocol.setFullPlt(status[5]); // 婊℃墭鐩�
+// staProtocol.setHigh(status[6]); // 楂樺簱浣�
+// staProtocol.setLow(status[7]); // 浣庡簱浣�
if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
staProtocol.setPakMk(true);
}
}
}
- BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class);
+// BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class);
//RGV灏忚溅1
// Thread.sleep(100);
- OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB50.200",(short)10);
- if (result3.IsSuccess) {
- BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo((int) siemensS7Net.getByteTransform().TransInt16(result3.Content, 0));
- if (!Cools.isEmpty(basRgvMap)){
- Integer siteId = 1;
- StaProtocol staProtocol = station.get(siteId);
- if (null == staProtocol) {
- staProtocol = new StaProtocol();
- staProtocol.setSiteId(siteId);
- station.put(siteId, staProtocol);
- }
- staProtocol.setAutoing(true);
- staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, 8)));
- }
- }
+// OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB50.200",(short)10);
+// if (result3.IsSuccess) {
+// BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo((int) siemensS7Net.getByteTransform().TransInt16(result3.Content, 0));
+// if (!Cools.isEmpty(basRgvMap)){
+// Integer siteId = 1;
+// StaProtocol staProtocol = station.get(siteId);
+// if (null == staProtocol) {
+// staProtocol = new StaProtocol();
+// staProtocol.setSiteId(siteId);
+// station.put(siteId, staProtocol);
+// }
+// staProtocol.setAutoing(true);
+// staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, 8)));
+// }
+// }
//RGV灏忚溅2
// Thread.sleep(100);
- OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB50.212",(short)10);
- if (result4.IsSuccess) {
- BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo((int) siemensS7Net.getByteTransform().TransInt16(result4.Content, 0));
- if (!Cools.isEmpty(basRgvMap)){
- Integer siteId = 2;
- StaProtocol staProtocol = station.get(siteId);
- if (null == staProtocol) {
- staProtocol = new StaProtocol();
- staProtocol.setSiteId(siteId);
- station.put(siteId, staProtocol);
- }
- staProtocol.setAutoing(true);
- staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result4.Content, 8)));
- }
- }
+// OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB50.212",(short)10);
+// if (result4.IsSuccess) {
+// BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo((int) siemensS7Net.getByteTransform().TransInt16(result4.Content, 0));
+// if (!Cools.isEmpty(basRgvMap)){
+// Integer siteId = 2;
+// StaProtocol staProtocol = station.get(siteId);
+// if (null == staProtocol) {
+// staProtocol = new StaProtocol();
+// staProtocol.setSiteId(siteId);
+// station.put(siteId, staProtocol);
+// }
+// staProtocol.setAutoing(true);
+// staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result4.Content, 8)));
+// }
+// }
// //RGV灏忚溅3
//// Thread.sleep(100);
@@ -287,98 +367,98 @@
// }
// }
+// //鏉$爜鎵弿鍣�
+// ArrayList<Integer> barcodeList = BarcodeList;
+// OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.840", (short) (barcodeList.size() * 8));
+// if (result2.IsSuccess) {
+// for (int i = 0; i < barcodeList.size(); i++) {
+// Integer barcodeId = barcodeList.get(i);
+// String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8");
+// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId + 1);
+// if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+// barcodeThread.setBarcode(barcode);
+// }
+// }
+// }
//鏉$爜鎵弿鍣�
- ArrayList<Integer> barcodeList = BarcodeList;
- OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.840", (short) (barcodeList.size() * 8));
- if (result2.IsSuccess) {
- for (int i = 0; i < barcodeList.size(); i++) {
- Integer barcodeId = barcodeList.get(i);
- String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8");
- BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId + 1);
- if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
- barcodeThread.setBarcode(barcode);
- }
- }
- }
- //鏉$爜鎵弿鍣�
- ArrayList<Integer> barcodeListMat = BarcodeListMat;
- OperateResultExOne<byte[]> result2Mat = siemensS7Net.Read("DB103.0", (short) (barcodeListMat.size() * 30));
- if (result2Mat.IsSuccess) {
- for (int i = 0; i < barcodeListMat.size(); i++) {
- Integer barcodeId = barcodeListMat.get(i);
- String barcode = siemensS7Net.getByteTransform().TransString(result2Mat.Content,i*30,30, "UTF-8");
- BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId + 1);
- if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
- barcodeThread.setBarcode(barcode);
- }
- }
- }
+// ArrayList<Integer> barcodeListMat = BarcodeListMat;
+// OperateResultExOne<byte[]> result2Mat = siemensS7Net.Read("DB103.0", (short) (barcodeListMat.size() * 30));
+// if (result2Mat.IsSuccess) {
+// for (int i = 0; i < barcodeListMat.size(); i++) {
+// Integer barcodeId = barcodeListMat.get(i);
+// String barcode = siemensS7Net.getByteTransform().TransString(result2Mat.Content,i*30,30, "UTF-8");
+// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId + 1);
+// if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+// barcodeThread.setBarcode(barcode);
+// }
+// }
+// }
//澶栧舰妫�娴�
- ArrayList<Integer> staNoErrs = staNosErrList;
- int staNoErrsSize = staNoErrs.size();
- OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.800", (short) (staNoErrsSize*8));
- if (resultErr.IsSuccess){
- for (int i = 0;i<3;i++){
- Integer siteId = staNoErrs.get(i); // 绔欑偣缂栧彿
- boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i*4+2, 1);
- StaProtocol staProtocol = station.get(siteId);
- staProtocol.setFrontErr(status[0]);
- staProtocol.setBackErr(status[1]);
- staProtocol.setHighErr(status[2]);
- staProtocol.setLeftErr(status[3]);
- staProtocol.setRightErr(status[4]);
- staProtocol.setWeightErr(status[5]);
- staProtocol.setBarcodeErr(status[6]);
- }
- }
+// ArrayList<Integer> staNoErrs = staNosErrList;
+// int staNoErrsSize = staNoErrs.size();
+// OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.800", (short) (staNoErrsSize*8));
+// if (resultErr.IsSuccess){
+// for (int i = 0;i<3;i++){
+// Integer siteId = staNoErrs.get(i); // 绔欑偣缂栧彿
+// boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i*4+2, 1);
+// StaProtocol staProtocol = station.get(siteId);
+// staProtocol.setFrontErr(status[0]);
+// staProtocol.setBackErr(status[1]);
+// staProtocol.setHighErr(status[2]);
+// staProtocol.setLeftErr(status[3]);
+// staProtocol.setRightErr(status[4]);
+// staProtocol.setWeightErr(status[5]);
+// staProtocol.setBarcodeErr(status[6]);
+// }
+// }
- OperateResultExOne<byte[]> resultErr2 = siemensS7Net.Read("DB13.2", (short) (staNoSize*4));
- if (resultErr2.IsSuccess) {
- for (int i = 0; i < staNoSize; i++) {
- Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
- boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr2.Content, i*4, 1);
- StaProtocol staProtocol = station.get(siteId);
- staProtocol.setBreakerErr(status[0]);
- staProtocol.setInfraredErr(status[1]);
- staProtocol.setOutTimeErr(status[2]);
- staProtocol.setSeizeSeatErr(status[3]);
- staProtocol.setWrkYgoodsN(status[4]);
- staProtocol.setInverterErr(status[5]);
- staProtocol.setContactErr(status[6]);
- staProtocol.setUpcontactErr(status[7]);
-
- }
- }
- OperateResultExOne<byte[]> resultErr3 = siemensS7Net.Read("DB13.400", (short) 3);
- if (resultErr3.IsSuccess) {
- if (staError1 == null){
- staError1 = new StaError1();
- }
- boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr3.Content, 0, 3);
- staError1.setEMERGENCY_Stop_Core(status[0]);
- staError1.setEMERGENCY_STOP1(status[1]);
- staError1.setEMERGENCY_STOP2(status[2]);
- staError1.setEMERGENCY_STOP3(status[3]);
- staError1.setEMERGENCY_STOP4(status[4]);
-
- staError1.setDoor_EMERGENCY_STOP1(status[5]);
- staError1.setDoor_EMERGENCY_STOP2(status[6]);
- staError1.setDoor_EMERGENCY_STOP3(status[7]);
- staError1.setDoor_EMERGENCY_STOP4(status[8]);
- staError1.setDoor_EMERGENCY_STOP5(status[9]);
- staError1.setDoor_EMERGENCY_STOP6(status[10]);
-
- staError1.setDoor_Open_Err1(status[11]);
- staError1.setDoor_Open_Err1(status[12]);
- staError1.setDoor_Open_Err1(status[13]);
- staError1.setDoor_Open_Err1(status[14]);
- staError1.setDoor_Open_Err1(status[15]);
- staError1.setDoor_Open_Err1(status[16]);
-
- }
+// OperateResultExOne<byte[]> resultErr2 = siemensS7Net.Read("DB13.2", (short) (staNoSize*4));
+// if (resultErr2.IsSuccess) {
+// for (int i = 0; i < staNoSize; i++) {
+// Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+// boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr2.Content, i*4, 1);
+// StaProtocol staProtocol = station.get(siteId);
+// staProtocol.setBreakerErr(status[0]);
+// staProtocol.setInfraredErr(status[1]);
+// staProtocol.setOutTimeErr(status[2]);
+// staProtocol.setSeizeSeatErr(status[3]);
+// staProtocol.setWrkYgoodsN(status[4]);
+// staProtocol.setInverterErr(status[5]);
+// staProtocol.setContactErr(status[6]);
+// staProtocol.setUpcontactErr(status[7]);
+//
+// }
+// }
+// OperateResultExOne<byte[]> resultErr3 = siemensS7Net.Read("DB13.400", (short) 3);
+// if (resultErr3.IsSuccess) {
+// if (staError1 == null){
+// staError1 = new StaError1();
+// }
+// boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr3.Content, 0, 3);
+// staError1.setEMERGENCY_Stop_Core(status[0]);
+// staError1.setEMERGENCY_STOP1(status[1]);
+// staError1.setEMERGENCY_STOP2(status[2]);
+// staError1.setEMERGENCY_STOP3(status[3]);
+// staError1.setEMERGENCY_STOP4(status[4]);
+//
+// staError1.setDoor_EMERGENCY_STOP1(status[5]);
+// staError1.setDoor_EMERGENCY_STOP2(status[6]);
+// staError1.setDoor_EMERGENCY_STOP3(status[7]);
+// staError1.setDoor_EMERGENCY_STOP4(status[8]);
+// staError1.setDoor_EMERGENCY_STOP5(status[9]);
+// staError1.setDoor_EMERGENCY_STOP6(status[10]);
+//
+// staError1.setDoor_Open_Err1(status[11]);
+// staError1.setDoor_Open_Err1(status[12]);
+// staError1.setDoor_Open_Err1(status[13]);
+// staError1.setDoor_Open_Err1(status[14]);
+// staError1.setDoor_Open_Err1(status[15]);
+// staError1.setDoor_Open_Err1(status[16]);
+//
+// }
- if (result.IsSuccess) {
+ if (result1.IsSuccess && result2.IsSuccess) {
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
@@ -416,14 +496,25 @@
}
ArrayList<Integer> staNos = getStaNo();
int index = staNos.indexOf(staProtocol.getSiteId());
+ Integer siteId = staProtocol.getSiteId();
+ // 鑾峰彇璇ョ珯鐐瑰搴旂殑鍋忕Щ閲�
+ Integer offset = siteOffsetMap.get(siteId);
+ Integer offset2 = getOffsetBySiteId(siteId);
+ Integer offset3 = getOffsetBySiteId2(siteId);
OperateResult write = null;
OperateResult write1 = null;
//浠诲姟涓嬪彂娆℃暟
int writeCount = 0;
do {
- write = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
- Thread.sleep(200);
- write1 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo().shortValue()); // 鐩爣绔�
+ if(siteId > 1028){
+ write = siemensS7Net.Write("DB101." + (offset + offset2), staProtocol.getWorkNo()); // 宸ヤ綔鍙�
+ Thread.sleep(200);
+ write1 = siemensS7Net.Write("DB101." + (offset + offset2 + 12), staProtocol.getStaNo()); // 鐩爣绔�
+ }else{
+ write = siemensS7Net.Write("DB100." + (offset + offset2), staProtocol.getWorkNo()); // 宸ヤ綔鍙�
+ Thread.sleep(200);
+ write1 = siemensS7Net.Write("DB100." + (offset + offset2 + 12), staProtocol.getStaNo()); // 鐩爣绔�
+ }
if(write.IsSuccess && write1.IsSuccess){
log.error("鍐欏叆杈撻�佺嚎鍛戒护鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
break;
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index a193906..16deb0c 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -8,8 +8,8 @@
name: @pom.build.finalName@
datasource:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-# url: jdbc:sqlserver://localhost:1433;databasename=jshdasrs
- url: jdbc:sqlserver://10.10.10.235:1433;databasename=jshdasrs
+ url: jdbc:sqlserver://localhost:1433;databasename=jshdasrs
+# url: jdbc:sqlserver://10.10.10.235:1433;databasename=jshdasrs
username: sa
password: sa@123
# url: jdbc:sqlserver://192.168.4.191:50948;databasename=jshdasrs
@@ -175,7 +175,7 @@
# RGV绌挎杞�1
rgv[0]:
id: 1
- ip: 10.10.10.60
+ ip: 10.10.10.190
port: 502
rack: 0
slot: 0
@@ -292,7 +292,7 @@
# 杈撻�佺嚎1
devp[0]:
id: 1
- ip: 10.10.10.50
+ ip: 10.10.10.51
port: 102
rack: 0
slot: 0
diff --git a/src/main/resources/mapper/WrkMastStaMapper.xml b/src/main/resources/mapper/WrkMastStaMapper.xml
index 493ed89..2994c8f 100644
--- a/src/main/resources/mapper/WrkMastStaMapper.xml
+++ b/src/main/resources/mapper/WrkMastStaMapper.xml
@@ -17,6 +17,8 @@
<result column="line_number" property="lineNumber" />
<result column="wrk_type" property="wrkType" />
<result column="bign_time" property="bignTime" />
+ <result column="work_sta" property="workSta"/>
+ <result column="rgv_no" property="rgvNo"/>
</resultMap>
@@ -94,7 +96,7 @@
order by line_number,id
</select>
<select id="selectByWorkSta" resultMap="BaseResultMap">
- select *
+ select top 1 * from asr_wrk_mast_sta
where work_sta = #{workSta}
and rgv_no = #{rgvNo}
</select>
--
Gitblit v1.9.1