LGES-OC5-PtoP-Welder/Doc/인수인계/2026_08_28_레이저발진기교체_및_진행현황.md
NohDoyeon241104 d34fad9edb docs: 인수인계 문서에 PLC 회신 반영 (ISSUE-260826-01)
본접 5Page -> 6Page 미진행(로봇 미이동) 건 - PLC 원인 확정
- PLC 제어 담당 회신: PLC 프로그램상 잘못된 부분 확인, 샘플 테스트 시 수정 반영 예정
- PC 측 신호는 정상 확인 완료 - PC 수정 사항 없음
- 수정 반영 후 5->6 Page 이동 재검증 필요
- 그때까지 현장은 6Page 수동(Manual) 진행

5.3 절을 'PLC 확인 대기' -> 'PLC 협의 항목'으로 바꾸고 해소/미해소 구분
5.4 운용 현황에 6Page 수동 진행 명시
2026-08-28 14:56:15 +09:00

20 KiB

PTOP 단동기 SW — 레이저 발진기 교체 및 진행 현황 (2026-08-28 기준)

목적 : LGES 오창 각형화 단동기 SW 개발/셋업 작업을 다른 담당자가 이어받아 진행할 수 있도록, 2026-08-28 시점의 현황과 그때까지 전달받은 현장 정보를 한 곳에 모은 문서.

  • 프로젝트 : LGES_오창_각형화 단동기 SW 개발 및 셋업 작업
  • 대상 설비 : PtoP 각형화 단동 용접기 (유니셀)
  • SW 프로젝트 : Machines/ILSOS_PrismaticRD_PTOP (솔루션 내 유일한 장비 프로젝트)
  • 기준 커밋 : 2ef276e

표기 규칙 — 근거를 구분해 둔다. 이어받는 사람이 "확인된 것"과 "전달받은 것"을 섞지 않도록.

표기 의미
🟩 소스확인 PC 소스/도면에서 직접 대조해 확인한 사실
🟦 현장기록 현장 시험 기록(엑셀 등)에 남아 있는 값
🟨 미확보 아직 문서화되지 않음. 이어받는 사람이 채워야 할 항목

1. 한 줄 요약

임시 레이저(Core/Ring 2대)로 진행하던 설비에 본 레이저(단일 발진기)가 투입되어, IO 인터페이스가 8채널에서 4채널로 줄었고 PC 소스가 이에 맞춰 정리됐다. 레시피/페이지 번호 체계는 PLC가 지시하는 대로 PC가 따라가는 구조라 PC 소스 변경은 없었다. 현재 현장은 주로 수동 출사로 운용 중이다.

완료 항목 (2026-08-28 기준)

  • ✅ 레이저 발진기 교체 완료
  • ✅ IO 확인 완료 — AJINEXTEK 보드, 본 레이저 기준 DI/DO CSV 생성 및 config 연결
  • ✅ 비전 캘리브레이션 완료
  • ✅ 260828 산출물 3건 갱신 (§4)

바로 알아야 할 3가지

  1. 출사 순서 : Key ON → Remote ON. 순서를 지켜야 번들 Start 가 점등된다 → §2.5
  2. 인터락 판정 : PC 측은 IsLaserReady(DO Laser_REMOTE 되읽기)가 담당 → §2.6
  3. 레시피 복사 주의 : 타 현장 캘판 기준 레시피를 그대로 쓰면 위치가 어긋난다 → §3.4

2. 레이저 발진기 교체

2.1 사양 변경 🟩

근거 : Doc/LGPRI문서/PtoP 각형화 단동 용접기_통신배선자료_PRI_Ver1_20260611.xlsx 시트 레이저 필요 전원

구분 교체 전 (임시) 교체 후 (본 레이저)
레이저 BFMC-3000/3000M (Max) MFMC-2000/2000M (Max)
전원 3상 360-440V, 18kW 3상 360-440V, 10kW
Chiller CWFL-8000FNPTY (TEYU), 8.7kW CWFL-6000FNPTY (TEYU), 9.78kW
구성 Core / Ring 2대 단일 발진기 1대
비고 "제작현장 임시 사용" 본 설비 구성

임시 레이저는 제작 현장에서만 쓰던 것이고, 오창 현장 투입분이 본 레이저다.

