From 8ec4fd0d62ef6c1be734a44e68a37a46ea5056ec Mon Sep 17 00:00:00 2001 From: NohDoyeon241104 Date: Thu, 18 Jun 2026 12:12:48 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20NoLaser=20=EC=98=B5=EC=85=98=20-=20?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=A0=80=20=EC=BB=A8=ED=8A=B8=EB=A1=A4?= =?UTF-8?q?=EB=9F=AC=20IO(DO9/13)=20=EC=95=88=20=EC=BC=9C=EA=B3=A0=20Laser?= =?UTF-8?q?=20On=20=EA=B0=80=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UCScannerObjectTeachingControlBox에 IsNoLaser 추가. Laser Ready 버튼이 CoreLaser_Control(DO9)/RingLaser_Control(DO13)을 켜는 분기에서 ctrlOn=!IsNoLaser 적용 → IsNoLaser=true면 DO9/13을 false로 유지(레이저 컨트롤러 OFF)하여 발진 없이 전압만 인가한 채 Laser On 가능(Cal/전압 측정용). XAML에 'No Laser' 체크박스 추가. 디바이스 레이어 무변경. Co-Authored-By: Claude Opus 4.8 --- .../UCScannerObjectTeachingControlBox.xaml | 5 +++++ ...cannerObjectTeachingControlBoxViewModel.cs | 11 ++++++++-- docs/작업일지/2026_06_18.md | 22 +++++++++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) 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만 제어. +- 커밋·푸시 진행.