自动化立体仓库 - WCS系统
#
lsh
2024-06-21 1d3e88187f8d7dce311ecb05b9b7587cdf2d2da2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package com.zy.core.enums;
 
import com.core.exception.CoolException;
import com.zy.asrs.utils.SteUtils;
import com.zy.asrs.utils.Utils;
import com.zy.core.model.protocol.SteProtocol;
 
public enum SteTaskModeType {
 
    INIT(0, "初始"),    // 初始
    OUT_RIGHT(1, "右出库"),    // 右出库
    OUT_LEFT(2, "左出库"),    // 左出库
    IN_RIGHT(4, "右入库"),    // 右入库
    IN_LEFT(3, "左入库"),    // 左入库
    MOVE_LEFT(5, "左移库"),    // 左移库
    MOVE_RIGHT(6, "右移库"),    // 右移库
    GO_ORIGIN(8, "去右端"),    // 回反原点
    BACK_ORIGIN(7, "去左端"),      // 回原点
    WAITING_RIGHT(10, "右待机"),        // A点
    WAITING_LEFT(9, "左待机"),       // B点
//    FIT_LEFT(11, "左搬移"),   // 左搬移
//    FIT_RIGHT(12, "右搬移"),      // 右搬移
    CHARGE_LEFT(13, "左充电"),         // 左充电
    CHARGE_RIGHT(14, "右充电"),         // 左充电
//    CHECK_LEFT(14, "左盘点"),     // 左盘点
//    CHECK_RIGHT(15, "右盘点"),    // 右盘点
    CLOSE_CHARGE(17, "断开充电"),   // 断开充电
    ;
 
    public Integer id;
    public String desc;
    SteTaskModeType(Integer id, String desc) {
        this.id = id;
        this.desc = desc;
    }
 
    public static SteTaskModeType get(Short id) {
        if (null == id) {
            return null;
        }
        for (SteTaskModeType type : SteTaskModeType.values()) {
            if (type.id.equals(id.intValue())) {
                return type;
            }
        }
        return null;
    }
 
    public static SteTaskModeType get(SteTaskModeType type) {
        if (null == type) {
            return null;
        }
        for (SteTaskModeType crnTaskModeType : SteTaskModeType.values()) {
            if (crnTaskModeType == type) {
                return crnTaskModeType;
            }
        }
        return null;
    }
 
    public static SteTaskModeType findInByLoc(String locNo, Integer crnNo) {
        switch (SteUtils.getGroupRow(locNo, true, crnNo)) {
            case 2:
                return SteTaskModeType.IN_RIGHT;   // 右
            case 12:
                return SteTaskModeType.IN_LEFT;    // 左
            default:
                throw new CoolException("解析穿梭车原点定位失败");
        }
    }
 
    public static SteTaskModeType findOutByLoc(String locNo, Integer crnNo) {
        switch (SteUtils.getGroupRow(locNo, false, crnNo)) {
            case 2:
                return SteTaskModeType.OUT_LEFT;   // 右
            case 12:
                return SteTaskModeType.OUT_RIGHT;    // 左
            default:
                throw new CoolException("解析穿梭车原点定位失败");
        }
    }
    public static SteTaskModeType findOutByLoc2(String locNo, Integer crnNo) {
        switch (SteUtils.getGroupRow(locNo, false, crnNo)) {
            case 2:
                return SteTaskModeType.GO_ORIGIN;   // 8
            case 12:
                return SteTaskModeType.BACK_ORIGIN;    // 7
            default:
                throw new CoolException("解析穿梭车原点定位失败");
        }
    }
 
 
    // -----------------------------------------------
 
    // 去待搬点
    public static SteTaskModeType findOriginByLoc(SteProtocol steProtocol, Integer crnNo) {
        int row = steProtocol.getRow().intValue();
        if (SteUtils.SHUTTLE_GROUP_ROW_LIST.contains(row)) {
            return crnNo == 1 ? SteTaskModeType.BACK_ORIGIN : SteTaskModeType.GO_ORIGIN;
        } else if (row==13 || row==1){
            return SteTaskModeType.INIT;
        } else {
            throw new CoolException("解析穿梭车原点定位失败");
        }
    }
 
    public static SteTaskModeType findOriginByLoc(Integer row, Integer crnNo) {
        if (SteUtils.SHUTTLE_GROUP_ROW_LIST.contains(row)) {
            return crnNo == 1 ? SteTaskModeType.BACK_ORIGIN : SteTaskModeType.GO_ORIGIN;
        } else if (row==13 || row==1){
            return SteTaskModeType.INIT;
        } else {
            throw new CoolException("解析穿梭车原点定位失败");
        }
    }
 
 
    public static SteTaskModeType findWaiting(Integer row, Integer crnNo) {
        if (SteUtils.SHUTTLE_GROUP_ROW_LIST.contains(row)) {
            return crnNo == 1 ? SteTaskModeType.WAITING_LEFT : SteTaskModeType.WAITING_RIGHT;
        } else if (row==1||row==13){
            return SteTaskModeType.INIT;
        } else {
            throw new CoolException("解析穿梭车原点定位失败");
        }
    }
 
}