NohDoyeon241104 1fbe7fa98f feat: DA1/DA2 Voltage 표시를 No Laser 토글에 연동(조건부 표시)
DA1/DA2 Voltage UniformGrid에 Visibility 바인딩(IsNoLaser, convTrueVisible) 추가.
Time이 Use Spot Time 체크 시 표시되듯, No Laser 체크 시에만 전압 표시.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 14:20:26 +09:00

132 lines
9.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 작업일지 — 2026-06-18
## 09:22
### 조명 컨트롤러 연결 완료 (아침)
- 조명 컨트롤러 연결을 완료했다.
**중요 사항 정리:**
- 조명 컨트롤러는 모델의 사양(스펙) 파라미터를 알고 있어야 한다.
- 사용 중인 모델은 EROOM E-MINI CONTROLLER 인데, AURORA에서 해당 모델 타입을 제공 중이라 그대로 활용했다.
- DEVICE에서 LIGHT1 과 Light 에 대한 파라미터 세팅을 동일하게 맞춰주고, 채널도 맞춰줘야 한다.
- 통신 파라미터: 정지 비트(stop bit), 패리티 비트(parity bit), 시작 비트(start bit), Baud 값, 그리고 어떤 COM 포트에 꽂혔는지만 정확히 알면 된다.
- **막혔던 부분 (해결):** 장치 관리자에서 COM1 포트 설정은 맞췄지만, 고급 설정에 들어가면 버퍼(buffer) 체크가 되어 있는 항목이 있다. 이걸 꼭 **해제**해줘야 리모트 모드로 조명 컨트롤러에 커맨드를 날릴 수 있다.
## 09:32
### 현장 update 파일 정리
- 어제(2026-06-17) 수정한 소스 파일들을 현장 소스에 옮기기 위해 `docs/현장update파일/` 폴더를 만들어 복사해두었다.
- 포함 파일:
- `SequenceSetting.cs` — Axis Position Interlock 파라미터 4개 추가 (수직/수평 기준값·허용오차, 커밋 `9543238`)
- `UCScannerObjectTeachingControlBoxViewModel.cs` — Laser Ready 판정을 `DI(9)` → `DI(12) && DI(24)` 동시 조건으로 변경 (커밋 `9aa1b2a`)
- `README.md` — 각 파일의 원본 위치 / 변경 부분(diff) / 적용 체크리스트 정리
### 현장 PC 원격 데스크톱 접속 가능하게 변경
- 금일 현장 PC가 방화벽 때문에 원격 데스크톱이 안 됐는데, **김남오 대리님**께서 세팅하신 뒤 PC를 재부팅해서 원격 접속이 가능하도록 변경해주셨다.
## 09:36
### 현장 소스 반영(옮기기) 완료
- `docs/현장update파일/`에 정리한 변경 내용을 현장 소스에 옮기기 완료했다.
- `SequenceSetting.cs` — Axis Position Interlock 파라미터 4개 추가 반영
- `UCScannerObjectTeachingControlBoxViewModel.cs` — Laser Ready 판정 `DI(12) && DI(24)` 변경 반영
## 10:02
### SeqScoutNormal moveSleepTime 50→100ms 변경
- `SeqScoutNormal.cs`의 Scanner Jump 후 `moveSleepTime`을 50 → 100ms로 변경했다.
- **이유:** 현장 PTOP의 경우 어제 Scout 이미지가 속도 때문에 제대로 안 됐는데, 현장 PTOP 상황에서 ScoutNormal의 FOV 거리가 멀어서 캡처가 흔들리는 부분 때문에 50에서 100으로 상향함.
- 커밋 `81fdf01`로 커밋·푸시 완료.
## 10:18
### [요청] 레이저 미발진 상태로 Analog만 살려 Power Cal 파일 생성 가능 여부
- **목적:** Laser Voltage를 1V 줬을 때 실제 몇 W가 나오는지 측정하는 **캘리브레이션(Cal) 파일**을 만들고 싶다.
- **핵심 요청:** 캘 파일을 만드는 동안 **레이저는 실제로 발진(발사)시키지 않고**, **아날로그 신호만 살려서** RTC5의 기록(로그/데이터)은 그대로 저장되도록 할 수 있는가?
- **상세:**
- 레시피(또는 메뉴얼) 화면 → **Manual Laser Power Control** 영역에서 레이저를 쏠지 안 쏠지 제어함.
- 보통은 **레이저 컨트롤러 IO를 살리지 않으면** 레이저가 실제로 나가지 않는다.
- 이때 **아날로그 신호만 활성화**해서, 레이저는 안 나가되 RTC5가 출력 기록은 정상적으로 남기도록(저장되도록) 만들 수 있는지 확인 필요.
- **정리:** Laser 발진 IO는 비활성(레이저 OFF) + Analog 출력은 활성 → RTC5 기록은 정상 저장. 이 구성이 가능한지 검토 요청.
## 11:27
### PTOP 네임스페이스/클래스 마이그레이션 적용 (Scanner → PTOP) + 머신 PTOP 단독화
- 프로젝트명만 PTOP로 바꾸고 Sequence만 손봤던 상태에서, `ILSOS_PrismaticScanner` 네임스페이스/using/클래스명/파일명이 남아있던 것을 참고본(`D:\Git\LGES-OC5-PtoP-Welder_정리후(빌드완)`)과 동일하게 정리.
- 분석 문서 기준으로 진행: `docs/분석/2026/06/18/111604_ptop_namespace_migration_guide.md`
- **적용 내역:**
- 파일 7개 git mv 리네임 (AlarmCode/AlarmManager/PAIX/EquipmentSpecificModel → _PTOP, RMSHandlerForScanner→ForPTOP, SettingUploadDataListForScanner→ForPTOP, SeqAutoRunPrismaticScanner→SeqAutoRunPrismatic)
- namespace `ILSOS_PrismaticScanner` → `ILSOS_PrismaticRD_PTOP` (전 .cs/.xaml)
- using 동일 변경, 클래스명 참조 전파 (PLCControllerPrismaticScanner→PLCControllerPTOP 등)
- ⚠ **PAIX_PrismaticScanner는 머신 참조만 PAIX_PTOP로 변경, WeldingCommon 공유 참조(SeqTestRun.cs)는 보존** — 빌드 깨짐 1순위 함정 회피
- XAML 3종(x:Class/clr-namespace/code-behind) 일치, csproj Compile Include 7줄 갱신
- csproj 빌드 경로 TDC→PTOP (`_out_prismatic_rd_ptop`)
- sln에서 Scanner/Gun/CleanLaser 제거, 해당 머신 소스 폴더 삭제, 비-PTOP `_out` 아티팩트 정리 → **Machines에 PTOP만 남김** (참고본과 동일 구조)
- **주의:** 이 환경에선 실제 MSBuild 검증 불가 → VS에서 Clean→Rebuild 권장(obj 비워둠).
## 11:34
### Manual Laser Power Control — Watt 입력 GroupBox 숨김(Collapsed)
- 마이그레이션 후 빌드 정상 확인 완료.
- `UCScannerLaserControl.xaml`(WeldingCommon)의 Manual Laser Power Control 2영역(%, W) 중 **W 입력 영역은 주로 안 쓰므로** Grid.Row="1"(Watt 기준) GroupBox에 `Visibility="Collapsed"` 추가로 숨김 처리.
- Percent(%) 영역만 노출, 공간도 미차지. ViewModel/바인딩(`CMD_LaserShotOnWatt` 등)은 변경 없음.
- 관련 분석: `docs/분석/2026/06/18/102847_manual_laser_power_control_groupbox_analysis.md`
- 커밋 `ad6cf68`로 커밋·푸시 완료.
## 12:12
### NoLaser 체크 — 레이저 컨트롤러(IO BIT9/13) 안 켜고 Laser On 가능
- 발진(lasing)을 막는 실제 지점은 `LaserSignalOn`(RTC5 게이트)이 아니라 **IO Control DO9(`CoreLaser_Control`)/DO13(`RingLaser_Control`)** 를 true로 주는 부분이었음.
- 위치: `UCScannerObjectTeachingControlBoxViewModel.PerformCmdLaserReadyCheck`(Laser Control GroupBox의 `Laser Ready` 버튼).
- 처음엔 `UCScannerLaserControl`에 Analog Only(IsAnalogOnly)로 `LaserSignalOn` 가드를 넣었으나, 실제 IO는 다른 소스(ObjectTeachingControlBox)라 **그 변경은 원복**하고(Watt 숨김은 유지), 정확한 지점에 다시 구현.
- 구현: ViewModel에 `IsNoLaser` 추가(기본 false). `Laser Ready` 버튼이 DO9/13을 켜는 분기에서 `ctrlOn = !IsNoLaser`로 적용 → **IsNoLaser=true면 DO9/13을 true로 안 켜고 false 유지** → 레이저 컨트롤러 OFF 상태로 Laser On 가능(Cal/전압 측정용).
- XAML: Laser Control GroupBox에 `No Laser (전압만, 발진 안 함)` 체크박스 추가.
- 디바이스 레이어(Scanner/RTC5) 무변경, IO 비트 9/13만 제어.
- 커밋·푸시 진행.
## 12:20
### Laser Ready 판정 DI 변경 — IO 결선 변경(12&24 → 11&15)
- IO 결선을 바꿔서, 레시피의 Laser Ready 판정 입력을 `ReadDI(12) && ReadDI(24)` → **`ReadDI(11) && ReadDI(15)`** 로 수정.
- 위치: `UCScannerObjectTeachingControlBoxViewModel`의 `OnMonitoring` Laser Ready 판정부.
- 변경된 결선에 맞춘 단순 입력 번호 교체(로직 동일).
## 13:55
### RTC5 AnalogOut 전압 Readback 표시 (Laser Shot Control)
- `docs/RTC5_AnalogOut_Readback_수정가이드.md`(외부 작성 구현 명세)에 맞춰 RTC5 보드의 AnalogOut(파워 지령 전압) readback 기능 구현. 가이드 파일은 적용 후 삭제.
- **Device 계층**: `ScannerObj`에 `abstract int GetAnalogOut(uint portNo)` 추가 → `ScannerRTC5`/`ScannerRTC6`(`n_get_value(signal=portNo+32)`, AnalogOut1=33/AnalogOut2=34)/`ScannerSimul`(더미 0) override + `Scanner` 파사드(미활성 시 -1).
- **ViewModel**(`UCScannerLaserControlViewModel`): `AnalogOut1Voltage`/`AnalogOut2Voltage` 속성 + `ReadbackAnalogOut()`(raw/4095×10 [V]) 추가, Laser On 직접 분기(No Use Spot Time)의 WriteDA 직후·출사 전 호출.
- **XAML**(`UCScannerLaserControl.xaml`): Control Setting(Percent 영역)에 `DA1 Voltage`/`DA2 Voltage` [V] 읽기전용 표시 추가.
- 표시 대상은 Power Calibration(dbVoltage)이 아니라 **ScannerLaserControl 화면**으로 확정(요청). LaserSignalOn 발사 동작은 변경 없음(readback만 추가).
- AuroraDevices 변경이라 VS Rebuild로 빌드 확인 예정(abstract 추가 → override 3개 모두 구현).
- 관련 분석: `docs/분석/2026/06/18/122432_laser_on_no_emission_analysis.md`
## 14:14
### NoLaser를 Manual(ScannerLaserControl)로 이동 + Recipe NoLaser 제거
- 어제/오늘 Recipe(UCScannerObjectTeachingControlBox)에 만들었던 NoLaser는 **원래 의도가 Manual 화면**이었음 → Recipe에서 **완전 제거**(속성/InitVariable/체크박스/RowDefinition/`PerformCmdLaserReadyCheck`의 `ctrlOn` 원복하여 `WriteDoBit(9/13,true)`로 환원). **DI 11&15 변경은 유지.**
- **Manual**(`UCScannerLaserControlViewModel`): `IsNoLaser` 추가, Laser On 직접 분기(Percent/Watt 두 곳)의 `LaserSignalOn()`을 `if(!IsNoLaser)`로 가드 → 체크 시 발진 없이 전압만 인가.
- **Manual XAML**(`UCScannerLaserControl.xaml`): Use Spot Time 토글과 **같은 ToggleSwitch 디자인**의 `No Laser (전압만)` 토글 추가. Timer Set 영역 배치 = Use Spot Time → Time(체크 시만) → No Laser → DA1/DA2 Voltage 순.
- 이 NoLaser는 RTC5 발진 게이트(`LaserSignalOn`)를 막는 방식이라 **이 화면만으로 자기완결**(DO9/13 별도 화면 불필요). No Use Spot Time + No Laser + Laser On → 전압 readback 표시 + 발진 없음.
## 14:19
### DA1/DA2 Voltage 표시를 No Laser 토글에 연동(조건부 표시)
- DA1/DA2 Voltage UniformGrid에 `Visibility="{Binding IsNoLaser, Converter={StaticResource convTrueVisible}}"` 추가.
- Time이 Use Spot Time 체크 시 표시되는 것과 동일하게, **No Laser 체크(전압만) 시에만 DA1/DA2 Voltage 표시**, Laser Fire(해제) 시 숨김.