using System; using System.Collections.Generic; using System.Text; namespace ENIGProtocol { /// /// host -> eq /// public enum AGVCommandHE : byte { Goto = 100, Stop = 101, Reset = 102, SetCurrent = 103, Manual = 104, MarkStop = 105, LiftControl = 106, GotoAlias = 107, AutoMove = 108, ChargeControl = 109, Charger = 112, LTurn = 113, RTurn = 114, LTurn180 = 115, RTurn180 = 116, PickOnEnter = 117, PickOffEnter = 118, PickOnExit = 119, PickOffExit = 120, } /// /// eq -> host /// public enum AGVCommandEH : byte { Error = 1, Arrived = 2, ReadRFID = 3, ActionComplete=4, Status = 9, } public enum AGVErrorCode : byte { None = 0, PredictFix, TurnTimeout, TurnError, EmptyNode, Goto, ManualMode, UnknownCommand, UnknownAlias, // Operational Errors CART_EXIST, MARK_TIMEOUT, MARK_SENSOR_FAIL, LIFT_ERROR, AGV_SPEED_SET_FAIL, AGV_RUN_FAIL, AGV_STOP_FAIL, PATH_INTEGRITY_FAIL, TURN_FAIL, NO_CHARGEPOINT, NOTSET_CHARGEPOINT, ALREADY_CHARGE, CHARGE_RETRY_OVER, MAGNET_ON_ERROR, MAGNET_OF_ERROR, BUFFER_NOT_COMPLETE, MARK_STOP_FAIL, LIDAR_STOP, NOT_BUFFERPOINT, NOT_EQUIPMENTPOINT, PATH_COMPLETE_INTEGRITY_FAIL, UPDATEMOTION_TIMEOUT } public static class AGVUtility { /// /// 에러코드에 해당하는 오류메세지를 반환 합니다 /// /// /// public static string GetAGVErrorMessage(AGVErrorCode ecode) { switch (ecode) { case AGVErrorCode.None: return "No Error"; case AGVErrorCode.PredictFix: return "이동 예측이 동작하지 않습니다"; case AGVErrorCode.TurnTimeout: return "회전작업 시간초과"; case AGVErrorCode.TurnError: return "회전작업이 완료되지 않았습니다"; case AGVErrorCode.EmptyNode: return "노드정보를 찾을 수 없습니다"; case AGVErrorCode.Goto: return "이동 명령 오류"; case AGVErrorCode.ManualMode: return "자동운전 상태가 아닙니다"; case AGVErrorCode.UnknownCommand: return "알수 없는 명령입니다"; case AGVErrorCode.UnknownAlias: return "알수 없는 별칭 입니다"; case AGVErrorCode.CART_EXIST: return "카트 감지 센서 오류"; case AGVErrorCode.MARK_TIMEOUT: return "마크 정지 신호 시간초과"; case AGVErrorCode.MARK_SENSOR_FAIL: return "마크 센서 미감지"; case AGVErrorCode.LIFT_ERROR: return "리프트 동작 오류"; case AGVErrorCode.AGV_SPEED_SET_FAIL: return "AGV 속도 설정 실패"; case AGVErrorCode.AGV_RUN_FAIL: return "AGV 구동 실패"; case AGVErrorCode.AGV_STOP_FAIL: return "AGV 정지 실패"; case AGVErrorCode.PATH_INTEGRITY_FAIL: return "경로 무결성 검증 실패"; case AGVErrorCode.TURN_FAIL: return "턴 동작 실패"; case AGVErrorCode.NO_CHARGEPOINT: return "충전 위치 아님"; case AGVErrorCode.NOTSET_CHARGEPOINT: return "충전기 노드 미설정"; case AGVErrorCode.ALREADY_CHARGE: return "이미 충전 중 상태임"; case AGVErrorCode.CHARGE_RETRY_OVER: return $"충전명령 재전송 횟수 초과"; case AGVErrorCode.NOT_BUFFERPOINT: return "현재 위치가 버퍼가 아닙니다"; case AGVErrorCode.NOT_EQUIPMENTPOINT: return "현재 위치가 장비 노드가 아닙니다"; case AGVErrorCode.PATH_COMPLETE_INTEGRITY_FAIL: return "목적지 도착 완료 했으나 노드 혹은 방향이 일치지하지 않습니다"; default: return ecode.ToString(); } } } }