package com.zy.core.model.protocol; import com.zy.asrs.entity.BasCrnp; import com.zy.core.enums.*; import lombok.Data; /** * Created by vincent on 2020/8/7 */ @Data public class CrnProtocol { /** * 1 = 手动模式 * 2 = 自动模式 * 3 = 电脑模式 */ public Short mode; public CrnModeType modeType; /** * 堆垛机任务完成 */ public Short taskFinish; /** * 校验结果 1表示检验成功 */ public Short valid; /** * 1 = 急停 */ public Short eStop; /** * 任务号 */ public Short taskNo = 0; /** * 堆垛机当前状态 * 0:空闲,无任务 * 1:取货定位中 * 2:取货中 * 3:取货完成,放货定位中 * 4:放货中 * 5:回原点中 * 6:反原点 * 7:库位移位 * 90:任务完成等待WCS确认 * 99:报警 */ public Short status; /** * 状态枚举 */ public CrnStatusType statusType; /** * 堆垛机当前列号 */ public Short bay; /** * 堆垛机当前层号 */ public Short level; /** * 堆垛机当前排 */ public Short row; /** * 堆垛机当前巷道号 */ public Short lane; /** * 堆垛机通讯状态 */ public Boolean connStatus; /** * 申请入库修正 */ public Boolean correction; /** * 托盘号错 */ public Boolean tuError; /** * 取货无箱 */ public Boolean noneError; /** * 双重入库 */ public Boolean stockError; /** * 作业数据无效 */ public Boolean jobInvalid; /** * 空闲状态 */ public Boolean idle; /** * 控制柜使能 */ public Boolean control; /** * 停准 */ public Boolean stopQuasi; /** * 运行 */ public Boolean running; /** * 故障 */ public Boolean fault; /** * 货叉中位 */ public Boolean forkHome; /** * 单伸位货叉左位 */ public Boolean forkSingleLeft; /** * 单伸位货叉右位 */ public Boolean forkSingleRight; /** * 双伸位货叉左位 */ public Boolean forkDoubleLeft; /** * 双伸位货叉右位 */ public Boolean forkDoubleRight; /** * 单伸位高位 */ public Boolean singleHigh; /** * 单伸位低位 */ public Boolean singleLow; /** * 双伸位高位 */ public Boolean doubleHigh; /** * 双伸位低位 */ public Boolean doubleLow; /** * 站台高位 */ public Boolean platformHigh; /** * 站台低位 */ public Boolean platformLow; /** * 当前货叉位置 * 0 = 货叉原位 * 1 = 货叉在左侧 * 2 = 货叉在右侧 */ public Short forkPos = -1; public CrnForkPosType forkPosType = CrnForkPosType.NONE; /** * 当前载货台位置 * 0 = 下定位 * 1 = 上定位 */ public Short liftPos = -1; public CrnLiftPosType liftPosType = CrnLiftPosType.ERROR; /** * 走行在定位 * 0 = 在定位 * 1 = 不在定位 */ public Short walkPos = 0; /** * 拨指位置 * 0 = 不在定位 * 1 = 上定位 * 2 = 下定位 */ public Short fingerPos; public CrnFingerPosType fingerPosType; /** * 载货台有物 */ public Short loaded; /** * 堆垛机垂直故障代码(数值显示) */ private Integer alarm1; /** * 堆垛机水平故障代码(数值显示) */ private Integer alarm2; /** * 堆垛机货叉故障代码(数值显示) */ private Integer alarm3; /** * 堆垛机状态故障代码(数值显示) */ private Integer alarm4; /** * 异常1 */ private boolean[] error1; private CrnError1 crnError1; /** * 异常2 */ private boolean[] error2; private CrnError2 crnError2; /** * 异常3 */ private boolean[] error3; private CrnError3 crnError3; /** * 异常4 */ private boolean[] error4; private CrnError4 crnError4; /** * X行走线速度m/min */ private Float xSpeed; /** * Y行走线速度m/min */ private Float ySpeed; /** * Z行走线速度m/min */ private Float zSpeed; /** * 堆垛机累计走行距离km */ public Float xDistance; /** * 堆垛机累计升降距离km */ public Float yDistance; /** * 堆垛机累计走行时长h */ public Float xDuration; /** * 堆垛机累计升降时长h */ public Float yDuration; public void setMode(Short mode) { this.mode = mode; this.modeType = CrnModeType.get(mode); } public void setMode(CrnModeType type) { this.modeType = type; this.mode = CrnModeType.get(type).id.shortValue(); } public void setForkPos(Short forkPos) { this.forkPos = forkPos; this.forkPosType = CrnForkPosType.get(forkPos); } public void setForkPos(CrnForkPosType type) { this.forkPosType = type; this.forkPos = CrnForkPosType.get(type).id.shortValue(); } public void setLiftPos(Short liftPos) { this.liftPos = liftPos; this.liftPosType = CrnLiftPosType.get(liftPos); } public void setLiftPos(CrnLiftPosType type) { this.liftPosType = type; this.liftPos = CrnLiftPosType.get(type).id.shortValue(); } public void setStatus(Short status){ this.status = status; this.statusType = CrnStatusType.get(status); } public void setStatus(CrnStatusType type){ this.statusType = type; this.status = CrnStatusType.get(type).id.shortValue(); } public void setFingerPos(Short type) { this.fingerPos = type; this.fingerPosType = CrnFingerPosType.get(type); } public void setError1(boolean[] error1){ this.error1 = error1; this.crnError1 = new CrnError1(); this.crnError1.remoteStop = error1[0]; this.crnError1.mainStop = error1[1]; this.crnError1.controlStop = error1[2]; this.crnError1.xCoverErr = error1[3]; this.crnError1.yCoverErr = error1[4]; this.crnError1.zCoverErr = error1[5]; this.crnError1.laserErr = error1[6]; this.crnError1.barcodeErr = error1[7]; this.crnError1.xFrontLimitErr = error1[8]; this.crnError1.xBackLimitErr = error1[9]; this.crnError1.yUpLimitErr = error1[10]; this.crnError1.yDownLimitErr = error1[11]; this.crnError1.zLeftLimitErr = error1[12]; this.crnError1.zRightLimitErr = error1[13]; this.crnError1.leftOverWidthErr1 = error1[14]; this.crnError1.leftOverWidthErr2 = error1[15]; } public void setError2(boolean[] error2){ this.error2 = error2; this.crnError2 = new CrnError2(); this.crnError2.leftOverLenErr1 = error2[0]; this.crnError2.leftOverLenErr2 = error2[1]; this.crnError2.leftOverHighErr = error2[2]; this.crnError2.rightOverWidthErr1 = error2[3]; this.crnError2.rightOverWidthErr2 = error2[4]; this.crnError2.rightOverLenErr1 = error2[5]; this.crnError2.rightOverLenErr2 = error2[6]; this.crnError2.rightOverHighErr = error2[7]; this.crnError2.leftLooseRopeErr = error2[8]; this.crnError2.rightLooseRopeErr = error2[9]; this.crnError2.frontDoorErr = error2[10]; this.crnError2.backDoorErr = error2[11]; this.crnError2.startupErr = error2[12]; this.crnError2.xFrontLocaUpErr = error2[13]; this.crnError2.xFrontLocaDownErr = error2[14]; this.crnError2.xBackLocaUpErr = error2[15]; } public void setError3(boolean[] error3) { this.error3 = error3; this.crnError3 = new CrnError3(); this.crnError3.xBackLocaDownErr = error3[0]; this.crnError3.yUpLocaUpErr = error3[1]; this.crnError3.yUpLocaDownErr = error3[2]; this.crnError3.yDownLocaUpErr = error3[3]; this.crnError3.yDownLocaDownErr = error3[4]; this.crnError3.zLeftLocaUpErr = error3[5]; this.crnError3.zLeftLocaDownErr = error3[6]; this.crnError3.zRightLocaUpErr = error3[7]; this.crnError3.zRightLocaDownErr = error3[8]; this.crnError3.leftTakeNoneErr = error3[9]; this.crnError3.rightTakeNoneErr = error3[10]; this.crnError3.leftTakeThenLoadErr = error3[11]; this.crnError3.rightTakeThenLoadErr = error3[12]; this.crnError3.leftPutAndLoadErr = error3[13]; this.crnError3.rightPutAndLoadErr = error3[14]; this.crnError3.leftPutThenNoneErr = error3[15]; } public void setError4(boolean[] error4) { this.error4 = error4; this.crnError4 = new CrnError4(); this.crnError4.rightPutThenNoneErr = error4[0]; this.crnError4.xLooseBrakeTimeout = error4[1]; this.crnError4.yLooseBrakeTimeout = error4[2]; this.crnError4.zLooseBrakeTimeout = error4[3]; } /** * 最近一次入出库类型 * I:入库 * O:出库 */ private String lastIo = "I"; public BasCrnp toSqlModel(BasCrnp basCrnp){ basCrnp.setCrnErr(alarm1.longValue()); basCrnp.setWrkNo(taskNo.intValue()); return basCrnp; } }