From 96437322dc7ebdf4bdd5dbf6723f0cfdbbcafa9e Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期三, 11 三月 2026 15:21:47 +0800
Subject: [PATCH] 成品灌装完成后采集plc反馈的是否贴标信息随工作任务存入数据库中
---
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 150 +++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 135 insertions(+), 15 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index a6d3c39..6ee8453 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,22 +250,29 @@
// 璇荤綈瑁呯嚎鍙嶉淇℃伅
if (slave.getId() > 3) {
// log.info("璇诲彇{}鍙风綈瑁呯嚎plc淇℃伅鎴愬姛",slave.getId());
- OperateResultExOne<byte[]> read = siemensS7Net.Read("DB101.0", (short) 60);
+ 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().TransSingle(read.Content, 4); // 200L妗�1鍑�閲�
double weight208l2 = siemensS7Net.getByteTransform().TransSingle(read.Content, 8); // 200L妗�2鍑�閲�
@@ -253,6 +286,7 @@
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;
}
@@ -338,6 +372,35 @@
}
}
+ // 璇�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);
+ }
+ }
+
// 璇荤┖妗朵俊鎭弽棣�
if (slave.getId() == 1) {
OperateResultExOne<byte[]> emptyBucketsResult = siemensS7Net.Read("DB101.1320", (short) (staNosErrList1.size() * 6));
@@ -378,6 +441,19 @@
staProtocol.setRightErr(status[4]);
staProtocol.setWeightErr(status[5]);
staProtocol.setBarcodeErr(status[6]);
+ }
+ }
+
+ // 璇绘槸鍚﹁创鏍�
+ if(slave.getId() == 2) {
+ ArrayList<Integer> staNosErrList2 = getStaNosErrList();
+ OperateResultExOne<byte[]> resultErr3 = siemensS7Net.Read("DB101.838", (short) 1);
+ if (resultErr3.IsSuccess){
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr3.Content, 0, 1);
+ for (int i = 0;i<staNosErrList2.size();i++){
+ StaProtocol staProtocol = station.get(staNosErrList2.get(i));
+ staProtocol.setLabeling(status[i]); // 鏄惁璐存爣 false 璐存爣锛宼rue 涓嶈创鏍�
+ }
}
}
@@ -453,6 +529,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();
}
/**
@@ -504,15 +581,17 @@
do {
write = siemensS7Net.Write("DB100.0", common);
Thread.sleep(200);
- OperateResultExOne<byte[]> read = siemensS7Net.Read("DB100.4", (short) 2);
+ OperateResultExOne<byte[]> read = siemensS7Net.Read("DB100.0", (short) 6);
if(write.IsSuccess && read.IsSuccess){
- short i = siemensS7Net.getByteTransform().TransInt16(read.Content, 0);
- if ( i != staProtocol.getWorkNo().shortValue()) {
+ 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缂栧彿={}锛屽啓鍏ユ鏁�={}",staProtocol.getWorkNo().shortValue(), i, slave.getId(), writeCount);
+ log.error("缁欑綈瑁呯嚎鍐欏叆妗跺瀷淇℃伅鎴愬姛锛屼絾鍥炶澶辫触锛氬啓鍏ヤ换鍔″彿锛歿},鍥炶浠诲姟鍙凤細{}锛岃緭閫佺嚎plc缂栧彿={}锛屽啓鍏ユ鏁�={}", Arrays.toString(common), bucketType +"-" + bucketCount + "-" + workNo, slave.getId(), writeCount);
continue;
}
- log.info("缁欑綈瑁呯嚎鍐欏叆妗跺瀷淇℃伅鎴愬姛锛屽洖璇绘垚鍔燂細浠诲姟鍙凤細{},鍥炶浠诲姟鍙凤細{}锛岃緭閫佺嚎plc缂栧彿={}锛屽啓鍏ユ鏁�={}",staProtocol.getWorkNo().shortValue(), i, slave.getId(), writeCount);
+ log.info("缁欑綈瑁呯嚎鍐欏叆妗跺瀷淇℃伅鎴愬姛锛屽洖璇绘垚鍔燂細浠诲姟鍙凤細{},鍥炶浠诲姟鍙凤細{}锛岃緭閫佺嚎plc缂栧彿={}锛屽啓鍏ユ鏁�={}",staProtocol.getWorkNo().shortValue(), Arrays.toString(common), slave.getId(), writeCount);
break;
}
else {
@@ -572,6 +651,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