2.2 IO 보드 인터페이스 변경 🟩

Core/Ring 2대가 1대로 합쳐지면서 상태 신호 8개 → 4개로 줄었다.

채널 번호의 단일 소스는 소스 코드다. WeldingComponents/WeldingCommon/Devices/Laser/LaserIOControl.cs:62-96

2026-08-28에 통신배선자료 Digital_IO (본 레이저) 시트와 전 채널 대조 완료 — 번호 전부 일치한다. (임시 레이저 시절 도면이 실배선과 DI 기준 +1 어긋났던 전례가 있어 확인한 것이다.)

DI (레이저 → PC)

ch 이름 핀 의미
8 Laser_READY Pin21 Power Supply ON & No error. 출사 가능 조건
9 Laser_ALARM Pin22 ⚠ Active-Low — 정상 시 High, 알람 시 Low. 판정에 ! 필수
10 Laser_EMISSION_ON Pin23 Emission ON. DO Laser_REMOTE 의 에코
11 Laser_MAIN_PWR_STATE Pin24 전원 투입(Key Switch ON) 상태

DI 11 은 도면(엑셀)에 Laser_FIRE 로 적혀 있으나 오기다. 38핀 커넥터 매뉴얼 확인 결과 발진 중 표시가 아니라 전원 투입 상태다. 소스는 정정된 이름을 쓴다.

DO (PC → 레이저)

ch 이름 핀 의미
8 Laser_AC_KEY Pin5,6 쇼트 외부 제어 키스위치. 소스가 쓰지 않는다(전원 투입 계층). 단 운용상 ON 이어야 출사된다 → §2.5
9 Laser_REMOTE Pin7,8 쇼트 ⭐ 발진 ON/OFF 직접 제어. 소스가 쓰는 유일한 DO
10 Laser_GUIDE_BEAM_CONTROL Pin18 가이드 레이저
11 Laser_ALARM_RESET Pin20 ⚠ Water Flow Alarm 전용 리셋. 다른 알람에는 무효

Laser_REMOTE 는 이름과 달리 모드 전환이 아니라 Emission 을 직접 켜고 끈다. 구 Core/Ring_Control 자리다. DI/DO 0~3 은 PLC Interface 용이고 그 외 채널은 미사용이다.

2.3 PC 소스 변경분 🟩

커밋 5be34e6 (2026-08-24) 「본 레이저 단일 발진기 전환 — IO 채널 재정의 및 enum 단일화」

변경 내용
enum 단일화 PAIX_PTOP · SeqAutoRunPTOP 에 중복 정의돼 있던 채널 enum 제거 → LaserIOControl.cs 한 곳만 참조
발진 제어 CoreLaser_Control + RingLaser_Control 2발 → Laser_REMOTE 1발 (SeqAutoRunPTOP.cs:1305 ON / :1328 OFF / :1786 정지 시 OFF)
Ready 판정 Core·Ring AND 판정 → Laser_READY 단독 (LaserIOControl.cs:140-144)
⚠ DO8 충돌 제거 구 eADOAddress.PCLBADReadyStatus = 채널 8 = 본 레이저 Laser_AC_KEY. 그대로 두면 Auto 시작이 레이저 AC 전원 릴레이를 켠다. LBAD 는 미등록 디바이스라 의미도 없어 제거 (SeqAutoRunPTOP.cs:1668-1674)
IO 확인 화면 Device 설정에서도 IO 상태 확인·DO 토글 가능하도록 UCIOInterfaceView 연결 (EquipmentSetup.cs:159-160). 배선 실측용, 제어 로직 변경 없음

원복이 필요하면 소스 곳곳의 260824 이전 원본 주석 블록을 살리고 using static 을 제거하면 된다.

2.4 발진 조건 — 교체 전후 비교 🟦

근거 : Doc/현장자료/TalkFile_12_Laser_param_Shot비교_260825_레이저발진기교체.xlsx 시트 Laser_param_Shot비교_260825

핵심 : 발진기를 바꾸자 기존 출력으로는 접합이 되지 않아 출력을 올려야 했다.

