From 8478a159d79bf9ca5da04ab18562f2d7cdddb05c Mon Sep 17 00:00:00 2001 From: lty <876263681@qq.com> Date: 星期四, 25 九月 2025 17:06:08 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/WrkMastStaServiceImpl.java | 12 src/main/java/com/zy/asrs/controller/RgvController.java | 82 - src/main/java/com/zy/asrs/utils/RouteUtils.java | 23 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 1366 ++++++++++---------------------- src/main/webapp/views/console.html | 6 src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java | 9 src/main/webapp/views/rgv.html | 69 + src/main/java/com/zy/asrs/service/WrkMastStaService.java | 7 src/main/webapp/static/css/rgv.css | 2 src/main/resources/mapper/WrkMastStaMapper.xml | 54 src/main/java/com/zy/asrs/domain/param/RgvOperatorParam.java | 13 src/main/java/com/zy/core/thread/RgvThread.java | 633 +------------- src/main/java/com/zy/core/thread/SiemensCrnThread.java | 1 src/main/webapp/static/js/console.js | 2 src/main/java/com/zy/asrs/entity/BasRgvOpt.java | 8 src/main/java/com/zy/core/MainProcess.java | 4 src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 4 src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java | 2 src/main/java/com/zy/core/model/command/RgvCommand.java | 32 src/main/java/com/zy/core/thread/SiemensDevpThread.java | 23 src/main/resources/application.yml | 124 ++ 21 files changed, 811 insertions(+), 1,665 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java index 085fc48..bbebddf 100644 --- a/src/main/java/com/zy/asrs/controller/RgvController.java +++ b/src/main/java/com/zy/asrs/controller/RgvController.java @@ -22,6 +22,7 @@ import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.RgvModeType; 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; @@ -89,16 +90,16 @@ if (rgvProtocol == null) continue; vo.setStatusType(rgvProtocol.modeType.desc); // 妯″紡鐘舵�� -// vo.setStatus(rgvProtocol.getMode().desc); // 鐘舵�� + vo.setStatus(String.valueOf(rgvProtocol.getMode())); // 鐘舵�� 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.setRgvPos1(rgvProtocol.getRgvPosI2()); vo.setWalkPos(Objects.equals(rgvProtocol.getWalkPos(), 1) ? "鍦ㄥ畾浣�" : "涓嶅湪瀹氫綅"); vo.setPakMk(rgvThread.isPakMk() ? "鏃犻攣" : "閿佸畾"); vo.setWorkNo2(rgvProtocol.getTaskNo2()); // 宸ヤ綅2浠诲姟鍙� - vo.setStatus2(rgvProtocol.getStatusType2().desc); // 宸ヤ綅2鐘舵�� +// vo.setStatus2(rgvProtocol.getStatusType2().desc); // 宸ヤ綅2鐘舵�� vo.setLoading2(rgvProtocol.getLoaded2() ? "鏈夌墿" : "鏃犵墿"); // 宸ヤ綅2鏈夌墿 // --- 閬嶅巻 errX 瀛楁鐢熸垚 warnCode 鍜� alarm --- @@ -152,22 +153,11 @@ continue; } - vo.setWorkNo(rgvProtocol.getTaskNo1()); // 浠诲姟鍙� - if (rgvProtocol.getTaskNo1()>0) { - WrkMast wrkMast = wrkMastService.selectById(rgvProtocol.getTaskNo1()); - if (wrkMast != null) { - vo.setStatus(RgvStatusType.process(wrkMast.getIoType()).getDesc()); // 妯″紡鐘舵�� - vo.setSourceStaNo(wrkMast.getSourceStaNo$()); // 婧愮珯 - vo.setStaNo(wrkMast.getStaNo$()); // 鐩爣绔� - vo.setSourceLocNo(wrkMast.getSourceLocNo()); // 婧愬簱浣� - vo.setLocNo(wrkMast.getLocNo()); // 鐩爣搴撲綅 - } - } else { - vo.setStatus(rgvProtocol.modeType.equals(RgvModeType.AUTO)? rgvProtocol.modeType.desc: RgvModeType.HAND.desc); // 妯″紡鐘舵�� - } - vo.setXspeed(rgvProtocol.getXSpeed()); // 璧拌閫熷害锛坢/min) - vo.setXdistance(rgvProtocol.getXDistance()); // 璧拌璺濈(Km) - vo.setXduration(rgvProtocol.getXDuration()); // 璧拌鏃堕暱(H) + vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 宸ヤ綅1宸ヤ綔鍙� + vo.setWorkNo2(rgvProtocol.getTaskNo2()); //宸ヤ綅2 宸ヤ綔鍙� + vo.setStaNo(String.valueOf(rgvProtocol.getRgvPosDestination())); //灏忚溅鐩爣绔� + vo.setStatus(rgvProtocol.modeType.equals(RgvModeType.AUTO)? rgvProtocol.modeType.desc: RgvModeType.HAND.desc); // 妯″紡鐘舵�� + } return R.ok().add(list); } @@ -195,15 +185,15 @@ RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo1(0); // 宸ヤ綔鍙� + command.setTaskNo(0); // 宸ヤ綔鍙� command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯 - command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔� +// command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔� command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� command.setTaskNo2(0); // 宸ヤ綔鍙� command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 - command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� +// command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� command.setCommand(true); return rgvControl(command)? R.ok(): R.error(); @@ -214,16 +204,17 @@ public R rgvFetch(RgvOperatorParam param){ RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 - command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo1(0); // 宸ヤ綔鍙� - command.setTaskMode1(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栬揣 - command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯 - command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔� - command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo2( 0); // 宸ヤ綔鍙� - command.setTaskMode2(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栨斁璐� - command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 - command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� + command.setWrkTaskPri(param.getWorkSta()); //鎵ц宸ヤ綅 + command.setTaskNo(Math.toIntExact(param.getWorkNo())); // 宸ヤ綔鍙� + command.setTaskStatus(RgvTaskStatusType.FETCH); // 浠诲姟妯″紡: 鍙栬揣 + command.setTargetPosition(Integer.valueOf(param.getStaNo())); // 鐩爣绔� +// command.setTaskMode2(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栨斁璐� +// command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� +// command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯 +// command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� +// command.setTaskNo2( 0); // 宸ヤ綔鍙� +// command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 +// command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� command.setCommand(true); return rgvControl(command)? R.ok(): R.error(); @@ -234,16 +225,17 @@ public R rgvPut(RgvOperatorParam param){ RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 - command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo1(0); // 宸ヤ綔鍙� - command.setTaskMode1(RgvTaskModeType.PUT); // 浠诲姟妯″紡: 鏀捐揣 - command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯 - command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔� - command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo2( 0); // 宸ヤ綔鍙� - command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� - command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 - command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� + command.setWrkTaskPri(param.getWorkSta()); //鎵ц宸ヤ綅 + command.setTaskNo(Math.toIntExact(param.getWorkNo())); // 宸ヤ綔鍙� + command.setTaskStatus(RgvTaskStatusType.PUT); // 浠诲姟妯″紡: 鍙栬揣 + command.setTargetPosition(Integer.valueOf(param.getStaNo())); // 鐩爣绔� +// command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� +// command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯 +// command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� +// command.setTaskNo2( 0); // 宸ヤ綔鍙� +// command.setTaskMode2(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栨斁璐� +// command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 +// command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� command.setCommand(true); return rgvControl(command)? R.ok(): R.error(); @@ -257,7 +249,7 @@ RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo1(0); // 宸ヤ綔鍙� +// command.setTaskNo1(0); // 宸ヤ綔鍙� command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡 command.setSourceStaNo1((short) 0); // 婧愮珯 command.setDestinationStaNo1((short) 0); // 鐩爣绔� @@ -280,7 +272,7 @@ RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo1( 0); // 宸ヤ綔鍙� +// command.setTaskNo1( 0); // 宸ヤ綔鍙� command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡 command.setSourceStaNo1((short) 0); // 婧愮珯 command.setDestinationStaNo1((short) 0); // 鐩爣绔� @@ -346,7 +338,7 @@ if (rgvProtocol == null) { throw new CoolException("RGV涓嶅湪绾�"); } - if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, command))) { + if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(2, command))) { return true; } else { throw new CoolException("鍛戒护涓嬪彂澶辫触"); diff --git a/src/main/java/com/zy/asrs/domain/param/RgvOperatorParam.java b/src/main/java/com/zy/asrs/domain/param/RgvOperatorParam.java index 3b0881f..eae91a3 100644 --- a/src/main/java/com/zy/asrs/domain/param/RgvOperatorParam.java +++ b/src/main/java/com/zy/asrs/domain/param/RgvOperatorParam.java @@ -11,15 +11,20 @@ // RGV鍙� private Integer rgvNo; + //宸ヤ綔鍙� + private Long workNo; + + //鎵ц宸ヤ綅 + private Integer workSta; + // 宸ヤ綅1婧愮珯 private Short sourceStaNo1; - // 宸ヤ綅1鐩爣绔� - private Short staNo1; + // 宸ヤ綅2婧愮珯 private Short sourceStaNo2; - // 宸ヤ綅2鐩爣绔� - private Short staNo2; + // 宸ヤ綅鐩爣绔� + private Short staNo; } 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 dd6989b..07b0b8e 100644 --- a/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java +++ b/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java @@ -12,8 +12,10 @@ // RGV鍙� private Integer rgvNo; - // 宸ヤ綔鍙� - private Integer workNo = 0; + // 宸ヤ綔鍙�1 + private Integer workNo1 = 0; + + private Integer workNo2 = 0; // 鐘舵�� private String status = "-"; @@ -21,6 +23,9 @@ // 婧愮珯 private String sourceStaNo = "-"; + //鎵ц宸ヤ綅 + private Integer workSta = 0; + // 鐩爣绔� private String staNo = "-"; diff --git a/src/main/java/com/zy/asrs/entity/BasRgvOpt.java b/src/main/java/com/zy/asrs/entity/BasRgvOpt.java index cfad4ad..4a2437c 100644 --- a/src/main/java/com/zy/asrs/entity/BasRgvOpt.java +++ b/src/main/java/com/zy/asrs/entity/BasRgvOpt.java @@ -111,9 +111,9 @@ private Integer posLev; /** - * 鐩爣绔� + * 鎵ц宸ヤ綅 */ - @ApiModelProperty(value= "鐩爣绔�") + @ApiModelProperty(value= "鎵ц宸ヤ綅") @TableField("pos_sta") private Integer posSta; @@ -137,6 +137,7 @@ @ApiModelProperty(value= "淇敼浜哄憳") @TableField("update_by") private Long updateBy; + /** * 澶囨敞 @@ -188,7 +189,7 @@ this.updateBy = updateBy; } - public BasRgvOpt(Integer wrkNo1, Integer rgvNo, Date sendTime, String mode, Integer sourceSta, Integer posSta, Integer response, Date updateTime, Long updateBy) { + public BasRgvOpt(Integer wrkNo1, Integer rgvNo, Date sendTime, String mode, Integer sourceSta, Integer posSta, Date updateTime) { this.wrkNo1 = wrkNo1; this.rgvNo = rgvNo; this.sendTime = sendTime; @@ -197,7 +198,6 @@ this.posSta = posSta; this.response = response; this.updateTime = updateTime; - this.updateBy = updateBy; } // BasRgvOpt basRgvOpt = new BasRgvOpt( diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java index 99650a2..32fcad3 100644 --- a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java +++ b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java @@ -27,12 +27,14 @@ * 鏌ヨ鎸囧畾宸ヤ綔鍙蜂换鍔� * */ WrkMastSta selectByWrkNo(@Param("workNo") Integer workNo); + WrkMastSta selectByWrkNoPut(@Param("workNo") Integer workNo); /* * 鏌ヨ涓嶅共娑夌殑鍙墽琛屼换鍔� * */ WrkMastSta selectNoInterfere(@Param("staStarts") List<Integer> staStarts, @Param("staEnds") List<Integer> staEnds,@Param("workNo")Long workNo ); List<WrkMastSta> selectNoInterfereList(@Param("staStarts") List<Integer> staStarts, @Param("staEnds") List<Integer> staEnds); + WrkMastSta selectNoInterfereToCrn(@Param("staStarts") List<Integer> staStarts, @Param("staEnds") List<Integer> staEnds,@Param("workNo")Long workNo ); List<WrkMastSta> selectByWorkStaList(@Param("workSta") Integer workSta, @Param("rgvNo") Short rgvNo); diff --git a/src/main/java/com/zy/asrs/service/WrkMastStaService.java b/src/main/java/com/zy/asrs/service/WrkMastStaService.java new file mode 100644 index 0000000..29f1e00 --- /dev/null +++ b/src/main/java/com/zy/asrs/service/WrkMastStaService.java @@ -0,0 +1,7 @@ +package com.zy.asrs.service; + +import com.baomidou.mybatisplus.service.IService; +import com.zy.asrs.entity.WrkMastSta; + +public interface WrkMastStaService extends IService<WrkMastSta> { +} 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 1eea636..da0f6c1 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -99,6 +99,8 @@ @Autowired private WrkMastService wrkMastService; @Autowired + private WrkMastStaService wrkMastStaService; + @Autowired private BasRgvMapService basRgvMapService; @Autowired private BasArmService basArmService; @@ -114,7 +116,7 @@ private Integer inventoryNumber; public Integer wrkNo = 10000; - + public static final List<Integer> LEFT_POSITION = Arrays.asList(1018,2018); /** * 缁勬墭 * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2 @@ -973,7 +975,7 @@ //mark - 3 - .... this.locToLoc(crn, crnProtocol,mark); //棰勮皟搴� - this.crnRebackHp(crnProtocol, crnThread); +// this.crnRebackHp(crnProtocol, crnThread); } // News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚"); @@ -1109,7 +1111,7 @@ News.error(""+mark+" - 1"+" - 2"+" - 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); continue; } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) { flag = true; } @@ -2794,103 +2796,103 @@ * 灏忚溅涓婂伐浣嶅乏鍙崇Щ鍔� * */ - public synchronized boolean rgvStaMove(Long workNo) { - try { - for (RgvSlave rgv : slaveProperties.getRgv()) { - RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); - RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); - if (rgvProtocol == null) { - continue; - } else { - rgvProtocol = rgvProtocol.clone(); - } - if(rgvProtocol.isLoaded2ing() && rgvProtocol.isLoaded1ing()){ - continue; - } - if(rgvProtocol.isLoaded1ing() && !rgvProtocol.isLoaded2ing() && rgvProtocol.getTaskNo1() != 0){ - WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1()); - Short moveSta =0; - - if(wrkMastSta.getStaEnd()< 1036 || (2000 < wrkMastSta.getStaEnd() && wrkMastSta.getStaEnd()<2031)){ - moveSta = 2; - boolean rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(),7,wrkMastSta.getWrkNo(),moveSta); - if (!rgvComplete){ - log.error("灏忚溅宸ヤ綅绉诲姩澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); - break; - } - } - } - if(!rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing() && rgvProtocol.getTaskNo2() != 0){ - WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2()); - Short moveSta =0; - - if(wrkMastSta.getStaEnd()> 2030 || (1036 < wrkMastSta.getStaEnd() && wrkMastSta.getStaEnd()<2000)){ - moveSta = 1; - boolean rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(),8,wrkMastSta.getWrkNo(),moveSta); - if (!rgvComplete){ - log.error("灏忚溅宸ヤ綅绉诲姩澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); - break; - } - } - } - - - } - }catch (Exception e){ - log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e); - } - } +// public synchronized boolean rgvStaMove(Long workNo) { +// try { +// for (RgvSlave rgv : slaveProperties.getRgv()) { +// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); +// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); +// if (rgvProtocol == null) { +// continue; +// } else { +// rgvProtocol = rgvProtocol.clone(); +// } +// if (rgvProtocol.isLoaded2ing() && rgvProtocol.isLoaded1ing()) { +// continue; +// } +// if (rgvProtocol.isLoaded1ing() && !rgvProtocol.isLoaded2ing() && rgvProtocol.getTaskNo1() != 0) { +// WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1()); +// Short moveSta = 0; +// +// if (wrkMastSta.getStaEnd() < 1036 || (2000 < wrkMastSta.getStaEnd() && wrkMastSta.getStaEnd() < 2031)) { +// moveSta = 2; +// boolean rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(), 7, wrkMastSta.getWrkNo(), moveSta); +// if (!rgvComplete) { +// log.error("灏忚溅宸ヤ綅绉诲姩澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo()); +// break; +// } +// } +// } +// if (!rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing() && rgvProtocol.getTaskNo2() != 0) { +// WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2()); +// Short moveSta = 0; +// +// if (wrkMastSta.getStaEnd() > 2030 || (1036 < wrkMastSta.getStaEnd() && wrkMastSta.getStaEnd() < 2000)) { +// moveSta = 1; +// boolean rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(), 8, wrkMastSta.getWrkNo(), moveSta); +// if (!rgvComplete) { +// log.error("灏忚溅宸ヤ綅绉诲姩澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo()); +// break; +// } +// } +// } +// +// +// } +// } catch (Exception e) { +// log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�" + e); +// } +// } /** * 瀹屾垚灏忚溅浠诲姟 */ - public synchronized void rgvCompleteWrkMastSta() { - try{ - for (DevpSlave devp : slaveProperties.getDevp()) { - List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); - for (RgvSlave rgv : slaveProperties.getRgv()) { - RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); - RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); - if (rgvProtocol == null) { - continue; - }else { - rgvProtocol = rgvProtocol.clone(); - } - BasRgv basRgv = basRgvService.selectById(rgv.getId()); - if (basRgv == null) { - log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgv.getId()); - continue; - } - //鏀捐揣纭 - if(rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING && rgvProtocol.getModeType() == RgvModeType.AUTO){ - boolean rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3); - if (!rgvComplete){ - log.error("灏忚溅鏀捐揣澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo()); - } - } - if(rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING && rgvProtocol.getModeType() == RgvModeType.AUTO){ - boolean rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 6); - if (!rgvComplete){ - log.error("灏忚溅鏀捐揣澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo()); - } - } - - // 鍙湁褰揜GV宸ヤ綅1绛夊緟WCS纭銆佽嚜鍔� - if (rgvProtocol.getStatusType1() == RgvStatusType.WAITING - && rgvProtocol.getModeType() == RgvModeType.AUTO - ){ - - log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType1(),rgvProtocol); - if(rgvProtocol.getTaskNo1() == 9999){ // 棰勮皟搴︿换鍔$‘璁� - BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - Integer staNo = basRgvMap.getNowRoute(); - switch (staNo){ - case 1004: staNo = 1042; break; - case 1007: staNo = 1105; break; - } - - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - StaProtocol staProtocol = devpThread.getStation().get(staNo); - boolean rgvComplete = false; +// public synchronized void rgvCompleteWrkMastSta() { +// try{ +// for (DevpSlave devp : slaveProperties.getDevp()) { +// List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); +// for (RgvSlave rgv : slaveProperties.getRgv()) { +// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); +// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); +// if (rgvProtocol == null) { +// continue; +// }else { +// rgvProtocol = rgvProtocol.clone(); +// } +// BasRgv basRgv = basRgvService.selectById(rgv.getId()); +// if (basRgv == null) { +// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgv.getId()); +// continue; +// } +// //鏀捐揣纭 +// if(rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING && rgvProtocol.getModeType() == RgvModeType.AUTO){ +// boolean rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3); +// if (!rgvComplete){ +// log.error("灏忚溅鏀捐揣澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo()); +// } +// } +// if(rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING && rgvProtocol.getModeType() == RgvModeType.AUTO){ +// boolean rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 6); +// if (!rgvComplete){ +// log.error("灏忚溅鏀捐揣澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo()); +// } +// } +// +// // 鍙湁褰揜GV宸ヤ綅1绛夊緟WCS纭銆佽嚜鍔� +// if (rgvProtocol.getStatusType1() == RgvStatusType.WAITING +// && rgvProtocol.getModeType() == RgvModeType.AUTO +// ){ +// +// log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType1(),rgvProtocol); +// if(rgvProtocol.getTaskNo1() == 9999){ // 棰勮皟搴︿换鍔$‘璁� +// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); +// Integer staNo = basRgvMap.getNowRoute(); +// switch (staNo){ +// case 1004: staNo = 1042; break; +// case 1007: staNo = 1105; break; +// } +// +// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); +// StaProtocol staProtocol = devpThread.getStation().get(staNo); +// boolean rgvComplete = false; // long now = System.currentTimeMillis(); // if (staProtocol.isLoading()) { @@ -2900,43 +2902,31 @@ // rgvProtocol.setLoadingStartTime(now); // } // } - - if (staProtocol.isLoading()) { - rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3); - if (!rgvComplete){ - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛佺瓑寰呭叆搴撳彇璐�", rgvProtocol.getRgvNo()); - } - } - } - if ( rgvProtocol.getTaskNo1()!=9999){ - WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1()); - if(null == wrkMastSta){ - log.error("灏忚溅鏃犱换鍔�"); - continue; - } - if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭 - if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){ - continue; - } - wrkMastSta.setUpdateTime(new Date()); - wrkMastSta.setWrkSts(2); -// wrkMastSta.setWorkSta(2); - try{ - wrkMastStaMapper.updateById(wrkMastSta); - log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); - }catch (Exception e){ - log.error("鏇存柊灏忚溅浠诲姟澶辫触"); - } - boolean rgvComplete = false; - - rgvComplete = rgvStaMove(wrkMastSta.getWrkNo()); - if (!rgvComplete){ - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); - break; - } - break; - } -// if(wrkMastSta.getWrkSts() == 4){//琛岃蛋纭 +// +// if (staProtocol.isLoading()) { +// rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3); +// if (!rgvComplete){ +// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛佺瓑寰呭叆搴撳彇璐�", rgvProtocol.getRgvNo()); +// } +// } +// } +// if ( rgvProtocol.getTaskNo1()!=9999 && rgvProtocol.getTaskNo1() != 0){ +// WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1()); +// if(null == wrkMastSta){ +// log.error("灏忚溅鏃犱换鍔�"); +// continue; +// } +// if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭 +//// if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){ +//// continue; +//// } +// boolean rgvComplete = false; +// rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(),7,wrkMastSta.getWrkNo(),(short)2); +// if (!rgvComplete){ +// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); +// break; +// } +// wrkMastSta.setUpdateTime(new Date()); // wrkMastSta.setWrkSts(2); // try{ // wrkMastStaMapper.updateById(wrkMastSta); @@ -2944,90 +2934,37 @@ // }catch (Exception e){ // log.error("鏇存柊灏忚溅浠诲姟澶辫触"); // } -// boolean rgvComplete = false; +// break; +// } +// } // -// rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7); +// else { +// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo()); +// } +// } +// // 鍙湁褰揜GV宸ヤ綅2绛夊緟WCS纭銆佽嚜鍔� +// if (rgvProtocol.getStatusType2() == RgvStatusType.WAITING +// && rgvProtocol.getModeType() == RgvModeType.AUTO +// ){ +// log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType2(),rgvProtocol); +// if (rgvProtocol.getTaskNo2() !=0 ){ +// WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2()); +// if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭 +// boolean rgvComplete = false; +// rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(),8,wrkMastSta.getWrkNo(),(short)1); // if (!rgvComplete){ // log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); // break; // } +// wrkMastSta.setWrkSts(2); +// try{ +// wrkMastStaMapper.updateById(wrkMastSta); +// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); +// }catch (Exception e){ +// log.error("鏇存柊灏忚溅浠诲姟澶辫触"); +// } // break; // } -// if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){ -// log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta); -// continue; -// } -// -// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); -// StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd()); -// if (staProtocol == null) { -// continue; -// } else { -// staProtocol = staProtocol.clone(); -// } -// if (!staProtocol.isAutoing() || !staProtocol.isLoading()){ -// continue; -// } -// WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue()); -// if (!Cools.isEmpty(wrkMast)){ -// if (!staProtocol.isPakMk()){ -// continue; -// } -// // 涓嬪彂绔欑偣淇℃伅 -// staProtocol.setWorkNo(wrkMast.getWrkNo()); -// staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); -// devpThread.setPakMk(staProtocol.getSiteId(), false); -// log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); -// if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) { -// continue; -// } -// } -// boolean rgvComplete = false; -// -// rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3); -// if (!rgvComplete){ -// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); -// break; -// } -// WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1()); -// wrkMast1.setPdcType("Y"); -// -// wrkMastService.updateById(wrkMast1); -// -// wrkMastSta.setWrkSts(3); -// wrkMastStaMapper.updateById(wrkMastSta); -// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); -// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); -// rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471"); - } - - else { - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo()); - } - } - // 鍙湁褰揜GV宸ヤ綅2绛夊緟WCS纭銆佽嚜鍔� - if (rgvProtocol.getStatusType2() == RgvStatusType.WAITING - && rgvProtocol.getModeType() == RgvModeType.AUTO - ){ - log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType2(),rgvProtocol); - if (rgvProtocol.getTaskNo2() !=0 ){ - WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2()); - if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭 - boolean rgvComplete = false; - rgvComplete = rgvComplete2((int) rgvProtocol.getRgvNo(),8,wrkMastSta.getWrkNo()); - if (!rgvComplete){ - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); - break; - } - wrkMastSta.setWrkSts(2); - try{ - wrkMastStaMapper.updateById(wrkMastSta); - log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); - }catch (Exception e){ - log.error("鏇存柊灏忚溅浠诲姟澶辫触"); - } - break; - } // if(wrkMastSta.getWrkSts() == 4){//琛岃蛋鍚庣‘璁� // wrkMastSta.setWrkSts(2); // try{ @@ -3082,23 +3019,23 @@ // BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); // basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); // rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471"); - } - else { - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭锛�",rgvProtocol.getRgvNo()); - } - } - //褰撳皬杞︽棤浠诲姟鏃跺彇娑堥攣瀹� - if(rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0){ - rgvThread.setPakMk(true); - rgvThread.setPakIn(true); - rgvThread.setPakOut(true); - } - } - } - }catch (Exception e){ - log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e); - } - } +// } +// else { +// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭锛�",rgvProtocol.getRgvNo()); +// } +// } +// //褰撳皬杞︽棤浠诲姟鏃跺彇娑堥攣瀹� +// if(rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0){ +// rgvThread.setPakMk(true); +// rgvThread.setPakIn(true); +// rgvThread.setPakOut(true); +// } +// } +// } +// }catch (Exception e){ +// log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e); +// } +// } /** * rgv鏀捐揣浠诲姟涓嬪彂 @@ -3117,9 +3054,9 @@ continue; } //灏忚溅鏃犱换鍔℃椂璺宠繃 -// if(rgvProtocol.getTaskNo1() ==0 && rgvProtocol.getTaskNo2() == 0){ -// continue; -// } + if(rgvProtocol.getTaskNo1() ==0 && rgvProtocol.getTaskNo2() == 0){ + continue; + } //鍏ュ簱鏀捐揣 if(rgvThread.isPakIn()){ for(RgvSlave.RgvStn rgvStn : rgv.getRgvInPStn()){//鍏ュ簱鏀捐揣绔欑偣 @@ -3140,8 +3077,7 @@ continue; } - if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isInEnable() - && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) { + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) { flag = true; } if (!flag) { @@ -3152,40 +3088,23 @@ continue; } BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); -// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� -// Integer wrkNo = 0; - if(rgvProtocol.getTaskNo2() != 0){ - wrkNo = rgvProtocol.getTaskNo2(); - } -// else{ -// wrkNo = rgvProtocol.getTaskNo1(); -// } - if(!rgvProtocol.isLoaded2ing()){ - continue; - } - WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2());//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + Integer workNo = rgvProtocol.getTaskNo2() !=0 ? rgvProtocol.getTaskNo2() : rgvProtocol.getTaskNo1(); //鍏ュ簱鏀捐揣浼樺厛宸ヤ綅2鎵ц + WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNoPut(workNo); if( null == wrkMastSta ) { News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; } - if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){ - continue; - } - boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null,2); //鍛戒护涓嬪彂 + boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 if (sign){ try{ - wrkMastSta.setWrkSts(3); + wrkMastSta.setWrkSts(2); wrkMastStaMapper.updateById(wrkMastSta); log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); }catch (Exception e){ log.error("鏇存柊灏忚溅浠诲姟澶辫触"); } -// boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); -// if (!signMap){ -// log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); -// } } else { log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); } @@ -3212,8 +3131,7 @@ continue; } - if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isOutEnable() - && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) { + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) { flag = true; } if (!flag) { @@ -3225,24 +3143,20 @@ } BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� -// Integer wrkNo = 0; - if(rgvProtocol.getTaskNo1() != 0){ - wrkNo = rgvProtocol.getTaskNo1(); + Integer workNo = 0; + if(rgvThread.isPakToCrn()){ + workNo = rgvProtocol.getTaskNo1() !=0 ? rgvProtocol.getTaskNo1():rgvProtocol.getTaskNo2(); //姝e父鎯呭喌鍑哄簱鏀捐揣浼樺厛宸ヤ綅1鏀� + }else{ + workNo = rgvProtocol.getTaskNo2() !=0 ? rgvProtocol.getTaskNo2():rgvProtocol.getTaskNo1(); //鎺ラ┏鎯呭喌浼樺厛宸ヤ綅2鏀� } -// else{ -// wrkNo = rgvProtocol.getTaskNo2(); -// } - WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + + WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNoPut(workNo);//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 if( null == wrkMastSta ) { - News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); + News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍑哄簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; } - if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){ - continue; - } - Integer pos = 2; - boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null,pos); //鍛戒护涓嬪彂 + boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 if (sign){ try{ wrkMastSta.setWrkSts(3); @@ -3261,15 +3175,49 @@ rgvThread.setPakRgv(true);//浼樺厛鏀捐揣瀹屾垚锛屽紑鍚璋冨害 } } + /** + * rgv浠诲姟瀹屾垚 + */ + public synchronized void rgvTaskComplete(){ + for (RgvSlave rgv : slaveProperties.getRgv()) { + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + continue; + } + Long taskNo1 = Long.valueOf(rgvProtocol.getTaskNo1()); + Long taskNo2 = Long.valueOf(rgvProtocol.getTaskNo2()); + List<WrkMastSta> wrkMastStaList = wrkMastStaService.selectList( + new EntityWrapper<WrkMastSta>() + .eq("wrk_sts" ,2) + ); + for(WrkMastSta wrkMastSta : wrkMastStaList){ + if(!Objects.equals(wrkMastSta.getWrkNo(), taskNo1) && !Objects.equals(wrkMastSta.getWrkNo(), taskNo2)){ + try{ + wrkMastSta.setWrkSts(3); + wrkMastStaMapper.updateById(wrkMastSta); + log.info("鏇存柊灏忚溅宸ヤ綔妗h嚦瀹屾垚鎴愬姛"); + }catch (Exception e){ + log.error("鏇存柊灏忚溅宸ヤ綔妗h嚦瀹屾垚澶辫触"); + } + } + } + if(rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0 && !rgvProtocol.isLoaded1ing() && !rgvProtocol.isLoaded2ing()){ + rgvThread.setPakRgv(true); + rgvThread.setPakIn(true); + rgvThread.setPakOut(true); + rgvThread.setPakToCrn(true); + } + } + } /** * rgv鍑哄叆搴撲换鍔′笅鍙� */ public synchronized void rgvIoExecute(Integer mark) { - List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); - for (RgvSlave rgv : slaveProperties.getRgv()) { // 鑾峰彇鍫嗗灈鏈轰俊鎭� RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); @@ -3282,11 +3230,8 @@ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgv.getId()); continue; } - // 鍙湁褰揜GV绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� - if ((rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getStatusType2() == RgvStatusType.IDLE) - && rgvProtocol.getModeType() == RgvModeType.AUTO - && rgvThread.isPakMk()) { + if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk() && rgvThread.isPakToCrn()) { News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛孯GV鍏ュ嚭搴撲綔涓氫笅鍙�"); // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡 // rgvRunWrkMastInTest(); @@ -3312,18 +3257,20 @@ rgvProtocol.setLastIo("O"); } } - WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo()); - WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWorkSta(1, (int) rgvProtocol.getRgvNo()); - if(wrkMastSta1 != null && wrkMastSta2 != null){ - rgvThread.setPakMk(false); //灏忚溅鍙屽伐浣嶉攣瀹� - } } - if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getTaskNo1() == 0 && rgvThread.isPakIn() && rgvThread.isPakRgv()){ - rgvPreScheduling();//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣 + WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo()); + WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWorkSta(1, (int) rgvProtocol.getRgvNo()); + if(wrkMastSta1 != null && wrkMastSta2 != null){ + rgvThread.setPakMk(false); //灏忚溅鍙屽伐浣嶉攣瀹� } + if(!rgvThread.isPakToCrn()){ + rgvRunWrkToCrn(rgv, rgvProtocol,mark); //鑻ュ皬杞﹀彇鍒颁竴涓帴椹充换鍔★紝绗簩涓伐浣嶅彧鑳藉彇鎺ラ┏浠诲姟 + } +// if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getTaskNo1() == 0 && rgvThread.isPakIn() && rgvThread.isPakRgv()){ +// rgvPreScheduling();//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣 +// } - if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getStatusType2() == RgvStatusType.IDLE - && rgvProtocol.getModeType() == RgvModeType.AUTO) { + if (rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO) { //灏忚溅鎵ц鏀捐揣浠诲姟 rgvOutExecute(); @@ -3374,12 +3321,10 @@ public synchronized void rgvRunWrkMastIn(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark) { for (RgvSlave.RgvStn rgvStn : slave.getRgvInTStn()) {//rgv鍏ュ簱鍙栬揣绔欑偣 boolean flag = false; - boolean ds = false; //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId()); StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo()); - StaProtocol staProtocol2 = null; - + StaProtocol staProtocol2 = null; //杩炵画鍙栬揣浠诲姟绔欑偣 RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo()); if(rgvStn.getStaNo2()!= null ){ staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2()); @@ -3401,15 +3346,12 @@ } else { staProtocol = staProtocol.clone(); } - // 鏌ヨ绔欑偣璇︾粏淇℃伅 BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo()); if (staDetl == null) { News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo()); continue; } - - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() != 0 && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) { flag = true; @@ -3417,21 +3359,25 @@ if (!flag) { News.errorNoLog("" + mark + " - 1" + " - 3" + " - Rgv鍏ュ簱鍙栬揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):" + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading() - + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isInEnable() - + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining()); + + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining()); continue; } BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); -// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); - basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� -// WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 - WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(staProtocol.getWorkNo());//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 - + List<Integer> route = new ArrayList<>(); + switch (rgvProtocol.getRgvNo()){ + case 1: route = RouteUtils.getRouteOne();break; + case 2: route = RouteUtils.getRouteTwo();break; + } + basRgvMap.setNowRoute(rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� + WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 if( null == wrkMastSta ) { News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; } - WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo()); + WrkMastSta wrkMastSta2 = null; + if(rgvProtocol.getTaskNo2() != null){ + wrkMastSta2 = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2()); + } boolean result = false; if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠� result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣 @@ -3442,31 +3388,20 @@ } wrkMastSta.setWorkSta(wrkMastSta2 !=null ? 1 : 2); wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo()); - Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃� boolean sign = false; -// if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){ -// continue; -// } - if(Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd()) && wrkMastSta.getWrkSts() == 4){ - wrkMastSta.setWrkSts(1); + sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 + if (sign){ + if(LEFT_POSITION.contains(wrkMastSta.getStaEnd())){ + rgvThread.setPakToCrn(false); //閿佸畾灏忚溅鍙兘鎺ユ帴椹充换鍔� + } + rgvThread.setPakOut(false);//鍑哄簱涓嶅厑璁� try{ + wrkMastSta.setWrkSts(1); wrkMastStaMapper.updateById(wrkMastSta); log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); }catch (Exception e){ log.error("鏇存柊灏忚溅浠诲姟澶辫触"); } - } - //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠� - if(wrkMastSta.getWorkSta() == 2 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0 && sign){ -// WrkMastSta wrkMastSta3 = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol2.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 -// wrkMastSta3.setWorkSta(1); -// wrkMastSta3.setRgvNo((int) rgvProtocol.getRgvNo()); -// sign = rgvTakeFullAll2(basRgvMap.getRgvNo(), wrkMastSta, wrkMastSta3); - }else{ - sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction,1); //鍛戒护涓嬪彂 - } - if (sign){ - rgvThread.setPakOut(false);//鍑哄簱涓嶅厑璁� } else { log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); } @@ -3525,47 +3460,131 @@ continue; } BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); -// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); - basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� - WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(staProtocol.getWorkNo());//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + List<Integer> route = new ArrayList<>(); + switch (rgvProtocol.getRgvNo()){ + case 1: route = RouteUtils.getRouteOne();break; + case 2: route = RouteUtils.getRouteTwo();break; + } + basRgvMap.setNowRoute(rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� + WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 if( null == wrkMastSta ) { News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; } - WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo()); + WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1()); boolean result = false; - if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠� - result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣 + if(wrkMastSta1!= null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠� + result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta1.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣 } if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣 rgvThread.setPakRgv(false); continue; } - WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWorkSta(1, (int) rgvProtocol.getRgvNo()); wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣� wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo()); boolean sign = false; - Short direction = 1;//宸ヤ綅1鏂瑰悜 - //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠� - if(Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd()) && wrkMastSta.getWrkSts() == 4){ - wrkMastSta.setWrkSts(1); + sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 + if (sign){ + rgvThread.setPakIn(false);//鍏ュ簱涓嶅厑璁� try{ + wrkMastSta.setWrkSts(1); wrkMastStaMapper.updateById(wrkMastSta); log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); }catch (Exception e){ log.error("鏇存柊灏忚溅浠诲姟澶辫触"); } + } else { + log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); } - if(wrkMastSta.getWorkSta() == 1 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0 && sign){ -// WrkMastSta wrkMastSta3 = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol2.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 -// wrkMastSta3.setWorkSta(2); -// wrkMastSta3.setRgvNo((int) rgvProtocol.getRgvNo()); -// sign = rgvTakeFullAll2(basRgvMap.getRgvNo(), wrkMastSta, wrkMastSta3); - }else{ - sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction,2); //鍛戒护涓嬪彂 + + + } + } + + /** + * 灏忚溅鍑哄簱鎺ラ┏浠诲姟鍙栬揣涓嬪彂 + */ + public synchronized void rgvRunWrkToCrn(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark){ + for (RgvSlave.RgvStn rgvStn : slave.getRgvOutTStn()) {//rgv鍑哄簱鍙栬揣绔欑偣 + boolean flag = false; + //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣 + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo()); + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo()); + StaProtocol staProtocol2 = null; + if(rgvStn.getStaNo2()!= null ){ + staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2()); + if (staProtocol2 == null) { + News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol); + continue; + } else { + staProtocol2 = staProtocol2.clone(); + } + BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2()); + if (staDetl2 == null) { + News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo()); + continue; + } } + if (staProtocol == null) { + News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍑哄簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol); + continue; + } else { + staProtocol = staProtocol.clone(); + } + + // 鏌ヨ绔欑偣璇︾粏淇℃伅 + BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo()); + if (staDetl == null) { + News.error("" + mark + " - 1" + " - 2" + " - 鍑哄簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo()); + continue; + } + + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 + && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) { + flag = true; + } + if (!flag) { + News.errorNoLog("" + mark + " - 1" + " - 3" + " - Rgv鍑哄簱鍙栬揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):" + + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading() + + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isOutEnable() + + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanouting()); + continue; + } + BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); + List<Integer> route = new ArrayList<>(); + switch (rgvProtocol.getRgvNo()){ + case 1: route = RouteUtils.getRouteOne();break; + case 2: route = RouteUtils.getRouteTwo();break; + } + basRgvMap.setNowRoute(rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� + WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfereToCrn(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + if( null == wrkMastSta ) { + News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); + continue; + } + WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1()); + boolean result = false; + if(wrkMastSta1!= null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠� + result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta1.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣 + } + if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣 + rgvThread.setPakRgv(false); + continue; + } + wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣� + wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo()); + boolean sign = false; + sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 if (sign){ rgvThread.setPakIn(false);//鍏ュ簱涓嶅厑璁� + try{ + wrkMastSta.setWrkSts(1); + wrkMastStaMapper.updateById(wrkMastSta); + log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); + }catch (Exception e){ + log.error("鏇存柊灏忚溅浠诲姟澶辫触"); + } } else { log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); } @@ -3701,219 +3720,11 @@ // } // 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( 1043, 1104,1037); - 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 鏀捐揣鍚庤鍘荤殑浣嶇疆 - switch (staNo){ - case 1043: rgvCommand.setTargetPosition1(1042);break; //宸ヤ綅1鐩爣绔欑偣 - case 1104: rgvCommand.setTargetPosition1(1105);break; - case 1037: rgvCommand.setTargetPosition1(1036);break; - - } - if(Objects.equals(basRgvMap.getNowRoute(), staNo)){ - continue; - } - 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("鎵ц灏忚溅绉诲姩涓嬪彂澶辫触"); - } - } - /** - * 鎵ц灏忚溅鎼繍浠诲姟 - */ -// public synchronized void rgvRunWrkMastEmptyStaPut() {//鏀� +// /** +// * 灏忚溅棰勮皟搴� +// */ +// public synchronized void rgvPreScheduling(){ // try{ -// for (RgvSlave rgvSlave:slaveProperties.getRgv()) { -// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); -// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); -// if (rgvProtocol == null) { -// continue; -// } -// BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); -// if (basRgv == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�5", rgvSlave.getId()); -// continue; -// } -// -// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤 -// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE -// && rgvProtocol.getModeType() == RgvModeType.AUTO -// && rgvProtocol.getLoaded1()==1 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 -// ) { -// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); -// if (basRgvMap == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo()); -// continue; -// } -// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� -// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//鑾峰彇娲诲姩鑼冨洿 -// List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//鏌ヨ鍙墽琛屼换鍔� -// for (WrkMastSta wrkMastSta : wrkMastStaList){ -// if (wrkMastSta.getType()!=2 || (wrkMastSta.getWrkType()!=2 && wrkMastSta.getWrkType()!=4)){// 2:绌烘澘 2:鏀� 4锛氭媶鐩� -// continue; -// } -// boolean sign = false; -// if (wrkMastSta.getStaStart()==0 && wrkMastSta.getStaEnd()!=0){//鏀� -// sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta); -// }else { -// continue; -// } -// if (sign){ -// boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd()); -// if (signMap){ -// wrkMastSta.setWrkSts(2); -// try{ -// wrkMastStaMapper.updateById(wrkMastSta); -// }catch (Exception e){ -// log.error("鏇存柊灏忚溅浠诲姟澶辫触"); -// } -// return; -// }else { -// log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); -// } -// }else { -// log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); -// } -// break; -// } -// } -// } -// }catch (Exception e){ -// log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触"); -// log.error("3933琛�"+e); -// } -// } - -// public synchronized void rgvRunWrkMastEmptyStaTake() {//鍙� -// try{ -// for (RgvSlave rgvSlave:slaveProperties.getRgv()) { -// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); -// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); -// if (rgvProtocol == null) { -// continue; -// } -// BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); -// if (basRgv == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�6", rgvSlave.getId()); -// continue; -// } -// -// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤 -// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE -// && rgvProtocol.getModeType() == RgvModeType.AUTO -// && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 -// ) { -// 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){ -// if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=1){// 2:绌烘澘 1:鍙� -// continue; -// } -// boolean sign = false; -// if (wrkMastSta.getStaEnd()==0 && wrkMastSta.getStaStart()!=0){//鍙� -// sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta); -// } else { -// continue; -// } -// if (sign){ -// boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute()); -// if (signMap){ -// wrkMastSta.setWrkSts(1); -// try{ -// wrkMastStaMapper.updateById(wrkMastSta); -// }catch (Exception e){ -// log.error("鏇存柊灏忚溅浠诲姟澶辫触"); -// } -// return; -// }else { -// log.error("3879琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); -// } -// }else { -// log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); -// } -// break; -// } -// } -// } -// }catch (Exception e){ -// log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触"); -// log.error("3989琛�"+e); -// } -// } - - /* - * 鏈変换鍔′絾鏈墽琛� 姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃� - * */ -// 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()); @@ -3925,396 +3736,101 @@ // } // BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); // if (basRgv == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getRgvNo()); +// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo()); // continue; // } // -// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 +// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鎵嶈繘琛岄璋冨害 // if (rgvProtocol.getStatusType() == RgvStatusType.IDLE // && rgvProtocol.getModeType() == RgvModeType.AUTO -// && !rgvProtocol.isLoaded1ing() //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 -// && rgvProtocol.getTaskNo1()==0 -// && rgvProtocol.getStatusType1() == RgvStatusType.IDLE +// && !rgvProtocol.isLoaded1ing() +// && rgvProtocol.getTaskNo1() == 0 +// && !rgvProtocol.isLoaded2ing() +// && rgvProtocol.getTaskNo2() == 0 // && rgvThread.isPakMk() -//// && rgvProtocol.getTaskNo2()==0 -// ){ +// ) { // BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); -// if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){ +// if (basRgvMap == null) { +// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo()); // continue; // } -//// 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"); +// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); +// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� +// // 鏍规嵁杈撻�佺嚎plc閬嶅巻 +// for (DevpSlave devp : slaveProperties.getDevp()) { +// // 閬嶅巻鍏ュ簱鍙� 鍏ュ簱棰勮皟搴� +// List<Integer> staNos = Arrays.asList( 1043, 1104,1037); +// 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 鏀捐揣鍚庤鍘荤殑浣嶇疆 +// switch (staNo){ +// case 1043: rgvCommand.setTargetPosition1(1042);break; //宸ヤ綅1鐩爣绔欑偣 +// case 1104: rgvCommand.setTargetPosition1(1105);break; +// case 1037: rgvCommand.setTargetPosition1(1036);break; +// +// } +// if(Objects.equals(basRgvMap.getNowRoute(), staNo)){ +// continue; +// } +// 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("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触"); -// log.error("4109琛�"+e); +// log.error("鎵ц灏忚溅绉诲姩涓嬪彂澶辫触"); // } // } - /* - * 灏忚溅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 rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta,Short direction,Integer pos){ + public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta){ try{ // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- RgvCommand rgvCommand = new RgvCommand(); - boolean pakIn1 = true; - boolean pakIn2 = true; rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 - if(wrkMastSta.getWrkSts() == 0){//鍒濆鍚庤璧� - rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� - rgvCommand.setTaskStatus1(RgvTaskStatusType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� - rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 - rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣 - rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 -// } - wrkMastSta.setWrkSts(4); - try{ - wrkMastStaMapper.updateById(wrkMastSta); - log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); - }catch (Exception e){ - log.error("鏇存柊灏忚溅浠诲姟澶辫触"); - } - 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; - } + RgvTaskStatusType type; + Integer targetPosition = 0; + if(wrkMastSta.getWrkSts() == 0){ + type = RgvTaskStatusType.FETCH; //鍙栬揣 + targetPosition = wrkMastSta.getStaStart(); + }else{ + type = RgvTaskStatusType.PUT; //鏀捐揣 + targetPosition = wrkMastSta.getStaEnd(); } - if(wrkMastSta.getWrkSts() == 1){//鍙栬揣 - if(pos == 2){//鍑哄簱RGV鍙栬揣 - rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� - rgvCommand.setTaskStatus2(RgvTaskStatusType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� - rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 - rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣 - rgvCommand.setDirection2((short)2); -// rgvCommand.setWrkTaskMove2(direction); - rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 - pakIn1 = false; - }else{ //鍏ュ簱RGV鍙栬揣 - rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� - rgvCommand.setTaskStatus1(RgvTaskStatusType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� - rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 - rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣 - rgvCommand.setDirection1((short)1); -// rgvCommand.setWrkTaskMove1(direction); - rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 - } - if(!pakIn1){ - 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; - } - }else{ - 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; - } - } + rgvCommand.setTaskNo(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅宸ヤ綔鍙� + rgvCommand.setTaskStatus(type); // 宸ヤ綅浠诲姟妯″紡: 鍙栬揣 + rgvCommand.setTargetPosition(targetPosition); //宸ヤ綅鐩爣绔欑偣 + rgvCommand.setWrkTaskPri(wrkMastSta.getWorkSta()); + if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(2, 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((pos == 2)){ //宸ヤ綅2浠诲姟鏀捐揣 - rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� - rgvCommand.setTaskStatus2(RgvTaskStatusType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣 - rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 - rgvCommand.setTargetPosition1(wrkMastSta.getStaEnd()); //宸ヤ綅2鐩爣绔欑偣 - rgvCommand.setDirection2((short)2); - rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 - pakIn2 = false; - }else{ //宸ヤ綅1浠诲姟鏀捐揣 - rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� - rgvCommand.setTaskStatus1(RgvTaskStatusType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣 - rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 - rgvCommand.setTargetPosition1(wrkMastSta.getStaEnd()); //宸ヤ綅1鐩爣绔欑偣 - rgvCommand.setDirection1((short)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; } } - - - /* - * 灏忚溅鍙栬揣鑷冲弻宸ヤ綅浠诲姟 - * */ - public synchronized boolean rgvTakeFullAll2(Integer rgvId,WrkMastSta wrkMastSta,WrkMastSta wrkMastSta2){ - try{ - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - RgvCommand rgvCommand = new RgvCommand(); - boolean pakIn1 = true; - boolean pakIn2 = true; - rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 - if(wrkMastSta.getWrkSts() == 0) {//鍙栬揣 - if (wrkMastSta.getWorkSta() == 2) {//鍏ュ簱RGV鍙栬揣 - rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� - rgvCommand.setTaskStatus2(RgvTaskStatusType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� - rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 - rgvCommand.setTargetPosition2(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣 - rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 - rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta2.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� - rgvCommand.setTaskStatus1(RgvTaskStatusType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� - rgvCommand.setEndStaNo1(wrkMastSta2.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 - rgvCommand.setTargetPosition1(wrkMastSta2.getStaStart()); //宸ヤ綅1鐩爣绔欑偣 - rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 - rgvCommand.setWrkTaskPri((short) 2); //浼樺厛鎵ц宸ヤ綅2浠诲姟 - } else { //鍑哄簱RGV鍙栬揣 - rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� - rgvCommand.setTaskStatus1(RgvTaskStatusType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� - rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 - rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣 - rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� - rgvCommand.setTaskStatus2(RgvTaskStatusType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� - rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 - rgvCommand.setTargetPosition2(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣 - rgvCommand.setWrkTaskPri((short) 1); //鍑哄簱鍙栬揣浼樺厛鎵ц宸ヤ綅1浠诲姟 - rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 - } - if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(2, 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((wrkMastSta.getWorkSta() == 2)){ //宸ヤ綅2浠诲姟鏀捐揣 -// rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� -// rgvCommand.setTaskStatus2(RgvTaskStatusType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣 -// rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 -// rgvCommand.setTargetPosition2(wrkMastSta.getStaEnd()); //宸ヤ綅2鐩爣绔欑偣 -// rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 -// pakIn2 = false; -// }else{ //宸ヤ綅1浠诲姟鏀捐揣 -// rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� -// rgvCommand.setTaskStatus1(RgvTaskStatusType.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; - } - } - - /* - * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔� - * */ -// public synchronized boolean rgvTakeFull(Integer rgvId,WrkMastSta wrkMastSta){ -// try{ -// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// RgvCommand rgvCommand = new RgvCommand(); -// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 -// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� -// rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栬揣 -// rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅1璧风偣 -// 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鍐欎换鍔� -// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); -// return false; -// } else { -// return true; -// } -// }catch (Exception e){ -// return false; -// } -// } - - /* - * 灏忚溅鏀捐揣鑷宠緭閫佺嚎浠诲姟 - * */ -// public synchronized boolean rgvPutFull(Integer rgvId,WrkMastSta wrkMastSta){ -// try{ -// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// RgvCommand rgvCommand = new RgvCommand(); -// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 -// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� -// rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣 -// rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅1鐩爣绔欑偣 -// 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鍐欎换鍔� -// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); -// return false; -// } else { -// return true; -// } -// }catch (Exception e){ -// return false; -// } -// } - - /* - * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟 - * */ -// public synchronized boolean rgvTakeEmpty(Integer rgvId,WrkMastSta wrkMastSta){ -// try{ -// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// RgvCommand rgvCommand = new RgvCommand(); -// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 -// rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙� -// rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栬揣 -// rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅2璧风偣 -// rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭 -// if (!MessageQueue.offer(SlaveType.Crn, 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; -// } -// }catch (Exception e){ -// return false; -// } -// } - - /* - * 灏忚溅鏀剧┖鏉胯嚦杈撻�佺嚎浠诲姟 - * */ -// public synchronized boolean rgvPutEmpty(Integer rgvId,WrkMastSta wrkMastSta){ -// try{ -// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// RgvCommand rgvCommand = new RgvCommand(); -// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 -// rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙� -// rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣 -// rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅2鐩爣绔欑偣 -// rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭 -// if (!MessageQueue.offer(SlaveType.Crn, 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; -// } -// }catch (Exception e){ -// return false; -// } -// } /** * 鍙栨斁鍙栬矾寰勮绠� @@ -4366,44 +3882,6 @@ return false; } } - - /* - * 灏忚溅澶嶄綅 - * */ - public synchronized boolean rgvComplete2(Integer rgvId,Integer step,Long workNo){ - try{ - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(step, new RgvCommand(),workNo))) { - //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}",rgvId); - return false; - } else { - log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}",rgvId); - return true; - } - }catch (Exception e){ - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}銆傚紓甯革細"+e,rgvId); - return false; - } - } - - public synchronized boolean rgvComplete3(Integer rgvId,Integer step,Long workNo,Short moveSta){ - try{ - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(step, new RgvCommand(),workNo,moveSta))) { - //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}",rgvId); - return false; - } else { - log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}",rgvId); - return true; - } - }catch (Exception e){ - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}銆傚紓甯革細"+e,rgvId); - return false; - } - } - diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastStaServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastStaServiceImpl.java new file mode 100644 index 0000000..f72f40a --- /dev/null +++ b/src/main/java/com/zy/asrs/service/impl/WrkMastStaServiceImpl.java @@ -0,0 +1,12 @@ +package com.zy.asrs.service.impl; + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.zy.asrs.entity.WrkMastSta; +import com.zy.asrs.mapper.WrkMastStaMapper; +import com.zy.asrs.service.WrkMastStaService; +import org.springframework.stereotype.Service; + +@Service("wrkMastStaService") +public class WrkMastStaServiceImpl extends ServiceImpl<WrkMastStaMapper, WrkMastSta> implements WrkMastStaService { + +} diff --git a/src/main/java/com/zy/asrs/utils/RouteUtils.java b/src/main/java/com/zy/asrs/utils/RouteUtils.java index c161495..15101f5 100644 --- a/src/main/java/com/zy/asrs/utils/RouteUtils.java +++ b/src/main/java/com/zy/asrs/utils/RouteUtils.java @@ -47,6 +47,15 @@ static { Collections.reverse(TRACK_POSITION_REVERSE_SEQUENCE); } + //1妤兼垬绔欑偣 + public static final List<Integer> TRACK_POSITION_ONE = Arrays.asList( + 1004, 1007, 1010, 1014, 1018, 1021, 1024, 1028, 1031, 1035,1042,1105,1106,1041, + 1038,1036 + ); + //2妤兼垬绔欑偣 + public static final List<Integer> TRACK_POSITION_TWO = Arrays.asList( + 2003,2006,2009,2012,2015,2018,2021,2024,2027,2030,2037,2031 + ); // 杞ㄩ亾鏄犲皠锛堟妸鏄犲皠绔欑偣鏇挎崲鎴愪富绔欑偣锛� public static final Map<Integer, Integer> SITE_MAPPING = new HashMap<>(); @@ -157,6 +166,20 @@ } return result; } + public static List<Integer> getRouteOne(){ + + List<Integer> groupRoute = new ArrayList<>(); + groupRoute = TRACK_POSITION_ONE; + + return groupRoute; + } + public static List<Integer> getRouteTwo(){ + + List<Integer> groupRoute = new ArrayList<>(); + groupRoute = TRACK_POSITION_TWO; + + return groupRoute; + } /* * 鑾峰彇鏈�杩滅珯鐐� diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java index 16f3094..6909287 100644 --- a/src/main/java/com/zy/core/MainProcess.java +++ b/src/main/java/com/zy/core/MainProcess.java @@ -135,8 +135,8 @@ }catch (Exception e){ log.error("RGV ===>> 灏忚溅浠诲姟浣滀笟涓嬪彂寮傚父"+e); } - //瀹屾垚灏忚溅浠诲姟 - mainService.rgvCompleteWrkMastSta(); +// //瀹屾垚灏忚溅浠诲姟 + mainService.rgvTaskComplete(); //宸ヤ綅绉诲姩 // mainService.rgvStaMove(); 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 7ea6cbd..c1c5f12 100644 --- a/src/main/java/com/zy/core/model/command/RgvCommand.java +++ b/src/main/java/com/zy/core/model/command/RgvCommand.java @@ -22,7 +22,7 @@ private Boolean ackFinish1 = true; // 宸ヤ綅1浠诲姟鍙� - private Integer taskNo1 = 0; + private Integer taskNo = 0; /** * 浠诲姟妯″紡锛� @@ -35,14 +35,18 @@ /** * 浣滀笟妯″紡 + * 0 绌洪棽 + * 1 琛岃蛋 + * 2 鍙栬揣 + * 3 鏀捐揣 */ - private Short taskStatus1 = 0; + private Short taskStatus = 0; @JSONField(serialize = false) private RgvTaskModeType taskModeType1; @JSONField(serialize = false) - private RgvTaskStatusType taskStatusType1; + private RgvTaskStatusType taskStatusType; /* 宸ヤ綅1婧愮珯 @@ -55,9 +59,9 @@ private Short destinationStaNo1 = 0; /** - * 宸ヤ綅1鐩爣浣嶇疆 + * 宸ヤ綅鐩爣浣嶇疆 */ - private Integer targetPosition1 = 0; + private Integer targetPosition = 0; /** * RGV鏀捐揣鍚庤揣鐗╄鍘荤殑鐩殑鍦� */ @@ -135,10 +139,10 @@ /** * 鍚屾椂涓嬪彂鏃朵綔涓氶『搴� * 0锛氭棤锛堜笉鍒ゆ柇锛� - * 1锛氬伐浣�1鍏堟墽琛� - * 2锛氬伐浣�2鍏堟墽琛� + * 1锛氬伐浣�1鎵ц + * 2锛氬伐浣�2鎵ц */ - Short wrkTaskPri = 0; + Integer wrkTaskPri = 0; Short wrkTaskMove1 = 0; Short wrkTaskMove2 = 0; @@ -163,14 +167,14 @@ this.taskMode2 = RgvTaskModeType.get(type2).id.shortValue(); } - public void setTaskStatus1(Short taskStatus1){ - this.taskStatus1 = taskStatus1; - this.taskStatusType1 = RgvTaskStatusType.get(taskStatusType1); + public void setTaskStatus(Short taskStatus){ + this.taskStatus = taskStatus; + this.taskStatusType = RgvTaskStatusType.get(taskStatusType); } - public void setTaskStatus1(RgvTaskStatusType type1) { - this.taskStatusType1 = type1; - this.taskStatus1 = RgvTaskStatusType.get(type1).id.shortValue(); + public void setTaskStatus(RgvTaskStatusType type) { + this.taskStatusType = type; + this.taskStatus = RgvTaskStatusType.get(type).id.shortValue(); } public void setTaskStatus2(Short taskStatus2){ 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 da1eedd..b957509 100644 --- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java @@ -327,8 +327,6 @@ } public Integer getRgvPosI2() { - if (RgvPos == null) return 0; - // key: 绔欑偣鍙� value: 鍩哄噯鐗╃悊浣嶇疆 Map<Integer, Integer> posMap = new HashMap<>(); posMap.put(1004, 6534); @@ -341,7 +339,7 @@ posMap.put(1028, 246724); posMap.put(1031, 288194); posMap.put(1035, 315204); - int tolerance = 50; // 鍏佽璇樊鑼冨洿 + int tolerance = 200; // 鍏佽璇樊鑼冨洿 for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) { int site = entry.getKey(); diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java index 4cfa9fa..c15ac26 100644 --- a/src/main/java/com/zy/core/thread/RgvThread.java +++ b/src/main/java/com/zy/core/thread/RgvThread.java @@ -59,6 +59,8 @@ private boolean PakOut = true; //鏍规嵁璺濈璺宠繃鍙栬揣 private boolean PakRgv = true; + //鎺ラ┏鏍囪 + private boolean PakToCrn = true; public RgvThread(RgvSlave slave) { this.slave = slave; @@ -80,17 +82,9 @@ case 1: readStatus(); break; - // 宸ヤ綅1銆�2鍐欏叆鏁版嵁 + // 灏忚溅宸ヤ綅鍐欏叆鏁版嵁 case 2: - write12((RgvCommand) task.getData()); - break; - //宸ヤ綅1鍐欏叆鏁版嵁 - case 4: - write1((RgvCommand) task.getData()); - break; -// //宸ヤ綅2鍐欏叆鏁版嵁 - case 5: - write2((RgvCommand) task.getData()); + write((RgvCommand) task.getData()); break; // 澶嶄綅 case 3: @@ -99,81 +93,11 @@ command = new RgvCommand(); } command.setRgvNo(slave.getId()); // RGV缂栧彿 - command.setTaskNo1(0); // 宸ヤ綔鍙� - command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� - command.setTaskStatus1(RgvTaskStatusType.NONE); // 浠诲姟妯″紡 - command.setTargetPosition1( 0); // 婧愮珯 - command.setEndStaNo1(0); // 鐩爣绔� - command.setWrkTaskMove1((short) 0); - command.setWrkTaskPri((short)0); - command.setCommand(false); - write1(command); - break; - case 6: - RgvCommand command2 = (RgvCommand) task.getData(); - if (null == command2) { - command2 = new RgvCommand(); - } - command2.setRgvNo(slave.getId()); // RGV缂栧彿 - command2.setTaskNo2(0); // 宸ヤ綔鍙� - command2.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� - command2.setTaskStatus2(RgvTaskStatusType.NONE); // 浠诲姟妯″紡 - command2.setTargetPosition2(0); // 婧愮珯 - command2.setEndStaNo2(0); // 鐩爣绔� - command2.setWrkTaskPri((short)0); - command2.setWrkTaskMove2((short)0); - command2.setCommand(false); - write2(command2); - break; - case 7: //宸ヤ綅1鍙栬揣纭 - RgvCommand command3 = (RgvCommand) task.getData(); - if (null == command3) { - command3 = new RgvCommand(); - } - command3.setRgvNo(slave.getId()); // RGV缂栧彿 - command3.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� - command3.setTaskStatus1(RgvTaskStatusType.NONE); // 浠诲姟妯″紡 - command3.setTargetPosition1( 0); // 婧愮珯 - command3.setWrkTaskMove1(task.getMoveSta() !=null ? task.getMoveSta() : 0); - command3.setCommand(false); - command3.setWrkTaskPri((short)0); - command3.setTaskNo1(Math.toIntExact(task.getWorkNo())); - write1(command3); - break; - case 8 : - RgvCommand command4 = (RgvCommand) task.getData(); - if (null == command4) { - command4 = new RgvCommand(); - } - command4.setRgvNo(slave.getId()); // RGV缂栧彿 - command4.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� - command4.setTaskStatus2(RgvTaskStatusType.NONE); // 浠诲姟妯″紡 - command4.setTargetPosition2(0); // 灏忚溅鐩爣绔欐竻闆� - command4.setWrkTaskMove2(task.getMoveSta() !=null ? task.getMoveSta() : 0); - command4.setCommand(false); - command4.setWrkTaskPri((short)0); - command4.setTaskNo2(Math.toIntExact(task.getWorkNo())); - write2(command4); - 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); + command.setTaskNo(0); // 宸ヤ綔鍙� + command.setTaskStatus(RgvTaskStatusType.NONE); // 浠诲姟妯″紡 + command.setTargetPosition(0); // 婧愮珯 + command.setWrkTaskPri(0); // 鐩爣绔� + write(command); break; default: break; @@ -266,10 +190,8 @@ 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]); @@ -281,58 +203,7 @@ 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.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 20)); -// 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.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 28)); -// rgvProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 30)); -// rgvProtocol.setTemp5(siemensNet.getByteTransform().TransInt16(result.Content, 32)); -// rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28)); -// rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40)); -// rgvProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48)); - OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId())); - - // 宸ヤ綅1澶嶄綅淇″彿 - if (rgvProtocol.getStatusType1().equals(RgvStatusType.WAITING) - || rgvProtocol.getStatusType1().equals(RgvStatusType.FETCHWAITING)) { - if (resetFlag1) { - RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setAckFinish1(true); - if (write1(rgvCommand)) { - resetFlag1 = false; - } - } - } - -// 宸ヤ綅2澶嶄綅淇″彿 - if (rgvProtocol.getStatusType2().equals(RgvStatusType.WAITING) - || rgvProtocol.getStatusType2().equals(RgvStatusType.FETCHWAITING)) { - if (resetFlag2) { - RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setAckFinish2(true); - if (write2(rgvCommand)) { - resetFlag2 = false; - } - } - } try { // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� @@ -359,53 +230,29 @@ initRgv(); } } - /** - * 宸ヤ綅1銆�2鍚屾椂鍐欏叆鏁版嵁 + * 灏忚溅宸ヤ綅鍐欏叆鍐欏叆鏁版嵁 */ - private boolean write12(RgvCommand command) throws InterruptedException { + private boolean write(RgvCommand command) throws InterruptedException { if (null == command) { log.error("RGV鍐欏叆鍛戒护涓虹┖"); return false; } - - OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 34); -// OperateResultExOne<byte[]> result4 = siemensNet.Read("DB100.10", (short) 2); + OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 39); 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.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)); + one.setWrkTaskPri(siemensNet.getByteTransform().TransInt32(result1.Content, 0));//鎵ц宸ヤ綅 + one.setTargetPosition(siemensNet.getByteTransform().TransInt32(result1.Content, 4));//琛岃蛋鐩爣绔� + one.setTaskStatus(siemensNet.getByteTransform().TransInt16(result1.Content, 8));//灏忚溅鐘舵�� + one.setTaskNo(siemensNet.getByteTransform().TransInt32(result1.Content, 10));//涓嬪彂宸ヤ綔鍙� + News.info("RGV鍛戒护涓嬪彂鍓嶈鍙栫姸鎬乕id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); } - OperateResult result2 = siemensNet.Write("DB100.34", false); - if (result2.IsSuccess){ - News.error("涓嬪彂鍓嶆妸杞﹀瓙纭浣嶇疆涓篺alse"); - } - byte[] writeBytes = new byte[36]; + byte[] writeBytes = new byte[14]; command.setRgvNo(slave.getId()); - 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()); - 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()); - siemensNet.getByteTransform().TransInt16(writeBytes, 36, command.getWrkTaskPri()); - + writeInt32(writeBytes, 0, command.getWrkTaskPri()); + writeInt32(writeBytes, 4, command.getTargetPosition()); + writeInt16(writeBytes, 8, (short)command.getTaskStatus()); + writeInt32(writeBytes, 10, command.getTaskNo()); OperateResult result = siemensNet.Write("DB100.0", writeBytes); if (!result.IsSuccess){ @@ -419,31 +266,18 @@ //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� Thread.sleep(400); try { - OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 36); + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 14); if (resultRead.IsSuccess){ RgvCommand one = new RgvCommand(); - 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)); - one.setWrkTaskPri(siemensNet.getByteTransform().TransInt16(resultRead.Content, 36)); - one.setDirection2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 30)); - one.setTaskNo2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 26)); - one.setTaskStatus2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 24)); - one.setEndStaNo2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 20)); - one.setTargetPosition2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 16)); + one.setWrkTaskPri(siemensNet.getByteTransform().TransInt32(resultRead.Content, 0));//鎵ц宸ヤ綅 + one.setTargetPosition(siemensNet.getByteTransform().TransInt32(resultRead.Content, 4));//琛岃蛋鐩爣绔� + one.setTaskStatus(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));//灏忚溅鐘舵�� + one.setTaskNo(siemensNet.getByteTransform().TransInt32(resultRead.Content, 10));//涓嬪彂宸ヤ綔鍙� if ( - !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()) || - !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()) + !command.getTaskNo().equals(one.getTaskNo()) || + !command.getTaskStatus().equals(one.getTaskStatus()) || + !command.getWrkTaskPri().equals(one.getWrkTaskPri()) || + !command.getTargetPosition().equals(one.getTargetPosition()) ) { try{ News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); @@ -455,7 +289,7 @@ } } News.error("Rgv鍛戒护鍥炶澶辫触鍚庯紝閲嶆柊娣诲姞浠诲姟鍒伴槦鍒� ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command)); - MessageQueue.offer(SlaveType.Rgv, slave.getId(), new Task(4, command)); + MessageQueue.offer(SlaveType.Rgv, slave.getId(), new Task(2, command)); Thread.sleep(100); readStatus(); return false; @@ -467,54 +301,46 @@ News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�"); } - if (command.getAckFinish1() || command.getAckFinish2()) { - if (result.IsSuccess) { - Thread.sleep(300); - //浠诲姟涓嬪彂娆℃暟 - int writeCount2 = 0; - - do { - writeCount2++; - boolean commandFinish = false; - boolean commandFinish2 = false; - result = siemensNet.Write("DB100.DBX32.0", commandFinish); - OperateResult result3 = siemensNet.Write("DB100.DBX32.1", commandFinish); - - if(result.IsSuccess && result3.IsSuccess){ - //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� - Thread.sleep(200); - OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.32", (short) 2); - if (resultRead.IsSuccess) { - commandFinish=siemensNet.getByteTransform().TransBool(resultRead.Content, 0); - commandFinish2=siemensNet.getByteTransform().TransBool(resultRead.Content, 1); - - if (!commandFinish && !commandFinish2) { - News.error("RGV浠诲姟纭浣�"+commandFinish+"鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); - }else{ - //浠诲姟鍛戒护鍐欏叆鎴愬姛 - News.info("RGV浠诲姟纭浣�"+commandFinish+"鍥炶鎴愬姛锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); - break; - } - }else { - News.error("RGV浠诲姟纭浣�"+commandFinish+"鍥炶澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); + if (result.IsSuccess) { //浠诲姟涓嬪彂纭 + Thread.sleep(300); + //浠诲姟涓嬪彂娆℃暟 + int writeCount2 = 0; + do { + writeCount2++; + boolean commandFinish = true; + result = siemensNet.Write("DB100.34.0", commandFinish); + if(result.IsSuccess){ + //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� + Thread.sleep(200); + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.34", (short) 2); + if (resultRead.IsSuccess) { + commandFinish=siemensNet.getByteTransform().TransBool(resultRead.Content, 0); + 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); - } + } else { + News.error("RGV浠诲姟纭浣�"+commandFinish+"鍐欏叆澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); + } + }while (writeCount2<5); } - - try { // 鏃ュ織璁板綍 BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class); BasRgvOpt basRgvOpt = new BasRgvOpt( - command.getTaskNo1(), - command.getTaskNo2(), + command.getTaskNo(), command.getRgvNo(), new Date(), - command.getTargetPosition1() + command.getTaskStatus().toString(), + command.getTargetPosition(), + command.getWrkTaskPri(), + new Date() ); bean.insert(basRgvOpt); } catch (Exception ignore) { @@ -524,337 +350,12 @@ if (result != null && result.IsSuccess) { Thread.sleep(200); this.readStatus(); - log.info("RGV 宸ヤ綅1鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 宸ヤ綅12鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); + 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宸ヤ綅12鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - log.error("鍐欏叆RGV plc宸ヤ綅1鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - return false; - } - } - - /** - * 宸ヤ綅1鍐欏叆鏁版嵁 - */ - private boolean write1(RgvCommand command) throws InterruptedException { - if (null == command) { - log.error("RGV鍐欏叆鍛戒护涓虹┖"); - return false; - } - - OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 39); -// 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.setWrkTaskMove1(siemensNet.getByteTransform().TransInt16(result1.Content, 36)); - News.error("RGV鍛戒护涓嬪彂鍓嶈鍙栫姸鎬乕id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); - } - - - OperateResult result2 = siemensNet.Write("DB100.34", false); - if (result2.IsSuccess){ - News.error("涓嬪彂鍓嶆妸杞﹀瓙纭浣嶇疆涓篺alse"); - } - byte[] writeBytes = new byte[40]; - command.setRgvNo(slave.getId()); - - writeInt32(writeBytes, 0, command.getTargetPosition1()); - writeInt32(writeBytes, 4, command.getEndStaNo1()); - writeInt16(writeBytes, 8, (short)command.getTaskStatus1()); - writeInt32(writeBytes, 10, command.getTaskNo1()); - writeInt16(writeBytes, 14, (short)command.getDirection1()); - writeBool(writeBytes, 32, 0, command.getAckFinish1()); - writeInt16(writeBytes, 38, (short)command.getWrkTaskMove1()); - - OperateResult result = siemensNet.Write("DB100.0", writeBytes); - - - if (!result.IsSuccess){ - News.error("鍐欏叆RGVplc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===> [id:{}],{}",slave.getId(),JSON.toJSON(command)); - MessageQueue.offer(SlaveType.Rgv,slave.getId(),new Task(4,command)); - Thread.sleep(100); - readStatus(); - return false; - } - - //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� - Thread.sleep(400); - try { - OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 39); - if (resultRead.IsSuccess){ - RgvCommand one = new RgvCommand(); - one.setWrkTaskMove1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 38)); - 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.getDirection1().equals(one.getDirection1()) || - !command.getTaskNo1().equals(one.getTaskNo1()) || - !command.getTaskStatus1().equals(one.getTaskStatus1()) || - !command.getEndStaNo1().equals(one.getEndStaNo1()) || - !command.getTargetPosition1().equals(one.getTargetPosition1()) || - !command.getWrkTaskMove1().equals(one.getWrkTaskMove1()) - ) { - 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(4, 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 = true; - if(command.getCommand()){ - commandFinish = false; - } - result = siemensNet.Write("DB100.32.0", 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, 0); - 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); - } - } - -// if (command.getAckFinish1() == 0) { -// short commandFinish = 1; //宸ヤ綅1浠诲姟鍐欏叆 -// Thread.sleep(200); -// result = siemensNet.Write("DB100.10", commandFinish); -// } - - try { - // 鏃ュ織璁板綍 - BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class); - BasRgvOpt basRgvOpt = new BasRgvOpt( - command.getTaskNo1(), - command.getRgvNo(), - new Date(), - command.getTaskStatus1().toString(), - command.getTargetPosition1(), - command.getEndStaNo1(), - null, - new Date(), - null - ); - bean.insert(basRgvOpt); - } catch (Exception ignore) { - log.error(ignore.getMessage()); - } - - if (result != null && result.IsSuccess) { - Thread.sleep(200); - this.readStatus(); - log.info("RGV 宸ヤ綅1鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 宸ヤ綅1鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); - return true; - } else { - OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戝啓鍏GV plc宸ヤ綅1鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - log.error("鍐欏叆RGV plc宸ヤ綅1鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - return false; - } - } - - /** - * 宸ヤ綅2鍐欏叆鏁版嵁 - */ - private boolean write2(RgvCommand command) throws InterruptedException { - if (null == command) { - log.error("RGV鍐欏叆鍛戒护涓虹┖"); - return false; - } - - OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 40); - if (result1.IsSuccess){ - RgvCommand one = new RgvCommand(); - one.setTargetPosition1(siemensNet.getByteTransform().TransInt32(result1.Content, 0)); - 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)); - one.setWrkTaskMove2(siemensNet.getByteTransform().TransInt16(result1.Content, 38)); - 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[42]; - command.setRgvNo(slave.getId()); - - writeInt32(writeBytes, 0, command.getTargetPosition1()); - writeInt32(writeBytes, 20, command.getEndStaNo2()); - writeInt16(writeBytes, 24, (short)command.getTaskStatus2()); - writeInt32(writeBytes, 26, command.getTaskNo2()); - writeInt16(writeBytes, 30, (short)command.getDirection2()); - writeBool(writeBytes, 32, 0, command.getAckFinish2()); - writeInt16(writeBytes, 38, (short)command.getWrkTaskMove2()); - - - OperateResult result = siemensNet.Write("DB100.0", writeBytes); - - - - 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) 42); - if (resultRead.IsSuccess){ - RgvCommand one = new RgvCommand(); - one.setWrkTaskMove2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 38)); - one.setDirection2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 30)); - one.setTaskNo2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 26)); - one.setTaskStatus2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 24)); - one.setEndStaNo2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 20)); - one.setTargetPosition1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 0)); - if ( - !command.getDirection2().equals(one.getDirection2()) || - !command.getTaskNo2().equals(one.getTaskNo2()) || - !command.getTaskStatus2().equals(one.getTaskStatus2()) || - !command.getEndStaNo2().equals(one.getEndStaNo2()) || - !command.getTargetPosition1().equals(one.getTargetPosition1()) || - !command.getWrkTaskMove2().equals(one.getWrkTaskMove2()) - ) { - 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.getAckFinish2()) { - if (result.IsSuccess) { - Thread.sleep(300); - //浠诲姟涓嬪彂娆℃暟 - int writeCount2 = 0; - - do { - writeCount2++; - boolean commandFinish = true; - if(command.getCommand()){ - 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.getTaskNo2(), - command.getRgvNo(), - new Date(), - command.getTaskStatus2().toString(), - command.getTargetPosition2(), - command.getEndStaNo2(), - null, - new Date(), - null - ); - bean.insert(basRgvOpt); - } catch (Exception ignore) {} - - if (result != null && result.IsSuccess) { - Thread.sleep(200); - this.readStatus(); - log.info("RGV 宸ヤ綅2鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 宸ヤ綅2鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); - return true; - } else { - OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戝啓鍏GV plc宸ヤ綅2鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - log.error("鍐欏叆RGV plc宸ヤ綅2鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + 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; } } diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index e08db4f..6cd2918 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -158,6 +158,7 @@ if (null == crnProtocol) { crnProtocol = new CrnProtocol(); crnProtocol.setCrnNo(slave.getId()); + } crnProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0)); crnProtocol.setTaskNo(siemensNet.getByteTransform().TransInt16(result.Content, 2)); diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index e2581cb..35476e4 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -261,8 +261,9 @@ ArrayList<Integer> staNos = getStaNo(); int staNoSize = staNos.size(); OperateResultExOne<byte[]> result = null; - OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.0", (short) (2764)); - OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.0", (short) (1264)); + OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.0", (short) (2764));//1001-1028 + OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.0", (short) (1264));//1029-1037 + OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB104.0", (short) (1264));//1042-1053 if (result1.IsSuccess && result2.IsSuccess) { for (int i = 0; i < staNoSize; i++) { @@ -275,8 +276,10 @@ } if(siteId < 1029){ result = result1; - }else{ + }else if(siteId < 1042){ result = result2; + }else if(siteId < 1054){ + result = result3; } // 鑾峰彇璇ョ珯鐐瑰搴旂殑鍋忕Щ閲� Integer offset = siteOffsetMap.get(siteId); @@ -294,13 +297,9 @@ boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result.Content, offset + offset3 - 4, 3); staProtocol.setLoading(!status1[0]); // 鏈夌墿 - if(staProtocol.isLoading()){ - staProtocol.setInEnable(false); // 鍙叆 - staProtocol.setOutEnable(false);// 鍙嚭 - }else{ - staProtocol.setInEnable(true); // 鍙叆 - staProtocol.setOutEnable(true);// 鍙嚭 - } + + staProtocol.setInEnable(true); // 鍙叆 + staProtocol.setOutEnable(true);// 鍙嚭 // staProtocol.setInEnable(status1[1]); // 鍙叆 // staProtocol.setOutEnable(status1[3]);// 鍙嚭 // staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿 @@ -528,11 +527,11 @@ if(siteId > 1028){ write = siemensS7Net.Write("DB101." + (offset + offset2), staProtocol.getWorkNo()); // 宸ヤ綔鍙� Thread.sleep(200); - write1 = siemensS7Net.Write("DB101." + (offset + offset2 + 12), staProtocol.getStaNo()); // 鐩爣绔� + write1 = siemensS7Net.Write("DB101." + (offset + offset2 + 12), staProtocol.getStaNo().intValue()); // 鐩爣绔� }else{ write = siemensS7Net.Write("DB100." + (offset + offset2), staProtocol.getWorkNo()); // 宸ヤ綔鍙� Thread.sleep(200); - write1 = siemensS7Net.Write("DB100." + (offset + offset2 + 12), staProtocol.getStaNo()); // 鐩爣绔� + write1 = siemensS7Net.Write("DB100." + (offset + offset2 + 12), staProtocol.getStaNo().intValue()); // 鐩爣绔� } if(write.IsSuccess && write1.IsSuccess){ log.error("鍐欏叆杈撻�佺嚎鍛戒护鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 46a92d1..6eb1c10 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -48,13 +48,13 @@ # 鍙屾繁 doubleDeep: true # 鍙屾繁搴撲綅鎺掑彿 - doubleLocs: 1,4,5,8,9,12,13,16 + doubleLocs: 1,4,5,8,9,12,13,16,17,20 # 涓�涓爢鍨涙満璐熻矗鐨勮揣鏋舵帓鏁� groupCount: 4 # 鍫嗗灈鏈�1 crn[0]: id: 1 - ip: 10.10.10.10 + ip: 10.10.10.100 port: 102 rack: 0 slot: 0 @@ -64,21 +64,33 @@ # 鍫嗗灈鏈哄叆搴撶珯鐐� crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 123 + staNo: 1001 row: 2 - bay: 1 + bay: 52 lev: 1 + crnInStn[1]: + devpPlcId: ${wcs-slave.devp[0].id} + staNo: 2004 + row: 3 + bay: 52 + lev: 2 # 鍫嗗灈鏈哄嚭搴撶珯鐐� crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 118 + staNo: 1005 row: 3 - bay: 1 + bay: 52 lev: 1 + crnOutStn[1]: + devpPlcId: ${wcs-slave.devp[0].id} + staNo: 2001 + row: 2 + bay: 52 + lev: 2 # 鍫嗗灈鏈�2 crn[1]: id: 2 - ip: 10.10.10.20 + ip: 10.10.10.110 port: 102 rack: 0 slot: 0 @@ -88,21 +100,33 @@ # 鍫嗗灈鏈哄叆搴撶珯鐐� crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 131 + staNo: 1011 row: 7 - bay: 1 + bay: 52 lev: 1 + crnInStn[1]: + devpPlcId: ${wcs-slave.devp[0].id} + staNo: 2010 + row: 7 + bay: 52 + lev: 2 # 鍫嗗灈鏈哄嚭搴撶珯鐐� crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 127 + staNo: 1008 row: 6 - bay: 1 + bay: 52 lev: 1 + crnOutStn[1]: + devpPlcId: ${wcs-slave.devp[0].id} + staNo: 2007 + row: 6 + bay: 52 + lev: 2 # 鍫嗗灈鏈�3 crn[2]: id: 3 - ip: 10.10.10.30 + ip: 10.10.10.120 port: 102 rack: 0 slot: 0 @@ -112,21 +136,45 @@ # 鍫嗗灈鏈哄叆搴撶珯鐐� crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 135 + staNo: 1015 row: 10 - bay: 1 + bay: 52 lev: 1 + crnInStn[1]: + devpPlcId: ${wcs-slave.devp[0].id} + staNo: 2016 + row: 10 + bay: 52 + lev: 2 + crnInStn[2]: + devpPlcId: ${wcs-slave.devp[0].id} + staNo: 4001 + row: 10 + bay: 52 + lev: 4 # 鍫嗗灈鏈哄嚭搴撶珯鐐� crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 139 + staNo: 1019 row: 11 - bay: 1 + bay: 52 lev: 1 + crnOutStn[1]: + devpPlcId: ${wcs-slave.devp[0].id} + staNo: 2013 + row: 11 + bay: 52 + lev: 2 + crnOutStn[2]: + devpPlcId: ${wcs-slave.devp[0].id} + staNo: 4004 + row: 11 + bay: 52 + lev: 4 # 鍫嗗灈鏈�4 crn[3]: id: 4 - ip: 10.10.10.40 + ip: 10.10.10.130 port: 102 rack: 0 slot: 0 @@ -136,21 +184,33 @@ # 鍫嗗灈鏈哄叆搴撶珯鐐� crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 144 + staNo: 1025 row: 15 - bay: 1 + bay: 52 lev: 1 + crnInStn[1]: + devpPlcId: ${wcs-slave.devp[0].id} + staNo: 2022 + row: 15 + bay: 52 + lev: 2 # 鍫嗗灈鏈哄嚭搴撶珯鐐� crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 148 + staNo: 1022 row: 14 - bay: 1 + bay: 52 lev: 1 + crnOutStn[1]: + devpPlcId: ${wcs-slave.devp[0].id} + staNo: 1022 + row: 14 + bay: 52 + lev: 2 # 鍫嗗灈鏈�4 crn[4]: id: 5 - ip: 10.10.10.41 + ip: 10.10.10.140 port: 102 rack: 0 slot: 0 @@ -160,17 +220,29 @@ # 鍫嗗灈鏈哄叆搴撶珯鐐� crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 144 + staNo: 1032 row: 19 - bay: 1 + bay: 52 lev: 1 + crnInStn[1]: + devpPlcId: ${wcs-slave.devp[0].id} + staNo: 2028 + row: 19 + bay: 52 + lev: 2 # 鍫嗗灈鏈哄嚭搴撶珯鐐� crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 148 + staNo: 1029 row: 18 - bay: 1 + bay: 52 lev: 1 + crnOutStn[1]: + devpPlcId: ${wcs-slave.devp[0].id} + staNo: 2025 + row: 18 + bay: 52 + lev: 2 # RGV绌挎杞�1 rgv[0]: diff --git a/src/main/resources/mapper/WrkMastStaMapper.xml b/src/main/resources/mapper/WrkMastStaMapper.xml index 4218dc7..35c3f01 100644 --- a/src/main/resources/mapper/WrkMastStaMapper.xml +++ b/src/main/resources/mapper/WrkMastStaMapper.xml @@ -38,24 +38,31 @@ and wrk_no = #{workNo} </select> - <select id="selectNoInterfere" resultMap="BaseResultMap"> + <select id="selectByWrkNoPut" resultMap="BaseResultMap"> select top 1 * from asr_wrk_mast_sta where 1=1 - and (sta_start in - <foreach item="item" collection="staStarts" index="index" separator="," open="(" close=")"> - #{item} - </foreach> - or sta_start = 0 - ) - and (sta_end in - <foreach item="item" collection="staEnds" index="index" separator="," open="(" close=")"> - #{item} - </foreach> - or sta_end = 0 - ) - and wrk_sts=0 - order by line_number,id + and wrk_no = #{workNo} + and wrk_sts = 2 </select> + +<!-- <select id="selectNoInterfere" resultMap="BaseResultMap">--> +<!-- select top 1 * from asr_wrk_mast_sta--> +<!-- where 1=1--> +<!-- and (sta_start in--> +<!-- <foreach item="item" collection="staStarts" index="index" separator="," open="(" close=")">--> +<!-- #{item}--> +<!-- </foreach>--> +<!-- or sta_start = 0--> +<!-- )--> +<!-- and (sta_end in--> +<!-- <foreach item="item" collection="staEnds" index="index" separator="," open="(" close=")">--> +<!-- #{item}--> +<!-- </foreach>--> +<!-- or sta_end = 0--> +<!-- )--> +<!-- and wrk_sts=0--> +<!-- order by line_number,id--> +<!-- </select>--> <select id="selectNoInterfereList" resultMap="BaseResultMap"> select * from asr_wrk_mast_sta @@ -95,6 +102,23 @@ and wrk_no = #{workNo} order by line_number,id </select> + + <select id="selectNoInterfereToCrn" resultMap="BaseResultMap"> + select * from asr_wrk_mast_sta + where 1=1 + and (sta_start in + <foreach item="item" collection="staStarts" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + or sta_start = 0 + ) + or sta_end = 0 + ) + and sta_end in (2018,1018) + and wrk_sts=0 + and wrk_no = #{workNo} + order by line_number,id + </select> <select id="selectByWorkSta" resultMap="BaseResultMap"> select top 1 * from asr_wrk_mast_sta where work_sta = #{workSta} diff --git a/src/main/webapp/static/css/rgv.css b/src/main/webapp/static/css/rgv.css index bd49d5b..b65705f 100644 --- a/src/main/webapp/static/css/rgv.css +++ b/src/main/webapp/static/css/rgv.css @@ -125,7 +125,7 @@ .task-select { height: 50%; overflow: hidden; - padding: 20px 0 10px 20px; + padding: 20px 0 10px 10px; } .operator-item { display: inline-block; diff --git a/src/main/webapp/static/js/console.js b/src/main/webapp/static/js/console.js index fad0039..2b48089 100644 --- a/src/main/webapp/static/js/console.js +++ b/src/main/webapp/static/js/console.js @@ -66,7 +66,7 @@ } bayWidth = rackss[i].width / bLen // hpPosition 0 琛ㄧず璐ф灦搴忓彿 宸�->鍙� 1 琛ㄧず璐ф灦搴忓彿 宸�<-鍙� - if (mapInfo.hpPosition == 0) { + if (mapInfo.hpPosition == 1) { bNum = maxBayNo for (let j = bLen; j > 0; j--) { bay = "<button class='item' style='width: "+ bayWidth +"px'>" + bNum + "</button>" diff --git a/src/main/webapp/views/console.html b/src/main/webapp/views/console.html index 74e4bb1..67535cd 100644 --- a/src/main/webapp/views/console.html +++ b/src/main/webapp/views/console.html @@ -602,7 +602,7 @@ } // crnEl.animate({left: (crns[i].bay * unit) + 'px'}, 1000); // crns[i].bay = 15; - var offSet = 800; + var offSet = 120; unit = 52; // switch (i) { // case 0: @@ -624,9 +624,9 @@ // } if(crns[i].bay === 1){ - crnEl.animate({left: offSet + 'px'}, 1000); + crnEl.animate({left: offSet + 'px'}, 19); } else { - crnEl.animate({left: (offSet - unit + (crns[i].bay * unit)) + 'px'}, 1000); + crnEl.animate({left: (offSet - unit + (crns[i].bay * unit)) + 'px'}, 19); } } diff --git a/src/main/webapp/views/rgv.html b/src/main/webapp/views/rgv.html index 43f4b79..c5a8735 100644 --- a/src/main/webapp/views/rgv.html +++ b/src/main/webapp/views/rgv.html @@ -116,12 +116,12 @@ <thead> <tr> <th>RGV</th> - <th>宸ヤ綔鍙�</th> + <th>宸ヤ綅1宸ヤ綔鍙�</th> + <th>宸ヤ綅2宸ヤ綔鍙�</th> <th>鐘舵��</th> - <th>婧愮珯</th> <th>鐩爣绔�</th> - <th>婧愬簱浣�</th> - <th>鐩爣搴撲綅</th> +<!-- <th>婧愬簱浣�</th>--> +<!-- <th>鐩爣搴撲綅</th>--> <!-- <th>璧拌閫熷害锛坢/min)</th>--> <!-- <th>鍗囬檷閫熷害锛坢/min)</th>--> <!-- <th>鍙夌墮閫熷害锛坢/min)</th>--> @@ -148,7 +148,7 @@ <!-- 璁惧浠诲姟閫夋嫨 --> <div class="task-select"> <!-- 鍫嗗灈鏈洪�夋嫨 --> - <div id="rgv-select" class="operator-item" style="width: 55%"> + <div id="rgv-select" class="operator-item" style="width: 30%"> <span class="select-title">RGV鍙�</span> <div class="select-container" style="padding: 20px 0;"> <label><input type="radio" name="rgvSelect" value="1" checked> 1鍙稲GV</label> @@ -157,12 +157,12 @@ </div> </div> <!-- 婧愮珯/婧愬簱浣� 閫夋嫨 --> - <div id="source-select" class="operator-item"> - <span class="select-title">婧愮珯</span> + <div id="source-select1" class="operator-item"> + <span class="select-title">宸ヤ綅</span> <div class="select-container"> <div class="select-container-item"> - <span>宸ヤ綅1婧愮珯</span> - <label><input id="sourceStaNo" type="number" name="points" min="0" /></label> + <span>宸ヤ綅</span> + <label><input id="workSta" type="number" name="points" min="0" /></label> </div> <!-- <div class="select-container-item">--> <!-- <span>鎺�</span>--> @@ -179,11 +179,11 @@ </div> </div> <!-- 鐩爣绔�/鐩爣搴撲綅 閫夋嫨 --> - <div id="target-select" class="operator-item"> + <div id="target-select2" class="operator-item"> <span class="select-title">鐩爣绔�</span> <div class="select-container"> <div class="select-container-item"> - <span>宸ヤ綅1鐩爣绔�</span> + <span>鐩爣绔�</span> <label><input id="staNo" type="number" name="points" min="0" /></label> </div> <!-- <div class="select-container-item">--> @@ -200,6 +200,27 @@ <!-- </div>--> </div> </div> + <div id="target-select" class="operator-item"> + <span class="select-title">宸ヤ綔鍙�</span> + <div class="select-container"> + <div class="select-container-item"> + <span>宸ヤ綔鍙�</span> + <label><input id="workNo" type="number" name="points" min="0" /></label> + </div> + <!-- <div class="select-container-item">--> + <!-- <span>鎺�</span>--> + <!-- <label><input id="row" type="number" name="points" min="1" style="background-color: #a9eeff" value="1" /></label>--> + <!-- </div>--> + <!-- <div class="select-container-item">--> + <!-- <span>宸ヤ綅2鐩爣绔�</span>--> + <!-- <label><input id="bay" type="number" name="points" min="0" style="background-color: #a9eeff" value="0" /></label>--> + <!-- </div>--> + <!-- <div class="select-container-item">--> + <!-- <span>灞�</span>--> + <!-- <label><input id="lev" type="number" name="points" min="1" style="background-color: #a9eeff" value="1" /></label>--> + <!-- </div>--> + </div> + </div> </div> <!-- 璁惧浠诲姟鎿嶄綔 --> @@ -207,15 +228,15 @@ <fieldset> <legend>鎵嬪姩鎿嶄綔</legend> <div class="button-group"> - <button class="item" onclick="put()">鍙栨斁璐�</button> -<!-- <button class="item" onclick="take()">鍙栬揣</button>--> -<!-- <button class="item" onclick="stockMove()">鏀捐揣</button>--> +<!-- <button class="item" onclick="put()">鍙栨斁璐�</button>--> + <button class="item" onclick="take()">鍙栬揣</button> + <button class="item" onclick="stockMove()">鏀捐揣</button> <!-- <button class="item" onclick="siteMove()">绔欏埌绔�</button>--> <!-- <button class="item" onclick="bacOrigin()">鍥炲師鐐�</button>--> <!-- <button class="item" onclick="reverseOrigin()">鍙嶅師鐐�</button>--> <!-- <button class="item" onclick="coorMove()">鍧愭爣绉昏</button>--> - <button class="item" onclick="taskComplete()">浠诲姟瀹屾垚</button> - <button class="item" onclick="lock()">瑙i攣</button> +<!-- <button class="item" onclick="taskComplete()">浠诲姟瀹屾垚</button>--> +<!-- <button class="item" onclick="lock()">瑙i攣</button>--> <!-- <button class="item" onclick="pause()">鏆傚仠</button>--> <!-- <button class="item" onclick="boot()">鍚姩</button>--> <!-- <button class="item" onclick="clearCommand()">娓呴櫎鍛戒护</button>--> @@ -353,12 +374,10 @@ for (var i=1;i<=table.length;i++){ var tr = tableEl.find("tr").eq(i); setVal(tr.children("td").eq(0), table[i-1].rgvNo); - setVal(tr.children("td").eq(1), table[i-1].workNo); - setVal(tr.children("td").eq(2), table[i-1].status); - setVal(tr.children("td").eq(3), table[i-1].sourceStaNo); + setVal(tr.children("td").eq(1), table[i-1].workNo1); + setVal(tr.children("td").eq(2), table[i-1].workNo2); + setVal(tr.children("td").eq(3), table[i-1].status); setVal(tr.children("td").eq(4), table[i-1].staNo); - setVal(tr.children("td").eq(5), table[i-1].sourceLocNo); - setVal(tr.children("td").eq(6), table[i-1].locNo); // setVal(tr.children("td").eq(7), table[i-1].xspeed); // setVal(tr.children("td").eq(8), table[i-1].yspeed); // setVal(tr.children("td").eq(9), table[i-1].zspeed); @@ -384,6 +403,8 @@ var sourceRow = $('#sourceRow').val(); var sourceBay = $('#sourceBay').val(); var sourceLev = $('#sourceLev').val(); + var workSta = $('#workSta').val(); + var workNo = $('#workNo').val(); var staNo = $('#staNo').val(); var row = $('#row').val(); var bay = $('#bay').val(); @@ -395,6 +416,8 @@ sourceBay: sourceBay, sourceLev: sourceLev, staNo: staNo, + workSta: workSta, + workNo: workNo, row: row, bay: bay, lev: lev @@ -408,14 +431,14 @@ }); } - // 鍑哄簱 + // 鍙栬揣 function take() { http.post(baseUrl+"/rgv/operator/take", getReqParam(), function (res) { layer.msg(res.msg); }); } - // 搴撲綅杞Щ + // 鏀捐揣 function stockMove() { http.post(baseUrl+"/rgv/operator/stockMove", getReqParam(), function (res) { layer.msg(res.msg); -- Gitblit v1.9.1