From 836cf73ab90eef11e920a634d4888598de79a248 Mon Sep 17 00:00:00 2001
From: tqs <56479841@qq.com>
Date: 星期一, 04 九月 2023 18:06:12 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 219 ++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 162 insertions(+), 57 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index f6387cb..7a5f576 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -8,13 +8,10 @@
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
-import com.google.common.base.Utf8;
-import com.sun.xml.internal.bind.v2.runtime.output.Encoded;
+import com.core.exception.CoolException;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.service.BasDevpService;
-import com.zy.asrs.service.WrkMastService;
import com.zy.core.DevpThread;
-import com.zy.core.Slave;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.cache.SlaveConnection;
@@ -23,7 +20,6 @@
import com.zy.core.model.DevpSlave;
import com.zy.core.model.Task;
import com.zy.core.model.protocol.StaProtocol;
-import com.zy.core.properties.SlaveProperties;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@@ -46,22 +42,51 @@
private SiemensS7Net siemensS7Net;
private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
private short heartBeatVal = 1;
- public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{
- add(101);add(102);add(103);add(104);add(105);add(106);add(107);add(108);add(109);
- add(110);add(111);add(112);add(113);add(114);add(115);add(116);add(117);add(118);add(119);
- add(120);add(121);add(122);add(123);add(124);add(125);add(126);add(127);add(128);add(129);
- add(130);add(131);add(132);add(133);add(134);add(135);add(136);
+
+ public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
+ add(100);add(101);add(102);add(103);add(104);
+ add(105);add(106);add(107);
}};
- public IoModeType ioMode = IoModeType.NONE;
+ public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
+// add(401);add(402);
+ }};
+
+ private Integer count=0;
+
/**
- * 182绔欏爢鍨涙満鎵ц涓嚭搴撴暟閲�
+ * 鏉$爜鏁伴噺
*/
- public int PRE_COUNT=0;
- private SlaveProperties slaveProperties;
+ private int barcodeSize = 4;
+
+ /**
+ * 鍏ュ嚭搴撴ā寮�
+ * 0锛氭湭鐭�
+ * 1锛氬叆搴撳惎鍔ㄤ腑
+ * 2.鍏ュ簱妯″紡
+ * 3.鍑哄簱鍚姩涓� 锛堜笉鑳界敓鎴愬叆搴撳伐浣滄。锛�
+ * 4.鍑哄簱妯″紡
+ */
+ public IoModeType ioModeOf1F = IoModeType.NONE;
+ public IoModeType ioModeOf2F = IoModeType.NONE;
+// public IoModeType ioMode = IoModeType.NONE;
+ public IoModeType ioModeOf3F = IoModeType.NONE;
+ public IoModeType ioModeOf4F = IoModeType.NONE;
+// public IoModeType ioMode = IoModeType.NONE;
public SiemensDevpThread(DevpSlave slave) {
this.slave = slave;
+ }
+
+ private ArrayList<Integer> getStaNo() {
+ switch (slave.getId()) {
+ case 1:
+ return staNos1;
+ case 2:
+ return staNos2;
+ default:
+ throw new CoolException("鏈嶅姟鍣ㄥ紓甯�");
+ }
}
@Override
@@ -97,6 +122,37 @@
}
}
+ /**
+ * 鍒濆鍖栫珯鐐圭姸鎬�
+ */
+ private void initSite() {
+ count ++;
+ ArrayList<Integer> staNos = getStaNo();
+ if(count > 10) {
+ // 绔欑偣缂栧彿
+ for (Integer siteId : staNos) {
+ StaProtocol staProtocol = station.get(siteId);
+ if (null == staProtocol) {
+ staProtocol = new StaProtocol();
+ staProtocol.setSiteId(siteId);
+ station.put(siteId, staProtocol);
+ }
+ staProtocol.setWorkNo((short) 0); // ID
+ staProtocol.setAutoing(false); // 鑷姩
+ staProtocol.setLoading(false); // 鏈夌墿
+ staProtocol.setInEnable(false); // 鍙叆
+ staProtocol.setOutEnable(false); // 鍙嚭
+ staProtocol.setEmptyMk(false); // 绌烘澘淇″彿
+ staProtocol.setStaNo((short) 0); // 鐩爣绔�
+
+ if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
+ staProtocol.setPakMk(true);
+ }
+ }
+ count = 0;
+ }
+ }
+
@Override
public boolean connect() {
boolean result = false;
@@ -111,6 +167,7 @@
} 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()));
log.error("杈撻�佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ initSite();
}
siemensS7Net.ConnectClose();
return result;
@@ -121,7 +178,8 @@
*/
private void read() throws InterruptedException {
// // 鏇存柊鍏ュ嚭搴撴ā寮�
-// updateIoMode();
+ updateIoMode();
+ ArrayList<Integer> staNos = getStaNo();
int staNoSize = staNos.size();
OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNoSize*4));
if (result.IsSuccess) {
@@ -135,13 +193,13 @@
}
staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4)); // 宸ヤ綔鍙�
- staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4 + 2)); // 鐩爣绔�
+ staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4 + 2)); // 鐩爣绔�
}
}
-// Thread.sleep(200);
-// OperateResultExOne<byte[]> result0 = siemensS7Net.Read("DB101.0", (short) 186);
+ Thread.sleep(200);
+// OperateResultExOne<byte[]> result0 = siemensS7Net.Read("DB100.2", (short) (staNoSize*2));
// if (result0.IsSuccess) {
-// for (int i = 0; i < 93; i++) {
+// for (int i = 0; i < staNoSize; i++) {
// Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
// StaProtocol staProtocol = station.get(siteId);
// if (null == staProtocol) {
@@ -152,40 +210,67 @@
// staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result0.Content, i*2)); // 鐩爣绔�
// }
// }
- Thread.sleep(200);
- OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB150.0", (short) (staNoSize*2));
- if (result1.IsSuccess) {
- for (int i = 0; i < staNoSize; i++) {
- Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
- boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*2, 1);
- StaProtocol staProtocol = station.get(siteId);
- 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]); // 浣庡簱浣�
+// Thread.sleep(200);
+ OperateResultExOne<byte[]> result1 = null;
+ if(slave.getId()==1) {
+ result1 = siemensS7Net.Read("DB102.0", (short) (staNoSize*2));
+ if (result1.IsSuccess) {
+ for (int i = 0; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*2, 1);
+ StaProtocol staProtocol = station.get(siteId);
+ 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);
+ }
+ count = 0;
}
}
+ } else if(slave.getId()==2) {
+// result1 = siemensS7Net.Read("DB100.100", (short) (staNoSize * 2));
+// if (result1.IsSuccess) {
+// for (int i = 0; i < staNoSize; i++) {
+// Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+// boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i * 2, 1);
+// StaProtocol staProtocol = station.get(siteId);
+// 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);
+// }
+// }
+// count = 0;
+// }
}
Thread.sleep(200);
- int barcodeSize = slaveProperties.getBarcode().size();
- OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.190",(short)(barcodeSize*8));
- if (result2.IsSuccess) {
- for (int i = 0; i < barcodeSize; i++) {
- String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8");
- BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
- if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
- barcodeThread.setBarcode(barcode);
+ if(slave.getId()==1) {
+ OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB102.40", (short) (barcodeSize * 8));
+ if (result2.IsSuccess) {
+ for (int i = 0; i < barcodeSize; i++) {
+ String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
+ if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+ barcodeThread.setBarcode(barcode);
+ }
}
- }
+ }
}
// OperateResultExOne<Short> result2 = siemensS7Net.ReadInt16("DB200.0");
@@ -193,7 +278,7 @@
// this.ioMode = IoModeType.get(result2.Content);
// }
- if (result.IsSuccess && result1.IsSuccess) {
+ if (result.IsSuccess && !Cools.isEmpty(result1) && result1.IsSuccess) {
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
@@ -216,6 +301,7 @@
}
} else {
+ initSite();
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()));
// log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
}
@@ -228,15 +314,16 @@
if (null == staProtocol) {
return;
}
+ ArrayList<Integer> staNos = getStaNo();
int index = staNos.indexOf(staProtocol.getSiteId());
- short[] array = new short[10];
+ short[] array = new short[2];
array[0] = staProtocol.getWorkNo();
array[1] = staProtocol.getStaNo();
- OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
+ OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
-// OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
+// OperateResult write = siemensS7Net.Write("DB100.0" + index*4, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
// Thread.sleep(500);
-// OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo()); // 鐩爣绔�
+// OperateResult write1 = siemensS7Net.Write("DB100.2" + index*4+2, staProtocol.getStaNo()); // 鐩爣绔�
if (!write.IsSuccess) {
staProtocol = station.get(staProtocol.getSiteId());
@@ -253,10 +340,28 @@
// 鏇存柊鍏ュ嚭搴撴ā寮�
private void updateIoMode() throws InterruptedException {
- if (this.ioMode != IoModeType.NONE) {
- if (!siemensS7Net.Write("DB200", this.ioMode.id).IsSuccess) {
- OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎1F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+ if (this.ioModeOf1F != IoModeType.NONE) {
+ if (!siemensS7Net.Write("DB100.80", this.ioModeOf1F.id).IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎F1鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
log.error("鍐欏叆杈撻�佺嚎1F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+ }
+ }
+ if (this.ioModeOf2F != IoModeType.NONE) {
+ if (!siemensS7Net.Write("DB100.82", this.ioModeOf2F.id).IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎F2鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+ log.error("鍐欏叆杈撻�佺嚎2F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+ }
+ }
+ if (this.ioModeOf3F != IoModeType.NONE) {
+ if (!siemensS7Net.Write("DB100.84", this.ioModeOf3F.id).IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎F3鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+ log.error("鍐欏叆杈撻�佺嚎3F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+ }
+ }
+ if (this.ioModeOf4F != IoModeType.NONE) {
+ if (!siemensS7Net.Write("DB100.86", this.ioModeOf4F.id).IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎F4鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+ log.error("鍐欏叆杈撻�佺嚎4F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
}
}
}
@@ -293,14 +398,14 @@
}
public static void main(String[] args) {
- System.out.println(staNos.indexOf(129));
- System.out.println(staNos.size());
- for (int i = 0; i<staNos.size(); i++) {
+ 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);
}
- int index = staNos.indexOf(128);
+ int index = staNos1.indexOf(128);
System.out.println(index*2);
System.out.println(index*2 + 200);
}
--
Gitblit v1.9.1