레시피/Page 대상 교체 전 시험 경과 최종 적용
12_1page CC Anode(음극) 450 / 850 → 미접합 500/900·550/950 도 접합 X
600/1000 부터 접합
650 / 1050 (동일 조건 전체 출사)
12_2page SENSING 480/800 ~ 600/1000 탐색 Start Ramping 50% → 70% 로 변경 600 / 1000
12_3page CC Cathode(양극) 600 / 1300 — 600 / 1200

표기는 Core / Ring (W). Ramping 변경이 함께 들어간 점에 유의.

2.5 ⭐ 번들 프로그램(G3 시리즈)과 출사 조건 — 운용 필수 🟦

이 절이 현장 운용에서 가장 자주 걸리는 부분이다. 순서를 틀리면 출사가 안 된다.

전원 투입 순서 — 반드시 지킬 것

① Key ON  →  ② Remote ON

이 순서를 지켜야 번들 프로그램의 Start 가 점등된다.

★ 발진기 장비의 Start 버튼은 항상 켜둘 것. (번들 화면 상단 우측 Start 버튼이 점등 상태여야 한다)

레이저 업체 안내 — 출사에 관여하는 신호

신호 비고
PWM 1, 2 (24V) 미사용
Enable (24V)
AL 아날로그 신호
번들 상단 우측 Start 버튼 점등 필요

당사 운용 방식 (현장 확인 완료)

Start 점등  +  DO Laser_AC_KEY ON  +  DO Laser_REMOTE ON
        → 출사 시 DI Laser_EMISSION_ON 점등되며 실제 출사

Laser_AC_KEY(DO 8)는 소스가 건드리지 않는다. 전원 투입 계층이고, 반 하드와이어 여부가 아직 미확정이기 때문이다. PC 에서 조작해야 하면 Device > IODevice 또는 Monitoring > IO Interface 화면에서 DO 행을 더블클릭해 토글한다. (이 화면을 Device 설정에 붙인 이유가 바로 이 배선 실측·조작 때문이다.)

2.6 ⭐ IsLaserReady — PC 측 인터락 판정 기준 🟩

PC 측에서 발진 인터락을 담당하는 것은 IsLaserReady 다. 위치 : WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBoxViewModel.cs:316

2026-08-26 협의(이정인 선임)로 DO Laser_REMOTE 를 되읽는 방식으로 확정했다. 커밋 2ef276e.

IsLaserReady = _IODevice.ReadDO((int)ePrismaticDOAddress.Laser_REMOTE);

왜 다른 신호를 쓰지 않았나 (소스 주석 :305-314 근거)

후보 채택하지 않은 이유
DI Laser_READY (Pin21) "Power Supply ON & No error" 라 전원만 들어오면 상시 High. 버튼에 반응하지 않고, 발진 차단 인터락(:476)도 무력해진다 (현장 확인 260824)
DI Laser_EMISSION_ON 출사 시점에만 점등되어 인터락 판정에 부적합
DO Laser_REMOTE ✅ 버튼이 토글하는 대상과 동일한 비트 → 조작과 표시가 1:1

Laser Ready 버튼 동작

버튼(CMD_LaserReadyCheck)은 현재 DO 를 읽어 반전한다 (:661-662).

종전에는 VM 이 "다음에 쓸 값"(toggleIO)을 기억하는 방식이었는데, SeqAutoRunPTOP 가 같은 DO 를 쓰면서 그 필드를 갱신하지 않아 실제 DO 와 어긋났다. 그래서 버튼을 두 번 눌러야 반응했다 (현장 확인 260826). 읽어서 반전하면 누가 중간에 건드려도 1회 입력에 정확히 반영된다.

2.7 IO 보드 구성 🟩🟦

  • 보드 : AJINEXTEK 확인
  • 본 레이저 기준으로 DI/DO 정의 파일(CSV)을 새로 생성 → config 에 연결 (IO 화면의 Description 은 이 CSV 에서 읽어온다)
  • EquipmentSetup.cs 에 IO 보드 View 추가 → Device 설정에서 DI/DO 확인·토글 가능
    • 수정 파일 : Machines/ILSOS_PrismaticRD_PTOP/EquipmentSetup.cs
    • IODevice 등록부에 settingUIFactory 인자 추가 (:159-160)
  • 소스 변경 6개 파일 (임시레이저 채널 하드코딩 구간 포함)
  • 변경 구간은 주석으로 이력 보존 — 260824 이전 원본, 260826 이전 원본 마커로 검색하면 원복 지점을 찾을 수 있다

