src/main/java/com/zy/asrs/controller/CrnController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/domain/vo/CommandLogVo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/cache/MessageQueue.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/protocol/CrnProtocol.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/CrnThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/CrnController.java
@@ -1,5 +1,6 @@ package com.zy.asrs.controller; import com.alibaba.fastjson.JSON; import com.core.annotations.ManagerAuth; import com.core.common.R; import com.zy.asrs.domain.enums.CrnStatusType; @@ -9,11 +10,14 @@ import com.zy.asrs.domain.vo.CrnStateTableVo; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.WrkMastService; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.CrnModeType; import com.zy.core.enums.SlaveType; import com.zy.core.model.CrnSlave; import com.zy.core.model.Task; import com.zy.core.model.command.CrnCommand; import com.zy.core.model.protocol.CrnProtocol; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.CrnThread; @@ -25,7 +29,6 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; /** @@ -46,12 +49,25 @@ @PostMapping("/command/ongoing") public R ongoingCommand(){ List<CommandLogVo> list = new ArrayList<>(); for (int i=1;i<=4;i++){ for (CrnSlave crn : slaveProperties.getCrn()) { CommandLogVo vo = new CommandLogVo(); vo.setCrnNo(String.valueOf(i)); vo.setStatus(1); vo.setCommand(UUID.randomUUID().toString()); vo.setCrnNo(crn.getId()); // 堆垛机号 vo.setStatus(0); // 状态 list.add(vo); // 获取堆垛机信息 CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); if (crnThread == null) { continue; } CrnProtocol crnProtocol = crnThread.getCrnProtocol(); if (crnProtocol == null) { continue; } vo.setStatus(1); // 状态 Task task = MessageQueue.peek(SlaveType.Crn, crn.getId()); if (task != null) { vo.setCommand(JSON.toJSONString((CrnCommand)task.getData())); } } return R.ok().add(list); } @@ -104,12 +120,10 @@ // 获取堆垛机信息 CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); if (crnThread == null) { log.error("{}号堆垛机连接失败", crn.getId()); continue; } CrnProtocol crnProtocol = crnThread.getCrnProtocol(); if (crnProtocol == null) { log.error("{}号堆垛机连接失败", crn.getId()); continue; } // 表格行 src/main/java/com/zy/asrs/domain/vo/CommandLogVo.java
@@ -1,12 +1,15 @@ package com.zy.asrs.domain.vo; import lombok.Data; /** * Created by vincent on 2020-06-02 */ @Data public class CommandLogVo { // 堆垛机编号 private String crnNo; private Integer crnNo; // 状态 private Integer status; @@ -14,27 +17,4 @@ // 命令报文 private String command; public String getCrnNo() { return crnNo; } public void setCrnNo(String crnNo) { this.crnNo = crnNo; } public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } public String getCommand() { return command; } public void setCommand(String command) { this.command = command; } } src/main/java/com/zy/core/cache/MessageQueue.java
@@ -92,4 +92,24 @@ } } /** * 取出元素,并不删除. */ public static Task peek(SlaveType type, Integer id) { switch (type) { case Crn: return CRN_EXCHANGE.get(id).peek(); case Devp: return DEVP_EXCHANGE.get(id).peek(); case Barcode: return BARCODE_EXCHANGE.get(id).peek(); case Led: return LED_EXCHANGE.get(id).peek(); case Scale: return SCALE_EXCHANGE.get(id).peek(); default: return null; } } } src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -129,17 +129,17 @@ /** * X行走线速度m/min */ private Short xSpeed; private Float xSpeed; /** * Y行走线速度m/min */ private Short ySpeed; private Float ySpeed; /** * Z行走线速度m/min */ private Short zSpeed; private Float zSpeed; /** * 堆垛机累计走行距离km src/main/java/com/zy/core/thread/CrnThread.java
@@ -67,7 +67,7 @@ command.setCrnNo(slave.getId()); // 堆垛机编号 command.setTaskNo((short) 0); // 工作号 command.setAckFinish((short) 1); // 任务完成确认位 command.setTaskMode(CrnTaskModeType.NONE); // 任务模式: 库位移转 command.setTaskMode(CrnTaskModeType.NONE); // 任务模式 command.setSourcePosX((short)0); // 源库位排 command.setSourcePosY((short)0); // 源库位列 command.setSourcePosZ((short)0); // 源库位层 @@ -110,7 +110,7 @@ * 读取状态 */ private void readStatus(){ OperateResultExOne<byte[]> result = siemensNet.Read("DB8.18", (short) 46); OperateResultExOne<byte[]> result = siemensNet.Read("DB8.18", (short) 56); if (result.IsSuccess) { OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId())); if (null == crnProtocol) { @@ -131,13 +131,13 @@ crnProtocol.setError1(siemensNet.getByteTransform().TransBool(result.Content, 22, 2)); crnProtocol.setError2(siemensNet.getByteTransform().TransBool(result.Content, 24, 2)); crnProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 26)); crnProtocol.setXSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28)); crnProtocol.setYSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 30)); crnProtocol.setZSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 32)); crnProtocol.setXDistance(siemensNet.getByteTransform().TransSingle(result.Content, 34)); crnProtocol.setYDistance(siemensNet.getByteTransform().TransSingle(result.Content, 38)); crnProtocol.setXDuration(siemensNet.getByteTransform().TransSingle(result.Content, 42)); crnProtocol.setYDuration(siemensNet.getByteTransform().TransSingle(result.Content, 46)); crnProtocol.setXSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 28)); crnProtocol.setYSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 32)); crnProtocol.setZSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 36)); crnProtocol.setXDistance(siemensNet.getByteTransform().TransSingle(result.Content, 40)); crnProtocol.setYDistance(siemensNet.getByteTransform().TransSingle(result.Content, 44)); crnProtocol.setXDuration(siemensNet.getByteTransform().TransSingle(result.Content, 48)); crnProtocol.setYDuration(siemensNet.getByteTransform().TransSingle(result.Content, 52)); } else { OutputQueue.CRN.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())); log.error("读取堆垛机plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());