This commit is contained in:
2026-05-18 11:11:53 +08:00
parent 41435205a4
commit bcf689c0fb
3 changed files with 17 additions and 41 deletions

View File

@@ -7,7 +7,7 @@
public byte SlaveId { get; set; }
// 硬度
//public ushort HardnessValue { get; set; }
public ushort HardnessMax { get; set; }
public ushort HardnessStartCoil { get; set; }
public ushort HardnessCompleteCoil { get; set; }

View File

@@ -15,6 +15,7 @@ namespace TabletTester2025.Models
public double HardnessMax { get; set; }
public double HardnessMin { get; set; }
public int HardnessTestCount { get; set; }
//public double HardnessMax { get; set; }
// 脆碎度
public double FriabilityLoss { get; set; }

View File

@@ -69,7 +69,7 @@ namespace TabletTester2025.ViewModels
[ObservableProperty] private double _hardnessSudu = 300;// 硬度速度输入mm/min
[ObservableProperty] private double _hardnessWeiyi = 100; // 硬度位移输入mm
//[ObservableProperty] private double _hardnessPoSun = 400; // 硬度破损判定输入N
//[ObservableProperty] private int _hardnessMaxN = 72; //最大力采集
[ObservableProperty] private double _hardnessMaxN = 72; //最大力采集
@@ -813,61 +813,37 @@ namespace TabletTester2025.ViewModels
private async Task RunHardnessAsync()
{
// 点击启动才执行一次
if (Phase != TestPhase.Idle) return;
CurrentTest = TestType.Hardness;
Phase = TestPhase.Running;
HardnessPass = false;
_hardnessResults.Clear();
try
{
int count = App.CurrentPharmaParams.HardnessTestCount;
double min = App.CurrentPharmaParams.HardnessMin_N;
double max = App.CurrentPharmaParams.HardnessMax_N;
double currentSpeed = HardnessSudu;
double currentWeiyi = HardnessWeiyi;
double currentSpeed = _hardnessSudu;
double currentWeiyi = _hardnessWeiyi;
// 如果你需要把这3个值发给PLC就在这里发一次测试开始用当前参数
// 写入PLC
await _plc.WriteFloatAsync(_plcConfig.HardnessSudu, (float)currentSpeed);
await _plc.WriteFloatAsync(_plcConfig.HardnessWeiyi, (float)currentWeiyi);
// 开始循环测试
for (int i = 0; i < count; i++)
await _plc.WriteCoilAsync(_plcConfig.HardnessStartCoil, true);
bool completed = false;
while (!completed && Phase == TestPhase.Running)
{
await _plc.WriteCoilAsync(_plcConfig.HardnessStartCoil, true);
bool completed = false;
while (!completed && Phase == TestPhase.Running)
{
await Task.Delay(200);
completed = await _plc.ReadCoilAsync(_plcConfig.HardnessCompleteCoil);
}
double val = await _plc.ReadFloatAsync(_plcConfig.HardnessPoSun);
_hardnessResults.Add(val);
//HardnessPoSun = val;
await Task.Delay(1000);
await Task.Delay(200);
completed = await _plc.ReadCoilAsync(_plcConfig.HardnessCompleteCoil);
}
// 计算结果
HardnessAvg = _hardnessResults.Average();
HardnessMax = _hardnessResults.Max();
HardnessMin = _hardnessResults.Min();
HardnessCurrentCount = count;
HardnessRSD = (StandardDeviation(_hardnessResults) / HardnessAvg) * 100;
HardnessPass = HardnessAvg >= min && HardnessAvg <= max;
HardnessMax = await _plc.ReadFloatAsync(_plcConfig.HardnessMax);
Phase = TestPhase.Completed;
}
catch (Exception ex)
{
await App.Current.Dispatcher.InvokeAsync(() => MessageBox.Show($"硬度测试出错:{ex.Message}"));
Phase = TestPhase.Error;
}
finally
{
@@ -1255,8 +1231,7 @@ namespace TabletTester2025.ViewModels
// 硬度
HardnessAvg = HardnessAvg,
HardnessRSD = HardnessRSD,
HardnessMax = HardnessMax,
HardnessMin = HardnessMin,
HardnessTestCount = HardnessTestCount,
// 脆碎度