- Manual: IsNoLaser 추가, Laser On 직접 분기(Percent/Watt)의 LaserSignalOn을
if(!IsNoLaser)로 가드 → 체크 시 발진 없이 전압만 인가
- Manual XAML: Use Spot Time과 동일 ToggleSwitch 디자인의 'No Laser(전압만)' 토글 추가
(Timer Set: UseSpotTime → Time(체크시) → NoLaser → DA1/DA2 Voltage)
- Recipe(UCScannerObjectTeachingControlBox): NoLaser 완전 제거(원래 의도가 Manual),
PerformCmdLaserReadyCheck를 WriteDoBit(9/13,true)로 환원. DI 11&15 변경은 유지.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ed36f8d에서 분석 문서만 들어가, 실제 구현 소스를 함께 커밋.
- ScannerObj.GetAnalogOut(abstract) + RTC5/RTC6(n_get_value, signal=portNo+32)/Simul(0) + Scanner 파사드(-1)
- UCScannerLaserControlViewModel: AnalogOut1/2Voltage + ReadbackAnalogOut(raw/4095*10 V), Laser On 직접 분기 WriteDA 직후 호출
- UCScannerLaserControl.xaml: Control Setting에 DA1/DA2 Voltage [V] 표시
- 작업일지 13:55 기록
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
IO 결선 변경에 따라 Laser Ready 입력 판정을
ReadDI(12) && ReadDI(24) → ReadDI(11) && ReadDI(15)로 수정. 로직 동일.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
W 입력 영역은 주로 사용하지 않아 UCScannerLaserControl.xaml의 Grid.Row=1
(Watt 기준) GroupBox를 Visibility=Collapsed 처리. Percent 영역만 노출.
ViewModel/바인딩은 변경 없음(CMD_LaserShotOnWatt 등 유지).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
OnMonitoring의 IsLaserReady 판정을 DI(9)(CoreLaser_Laser_Ready 단독)에서
DI(12) && DI(24) (CoreLaser_Control_Status AND RingLaser_Control_Status)로 변경.
버튼이 켜는 Control(DO9/13)의 피드백을 Core·Ring 둘 다 확인.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
PTOP 변경 과정에서 Recipe 탭 진입 시 IO Device DI 읽기 실패로 시스템 크래시 발생.
근본 원인:
- DI 24가 PTOP 하드웨어에 미정의됨
- UCScannerObjectTeachingControlBoxViewModel에서 DI 9, 24를 함께 읽으려고 시도
- 범위 초과 오류(ERROR CODE:3102) 발생
변경사항:
- DI 24 읽기 제거 (Scanner 레거시 코드, PTOP에 불필요)
- DI 9 읽기만 수행하도록 변경
- try-catch 예외 처리 추가로 안정성 개선
- 오류 발생 시 에러 로깅
Fixes: Recipe 탭 시스템 셧다운
또는 더 간단하게:
fix: Recipe 탭 DI 읽기 오류 해결
DI 24가 PTOP에 미정의되어 OnMonitoring에서 범위 초과 에러 발생.
DI 9만 읽도록 수정하고 try-catch 예외 처리 추가.