2.8 Laser 디바이스는 현재 Sim 처리 🟦

GetLaserReady() 가 항상 true 를 반환하는 상태다. 실제 인터락은 §2.6 의 IsLaserReady(DO 되읽기)가 담당하므로 혼동하지 말 것.

참고 : SeqAutoRunPTOP.LaserReadyResponse()(:1089-1094)도 무조건 true 를 돌려주는 no-op 이며 호출부도 없다.


3. 레시피 / 페이지 체계

3.1 구조 — PC 는 PLC 지시를 따라갈 뿐이다 🟩

레시피 번호와 페이지 순서는 PLC 가 전부 지시한다. PC 소스에 하드코딩된 번호는 없다.

PLC D70502 (RECIPE_NO) → PC: Recipes() 에서 .Id 일치 항목을 찾아 ActivateRecipe
PLC D70501 (PAGE_NO)   → PC: Model.Layers[PageNo-1] 를 용접 대상 레이어로 선택
PC  D70002 / D70001    → 읽은 값을 그대로 에코. PLC 는 이 에코가 자기 값과 같아지는지 확인

SeqAutoRunPTOP.cs:526(레시피 조회) · :1009(페이지 인덱스) · :1110(레이어 선택)

따라서 레시피 번호가 바뀌거나 페이지 순서가 바뀌어도 PC 소스는 고칠 것이 없다. 변경은 PLC 시퀀스와 레시피 데이터(운용) 쪽 사안이다.

3.2 번호 변경 이력 🟦

기준 문서 : Doc/LGPRI문서/유니셀 PtoP 단동기 Laser Interface_260730_레시피NUM변경.xlsx (PLC 협의 완료본) 시트 Recipe Number _renewal_260730

  • 동탄 현장의 11번 레시피가 오창에서 12번 으로 변경됨
  • 12번은 페이지가 3개이며 사용 순서는 2 → 1 → 3
    • 2page = 센싱플레이트 / 1page = 음극(Anode) / 3page = 양극(Cathode)
  • 동탄에서는 11레시피 2페이지를 쏘던 것을, 오창에서는 12레시피 3페이지를 쏘는 것으로 변경

3.3 레시피 구성 🟦

시트 오창_Recipe별 260805 기준.

No 레시피명 Page 용도
12 CC_Welding_Renewal 3 CC & 센싱플레이트
21 U-Frame_Pre_Welding 6 U-Frame 장변 가접(Pre)
22 U-Frame_Pre_Back_Welding 6 U-Frame 장변 가접 (Back)
23 U-Frame_Welding 6 U-Frame 장변 본접
24 U-Frame_Back_Welding 6 U-Frame 장변 본접 (Back)
31 Top-Frame_Welding 2 [수직] Top Welding
32 Bottom-Frame_Welding 2 [수직] Bottom Welding

Line 수 : 21/22 는 1·6page 가 13개, 2~5page 가 7개. 23/24 는 페이지당 2개. 소요 시간 🟦 : 13 line ≈ 0.54s, 7 line ≈ 0.24s.

3.4 ⚠ 캘리브레이션 판 이력 주의 🟦

시트 Laser_param_Shot비교_260731_1차 R20 기록.

21레시피 6페이지에서 동탄 현장 레시피를 그대로 쓰자 드로잉 위치와 용접 위치가 불일치했다. 원인은 동탄 캘판으로 만든 레시피의 motorPos 격자값이 오창 캘판 기준과 다르기 때문이었다. 오창 현장에서 캘 후 새로 만든 레시피는 정상 동작했다.

다른 현장 레시피를 복사해 올 때는 캘판 기준이 같은지 반드시 확인할 것. 파라미터만 맞다고 되는 문제가 아니다.

3.5 Wobbel 파라미터 의미 🟦

항목 의미 효과
Transversal 진행 방향에 수직인 횡방향 진폭(mm) 용접 폭 확대 — GAP 브리징에 유리
Longitudinal 진행 방향과 나란한 종방향 진폭(mm) 입열 분포·키홀 안정화에 영향

두 성분을 조합하면 원형·무한대 패턴이 된다.


4. 2026-08-28 산출물

