Merge remote-tracking branch 'origin/master'

This commit is contained in:
stten5 2023-02-17 18:27:05 +01:00
commit 18729fd24e
9 changed files with 87 additions and 59 deletions

View File

@ -26,45 +26,51 @@
^FT71,127^A0N,20,20^FB249,1,5,C^FH\^CI28^FDVia Meucci 31/A^FS^CI27
^FT71,152^A0N,20,20^FB249,1,5,C^FH\^CI28^FD10079 Mappano(TO)^FS^CI27
^FT85,187^A0N,25,25^FH\^CI28^FDCliente:^FS^CI27
^FT87,359^A0N,20,18^FH\^CI28^FD{DD}/{MO}/{YY}^FS^CI27
^FT216,359^A0N,20,18^FH\^CI28^FD{HH}:{MI}:{SS}^FS^CI27
^FT87,352^A0N,20,18^FH\^CI28^FD{DD}/{MO}/{YY}^FS^CI27
^FT216,352^A0N,20,18^FH\^CI28^FD{HH}:{MI}:{SS}^FS^CI27
^FT18,1013^A0N,31,30^FH\^CI28^FDESITO:^FS^CI27
^FT144,1013^A0N,31,30^FH\^CI28^FDCONFORME^FS^CI27
^FT85,212^A0N,20,20^FH\^CI28^FD{CLIENT}^FS^CI27
^FT87,241^A0N,25,25^FH\^CI28^FDNumero Disegno:^FS^CI27
^FT87,266^A0N,20,20^FH\^CI28^FD{PART}^FS^CI27
^FT87,333^A0N,26,25^FH\^CI28^FDData/Ora Prova^FS^CI27
^FT87,327^A0N,26,25^FH\^CI28^FDData/Ora Prova^FS^CI27
^FT87,386^A0N,25,25^FH\^CI28^FDStazione:^FS^CI27
^FT88,295^A0N,25,25^FH\^CI28^FDN. Pezzo:^FS^CI27
^FT223,296^A0N,20,20^FH\^CI28^FD{SN4}^FS^CI27
^FT87,426^A0N,25,25^FH\^CI28^FDOPERATORE:^FS^CI27
^FT196,388^A0N,17,13^FH\^CI28^FD{STATION}^FS^CI27
^FT236,427^A0N,17,13^FH\^CI28^FD{OPERATOR}^FS^CI27
^FT199,385^A0N,20,15^FH\^CI28^FD{STATION}^FS^CI27
^FT231,424^A0N,20,15^FH\^CI28^FD{OPERATOR}^FS^CI27
^FO52,475^GB215,0,8^FS
^FT19,541^A0N,28,28^FH\^CI28^FDProva 2 (Alta)^FS^CI27
^FT19,568^A0N,23,23^FH\^CI28^FDPress.Max(mbar)^FS^CI27
^FT207,571^A0N,20,20^FH\^CI28^FD{PSETMAXP2}^FS^CI27
^FT19,596^A0N,23,23^FH\^CI28^FDPress.Min(mbar)^FS^CI27
^FT207,599^A0N,20,20^FH\^CI28^FD{PSETMINP2}^FS^CI27
^FT19,626^A0N,23,23^FH\^CI28^FDCaduta(mbar)^FS^CI27
^FT207,629^A0N,20,20^FH\^CI28^FD{RESLEAK2}^FS^CI27
^FT19,668^A0N,28,28^FH\^CI28^FDProva 1 (Bassa)^FS^CI27
^FT19,695^A0N,23,23^FH\^CI28^FDPress.Max(mbar)^FS^CI27
^FT207,698^A0N,20,20^FH\^CI28^FD{PSETMAXP}^FS^CI27
^FT19,723^A0N,23,23^FH\^CI28^FDPress.Min(mbar)^FS^CI27
^FT207,726^A0N,20,20^FH\^CI28^FD{PSETMINP}^FS^CI27
^FT19,753^A0N,23,23^FH\^CI28^FDCaduta(mbar)^FS^CI27
^FT207,756^A0N,20,20^FH\^CI28^FD{RESLEAK}^FS^CI27
^FT19,851^A0N,23,23^FH\^CI28^FDT.Pulizia(sec)^FS^CI27
^FT207,854^A0N,20,20^FH\^CI28^FD{PSETMAXP}^FS^CI27
^FT18,879^A0N,23,23^FH\^CI28^FDT.Riempim.(sec)^FS^CI27
^FT207,882^A0N,20,20^FH\^CI28^FD{PSETMINP}^FS^CI27
^FT19,909^A0N,23,23^FH\^CI28^FDT.Stabilizzaz.(sec)^FS^CI27
^FT207,912^A0N,20,20^FH\^CI28^FD{RESLEAK}^FS^CI27
^FT19,941^A0N,23,23^FH\^CI28^FDCaduta Tollerata max:^FS^CI27
^FT18,969^A0N,20,20^FH\^CI28^FD{PMIN} bar^FS^CI27
^FT19,541^A0N,28,28^FH\^CI28^FDProva 1:^FS^CI27
^FT19,568^A0N,23,23^FH\^CI28^FDP. rilevata:^FS^CI27
^FT191,571^A0N,20,20^FH\^CI28^FD{RESPSET}^FS^CI27
^FT19,591^A0N,23,23^FH\^CI28^FDCaduta ammessa:^FS^CI27
^FT191,593^A0N,20,20^FH\^CI28^FD{PMIN} mbar^FS^CI27
^FT19,613^A0N,23,23^FH\^CI28^FDCaduta rilevata:^FS^CI27
^FT179,614^A0N,20,20^FH\^CI28^FD{RESLEAK} mbar^FS^CI27
^FT19,701^A0N,23,23^FH\^CI28^FDT.Prova^FS^CI27
^FT207,702^A0N,20,20^FH\^CI28^FD{TTEST} s^FS^CI27
^FT18,657^A0N,23,23^FH\^CI28^FDT.Riempim.^FS^CI27
^FT207,654^A0N,20,20^FH\^CI28^FD{TFILL} s^FS^CI27
^FT19,679^A0N,23,23^FH\^CI28^FDT.Stabilizzaz.^FS^CI27
^FT207,678^A0N,20,20^FH\^CI28^FD{TSET} s^FS^CI27
^FT12,129^A0R,23,23^FH\^CI28^FD{YY}{MO}{DD}{HH}{MI}{SS}{SN4}^FS^CI27
^BY1,3,39^FT39,120^BCR,,N,N
^FH\^FD>:{YY}{MO}{DD}{HH}{MI}{SS}{SN4}^FS
^FT128,541^A0N,28,28^FH\^CI28^FD{PTEST} mbar^FS^CI27
^FT19,775^A0N,28,28^FH\^CI28^FDProva 2:^FS^CI27
^FT19,802^A0N,23,23^FH\^CI28^FDP. rilevata:^FS^CI27
^FT191,805^A0N,20,20^FH\^CI28^FD{RESPSET2}^FS^CI27
^FT19,825^A0N,23,23^FH\^CI28^FDCaduta ammessa:^FS^CI27
^FT191,826^A0N,20,20^FH\^CI28^FD{PMIN2} mbar^FS^CI27
^FT19,847^A0N,23,23^FH\^CI28^FDCaduta rilevata:^FS^CI27
^FT179,848^A0N,20,20^FH\^CI28^FD{RESLEAK2} mbar^FS^CI27
^FT19,934^A0N,23,23^FH\^CI28^FDT.Prova^FS^CI27
^FT207,935^A0N,20,20^FH\^CI28^FD{TTEST2} s^FS^CI27
^FT18,891^A0N,23,23^FH\^CI28^FDT.Riempim.^FS^CI27
^FT207,888^A0N,20,20^FH\^CI28^FD{TFILL2} s^FS^CI27
^FT19,912^A0N,23,23^FH\^CI28^FDT.Stabilizzaz.^FS^CI27
^FT207,911^A0N,20,20^FH\^CI28^FD{TSET2} s^FS^CI27
^FT128,775^A0N,28,28^FH\^CI28^FD{PTEST2} mbar^FS^CI27
^PQ1,0,1,Y
^XZ

View File

@ -124,7 +124,7 @@ percentuale_minima_pressione_assestamento: 5
percentuale_massima_pressione_assestamento: 5
tempo_di_test: 10
pressione_di_test_delta_minimo: 30
pressione_di_test: 15000
pressione_di_test: 1111
pressione_di_test_delta_massimo: 30
tempo_svuotamento: 1
pressione_svuotamento: 100
@ -138,7 +138,7 @@ percentuale_minima_pressione_assestamento_2: 5
percentuale_massima_pressione_assestamento_2: 5
tempo_di_test_2: 5
pressione_di_test_delta_minimo_2: 200
pressione_di_test_2: 1000
pressione_di_test_2: 2222
pressione_di_test_delta_massimo_2: 200
tempo_svuotamento_2: 1
pressione_svuotamento_2: 100

View File

@ -2,7 +2,7 @@
description = ST-TEN-6 DOPPIA PROVA PRESSIONE 6/20 BAR
[hardware_config]
archive_synchronizer: absent
archive_synchronizer: present
; galaxy_camera: present
uvc_camera: present
label_printer: present
@ -27,13 +27,19 @@ recipe_name_field: codice_ricetta
part_number_field: codice_prodotto
label_template_field: modello_etichetta
description_field: descrizione
[recipes_defaults]
dimensione_lotto_abilitata:
tempo_pre_riempimento: 0
pressione_pre_riempimento: 1000
tempo_riempimento: 10
tempo_assestamento: 12
#tempo_riempimento: 10
#tempo_assestamento: 12
#tempo_di_test: 10
tempo_riempimento: 2
tempo_assestamento: 3
tempo_di_test: 4
percentuale_minima_pressione_assestamento: 5
percentuale_massima_pressione_assestamento: 5
tempo_di_test: 10
pressione_di_test_delta_minimo: 30
pressione_di_test: 7000
pressione_di_test_delta_massimo: 30
@ -43,11 +49,14 @@ config_elettrovalvole: 0
prova_tenuta_abilitata_2: x
tempo_pre_riempimento_2: 0
pressione_pre_riempimento_2: 1000
tempo_riempimento_2: 10
tempo_assestamento_2: 12
#tempo_riempimento_2: 10
#tempo_assestamento_2: 12
#tempo_di_test_2: 10
tempo_riempimento_2: 5
tempo_assestamento_2: 6
tempo_di_test_2: 7
percentuale_minima_pressione_assestamento_2: 5
percentuale_massima_pressione_assestamento_2: 5
tempo_di_test_2: 10
pressione_di_test_delta_minimo_2: 30
pressione_di_test_2: 15000
pressione_di_test_delta_massimo_2: 30

