Untitled

 avatar
unknown
plain_text
a year ago
2.6 kB
10
Indexable
(* 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