2026-06-05 13:44:39 +09:00

306 lines
18 KiB
XML

<UserControl x:Class="AuroraMotionBoard.Ajin.Views.UCAJINMotorView"
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:AuroraMotionBoard.Ajin.Views"
mc:Ignorable="d"
xmlns:aurora="clr-namespace:Aurora.View;assembly=Aurora"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:usercontrols="clr-namespace:AuroraUIComponent.UserControls;assembly=AuroraUIComponent"
d:DataContext="{d:DesignInstance Type=local:UCAJINMotorViewModel}"
d:DesignHeight="500" d:DesignWidth="1000" FontSize="12" x:Name="uc" HorizontalAlignment="Left" Width="1200">
<UserControl.Resources>
<Style x:Key="styleRbJogUnit" TargetType="RadioButton">
<Setter Property="MinWidth" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=ActualHeight}"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="FontSize" Value="16"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Height" Value="40"/>
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Margin" Value="2 0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RadioButton}">
<Border Name="border" BorderThickness="1" Background="#1A2242"
BorderBrush="#1A2242">
<ContentPresenter Margin="0,0,0,4" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="0.8" />
</Trigger>
<Trigger Property="IsChecked"
Value="True">
<Setter TargetName="border"
Property="Background"
Value="#A50034" />
<Setter TargetName="border"
Property="BorderThickness"
Value="1" />
<Setter Property="FontWeight"
Value="Bold" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<aurora:BoolConverter
x:Key="convHomeSignal"
FalseValue="White"
TrueValue="Green"/>
<aurora:BoolConverter
x:Key="convBGConv"
FalseValue="Transparent"
TrueValue="#A50034"/>
<aurora:BoolConverter
x:Key="convSignalConv"
FalseValue="White"
TrueValue="Green"/>
<aurora:BoolConverter
x:Key="convMovingConv"
FalseValue="STOPPED"
TrueValue="MOVING"/>
<aurora:BoolConverter
x:Key="convInit"
FalseValue="Init Fail"
TrueValue="Init Success"/>
<aurora:BoolConverter
x:Key="convBuffer"
FalseValue="Program End"
TrueValue="Running"/>
<aurora:BoolConverter
x:Key="convServoOn"
FalseValue="Transparent"
TrueValue="Green"/>
</UserControl.Resources>
<i:Interaction.Triggers>
<i:PropertyChangedTrigger Binding="{Binding IsVisible, ElementName=uc}">
<i:InvokeCommandAction Command="{Binding CMD_VisibleChanged}" CommandParameter="{Binding IsVisible, ElementName=uc}"/>
</i:PropertyChangedTrigger>
</i:Interaction.Triggers>
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<GroupBox Grid.Row="0" Margin="0 0 5 5" Grid.Column="0" Header="Initialize">
<Grid Height="40">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button Margin="5 0" Command="{Binding CMD_ServoOn}" >ServoOn</Button>
<!--<Button Margin="5 0" Command="{Binding CMD_Init}" IsEnabled="{Binding IsInit, Converter={StaticResource inverter}}">Init</Button>-->
<Button Grid.Column="1" Margin="5 0" Command="{Binding CMD_ClearAlarm}" IsEnabled="{Binding IsServoAlarm}">Alarm Clear</Button>
<Button Grid.Column="2" Margin="5 0" Command="{Binding CMD_ReScan}">ReScan</Button>
</Grid>
</GroupBox>
<GroupBox Grid.Row="1" Grid.Column="0" Margin="0 5 5 0" Header="Home">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Row="0" Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="Left">
<Border BorderThickness="1" BorderBrush="White" Width="20" Height="20" Background="{Binding IsHomeSignal, Converter={StaticResource convHomeSignal}}"/>
<TextBlock Grid.Row="0" Grid.ColumnSpan="2" Margin="5 0" HorizontalAlignment="Center" FontSize="11" Foreground="{StaticResource BLGold}">
Is Home Completed</TextBlock>
</StackPanel>
<Button Grid.Row="1" Grid.Column="0" Command="{Binding CMD_Home}" Margin="0 5 5 0" Height="40">Home</Button>
</Grid>
</GroupBox>
<!-- Ajin보드에서는 사용하지 않아서 주석처리-->
<!--<GroupBox Grid.Row="1" Grid.Column="1" Margin="5 5 5 0" Header="Run Buffer">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<usercontrols:UCKeyValueString Grid.ColumnSpan="2" KeyText="Label : " ValueText="{Binding Buffer}"/>
<Button x:Name="ButtonBufferRun" Grid.Row="1" Grid.Column="0" Content="Buffer Run" Command="{Binding CMD_RunBuffer}" Margin="0 5 5 0"/>
<TextBlock Grid.Row="2" Grid.Column="2" Grid.ColumnSpan="2" TextAlignment="Center"
Text="{Binding IsBufferRunning, Converter={StaticResource convBuffer}}"/>
</Grid>
</GroupBox>-->
<!--<GroupBox Grid.Row="2" Grid.ColumnSpan="2" Margin="0 5 5 0">
<Grid Height="32">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<usercontrols:UCKeyValue Grid.Column="0" KeyText="ACC" Value="{Binding Acc}" KeyTextFgColor="White" Margin="5 0" KeyTextWidth="0.3*"/>
<usercontrols:UCKeyValue Grid.Column="1" KeyText="DEC" Value="{Binding Dec}" KeyTextFgColor="White" Margin="5 0" KeyTextWidth="0.3*"/>
--><!--<usercontrols:UCKeyValue Grid.Column="2" KeyText="JERK" Value="{Binding Jerk}" KeyTextFgColor="White" Margin="5 0" KeyTextWidth="0.3*"/>--><!--
</Grid>
</GroupBox>-->
<GroupBox Grid.Row="0" Grid.RowSpan="4" Grid.Column="1" Margin="0 0 5 0" Header="Motor Move">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<usercontrols:UCKeyValue Grid.Row="0" Grid.ColumnSpan="2" KeyText="Acceleration" Value="{Binding Acc}" DecimalPlaces="3"
KeyTextFgColor="White" Height="32" />
<usercontrols:UCKeyValue Grid.Row="1" Grid.ColumnSpan="2" KeyText="Deceleration" Value="{Binding Dec}" DecimalPlaces="3"
KeyTextFgColor="White" Height="32"/>
<!--<usercontrols:UCKeyValue Grid.Column="2" KeyText="JERK" Value="{Binding Jerk}" KeyTextFgColor="White" Margin="5 0" KeyTextWidth="0.3*"/>-->
<usercontrols:UCKeyValue Grid.Row="2" Grid.ColumnSpan="2" KeyText="Target Pos" Value="{Binding TargetPos}" DecimalPlaces="3" Height="32" Unit="mm"
KeyTextFgColor="White" />
<usercontrols:UCKeyValue Grid.Row="3" Grid.ColumnSpan="2" KeyText="Speed" Value="{Binding Speed}" DecimalPlaces="3" Height="32" Unit="mm/s"
KeyTextFgColor="White"/>
<Button Grid.Row="4" Grid.Column="0" Command="{Binding CMD_MoveABS}" Margin="0 5 5 0" Height="40">
Move ABS
</Button>
<Button Grid.Row="4" Grid.Column="3" Grid.ColumnSpan="3" Command="{Binding CMD_MoveINC}" Margin="5 5 0 0" Height="40">
Move INC
</Button>
</Grid>
</GroupBox>
<GroupBox Grid.Row="2" Grid.RowSpan="2" Grid.Column="0" Margin="5 5 5 0" Header="Jog">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="32"/>
<RowDefinition/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<usercontrols:UCKeyValue Grid.ColumnSpan="2" KeyText="Jog Speed" Value="{Binding JogSpeed}" DecimalPlaces="3" Unit="mm/s" KeyTextFgColor="White"/>
<Button Grid.Row="2" Content="Jog Up" Margin="0 5 5 0" Height="40"
PreviewMouseUp="BtnJog_P_PreviewMouseUp" PreviewMouseLeftButtonDown="BtnJog_P_PreviewMouseLeftButtonDown"/>
<Button Grid.Row="2" Grid.Column="1" Content="Jog Down" Margin="5 5 0 0"
PreviewMouseUp="BtnJog_M_PreviewMouseUp" PreviewMouseLeftButtonDown="BtnJog_M_PreviewMouseLeftButtonDown"/>
</Grid>
</GroupBox>
<GroupBox Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2" Margin="0 5 5 0" Header="Stop Motion">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0" Content="Emergency Stop" Margin="0 5 5 0" Command="{Binding CMD_StopEmergency}" Height="40" Foreground="Red"/>
<Button Grid.Row="0" Grid.Column="1" Content="Slow Stop" Margin="5 5 0 0" Command="{Binding CMD_StopSlow}" Height="40" Foreground="Red"/>
</Grid>
</GroupBox>
<GroupBox Grid.Row="0" Grid.Column="2" Margin="5 0 0 0" Grid.RowSpan="2" Header="Motor Position">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="5*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Text="Current" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="White" TextWrapping="Wrap"/>
<Border Grid.Row="0" Grid.Column="1" BorderBrush="Black" BorderThickness="1" Margin="5">
<TextBlock x:Name="lblCurPos" VerticalAlignment="Center" HorizontalAlignment="Center" FontWeight="Bold" FontSize="24" Padding="0 5"
Foreground="#A50034" Text="{Binding CurrentPos, StringFormat={}{0:0.#}}"/>
</Border>
<TextBlock Grid.Row="1" Margin="5 0" Text="Command" HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center" Foreground="White" TextWrapping="Wrap"/>
<Border Grid.Row="1" Grid.Column="1" BorderBrush="Black" BorderThickness="1" Margin="5">
<TextBlock Name="lblCmdPos" VerticalAlignment="Center" HorizontalAlignment="Center" FontWeight="Bold" FontSize="24" Padding="0 5"
Foreground="#A50034" Text="{Binding CmdPos, StringFormat={}{0:0.#}}"/>
</Border>
<TextBlock Grid.Row="2" Margin="5" Text="Velocity" HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center" Foreground="White" TextWrapping="Wrap"/>
<Border Grid.Row="2" Grid.Column="1" BorderBrush="Black" BorderThickness="1" Margin="5">
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontWeight="Bold" FontSize="24" Padding="0 5"
Foreground="#A50034" Text="{Binding Velocity, StringFormat={}{0:0.#}}"/>
</Border>
</Grid>
</GroupBox>
<Grid Grid.Row="2" Grid.Column="2" Margin="5 5 0 0">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border Grid.Row="0" Margin="5" BorderBrush="White" BorderThickness="1" CornerRadius="4" Background="{Binding IsServoAlarm, Converter={StaticResource convBGConv}}">
<TextBlock Foreground="White" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center"
FontWeight="Bold">
ALARM
</TextBlock>
</Border>
<Border Grid.Column="1" Margin="5" BorderBrush="White" BorderThickness="1" CornerRadius="4" Background="{Binding IsMoving, Converter={StaticResource convBGConv}}">
<TextBlock Foreground="White" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center"
FontWeight="Bold" Text="{Binding IsMoving, Converter={StaticResource convMovingConv}}"/>
</Border>
</Grid>
<GroupBox Grid.Row="3" Grid.Column="2" Grid.RowSpan="2" Margin="5 5 0 0" Header="Status">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Content="Servo On" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<Label Grid.Row="1" Content="(HW) + Sensor" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<Label Grid.Row="2" Content="(HW) - Sensor" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<Label Grid.Row="3" Content="(SW) + Sensor" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<Label Grid.Row="4" Content="(SW) - Sensor" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<Label Grid.Row="5" Content="In Position" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<Ellipse Grid.Row="0" Grid.Column="1" Width="20" Height="20" Stroke="#1A2242" StrokeThickness="1" Fill="{Binding IsServoOn, Converter={StaticResource convSignalConv}}"/>
<Ellipse Grid.Row="1" Grid.Column="1" Width="20" Height="20" Stroke="#1A2242" StrokeThickness="1" Fill="{Binding IsPSensor, Converter={StaticResource convSignalConv}}"/>
<Ellipse Grid.Row="2" Grid.Column="1" Width="20" Height="20" Stroke="#1A2242" StrokeThickness="1" Fill="{Binding IsMSensor, Converter={StaticResource convSignalConv}}"/>
<Ellipse Grid.Row="3" Grid.Column="1" Width="20" Height="20" Stroke="#1A2242" StrokeThickness="1" Fill="{Binding IsSPSensor, Converter={StaticResource convSignalConv}}"/>
<Ellipse Grid.Row="4" Grid.Column="1" Width="20" Height="20" Stroke="#1A2242" StrokeThickness="1" Fill="{Binding IsSNSensor, Converter={StaticResource convSignalConv}}"/>
<Ellipse Grid.Row="5" Grid.Column="1" Width="20" Height="20" Stroke="#1A2242" StrokeThickness="1" Fill="{Binding IsInPos, Converter={StaticResource convSignalConv}}"/>
</Grid>
</GroupBox>
</Grid>
</UserControl>