From 2b2285cce415718135b6b8dd923a772098a04e96 Mon Sep 17 00:00:00 2001
From: pjb <123456>
Date: 星期六, 02 八月 2025 14:05:20 +0800
Subject: [PATCH] 1
---
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 423 ++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 371 insertions(+), 52 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 506993f..3160107 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -45,26 +45,51 @@
public boolean[] startSignal = new boolean[8];
private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
private short heartBeatVal = 1;
-// public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{
+ // public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{
//
// }};
public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
- add(100);add(101);add(102);add(103);add(104);
- add(200);add(201);add(202);add(203);add(204);
+ add(100);
+ add(101);
+ add(102);
+ add(103);
+ add(104);
+ add(200);
+ add(201);
+ add(202);
+ add(203);
+ add(204);
}};
public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
- add(300);add(301);add(302);add(303);add(304);
+ add(300);
+ add(301);
+ add(302);
+ add(303);
+ add(304);
+ }};
+ public static final ArrayList<Integer> staNos3 = new ArrayList<Integer>() {{
+ add(311);
+ add(312);
+ add(313);
+ add(314);
+ add(315);
}};
+
public static final ArrayList<Integer> barcode1 = new ArrayList<Integer>() {{
- add(1); add(2);
+ add(1);
+ add(2);
}};
public static final ArrayList<Integer> barcode2 = new ArrayList<Integer>() {{
- add(3);
+ add(3);
}};
- private Integer count=0;
+ public static final ArrayList<Integer> barcode3 = new ArrayList<Integer>() {{
+ add(4);
+ }};
+
+ private Integer count = 0;
/**
* 鍏ュ嚭搴撴ā寮�
@@ -75,7 +100,7 @@
* 4.鍑哄簱妯″紡
*/
public IoModeType ioModeOf2F = IoModeType.NONE;
-// public IoModeType ioMode = IoModeType.NONE;
+ // public IoModeType ioMode = IoModeType.NONE;
public IoModeType ioModeOf4F = IoModeType.NONE;
// public IoModeType ioMode = IoModeType.NONE;
@@ -109,10 +134,11 @@
// 璇绘暟鎹�
case 1:
read();
+ readsanqi();
break;
// 鍐欐暟鎹� ID+鐩爣绔�
case 2:
- write((StaProtocol)task.getData());
+ write((StaProtocol) task.getData());
break;
default:
break;
@@ -126,13 +152,14 @@
}
}
+
/**
* 鍒濆鍖栫珯鐐圭姸鎬�
*/
private void initSite() {
- count ++;
+ count++;
ArrayList<Integer> staNos = getStaNo();
- if(count > 77) {
+ if (count > 77) {
// 绔欑偣缂栧彿
for (Integer siteId : staNos) {
StaProtocol staProtocol = station.get(siteId);
@@ -175,13 +202,13 @@
siemensS7Net.setRack(slave.getRack().byteValue());
siemensS7Net.setSlot(slave.getSlot().byteValue());
OperateResult connect = siemensS7Net.ConnectServer();
- if(connect.IsSuccess){
+ if (connect.IsSuccess) {
result = true;
- OutputQueue.DEVP.offer(MessageFormat.format( "銆恵0}銆戣緭閫佺嚎plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
- News.info("SiemensDevp"+" - 1"+" - 杈撻�佺嚎plc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣緭閫佺嚎plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+ News.info("SiemensDevp" + " - 1" + " - 杈撻�佺嚎plc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
} else {
- OutputQueue.DEVP.offer(MessageFormat.format( "銆恵0}銆戣緭閫佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
- News.error("SiemensDevp"+" - 2"+" - 杈撻�佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣緭閫佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+ News.error("SiemensDevp" + " - 2" + " - 杈撻�佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
}
siemensS7Net.ConnectClose();
initSite();
@@ -208,7 +235,7 @@
}
staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4)); // 宸ヤ綔鍙�
staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4 + 2)); // 鐩爣绔�
- boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, 60+i, 1);
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, 60 + i, 1);
staProtocol.setAutoing(status[0]); // 鑷姩
staProtocol.setLoading(status[1]); // 鏈夌墿
staProtocol.setInEnable(status[2]); // 鍙叆
@@ -224,7 +251,7 @@
}
} else {
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
- log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
+// log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
}
//鏉$爜鎵弿鍣�
@@ -271,14 +298,15 @@
}
} else {
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
- log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
+// log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
}
+
//澶栧舰妫�娴�
OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.42", (short) 8);
if (resultErr.IsSuccess) {
boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, 0, 1);
- StaProtocol staProtocol = station.get(303);
+ StaProtocol staProtocol = station.get(304);
staProtocol.setFrontErr(status[0]);
staProtocol.setBackErr(status[1]);
staProtocol.setHighErr(status[2]);
@@ -287,6 +315,7 @@
staProtocol.setWeightErr(status[5]);
staProtocol.setBarcodeErr(status[6]);
}
+
//鏉$爜鎵弿鍣�
Thread.sleep(200);
@@ -306,15 +335,130 @@
}
// 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
try {
- List<BasDevp> basDevps = new ArrayList<>();
- for (Integer siteId : staNos) {
+ if (!station.isEmpty()) {
+ List<BasDevp> basDevps = new ArrayList<>();
+ for (Integer siteId : staNos) {
+ StaProtocol staProtocol = station.get(siteId);
+ basDevps.add(staProtocol.toSqlModel());
+ }
+
+ BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+ if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
+ throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+ }
+ }
+
+
+ /**
+ * 璇诲彇鐘舵�� ====> 鏁村潡plc
+ */
+ private void readsanqi() throws InterruptedException {
+ ArrayList<Integer> staNos = staNos3;
+ int staNoSize = staNos3.size();
+
+ //
+ OperateResultExOne<byte[]> resultsanqi = siemensS7Net.Read("DB101.120", (short) (staNoSize * 8));
+ if (resultsanqi.IsSuccess) {
+ for (int i = 0; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
StaProtocol staProtocol = station.get(siteId);
- basDevps.add(staProtocol.toSqlModel());
+ if (null == staProtocol) {
+ staProtocol = new StaProtocol();
+ staProtocol.setSiteId(siteId);
+ station.put(siteId, staProtocol);
+ }
+ staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(resultsanqi.Content, i * 8)); // 宸ヤ綔鍙�
+ staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(resultsanqi.Content, i * 8 + 4)); // 鐩爣绔�
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultsanqi.Content, i * 8 + 6, 1);
+ staProtocol.setAutoing(status[0]); // 鑷姩
+ staProtocol.setLoading(status[1]); // 鏈夌墿
+ staProtocol.setInEnable(status[2]); // 鍙叆
+ staProtocol.setOutEnable(status[3]);// 鍙嚭
+ staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿
+ staProtocol.setFullPlt(status[5]); // 婊℃墭鐩�
+ staProtocol.setHigh(status[6]); // 楂樺簱浣�
+ staProtocol.setLow(status[7]); // 浣庡簱浣�
+// staProtocol.setWeight(status[8]); //鏄惁涓洪噸璐�
+ if (!staProtocol.isPakMk() && staProtocol.isLoading()) {
+ staProtocol.setPakMk(true);
+ }
+ }
+ } else {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+// log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
+ }
+
+
+ //澶栧舰妫�娴� 涓夋湡
+ OperateResultExOne<byte[]> resultErrsanqi = siemensS7Net.Read("DB101.160", (short) (staNoSize * 8));
+ if (resultErrsanqi.IsSuccess) {
+ for (int i = 0; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErrsanqi.Content, i * 4, 1);
+ StaProtocol staProtocol = station.get(siteId);
+ staProtocol.setFrontErr(status[0]);
+ staProtocol.setBackErr(status[1]);
+ staProtocol.setHighErr(status[2]);
+ staProtocol.setLeftErr(status[3]);
+ staProtocol.setRightErr(status[4]);
+ staProtocol.setWeightErr(status[5]);
+ staProtocol.setBarcodeErr(status[6]);
+ }
+ }
+
+
+ //鏉$爜鎵弿鍣� 涓夋湡
+ Thread.sleep(200);
+ ArrayList<Integer> barcodeListsanqi = barcode3;
+ OperateResultExOne<byte[]> result2siqi = siemensS7Net.Read("DB101.180", (short) (barcodeListsanqi.size() * 8));
+ if (result2siqi.IsSuccess) {
+ for (int i = 0; i < barcodeListsanqi.size(); i++) {
+ Integer barcodeId = barcodeListsanqi.get(i);
+ String barcode = siemensS7Net.getByteTransform().TransString(result2siqi.Content, i * 8, 8, "UTF-8");
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
+ if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+ barcodeThread.setBarcode(barcode);
+ }
+ }
+ }
+
+ //鏁呴殰 涓夋湡
+ OperateResultExOne<byte[]> resultErrs = siemensS7Net.Read("DB101.220", (short) (staNoSize * 4));
+ if (resultErrs.IsSuccess) {
+ for (int i = 0; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErrs.Content, i * 4, 1);
+ StaProtocol staProtocol = station.get(siteId);
+ staProtocol.setBreakerErr(status[0]);
+ staProtocol.setInfraredErr(status[1]);
+ staProtocol.setOutTimeErr(status[2]);
+ staProtocol.setSeizeSeatErr(status[3]);
+ staProtocol.setWrkYgoodsN(status[4]);
+ staProtocol.setInverterErr(status[5]);
+ staProtocol.setContactErr(status[6]);
+ staProtocol.setUpcontactErr(status[7]);
+
}
- BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
- if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
- throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+ }
+ // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+ try {
+ if (!station.isEmpty()) {
+ List<BasDevp> basDevps = new ArrayList<>();
+ for (Integer siteId : staNos) {
+ StaProtocol staProtocol = station.get(siteId);
+ basDevps.add(staProtocol.toSqlModel());
+ }
+
+ BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+ if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
+ throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+ }
}
} catch (Exception e) {
e.printStackTrace();
@@ -332,38 +476,213 @@
ArrayList<Integer> staNos = getStaNo();
OperateResult write = null;
OperateResult write1 = null;
- // 鍐�2鍙疯緭閫佺嚎
- if (slave.getId() == 1) {
- int index = staNos.indexOf(staProtocol.getSiteId());
- write = siemensS7Net.Write("DB100." + index * 4, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
- Thread.sleep(500);
- write1 = siemensS7Net.Write("DB100." + (4 * index + 2), staProtocol.getStaNo()); // 鐩爣绔檈
+ int index;
+ int index2 = 0;
+ if (staProtocol.getSiteId() >= 310) {
+ index = staNos3.indexOf(staProtocol.getSiteId());
+ index2 = 66;
} else {
- int index = staNos.indexOf(staProtocol.getSiteId());
- write1 = siemensS7Net.Write("DB100." + (index * 6 + 4), staProtocol.getStaNo()); // 鐩爣绔�
- Thread.sleep(500);
- write = siemensS7Net.Write("DB100." + index * 6, staProtocol.getWorkNo().intValue()); // 宸ヤ綔鍙�
+ index = staNos.indexOf(staProtocol.getSiteId());
}
- if (!write.IsSuccess || !write1.IsSuccess) {
- staProtocol = station.get(staProtocol.getSiteId());
- if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() == 0) {
- staProtocol.setPakMk(true);
+ //// 鍐�2鍙疯緭閫佺嚎
+ //if (slave.getId() == 1) {
+ //
+ // //Thread.sleep(500);
+ // //write1 = siemensS7Net.Write("DB100." + (4 * index + 2), staProtocol.getStaNo()); // 鐩爣绔檈
+ //} else {
+ // write = siemensS7Net.Write("DB100." + index * 6, staProtocol.getWorkNo().intValue()); // 宸ヤ綔鍙�
+ // Thread.sleep(200);
+ // write1 = siemensS7Net.Write("DB100." + (index * 6 + 4), staProtocol.getStaNo()); // 鐩爣绔�
+ //}
+
+ if (slave.getId() == 1) {
+ short[] array = new short[2];
+ array[0] = staProtocol.getWorkNo();
+ array[1] = staProtocol.getStaNo();
+ //write = siemensS7Net.Write("DB100." + index * 4, array); // 宸ヤ綔鍙�
+
+ OperateResult writeResult;
+ //浠诲姟涓嬪彂娆℃暟
+ int writeCount = 0;
+ //浠诲姟涓嬪彂鎴愬姛鏍囪瘑
+ boolean writeFlag = false;
+ while (writeCount < 5) {
+ // 鍐�2鍙疯緭閫佺嚎
+ write = siemensS7Net.Write("DB100." + (index * 4 + index2), array); // 宸ヤ綔鍙枫�佺洰鏍�
+ if (write.IsSuccess) {
+ Thread.sleep(200);
+ OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + (index * 4 + index2), (short) 4);
+ //OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB1000." + index*4, (short)4);
+ if (readResult.IsSuccess) {
+ short workNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0);
+ short staNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 2);
+ if (staProtocol.getWorkNo().equals(workNo) && staProtocol.getStaNo().equals(staNo)) {
+ //浠诲姟鍛戒护鍐欏叆鎴愬姛
+ writeFlag = true;
+ log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ break;
+ } else {//杩斿洖缁撴灉鏄垚鍔熶簡锛屼絾鏄湡瀹炲�间笉鐩稿悓
+ writeCount++;
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+ slave.getId(), JSON.toJSON(staProtocol), writeCount));
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ }
+ } else {
+ writeCount++;
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+ slave.getId(), JSON.toJSON(staProtocol), writeCount));
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ }
+ } else {
+ writeCount++;
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+ slave.getId(), JSON.toJSON(staProtocol), writeCount));
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ }
+ Thread.sleep(200);
}
- OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
- News.error("SiemensDevp" + " - 4" + " - 鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎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)));
- News.info("SiemensDevp" + " - 5" + " - 杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol));
+
+ //鍐欏懡浠ゅ皾璇曚簡5娆¤繕鏄け璐ヤ簡
+ if (!writeFlag) {
+ staProtocol = station.get(staProtocol.getSiteId());
+ if (staProtocol.getWorkNo() == 0 && 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;
+ } 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));
+
+ Integer siteId = staProtocol.getSiteId();
+ staProtocol = station.get(siteId);
+ if ((siteId == 101 || siteId == 201) && (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() == 0)) {
+ staProtocol.setPakMk(true);
+ }
+ }
+
+ } else {//PLC2
+ OperateResult writeResult;
+ //浠诲姟涓嬪彂娆℃暟
+ int writeCount = 0;
+ //浠诲姟涓嬪彂鎴愬姛鏍囪瘑
+ boolean writeFlag = false;
+ while (writeCount < 5) {
+ // 鍐�2鍙疯緭閫佺嚎
+ write = siemensS7Net.Write("DB100." + (index * 6 + index2), staProtocol.getWorkNo().intValue()); // 宸ヤ綔鍙�
+ Thread.sleep(200);
+ write1 = siemensS7Net.Write("DB100." + (index * 6 + 4 + index2), staProtocol.getStaNo()); // 鐩爣绔�
+ if (write.IsSuccess) {
+ Thread.sleep(200);
+ OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + (index * 6 + index2), (short) 4);
+ Thread.sleep(200);
+ OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB100." + (index * 6 + 4 + index2), (short) 2);
+ //OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB1000." + index*4, (short)4);
+ if (readResult.IsSuccess && readResult1.IsSuccess) {
+ int workNo = siemensS7Net.getByteTransform().TransInt32(readResult.Content, 0);
+ short staNo = siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 0);
+ if (staProtocol.getWorkNo().equals((short) workNo) && staProtocol.getStaNo().equals(staNo)) {
+ //浠诲姟鍛戒护鍐欏叆鎴愬姛
+ writeFlag = true;
+ log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ break;
+ } else {//杩斿洖缁撴灉鏄垚鍔熶簡锛屼絾鏄湡瀹炲�间笉鐩稿悓
+ writeCount++;
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+ slave.getId(), JSON.toJSON(staProtocol), writeCount));
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ }
+ } else {
+ writeCount++;
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+ slave.getId(), JSON.toJSON(staProtocol), writeCount));
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ }
+ } else {
+ writeCount++;
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+ slave.getId(), JSON.toJSON(staProtocol), writeCount));
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ }
+ Thread.sleep(200);
+ }
+
+ //鍐欏懡浠ゅ皾璇曚簡5娆¤繕鏄け璐ヤ簡
+ if (!writeFlag) {
+ staProtocol = station.get(staProtocol.getSiteId());
+ if (staProtocol.getWorkNo() == 0 && 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;
+ } 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));
+
+ Integer siteId = staProtocol.getSiteId();
+ staProtocol = station.get(siteId);
+ if ((siteId == 101 || siteId == 201) && (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() == 0)) {
+ staProtocol.setPakMk(true);
+ }
+ }
+
}
+
}
+
+ /// **
+ // * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
+ // */
+ //private void write(StaProtocol staProtocol) throws InterruptedException {
+ // if (null == staProtocol) {
+ // return;
+ // }
+ // ArrayList<Integer> staNos = getStaNo();
+ // OperateResult write = null;
+ // OperateResult write1 = null;
+ // // 鍐�2鍙疯緭閫佺嚎
+ // if (slave.getId() == 1) {
+ // int index = staNos.indexOf(staProtocol.getSiteId());
+ // write = siemensS7Net.Write("DB100." + index * 4, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
+ // Thread.sleep(500);
+ // write1 = siemensS7Net.Write("DB100." + (4 * index + 2), staProtocol.getStaNo()); // 鐩爣绔檈
+ // } else {
+ // int index = staNos.indexOf(staProtocol.getSiteId());
+ // write1 = siemensS7Net.Write("DB100." + (index * 6 + 4), staProtocol.getStaNo()); // 鐩爣绔�
+ // Thread.sleep(500);
+ // write = siemensS7Net.Write("DB100." + index * 6, staProtocol.getWorkNo().intValue()); // 宸ヤ綔鍙�
+ // }
+ //
+ // if (!write.IsSuccess || !write1.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)));
+ // News.error("SiemensDevp" + " - 4" + " - 鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎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)));
+ // News.info("SiemensDevp" + " - 5" + " - 杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol));
+ // }
+ //}
// 鏇存柊鍏ュ嚭搴撴ā寮�
private void updateIoMode() throws InterruptedException {
if (this.ioModeOf2F != IoModeType.NONE) {
if (!siemensS7Net.Write("DB100.180", this.ioModeOf2F.id).IsSuccess) {
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎2F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
- News.error("SiemensDevp"+" - 6"+" - 鍐欏叆杈撻�佺嚎2F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+ News.error("SiemensDevp" + " - 6" + " - 鍐欏叆杈撻�佺嚎2F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
}
}
}
@@ -371,7 +690,7 @@
/**
* 蹇冭烦
*/
- private void heartbeat(){
+ private void heartbeat() {
if (heartBeatVal == 1) {
heartBeatVal = 2;
} else {
@@ -379,7 +698,7 @@
}
OperateResult write = siemensS7Net.Write("DB100.50", heartBeatVal);
if (!write.IsSuccess) {
- News.error("SiemensDevp"+" - 7"+" - 杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId());
+ News.error("SiemensDevp" + " - 7" + " - 杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId());
}
}
@@ -403,15 +722,15 @@
// System.out.println(staNos1.indexOf(129));
// System.out.println(staNos1.size());
// for (int i = 0; i<staNos1.size(); i++) {
-//// System.out.println(i*2);
-//// System.out.println(i*2 + 200);
-//// System.out.println(i);
+
+ /// / System.out.println(i*2);
+ /// / System.out.println(i*2 + 200);
+ /// / System.out.println(i);
// }
// int index = staNos1.indexOf(128);
// System.out.println(index*2);
// System.out.println(index*2 + 200);
// }
-
public static void main(String[] args) throws Exception {
DevpSlave slave = new DevpSlave();
slave.setId(1);
--
Gitblit v1.9.1