From fc15cd5dc3390a0a770fc5ebb951e8d754cc2538 Mon Sep 17 00:00:00 2001
From: gt-fuwuqi <3272660260@qq.com>
Date: 星期一, 04 十一月 2024 16:59:19 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 196 +++++++++++++++++++++++++++++++++---------------
1 files changed, 135 insertions(+), 61 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index f107d92..eebeca5 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -45,11 +45,22 @@
private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
private short heartBeatVal = 1;
private StaError1 staError1;
+ public static boolean is = true;
// public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{
//
// }};
public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
- add(140);add(141);
+ add(1000); add(1001); add(1002); add(1003); add(1004); add(1005); add(1006); add(1007); add(1008); add(1009); add(1010);
+ add(1011); add(1012); add(1013); add(1014); add(1015); add(1016); add(1017); add(1018); add(1019); add(1020); add(1021);
+ add(1022); add(1023); add(1024); add(1025); add(1026); add(1027); add(1028); add(1029); add(1030);
+ add(2000); add(2001); add(2002); add(2003); add(2004);add(2005); add(2006); add(2007);
+// add(200);add(201);add(202);
+ }};
+ public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
+ add(1040);add(1041);add(1042);add(1043);add(1044);add(1045);add(1046);add(1047);
+ add(2010);add(2011);add(2012);add(2013);add(2014);add(2015);add(2016);add(2017);
+ add(3010);add(3011);add(3012);add(3013);add(3014);add(3015);add(3016);add(3017);
+
// add(200);add(201);add(202);
}};
@@ -91,6 +102,8 @@
switch (slave.getId()) {
case 1:
return staNos1;
+ case 2:
+ return staNos2;
default:
throw new CoolException("鏈嶅姟鍣ㄥ紓甯�");
}
@@ -115,7 +128,7 @@
// 鍐欐暟鎹� ID+鐩爣绔�
case 2:
writeD((StaProtocol)task.getData(),1);
- log.error("杈撻�佺嚎涓嬪彂鍛戒护锛�"+((StaProtocol) task.getData()).getWorkNo()+","+((StaProtocol) task.getData()).getStaNo());
+// log.error("杈撻�佺嚎涓嬪彂鍛戒护锛�"+((StaProtocol) task.getData()).getWorkNo()+","+((StaProtocol) task.getData()).getStaNo());
break;
default:
break;
@@ -135,31 +148,43 @@
private void initSite() {
count ++;
ArrayList<Integer> staNos = getStaNo();
+ if(count > 50) {
+ // 绔欑偣缂栧彿
+ for (Integer siteId : staNos) {
+ StaProtocol staProtocol = station.get(siteId);
+ if (null == staProtocol) {
+ staProtocol = new StaProtocol();
+ staProtocol.setSiteId(siteId);
+ station.put(siteId, staProtocol);
+ }
+ staProtocol.setWorkNo(0); // 宸ヤ綔鍙�
+ staProtocol.setStaNo((short) 0); // 鐩爣绔�
+ staProtocol.setState((short) 0); // 妯″紡鐘舵�� 0鍋滄満锛�=1鎵嬪姩锛�=2鑷姩锛�=3鏁呴殰
+ staProtocol.setWorkIo((short) 0);
+ staProtocol.setRequestIo((short) 0);
+ staProtocol.setTrayIo((short) 0);
+ staProtocol.setLocIo((short) 0);
+ staProtocol.setBarcode("-");
+ staProtocol.setWeightIo(0.0);
+ staProtocol.setMode((short) 0);
- // 绔欑偣缂栧彿
- for (Integer siteId : staNos) {
- StaProtocol staProtocol = station.get(siteId);
- if (null == staProtocol) {
- staProtocol = new StaProtocol();
- staProtocol.setSiteId(siteId);
- station.put(siteId, staProtocol);
+ if (!staProtocol.isPakMk() && staProtocol.workType == DevpWorkType.IDLE) {
+ staProtocol.setPakMk(true);
+ }
}
- staProtocol.setWorkNo(0); // 宸ヤ綔鍙�
- staProtocol.setStaNo((short) 0); // 鐩爣绔�
- staProtocol.setState((short) 0); // 妯″紡鐘舵�� 0鍋滄満锛�=1鎵嬪姩锛�=2鑷姩锛�=3鏁呴殰
- staProtocol.setWorkIo((short) 0);
- staProtocol.setRequestIo((short) 0);
- staProtocol.setTrayIo((short) 0);
- staProtocol.setLocIo((short) 0);
- staProtocol.setBarcode("-");
- staProtocol.setWeightIo(0.0);
- staProtocol.setMode((short) 0);
-
- if (!staProtocol.isPakMk() && staProtocol.workType == DevpWorkType.IDLE) {
- staProtocol.setPakMk(true);
- }
+ count = 0;
}
- count = 0;
+
+
+ }
+
+ public void initSta(){
+ if (is){
+ for (int i = 1000; i <= 1300; i++) {
+ staNos1.add(i);
+ }
+ is = false;
+ }
}
@@ -198,9 +223,9 @@
StaProtocol staProtocol = station.get(siteId);
if (null == staProtocol) {
staProtocol = new StaProtocol();
- staProtocol.setSiteId(siteId);
station.put(siteId, staProtocol);
}
+ staProtocol.setSiteId(siteId);
staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, i*66 + 8)); // 宸ヤ綔鍙�
staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*66 + 12)); // 鐩爣绔�
staProtocol.setState(siemensS7Net.getByteTransform().TransInt16(result.Content, i*66 + 14)); // 妯″紡鐘舵�� 0鍋滄満锛�=1鎵嬪姩锛�=2鑷姩锛�=3鏁呴殰
@@ -212,7 +237,7 @@
// staProtocol.setWeightIo(siemensS7Net.getByteTransform().TransDouble(result.Content,i*66 + 40));
staProtocol.setMode(siemensS7Net.getByteTransform().TransInt16(result.Content, i*66 + 44));
- if (!staProtocol.isPakMk() && staProtocol.workType == DevpWorkType.IDLE) {
+ if (!staProtocol.isPakMk() && (staProtocol.workType == DevpWorkType.IDLE || staProtocol.isPakReset())) {
staProtocol.setPakMk(true);
}
}
@@ -285,53 +310,102 @@
}
private void writeD(StaProtocol staProtocol,Integer count)throws InterruptedException{
+
+ boolean reset = true;
if (null == staProtocol) {
return;
+ }
+ staProtocol = staProtocol.clone();
+ Integer oriWrkNo = staProtocol.getWorkNo();
+ short oriStaNo = staProtocol.getStaNo();
+ ArrayList<Integer> staNos = getStaNo();
+ int index = staNos.indexOf(staProtocol.getSiteId());
+
+
+ if(writeWrk(staProtocol,1)){
+
+ int whileCount = 0;
+ OperateResult write3 = siemensS7Net.Write("DB100." + (index*66+6), (short) 1);
+ if (write3.IsSuccess){
+ News.info("杈撻�佺嚎鍛戒护涓嬪彂[id:"+slave.getId()+"] >>>>>"+"["+1+"]");
+ Thread.sleep(100);
+ do {
+ OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100."+(index*66 +6), (short) 2);
+ short mk = siemensS7Net.getByteTransform().TransInt16(result2.Content, 0);
+ if (mk == 2){
+ OperateResult write5 = siemensS7Net.Write("DB100." + index*66, 0); // 宸ヤ綔鍙�
+ Thread.sleep(100);
+ OperateResult write6 = siemensS7Net.Write("DB100." + (index*66+4), (short) 0); // 鐩爣绔�
+ Thread.sleep(100);
+ OperateResult write4 = siemensS7Net.Write("DB100." + (index*66+6), (short) 0);
+ reset = false;
+ if (write4.IsSuccess && write5.IsSuccess && write6.IsSuccess){
+ News.info("杈撻�佺嚎鍛戒护涓嬪彂[id:"+slave.getId()+"] >>>>>"+"["+"0,0,0"+"]");
+ OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100."+(index*66), (short) 8);
+ Integer wrkNo1 = siemensS7Net.getByteTransform().TransInt32(result1.Content, 0);
+ short staNo1 = siemensS7Net.getByteTransform().TransInt16(result1.Content, 4);
+ short mk1 = siemensS7Net.getByteTransform().TransInt16(result1.Content, 6);
+ if (wrkNo1 != 0 || staNo1 !=0 || mk1 !=0){
+ whileCount++;
+ News.info("澶嶄綅澶辫触,杈撻�佺嚎鍛戒护涓嬪彂[id:"+slave.getId()+"] >>>>>"+"["+"0,0,0"+"]");
+ }else {
+ News.info("杈撻�佺嚎澶嶄綅瀹屾垚");
+ break;
+ }
+
+ }
+ }else if (reset && mk == 0 ){
+ OperateResult write7 = siemensS7Net.Write("DB100." + (index*66+6), (short) 1);
+ News.info("鍥炶1澶辫触锛岃緭閫佺嚎鍛戒护涓嬪彂[id:"+slave.getId()+"] >>>>>"+"["+"1"+"]");
+ Thread.sleep(100);
+ whileCount++;
+ }else {
+ whileCount++;
+ }
+ }while (whileCount <10);
+ }
+ }else {
+ log.error("杈撻�佸懡浠や笅鍙戝け璐�"+JSON.toJSONString(staProtocol));
+ }
+
+
+
+ }
+
+ private boolean writeWrk(StaProtocol staProtocol,Integer count)throws InterruptedException {
+
+ if (null == staProtocol) {
+ return false;
}
Integer oriWrkNo = staProtocol.getWorkNo();
short oriStaNo = staProtocol.getStaNo();
ArrayList<Integer> staNos = getStaNo();
int index = staNos.indexOf(staProtocol.getSiteId());
-
- OperateResult write1 = siemensS7Net.Write("DB100." + index*66, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
- Thread.sleep(200);
- OperateResult write2 = siemensS7Net.Write("DB100." + (index*66+4), staProtocol.getStaNo()); // 鐩爣绔�
- if(write1.IsSuccess && write2.IsSuccess){
- OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100."+(index*66), (short) 6);
- Integer wrkNo = siemensS7Net.getByteTransform().TransInt32(result.Content, 0);
- short staNo = siemensS7Net.getByteTransform().TransInt16(result.Content, 4);
- if (!oriWrkNo.equals(wrkNo) || oriStaNo != staNo){
- if (count >= 5){
- log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), count);
- return;
- }
- count++;
- writeD(staProtocol,count);
- }
- int whileCount = 0;
- OperateResult write3 = siemensS7Net.Write("DB100." + (index*66+6), (short) 1);
- if (write3.IsSuccess){
- Thread.sleep(200);
- do {
- OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100."+(index*66 +6), (short) 2);
- short mk = siemensS7Net.getByteTransform().TransInt16(result2.Content, 0);
- if (mk == 2){
- OperateResult write4 = siemensS7Net.Write("DB100." + (index*66+6), 0);
- if (write4.IsSuccess){
- 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));
- break;
- }
- }else {
- whileCount++;
+ do {
+ log.info("杈撻�侀�掑綊娆℃暟:" + count);
+ OperateResult write1 = siemensS7Net.Write("DB100." + index * 66, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
+ Thread.sleep(100);
+ OperateResult write2 = siemensS7Net.Write("DB100." + (index * 66 + 4), staProtocol.getStaNo()); // 鐩爣绔�
+ if (write1.IsSuccess && write2.IsSuccess) {
+ News.info("杈撻�佺嚎鍛戒护涓嬪彂[id:" + slave.getId() + "] >>>>>" + "[" + staProtocol.getWorkNo() + "," + staProtocol.getStaNo() + "]");
+ OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100." + (index * 66), (short) 6);
+ Integer wrkNo = siemensS7Net.getByteTransform().TransInt32(result.Content, 0);
+ short staNo = siemensS7Net.getByteTransform().TransInt16(result.Content, 4);
+ if (!oriWrkNo.equals(wrkNo) || oriStaNo != staNo) {
+ if (count >= 5) {
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), count);
+ return false;
}
- }while (whileCount <5);
+ count++;
+ }else {
+ return true;
+ }
}
- }
+ }while (count <=5);
-
+ return true;
}
// 鏇存柊鍏ュ嚭搴撴ā寮�
--
Gitblit v1.9.1