diff --git a/CSI-Z420片剂四用仪.gxw b/CSI-Z420片剂四用仪.gxw new file mode 100644 index 0000000..b177bab Binary files /dev/null and b/CSI-Z420片剂四用仪.gxw differ diff --git a/Models/PlcConfiguration.cs b/Models/PlcConfiguration.cs index de782d0..776e4f8 100644 --- a/Models/PlcConfiguration.cs +++ b/Models/PlcConfiguration.cs @@ -9,6 +9,8 @@ // 硬度 public ushort HardnessValue { get; set; } public ushort HardnessStartCoil { get; set; } + public ushort HardnessStartCoil2 { get; set; } + public ushort HardnessStartCoil3 { get; set; } public ushort HardnessCompleteCoil { get; set; } // 脆碎度 diff --git a/ViewModels/StationViewModel.cs b/ViewModels/StationViewModel.cs index bb1e278..80b9d74 100644 --- a/ViewModels/StationViewModel.cs +++ b/ViewModels/StationViewModel.cs @@ -136,19 +136,21 @@ namespace TabletTester2025.ViewModels DissolutionPlotModel.Series.Add(_dissolutionSeries); // 硬度命令 - HardnessUpCommand = new AsyncRelayCommand(async () => - { + //HardnessUpCommand = new AsyncRelayCommand(async () => + //{ + + // await _plc.WriteCoilAsync(0x20, true); + // await Task.Delay(100); + // await _plc.WriteCoilAsync(0x20, false); + //}); - await _plc.WriteCoilAsync(0x20, true); - await Task.Delay(100); - await _plc.WriteCoilAsync(0x20, false); - }); HardnessDownCommand = new AsyncRelayCommand(async () => { await _plc.WriteCoilAsync(0x21, true); await Task.Delay(100); await _plc.WriteCoilAsync(0x21, false); }); + HardnessResetCommand = new AsyncRelayCommand(() => { _hardnessResults.Clear(); @@ -161,6 +163,7 @@ namespace TabletTester2025.ViewModels Phase = TestPhase.Idle; return Task.CompletedTask; }); + PrintHardnessCommand = new AsyncRelayCommand(async () => await PrintReport("硬度")); // 脆碎度命令 @@ -249,7 +252,9 @@ namespace TabletTester2025.ViewModels for (int i = 0; i < count; i++) { - await _plc.WriteCoilAsync(_plcConfig.HardnessStartCoil, true); + await _plc.WriteCoilAsync((ushort)(StationId == 1 ? _plcConfig.HardnessStartCoil : + StationId == 2 ? _plcConfig.HardnessStartCoil2 + : StationId == 3 ? _plcConfig.HardnessStartCoil3 : 0), true); bool completed = false; while (!completed && Phase == TestPhase.Running) { @@ -261,7 +266,12 @@ namespace TabletTester2025.ViewModels HardnessValue = val; await Task.Delay(1000); } + HardnessAvg = _hardnessResults.Average(); + HardnessMax= _hardnessResults.Max(); + HardnessMin = _hardnessResults.Min(); + + HardnessRSD = (StandardDeviation(_hardnessResults) / HardnessAvg) * 100; HardnessPass = HardnessAvg >= min && HardnessAvg <= max; Phase = TestPhase.Completed; @@ -464,7 +474,7 @@ namespace TabletTester2025.ViewModels _ => "" }, - IsQualified = HardnessPass && FriabilityPass && DisintegrationPass && DissolutionPass + IsQualified = HardnessPass && FriabilityPass && DisintegrationPass && DissolutionPass }; await Task.Run(() => _db.InsertBatch(batch)); @@ -529,5 +539,6 @@ namespace TabletTester2025.ViewModels double sum = values.Sum(v => Math.Pow(v - avg, 2)); return Math.Sqrt(sum / values.Count); } + } } \ No newline at end of file diff --git a/Views/MainWindow.xaml b/Views/MainWindow.xaml index 4869621..b77bb3a 100644 --- a/Views/MainWindow.xaml +++ b/Views/MainWindow.xaml @@ -123,8 +123,8 @@ -