update leak test handling with safeguarded pressure calculations and conditional digital output adjustment
This commit is contained in:
parent
2fc4d89a87
commit
ad9e8d8965
|
|
@ -751,6 +751,7 @@ class Test(Widget):
|
||||||
self.cycle_steps = steps
|
self.cycle_steps = steps
|
||||||
self.check_steps_dependencies(self.cycle_steps)
|
self.check_steps_dependencies(self.cycle_steps)
|
||||||
leak_autotest_steps = []
|
leak_autotest_steps = []
|
||||||
|
|
||||||
# CONFIGURE LEAK AUTOTEST PARAMETERS
|
# CONFIGURE LEAK AUTOTEST PARAMETERS
|
||||||
if self.config["autotest_leak"]["enabled"] == "true":
|
if self.config["autotest_leak"]["enabled"] == "true":
|
||||||
l_at_1 = copy.deepcopy(self.config["autotest_leak"])
|
l_at_1 = copy.deepcopy(self.config["autotest_leak"])
|
||||||
|
|
@ -1010,20 +1011,36 @@ class Test(Widget):
|
||||||
leak_test_2_step_spec = leak_test_2_step.get("spec", {})
|
leak_test_2_step_spec = leak_test_2_step.get("spec", {})
|
||||||
leak_test_2_results = leak_test_2.get("results", {})
|
leak_test_2_results = leak_test_2.get("results", {})
|
||||||
|
|
||||||
psetminp_a = leak_test_1_step_spec.get("test_pressure", 0) * (
|
# Verifica preventiva della presenza della specifica della ricetta
|
||||||
100 + leak_test_1_step_spec.get("test_pressure_qneg", 0) / 100)
|
has_spec = self.recipe is not None and getattr(self.recipe, 'spec', None) is not None
|
||||||
psetmaxp_a = leak_test_1_step_spec.get("settling_pressure_max_percent", 0) * (
|
|
||||||
100 + leak_test_1_step_spec.get("test_pressure_qpos", 0) / 100)
|
# Calcolo protetto delle pressioni assolute del test 1
|
||||||
psetminp2_a = leak_test_2_step_spec.get("settling_pressure_min_percent", 0) * (
|
if has_spec and self.recipe.spec.get("leak_1", False):
|
||||||
100 + leak_test_2_step_spec.get("test_pressure_qneg", 0) / 100)
|
psetminp_a = leak_test_1_step_spec.get("test_pressure", 0) * (
|
||||||
psetmaxp2_a = leak_test_2_step_spec.get("settling_pressure_max_percent", 0) * (
|
100 + leak_test_1_step_spec.get("test_pressure_qneg", 0) / 100)
|
||||||
100 + leak_test_2_step_spec.get("test_pressure_qpos", 0) / 100)
|
psetmaxp_a = leak_test_1_step_spec.get("settling_pressure_max_percent", 0) * (
|
||||||
if self.tester_component is not None:
|
100 + leak_test_1_step_spec.get("test_pressure_qpos", 0) / 100)
|
||||||
if self.recipe.spec["leak_1"]:
|
else:
|
||||||
|
psetminp_a = "-"
|
||||||
|
psetmaxp_a = "-"
|
||||||
|
|
||||||
|
# Calcolo protetto delle pressioni assolute del test 2
|
||||||
|
if has_spec and self.recipe.spec.get("leak_2", False):
|
||||||
|
psetminp2_a = leak_test_2_step_spec.get("settling_pressure_min_percent", 0) * (
|
||||||
|
100 + leak_test_2_step_spec.get("test_pressure_qneg", 0) / 100)
|
||||||
|
psetmaxp2_a = leak_test_2_step_spec.get("settling_pressure_max_percent", 0) * (
|
||||||
|
100 + leak_test_2_step_spec.get("test_pressure_qpos", 0) / 100)
|
||||||
|
else:
|
||||||
|
psetminp2_a = "-"
|
||||||
|
psetmaxp2_a = "-"
|
||||||
|
|
||||||
|
# Calcolo del valore di fine misura solo se le fasi sono effettivamente attive
|
||||||
|
if self.tester_component is not None and has_spec:
|
||||||
|
if self.recipe.spec.get("leak_1", False) and "Running test: pressure at the end of settling" in leak_test_1_results:
|
||||||
leak_test_1_results["Running test: pressure at the end of measure"] = (
|
leak_test_1_results["Running test: pressure at the end of measure"] = (
|
||||||
leak_test_1_results["Running test: pressure at the end of settling"]
|
leak_test_1_results["Running test: pressure at the end of settling"]
|
||||||
+ leak_test_1_results["Running test: measured leak"])
|
+ leak_test_1_results["Running test: measured leak"])
|
||||||
if self.recipe.spec["leak_2"]:
|
if self.recipe.spec.get("leak_2", False) and "Running test: pressure at the end of settling" in leak_test_2_results:
|
||||||
leak_test_2_results["Running test: pressure at the end of measure"] = (
|
leak_test_2_results["Running test: pressure at the end of measure"] = (
|
||||||
leak_test_2_results["Running test: pressure at the end of settling"]
|
leak_test_2_results["Running test: pressure at the end of settling"]
|
||||||
+ leak_test_2_results["Running test: measured leak"])
|
+ leak_test_2_results["Running test: measured leak"])
|
||||||
|
|
@ -1254,11 +1271,19 @@ class Test(Widget):
|
||||||
has_error (bool): True if there is an error, False otherwise.
|
has_error (bool): True if there is an error, False otherwise.
|
||||||
error_message (str): The error message to add.
|
error_message (str): The error message to add.
|
||||||
"""
|
"""
|
||||||
# print(f"DEBUG: Modbus error handler called - has_error={has_error}, error_message={error_message}") # Debugging
|
# Verifica se la ricetta attuale richiede il Tecna
|
||||||
|
needs_tecna = False
|
||||||
|
if self.recipe is not None and getattr(self.recipe, 'spec', None):
|
||||||
|
needs_tecna = (self.recipe.spec.get("leak_1", False) or
|
||||||
|
self.recipe.spec.get("leak_2", False) or
|
||||||
|
self.recipe.spec.get("test_freefall_leak", False))
|
||||||
|
|
||||||
if has_error:
|
if has_error:
|
||||||
self.add_error(f"Errore Tecna", True) # Add the Modbus error
|
# Mostra l'errore solo se il Tecna serve alla ricetta, o se non c'è nessuna ricetta caricata
|
||||||
|
if needs_tecna or self.recipe is None:
|
||||||
|
self.add_error(f"Errore Tecna", True)
|
||||||
else:
|
else:
|
||||||
self.remove_error(f"Errore Tecna") # Remove the Modbus error
|
self.remove_error(f"Errore Tecna")
|
||||||
|
|
||||||
def update_label_with_args(self, extra_info=None):
|
def update_label_with_args(self, extra_info=None):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -233,7 +233,8 @@ class Test_Leak(Test_Test):
|
||||||
self.components[self.tester_component].stop_test()
|
self.components[self.tester_component].stop_test()
|
||||||
self.components[self.tester_component].pause()
|
self.components[self.tester_component].pause()
|
||||||
self.disconnect(self.get_connection)
|
self.disconnect(self.get_connection)
|
||||||
self.set_digital_out("first_output", 0) # Set low when test stops
|
if self.step.step_type == "test_freefall_leak":
|
||||||
|
self.set_digital_out("first_output", 0) # Set low when test stops
|
||||||
super().stop()
|
super().stop()
|
||||||
self.start_b.setEnabled(False)
|
self.start_b.setEnabled(False)
|
||||||
self.stop_b.setEnabled(False)
|
self.stop_b.setEnabled(False)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user