From 883195f4d14f24abeb35182dd2af53a8f022a1d0 Mon Sep 17 00:00:00 2001
From: 野心家 <1051256694@qq.com>
Date: 星期二, 05 九月 2023 15:51:53 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 91 ++++++++++++++++++++++++++++++++++-----------
1 files changed, 68 insertions(+), 23 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 3998985..42f4ba1 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -45,7 +45,7 @@
add(101);add(102);add(103);add(104);
add(201);add(202);add(203);add(204);add(205);add(206);
add(207);add(208);add(209);add(210);add(211);add(212);
- add(213);add(105);
+ add(213);add(105);add(1000);
}};
/**
@@ -89,13 +89,13 @@
StaProtocol staProtocol2 = (StaProtocol)task.getData();
siemensS7Net.Write("DB108.0" + staProtocol2.getSiteId(), staProtocol2.getStaNo()==1);
break;
- //澶嶄綅娴嬭瘯淇″彿
- case 3:
- StaProtocol staProtocol = (StaProtocol)task.getData();
- siemensS7Net.Write("DB102.0" + staProtocol.getSiteId(), staProtocol.getStaNo());
- break;
- default:
- break;
+ //澶嶄綅娴嬭瘯淇″彿
+ case 3:
+ StaProtocol staProtocol = (StaProtocol) task.getData();
+ siemensS7Net.Write("DB102.0" + staProtocol.getSiteId(), staProtocol.getStaNo());
+ break;
+ default:
+ break;
}
// 蹇冭烦
// heartbeat();
@@ -206,14 +206,14 @@
Thread.sleep(200);
//娴嬭瘯鏌滅姸鎬佽幏鍙�
- OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB38.0", (short) 96);
+ OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB38.0", (short) 48);
//鍚姩绉诲簱鎸夐挳
OperateResultExOne<byte[]> result6 = siemensS7Net.Read("DB102.0", (short) 96);
//娑堥槻鎶ヨ
OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB108.0", (short) 48);
if(result3.IsSuccess) {
for(int i=0; i<48; i++){
- startSignal[i][0] = siemensS7Net.getByteTransform().TransByte(result3.Content, i*2);//娴嬭瘯鏌滅姸鎬�
+ startSignal[i][0] = siemensS7Net.getByteTransform().TransByte(result3.Content, i);//娴嬭瘯鏌滅姸鎬�
startSignal[i][1] = siemensS7Net.getByteTransform().TransBool(result4.Content, i)?1:0;//娑堥槻鐘舵��
startSignal[i][2] = siemensS7Net.getByteTransform().TransInt16(result6.Content, i*2);//鍚姩鎸夐挳鐘舵��
}
@@ -277,29 +277,74 @@
if (null == staProtocol) {
return;
}
+ int staNoSize = staNos.size();
int index = staNos.indexOf(staProtocol.getSiteId());
short[] array = new short[2];
array[0] = staProtocol.getWorkNo();
array[1] = staProtocol.getStaNo();
- OperateResult write;
- write = siemensS7Net.Write("DB100." + index*4, array);
+ //浠诲姟ID涓嬪彂娆℃暟
+ int idCount = 0;
+ boolean idFlag = false;
+ OperateResult write;
+ while(idCount < 5){
+
+ write = siemensS7Net.Write("DB100." + index*4, array); // 鍐�
+ if(write.IsSuccess){
+ Thread.sleep(200);
+ OperateResultExOne<byte[]> readId = siemensS7Net.Read("DB100." + index*4, (short) (staNoSize*2));
+ if(readId.IsSuccess){
+ if(staProtocol.getWorkNo()!=0&&staProtocol.getWorkNo()!=9999){
+ if(!staProtocol.isInEnable()&&(staProtocol.getSiteId()==201||staProtocol.getSiteId()==206)){
+ break;
+ }
+ }
+ short workNo = siemensS7Net.getByteTransform().TransInt16(readId.Content, 0);
+ if(staProtocol.getWorkNo().equals(workNo)){
+ //宸ヤ綔鍙峰啓鍏ユ垚鍔�
+ idFlag = true;
+ break;
+ } else {//杩斿洖缁撴灉鏄垚鍔熶簡锛屼絾鏄湡瀹炲�间笉鐩稿悓
+ idCount++;
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎宸ヤ綔鍙峰悗杩斿洖鎴愬姛锛屼絾鏄鍙栧伐浣滃彿鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+ slave.getId(), JSON.toJSON(staProtocol),idCount));
+ log.error("鍐欏叆杈撻�佺嚎宸ヤ綔鍙峰悗杩斿洖鎴愬姛锛屼絾鏄鍙栧伐浣滃彿鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), idCount);
+ }
+ } else {
+ idCount++;
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎宸ヤ綔鍙峰悗璇诲彇宸ヤ綔鍙峰け璐ャ�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+ slave.getId(), JSON.toJSON(staProtocol), idCount));
+ log.error("鍐欏叆杈撻�佺嚎宸ヤ綔鍙峰悗璇诲彇宸ヤ綔鍙峰け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), idCount);
+ }
+ } else {
+ idCount++;
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎宸ヤ綔鍙峰け璐ャ�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+ slave.getId(), JSON.toJSON(staProtocol),idCount));
+ log.error("鍐欏叆杈撻�佺嚎宸ヤ綔鍙峰け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), idCount);
+ }
+ Thread.sleep(200);
+ }
+ //鍐橧D灏濊瘯浜�5娆¤繕鏄け璐ヤ簡
+ if(!idFlag){
+ staProtocol = station.get(staProtocol.getSiteId());
+ if (staProtocol.getWorkNo() == 9999 && staProtocol.getStaNo() ==0) {
+ staProtocol.setPakMk(true);
+ }
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎宸ヤ綔鍙峰皾璇�5娆″け璐ャ�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
+ log.error("鍐欏叆杈撻�佺嚎宸ヤ綔鍙峰皾璇�5娆″け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+
+ //閲嶆柊娣诲姞鏁版嵁鍒颁换鍔¢槦鍒�
+ boolean result = MessageQueue.offer(SlaveType.Devp, slave.getId(), new Task(2, staProtocol));
+ read();//璇诲彇1娆¤澶囩姸鎬�
+ return;
+ }
// OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
// Thread.sleep(500);
// OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo()); // 鐩爣绔�
- if (!write.IsSuccess) {
- staProtocol = station.get(staProtocol.getSiteId());
- if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
- staProtocol.setPakMk(true);
- }
- OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
- log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
- } else {
- OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
- log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol));
- }
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂鎴愬姛 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
+ log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂鎴愬姛锛� {}", slave.getId(), JSON.toJSON(staProtocol));
}
// 鏇存柊鍏ュ嚭搴撴ā寮�
--
Gitblit v1.9.1