Advertisement
pabloducato

IsAmUxPompa (dzień dobry dzień dobry ^^)

Dec 1st, 2018
346
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement