src/main/java/com/zy/asrs/controller/OpenController.java
File was deleted src/main/java/com/zy/asrs/controller/SiteController.java
@@ -188,9 +188,6 @@ if (staNo != null) { staProtocol.setStaNo(staNo); } if (palletSize != null) { staProtocol.setPalletSize(palletSize); } if (pakMk != null) { staProtocol.setPakMk(pakMk.equals("Y")); } src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -5,15 +5,12 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.mapper.BasCrnErrorMapper; import com.zy.asrs.mapper.WaitPakinMapper; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.*; import com.zy.asrs.utils.Utils; import com.zy.common.constant.RedisConstantType; import com.zy.common.model.LocTypeDto; import com.zy.common.model.MatDto; import com.zy.common.model.SearchLocParam; @@ -29,28 +26,23 @@ import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.*; import com.zy.core.model.*; import com.zy.core.model.command.CrnCommand; import com.zy.core.model.command.LedCommand; import com.zy.core.model.command.RgvCommand; import com.zy.core.model.command.LiftCommand; import com.zy.core.model.protocol.CrnProtocol; import com.zy.core.model.protocol.RgvProtocol; import com.zy.core.model.protocol.LiftProtocol; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.BarcodeThread; import com.zy.core.thread.LedThread; import com.zy.core.thread.RgvThread; import com.zy.core.thread.SiemensDevpThread; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.util.*; import java.util.stream.Collectors; /** * ç«ä½ä»åºWCSç³»ç»ä¸»æµç¨ä¸å¡ @@ -74,8 +66,6 @@ private WrkDetlService wrkDetlService; @Autowired private WrkDetlLogService wrkDetlLogService; @Autowired private WaitPakinMapper waitPakinMapper; @Autowired private LocMastService locMastService; @Autowired @@ -136,17 +126,13 @@ && staProtocol.isInEnable() && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 9999 && staProtocol.isPakMk() && (staProtocol.getEmptyInType() != 1 && staProtocol.getEmptyInType() != 2)) { && staProtocol.isPakMk()) { News.warnNoLog("" + mark + " - 0" + " - å¼å§æ§è¡"); String barcode = barcodeThread.getBarcode(); if (!Cools.isEmpty(barcode)) { News.info("" + mark + " - 1" + " - {}å·æ¡ç æ«æå¨æ£æµæ¡ç ä¿¡æ¯ï¼{}", inSta.getBarcode(), barcode); if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { // staProtocol.setWorkNo((short) 9992); // staProtocol.setStaNo(inSta.getBackSta().shortValue()); // devpThread.setPakMk(staProtocol.getSiteId(), false); // MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); News.info("" + mark + " - 2" + " - æ«ç 失败1 ===>> {}å·æ¡ç æ«æå¨æ£æµæ¡ç ä¿¡æ¯ï¼{},ç«ç¹:{}", inSta.getBarcode(), barcode, inSta.getStaNo()); // led å¼å¸¸æ¾ç¤º if (ledThread != null) { @@ -156,11 +142,6 @@ continue; } } else { // staProtocol.setWorkNo((short) 9992); // staProtocol.setStaNo(inSta.getBackSta().shortValue()); // devpThread.setPakMk(staProtocol.getSiteId(), false); // MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); News.info("" + mark + " - 3" + " - æ«ç 失败2 ===>> {}å·æ¡ç æ«æå¨æ£æµæ¡ç ä¿¡æ¯ï¼{},ç«ç¹:{}", inSta.getBarcode(), barcode, inSta.getStaNo()); // led å¼å¸¸æ¾ç¤º if (ledThread != null) { @@ -181,13 +162,6 @@ } if (wrkMast != null) { News.error("" + mark + " - 4" + " - 工使¡£ä¸å·²åå¨è¯¥ç«ç¶æä¸ºï¼ 2.设å¤ä¸èµ° ï¼çæ°æ®,å·¥ä½å·={}", wrkMast.getWrkNo()); // staProtocol.setWorkNo((short)9992); // staProtocol.setStaNo(inSta.getBackSta().shortValue()); // devpThread.setPakMk(staProtocol.getSiteId(), false); // boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); // if (!result) { // throw new CoolException("æ´æ°plcç«ç¹ä¿¡æ¯å¤±è´¥"); // } // led å¼å¸¸æ¾ç¤º if (ledThread != null) { @@ -197,16 +171,21 @@ continue; } if (inSta.getStaNo() == 1002 || inSta.getStaNo() == 1007) { //æ£æµæ¯å¦æåºåºä»»å¡ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() .in("io_type", 101, 103, 107) .in("sta_no", 1003, 1004) ); if (!wrkMasts.isEmpty()) { News.error("" + mark + " - 4" + " - å ¥åºï¼æ£æµåå¨åºåºä»»å¡ï¼çå¾ åºåºä»»å¡æ§è¡å®æ,æçç ={}", barcode); continue; } LiftProtocol liftProtocol = devpThread.getLiftStatus(); if(liftProtocol == null) { continue; } if (liftProtocol.getMode() != 1) { continue; } if (liftProtocol.getDeviceStatus() != 0) { continue; } if (liftProtocol.getWorkNo() > 0) { continue; } try { @@ -227,54 +206,29 @@ if (jsonObject.getInteger("code").equals(200)) { StartupDto dto = jsonObject.getObject("data", StartupDto.class); LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() .eq("loc_no", dto.getLocNo())); short staNo = dto.getStaNo().shortValue(); int sourceStaNo = dto.getSourceStaNo(); if (sourceStaNo == 1007) { staNo = 2002; WrkMast currentWrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", dto.getWorkNo())); if (currentWrkMast == null) { throw new CoolException("WMSçæä»»å¡åï¼WCSæ¥è¯¢ä¸ºç©º"); } if (inSta.getStaNo() == 1002) { staNo = 2002; } Integer staNo = Utils.getStaNoByLocNo(dto.getLocNo()); LiftCommand command = new LiftCommand(); command.setWorkNo(dto.getWorkNo()); command.setSourceStaNo(inSta.getStaNo()); command.setTargetStaNo(staNo); barcodeThread.setBarcode(""); staProtocol.setWorkNo(dto.getWorkNo().shortValue()); staProtocol.setStaNo(staNo); staProtocol.setPalletSize(locMast.getLocType2()); devpThread.setPakMk(staProtocol.getSiteId(), false); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, command)); if (!result) { throw new CoolException("æ´æ°plcç«ç¹ä¿¡æ¯å¤±è´¥"); } // // led å ¥åºä¿¡æ¯æ¾ç¤º // if (ledThread != null) { // // å½ä»¤éå // List<LedCommand> commands = new ArrayList<>(); // // ç»è£ å½ä»¤ // LedCommand ledCommand = new LedCommand(); // ledCommand.setWorkNo(dto.getWorkNo()); // ledCommand.setIoType(1); // ledCommand.setTitle("å ¨æ¿å ¥åº"); // ledCommand.setLocNo(dto.getLocNo()); // ledCommand.setStaNo(dto.getStaNo()); // commands.add(ledCommand); // MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, commands)); //// ledThread.errorReset(); // } currentWrkMast.setWrkSts(3L);// 3.è®¾å¤æ§è¡ä¸ currentWrkMast.setCrnStrTime(new Date()); wrkMastService.updateById(currentWrkMast); } else { News.error("" + mark + " - 5" + " - è¯·æ±æ¥å£å¤±è´¥ï¼ï¼ï¼urlï¼{}ï¼requestï¼{}ï¼responseï¼{}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); // staProtocol.setWorkNo((short)9992); // staProtocol.setStaNo(inSta.getBackSta().shortValue()); // devpThread.setPakMk(staProtocol.getSiteId(), false); // boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); // if (!result) { // throw new CoolException("æ´æ°plcç«ç¹ä¿¡æ¯å¤±è´¥"); // } // led å¼å¸¸æ¾ç¤º if (ledThread != null) { @@ -358,11 +312,6 @@ .eq("crn_no", wrkMast.getCrnNo()); // å åæºå· StaDesc staDesc = staDescService.selectOne(wrapper); if (Cools.isEmpty(staDesc)) { // News.error(""+mark+" - 2"+" - å ¥åºè·¯å¾ä¸åå¨ï¼type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo()); // staProtocol.setWorkNo((short) 9989); // staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue()-(short)1)); // devpThread.setPakMk(staProtocol.getSiteId(), false); // MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); //LED LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); // led å¼å¸¸æ¾ç¤º @@ -370,6 +319,23 @@ String errorMsg = "æ¤ä¸ºæ£æãå¹¶æ¿ãçç¹åå ¥åº.请æ¾å¨" + pickSta.getBackSta().shortValue() + "ç«ç¹"; MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errorMsg)); } continue; } LiftProtocol liftProtocol = devpThread.getLiftStatus(); if(liftProtocol == null) { continue; } if (liftProtocol.getMode() != 1) { continue; } if (liftProtocol.getDeviceStatus() != 0) { continue; } if (liftProtocol.getWorkNo() > 0) { continue; } @@ -405,16 +371,20 @@ continue; } LocMast locMast = locMastService.selectById(newWrkMast.getLocNo()); // æ´æ°ç«ç¹ä¿¡æ¯ ä¸ ä¸åplcå½ä»¤ staProtocol.setWorkNo(newWrkMast.getWrkNo().shortValue()); staProtocol.setStaNo(newWrkMast.getStaNo().shortValue()); staProtocol.setPalletSize(locMast.getLocType2()); devpThread.setPakMk(staProtocol.getSiteId(), false); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); Integer staNo = Utils.getStaNoByLocNo(newWrkMast.getLocNo()); LiftCommand command = new LiftCommand(); command.setWorkNo(newWrkMast.getWrkNo()); command.setSourceStaNo(pickSta.getStaNo()); command.setTargetStaNo(staNo); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, command)); if (!result) { News.error("" + mark + " - 3" + " - åå¸å½ä»¤è³è¾é线éå失败ï¼ï¼ï¼ [plcç¼å·ï¼{}]", devp.getId()); throw new CoolException("æ´æ°plcç«ç¹ä¿¡æ¯å¤±è´¥"); } newWrkMast.setWrkSts(3L);// 3.è®¾å¤æ§è¡ä¸ newWrkMast.setCrnStrTime(new Date()); wrkMastService.updateById(newWrkMast); } else { News.error("" + mark + " - 5" + " - è¯·æ±æ¥å£å¤±è´¥ï¼ï¼ï¼urlï¼{}ï¼requestï¼{}ï¼responseï¼{}", wmsUrl + "/rpc/pakin/pick/loc/v1", JSON.toJSONString(param), response); } @@ -436,6 +406,128 @@ } /** * æ§è¡åºåºä»»å¡ */ public synchronized void executeOutTask() { DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); if(devpThread == null) { return; } LiftProtocol liftProtocol = devpThread.getLiftStatus(); if(liftProtocol == null) { return; } if (liftProtocol.getMode() != 1) { return; } if (liftProtocol.getDeviceStatus() != 0) { return; } if (liftProtocol.getWorkNo() > 0) { return; } //æ£æµåºåºç«æ¯å¦å¯åº StaProtocol staProtocol = devpThread.getStation().get(100); if (staProtocol == null) { return; } if (!staProtocol.isAutoing()) { return; } if (staProtocol.isLoading()) { return; } if (!staProtocol.isOutEnable()) { return; } //æ£æ¥æ¯å¦ææ£å¨æ§è¡çä»»å¡ List<WrkMast> workingWrkMast = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", 3, 12)); if (!workingWrkMast.isEmpty()) { return; } List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 11)); if (wrkMasts.isEmpty()) { return; } WrkMast wrkMast = wrkMasts.get(0); Integer sourceStaNo = Utils.getStaNoByLocNo(wrkMast.getSourceLocNo()); LiftCommand command = new LiftCommand(); command.setWorkNo(wrkMast.getWrkNo()); command.setSourceStaNo(sourceStaNo); command.setTargetStaNo(100); boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, command)); if (!result) { throw new CoolException("æ´æ°plcç«ç¹ä¿¡æ¯å¤±è´¥"); } wrkMast.setWrkSts(12L);// 12.è®¾å¤æ§è¡ä¸ wrkMast.setCrnStrTime(new Date()); wrkMastService.updateById(wrkMast); } /** * æ£æµä»»å¡å®æ */ public synchronized void deviceFinished() { // æ ¹æ®plcéå for (DevpSlave devp : slaveProperties.getDevp()) { DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); if (devpThread == null) { continue; } LiftProtocol liftProtocol = devpThread.getLiftStatus(); if (liftProtocol == null) { continue; } if (liftProtocol.getWorkNo() <= 0) { continue; } if (liftProtocol.getMode() != 1) { continue; } if (liftProtocol.getDeviceStatus() != 0) { continue; } WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", liftProtocol.getWorkNo())); if (wrkMast == null) { continue; } if (wrkMast.getWrkSts() == 3) { wrkMast.setWrkSts(4L); wrkMast.setCrnEndTime(new Date()); wrkMast.setIoTime(new Date()); wrkMastService.updateById(wrkMast); }else if (wrkMast.getWrkSts() == 12) { wrkMast.setWrkSts(14L); wrkMast.setCrnEndTime(new Date()); wrkMast.setIoTime(new Date()); wrkMastService.updateById(wrkMast); }else { News.error("æªç¥çå·¥ä½ç¶æ"); } } } /** * å åæºå¼å¸¸ä¿¡æ¯è®°å½ */ public synchronized void recCrnErr(Integer mark) { src/main/java/com/zy/asrs/utils/Utils.java
@@ -6,6 +6,7 @@ import java.text.DecimalFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** @@ -22,6 +23,31 @@ return (float) Arith.multiplys(2, f, 1); } public static Integer getStaNoByLocNo(String locNo) { HashMap<String, Integer> map = new HashMap<>(); map.put("0100101", 102); map.put("0100202", 103); map.put("0100102", 104); map.put("0100203", 105); map.put("0100103", 106); map.put("0100204", 107); map.put("0100104", 108); map.put("0100205", 109); map.put("0100105", 110); map.put("0100206", 111); map.put("0100106", 112); map.put("0100207", 113); map.put("0100107", 114); map.put("0100208", 115); map.put("0100108", 116); map.put("0100209", 117); map.put("0100109", 118); map.put("0100210", 119); map.put("0100110", 120); return map.get(locNo); } public static String zerofill(String msg, Integer count){ if (msg.length() == count){ return msg; src/main/java/com/zy/common/model/LocTypeDto.java
@@ -29,14 +29,10 @@ } public LocTypeDto(StaProtocol staProtocol) { if (staProtocol.isHigh() == staProtocol.isLow()) { if (staProtocol.getLocHeight() == null) { throw new CoolException("plcé«ä½æ£æµå¼å¸¸"); } if (staProtocol.isLow()) { this.locType1 = 1; // ä½åºä½ } else { this.locType1 = 2; // é«åºä½ } this.locType1 = staProtocol.getLocHeight(); } /** src/main/java/com/zy/core/DevpThread.java
@@ -1,6 +1,8 @@ package com.zy.core; import com.zy.core.model.protocol.LiftProtocol; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.model.protocol.TemperatureProtocol; import java.util.Map; @@ -8,6 +10,10 @@ Map<Integer, StaProtocol> getStation(); Map<Integer, TemperatureProtocol> getTemperatureList(); LiftProtocol getLiftStatus(); void setPakMk(Integer siteId, boolean pakMk); } src/main/java/com/zy/core/MainProcess.java
@@ -46,8 +46,12 @@ Thread.sleep(200); // æ£æãå¹¶æ¿ãçç¹åå ¥åº mainService.stnToCrnStnPick(2); // å åæºå¼å¸¸ä¿¡æ¯è®°å½ mainService.recCrnErr(3); // æ§è¡åºåºä»»å¡ mainService.executeOutTask(); // æ£æµä»»å¡å®æ mainService.deviceFinished(); // // å åæºå¼å¸¸ä¿¡æ¯è®°å½ // mainService.recCrnErr(3); // åºåº ===>> 工使¡£ä¿¡æ¯åå ¥ledæ¾ç¤ºå¨ mainService.ledExecute(4); // å ¶ä» ===>> LEDæ¾ç¤ºå¨å¤ä½ï¼æ¾ç¤ºé»è®¤ä¿¡æ¯ src/main/java/com/zy/core/model/command/LiftCommand.java
New file @@ -0,0 +1,14 @@ package com.zy.core.model.command; import lombok.Data; @Data public class LiftCommand { private Integer workNo; private Integer sourceStaNo; private Integer targetStaNo; } src/main/java/com/zy/core/model/protocol/LiftProtocol.java
New file @@ -0,0 +1,19 @@ package com.zy.core.model.protocol; import lombok.Data; @Data public class LiftProtocol { //0æå¨ 1èªå¨ private Short mode = 0; //0ç©ºé² 1è¿è¡ä¸ private Short deviceStatus = 0; private Short workNo = 0; //0æªå®æ 1已宿 private Short taskStatus = 0; } src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -1,6 +1,5 @@ package com.zy.core.model.protocol; import com.zy.asrs.entity.BasDevp; import lombok.Data; /** @@ -40,59 +39,14 @@ // 满æç private boolean fullPlt; // é« private boolean high; // ä½ private boolean low; // é«åº¦ private Short locHeight; // é宿 è®° private boolean pakMk = true; //æ¥è¦ private Short error; // åè¶ æ¥è¦ private boolean frontError; // åè¶ æ¥è¦ private boolean backError; // è¶ é«æ¥è¦ private boolean highError; // 左髿¥è¦ private boolean leftError; // å³é«æ¥è¦ private boolean rightError; // è¶ éæ¥è¦ private boolean weightError; // æ«ç æ¥è¦ private boolean barcodeError; // æç尺寸 private Short palletSize; //空æå ¥åºç±»å private Short emptyInType; public BasDevp toSqlModel(){ BasDevp basDevp = new BasDevp(); basDevp.setDevNo(siteId); basDevp.setWrkNo(workNo.intValue()); basDevp.setAutoing(autoing?"Y":"N"); basDevp.setLoading(loading?"Y":"N"); basDevp.setInEnable(inEnable?"Y":"N"); basDevp.setOutEnable(outEnable?"Y":"N"); basDevp.setLocType1((short) 0); // é«ä½ç±»å{0:æªç¥,1:ä½åºä½,2:é«åºä½} basDevp.setLocType2((short) 0); // 宽çªç±»å{0:æªç¥,1:çªåºä½,2:宽åºä½} basDevp.setLocType3((short) 0); // è½»éç±»å{0:æªç¥,1:è½»åºä½,2:éåºä½} basDevp.setLocType1(high != low && low ? (short) 1 : (short) 2); return basDevp; } @Override public StaProtocol clone() { src/main/java/com/zy/core/model/protocol/TemperatureProtocol.java
New file @@ -0,0 +1,14 @@ package com.zy.core.model.protocol; import lombok.Data; @Data public class TemperatureProtocol { private Integer deviceId; private Short temperature; private Short humidity; } src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -9,9 +9,7 @@ import com.core.common.DateUtils; import com.core.common.SpringUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.DeviceDataLog; import com.zy.asrs.service.BasDevpService; import com.zy.asrs.service.DeviceDataLogService; import com.zy.common.utils.News; import com.zy.core.DevpThread; @@ -22,7 +20,10 @@ import com.zy.core.enums.SlaveType; import com.zy.core.model.DevpSlave; import com.zy.core.model.Task; import com.zy.core.model.command.LiftCommand; import com.zy.core.model.protocol.LiftProtocol; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.model.protocol.TemperatureProtocol; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -32,7 +33,6 @@ /** * è¾éçº¿çº¿ç¨ * Created by vincent on 2020/8/4 */ @Data @Slf4j @@ -41,7 +41,8 @@ private DevpSlave slave; private SiemensS7Net siemensS7Net; private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>(); private short heartBeatVal = 1; private LiftProtocol liftProtocol = new LiftProtocol(); private Map<Integer, TemperatureProtocol> temperatureMap = new ConcurrentHashMap<>(); /** * æ¥å¿ééæ¶é´ @@ -51,24 +52,16 @@ public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{ add(100);add(101);add(102);add(103);add(104); add(105);add(106);add(107);add(108);add(109); add(110); add(110);add(111);add(112);add(113);add(114); add(115);add(116);add(117);add(118);add(119);add(120); }}; public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{ add(2000);add(2001);add(2002);add(1001);add(1002);add(1003);add(1004);add(1005);add(1006);add(1007); }}; private Integer count = 0; public static final ArrayList<Integer> barcode1 = new ArrayList<Integer>() {{ add(1); add(2); }}; public static final ArrayList<Integer> barcode2 = new ArrayList<Integer>() {{ add(3); add(4); public static final ArrayList<Integer> temperature1 = new ArrayList<Integer>() {{ add(1);add(2);add(3);add(4);add(5);add(6);add(7);add(8);add(9); }}; /** @@ -108,6 +101,15 @@ } } private ArrayList<Integer> getTemperature() { switch (slave.getId()) { case 1: return temperature1; default: throw new CoolException("æå¡å¨å¼å¸¸"); } } @Override @SuppressWarnings("InfiniteLoopStatement") public void run() { @@ -126,7 +128,7 @@ break; // åæ°æ® ID+ç®æ ç« case 2: write((StaProtocol)task.getData()); write((LiftCommand) task.getData()); break; default: break; @@ -142,30 +144,26 @@ * åå§åç«ç¹ç¶æ */ private void initSite() { count ++; ArrayList<Integer> staNos = getStaNo(); if(count > 77) { // ç«ç¹ç¼å· for (Integer siteId : staNos) { StaProtocol staProtocol = station.get(siteId); if (null == staProtocol) { staProtocol = new StaProtocol(); staProtocol.setSiteId(siteId); station.put(siteId, staProtocol); } staProtocol.setWorkNo((short) 0); // ID staProtocol.setAutoing(false); // èªå¨ staProtocol.setLoading(false); // æç© staProtocol.setInEnable(false); // å¯å ¥ staProtocol.setOutEnable(false); // å¯åº staProtocol.setEmptyMk(false); // 空æ¿ä¿¡å· staProtocol.setStaNo((short) 0); // ç®æ ç« if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { staProtocol.setPakMk(true); } // ç«ç¹ç¼å· for (Integer siteId : staNos) { StaProtocol staProtocol = station.get(siteId); if (null == staProtocol) { staProtocol = new StaProtocol(); staProtocol.setSiteId(siteId); station.put(siteId, staProtocol); } count = 0; staProtocol.setWorkNo((short) 0); // ID staProtocol.setAutoing(false); // èªå¨ staProtocol.setLoading(false); // æç© staProtocol.setInEnable(false); // å¯å ¥ staProtocol.setOutEnable(false); // å¯åº staProtocol.setEmptyMk(false); // 空æ¿ä¿¡å· staProtocol.setStaNo((short) 0); // ç®æ ç« if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { staProtocol.setPakMk(true); } } } @@ -195,7 +193,7 @@ private void read() throws InterruptedException { ArrayList<Integer> staNos = getStaNo(); int staNoSize = staNos.size(); OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize * 18)); OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize * 13)); if (result.IsSuccess) { for (int i = 0; i < staNoSize; i++) { Integer siteId = staNos.get(i); // ç«ç¹ç¼å· @@ -206,21 +204,12 @@ station.put(siteId, staProtocol); } staProtocol.setSiteId(siteId); staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, (i * 18))); // å·¥ä½å· staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, (i * 18) + 4)); // ç®æ ç« staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, (i * 13))); // å·¥ä½å· staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, (i * 13) + 4)); // ç®æ ç« staProtocol.setLocHeight(siemensS7Net.getByteTransform().TransInt16(result.Content, (i * 13) + 8));//åºä½é«åº¦ staProtocol.setError(siemensS7Net.getByteTransform().TransInt16(result.Content, (i * 13) + 10)); // æ¥è¦ short locHeight = siemensS7Net.getByteTransform().TransInt16(result.Content, (i * 18) + 8);//åºä½é«åº¦ if (locHeight == 2) {//high staProtocol.setHigh(true); staProtocol.setLow(false); }else {//low staProtocol.setHigh(false); staProtocol.setLow(true); } staProtocol.setError(siemensS7Net.getByteTransform().TransInt16(result.Content, (i * 18) + 10)); // æ¥è¦ boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, (i * 18) + 12, 1); boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, (i * 13) + 12, 1); staProtocol.setAutoing(status[0]); // èªå¨ staProtocol.setLoading(status[1]); // æç© staProtocol.setInEnable(status[2]); // å¯å ¥ @@ -228,21 +217,37 @@ staProtocol.setEmptyMk(status[4]); // 空æ¿ä¿¡å· staProtocol.setFullPlt(status[5]); // 满æç boolean[] statusError = siemensS7Net.getByteTransform().TransBool(result.Content, (i * 18) + 13, 1); staProtocol.setFrontError(statusError[0]); // åè¶ æ¥è¦ staProtocol.setBackError(statusError[1]); // åè¶ æ¥è¦ staProtocol.setHighError(statusError[2]); // è¶ é«æ¥è¦ staProtocol.setLeftError(statusError[3]);// 左髿¥è¦ staProtocol.setRightError(statusError[4]); // å³é«æ¥è¦ staProtocol.setWeightError(statusError[5]); // è¶ éæ¥è¦ staProtocol.setBarcodeError(statusError[6]); // æ«ç æ¥è¦ short emptyInType = siemensS7Net.getByteTransform().TransInt16(result.Content, (i * 18) + 14);//é¢ç1-空æå ¥åºç±»åï¼1:ç«åºæ¹å 2:产线æ¹å staProtocol.setEmptyInType(emptyInType); if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { staProtocol.setPakMk(true); } } } //ä»»å¡ä¿¡æ¯åé¦ Thread.sleep(200); OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB101.400", (short) 10); if (result3.IsSuccess) { liftProtocol.setMode(siemensS7Net.getByteTransform().TransInt16(result3.Content, 0)); // æ¨¡å¼ liftProtocol.setDeviceStatus(siemensS7Net.getByteTransform().TransInt16(result3.Content, 2)); // 设å¤ç¶æ liftProtocol.setTaskStatus(siemensS7Net.getByteTransform().TransInt16(result3.Content, 4)); // å®æä¿¡å· liftProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result3.Content, 6)); // å·¥ä½å· } //温湿度信æ¯åé¦ Thread.sleep(200); ArrayList<Integer> temperatureList = getTemperature(); OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB101.300", (short) (temperatureList.size() * 4)); if (result4.IsSuccess) { for (int i = 0; i < temperatureList.size(); i++) { Integer deviceId = temperatureList.get(i); // ç¼å· TemperatureProtocol temperatureProtocol = temperatureMap.get(deviceId); if (null == temperatureProtocol) { temperatureProtocol = new TemperatureProtocol(); temperatureProtocol.setDeviceId(deviceId); temperatureMap.put(deviceId, temperatureProtocol); } temperatureProtocol.setTemperature(siemensS7Net.getByteTransform().TransInt16(result4.Content, (i * 4))); // 温度 temperatureProtocol.setHumidity(siemensS7Net.getByteTransform().TransInt16(result4.Content, (i * 4) + 2)); // 湿度 } } @@ -280,91 +285,31 @@ if (result.IsSuccess && result2.IsSuccess) { OutputQueue.DEVP.offer(MessageFormat.format("ã{0}ã[id:{1}] <<<<< 宿¶æ°æ®æ´æ°æå",DateUtils.convert(new Date()), slave.getId())); // æ ¹æ®å®æ¶ä¿¡æ¯æ´æ°æ°æ®åº try { List<BasDevp> basDevps = new ArrayList<>(); for (Integer siteId : staNos) { StaProtocol staProtocol = station.get(siteId); basDevps.add(staProtocol.toSqlModel()); } BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) { throw new Exception("æ´æ°æ°æ®åºæ°æ®å¤±è´¥"); } } catch (Exception e) { initSite(); e.printStackTrace(); OutputQueue.DEVP.offer(MessageFormat.format("ã{0}ãæ´æ°æ°æ®åºæ°æ®å¤±è´¥ ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); News.error("SiemensDevp"+" - 3"+" - æ´æ°æ°æ®åºæ°æ®å¤±è´¥ ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } } else { OutputQueue.DEVP.offer(MessageFormat.format("ã{0}ã读åè¾é线plcç¶æä¿¡æ¯å¤±è´¥ ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); } } /** * åå ¥ ID+ç®æ ç« =====> åç«ç¹åå ¥ * åå ¥å½ä»¤ */ private void write(StaProtocol staProtocol) throws InterruptedException { if (null == staProtocol) { private void write(LiftCommand liftCommand) throws InterruptedException { if (null == liftCommand) { return; } ArrayList<Integer> staNos = getStaNo(); int index = staNos.indexOf(staProtocol.getSiteId()); int[] array = new int[3]; array[0] = staProtocol.getWorkNo().intValue(); array[1] = staProtocol.getStaNo().intValue(); array[2] = staProtocol.getPalletSize().intValue(); array[0] = liftCommand.getWorkNo(); array[1] = liftCommand.getSourceStaNo(); array[2] = liftCommand.getTargetStaNo(); OperateResult write = siemensS7Net.Write("DB102." + index * 16, array); // OperateResult write = null; // OperateResult write1 = null; // //ä»»å¡ä¸åæ¬¡æ° // int writeCount = 0; // do { // write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo()); // å·¥ä½å· // Thread.sleep(500); // write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo()); // ç®æ ç« // if(write.IsSuccess || write1.IsSuccess){ // Thread.sleep(200); // OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index*2, (short) 2); // OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB101." + index*2, (short) 2); // if(readResult.IsSuccess && readResult1.IsSuccess){ // short workNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0); // short staNo = siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 0); // if(staProtocol.getWorkNo().equals(workNo) && staProtocol.getStaNo().equals(staNo)){ // //ä»»å¡å½ä»¤åå ¥æå // log.info("åå ¥è¾é线å½ä»¤åè¿åæåï¼å¹¶ä¸å读æåãè¾é线plcç¼å·={}ï¼{}ï¼åå ¥æ¬¡æ°={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); // break; // } else {//è¿åç»ææ¯æåäºï¼ä½æ¯çå®å¼ä¸ç¸å // writeCount++; // log.error("åå ¥è¾é线å½ä»¤åè¿åæåï¼ä½æ¯è¯»åä»»å¡å¼ä¸ä¸è´ãè¾é线plcç¼å·={}ï¼{}ï¼åå ¥æ¬¡æ°={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); // } // } else { // writeCount++; // log.error("åå ¥è¾é线å½ä»¤å读å失败ãè¾é线plcç¼å·={}ï¼ç«ç¹æ°æ®={},åå ¥æ¬¡æ°={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); // } // } // else { // writeCount++; // log.error("åå ¥è¾é线å½ä»¤å读å失败ãè¾é线plcç¼å·={}ï¼ç«ç¹æ°æ®={},åå ¥æ¬¡æ°={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); // } // }while (writeCount<5); OperateResult write = siemensS7Net.Write("DB100.0", array); if (!write.IsSuccess) { staProtocol = station.get(staProtocol.getSiteId()); if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) { staProtocol.setPakMk(true); } OutputQueue.DEVP.offer(MessageFormat.format("ã{0}ãåå ¥è¾é线ç«ç¹æ°æ®å¤±è´¥ãè¾é线plcç¼å·={1}ï¼ç«ç¹æ°æ®={2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol))); News.error("SiemensDevp"+" - 4"+" - åå ¥è¾é线ç«ç¹æ°æ®å¤±è´¥ãè¾é线plcç¼å·={}ï¼ç«ç¹æ°æ®={}", slave.getId(), JSON.toJSON(staProtocol)); OutputQueue.DEVP.offer(MessageFormat.format("ã{0}ãåå ¥è¾é线ç«ç¹æ°æ®å¤±è´¥ãè¾é线plcç¼å·={1}ï¼ç«ç¹æ°æ®={2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(liftCommand))); News.error("SiemensDevp"+" - 4"+" - åå ¥è¾é线ç«ç¹æ°æ®å¤±è´¥ãè¾é线plcç¼å·={}ï¼ç«ç¹æ°æ®={}", slave.getId(), JSON.toJSON(liftCommand)); } else { OutputQueue.DEVP.offer(MessageFormat.format("ã{0}ã è¾é线å½ä»¤ä¸å [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol))); News.info("SiemensDevp"+" - 5"+" - è¾é线å½ä»¤ä¸å [id:{}] >>>>> å½ä»¤ä¸åï¼ {}", slave.getId(), JSON.toJSON(staProtocol)); OutputQueue.DEVP.offer(MessageFormat.format("ã{0}ã è¾é线å½ä»¤ä¸å [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(liftCommand))); News.info("SiemensDevp"+" - 5"+" - è¾é线å½ä»¤ä¸å [id:{}] >>>>> å½ä»¤ä¸åï¼ {}", slave.getId(), JSON.toJSON(liftCommand)); } } @@ -384,17 +329,13 @@ siemensS7Net.ConnectClose(); } public static void main(String[] args) { System.out.println(staNos1.indexOf(129)); System.out.println(staNos1.size()); for (int i = 0; i<staNos1.size(); i++) { // System.out.println(i*2); // System.out.println(i*2 + 200); // System.out.println(i); } int index = staNos1.indexOf(128); System.out.println(index*2); System.out.println(index*2 + 200); @Override public Map<Integer, TemperatureProtocol> getTemperatureList() { return this.temperatureMap; } @Override public LiftProtocol getLiftStatus() { return this.liftProtocol; } } src/main/resources/WCSÓëPLCͨѶÐÒé.docxBinary files differ