Doc/산출물문서/ 에 260828 판을 새로 만들었다. 이전 판(260616/260622/260626)은 수정하지 않고 보존했다.

파일 주요 변경
23. SW 점검 결과_PTOP_UBISAM_260828_(...).xlsx IO List 에 본 레이저 DI/DO 8행 신설(구 Core/Ring 5행 제거) · PC→PLC 블록의 M70515/PLC_WELD_READY_REQ 오기를 M70015/PC_WELD_READY_ACK 로 정정 · Device 시트 레이저 모델 갱신 · Sequence 시트 Core/Ring 표현 및 Scout 서술 현행화 · 이력 5행 추가 · Gantt 를 3~12월로 확장하고 진행률·주말음영·월경계·상태 드롭다운·틀고정·월별그룹화·인쇄설정 적용
27. HMI Manual_UBISAM_260828_PTOP.pptx 15장 → 18장. IO Interface 슬라이드에 본 레이저 채널표와 Device 화면 안내 추가, Device / Setting / Alarm 3장 신설
27. HMI Manual_UBISAM_가접용접_매뉴얼_추가_260828_PTOP.pptx 「수동 출사로 작업하면 AutoRun 시퀀스를 타지 않아 용접 전/후 이미지가 저장되지 않는다」 안내 추가

25~26. 셋팅 기준서(SOP) 는 LG 원본 양식이 미작성 상태(협력사명·날짜 미기입, "예시(자체 작성 필요)" 플레이스홀더)이고 내용 대부분이 기구·전장 셋팅이라 이번 SW 변경분과 접점이 없어 대상에서 제외했다.

⚠ HMI 매뉴얼 신규 3장은 플레이스홀더다

Device / Setting / Alarm 화면은 Aurora.exe(Aurora.View)에 컴파일되어 있어 repo 에 소스 XAML 이 없다. 따라서 화면 도식을 만들 수 없어, "실행 화면 캡처 대기" 표식 + 소스로 확인된 구성 항목만 그려 넣었다.

실행 화면을 캡처해 이미지 도형만 교체하면 완성된다. 콜아웃 번호와 설명문은 소스 기준으로 이미 작성돼 있다. 단, Device 화면의 핵심 내용인 IO 설정 UI(UCIOInterfaceView)는 소스가 있어 실제 도식이 들어가 있다.


5. 이어받는 사람이 알아야 할 미결 사항

5.1 소스 결함 3건 (2026-08-28 정적분석, 수정하지 않음) 🟩

현장 운영에 당장 지장이 없어 의도적으로 손대지 않았다. 상세는 docs/분석/2026/08/28/PTOP_시작프로그램_전체구조_분석_260828.md (로컬 전용, git 미추적).

# 내용 영향
A1 SeqAutoRunPTOP.CheckCycleStop(:1379-1394)이 무조건 CheckPageNo 로 되돌아가, 뒤의 SaveResultData·WriteCompletionPLCBit·Complete 3노드가 도달 불가 자동 운전 중 스캐너 파형 미저장 · 생산 카운트 미증가 · PC 출력비트 일괄 리셋 미수행
A2 AlarmManager_PTOP.cs:26 이 SequenceIds.SeqAutoRun(= SeqAutoRunPrismatic)을 정지시킨다. 실제 운전은 SeqAutoRunPTOP 중알람이 떠도 자동 운전이 멈추지 않는다. 원인은 복사 잔재로 확정 — SeqAutoRunPTOP 으로 식별자 1개 교체하면 해결. 단 이때 EquipmentSetup.OnSetAlarm 의 override 누락도 함께 처리할 것
A3 SeqAlarmMonitor.CheckDeviceIO() 첫 줄이 return false(:460-462) Laser IO · LBAD · OCT · LeakSensor · IOBoard 알람 전면 무력화. 걷어내면 TruFiber 캐스팅 NRE 가능성이 함께 노출되므로 본 레이저 DI 재매핑이 선행돼야 함

5.2 진단계측(임시 로그) 원복 대상 🟩

현장 이슈 추적용으로 넣은 임시 코드가 남아 있다. 마커와 원복 방법은 위 분석문서 §13 표에 정리돼 있다.

  • [진단계측 2026-08-26] — SeqAutoRunPTOP.CheckPageNo 핸드셰이크 스냅샷 (커밋 18ca9bc)
  • [진단계측 2026-08-13] — PLCController.Config.cs 모드 3비트 전이 로그

