| | |
| | | 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(); |
| | | } |
| | | |
| | | /** |
| | | * 最近一次入出库类型 |
| | |
| | | */ |
| | | 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; |
| | | } |
| | | |
| | | } |