自动化立体仓库 - WCS系统
#
zjj
2024-11-09 983d8a5fdeace0591da69902f95b475ee7f724a0
src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -1,98 +1,195 @@
package com.zy.core.model.protocol;
import com.zy.asrs.entity.BasRgv;
import com.zy.core.enums.RgvModeType;
import com.zy.core.enums.RgvStatusType;
import com.zy.core.enums.RgvWalkPosType;
import lombok.Data;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Data
public class RgvProtocol {
public class RgvProtocol implements Cloneable{
    //RGV编号
    private Integer rgvNo;
    private Integer RgvNo;
    //模式
    private Short mode;
    /**
     * 1 = 手动模式
     * 2 = 自动模式
     * 3 = 电脑模式
     */
    public Short mode;
    //RGV模式枚举
    private RgvModeType modeType;
    public RgvModeType modeType;
    //RGV状态
    private Short status;
    /**
     * 工位1任务号
     */
    public Integer taskNo1 = 0;
    /**
     * 工位2任务号
     */
    public Integer taskNo2 = 0;
    //RGV状态枚举
    private RgvStatusType statusType;
    /**
     * RGV当前状态
     * 0:空闲,无任务
     * 1:作业中
     * 2:报警
     */
    public Short status;
    //工位1工作号
    private Integer taskNo1;
    /**
     * 状态枚举
     */
    public RgvStatusType statusType;
    /**
     * 当前列号
     */
    public Short columnNumber;
    //工位1有物信号
    private Short loaded1;
    /**
     * RGV当前位置
     */
    public Integer RgvPos;
    //RGV当前位置
    private Short rgvPos;
    /**
     * 工位1有物
     */
    public Short loaded1;
    //走行在定位 0:在定位,1:不在定位
    private Short walkPos;
    //RGV走行枚举
    private RgvWalkPosType walkPosType;
    /**
     * 异常码
     */
    public Short alarm;
    //工位2工作号
    private Short taskNo2;
    /**
     * X行走行速度m/min
     */
    private Float xSpeed;
    //工位2有物信号
    private Short loaded2;
    /**
     * 堆垛机累计走行距离km
     */
    public Float xDistance;
    //工位1任务完成信号
    private Short taskFinish1;
    /**
     * 堆垛机累计走行时长h
     */
    public Float xDuration;
    //工位2任务完成信号
    private Short taskFinish2;
    //异常码
    private Short alarm;
    //心跳
    private Short heart;
    //备用1
    private Integer temp1;
    //备用2
    /**
     * RGV工位1当前状态
     * 0:空闲,无任务
     * 11:取货中
     * 12:放货中
     * 10:任务完成等待WCS确认
     */
    public Short status1;
    /**
     * 状态枚举
     */
    public RgvStatusType statusType1;
    /**
     * 走行在定位
     * 0 = 在定位
     * 1 = 不在定位
     */
    public Short walkPos;
    /**
     * RGV工位2当前状态
     * 0:空闲,无任务
     * 11:取货中
     * 12:放货中
     * 10:任务完成等待WCS确认
     */
    public Short status2;
    /**
     * 状态枚举
     */
    public RgvStatusType statusType2;
    /**
     * 工位2有物
     */
    public Short loaded2;
    /**
     * 心跳指令 1-2每秒切换一次
     */
    public Short heart;
    private Short temp1;
    private Short temp2;
    //备用3
    private Short temp3;
    //备用4
    private Short temp4;
    //备用5
    private Short temp5;
    //工位1任务模式
    private Short taskMode1;
    //工位1源站
    private Short sourceStn1;
    //工位1目标站
    private Short destinationPos1;
    public void setMode(Short mode) {
        this.mode = mode;
        this.modeType = RgvModeType.get(mode);
    }
    //工位2任务模式
    private Short taskMode2;
    public void setMode(RgvModeType type) {
        this.modeType = type;
        this.mode = RgvModeType.get(type).id.shortValue();
    }
    //工位2源站
    private Short sourceStn2;
    public void setStatus(Short status){
        this.status = status;
        this.statusType = RgvStatusType.get(status);
    }
    //工位2目标站
    private Short destinationPos2;
    public void setStatus(RgvStatusType type){
        this.statusType = type;
        this.status = RgvStatusType.get(type).id.shortValue();
    }
    //工位1下发时间
    private Long task1SendTime;
    public void setStatus1(Short status1){
        this.status1 = status1;
        this.statusType1 = RgvStatusType.get(status1);
    }
    public void setStatus1(RgvStatusType type1){
        this.statusType1 = type1;
        this.status1 = RgvStatusType.get(type1).id.shortValue();
    }
    public void setStatus2(Short status2){
        this.status2 = status2;
        this.statusType2 = RgvStatusType.get(status2);
    }
    public void setStatus2(RgvStatusType type2){
        this.statusType2 = type2;
        this.status2 = RgvStatusType.get(type2).id.shortValue();
    }
    /**
     * 最近一次入出库类型
@@ -101,34 +198,50 @@
     */
    private String lastIo = "I";
    public void setMode(Short mode) {
        this.mode = mode;
        this.modeType = RgvModeType.get(mode);
    public BasRgv toSqlModel(BasRgv basRgv){
        if (alarm!=null) {
            basRgv.setRgvErr(alarm.longValue());
        }
        basRgv.setWrkNo1(taskNo1.intValue());
//        basRgv.setWrkNo2(taskNo2.intValue());
        return basRgv;
    }
    public void setMode(RgvModeType type) {
        this.mode = type.id;
        this.modeType = type;
    public void setxSpeed(float xSpeed) {
        this.xSpeed = xSpeed;
    }
    public void setStatus(Short status) {
        this.status = status;
        this.statusType = RgvStatusType.get(status);
    public void setxDistance(float xDistance) {
        this.xDistance = xDistance;
    }
    public void setStatus(RgvStatusType type) {
        this.status = type.id;
        this.statusType = type;
    public void setxDuration(float xDuration) {
        this.xDuration = xDuration;
    }
    public void setWalkPos(Short walkPos) {
        this.walkPos = walkPos;
        this.walkPosType = RgvWalkPosType.get(walkPos);
    public Integer getRgvPosI(){
        //需要根据现场改造  根据读到的值获取对应站点位置
        Map<Short,Integer> map = new HashMap<>();
        map.put((short) 1,100);map.put((short) 2,101);
        map.put((short) 3,106);map.put((short) 4,107);
        map.put((short) 5,112);map.put((short) 6,113);
        map.put((short) 7,119);map.put((short) 8,124);
        map.put((short) 9,149);map.put((short) 10,153);
        map.put((short) 11,157);map.put((short) 12,161);
        if (RgvPos==null) return 0;
        return map.get(RgvPos);
    }
    public void setWalkPos(RgvWalkPosType type) {
        this.walkPos = type.id;
        this.walkPosType = type;
    @Override
    public RgvProtocol clone() {
        try {
            return (RgvProtocol) super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return null;
    }
}