This commit is contained in:
@@ -91,6 +91,6 @@ public class CalibrationCoefficients
|
|||||||
public ushort PressureProtection { get; set; }
|
public ushort PressureProtection { get; set; }
|
||||||
public ushort TemperatureCoefficient { get; set; }
|
public ushort TemperatureCoefficient { get; set; }
|
||||||
public ushort ResistanceCoefficient { get; set; }
|
public ushort ResistanceCoefficient { get; set; }
|
||||||
public double ThermalConductivityCorrection { get; set; } = 40.5f;//蒸馏水 比热率修正
|
public double ThermalConductivityCorrection { get; set; } = 47.305349f;//蒸馏水 比热率修正
|
||||||
public double ThermalDiffusivityCorrection { get; set; } = 0.53;//导热率修正
|
public double ThermalDiffusivityCorrection { get; set; } = 0.312912;//导热率修正
|
||||||
}
|
}
|
||||||
@@ -158,7 +158,8 @@ public partial class D7896ViewModel : ObservableObject
|
|||||||
// }
|
// }
|
||||||
// catch { return 0; }
|
// catch { return 0; }
|
||||||
//}
|
//}
|
||||||
|
// 在类成员变量区域添加
|
||||||
|
private int currentSettleMs = 200; // 电流稳定等待时间(毫秒)
|
||||||
[RelayCommand]
|
[RelayCommand]
|
||||||
private async Task StartTestAsync()
|
private async Task StartTestAsync()
|
||||||
{
|
{
|
||||||
@@ -334,14 +335,18 @@ public partial class D7896ViewModel : ObservableObject
|
|||||||
await _th1963Ustd.PrepareBatchAsync(samples);
|
await _th1963Ustd.PrepareBatchAsync(samples);
|
||||||
await _th1953Ustd.PrepareBatchAsync(samples);
|
await _th1953Ustd.PrepareBatchAsync(samples);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
await _plcService.WriteCoilAsync(_config.PlcRegisterAddresses.StartCommand, true);
|
await _plcService.WriteCoilAsync(_config.PlcRegisterAddresses.StartCommand, true);
|
||||||
try { await Task.Delay(5, _testCts.Token); } catch (OperationCanceledException) { break; }
|
// 等待电流稳定(不触发采集)
|
||||||
|
try { await Task.Delay(currentSettleMs, _testCts.Token); } catch (OperationCanceledException) { break; }
|
||||||
|
// 电流稳定后,触发采集
|
||||||
await Task.WhenAll(_th1963Ustd.TriggerAsync(), _th1953Ustd.TriggerAsync());
|
await Task.WhenAll(_th1963Ustd.TriggerAsync(), _th1953Ustd.TriggerAsync());
|
||||||
|
// 继续加热剩余时间(加热总时间 = 稳定等待时间 + 有效加热时间)
|
||||||
try { await Task.Delay((int)(heatingDuration * 1000), _testCts.Token); } catch (OperationCanceledException) { break; }
|
try { await Task.Delay((int)(heatingDuration * 1000), _testCts.Token); } catch (OperationCanceledException) { break; }
|
||||||
await _plcService.WriteCoilAsync(_config.PlcRegisterAddresses.StartCommand, false);
|
await _plcService.WriteCoilAsync(_config.PlcRegisterAddresses.StartCommand, false);
|
||||||
|
|
||||||
|
|
||||||
int remainingMs = (int)((totalDuration - heatingDuration) * 1000) + 100;
|
int remainingMs = (int)((totalDuration - heatingDuration) * 1000) + 100;
|
||||||
try { await Task.Delay(remainingMs, _testCts.Token); } catch (OperationCanceledException) { break; }
|
try { await Task.Delay(remainingMs, _testCts.Token); } catch (OperationCanceledException) { break; }
|
||||||
|
|
||||||
@@ -439,7 +444,7 @@ public partial class D7896ViewModel : ObservableObject
|
|||||||
// 测量间隔(即使舍弃也等待,让样品恢复)
|
// 测量间隔(即使舍弃也等待,让样品恢复)
|
||||||
if (validCount < requiredCount && !_stopRequested && attemptCount < maxAttempts)
|
if (validCount < requiredCount && !_stopRequested && attemptCount < maxAttempts)
|
||||||
{
|
{
|
||||||
try { await Task.Delay(_config.TestParameters.IntervalSeconds * 1000, _testCts.Token); } catch (OperationCanceledException) { break; }
|
try { await Task.Delay(_config.TestParameters.IntervalSeconds * 100, _testCts.Token); } catch (OperationCanceledException) { break; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -506,12 +511,13 @@ public partial class D7896ViewModel : ObservableObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 滑动平均平滑(窗口5)
|
// 滑动平均平滑(窗口大小改为 11)
|
||||||
|
int windowSize = 40; // 原为 5
|
||||||
double[] smoothDeltaT = new double[n];
|
double[] smoothDeltaT = new double[n];
|
||||||
for (int i = 0; i < n; i++)
|
for (int i = 0; i < n; i++)
|
||||||
{
|
{
|
||||||
int start = Math.Max(0, i - 2);
|
int start = Math.Max(0, i - windowSize / 2);
|
||||||
int end = Math.Min(n - 1, i + 2);
|
int end = Math.Min(n - 1, i + windowSize / 2);
|
||||||
double sum = 0; int cnt = 0;
|
double sum = 0; int cnt = 0;
|
||||||
for (int j = start; j <= end; j++)
|
for (int j = start; j <= end; j++)
|
||||||
if (!double.IsNaN(deltaT[j])) { sum += deltaT[j]; cnt++; }
|
if (!double.IsNaN(deltaT[j])) { sum += deltaT[j]; cnt++; }
|
||||||
|
|||||||
Reference in New Issue
Block a user