From 945764de58898661a3f3197e58353141b5deaf91 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期三, 22 十月 2025 16:21:15 +0800
Subject: [PATCH] 侧面输送线出入库流程对接
---
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 609 ++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 491 insertions(+), 118 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 67fb125..a1f5de1 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -25,11 +25,9 @@
import lombok.extern.slf4j.Slf4j;
import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
/**
* 杈撻�佺嚎绾跨▼
@@ -55,12 +53,7 @@
add(113);
add(114);
add(115);
- add(116);
- add(117);
- add(118);
- add(119);
- add(120);
-
+ add(116); // 渚ч潰浠� index 16寮�濮� 闀垮害12
add(201);
add(202);
add(203);
@@ -73,11 +66,6 @@
add(210);
add(211);
add(212);
- add(213);
- add(214);
- add(215);
- add(216);
- add(217);
}};
public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
@@ -90,6 +78,23 @@
add(307);
add(308);
}};
+
+ // 姝i潰5涓潯鐮佹壂鎻忕珯
+ public static final ArrayList<Integer> barcodeSite2 = new ArrayList<Integer>() {{
+ add(102);
+ add(105);
+ add(108);
+ add(111);
+ add(114);
+ }};
+
+ // 渚ч潰涓変釜鏉$爜鎵弿绔�
+ public static final ArrayList<Integer> barcodeSite = new ArrayList<Integer>() {{
+ add(202);
+ add(206);
+ add(211);
+ }};
+
/**
* 鍏ュ嚭搴撴ā寮�
* 0锛氭湭鐭�
@@ -119,20 +124,6 @@
public SiemensDevpThread(DevpSlave slave) {
this.slave = slave;
- }
-
- public static void main(String[] args) {
- ArrayList<Integer> staNos = staNos1;
- System.out.println(staNos.indexOf(129));
- System.out.println(staNos.size());
- for (int i = 0; i < staNos.size(); i++) {
-// System.out.println(i*2);
-// System.out.println(i*2 + 200);
-// System.out.println(i);
- }
- int index = staNos.indexOf(128);
- System.out.println(index * 2);
- System.out.println(index * 2 + 200);
}
@@ -166,6 +157,16 @@
// 鍐欐暟鎹� ID+鐩爣绔�
case 2:
write((StaProtocol) task.getData());
+ read();
+ break;
+ // 鍑哄叆搴撳啓鐮佺洏淇℃伅
+ case 3:
+ write3((StaProtocol) task.getData());
+ read();
+ break;
+ // 渚ч潰鐮佺洏瀹屾垚涓婃姤wms鎴愬姛鍚庨噸缃畃lc
+ case 4:
+ write4((StaProtocol) task.getData());
read();
break;
default:
@@ -206,6 +207,7 @@
}
}
+
@Override
public boolean connect() {
boolean result = false;
@@ -234,70 +236,232 @@
private void read() throws InterruptedException {
// 鏇存柊鍏ュ嚭搴撴ā寮�
updateIoMode();
+
ArrayList<Integer> staNos = getStaNo();
int staNoSize = staNos.size();
- OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize * 8));
- if (result.IsSuccess) {
- for (int i = 0; i < staNoSize; i++) {
- Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
- StaProtocol staProtocol = station.get(siteId);
- if (null == staProtocol) {
- staProtocol = new StaProtocol();
- staProtocol.setSiteId(siteId);
- station.put(siteId, staProtocol);
- }
- staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 8)); // 宸ヤ綔鍙�
+ OperateResultExOne<byte[]> result;
+ if (slave.getId() == 1) {
+ // 璇绘闈㈣揣浣嶄俊鎭弽棣�
+ result = siemensS7Net.Read("DB101.0", (short) (16 * 8));
+ if (result.IsSuccess) {
+ for (int i = 0; i < 16; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ StaProtocol staProtocol = station.get(siteId);
+ if (null == staProtocol) {
+ staProtocol = new StaProtocol();
+ staProtocol.setSiteId(siteId);
+ station.put(siteId, staProtocol);
+ }
+ staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 8)); // 宸ヤ綔鍙�
- staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 8 + 4)); // 鐩爣绔�
+ staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 8 + 4)); // 鐩爣绔�
- boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i * 8 + 6, 2);
- 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]); // 浣庡簱浣�
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i * 8 + 6, 2);
+ 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]); // 浣庡簱浣�
- if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
- staProtocol.setPakMk(true);
+ if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
+ staProtocol.setPakMk(true);
+ }
}
}
- }
+ // 璇讳晶闈㈣揣浣嶄俊鎭弽棣�
+ OperateResultExOne<byte[]> resultCm = siemensS7Net.Read("DB101.800", (short) (12 * 8));
+ if (resultCm.IsSuccess) {
+ for (int i = 16; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ StaProtocol staProtocol = station.get(siteId);
+ if (null == staProtocol) {
+ staProtocol = new StaProtocol();
+ staProtocol.setSiteId(siteId);
+ station.put(siteId, staProtocol);
+ }
+ staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(resultCm.Content, (i - 16) * 8)); // 宸ヤ綔鍙�
+ staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(resultCm.Content, (i - 16) * 8 + 4)); // 鐩爣绔�
- if (slave.getId() == 1) {
- //鏉$爜
- //Thread.sleep(200);
- OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.848.0", (short) 8);
- if (result2.IsSuccess) {
- for (int i = 0; i < 1; i++) {
- String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultCm.Content, (i - 16) * 8 + 6, 2);
+ 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]); // 浣庡簱浣�
+
+ if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
+ staProtocol.setPakMk(true);
+ }
+ }
+ }
+
+ // 璇讳晶闈㈢爜鐩樺畬鎴愪俊鍙�
+ OperateResultExOne<byte[]> resultMp = siemensS7Net.Read("DB79.362", (short) 4);
+ if (resultMp.IsSuccess) {
+ StaProtocol staProtocol207 = station.get(207);
+ StaProtocol staProtocol212 = station.get(212);
+ staProtocol207.setMpCompletedFlag(siemensS7Net.getByteTransform().TransInt16(resultMp.Content, 0));
+ staProtocol212.setMpCompletedFlag(siemensS7Net.getByteTransform().TransInt16(resultMp.Content, 2));
+ }
+
+ // 璇诲彇姝i潰鏉$爜
+ OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB103.0", (short) (5 * 40));
+ if (result3.IsSuccess) {
+ for (int i = 0; i < 5; i++) {
+ String barcode = siemensS7Net.getByteTransform().TransString(result3.Content, i * 40, 40, "UTF-8");
+ if (!Cools.isEmpty()) {
+ barcode = barcode.trim();
+ }
+ List<String> barcodeList = Arrays.stream(barcode.split(";")).collect(Collectors.toList());
+ Iterator<String> iterator = barcodeList.iterator();
+ while (iterator.hasNext()) {
+ String next = iterator.next();
+ if (next.length() == 6) {
+ barcode = next;
+ iterator.remove();
+ break;
+ }
+ }
+
BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
+ if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+ barcodeThread.setBarcode(barcode);
+ }
+ StaProtocol staProtocol = station.get(barcodeSite2.get(i));
+ if (staProtocol != null) {
+ while (iterator.hasNext()) {
+ String next = iterator.next();
+ if (next.length() < 7 || next.length() > 10 || !next.matches("[0-9]*")) {
+ iterator.remove();
+ }
+ }
+ staProtocol.setMatIdList(barcodeList);
+ }
+ }
+ }
+
+ // 璇诲彇姝i潰鏉$爜
+// OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.1404", (short) (16 * 8));
+// if (result2.IsSuccess) {
+// for (int i = 0; i < 16; i++) {
+// int barcodeId = 0;
+// switch (i) {
+// case 1:
+// barcodeId = 1;
+// break;
+// case 4:
+// barcodeId = 2;
+// break;
+// case 7:
+// barcodeId = 3;
+// break;
+// case 10:
+// barcodeId = 4;
+// break;
+// case 13:
+// barcodeId = 5;
+// break;
+// default:
+// }
+// if (barcodeId != 0) {
+// String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 6, "UTF-8");
+// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
+// if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+// barcodeThread.setBarcode(barcode);
+// }
+// }
+// }
+// }
+
+ // 璇诲彇渚ч潰鏉$爜
+ OperateResultExOne<byte[]> resultCM2 = siemensS7Net.Read("DB101.2574", (short) (3 * 4 * 6));
+ if (resultCM2.IsSuccess) {
+ for (int i = 8; i >= 6; i--) {
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i);
+ List<String> barcodes = new ArrayList<>();
+ for (int j = 0; j < 4; j++) {
+ String barcode1 = siemensS7Net.getByteTransform().TransString(resultCM2.Content, (8 - i) * 24 + j * 6, 6, "UTF-8");
+ if (!Cools.isEmpty(barcode1) && !barcode1.equals("000000") && !barcode1.equals("NoRead")) {
+ barcodes.add(barcode1);
+ }
+ }
+ String barcode = String.join("#", barcodes);
if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
barcodeThread.setBarcode(barcode);
}
}
}
- //澶栧舰妫�娴�
- OperateResultExOne<byte[]> resultErr1 = siemensS7Net.Read("DB101.810.0", (short) (barcodeSize * 1));
- StaProtocol staProtocol1 = station.get(116);
- boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErr1.Content, 0, 1);
- staProtocol1.setFrontErr(status1[0]);
- staProtocol1.setBackErr(status1[1]);
- staProtocol1.setHighErr(status1[2]);
- staProtocol1.setLeftErr(status1[3]);
- staProtocol1.setRightErr(status1[4]);
- staProtocol1.setWeightErr(status1[5]);
- staProtocol1.setBarcodeErr(status1[6]);
-
- OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (staNoSize * 4));
- if (resultErr.IsSuccess) {
- for (int i = 0; i < staNoSize; i++) {
+ // 璇诲彇姝i潰澶栧舰妫�娴�
+ OperateResultExOne<byte[]> resultErr1 = siemensS7Net.Read("DB101.936", (short) (16 * 8));
+ if (resultErr1.IsSuccess) {
+ for (int i = 0; i < 16; i++) {
Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
- boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1);
+ StaProtocol staProtocol = station.get(siteId);
+ boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErr1.Content, i * 2, 1);
+ staProtocol.setFrontErr(status1[0]);
+ staProtocol.setBackErr(status1[1]);
+ staProtocol.setHighErr(status1[2]);
+ staProtocol.setLeftErr(status1[3]);
+ staProtocol.setRightErr(status1[4]);
+ staProtocol.setWeightErr(status1[5]);
+ staProtocol.setBarcodeErr(status1[6]);
+ }
+ }
+
+ // 璇诲彇渚ч潰澶栧舰妫�娴�
+ OperateResultExOne<byte[]> resultErrCM1 = siemensS7Net.Read("DB101.1336", (short) (12 * 8));
+ if (resultErrCM1.IsSuccess) {
+ for (int i = 16; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ StaProtocol staProtocol = station.get(siteId);
+ boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErrCM1.Content, (i - 16) * 2, 1);
+ staProtocol.setFrontErr(status1[0]);
+ staProtocol.setBackErr(status1[1]);
+ staProtocol.setHighErr(status1[2]);
+ staProtocol.setLeftErr(status1[3]);
+ staProtocol.setRightErr(status1[4]);
+ staProtocol.setWeightErr(status1[5]);
+ staProtocol.setBarcodeErr(status1[6]);
+ }
+ }
+
+ // 璇绘闈㈡晠闅滃弽棣�
+ OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.2340.0", (short) (16 * 2));
+ if (resultErr.IsSuccess) {
+ for (int i = 0; i < 16; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 2, 2);
+ 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]);
+ staProtocol.setPushTheEnvelopeErr(status[8]);
+ staProtocol.setRaiseTheLowerLimitErr(status[9]);
+ staProtocol.setLeftProtectionTriggersErr(status[10]);
+ staProtocol.setRightProtectionTriggersErr(status[11]);
+ staProtocol.setGratingBlockingErr(status[12]);
+ }
+ }
+
+ // 璇讳晶闈㈡晠闅滃弽棣�
+ OperateResultExOne<byte[]> resultErrCM = siemensS7Net.Read("DB101.2540.0", (short) (12 * 2));
+ if (resultErrCM.IsSuccess) {
+ for (int i = 16; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErrCM.Content, (i - 16) * 2, 1);
StaProtocol staProtocol = station.get(siteId);
staProtocol.setBreakerErr(status[0]);
staProtocol.setInfraredErr(status[1]);
@@ -310,9 +474,38 @@
}
}
+ } else {
+ // 璇诲缃緭閫佺嚎璐т綅淇℃伅鍙嶉
+ result = siemensS7Net.Read("DB101.0", (short) (staNoSize * 8));
+ if (result.IsSuccess) {
+ for (int i = 0; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ StaProtocol staProtocol = station.get(siteId);
+ if (null == staProtocol) {
+ staProtocol = new StaProtocol();
+ staProtocol.setSiteId(siteId);
+ station.put(siteId, staProtocol);
+ }
+ staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 8)); // 宸ヤ綔鍙�
+ staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 8 + 4)); // 鐩爣绔�
+
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i * 8 + 6, 2);
+ 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]); // 浣庡簱浣�
+
+ if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
+ staProtocol.setPakMk(true);
+ }
+ }
+ }
}
-
if (result.IsSuccess) {
@@ -354,6 +547,23 @@
ArrayList<Integer> staNos = getStaNo();
int index = staNos.indexOf(staProtocol.getSiteId());
+ // 浠诲姟鍙峰湴鍧�
+ String workNoAddress;
+ // 鐩爣绔欏湴鍧�
+ String staNoAddress;
+ // 鐩爣绔欏湴鍧�
+ String heightAddress = null;
+ if (index < 16) {
+ workNoAddress = "DB100." + index * 4;
+ staNoAddress = "DB100." + (index * 4 + 2);
+ } else {
+ workNoAddress = "DB100." + (400 + (index - 16) * 4);
+ staNoAddress = "DB100." + (400 + (index - 16) * 4 + 2);
+ }
+ int i = barcodeSite2.indexOf(staProtocol.getSiteId());
+ if (i != -1) {
+ heightAddress = "DB104." + (i * 2);
+ }
OperateResult writeResult;
//浠诲姟涓嬪彂娆℃暟
@@ -361,25 +571,66 @@
//浠诲姟涓嬪彂鎴愬姛鏍囪瘑
boolean writeFlag = false;
while (writeCount < 5) {
- OperateResult writeResult1 = siemensS7Net.Write("DB100." + index * 6, staProtocol.getWorkNo().intValue()); // 宸ヤ綔鍙�
- OperateResult writeResult2 = siemensS7Net.Write("DB100." + (index * 6 + 4), staProtocol.getStaNo()); // 鐩爣绔�
+ if (!Cools.isEmpty(staProtocol.getHeight()) && heightAddress != null) {
+ OperateResult writeResult3 = siemensS7Net.Write(heightAddress, Short.parseShort(staProtocol.getHeight()));
+ writeResult3 = siemensS7Net.Write(heightAddress, Short.parseShort(staProtocol.getHeight()));
+ writeResult3 = siemensS7Net.Write(heightAddress, Short.parseShort(staProtocol.getHeight()));
+ writeResult3 = siemensS7Net.Write(heightAddress, Short.parseShort(staProtocol.getHeight()));
+ log.info("鍐欏叆楂樺害鍦板潃锛歿},{}", heightAddress, writeResult3);
+ if (!writeResult3.IsSuccess) {
+ //fangzhi xierukushibai,jiu duoxiejici,meixunhuan
+ writeResult3 = siemensS7Net.Write(heightAddress, Short.parseShort(staProtocol.getHeight()));
+ if (!writeResult3.IsSuccess) {
+ writeResult3 = siemensS7Net.Write(heightAddress, Short.parseShort(staProtocol.getHeight())); // 鐩爣绔�
+ }
+ }
+ }
+ // 渚ч潰鍑哄簱锛岀粰杈撻�佺嚎鍐欐潯鐮�
+ Short staNo = staProtocol.getStaNo();
+ String barcode = staProtocol.getBarcode();
+ if (staNo == 203 || staNo == 207 || staNo == 212) {
+ if (Cools.isEmpty(barcode)) {
+ log.error("渚ч潰鍑哄簱鍒帮細{}绔欑偣锛屾潯鐮佸�间负绌猴紝浠诲姟鍙凤細{}", staNo, staProtocol.getWorkNo());
+ } else {
+
+ String[] split = barcode.split("#");
+ int offset = (staNo - 201) * 24;
+ byte[] bytes = new byte[(split.length + 1) * 6];
+ for (int j = 0, k = 0; j < split.length; j++) {
+ String s = split[j];
+ for (int m = 0; m < s.length(); m++) {
+ bytes[k++] = (byte) s.charAt(m);
+ }
+ }
+
+ OperateResult writeResult4 = siemensS7Net.Write("DB79" + offset, bytes);
+ if (writeResult4.IsSuccess) {
+ log.info("渚ч潰鍑哄簱鍒帮細{}绔欑偣锛岀粰杈撻�佺嚎鍐欐潯鐮侊細{}鎴愬姛", staNo, barcode);
+ } else {
+ log.error("渚ч潰鍑哄簱鍒帮細{}绔欑偣锛岀粰杈撻�佺嚎鍐欐潯鐮侊細{}澶辫触", staNo, barcode);
+ }
+ }
+ }
+
+ OperateResult writeResult1 = siemensS7Net.Write(workNoAddress, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
+ OperateResult writeResult2 = siemensS7Net.Write(staNoAddress, staProtocol.getStaNo()); // 鐩爣绔�
if (writeResult1.IsSuccess && writeResult2.IsSuccess) {
Thread.sleep(200);
- OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index * 6, (short) 6);
+ OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index * 4, (short) 2);
if (readResult.IsSuccess) {
- Integer workNo = siemensS7Net.getByteTransform().TransInt32(readResult.Content, 0);
- short staNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 4);
- if (workNo.equals(staProtocol.getWorkNo().intValue()) && 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);
- }
+// 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}",
@@ -421,6 +672,76 @@
}
+ private void write3(StaProtocol staProtocol){
+
+ int lx = 0,mp = 0,lev = 0;
+
+ switch (staProtocol.getSiteId()) {
+ case 205: lx = 16;mp = 18;lev=344;break;
+ case 207: lx = 24;mp = 26;lev=348;break;
+ case 210: lx = 36;mp = 38;lev=354;break;
+ case 212: lx = 44;mp = 46;lev=358;break;
+ default:
+ log.error("鍐欑爜鐩樹俊鎭珯鐐规湁璇細{}" , staProtocol.getSiteId());
+ return;
+ }
+
+ String addressPre = "DB79.";
+
+ //浠诲姟涓嬪彂娆℃暟
+ int writeCount = 0;
+ //浠诲姟涓嬪彂鎴愬姛鏍囪瘑
+ boolean writeFlag = false;
+ while (writeCount < 5) {
+ OperateResult writeResult1 = siemensS7Net.Write(addressPre + lx, staProtocol.getLx()); // 宸ヨ绫诲瀷
+ OperateResult writeResult2 = siemensS7Net.Write(addressPre + mp, staProtocol.getMp()); // 鏄惁鐮佺洏
+ OperateResult writeResult3 = siemensS7Net.Write(addressPre + lev, staProtocol.getLev()); // 鐮佺洏灞傛暟
+ if (writeResult1.IsSuccess && writeResult2.IsSuccess && writeResult3.IsSuccess) {
+ writeFlag = true;
+ log.info("鐮佺洏淇℃伅鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔熴�恵},{},{},{}銆戯紝骞朵笖鍥炶鎴愬姛锛屽啓鍏ユ鏁�={}", staProtocol.getSiteId(),staProtocol.getMp(),staProtocol.getLx(),staProtocol.getLev(), writeCount);
+ break;
+ } else {
+ writeCount++;
+ log.error("鐮佺洏淇℃伅鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ }
+ }
+
+ //鍐欏懡浠ゅ皾璇曚簡5娆¤繕鏄け璐ヤ簡
+// if (!writeFlag) {
+// //閲嶆柊娣诲姞鏁版嵁鍒颁换鍔¢槦鍒�
+// MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol));
+// log.error("鐮佺洏淇℃伅鍐欏叆杈撻�佺嚎鍛戒护灏濊瘯5娆″け璐ラ噸鏂版帹閫侀槦鍒椼�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+// }
+ }
+
+ private void write4(StaProtocol staProtocol){
+
+ int offset = 0;
+
+ switch (staProtocol.getSiteId()) {
+ case 207: offset = 362;break;
+ case 212: offset = 364 ;break;
+ default:
+ log.error("閲嶇疆鐮佺洏淇″彿绔欑偣鏈夎锛歿}" , staProtocol.getSiteId());
+ return;
+ }
+
+ String addressPre = "DB79.";
+
+ //浠诲姟涓嬪彂娆℃暟
+ int writeCount = 0;
+ while (writeCount < 5) {
+ OperateResult writeResult1 = siemensS7Net.Write(addressPre + offset, (short) 0);
+ if (writeResult1.IsSuccess) {
+ log.info("渚ч潰鐮佺洏瀹屾垚涓婃姤wms鎴愬姛鍚庨噸缃俊鍙峰啓鍏ヨ緭閫佺嚎鍛戒护鍚庤繑鍥炴垚鍔熴�恵}銆戯紝骞朵笖鍥炶鎴愬姛锛屽啓鍏ユ鏁�={}", staProtocol.getSiteId(), writeCount);
+ break;
+ } else {
+ writeCount++;
+ log.error("渚ч潰鐮佺洏瀹屾垚涓婃姤wms鎴愬姛鍚庨噸缃俊鍙峰啓鍏ヨ緭閫佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ }
+ }
+ }
+
// /**
// * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
// */
@@ -434,9 +755,10 @@
// array[1] = staProtocol.getStaNo();
// OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
//
-//// OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
-//// Thread.sleep(500);
-//// OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo()); // 鐩爣绔�
+
+ /// / 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());
@@ -456,7 +778,6 @@
// }
// }
// }
-
private void write2(StaProtocol staProtocol) throws InterruptedException {
if (null == staProtocol) {
return;
@@ -544,27 +865,53 @@
// 鏇存柊鍏ュ嚭搴撴ā寮�
private void updateIoMode() throws InterruptedException {
if (slave.getId() == 1 && this.ioModeOf1F1 != null) {
- if (!siemensS7Net.Write("DB4.2", this.ioModeOf1F1.id).IsSuccess) {
- OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎21F1鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={2}", slave.getId()));
+ if (!siemensS7Net.Write("DB105.0", this.ioModeOf1F1.id).IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎21F1鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+ log.error("鍐欏叆杈撻�佺嚎1F1鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+ }
+ }
+ if (slave.getId() == 1 && this.ioModeOf1F2 != null) {
+ if (!siemensS7Net.Write("DB105.2", this.ioModeOf1F2.id).IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎2F2鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+ log.error("鍐欏叆杈撻�佺嚎1F2鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+ }
+ }
+ if (slave.getId() == 1 && this.ioModeOf1F3 != null) {
+ if (!siemensS7Net.Write("DB105.4", this.ioModeOf1F3.id).IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎3F1鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+ log.error("鍐欏叆杈撻�佺嚎1F3鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+ }
+ }
+ if (slave.getId() == 1 && this.ioModeOf1F4 != null) {
+ if (!siemensS7Net.Write("DB105.6", this.ioModeOf1F4.id).IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎3F2鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+ log.error("鍐欏叆杈撻�佺嚎1F4鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+ }
+ }
+ if (slave.getId() == 1 && this.ioModeOf1F5 != null) {
+ if (!siemensS7Net.Write("DB105.8", this.ioModeOf1F5.id).IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎3F2鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+ log.error("鍐欏叆杈撻�佺嚎1F5鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+ }
+ }
+
+
+ if (slave.getId() == 1 && this.ioModeOf2F1 != null) {
+ if (!siemensS7Net.Write("DB105.10", this.ioModeOf2F1.id).IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎2F1鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
log.error("鍐欏叆杈撻�佺嚎2F1鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
}
}
- if (slave.getId() == 1 && this.ioModeOf1F2 != null) {
- if (!siemensS7Net.Write("DB4.4", this.ioModeOf1F2.id).IsSuccess) {
- OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎2F2鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={3}", slave.getId()));
+ if (slave.getId() == 1 && this.ioModeOf2F2 != null) {
+ if (!siemensS7Net.Write("DB105.12", this.ioModeOf2F2.id).IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎2F2鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
log.error("鍐欏叆杈撻�佺嚎2F2鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
}
}
- if (slave.getId() == 1 && this.ioModeOf1F2 != null) {
- if (!siemensS7Net.Write("DB4.2", this.ioModeOf1F2.id).IsSuccess) {
- OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎3F1鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={2}", slave.getId()));
- log.error("鍐欏叆杈撻�佺嚎3F1鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
- }
- }
- if (slave.getId() == 1 && this.ioModeOf1F2 != null) {
- if (!siemensS7Net.Write("DB4.4", this.ioModeOf1F2.id).IsSuccess) {
- OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎3F2鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={3}", slave.getId()));
- log.error("鍐欏叆杈撻�佺嚎3F2鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+ if (slave.getId() == 1 && this.ioModeOf2F3 != null) {
+ if (!siemensS7Net.Write("DB105.14", this.ioModeOf2F3.id).IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎2F3鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+ log.error("鍐欏叆杈撻�佺嚎2F3鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
}
}
}
@@ -585,12 +932,38 @@
public void close() {
siemensS7Net.ConnectClose();
}
-
-// public static void main(String[] args) throws Exception {
-// DevpSlave slave = new DevpSlave();
-// slave.setIp("192.168.2.125");
+ public static void main(String[] args) throws Exception {
+ DevpSlave slave = new DevpSlave();
+ slave.setIp("10.49.210.41");
// SiemensDevpThread devpThread = new SiemensDevpThread(slave);
// devpThread.connect();
+ SiemensS7Net siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp());
+ siemensS7Net.setRack(slave.getRack().byteValue());
+ siemensS7Net.setSlot(slave.getSlot().byteValue());
+ OperateResult connect = siemensS7Net.ConnectServer();
+ // 渚ч潰鍑哄簱锛岀粰杈撻�佺嚎鍐欐潯鐮�
+ Short staNo = 212;
+ String barcode = "800001#123456#811112#811113";
+
+
+ String[] split = barcode.split("#");
+ int offset = 48 + (staNo - 201) * 24;
+ byte[] bytes = new byte[(split.length + 1) * 6];
+ for (int j = 0, k = 0; j < split.length; j++) {
+ String s = split[j];
+ for (int m = 0; m < s.length(); m++) {
+ bytes[k++] = (byte) s.charAt(m);
+ }
+ }
+
+ OperateResult writeResult4 = siemensS7Net.Write("DB79" + offset, bytes);
+ if (writeResult4.IsSuccess) {
+ log.info("渚ч潰鍑哄簱鍒帮細{}绔欑偣锛岀粰杈撻�佺嚎鍐欐潯鐮侊細{}鎴愬姛", staNo, barcode);
+ } else {
+ log.error("渚ч潰鍑哄簱鍒帮細{}绔欑偣锛岀粰杈撻�佺嚎鍐欐潯鐮侊細{}澶辫触", staNo, barcode);
+ }
+
+// devpThread.write2(0);
// devpThread.read();
// // 鍐�
// StaProtocol staProtocol = devpThread.getStation().get(1);
@@ -604,7 +977,7 @@
// // 璇�
// devpThread.read();
// System.out.println(JSON.toJSONString(devpThread.station));
-//
-// }
+
+ }
}
--
Gitblit v1.9.1