From 18d317623dd900a173927fa8fb8a7bec26407ff0 Mon Sep 17 00:00:00 2001 From: "GukSang.Jin" Date: Tue, 19 May 2026 21:17:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Models/PlcConfiguration.cs | 1 + Views/SettingsWindow.xaml.cs | 19 ++++++++++++++++++- appsettings.json | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Models/PlcConfiguration.cs b/Models/PlcConfiguration.cs index a85aff6..8e29040 100644 --- a/Models/PlcConfiguration.cs +++ b/Models/PlcConfiguration.cs @@ -28,6 +28,7 @@ public ushort HardnessPressure { get; set; } // 脆碎度 public ushort FriabilityStartCoil { get; set; } + public ushort FriabilityRpm { get; set; } public ushort FriabilityRounds { get; set; } public ushort FriabilityRoundsBox { get; set; } // 兼容旧配置字段 public ushort FriabilityTestTime { get; set; } diff --git a/Views/SettingsWindow.xaml.cs b/Views/SettingsWindow.xaml.cs index debf601..3f27ac1 100644 --- a/Views/SettingsWindow.xaml.cs +++ b/Views/SettingsWindow.xaml.cs @@ -22,6 +22,7 @@ namespace TabletTester2025 await LoadHardnessDamageThresholdAsync(); // 脆碎度 + await LoadPlcFloatToTextBoxAsync(ResolveFriabilityRpmRegister(), FriabilityRpmBox); await LoadPlcIntToTextBoxAsync(ResolveFriabilityRoundsRegister(), FriabilityRoundsBox); // 崩解 @@ -70,7 +71,8 @@ namespace TabletTester2025 p.HardnessTestCount = int.Parse(HardnessCountBox.Text); double hardnessPressure = ParseFiniteDouble(HardnessPressureBox.Text, "加压压力"); int hardnessDamageThreshold = ParsePositiveInt(HardnessDamageThresholdBox.Text, "硬度破损判定"); - p.FriabilityTargetRpm = ParseFiniteDouble(FriabilityRpmBox.Text, "脆碎度转速"); + double friabilityRpm = ParseFiniteDouble(FriabilityRpmBox.Text, "脆碎度转速"); + p.FriabilityTargetRpm = friabilityRpm; p.FriabilityTargetTimeMin = ParseFiniteDouble(FriabilityTimeBox.Text, "脆碎度试验时间"); p.FriabilityTargetRounds = ParsePositiveInt(FriabilityRoundsBox.Text, "脆碎圈数"); p.FriabilityMaxLossPercent = ParseFiniteDouble(FriabilityMaxLossBox.Text, "最大失重率"); @@ -92,6 +94,7 @@ namespace TabletTester2025 ValidateParameters(p); await WriteHardnessPressureAsync(hardnessPressure); await WriteHardnessDamageThresholdAsync(hardnessDamageThreshold); + await WriteFriabilityRpmAsync(friabilityRpm); App.CurrentPharmaParams = p; App.SaveCurrentPharmaParameters(); @@ -275,6 +278,20 @@ namespace TabletTester2025 catch { textBox.Text = ""; } } + private static async Task WriteFriabilityRpmAsync(double value) + { + ushort registerAddress = ResolveFriabilityRpmRegister(); + if (registerAddress == 0) + throw new InvalidOperationException("脆碎度转速PLC寄存器地址未配置。"); + + await App.PlcService.WriteFloatAsync(registerAddress, (float)value); + } + + private static ushort ResolveFriabilityRpmRegister() + { + return App.PlcConfig.FriabilityRpm != 0 ? App.PlcConfig.FriabilityRpm : (ushort)320; + } + private static ushort ResolveFriabilityRoundsRegister() { if (App.PlcConfig.FriabilityRounds != 0) diff --git a/appsettings.json b/appsettings.json index 973dff3..e24913e 100644 --- a/appsettings.json +++ b/appsettings.json @@ -26,6 +26,7 @@ "HardnessMax": 72, //最大力采集 "HardnessShishilizhi": 1314, //力显示 + "FriabilityRpm": 320, // 脆碎度转速 r/min "FriabilityRounds": 410, // 脆碎圈数 "FriabilityRoundsBox": 410, // 兼容旧字段:脆碎圈数 "DisintegrationSeconds": 420, //崩解时间