# 작업일지 — 2026-06-24 ## 각도(D70510) 기반 Laser 발진 Offset 분기 구현 - **배경**: D70510(카메라 헤드 각도, Head_Theta_Position)에 따라 Laser 발진 위치가 달라지는데, 기존엔 단일 Cell center offset 하나만 적용해 각도 변화 시 위치가 어긋남. → 각도에 따라 Front/Down 두 벌의 offset을 자동 선택 적용하도록 변경. - **선택 로직**: `thetaDeg = D70510 / HeadThetaPlcScale` vs `avg = (Front angle + Down angle)/2`. - `thetaDeg > avg` → **Down offset**, 이하 → **Front offset** 적용. - PLC 미연결/미활성으로 각도 못 읽으면 **Front offset** 적용(fallback) + 경고 로그. - **적용 범위**: 자동(`SeqAutoRunPTOP.SetUploadWeldingList_SeqParams`)·수동(`SeqComponentTeachingRun.SetUploadWeldingList_SeqParams`) 발진 모두. 발진 offset = `선택 Front/Down offset + 비전 offset(_InitParam.CellCenterOffset)` — 기존 SystemParameter 단일 offset을 **대체**. - **변경 파일**: - `Settings/LaserInterlockSetting.cs`: `HeadThetaHorizontal/Vertical` → `HeadThetaFront/Down` (DisplayName "Front/Down Angle (deg)") - `WeldingCommon/Settings/SystemParameter.cs`: `CellPosMeasureCenterOffsetX/Y`(2개) → `FrontOffsetX/Y` + `DownOffsetX/Y`(4개) - `Sequences/LaserAngleOffsetSelector.cs`(신규): 각도 비교 → offset 선택 + 로그 헬퍼 - `Sequences/SeqAutoRunPTOP.cs` / `Sequences/Manual/SeqComponentTeachingRun.cs`: 헬퍼 호출로 offset 대체. (자동 인터락 참조·로그 라벨도 Horizontal/Vertical → Front/Down) - `ILSOS_PrismaticRD_PTOP.csproj`: 신규 헬퍼 Compile Include 등록 - **LOG**: 발진 시 Front/Down angle, Front/Down offset(x,y), 선택 결과를 한 줄로 기록. - **검증**: Debug|x64 컴파일 통과. sub agent 점검 완료(Critical 없음, 옛 이름 잔존 참조 0건, 공유 모듈 부작용 없음). - **⚠ 배포 전 주의**: 설정 클래스 프로퍼티명 rename으로 **기존 저장 설정값이 자동 이관되지 않음**(Front/Down offset·angle 기본값으로 리셋). 현장 적용 전 기존 보정값을 신규 Front/Down 필드에 **수동 재입력** 필요.