From 76d3fff7c27d020fd7110e4a5e84cc87e3fe7e43 Mon Sep 17 00:00:00 2001
From: lsh <lsh123456>
Date: 星期五, 03 三月 2023 15:45:32 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/controller/SiteController.java | 4
src/main/java/com/zy/core/thread/SiemensCrnThread.java | 4
src/main/java/com/zy/core/thread/SteThread.java | 27 ++++++
src/main/java/com/zy/core/model/protocol/SteProtocol.java | 5 +
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 112 +++++++++++++++++++++++++--
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 2
src/main/java/com/zy/core/enums/SteTaskModeType.java | 4
src/main/java/com/zy/core/MainProcess.java | 9 ++
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 51 +++++++++++-
src/main/resources/application.yml | 6
10 files changed, 196 insertions(+), 28 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/SiteController.java b/src/main/java/com/zy/asrs/controller/SiteController.java
index a39ae86..941bc9f 100644
--- a/src/main/java/com/zy/asrs/controller/SiteController.java
+++ b/src/main/java/com/zy/asrs/controller/SiteController.java
@@ -63,8 +63,8 @@
SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
Map<String, Object> map1 = new HashMap<>();
map1.put("floor", 1);
- map1.put("modeVal", devpThread.charge0);
- map1.put("modeDesc", devpThread.charge0?"鍏呯數涓�":"鍏抽棴");
+ map1.put("modeVal", !devpThread.charge0);
+ map1.put("modeDesc", !devpThread.charge0?"鍏呯數涓�":"鍏抽棴");
res.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("floor", 2);
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 5de2551..08d4b5f 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -91,4 +91,6 @@
WrkMast selectPakoutWorkingByGroupLoc(@Param("locNos")List<String> locNos);
+ List<WrkMast> selectAll(@Param("staNo")Integer staNo);
+
}
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 6407cd7..4008615 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
+import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.*;
@@ -1835,6 +1836,22 @@
}
}
// 绉诲簱 ===>> 鍫嗗灈鏈烘惉鑷崇洰鏍囧簱浣嶇粍 瀹屾垚
+ } else if (wrkMast.getWrkSts() == 16) {
+ // 16.鍚婅溅鍑哄簱涓� ==> 17.鍑哄簱瀹屾垚
+ wrkMast.setWrkSts(17L);
+ Date now = new Date();
+ wrkMast.setCrnEndTime(now);
+ wrkMast.setModiTime(now);
+ LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+ Integer outCrnNo = locMastService.getOutCrnNo(locMast);
+ wrkMast.setCrnNo(outCrnNo);
+ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlag(true);
+ } else {
+ News.error("淇敼宸ヤ綔妗g姸鎬� 16.鍚婅溅鍑哄簱涓� ==> 17.鍑哄簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
}
}
}
@@ -1879,15 +1896,17 @@
} else {
steThread.setResetFlag(true);
}
- } else if (wrkCharge.getWrkSts() == 29) {
- // 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數
- wrkCharge.setWrkSts(30L);
- if (!wrkChargeService.updateById(wrkCharge)) {
- News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
- } else {
- steThread.setResetFlag(true);
- }
- } else if (wrkCharge.getWrkSts() == 32) {
+ }
+// else if (wrkCharge.getWrkSts() == 29) {
+// // 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數
+// wrkCharge.setWrkSts(30L);
+// if (!wrkChargeService.updateById(wrkCharge)) {
+// News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+// } else {
+// steThread.setResetFlag(true);
+// }
+// }
+ else if (wrkCharge.getWrkSts() == 32) {
// 32.灏忚溅璧拌 ===>> 33.灏忚溅寰呮惉
wrkCharge.setWrkSts(33L);
if (!wrkChargeService.updateById(wrkCharge)) {
@@ -2486,7 +2505,7 @@
SteChargeType steCharge = null;
do {
String locNo;
- if (!devpThread.charge0) {
+ if (devpThread.charge0) {
SteChargeType first = SteChargeType.FIRST;
locNo = first.locNo;
if (basSteService.hasCarOfLocNo(locNo) == null
@@ -2582,6 +2601,7 @@
return;
}
if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) {
+ MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 999));//鍏呯數鏍囪
wrkCharge.setWrkSts(30L);
wrkChargeMapper.updateById(wrkCharge);
return;
@@ -2644,7 +2664,7 @@
SteCommand steCommand = new SteCommand();
steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
- steCommand.setTaskMode(SteTaskModeType.GO_ORIGIN); // 鍘诲彸绔�
+ steCommand.setTaskMode(SteTaskModeType.BACK_ORIGIN); // 鍘诲彸绔�
steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue());
steCommand.setBay(steProtocol.getBay());
@@ -2675,6 +2695,19 @@
wrkCharge.setWrkSts(29L);
if (!wrkChargeService.updateById(wrkCharge)) {
News.error("淇敼鍏呯數浠诲姟鐘舵�� 28.鍏呯數灏辩华 ===>> 29.寮�濮嬪厖鐢� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+ }
+ }
+ } else if (wrkCharge.getWrkSts() == 29) {
+ Float idle2 = steProtocol.isIdle2();
+ String chargeLine = SpringUtils.getBean(BasSteService.class).selectById(1).getChargeLine();
+ if (idle2<(Float.parseFloat(chargeLine)+2)){
+ MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 666));//鍏呯數鏍囪
+ }else if (idle2 > 70f){
+ MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 999));//鍏呯數鏍囪
+ // 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數
+ wrkCharge.setWrkSts(30L);
+ if (!wrkChargeService.updateById(wrkCharge)) {
+ News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
}
}
}
@@ -3201,6 +3234,63 @@
}
}
+ /**
+ * 鍑哄叆搴撴ā寮忓垏鎹�
+ */
+ public synchronized void outAndIn() {
+ try {
+ // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ for (DevpSlave.Sta inSta : devp.getInSta()) {
+ Thread.sleep(500);
+ boolean a=true,b=true;
+ List<WrkMast> wrkMasts = wrkMastMapper.selectAll(inSta.getStaNo());
+ if (Cools.isEmpty(wrkMasts)){
+ b=false;
+ }else {
+ for (WrkMast wrkMast:wrkMasts){
+ if (wrkMast.getSourceStaNo()!=wrkMast.getStaNo()){
+ a=false;
+ break;
+ }
+ }
+ }
+ switch (inSta.getStaNo()) {
+ case 102://1F
+ if (a && b){
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 11));
+ }else if (b){
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 12));
+ }else {
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 10));
+ }
+ break;
+ case 202://2F
+ if (a && b){
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 21));
+ }else if (b){
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 22));
+ }else {
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 20));
+ }
+ break;
+ case 302://3F
+ if (a && b){
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 31));
+ }else if (b){
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 32));
+ }else {
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 30));
+ }
+ break;
+ }
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
}
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index a54f050..c5895a9 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -22,6 +22,8 @@
private MainServiceImpl mainService;
// 鎵�灞炵嚎绋�
private Thread thread;
+ // 棰戠巼
+ private int i = 0;
/**
* =====>> 寮�濮嬪伐浣�
@@ -70,6 +72,13 @@
// 绌挎杞� ===>> 灏忚溅鐢甸噺妫�娴嬪厖鐢�
mainService.loopSteCharge();
mainService.executeSteCharge();
+ //鍑哄叆搴撴ā寮�
+ i++;
+ if (i > 1) {
+ mainService.outAndIn();
+ i = 0;
+ }
+
// 闂撮殧
Thread.sleep(200);
// 绌挎杞� ===>> 灏忚溅澶嶄綅鑷冲緟鏈哄簱浣�
diff --git a/src/main/java/com/zy/core/enums/SteTaskModeType.java b/src/main/java/com/zy/core/enums/SteTaskModeType.java
index b1b9d39..02930f9 100644
--- a/src/main/java/com/zy/core/enums/SteTaskModeType.java
+++ b/src/main/java/com/zy/core/enums/SteTaskModeType.java
@@ -96,9 +96,9 @@
public static SteTaskModeType findOriginByLoc(Integer row) {
if (Utils.FIRST_GROUP_ROW_LIST.contains(row)) {
- return SteTaskModeType.BACK_ORIGIN;
- } else if (Utils.SECOND_GROUP_ROW_LIST.contains(row)) {
return SteTaskModeType.GO_ORIGIN;
+ } else if (Utils.SECOND_GROUP_ROW_LIST.contains(row)) {
+ return SteTaskModeType.BACK_ORIGIN;
} else {
throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�");
}
diff --git a/src/main/java/com/zy/core/model/protocol/SteProtocol.java b/src/main/java/com/zy/core/model/protocol/SteProtocol.java
index a7e6571..5ed0d12 100644
--- a/src/main/java/com/zy/core/model/protocol/SteProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/SteProtocol.java
@@ -536,6 +536,11 @@
}
}
+ // 灏忚溅鐢甸噺
+ public Float isIdle2() {
+ return this.charge;
+ }
+
// 鏄惁澶勪簬鎶ヨ鐘舵��
public Boolean isAlarm() {
return this.alarm > 1;
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 75e9700..9ce7789 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -226,7 +226,7 @@
News.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
return false;
}
- siemensNet.Write("DB100.18", (short) 0);
+// siemensNet.Write("DB100.18", (short) 0);
// convertRow(command);
command.setCrnNo(slave.getId());
short[] array = new short[10];
@@ -258,11 +258,9 @@
OperateResult result = siemensNet.Write("DB100.0", array);
if (command.getAckFinish() == 0) {
- if (result.IsSuccess) {
short commandFinish = 1;
Thread.sleep(300);
result = siemensNet.Write("DB100.18", commandFinish);
- }
}
try {
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 4fc1742..718f5af 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.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.service.BasDevpService;
import com.zy.core.DevpThread;
@@ -75,6 +76,10 @@
// 鍐欐暟鎹� ID+鐩爣绔�
case 2:
write((StaProtocol)task.getData());
+ break;
+ // 鍑哄叆搴撴ā寮�
+ case 3:
+ write3((int)task.getData());
break;
default:
break;
@@ -150,10 +155,10 @@
//璇绘潯鐮�
Thread.sleep(100);
- OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.150",(short)31);
+ OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.150",(short)24);
if (result2.IsSuccess) {
- for (int i = 0; i < barcodeSize; i++) {
- String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*16,15, "UTF-8");
+ 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);
@@ -163,12 +168,17 @@
// 鍏呯數淇″彿浣�
Thread.sleep(50);
- OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB102.128", (short)1);
+ OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB102.109", (short)1);
if (result3.IsSuccess) {
boolean[] status = siemensS7Net.getByteTransform().TransBool(result3.Content, 0, 1);
charge0 = status[0];
- charge1 = status[1];
- charge2 = status[2];
+ }
+ // 鍏呯數淇″彿浣�
+ Thread.sleep(50);
+ OperateResultExOne<byte[]> result31 = siemensS7Net.Read("DB100.201", (short)1);
+ if (result3.IsSuccess) {
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(result31.Content, 0, 1);
+ charge1 = status[0];
}
// 澶栧舰妫�娴� - 102
@@ -225,6 +235,35 @@
// News.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
}
}
+ /**
+ * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
+ */
+ private void write3(int outAndIn) throws InterruptedException{
+ if (Cools.isEmpty(outAndIn)) {
+ return;
+ }
+ if (outAndIn==666){
+ siemensS7Net.Write("DB100.200", (short) 1);
+ }else if (outAndIn==999){
+ siemensS7Net.Write("DB100.200", (short) 0);
+ }else {
+ String Db=null;
+ if (outAndIn<20){
+ Db="DB100.180";
+ }else if (outAndIn<30){
+ Db="DB100.182";
+ }else {
+ Db="DB100.184";
+ }
+ if (outAndIn == 11 || outAndIn == 21 || outAndIn == 31){
+ siemensS7Net.Write(Db, (byte) 1); // 鍏ュ簱
+ }else if (outAndIn == 12 || outAndIn == 22 || outAndIn == 32){
+ siemensS7Net.Write(Db, (byte) 2); // 鍑哄簱
+ }else if (outAndIn == 10 || outAndIn == 20 || outAndIn == 30){
+ siemensS7Net.Write(Db, (byte) 0); // 鍑哄簱
+ }
+ }
+ }
/**
* 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
diff --git a/src/main/java/com/zy/core/thread/SteThread.java b/src/main/java/com/zy/core/thread/SteThread.java
index 823247a..e6786c8 100644
--- a/src/main/java/com/zy/core/thread/SteThread.java
+++ b/src/main/java/com/zy/core/thread/SteThread.java
@@ -11,12 +11,16 @@
import com.core.exception.CoolException;
import com.zy.asrs.entity.BasSte;
import com.zy.asrs.entity.BasSteOpt;
+import com.zy.asrs.entity.WrkCharge;
import com.zy.asrs.service.BasSteOptService;
import com.zy.asrs.service.BasSteService;
+import com.zy.common.model.enums.WrkChargeType;
+import com.zy.core.DevpThread;
import com.zy.core.News;
import com.zy.core.ThreadHandler;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
+import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
import com.zy.core.enums.SteStatusType;
import com.zy.core.model.SteSlave;
@@ -175,7 +179,13 @@
steProtocol.setCrnStopRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 38));
steProtocol.setCrnStopFork(siemensS7Net.getByteTransform().TransInt16(result.Content, 40));
steProtocol.setCrnAllowRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 42));
- steProtocol.setChargeStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 44));
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ if (!devpThread.charge0 || devpThread.charge1){
+ steProtocol.setChargeStatus((short)1);
+ }else {
+ steProtocol.setChargeStatus((short)0);
+ }
+
OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
@@ -286,6 +296,21 @@
News.error("绌挎杞﹀啓鍏ュ懡浠や负绌�");
return false;
}
+ //鍒ゆ柇灏忚溅鏄惁鍦ㄥ厖鐢�
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ if (!devpThread.charge0 || devpThread.charge1){
+ // led 寮傚父鏄剧ず
+ LedThread ledThread1 = (LedThread) SlaveConnection.get(SlaveType.Led, 1);
+ LedThread ledThread2 = (LedThread) SlaveConnection.get(SlaveType.Led, 1);
+ LedThread ledThread3 = (LedThread) SlaveConnection.get(SlaveType.Led, 1);
+ if (ledThread1 != null && ledThread2 != null && ledThread3 != null) {
+ MessageQueue.offer(SlaveType.Led, 1, new Task(3, "绌挎杞︽鍦ㄥ厖鐢�"));
+ MessageQueue.offer(SlaveType.Led, 2, new Task(3, "绌挎杞︽鍦ㄥ厖鐢�"));
+ MessageQueue.offer(SlaveType.Led, 3, new Task(3, "绌挎杞︽鍦ㄥ厖鐢�"));
+ }
+ News.error("绌挎杞︽鍦ㄥ厖鐢�");
+ return false;
+ }
command.setSteNo(slave.getId());
OperateResult result = null;
// 寮�濮嬩换鍔�
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index d8701c4..cdfc724 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -183,21 +183,21 @@
# LED1
led[0]:
id: 1
- ip: 10.10.10.205
+ ip: 10.10.10.231
port: 5005
devpPlcId: ${wcs-slave.devp[0].id}
staArr: 102
# LED1
led[1]:
id: 2
- ip: 10.10.10.207
+ ip: 10.10.10.232
port: 5005
devpPlcId: ${wcs-slave.devp[0].id}
staArr: 202
# LED1
led[2]:
id: 3
- ip: 10.10.10.206
+ ip: 10.10.10.233
port: 5005
devpPlcId: ${wcs-slave.devp[0].id}
staArr: 302
--
Gitblit v1.9.1