From fc86a263ca2ffdb0e701261ff3b1e730b2065542 Mon Sep 17 00:00:00 2001 From: lty <876263681@qq.com> Date: 星期四, 14 八月 2025 11:18:32 +0800 Subject: [PATCH] #RGV协议修改,rgv预调度,任务下发 --- src/main/java/com/zy/core/thread/RgvThread.java | 500 +++++++++++++------- src/main/java/com/zy/asrs/controller/RgvController.java | 131 +++-- src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java | 6 src/main/java/com/zy/core/enums/RgvTaskStatusType.java | 37 + src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 489 +++++++++++++------- src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java | 2 src/main/java/com/zy/asrs/entity/BasRgvOpt.java | 12 src/main/webapp/static/js/console.map.js | 8 src/main/java/com/zy/core/MainProcess.java | 7 src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 123 ++++ src/main/java/com/zy/core/model/command/RgvCommand.java | 80 +++ src/main/java/com/zy/core/thread/SiemensDevpThread.java | 34 12 files changed, 973 insertions(+), 456 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java index 3be5b88..ee4a2ac 100644 --- a/src/main/java/com/zy/asrs/controller/RgvController.java +++ b/src/main/java/com/zy/asrs/controller/RgvController.java @@ -35,8 +35,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; +import java.util.Objects; /** * RGV鎺ュ彛 @@ -70,44 +72,65 @@ @PostMapping("/table/rgv/state") @ManagerAuth(memo = "RGV淇℃伅琛�") - public R rgvStateTable(){ + public R rgvStateTable() { List<RgvStateTableVo> list = new ArrayList<>(); List<BasRgv> rgvs = basRgvService.selectList(new EntityWrapper<BasRgv>().orderBy("rgv_no")); + for (BasRgv basRgv : rgvs) { - // 琛ㄦ牸琛� RgvStateTableVo vo = new RgvStateTableVo(); vo.setRgvNo(basRgv.getRgvNo()); // RGV鍙� list.add(vo); + // 鑾峰彇RGV淇℃伅 RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basRgv.getRgvNo()); - if (rgvThread == null) { - continue; - } + if (rgvThread == null) continue; + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); - if (rgvProtocol == null) { - continue; - } - vo.setStatusType(rgvProtocol.modeType.desc); // 妯″紡鐘舵�� - vo.setStatus(rgvProtocol.getStatusType().desc); // 鐘舵�� - vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 宸ヤ綅1浠诲姟鍙� - vo.setStatus1(rgvProtocol.getStatusType1().desc); // 宸ヤ綅1鐘舵�� - vo.setLoading1(rgvProtocol.getLoaded1()==1?"鏈夌墿":"鏃犵墿"); // 宸ヤ綅1鏈夌墿 + if (rgvProtocol == null) continue; + + vo.setStatusType(rgvProtocol.modeType.desc); // 妯″紡鐘舵�� + vo.setStatus(rgvProtocol.getStatusType().desc); // 鐘舵�� + vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 宸ヤ綅1浠诲姟鍙� + vo.setStatus1(rgvProtocol.getStatusType1().desc); // 宸ヤ綅1鐘舵�� + vo.setLoading1(rgvProtocol.getLoaded1() ? "鏈夌墿" : "鏃犵墿"); // 宸ヤ綅1鏈夌墿 vo.setRgvPos(rgvProtocol.getRgvPos()); vo.setRgvPos1(rgvProtocol.getRgvPosI()); - vo.setWalkPos(rgvProtocol.getWalkPos()==1?"鍦ㄥ畾浣�":"涓嶅湪瀹氫綅"); - vo.setPakMk(rgvThread.isPakMk()?"鏃犻攣":"閿佸畾"); -// vo.setWorkNo2(rgvProtocol.getTaskNo2()); // 宸ヤ綅2浠诲姟鍙� -// vo.setStatus2(rgvProtocol.getStatusType2().desc); // 宸ヤ綅2鐘舵�� -// vo.setLoading2(rgvProtocol.getLoaded2()==1?"鏈夌墿":"鏃犵墿"); // 宸ヤ綅2鏈夌墿 + vo.setWalkPos(Objects.equals(rgvProtocol.getWalkPos(), 1) ? "鍦ㄥ畾浣�" : "涓嶅湪瀹氫綅"); + vo.setPakMk(rgvThread.isPakMk() ? "鏃犻攣" : "閿佸畾"); + vo.setWorkNo2(rgvProtocol.getTaskNo2()); // 宸ヤ綅2浠诲姟鍙� + vo.setStatus2(rgvProtocol.getStatusType2().desc); // 宸ヤ綅2鐘舵�� + vo.setLoading2(rgvProtocol.getLoaded2() ? "鏈夌墿" : "鏃犵墿"); // 宸ヤ綅2鏈夌墿 - vo.setWarnCode(String.valueOf(rgvProtocol.getAlarm())); - if (rgvProtocol.getAlarm() > 0) { - BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm()); - vo.setAlarm(rgvErr==null?"鏈煡寮傚父":rgvErr.getErrName()); + // --- 閬嶅巻 errX 瀛楁鐢熸垚 warnCode 鍜� alarm --- + List<String> alarms = new ArrayList<>(); + List<String> warnCodes = new ArrayList<>(); + Field[] fields = rgvProtocol.getClass().getDeclaredFields(); + for (Field field : fields) { + if (field.getName().startsWith("err") && field.getType().equals(Boolean.class)) { + field.setAccessible(true); + try { + Boolean value = (Boolean) field.get(rgvProtocol); + if (Boolean.TRUE.equals(value)) { + String numPart = field.getName().substring(3); + int errId = Integer.parseInt(numPart); + warnCodes.add(String.valueOf(errId)); + + BasRgvErr rgvErr = basRgvErrMapper.selectById(errId); + alarms.add(rgvErr == null ? "鏈煡寮傚父(" + errId + ")" : rgvErr.getErrName()); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } } + + vo.setWarnCode(String.join(",", warnCodes)); + vo.setAlarm(alarms.isEmpty() ? "" : String.join("锛�", alarms)); } + return R.ok().add(list); } + @PostMapping("/table/rgv/msg") @ManagerAuth(memo = "RGV鏁版嵁琛�") @@ -171,17 +194,17 @@ public R rgvFetchPut(RgvOperatorParam param){ RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 - command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo1((short) 0); // 宸ヤ綔鍙� + command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo1(0); // 宸ヤ綔鍙� command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯 command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔� -// command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣� -// command.setTaskNo2((short) 0); // 宸ヤ綔鍙� -// command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� -// command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 -// command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� - command.setCommand((short) 0); + command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo2(0); // 宸ヤ綔鍙� + command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� + command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 + command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� + command.setCommand(true); return rgvControl(command)? R.ok(): R.error(); } @@ -191,17 +214,17 @@ public R rgvFetch(RgvOperatorParam param){ RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 - command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo1((short) 0); // 宸ヤ綔鍙� + command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo1(0); // 宸ヤ綔鍙� command.setTaskMode1(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栬揣 command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯 command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔� - command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo2((short) 0); // 宸ヤ綔鍙� - command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� + command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo2( 0); // 宸ヤ綔鍙� + command.setTaskMode2(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栨斁璐� command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� - command.setCommand((short) 0); + command.setCommand(true); return rgvControl(command)? R.ok(): R.error(); } @@ -211,17 +234,17 @@ public R rgvPut(RgvOperatorParam param){ RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 - command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo1((short) 0); // 宸ヤ綔鍙� + command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo1(0); // 宸ヤ綔鍙� command.setTaskMode1(RgvTaskModeType.PUT); // 浠诲姟妯″紡: 鏀捐揣 command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯 command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔� - command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo2((short) 0); // 宸ヤ綔鍙� + command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo2( 0); // 宸ヤ綔鍙� command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� - command.setCommand((short) 0); + command.setCommand(true); return rgvControl(command)? R.ok(): R.error(); } @@ -233,17 +256,17 @@ public R rgvTaskComplete(RgvOperatorParam param){ RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 - command.setAckFinish1((short) 1); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo1((short) 0); // 宸ヤ綔鍙� + command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo1(0); // 宸ヤ綔鍙� command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡 command.setSourceStaNo1((short) 0); // 婧愮珯 command.setDestinationStaNo1((short) 0); // 鐩爣绔� - command.setAckFinish2((short) 1); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo2((short) 0); // 宸ヤ綔鍙� + command.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo2( 0); // 宸ヤ綔鍙� command.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡 command.setSourceStaNo2((short) 0); // 婧愮珯 command.setDestinationStaNo2((short) 0); // 鐩爣绔� - command.setCommand((short) 0); + command.setCommand(true); return rgvControl(command)? R.ok(): R.error(); } @@ -256,17 +279,17 @@ } RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 - command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo1((short) 0); // 宸ヤ綔鍙� + command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo1( 0); // 宸ヤ綔鍙� command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡 command.setSourceStaNo1((short) 0); // 婧愮珯 command.setDestinationStaNo1((short) 0); // 鐩爣绔� - command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo2((short) 0); // 宸ヤ綔鍙� + command.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo2(0); // 宸ヤ綔鍙� command.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡 command.setSourceStaNo2((short) 0); // 婧愮珯 command.setDestinationStaNo2((short) 0); // 鐩爣绔� - command.setCommand((short) 0); + command.setCommand(true); return rgvControl(command)? R.ok(): R.error(); } @@ -292,9 +315,9 @@ RgvCommand Command = new RgvCommand(); Command.setRgvNo(rgv.getId()); // RGV缂栧彿 Command.setTaskMode1(RgvTaskModeType.NONE); - Command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣� - Command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣� - Command.setCommand((short) 0); // 浠诲姟瀹屾垚纭浣� + Command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣� + Command.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣� + Command.setCommand(true); // 浠诲姟瀹屾垚纭浣� // 寤舵椂鍙戦�� Thread.sleep(1000L); if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, Command))) { diff --git a/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java b/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java index 10191ba..dd6989b 100644 --- a/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java +++ b/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java @@ -13,7 +13,7 @@ private Integer rgvNo; // 宸ヤ綔鍙� - private Short workNo = 0; + private Integer workNo = 0; // 鐘舵�� private String status = "-"; diff --git a/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java b/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java index a205d5d..020f874 100644 --- a/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java +++ b/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java @@ -18,7 +18,7 @@ private String status = "-"; // 浠诲姟鍙� - private Short workNo1 = 0; + private Integer workNo1 = 0; // 鐘舵�� private String status1 = "-"; @@ -27,13 +27,13 @@ private String loading1 = "-"; // RGV浣嶇疆 - private Short RgvPos = 0; + private Integer RgvPos = 0; // 璧拌瀹氫綅 private String walkPos = "-"; // 浠诲姟鍙� - private Short workNo2 = 0; + private Integer workNo2 = 0; // 鐘舵�� private String status2 = "-"; diff --git a/src/main/java/com/zy/asrs/entity/BasRgvOpt.java b/src/main/java/com/zy/asrs/entity/BasRgvOpt.java index 0db9725..9a422b2 100644 --- a/src/main/java/com/zy/asrs/entity/BasRgvOpt.java +++ b/src/main/java/com/zy/asrs/entity/BasRgvOpt.java @@ -181,6 +181,18 @@ this.updateBy = updateBy; } + public BasRgvOpt(Integer wrkNo1, Integer rgvNo, Date sendTime, String mode, Integer sourceSta, Integer posSta, Integer response, Date updateTime, Long updateBy) { + this.wrkNo1 = wrkNo1; + this.rgvNo = rgvNo; + this.sendTime = sendTime; + this.mode = mode; + this.sourceSta = sourceSta; + this.posSta = posSta; + this.response = response; + this.updateTime = updateTime; + this.updateBy = updateBy; + } + // BasRgvOpt basRgvOpt = new BasRgvOpt( // null, // ID[闈炵┖] // null, // 浠诲姟鍙� diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index f091010..5dd7333 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -46,7 +46,6 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.util.*; -import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -2699,13 +2698,13 @@ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 if (rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO - && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 + && !rgvProtocol.isLoaded1ing() //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 && (rgvProtocol.getTaskNo1()==0) &&rgvThread.isPakMk() ) { BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - Integer rgvNoOther = basRgvMap.getRgvNoOther(rgvProtocol.getRgvNo()); + Integer rgvNoOther = basRgvMap.getRgvNoOther((int) rgvProtocol.getRgvNo()); RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNoOther); RgvProtocol rgvProtocolOther = rgvThreadOther.getRgvProtocol(); if (rgvProtocolOther == null) { @@ -2715,7 +2714,7 @@ } if (rgvProtocolOther.getStatusType() == RgvStatusType.IDLE && rgvProtocolOther.getModeType() == RgvModeType.AUTO - && rgvProtocolOther.getLoaded1()==0 + && !rgvProtocolOther.isLoaded1ing() && (rgvProtocolOther.getTaskNo1()==0) &&rgvThreadOther.isPakMk() ){ @@ -2788,7 +2787,22 @@ && (rgvProtocol.getStatusType() == RgvStatusType.WORKING1) ){ log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol); - if (rgvProtocol.getTaskNo1()!=0){ + if(rgvProtocol.getTaskNo1() == 9999){ + List<Integer> staNos = Arrays.asList( 1043, 1104); + for (Integer staNo : staNos) { + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(staNo); + boolean rgvComplete = false; + if(!staProtocol.isLoading()){ + rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3);//宸ヤ綅1澶嶄綅 + } + if (!rgvComplete){ + log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛佺瓑寰呭叆搴撳彇璐�",rgvProtocol.getRgvNo()); + break; + } + } + } + if (rgvProtocol.getTaskNo1()!=0 && rgvProtocol.getTaskNo1()!=9999){ // if (rgvProtocol.getTaskNo1()==32222){ // boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo()); // if (!rgvComplete){ @@ -2849,9 +2863,9 @@ //鍙屽伐浣嶅嚭鍏ュ簱涓嶅悓宸ヤ綅澶嶄綅 if((sourceSta >= 1001 && sourceSta <= 1035) || (sourceSta >= 2001 && sourceSta <= 2030)){ - rgvComplete = rgvComplete(rgvProtocol.getRgvNo(),6); + rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),6); }else{ - rgvComplete = rgvComplete(rgvProtocol.getRgvNo(),3); + rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3); } if (!rgvComplete){ @@ -2883,6 +2897,8 @@ } /** * 鎵ц灏忚溅鎼繍浠诲姟 + * + * @return */ public synchronized boolean rgvRunWrkMastFullSta() { boolean wrkEnable = false; @@ -2902,14 +2918,13 @@ continue; } - // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 + // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鍏ュ簱鍙栬揣 if (rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO - && rgvProtocol.getLoaded1() == 0 + && !rgvProtocol.isLoaded1ing() && rgvProtocol.getTaskNo1() == 0 - && rgvProtocol.getTaskNo2() == 0 - && rgvProtocol.getLoaded2() == 0 && rgvThread.isPakMk() + && rgvThread.isPakIn() ) { BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); if (basRgvMap == null) { @@ -2920,35 +2935,10 @@ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route); for (WrkMastSta wrkMastSta : wrkMastStaList){ -// if (wrkMastSta.getType()!=0 || wrkMastSta.getWrkType()!=3 || wrkMastSta.getWrkSts()!=0){//1:婊$増 3锛氬彇鏀� -// continue; -// } - //鍒ゆ柇宸ヤ綔缁撴潫浣嶇疆鐘舵�� -// boolean signDev = false; -// BasDevp devNo = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", wrkMastSta.getStaEnd())); -// if (devNo.getDevNo()==113){ -// BasDevp devNo114 = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 114)); -// if (!Cools.isEmpty(devNo114)){ -// if (devNo114.getOutEnable().equals("Y")){ -// signDev = true; -// } -// } -// } -// if (!Cools.isEmpty(devNo)){ -// if (devNo.getAutoing().equals("Y") && !devNo.getWrkNo().equals(0) && !devNo.getLoading().equals("N")){ -// continue; -// } -// if (!signDev && devNo.getDevNo()==113){ -// if (!devNo.getAutoing().equals("Y") || !devNo.getWrkNo().equals(0) || !devNo.getLoading().equals("N")){ -// wrkEnable = true; -// continue; -// } -// if (!devNo.getOutEnable().equals("Y")){ -// wrkEnable = true; -// continue; -// } -// } -// } + List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//鍏ュ簱鍙� + if (!staNos.contains(wrkMastSta.getStaStart())) { + continue; + } boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 wrkEnable = true; if (sign){ @@ -2960,12 +2950,13 @@ log.error("鏇存柊灏忚溅浠诲姟澶辫触"); } rgvThread.setPakMk(false); + rgvThread.setPakOut(false); boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); if (signMap){ return wrkEnable; // break; }else { - log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); + log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); Thread.sleep(500); } } else { @@ -2976,15 +2967,132 @@ } } + // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鍑哄簱鍙栬揣 + if (rgvProtocol.getStatusType() == RgvStatusType.IDLE + && rgvProtocol.getModeType() == RgvModeType.AUTO + && !rgvProtocol.isLoaded2ing() + && rgvProtocol.getTaskNo2() == 0 + && rgvThread.isPakMk() + && rgvThread.isPakOut() + ){ + BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); + if (basRgvMap == null) { + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo()); + continue; + } + List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); + basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� + List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route); + for (WrkMastSta wrkMastSta : wrkMastStaList){ + List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//鍏ュ簱鍙� + if (staNos.contains(wrkMastSta.getStaStart())) { + continue; + } + boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 + wrkEnable = true; + if (sign){ + wrkMastSta.setWrkSts(1); + try{ + wrkMastStaMapper.updateById(wrkMastSta); + log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); + }catch (Exception e){ + log.error("鏇存柊灏忚溅浠诲姟澶辫触"); + } + rgvThread.setPakMk(false); + rgvThread.setPakOut(false); + boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); + if (signMap){ + return wrkEnable; +// break; + }else { + log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); + Thread.sleep(500); + } + } else { + log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); + Thread.sleep(500); + } + break; + } + + } + } -// if (!wrkEnable){ -// rgvRunWrkMastEmptyStaAvoidance(); -// } }catch (Exception e){ - log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�"); - log.error("3875琛�"+e); + log.error("鎵ц灏忚溅鎼繍浠诲姟涓嬪彂澶辫触"); } return wrkEnable; + } + /** + * 灏忚溅棰勮皟搴� + */ + public synchronized void rgvPreScheduling(){ + try{ + List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); + for (BasRgvMap rgvSlave:basRgvMaps) { + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + continue; + }else { + rgvProtocol = rgvProtocol.clone(); + } + BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); + if (basRgv == null) { + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo()); + continue; + } + + // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鎵嶈繘琛岄璋冨害 + if (rgvProtocol.getStatusType() == RgvStatusType.IDLE + && rgvProtocol.getModeType() == RgvModeType.AUTO + && !rgvProtocol.isLoaded1ing() + && rgvProtocol.getTaskNo1() == 0 + && !rgvProtocol.isLoaded2ing() + && rgvProtocol.getTaskNo2() == 0 + && rgvThread.isPakMk() + ) { + BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); + if (basRgvMap == null) { + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo()); + continue; + } + List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); + basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 + for (DevpSlave devp : slaveProperties.getDevp()) { + // 閬嶅巻鍏ュ簱鍙� 鍏ュ簱棰勮皟搴� + List<Integer> staNos = Arrays.asList(1042, 1043, 1105, 1104); + for (Integer staNo : staNos) { + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(staNo); + if(staProtocol.isLoading()){ + RgvCommand rgvCommand = new RgvCommand(); + rgvCommand.setRgvNo((int) rgvProtocol.getRgvNo()); // RGV缂栧彿 + rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo1(9999); // 宸ヤ綅1宸ヤ綔鍙� + rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo1(0); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 + if(staNo == 1042 || staNo ==1043){ + rgvCommand.setTargetPosition1(1042); //宸ヤ綅1鐩爣绔欑偣 + }else{ + rgvCommand.setTargetPosition1(1105); //宸ヤ綅1鐩爣绔欑偣 + } + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 + if (!MessageQueue.offer(SlaveType.Rgv, (int) rgvProtocol.getRgvNo(), new Task(4, rgvCommand))) { + //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", (int) rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand)); + } + } + } + + } + + } + } + }catch (Exception e){ + log.error("鎵ц灏忚溅绉诲姩涓嬪彂澶辫触"); + } } /** * 鎵ц灏忚溅鎼繍浠诲姟 @@ -3118,107 +3226,107 @@ /* * 鏈変换鍔′絾鏈墽琛� 姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃� * */ - public synchronized void rgvRunWrkMastEmptyStaAvoidance() { - try{ - Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔� - if (integer==0){ - return; - } - List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); - for (BasRgvMap rgvSlave:basRgvMaps) { - RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo()); - RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); - if (rgvProtocol == null) { - continue; - }else { - rgvProtocol = rgvProtocol.clone(); - } - BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); - if (basRgv == null) { - log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getRgvNo()); - continue; - } - - // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 - if (rgvProtocol.getStatusType() == RgvStatusType.IDLE - && rgvProtocol.getModeType() == RgvModeType.AUTO - && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 - && rgvProtocol.getTaskNo1()==0 - && rgvProtocol.getStatusType1() == RgvStatusType.IDLE - && rgvThread.isPakMk() -// && rgvProtocol.getTaskNo2()==0 - ){ - BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){ - continue; - } -// if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){ -// continue; -// } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157) ){ +// public synchronized void rgvRunWrkMastEmptyStaAvoidance() { +// try{ +// Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔� +// if (integer==0){ +// return; +// } +// List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); +// for (BasRgvMap rgvSlave:basRgvMaps) { +// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo()); +// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); +// if (rgvProtocol == null) { +// continue; +// }else { +// rgvProtocol = rgvProtocol.clone(); +// } +// BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); +// if (basRgv == null) { +// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getRgvNo()); +// continue; +// } +// +// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 +// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE +// && rgvProtocol.getModeType() == RgvModeType.AUTO +// && !rgvProtocol.isLoaded1ing() //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 +// && rgvProtocol.getTaskNo1()==0 +// && rgvProtocol.getStatusType1() == RgvStatusType.IDLE +// && rgvThread.isPakMk() +//// && rgvProtocol.getTaskNo2()==0 +// ){ +// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); +// if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){ // continue; // } - rgvAvoidanceXY(rgvProtocol.getRgvNo()); - rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2727"); - } - } - }catch (Exception e){ - log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触"); - log.error("4109琛�"+e); - } - } +//// if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){ +//// continue; +//// } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157) ){ +//// continue; +//// } +// rgvAvoidanceXY((int) rgvProtocol.getRgvNo()); +// rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2727"); +// } +// } +// }catch (Exception e){ +// log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触"); +// log.error("4109琛�"+e); +// } +// } /* * 灏忚溅XY绉诲姩 閬胯 * */ - public synchronized boolean rgvAvoidanceXY(Integer rgvId){ - BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo(rgvId); - if (basRgvMap.getStartRoute() == 100 || basRgvMap.getStartRoute() == 101){ - try{ - - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 - rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙� - rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐� - //basRgvMap.getLockStartRoute().shortValue() - rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue()); - rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 - if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { - //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙� - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); - return false; - } else { - return true; - } - }catch (Exception e){ - return false; - - } - }else { - try{ - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 - rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙� - rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐� - //basRgvMap.getLockStartRoute().shortValue() - rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue()); - rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 - if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { - //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙� - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); - return false; - } else { - return true; - } - }catch (Exception e){ - return false; - - } - } - } +// public synchronized boolean rgvAvoidanceXY(Integer rgvId){ +// BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo(rgvId); +// if (basRgvMap.getStartRoute() == 100 || basRgvMap.getStartRoute() == 101){ +// try{ +// +// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- +// RgvCommand rgvCommand = new RgvCommand(); +// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 +// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� +// rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙� +// rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐� +// //basRgvMap.getLockStartRoute().shortValue() +// rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue()); +// rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 +// if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { +// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙� +// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); +// return false; +// } else { +// return true; +// } +// }catch (Exception e){ +// return false; +// +// } +// }else { +// try{ +// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- +// RgvCommand rgvCommand = new RgvCommand(); +// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 +// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� +// rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙� +// rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐� +// //basRgvMap.getLockStartRoute().shortValue() +// rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue()); +// rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 +// if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { +// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙� +// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); +// return false; +// } else { +// return true; +// } +// }catch (Exception e){ +// return false; +// +// } +// } +// } /* @@ -3229,39 +3337,80 @@ int startSta = wrkMastSta.getStaStart(); // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- RgvCommand rgvCommand = new RgvCommand(); + boolean pakIn1 = true; + boolean pakIn2 = true; rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 - if((startSta >= 1001 && startSta <= 1035) || (startSta >= 2001 && startSta <= 2030)){//鍑哄簱RGV鍙栬揣 - rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙� - rgvCommand.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� - rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅2璧风偣 - rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅2鐩爣绔欑偣 - rgvCommand.setCommand((short) 2); //宸ヤ綅1浠诲姟纭 - }else{ //鍏ュ簱RGV鍙栬揣 - rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� - rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� - rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅1璧风偣 - rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅1鐩爣绔欑偣 - rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 - } - if(rgvCommand.getCommand() == 1){ - if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { - //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); - return false; - } else { - return true; + if(wrkMastSta.getWrkSts() == 1){//鍙栬揣 + if((startSta >= 1001 && startSta <= 1035) || (startSta >= 2001 && startSta <= 2030)){//鍑哄簱RGV鍙栬揣 + rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� + rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition2(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣 + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 + pakIn1 = false; + }else{ //鍏ュ簱RGV鍙栬揣 + rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� + rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣 + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 } - }else{ - if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) { - //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); - return false; - } else { - return true; + if(!pakIn1){ + if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { + //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); + return false; + } else { + return true; + } + }else{ + if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) { + //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); + return false; + } else { + return true; + } } } + if(wrkMastSta.getWrkSts() == 2) {//鏀捐揣 + if((startSta >= 1001 && startSta <= 1035) || (startSta >= 2001 && startSta <= 2030)){//鍑哄簱RGV鍙栬揣 + rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� + rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition2(wrkMastSta.getStaEnd()); //宸ヤ綅2鐩爣绔欑偣 + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 + pakIn2 = false; + }else{ //鍏ュ簱RGV鍙栬揣 + rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� + rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition1(wrkMastSta.getStaEnd()); //宸ヤ綅1鐩爣绔欑偣 + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 + } + if(!pakIn2){ + if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { + //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); + return false; + } else { + return true; + } + }else{ + if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) { + //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); + return false; + } else { + return true; + } + } + } + return true; }catch (Exception e){ return false; } diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java index 62c85cc..3fa201d 100644 --- a/src/main/java/com/zy/core/MainProcess.java +++ b/src/main/java/com/zy/core/MainProcess.java @@ -124,12 +124,7 @@ // RGV ===>> 灏忚溅浠诲姟浣滀笟涓嬪彂 try{ mainService.rgvRunWrkMastFullSta(); -// if (rgvIoExecuteSign){ -// k = 0; -// } else if (k>4){ -// k = 0; -// mainService.rgvRunWrkMastEmptyStaAvoidance();//閬胯 -// } + mainService.rgvPreScheduling(); }catch (Exception e){ log.error("RGV ===>> 灏忚溅浠诲姟浣滀笟涓嬪彂寮傚父"+e); } diff --git a/src/main/java/com/zy/core/enums/RgvTaskStatusType.java b/src/main/java/com/zy/core/enums/RgvTaskStatusType.java new file mode 100644 index 0000000..d838ef3 --- /dev/null +++ b/src/main/java/com/zy/core/enums/RgvTaskStatusType.java @@ -0,0 +1,37 @@ +package com.zy.core.enums; + +public enum RgvTaskStatusType { + NONE(0),//鏃� + X_MOVE(1),//琛岃蛋 + FETCH(2),//鍙栬揣 + PUT(3),//鏀捐揣 + FETCH_PUT(4);//鍙栨斁璐� + + + + public Integer id; + RgvTaskStatusType(Integer id) { this.id = id; } + public static RgvTaskStatusType get(Short id) { + if (null == id){ + return null; + } + for(RgvTaskStatusType type : RgvTaskStatusType.values()){ + if(type.id.equals(id.intValue())){ + return type; + } + } + return null; + } + + public static RgvTaskStatusType get(RgvTaskStatusType type) { + if (null == type){ + return null; + } + for(RgvTaskStatusType rgvTaskStatusType : RgvTaskStatusType.values()){ + if(rgvTaskStatusType == type){ + return rgvTaskStatusType; + } + } + return null; + } +} diff --git a/src/main/java/com/zy/core/model/command/RgvCommand.java b/src/main/java/com/zy/core/model/command/RgvCommand.java index 6d6eb39..6e9692d 100644 --- a/src/main/java/com/zy/core/model/command/RgvCommand.java +++ b/src/main/java/com/zy/core/model/command/RgvCommand.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.annotation.JSONField; import com.zy.core.enums.RgvTaskModeType; +import com.zy.core.enums.RgvTaskStatusType; import lombok.Data; import java.util.Calendar; @@ -18,10 +19,10 @@ private Integer rgvNo = 0; // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - private Short ackFinish1 = 0; + private Boolean ackFinish1 = true; // 宸ヤ綅1浠诲姟鍙� - private Short taskNo1 = 0; + private Integer taskNo1 = 0; /** * 浠诲姟妯″紡锛� @@ -32,8 +33,16 @@ */ private Short taskMode1 = 0; + /** + * 浣滀笟妯″紡 + */ + private Short taskStatus1 = 0; + @JSONField(serialize = false) private RgvTaskModeType taskModeType1; + + @JSONField(serialize = false) + private RgvTaskStatusType taskStatusType1; /* 宸ヤ綅1婧愮珯 @@ -45,12 +54,26 @@ */ private Short destinationStaNo1 = 0; + /** + * 宸ヤ綅1鐩爣浣嶇疆 + */ + private Integer targetPosition1 = 0; + /** + * RGV鏀捐揣鍚庤揣鐗╄鍘荤殑鐩殑鍦� + */ + private Integer endStaNo1 = 0; + + /** + * 鎵ц鏂瑰悜 + */ + private Short direction1 = 0; + ////////////////////// 宸ヤ綅2瀹氫箟 ////////////////////////////////////////////////// - // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - private Short ackFinish2 = 0; + // 宸ヤ綅2浠诲姟瀹屾垚纭浣� + private Boolean ackFinish2 = true; // 宸ヤ綅2浠诲姟鍙� - private Short taskNo2 = 0; + private Integer taskNo2 = 0; /** * 浠诲姟妯″紡锛� @@ -61,8 +84,16 @@ */ private Short taskMode2 = 0; + /** + * 浣滀笟妯″紡 + */ + private Short taskStatus2 = 0; + @JSONField(serialize = false) private RgvTaskModeType taskModeType2; + + @JSONField(serialize = false) + private RgvTaskStatusType taskStatusType2; /* 宸ヤ綅2婧愮珯 @@ -73,6 +104,21 @@ 宸ヤ綅2鐩爣绔� */ private Short destinationStaNo2 = 0; + + /** + * 宸ヤ綅2鐩爣浣嶇疆 + */ + private Integer targetPosition2 = 0; + + /** + * RGV鏀捐揣鍚庤揣鐗╄鍘荤殑鐩殑鍦� + */ + private Integer endStaNo2 = 0; + + /** + * 鎵ц鏂瑰悜 + */ + private Short direction2 = 0; /////////////////////////////////////////////////////////////////////////////////////// /** @@ -81,8 +127,10 @@ * 1 = 宸ヤ綅1浠诲姟纭 * 2 = 宸ヤ綅2浠诲姟纭 * 3 = 宸ヤ綅1銆�2浠诲姟鍚屾椂纭 + * false 鏈‘璁� + * true 鎵ц */ - private Short command = 0; + private Boolean command = false; public void setTaskMode1(Short taskMode1){ this.taskMode1 = taskMode1; @@ -104,6 +152,26 @@ this.taskMode2 = RgvTaskModeType.get(type2).id.shortValue(); } + public void setTaskStatus1(Short taskStatus1){ + this.taskStatus1 = taskStatus1; + this.taskStatusType1 = RgvTaskStatusType.get(taskStatusType1); + } + + public void setTaskStatus1(RgvTaskStatusType type1) { + this.taskStatusType1 = type1; + this.taskStatus1 = RgvTaskStatusType.get(type1).id.shortValue(); + } + + public void setTaskStatus2(Short taskStatus2){ + this.taskStatus2 = taskStatus2; + this.taskStatusType2 = RgvTaskStatusType.get(taskStatusType2); + } + + public void setTaskStatus2(RgvTaskStatusType type2) { + this.taskStatusType2 = type2; + this.taskStatus2 = RgvTaskStatusType.get(type2).id.shortValue(); + } + public static void main(String[] args) { Date date = new Date(); Calendar cal = Calendar.getInstance(); diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java index 1241c1d..eb177fa 100644 --- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java @@ -5,6 +5,7 @@ import com.zy.core.enums.RgvStatusType; import lombok.Data; +import javax.swing.*; import java.util.HashMap; import java.util.Map; @@ -14,7 +15,7 @@ @Data public class RgvProtocol implements Cloneable{ - private Integer RgvNo; + private short RgvNo; /** * 1 = 鎵嬪姩妯″紡 @@ -26,12 +27,13 @@ public RgvModeType modeType; /** - * RGV褰撳墠鐘舵�� + * RGV褰撳墠鐘舵�佸伐浣�1 * 0锛氱┖闂诧紝鏃犱换鍔� * 1锛氫綔涓氫腑 * 2锛氭姤璀� */ public Short status; + /** * 鐘舵�佹灇涓� @@ -41,7 +43,7 @@ /** * 宸ヤ綅1浠诲姟鍙� */ - public Short taskNo1 = 0; + public Integer taskNo1 = 0; /** * RGV宸ヤ綅1褰撳墠鐘舵�� @@ -60,12 +62,18 @@ /** * 宸ヤ綅1鏈夌墿 */ - public Short loaded1; + public Boolean loaded1; /** * RGV褰撳墠浣嶇疆 */ - public Short RgvPos; + public Integer RgvPos; + + /** + * RGV褰撳墠鐩殑浣嶇疆 + */ + public Integer RgvPosDestination; + /** * 璧拌鍦ㄥ畾浣� @@ -74,11 +82,46 @@ */ public Short walkPos; + /** + * 鎬ュ仠 + */ + public Boolean err1; + + /** + * 鏈夌墿鏃犺祫鏂� + */ + public Boolean err2; + + /** + * 鏈夎祫鏂欐棤鐗� + */ + public Boolean err3; + + /** + * 鍛戒护閿欒璧拌鑱旇皟鍐茬獊 + */ + public Boolean err4; + + /** + * 鐩爣涓鸿秴杩囪璧版瀬闄� + */ + public Boolean err5; + + /** + * 鍙橀鍣ㄥ紓甯� + */ + public Boolean err6; + + /** + * 鍏夌數寮傚父 + */ + public Boolean err7; + ////////////////////// 宸ヤ綅2瀹氫箟 ////////////////////////////////////////////////// /** * 宸ヤ綅2浠诲姟鍙� */ - public Short taskNo2 = 0; + public Integer taskNo2 = 0; /** * RGV宸ヤ綅2褰撳墠鐘舵�� @@ -97,7 +140,44 @@ /** * 宸ヤ綅2鏈夌墿 */ - public Short loaded2; + public Boolean loaded2; + +// /** +// * 鎬ュ仠 +// */ +// public Boolean err21; +// +// /** +// * 鏈夌墿鏃犺祫鏂� +// */ +// public Boolean err22; +// +// /** +// * 鏈夎祫鏂欐棤鐗� +// */ +// public Boolean err23; +// +// /** +// * 鍛戒护閿欒璧拌鑱旇皟鍐茬獊 +// */ +// public Boolean err24; +// +// /** +// * 鐩爣涓鸿秴杩囪璧版瀬闄� +// */ +// public Boolean err25; +// +// /** +// * 鍙橀鍣ㄥ紓甯� +// */ +// public Boolean err26; +// +// /** +// * 鍏夌數寮傚父 +// */ +// public Boolean err27; + + /////////////////////////////////////////////////////////////////////////////////////// /** @@ -165,15 +245,24 @@ this.status1 = RgvStatusType.get(type1).id.shortValue(); } -// public void setStatus2(Short status2){ -// this.status2 = status2; -// this.statusType2 = RgvStatusType.get(status2); -// } -// -// public void setStatus2(RgvStatusType type2){ -// this.statusType2 = type2; -// this.status2 = RgvStatusType.get(type2).id.shortValue(); -// } + public void setStatus2(Short status2){ + this.status2 = status2; + this.statusType2 = RgvStatusType.get(status2); + } + + public void setStatus2(RgvStatusType type2){ + this.statusType2 = type2; + this.status2 = RgvStatusType.get(type2).id.shortValue(); + } + + public boolean isLoaded1ing() { + return Boolean.TRUE.equals(this.loaded1); + } + + public boolean isLoaded2ing() { + return Boolean.TRUE.equals(this.loaded2); + } + /** * 鏈�杩戜竴娆″叆鍑哄簱绫诲瀷 @@ -188,7 +277,7 @@ basRgv.setRgvErr(alarm.longValue()); } basRgv.setWrkNo1(taskNo1.intValue()); -// basRgv.setWrkNo2(taskNo2.intValue()); + basRgv.setWrkNo2(taskNo2.intValue()); return basRgv; } diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java index 127f483..3ce65ed 100644 --- a/src/main/java/com/zy/core/thread/RgvThread.java +++ b/src/main/java/com/zy/core/thread/RgvThread.java @@ -18,6 +18,7 @@ import com.zy.core.cache.OutputQueue; import com.zy.core.enums.RgvStatusType; import com.zy.core.enums.RgvTaskModeType; +import com.zy.core.enums.RgvTaskStatusType; import com.zy.core.enums.SlaveType; import com.zy.core.model.RgvSlave; import com.zy.core.model.Task; @@ -52,6 +53,10 @@ //閿佸畾鏍囪 private boolean PakMk = true; + //鍏ュ簱鏍囪 + private boolean PakIn = true; + //鍑哄簱鏍囪 + private boolean PakOut = true; public RgvThread(RgvSlave slave) { this.slave = slave; @@ -92,12 +97,12 @@ command = new RgvCommand(); } command.setRgvNo(slave.getId()); // RGV缂栧彿 - command.setTaskNo1((short) 0); // 宸ヤ綔鍙� - command.setAckFinish1((short) 1); // 浠诲姟瀹屾垚纭浣� - command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡 - command.setSourceStaNo1((short)0); // 婧愮珯 - command.setDestinationStaNo1((short)0); // 鐩爣绔� - command.setCommand((short)0); + command.setTaskNo1(0); // 宸ヤ綔鍙� + command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣� + command.setTaskStatus1(RgvTaskStatusType.NONE); // 浠诲姟妯″紡 + command.setTargetPosition1( 0); // 婧愮珯 + command.setEndStaNo1(0); // 鐩爣绔� + command.setCommand(false); write1(command); break; case 6: @@ -106,33 +111,33 @@ command2 = new RgvCommand(); } command2.setRgvNo(slave.getId()); // RGV缂栧彿 - command2.setTaskNo2((short) 0); // 宸ヤ綔鍙� - command2.setAckFinish2((short) 1); // 浠诲姟瀹屾垚纭浣� - command2.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡 + command2.setTaskNo2(0); // 宸ヤ綔鍙� + command2.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣� + command2.setTaskStatus2(RgvTaskStatusType.NONE); // 浠诲姟妯″紡 command2.setSourceStaNo2((short)0); // 婧愮珯 command2.setDestinationStaNo2((short)0); // 鐩爣绔� - command2.setCommand((short)0); + command2.setCommand(false); write2(command2); break; // 鍥炲師鐐� 閬胯 case 9: - RgvCommand commandAvoidanceXY = (RgvCommand) task.getData(); - if (null == commandAvoidanceXY) { - commandAvoidanceXY = new RgvCommand(); - } - commandAvoidanceXY.setRgvNo(slave.getId()); // RGV缂栧彿 - commandAvoidanceXY.setTaskNo1((short) 9999); // 宸ヤ綔鍙� - commandAvoidanceXY.setAckFinish1((short) 1); // 浠诲姟瀹屾垚纭浣� - commandAvoidanceXY.setTaskMode1(RgvTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡 - commandAvoidanceXY.setSourceStaNo1((short)0); // 婧愮珯 - commandAvoidanceXY.setDestinationStaNo1((short)0); // 鐩爣绔� -// commandAvoidanceXY.setTaskNo2((short) 0); // 宸ヤ綔鍙� -// commandAvoidanceXY.setAckFinish2((short) 1); // 浠诲姟瀹屾垚纭浣� -// commandAvoidanceXY.setTaskMode2(RgvTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡 -// commandAvoidanceXY.setSourceStaNo2((short)0); // 婧愮珯 -// commandAvoidanceXY.setDestinationStaNo2((short)0); // 鐩爣绔� - commandAvoidanceXY.setCommand((short)0); - write(commandAvoidanceXY); +// RgvCommand commandAvoidanceXY = (RgvCommand) task.getData(); +// if (null == commandAvoidanceXY) { +// commandAvoidanceXY = new RgvCommand(); +// } +// commandAvoidanceXY.setRgvNo(slave.getId()); // RGV缂栧彿 +// commandAvoidanceXY.setTaskNo1((short) 9999); // 宸ヤ綔鍙� +// commandAvoidanceXY.setAckFinish1((short) 1); // 浠诲姟瀹屾垚纭浣� +// commandAvoidanceXY.setTaskMode1(RgvTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡 +// commandAvoidanceXY.setSourceStaNo1((short)0); // 婧愮珯 +// commandAvoidanceXY.setDestinationStaNo1((short)0); // 鐩爣绔� +//// commandAvoidanceXY.setTaskNo2((short) 0); // 宸ヤ綔鍙� +//// commandAvoidanceXY.setAckFinish2((short) 1); // 浠诲姟瀹屾垚纭浣� +//// commandAvoidanceXY.setTaskMode2(RgvTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡 +//// commandAvoidanceXY.setSourceStaNo2((short)0); // 婧愮珯 +//// commandAvoidanceXY.setDestinationStaNo2((short)0); // 鐩爣绔� +// commandAvoidanceXY.setCommand((short)0); +// write(commandAvoidanceXY); break; default: break; @@ -152,21 +157,30 @@ if (null == rgvProtocol) { rgvProtocol = new RgvProtocol(); } - rgvProtocol.setMode((short) -1); + //灏忚溅鐘舵�� rgvProtocol.setStatus((short)-1); - rgvProtocol.setTaskNo1((short)0); + rgvProtocol.setRgvPosDestination(0); + rgvProtocol.setMode((short) -1); + rgvProtocol.setRgvPos(0); + rgvProtocol.setErr1(false); + rgvProtocol.setErr2(false); + rgvProtocol.setErr3(false); + rgvProtocol.setErr4(false); + rgvProtocol.setErr5(false); + rgvProtocol.setErr6(false); + rgvProtocol.setErr7(false); + //宸ヤ綅1鐘舵�� + rgvProtocol.setTaskNo1(0); rgvProtocol.setStatus1((short)-1); - rgvProtocol.setLoaded1((short)0); - rgvProtocol.setWalkPos((short)0); - rgvProtocol.setRgvPos((short)0); + rgvProtocol.setLoaded1(false); //宸ヤ綅2鐘舵�� - rgvProtocol.setTaskNo2((short)0); + rgvProtocol.setTaskNo2(0); rgvProtocol.setStatus2((short)-1); - rgvProtocol.setLoaded2((short)0); - rgvProtocol.setAlarm((short)0); - rgvProtocol.setxSpeed((short) 0); - rgvProtocol.setxDistance((short) 0); - rgvProtocol.setxDuration((short) 0); + rgvProtocol.setLoaded2(false); +// rgvProtocol.setAlarm((short)0); +// rgvProtocol.setxSpeed((short) 0); +// rgvProtocol.setxDistance((short) 0); +// rgvProtocol.setxDuration((short) 0); } @Override @@ -189,6 +203,14 @@ return result; } + private void setBool(byte[] buffer, int byteIndex, int bitIndex, boolean value) { + if (value) { + buffer[byteIndex] |= (1 << bitIndex); // 缃綅 + } else { + buffer[byteIndex] &= ~(1 << bitIndex); // 娓呴浂 + } + } + /** * 璇诲彇鐘舵�� */ @@ -196,26 +218,49 @@ try { OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 30); if (result.IsSuccess) { - if (null == rgvProtocol || rgvProtocol.getRgvNo() == null) { + if (null == rgvProtocol) { rgvProtocol = new RgvProtocol(); - rgvProtocol.setRgvNo(slave.getId()); + rgvProtocol.setRgvNo(siemensNet.getByteTransform().TransInt16(result.Content, 0)); + } - rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0)); - rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 2)); - rgvProtocol.setTaskNo1(siemensNet.getByteTransform().TransInt16(result.Content, 4)); - rgvProtocol.setStatus1(siemensNet.getByteTransform().TransInt16(result.Content, 6)); - rgvProtocol.setLoaded1(siemensNet.getByteTransform().TransInt16(result.Content, 8)); - rgvProtocol.setRgvPos(siemensNet.getByteTransform().TransInt16(result.Content, 10)); - rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 12)); - rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 14)); + rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 2)); + rgvProtocol.setRgvPos(siemensNet.getByteTransform().TransInt32(result.Content, 4)); + rgvProtocol.setRgvPosDestination( siemensNet.getByteTransform().TransInt32(result.Content, 8)); + rgvProtocol.setStatus1(siemensNet.getByteTransform().TransInt16(result.Content, 12)); + rgvProtocol.setStatus2(siemensNet.getByteTransform().TransInt16(result.Content, 14)); + rgvProtocol.setTaskNo1(siemensNet.getByteTransform().TransInt32(result.Content, 16)); + rgvProtocol.setTaskNo2(siemensNet.getByteTransform().TransInt32(result.Content, 20)); + + boolean[] status1 = siemensNet.getByteTransform().TransBool(result.Content, 24, 2); + rgvProtocol.setLoaded1(status1[0]); + rgvProtocol.setLoaded2(status1[1]); + boolean[] status2 = siemensNet.getByteTransform().TransBool(result.Content, 26, 1); + rgvProtocol.setErr1(status2[0]); + rgvProtocol.setErr2(status2[1]); + rgvProtocol.setErr3(status2[2]); + rgvProtocol.setErr4(status2[3]); + rgvProtocol.setErr5(status2[4]); + rgvProtocol.setErr6(status2[5]); + rgvProtocol.setErr7(status2[6]); + boolean[] status3 = siemensNet.getByteTransform().TransBool(result.Content, 27, 1); + rgvProtocol.setErr1(status3[0]); + rgvProtocol.setErr2(status3[1]); + rgvProtocol.setErr3(status3[2]); + rgvProtocol.setErr4(status3[3]); + rgvProtocol.setErr5(status3[4]); + rgvProtocol.setErr6(status3[5]); + rgvProtocol.setErr7(status3[6]); + +// rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 12)); +// rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 14)); // rgvProtocol.setTaskNo2(siemensNet.getByteTransform().TransInt16(result.Content, 4)); // rgvProtocol.setLoaded2(siemensNet.getByteTransform().TransInt16(result.Content, 8)); // rgvProtocol.setStatus2(siemensNet.getByteTransform().TransInt16(result.Content, 16)); - rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 18)); +// rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 18)); // rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 20)); - rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 22)); +// rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 22)); // rgvProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 24)); - rgvProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 26)); +// rgvProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 26)); // rgvProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 28)); // rgvProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 30)); // rgvProtocol.setTemp5(siemensNet.getByteTransform().TransInt16(result.Content, 32)); @@ -230,8 +275,8 @@ || rgvProtocol.getStatusType1().equals(RgvStatusType.FETCHWAITING)) { if (resetFlag1) { RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setAckFinish1((short)1); - if (write(rgvCommand)) { + rgvCommand.setAckFinish1(true); + if (write1(rgvCommand)) { resetFlag1 = false; } } @@ -242,8 +287,8 @@ || rgvProtocol.getStatusType2().equals(RgvStatusType.FETCHWAITING)) { if (resetFlag2) { RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setAckFinish2((short)1); - if (write(rgvCommand)) { + rgvCommand.setAckFinish2(true); + if (write2(rgvCommand)) { resetFlag2 = false; } } @@ -275,73 +320,73 @@ } } - /** - * 宸ヤ綅1銆�2鍚屾椂鍐欏叆鏁版嵁 - */ - private boolean write(RgvCommand command) throws InterruptedException { - if (null == command) { - log.error("RGV鍐欏叆鍛戒护涓虹┖"); - return false; - } -// convertRow(command); - command.setRgvNo(slave.getId()); - short[] array = new short[11]; - array[0] = command.getAckFinish1(); - array[1] = command.getTaskNo1(); - array[2] = command.getTaskMode1(); - array[3] = command.getSourceStaNo1(); - array[4] = command.getDestinationStaNo1(); +// /** +// * 宸ヤ綅1銆�2鍚屾椂鍐欏叆鏁版嵁 +// */ +// private boolean write(RgvCommand command) throws InterruptedException { +// if (null == command) { +// log.error("RGV鍐欏叆鍛戒护涓虹┖"); +// return false; +// } +//// convertRow(command); +// command.setRgvNo(slave.getId()); +// short[] array = new short[11]; // array[0] = command.getAckFinish1(); // array[1] = command.getTaskNo1(); // array[2] = command.getTaskMode1(); // array[3] = command.getSourceStaNo1(); // array[4] = command.getDestinationStaNo1(); -// array[5] = command.getAckFinish2(); -// array[6] = command.getTaskNo2(); -// array[7] = command.getTaskMode2(); -// array[8] = command.getSourceStaNo2(); -// array[9] = command.getDestinationStaNo2(); -// array[10] = command.getCommand(); - OperateResult result = siemensNet.Write("DB100.0", array); - -// if (command.getAckFinish1() == 0 && command.getAckFinish2() == 0) { -// short commandFinish = 3; //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆 -// Thread.sleep(100L); -// result = siemensNet.Write("DB100.20", commandFinish); +//// array[0] = command.getAckFinish1(); +//// array[1] = command.getTaskNo1(); +//// array[2] = command.getTaskMode1(); +//// array[3] = command.getSourceStaNo1(); +//// array[4] = command.getDestinationStaNo1(); +//// array[5] = command.getAckFinish2(); +//// array[6] = command.getTaskNo2(); +//// array[7] = command.getTaskMode2(); +//// array[8] = command.getSourceStaNo2(); +//// array[9] = command.getDestinationStaNo2(); +//// array[10] = command.getCommand(); +// OperateResult result = siemensNet.Write("DB100.0", array); +// +//// if (command.getAckFinish1() == 0 && command.getAckFinish2() == 0) { +//// short commandFinish = 3; //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆 +//// Thread.sleep(100L); +//// result = siemensNet.Write("DB100.20", commandFinish); +//// } +// +// try { +// // 鏃ュ織璁板綍 +// BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class); +// BasRgvOpt basRgvOpt = new BasRgvOpt( +// command.getTaskNo1().intValue(), +// command.getTaskNo2().intValue(), +// command.getRgvNo(), +// new Date(), +// command.getTaskModeType1().toString(), +// command.getSourceStaNo1().intValue(), +// command.getDestinationStaNo1().intValue(), +// command.getSourceStaNo2().intValue(), +// command.getDestinationStaNo2().intValue(), +// null, +// new Date(), +// null +// ); +// bean.insert(basRgvOpt); +// } catch (Exception ignore) {} +// +// if (result != null && result.IsSuccess) { +// Thread.sleep(200); +// this.readStatus(); +// log.info("RGV 鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); +// OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); +// return true; +// } else { +// OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戝啓鍏GV plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); +// log.error("鍐欏叆RGV plc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); +// return false; // } - - try { - // 鏃ュ織璁板綍 - BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class); - BasRgvOpt basRgvOpt = new BasRgvOpt( - command.getTaskNo1().intValue(), - command.getTaskNo2().intValue(), - command.getRgvNo(), - new Date(), - command.getTaskModeType1().toString(), - command.getSourceStaNo1().intValue(), - command.getDestinationStaNo1().intValue(), - command.getSourceStaNo2().intValue(), - command.getDestinationStaNo2().intValue(), - null, - new Date(), - null - ); - bean.insert(basRgvOpt); - } catch (Exception ignore) {} - - if (result != null && result.IsSuccess) { - Thread.sleep(200); - this.readStatus(); - log.info("RGV 鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); - return true; - } else { - OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戝啓鍏GV plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - log.error("鍐欏叆RGV plc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - return false; - } - } +// } /** * 宸ヤ綅1鍐欏叆鏁版嵁 @@ -352,38 +397,49 @@ return false; } - OperateResultExOne<byte[]> result3 = siemensNet.Read("DB100.0", (short) 12); - OperateResultExOne<byte[]> result4 = siemensNet.Read("DB100.10", (short) 2); - if (result3.IsSuccess){ + OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 34); +// OperateResultExOne<byte[]> result4 = siemensNet.Read("DB100.10", (short) 2); + if (result1.IsSuccess){ RgvCommand one = new RgvCommand(); + one.setTargetPosition1(siemensNet.getByteTransform().TransInt32(result1.Content, 0)); + one.setEndStaNo1(siemensNet.getByteTransform().TransInt32(result1.Content, 4)); + one.setTaskStatus1(siemensNet.getByteTransform().TransInt16(result1.Content, 8)); + one.setTaskNo1(siemensNet.getByteTransform().TransInt32(result1.Content, 10)); + one.setDirection1(siemensNet.getByteTransform().TransInt16(result1.Content, 14)); // one.setAckFinish1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 0)); - one.setTaskNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 2)); - one.setTaskMode1(siemensNet.getByteTransform().TransInt16(result3.Content, 4)); - one.setSourceStaNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 6)); - one.setDestinationStaNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 8)); - one.setCommand(siemensNet.getByteTransform().TransInt16(result4.Content, 0)); +// one.setTaskNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 2)); +// one.setTaskMode1(siemensNet.getByteTransform().TransInt16(result3.Content, 4)); +// one.setSourceStaNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 6)); +// one.setDestinationStaNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 8)); +// one.setCommand(siemensNet.getByteTransform().TransInt16(result4.Content, 0)); News.error("RGV鍛戒护涓嬪彂鍓嶈鍙栫姸鎬乕id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); } - OperateResult result8 = siemensNet.Write("DB100.10", (short) 0); - if (result8.IsSuccess){ + OperateResult result2 = siemensNet.Write("DB100.34", false); + if (result2.IsSuccess){ News.error("涓嬪彂鍓嶆妸杞﹀瓙纭浣嶇疆涓�0"); } - -// siemensNet.Write("DB100.20", command.getCommand()); - + byte[] writeBytes = new byte[34]; command.setRgvNo(slave.getId()); - short[] array = new short[5]; - array[0] = command.getAckFinish1(); - array[1] = command.getTaskNo1(); - array[2] = command.getTaskMode1(); - array[3] = command.getSourceStaNo1(); - array[4] = command.getDestinationStaNo1(); + siemensNet.getByteTransform().TransInt32(writeBytes, 0, command.getTargetPosition1()); + siemensNet.getByteTransform().TransInt32(writeBytes, 4, command.getEndStaNo1()); + siemensNet.getByteTransform().TransInt16(writeBytes, 8, command.getTaskStatus1()); + siemensNet.getByteTransform().TransInt32(writeBytes, 10, command.getTaskNo1()); + siemensNet.getByteTransform().TransInt16(writeBytes, 14, command.getDirection1()); + setBool(writeBytes, 32, 0, command.getAckFinish1()); + +// command.setRgvNo(slave.getId()); +// short[] array = new short[5]; +// array[0] = command.getAckFinish1(); +// array[1] = command.getTaskNo1(); +// array[2] = command.getTaskMode1(); +// array[3] = command.getSourceStaNo1(); +// array[4] = command.getDestinationStaNo1(); // siemensNet.Write("DB100.10", command.getCommand()); - OperateResult result = siemensNet.Write("DB100.0", array); + OperateResult result = siemensNet.Write("DB100.0", writeBytes); if (!result.IsSuccess){ News.error("鍐欏叆RGVplc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===> [id:{}],{}",slave.getId(),JSON.toJSON(command)); @@ -396,20 +452,21 @@ //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� Thread.sleep(400); try { - OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 12); + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 34); if (resultRead.IsSuccess){ RgvCommand one = new RgvCommand(); -// one.setAckFinish1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 0)); - one.setTaskNo1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2)); - one.setTaskMode1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4)); - one.setSourceStaNo1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6)); - one.setDestinationStaNo1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8)); + one.setDirection1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14)); + one.setTaskNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 10)); + one.setTaskStatus1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8)); + one.setEndStaNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 4)); + one.setTargetPosition1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 0)); if ( - !command.getTaskNo1().equals(one.getTaskNo1()) || - !command.getTaskMode1().equals(one.getTaskMode1()) || - !command.getSourceStaNo1().equals(one.getSourceStaNo1()) || - !command.getDestinationStaNo1().equals(one.getDestinationStaNo1()) - ){ + !command.getDirection1().equals(one.getDirection1()) || + !command.getTaskNo1().equals(one.getTaskNo1()) || + !command.getTaskStatus1().equals(one.getTaskStatus1()) || + !command.getEndStaNo1().equals(one.getEndStaNo1()) || + !command.getTargetPosition1().equals(one.getTargetPosition1()) + ) { try{ News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); }catch (Exception e){ @@ -432,7 +489,7 @@ News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�"); } - if (command.getAckFinish1() == 0) { + if (command.getAckFinish1()) { if (result.IsSuccess) { Thread.sleep(300); //浠诲姟涓嬪彂娆℃暟 @@ -440,15 +497,15 @@ do { writeCount2++; - short commandFinish = (short) 1; - result = siemensNet.Write("DB100.10", commandFinish); + boolean commandFinish = false; + result = siemensNet.Write("DB100.32.0", commandFinish); if(result.IsSuccess){ //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� Thread.sleep(200); - OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.10", (short) 2); + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.32", (short) 2); if (resultRead.IsSuccess) { - commandFinish=siemensNet.getByteTransform().TransInt16(resultRead.Content, 0); - if (commandFinish != 1){ + commandFinish=siemensNet.getByteTransform().TransBool(resultRead.Content, 0); + if (!commandFinish){ News.error("RGV浠诲姟纭浣�"+commandFinish+"鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); }else{ //浠诲姟鍛戒护鍐欏叆鎴愬姛 @@ -475,15 +532,12 @@ // 鏃ュ織璁板綍 BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class); BasRgvOpt basRgvOpt = new BasRgvOpt( - command.getTaskNo1().intValue(), - command.getTaskNo2().intValue(), + command.getTaskNo1(), command.getRgvNo(), new Date(), - command.getTaskModeType1().toString(), - command.getSourceStaNo1().intValue(), - command.getDestinationStaNo1().intValue(), - command.getSourceStaNo2().intValue(), - command.getDestinationStaNo2().intValue(), + command.getTaskStatus1().toString(), + command.getTargetPosition1(), + command.getEndStaNo1(), null, new Date(), null @@ -515,36 +569,124 @@ return false; } + OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 34); + if (result1.IsSuccess){ + RgvCommand one = new RgvCommand(); + one.setTargetPosition2(siemensNet.getByteTransform().TransInt32(result1.Content, 16)); + one.setEndStaNo2(siemensNet.getByteTransform().TransInt32(result1.Content, 20)); + one.setTaskStatus2(siemensNet.getByteTransform().TransInt16(result1.Content, 24)); + one.setTaskNo2(siemensNet.getByteTransform().TransInt32(result1.Content, 26)); + one.setDirection2(siemensNet.getByteTransform().TransInt16(result1.Content, 30)); + News.error("RGV鍛戒护涓嬪彂鍓嶈鍙栫姸鎬乕id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); + } + + + OperateResult result2 = siemensNet.Write("DB100.34", false); + if (result2.IsSuccess){ + News.error("涓嬪彂鍓嶆妸杞﹀瓙纭浣嶇疆涓�0"); + } + byte[] writeBytes = new byte[34]; command.setRgvNo(slave.getId()); - short[] array = new short[6]; - array[0] = command.getAckFinish2(); - array[1] = command.getTaskNo2(); - array[2] = command.getTaskMode2(); - array[3] = command.getSourceStaNo2(); - array[4] = command.getDestinationStaNo2(); - array[5] = command.getCommand(); + siemensNet.getByteTransform().TransInt32(writeBytes, 16, command.getTargetPosition2()); + siemensNet.getByteTransform().TransInt32(writeBytes, 20, command.getEndStaNo2()); + siemensNet.getByteTransform().TransInt16(writeBytes, 24, command.getTaskStatus2()); + siemensNet.getByteTransform().TransInt32(writeBytes, 26, command.getTaskNo2()); + siemensNet.getByteTransform().TransInt16(writeBytes, 30, command.getDirection2()); + setBool(writeBytes, 32, 1, command.getAckFinish2()); - OperateResult result = siemensNet.Write("DB100.10", array); + OperateResult result = siemensNet.Write("DB100.0", writeBytes); - if (command.getAckFinish2() == 0) { - short commandFinish = 2; //宸ヤ綅2浠诲姟鍐欏叆 - Thread.sleep(100L); - result = siemensNet.Write("DB100.20", commandFinish); + if (!result.IsSuccess){ + News.error("鍐欏叆RGVplc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===> [id:{}],{}",slave.getId(),JSON.toJSON(command)); + MessageQueue.offer(SlaveType.Rgv,slave.getId(),new Task(5,command)); + Thread.sleep(100); + readStatus(); + return false; + } + + //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� + Thread.sleep(400); + try { + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 34); + if (resultRead.IsSuccess){ + RgvCommand one = new RgvCommand(); + one.setDirection1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 30)); + one.setTaskNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 26)); + one.setTaskStatus1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 24)); + one.setEndStaNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 20)); + one.setTargetPosition1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 16)); + if ( + !command.getDirection2().equals(one.getDirection2()) || + !command.getTaskNo2().equals(one.getTaskNo2()) || + !command.getTaskStatus2().equals(one.getTaskStatus2()) || + !command.getEndStaNo2().equals(one.getEndStaNo2()) || + !command.getTargetPosition2().equals(one.getTargetPosition2()) + ) { + try{ + News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); + }catch (Exception e){ + try{ + News.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSON(command),JSON.toJSON(resultRead)); + }catch (Exception e1){ + News.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSON(command)); + } + } + News.error("Rgv鍛戒护鍥炶澶辫触鍚庯紝閲嶆柊娣诲姞浠诲姟鍒伴槦鍒� ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command)); + MessageQueue.offer(SlaveType.Rgv, slave.getId(), new Task(5, command)); + Thread.sleep(100); + readStatus(); + return false; + }else { + News.info("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); + } + } + }catch (Exception e){ + News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�"); + } + + if (command.getAckFinish1()) { + if (result.IsSuccess) { + Thread.sleep(300); + //浠诲姟涓嬪彂娆℃暟 + int writeCount2 = 0; + + do { + writeCount2++; + boolean commandFinish = false; + result = siemensNet.Write("DB100.32.1", commandFinish); + if(result.IsSuccess){ + //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� + Thread.sleep(200); + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.32", (short) 2); + if (resultRead.IsSuccess) { + commandFinish=siemensNet.getByteTransform().TransBool(resultRead.Content, 1); + if (!commandFinish){ + News.error("RGV浠诲姟纭浣�"+commandFinish+"鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); + }else{ + //浠诲姟鍛戒护鍐欏叆鎴愬姛 + News.info("RGV浠诲姟纭浣�"+commandFinish+"鍥炶鎴愬姛锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); + break; + } + }else { + News.error("RGV浠诲姟纭浣�"+commandFinish+"鍥炶澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); + } + } else { + News.error("RGV浠诲姟纭浣�"+commandFinish+"鍐欏叆澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); + } + }while (writeCount2<5); + } } try { // 鏃ュ織璁板綍 BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class); BasRgvOpt basRgvOpt = new BasRgvOpt( - command.getTaskNo1().intValue(), - command.getTaskNo2().intValue(), + command.getTaskNo2(), command.getRgvNo(), new Date(), - command.getTaskModeType1().toString(), - command.getSourceStaNo1().intValue(), - command.getDestinationStaNo1().intValue(), - command.getSourceStaNo2().intValue(), - command.getDestinationStaNo2().intValue(), + command.getTaskStatus2().toString(), + command.getTargetPosition2(), + command.getEndStaNo2(), null, new Date(), null diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index 1148d41..d08b7be 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -269,23 +269,23 @@ } } - //RGV灏忚溅3 -// Thread.sleep(100); - OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB50.224",(short)10); - if (result5.IsSuccess) { - BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo((int) siemensS7Net.getByteTransform().TransInt16(result5.Content, 0)); - if (!Cools.isEmpty(basRgvMap)){ - Integer siteId = 3; - StaProtocol staProtocol = station.get(siteId); - if (null == staProtocol) { - staProtocol = new StaProtocol(); - staProtocol.setSiteId(siteId); - station.put(siteId, staProtocol); - } - staProtocol.setAutoing(true); - staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result5.Content, 8))); - } - } +// //RGV灏忚溅3 +//// Thread.sleep(100); +// OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB50.224",(short)10); +// if (result5.IsSuccess) { +// BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo((int) siemensS7Net.getByteTransform().TransInt16(result5.Content, 0)); +// if (!Cools.isEmpty(basRgvMap)){ +// Integer siteId = 3; +// StaProtocol staProtocol = station.get(siteId); +// if (null == staProtocol) { +// staProtocol = new StaProtocol(); +// staProtocol.setSiteId(siteId); +// station.put(siteId, staProtocol); +// } +// staProtocol.setAutoing(true); +// staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result5.Content, 8))); +// } +// } //鏉$爜鎵弿鍣� ArrayList<Integer> barcodeList = BarcodeList; diff --git a/src/main/webapp/static/js/console.map.js b/src/main/webapp/static/js/console.map.js index 4c56441..5bb44ae 100644 --- a/src/main/webapp/static/js/console.map.js +++ b/src/main/webapp/static/js/console.map.js @@ -309,7 +309,9 @@ "stns": [ {"type": "track", "id": "lb_trCart11", "text": "", "top": 65, "left": 1000, "width": 6, "height": 560}, {"type": "track", "id": "lb_trCart12", "text": "", "top": 65, "left": 1020, "width": 6, "height": 560}, - { "type": "stn", "id": "site-1", "text": "1", "top": 84, "left": 1000, "width": 35, "height": 20 }, + { "type": "stn", "id": "site-1", "text": "1", "top": 84, "left": 984, "width": 30, "height": 20 }, + { "type": "stn", "id": "site-2", "text": "2", "top": 84, "left": 1016, "width": 30, "height": 20 }, + { "type": "stn", "id": "site-1001", "text": "1001", "top": 84, "left": 870, "width": 35, "height": 20 }, { "type": "stn", "id": "site-1002", "text": "1002", "top": 84, "left": 907, "width": 35, "height": 20 }, { "type": "stn", "id": "site-1004", "text": "1004", "top": 84, "left": 944, "width": 35, "height": 20 }, @@ -444,8 +446,8 @@ "width": 2900, "height": 600, "stns": [ - { "type": "stn", "id": "site-2", "text": "2", "top": 84, "left": 1000, "width": 35, "height": 20 }, - + { "type": "stn", "id": "site-3", "text": "1", "top": 84, "left": 984, "width": 30, "height": 20 }, + { "type": "stn", "id": "site-4", "text": "2", "top": 84, "left": 1016, "width": 30, "height": 20 }, {"type": "track", "id": "lb_trCart21", "text": "", "top": 65, "left": 1000, "width": 6, "height": 560}, {"type": "track", "id": "lb_trCart22", "text": "", "top": 65, "left": 1020, "width": 6, "height": 560}, { "type": "stn", "id": "site-2003", "text": "2003", "top": 84, "left": 926, "width": 54, "height": 20 }, -- Gitblit v1.9.1