SHARE
TWEET

IsAmUxPompa (dzień dobry dzień dobry ^^)

pabloducato Dec 1st, 2018 97 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. PROGRAM pompa
  2. VAR_EXTERNAL
  3.     x1:         BOOL; (* poziom wody 20% *)
  4.     x2:         BOOL; (* poziom wody 50% *)
  5.     x3:         BOOL; (* poziom wody 80% *)
  6.     z:          BOOL; (* stan zawóru spustowego *)
  7.     p:          BOOL; (* stan pompy/POMPA *)
  8.     high:       REAL; (* wysokosc poziomu wody *)
  9.     d:          BOOL; (* deszcz *)
  10.     s:          BOOL; (* slonce *)
  11.     c:          BOOL; (* stan czujnikow *)
  12. END_VAR
  13. VAR
  14.     s_change:   REAL; (* szybkosc parowania wody *)
  15.     d_change:   REAL; (* szybkosc wzrostu wody *)
  16.     z_change:   REAL; (* szybkosc uplywu wody przez zawor *)
  17. END_VAR
  18. s_change := 0.08; (* okreslenie wartosci szybkosci parowania wody *)
  19. d_change := 0.09; (* okreslenie wartosci szybkosci wzrostu wody *)
  20. z_change := 0.07; (* okreslenie wartosci szybkosci uplywu wody przez zawor *)
  21. IF high >= 20.0 THEN x1 := TRUE; (* jezeli wartosc wysokosci >= 20.0, to zapal czujnik x1 *)
  22. ELSE x1 := FALSE; (* inaczej czujnik x1 = czerwony *)
  23. END_IF;
  24. IF high >= 50.0 THEN x2 := TRUE; (* jezeli wartosc wysokosci >= 50.0, to zapal czujnik x2 *)
  25. ELSE x2 := FALSE; (* inaczej czujnik x2 = czerwony *)
  26. END_IF;
  27. IF high >= 80.0 THEN x3 := TRUE; (* jezeli wartosc wysokosci >= 80.0, to zapal czujnik x2 *)
  28. ELSE x3 := FALSE; (* inaczej czujnik x3 = czerwony *)
  29. END_IF;
  30. IF p THEN high := high + 0.15; END_IF; (* jezeli pompa wlaczona, to zwiekszaj poziom wody *)
  31. IF high <= 0.0 THEN high := 0.0;  (* zabezpieczenie przed zejsciem ponizej zera *)
  32. ELSIF high >= 100.0 THEN high := 100.0; (* zabezpieczenie przed zejsciem powyzej stu *)
  33. END_IF;
  34. IF high >= 80.0 THEN p:= FALSE; (* wylaczenie pompy na 3 poziomie *)
  35. END_IF;
  36. IF s = TRUE THEN (* jezeli jest slonce *)
  37.    IF high >= s_change THEN high := high - s_change; (* parowanie wody *)
  38.     ELSE high := 0.0; END_IF;
  39. END_IF;
  40. IF d = TRUE THEN (* jezeli jest deszcz *)
  41.    IF high <= 100.0 - d_change THEN high := high + d_change; (* gromadzenie wody *)
  42.     ELSE high := 100.0; END_IF;
  43. END_IF;
  44. IF z = TRUE THEN (* zawor *)
  45.    IF high >= z_change THEN high := high - z_change;
  46.     ELSE high := 0.0; END_IF;
  47. END_IF;
  48. END_PROGRAM
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top