LGES-OC5-PtoP-Welder/Doc/인수인계/260903_파워캘_3000W오적용_레시피환산.md
NohDoyeon241104 a3238cc2d6 docs: 인수인계 산출물 일괄 커밋 (260903~260916)
그동안 미추적으로 쌓여 있던 인수인계 문서를 정리해 올린다.

260903 Door 인터락 현장검증 가이드 / 파워캘 3000W 오적용 환산

260907 Arc 출사 파라미터 시각화 / LaserFrequency 단위계통 / NRE 위험구간 점검 / 레시피화면 사용설명서

260915 레시피화면 작업매뉴얼

260916 PTOP 프로그램 사용설명서 / 자동운전 전환 사전점검 현장용

작업 중 임시본(_backup)은 제외했다.
2026-09-16 17:10:50 +09:00

13 KiB
Raw Blame History

파워캘 CSV 3000W 오적용 및 레시피 Power 환산 (2026-09-03)

목적 : 2000W 발진기에 3000W 기준 파워캘 CSV가 적용되어 있어 레시피 지령값의 2/3만 실제 출사되던 건의 원인·근거·환산값을 남긴다.

  • 대상 설비 : PtoP 각형화 단동 용접기 (유니셀)
  • 관련 문서 : Doc/인수인계/2026_08_28_레이저발진기교체_및_진행현황.md §2.4
  • 파라미터 원본 : docs/파라미터PTOP_260903.xlsx 시트 260903

표기 규칙 (기존 인수인계 문서와 동일)

표기 의미
🟩 소스확인 PC 소스/설정 파일에서 직접 대조해 확인한 사실
🟦 현장기록 현장 로그·시험 기록에 남아 있는 값
🟨 미확보 아직 확인되지 않음. 이어받는 사람이 채워야 할 항목

1. 한 줄 요약

발진기는 2000W/2000W (Core/Ring, 싱글모드) 인데 파워캘 CSV가 만점 3000W 짜리로 물려 있어, 레시피에 적힌 W의 2/3만 실제로 출사되고 있었다. CSV를 2000W 기준으로 재작성했으므로 레시피의 Power #1 / #2 를 × 2/3 으로 환산해야 종전과 같은 실출력이 유지된다.

레시피 1500W  →  지령 50%  →  DA 5.0V  →  2000W × 50% = 1000W 출사

2. 원인 🟩

2.1 레시피 W 는 발진기로 그대로 가지 않는다

SeqUploadWeldingList.cs:639-671 — 자동 용접 시 파워를 싣는 경로.

레시피 LaserPower1/2 (W)
  → CalibrateWattToPercent(W)        ← 파워캘 CSV 조회
  → percentLaser1/2 (0~100)
  → WriteDA(DA1/DA2, percent)        ← ×40.95 → 12bit DAC → 0~10V
  → 발진기 아날로그 입력 = 자기 정격의 그 %

CSV의 만점이 곧 "설비가 믿고 있는 발진기 정격" 이다. MaxCenterPower / MaxRingPower 도 레이저 Config 가 아니라 CSV 마지막 행에서 읽는다 (LaserPowerCalParam.cs:70-71). 발진기를 바꿔도 CSV 를 안 바꾸면 소프트웨어는 옛 정격으로 계산한다.

2.2 실제로 참조되는 열

현장은 로그상 Normal Models:: 분기(TruFiberType 미지정)를 탄다. 이 분기의 CalibrateWattToPercent 가 보는 열은 두 개뿐이다.

열 이름 용도
0 Index (%) 반환값 — 그대로 WriteDA 지령
1 DesiredPower 이 분기에선 미사용
2 CalibratedPower 조회 키 — 레시피 W 를 여기서 찾음
3 volt 이 분기에선 미사용

TruFiberType 을 TruFiberP / CalPercentToMeasuredVoltage 로 바꾸면 3열(전압)을 쓰는 다른 분기로 넘어간다. CSV 를 새로 만들 때는 어느 분기를 타는지부터 확인할 것.


3. 근거

3.1 로그 실측 🟦

Original Power → Calibrated Percent 가 전부 정확히 W ÷ 3000 × 100 이다.

로그 지령 W Calibrated % 검산
Aurora_20260825.log 150 5.000 150/3000
Aurora_20260826.log 500 16.667 500/3000
Aurora_20260826.log 800 26.667 800/3000
Aurora_20260826.log 600 20.000 600/3000
Aurora_20260826.log 1100 36.667 1100/3000

Center · Ring 양쪽 모두 3000 으로 나뉘었다.

3.2 CSV 대조 🟩

파일 관계 성격
docs/3000W_CenterPower.csv · 3000W_RingPower.csv (구) 파워 = 30 × Index 선형, 보정 없음 (CalibratedPower = DesiredPower)
docs/2000W_CenterPower.csv · 2000W_RingPower.csv (신) 파워 = 20 × Index 선형, 보정 없음

양쪽 다 선형이므로 환산계수 2000/3000 = 2/3 는 근사가 아니라 정확값이다.

volt 열이 Center/Ring 미세하게 다르지만(50% 에서 5.0 vs 4.8) Normal Models 분기는 이 열을 쓰지 않는다.

