Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROGRAM pompa
- VAR_EXTERNAL
- x1: BOOL; (* poziom wody 20% *)
- x2: BOOL; (* poziom wody 50% *)
- x3: BOOL; (* poziom wody 80% *)
- z: BOOL; (* stan zawóru spustowego *)
- p: BOOL; (* stan pompy/POMPA *)
- high: REAL; (* wysokosc poziomu wody *)
- d: BOOL; (* deszcz *)
- s: BOOL; (* slonce *)
- c: BOOL; (* stan czujnikow *)
- END_VAR
- VAR
- s_change: REAL; (* szybkosc parowania wody *)
- d_change: REAL; (* szybkosc wzrostu wody *)
- z_change: REAL; (* szybkosc uplywu wody przez zawor *)
- END_VAR
- s_change := 0.08; (* okreslenie wartosci szybkosci parowania wody *)
- d_change := 0.09; (* okreslenie wartosci szybkosci wzrostu wody *)
- z_change := 0.07; (* okreslenie wartosci szybkosci uplywu wody przez zawor *)
- IF high >= 20.0 THEN x1 := TRUE; (* jezeli wartosc wysokosci >= 20.0, to zapal czujnik x1 *)
- ELSE x1 := FALSE; (* inaczej czujnik x1 = czerwony *)
- END_IF;
- IF high >= 50.0 THEN x2 := TRUE; (* jezeli wartosc wysokosci >= 50.0, to zapal czujnik x2 *)
- ELSE x2 := FALSE; (* inaczej czujnik x2 = czerwony *)
- END_IF;
- IF high >= 80.0 THEN x3 := TRUE; (* jezeli wartosc wysokosci >= 80.0, to zapal czujnik x2 *)
- ELSE x3 := FALSE; (* inaczej czujnik x3 = czerwony *)
- END_IF;
- IF p THEN high := high + 0.15; END_IF; (* jezeli pompa wlaczona, to zwiekszaj poziom wody *)
- IF high <= 0.0 THEN high := 0.0; (* zabezpieczenie przed zejsciem ponizej zera *)
- ELSIF high >= 100.0 THEN high := 100.0; (* zabezpieczenie przed zejsciem powyzej stu *)
- END_IF;
- IF high >= 80.0 THEN p:= FALSE; (* wylaczenie pompy na 3 poziomie *)
- END_IF;
- IF s = TRUE THEN (* jezeli jest slonce *)
- IF high >= s_change THEN high := high - s_change; (* parowanie wody *)
- ELSE high := 0.0; END_IF;
- END_IF;
- IF d = TRUE THEN (* jezeli jest deszcz *)
- IF high <= 100.0 - d_change THEN high := high + d_change; (* gromadzenie wody *)
- ELSE high := 100.0; END_IF;
- END_IF;
- IF z = TRUE THEN (* zawor *)
- IF high >= z_change THEN high := high - z_change;
- ELSE high := 0.0; END_IF;
- END_IF;
- END_PROGRAM
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement