diff --git a/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBox.xaml b/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBox.xaml index 8be4b4f..872c539 100644 --- a/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBox.xaml +++ b/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBox.xaml @@ -92,6 +92,7 @@ + @@ -118,6 +119,10 @@ + diff --git a/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBoxViewModel.cs b/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBoxViewModel.cs index 4d69a02..467c121 100644 --- a/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBoxViewModel.cs +++ b/WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBoxViewModel.cs @@ -76,6 +76,10 @@ namespace WeldingCommon.Views private bool _IsLaserReady; public bool IsLaserReady { get => _IsLaserReady; set => SetProperty(ref _IsLaserReady, value); } + // NoLaser 모드: true면 Laser Control(BIT9/13)을 켜지 않음(false 유지) → 레이저 컨트롤러 OFF 상태로 Laser On 가능 (Cal/전압 측정용) + private bool _IsNoLaser; + public bool IsNoLaser { get => _IsNoLaser; set => SetProperty(ref _IsNoLaser, value); } + // Object Select Type private bool _IsObjectSelectAll; public bool IsObjectSelectAll { get => _IsObjectSelectAll; set => SetProperty(ref _IsObjectSelectAll, value); } @@ -144,6 +148,7 @@ namespace WeldingCommon.Views IsGuidBeam = false; IsLaserReady = false; + IsNoLaser = false; IsObjectSelectAll = true; } @@ -461,8 +466,10 @@ namespace WeldingCommon.Views // 추후 Write bit 파라미터화 해야함 if(toggleIO) { - _IODevice._iOUnit.WriteDoBit(9, true); - _IODevice._iOUnit.WriteDoBit(13, true); + // IsNoLaser면 레이저 컨트롤러(BIT9/13)를 켜지 않음(false 유지) → 발진 없이 Laser On 가능 + bool ctrlOn = !IsNoLaser; + _IODevice._iOUnit.WriteDoBit(9, ctrlOn); + _IODevice._iOUnit.WriteDoBit(13, ctrlOn); toggleIO = false; } else diff --git a/docs/작업일지/2026_06_18.md b/docs/작업일지/2026_06_18.md index 1e5b50d..e89aef8 100644 --- a/docs/작업일지/2026_06_18.md +++ b/docs/작업일지/2026_06_18.md @@ -71,3 +71,25 @@ - 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만 제어. +- 커밋·푸시 진행.