3.3 ⭐ 교차검증 — 「출력을 올려야 했다」의 정체 🟦

기존 인수인계 문서 §2.4 에 발진기 교체 후 기존 출력으로는 접합이 되지 않아 출력을 올렸다는 기록이 있다. 이번 건으로 계산해 보면 실제 출사 파워는 거의 그대로였다.

12_1page (CC Anode) 레시피 값 당시 CSV 실제 출사 결과
교체 전 (3000W 발진기) 450 3000 (정상) 450W 접합 O
교체 직후 450 3000 (오적용) 300W 접합 X
탐색 500 / 550 3000 (오적용) 333 / 367W 접합 X
최종 적용 650 3000 (오적용) 433W 접합 O

즉 접합에 필요한 실출력은 계속 430~450W 였고, 레시피 숫자를 450 → 650 으로 올린 것은 공정상 필요가 아니라 CSV 오적용을 사람이 손으로 보정한 것이었다.

× 2/3 환산으로 650 → 433 이 되는데, 이는 교체 전 정상값 450 과 사실상 같은 실출력이다. (싱글모드 전환으로 파워밀도가 높아져 약간 낮은 값에서 접합되는 것도 방향이 맞다.)

12_2page · 12_3page 는 Ramping 변경(50%→70%)과 싱글모드 효과가 섞여 있어 이만큼 깔끔하게 떨어지지 않는다.


4. 환산

4.1 규칙

새 레시피 W = 기존 레시피 W × 2/3

4.2 환산 대상 / 제외 🟩

항목 환산 이유
Power #1 (Core, W) × 2/3 절대 W → 지령 % 로 변환되는 값
Power #2 (Ring, W) × 2/3 Ring 표도 만점 3000 선형이었음
Ramping Start/End Power 그대로 % 단위. percentLaser1 × RampingStartPower / 100 이라 자동 추종 (SeqUploadWeldingList.cs:1319-1323)
Laser Duty 그대로 %
Draw/Jump speed, 각종 Delay 그대로 파워 무관
Frequency / Pulse Duration 그대로 파워 무관
Wobbel · Zigzag 그대로 파워 무관
Center/Ring 비율 자동 코드가 round(100×P1/(P1+P2)) 로 매번 계산
레이저 프로그램 워드 IW03/IW04 자동 Power #1/#2 에서 파생 (SeqWaitWeldOrChangePage.cs:205-223)

4.3 환산표 — 파라미터PTOP_260903.xlsx 시트 260903 기준 🟦

레시피 No Page 항목 기존 (W) 지령 % 변경 (W)
cc welding 12 1 (직렬 음) Power #1 650 21.67 433
Power #2 1050 35.00 700
2 (sensing) Power #1 550 18.33 367
Power #2 1050 35.00 700
3 (직렬 양) Power #1 600 20.00 400
Power #2 1200 40.00 800
U-Frame_pre 21 1~6 Power #1 700 23.33 467
Power #2 900 30.00 600
U-Frame_Back_pre 22 1~6 Power #1 700 23.33 467
Power #2 900 30.00 600
U-Frame_Main 23 1~6 Power #1 700 23.33 467
Power #2 900 30.00 600
U-Frame_Back_Main 24 1~6 Power #1 700 23.33 467
Power #2 900 30.00 600
Top_Frame 31 1~2 Power #1 700 23.33 467
Power #2 900 30.00 600
Top_Frame 32 1~2 Power #1 700 23.33 467
Power #2 900 30.00 600

고유값 7개 — 550→367, 600→400, 650→433, 700→467, 900→600, 1050→700, 1200→800

4.4 검산

지령 % 불변 — 환산 목적이 "기존에 실제로 나가던 파워 재현"이므로 지령 % 와 DA 전압은 변하지 않아야 한다.

기존 : 700W ÷ 30 = 23.33%  →  DA 2.33V  →  2000W × 23.33% = 467W
신규 : 467W ÷ 20 = 23.35%  →  DA 2.33V  →  2000W × 23.35% = 467W   ✅

Center/Ring 비율 유지 — 반올림 후에도 전부 동일하다.

기존 신규
cc 1page (650/1050) 38 38 (433/700)
cc 2page (550/1050) 34 34 (367/700)
cc 3page (600/1200) 33 33 (400/800)
U-Frame · Top (700/900) 44 44 (467/600)

정수 반올림 오차는 최대 0.08 % (433 vs 433.33) 로 무시 가능하다.


5. ⚠ 주의

5.1 환산 전에 신 CSV 만 적용된 상태는 위험하다 🟩

기존 레시피 값 신 CSV 에서의 결과
2000 이하 의도의 1.5배 과출력
2000 초과 CalibrateWattToPercent 가 구간을 못 찾아 0 반환 → 0V, 무출력

같은 레시피 안에서 과출력 라인과 무출력 라인이 섞인다. 환산은 한 번에 끝낼 것. (환산 후에는 모든 값이 2000 이하가 되어 이 함정은 사라진다.)

5.2 지령 상한 클램프가 없다 🟩

