pabloducato

Rozproszony_System_Kontrolno_Pomiarowy_Ze_Sterownikiem_SMC

Dec 1st, 2018
325
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. PROGRAM STEROWANIE
  2. VAR_EXTERNAL (*$AUTO*)
  3. END_VAR
  4. VAR
  5. Stan : INT:=0; (* Stan automatu *)
  6. Stan_: INT:=1; (* Stan automatu (poprzedni) *)
  7. END_VAR
  8.  
  9. (*** Sterowanie poziomem cieczy ***)
  10. CASE Stan OF
  11. 0: (* Tryb MANUAL (AUTO=FALSE) *)
  12. IF AUTO THEN Stan := Stan_; END_IF
  13. 1: (* Tryb AUTO (AUTO=TRUE): napełnianie *)
  14. IF START THEN
  15. Z1 := TRUE; Z2 := FALSE; (* Napełnianie zbiornika *)
  16. IF H3 THEN Stan := 2; END_IF (* Przejście do opróżniania *)
  17. ELSE
  18. Z1 := FALSE; Z2 := FALSE; (* Wstrzymanie napełniania *)
  19. END_IF
  20. IF NOT AUTO THEN
  21. Stan_ := Stan; (* Zapamiętanie stanu *)
  22. Stan := 0; (* Przejście do MANUAL *)
  23. END_IF
  24. 2: (* Tryb AUTO (AUTO=TRUE): opróżnianie *)
  25. IF START THEN
  26. Z1 := FALSE; Z2 := TRUE; (* Opróżnianie zbiornika *)
  27. IF NOT H1 THEN Stan := 1; END_IF (* Przejście do napełn. *)
  28. ELSE
  29. Z1 := FALSE; Z2 := FALSE; (* Wstrzymanie opróżniania *)
  30. END_IF
  31. IF NOT AUTO THEN
  32. Stan_ := Stan; (* Zapamiętanie stanu *)
  33. Stan := 0; (* Przejście do MANUAL *)
  34. END_IF
  35. END_CASE
  36.  
  37. (*** Regulacja temperatury cieczy (p.6) ***)
  38. IF AUTO AND START THEN
  39. IF (T2<T1) THEN
  40. G1 := TRUE;
  41. ELSE
  42. G1 := FALSE;
  43. END_IF
  44. END_IF
  45. (*** Sygnalizacja alarmów (p.5) ***)
  46. IF P1 OR (G1 AND NOT H1) OR (H3 AND NOT H2) OR (H2 AND NOT H1) THEN
  47. ALM:=TRUE;
  48. END_IF
  49. (*** Obsługa alarmów ***)
  50. IF ALM AND START THEN (* ALARM - np. uszkodzone czujniki *)
  51. Z1 := FALSE; Z2 := FALSE; (* Stan bezpieczny Z1, Z2 *)
  52. G1 := FALSE; (* Grzałka G1 wyłączona *)
  53. AUTO := FALSE; (* Tryb MANUAL *)
  54. START := FALSE; (* Zatrzymanie procesu *)
  55. Stan := 0; (* Tryb MANUAL *)
  56. END_IF
  57. IF ALMACK THEN (* Jeśli potwierdzony alarm *)
  58. ALM := FALSE; (* Kasowanie alarmu *)
  59. ALMACK := FALSE; (* Kasowanie potwierdzenia *)
  60. END_IF
  61. END_PROGRAM
Add Comment
Please, Sign In to add comment