页面逻辑添加

This commit is contained in:
2026-05-18 09:55:00 +08:00
parent 175d0983d4
commit cc5356aaad
3 changed files with 48 additions and 27 deletions

View File

@@ -9,12 +9,16 @@
// 硬度 // 硬度
public ushort HardnessValue { get; set; } public ushort HardnessValue { get; set; }
public ushort HardnessStartCoil { get; set; } public ushort HardnessStartCoil { get; set; }
public ushort HardnessStartCoil2 { get; set; }
public ushort HardnessStartCoil3 { get; set; }
public ushort HardnessCompleteCoil { get; set; } public ushort HardnessCompleteCoil { get; set; }
public ushort HardnessStartReset { get; set; } public ushort HardnessStartReset { get; set; }
public ushort HardnessStartStop { get; set; } public ushort HardnessStartStop { get; set; }
public ushort HardnessSudu { get; set; }
public ushort HardnessWeiyi { get; set; }
public ushort HardnessPoSun { get; set; }
// 脆碎度 // 脆碎度
public ushort FriabilityStartCoil { get; set; } public ushort FriabilityStartCoil { get; set; }
public ushort WeightBefore { get; set; } // 天平重量寄存器(可选) public ushort WeightBefore { get; set; } // 天平重量寄存器(可选)

View File

@@ -58,6 +58,21 @@ namespace TabletTester2025.ViewModels
[ObservableProperty] private bool _hardnessPass; [ObservableProperty] private bool _hardnessPass;
[ObservableProperty] private double _hardnessAvg; [ObservableProperty] private double _hardnessAvg;
[ObservableProperty] private double _hardnessRSD; [ObservableProperty] private double _hardnessRSD;
//硬度新增
//[ObservableProperty] private int _hardnessForward = 0;//硬前进
//[ObservableProperty] private int _hardnessBack = 1;//硬后退
//[ObservableProperty] private int _hardnessOver = 72; //硬度完成
//[ObservableProperty] private int _hardnessStartOver = 92;// 硬复位完成
//[ObservableProperty] private int _hardnessLimit = 298;// 硬度电机极限输入
[ObservableProperty] private double _hardnessSudu = 300;// 硬度速度输入mm/min
[ObservableProperty] private double _hardnessWeiyi = 310; // 硬度位移输入mm/min
[ObservableProperty] private double _hardnessPoSun = 400; // 硬度破损判定输入N
//[ObservableProperty] private int _hardnessMaxN = 72; //最大力采集
private List<double> _hardnessResults = new(); private List<double> _hardnessResults = new();
// 脆碎度 // 脆碎度
@@ -787,7 +802,7 @@ namespace TabletTester2025.ViewModels
if (Phase != TestPhase.Idle) return; if (Phase != TestPhase.Idle) return;
CurrentTest = TestType.Hardness; CurrentTest = TestType.Hardness;
Phase = TestPhase.Running; Phase = TestPhase.Running;
HardnessPass = false; // 添加这一行 HardnessPass = false;
_hardnessResults.Clear(); _hardnessResults.Clear();
try try
@@ -796,33 +811,44 @@ namespace TabletTester2025.ViewModels
double min = App.CurrentPharmaParams.HardnessMin_N; double min = App.CurrentPharmaParams.HardnessMin_N;
double max = App.CurrentPharmaParams.HardnessMax_N; double max = App.CurrentPharmaParams.HardnessMax_N;
for (int i = 0; i < count; i++)
{ // 1. 给PLC发指令启动单次硬度测试 double currentSpeed = _hardnessSudu;
double currentWeiyi = _hardnessWeiyi;
double currentPoSun = _hardnessPoSun;
// 如果你需要把这3个值发给PLC就在这里发一次测试开始用当前参数
await _plc.WriteFloatAsync(_plcConfig.HardnessSudu, (float)currentSpeed);
await _plc.WriteFloatAsync(_plcConfig.HardnessWeiyi, (float)currentWeiyi);
await _plc.WriteFloatAsync(_plcConfig.HardnessPoSun, (float)currentPoSun);
// 开始循环测试
for (int i = 0; i < count; i++)
{
await _plc.WriteCoilAsync(_plcConfig.HardnessStartCoil, true); await _plc.WriteCoilAsync(_plcConfig.HardnessStartCoil, true);
bool completed = false; bool completed = false;
while (!completed && Phase == TestPhase.Running) while (!completed && Phase == TestPhase.Running)
{ {
await Task.Delay(200);// 每200ms轮询一次状态 await Task.Delay(200);
completed = await _plc.ReadCoilAsync(_plcConfig.HardnessCompleteCoil); completed = await _plc.ReadCoilAsync(_plcConfig.HardnessCompleteCoil);
} }
double val = await _plc.ReadFloatAsync(_plcConfig.HardnessValue); double val = await _plc.ReadFloatAsync(_plcConfig.HardnessValue);
_hardnessResults.Add(val); // 把结果存到列表里 _hardnessResults.Add(val);
HardnessValue = val;
HardnessValue = val; // 更新界面上的实时测试力值 await Task.Delay(1000);
await Task.Delay(1000); // 间隔1秒再进行下一次测试
} }
// 计算结果
HardnessAvg = _hardnessResults.Average(); HardnessAvg = _hardnessResults.Average();
HardnessMax = _hardnessResults.Max(); HardnessMax = _hardnessResults.Max();
HardnessMin = _hardnessResults.Min(); HardnessMin = _hardnessResults.Min();
HardnessCurrentCount = count; HardnessCurrentCount = count;
HardnessRSD = (StandardDeviation(_hardnessResults) / HardnessAvg) * 100; HardnessRSD = (StandardDeviation(_hardnessResults) / HardnessAvg) * 100;
HardnessPass = HardnessAvg >= min && HardnessAvg <= max; HardnessPass = HardnessAvg >= min && HardnessAvg <= max;
Phase = TestPhase.Completed;//恢复启动按钮
Phase = TestPhase.Completed;
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -832,11 +858,6 @@ namespace TabletTester2025.ViewModels
finally finally
{ {
Phase = TestPhase.Idle; Phase = TestPhase.Idle;
// 在保存前设置崩解合格标志剩余管数为0 且 崩解时间未超时
//DisintegrationPass = (RemainingTubes == 0 && DisintegrationSeconds <= App.CurrentPharmaParams.DisintegrationMaxSeconds);
await SaveBatchResult(); await SaveBatchResult();
} }
} }

View File

@@ -7,24 +7,20 @@
"IpAddress": "192.168.1.10", "IpAddress": "192.168.1.10",
"Port": 502, "Port": 502,
"SlaveId": 1, "SlaveId": 1,
"HardnessValue": 100, "HardnessValue": 72, //最大力采集
"HardnessStartCoil": 70, //硬度工位1启动测试M70 "HardnessStartCoil": 70, //硬度工位1启动测试M70
"HardnessStartCoil2": 70, //硬度工位1启动测试M70
"HardnessStartCoil3": 70, //硬度工位1启动测试M70
"HardnessStartStop": 73, // 硬度停止 "HardnessStartStop": 73, // 硬度停止
"HardnessStartReset": 90, // 硬复位启动 "HardnessStartReset": 90, // 硬复位启动
"HardnessForward": 0, //硬前进 "HardnessForward": 0, //硬前进
"HardnessBack": 1, //硬后退 "HardnessBack": 1, //硬后退
"HardnessOver": 72, //硬度完成 "HardnessOver": 72, //硬度完成
"HardnessStartOver": 92, // 硬复位启动 "HardnessStartOver": 92, // 硬复位启动
"HardnessLimit": 298, // 硬度电机极限输入 "HardnessLimit": 298, // 硬度电机极限输入
"HardnessSudu": 300, // 硬度速度输入mm/min "HardnessSudu": 300, // 硬度速度输入mm/min
"HardnessWeiyi": 310, // 硬度位移输入mm/min "HardnessWeiyi": 310, // 硬度位移输入mm/min
"HardnessPoSun": 310, // 硬度破损判定输入N "HardnessPoSun": 400, // 硬度破损判定输入N
"HardnessMax": 310, //最大力采集