| | |
| | | PAUSE(0x09, "定时暂停状态"), |
| | | ROTATE(0x0A, "旋转标定状态"), |
| | | MOTION(0x0B, "取放货状态"), |
| | | TEMP(0x0C, "预留"), |
| | | TEMP(0x0C, "货叉动作中"), |
| | | LOST(0xF0, "丢失地址码状态"), |
| | | IMU_ERROR(0xF1, "IMU异常状态"), |
| | | ERROR(0xFF, "故障状态"), |
| | |
| | | |
| | | public enum AgvErrorType { |
| | | |
| | | ERROR_0x0001("0001", "硬件错误"), |
| | | ERROR_0x0002("0002", "硬件错误"), |
| | | |
| | | ERROR_0x2000("2000", "地面扫码相机出错"), |
| | | ERROR_0x2001("2001", "待机状态下丢码"), |
| | | ERROR_0x2002("2002", "校准中丢码"), |
| | | ERROR_0x2003("2003", "路径中丢码"), |
| | | ERROR_0x2004("2004", "直行中丢码"), |
| | | ERROR_0x2005("2005", "直行中错码"), |
| | | ERROR_0x2006("2006", "直行丢失终点码"), |
| | | ERROR_0x2007("2007", "直行中间码丢失"), |
| | | ERROR_0x2008("2008", "检测不到货位码"), |
| | | ERROR_0x200B("200B", "货位码不匹配"), |
| | | ERROR_0x2010("2010", "直行位置偏差过大"), |
| | | ERROR_0x2011("2011", "位姿融合失败轻度"), |
| | | ERROR_0x2012("2012", "位姿融合失败重度"), |
| | | ERROR_0x2013("2013", "实际地址码与给定不符,重登录"), |
| | | ERROR_0x2014("2014", "检测不到地面码"), |
| | | |
| | | ERROR_0x3001("3001", "直行前进中前避障雷达触发"), |
| | | ERROR_0x3002("3002", "直行前进中前避障雷达触发停止"), |
| | | ERROR_0x3003("3003", "直行后退中后避障雷达触发"), |
| | | ERROR_0x3004("3004", "直行后退中后避障雷达触发停止"), |
| | | ERROR_0x3005("3005", "避障雷达模块报警"), |
| | | ERROR_0x3006("3006", "避障雷达失联"), |
| | | ERROR_0x3010("3010", "急停触发和解除"), |
| | | ERROR_0x3011("3011", "碰撞条触发与解除"), |
| | | |
| | | ERROR_0x4001("4001", "传感器信号异常"), |
| | | ERROR_0x4002("4002", "相机掉线"), |
| | | ERROR_0x4003("4003", "高度传感器掉线"), |
| | | ERROR_0x4004("4004", "货叉控制器通信异常"), |
| | | ERROR_0x4005("4005", "电机温度异常"), |
| | | ERROR_0x4006("4006", "环境温度异常"), |
| | | |
| | | ERROR_0x5001("5001", "陀螺仪模块通讯异常"), |
| | | ERROR_0x5003("5003", "陀螺仪数据异常"), |
| | | ERROR_0x5004("5004", "陀螺仪归零异常"), |
| | | ERROR_0x5007("5007", "陀螺仪角度偏差过大,紧急停止"), |
| | | |
| | | ERROR_0x6001("6001", "电机掉线"), |
| | | ERROR_0x6002("6002", "电机温度过高"), |
| | | ERROR_0x6003("6003", "电机操作异常"), |
| | | ERROR_0x6004("6004", "电机报警"), |
| | | ERROR_0x6005("6005", "未知"), |
| | | |
| | | ERROR_0x7001("7001", "电池通讯失败"), |
| | | ERROR_0x7002("7002", "电量异常"), |
| | | ERROR_0x7003("7003", "过压报警"), |
| | | ERROR_0x7004("7004", "欠压报警"), |
| | | ERROR_0x7005("7005", "电池温度过高"), |
| | | ERROR_0x7006("7006", "温度过低"), |
| | | ERROR_0x7007("7007", "剩余电量低"), |
| | | ERROR_0x7009("7009", "未知"), |
| | | |
| | | ERROR_0x8001("8001", "网络模块报警"), |
| | | ERROR_0x8002("8002", "上位机通信失败"), |
| | | ERROR_0x8003("8003", "无效的指令"), |
| | | ERROR_0x8004("8004", "非法的路径"), |
| | | ERROR_0x8005("8005", "未知"), |
| | | ERROR_0x8006("8006", "未知"), |
| | | |
| | | ERROR_0x9001("9001", "充电对接传感器异常"), |
| | | ERROR_0x9002("9002", "充电对接超时"), |
| | | ERROR_0x9003("9003", "对接后长时间未充电"), |
| | | ; |
| | | |
| | | public String sign; |
| | |
| | | return null; |
| | | } |
| | | |
| | | public String getMsg() { |
| | | return "0x" + this.sign + " - " + this.desc; |
| | | } |
| | | |
| | | } |
| | |
| | | import com.zy.acs.common.domain.AgvProtocol; |
| | | import com.zy.acs.common.domain.protocol.*; |
| | | import com.zy.acs.common.enums.AgvStatusType; |
| | | import com.zy.acs.common.enums.error.AgvErrorType; |
| | | import com.zy.acs.common.utils.GsonUtils; |
| | | import com.zy.acs.common.utils.RedisSupport; |
| | | import com.zy.acs.framework.common.Cools; |
| | |
| | | // 故障数据包 |
| | | if (msgBody instanceof AGV_04_UP) { |
| | | AGV_04_UP agv_04_up = (AGV_04_UP) msgBody; |
| | | AgvErrorType errorType = AgvErrorType.query(agv_04_up.getHexFaultId()); |
| | | log.info("Agv [{}] 故障数据包 ===>> {}", protocol.getAgvNo(), JSON.toJSONString(agv_04_up)); |
| | | |
| | | // save |
| | | faultProcessor.execute(new VehicleFaultDto<>(protocol.getAgvNo(), protocol.getTimestamp(), agv_04_up)); |
| | | detail.setError(agv_04_up.getHexFaultId()); |
| | | |
| | | // detail |
| | | String errorMSg = errorType != null ? errorType.getMsg() : agv_04_up.getHexFaultId(); |
| | | detail.setError(errorMSg); |
| | | detail.setErrorTime(new Date()); |
| | | } |
| | | |
| | |
| | | package com.zy.acs.manager.core.service; |
| | | |
| | | import com.zy.acs.common.domain.protocol.AGV_04_UP; |
| | | import com.zy.acs.common.enums.error.AgvErrorType; |
| | | import com.zy.acs.common.utils.GsonUtils; |
| | | import com.zy.acs.framework.common.Cools; |
| | | import com.zy.acs.framework.common.RadixTools; |
| | |
| | | AGV_04_UP agv_04_up = dto.getT(); |
| | | Date errorTime = new Date(dto.getTimestamp()); |
| | | |
| | | AgvErrorType errorType = AgvErrorType.query(agv_04_up.getHexFaultId()); |
| | | |
| | | Agv agv = agvService.selectByUuid(vehicle); |
| | | |
| | | VehFaultRec vehFaultRec = new VehFaultRec(); |
| | |
| | | vehFaultRec.setAgvId(agv.getId()); |
| | | vehFaultRec.setFaultNo(String.valueOf(agv_04_up.getFaultId())); |
| | | vehFaultRec.setFaultHex(agv_04_up.getHexFaultId()); |
| | | vehFaultRec.setFaultName(null != errorType ? errorType.desc : "undefined"); |
| | | vehFaultRec.setFaultLev(agv_04_up.getFaultLevel()); |
| | | vehFaultRec.setFaultData(GsonUtils.toJson(Cools.add("data1", agv_04_up.getData1()).add("data2", agv_04_up.getData2()))); |
| | | vehFaultRec.setHappenTime(errorTime); |