Kyungshin-Welder/Machines/ILSOS_KS/Device/PLC/PLCController.Address.cs
ksj09406 c517993e1a RCC 패턴 변경 알림(B2506/B2409), 서브 패턴 10개 확장 및 현장 소스 동기화
- 오토런 시작 시 RCC 패턴 폴더 변경 감지 → B2506 ON, PLC ACK(B2409) 수신 시 OFF
- 서브 패턴 1~10, 패턴 목록에 서브 썸네일 표시(행 내 좌우 스크롤)
- 서브 패턴 등록 직후 활성화 OFF
- 패턴 파일이 다른 프로그램에서 열려 있으면 삭제하지 않고 안내
- 현장 소스 반영: Train ROI 슬라이더, KS 조명 밝기 저장/적용, 조명 ID 분리,
  스캔 후 카메라 라이브 재시작, 레시피 21 RCC NG 우회, 오토런 상태 판단
2026-10-15 14:36:29 +09:00

513 lines
19 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ILSOS_KS.Device
{
partial class PLCControllerKS
{
// Config 폴더에 있는 메모리 맵 정보
//public enum eBitInput : int
//{
// PLC_LIVE_STATUS = 0x00, // PLC 라이브 상태
// PLC_AUTO_STATUS, // PLC 자동운전 상태
// PLC_AUTO_REQ, // PLC 자동운전 변경 요청
// PLC_MANUAL_REQ, // PLC 수동운전 변경 요청
// PLC_LIGHT_ALARM_STATUS, // PLC 경알람 상태
// PLC_HEAVY_ALARM_STATUS, // PLC 중알람 상태
// PLC_DOOR_INTERLOCK, // PLC 도어 인터락
// PLC_EMO_STATUS, // PLC EMO 상태
// PLC_RECIPE_CHANGE_REQ, // PLC 레시피 변경 요청
// PLC_JIG_LOAD_COMPLETE = 0X0C,
// PLC_WELD_REQUEST_FIRST,
// PLC_WELD_REQUEST_SECOND,
// PLC_WELD_COMPLETE_FIRST_ACK,
// PLC_WELD_COMPLETE_SECOND_ACK,
// PLC_PARAM_READ_REQ = 0X25,
// PLC_PARAM_SET_REQ,
// PLC_PARAM_CHANGE_ACK,
// SPC_DATA_UPDATE_ENABLE = 0X29,
// FDC_DATA_UPDATE_ENABLE,
// CHECK_NO_ADDRRESS
//}
//public enum eBitOutput : int
//{
// PC_LIVE_STATUS = 0x00, // PC 라이브 상태
// PC_AUTO_STATUS, // PC 자동운전 상태
// PC_AUTO_COMPLETE, // PC 자동운전 변경 완료
// PC_MANUAL_COMPLETE, // PC 수동운전 변경 완료
// PC_LIGHT_ALARM_STATUS, // PC 경알람 상태
// PC_HEAVY_ALARM_STATUS, // PC 중알람 상태
// PC_RECIPE_CHANGE_COMPLETE = 0x08,// PC 레시피 변경 완료
// PC_WELD_MANUAL_TEST = 0x0A, // PC 용접 수동 테스트
// PC_WELD_READY, // PC 용접 준비 완료
// PC_WELD_REQEUST_ACK, // PC 용접 준비 완료 ACK
// PC_WELD_COMPLETE, // PC 용접 완료
// PC_PARAM_READ_ACK = 0X25, // PC RMS 요청 ACK
// PC_PARAM_SET_ACK, // PC RMS SET ACK
// PC_PARAM_CHANGE_REQ, // PC RMS 수정 요청
// CHECK_NO_ADDRRESS
//}
//public enum eWordInput : int
//{
// PLC_ERROR_CODE = 0x00, // PLC 에러 코드
// PLC_RECIPE_NO, // 설정할 PLC Recipe 번호
// PLC_CURRENT_JIG_NO, // 현재 지그 번호
// PLC_STAGE_SPEED, // 로터리 회전 속도
// PLC_CURRENT_POS_1, // 현재 Rotary 절대엔코더값 1
// PLC_CURRENT_POS_2, // 현재 Rotary 절대엔코더값 2
// CHECK_NO_ADDRRESS,
// PLC_VER_WELDING_RECIPE_NUM1,
// PLC_VER_WELDING_MAIN_POWER_CORE1,
// PLC_VER_WELDING_MAIN_POWER_RING1,
// PLC_VER_WELDING_MAIN_JUMP_SPEED1,
// PLC_VER_WELDING_MAIN_DRAW_SPEED1,
// PLC_VER_WELDING_MAIN_RAMPING_START_POWER1,
// PLC_VER_WELDING_MAIN_RAMPING_START_DIST1,
// PLC_VER_WELDING_MAIN_RAMPING_END_POWER1,
// PLC_VER_WELDING_MAIN_RAMPING_END_DIST1,
// PLC_VER_WELDING_SUB_POWER_CORE1,
// PLC_VER_WELDING_SUB_POWER_RING1,
// PLC_VER_WELDING_SUB_SPOT_SHOT_TIME1
//}
//public enum eWordOutput : int
//{
// PC_ERROR_CODE = 0x00, // PC 에러 코드
// PC_RECIPE_NO, // 설정된 PC Recipe 번호
// LBAD_ERROR_CODE, // LBAD 에러 코드
// LDD_ERROR_CODE, // LDD 에러 코드
// CHILLER_ERROR_CODE, // 칠러 에러 코듣
// PC_WELD_RESULT_1 = 0x12, // PC 용접 결과(이상감지 포함)
// PC_WELD_RESULT_2, // PC 용접 결과(이상감지 포함)
// PC_WELD_RESULT_3, // PC 용접 결과(이상감지 포함)
// PC_WELD_RESULT_4, // PC 용접 결과(이상감지 포함)
// PC_WELD_RESULT_5, // PC 용접 결과(이상감지 포함)
// PC_WELD_RESULT_6, // PC 용접 결과(이상감지 포함)
// PC_WELD_RESULT_7, // PC 용접 결과(이상감지 포함)
// PC_WELD_RESULT_8, // PC 용접 결과(이상감지 포함)
// PC_WELD_RESULT_9, // PC 용접 결과(이상감지 포함)
// PC_WELD_RESULT_10, // PC 용접 결과(이상감지 포함)
// PC_WELD_RESULT_11, // PC 용접 결과(이상감지 포함)
// PC_WELD_RESULT_12, // PC 용접 결과(이상감지 포함)
// CHECK_NO_ADDRRESS,
// PC_VER_WELDING_MAIN_RAMPING_START_POWER1,
// PC_VER_WELDING_MAIN_RAMPING_END_POWER1,
// PC_VER_WELDING_MAIN_RAMPING_END_DIST2,
// PC_VER_WELDING_SUB_POWER_CORE1,
// PC_VER_WELDING_RECIPE_NUM1,
// PC_VER_WELDING_MAIN_POWER_CORE1,
// PC_VER_WELDING_MAIN_POWER_RING1,
// PC_VER_WELDING_MAIN_RAMPING_START_DIST1,
// PC_VER_WELDING_SUB_POWER_RING1
//}
// 최신화 된 메모리 맵 정보
// 최신화 된 메모리 맵 정보
public enum eBitInput : int
{
PLC_LIVE_STATUS = 0X00,
PLC_AUTO_STATUS,
PLC_AUTO_REQ,
PLC_MANUAL_REQ,
PLC_LIGHT_ALARM_STATUS,
PLC_HEAVY_ALARM_STATUS,
PLC_DOOR_INTERLOCK,
PLC_EMO_STATUS,
PLC_RECIPE_CHANGE_REQ,
PLC_RCC_PATTERN_CHANGED_ACK = 0X09, // B2409 : B2506(RCC 패턴 변경) 수신 ACK
PLC_JIG_LOAD_COMPLETE = 0X0C,
/// <summary>
/// 용접 시작 -> 다음 용접 있음
/// </summary>
PLC_WELD_REQEUST,
PLC_WELD_COMPLETE_ACK,
/// <summary>
/// 다음 지그 -> 용접완료 배출
/// </summary>
PLC_RESULT_REQUEST = 0x10,
PLC_SET_WELD_PAGE_1 = 0x20,
PLC_SET_WELD_PAGE_2,
PLC_SET_WELD_PAGE_3,
PLC_SET_WELD_PAGE_4,
PLC_PARAM_READ_REQ = 0X25,
PLC_PARAM_SET_REQ,
PLC_PARAM_CHANGE_ACK,
SPC_DATA_UPDATE_ENABLE = 0X29,
FDC_DATA_UPDATE_ENABLE,
}
public enum eBitOutput : int
{
PC_LIVE_STATUS = 0X00,
PC_AUTO_STATUS,
PC_AUTO_COMPLETE,
PC_MANUAL_COMPLETE,
PC_LIGHT_ALARM_STATUS,
PC_HEAVY_ALARM_STATUS,
PC_RCC_PATTERN_CHANGED = 0X06, // B2506 : RCC 패턴 변경 알림 (B2409 ACK 를 받으면 끈다)
PC_RECIPE_CHANGE_COMPLETE = 0X08,
PC_RECIPE_PARAM_UPLOAD_COMPLETE,
PC_WELD_MANUAL_TEST,
PC_WELD_READY,
PC_WELD_REQEUST_ACK,
PC_WELD_COMPLETE,
PC_LBAD_RESULT_OK = 0x10,
PC_LBAD_RESULT_NG = 0x11,
PC_WELD_PAGE_CHANGE_COMPLETE_1 = 0x20,
PC_WELD_PAGE_CHANGE_COMPLETE_2,
PC_WELD_PAGE_CHANGE_COMPLETE_3,
PC_WELD_PAGE_CHANGE_COMPLETE_4,
PC_PARAM_READ_ACK = 0X25,
PC_PARAM_SET_ACK,
PC_PARAM_CHANGE_REQ,
SPC_DATA_UPDATED = 0X29,
FDC_DATA_UPDATED,
}
//public enum eWordInput : int
//{
// PLC_ERROR_CODE = 0x00,
// PLC_RECIPE_NO,
// PLC_BCR_ID,
//}
public enum eWordInput : int
{
PLC_ERROR_CODE = 0x00,
PLC_RECIPE_NO,
PLC_BCR_ID,
//PLC_HOR_WELDING_SPOT_SHOT_TIME = 0x20,
//PLC_HOR_WELDING_RECIPE_NUM = 0x22,
//PLC_HOR_WELDING_MAIN_POWER_CORE = 0x24,
//PLC_HOR_WELDING_MAIN_POWER_RING = 0x26,
//PLC_VER_WELDING_RECIPE_NUM = 0x28,
//PLC_VER_WELDING_MAIN_POWER_CORE = 0x2A,
//PLC_VER_WELDING_MAIN_POWER_RING = 0x2C,
//PLC_VER_WELDING_MAIN_DRAW_SPEED = 0x2E,
//PLC_VER_WELDING_MAIN_JUMP_SPEED = 0x30,
//PLC_VER_WELDING_SUB_POWER_CORE = 0x32,
//PLC_VER_WELDING_SUB_POWER_RING = 0x34,
//PLC_VER_WELDING_SUB_SPOT_SHOT_TIME = 0x36,
//PLC_VER_WELDING_MAIN_RAMPING_START_POWER = 0x38,
//PLC_VER_WELDING_MAIN_RAMPING_START_DIST = 0x3A,
//PLC_VER_WELDING_MAIN_RAMPING_END_POWER = 0x3C,
//PLC_VER_WELDING_MAIN_RAMPING_END_DIST = 0x3E
}
//public enum eWordOutput : int
//{
// PC_ERROR_CODE = 0X00,
// PC_RECIPE_NO,
// LBAD_ERROR_CODE,
// LDD_ERROR_CODE,
// CHILLER_ERROR_CODE,
// STEP1_Arc1_LowerLimit = 0x20,
// STEP1_Arc1_UpperLimit,
// STEP1_Arc1_Result,
// STEP1_Arc1_OK_NG,
// STEP1_Arc2_LowerLimit,
// STEP1_Arc2_UpperLimit,
// STEP1_Arc2_Result,
// STEP1_Arc2_OK_NG,
// STEP1_Arc3_LowerLimit,
// STEP1_Arc3_UpperLimit,
// STEP1_Arc3_Result,
// STEP1_Arc3_OK_NG,
// STEP1_Arc4_LowerLimit,
// STEP1_Arc4_UpperLimit,
// STEP1_Arc4_Result,
// STEP1_Arc4_OK_NG,
// STEP1_Arc5_LowerLimit,
// STEP1_Arc5_UpperLimit,
// STEP1_Arc5_Result,
// STEP1_Arc5_OK_NG,
// STEP1_Arc6_LowerLimit,
// STEP1_Arc6_UpperLimit,
// STEP1_Arc6_Result,
// STEP1_Arc6_OK_NG,
// STEP2_Spiral1_HorizontalLowerLimit = 0x38,
// STEP2_Spiral1_HorizontalUpperLimit,
// STEP2_Spiral1_HorizontalResult,
// STEP2_Spiral1_VerticalLowerLimit,
// STEP2_Spiral1_VerticalUpperLimit,
// STEP2_Spiral1_VerticalResult,
// STEP2_Spiral1_WidthOK_NG,
// STEP2_Spiral2_HorizontalLowerLimit,
// STEP2_Spiral2_HorizontalUpperLimit,
// STEP2_Spiral2_HorizontalResult,
// STEP2_Spiral2_VerticalLowerLimit,
// STEP2_Spiral2_VerticalUpperLimit,
// STEP2_Spiral2_VerticalResult,
// STEP2_Spiral2_WidthOK_NG,
// STEP2_Spiral3_HorizontalLowerLimit,
// STEP2_Spiral3_HorizontalUpperLimit,
// STEP2_Spiral3_HorizontalResult,
// STEP2_Spiral3_VerticalLowerLimit,
// STEP2_Spiral3_VerticalUpperLimit,
// STEP2_Spiral3_VerticalResult,
// STEP2_Spiral3_WidthOK_NG,
// STEP3_Arc1_LowerLimit = 0x4D,
// STEP3_Arc1_UpperLimit,
// STEP3_Arc1_Result,
// STEP3_Arc1_OK_NG,
// STEP3_Arc2_LowerLimit,
// STEP3_Arc2_UpperLimit,
// STEP3_Arc2_Result,
// STEP3_Arc2_OK_NG,
// STEP3_Arc3_LowerLimit,
// STEP3_Arc3_UpperLimit,
// STEP3_Arc3_Result,
// STEP3_Arc3_OK_NG,
// STEP3_Arc4_LowerLimit,
// STEP3_Arc4_UpperLimit,
// STEP3_Arc4_Result,
// STEP3_Arc4_OK_NG,
// STEP3_Arc5_LowerLimit,
// STEP3_Arc5_UpperLimit,
// STEP3_Arc5_Result,
// STEP3_Arc5_OK_NG,
// STEP3_Arc6_LowerLimit,
// STEP3_Arc6_UpperLimit,
// STEP3_Arc6_Result,
// STEP3_Arc6_OK_NG,
// STEP4_Spiral1_HorizontalLowerLimit = 0x65,
// STEP4_Spiral1_HorizontalUpperLimit,
// STEP4_Spiral1_HorizontalResult,
// STEP4_Spiral1_VerticalLowerLimit,
// STEP4_Spiral1_VerticalUpperLimit,
// STEP4_Spiral1_VerticalResult,
// STEP4_Spiral1_WidthOK_NG,
// STEP4_Spiral2_HorizontalLowerLimit,
// STEP4_Spiral2_HorizontalUpperLimit,
// STEP4_Spiral2_HorizontalResult,
// STEP4_Spiral2_VerticalLowerLimit,
// STEP4_Spiral2_VerticalUpperLimit,
// STEP4_Spiral2_VerticalResult,
// STEP4_Spiral2_WidthOK_NG,
// STEP4_Spiral3_HorizontalLowerLimit,
// STEP4_Spiral3_HorizontalUpperLimit,
// STEP4_Spiral3_HorizontalResult,
// STEP4_Spiral3_VerticalLowerLimit,
// STEP4_Spiral3_VerticalUpperLimit,
// STEP4_Spiral3_VerticalResult,
// STEP4_Spiral3_WidthOK_NG,
// Line_LaserPower1 = 0x7A,
// Line_LaserPower2,
// Line_MarkSpeed,
// Arc_LaserPower1,
// Arc_LaserPower2,
// Arc_MarkSpeed,
// Spline_LaserPower1,
// Spline_LaserPower2,
// Spline_MarkSpeed,
// LBADOK_NG,
// WeldingOK_NG = 0x84,
//}
public enum eWordOutput : int
{
PC_ERROR_CODE = 0X00,
PC_RECIPE_NO,
LBAD_ERROR_CODE,
LDD_ERROR_CODE,
CHILLER_ERROR_CODE,
STEP1_Arc1_LowerLimit = 0x20,
STEP1_Arc1_UpperLimit,
//STEP1_Arc1_AVG,
//STEP1_Arc1_MIN,
//STEP1_Arc1_MAX,
STEP1_Arc1_Bead1,
STEP1_Arc1_Bead2,
STEP1_Arc1_Bead3,
STEP1_Arc1_Bead4,
STEP1_Arc1_OK_NG,
STEP1_Arc2_LowerLimit,
STEP1_Arc2_UpperLimit,
//STEP1_Arc2_AVG,
//STEP1_Arc2_MIN,
//STEP1_Arc2_MAX,
STEP1_Arc2_Bead1,
STEP1_Arc2_Bead2,
STEP1_Arc2_Bead3,
STEP1_Arc2_Bead4,
STEP1_Arc2_OK_NG,
STEP1_Arc3_LowerLimit,
STEP1_Arc3_UpperLimit,
//STEP1_Arc3_AVG,
//STEP1_Arc3_MIN,
//STEP1_Arc3_MAX,
STEP1_Arc3_Bead1,
STEP1_Arc3_Bead2,
STEP1_Arc3_Bead3,
STEP1_Arc3_Bead4,
STEP1_Arc3_OK_NG,
STEP1_Arc4_LowerLimit,
STEP1_Arc4_UpperLimit,
//STEP1_Arc4_AVG,
//STEP1_Arc4_MIN,
//STEP1_Arc4_MAX,
STEP1_Arc4_Bead1,
STEP1_Arc4_Bead2,
STEP1_Arc4_Bead3,
STEP1_Arc4_Bead4,
STEP1_Arc4_OK_NG,
STEP1_Arc5_LowerLimit,
STEP1_Arc5_UpperLimit,
//STEP1_Arc5_AVG,
//STEP1_Arc5_MIN,
//STEP1_Arc5_MAX,
STEP1_Arc5_Bead1,
STEP1_Arc5_Bead2,
STEP1_Arc5_Bead3,
STEP1_Arc5_Bead4,
STEP1_Arc5_OK_NG,
STEP1_Arc6_LowerLimit,
STEP1_Arc6_UpperLimit,
//STEP1_Arc6_AVG,
//STEP1_Arc6_MIN,
//STEP1_Arc6_MAX,
STEP1_Arc6_Bead1,
STEP1_Arc6_Bead2,
STEP1_Arc6_Bead3,
STEP1_Arc6_Bead4,
STEP1_Arc6_OK_NG,
STEP2_Spiral1_HorizontalLowerLimit = 0x4A,
STEP2_Spiral1_HorizontalUpperLimit,
STEP2_Spiral1_HorizontalResult,
STEP2_Spiral1_VerticalLowerLimit,
STEP2_Spiral1_VerticalUpperLimit,
STEP2_Spiral1_VerticalResult,
STEP2_Spiral1_WidthOK_NG,
STEP2_Spiral2_HorizontalLowerLimit,
STEP2_Spiral2_HorizontalUpperLimit,
STEP2_Spiral2_HorizontalResult,
STEP2_Spiral2_VerticalLowerLimit,
STEP2_Spiral2_VerticalUpperLimit,
STEP2_Spiral2_VerticalResult,
STEP2_Spiral2_WidthOK_NG,
STEP2_Spiral3_HorizontalLowerLimit,
STEP2_Spiral3_HorizontalUpperLimit,
STEP2_Spiral3_HorizontalResult,
STEP2_Spiral3_VerticalLowerLimit,
STEP2_Spiral3_VerticalUpperLimit,
STEP2_Spiral3_VerticalResult,
STEP2_Spiral3_WidthOK_NG,
STEP3_Arc1_LowerLimit = 0x5F,
STEP3_Arc1_UpperLimit,
//STEP3_Arc1_AVG,
//STEP3_Arc1_MIN,
//STEP3_Arc1_MAX,
STEP3_Arc1_Bead1,
STEP3_Arc1_Bead2,
STEP3_Arc1_Bead3,
STEP3_Arc1_Bead4,
STEP3_Arc1_OK_NG,
STEP3_Arc2_LowerLimit,
STEP3_Arc2_UpperLimit,
//STEP3_Arc2_AVG,
//STEP3_Arc2_MIN,
//STEP3_Arc2_MAX,
STEP3_Arc2_Bead1,
STEP3_Arc2_Bead2,
STEP3_Arc2_Bead3,
STEP3_Arc2_Bead4,
STEP3_Arc2_OK_NG,
STEP3_Arc3_LowerLimit,
STEP3_Arc3_UpperLimit,
//STEP3_Arc3_AVG,
//STEP3_Arc3_MIN,
//STEP3_Arc3_MAX,
STEP3_Arc3_Bead1,
STEP3_Arc3_Bead2,
STEP3_Arc3_Bead3,
STEP3_Arc3_Bead4,
STEP3_Arc3_OK_NG,
STEP3_Arc4_LowerLimit,
STEP3_Arc4_UpperLimit,
//STEP3_Arc4_AVG,
//STEP3_Arc4_MIN,
//STEP3_Arc4_MAX,
STEP3_Arc4_Bead1,
STEP3_Arc4_Bead2,
STEP3_Arc4_Bead3,
STEP3_Arc4_Bead4,
STEP3_Arc4_OK_NG,
STEP3_Arc5_LowerLimit,
STEP3_Arc5_UpperLimit,
//STEP3_Arc5_AVG,
//STEP3_Arc5_MIN,
//STEP3_Arc5_MAX,
STEP3_Arc5_Bead1,
STEP3_Arc5_Bead2,
STEP3_Arc5_Bead3,
STEP3_Arc5_Bead4,
STEP3_Arc5_OK_NG,
STEP3_Arc6_LowerLimit,
STEP3_Arc6_UpperLimit,
//STEP3_Arc6_AVG,
//STEP3_Arc6_MIN,
//STEP3_Arc6_MAX,
STEP3_Arc6_Bead1,
STEP3_Arc6_Bead2,
STEP3_Arc6_Bead3,
STEP3_Arc6_Bead4,
STEP3_Arc6_OK_NG,
STEP4_Spiral1_HorizontalLowerLimit = 0x89,
STEP4_Spiral1_HorizontalUpperLimit,
STEP4_Spiral1_HorizontalResult,
STEP4_Spiral1_VerticalLowerLimit,
STEP4_Spiral1_VerticalUpperLimit,
STEP4_Spiral1_VerticalResult,
STEP4_Spiral1_WidthOK_NG,
STEP4_Spiral2_HorizontalLowerLimit,
STEP4_Spiral2_HorizontalUpperLimit,
STEP4_Spiral2_HorizontalResult,
STEP4_Spiral2_VerticalLowerLimit,
STEP4_Spiral2_VerticalUpperLimit,
STEP4_Spiral2_VerticalResult,
STEP4_Spiral2_WidthOK_NG,
STEP4_Spiral3_HorizontalLowerLimit,
STEP4_Spiral3_HorizontalUpperLimit,
STEP4_Spiral3_HorizontalResult,
STEP4_Spiral3_VerticalLowerLimit,
STEP4_Spiral3_VerticalUpperLimit,
STEP4_Spiral3_VerticalResult,
STEP4_Spiral3_WidthOK_NG,
Line_LaserPower1 = 0x9E,
Line_LaserPower2,
Line_MarkSpeed,
Arc_LaserPower1,
Arc_LaserPower2,
Arc_MarkSpeed,
Spline_LaserPower1,
Spline_LaserPower2,
Spline_MarkSpeed,
LBAD_Total_Power_Average_H,
LBAD_Total_Power_Average_L,
LBAD_Total_Power_Max_H,
LBAD_Total_Power_Max_L,
LBAD_Total_Power_Min_H,
LBAD_Total_Power_Min_L,
LBADOK_NG,
WeldingOK_NG = 0xAE,
}
}
}