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

258 lines
15 KiB
XML

<UserControl x:Class="AuroraACS.Views.UCACSMotor"
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:AuroraACS.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:UCACSMotorViewModel}"
d:DesignHeight="800" d:DesignWidth="1000" x:Name="uc">
<UserControl.Resources>
<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"/>
</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>
<GroupBox Header="{Binding DeviceId, FallbackValue=DeviceId}" Margin="10" Style="{StaticResource StGroupPurpleHeader}">
<Grid>
<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.ColumnSpan="2" Header="Initialize">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button Margin="5 0" Command="{Binding CMD_Init}">Init</Button>
<!--IsEnabled="{Binding IsInit, Converter={StaticResource inverter}}"-->
<Button Grid.Column="1" Margin="5 0" Command="{Binding CMD_ClearAlarm}" IsEnabled="{Binding IsServoAlarm}">Alarm Clear</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>
<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" Command="{Binding CMD_RunBuffer}"
CommandParameter="{Binding Buffer}" Margin="0 5 5 0">
Buffer Run
</Button>
<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 ACSAcc}" KeyTextFgColor="White" Margin="5 0" KeyTextWidth="0.3*"/>
<usercontrols:UCKeyValue Grid.Column="1" KeyText="DEC" Value="{Binding ACSDec}" KeyTextFgColor="White" Margin="5 0" KeyTextWidth="0.3*"/>
<usercontrols:UCKeyValue Grid.Column="2" KeyText="JERK" Value="{Binding ACSJerk}" KeyTextFgColor="White" Margin="5 0" KeyTextWidth="0.3*"/>
</Grid>
</GroupBox>
<GroupBox Grid.Row="3" Grid.Column="0" Margin="0 5 5 0" Header="Motor Move">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<usercontrols:UCKeyValue Grid.Row="0" Grid.ColumnSpan="2" KeyText="Target Pos" Value="{Binding TargetPos}" DecimalPlaces="3" Height="32" Unit="mm"
KeyTextFgColor="White" />
<usercontrols:UCKeyValue Grid.Row="1" Grid.ColumnSpan="2" KeyText="Speed" Value="{Binding Speed}" DecimalPlaces="3" Height="32" Unit="mm/s"
KeyTextFgColor="White"/>
<Button Grid.Row="3" Grid.Column="0" Command="{Binding CMD_MoveABS}" Margin="0 5 5 0" Height="40">
Move ABS
</Button>
<Button Grid.Row="3" 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="3" Grid.Column="1" 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}" KeyTextFgColor="White"/>
<Button Grid.Row="2" Content="Jog Up" Margin="0 5 5 0" Height="40"
PreviewMouseUp="BtnJog_M_PreviewMouseUp" PreviewMouseLeftButtonDown="BtnJog_M_PreviewMouseLeftButtonDown"/>
<Button Grid.Row="2" Grid.Column="1" Content="Jog Down" Margin="5 5 0 0" PreviewMouseUp="BtnJog_P_PreviewMouseUp" PreviewMouseLeftButtonDown="BtnJog_P_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" 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" 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" 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">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Content="(HW) + Sensor" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<Label Grid.Row="1" Content="(HW) - Sensor" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<Label Grid.Row="2" Content="(SW) + Sensor" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<Label Grid.Row="3" Content="(SW) - Sensor" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<Label Grid.Row="4" Content="In Position" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<Ellipse Grid.Row="0" Grid.Column="1" Width="20" Height="20" Stroke="{StaticResource ACBlueDark}" StrokeThickness="1" Fill="{Binding IsPSensor, Converter={StaticResource convSignalConv}}"/>
<Ellipse Grid.Row="1" Grid.Column="1" Width="20" Height="20" Stroke="{StaticResource ACBlueDark}" StrokeThickness="1" Fill="{Binding IsMSensor, Converter={StaticResource convSignalConv}}"/>
<Ellipse Grid.Row="2" Grid.Column="1" Width="20" Height="20" Stroke="{StaticResource ACBlueDark}" StrokeThickness="1" Fill="{Binding IsSPSensor, Converter={StaticResource convSignalConv}}"/>
<Ellipse Grid.Row="3" Grid.Column="1" Width="20" Height="20" Stroke="{StaticResource ACBlueDark}" StrokeThickness="1" Fill="{Binding IsSNSensor, Converter={StaticResource convSignalConv}}"/>
<Ellipse Grid.Row="4" Grid.Column="1" Width="20" Height="20" Stroke="{StaticResource ACBlueDark}" StrokeThickness="1" Fill="{Binding IsInPos, Converter={StaticResource convSignalConv}}"/>
</Grid>
</GroupBox>
</Grid>
</GroupBox>
</UserControl>