This commit is contained in:
GukSang.Jin
2026-05-19 20:06:51 +08:00
parent 7cd88de040
commit 0966f1f4f6
6 changed files with 21 additions and 21 deletions

View File

@@ -854,7 +854,7 @@ namespace TabletTester2025.ViewModels
if (_isLoadingDissolution1SampleInterval || _plcConfig.Dissolution1SampleInterval == 0 || value <= 0) if (_isLoadingDissolution1SampleInterval || _plcConfig.Dissolution1SampleInterval == 0 || value <= 0)
return; return;
_ = WriteDissolutionFloatAsync(_plcConfig.Dissolution1SampleInterval, value); _ = WriteDissolutionSampleIntervalAsync(_plcConfig.Dissolution1SampleInterval, value);
DissolutionSampleInterval = ToCompatibleSampleInterval(value); DissolutionSampleInterval = ToCompatibleSampleInterval(value);
} }
@@ -863,7 +863,7 @@ namespace TabletTester2025.ViewModels
if (_isLoadingDissolution2SampleInterval || _plcConfig.Dissolution2SampleInterval == 0 || value <= 0) if (_isLoadingDissolution2SampleInterval || _plcConfig.Dissolution2SampleInterval == 0 || value <= 0)
return; return;
_ = WriteDissolutionFloatAsync(_plcConfig.Dissolution2SampleInterval, value); _ = WriteDissolutionSampleIntervalAsync(_plcConfig.Dissolution2SampleInterval, value);
} }
private async Task LoadDissolutionTimesAsync() private async Task LoadDissolutionTimesAsync()
@@ -922,8 +922,8 @@ namespace TabletTester2025.ViewModels
try try
{ {
_isLoadingDissolution1SampleInterval = true; _isLoadingDissolution1SampleInterval = true;
float value = await _plc.ReadFloatAsync(_plcConfig.Dissolution1SampleInterval); int value = await _plc.ReadIntAsync(_plcConfig.Dissolution1SampleInterval);
if (float.IsFinite(value) && value > 0) if (value > 0)
{ {
Dissolution1SampleIntervalMin = value; Dissolution1SampleIntervalMin = value;
DissolutionSampleInterval = ToCompatibleSampleInterval(value); DissolutionSampleInterval = ToCompatibleSampleInterval(value);
@@ -941,8 +941,8 @@ namespace TabletTester2025.ViewModels
try try
{ {
_isLoadingDissolution2SampleInterval = true; _isLoadingDissolution2SampleInterval = true;
float value = await _plc.ReadFloatAsync(_plcConfig.Dissolution2SampleInterval); int value = await _plc.ReadIntAsync(_plcConfig.Dissolution2SampleInterval);
if (float.IsFinite(value) && value > 0) if (value > 0)
Dissolution2SampleIntervalMin = value; Dissolution2SampleIntervalMin = value;
} }
catch { } catch { }
@@ -953,14 +953,14 @@ namespace TabletTester2025.ViewModels
} }
} }
private async Task WriteDissolutionFloatAsync(ushort registerAddress, double value) private async Task WriteDissolutionSampleIntervalAsync(ushort registerAddress, double value)
{ {
if (registerAddress == 0 || value <= 0 || !double.IsFinite(value)) if (registerAddress == 0 || value <= 0 || !double.IsFinite(value))
return; return;
try try
{ {
await _plc.WriteFloatAsync(registerAddress, (float)value); await _plc.WriteRegisterAsync(registerAddress, (ushort)Math.Clamp(ToCompatibleSampleInterval(value), 1, ushort.MaxValue));
} }
catch { } catch { }
} }
@@ -1616,7 +1616,7 @@ namespace TabletTester2025.ViewModels
_isDissolution1Running = true; _isDissolution1Running = true;
DissolutionPlotModel.Title = "溶出曲线"; DissolutionPlotModel.Title = "溶出曲线";
await WriteDissolutionTimeAsync(_plcConfig.Dissolution1Time, Dissolution1TimeMin); await WriteDissolutionTimeAsync(_plcConfig.Dissolution1Time, Dissolution1TimeMin);
await WriteDissolutionFloatAsync(_plcConfig.Dissolution1SampleInterval, Dissolution1SampleIntervalMin); await WriteDissolutionSampleIntervalAsync(_plcConfig.Dissolution1SampleInterval, Dissolution1SampleIntervalMin);
await PulseCoilAsync(_plcConfig.Dissolution1StartCoil); await PulseCoilAsync(_plcConfig.Dissolution1StartCoil);
} }
@@ -1667,7 +1667,7 @@ namespace TabletTester2025.ViewModels
_isDissolution2Running = true; _isDissolution2Running = true;
DissolutionPlotModel.Title = "溶出曲线"; DissolutionPlotModel.Title = "溶出曲线";
await WriteDissolutionTimeAsync(_plcConfig.Dissolution2Time, Dissolution2TimeMin); await WriteDissolutionTimeAsync(_plcConfig.Dissolution2Time, Dissolution2TimeMin);
await WriteDissolutionFloatAsync(_plcConfig.Dissolution2SampleInterval, Dissolution2SampleIntervalMin); await WriteDissolutionSampleIntervalAsync(_plcConfig.Dissolution2SampleInterval, Dissolution2SampleIntervalMin);
await PulseCoilAsync(_plcConfig.Dissolution2StartCoil); await PulseCoilAsync(_plcConfig.Dissolution2StartCoil);
} }

View File

@@ -432,11 +432,11 @@
</StackPanel> </StackPanel>
<StackPanel Style="{StaticResource ParamRow}"> <StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="溶出1间隔取样时间(min)" Style="{StaticResource ParamLabel}"/> <TextBlock Text="溶出1间隔取样时间(min)" Style="{StaticResource ParamLabel}"/>
<TextBlock Text="{Binding Dissolution1SampleIntervalMin, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/> <TextBlock Text="{Binding Dissolution1SampleIntervalMin, StringFormat=F0}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
</StackPanel> </StackPanel>
<StackPanel Style="{StaticResource ParamRow}"> <StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="溶出2间隔取样时间(min)" Style="{StaticResource ParamLabel}"/> <TextBlock Text="溶出2间隔取样时间(min)" Style="{StaticResource ParamLabel}"/>
<TextBlock Text="{Binding Dissolution2SampleIntervalMin, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/> <TextBlock Text="{Binding Dissolution2SampleIntervalMin, StringFormat=F0}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
</StackPanel> </StackPanel>
<StackPanel Style="{StaticResource ParamRow}"> <StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="30min最低溶出度Q(%)" Style="{StaticResource ParamLabel}"/> <TextBlock Text="30min最低溶出度Q(%)" Style="{StaticResource ParamLabel}"/>

View File

@@ -178,11 +178,11 @@
</StackPanel> </StackPanel>
<StackPanel Style="{StaticResource ParamRow}"> <StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="溶出1取样间隔(min):" Style="{StaticResource ParamLabel}"/> <TextBlock Text="溶出1取样间隔(min):" Style="{StaticResource ParamLabel}"/>
<TextBox x:Name="Dissolution1IntervalBox"/> <TextBox x:Name="Dissolution1IntervalBox" helpers:NumericInput.AllowDecimal="False"/>
</StackPanel> </StackPanel>
<StackPanel Style="{StaticResource ParamRow}"> <StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="溶出2取样间隔(min):" Style="{StaticResource ParamLabel}"/> <TextBlock Text="溶出2取样间隔(min):" Style="{StaticResource ParamLabel}"/>
<TextBox x:Name="Dissolution2IntervalBox"/> <TextBox x:Name="Dissolution2IntervalBox" helpers:NumericInput.AllowDecimal="False"/>
</StackPanel> </StackPanel>
</WrapPanel> </WrapPanel>
<StackPanel Style="{StaticResource ParamRow}" Margin="0,8,0,0"> <StackPanel Style="{StaticResource ParamRow}" Margin="0,8,0,0">

View File

