自动化立体仓库 - WCS系统
Junjie
2023-03-27 c05fc7d74a7f706686b2fc6735ebd98459996903
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
package com.zy.core.model.protocol;
 
import com.zy.core.enums.ShuttleProtocolStatusType;
import com.zy.core.enums.ShuttleStatusType;
import com.zy.core.model.command.ShuttleAssignCommand;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
 
/**
 * 四向穿梭车
 */
@Slf4j
@Data
public class ShuttleProtocol {
 
    /**
     * 四向穿梭车号
     */
    private Short shuttleNo;
 
    /**
     * 任务号
     */
    private Short taskNo = 0;
 
    /**
     * 任务指令
     */
    private ShuttleAssignCommand assignCommand;
 
    /**
     * 当前小车状态(内部自我维护)
     */
    private Integer protocolStatus;
 
    /**
     * 当前小车状态枚举
     */
    private ShuttleProtocolStatusType protocolStatusType;
 
    /**
     * 源库位
     */
    private String sourceLocNo;
 
    /**
     * 目标库位
     */
    private String locNo;
 
    /**
     * 小车忙状态位
     * 1: 忙
     * 0: 空闲
     */
    private Short busyStatus;
 
    /**
     * 小车忙状态位枚举
     */
    private ShuttleStatusType busyStatusType;
 
    /**
     * 当前二维码
     * 0为空
     */
    private Short currentCode;
 
    /**
     * 电池电量百分比
     */
    private Short batteryPower;
 
    /**
     * 电池温度
     */
    private Short batteryTemp;
 
    /**
     * 错误编号
     */
    private Short errorCode;
 
    /**
     * Plc输出状态IO
     */
    private Short plcOutputStatusIO;
 
    /**
     * 错误信息码
     */
    private Short statusErrorCode;
 
    /**
     * PLC输入状态
     */
    private Short plcInputStatus;
 
    /**
     * 当前或者之前读到的二维码值
     */
    private Short currentOrBeforeCode;
 
    /**
     * 读到的二维码X方向偏移量
     */
    private Short codeOffsetX;
 
    /**
     * 读到的二维码Y方向偏移量
     */
    private Short codeOffsetY;
 
    /**
     * 当前的电压值
     */
    private Short currentVoltage;
 
    /**
     * 当前的模拟量值
     */
    private Short currentAnalogValue;
 
    /**
     * 当前的升降伺服速度
     */
    private Short currentLiftServoSpeed;
 
    /**
     * 当前的行走伺服速度
     */
    private Short currentMoveServoSpeed;
 
    /**
     * 当前的升降伺服负载率
     */
    private Short currentLiftServoLoad;
 
    /**
     * 当前的行走伺服负载率
     */
    private Short currentMoveServoLoad;
 
    /**
     * 作业标记
     */
    private Boolean pakMk = true;
 
    // 任务信息 ---------------------------------------------------------
    /**
     * 96.入库任务中
     */
    private boolean pakInTask;
 
    /**
     * 97. 出库任务中
     */
    private boolean pakOutTask;
 
    /**
     * 98. 移库任务中
     */
    private boolean pakMoveTask;
 
    /**
     * 99. 回原点任务中
     */
    private boolean goHpTask;
 
    /**
     * 100. 去反原点任务中
     */
    private boolean goOHpTask;
 
    /**
     * 101. 去原点避让位
     */
    private boolean goHpAvoid;
 
    /**
     * 102. 去反原点避让位
     */
    private boolean goOHpAvoid;
 
    /**
     * 104. 入库取空结束
     */
    private boolean pakInEmpty;
 
    /**
     * 105. 入库正常结束
     */
    private boolean pakInFinish;
 
    /**
     * 106. 出库取空结束
     */
    private boolean pakOutEmpty;
 
    /**
     * 107. 出库正常结束
     */
    private boolean pakOutFinish;
 
    /**
     * 108. 去原点避让完成
     */
    private boolean goHpAvoidFinish;
 
    /**
     * 109. 去反原点避让完成
     */
    private boolean goOHpAvoidFinish;
 
    /**
     * 110. 去原点避让完成
     */
    private boolean goHpAvoidErr;
 
    /**
     * 111. 去反原点避让完成
     */
    private boolean goOHpAvoidErr;
 
    public void setBusyStatus(Short status) {
        this.busyStatus = status;
        this.busyStatusType = ShuttleStatusType.get(status);
    }
 
    public void setBusyStatus(ShuttleStatusType type) {
        this.busyStatus = type.id.shortValue();
        this.busyStatusType = type;
    }
 
    //获取电池电量
    public Short getBatteryPower() {
        return (short) (this.batteryPower * 0.1);
    }
 
    /**
     * 设置小车状态
     */
    public void setProtocolStatus(Integer status) {
        this.protocolStatus = status;
        this.protocolStatusType = ShuttleProtocolStatusType.get(status);
    }
 
    /**
     * 设置小车状态
     */
    public void setProtocolStatus(ShuttleProtocolStatusType status) {
        this.protocolStatus = status.id;
        this.protocolStatusType = status;
    }
 
}