From 5687b706d02e1d3bbaa6863d51b5803944b3af05 Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期三, 10 一月 2024 09:02:49 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/SiemensCrnThread.java | 178 ++++++++++++++---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 230 ++++++++++-------------
src/main/webapp/static/js/console.map.js | 12
src/main/java/com/zy/core/model/protocol/CrnProtocol.java | 33 +-
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 63 +++++
src/main/resources/application.yml | 27 +
6 files changed, 346 insertions(+), 197 deletions(-)
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 4b31eb4..a4acf12 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -19,6 +19,7 @@
import com.zy.common.model.SearchLocParam;
import com.zy.common.model.StartupDto;
import com.zy.common.service.CommonService;
+import com.zy.common.utils.CollectionUtils;
import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.News;
import com.zy.core.CrnThread;
@@ -152,6 +153,8 @@
// 閫�鍥�
if (back) {
// News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
+
if (!staProtocol.isLoading()){
continue;
}
@@ -170,12 +173,11 @@
&& staProtocol.isLoading()
&& staProtocol.isInEnable()
&& !staProtocol.isEmptyMk()
- && (staProtocol.getWorkNo() == 9999 || staProtocol.getWorkNo() == 9997 || staProtocol.getWorkNo() == 9995)
&& staProtocol.isPakMk()) {// && !Cools.isEmpty(barcode)) {
-// if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-// //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣
+ if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
+ News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+ //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣
// staProtocol.setWorkNo((short)9999);
// staProtocol.setStaNo((short)172);
// devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -183,8 +185,8 @@
// if (!result) {
// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
// }
-// continue;
-// }
+ continue;
+ }
// 鍒ゆ柇閲嶅宸ヤ綔妗�
WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
@@ -199,7 +201,7 @@
WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
.eq("barcode", barcode)
- .eq("io_type", 103));
+ .in("io_type", 107,103));
if (!Cools.isEmpty(checkPick)) {
continue;
}
@@ -236,8 +238,9 @@
} else {
- staProtocol.setWorkNo((short) 9998);
- staProtocol.setStaNo((short) 14);
+ staProtocol.setWorkNo(wrkNo);
+ wrkNo++;
+ staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -409,11 +412,21 @@
}
String barcode = barcodeThread.getBarcode();
- if (!Cools.isEmpty(barcode) && (staProtocol.getWorkNo() != 9998 || staProtocol.getWorkNo() != 9996)) {
+ if (!Cools.isEmpty(barcode)) {
// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
- if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
- staProtocol.setWorkNo((short) 9998);
- staProtocol.setStaNo((short) 14);
+ if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
+ if (!staProtocol.isLoading()) {
+ continue;
+ }
+ if (!staProtocol.isPakMk()) {
+ continue;
+ }
+ if(staProtocol.getWorkNo() != 0) {
+ continue;
+ }
+ staProtocol.setWorkNo(wrkNo);
+ wrkNo++;
+ staProtocol.setStaNo(pickSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
// led 寮傚父鏄剧ず
@@ -436,7 +449,7 @@
&& staProtocol.isLoading()
&& staProtocol.isInEnable()
&& !staProtocol.isEmptyMk()
- && (staProtocol.getWorkNo() == 9999 || staProtocol.getWorkNo() == 9997 || staProtocol.getWorkNo() == 9995)
+// && (staProtocol.getWorkNo() == 9999 || staProtocol.getWorkNo() == 9997 || staProtocol.getWorkNo() == 9995)
&& staProtocol.isPakMk()) {
WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
@@ -462,8 +475,7 @@
// 鑾峰彇鐩爣绔�
Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
.eq("type_no", wrkMast.getIoType() - 50)
- //閫熻吘鐗规湁鎹℃枡锛� 11绔欐槸鍑哄簱绔欙紝 鐒跺悗鎵嬪姩璧板埌15绔欒繘琛屽啀鍏ュ簱
- .eq("stn_no", 15) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+ .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
.eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
StaDesc staDesc = staDescService.selectOne(wrapper);
if (Cools.isEmpty(staDesc)) {
@@ -1746,145 +1758,103 @@
* 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
*/
public synchronized void ledExecute() {
-// String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
-
for (LedSlave led : slaveProperties.getLed()) {
// 鑾峰彇杈撻�佺嚎plc绾跨▼
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
-// // 鍛戒护闆嗗悎
-// List<LedCommand> commands = new ArrayList<>();
-// // 宸ヤ綔妗i泦鍚�
-// List<WrkMast> wrkMasts = new ArrayList<>();
+ // 鍛戒护闆嗗悎
+ List<LedCommand> commands = new ArrayList<>();
+ // 宸ヤ綔妗i泦鍚�
+ List<WrkMast> wrkMasts = new ArrayList<>();
for (Integer staNo : led.getStaArr()) {
// 鑾峰彇鍙夎溅绔欑偣
StaProtocol staProtocol = devpThread.getStation().get(staNo);
if (null == staProtocol || null == staProtocol.getWorkNo() || 0 == staProtocol.getWorkNo() || !staProtocol.isLoading()) {
- MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, ""));
continue;
} else {
staProtocol = staProtocol.clone();
}
// 鑾峰彇宸ヤ綔妗f暟鎹�
WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
- if (null == wrkMast) {
- MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, ""));
- continue;
- }
- ArrayList<MatDto> matDtos = new ArrayList<>();
- Wrapper<WrkDetl> detlWrapper = new EntityWrapper<WrkDetl>()
- .eq("wrk_no", wrkMast.getWrkNo());
+ if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
+ wrkMasts.add(wrkMast);
+ // 缁勮鍛戒护
LedCommand ledCommand = new LedCommand();
ledCommand.setWorkNo(wrkMast.getWrkNo());
- ledCommand.setStaNo(wrkMast.getStaNo());
- ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
- ledCommand.setLocNo(wrkMast.getLocNo());
- ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
ledCommand.setIoType(wrkMast.getIoType());
- ledCommand.setTitle(wrkMast.getIoType$());
-
+ // 鍑哄簱妯″紡
switch (wrkMast.getIoType()) {
- case 10:
+ case 101:
+ ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
+ break;
+ case 103:
+ ledCommand.setTitle("鎷f枡鍑哄簱");
+ break;
+ case 104:
+ ledCommand.setTitle("骞舵澘鍑哄簱");
+ break;
+ case 107:
+ ledCommand.setTitle("鐩樼偣鍑哄簱");
+ break;
case 110:
+ ledCommand.setTitle("绌烘澘鍑哄簱");
ledCommand.setEmptyMk(true);
break;
default:
- ledCommand.setBarcode(wrkMast.getBarcode());
- List<WrkDetl> wrkDetls = wrkDetlService.selectList(detlWrapper);
- for (WrkDetl wrkDetl : wrkDetls) {
- MatDto matDto = new MatDto();
- matDto.setMaknx(wrkDetl.getMaktx());
- matDto.setMatNo(wrkDetl.getMatnr());
- matDto.setCount(wrkDetl.getAnfme());
- matDtos.add(matDto);
- }
+ News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
break;
-
-
}
- ledCommand.setMatDtos(matDtos);
- MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, ledCommand.toString()));
-
-// wrkMasts.add(wrkMast);
-// // 缁勮鍛戒护
-// LedCommand ledCommand = new LedCommand();
-// ledCommand.setWorkNo(wrkMast.getWrkNo());
-// ledCommand.setIoType(wrkMast.getIoType());
-// // 鍑哄簱妯″紡
-// switch (wrkMast.getIoType()) {
-// case -1:
-// ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
-// break;
-// case 10:
-// ledCommand.setTitle("绌烘澘鍏ュ簱");
-// break;
-// case 10-1:
-// ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
-// break;
-// case 103:
-// ledCommand.setTitle("鎷f枡鍑哄簱");
-// break;
-// case 104:
-// ledCommand.setTitle("骞舵澘鍑哄簱");
-// break;
-// case 107:
-// ledCommand.setTitle("鐩樼偣鍑哄簱");
-// break;
-// case 110:
-// ledCommand.setTitle("绌烘澘鍑哄簱");
-// ledCommand.setEmptyMk(true);
-// break;
-// default:
-// News.error(methodName + ":浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
-// break;
-// }
-// ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
-// ledCommand.setLocNo(wrkMast.getLocNo());
-// ledCommand.setStaNo(wrkMast.getStaNo());
-//// ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
-// if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
-// List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
-// wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme())));
-// }
-// commands.add(ledCommand);
-// }
-// Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
-// // 鑾峰彇LED绾跨▼
-// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
-// // 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护
-//// if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
-//// continue;
-//// }
-// // 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
-// if (!commands.isEmpty()) {
-// String errMsg = "";
-// if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
-// News.error(methodName + ":{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-// continue;
-// } else {
-// ledThread.setLedMk(false);
-// }
-//
-//
+ ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
+ ledCommand.setStaNo(wrkMast.getStaNo());
+ ledCommand.setBarcode(wrkMast.getBarcode());
+ if (wrkMast.getIoType() != 110) {
+ List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
+ wrkDetls.forEach(wrkDetl -> {
+ if (wrkMast.getIoType() == 101) {
+ ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme()));
+ }
+ if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
+ ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme()));
+ }
+ if (wrkMast.getIoType() == 107) {
+ ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme()));
+ }
+ });
+ }
+ commands.add(ledCommand);
}
-//
-// try {
-// // 淇敼涓绘。led鏍囪
-// for (WrkMast wrkMast : wrkMasts) {
-// wrkMast.setOveMk("Y");
-// wrkMast.setModiTime(new Date());
-// if (wrkMastMapper.updateById(wrkMast) == 0) {
-// throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
-// }
-// }
-//
-// // 鏇存柊绾跨▼褰撳墠宸ヤ綔鍙烽泦鍚�
-// ledThread.setWorkNos(workNos);
-//
-// } catch (Exception e) {
-// e.printStackTrace();
-// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-// }
+ Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
+ // 鑾峰彇LED绾跨▼
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
+ // 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护
+ if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
+ continue;
+ }
+ // 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
+ if (!commands.isEmpty()) {
+ if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
+ News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+ continue;
+ }
+ }
+
+ try {
+ // 淇敼涓绘。led鏍囪
+ for (WrkMast wrkMast : wrkMasts) {
+ wrkMast.setOveMk("Y");
+ wrkMast.setModiTime(new Date());
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
+ }
+ }
+
+ // 鏇存柊绾跨▼褰撳墠宸ヤ綔鍙烽泦鍚�
+ ledThread.setWorkNos(workNos);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
}
}
diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
index a63b90b..af2dee1 100644
--- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -187,6 +187,11 @@
*/
public Float yDuration;
+ /**
+ * 鍫嗗灈鏈烘墍鍦ㄥ贩閬�
+ */
+ private Integer crnLane = 1;
+
public void setMode(Short mode) {
this.mode = mode;
this.modeType = CrnModeType.get(mode);
@@ -251,32 +256,32 @@
return basCrnp;
}
- public void setxSpeed(Short xSpeed) {
- this.xSpeed = Float.valueOf(xSpeed);
+ public void setxSpeed(float xSpeed) {
+ this.xSpeed = xSpeed;
}
- public void setySpeed(Short ySpeed) {
- this.ySpeed = Float.valueOf(ySpeed);
+ public void setySpeed(float ySpeed) {
+ this.ySpeed = ySpeed;
}
- public void setzSpeed(Short zSpeed) {
- this.zSpeed = Float.valueOf(zSpeed);
+ public void setzSpeed(float zSpeed) {
+ this.zSpeed = zSpeed;
}
- public void setxDistance(Short xDistance) {
- this.xDistance = Float.valueOf(xDistance);
+ public void setxDistance(float xDistance) {
+ this.xDistance = xDistance;
}
- public void setyDistance(Short yDistance) {
- this.yDistance = Float.valueOf(yDistance);
+ public void setyDistance(float yDistance) {
+ this.yDistance = yDistance;
}
- public void setxDuration(Short xDuration) {
- this.xDuration = Float.valueOf(xDuration);
+ public void setxDuration(float xDuration) {
+ this.xDuration = xDuration;
}
- public void setyDuration(Short yDuration) {
- this.yDuration = Float.valueOf(yDuration);
+ public void setyDuration(float yDuration) {
+ this.yDuration = yDuration;
}
}
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 9e8acb1..2a6fd32 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -44,6 +44,8 @@
*/
private boolean backHpFlag = false;
+ private boolean cmdFlag = true;
+
public SiemensCrnThread(CrnSlave slave) {
this.slave = slave;
}
@@ -147,10 +149,10 @@
* 璇诲彇鐘舵��
*/
private void readStatus(){
- String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
-
+ short len = 56;
+ len = slave.getId() == 1 ? (short) 56 : (short) 58;
try {
- OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56);
+ OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short)56);
if (result.IsSuccess) {
if (null == crnProtocol) {
crnProtocol = new CrnProtocol();
@@ -170,26 +172,24 @@
crnProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 22));
crnProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 24));
crnProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 26));
- crnProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28));
- crnProtocol.setySpeed(siemensNet.getByteTransform().TransInt16(result.Content, 32));
- crnProtocol.setzSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 36));
- crnProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40));
- crnProtocol.setyDistance(siemensNet.getByteTransform().TransInt16(result.Content, 44));
- crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
- crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 52));
+ crnProtocol.setxSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 28));
+ crnProtocol.setySpeed(siemensNet.getByteTransform().TransSingle(result.Content, 32));
+ crnProtocol.setzSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 36));
+ crnProtocol.setxDistance(siemensNet.getByteTransform().TransSingle(result.Content, 40));
+ crnProtocol.setyDistance(siemensNet.getByteTransform().TransSingle(result.Content, 44));
+ crnProtocol.setxDuration(siemensNet.getByteTransform().TransSingle(result.Content, 48));
+ crnProtocol.setyDuration(siemensNet.getByteTransform().TransSingle(result.Content, 52));
OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
// 澶嶄綅淇″彿
if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
if (resetFlag) {
- if(crnProtocol.getTaskNo()==9999){
- backHpFlag = false;
- }
CrnCommand crnCommand = new CrnCommand();
crnCommand.setAckFinish((short)1);
if (write(crnCommand)) {
resetFlag = false;
+ cmdFlag = true;
}
}
}
@@ -201,19 +201,19 @@
basCrnp.setCrnNo(slave.getId());
basCrnp.setCrnSts((int)crnProtocol.getMode());
if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){
- News.error(methodName + ":鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+ News.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
}
} catch (Exception ignore){}
} else {
initCrn();
OutputQueue.CRN.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()));
- News.error(methodName + ":璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+ News.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
}
} catch (Exception e) {
e.printStackTrace();
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(methodName + ":璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ News.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
initCrn();
}
}
@@ -231,34 +231,144 @@
* 鍐欏叆鏁版嵁
*/
private boolean write(CrnCommand command) throws InterruptedException {
- String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
-
if (null == command) {
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));
+ }
+ }
+ }catch (Exception e){
+ News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�");
+ }
// convertRow(command);
command.setCrnNo(slave.getId());
+// short[] array = new short[10];
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.getSourceStaNo();
-// array[10] = command.getDestinationStaNo();
+ 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] = command.getLocType1(); //鏂板璐х墿绫诲瀷涓嬪彂
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) 18);
+ 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())
+ ){
+ 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) {
- short commandFinish = 1;
- Thread.sleep(100L);
- result = siemensNet.Write("DB100.18", commandFinish);
+ 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);
+ }
}
+
+// if (command.getAckFinish() == 0) {
+// short commandFinish = 1;
+// Thread.sleep(200L);
+// result = siemensNet.Write("DB100.18", commandFinish);
+// log.info("鍫嗗灈鏈篶ommandFinish涓嬪彂[id:{}] >>>>> {}", slave.getId(), commandFinish);
+//// result = siemensNet.Write("DB100.22", commandFinish);
+// }
try {
// 鏃ュ織璁板綍
@@ -286,12 +396,12 @@
if (result != null && result.IsSuccess) {
Thread.sleep(200);
this.readStatus();
- News.info(methodName + ":鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
+ 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(methodName + ":鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
return false;
}
}
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 3ef813e..979e434 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -72,6 +72,17 @@
public static final ArrayList<Integer> staNosErr3 = new ArrayList<Integer>() {{
add(301); add(303); add(305);
}};
+
+ public static final ArrayList<Integer> barcode1 = new ArrayList<Integer>() {{
+ add(0); add(1); add(2);
+ }};
+ public static final ArrayList<Integer> barcode2 = new ArrayList<Integer>() {{
+ add(3); add(4); add(5);
+ }};
+ public static final ArrayList<Integer> barcode3 = new ArrayList<Integer>() {{
+ add(6); add(7); add(8);
+ }};
+
private ArrayList<Integer> getStaNo() {
switch (slave.getId()) {
case 1:
@@ -84,6 +95,19 @@
throw new CoolException("鑾峰彇绔欑偣澶辫触锛�");
}
}
+ private ArrayList<Integer> getBarcodeList() {
+ switch (slave.getId()) {
+ case 1:
+ return barcode1;
+ case 2:
+ return barcode2;
+ case 3:
+ return barcode3;
+ default:
+ throw new CoolException("鑾峰彇绔欑偣澶辫触锛�");
+ }
+ }
+
private ArrayList<Integer> getStaNoErr() {
switch (slave.getId()) {
case 1:
@@ -219,6 +243,24 @@
staProtocol.setPakMk(true);
}
}
+
+ // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+ 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()));
+ News.error(methodName + ":鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+ }
}
//澶栧舰妫�娴�
ArrayList<Integer> staNoErrs = getStaNoErr();
@@ -241,17 +283,30 @@
//鏉$爜鎵弿鍣�
// Thread.sleep(200);
- OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.840",(short)(barcodeSize*10));
+// OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.840",(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);
+// }
+// }
+// }
+
+ ArrayList<Integer> barcodeList = getBarcodeList();
+ OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.840", (short) (barcodeList.size() * 8));
if (result2.IsSuccess) {
- for (int i = 0; i < barcodeSize; i++) {
+ 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, i + 1);
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId + 1);
if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
barcodeThread.setBarcode(barcode);
}
}
-
}
+
//RGV灏忚溅
// Thread.sleep(200);
OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB100.160",(short)2);
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index ca616cb..5186676 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -248,14 +248,17 @@
pickSta[0]:
staNo: 101
barcode: ${wcs-slave.barcode[0].id}
+ backSta: 100
# 鎷f枡鍏ュ簱鍙�2
pickSta[1]:
staNo: 103
barcode: ${wcs-slave.barcode[1].id}
+ backSta: 102
# 鎷f枡鍏ュ簱鍙�3
pickSta[2]:
staNo: 105
barcode: ${wcs-slave.barcode[2].id}
+ backSta: 104
# 杈撻�佺嚎2妤�
devp[1]:
id: 2
@@ -303,14 +306,17 @@
pickSta[0]:
staNo: 201
barcode: ${wcs-slave.barcode[3].id}
+ backSta: 200
# 鎷f枡鍏ュ簱鍙�2
pickSta[1]:
staNo: 203
barcode: ${wcs-slave.barcode[4].id}
+ backSta: 202
# 鎷f枡鍏ュ簱鍙�3
pickSta[2]:
staNo: 205
barcode: ${wcs-slave.barcode[5].id}
+ backSta: 204
# 杈撻�佺嚎3妤�
devp[2]:
id: 3
@@ -358,14 +364,17 @@
pickSta[0]:
staNo: 301
barcode: ${wcs-slave.barcode[6].id}
+ backSta: 300
# 鎷f枡鍏ュ簱鍙�2
pickSta[1]:
staNo: 303
barcode: ${wcs-slave.barcode[7].id}
+ backSta: 302
# 鎷f枡鍏ュ簱鍙�3
pickSta[2]:
staNo: 305
barcode: ${wcs-slave.barcode[8].id}
+ backSta: 304
# 鏉$爜鎵弿浠�1
barcode[0]:
id: 1
@@ -417,60 +426,60 @@
ip: 10.10.10.81
port: 5005
devpPlcId: ${wcs-slave.devp[0].id}
- staArr: 101
+ staArr: 100
# LED2
led[1]:
id: 2
ip: 10.10.10.202
port: 5005
devpPlcId: ${wcs-slave.devp[0].id}
- staArr: 103
+ staArr: 102
# LED3
led[2]:
id: 1
ip: 10.10.10.81
port: 5005
devpPlcId: ${wcs-slave.devp[0].id}
- staArr: 105
+ staArr: 104
# LED4
led[3]:
id: 2
ip: 10.10.10.202
port: 5005
devpPlcId: ${wcs-slave.devp[1].id}
- staArr: 201
+ staArr: 200
# LED5
led[4]:
id: 1
ip: 10.10.10.81
port: 5005
devpPlcId: ${wcs-slave.devp[1].id}
- staArr: 203
+ staArr: 202
# LED6
led[5]:
id: 2
ip: 10.10.10.202
port: 5005
devpPlcId: ${wcs-slave.devp[1].id}
- staArr: 205
+ staArr: 204
# LED7
led[6]:
id: 1
ip: 10.10.10.81
port: 5005
devpPlcId: ${wcs-slave.devp[2].id}
- staArr: 301
+ staArr: 300
# LED8
led[7]:
id: 2
ip: 10.10.10.202
port: 5005
devpPlcId: ${wcs-slave.devp[2].id}
- staArr: 303
+ staArr: 302
# LED9
led[8]:
id: 1
ip: 10.10.10.81
port: 5005
devpPlcId: ${wcs-slave.devp[2].id}
- staArr: 305
+ staArr: 304
diff --git a/src/main/webapp/static/js/console.map.js b/src/main/webapp/static/js/console.map.js
index dea8820..c377ec1 100644
--- a/src/main/webapp/static/js/console.map.js
+++ b/src/main/webapp/static/js/console.map.js
@@ -64,7 +64,7 @@
"rackDescs": [{
"type": "rackDescs",
"id": "lb_desc17",
- "text": "#1",
+ "text": "#6",
"top": 119,
"left": 157,
"width": 30,
@@ -72,7 +72,7 @@
}, {
"type": "rackDescs",
"id": "lb_desc16",
- "text": "#6",
+ "text": "#1",
"top": 344,
"left": 154,
"width": 33,
@@ -96,8 +96,8 @@
"height": 290
}, {
"type": "crane",
- "id": "crn-3",
- "text": "3",
+ "id": "crn-1",
+ "text": "1",
"top": 316,
"left": 466,
"width": 93,
@@ -136,8 +136,8 @@
"height": 2
}, {
"type": "crane",
- "id": "crn-1",
- "text": "1",
+ "id": "crn-3",
+ "text": "3",
"top": 151,
"left": 471,
"width": 93,
--
Gitblit v1.9.1