From e970c1670c36fc0d3f04dac0a81e504638828919 Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期三, 10 七月 2024 19:50:31 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/JxgtDevpThread.java | 96 ++++++++++++++-----------------
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/JxgtLiftThread.java | 78 ++++++++++++++++++--------
2 files changed, 97 insertions(+), 77 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/JxgtDevpThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/JxgtDevpThread.java
index fb09b66..2486eae 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/JxgtDevpThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/JxgtDevpThread.java
@@ -108,7 +108,7 @@
updateWorkMode();
ArrayList<BasConveyorSta> staNos = getStaNo();
int staNoSize = staNos.size();
- OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.16", (short) (staNoSize * 18));
+ OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.20", (short) (staNoSize * 18));
if (result.IsSuccess) {
for (int i = 0; i < staNoSize; i++) {
BasConveyorSta siteStation = staNos.get(i);
@@ -120,17 +120,18 @@
station.put(siteId, staProtocol);
}
- staProtocol.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18) == 2); // 鑷姩
+ staProtocol.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18) == 1); // 鑷姩
staProtocol.setLoading(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18 + 2) == 1); // 鏈夌墿
staProtocol.setInEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18 + 4) == 1); // 鍙叆
- staProtocol.setOutEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18 + 6) == 2);// 鍙嚭
+ staProtocol.setOutEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18 + 6) == 1);// 鍙嚭
//楂樹綆淇″彿
short locType1 = siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18 + 8);
staProtocol.setLow(locType1 == 1);
// staProtocol.setWorkMode((int) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 40 + 8));// 宸ヤ綔妯″紡
- staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 10)); // 宸ヤ綔鍙�
- staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18 + 14)); // 鐩爣绔�
+ staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 18 + 10)); // 宸ヤ綔鍙�
+ staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 18 + 14)); // 鐩爣绔�
+
if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
staProtocol.setPakMk(true);
@@ -139,17 +140,19 @@
}
OperateResultExOne<byte[]> resultBarcode = siemensS7Net.Read("DB100.160", (short) 8);
- //鏉$爜鏁版嵁
- String barcode = siemensS7Net.getByteTransform().TransString(resultBarcode.Content,0,8, "UTF-8");// 鏉$爜
- BasConveyorStaService basConveyorStaService = SpringUtils.getBean(BasConveyorStaService.class);
- DeviceBarcodeService deviceBarcodeService = SpringUtils.getBean(DeviceBarcodeService.class);
- BasConveyorSta basConveyorSta = basConveyorStaService.getOne(new LambdaQueryWrapper<BasConveyorSta>().eq(BasConveyorSta::getSiteNo, 31002));
- if (basConveyorSta != null) {
- DeviceBarcode deviceBarcode = deviceBarcodeService.getById(basConveyorSta.getBarcodeId());
- if (deviceBarcode != null) {
- BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, Integer.parseInt(deviceBarcode.getDeviceId()));
- if (barcodeThread != null) {
- barcodeThread.setBarcode(barcode);
+ if (resultBarcode.IsSuccess) {
+ //鏉$爜鏁版嵁
+ String barcode = siemensS7Net.getByteTransform().TransString(resultBarcode.Content,0,8, "UTF-8");// 鏉$爜
+ BasConveyorStaService basConveyorStaService = SpringUtils.getBean(BasConveyorStaService.class);
+ DeviceBarcodeService deviceBarcodeService = SpringUtils.getBean(DeviceBarcodeService.class);
+ BasConveyorSta basConveyorSta = basConveyorStaService.getOne(new LambdaQueryWrapper<BasConveyorSta>().eq(BasConveyorSta::getSiteNo, 31002));
+ if (basConveyorSta != null) {
+ DeviceBarcode deviceBarcode = deviceBarcodeService.getById(basConveyorSta.getBarcodeId());
+ if (deviceBarcode != null) {
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, Integer.parseInt(deviceBarcode.getDeviceId()));
+ if (barcodeThread != null) {
+ barcodeThread.setBarcode(barcode);
+ }
}
}
}
@@ -168,6 +171,7 @@
}
if (!stations.isEmpty()) {
+ BasConveyorStaService basConveyorStaService = SpringUtils.getBean(BasConveyorStaService.class);
if (null != basConveyorStaService && !basConveyorStaService.updateBatchById(stations)) {
throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
}
@@ -188,7 +192,7 @@
@Override
public boolean connect() {
boolean result = false;
- siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, device.getIp());
+ siemensS7Net = new SiemensS7Net(SiemensPLCS.S1500, device.getIp());
siemensS7Net.setRack(device.getRack().byteValue());
siemensS7Net.setSlot(device.getSlot().byteValue());
OperateResult connect = siemensS7Net.ConnectServer();
@@ -213,7 +217,7 @@
public boolean writeWorkNo(int siteId, short workNo) {
int index = findStaNosIndex(siteId);
- OperateResult write = siemensS7Net.Write("DB101." + (index * 8 + 20), workNo); // 宸ヤ綔鍙�
+ OperateResult write = siemensS7Net.Write("DB101." + (index * 8 + 20 + 4),(int) workNo); // 宸ヤ綔鍙�
if (!write.IsSuccess) {
StaProtocol staProtocol = station.get(siteId);
@@ -234,7 +238,7 @@
public boolean writeStaNo(int siteId,short staNo) {
int index = findStaNosIndex(siteId);
- OperateResult write = siemensS7Net.Write("DB1001." + (index * 8 + 20 + 4), staNo); // 鐩爣绔�
+ OperateResult write = siemensS7Net.Write("DB101." + (index * 8 + 20),(int) staNo); // 鐩爣绔�
if (!write.IsSuccess) {
StaProtocol staProtocol = station.get(siteId);
@@ -255,44 +259,30 @@
public boolean writeWorkSta(int siteId, short workNo, short staNo) {
int index = findStaNosIndex(siteId);
- String workNoAddress = "DB1001." + (index * 8 + 20);
- String staNoAddress = "DB1001." + (index * 8 + 20 + 4);
+ short[] array = new short[2];
+ array[0] = workNo;
+ array[1] = staNo;
+
+
+ String workNoAddress = "DB101." + (index * 8 + 20 + 4);
+ String staNoAddress = "DB101." + (index * 8 + 20);
OperateResult write1 = null; // 宸ヤ綔鍙�
OperateResult write2 = null; // 鐩爣绔�
- //浠诲姟涓嬪彂娆℃暟
- int writeCount = 0;
- do {
- write1 = siemensS7Net.Write(workNoAddress, workNo); // 宸ヤ綔鍙�
- write2 = siemensS7Net.Write(staNoAddress, staNo); // 鐩爣绔�
- if ((write1.IsSuccess && write2.IsSuccess)) {
- OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB1000." + (index * 40 + 100 + 2), (short) 4);
- if (readResult.IsSuccess) {
- short workNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0);
- short staNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 2);
- if (workNo == workNo2 && staNo == staNo2) {
- //浠诲姟鍛戒护鍐欏叆鎴愬姛
- log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋},{}锛屽啓鍏ユ鏁�={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount);
- return true;
- } else {//杩斿洖缁撴灉鏄垚鍔熶簡锛屼絾鏄湡瀹炲�间笉鐩稿悓
- writeCount++;
- log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={}锛寋},{}锛屽啓鍏ユ鏁�={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount);
- }
- } else {
- writeCount++;
- log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},{},鍐欏叆娆℃暟={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount);
- }
- }else {
- writeCount++;
- }
- }while (writeCount < 5) ;
- StaProtocol staProtocol = station.get(siteId);
- if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
- staProtocol.setPakMk(true);
+// write1 = siemensS7Net.Write(workNoAddress, workNo); // 宸ヤ綔鍙�
+// write2 = siemensS7Net.Write(staNoAddress, staNo); // 鐩爣绔�
+
+ write1 = siemensS7Net.Write(workNoAddress, (int) staNo); // 宸ヤ綔鍙�
+ write2 = siemensS7Net.Write(staNoAddress, (int) workNo); // 鐩爣绔�
+
+ if ((write1.IsSuccess && write2.IsSuccess)) {
+ log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋},{}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo));
+ return true;
+ }else {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", device.getId(), JSON.toJSON(array)));
+ log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", device.getId(), JSON.toJSON(array));
+ return false;
}
- OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", device.getId(), JSON.toJSON(staProtocol)));
- log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", device.getId(), JSON.toJSON(staProtocol));
- return false;
}
@Override
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/JxgtLiftThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/JxgtLiftThread.java
index c8348a4..c5b257e 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/JxgtLiftThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/JxgtLiftThread.java
@@ -127,6 +127,12 @@
liftExtend.setLock(siemensS7Net.getByteTransform().TransInt16(result1.Content, 10) == 1);
liftProtocol.setExtend(liftExtend);
+ boolean ready = true;
+ if (!liftProtocol.getModel() || liftProtocol.getRun()) {
+ ready = false;
+ }
+ liftProtocol.setReady(ready);//灏辩华鐘舵��
+
}else {
OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆憑1}璇诲彇鎻愬崌鏈虹姸鎬佷俊鎭け璐�", DateUtils.convert(new Date()), device.getId()));
@@ -212,14 +218,25 @@
array[i] = shorts.get(i);
}
- OperateResult result = siemensS7Net.Write("DB83.0", array);
+ OperateResult result = null;
+ if (command.getMode() == LiftCommandModeType.MOVE.id) {
+ //绉诲姩
+ result = siemensS7Net.Write("DB101.2", array);
+ } else if (command.getMode() == LiftCommandModeType.PALLET_INOUT.id) {
+ //鎵樼洏鍑哄叆
+ result = siemensS7Net.Write("DB101.8", array);
+ } else if (command.getMode() == LiftCommandModeType.LOCK.id || command.getMode() == LiftCommandModeType.UNLOCK.id) {
+ //鎻愬崌鏈洪攣瀹�/瑙i攣
+ result = siemensS7Net.Write("DB101.0", array);
+ }
+
if (result != null && result.IsSuccess) {
liftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", device.getId(), JSON.toJSON(command));
OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), device.getId(), JSON.toJSON(command)));
return true;
} else {
- OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戝啓鍏ユ彁鍗囨満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}],娆℃暟锛歿}", DateUtils.convert(new Date()), device.getId(), device.getIp(), device.getPort()));
+ OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戝啓鍏ユ彁鍗囨満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), device.getId(), device.getIp(), device.getPort()));
News.error("鍐欏叆鎻愬崌鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", device.getId(), device.getIp(), device.getPort());
return false;
}
@@ -310,29 +327,14 @@
@Override
public List<LiftCommand> getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
- /**
- * 浠诲姟绫诲瀷
- * 1=绉绘墭鐩橈紱鍗囬檷鏈哄皢婧愮珯鍙版墭鐩樼Щ鍒扮洰鏍囩珯鍙�
- * 2=绉诲皬杞︼紝鍗囬檷鏈虹Щ鍒扮洰鏍囧眰锛岀瓑寰�
- */
- short taskMode = 2;
- if (mode.equals(LiftCommandModeType.PALLET_INOUT)) {
- taskMode = 1;
- }
-
// 寮�濮嬩换鍔�
- short[] array = new short[4];
- //浠诲姟绫诲瀷
- array[0] = taskMode;
- //婧愮珯鍙扮紪鍙�
- array[1] = sourceLev.shortValue();
- //鐩爣绔欏彴缂栧彿
- array[2] = targetLev.shortValue();
- //浠诲姟鍙�
- array[3] = taskNo.shortValue();
+ short[] array = new short[2];
+ array[0] = targetLev.shortValue();//鐩爣灞�
+ array[1] = taskNo.shortValue();//宸ヤ綔鍙�
LiftCommand command = new LiftCommand();
command.setLiftNo(Integer.valueOf(this.device.getDeviceNo()));
+ command.setTaskNo(taskNo);
command.setBody(JSON.toJSONString(array));
command.setMode(LiftCommandModeType.MOVE.id);
command.setOriginLev(sourceLev);
@@ -350,12 +352,40 @@
@Override
public List<LiftCommand> getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode) {
- return getMoveCommand(taskNo, sourceLev, targetLev, mode);
+ // 寮�濮嬩换鍔�
+ short[] array = new short[2];
+ array[0] = originSta.shortValue();//璧峰绔�
+ array[1] = targetSta.shortValue();//鐩爣绔�
+ array[2] = taskNo.shortValue();//宸ヤ綔鍙�
+
+ LiftCommand command = new LiftCommand();
+ command.setLiftNo(Integer.valueOf(this.device.getDeviceNo()));
+ command.setTaskNo(taskNo);
+ command.setBody(JSON.toJSONString(array));
+ command.setMode(LiftCommandModeType.PALLET_INOUT.id);
+ command.setOriginLev(sourceLev);
+ command.setTargetLev(targetLev);
+
+ ArrayList<LiftCommand> list = new ArrayList<>();
+ list.add(command);
+ return list;
}
@Override
public List<LiftCommand> getLockCommand(Integer taskNo, Boolean lock) {
- return null;
+ // 寮�濮嬩换鍔�
+ short[] array = new short[2];
+ array[0] = lock ? (short) 1 : (short) 0;
+
+ LiftCommand command = new LiftCommand();
+ command.setLiftNo(Integer.valueOf(this.device.getDeviceNo()));
+ command.setTaskNo(taskNo);
+ command.setBody(JSON.toJSONString(array));
+ command.setMode(LiftCommandModeType.PALLET_INOUT.id);
+
+ ArrayList<LiftCommand> list = new ArrayList<>();
+ list.add(command);
+ return list;
}
@Override
@@ -367,7 +397,7 @@
public boolean connect() {
boolean result = false;
//-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------//
- siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, device.getIp());
+ siemensS7Net = new SiemensS7Net(SiemensPLCS.S1500, device.getIp());
OperateResult connect = siemensS7Net.ConnectServer();
if(connect.IsSuccess){
result = true;
--
Gitblit v1.9.1