src/main/java/com/zy/core/enums/CrnTaskModeType.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/Task.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/command/CrnCommand.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/CrnThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/core/enums/CrnTaskModeType.java
New file @@ -0,0 +1,42 @@ package com.zy.core.enums; public enum CrnTaskModeType { NONE(0), // 无 PAKIN(1), // 入库 PAKOUT(2), // 出库 LOC_MOVE(3), // 库位移转 SITE_MOVE(4), // 站位移转 ORIGIN(5), // 回原点 ; public Integer id; CrnTaskModeType(Integer id) { this.id = id; } public static CrnTaskModeType get(Short id) { if (null == id) { return null; } for (CrnTaskModeType type : CrnTaskModeType.values()) { if (type.id.equals(id.intValue())) { return type; } } return null; } public static CrnTaskModeType get(CrnTaskModeType type) { if (null == type) { return null; } for (CrnTaskModeType crnTaskModeType : CrnTaskModeType.values()) { if (crnTaskModeType == type) { return crnTaskModeType; } } return null; } } src/main/java/com/zy/core/model/Task.java
@@ -6,16 +6,16 @@ * Created by vincent on 2020/8/5 */ @Data public class Task<T> { public class Task { private Integer step; private T data; private Object data; public Task() { } public Task(Integer step, T data) { public Task(Integer step, Object data) { this.step = step; this.data = data; } src/main/java/com/zy/core/model/command/CrnCommand.java
@@ -1,5 +1,6 @@ package com.zy.core.model.command; import com.zy.core.enums.CrnTaskModeType; import lombok.Data; /** @@ -31,6 +32,8 @@ */ private Short taskMode; private CrnTaskModeType taskModeType; // 源位置排号 private Short sourcePosX; @@ -49,4 +52,14 @@ // 目标位置层号 private Short destinationPosZ; public void setTaskMode(Short taskMode){ this.taskMode = taskMode; this.taskModeType = CrnTaskModeType.get(taskModeType); } public void setTaskMode(CrnTaskModeType type) { this.taskModeType = type; this.taskMode = CrnTaskModeType.get(type).id.shortValue(); } } src/main/java/com/zy/core/thread/CrnThread.java
@@ -44,10 +44,11 @@ switch (step) { // 读数据 case 1: readStatus(); // 读取状态 readStatus(); break; // 写入数据 case 2: CrnCommand command = (CrnCommand) task.getData(); write((CrnCommand) task.getData()); break; case 3: break; @@ -86,7 +87,7 @@ * 读取状态 */ private void readStatus(){ OperateResultExOne<byte[]> result = siemensNet.Read("DB8.18", (short) 10); OperateResultExOne<byte[]> result = siemensNet.Read("DB8.18", (short) 46); if (result.IsSuccess) { if (null == crnProtocol) { crnProtocol = new CrnProtocol(); @@ -120,7 +121,27 @@ * 写入数据 */ private void write(CrnCommand command){ if (null == command) { log.error("堆垛机写入命令为空"); return; } command.setCrnNo(slave.getId()); short[] array = new short[9]; array[0] = command.getAckFinish(); array[1] = command.getTaskNo(); array[2] = command.getTaskMode(); array[3] = command.getSourcePosX(); array[4] = command.getSourcePosY(); array[5] = command.getSourcePosZ(); array[6] = command.getDestinationPosX(); array[7] = command.getDestinationPosY(); array[8] = command.getDestinationPosZ(); OperateResult result = siemensNet.Write("DB8.0", array); if (result.IsSuccess) { readStatus(); } else { log.error("写入堆垛机plc数据失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } } @Override src/main/resources/application.yml
@@ -38,7 +38,7 @@ # 堆垛机 crn[0]: id: 1 ip: 192.168.6.1 ip: 192.168.6.10 port: 102 rack: 0 slot: 2