5.3 PLC 협의 항목 🟦

✅ [ISSUE-260826-01] 본접 5Page → 6Page 미진행 (로봇 미이동) — PLC 원인 확정

레시피 23/24 에서 Resume 후 PLC_PAGE_CHANGE_REQ 가 오지 않아 교착되던 건.

항목 내용
PC 측 로그 분석 결과 PC 결함 아님 확정. 신호 정상 확인 완료
PLC 측 회신 PLC 프로그램상 잘못된 부분이 있었던 것으로 확인 (제어 담당 윤효진 주임, 2026-08-28 회신)
조치 추후 샘플 테스트 진행 시 PLC 측에서 수정 반영 예정
재검증 PLC 수정분 반영 후 5→6 Page 이동 동작 재검증 필요
⚠ 그때까지 현장은 해당 6Page 를 수동(Manual)으로 진행

PC 소스는 손댈 것이 없다. 재검증 시 SeqAutoRunPTOP.CheckPageNo 의 진단계측 로그 ([진단계측][CheckPageNo])를 그대로 두면 REQ 수신 시각과 워드 상태가 찍히므로 확인이 쉽다. 검증이 끝나면 그 진단계측은 §5.2 대로 원복할 것.

⬜ Scout 완료 비트 — 미해소

PLC DeviceMap CSV 에는 M70009/M70010(Pre/PostWeld Scout Complete)이 정의돼 있으나 현 소스는 이 비트를 쓰지 않는다. M70509(Scout Enable)를 레벨로 읽어 게이팅만 한다. PLC 가 이 비트를 기다린다면 협의 필요.

5.4 운용 현황 🟦

  • 현재 현장은 주로 수동 출사로 진행 중이다. AutoRun 을 돌리지 않으므로 Scout(용접 전/후 이미지) 경로를 지나가지 않아 전/후 이미지가 저장되지 않는다. 기능 자체는 정상이며 동탄에서 검증된 소스다.
  • 본접 6Page 는 수동(Manual) 진행 중이다 — PLC 프로그램 수정 반영 전까지. §5.3 참조
  • HMI 매뉴얼 Device/Setting/Alarm 3장 캡처 필요 (§4 참조)

6. 참고 파일 위치

구분 경로
IO 배선 기준 Doc/LGPRI문서/PtoP 각형화 단동 용접기_통신배선자료_PRI_Ver1_20260611.xlsx → 시트 Digital_IO (본 레이저), 레이저 필요 전원
PLC 인터페이스 (최신) Doc/LGPRI문서/유니셀 PtoP 단동기 Laser Interface_260730_레시피NUM변경.xlsx
PLC 인터페이스 (구본) Doc/LGPRI문서/유니셀 PtoP 단동기 Laser Interface_260622_변경.xlsx
발진 파라미터 시험 기록 Doc/현장자료/TalkFile_12_Laser_param_Shot비교_260825_레이저발진기교체.xlsx
PLC DeviceMap CSV Doc/ILSOSConfig/PLC_DeviceMap_*.csv
산출물 Doc/산출물문서/
IO 채널 enum (단일 소스) WeldingComponents/WeldingCommon/Devices/Laser/LaserIOControl.cs:62-96
메인 자동운전 시퀀스 Machines/ILSOS_PrismaticRD_PTOP/Sequences/SeqAutoRunPTOP.cs
PLC 주소 enum Machines/ILSOS_PrismaticRD_PTOP/Device/PLC/PLCController.Address.cs

변경 이력

일자 작성 내용
2026-08-28 노도연 최초 작성. 본 레이저 교체·IO 변경·레시피 체계·260828 산출물·미결사항 정리
2026-08-28 노도연 §2.5 번들 G3 출사 조건 / §2.6 IsLaserReady 인터락 기준 / §2.7 IO 보드 구성 / §2.8 Laser Sim 상태 추가. 현장 전달 내용 반영 완료
2026-08-28 노도연 §5.3 [ISSUE-260826-01] PLC 회신 반영 — PLC 프로그램 오류 확정, 샘플 테스트 시 수정 예정. 그때까지 6Page 수동 진행 (§5.4)