Spisu treści:
- Krok 1: Wprowadzenie
- Krok 2: Opis prawdziwej tablicy:
- Krok 3: Jaką sekwencję zaprogramować? SFC i diagram stanu
- Krok 4: Programowanie z Arduino IDE 1.6.X
- Krok 5: Programowanie za pomocą YAKINDU
- Krok 6: Nadzoruj to za pomocą AdvancedHMI
- Krok 7: Nadzoruj to za pomocą Unigo Evolution
- Krok 8: Wniosek
Wideo: Arduino PLC 32 I/O+Maszyna stanów+SCADA lub HMI: 8 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Wiele sposobów programowania, sterowania i nadzorowania systemu przemysłowego z arduino.
Krok 1: Wprowadzenie
W tej instrukcji zajmę się:
2 metody programowania arduino połączonego z rodzajem maszyny, w tym przyciskami, przełącznikami i diodami LED
1- Pierwsza metoda z arduino 1.6.x IDE z wykorzystaniem biblioteki SM (State Machine)
2-Druga metoda wykorzystująca Yakindu, projekt edytora stanów stworzony w środowisku eclipse: rysujesz maszynę stanów i generuje ona kod do przesłania na płytę Arduino.
W związku z
2 sposoby nadzorowania maszyny z uruchomionym SCADA lub wirtualnym HMI:
1- w systemie Android 4.4: Unigo Evolution, bezpłatna aplikacja bez elementów kodu do umieszczenia na ekranie i modbus TCP
2-pod Windows 8: darmowy projekt AdvancedHMI, który wymaga Visual Studio 2013, bez kodu i elementów do umieszczenia na ekranie i modbus TCP
Więc rysujesz swoje sekwencje funkcjonalne za pomocą SFC (w automatyzacji: Sequential Function Chart), tłumaczysz je na diagram stanów (bardzo bliższy), programujesz (Yakindu lub Arduino SM lib), a następnie nadzorujesz je za pomocą SCADA (Unigo Android lub AdvancedHMI Windows).
Krok 2: Opis prawdziwej tablicy:
Schemat:
Użyłem płytki Arduino UNO, a nie klona, ponieważ Yakindu nie może wysłać żadnego programu do żadnego klonu, tylko płytki UNO i Mega.
Mógłbym mieć 32 cyfrowe wejścia / wyjścia z 2 ekspanderem SPI, takim jak MCP23S17 (2x16 I / O) i 2 więcej analogowych 12-bitowych wyjść (prawdziwy analog bez filtrowania PWM) z 2 przetwornikami SPI DAC, takimi jak MCP4921.
Nie narysowałem osłony Ethernet, ale potrzebujesz jej do nadzorowania swojego systemu: więc piny 4, 10, 11, 12 i 13 nie mogą być używane do niczego innego i oczywiście piny 0 i 1 tylko dla RX TX.
Prawdziwe zdjęcia planszy:
Potrzebnych jest 8 przycisków:
- 4 dla trybu ręcznego: jeden dla światła na każdej diodzie;
- 1 dla zatrzymania awaryjnego: po naciśnięciu jesteś w trybie normalnym, zwolnij: awaryjne
- 1 dla trybu automatycznego, który uruchamia sekwencyjne włączanie i wyłączanie światła każdej diody, jeśli zostanie zwolniony: tryb ręczny, do sterowania każdą diodą bez sekwencji
- 1 dla RUN w trybie automatycznym
- 1 dla STOP w trybie automatycznym
4 doprowadziły do symulacji, co chcesz (przekaźnik, zawór…)
Każdemu przyciskowi i ledowi, którego używałem w programach podaję nazwę.
Krok 3: Jaką sekwencję zaprogramować? SFC i diagram stanu
Zrobiłem bardzo prosty SFC, aby opisać, co system ma robić.
Potrzebne są 3 SFC:
- SFCsecu, aby włączyć lub wyłączyć tryb awaryjny, to główny SFC, który uruchamia inne
- Automatyczna instrukcja SFC uruchomiona przez SFCsecu, możesz przejść do trybu automatycznego lub trybu ręcznego;
- Zatrzymanie biegu SFC, skanowanie i zapamiętywanie, jeśli ktoś nacisnął DCY (RUN) lub FCY (STOP)
Te SFC działają w pseudo-multistaking.
Następnie tłumaczę je na diagram stanu:
- maszyna nadrzędna (awaryjna) uruchamiająca 2 innych niewolników
- niewolnik do skanowania i zapamiętywania DCY i FCY
- niewolnikiem, aby przejść do trybu automatycznego lub ręcznego;
Kolejna rzecz: kiedy wciśniesz DCY, możesz sterować wyjściem analogowym za pomocą wirtualnego trymera na SCADA, kiedy wciśniesz FCY, wyjścia analogowe spadają do 0V.
Schemat stanu pomaga zaprogramować arduino.
Krok 4: Programowanie z Arduino IDE 1.6. X
Podaję kod do przetłumaczenia poprzednich schematów. Potrzebowałem 3 dodatkowych bibliotek, które ci też podaję.
Potrzebna będzie również tablica adresów, aby zrozumieć, jakich pinów używasz do czego, a modbus rejestruje odpowiednie adresy.
Krok 5: Programowanie za pomocą YAKINDU
Najpierw pobierz bezpłatną wersję projektu 2.9 (nie pro) na:
www.itemis.com/en/yakindu/state-machine/
Następnie postępuj zgodnie z dostarczonym samouczkiem: są pewne modyfikacje w porównaniu z ostatnim pobraniem programu, tylko po to, aby zakończyć nazwy różnych części pliku "xxxconnector.cpp".
Zdjęcia: rysunek automatu stanów, widok folderu w projekcie i jego zaimportowanych bibliotek z arduino, widok "xxxconnector.cpp" do tworzenia linku pomiędzy przejściami/stanami a rzeczywistymi wejściami/wyjściami lub SCADA.
Daję ci projekt, który będziesz musiał zaimportować do automatycznie utworzonego obszaru roboczego.
Dostarczono również: potrzebne biblioteki do zaimportowania do Yakindu i kilka zmian do zrobienia opisanych w samouczku.
Krok 6: Nadzoruj to za pomocą AdvancedHMI
Najpierw pobierz Visual studio Express 2013 lub więcej pod adresem:
www.microsoft.com/fr-fr/download/details.a…
Następnie pobierz projekt AdvancedHMI na:
sourceforge.net/projects/advancedhmi/?SetF…
Podam wam fotki SCADA, którą narysowałem (z odpowiednimi adresami rejestrów modbusa) i zaprogramowałem bez kodu, zmodyfikowanym projektem i krótkim tutorialem.
Krok 7: Nadzoruj to za pomocą Unigo Evolution
Potrzebujesz urządzenia z systemem Android z systemem Android 4.4 (kit kat) i 7-calowym ekranem.
Daję ci zdjęcia SCADA, którą narysowałem (i odpowiadające im adresy rejestrów modbus) oraz krótki samouczek korzystania z Unigo, bez kodu, folder zawierający zdjęcia lamp przemysłowych i przycisków do umieszczenia w folderze UniGOPictures utworzonym na twoim wewnętrznym SD przez aplikację i projekt.
Krok 8: Wniosek
Ogromnym zadaniem było zebranie 2 różnych sposobów programowania i 2 różnych sposobów nadzorowania. Ciężko na początku przyzwyczaić się do wszystkich umiejętności. Ale teraz to działa i kiedy już zrozumiesz, możesz sterować bardziej skomplikowanymi systemami.
Wielkie podziękowania dla wielu światowych tutoriali, dla Archiego (AdvancedHMI), RenéB2 (Yakindu) i Mikael Andersson (Unigo Evolution) oraz programistom bibliotek arduino, którzy pozwalają mi wykonać taki projekt „burze technologii”.
Sans eux j'aurais peut être souffert d'un sentyment d'incomplétude infinie pour l'éternité. J'exagère un peu.
Szczęśliwe instrukcje.