feat: NoLaser 옵션 - 레이저 컨트롤러 IO(DO9/13) 안 켜고 Laser On 가능
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 <noreply@anthropic.com>
This commit is contained in:
parent
ad6cf68498
commit
8ec4fd0d62
@ -92,6 +92,7 @@
|
|||||||
<RowDefinition Height="auto"></RowDefinition>
|
<RowDefinition Height="auto"></RowDefinition>
|
||||||
<RowDefinition Height="auto"></RowDefinition>
|
<RowDefinition Height="auto"></RowDefinition>
|
||||||
<RowDefinition Height="auto"></RowDefinition>
|
<RowDefinition Height="auto"></RowDefinition>
|
||||||
|
<RowDefinition Height="auto"></RowDefinition>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Border Grid.Row="0" Grid.Column="0" MinHeight="30">
|
<Border Grid.Row="0" Grid.Column="0" MinHeight="30">
|
||||||
<TextBlock Margin="10 0" FontSize="12" Foreground="#FFBBBBBB" FontWeight="Bold" Text="Guid Beam Status" VerticalAlignment="Center" HorizontalAlignment="Right"/>
|
<TextBlock Margin="10 0" FontSize="12" Foreground="#FFBBBBBB" FontWeight="Bold" Text="Guid Beam Status" VerticalAlignment="Center" HorizontalAlignment="Right"/>
|
||||||
@ -118,6 +119,10 @@
|
|||||||
<TextBlock Text="Laser Ready"/>
|
<TextBlock Text="Laser Ready"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Button>
|
</Button>
|
||||||
|
<CheckBox Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2" Margin="5 6 0 0"
|
||||||
|
FontSize="12" FontWeight="Bold" Foreground="#FFBBBBBB"
|
||||||
|
IsChecked="{Binding IsNoLaser}"
|
||||||
|
Content="No Laser (전압만, 발진 안 함)"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
|
||||||
|
|||||||
@ -76,6 +76,10 @@ namespace WeldingCommon.Views
|
|||||||
private bool _IsLaserReady;
|
private bool _IsLaserReady;
|
||||||
public bool IsLaserReady { get => _IsLaserReady; set => SetProperty(ref _IsLaserReady, value); }
|
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
|
// Object Select Type
|
||||||
private bool _IsObjectSelectAll;
|
private bool _IsObjectSelectAll;
|
||||||
public bool IsObjectSelectAll { get => _IsObjectSelectAll; set => SetProperty(ref _IsObjectSelectAll, value); }
|
public bool IsObjectSelectAll { get => _IsObjectSelectAll; set => SetProperty(ref _IsObjectSelectAll, value); }
|
||||||
@ -144,6 +148,7 @@ namespace WeldingCommon.Views
|
|||||||
|
|
||||||
IsGuidBeam = false;
|
IsGuidBeam = false;
|
||||||
IsLaserReady = false;
|
IsLaserReady = false;
|
||||||
|
IsNoLaser = false;
|
||||||
|
|
||||||
IsObjectSelectAll = true;
|
IsObjectSelectAll = true;
|
||||||
}
|
}
|
||||||
@ -461,8 +466,10 @@ namespace WeldingCommon.Views
|
|||||||
// 추후 Write bit 파라미터화 해야함
|
// 추후 Write bit 파라미터화 해야함
|
||||||
if(toggleIO)
|
if(toggleIO)
|
||||||
{
|
{
|
||||||
_IODevice._iOUnit.WriteDoBit(9, true);
|
// IsNoLaser면 레이저 컨트롤러(BIT9/13)를 켜지 않음(false 유지) → 발진 없이 Laser On 가능
|
||||||
_IODevice._iOUnit.WriteDoBit(13, true);
|
bool ctrlOn = !IsNoLaser;
|
||||||
|
_IODevice._iOUnit.WriteDoBit(9, ctrlOn);
|
||||||
|
_IODevice._iOUnit.WriteDoBit(13, ctrlOn);
|
||||||
toggleIO = false;
|
toggleIO = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@ -71,3 +71,25 @@
|
|||||||
- csproj 빌드 경로 TDC→PTOP (`_out_prismatic_rd_ptop`)
|
- csproj 빌드 경로 TDC→PTOP (`_out_prismatic_rd_ptop`)
|
||||||
- sln에서 Scanner/Gun/CleanLaser 제거, 해당 머신 소스 폴더 삭제, 비-PTOP `_out` 아티팩트 정리 → **Machines에 PTOP만 남김** (참고본과 동일 구조)
|
- sln에서 Scanner/Gun/CleanLaser 제거, 해당 머신 소스 폴더 삭제, 비-PTOP `_out` 아티팩트 정리 → **Machines에 PTOP만 남김** (참고본과 동일 구조)
|
||||||
- **주의:** 이 환경에선 실제 MSBuild 검증 불가 → VS에서 Clean→Rebuild 권장(obj 비워둠).
|
- **주의:** 이 환경에선 실제 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만 제어.
|
||||||
|
- 커밋·푸시 진행.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user