percentLaser1/2 는 WriteDA 로 가기 전 상한 검사를 받지 않는다 (SeqUploadWeldingList.cs:665-671). 램핑 구간만 <= 100 ? … : 100 으로 막혀 있다.

따라서 열 구성이 어긋난 CSV(예: 0열에 Index % 대신 W 가 들어간 파일)를 물리면 WriteDA(600) → 600 × 40.95 = 24570 → DAC 풀스케일 부근 → 정격 전출력이 나간다. CSV 를 교체할 때는 0열이 0~100 인지 반드시 확인할 것.

5.3 환산은 W 를 복원할 뿐, 용접 결과를 복원하지 않는다 🟦

듀얼모드(3000W/3000W) → 싱글모드(2000W/2000W) 전환이라 빔 품질(BPP/M²)이 달라졌다. 같은 W 라도 집광 스팟이 작아 파워밀도(W/mm²)가 훨씬 높다.

환산으로 해결 남는 것
실제 출사 W ✅ 종전과 동일 복원 —
용입 깊이 ❌ 싱글모드라 더 깊음
비드 폭 ❌ 싱글모드라 더 좁음

현장 기록에도 싱글모드는 "깊게 쏨 / 얇게 나옴" 으로 적혀 있다. 환산값은 재튜닝의 출발점이지 최종값이 아니다. 실물 비드 기준 재검증이 필요하다.


6. 추적성 — 어떤 CSV 가 물렸는지 확인하는 방법 🟩

소프트웨어는 적용된 CSV 의 경로도 값도 로그에 남기지 않는다. 남는 것은 아래뿐이다.

방법 얻는 것
_config_setting/LaserPowerCalParam.json 현재 물린 Center/Ring CSV 경로 (이력 없음, 덮어쓰기)
로그 AURORA_SYS_SETTING_CHANGED :: Param[LaserPowerCalParam] 설정을 바꾼 시점 (경로는 안 나옴)
로그 Original Power1 : X … Calibrated Percent1 : Y X ÷ Y × 100 = 그 시점 CSV 만점 ← 가장 확실한 역산 수단
CSV 파일 수정일시 경로 그대로 두고 내용만 고친 경우의 유일한 단서

출사 시마다 Initialize() 가 CSV 를 다시 읽으므로(UCScannerLaserControlViewModel.cs:332, :422, SeqUploadWeldingList.cs:154), 앱 재기동 없이 파일 내용만 바꿔도 즉시 반영된다.

이력 확인 결과 🟦

로그 Param[LaserPowerCalParam] 변경
Aurora_20260825.log 0 건
Aurora_20260826.log 0 건
Aurora_20260902.log 1 건 — 11:44:32 From[USER_via_UI]

2026-09-02 11:44:32 이 CSV 경로 교체 시점이고, 이어진 13:45~15:03 의 Laser On 58 회가 2000W 재캘리브레이션 작업이다.


7. 이어받는 사람에게

  • 🟨 발진기 교체 시에는 CSV 재작성과 레시피 W 환산을 반드시 한 세트로 처리할 것. 둘 중 하나만 하면 이번과 같이 조용히 1.5배 또는 2/3 로 어긋난다.
  • 🟨 파워 이상 신고가 오면 §6 의 Original Power1 / Calibrated Percent1 비로 CSV 만점부터 역산할 것.
  • 🟨 §5.3 의 싱글모드 재검증은 미완이다. 환산 적용 후 비드 단면 확인 필요.
  • 🟨 CSV 경로·값을 로그에 남기는 계측을 추가하면 이런 추적이 훨씬 쉬워진다. 출사 시작 로그(UCScannerLaserControlViewModel.cs:361, :452)에 CSV 경로 + Max 파워 + 산출된 powerVolt1/2 를 붙이는 것만으로 충분하다. 미적용.

8. 참고 파일 위치

구분 경로
파라미터 원본 docs/파라미터PTOP_260903.xlsx 시트 260903, 환산 이력 시트 260903_2000W환산
구 파워캘 CSV docs/3000W_CenterPower.csv · docs/3000W_RingPower.csv
신 파워캘 CSV docs/2000W_CenterPower.csv · docs/2000W_RingPower.csv
현장 로그 docs/Aurora_20260825.log · 20260826 · 20260902
파워캘 설정 클래스 WeldingComponents/WeldingCommon/Settings/LaserPowerCalParam.cs
자동 용접 파워 적용부 WeldingComponents/WeldingCommon/Sequences/Main/SeqUploadWeldingList.cs:639-671
수동 출사 파워 적용부 WeldingComponents/WeldingCommon/Views/Manual/Scanner/UCScannerLaserControlViewModel.cs:329-345, :419-436
DA 전압 변환 AuroraDevices/AuroraLaserScanner/ScannerRTC5.cs:342-351
발진기 교체 경위 Doc/인수인계/2026_08_28_레이저발진기교체_및_진행현황.md §2.4

변경 이력

일자 작성 내용
2026-09-03 노도연 최초 작성. 3000W CSV 오적용 원인·근거·환산표·주의사항 정리. 기존 인수인계 §2.4 「출력을 올려야 했다」가 CSV 오적용 보정이었음을 교차검증