using Aurora.Util.HislogPlus; using AuroraPLC; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WeldingCommon.Devices { public partial class PLCController { #region // PLC -> PC [INPUT] //public enum eCommonBitInput : int //{ // LIVESTATUS = 0X00, // AUTOSTATUS, // AUTOCOMPLETE, // MANUALCOMPLETE, // LIGHT_ALSTATUS, // HEAVY_ALSTATUS, // EMPTY_6, // EMPTY_7, // PAGE_CHGCOMPLETE, // EMPTY_9, // EMPTY_10, // EMPTY_11, // EMPTY_12, // EMPTY_13, // EMPTY_14, // EMPTY_15, // WELD_01READYACK, // WELD_01BUSY, // WELD_01COMPLETE, // EMPTY_19, // EMPTY_20, // EMPTY_21, // EMPTY_22, // EMPTY_23, // EMPTY_24, // EMPTY_25, // EMPTY_26, // EMPTY_27, // EMPTY_28, // EMPTY_29, // EMPTY_30, // EMPTY_31, // EMPTY_32, // EMPTY_33, // EMPTY_34, // EMPTY_35, // EMPTY_36, // EMPTY_37, // EMPTY_38, // EMPTY_39, // EMPTY_40, // EMPTY_41, // EMPTY_42, // EMPTY_43, // EMPTY_44, // EMPTY_45, // EMPTY_46, // EMPTY_47, // EMPTY_48, // EMPTY_49, // EMPTY_50, // EMPTY_51, // EMPTY_52, // EMPTY_53, // EMPTY_54, // EMPTY_55, // EMPTY_56, // EMPTY_57, // EMPTY_58, // EMPTY_59, // EMPTY_60, // EMPTY_61, // EMPTY_62, // EMPTY_63, // EMPTY_64, // EMPTY_65, // EMPTY_66, // EMPTY_67, // EMPTY_68, // EMPTY_69, // EMPTY_70, // EMPTY_71, // EMPTY_72, // EMPTY_73, // EMPTY_74, // EMPTY_75, // EMPTY_76, // EMPTY_77, // EMPTY_78, // EMPTY_79, // EMPTY_80, // EMPTY_81, // EMPTY_82, // EMPTY_83, // EMPTY_84, // EMPTY_85, // EMPTY_86, // EMPTY_87, // EMPTY_88, // EMPTY_89, // EMPTY_90, // EMPTY_91, // EMPTY_92, // EMPTY_93, // EMPTY_94, // EMPTY_95, // EMPTY_96, // EMPTY_97, // EMPTY_98, // EMPTY_99, // EMPTY_100, // AUTOSTATUS_A, // AUTOCOMPLETE_A, // MANUALCOMPLETE_A, // LIGHT_ALSTATUS_A, // HEAVY_ALSTATUS_A, // EMPTY_106, // EMPTY_107, // PAGE_CHGCOMPLETE_A, // EMPTY_109, // EMPTY_110, // EMPTY_111, // EMPTY_112, // EMPTY_113, // EMPTY_114, // EMPTY_115, // WELD_01READYACK_A, // WELD_01BUSY_A, // WELD_01COMPLETE_A, // WELD_02READYACK, // WELD_02BUSY, // WELD_02COMPLETE, // EMPTY_122, // EMPTY_123, // WELDMONICOMPLETE, // WELD_CH2READYACK, // WELD_CH2BUSY, // WELD_CH2COMPLETE, // WELD_CH2MONICOMPLETE, // EMPTY_129, // EMPTY_130, // EMPTY_131, // EMPTY_132, // M_POWERACK, // M_POWERBUSY, // M_POWERCOMPLETE, // EMPTY_136, // PLC_PARA_READ_ACK, // PLC_PARA_SET_ACK, // PLC_PARA_CHG_REQ, // EMPTY_140, // EMPTY_141, // EMPTY_142, // EMPTY_143, // EMPTY_144, // EMPTY_145, // EMPTY_146, // EMPTY_147, // EMPTY_148, // EMPTY_149, // EMPTY_150, // EMPTY_151, // EMPTY_152, // EMPTY_153, // EMPTY_154, // EMPTY_155, // EMPTY_156, // EMPTY_157, // EMPTY_158, // EMPTY_159, // EMPTY_160, // EMPTY_161, // EMPTY_162, // EMPTY_163, // EMPTY_164, // EMPTY_165, // EMPTY_166, // EMPTY_167, // EMPTY_168, // EMPTY_169, // EMPTY_170, // EMPTY_171, // EMPTY_172, // EMPTY_173, // EMPTY_174, // EMPTY_175, // EMPTY_176, // EMPTY_177, // EMPTY_178, // EMPTY_179, // EMPTY_180, // EMPTY_181, // EMPTY_182, // EMPTY_183, // EMPTY_184, // EMPTY_185, // EMPTY_186, // EMPTY_187, // EMPTY_188, // EMPTY_189, // EMPTY_190, // EMPTY_191, // EMPTY_192, // EMPTY_193, // EMPTY_194, // EMPTY_195, // EMPTY_196, // EMPTY_197, // EMPTY_198, // EMPTY_199, //} #endregion // PLC -> PC [INPUT] public enum eCommonBitInput : int { PLC_LIVE_STATUS = 0x00, PLC_AUTO_STATUS = 0x01, PLC_AUTO_REQ = 0x02, PLC_MANUAL_REQ = 0x03, PLC_LIGHT_ALARM_STATUS = 0x04, PLC_HEAVY_ALARM_STATUS = 0x05, PLC_DOOR_INTERLOCK = 0x06, PLC_EMO_STATUS = 0x07, PLC_PAGE_CHANGE_REQ = 0x08, PLC_RMS_USED = 0x09, // 0x0A ~ 0x0E PLC_WELD_READY_REQ = 0x0F, // 260621: Weld_01 Ready (PTOP 동기화) PLC_WELD_TRIGGER_REQ = 0x10, PLC_WELD_WAIT = 0x11, PLC_WELD_COMPLETE_ACK = 0x12, // 0x13 ~ 0x1D PLC_ALARM_RESET = 0x1E, // x PLC_RMS_PARAMETER_READ_REQUEST = 0x25, // ── 두 번째 블록 (M70600~) ────────────────────────── PLC_AUTO_STATUS_P = 0x65, PLC_AUTO_REQ_P = 0x66, PLC_MANUAL_REQ_P = 0x67, PLC_LIGHT_ALARM_STATUS_P = 0x68, PLC_HEAVY_ALARM_STATUS_P = 0x69, PLC_DOOR_INTERLOCK_P = 0x6A, PLC_EMO_STATUS_P = 0x6B, // 0x6D // 0x6F ~ 0x73 PLC_WELD_P_READY_REQ = 0x74, PLC_WELD_P_WAIT = 0x75, PLC_WELD_P_COMP_ACK = 0x76, } // PC -> PLC [OUTPUT] // PC -> PLC [OUTPUT] public enum eCommonBitOutput : int { PC_LIVE_STATUS = 0x00, PC_AUTO_STATUS = 0x01, PC_AUTO_COMPLETE = 0x02, PC_MANUAL_COMPLETE = 0x03, PC_LIGHT_ALARM_STATUS = 0x04, PC_HEAVY_ALARM_STATUS = 0x05, PC_DOOR_INTERLOCK = 0x06, PC_EMO_STATUS = 0x07, PC_PAGE_CHANGE_COMPLETE = 0x08, PC_RECIPE_CHANGE_COMPLETE = 0x09, // 260618: PTOP enum과 동기화 (RestoreDeviceStatus가 common enum 사용) // 0x0A ~ 0x0E PC_WELD_READY_ACK = 0x0F, // 260621: Weld_01 ReadyACK (PTOP 동기화) PC_WELD_TRIGGER_ACK = 0x10, PC_WELD_BUSY = 0x11, PC_WELD_COMPLETE = 0x12, PC_WELD_NG_JUDGE = 0x14, PC_RMS_PARAMETER_READ_REQUEST_ACK = 0x25, PC_AUTO_STATUS_P = 0x65, PC_AUTO_REQUEST_P = 0x66, PC_LIGHT_ALARM_STATUS_P = 0x68, PC_HEAVY_ALARM_STATUS_P = 0x69, PC_WELD_P_READY_REQ = 0x74, PC_WELD_P_BUSY = 0x75, PC_WELD_P_COMP_ACK = 0x76, } #region //public enum eCommonBitOutput : int //{ // PC_LIVE_STATUS = 0X00, // PC_AUTO_STATUS, // PC_AUTO_COMPLETE, // PC_MANUAL_COMPLETE, // PC_LIGHT_ALARM_STATUS, // PC_HEAVY_ALARM_STATUS, // EMPTY_06, // EMPTY_07, // PC_PAGE_CHANGE_COMPLETE, // EMPTY_09, // EMPTY_10, // EMPTY_11, // EMPTY_12, // EMPTY_13, // EMPTY_14, // EMPTY_15, // PC_WELD_READY_ACK, // PC_WELD_BUSY, // PC_WELD_COMPLETE, // EMPTY_19, // PC_WELD_NG, // ng(vision Compensation fail) 발생 시 살림 // EMPTY_21, // EMPTY_22, // EMPTY_23, // EMPTY_24, // EMPTY_25, // EMPTY_26, // EMPTY_27, // EMPTY_28, // EMPTY_29, // EMPTY_30, // EMPTY_31, // EMPTY_32, // EMPTY_33, // EMPTY_34, // EMPTY_35, // EMPTY_36, // PC_RMS_PARAMETER_READ_REQUEST_ACK, // EMPTY_38, // EMPTY_39, // EMPTY_40, //} #endregion public enum eCommonWordInput : int { PLC_ERROR_CODE = 0X00, PLC_PAGE_NO, PLC_STEP_NO, EMPTY_03, PLC_CURRENT_SLOT_NO, // EL / CLEAN 사용 EMPTY_05, EMPTY_06, EMPTY_07, EMPTY_08, EMPTY_09, EMPTY_10, EMPTY_11, EMPTY_12, EMPTY_13, EMPTY_14, EMPTY_15, EMPTY_16, EMPTY_17, EMPTY_18, EMPTY_19, PLC_CELL_ID_01, PLC_CELL_ID_02, PLC_CELL_ID_03, PLC_CELL_ID_04, PLC_CELL_ID_05, PLC_CELL_ID_06, PLC_CELL_ID_07, PLC_CELL_ID_08, PLC_CELL_ID_09, PLC_CELL_ID_10, PLC_LOT_ID_01, PLC_LOT_ID_02, PLC_LOT_ID_03, PLC_LOT_ID_04, PLC_LOT_ID_05, PLC_LOT_ID_06, PLC_LOT_ID_07, PLC_LOT_ID_08, } public enum eCommonWordOutput : int { PC_ERROR_CODE = 0X00, PC_PAGE_NO, EMPTY_02, EMPTY_03, EMPTY_04, EMPTY_05, EMPTY_06, EMPTY_07, PC_WELD_OFFSET_X, EMPTY_09, PC_WELD_OFFSET_Y, EMPTY_11, PC_DISPLACEMENT1_MEASUREMENT, EMPTY_13, PC_DISPLACEMENT2_MEASUREMENT = 0X0E, EMPTY_15, EMPTY_16, EMPTY_17, EMPTY_18, EMPTY_19, } // PLC 주소 초기화 void InitPLCAddress() { ePLCErrCode retCode = ePLCErrCode.MemMapPaser_Fail; switch (mmapFileType) { case PLCMMapFileType.CSV: ParsePLCBitWordAddressFromCSV(BitInputPath, BitOutputPath, WordInputPath, WordOutputPath, out retCode); break; case PLCMMapFileType.EXCEL: ParsePLCBitWordAddressFromExcel(BitInputPath, BitOutputPath, WordInputPath, WordOutputPath, out retCode); break; default: Log.E($"No supported fileType: {mmapFileType}"); break; } //=================================================== switch (retCode) { case ePLCErrCode.MemMapPaser_BitInput_LoadFail: { #warning [LUKAS][PLC] 아래 주석은 Aurora 알람 기능에 연동할 때 검토 (csv 파일이 없을때 알림용) //_alarmService.SetAlarm(AlarmCode.ALARM_PLC_EXCEL_BIT_INPUT_LOAD_FAIL); break; } case ePLCErrCode.MemMapPaser_BitOutput_LoadFail: { //_alarmService.SetAlarm(AlarmCode.ALARM_PLC_EXCEL_BIT_OUTPUT_LOAD_FAIL); break; } case ePLCErrCode.MemMapPaser_WordInput_LoadFail: { //_alarmService.SetAlarm(AlarmCode.ALARM_PLC_EXCEL_WORD_INPUT_LOAD_FAIL); break; } case ePLCErrCode.MemMapPaser_WordOutput_LoadFail: { //_alarmService.SetAlarm(AlarmCode.ALARM_PLC_EXCEL_WORD_OUTPUT_LOAD_FAIL); break; } } } } }