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 | 166 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 164 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 89b6fee..a1f5de1 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -159,6 +159,16 @@
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:
break;
}
@@ -290,6 +300,15 @@
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潰鏉$爜
@@ -438,11 +457,11 @@
}
// 璇讳晶闈㈡晠闅滃弽棣�
- OperateResultExOne<byte[]> resultErrCM = siemensS7Net.Read("DB101.2540.0", (short) (12 * 4));
+ 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) * 4, 1);
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErrCM.Content, (i - 16) * 2, 1);
StaProtocol staProtocol = station.get(siteId);
staProtocol.setBreakerErr(status[0]);
staProtocol.setInfraredErr(status[1]);
@@ -566,6 +585,33 @@
}
}
}
+ // 渚ч潰鍑哄簱锛岀粰杈撻�佺嚎鍐欐潯鐮�
+ 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) {
@@ -624,6 +670,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);
+ }
+ }
}
// /**
@@ -816,6 +932,52 @@
public void close() {
siemensS7Net.ConnectClose();
}
+ 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);
+// staProtocol.setWorkNo((short) 232);
+// staProtocol.setStaNo((short) 6);
+// staProtocol.setAutoing(true);
+// staProtocol.setEmptyMk(true);
+// staProtocol.setInEnable(true);
+// devpThread.write(staProtocol);
+// System.out.println("----------------------------------------");
+// // 璇�
+// devpThread.read();
+// System.out.println(JSON.toJSONString(devpThread.station));
+
+ }
+
}
--
Gitblit v1.9.1