From e3b8bc50db4cf9d5fcac58b56d1cb7e25154c3a6 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期五, 09 八月 2024 10:34:26 +0800
Subject: [PATCH] #改造
---
src/main/java/com/zy/asrs/utils/Utils.java | 55 +++++++++++
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 54 ++++++++++
src/main/java/com/zy/asrs/entity/WrkMast.java | 23 ++++
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 26 +++++
src/main/resources/application.yml | 90 +++++++++++++++++-
5 files changed, 240 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 6f5652b..81b31be 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -380,6 +380,29 @@
}
return null;
}
+ public Integer getStaNoConvert(Integer crnNo){
+ switch (this.staNo){
+ case 114:
+ switch (crnNo){
+ case 1:
+ return 114;
+ case 2:
+ return 107;
+ case 3:
+ return 211;
+ }
+ case 214:
+ switch (crnNo){
+ case 1:
+ return 111;
+ case 2:
+ return 207;
+ case 3:
+ return 214;
+ }
+ }
+ return this.staNo;
+ }
public String getSourceStaNo$(){
BasDevpService service = SpringUtils.getBean(BasDevpService.class);
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 2e3d34e..c2293c8 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -844,6 +844,29 @@
// 鏌ヨ宸ヤ綔妗�
WrkMast wrkMast = wrkMastMapper.selectPakOutStep16(staProtocol.getSiteId());
if (wrkMast == null) {
+ // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) {
+ // 绉诲姩涓�
+ continue;
+ }
+ // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+ if (crnProtocol.modeType == CrnModeType.AUTO
+ && crnProtocol.statusType == CrnStatusType.WAITING
+ && crnProtocol.forkPosType == CrnForkPosType.HOME
+ && crnProtocol.getBay().equals(crnStn.getBay().shortValue()) && crnProtocol.getLevel().equals(crnStn.getLev().shortValue())) {
+ News.info("鍫嗗灈鏈烘帴椹充换鍔″畬鎴愶紝宸ヤ綔鍙凤細"+crnProtocol.getTaskNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+crnSlave.getId()+"锛涙帴椹虫斁璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹宠璧扮洰鏍囩珯锛�"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()));
+ // 涓嬪彂绔欑偣淇℃伅
+ staProtocol.setWorkNo(crnProtocol.getTaskNo());
+ staProtocol.setStaNo(Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).shortValue());
+ if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
+ continue;
+ }
+ // 澶嶄綅鍫嗗灈鏈�
+ crnThread.setResetFlag(true);
+ continue;
+ }
continue;
}
// 鍒ゆ柇宸ヤ綔妗f潯浠�
@@ -866,7 +889,7 @@
// 涓嬪彂绔欑偣淇℃伅
staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
- staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ staProtocol.setStaNo(wrkMast.getStaNoConvert(crnProtocol.getCrnNo()).shortValue());
if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
continue;
}
@@ -969,8 +992,35 @@
// 鑾峰彇宸ヤ綔鐘舵�佷负 2,3,4,5,6 鐨勫叆搴撳伐浣滄。
WrkMast wrkMast = wrkMastMapper.selectPakInStep23456(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo());
- if(null == wrkMast) {
+ if(null == wrkMast || (wrkMast.getCrnNo()==2 && wrkMast.getWrkSts()==2 && crnProtocol.getCrnNo()!=2)) {
// News.error("{}绔欑偣鏌ヨ鏃犲緟鍏ュ簱鏁版嵁 宸ヤ綔鍙�={}", crnStn.getStaNo(), staProtocol.getWorkNo());
+ // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+ if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+ continue;
+ }
+ // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+ if (crnProtocol.modeType == CrnModeType.AUTO
+ && crnProtocol.statusType == CrnStatusType.IDLE
+ && crnProtocol.forkPosType == CrnForkPosType.HOME) {
+ News.info("鍫嗗灈鏈烘帴椹充换鍔℃墽琛岋紝宸ヤ綔鍙凤細"+staProtocol.getWorkNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+slave.getId()+"锛涙帴椹冲彇璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹虫斁璐т綅锛�"+staProtocol.getSiteId());
+ // 鍫嗗灈鏈烘帴椹充换鍔″懡浠や笅鍙戝尯 --------------------------------------------------------------------------
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo(staProtocol.getWorkNo()); // 宸ヤ綔鍙�
+ crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand.setCommand((short) 0);
+ crnCommand.setTaskMode(CrnTaskModeType.XY_MOVE); // 浠诲姟妯″紡: 绔欎綅杞Щ
+ crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX(Utils.getRow(staProtocol.getSiteId())); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY(Utils.getBay(staProtocol.getSiteId())); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ(Utils.getLev(staProtocol.getSiteId())); // 鐩爣搴撲綅灞�
+ if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
+ News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", slave.getId(), JSON.toJSONString(crnCommand));
+ }
+ return true;
+ }
continue;
}
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 9a49a36..d16c27a 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -220,6 +220,61 @@
}
/**
+ * 閫氳繃搴撲綅鍙疯幏鍙� 鎺�
+ */
+ public static short getRow(Integer staNo) {
+ switch (staNo){
+ case 108:
+ return 4;
+ case 208:
+ return 18;
+ case 112:
+ return 3;
+ case 212:
+ return 19;
+ }
+ throw new RuntimeException("绔欑偣瑙f瀽寮傚父");
+ }
+
+ /**
+ * 閫氳繃搴撲綅鍙疯幏鍙� 鍒�
+ */
+ public static short getBay(Integer staNo) {
+ switch (staNo){
+ case 108:
+ return 5;
+ case 208:
+ return 5;
+ case 112:
+ return 2;
+ case 212:
+ return 6;
+ }
+ throw new RuntimeException("绔欑偣瑙f瀽寮傚父");
+ }
+
+ /**
+ * 閫氳繃搴撲綅鍙疯幏鍙� 灞�
+ */
+ public static short getLev(Integer staNo) {
+ return 1;
+ }
+ public static Integer getStaNoConvertCentreOther2(Integer staNo){//鏀捐揣涓鸿幏鍙栬璧扮洰鏍囦綅
+ switch (staNo){
+ case 108:
+ return 111;
+ case 208:
+ return 211;
+ case 112:
+ return 114;
+ case 212:
+ return 214;
+ default:
+ return staNo;
+ }
+ }
+
+ /**
* 閫氳繃鎺掑垪灞傛嫾鎺ュ嚭搴撲綅鍙�
*/
public static String append(int row, int bay, int lev) {
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 1a2bfc5..bda6582 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -8,6 +8,7 @@
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
+import com.core.exception.CoolException;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.mapper.BasDevpMapper;
import com.zy.asrs.service.BasDevpService;
@@ -44,12 +45,18 @@
private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
private short heartBeatVal = 1;
private int barcodeSize = 2;
- public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{
+ 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(200);add(201);add(202);add(203);add(204);add(205);add(206);add(207);add(208);add(209);
add(210);add(211);
add(300);
+ }};
+ public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
+ add(112);add(113);add(114);
+ }};
+ public static final ArrayList<Integer> staNos3 = new ArrayList<Integer>() {{
+ add(212);add(213);add(214);
}};
public boolean charge0;
@@ -70,6 +77,20 @@
*/
public IoModeType ioModeOf1F = IoModeType.NONE;
public IoModeType ioModeOf2F = IoModeType.NONE;
+
+ private ArrayList<Integer> getStaNo() {
+ switch (slave.getId()) {
+ case 1:
+ return staNos1;
+ case 2:
+ return staNos2;
+ case 3:
+ return staNos3;
+ default:
+ throw new CoolException("鏈嶅姟鍣ㄥ紓甯�");
+ }
+ }
+
@Override
@SuppressWarnings("InfiniteLoopStatement")
@@ -132,6 +153,7 @@
private void read() throws InterruptedException {
// 鏇存柊鍏ュ嚭搴撴ā寮�
updateIoMode();
+ ArrayList<Integer> staNos = getStaNo();
OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 50);
if (result.IsSuccess) {
for (int i = 0; i < 25; i++) {
@@ -244,6 +266,7 @@
if (null == staProtocol) {
return;
}
+ ArrayList<Integer> staNos = getStaNo();
int index = staNos.indexOf(staProtocol.getSiteId());
OperateResult writeId,writeDest;
@@ -358,6 +381,7 @@
if (null == staProtocol || times > 3) {
return;
}
+ ArrayList<Integer> staNos = getStaNo();
int index = staNos.indexOf(staProtocol.getSiteId());
OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
Thread.sleep(200);
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index aa11a99..f2fcaf2 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -70,6 +70,13 @@
row: 4
bay: 5
lev: 1
+ # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+ crnOutStn[1]:
+ devpPlcId: ${wcs-slave.devp[1].id}
+ staNo: 112
+ row: 3
+ bay: 2
+ lev: 1
# 鍫嗗灈鏈�2
crn[1]:
id: 2
@@ -132,6 +139,13 @@
row: 18
bay: 5
lev: 1
+ # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+ crnOutStn[1]:
+ devpPlcId: ${wcs-slave.devp[2].id}
+ staNo: 212
+ row: 19
+ bay: 6
+ lev: 1
# 绌挎杞�1
ste[0]:
id: 1
@@ -153,7 +167,7 @@
port: 502
rack: 0
slot: 0
- # 杈撻�佺嚎
+ # 杈撻�佺嚎1
devp[0]:
id: 1
ip: 10.10.10.61
@@ -201,6 +215,46 @@
barcode: ${wcs-slave.barcode[1].id}
backSta: 200
led: ${wcs-slave.led[2].id}
+ # 杈撻�佺嚎2
+ devp[1]:
+ id: 2
+ ip: 10.10.11.61
+ port: 102
+ rack: 0
+ slot: 0
+ # 鍏ュ簱鍙�1
+ inSta[0]:
+ staNo: 114
+ barcode: ${wcs-slave.barcode[2].id}
+ backSta: 100
+ led: ${wcs-slave.led[2].id}
+ # 绌烘澘鍏ュ簱鍙�1
+ emptyInSta[0]:
+ staNo: 114
+ barcode: ${wcs-slave.barcode[2].id}
+ # 鍑哄簱鍙�1
+ outSta[0]:
+ staNo: 114
+ # 杈撻�佺嚎3
+ devp[2]:
+ id: 3
+ ip: 10.10.12.61
+ port: 102
+ rack: 0
+ slot: 0
+ # 鍏ュ簱鍙�1
+ inSta[0]:
+ staNo: 214
+ barcode: ${wcs-slave.barcode[3].id}
+ backSta: 100
+ led: ${wcs-slave.led[3].id}
+ # 绌烘澘鍏ュ簱鍙�1
+ emptyInSta[0]:
+ staNo: 214
+ barcode: ${wcs-slave.barcode[3].id}
+ # 鍑哄簱鍙�1
+ outSta[0]:
+ staNo: 214
# 鏉$爜鎵弿浠�
barcode[0]:
id: 1
@@ -212,23 +266,49 @@
ip: 10.10.10.53
port: 51236
# LED1
+ # 鏉$爜鎵弿浠�
+ barcode[2]:
+ id: 3
+ ip: 10.10.11.53
+ port: 51236
+ # LED1
+ # 鏉$爜鎵弿浠�
+ barcode[3]:
+ id: 4
+ ip: 10.10.12.53
+ port: 51236
+ # LED1
led[0]:
id: 1
ip: 10.10.10.205
port: 5005
- devpPlcId: ${wcs-slave.devp[0].id}
+ devpPlcId: ${wcs-slave.devp[1].id}
staArr: 100
- # LED1
+ # LED2
led[1]:
id: 2
ip: 10.10.10.206
port: 5005
- devpPlcId: ${wcs-slave.devp[0].id}
+ devpPlcId: ${wcs-slave.devp[2].id}
staArr: 300
- # LED1
+ # LED3
led[2]:
id: 3
ip: 10.10.10.207
port: 5005
devpPlcId: ${wcs-slave.devp[0].id}
staArr: 200
+ # LED4
+ led[3]:
+ id: 4
+ ip: 10.10.11.207
+ port: 5005
+ devpPlcId: ${wcs-slave.devp[1].id}
+ staArr: 200
+ # LED5
+ led[4]:
+ id: 5
+ ip: 10.10.12.207
+ port: 5005
+ devpPlcId: ${wcs-slave.devp[2].id}
+ staArr: 200
--
Gitblit v1.9.1