From 389ed5b1fb5585e66c95e3891ff8b40e02fe1995 Mon Sep 17 00:00:00 2001
From: lsh <1>
Date: 星期四, 07 三月 2024 14:08:53 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 240 +++++++++++++++++++++++++++++++-----------------------------
1 files changed, 124 insertions(+), 116 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index d92ca90b..52c745a 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -125,6 +125,11 @@
write((StaProtocol)task.getData());
read();
break;
+ // 鍐欐暟鎹� ID+鐩爣绔�
+ case 4:
+ writeAgvOk((StaProtocol)task.getData());
+ read();
+ break;
/* case 3:
write2((StaProtocol)task.getData());
read();
@@ -229,14 +234,42 @@
}
}
+ OperateResultExOne<byte[]> resultAgvAndPlc = siemensS7Net.Read("DB102.0", (short) 30);
+ if (resultAgvAndPlc.IsSuccess) {
+ for (int i = 0; i < staNoSize; i++) {
+ int sign =(i+2)/2-1;
+ if ((i+2)%2!=0){
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ StaProtocol staProtocol = station.get(siteId);
+ if (null == staProtocol) {
+ staProtocol = new StaProtocol();
+ staProtocol.setSiteId(siteId);
+ station.put(siteId, staProtocol);
+ }
+ staProtocol.setAgvStartPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6+4)); // 鍏佽鍙栬揣
+ staProtocol.setAgvStartPlace((short)0); // 鍏佽鏀捐揣
+ continue;
+ }
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ StaProtocol staProtocol = station.get(siteId);
+ if (null == staProtocol) {
+ staProtocol = new StaProtocol();
+ staProtocol.setSiteId(siteId);
+ station.put(siteId, staProtocol);
+ }
+ staProtocol.setAgvStartPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6)); // 鍏佽鍙栬揣
+ staProtocol.setAgvStartPlace(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6 + 2)); // 鍏佽鏀捐揣
+ }
+ }
+
if (slave.getId() == 1) {
//鏉$爜
//Thread.sleep(200);
- OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.840.0", (short) 60);
+ OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.840.0", (short) 32);
if (result2.IsSuccess) {
for (int i = 0; i < 4; i++) {
- String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 10, 8, "UTF-8");
+ 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);
@@ -324,6 +357,83 @@
/**
* 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
*/
+ private void writeAgvOk(StaProtocol staProtocol) throws InterruptedException {
+ if (null == staProtocol) {
+ return;
+ }
+ ArrayList<Integer> staNos = getStaNo();
+ int index = staNos.indexOf(staProtocol.getSiteId());
+ if (staProtocol.getAgvTypeSign()==0){ //0鍙栬揣
+ switch (staProtocol.getSiteId()){
+ case 100:
+ index=32;
+ break;
+ case 101:
+ index=34;
+ break;
+ case 102:
+ index=38;
+ break;
+ case 103:
+ index=40;
+ break;
+ case 104:
+ index=44;
+ break;
+ case 105:
+ index=46;
+ break;
+ case 106:
+ index=50;
+ break;
+ case 107:
+ index=52;
+ break;
+ default:
+ return;
+ }
+ }else {
+ switch (staProtocol.getSiteId()){
+ case 100:
+ index=30;
+ break;
+ case 102:
+ index=36;
+ break;
+ case 104:
+ index=42;
+ break;
+ case 106:
+ index=48;
+ break;
+ default:
+ return;
+ }
+ }
+
+ OperateResult write = null;
+ //浠诲姟涓嬪彂娆℃暟
+ int writeCount = 0;
+ do {
+ write = siemensS7Net.Write("DB102." + index, true); // 浠诲姟瀹屾垚
+ if(write.IsSuccess){
+ writeCount=6;
+ }else {
+ writeCount++;
+ log.error("鍐欏叆杈撻�佺嚎鍙栨斁璐у畬鎴愬懡浠ゅ悗璇诲彇澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ }
+ }while (writeCount<5);
+
+ if (!write.IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
+ log.error("鍐欏叆杈撻�佺嚎鍙栨斁璐у畬鎴愮珯鐐规暟鎹け璐ャ�傝緭閫佺嚎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)));
+ log.info("杈撻�佺嚎鍙栨斁璐у畬鎴愬懡浠や笅鍙戠爜鍨涘畬鎴� 缁欒緭閫佺嚎鍐欎换鍔″畬鎴� [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol));
+ }
+
+
+ }
private void write(StaProtocol staProtocol) throws InterruptedException {
if (null == staProtocol) {
return;
@@ -336,128 +446,26 @@
array[1] = staProtocol.getStaNo();
// OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
- //鏇存柊鍛戒护鏃ュ織
- CommandInfoLogService commandInfoLogService = SpringUtils.getBean(CommandInfoLogService.class);
- CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class);
- CommandInfo commandInfo = commandInfoService.selectById(staProtocol.getCommandId());
- CommandInfoLog commandInfoLog = JSON.parseObject(JSON.toJSONString(commandInfo), CommandInfoLog.class);
- commandInfoLog.setId(null);
-// CommandInfoLog commandInfoLog = new CommandInfoLog();
-// if (commandInfo != null) {
-// commandInfoLog = JSON.parseObject(JSON.toJSONString(commandInfo), CommandInfoLog.class);
-// commandInfoLog.setId(null);
-// }else {
-// Date now = new Date();
-// commandInfoLog.setCommand(JSON.toJSONString(staProtocol));
-// commandInfoLog.setCommandStatus(3);
-// commandInfoLog.setStartTime(now);
-// commandInfoLog.setExecuteTime(now);
-// commandInfoLog.setCompleteTime(now);
-// commandInfoLog.setDevice(SlaveType.Devp.toString());
-// commandInfoLog.setWrkNo(9999);
-// commandInfoLog.setTaskNo("9999");
-// commandInfoLog.setCommandDesc("鎵嬪姩鍛戒护");
-// }
-
OperateResult writeResult;
//浠诲姟涓嬪彂娆℃暟
int writeCount = 0;
//浠诲姟涓嬪彂鎴愬姛鏍囪瘑
boolean writeFlag = false;
- while(writeCount < 5){
- writeResult = siemensS7Net.Write("DB100." + index*4, array); // 宸ヤ綔鍙枫�佺洰鏍囩珯
-
- if(writeResult.IsSuccess){
- Thread.sleep(200);
- OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + 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);
-
- Date now = new Date();
-
- //鏇存柊鎸囦护鐘舵��
- commandInfo.setCommandStatus(CommandStatusType.COMPLETE.id);//杈撻�佺嚎鐩存帴瀹屾垚鐘舵��
- commandInfo.setExecuteTime(now);
- commandInfo.setCompleteTime(now);
- commandInfoService.updateById(commandInfo);
-
- //鏇存柊鎸囦护鏃ュ織
- commandInfoLog.setDeviceLog("鎸囦护涓嬪彂鎴愬姛");
- commandInfoLog.setCommandStatus(CommandStatusType.COMPLETE.id);//杈撻�佺嚎鐩存帴瀹屾垚鐘舵��
- commandInfoLog.setExecuteTime(now);
- commandInfoLog.setCompleteTime(now);
- commandInfoLogService.insert(commandInfoLog);
-
- //鏇存柊浠诲姟姝ュ簭
- TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class);
- TaskWrk taskWrk = taskWrkService.selectByWrkNo(staProtocol.getWorkNo().intValue());
- if (taskWrk != null) {
- taskWrk.setCommandStep(taskWrk.getCommandStep() + 1);//鏇存柊鎸囦护姝ュ簭
- taskWrkService.updateById(taskWrk);
- }
-
- 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);
- //鏇存柊鎸囦护鏃ュ織
- commandInfoLog.setDeviceLog("鎸囦护涓嬪彂澶辫触");
- commandInfoLogService.insert(commandInfoLog);
- }
- } 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);
-
- //鏇存柊鎸囦护鏃ュ織
- commandInfoLog.setDeviceLog("鎸囦护涓嬪彂澶辫触");
- commandInfoLogService.insert(commandInfoLog);
- }
- } 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);
-
- //鏇存柊鎸囦护鏃ュ織
- commandInfoLog.setDeviceLog("鎸囦护涓嬪彂澶辫触");
- commandInfoLogService.insert(commandInfoLog);
- }
- 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);
+ OperateResult writeResult1 = siemensS7Net.Write("DB100." + index*6, (int) staProtocol.getWorkNo()); // 宸ヤ綔鍙�
+ OperateResult writeResult2 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo()); // 鐩爣绔�
+ if(writeResult1.IsSuccess&&writeResult2.IsSuccess){
+ //鏇存柊浠诲姟姝ュ簭
+ TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class);
+ TaskWrk taskWrk = taskWrkService.selectByWrkNo((int) staProtocol.getWorkNo());
+ if (taskWrk != null) {
+ taskWrk.setCommandStep(taskWrk.getCommandStep() + 1);//鏇存柊鎸囦护姝ュ簭
+ taskWrkService.updateById(taskWrk);
+ }else{
+ log.error("杈撻�佺嚎鍐欏叆澶辫触"+staProtocol+"++++++++++++++++++++++++++++++++++++++");
}
}
+
}
private void write2(StaProtocol staProtocol) throws InterruptedException {
if (null == staProtocol) {
--
Gitblit v1.9.1