438 lines
12 KiB
C#
438 lines
12 KiB
C#
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 ~ 0x0F
|
|
PLC_WELD_READY_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,
|
|
// 0x09 ~ 0x0F
|
|
PC_WELD_READY_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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|