From 75d0daa4f8dc2010ec92f35cac08a19d240ca45d Mon Sep 17 00:00:00 2001 From: ynhfasrs <ynhfasrs@qq.com> Date: 星期五, 27 六月 2025 14:23:37 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/SiemensCrnThread.java | 182 ++++++++++++++------------------------------- 1 files changed, 57 insertions(+), 125 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index 289a2ec..962a319 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -5,29 +5,22 @@ import HslCommunication.Profinet.Siemens.SiemensPLCS; import HslCommunication.Profinet.Siemens.SiemensS7Net; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.SpringUtils; import com.zy.asrs.entity.*; -import com.zy.asrs.entity.param.TaskOverToWms; import com.zy.asrs.service.*; -import com.zy.common.utils.HttpHandler; import com.zy.core.CrnThread; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; import com.zy.core.enums.*; import com.zy.core.model.CrnSlave; import com.zy.core.model.Task; -import com.zy.core.model.command.CommandPackage; import com.zy.core.model.command.CrnCommand; import com.zy.core.model.protocol.CrnProtocol; import lombok.Data; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; - import java.text.MessageFormat; import java.util.*; @@ -44,21 +37,8 @@ private CrnProtocol crnProtocol; private boolean resetFlag = false; - @Value("${wms.url}") - private String wmsUrl; - public static final List<Short> rowOne = new ArrayList<Short>() {{ - add((short) 1);add((short) 5);add((short) 7);add((short) 11);add((short) 15);add((short) 19); - }}; - public static final List<Short> rowTwo = new ArrayList<Short>() {{ - add((short) 2);add((short) 6);add((short) 8);add((short) 12);add((short) 16);add((short) 20); - }}; - public static final List<Short> rowThree = new ArrayList<Short>() {{ - add((short) 3);add((short) 9);add((short) 13);add((short) 17);add((short) 21); - }}; - public static final List<Short> rowFour = new ArrayList<Short>() {{ - add((short) 4);add((short) 10);add((short) 14);add((short) 18); - }}; - + //鍘熷璁惧鏁版嵁 + private Object originDeviceData; public SiemensCrnThread(CrnSlave slave) { this.slave = slave; @@ -164,7 +144,9 @@ private void readStatus(){ OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56); + OperateResultExOne<byte[]> result2 = siemensNet.Read("DB25.0", (short) 20); if (result.IsSuccess) { + this.originDeviceData = result.Content; if (null == crnProtocol) { crnProtocol = new CrnProtocol(); } @@ -190,8 +172,6 @@ crnProtocol.setXDuration(siemensNet.getByteTransform().TransSingle(result.Content, 48)); crnProtocol.setYDuration(siemensNet.getByteTransform().TransSingle(result.Content, 52)); - - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); // 澶嶄綅淇″彿 @@ -201,93 +181,41 @@ crnCommand.setAckFinish((short)1); if (write(crnCommand)) { resetFlag = false; + } + } + } - //鍫嗗灈鏈轰换鍔″畬鎴愬悗璁块棶wms璇锋眰浠诲姟瀹屾垚 locationDone 璐т綅澶勭悊瀹屾垚 - TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class); - TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("wrk_no",crnProtocol.getTaskNo())); - String tasktype = null; - switch (taskWrk.getIoType()){ - case 1: - tasktype= "RK"; - break; - case 2: - tasktype= "CK"; - break; - case 3: - tasktype= "YK"; - break; - default: - tasktype= "鏈煡"; - } - Map<String, Object> map = new HashMap<>(); - map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2"); - TaskOverToWms taskOverToWms = new TaskOverToWms(); - taskOverToWms.setFeedbackFrom("WCS"); //鏉ユ簮 - taskOverToWms.setWarehouseId("1688469798893297665"); //浠撳簱鏍囪瘑 - taskOverToWms.setTaskNo(taskWrk.getTaskNo()); //浠诲姟鍙� - taskOverToWms.setTaskType(tasktype); // 浠诲姟绫诲瀷 - taskOverToWms.setContainerCode(taskWrk.getBarcode()); // 瀹瑰櫒缂栫爜 - if (taskWrk.getIoType() ==1){ - taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //璁惧缂栫爜 - taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //鐩爣搴撲綅 - }else if (taskWrk.getIoType() ==2){ - Map<Integer,String> map1 = new HashMap<>(); - map1.put(102,"J-1101"); - map1.put(106,"J-1103"); - map1.put(110,"J-1105"); - map1.put(114,"J-1107"); - map1.put(118,"J-1109"); - map1.put(122,"J-1111"); - map1.put(305,"H-1101"); - map1.put(405,"G-1101"); - taskOverToWms.setEquipmentCode(map1.get(taskWrk.getTargetPoint())); //璁惧缂栫爜 - taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); //婧愬簱浣� - } else if (taskWrk.getIoType() == 3) { - taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //璁惧缂栫爜 - taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); - taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //鐩爣搴撲綅 - } - taskOverToWms.setTaskStatus("location_done"); //浠诲姟鐘舵�� - String response = null; - try { - response = new HttpHandler.Builder() - .setHeaders(map) - .setUri("10.32.53.195:8080") - .setPath("wcsManager/wcsInterface/taskStatusFeedback") - .setJson(JSON.toJSONString(taskOverToWms)) - .build() - .doPost(); - }catch (Exception e){ - log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛澶辫触"); - } - ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class); - apiLogService.save("Wms浠诲姟瀹屾垚鎺ュ彛" - ,"10.32.53.195:8080"+"/wcsManager/wcsInterface/taskStatusFeedback" - ,null - ,"127.0.0.1" - ,JSON.toJSONString(taskOverToWms) - ,response - ,true - ); - JSONObject jsonObject = JSON.parseObject(response); - if (jsonObject.getInteger("code").equals(200)){ - if (taskWrk.getIoType() == 3){ - taskWrk.setWrkSts(4); - } - taskWrk.setStatus(5); - if (!taskWrkService.update(taskWrk,new EntityWrapper<TaskWrk>().eq("wrk_no",crnProtocol.getTaskNo()))){ - log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝鏀瑰彉浠诲姟鐘舵�佸け璐�"); - } + List<boolean[]> errorPointList = new ArrayList<>(); + if (result2.IsSuccess) { + for (int i = 0; i < result2.Content.length; i++) { + boolean[] valList = siemensNet.getByteTransform().TransBool(result2.Content, i, 1); + errorPointList.add(valList); + } + } - log.info("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛鎴愬姛"); - }else { - log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛瀹屾垚锛屼絾杩斿洖澶辫触"); - } - + if (System.currentTimeMillis() - crnProtocol.getDeviceDataLog() > 1000 * 5) { + if (this.originDeviceData != null) { + //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰� + //淇濆瓨鏁版嵁璁板綍 + DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class); + if (deviceDataLogService == null) { + return; } + HashMap<String, Object> originData = new HashMap<>(); + originData.put("readStatus", this.originDeviceData); + originData.put("errorPoints", errorPointList); + DeviceDataLog deviceDataLog = new DeviceDataLog(); + deviceDataLog.setOriginData(JSON.toJSONString(originData)); + deviceDataLog.setWcsData(JSON.toJSONString(crnProtocol)); + deviceDataLog.setType(String.valueOf(SlaveType.Crn)); + deviceDataLog.setDeviceNo(slave.getId()); + deviceDataLog.setCreateTime(new Date()); + deviceDataLogService.insert(deviceDataLog); + //鏇存柊閲囬泦鏃堕棿 + crnProtocol.setDeviceDataLog(System.currentTimeMillis()); } } @@ -393,13 +321,13 @@ // array[10] = command.getDestinationStaNo(); array[9] = command.getCommand(); OperateResult result18 = siemensNet.Write("DB100.18", (short)0); - Thread.sleep(200L); + Thread.sleep(100L); OperateResult result = siemensNet.Write("DB100.0", array); int i=0; do{ //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� - Thread.sleep(300); + Thread.sleep(100); OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20); if (resultRead.IsSuccess) { CrnCommand one = new CrnCommand(); @@ -420,28 +348,32 @@ log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}]>>>>閲嶅啓[{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), i,JSON.toJSON(command),JSON.toJSON(one)); result = siemensNet.Write("DB100.0", array); }else{ - short commandFinish = 1; - Thread.sleep(100L); - result = siemensNet.Write("DB100.18", commandFinish); - int signFinish = 1; - while (signFinish<5){ - OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.18", (short) 2); - short transInt16 = siemensNet.getByteTransform().TransInt16(result10018.Content, 0); - if (transInt16 != commandFinish){ - log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "commandFinish:"+commandFinish); - log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "array:"+ JSON.toJSONString(array)); - result = siemensNet.Write("DB100.18", commandFinish); - signFinish++; - }else { - log.info("涓嬪彂DB100.18" + "commandFinish:"+commandFinish); - log.info("涓嬪彂DB100.18" + "array:"+ JSON.toJSONString(array)); - break; - } - } break; } } }while(i<5); + + if (command.getAckFinish() == 0) { + short commandFinish = 1; + Thread.sleep(100L); + result = siemensNet.Write("DB100.18", commandFinish); + int signFinish = 1; + while (signFinish<5){ + OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.18", (short) 2); + short transInt16 = siemensNet.getByteTransform().TransInt16(result10018.Content, 0); + if (transInt16 != commandFinish){ + log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "commandFinish:"+commandFinish); + log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "array:"+ JSON.toJSONString(array)); + result = siemensNet.Write("DB100.18", commandFinish); + signFinish++; + }else { + log.info("涓嬪彂DB100.18" + "commandFinish:"+commandFinish); + log.info("涓嬪彂DB100.18" + "array:"+ JSON.toJSONString(array)); + break; + } + } + } + try { // 鏃ュ織璁板綍 BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class); -- Gitblit v1.9.1