Untitled
(* Dichirazione delle Variabili *) VAR ACCENDI_MOTORE: BOOL := FALSE; statoCorrente : ENUM {Iniziale, Carico, Lavaggio, Risciacquo, Disinfestazione, Spegnimento}; MostraMessaggio: STRING; quantitaDetergente: REAL; quantitaDisinfettante: REAL := 150 (* Quantita di disinfettante *) temperaturaLavaggio: INT; tempoLavaggio: TIME; quantitaAcqua: INT; tempoRisciacquo: TIME; cicliRisciacquo: INT; tempAcqua: INT; END_VAR (* Logica di Controllo Principale *) IF NOT ACCENDI_MOTORE THEN ACCENDI_MOTORE := TRUE (* Accendi il motore se non e gia acceso *) statoCorrente := Carico (* Imposta lo stato iniziale a Carico *) END_IF CASE statoCorrente OF Carico: MostraMessaggio := "Per favore, inserisci i vestiti."; WaitForUserInput(); statoCorrente := Lavaggio Lavaggio: MostraMessaggio := "Avvio del lavaggio.."; temperaturaLavaggio := 30; (* Temperatura dell acqua per il lavaggio in gradi Celsius *) quantitaAcqua := 50; (* Livello dell acqua per il lavaggio *) quantitaDetergente := 100.0; (* Quantita di detersivo in ml *) tempoLavaggio := 20; (* Tempo di lavaggio di 20 minuti *) OpenWaterValve(quantitaAcqua); SetWaterTemperature(temperaturaLavaggio); DispenseDetergent(quantitaDetergente); StartWashingCycle(tempoLavaggio); statoCorrente := Risciacquo; Risciacquo: MostraMessaggio := "Inizio della fase di risciacquo.."; tempAcqua := 25 (* Temperatura dell acqua di risciacquo in gradi Celsius *) cicliRisciacquo := 2 (* Numero di cicli di risciacquo *) tempoRisciacquo := 5 (* Tempo di risciacquo per il ciclo *) quantitaAcqua := 40 (* Livello dell acqua per il risciacquo *) FOR i := TO cicliRisciacquo DO OpenWaterValve(quantitaAcqua); SetWaterTemperature(tempAcqua); StartRinseCycle(tempoRisciacquo); END_FOR; statoCorrente := Disinfestazione Disinfestazione: MostraMessaggio := "Inizio della fase di disinfestazione.."; quantitaDisinfettante = 150.0 (* Quantita di disinfettante in ml *) OpenDisinfectantValve(); DispenseDisinfectant(quantitaDisinfettante); RunDisinfectionProcess(); MostraMessaggio := "Disinfestazione completata"; statoCorrente := Spegnimento Spegnimento: MostraMessaggio := "Spegnimento del motore.."; ACCENDI_MOTORE := FALSE (* Spegni il motore *) statoCorrente := Iniziale END_CASE
Leave a Comment