View File

@ -1,3 +1,3 @@
codice_ricetta,codice_prodotto,cliente,descrizione,prova_tenuta_abilitata,prova_tenuta_abilitata_2,config_elettrovalvole,config_elettrovalvole_2
5802820548,5802820548,IVECO,Tubo doppio,x,x,0,1
5802820549,5802820549,IVECO,Tubo singolo,x,,0,1
codice_ricetta,codice_prodotto,cliente,descrizione,prova_tenuta_abilitata,prova_tenuta_abilitata_2,config_elettrovalvole,config_elettrovalvole_2,modello_etichetta
5802820548,5802820548,IVECO,Tubo doppio,x,x,0,1,EtichettaR5_Montaggio_2prove.prn
5802820549,5802820549,IVECO,Tubo singolo,x,,0,1,EtichettaR5_Montaggio.prn

1 codice_ricetta codice_prodotto cliente descrizione prova_tenuta_abilitata prova_tenuta_abilitata_2 config_elettrovalvole config_elettrovalvole_2 modello_etichetta
2 5802820548 5802820548 IVECO Tubo doppio x x 0 1 EtichettaR5_Montaggio_2prove.prn
3 5802820549 5802820549 IVECO Tubo singolo x 0 1 EtichettaR5_Montaggio.prn

View File

@ -91,8 +91,8 @@ class Recipe_Selection(Widget):
"resistance": len(self.config.get("recipes_defaults", noner)["verifica_resistenza_connettore_abilitata"]) and "resistance" not in self.unsupported_steps,
"screws": len(self.config.get("recipes_defaults", noner)["avvitatura_abilitata"]) and "screws" not in self.unsupported_steps,
"instruction": len(self.config.get("recipes_defaults", noner)["istruzione_abilitata"]) and "instruction" not in self.unsupported_steps,
"leak_1": len(self.config.get("recipes_defaults", noner)["prova_tenuta_abilitata"]) and "leak" not in self.unsupported_steps,
"leak_2": len(self.config.get("recipes_defaults", noner)["prova_tenuta_abilitata_2"]) and "leak" not in self.unsupported_steps,
"leak_1": len(self.config.get("recipes_defaults", noner)["prova_tenuta_abilitata"]) and "leak_1" not in self.unsupported_steps,
"leak_2": len(self.config.get("recipes_defaults", noner)["prova_tenuta_abilitata_2"]) and "leak_2" not in self.unsupported_steps,
"vision": len(self.config.get("recipes_defaults", noner)["test_visione_abilitato"]) and "vision" not in self.unsupported_steps,
"print": len(self.config.get("recipes_defaults", noner)["stampa_etichetta_abilitata"]) and "print" not in self.unsupported_steps,
"step_editors": step_defaults,
@ -297,7 +297,8 @@ class Recipe_Selection(Widget):
recipe_is_new = True
for step_name, step_spec in steps_specs.items():
step = steps[step_name]
step.type = re.sub(r"^(.*)_[0-9]+$", r"\1", step_name)
#step.type = re.sub(r"^(.*)_[0-9]+$", r"\1", step_name)
step.type = step_name
step.spec = step_spec
if recipe_is_new:
step.save(force_insert=True)
@ -313,8 +314,8 @@ class Recipe_Selection(Widget):
"resistance": len(row.get("verifica_resistenza_connettore_abilitata", defaults["verifica_resistenza_connettore_abilitata"])) and "resistance" not in self.unsupported_steps,
"screws": len(row.get("avvitatura_abilitata", defaults["avvitatura_abilitata"])) and "screws" not in self.unsupported_steps,
"instruction": len(row.get("istruzione_abilitata", defaults["istruzione_abilitata"])) and "instruction" not in self.unsupported_steps,
"leak_1": len(row.get("prova_tenuta_abilitata", defaults["prova_tenuta_abilitata"])) and "leak" not in self.unsupported_steps,
"leak_2": len(row.get("prova_tenuta_abilitata_2", defaults["prova_tenuta_abilitata_2"])) and "leak" not in self.unsupported_steps,
"leak_1": len(row.get("prova_tenuta_abilitata", defaults["prova_tenuta_abilitata"])) and "leak_1" not in self.unsupported_steps,
"leak_2": len(row.get("prova_tenuta_abilitata_2", defaults["prova_tenuta_abilitata_2"])) and "leak_2" not in self.unsupported_steps,
"vision": len(row.get("test_visione_abilitato", defaults["test_visione_abilitato"])) and "vision" not in self.unsupported_steps,
"print": len(row.get("stampa_etichetta_abilitata", defaults["stampa_etichetta_abilitata"])) and "print" not in self.unsupported_steps,
"steps": [], # should be pks of the enabled steps

View File

@ -59,14 +59,14 @@ class Recipe_Spec_And_Step_Editor(Editor):
"tab": self.instruction_t,
},
"leak_1": {
"type": "leak",
"type": "leak_1",
"enable": self.leak_enabled_1_cb,
"widget": "leak_editor_1_w",
"editor": Leak_Step_Editor(),
"tab": self.leak_1_t,
},
"leak_2": {
"type": "leak",
"type": "leak_2",
"enable": self.leak_enabled_2_cb,
"widget": "leak_editor_2_w",
"editor": Leak_Step_Editor(),

View File

@ -13,7 +13,8 @@ class Step_Spec_JEDECW(QPushButton, Cell):
def __init__(self, action=None, readonly=True, autocomplete=None, field_name=None, field_alias=None, field=None, row_number=None, crud=None):
self.editors = {
"vision": Vision_Step_Editor(cell_widget=self),
"leak": Leak_Step_Editor(cell_widget=self),
"leak_1": Leak_Step_Editor(cell_widget=self),
"leak_2": Leak_Step_Editor(cell_widget=self),
}
self.editor = None
self.editor_type = None
@ -75,7 +76,8 @@ class Steps_Management(Widget):
fields_aliases=crud_aliases,
autocomplete={
"type": [
"leak",
"leak_1",
"leak_2",
"vision",
],
"spec": {

View File

@ -56,7 +56,8 @@ class Test(Widget):
"instruction":{"digital_io"},
"screws": {"screwdriver", "tecna_t3", },
"resistance": {"multicomp", },
"leak": {"tecna_t3", },
"leak_1": {"tecna_t3", },
"leak_2": {"tecna_t3", },
"vision": {("uvc_camera", "galaxy_camera", ), "vision", "vision_saver", }, # "neo_pixels", },
"print": {"label_printer", },
}
@ -84,7 +85,8 @@ class Test(Widget):
"done": Test_Assembly(img_path=self.select_step_img("success"), text=u"COLLAUDO COMPLETATO", widget=None),
"emergency": Test_Assembly(img_path=self.select_step_img("reset_emergency"), text=u"EMERGENZA INTERVENUTA - RIPRISTINARE PULSANTE E SELEZIONARE \"RESET EMERGENZA\" DAL MEN\u00d9 \"STRUMENTI\"", widget=None),
"fail": Test_Assembly(img_path=self.select_step_img("fail"), text=u"CICLO INTERROTTO, PREMERE CONTINUA PER COMINCIARE UN NUOVO CICLO", widget=Test_Fail()),
"leak": Test_Assembly(img_path=None, text=None, widget=Test_Leak(components=self.components, recipe=self.recipe, step=self.step, pieces=self.pieces)),
"leak_1": Test_Assembly(img_path=None, text=None, widget=Test_Leak(components=self.components, recipe=self.recipe, step=self.step, pieces=self.pieces)),
"leak_2": Test_Assembly(img_path=None, text=None, widget=Test_Leak(components=self.components, recipe=self.recipe, step=self.step, pieces=self.pieces)),
"instruction": Test_Assembly(img_path=None, text=u"ESEGUIRE LE OPERAZIONI DI MONTAGGIO INDICATE IN FIGURA", widget=Test_Instructions(components=self.components, recipe=self.recipe,bench_name=self.config.machine_id, step=self.step,run_once=True)),
"print": Test_Assembly(img_path=self.select_step_img("print"), text=u"STAMPA ETICHETTA IN CORSO", widget=None),
"resistance": Test_Assembly(img_path=None, text=u"COLLEGARE CONNETTORE ELETTRICO PER EFFETTUARE PROVA RESISTENZA", widget=Test_Resistance(components=self.components, recipe=self.recipe, step=self.step, pieces=self.pieces)),
@ -356,7 +358,7 @@ class Test(Widget):
}),
] if "resistance" not in self.unsupported_steps else []),
*([
Steps(type="leak", spec={
Steps(type="leak_1", spec={
"pre_filling_time": 0,
"pre_filling_pressure": 1000,
"filling_time": 5,
@ -371,9 +373,9 @@ class Test(Widget):
"flush_pressure": 100,
"autotest": True,
}),
] if "leak" not in self.unsupported_steps else []),
] if "leak_1" not in self.unsupported_steps else []),
*([
Steps(type="leak", spec={
Steps(type="leak_1", spec={
"pre_filling_time": 0,
"pre_filling_pressure": 1000,
"filling_time": 5,
@ -388,7 +390,7 @@ class Test(Widget):
"flush_pressure": 100,
"autotest": False,
}),
] if "leak" not in self.unsupported_steps else []),
] if "leak_1" not in self.unsupported_steps else []),
Steps(type="done"),
Steps(type="wait"),
]
@ -499,16 +501,16 @@ class Test(Widget):
self.log.info("cycle printed already compiled label")
# LABEL PRINT
recipe = archived.test_data.get("recipe", {})
leak_test_1 = archived.test_data.get("leak", {}).get("0", {})
leak_test_1 = archived.test_data.get("leak_1", {}).get("0", {})
leak_test_1_step = leak_test_1.get("step", {})
leak_test_1_step_spec = leak_test_1_step.get("spec", {})
leak_test_1_results = leak_test_1.get("results", {})
leak_test_1_results_data = leak_test_1_results.get("data", {})
leak_test_2 = archived.test_data.get("leak_2", {}).get("0", {})
leak_test_2_step = leak_test_1.get("step", {})
leak_test_2_step_spec = leak_test_1_step.get("spec", {})
leak_test_2_results = leak_test_1.get("results", {})
leak_test_2_results_data = leak_test_1_results.get("data", {})
leak_test_2_step = leak_test_2.get("step", {})
leak_test_2_step_spec = leak_test_2_step.get("spec", {})
leak_test_2_results = leak_test_2.get("results", {})
leak_test_2_results_data = leak_test_2_results.get("data", {})
psetminp_a = leak_test_1_step_spec.get("test_pressure", 0) * (100+leak_test_1_step_spec.get("test_pressure_min_delta", 0)/100)
psetmaxp_a = leak_test_1_step_spec.get("settling_pressure_max_percent", 0) * (100+leak_test_1_step_spec.get("test_pressure_max_delta", 0)/100)
@ -526,6 +528,10 @@ class Test(Widget):
"PPREFILL": self.labellify(leak_test_1_step_spec.get("pre_filling_pressure", "-")),
"TFILL": self.labellify(leak_test_1_step_spec.get("filling_time", "-")),
"TSET": self.labellify(leak_test_1_step_spec.get("settling_time", "-")),
"TPREFILL2": self.labellify(leak_test_2_step_spec.get("pre_filling_time", "-")),
"PPREFILL2": self.labellify(leak_test_2_step_spec.get("pre_filling_pressure", "-")),
"TFILL2": self.labellify(leak_test_2_step_spec.get("filling_time", "-")),
"TSET2": self.labellify(leak_test_2_step_spec.get("settling_time", "-")),
"PSETMINP": self.labellify(leak_test_1_step_spec.get("settling_pressure_min_percent", " -")),
"PSETMAXP": self.labellify(leak_test_1_step_spec.get("settling_pressure_max_percent", " -")),
"PSETMINP2": self.labellify(leak_test_2_step_spec.get("settling_pressure_min_percent", " -")),
@ -535,8 +541,11 @@ class Test(Widget):
"PSETMINP2_A": self.labellify(psetminp2_a),
"PSETMAXP2_A": self.labellify(psetmaxp2_a),
"TTEST": self.labellify(leak_test_1_step_spec.get("test_time", "-")),
"TTEST2": self.labellify(leak_test_2_step_spec.get("test_time", "-")),
"PMIN": self.labellify(leak_test_1_step_spec.get("test_pressure_min_delta", "-")),
"PMIN2": self.labellify(leak_test_2_step_spec.get("test_pressure_min_delta", "-")),
"PTEST": self.labellify(leak_test_1_step_spec.get("test_pressure", "-")),
"PTEST2": self.labellify(leak_test_2_step_spec.get("test_pressure", "-")),
"PMAX": self.labellify(leak_test_1_step_spec.get("test_pressure_max_delta", "-")),
"TFLUSH": self.labellify(leak_test_1_step_spec.get("flush_time", "-")),
"PFLUSH": self.labellify(leak_test_1_step_spec.get("flush_pressure", "-")),
@ -544,6 +553,7 @@ class Test(Widget):
"RESTPB": self.labellify(leak_test_1_results_data.get("Running test: phase backwards time", "-")),
"RESPFILL": self.labellify(leak_test_1_results_data.get("Running test: filling pressure", "-")),
"RESPSET": self.labellify(leak_test_1_results_data.get("Running test: pressure at the end of settling", "-")),
"RESPSET2": self.labellify(leak_test_2_results_data.get("Running test: pressure at the end of settling", "-")),
"RESPB": self.labellify(leak_test_1_results_data.get("Running test: burst pressure", "-")),
"RESLEAK": self.labellify(leak_test_1_results_data.get("Running test: measured leak", "-")),
"RESLEAK2": self.labellify(leak_test_2_results_data.get("Running test: measured leak", "-")),