@@ -68,8 +68,8 @@ namespace TabletTester2025
p.DissolutionTemperatureC = ParseFiniteDouble(DissolutionTempBox.Text, "溶出介质温度"); p.DissolutionTemperatureC = ParseFiniteDouble(DissolutionTempBox.Text, "溶出介质温度");
p.Dissolution1TimeMin = int.Parse(Dissolution1TimeBox.Text); p.Dissolution1TimeMin = int.Parse(Dissolution1TimeBox.Text);
p.Dissolution2TimeMin = int.Parse(Dissolution2TimeBox.Text); p.Dissolution2TimeMin = int.Parse(Dissolution2TimeBox.Text);
p.Dissolution1SampleIntervalMin = ParseFiniteDouble(Dissolution1IntervalBox.Text, "溶出1取样间隔"); p.Dissolution1SampleIntervalMin = ParsePositiveInt(Dissolution1IntervalBox.Text, "溶出1取样间隔");
p.Dissolution2SampleIntervalMin = ParseFiniteDouble(Dissolution2IntervalBox.Text, "溶出2取样间隔"); p.Dissolution2SampleIntervalMin = ParsePositiveInt(Dissolution2IntervalBox.Text, "溶出2取样间隔");
p.DissolutionSampleTimes = SampleTimesBox.Text p.DissolutionSampleTimes = SampleTimesBox.Text
.Split(',', StringSplitOptions.RemoveEmptyEntries) .Split(',', StringSplitOptions.RemoveEmptyEntries)
.Select(s => int.Parse(s.Trim())) .Select(s => int.Parse(s.Trim()))

View File

@@ -158,8 +158,8 @@ namespace 片剂四用仪.Views
new PlcParamMapping("txt_Dissolution2Speed", AddressOrDefault(plcConfig.Dissolution2Speed, 350), PlcParamType.Float), new PlcParamMapping("txt_Dissolution2Speed", AddressOrDefault(plcConfig.Dissolution2Speed, 350), PlcParamType.Float),
new PlcParamMapping("txt_DissolutionTime", AddressOrDefault(plcConfig.Dissolution1Time, 430), PlcParamType.Int), new PlcParamMapping("txt_DissolutionTime", AddressOrDefault(plcConfig.Dissolution1Time, 430), PlcParamType.Int),
new PlcParamMapping("txt_Dissolution2Time", AddressOrDefault(plcConfig.Dissolution2Time, 440), PlcParamType.Int), new PlcParamMapping("txt_Dissolution2Time", AddressOrDefault(plcConfig.Dissolution2Time, 440), PlcParamType.Int),
new PlcParamMapping("txt_Dissolution1SamplingInterval", AddressOrDefault(plcConfig.Dissolution1SampleInterval, 432), PlcParamType.Float), new PlcParamMapping("txt_Dissolution1SamplingInterval", AddressOrDefault(plcConfig.Dissolution1SampleInterval, 432), PlcParamType.Int),
new PlcParamMapping("txt_Dissolution2SamplingInterval", AddressOrDefault(plcConfig.Dissolution2SampleInterval, 442), PlcParamType.Float), new PlcParamMapping("txt_Dissolution2SamplingInterval", AddressOrDefault(plcConfig.Dissolution2SampleInterval, 442), PlcParamType.Int),
new PlcParamMapping("txt_ForceCoefficient", 1320, PlcParamType.Float), new PlcParamMapping("txt_ForceCoefficient", 1320, PlcParamType.Float),
new PlcParamMapping("txt_ForceProtection", 1322, PlcParamType.Float), new PlcParamMapping("txt_ForceProtection", 1322, PlcParamType.Float),

View File

@@ -44,7 +44,7 @@
"FriabilityWeightAfter": 414, // 脆碎后质量(g) "FriabilityWeightAfter": 414, // 脆碎后质量(g)
"WeightBefore": 412, "WeightBefore": 412,
"WeightAfter": 414, "WeightAfter": 414,
"DisintegrationTemp": 1430, "DisintegrationTemp": 1430, // 所有温度显示D1430float类型
"DisintegrationMovingUpCoil": 30, "DisintegrationMovingUpCoil": 30,
"DisintegrationStartCoil": 50, "DisintegrationStartCoil": 50,
"DisintegrationStopCoil": 53, "DisintegrationStopCoil": 53,
@@ -66,8 +66,8 @@
"Dissolution2SampleAckCoil": 34, "Dissolution2SampleAckCoil": 34,
"Dissolution1Time": 430, "Dissolution1Time": 430,
"Dissolution2Time": 440, "Dissolution2Time": 440,
"Dissolution1SampleInterval": 432, "Dissolution1SampleInterval": 432, // 溶出1取样间隔int类型
"Dissolution2SampleInterval": 442 "Dissolution2SampleInterval": 442 // 溶出2取样间隔int类型
}, },
"PharmaStandard": { "PharmaStandard": {
"StandardVersion": "中国药典2025", "StandardVersion": "中国药典2025",