自动化立体仓库 - WCS系统
#
luxiaotao1123
2020-08-11 b2658337c8b37a745415e672074c86f43ca09d5e
#
1个文件已添加
4个文件已修改
92 ■■■■■ 已修改文件
src/main/java/com/zy/core/enums/CrnTaskModeType.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/Task.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/command/CrnCommand.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/CrnThread.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | 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