Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define lag 0
- //Przylacza Arduino
- #define Button1Pin A0 //nazwa pinu dla "Przycisk ĹĽÄ…danie 0-go poziomu"
- #define Button3Pin A2 //nazwa pinu dla "Przycisk ĹĽÄ…danie 2-go poziomu"
- #define Button4Pin A3 //nazwa pinu dla "Przycisk ĹĽÄ…danie 3-go poziomu"
- #define Sensor1Pin A4 //nazwa pinu dla "Sensor obecności kabiny na 0-wym poziomie"
- #define Sensor3Pin 12 //nazwa pinu dla "Sensor obecności kabiny na 2-im poziomie"
- #define Sensor4Pin 13 //nazwa pinu dla "Sensor obecności kabiny na 3-im poziomie"
- #define OutputQ1Pin 5//nazwa pinu dla Forward/Reverse Signal (bit kierunku)
- #define OutputQ2Pin 4//nazwa pinu dla Start/Stop Signal (bit stopu)
- //Maciej Parapura I7Y3S1
- //Zaprojektować układ sterownika silnikiem windy.
- //Winda porusza się między trzema następującymi kondygnacjami: 0, 2 ,3.
- //zadany jest stan poczÄ…tkowy (zachowanie windy w momencie uruchomienia programu na
- //sterowniku PLC i na mikrokontrolerze). Stan początkowy - zjazd na sam dół (na 0 kondygnacje).
- //Uwaga: przed uruchomieniem programu na sterowniku, winda zostaje ustawiona
- //na 3 kondygnacji.
- //Zmienne globalne
- boolean Q1 = 1;//Forward/Reverse Control Signal Relay 3
- boolean Q2 = 0;//Start/Stop Control Signal Relay 4
- boolean I1 = 0;//Odczyt z "Przycisk zadania 0-go poziomu"
- boolean I3 = 0;//Odczyt z "Przycisk zadania 2-go poziomu"
- boolean I4 = 0;//Odczyt z "Przycisk zadania 3-go poziomu"
- boolean I5 = 0;//Odczyt z "Sensor obecnosci kabiny na 0. poziomie"
- boolean I7 = 0;//Odczyt z "Sensor obecnosci kabiny na 2. poziomie"
- boolean I8 = 0;//Odczyt z "Sensor obecnosci kabiny na 3. poziomie"
- boolean M1 = 0;//Flaga stanu
- boolean M2 = 0;//Flaga stanu
- boolean M3 = 0;//Flaga stanu
- void raport()
- {
- Serial.println("Odczyt przyciskow ");
- Serial.print(I1);
- Serial.print(I3);
- Serial.print(I4);
- Serial.println();
- Serial.println("Odczyt sensorow ");
- Serial.print(I5);
- Serial.print(I7);
- Serial.print(I8);
- Serial.println();
- }
- void odczytWejsc()
- {
- I1 = digitalRead(Button1Pin);
- I3 = digitalRead(Button3Pin);
- I4 = digitalRead(Button4Pin);
- I5 = digitalRead(Sensor1Pin);
- I7 = digitalRead(Sensor3Pin);
- I8 = digitalRead(Sensor4Pin);
- }
- void funkcjaPrzejscia()
- {
- boolean M1prim = 0;//Obliczana, nowa wartosc flagi
- boolean M2prim = 0;//Obliczana, nowa wartosc flagi
- boolean M3prim = 0;//Obliczana, nowa wartosc flagi
- //Obliczenie wartosci funkcji przejsc stanow (flag)
- 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;
- 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;
- 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;
- //Przepisanie "nowych" wartosci do "starych"
- M1 = M1prim;
- M2 = M2prim;
- M3 = M3prim;
- }
- void funkcjaWyjscia()
- {
- Q1 = !M1&!M2&!M3 | M1&M2;
- Q2 = !M1&M3 | !M2&M3;
- }
- void zapisWyjscia()
- {
- digitalWrite(OutputQ1Pin,Q1);
- digitalWrite(OutputQ2Pin,Q2);
- }
- void setup()
- {
- pinMode(Button1Pin, INPUT);
- pinMode(Button3Pin, INPUT);
- pinMode(Button4Pin, INPUT);
- pinMode(Sensor1Pin, INPUT);
- pinMode(Sensor3Pin, INPUT);
- pinMode(Sensor4Pin, INPUT);
- pinMode(OutputQ1Pin, OUTPUT);
- pinMode(OutputQ2Pin, OUTPUT);
- Serial.begin(9600);
- Serial.println("Koniec wykonywania Setup");
- }
- void loop()
- {
- odczytWejsc();
- funkcjaPrzejscia();
- funkcjaWyjscia();
- zapisWyjscia();
- raport();
- delay(lag);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement