NohDoyeon241104 e309230949 feat: MOTF(Mark On The Fly) 구현 준비 - ACS Stage X 연동
- WeldingCommon/Devices/ACS/ ScannerACS 독립 구현 (Gun 참조 제거)
- Scanner EquipmentSetup.RegisterDevices()에 ScannerACS + 모터 등록
- EquipDef.cs MotorIds 추가
- UCScannerMotionViewModel Stage X 조그 필드/커맨드/모니터링 추가
- UCScannerMotion.xaml Stage X Motion 섹션 추가
- SeqComponentTeachingRun MOTF 자리 확보
  (_ACS 필드 선언, InitDev() 취득, MOTFStart/CheckMOTFComp 주석 준비)
- AuroraEx Device 네임스페이스 충돌 수정

TODO: 이정인 선임 ACS 변수 맵 수신 후
  - ScannerACS.Parameter.cs 변수명/버퍼 번호 교체
  - MOTFStart() / CheckMOTFComp() 주석 해제
  - 축 번호 검증
2026-04-06 14:51:27 +09:00

192 lines
13 KiB
XML
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.

<UserControl x:Class="WeldingCommon.Views.UCScannerMotion"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WeldingCommon.Views"
xmlns:behavior="http://schemas.microsoft.com/xaml/behaviors"
xmlns:view="clr-namespace:Aurora.View;assembly=Aurora"
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:aurorauicomponent="clr-namespace:AuroraUIComponent;assembly=AuroraUIComponent"
xmlns:usercontrols="clr-namespace:AuroraUIComponent.UserControls;assembly=AuroraUIComponent"
d:DataContext="{d:DesignInstance Type=local:UCScannerMotionViewModel}"
mc:Ignorable="d"
d:DesignHeight="400" d:DesignWidth="600" x:Name="uc">
<UserControl.Resources>
<ResourceDictionary>
<view:BoolConverter x:Key="convWorkConverter" FalseValue="Not Work" TrueValue="Work"/>
</ResourceDictionary>
</UserControl.Resources>
<behavior:Interaction.Triggers>
<behavior:PropertyChangedTrigger Binding="{Binding IsVisible, ElementName=uc}">
<behavior:InvokeCommandAction Command="{Binding CMD_VisibleChanged}" CommandParameter="{Binding IsVisible, ElementName=uc}"/>
</behavior:PropertyChangedTrigger>
</behavior:Interaction.Triggers>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<!-- Scanner 위치 표시 -->
<Grid Grid.Row="0" Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<GroupBox Header="X[mm]" Style="{StaticResource StGBMonitor}" Margin="0 0 3 3">
<TextBlock FontSize="18" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center"
Text="{Binding ScannerXPos, StringFormat={}{0:0.000000}}"/>
</GroupBox>
<GroupBox Grid.Column="1" Header="Y[mm]" Style="{StaticResource StGBMonitor}" Margin="3 0 3 3">
<TextBlock FontSize="18" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center"
Text="{Binding ScannerYPos, StringFormat={}{0:0.000000}}"/>
</GroupBox>
<GroupBox Grid.Column="2" Header="Status" Style="{StaticResource StGBMonitor}" Margin="3 0 3 3">
<TextBlock FontSize="18" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center"
Text="{Binding IsScannerBusy, Converter={StaticResource convWorkConverter}}"/>
</GroupBox>
</Grid>
<!-- Scanner Motion -->
<GroupBox Grid.Row="1" Header="Scanner Motion" Margin="0 3 3 0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="230"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="230"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Grid.Column="0" Margin="5">
<usercontrols:UCKeyValue KeyText="Step Value" Value="{Binding StepValue}"
DecimalPlaces="3" Unit="mm"
KeyHorizontalAlignment="Right" KeyTextWidth="0.9*"/>
</Grid>
<Grid Grid.Row="1" Grid.Column="0" Margin="20 5 15 5">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Button Grid.Row="0" Grid.Column="1" FontWeight="Bold" Margin="2" BorderBrush="#1e1e1e"
Command="{Binding CMD_JogMove}" CommandParameter="Up">▲</Button>
<Button Grid.Row="1" Grid.Column="0" FontWeight="Bold" Margin="2" BorderBrush="#1e1e1e"
Command="{Binding CMD_JogMove}" CommandParameter="Left">◀</Button>
<Button Grid.Row="1" Grid.Column="1" FontWeight="Bold" Margin="2" BorderBrush="#1e1e1e"
Command="{Binding CMD_JogMove}" CommandParameter="Home">⌂</Button>
<Button Grid.Row="1" Grid.Column="2" FontWeight="Bold" Margin="2" BorderBrush="#1e1e1e"
Command="{Binding CMD_JogMove}" CommandParameter="Right">▶</Button>
<Button Grid.Row="2" Grid.Column="1" FontWeight="Bold" Margin="2" BorderBrush="#1e1e1e"
Command="{Binding CMD_JogMove}" CommandParameter="Down">▼</Button>
</Grid>
<Grid Grid.Row="0" Grid.Column="1" Grid.RowSpan="2" Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.3*"/>
<RowDefinition Height="2*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Style="{StaticResource StGuideTB}" VerticalAlignment="Center">Motion Speed</TextBlock>
<TextBlock Grid.Row="1" Grid.Column="0" Style="{StaticResource StGuideTB}" VerticalAlignment="Center">Motion Mode</TextBlock>
<Grid Grid.Row="0" Grid.Column="1" Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<RadioButton Grid.Column="0" Command="{Binding CMD_SpeedChanged}" CommandParameter="Low"
Style="{StaticResource stRadio}" Content="LOW" Margin="3"/>
<RadioButton Grid.Column="1" Command="{Binding CMD_SpeedChanged}" CommandParameter="Mid"
Style="{StaticResource stRadio}" Content="MID" IsChecked="True" Margin="3"/>
<RadioButton Grid.Column="2" Command="{Binding CMD_SpeedChanged}" CommandParameter="High"
Style="{StaticResource stRadio}" Content="HIGH" Margin="3"/>
</Grid>
<Grid Grid.Row="1" Grid.Column="1" Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<RadioButton Grid.Column="0" Command="{Binding CMD_MotionModeChanged}" CommandParameter="ABS"
Style="{StaticResource stRadio}" Content="ABS" Margin="3" IsChecked="True"/>
<RadioButton Grid.Column="1" Command="{Binding CMD_MotionModeChanged}" CommandParameter="REL"
Style="{StaticResource stRadio}" Content="REL" Margin="3"/>
</Grid>
<Grid Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0.8*"/>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="0.8*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="1.5*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="1" Foreground="White" TextAlignment="Center" FontSize="8">MinLimit</TextBlock>
<TextBlock Grid.Row="1" Grid.Column="1" FontSize="8" Text="{Binding CommandPosLimitMinX, StringFormat={}{0:0.000}}" Foreground="Gray" HorizontalAlignment="Center" TextAlignment="Center"/>
<TextBlock Grid.Row="2" Grid.Column="1" FontSize="8" Text="{Binding CommandPosLimitMinY, StringFormat={}{0:0.000}}" Foreground="Gray" HorizontalAlignment="Center" TextAlignment="Center"/>
<TextBlock Grid.Row="0" Grid.Column="3" Foreground="White" TextAlignment="Center" FontSize="8">MaxLimit</TextBlock>
<TextBlock Grid.Row="1" Grid.Column="3" FontSize="8" Text="{Binding CommandPosLimitMaxX, StringFormat={}{0:0.000}}" Foreground="Gray" HorizontalAlignment="Center" TextAlignment="Center"/>
<TextBlock Grid.Row="2" Grid.Column="3" FontSize="8" Text="{Binding CommandPosLimitMaxY, StringFormat={}{0:0.000}}" Foreground="Gray" HorizontalAlignment="Center" TextAlignment="Center"/>
<TextBlock Grid.Row="1" Grid.Column="2" Foreground="White" TextAlignment="Center" VerticalAlignment="Center" FontSize="10" Text="~"/>
<TextBlock Grid.Row="2" Grid.Column="2" Foreground="White" TextAlignment="Center" VerticalAlignment="Center" FontSize="10" Text="~"/>
<usercontrols:UCKeyValue Grid.Row="1" Grid.Column="0" KeyText="Axis X" Value="{Binding CommandPosX}"
DecimalPlaces="3" Unit="mm" KeyHorizontalAlignment="Right" KeyTextWidth="0.6*"/>
<usercontrols:UCKeyValue Grid.Row="2" Grid.Column="0" KeyText="Axis Y" Value="{Binding CommandPosY}"
DecimalPlaces="3" Unit="mm" KeyHorizontalAlignment="Right" KeyTextWidth="0.6*"/>
<UniformGrid Grid.Row="1" Grid.Column="4" Grid.RowSpan="2" Columns="2">
<Button Margin="3" Command="{Binding CMD_CommandPosMove}" CommandParameter="X"
Content="Move X" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Height="auto" Style="{StaticResource StButtonAccentBlue}"/>
<Button Margin="3" Command="{Binding CMD_CommandPosMove}" CommandParameter="Y"
Content="Move Y" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Height="auto" Style="{StaticResource StButtonAccentBlue}"/>
</UniformGrid>
</Grid>
</Grid>
</Grid>
</GroupBox>
<!-- 26.04.06 NDY Stage X Motion 섹션 추가 -->
<GroupBox Grid.Row="2" Header="Stage X Motion (ACS)" Margin="0 3 3 0"
IsEnabled="{Binding IsStageXActivated}">
<Grid Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<GroupBox Grid.Column="0" Header="Stage X[mm]"
Style="{StaticResource StGBMonitor}" Margin="0 0 5 0" MinWidth="120">
<TextBlock FontSize="18" FontWeight="Bold"
HorizontalAlignment="Center" VerticalAlignment="Center"
Text="{Binding StageXPos, StringFormat={}{0:0.000}}"/>
</GroupBox>
<Button Grid.Column="1" FontWeight="Bold" Margin="3"
Command="{Binding CMD_JogMove}" CommandParameter="Stage_X_Left">◀ −</Button>
<Button Grid.Column="2" FontWeight="Bold" Margin="3"
Command="{Binding CMD_JogMove}" CommandParameter="Stage_X_Right">+ ▶</Button>
<TextBlock Grid.Column="3" FontSize="10" Foreground="Gray"
VerticalAlignment="Center" HorizontalAlignment="Center"
Text="* 이미지 방향 반전 적용"/>
</Grid>
</GroupBox>
</Grid>
</UserControl>