Advertisement
Guest User

Untitled

a guest
Jan 21st, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.56 KB | None | 0 0
  1. #define lag 0
  2.  
  3. //Przylacza Arduino
  4.  
  5. #define Button1Pin A0 //nazwa pinu dla "Przycisk ĹĽÄ…danie 0-go poziomu"
  6. #define Button3Pin A2 //nazwa pinu dla "Przycisk ĹĽÄ…danie 2-go poziomu"
  7. #define Button4Pin A3 //nazwa pinu dla "Przycisk ĹĽÄ…danie 3-go poziomu"
  8. #define Sensor1Pin A4 //nazwa pinu dla "Sensor obecności kabiny na 0-wym poziomie"
  9. #define Sensor3Pin 12 //nazwa pinu dla "Sensor obecności kabiny na 2-im poziomie"
  10. #define Sensor4Pin 13 //nazwa pinu dla "Sensor obecności kabiny na 3-im poziomie"
  11. #define OutputQ1Pin 5//nazwa pinu dla Forward/Reverse Signal (bit kierunku)
  12. #define OutputQ2Pin 4//nazwa pinu dla Start/Stop Signal (bit stopu)
  13.  
  14. //Maciej Parapura I7Y3S1
  15.  
  16. //Zaprojektować układ sterownika silnikiem windy.
  17. //Winda porusza się między trzema następującymi kondygnacjami: 0, 2 ,3.
  18. //zadany jest stan poczÄ…tkowy (zachowanie windy w momencie uruchomienia programu na
  19. //sterowniku PLC i na mikrokontrolerze). Stan początkowy - zjazd na sam dół (na 0 kondygnacje).
  20.  
  21. //Uwaga: przed uruchomieniem programu na sterowniku, winda zostaje ustawiona
  22. //na 3 kondygnacji.
  23.  
  24. //Zmienne globalne
  25. boolean Q1 = 1;//Forward/Reverse Control Signal Relay 3
  26. boolean Q2 = 0;//Start/Stop Control Signal Relay 4
  27. boolean I1 = 0;//Odczyt z "Przycisk zadania 0-go poziomu"
  28. boolean I3 = 0;//Odczyt z "Przycisk zadania 2-go poziomu"
  29. boolean I4 = 0;//Odczyt z "Przycisk zadania 3-go poziomu"
  30. boolean I5 = 0;//Odczyt z "Sensor obecnosci kabiny na 0. poziomie"
  31. boolean I7 = 0;//Odczyt z "Sensor obecnosci kabiny na 2. poziomie"
  32. boolean I8 = 0;//Odczyt z "Sensor obecnosci kabiny na 3. poziomie"
  33.  
  34. boolean M1 = 0;//Flaga stanu
  35. boolean M2 = 0;//Flaga stanu
  36. boolean M3 = 0;//Flaga stanu
  37.  
  38. void raport()
  39. {
  40. Serial.println("Odczyt przyciskow ");
  41. Serial.print(I1);
  42. Serial.print(I3);
  43. Serial.print(I4);
  44. Serial.println();
  45. Serial.println("Odczyt sensorow ");
  46. Serial.print(I5);
  47. Serial.print(I7);
  48. Serial.print(I8);
  49. Serial.println();
  50. }
  51.  
  52. void odczytWejsc()
  53. {
  54. I1 = digitalRead(Button1Pin);
  55. I3 = digitalRead(Button3Pin);
  56. I4 = digitalRead(Button4Pin);
  57. I5 = digitalRead(Sensor1Pin);
  58. I7 = digitalRead(Sensor3Pin);
  59. I8 = digitalRead(Sensor4Pin);
  60. }
  61.  
  62.  
  63.  
  64. void funkcjaPrzejscia()
  65. {
  66. boolean M1prim = 0;//Obliczana, nowa wartosc flagi
  67. boolean M2prim = 0;//Obliczana, nowa wartosc flagi
  68. boolean M3prim = 0;//Obliczana, nowa wartosc flagi
  69. //Obliczenie wartosci funkcji przejsc stanow (flag)
  70. M1prim= !M2&M3&I4&!M1 | !M2&M3&M1 | M1&!M3&!M2 | M1&!M3&M2&!I7 | M2&M3&!M1&I1 | M2&M3&!M1&I4 | M2&M3&M1&!I5;
  71. M2prim= !M2&M3&!M1&I3 | !M2&M3&M1&I1 | !M2&M3&M1&I3 | !M1&M2&M3&!I4 | !M1&M2&!M3 | M1&M2&M3&!I5 | M1&M2&!M3;
  72. M3prim= !M1&!M2&M3&I5 | !M1&!M2&M3&!I3&!I4 | !M1&M2&!M3&I7 | !M1&M2&M3&!I4 | M1&!M2&!M3&I8 | M1&!M2&M3&!I3 | M1&M2&M3 | M1&M2&!M3&I5;
  73.  
  74. //Przepisanie "nowych" wartosci do "starych"
  75. M1 = M1prim;
  76. M2 = M2prim;
  77. M3 = M3prim;
  78. }
  79. void funkcjaWyjscia()
  80. {
  81. Q1 = !M1&!M2&!M3 | M1&M2;
  82. Q2 = !M1&M3 | !M2&M3;
  83. }
  84.  
  85. void zapisWyjscia()
  86. {
  87. digitalWrite(OutputQ1Pin,Q1);
  88. digitalWrite(OutputQ2Pin,Q2);
  89. }
  90.  
  91. void setup()
  92. {
  93. pinMode(Button1Pin, INPUT);
  94. pinMode(Button3Pin, INPUT);
  95. pinMode(Button4Pin, INPUT);
  96. pinMode(Sensor1Pin, INPUT);
  97. pinMode(Sensor3Pin, INPUT);
  98. pinMode(Sensor4Pin, INPUT);
  99. pinMode(OutputQ1Pin, OUTPUT);
  100. pinMode(OutputQ2Pin, OUTPUT);
  101. Serial.begin(9600);
  102. Serial.println("Koniec wykonywania Setup");
  103. }
  104. void loop()
  105. {
  106. odczytWejsc();
  107.  
  108. funkcjaPrzejscia();
  109.  
  110. funkcjaWyjscia();
  111.  
  112. zapisWyjscia();
  113. raport();
  114. delay(lag);
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement