@startuml SD_pumpningsforløb

!pragma teoz true

participant CC
participant Aktuatorenhed
control Saltvandspumpe
control Demineraliseretvandpumpe
control Tømningspumpe
title Processtrategi for pumpers reguleringsmekanismer


loop En gang hvert 15 min

    alt if "saltkoncentration < setpoint"
        
    CC -> Aktuatorenhed : saltvand + 0.25 PSU
        {startTøm1} Aktuatorenhed -> Tømningspumpe : Pump(23.75ml, 10% dutyCycle)
        activate Tømningspumpe 
        note right Tømningspumpe : Fjerner akvarievand\nfra akvarium\n 10% dutyCycle =  1ml/0.07s
        {endTøm1} Tømningspumpe --> Aktuatorenhed
        deactivate Tømningspumpe
        {startTøm1} <-> {endTøm1} : 1,7 s
        
        {startSalt1} Aktuatorenhed -> Saltvandspumpe: Pump(23.75ml, 10% dutyCycle)
        activate Saltvandspumpe 
        note right Saltvandspumpe : Pumper saltvand\ntil akvarium\n10% dutyCycle =  1ml/0.07s
        {endSalt1} Saltvandspumpe --> Aktuatorenhed
        deactivate Saltvandspumpe
        {startSalt1} <-> {endSalt1} : 1,7 s

    else if "saltkoncentration > setpoint"

        CC -> Aktuatorenhed : saltvand - 0.25 PSU (currentPsu)
        Aktuatorenhed -> Aktuatorenhed : psuToMl(currentPsu)
        activate Aktuatorenhed
        note right Aktuatorenhed : (25L/currentPsu)*0.25 = ml
        deactivate Aktuatorenhed

        {startTøm2} Aktuatorenhed -> Tømningspumpe : Pump(ml, 90% dutyCycle)
        activate Tømningspumpe 
        note right Tømningspumpe : Fjerner akvarievand\nfra akvarium\n90% dutyCycle = 1ml/0.044s
        {endTøm2} Tømningspumpe --> Aktuatorenhed
        deactivate Tømningspumpe
        {startTøm2} <-> {endTøm2} : (ml * 0.044) = \npump time in seconds

        {startDemi1} Aktuatorenhed -> Demineraliseretvandpumpe :Pump(ml, 90% dutyCycle)
        activate Demineraliseretvandpumpe 
        note right Demineraliseretvandpumpe : Tilføjer Demineraliseret-\nvand til akvarium\n90% dutyCycle = 1ml/0.044s
        {endDemi1} Demineraliseretvandpumpe --> Aktuatorenhed
        deactivate Demineraliseretvandpumpe
        {startDemi1} <-> {endDemi1} : (ml * 0.044) = \npump time in seconds
    end

    alt if vandstand > 28 cm
        CC -> Aktuatorenhed : Fjern 3L akvarievand
        {startTøm3} Aktuatorenhed -> Tømningspumpe : Pump(3000ml, 90% duty cycle)
        activate Tømningspumpe 
        note right Tømningspumpe : Fjerner akvarievand\nfra akvarium\n90% dutyCycle = 1ml/0.044s
        {endTøm3} Tømningspumpe --> Aktuatorenhed
        deactivate Tømningspumpe
        {startTøm3} <-> {endTøm3} : 132 s


    else if vandstand < 22 cm
        CC -> Aktuatorenhed : Tilføj 3 liter vand(currentPsu)

        note over Aktuatorenhed : ml = currentPsu*(3L/(10*26.3))
        {startSalt2} Aktuatorenhed -> Saltvandspumpe : Pump(ml, dutyCycle 90%)
        activate Saltvandspumpe
        note right Saltvandspumpe : Pumper saltvand\ntil akvarium\n90% dutyCycle = 1ml/0.044s
        {endSalt2} Saltvandspumpe --> Aktuatorenhed
        deactivate Saltvandspumpe
        {startSalt2} <-> {endSalt2} : (ml * 0.044) = \npump time\nin seconds

        {startDemi2} Aktuatorenhed -> Demineraliseretvandpumpe : Pump(3000 - ml, dutyCycle 90%)
        activate Demineraliseretvandpumpe
        note right Demineraliseretvandpumpe : Tilføjer Demineraliseret-\nvand til akvarium\n90% dutyCycle = 1ml/0.044s
        {endDemi2} Demineraliseretvandpumpe --> Aktuatorenhed
        deactivate Demineraliseretvandpumpe
        {startDemi2} <-> {endDemi2} : (ml * 0.044) = \npump time in seconds
        
        Aktuatorenhed --> CC
end

@enduml