Projekt ten pozwala uczyć w technikach z użyciem ciekawych symulacji które lepiej przedstawią działanie napisanych programów niż obecne metody. Spowoduje to że uczniowie będą chętniej pracować i umili im to naukę.
Zaczynając od podstaw, skąd pomysł?
Lekcje programowania sterowników PLC miały zawsze jeden problem. Testowanie rozwiązań!
Robienie nowego układu pod każde ćwiczenie to fatalny pomysł ze względu na koszty i czas. Dlatego też nikt tego nie robi. Co więc zostaje? Panel z przełącznikami. Jest to rozwiązanie skuteczne i pozwala przetestować rozwiązania do większości zadań. Jest też męczące i nudne dla ucznia bo zadania typu “Element tłoczony jest sprawdzany pod kątem dobrego wykonania z użyciem czujnika nacisku…” zamieniają się w “Jeżeli przełącznik 1., 2. i 3. jest włączony to świeci się lampka nr 5”
Postanowiłem to zmienić!
Skoro robienie układu jest za drogie i za długie to czemu nie wykorzystać czegoś wirtualnego? Postanowiłem zrobić program który łączy się ze sterownikiem PLC po to aby “udawać” fizyczny układ. Dzięki temu nie trzeba poświęcać wielu godzin na montaż elementów i ich łączenie. Wystarczy włączyć odpowiedni scenariusz!
Zmniejsza się też koszt takiego układu bo zamiast płacić za siłowniki i niekiedy specjalistyczny sprzęt jak pasy transmisyjne lub precyzyjne czujniki nacisku wystarczy pokryć koszt godzin pracy.
Jak to zrobiłem?
Od dziecka interesowałem się rzeczami informatycznymi i technicznymi. W ramach hobby grzebałem w Unity pisząc różne gry i aplikacje. Więc miałem dość duże zaplecze wiedzy i doświadczenia z tym silnikiem. Wiedziałem też że symulowanie czegoś takiego to zadanie z którym ten silnik sobie bez problemu poradzi. Jeśli chodzi o sterowniki to nauczyłem się pisać programy na PLC w technikum.
Mimo że koncepty takie jak “Finite State Machine” stosowane w diagramach SFC nie są mi obce, nadal pomocne było wsparcie mojego nauczyciela w technikum, Wojciecha Marszałkowskiego.
Wiedziałem więc jak zrobić program na PLC oraz jak zrobić symulację w Unity. Zostało tylko połączenie obu tych rzeczy. Tutaj ponownie pomógł Pan Marszałkowski który wskazał bibliotekę S7NetPlus, była dokładnie tym czego potrzebowałem!
Mając narzędzia (Unity, Tia Portal, S7NetPlus) przyszedł czas na złożenie tego razem
Po kilku prototypach udało się stworzyć program który łączył się bez problemu ze sterownikiem, działał w pełnej płynności i nie cierpiał na okropnie duże opóźnienia (finalnie wyszło między 60, a 120 ms do sterownika i z powrotem, to nie dużo).
Strona techniczna
Projekt napisany jest głównie w Unity w języku C# i wykorzystuje S7NetPlus do komunikacji. Każdy scenariusz jest pojedynczą sceną w silniku. Jest oczywiście możliwe aby sceny te były “wyeksportowane” jako aplikacje niewymagające bezpośredniego dostępu do silnika.
Wszystko w samym projekcie jest zrobione przeze mnie włącznie z modelami i grafikami.
Virtuality jest napisane tak aby dodawanie nowych elementów oraz budowanie z nich scenariuszy było proste. Wykorzystuje kilka warstw abstrakcji więc na przykład podmiana biblioteki do komunikacji nie jest problemem. Pozwala to w razie potrzeb łatwo zamienić komunikację WiFi z sterownikiem Simatic S7-1200 na coś tak odmiennego jak Arduino połączone prze USB!
Sterownik nie wymaga jakiegoś większego przygotowania aby działać z Virtuality, wystarczy użyć Data Blocku z listą wejść i wyjść zamiast używać fizycznych połączeń. Dla piszącego sprowadza się do wpisania “IO”.I0 zamiast I0.0 przy wstawianiu bloku funkcyjnego (jest to zmiana tylko w “Main”, reszta programu wygląda identycznie).
W przypadku dodatkowych pytań technicznych proszę do mnie pisać, z chęcią odpowiem.
Zgłaszam ten artykuł do Konkursu iAutomatyka i akceptuję jego regulamin