From 9aefce26355af7cd43bc958c045b196b355693b8 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期五, 10 五月 2024 19:49:46 +0800
Subject: [PATCH] #一楼rgv
---
src/main/java/com/zy/core/enums/RgvStatusType.java | 5
src/main/java/com/zy/core/enums/RgvModeType.java | 2
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 161 ++++++++++++++++++++++++--
src/main/resources/mapper/WrkMastStaMapper.xml | 2
src/main/java/com/zy/core/model/protocol/StaProtocol.java | 7 +
src/main/java/com/zy/asrs/entity/WrkMastSta.java | 7 +
src/main/java/com/zy/asrs/utils/Utils.java | 3
src/main/java/com/zy/core/model/RgvSlave.java | 2
src/main/java/com/zy/core/MainProcess.java | 5
src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 2
src/main/java/com/zy/core/model/command/RgvCommand.java | 4
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 133 +++++++++++++++++++++
src/main/resources/application.yml | 4
13 files changed, 311 insertions(+), 26 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastSta.java b/src/main/java/com/zy/asrs/entity/WrkMastSta.java
index b18cf68..666144e 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastSta.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastSta.java
@@ -123,6 +123,13 @@
@TableField("wrk_crn")
private Integer wrkCrn;
+ @ApiModelProperty(value= "")
+ @TableField("matnr1")
+ private Integer matnr1;
+
+ @ApiModelProperty(value= "")
+ @TableField("matnr2")
+ private Integer matnr2;
public WrkMastSta() {}
public WrkMastSta(Long wrkNo,Integer wrkStart,Integer wrkEnd,Integer staStart,Integer staEnd,Date createTime,Date updateTime,Integer type,Integer wrkSts,Integer lineNumber,Integer wrkType,Date bignTime,Integer wrkCrn) {
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 d2181a2..d33e81d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -2507,6 +2507,8 @@
short sta1 = 0;
short souSta2 = 0;
short sta2 = 0;
+ short matnr = 0;
+ short matnr2 = 0;
//宸ヤ綅涓�浠诲姟
for (RgvSlave.Sta inStn : rgvSlave.getInStn()){
@@ -2534,9 +2536,19 @@
}
workNo1 = workNo++;
souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getSourceStaNo());
- sta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo());
+ if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 1){
+ sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2103);
+ } else if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 2) {
+ sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2002);
+ }else {
+ sta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo());
+ }
work1 = true;
+ if (inStn.getSourcePlcId() == 4){
+ matnr = staProtocol.getMatnr();
+ }
devpThread.setPakMk(inStn.getSourceStaNo(),false);
+
break;
}
}
@@ -2573,6 +2585,9 @@
souSta2 = inStn.getSourceStaNo().shortValue();
sta2 = inStn.getStaNo().shortValue();
work2 = true;
+ if (inStn.getSourcePlcId() == 4){
+ matnr2 = staProtocol.getMatnr();
+ }
devpThread.setPakMk(inStn.getSourceStaNo(),false);
break;
}
@@ -2594,12 +2609,15 @@
command.setDestinationStaNo2(sta2); // 鐩爣绔�
command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣�
+ command.setMatnr(matnr);
+ command.setMatnr2(matnr2);
+
if (workNo1 == 0 && workNo2 !=0){
- command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 浠诲姟妯″紡: 鍙栨斁璐�
+ command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 浠诲姟妯″紡: 2鍙栨斁璐�
} else if (workNo1 != 0 && workNo2 ==0) {
- command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 浠诲姟妯″紡: 鍙栨斁璐�
+ command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 浠诲姟妯″紡: 1鍙栨斁璐�
}else {
- command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 浠诲姟妯″紡: 鍙栨斁璐�
+ command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 浠诲姟妯″紡: all鍙栨斁璐�
}
command.setCommand(false);
rgvTaskSave(command);
@@ -2627,23 +2645,24 @@
}
//宸ヤ綅涓�浠诲姟瀹屾垚
- if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 1) {
+ if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 0) {
WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1());
if (Cools.isEmpty(wrkMastSta)){
log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1());
continue;
}
for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId());
- StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo());
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo());
if (staProtocol == null) {
continue;
} else {
staProtocol = staProtocol.clone();
}
+
if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isPakMk()){
-// staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
-// staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ staProtocol.setWorkNo(wrkMastSta.getWrkNo().shortValue());
+ staProtocol.setStaNo(wrkMastSta.getWrkEnd().shortValue());
if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
continue;
}
@@ -2656,15 +2675,15 @@
}
//宸ヤ綅浜屼换鍔″畬鎴�
- if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 1) {
- WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2());
+ if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 0) {
+ WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo2(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2());
if (Cools.isEmpty(wrkMastSta)){
log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2());
continue;
}
for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId());
- StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo());
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo());
if (staProtocol == null) {
continue;
} else {
@@ -2672,16 +2691,122 @@
}
if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isPakMk()){
// staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
-// staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
- if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
- continue;
- }
+//// staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+// if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
+// continue;
+// }
}
}
MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand()));
log.info("{}鍙穜gv宸ヤ綅浜屽伐浣滃畬鎴愬浣�,宸ヤ綔鍙�:{}",rgvSlave.getId(),wrkMastSta.getWrkNo2());
+ }
+ }
+ }
+
+ //浜屽彿rgv杈撻�佺嚎鍛戒护涓嬪彂
+ public synchronized void RGV2Taskput() {
+ for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+ if (rgvSlave.getId() !=2){
+ continue;
+ }
+ ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (Cools.isEmpty(rgvProtocol)){
+ continue;
+ }else {
+ rgvProtocol = rgvProtocol.clone();
+ }
+
+ //宸ヤ綅涓�浠诲姟瀹屾垚
+ if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN1 && rgvProtocol.getLoaded1() == 1) {
+ WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1());
+ if (Cools.isEmpty(wrkMastSta)){
+ log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1());
+ continue;
+ }
+ for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ if (outStn.getStaPlcId() == 2){
+ if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isPakMk()){
+ staProtocol.setWorkNo(wrkMastSta.getWrkNo().shortValue());
+ staProtocol.setStaNo((short) 2106);
+ staProtocol.setMatnr(wrkMastSta.getMatnr1().shortValue());
+
+ if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
+ continue;
+ }
+ }
+ }
+
+ }
+ }
+
+ //宸ヤ綅浜屼换鍔″畬鎴�
+ if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN8 && rgvProtocol.getLoaded1() == 1) {
+ WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2());
+ if (Cools.isEmpty(wrkMastSta)){
+ log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2());
+ continue;
+ }
+ for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (outStn.getStaPlcId() == 2){
+ if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isPakMk()){
+ staProtocol.setWorkNo(wrkMastSta.getWrkNo2().shortValue());
+ staProtocol.setStaNo((short) 2106);
+ staProtocol.setMatnr(wrkMastSta.getMatnr2().shortValue());
+
+ if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
+ continue;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public synchronized void RGV2TaskOver() {
+ for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+ if (rgvSlave.getId() !=2){
+ continue;
+ }
+ ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (Cools.isEmpty(rgvProtocol)){
+ continue;
+ }else {
+ rgvProtocol = rgvProtocol.clone();
+ }
+
+ //宸ヤ綅涓�浠诲姟瀹屾垚
+ if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 0) {
+
+ MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(3,new RgvCommand()));
+ log.info("{}鍙穜gv宸ヤ綅涓�宸ヤ綔瀹屾垚澶嶄綅,宸ヤ綔鍙�:{}",rgvSlave.getId(),rgvProtocol.getTaskNo1());
+ }
+
+ //宸ヤ綅浜屼换鍔″畬鎴�
+ if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 0) {
+
+
+ MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand()));
+ log.info("{}鍙穜gv宸ヤ綅浜屽伐浣滃畬鎴愬浣�,宸ヤ綔鍙�:{}",rgvSlave.getId(),rgvProtocol.getTaskNo2());
}
}
}
@@ -2705,6 +2830,8 @@
wrkMastSta.setUpdateTime(now);
wrkMastSta.setWrkCrn(command.getRgvNo());
wrkMastSta.setWrkType(command.getTaskMode().intValue());
+ wrkMastSta.setMatnr1(command.getMatnr().intValue());
+ wrkMastSta.setMatnr2(command.getMatnr2().intValue());
return wrkMastStaService.insert(wrkMastSta);
}
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 2281702..a41eae0 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -40,7 +40,8 @@
public static short getRgvEndStaNo(Integer rgvNo,Integer staNo){
Map<Integer, Integer> rgv1Map = new HashMap<>();
Map<Integer, Integer> rgv2Map = new HashMap<>();
- rgv2Map.put(4007,2103);
+ rgv2Map.put(4002,4001); rgv2Map.put(4011,4010);
+ rgv2Map.put(2101,2102);
Map<Integer, Integer> rgv3Map = new HashMap<>();
switch (rgvNo){
case 1:
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 5343a4f..d75b130 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -75,8 +75,11 @@
// mainService.crn5StnToOutStn();
//rgv浠诲姟
mainService.RGVTaskPut();
- //rgv浠诲姟瀹屾垚
+ //rgv1,3浠诲姟瀹屾垚
mainService.RGVTaskOver();
+ //rgv2浠诲姟瀹屾垚
+ mainService.RGV2Taskput();
+ mainService.RGV2TaskOver();
} catch (Exception e) {
diff --git a/src/main/java/com/zy/core/enums/RgvModeType.java b/src/main/java/com/zy/core/enums/RgvModeType.java
index 81d1747..70d4104 100644
--- a/src/main/java/com/zy/core/enums/RgvModeType.java
+++ b/src/main/java/com/zy/core/enums/RgvModeType.java
@@ -10,6 +10,8 @@
HAND(1, "鎵嬪姩"),
HALF_AUTO(2, "鍗婅嚜鍔�"),
AUTO(3, "鑷姩"),
+ OUTSTN1(7,"宸ヤ綔浣�1璇锋眰鍑虹珯"),
+ OUTSTN8(8,"宸ヤ綔浣�1璇锋眰鍑虹珯"),
AUTO2(100, "鍏跺畠"),
;
diff --git a/src/main/java/com/zy/core/enums/RgvStatusType.java b/src/main/java/com/zy/core/enums/RgvStatusType.java
index 5927760..6159b49 100644
--- a/src/main/java/com/zy/core/enums/RgvStatusType.java
+++ b/src/main/java/com/zy/core/enums/RgvStatusType.java
@@ -11,8 +11,9 @@
PICK_WAIT((short) 2, "鍙栬揣绛夊緟"),
PICK_WORKING((short) 3, "鍙栬揣涓�"),
RELEASE_WALK((short) 4, "鏀捐揣璧拌"),
- RELEASE_WAIT((short) 5, "鏀捐揣绛夊緟"),
- RELEASE_WORKING((short) 6, "鏀捐揣涓�"),
+
+ OUTSTN1((short)5,"宸ヤ綔浣�1璇锋眰鍑虹珯"),
+ OUTSTN8((short)6,"宸ヤ綔浣�2璇锋眰鍑虹珯"),
WALKING((short) 9, "璧拌涓�"),
WAITING((short) 90, "宸ヤ綅涓�浠诲姟瀹屾垚绛夊緟WCS纭"),
WAITING2((short) 91, "宸ヤ綅浜屼换鍔″畬鎴愮瓑寰匴CS纭"),
diff --git a/src/main/java/com/zy/core/model/RgvSlave.java b/src/main/java/com/zy/core/model/RgvSlave.java
index a89d9d0..5611a67 100644
--- a/src/main/java/com/zy/core/model/RgvSlave.java
+++ b/src/main/java/com/zy/core/model/RgvSlave.java
@@ -24,6 +24,8 @@
private Integer sourceStaNo;//婧愮珯
private Integer sourcePlcId;
+
+
private Integer staNo;//鐩爣绔�
private Integer staPlcId;
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 1472669..ec5ea94 100644
--- a/src/main/java/com/zy/core/model/command/RgvCommand.java
+++ b/src/main/java/com/zy/core/model/command/RgvCommand.java
@@ -53,6 +53,10 @@
@JSONField(serialize = false)
private RgvTaskModeType taskModeType;
+ private Short matnr;
+
+ private Short matnr2;
+
//**************宸ヤ綅2**************
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 d6df231..32f1deb 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -11,7 +11,7 @@
import java.util.Map;
@Data
-public class RgvProtocol {
+public class RgvProtocol implements Cloneable{
private Integer RgvNo;
diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
index fb81cc3..dc03705 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -22,6 +22,10 @@
private Short staNo;
// ----------------------------------------------------------------
+ // 鐗╂枡浠g爜
+ private Short matnr;
+
+ // ----------------------------------------------------------------
// 鑷姩
private boolean autoing;
@@ -87,6 +91,7 @@
private boolean force = false;
private short amount = 0;
+ private Short tongType = 0;
public Boolean isErr(){
if (frontErr || backErr || highErr || leftErr || rightErr || weightErr || barcodeErr){
@@ -107,7 +112,7 @@
basDevp.setLocType1((short) 0); // 楂樹綆绫诲瀷{0:鏈煡,1:浣庡簱浣�,2:楂樺簱浣峿
basDevp.setLocType2((short) 0); // 瀹界獎绫诲瀷{0:鏈煡,1:绐勫簱浣�,2:瀹藉簱浣峿
basDevp.setLocType3((short) 0); // 杞婚噸绫诲瀷{0:鏈煡,1:杞诲簱浣�,2:閲嶅簱浣峿
- basDevp.setLocType1(high != low && high ? (short) 2 : (short) 1);
+ basDevp.setLocType1(high != low && low ? (short) 1 : (short) 2);
// basDevp.
return basDevp;
}
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 81e9870..85db633 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -205,8 +205,9 @@
case 1:
switch (slave.getId()){
case 1:
- case 2:
read();break;
+ case 2:
+ read10();break;
case 3:
read30();break;
case 4:
@@ -216,7 +217,16 @@
break;
// 鍐欐暟鎹� ID+鐩爣绔�
case 2:
- write((StaProtocol)task.getData());
+ switch (slave.getId()){
+ case 1:
+ case 3:
+ write((StaProtocol)task.getData());
+ case 2:
+ write10((StaProtocol)task.getData());break;
+
+
+ }
+
break;
default:
break;
@@ -359,6 +369,95 @@
}
}
+ private void read10() throws InterruptedException {
+ ArrayList<Integer> staNos = getStaNo();
+ int staNoSize = staNos.size();
+ OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (getStaNo().size() * 10));
+ if (result.IsSuccess) {
+ for (int i = 0; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ StaProtocol staProtocol = station.get(siteId);
+ if (null == staProtocol) {
+ staProtocol = new StaProtocol();
+ staProtocol.setSiteId(siteId);
+ station.put(siteId, staProtocol);
+ }
+ staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 10)); // 宸ヤ綔鍙�
+ staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*10 + 4 )); // 鐩爣绔�
+ staProtocol.setMatnr(siemensS7Net.getByteTransform().TransInt16(result.Content, i*10 + 6 )); // 鐩爣绔�
+ }
+ }
+ Thread.sleep(200);
+ OperateResultExOne<byte[]> result1 = null;
+ result1 = siemensS7Net.Read("DB101.0", (short) (getStaNo().size() * 10));
+ if (result1.IsSuccess) {
+ for (int i = 0; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*10+8, 2);
+ StaProtocol staProtocol = station.get(siteId);
+ 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]); // 浣庡簱浣�
+ staProtocol.setEmptyOutPalletRequire(status[8]); // 绌烘墭鐩樺彲鍑洪渶姹備俊鍙�
+ staProtocol.setEmptyInPalletRequire(status[9]); // 绌烘墭鐩樺彲鍏ラ渶姹備俊鍙�
+
+ if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
+ staProtocol.setPakMk(true);
+ }
+ }
+ }
+
+ // 鏉$爜鎵弿鍣�
+ if(slave.getId() == 1) {
+ Thread.sleep(200);
+ OperateResultExOne<byte[]> result2 = null;
+ result2 = siemensS7Net.Read("DB101.208.0", (short) (barcodeSize * 8));
+ if (result2.IsSuccess) {
+ for (int i = 0; i < barcodeSize; i++) {
+ String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
+ if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+ barcodeThread.setBarcode(barcode);
+ }
+ }
+ }
+ }
+
+
+
+ if (result.IsSuccess && !Cools.isEmpty(result1) && result1.IsSuccess) {
+
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+
+ // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+ try {
+ List<BasDevp> basDevps = new ArrayList<>();
+ for (Integer siteId : staNos) {
+ StaProtocol staProtocol = station.get(siteId);
+ basDevps.add(staProtocol.toSqlModel());
+ }
+
+ BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+ if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
+ throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+ log.error("鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+ }
+
+ } else {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+// log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+ }
+ }
+
private void read30() throws InterruptedException {
ArrayList<Integer> staNos = getStaNo();
int staNoSize = staNos.size();
@@ -440,7 +539,9 @@
staProtocol.setAutoing(status[0]); // 鑷姩
staProtocol.setLoading(status[1]); // 鏈夌墿
staProtocol.setInEnable(status[2]); // 鍙叆
- staProtocol.setAmount(matnr);
+ staProtocol.setMatnr(matnr);
+ staProtocol.setTongType(tongType);
+ staProtocol.setLow(true);
@@ -505,6 +606,32 @@
}
/**
+ * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
+ */
+ private void write10(StaProtocol staProtocol) throws InterruptedException {
+ if (null == staProtocol) {
+ return;
+ }
+ ArrayList<Integer> staNos = getWriteStaNo();
+ int index = staNos.indexOf(staProtocol.getSiteId());
+ OperateResult write = siemensS7Net.Write("DB100." + index*8, staProtocol.getWorkNo().intValue()); // 宸ヤ綔鍙�
+ OperateResult write1 = siemensS7Net.Write("DB100." + (index*8+4), staProtocol.getStaNo()); // 鐩爣绔�
+ OperateResult write2 = siemensS7Net.Write("DB100." + (index*8+6), staProtocol.getMatnr()); // 鐩爣绔�
+
+ if (!write.IsSuccess || !write1.IsSuccess || !write2.IsSuccess) {
+ staProtocol = station.get(staProtocol.getSiteId());
+ if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
+ staProtocol.setPakMk(true);
+ }
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
+ log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+ } else {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
+ log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol));
+ }
+ }
+
+ /**
* 蹇冭烦
*/
private void heartbeat(){
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index ea37b45..fd78601 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -258,6 +258,10 @@
sourcePlcId: 4
staNo: 2103
staPlcId: 2
+ inStn[1]:
+ sourceStaNo: 2003
+ sourcePlcId: 4
+
outStn[0]:
staNo: 2103
staPlcId: 2
diff --git a/src/main/resources/mapper/WrkMastStaMapper.xml b/src/main/resources/mapper/WrkMastStaMapper.xml
index cb23804..1a5a379 100644
--- a/src/main/resources/mapper/WrkMastStaMapper.xml
+++ b/src/main/resources/mapper/WrkMastStaMapper.xml
@@ -19,6 +19,8 @@
<result column="bign_time" property="bignTime" />
<result column="wrk_crn" property="wrkCrn" />
<result column="wrk_no2" property="wrkNo2"/>
+ <result column="matnr1" property="matnr1"/>
+ <result column="matnr2" property="matnr2"/>
</resultMap>
<select id="selectByRgvNoandWrkNo" resultMap="BaseResultMap">
--
Gitblit v1.9.1