更新
This commit is contained in:
@@ -384,7 +384,6 @@
|
|||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<TextBlock Text="实时千分表" Style="{StaticResource MetricTitle}" />
|
<TextBlock Text="实时千分表" Style="{StaticResource MetricTitle}" />
|
||||||
<TextBlock Grid.Row="1"
|
<TextBlock Grid.Row="1"
|
||||||
@@ -393,13 +392,6 @@
|
|||||||
Style="{StaticResource MetricValue}"
|
Style="{StaticResource MetricValue}"
|
||||||
Foreground="#0F766E"
|
Foreground="#0F766E"
|
||||||
VerticalAlignment="Center" />
|
VerticalAlignment="Center" />
|
||||||
<TextBlock Grid.Row="2"
|
|
||||||
x:Name="DisplacementStatusText"
|
|
||||||
Text="{Binding DisplacementStatusText}"
|
|
||||||
FontSize="22"
|
|
||||||
FontWeight="SemiBold"
|
|
||||||
HorizontalAlignment="Center"
|
|
||||||
Foreground="#52616F" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
@@ -408,7 +400,6 @@
|
|||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<TextBlock Text="实时轴向力" Style="{StaticResource MetricTitle}" />
|
<TextBlock Text="实时轴向力" Style="{StaticResource MetricTitle}" />
|
||||||
<TextBlock Grid.Row="1"
|
<TextBlock Grid.Row="1"
|
||||||
@@ -417,11 +408,6 @@
|
|||||||
Style="{StaticResource MetricValue}"
|
Style="{StaticResource MetricValue}"
|
||||||
Foreground="#1D4ED8"
|
Foreground="#1D4ED8"
|
||||||
VerticalAlignment="Center" />
|
VerticalAlignment="Center" />
|
||||||
<TextBlock Grid.Row="2"
|
|
||||||
Text="达到设定力自动停止"
|
|
||||||
FontSize="18"
|
|
||||||
HorizontalAlignment="Center"
|
|
||||||
Foreground="#52616F" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -683,25 +669,11 @@
|
|||||||
Foreground="#0F766E"
|
Foreground="#0F766E"
|
||||||
VerticalAlignment="Center" />
|
VerticalAlignment="Center" />
|
||||||
<Border Grid.Row="2" Style="{StaticResource InfoStrip}">
|
<Border Grid.Row="2" Style="{StaticResource InfoStrip}">
|
||||||
<Grid>
|
<TextBlock x:Name="RealtimePressureText"
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<TextBlock x:Name="SpeedTorqueStatusText"
|
|
||||||
Text="{Binding SpeedTorqueStatusText}"
|
|
||||||
FontSize="19"
|
|
||||||
FontWeight="SemiBold"
|
|
||||||
HorizontalAlignment="Center"
|
|
||||||
Foreground="#334155" />
|
|
||||||
<TextBlock Grid.Row="1"
|
|
||||||
x:Name="RealtimePressureText"
|
|
||||||
Text="{Binding RealtimePressureText}"
|
Text="{Binding RealtimePressureText}"
|
||||||
FontSize="16"
|
FontSize="16"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Foreground="#52616F"
|
Foreground="#52616F" />
|
||||||
Margin="0,4,0,0" />
|
|
||||||
</Grid>
|
|
||||||
</Border>
|
</Border>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
@@ -981,7 +953,6 @@
|
|||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="210" />
|
<ColumnDefinition Width="210" />
|
||||||
@@ -1007,16 +978,6 @@
|
|||||||
Style="{StaticResource MutedText}"
|
Style="{StaticResource MutedText}"
|
||||||
Margin="0,16,0,0"
|
Margin="0,16,0,0"
|
||||||
VerticalAlignment="Center" />
|
VerticalAlignment="Center" />
|
||||||
<Border Grid.Row="2"
|
|
||||||
Grid.ColumnSpan="3"
|
|
||||||
Style="{StaticResource InfoStrip}"
|
|
||||||
Margin="0,16,0,0">
|
|
||||||
<TextBlock Text="{Binding NoLoadSpeedStatusText}"
|
|
||||||
FontSize="18"
|
|
||||||
FontWeight="SemiBold"
|
|
||||||
HorizontalAlignment="Center"
|
|
||||||
Foreground="#334155" />
|
|
||||||
</Border>
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -204,10 +204,6 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
private bool _isDisplacementResetting;
|
private bool _isDisplacementResetting;
|
||||||
private bool _isSpeedTorqueResetting;
|
private bool _isSpeedTorqueResetting;
|
||||||
private bool _hasShownSpeedTorqueEndWarnings;
|
private bool _hasShownSpeedTorqueEndWarnings;
|
||||||
private bool _isAxialResetEnabled;
|
|
||||||
private bool _isAxialResetDone;
|
|
||||||
private bool _isSpeedTorqueResetEnabled;
|
|
||||||
private bool _isSpeedTorqueResetDone;
|
|
||||||
private DateTime _lastParameterReadFailureLogAt = DateTime.MinValue;
|
private DateTime _lastParameterReadFailureLogAt = DateTime.MinValue;
|
||||||
private string _relativeDisplacementText = "0.000 mm";
|
private string _relativeDisplacementText = "0.000 mm";
|
||||||
private string _axialAxisPositionText = "0.000 mm";
|
private string _axialAxisPositionText = "0.000 mm";
|
||||||
@@ -217,15 +213,12 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
private string _finalDisplacementText = "--";
|
private string _finalDisplacementText = "--";
|
||||||
private string _axialForceText = "0.00 N";
|
private string _axialForceText = "0.00 N";
|
||||||
private string _finalAxialForceText = "--";
|
private string _finalAxialForceText = "--";
|
||||||
private string _displacementStatusText = "状态:待复位";
|
|
||||||
private string _realtimeSpeedText = "0 r/min";
|
private string _realtimeSpeedText = "0 r/min";
|
||||||
private string _realtimeTorqueText = $"0.00 {TorqueUnit}";
|
private string _realtimeTorqueText = $"0.00 {TorqueUnit}";
|
||||||
private string _realtimePressureText = "0.000 MPa";
|
private string _realtimePressureText = "0.000 MPa";
|
||||||
private string _noLoadSpeedRecordText = "0 r/min";
|
private string _noLoadSpeedRecordText = "0 r/min";
|
||||||
private string _noLoadSpeedErrorRateText = "0.00 %";
|
private string _noLoadSpeedErrorRateText = "0.00 %";
|
||||||
private string _noLoadSpeedStatusText = "状态:待记录";
|
|
||||||
private string _noLoadSpeedSettingInput = "0";
|
private string _noLoadSpeedSettingInput = "0";
|
||||||
private string _speedTorqueStatusText = "状态:待启动";
|
|
||||||
private string _finalSpeedTorqueText = "最终:-- / --";
|
private string _finalSpeedTorqueText = "最终:-- / --";
|
||||||
private string _speedTorqueAxisPositionText = "0.000 mm";
|
private string _speedTorqueAxisPositionText = "0.000 mm";
|
||||||
private string _speedTorqueDisplacementText = "0.000 mm";
|
private string _speedTorqueDisplacementText = "0.000 mm";
|
||||||
@@ -277,8 +270,8 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
|
|
||||||
_parameterConfig = LoadParameterConfig();
|
_parameterConfig = LoadParameterConfig();
|
||||||
ApplyParameterConfigToInputs();
|
ApplyParameterConfigToInputs();
|
||||||
UpdateDisplacementDisplay("状态:待复位");
|
UpdateDisplacementDisplay();
|
||||||
UpdateSpeedTorqueDisplay("状态:待启动");
|
UpdateSpeedTorqueDisplay();
|
||||||
RefreshOverallResult();
|
RefreshOverallResult();
|
||||||
UpdateDataCaptureStatus();
|
UpdateDataCaptureStatus();
|
||||||
|
|
||||||
@@ -401,9 +394,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
|
|
||||||
if (!TryReadNonNegative(value, GetActiveAxialForceSetpointName(), out double axialForceSetpoint, out string error))
|
if (!TryReadNonNegative(value, GetActiveAxialForceSetpointName(), out double axialForceSetpoint, out string error))
|
||||||
{
|
{
|
||||||
SetTestPageInputStatus(
|
SetTestPageInputStatus(error);
|
||||||
_parameterConfig.UseAxialPullForceSetpoint ? TestPageInputParameter.AxialPullForceSetpoint : TestPageInputParameter.AxialJumpForceSetpoint,
|
|
||||||
error);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -553,12 +544,6 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
private set => SetProperty(ref _finalAxialForceText, value);
|
private set => SetProperty(ref _finalAxialForceText, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string DisplacementStatusText
|
|
||||||
{
|
|
||||||
get => _displacementStatusText;
|
|
||||||
private set => SetProperty(ref _displacementStatusText, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public string RealtimeSpeedText
|
public string RealtimeSpeedText
|
||||||
{
|
{
|
||||||
get => _realtimeSpeedText;
|
get => _realtimeSpeedText;
|
||||||
@@ -589,18 +574,6 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
private set => SetProperty(ref _noLoadSpeedErrorRateText, value);
|
private set => SetProperty(ref _noLoadSpeedErrorRateText, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string NoLoadSpeedStatusText
|
|
||||||
{
|
|
||||||
get => _noLoadSpeedStatusText;
|
|
||||||
private set => SetProperty(ref _noLoadSpeedStatusText, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public string SpeedTorqueStatusText
|
|
||||||
{
|
|
||||||
get => _speedTorqueStatusText;
|
|
||||||
private set => SetProperty(ref _speedTorqueStatusText, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public string FinalSpeedTorqueText
|
public string FinalSpeedTorqueText
|
||||||
{
|
{
|
||||||
get => _finalSpeedTorqueText;
|
get => _finalSpeedTorqueText;
|
||||||
@@ -738,8 +711,8 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
await StopSpeedTorqueTestAsync("状态:已完成");
|
await StopSpeedTorqueTestAsync("状态:已完成");
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateDisplacementDisplay(ResolveDisplacementStatus(DisplacementStatusText));
|
UpdateDisplacementDisplay();
|
||||||
UpdateSpeedTorqueDisplay(ResolveSpeedTorqueStatus(SpeedTorqueStatusText));
|
UpdateSpeedTorqueDisplay();
|
||||||
UpdateNoLoadSpeedDisplay();
|
UpdateNoLoadSpeedDisplay();
|
||||||
await AutoStopIfSetpointReachedAsync();
|
await AutoStopIfSetpointReachedAsync();
|
||||||
await AutoStopIfSpeedTorqueProtectionReachedAsync();
|
await AutoStopIfSpeedTorqueProtectionReachedAsync();
|
||||||
@@ -747,7 +720,6 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
if (_lastRealtimeReadFailed)
|
if (_lastRealtimeReadFailed)
|
||||||
{
|
{
|
||||||
StatusText = "实时数据已恢复";
|
StatusText = "实时数据已恢复";
|
||||||
NoLoadSpeedStatusText = "状态:实时数据已恢复";
|
|
||||||
_lastRealtimeReadFailed = false;
|
_lastRealtimeReadFailed = false;
|
||||||
Log.Information("PLC实时数据读取已恢复");
|
Log.Information("PLC实时数据读取已恢复");
|
||||||
}
|
}
|
||||||
@@ -757,7 +729,6 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
if (!_lastRealtimeReadFailed)
|
if (!_lastRealtimeReadFailed)
|
||||||
{
|
{
|
||||||
StatusText = $"实时数据读取失败:{ex.Message}";
|
StatusText = $"实时数据读取失败:{ex.Message}";
|
||||||
NoLoadSpeedStatusText = "状态:实时数据读取失败";
|
|
||||||
_lastRealtimeReadFailed = true;
|
_lastRealtimeReadFailed = true;
|
||||||
Log.Warning(ex, "PLC实时数据读取失败,后续相同故障将等待恢复后再记录");
|
Log.Warning(ex, "PLC实时数据读取失败,后续相同故障将等待恢复后再记录");
|
||||||
}
|
}
|
||||||
@@ -849,8 +820,8 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
ApplyParameterConfigToInputs();
|
ApplyParameterConfigToInputs();
|
||||||
NoLoadSpeedSettingInput = FormatConfigNumber(noLoadSpeedSetting);
|
NoLoadSpeedSettingInput = FormatConfigNumber(noLoadSpeedSetting);
|
||||||
NotifyParameterInputsChanged();
|
NotifyParameterInputsChanged();
|
||||||
UpdateDisplacementDisplay(DisplacementStatusText);
|
UpdateDisplacementDisplay();
|
||||||
UpdateSpeedTorqueDisplay(SpeedTorqueStatusText);
|
UpdateSpeedTorqueDisplay();
|
||||||
_hasLoadedParameterConfigFromPlc = true;
|
_hasLoadedParameterConfigFromPlc = true;
|
||||||
_parameterRetryTimer.Stop();
|
_parameterRetryTimer.Stop();
|
||||||
ParameterStatusText = "通信读取成功";
|
ParameterStatusText = "通信读取成功";
|
||||||
@@ -1850,8 +1821,8 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
_parameterConfig = config;
|
_parameterConfig = config;
|
||||||
SaveParameterConfig();
|
SaveParameterConfig();
|
||||||
UpdateParameterSummaries();
|
UpdateParameterSummaries();
|
||||||
UpdateDisplacementDisplay(_isDisplacementRunning ? "状态:测试中" : _finalDisplacement.HasValue ? "状态:已停止" : "状态:待启动");
|
UpdateDisplacementDisplay();
|
||||||
UpdateSpeedTorqueDisplay(_isSpeedTorqueRunning ? "状态:测试中" : _finalSpeed.HasValue ? "状态:已停止" : "状态:待启动");
|
UpdateSpeedTorqueDisplay();
|
||||||
await AutoStopIfSetpointReachedAsync();
|
await AutoStopIfSetpointReachedAsync();
|
||||||
await AutoStopIfSpeedTorqueProtectionReachedAsync();
|
await AutoStopIfSpeedTorqueProtectionReachedAsync();
|
||||||
_hasLoadedParameterConfigFromPlc = true;
|
_hasLoadedParameterConfigFromPlc = true;
|
||||||
@@ -2055,7 +2026,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await MoveSpeedTorqueDisplacementAsync("状态:前进");
|
await MoveSpeedTorqueDisplacementAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task BackwardSpeedTorqueAsync()
|
private async Task BackwardSpeedTorqueAsync()
|
||||||
@@ -2065,7 +2036,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await MoveSpeedTorqueDisplacementAsync("状态:后退");
|
await MoveSpeedTorqueDisplacementAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task TriggerVentValveAsync()
|
private async Task TriggerVentValveAsync()
|
||||||
@@ -2085,7 +2056,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
|
|
||||||
if (!TryReadNonNegative(input, fieldName, out double value, out string error))
|
if (!TryReadNonNegative(input, fieldName, out double value, out string error))
|
||||||
{
|
{
|
||||||
SetTestPageInputStatus(parameter, error);
|
SetTestPageInputStatus(error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2102,7 +2073,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
if (!TryReadNonNegative(input, fieldName, out double value, out string error)
|
if (!TryReadNonNegative(input, fieldName, out double value, out string error)
|
||||||
|| !CanScaleTenthsToPlc(value, fieldName, out error))
|
|| !CanScaleTenthsToPlc(value, fieldName, out error))
|
||||||
{
|
{
|
||||||
SetTestPageInputStatus(parameter, error);
|
SetTestPageInputStatus(error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2126,7 +2097,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
SetTestPageInputStatus(parameter, $"{fieldName}自动写入 D{registerAddress} 失败:{ex.Message}");
|
SetTestPageInputStatus($"{fieldName}自动写入 D{registerAddress} 失败:{ex.Message}");
|
||||||
Log.Error(ex, "{FieldName}自动写入失败,D{RegisterAddress}={Value}", fieldName, registerAddress, value);
|
Log.Error(ex, "{FieldName}自动写入失败,D{RegisterAddress}={Value}", fieldName, registerAddress, value);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@@ -2149,7 +2120,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
SetTestPageInputStatus(parameter, $"{fieldName}自动写入 D{registerAddress} 失败:{ex.Message}");
|
SetTestPageInputStatus($"{fieldName}自动写入 D{registerAddress} 失败:{ex.Message}");
|
||||||
Log.Error(ex, "{FieldName}自动写入失败,D{RegisterAddress}={Value}", fieldName, registerAddress, value);
|
Log.Error(ex, "{FieldName}自动写入失败,D{RegisterAddress}={Value}", fieldName, registerAddress, value);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@@ -2176,7 +2147,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
UpdateTorqueCurveStatus();
|
UpdateTorqueCurveStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
SetTestPageInputStatus(parameter, $"{fieldName}已自动写入并回读确认 D{registerAddress}={FormatConfigNumber(confirmedValue)}");
|
SetTestPageInputStatus($"{fieldName}已自动写入并回读确认 D{registerAddress}={FormatConfigNumber(confirmedValue)}");
|
||||||
Log.Information("{FieldName}自动写入并回读成功,D{RegisterAddress}={Value}", fieldName, registerAddress, confirmedValue);
|
Log.Information("{FieldName}自动写入并回读成功,D{RegisterAddress}={Value}", fieldName, registerAddress, confirmedValue);
|
||||||
|
|
||||||
if (parameter is TestPageInputParameter.AxialPullForceSetpoint or TestPageInputParameter.AxialJumpForceSetpoint)
|
if (parameter is TestPageInputParameter.AxialPullForceSetpoint or TestPageInputParameter.AxialJumpForceSetpoint)
|
||||||
@@ -2235,24 +2206,17 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetTestPageInputStatus(TestPageInputParameter parameter, string message)
|
private void SetTestPageInputStatus(string message)
|
||||||
{
|
{
|
||||||
ParameterStatusText = message;
|
ParameterStatusText = message;
|
||||||
if (parameter == TestPageInputParameter.NoLoadSpeedSetting)
|
|
||||||
{
|
|
||||||
NoLoadSpeedStatusText = $"状态:{message}";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
StatusText = message;
|
StatusText = message;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private async Task SaveNoLoadSpeedSettingAsync()
|
private async Task SaveNoLoadSpeedSettingAsync()
|
||||||
{
|
{
|
||||||
if (!TryReadNonNegative(NoLoadSpeedSettingInput, "空载转速设置", out double setting, out string error))
|
if (!TryReadNonNegative(NoLoadSpeedSettingInput, "空载转速设置", out double setting, out string error))
|
||||||
{
|
{
|
||||||
NoLoadSpeedStatusText = $"状态:{error}";
|
StatusText = error;
|
||||||
Log.Warning("空载转速设置被阻止:{ValidationError}", error);
|
Log.Warning("空载转速设置被阻止:{ValidationError}", error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2268,20 +2232,18 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
{
|
{
|
||||||
if (_activeNoLoadSpeedRun is not null)
|
if (_activeNoLoadSpeedRun is not null)
|
||||||
{
|
{
|
||||||
NoLoadSpeedStatusText = "状态:空载转速正在记录,请稍候";
|
StatusText = "空载转速正在记录,请稍候。";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!await PulsePlcAsync(NoLoadSpeedRecordCoil, "记录空载转速"))
|
if (!await PulsePlcAsync(NoLoadSpeedRecordCoil, "记录空载转速"))
|
||||||
{
|
{
|
||||||
NoLoadSpeedStatusText = "状态:记录指令发送失败";
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PrepareSessionForNewRun();
|
PrepareSessionForNewRun();
|
||||||
_activeNoLoadSpeedRun = CreateTestRun("空载转速测试");
|
_activeNoLoadSpeedRun = CreateTestRun("空载转速测试");
|
||||||
_noLoadCaptureDeadline = DateTime.Now.Add(NoLoadCaptureDuration);
|
_noLoadCaptureDeadline = DateTime.Now.Add(NoLoadCaptureDuration);
|
||||||
NoLoadSpeedStatusText = $"状态:已触发 M{NoLoadSpeedRecordCoil},正在完整记录 PLC 更新";
|
|
||||||
UpdateDataCaptureStatus();
|
UpdateDataCaptureStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2289,7 +2251,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
{
|
{
|
||||||
if (_isSpeedTorqueRunning)
|
if (_isSpeedTorqueRunning)
|
||||||
{
|
{
|
||||||
UpdateSpeedTorqueDisplay("状态:测试已在运行");
|
UpdateSpeedTorqueDisplay();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2300,7 +2262,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
|
|
||||||
if (!TryGetRealtimeSpeed(out _) || !TryGetRealtimeTorque(out _))
|
if (!TryGetRealtimeSpeed(out _) || !TryGetRealtimeTorque(out _))
|
||||||
{
|
{
|
||||||
UpdateSpeedTorqueDisplay("状态:读数无效");
|
UpdateSpeedTorqueDisplay();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2315,7 +2277,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
ClearTorqueSamples();
|
ClearTorqueSamples();
|
||||||
AppendTorqueSample(GetScaledTorque(), _speedTorqueStartedAt.Value);
|
AppendTorqueSample(GetScaledTorque(), _speedTorqueStartedAt.Value);
|
||||||
_maxSpeedTorqueDisplacement = Math.Max(_maxSpeedTorqueDisplacement, Math.Abs(_speedTorqueDisplacement));
|
_maxSpeedTorqueDisplacement = Math.Max(_maxSpeedTorqueDisplacement, Math.Abs(_speedTorqueDisplacement));
|
||||||
UpdateSpeedTorqueDisplay("状态:测试中");
|
UpdateSpeedTorqueDisplay();
|
||||||
Log.Information("转速/扭矩测试已启动,起始转速 {Speed},起始扭矩 {Torque},起始位移 {Displacement}", _realtimeSpeed, GetScaledTorque(), _speedTorqueDisplacement);
|
Log.Information("转速/扭矩测试已启动,起始转速 {Speed},起始扭矩 {Torque},起始位移 {Displacement}", _realtimeSpeed, GetScaledTorque(), _speedTorqueDisplacement);
|
||||||
await AutoStopIfSpeedTorqueProtectionReachedAsync();
|
await AutoStopIfSpeedTorqueProtectionReachedAsync();
|
||||||
}
|
}
|
||||||
@@ -2334,7 +2296,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
{
|
{
|
||||||
_isSpeedTorqueResetting = true;
|
_isSpeedTorqueResetting = true;
|
||||||
SpeedTorqueResetButtonText = "复位中";
|
SpeedTorqueResetButtonText = "复位中";
|
||||||
UpdateSpeedTorqueDisplay("状态:复位中");
|
UpdateSpeedTorqueDisplay();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -2349,7 +2311,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
"转速/扭矩复位",
|
"转速/扭矩复位",
|
||||||
UpdateSpeedTorqueResetState))
|
UpdateSpeedTorqueResetState))
|
||||||
{
|
{
|
||||||
UpdateSpeedTorqueDisplay("状态:复位完成未确认");
|
UpdateSpeedTorqueDisplay();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2367,7 +2329,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
_speedTorqueStartedAt = null;
|
_speedTorqueStartedAt = null;
|
||||||
_hasShownSpeedTorqueEndWarnings = false;
|
_hasShownSpeedTorqueEndWarnings = false;
|
||||||
ClearTorqueSamples();
|
ClearTorqueSamples();
|
||||||
UpdateSpeedTorqueDisplay("状态:已复位");
|
UpdateSpeedTorqueDisplay();
|
||||||
Log.Information("转速/扭矩复位完成,零点 {ZeroPosition}", _speedTorqueZero);
|
Log.Information("转速/扭矩复位完成,零点 {ZeroPosition}", _speedTorqueZero);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@@ -2384,7 +2346,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await MoveAxialDisplacementAsync("状态:前进");
|
await MoveAxialDisplacementAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task BackwardDisplacementAsync()
|
private async Task BackwardDisplacementAsync()
|
||||||
@@ -2394,14 +2356,14 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await MoveAxialDisplacementAsync("状态:后退");
|
await MoveAxialDisplacementAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task StartDisplacementAsync()
|
private async Task StartDisplacementAsync()
|
||||||
{
|
{
|
||||||
if (_isDisplacementRunning)
|
if (_isDisplacementRunning)
|
||||||
{
|
{
|
||||||
UpdateDisplacementDisplay("状态:测试已在运行");
|
UpdateDisplacementDisplay();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2412,7 +2374,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
|
|
||||||
if (!TryGetDialValue(out _) || !TryGetAxialForceValue(out _))
|
if (!TryGetDialValue(out _) || !TryGetAxialForceValue(out _))
|
||||||
{
|
{
|
||||||
UpdateDisplacementDisplay("状态:读数无效");
|
UpdateDisplacementDisplay();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2422,7 +2384,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
_finalDisplacement = null;
|
_finalDisplacement = null;
|
||||||
_finalAxialForce = null;
|
_finalAxialForce = null;
|
||||||
_maxDisplacement = Math.Abs(_relativeDisplacement);
|
_maxDisplacement = Math.Abs(_relativeDisplacement);
|
||||||
UpdateDisplacementDisplay("状态:测试中");
|
UpdateDisplacementDisplay();
|
||||||
Log.Information("轴向测试已启动,起始位移 {Displacement},起始轴向力 {AxialForce}", _relativeDisplacement, GetScaledAxialForce());
|
Log.Information("轴向测试已启动,起始位移 {Displacement},起始轴向力 {AxialForce}", _relativeDisplacement, GetScaledAxialForce());
|
||||||
await AutoStopIfSetpointReachedAsync();
|
await AutoStopIfSetpointReachedAsync();
|
||||||
}
|
}
|
||||||
@@ -2441,7 +2403,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
{
|
{
|
||||||
_isDisplacementResetting = true;
|
_isDisplacementResetting = true;
|
||||||
DisplacementResetButtonText = "复位中";
|
DisplacementResetButtonText = "复位中";
|
||||||
UpdateDisplacementDisplay("状态:复位中");
|
UpdateDisplacementDisplay();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -2456,7 +2418,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
"轴向复位",
|
"轴向复位",
|
||||||
UpdateAxialResetState))
|
UpdateAxialResetState))
|
||||||
{
|
{
|
||||||
UpdateDisplacementDisplay("状态:复位完成未确认");
|
UpdateDisplacementDisplay();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2464,7 +2426,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
PersistCurrentPayloadSnapshot("轴向复位前");
|
PersistCurrentPayloadSnapshot("轴向复位前");
|
||||||
if (!TryGetDialValue(out double currentDial))
|
if (!TryGetDialValue(out double currentDial))
|
||||||
{
|
{
|
||||||
UpdateDisplacementDisplay("状态:读数无效");
|
UpdateDisplacementDisplay();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2475,7 +2437,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
_finalAxialForce = null;
|
_finalAxialForce = null;
|
||||||
await UpdateAxialForceFromInputAsync();
|
await UpdateAxialForceFromInputAsync();
|
||||||
_isDisplacementRunning = false;
|
_isDisplacementRunning = false;
|
||||||
UpdateDisplacementDisplay("状态:已复位");
|
UpdateDisplacementDisplay();
|
||||||
Log.Information("轴向复位完成,千分表零点 {DialZero}", _dialZero);
|
Log.Information("轴向复位完成,千分表零点 {DialZero}", _dialZero);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@@ -2547,7 +2509,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
await MoveAxialDisplacementAsync($"状态:{actionName.Replace("轴向", string.Empty)}");
|
await MoveAxialDisplacementAsync();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2558,7 +2520,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
await MoveSpeedTorqueDisplacementAsync($"状态:{actionName.Replace("转速/扭矩", string.Empty)}");
|
await MoveSpeedTorqueDisplacementAsync();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2578,11 +2540,11 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task MoveSpeedTorqueDisplacementAsync(string status)
|
private async Task MoveSpeedTorqueDisplacementAsync()
|
||||||
{
|
{
|
||||||
if (_parameterConfig.SpeedTorqueManualDisplacement <= 0)
|
if (_parameterConfig.SpeedTorqueManualDisplacement <= 0)
|
||||||
{
|
{
|
||||||
UpdateSpeedTorqueDisplay("状态:手动位移为 0");
|
UpdateSpeedTorqueDisplay();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2592,15 +2554,15 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
_finalSpeedTorqueDisplacement = null;
|
_finalSpeedTorqueDisplacement = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateSpeedTorqueDisplay(_isSpeedTorqueRunning ? "状态:测试中" : status);
|
UpdateSpeedTorqueDisplay();
|
||||||
await AutoStopIfSpeedTorqueProtectionReachedAsync();
|
await AutoStopIfSpeedTorqueProtectionReachedAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task MoveAxialDisplacementAsync(string status)
|
private async Task MoveAxialDisplacementAsync()
|
||||||
{
|
{
|
||||||
if (_parameterConfig.AxialManualDisplacement <= 0)
|
if (_parameterConfig.AxialManualDisplacement <= 0)
|
||||||
{
|
{
|
||||||
UpdateDisplacementDisplay("状态:手动位移为 0");
|
UpdateDisplacementDisplay();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2611,7 +2573,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
_finalAxialForce = null;
|
_finalAxialForce = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateDisplacementDisplay(_isDisplacementRunning ? "状态:测试中" : status);
|
UpdateDisplacementDisplay();
|
||||||
await AutoStopIfSetpointReachedAsync();
|
await AutoStopIfSetpointReachedAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2623,7 +2585,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
_axialForce = force;
|
_axialForce = force;
|
||||||
UpdateDisplacementDisplay(_isDisplacementRunning ? "状态:测试中" : _finalDisplacement.HasValue ? "状态:已停止" : "状态:待启动");
|
UpdateDisplacementDisplay();
|
||||||
await AutoStopIfSetpointReachedAsync();
|
await AutoStopIfSetpointReachedAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2677,7 +2639,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
{
|
{
|
||||||
if (!_isDisplacementRunning && _finalDisplacement.HasValue)
|
if (!_isDisplacementRunning && _finalDisplacement.HasValue)
|
||||||
{
|
{
|
||||||
UpdateDisplacementDisplay(status);
|
UpdateDisplacementDisplay();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2686,7 +2648,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
_finalAxialForce = GetScaledAxialForce();
|
_finalAxialForce = GetScaledAxialForce();
|
||||||
FinalizeDisplacementRun(status);
|
FinalizeDisplacementRun(status);
|
||||||
PersistCurrentPayloadSnapshot("轴向测试停止");
|
PersistCurrentPayloadSnapshot("轴向测试停止");
|
||||||
UpdateDisplacementDisplay(status);
|
UpdateDisplacementDisplay();
|
||||||
Log.Information("轴向测试停止:{Status},最终位移 {FinalDisplacement},最终轴向力 {FinalAxialForce}", status, _finalDisplacement, _finalAxialForce);
|
Log.Information("轴向测试停止:{Status},最终位移 {FinalDisplacement},最终轴向力 {FinalAxialForce}", status, _finalDisplacement, _finalAxialForce);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2715,7 +2677,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
_realtimeSpeed = speed;
|
_realtimeSpeed = speed;
|
||||||
UpdateSpeedTorqueDisplay(_isSpeedTorqueRunning ? "状态:测试中" : _finalSpeed.HasValue ? "状态:已停止" : "状态:待启动");
|
UpdateSpeedTorqueDisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task UpdateRealtimeTorqueFromInputAsync()
|
private async Task UpdateRealtimeTorqueFromInputAsync()
|
||||||
@@ -2726,7 +2688,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
_realtimeTorque = torque;
|
_realtimeTorque = torque;
|
||||||
UpdateSpeedTorqueDisplay(_isSpeedTorqueRunning ? "状态:测试中" : _finalTorque.HasValue ? "状态:已停止" : "状态:待启动");
|
UpdateSpeedTorqueDisplay();
|
||||||
await AutoStopIfSpeedTorqueProtectionReachedAsync();
|
await AutoStopIfSpeedTorqueProtectionReachedAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2772,7 +2734,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
{
|
{
|
||||||
if (!TryGetRealtimeSpeed(out double speed) || !TryGetRealtimeTorque(out double torque))
|
if (!TryGetRealtimeSpeed(out double speed) || !TryGetRealtimeTorque(out double torque))
|
||||||
{
|
{
|
||||||
UpdateSpeedTorqueDisplay("状态:读数无效");
|
UpdateSpeedTorqueDisplay();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2784,7 +2746,7 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
_finalSpeedTorqueDisplacement = _speedTorqueDisplacement;
|
_finalSpeedTorqueDisplacement = _speedTorqueDisplacement;
|
||||||
FinalizeSpeedTorqueRun(status);
|
FinalizeSpeedTorqueRun(status);
|
||||||
PersistCurrentPayloadSnapshot("转速/扭矩测试停止");
|
PersistCurrentPayloadSnapshot("转速/扭矩测试停止");
|
||||||
UpdateSpeedTorqueDisplay(status);
|
UpdateSpeedTorqueDisplay();
|
||||||
Log.Information("转速/扭矩测试停止:{Status},最终位移 {FinalDisplacement},最终转速 {FinalSpeed},最终扭矩 {FinalTorque}", status, _finalSpeedTorqueDisplacement, _finalSpeed, _finalTorque);
|
Log.Information("转速/扭矩测试停止:{Status},最终位移 {FinalDisplacement},最终转速 {FinalSpeed},最终扭矩 {FinalTorque}", status, _finalSpeedTorqueDisplacement, _finalSpeed, _finalTorque);
|
||||||
await ShowSpeedTorqueEndWarningsAsync();
|
await ShowSpeedTorqueEndWarningsAsync();
|
||||||
}
|
}
|
||||||
@@ -2867,60 +2829,20 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
|
|
||||||
private void UpdateAxialResetState(bool enabled, bool done)
|
private void UpdateAxialResetState(bool enabled, bool done)
|
||||||
{
|
{
|
||||||
_isAxialResetEnabled = enabled;
|
|
||||||
_isAxialResetDone = done;
|
|
||||||
DisplacementResetButtonText = _isDisplacementResetting || enabled ? "复位中" : "复位";
|
DisplacementResetButtonText = _isDisplacementResetting || enabled ? "复位中" : "复位";
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateSpeedTorqueResetState(bool enabled, bool done)
|
private void UpdateSpeedTorqueResetState(bool enabled, bool done)
|
||||||
{
|
{
|
||||||
_isSpeedTorqueResetEnabled = enabled;
|
|
||||||
_isSpeedTorqueResetDone = done;
|
|
||||||
SpeedTorqueResetButtonText = _isSpeedTorqueResetting || enabled ? "复位中" : "复位";
|
SpeedTorqueResetButtonText = _isSpeedTorqueResetting || enabled ? "复位中" : "复位";
|
||||||
}
|
}
|
||||||
|
|
||||||
private string ResolveDisplacementStatus(string fallback)
|
|
||||||
{
|
|
||||||
if (_isDisplacementResetting || _isAxialResetEnabled)
|
|
||||||
{
|
|
||||||
return "状态:复位中";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!_isDisplacementRunning && _isAxialResetDone && IsResetOrIdleStatus(fallback))
|
|
||||||
{
|
|
||||||
return "状态:已复位";
|
|
||||||
}
|
|
||||||
|
|
||||||
return fallback;
|
|
||||||
}
|
|
||||||
|
|
||||||
private string ResolveSpeedTorqueStatus(string fallback)
|
|
||||||
{
|
|
||||||
if (_isSpeedTorqueResetting || _isSpeedTorqueResetEnabled)
|
|
||||||
{
|
|
||||||
return "状态:复位中";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!_isSpeedTorqueRunning && _isSpeedTorqueResetDone && IsResetOrIdleStatus(fallback))
|
|
||||||
{
|
|
||||||
return "状态:已复位";
|
|
||||||
}
|
|
||||||
|
|
||||||
return fallback;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool IsResetOrIdleStatus(string status)
|
|
||||||
{
|
|
||||||
return status.Contains("复位", StringComparison.Ordinal)
|
|
||||||
|| status.Contains("待启动", StringComparison.Ordinal);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool ReadCoilValue(IReadOnlyDictionary<ushort, bool> coilValues, ushort address)
|
private static bool ReadCoilValue(IReadOnlyDictionary<ushort, bool> coilValues, ushort address)
|
||||||
{
|
{
|
||||||
return coilValues.TryGetValue(address, out bool value) && value;
|
return coilValues.TryGetValue(address, out bool value) && value;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateDisplacementDisplay(string status)
|
private void UpdateDisplacementDisplay()
|
||||||
{
|
{
|
||||||
RelativeDisplacementText = $"{FormatDisplacement(_relativeDisplacement)} mm";
|
RelativeDisplacementText = $"{FormatDisplacement(_relativeDisplacement)} mm";
|
||||||
AxialAxisPositionText = $"{FormatDisplacement(_axialAxisPosition)} mm";
|
AxialAxisPositionText = $"{FormatDisplacement(_axialAxisPosition)} mm";
|
||||||
@@ -2930,10 +2852,9 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
FinalDisplacementText = _finalDisplacement.HasValue ? $"{FormatDisplacement(_finalDisplacement.Value)} mm" : "--";
|
FinalDisplacementText = _finalDisplacement.HasValue ? $"{FormatDisplacement(_finalDisplacement.Value)} mm" : "--";
|
||||||
AxialForceText = $"{FormatForce(GetScaledAxialForce())} N";
|
AxialForceText = $"{FormatForce(GetScaledAxialForce())} N";
|
||||||
FinalAxialForceText = _finalAxialForce.HasValue ? $"{FormatForce(_finalAxialForce.Value)} N" : "--";
|
FinalAxialForceText = _finalAxialForce.HasValue ? $"{FormatForce(_finalAxialForce.Value)} N" : "--";
|
||||||
DisplacementStatusText = status;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateSpeedTorqueDisplay(string status)
|
private void UpdateSpeedTorqueDisplay()
|
||||||
{
|
{
|
||||||
RealtimeSpeedText = $"{FormatSpeed(_realtimeSpeed)} r/min";
|
RealtimeSpeedText = $"{FormatSpeed(_realtimeSpeed)} r/min";
|
||||||
RealtimeTorqueText = $"{FormatTorque(GetScaledTorque())} {TorqueUnit}";
|
RealtimeTorqueText = $"{FormatTorque(GetScaledTorque())} {TorqueUnit}";
|
||||||
@@ -2946,7 +2867,6 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
SpeedTorquePeakTorqueText = $"{FormatTorque(_speedTorquePeakTorque)} {TorqueUnit}";
|
SpeedTorquePeakTorqueText = $"{FormatTorque(_speedTorquePeakTorque)} {TorqueUnit}";
|
||||||
SpeedTorqueMaxDisplacementText = $"{FormatDisplacement(_maxSpeedTorqueDisplacement)} mm";
|
SpeedTorqueMaxDisplacementText = $"{FormatDisplacement(_maxSpeedTorqueDisplacement)} mm";
|
||||||
SpeedTorqueFinalDisplacementText = _finalSpeedTorqueDisplacement.HasValue ? $"{FormatDisplacement(_finalSpeedTorqueDisplacement.Value)} mm" : "--";
|
SpeedTorqueFinalDisplacementText = _finalSpeedTorqueDisplacement.HasValue ? $"{FormatDisplacement(_finalSpeedTorqueDisplacement.Value)} mm" : "--";
|
||||||
SpeedTorqueStatusText = status;
|
|
||||||
UpdateTorqueCurveStatus();
|
UpdateTorqueCurveStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3260,7 +3180,6 @@ public sealed class MainWindowViewModel : ObservableObject
|
|||||||
_completedRuns.Add(_activeNoLoadSpeedRun);
|
_completedRuns.Add(_activeNoLoadSpeedRun);
|
||||||
_activeNoLoadSpeedRun = null;
|
_activeNoLoadSpeedRun = null;
|
||||||
_noLoadCaptureDeadline = null;
|
_noLoadCaptureDeadline = null;
|
||||||
NoLoadSpeedStatusText = "状态:空载转速完整记录已保存";
|
|
||||||
PersistCurrentPayloadSnapshot("空载转速记录完成");
|
PersistCurrentPayloadSnapshot("空载转速记录完成");
|
||||||
UpdateDataCaptureStatus();
|
UpdateDataCaptureStatus();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user