From cb2e9ba3d787767f4d7593ed53124e1135a391d5 Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期日, 14 九月 2025 18:24:21 +0800
Subject: [PATCH] 站点转移功能入出罐装线异常修复
---
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 150 ++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 133 insertions(+), 17 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 82682c6..2bc376c 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -5,6 +5,7 @@
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
@@ -18,6 +19,8 @@
import com.zy.core.model.protocol.StaProtocol;
import com.zy.entity.BasDevp;
import com.zy.service.BasDevpService;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
import com.zy.utils.News;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@@ -63,7 +66,7 @@
}};
public static final ArrayList<Integer> rgvSiteBackWrkNo2= new ArrayList<Integer>() {{
- add(1044);
+ add(1044);add(1090);
}};
public static final ArrayList<Integer> rgvSiteBackWrkNo3= new ArrayList<Integer>() {{
@@ -156,6 +159,10 @@
case 5:
writeGzxkc((StaProtocol)task.getData());
break;
+ // 缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲�
+ case 6:
+ writeGzsl((StaProtocol)task.getData());
+ break;
default:
break;
}
@@ -194,6 +201,25 @@
staProtocol.setPakMk(true);
}
}
+
+ // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+ try {
+ List<BasDevp> basDevps = new ArrayList<>();
+ for (Integer siteId2 : staNos) {
+ StaProtocol staProtocol2 = station.get(siteId2);
+ basDevps.add(staProtocol2.toSqlModel());
+ }
+
+ BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+ if(basDevps.size() > 0) {
+ if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
+ throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+ }
+ }
+
+ } catch (Exception e){
+
+ }
}
@Override
@@ -224,34 +250,43 @@
// 璇荤綈瑁呯嚎鍙嶉淇℃伅
if (slave.getId() > 3) {
// log.info("璇诲彇{}鍙风綈瑁呯嚎plc淇℃伅鎴愬姛",slave.getId());
- OperateResultExOne<byte[]> read = siemensS7Net.Read("DB101.0", (short) 58);
+ OperateResultExOne<byte[]> read = siemensS7Net.Read("DB101.0", (short) 64);
if (read.IsSuccess) {
// 15绉掓墦鍗颁竴涓嬫棩蹇�
- if (System.currentTimeMillis() - lastLogTime >= 15000) {
- OperateResultExOne<byte[]> readKc = siemensS7Net.Read("DB100.6", (short) 2);
- if(readKc.IsSuccess){
- short i = siemensS7Net.getByteTransform().TransInt16(readKc.Content, 0);
- log.info("璇粄}鍙风綈瑁呯嚎鍙嚭淇″彿鎴愬姛锛屽�硷細{}", slave.getId() -3, i);
- }
- lastLogTime = System.currentTimeMillis();
- }
+// if (System.currentTimeMillis() - lastLogTime >= 30000) {
+// OperateResultExOne<byte[]> readKc = siemensS7Net.Read("DB100.6", (short) 4);
+// if(readKc.IsSuccess){
+// short i = siemensS7Net.getByteTransform().TransInt16(readKc.Content, 0);
+// short wantBucketCount = siemensS7Net.getByteTransform().TransInt16(readKc.Content, 2);
+// log.info("璇粄}鍙风綈瑁呯嚎鍙嚭淇″彿鎴愬姛锛屽�硷細{}锛屽墿浣欒妗舵暟閲忥細{}", slave.getId() -3, i, wantBucketCount);
+// }
+// lastLogTime = System.currentTimeMillis();
+// }
// 鎴愬搧淇℃伅鍙嶉鍒扮綈瑁呯嚎鍑哄彛绔欑偣
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
StaProtocol staProtocol = devpThread.getStation().get(gzxResultSite.get(slave.getId()-4));
if (staProtocol != null) {
staProtocol.setWantBucketFlag(siemensS7Net.getByteTransform().TransInt16(read.Content, 0));// 缃愯绾胯妗跺瀷淇″彿
+ OperateResultExOne<byte[]> read2 = siemensS7Net.Read("DB100.8", (short) 2); // 缃愯绾跨綈瑁呮暟閲忥紙鎷栵級
+ if(read2.IsSuccess){
+ staProtocol.setWantBucketCount(siemensS7Net.getByteTransform().TransInt16(read2.Content, 0));
+ } else {
+ log.error("璇粄}鍙风綈瑁呯嚎瑕佹嫋鏁伴噺澶辫触", slave.getId() -3);
+ }
staProtocol.setWrkNo(siemensS7Net.getByteTransform().TransInt16(read.Content, 2));
- double weight208l1 = siemensS7Net.getByteTransform().TransInt32(read.Content, 4); // 200L妗�1鍑�閲�
- double weight208l2 = siemensS7Net.getByteTransform().TransInt32(read.Content, 8); // 200L妗�2鍑�閲�
- double weight208l3 = siemensS7Net.getByteTransform().TransInt32(read.Content, 12); // 200L妗�3鍑�閲�
- double weight208l4 = siemensS7Net.getByteTransform().TransInt32(read.Content, 16); // 200L妗�4鍑�閲�
- double weight1T = siemensS7Net.getByteTransform().TransInt32(read.Content, 20); // 1T妗跺噣閲�
+ double weight208l1 = siemensS7Net.getByteTransform().TransSingle(read.Content, 4); // 200L妗�1鍑�閲�
+ double weight208l2 = siemensS7Net.getByteTransform().TransSingle(read.Content, 8); // 200L妗�2鍑�閲�
+ double weight208l3 = siemensS7Net.getByteTransform().TransSingle(read.Content, 12); // 200L妗�3鍑�閲�
+ double weight208l4 = siemensS7Net.getByteTransform().TransSingle(read.Content, 16); // 200L妗�4鍑�閲�
+ double weight1T = siemensS7Net.getByteTransform().TransSingle(read.Content, 20); // 1T妗跺噣閲�
// log.info("璇诲彇宸ョ綈瑁呯嚎鍑�閲� 200l妗�1:{},200l妗�2:{},200l妗�3:{},200l妗�4:{},1t妗�:{}",weight208l1,weight208l2,weight208l3,weight208l4,weight1T);
staProtocol.setWeight(weight208l1 + weight208l2 + weight208l3 + weight208l4 + weight1T);
- staProtocol.setGrossWeight(siemensS7Net.getByteTransform().TransInt32(read.Content, 24));
+ staProtocol.setGrossWeight(siemensS7Net.getByteTransform().TransSingle(read.Content, 24));
staProtocol.setMatnr(siemensS7Net.getByteTransform().TransString(read.Content, 28,12,"UTF-8"));
staProtocol.setBatch(siemensS7Net.getByteTransform().TransString(read.Content, 40,10,"UTF-8"));
staProtocol.setManuDate(siemensS7Net.getByteTransform().TransString(read.Content, 50,8,"UTF-8"));
+ staProtocol.setReinspection(siemensS7Net.getByteTransform().TransInt16(read.Content, 58) == 1);
+ staProtocol.setCannedVolume(siemensS7Net.getByteTransform().TransSingle(read.Content, 60));
}
return;
}
@@ -334,6 +369,35 @@
barcodeThread.setBarcode(barcode);
}
}
+ }
+ }
+
+ // 璇�1鍙疯緭閫佺嚎鍑哄叆搴撴ā寮�
+ if (slave.getId() == 1) {
+ OperateResultExOne<byte[]> inOrOutBoundModeResult = siemensS7Net.Read("DB101.1480", (short) 2);
+ if (inOrOutBoundModeResult.IsSuccess) {
+ // 鍑哄叆搴撴ā寮�
+ int inOrOutMode = siemensS7Net.getByteTransform().TransInt16(inOrOutBoundModeResult.Content, 0);
+ // 鏇存柊鍑哄叆搴撴ā寮忓��
+ ConfigService configService = SpringUtils.getBean(ConfigService.class);
+ Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "inOrOutBoundMode"));
+ if (config != null) {
+ config.setValue(String.valueOf(inOrOutMode));
+ configService.updateById(config);
+ }
+ StaProtocol staProtocol1016 = station.get(1016);
+ StaProtocol staProtocol1043 = station.get(1043);
+ StaProtocol staProtocol1019 = station.get(1019);
+ if(staProtocol1016 != null) {
+ staProtocol1016.setInOrOutMode(inOrOutMode);
+ }
+ if(staProtocol1043 != null) {
+ staProtocol1043.setInOrOutMode(inOrOutMode);
+ }
+ if(staProtocol1019 != null) {
+ staProtocol1019.setInOrOutMode(inOrOutMode);
+ }
+// log.info("璇诲彇鍒板嚭鍏ュ簱妯″紡鍊间负锛歿}",inOrOutMode);
}
}
@@ -452,6 +516,7 @@
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
News.info("SiemensDevp"+" - 5"+" - 杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol));
}
+ read();
}
/**
@@ -503,7 +568,17 @@
do {
write = siemensS7Net.Write("DB100.0", common);
Thread.sleep(200);
- if(write.IsSuccess){
+ OperateResultExOne<byte[]> read = siemensS7Net.Read("DB100.0", (short) 6);
+ if(write.IsSuccess && read.IsSuccess){
+ short bucketType = siemensS7Net.getByteTransform().TransInt16(read.Content, 0);
+ short bucketCount = siemensS7Net.getByteTransform().TransInt16(read.Content, 2);
+ short workNo = siemensS7Net.getByteTransform().TransInt16(read.Content, 4);
+ if ( workNo != common[2] || bucketCount != common[1] || bucketType != common[0]) {
+ writeCount++;
+ log.error("缁欑綈瑁呯嚎鍐欏叆妗跺瀷淇℃伅鎴愬姛锛屼絾鍥炶澶辫触锛氬啓鍏ヤ换鍔″彿锛歿},鍥炶浠诲姟鍙凤細{}锛岃緭閫佺嚎plc缂栧彿={}锛屽啓鍏ユ鏁�={}", Arrays.toString(common), bucketType +"-" + bucketCount + "-" + workNo, slave.getId(), writeCount);
+ continue;
+ }
+ log.info("缁欑綈瑁呯嚎鍐欏叆妗跺瀷淇℃伅鎴愬姛锛屽洖璇绘垚鍔燂細浠诲姟鍙凤細{},鍥炶浠诲姟鍙凤細{}锛岃緭閫佺嚎plc缂栧彿={}锛屽啓鍏ユ鏁�={}",staProtocol.getWorkNo().shortValue(), Arrays.toString(common), slave.getId(), writeCount);
break;
}
else {
@@ -563,6 +638,47 @@
}
/**
+ * 缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲�
+ */
+ private void writeGzsl(StaProtocol staProtocol) throws InterruptedException {
+ if (null == staProtocol) {
+ return;
+ }
+ short[] common = new short[1];
+ common[0] = (short) staProtocol.getWantBucketCount();
+
+ OperateResult write;
+ //浠诲姟涓嬪彂娆℃暟
+ int writeCount = 0;
+ do {
+ write = siemensS7Net.Write("DB100.8", common);
+ Thread.sleep(200);
+ OperateResultExOne<byte[]> read = siemensS7Net.Read("DB100.8", (short) 2);
+ if(write.IsSuccess && read.IsSuccess){
+ short i = siemensS7Net.getByteTransform().TransInt16(read.Content, 0);
+ if ( i != common[0]) {
+ writeCount++;
+ log.error("缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲忔垚鍔燂紝浣嗗洖璇诲け璐ワ細璇诲彇鍊硷細{},杈撻�佺嚎plc缂栧彿={}锛屽啓鍏ユ鏁�={}", i, slave.getId(), writeCount);
+ continue;
+ }
+ break;
+ }
+ else {
+ writeCount++;
+ log.error("缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲忥細{}澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛屽啓鍏ユ鏁�={}", common[0], slave.getId(), writeCount);
+ }
+ }while (writeCount<5);
+
+ if (!write.IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戠粰缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), staProtocol.getWantBucketCount()));
+ News.error("缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), staProtocol.getWantBucketCount());
+ } else {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲忓懡浠や笅鍙戞垚鍔� [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), staProtocol.getWantBucketCount()));
+ News.info("缁欑綈瑁呯嚎鍐欑綈瑁呮暟閲忓彿鍛戒护涓嬪彂鎴愬姛 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), staProtocol.getWantBucketCount());
+ }
+ }
+
+ /**
* 蹇冭烦
*/
private void heartbeat(){
--
Gitblit v1.9.1