更新290

This commit is contained in:
GukSang.Jin
2026-05-20 15:26:04 +08:00
parent b79c34bba7
commit 65815607bd
3 changed files with 8 additions and 24 deletions

View File

@@ -19,6 +19,7 @@ namespace TabletTester2025.Services
{ {
72 => 40 + (float)_rand.NextDouble() * 20, // 硬度最大采集力 72 => 40 + (float)_rand.NextDouble() * 20, // 硬度最大采集力
100 => 40 + (float)_rand.NextDouble() * 20, // 硬度 40~60N 100 => 40 + (float)_rand.NextDouble() * 20, // 硬度 40~60N
1314 => 40 + (float)_rand.NextDouble() * 20, // 硬度实时力显示
82 => _rand.Next(0, 101), // 脆碎实时圈数 82 => _rand.Next(0, 101), // 脆碎实时圈数
410 => 100f, // 脆碎圈数 410 => 100f, // 脆碎圈数
412 => 5.0f + (float)_rand.NextDouble() * 2, // 脆碎度前重 412 => 5.0f + (float)_rand.NextDouble() * 2, // 脆碎度前重

View File

@@ -1529,7 +1529,7 @@ namespace TabletTester2025.ViewModels
_hardnessGlobalTimer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(500) }; _hardnessGlobalTimer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(500) };
_hardnessGlobalTimer.Tick += async (_, _) => _hardnessGlobalTimer.Tick += async (_, _) =>
{ {
if (_isReadingHardnessLiveForce || _isHardnessRunning) if (_isReadingHardnessLiveForce)
return; return;
try try
@@ -1621,9 +1621,9 @@ namespace TabletTester2025.ViewModels
if (completeWasActiveBeforeStart) if (completeWasActiveBeforeStart)
await WaitForCoilStateAsync(completeCoil, false, TimeSpan.FromSeconds(10), "硬度完成信号未复位"); await WaitForCoilStateAsync(completeCoil, false, TimeSpan.FromSeconds(10), "硬度完成信号未复位");
double value = await WaitForHardnessSamplePeakAsync(completeCoil); await WaitForHardnessSampleCompleteAsync(completeCoil);
double value = await ReadHardnessMaxCaptureAsync();
AddHardnessSample(value); AddHardnessSample(value);
await ReadHardnessMaxCaptureAsync();
ApplyHardnessStatistics(count); ApplyHardnessStatistics(count);
await TryWaitForCoilStateAsync(completeCoil, false, TimeSpan.FromSeconds(2)); await TryWaitForCoilStateAsync(completeCoil, false, TimeSpan.FromSeconds(2));
} }
@@ -1631,7 +1631,6 @@ namespace TabletTester2025.ViewModels
if (_hardnessResults.Count < count) if (_hardnessResults.Count < count)
throw new InvalidOperationException("硬度测试已停止,未保存结果"); throw new InvalidOperationException("硬度测试已停止,未保存结果");
await ReadHardnessMaxCaptureAsync();
ApplyHardnessStatistics(count); ApplyHardnessStatistics(count);
AddHardnessGroupSummaryRow(); AddHardnessGroupSummaryRow();
resultReady = true; resultReady = true;
@@ -1712,28 +1711,14 @@ namespace TabletTester2025.ViewModels
HardnessSudu = value; HardnessSudu = value;
} }
private async Task<double> WaitForHardnessSamplePeakAsync(ushort completeCoil) private async Task WaitForHardnessSampleCompleteAsync(ushort completeCoil)
{ {
double peak = 0;
DateTime deadline = DateTime.Now.AddSeconds(120); DateTime deadline = DateTime.Now.AddSeconds(120);
while (_isHardnessRunning && DateTime.Now <= deadline) while (_isHardnessRunning && DateTime.Now <= deadline)
{ {
double liveForce = await ReadHardnessLiveForceAsync();
if (liveForce > peak)
peak = liveForce;
if (await _plc.ReadCoilAsync(completeCoil)) if (await _plc.ReadCoilAsync(completeCoil))
{ return;
double finalForce = await ReadHardnessLiveForceAsync();
if (finalForce > peak)
peak = finalForce;
if (peak <= 0)
throw new InvalidOperationException("硬度实时力数据异常");
return peak;
}
await Task.Delay(100); await Task.Delay(100);
} }
@@ -1812,6 +1797,8 @@ namespace TabletTester2025.ViewModels
HardnessAvg = stats.Average; HardnessAvg = stats.Average;
HardnessAverageDeviation = stats.AverageDeviation; HardnessAverageDeviation = stats.AverageDeviation;
HardnessRSD = stats.RsdPercent; HardnessRSD = stats.RsdPercent;
HardnessMax = stats.Maximum;
HardnessMin = stats.Minimum;
HardnessCurrentCount = stats.Count; HardnessCurrentCount = stats.Count;
HardnessPass = stats.IsPass; HardnessPass = stats.IsPass;

View File

@@ -571,10 +571,6 @@
<TextBlock Text="溶出2间隔取样时间(min)" Style="{StaticResource ParamLabel}"/> <TextBlock Text="溶出2间隔取样时间(min)" Style="{StaticResource ParamLabel}"/>
<TextBlock Text="{Binding Dissolution2SampleIntervalMin, StringFormat=F0}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/> <TextBlock Text="{Binding Dissolution2SampleIntervalMin, StringFormat=F0}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
</StackPanel> </StackPanel>
<StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="30min最低溶出度Q(%)" Style="{StaticResource ParamLabel}"/>
<TextBlock Text="{Binding DissolutionMinPercentAt30Min, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
</StackPanel>
<StackPanel Style="{StaticResource ParamRow}"> <StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="介质温度(℃)" Style="{StaticResource ParamLabel}"/> <TextBlock Text="介质温度(℃)" Style="{StaticResource ParamLabel}"/>
<TextBlock Text="{Binding DisintegrationTemp, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/> <TextBlock Text="{Binding DisintegrationTemp, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>