More changes and fixes for heat measurement.

This commit is contained in:
Milan Hanajik
2016-08-21 22:07:20 +02:00
parent e3318179c1
commit 774d47a86f
16 changed files with 110 additions and 111 deletions
+4
View File
@@ -164,6 +164,10 @@ namespace Results
AllItems.Add(new ItemSpec("Protocol title", Strings.Protocol, x => x.Batch().ProtocolTitle, (x, y, z) => x.Batch().ProtocolTitle)); AllItems.Add(new ItemSpec("Protocol title", Strings.Protocol, x => x.Batch().ProtocolTitle, (x, y, z) => x.Batch().ProtocolTitle));
AllItems.Add(new ItemSpec("Batch start time", Strings.Start, x => x.Batch().StartTime.ToShortTimeString(), (x, y, z) => x.Batch().StartTime.ToShortTimeString())); AllItems.Add(new ItemSpec("Batch start time", Strings.Start, x => x.Batch().StartTime.ToShortTimeString(), (x, y, z) => x.Batch().StartTime.ToShortTimeString()));
AllItems.Add(new ItemSpec("Batch end time", Strings.End, x => x.Batch().EndTime.ToShortTimeString(), (x, y, z) => x.Batch().EndTime.ToShortTimeString())); AllItems.Add(new ItemSpec("Batch end time", Strings.End, x => x.Batch().EndTime.ToShortTimeString(), (x, y, z) => x.Batch().EndTime.ToShortTimeString()));
/// Heat meters results
AllItems.Add(new ItemSpec("Energy", Strings.Energy, x => x.Energy.ToString(), null));
AllItems.Add(new ItemSpec("Reference energy", Strings.Energy_ref, x => x.RefEnergy.ToString(), null));
} }
public static ItemSpec GetItem(string name) public static ItemSpec GetItem(string name)
@@ -173,7 +173,7 @@ namespace TBF.BenchControl.DataEntry.HeatMeters12
} }
} }
private void CycleEndForm_Load(object sender, EventArgs e) private void TestStartEndForm_Load(object sender, EventArgs e)
{ {
Localize(); Localize();
@@ -184,6 +184,7 @@ namespace TBF.BenchControl.DataEntry.HeatMeters12
if (i < WaterMetersCount) if (i < WaterMetersCount)
{ {
labels[i].Visible = startTextBoxes[i].Visible = endTextBoxes[i].Visible = true; labels[i].Visible = startTextBoxes[i].Visible = endTextBoxes[i].Visible = true;
energyLabels[i].Visible = energyStartTextBoxes[i].Visible = energyEndTextBoxes[i].Visible = true;
} }
} }
@@ -195,15 +196,22 @@ namespace TBF.BenchControl.DataEntry.HeatMeters12
{ {
startTextBoxes[i].Text = WMStartStateStr[i]; startTextBoxes[i].Text = WMStartStateStr[i];
} }
if (EnergyStartStateStr != null && i < EnergyStartStateStr.Length)
{
energyStartTextBoxes[i].Text = EnergyStartStateStr[i];
}
if (disabled != null && i < disabled.Length && disabled[i]) if (disabled != null && i < disabled.Length && disabled[i])
{ {
endTextBoxes[i].Enabled = false; endTextBoxes[i].Enabled = false;
energyEndTextBoxes[i].Enabled = false;
} }
else else
{ {
endTextBoxes[i].Enabled = true; endTextBoxes[i].Enabled = true;
energyEndTextBoxes[i].Enabled = true;
enabledTextBoxes.Add(endTextBoxes[i]); enabledTextBoxes.Add(endTextBoxes[i]);
enabledTextBoxes.Add(energyEndTextBoxes[i]);
} }
} }
} }
@@ -214,11 +222,14 @@ namespace TBF.BenchControl.DataEntry.HeatMeters12
if (disabled != null && i < disabled.Length && disabled[i]) if (disabled != null && i < disabled.Length && disabled[i])
{ {
startTextBoxes[i].Enabled = false; startTextBoxes[i].Enabled = false;
energyStartTextBoxes[i].Enabled = false;
} }
else else
{ {
startTextBoxes[i].Enabled = true; startTextBoxes[i].Enabled = true;
energyStartTextBoxes[i].Enabled = true;
enabledTextBoxes.Add(startTextBoxes[i]); enabledTextBoxes.Add(startTextBoxes[i]);
enabledTextBoxes.Add(energyStartTextBoxes[i]);
} }
} }
} }
@@ -229,7 +240,8 @@ namespace TBF.BenchControl.DataEntry.HeatMeters12
Text = Strings.Water_Meter_States; Text = Strings.Water_Meter_States;
for (int i = 0; i < TextBoxesCount; i++) for (int i = 0; i < TextBoxesCount; i++)
{ {
labels[i].Text = Strings.Water_Meter + " " + (i + 1).ToString(); labels[i].Text = string.Format("{0} {1}", Strings.Volume + " ", i + 1);
energyLabels[i].Text = string.Format("{0} {1}", Strings.Energy + " ", i + 1);
} }
startLabel.Text = Strings.Start; startLabel.Text = Strings.Start;
endLabel.Text = Strings.End; endLabel.Text = Strings.End;
@@ -1402,7 +1402,7 @@ namespace TBF.BenchControl.DataEntry.HeatMeters12
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.Text = "End States"; this.Text = "End States";
this.TopMost = true; this.TopMost = true;
this.Load += new System.EventHandler(this.CycleEndForm_Load); this.Load += new System.EventHandler(this.TestStartEndForm_Load);
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
+1 -1
View File
@@ -191,7 +191,7 @@ namespace TBF.BenchControl
/// <param name="T_in">Inlet temperature [C]</param> /// <param name="T_in">Inlet temperature [C]</param>
/// <param name="T_out">Outlet temperature [C]</param> /// <param name="T_out">Outlet temperature [C]</param>
/// <param name="flowMeasuredAtInlet">true = flow measured @inlet, false = flow measured @outlet</param> /// <param name="flowMeasuredAtInlet">true = flow measured @inlet, false = flow measured @outlet</param>
/// <returns> Heat coefficient for water</returns> /// <returns> Heat coefficient for water [J/(m3 K)]</returns>
public static double HeatCoefficientWater(double pressure, double T_in, double T_out, bool flowMeasuredAtInlet) public static double HeatCoefficientWater(double pressure, double T_in, double T_out, bool flowMeasuredAtInlet)
{ {
if (T_in == T_out) return 0; if (T_in == T_out) return 0;
@@ -77,7 +77,7 @@ namespace TBF.BenchControl.Sequences
public static Statistics RefFlowStat = new Statistics(); public static Statistics RefFlowStat = new Statistics();
public static Statistics Energy = new Statistics(); public static Statistics Energy = new Statistics();
public static Statistics MassForEnergy = new Statistics(); public static Statistics VolumeForEnergy = new Statistics();
public static int lastEnergyUpdateTime; public static int lastEnergyUpdateTime;
protected static void ClearAllStatistics() protected static void ClearAllStatistics()
@@ -93,7 +93,7 @@ namespace TBF.BenchControl.Sequences
RefFlowStat.Clear(); RefFlowStat.Clear();
Energy.Clear(); Energy.Clear();
MassForEnergy.Clear(); VolumeForEnergy.Clear();
lastEnergyUpdateTime = 0; lastEnergyUpdateTime = 0;
} }
@@ -212,6 +212,7 @@ namespace TBF.BenchControl.TestMethods.FixedStartMassCollection
.EnterState(); .EnterState();
do do
{ {
e = StateMachine.WaitRunDevsRunOps();
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
if (e.Contains(Event.Next)) goto temperature_set; if (e.Contains(Event.Next)) goto temperature_set;
@@ -406,10 +407,10 @@ namespace TBF.BenchControl.TestMethods.FixedStartMassCollection
//double deltaTime = (double)(StateMachine.Time - lastEnergyUpdateTime); //double deltaTime = (double)(StateMachine.Time - lastEnergyUpdateTime);
float T_in = (heatMetersPath.TMeterRefWarm1.ReadTemperature() + heatMetersPath.TMeterRefWarm2.ReadTemperature()) / 2; /// [°C] float T_in = (heatMetersPath.TMeterRefWarm1.ReadTemperature() + heatMetersPath.TMeterRefWarm2.ReadTemperature()) / 2; /// [°C]
float T_out = (heatMetersPath.TMeterRefCold1.ReadTemperature() + heatMetersPath.TMeterRefCold2.ReadTemperature()) / 2; /// [°C] float T_out = (heatMetersPath.TMeterRefCold1.ReadTemperature() + heatMetersPath.TMeterRefCold2.ReadTemperature()) / 2; /// [°C]
double deltaMass = 0.001 * LtrPerRefPulse * RefPulsesDelta * Formulas.WaterDensityFromTemp((TempIn.Val + TempOut.Val) / 2); /// [kg] double deltaVolume = 0.001 * LtrPerRefPulse * RefPulsesDelta; /// [m3]
double deltaEnergy = deltaMass * Formulas.HeatCoefficientWater(16, T_in, T_out, heatMetersTestParams.FlowMeasuredAtHiTempPipe); double deltaEnergy = deltaVolume * (T_in - T_out) * Formulas.HeatCoefficientWater(16, T_in, T_out, heatMetersTestParams.FlowMeasuredAtHiTempPipe); /// [J]
Energy.Update(deltaEnergy); Energy.Update(deltaEnergy);
MassForEnergy.Update(deltaMass); VolumeForEnergy.Update(deltaVolume);
lastEnergyUpdateTime = StateMachine.Time; lastEnergyUpdateTime = StateMachine.Time;
} }
} }
@@ -676,7 +677,7 @@ namespace TBF.BenchControl.TestMethods.FixedStartMassCollection
} }
else if (heatMetersTestParams != null) else if (heatMetersTestParams != null)
{ {
tstRslt.RefEnergy = Energy.Sum * (tstRslt.MassEnd - tstRslt.MassStart) / MassForEnergy.Sum; tstRslt.RefEnergy = Energy.Sum * tstRslt.VolumeCTV * 0.001 / VolumeForEnergy.Sum;
/// ///
/// Heat meters /// Heat meters
+1 -1
View File
@@ -593,7 +593,7 @@ namespace TBF
metrology1ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Part, Width = 40 }); metrology1ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Part, Width = 40 });
metrology1ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Q_from_m3h, Width = 80 }); metrology1ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Q_from_m3h, Width = 80 });
metrology1ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Q_to_m3h, Width = 80 }); metrology1ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Q_to_m3h, Width = 80 });
metrology1ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Volume_ltr_chdr, Width = 70 }); metrology1ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Volume + " [l]", Width = 70 });
metrology1ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Test_time_s_chdr, Width = 70 }); metrology1ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Test_time_s_chdr, Width = 70 });
metrology1ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Repeats_nr_chdr, Width = 80 }); metrology1ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Repeats_nr_chdr, Width = 80 });
metrology1ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Emptying_chdr, Width = 60 }); metrology1ListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Emptying_chdr, Width = 60 });
+12 -21
View File
@@ -1113,6 +1113,15 @@ namespace TBF.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Energy.
/// </summary>
internal static string Energy {
get {
return ResourceManager.GetString("Energy", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Enter password. /// Looks up a localized string similar to Enter password.
/// </summary> /// </summary>
@@ -4186,11 +4195,11 @@ namespace TBF.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Volume:. /// Looks up a localized string similar to Volume.
/// </summary> /// </summary>
internal static string Volume_ { internal static string Volume {
get { get {
return ResourceManager.GetString("Volume_", resourceCulture); return ResourceManager.GetString("Volume", resourceCulture);
} }
} }
@@ -4203,24 +4212,6 @@ namespace TBF.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Volume [l]:.
/// </summary>
internal static string Volume_l_ {
get {
return ResourceManager.GetString("Volume_l_", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Volume [l].
/// </summary>
internal static string Volume_ltr_chdr {
get {
return ResourceManager.GetString("Volume_ltr_chdr", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Warning. /// Looks up a localized string similar to Warning.
/// </summary> /// </summary>
+3 -3
View File
@@ -1101,9 +1101,6 @@
<data name="Volume_and_error_selection" xml:space="preserve"> <data name="Volume_and_error_selection" xml:space="preserve">
<value>Objem a výběr mezní chyby</value> <value>Objem a výběr mezní chyby</value>
</data> </data>
<data name="Volume_ltr_chdr" xml:space="preserve">
<value>Objem [l]</value>
</data>
<data name="Warning" xml:space="preserve"> <data name="Warning" xml:space="preserve">
<value>Varování</value> <value>Varování</value>
</data> </data>
@@ -1278,4 +1275,7 @@
<data name="Mounting" xml:space="preserve"> <data name="Mounting" xml:space="preserve">
<value>Montáž</value> <value>Montáž</value>
</data> </data>
<data name="Volume" xml:space="preserve">
<value>Objem</value>
</data>
</root> </root>
+3 -9
View File
@@ -345,9 +345,6 @@
<data name="Tol_red_pct_chdr" xml:space="preserve"> <data name="Tol_red_pct_chdr" xml:space="preserve">
<value>Tol. Abzug [%]</value> <value>Tol. Abzug [%]</value>
</data> </data>
<data name="Volume_ltr_chdr" xml:space="preserve">
<value>Volumen [l]</value>
</data>
<data name="Zeroing_chdr" xml:space="preserve"> <data name="Zeroing_chdr" xml:space="preserve">
<value>Nullstellen (Ergebnisse)</value> <value>Nullstellen (Ergebnisse)</value>
</data> </data>
@@ -1119,12 +1116,6 @@
<data name="T_out_C_" xml:space="preserve"> <data name="T_out_C_" xml:space="preserve">
<value>T aus [°C]:</value> <value>T aus [°C]:</value>
</data> </data>
<data name="Volume_" xml:space="preserve">
<value>Volumen:</value>
</data>
<data name="Volume_l_" xml:space="preserve">
<value>Volumen [l]:</value>
</data>
<data name="Save_column_widths" xml:space="preserve"> <data name="Save_column_widths" xml:space="preserve">
<value>Speichern</value> <value>Speichern</value>
</data> </data>
@@ -1353,4 +1344,7 @@
<data name="Setting_temperature" xml:space="preserve"> <data name="Setting_temperature" xml:space="preserve">
<value>Temperatur einstellen</value> <value>Temperatur einstellen</value>
</data> </data>
<data name="Volume" xml:space="preserve">
<value>Volumen</value>
</data>
</root> </root>
+3 -3
View File
@@ -1005,9 +1005,6 @@
<data name="Volume_and_error_selection" xml:space="preserve"> <data name="Volume_and_error_selection" xml:space="preserve">
<value>Wybór dopuszczalnej objętości i błędu</value> <value>Wybór dopuszczalnej objętości i błędu</value>
</data> </data>
<data name="Volume_ltr_chdr" xml:space="preserve">
<value>Objętość [l]</value>
</data>
<data name="Warning" xml:space="preserve"> <data name="Warning" xml:space="preserve">
<value>Ostrzeżenie</value> <value>Ostrzeżenie</value>
</data> </data>
@@ -1056,4 +1053,7 @@
<data name="Heat_meter_sensors" xml:space="preserve"> <data name="Heat_meter_sensors" xml:space="preserve">
<value>Ciepłomierza czujniki</value> <value>Ciepłomierza czujniki</value>
</data> </data>
<data name="Volume" xml:space="preserve">
<value>Objętość</value>
</data>
</root> </root>
+6 -9
View File
@@ -369,9 +369,6 @@
<data name="Bench_is_not_running" xml:space="preserve"> <data name="Bench_is_not_running" xml:space="preserve">
<value>Test bench is not running, however you can change the settings to resolve the problem.</value> <value>Test bench is not running, however you can change the settings to resolve the problem.</value>
</data> </data>
<data name="Volume_ltr_chdr" xml:space="preserve">
<value>Volume [l]</value>
</data>
<data name="Emptying_chdr" xml:space="preserve"> <data name="Emptying_chdr" xml:space="preserve">
<value>Emptying</value> <value>Emptying</value>
</data> </data>
@@ -1324,12 +1321,6 @@
<data name="T_out_C_" xml:space="preserve"> <data name="T_out_C_" xml:space="preserve">
<value>T out [°C]:</value> <value>T out [°C]:</value>
</data> </data>
<data name="Volume_" xml:space="preserve">
<value>Volume:</value>
</data>
<data name="Volume_l_" xml:space="preserve">
<value>Volume [l]:</value>
</data>
<data name="Save_column_widths" xml:space="preserve"> <data name="Save_column_widths" xml:space="preserve">
<value>Save column widths</value> <value>Save column widths</value>
</data> </data>
@@ -1546,4 +1537,10 @@
<data name="Setting_temperature" xml:space="preserve"> <data name="Setting_temperature" xml:space="preserve">
<value>Setting temperature</value> <value>Setting temperature</value>
</data> </data>
<data name="Energy" xml:space="preserve">
<value>Energy</value>
</data>
<data name="Volume" xml:space="preserve">
<value>Volume</value>
</data>
</root> </root>
+3 -3
View File
@@ -801,9 +801,6 @@
<data name="Volume_and_error_selection" xml:space="preserve"> <data name="Volume_and_error_selection" xml:space="preserve">
<value>Selectarea volumului si limitei de erori</value> <value>Selectarea volumului si limitei de erori</value>
</data> </data>
<data name="Volume_ltr_chdr" xml:space="preserve">
<value>Volum [l]</value>
</data>
<data name="Warning" xml:space="preserve"> <data name="Warning" xml:space="preserve">
<value>Atentie</value> <value>Atentie</value>
</data> </data>
@@ -834,4 +831,7 @@
<data name="Zeroing_chdr" xml:space="preserve"> <data name="Zeroing_chdr" xml:space="preserve">
<value>resetare</value> <value>resetare</value>
</data> </data>
<data name="Volume" xml:space="preserve">
<value>Volum</value>
</data>
</root> </root>
@@ -1098,9 +1098,6 @@
<data name="Volume_and_error_selection" xml:space="preserve"> <data name="Volume_and_error_selection" xml:space="preserve">
<value>音量和误差区间选择</value> <value>音量和误差区间选择</value>
</data> </data>
<data name="Volume_ltr_chdr" xml:space="preserve">
<value>体积[L]</value>
</data>
<data name="Warning" xml:space="preserve"> <data name="Warning" xml:space="preserve">
<value>警告 Warning</value> <value>警告 Warning</value>
</data> </data>
@@ -1215,4 +1212,7 @@
<data name="Short_description" xml:space="preserve"> <data name="Short_description" xml:space="preserve">
<value>简短描述</value> <value>简短描述</value>
</data> </data>
<data name="Volume" xml:space="preserve">
<value>体积</value>
</data>
</root> </root>
@@ -144,7 +144,7 @@ namespace TBF.Screens
massCapLabel.Text = Strings.Mass_kg_; massCapLabel.Text = Strings.Mass_kg_;
massDiffCapLabel.Text = Strings.Mass_diff_kg_; massDiffCapLabel.Text = Strings.Mass_diff_kg_;
volumeCtvCapLabel.Text = Strings.Volume_l_; volumeCtvCapLabel.Text = Strings.Volume + " [l]:";
refErrorCapLabel.Text = Strings.Ref_error_pct_; refErrorCapLabel.Text = Strings.Ref_error_pct_;
GroupBox[] groupBoxes = new GroupBox[] { groupBox1, groupBox2, groupBox3, groupBox4, groupBox5, groupBox6 }; GroupBox[] groupBoxes = new GroupBox[] { groupBox1, groupBox2, groupBox3, groupBox4, groupBox5, groupBox6 };
@@ -153,13 +153,13 @@ namespace TBF.Screens
sensor1CapLabel.Text = sensor2CapLabel.Text = sensor3CapLabel.Text = sensor4CapLabel.Text = sensor5CapLabel.Text = sensor6CapLabel.Text = Strings.Sensor_; sensor1CapLabel.Text = sensor2CapLabel.Text = sensor3CapLabel.Text = sensor4CapLabel.Text = sensor5CapLabel.Text = sensor6CapLabel.Text = Strings.Sensor_;
pulses1CapLabel.Text = pulses2CapLabel.Text = pulses3CapLabel.Text = pulses4CapLabel.Text = pulses5CapLabel.Text = pulses6CapLabel.Text = Strings.Pulses_; pulses1CapLabel.Text = pulses2CapLabel.Text = pulses3CapLabel.Text = pulses4CapLabel.Text = pulses5CapLabel.Text = pulses6CapLabel.Text = Strings.Pulses_;
refPulses1CapLabel.Text = refPulses2CapLabel.Text = refPulses3CapLabel.Text = refPulses4CapLabel.Text = refPulses5CapLabel.Text = refPulses6CapLabel.Text = Strings.Ref_pulses_; refPulses1CapLabel.Text = refPulses2CapLabel.Text = refPulses3CapLabel.Text = refPulses4CapLabel.Text = refPulses5CapLabel.Text = refPulses6CapLabel.Text = Strings.Ref_pulses_;
volume1CapLabel.Text = volume2CapLabel.Text = volume3CapLabel.Text = volume4CapLabel.Text = volume5CapLabel.Text = volume6CapLabel.Text = Strings.Volume_; volume1CapLabel.Text = volume2CapLabel.Text = volume3CapLabel.Text = volume4CapLabel.Text = volume5CapLabel.Text = volume6CapLabel.Text = Strings.Volume + ":";
error1CapLabel.Text = error2CapLabel.Text = error3CapLabel.Text = error4CapLabel.Text = error5CapLabel.Text = error6CapLabel.Text = Strings.Error_; error1CapLabel.Text = error2CapLabel.Text = error3CapLabel.Text = error4CapLabel.Text = error5CapLabel.Text = error6CapLabel.Text = Strings.Error_;
GroupBox[] groupBoxesZ = new GroupBox[] { groupBox1z, groupBox2z, groupBox3z }; GroupBox[] groupBoxesZ = new GroupBox[] { groupBox1z, groupBox2z, groupBox3z };
for (int i = 0; i < groupBoxesZ.Length; i++) groupBoxesZ[i].Text = string.Format(Strings.Compound_meter_nr, i + 1); for (int i = 0; i < groupBoxesZ.Length; i++) groupBoxesZ[i].Text = string.Format(Strings.Compound_meter_nr, i + 1);
volume1zCapLabel.Text = volume2zCapLabel.Text = volume3zCapLabel.Text = Strings.Volume_; volume1zCapLabel.Text = volume2zCapLabel.Text = volume3zCapLabel.Text = Strings.Volume + ":";
error1zCapLabel.Text = error2zCapLabel.Text = error3zCapLabel.Text = Strings.Error_; error1zCapLabel.Text = error2zCapLabel.Text = error3zCapLabel.Text = Strings.Error_;
} }
@@ -23,7 +23,7 @@ namespace TBF.TestWizard
this.test = test; this.test = test;
Text = Strings.Volume_and_error_selection; Text = Strings.Volume_and_error_selection;
volumeLabel.Text = Strings.Volume_ltr_chdr; volumeLabel.Text = Strings.Volume + " [l]";
durationLabel.Text = Strings.Duration_s; durationLabel.Text = Strings.Duration_s;
errLoPctLabel.Text = Strings.Err_limit_neg_pct_chdr; errLoPctLabel.Text = Strings.Err_limit_neg_pct_chdr;
errHiPctLabel.Text = Strings.Err_limit_pos_pct_chdr; errHiPctLabel.Text = Strings.Err_limit_pos_pct_chdr;