Razem z naszymi trenerami – najlepszymi ekspertami z poszczególnych dziedzin, automatykami, projektantami i wdrożeniowcami, przygotowaliśmy dla Was serię tutoriali z zakresu automatyki i systemów sterowania.
W ramach serii o tworzeniu oprogramowania z wykorzystaniem pakietów symulacyjnych radziliśmy jak rozpocząć pracę z symulatorem sterownika Siemens PLC w TIA Portal? Tym razem pokażemy w jaki sposób możemy tworzyć sekwencje w czasie z wykorzystaniem oprogramowania PLCSIM.
Zaprasza Marcin Podsiadły, programista systemów sterowania i trener EMT-Systems.
W pierwszej części poradnika pracowaliśmy z tabelami „SIM Table”, czyli przygotowując taki bardzo prosty program, byliśmy w stanie za pomocą dwóch zmiennych wejściowych, wypracować zmienną wynikową dla silnika. Pokazaliśmy sobie jak stworzyć projekt, jak uruchomić symulator i jak zarządzać takimi sygnałami.
W dniu dzisiejszym pokażemy sobie inne narzędzie tego samego pakietu oprogramowania, jakim jest sekcja „Sequences”. Jest to narzędzie, które służy do tworzenia sekwencji w czasie. Pozwala nam to w ramach wciąż darmowego oprogramowania, tworzyć sekwencje, które odwzorowują działania operatorów, symulują sygnały robotów bądź potwierdzenia pracy urządzeń wykonawczych takich jak falowniki czy siłowniki pneumatyczne.
Aby taką sekwencje stworzyć mamy tutaj pole „Add New Sequence”, domyślnie także jedna sekwencja pusta była gotowa. Działa to w ten sposób, że nie musimy za pomocą przycisków, którymi wymuszaliśmy wcześniej wartości z sygnałów wejściowych, nie musimy tego robić w sposób manualny, możemy sobie taką sekwencję zbudować w czasie.
Spróbujmy odtworzyć sobie program z poprzedniego odcinka i zrealizować sterowanie silnikiem za pomocą dwóch przycisków.
W głównym oknie narzędzia (Sequences) mamy kilka podstawowych narzędzi, które pozwalają nam dokładać kolejne kroki. Możemy za pomocą opcji „Repeat Sequence”, zapętlić sobie naszą sekwencję – to być może na sam koniec.
Proszę zobaczyć jak wygląda konstrukcja takiego zdarzenia.
W pierwszej kolejności wybieramy sygnał, którym chcemy sobie zarządzać. Do dyspozycji wciąż mamy tylko i wyłącznie trzy zmienne, które pozostały nam z pierwszej części. Weźmiemy pod lupę wejście fizyczne „inStart” o adresie %I50.0. Następnie w kolumnie „Action Parameter” określamy wartość tego sygnału jaką chcemy wymusić na tym parametrze.
Proszę zwrócić uwagę, że tutaj w kolumnie „Time” będziemy w czasie mogli rozłożyć wartości sygnałów, z którymi będziemy pracować.
W pierwszej kolejności chcielibyśmy, aby ten sygnał otrzymał wartość „True”. Będzie to działało w taki sposób, że będzie to symulacja wciśnięcia przycisku.
Następnie automatycznie w środowisku PLCSIM mamy kolejny krok wygenerowany 50 milisekund później.
Tutaj na osi czasu mamy milisekundy, sekundy, minuty, godziny. Możemy sobie to odłożyć w czasie jak tylko nam się podoba. Ma to na celu przede wszystkim umożliwić nam sprawdzenie poprawności wykonywania tego programu.
Powiedzmy, że pół sekundy później, albo nawet i całą sekundę chciałbym puścić ten przycisk, będzie to symulacja, tak naprawdę puszczenia tego przycisku.
Uruchamiamy sobie w kolejnej linijce moment puszczenia przycisku.
Włączmy taką symulację.
Odbywa się to za pomocą polecenia „Start Sequence” widocznego w górnej części. Jeżeli taki przykład sobie uruchomimy widzimy, że nasz silnik rozpoczął pracę.
Taka sekwencję można puszczać w sposób cykliczny. Oczywiście w tym, konkretnym przypadku nie miałoby to zbyt wiele sensu.
Teraz z pełną premedytacją spróbujemy wyłączyć silnik po 5 sekundach. Proszę zwrócić uwagę, że w sekundzie pierwszej puszczamy przycisk startu „inStart”, więc automatycznie w szóstej sekundzie możemy zadziałać sobie w kolejny sposób.
Tym razem pobudzimy w stan wysoki wejście „inStop”, czyli ustawiamy wartość tego parametru na „True”. I teraz analogicznie wciśnięcie przycisku czerwonego. Tak samo będziemy chcieli zadbać o to aby po sekundzie ten przycisk puścić. Czyli zmieniamy sobie wartość na osi, na siódemkę. Kopiujemy już tym razem sygnał żeby zaoszczędzić delikatnie na czasie. I ten sygnał przedzie w stan niski.
Proszę zobaczyć. Tym razem w sposób ręczny zdejmę stan wysoki z silnika i uruchomimy sobie całą sekwencję od początku.
„Start Sequence” i monitorujemy stan.
Widzimy, że silnik się włączył. W prawym górnym rogu mamy symulację czasu rzeczywistego… i właśnie w szóstej sekundzie ten silnik został wyłączony.
Aby zapobiec czynnościom takim jak przed chwilą, czyli musiałem w sposób ręczny taki silnik po prostu wyłączyć – żeby nie pobudzać go po raz drugi – nic nie stoi na przeszkodzie aby dodać sobie jeden krok wcześniej i np. ten sygnał „outMotor”, że tak powiem kolokwialnie, na dzień dobry sobie wyzerować. Tutaj można sobie taką sekcję inicjacyjną przygotować.
Powiedzmy w ten sposób. Na początku osi czasu, możemy sobie w tym pierwszym kroku, w chwili 00:00, przygotować wszystkie parametry na początku naszej symulacji. Na przykład gotowość z przekaźnika bezpieczeństwa, pozycję „Home” z robota przemysłowego a być może gotowość do pracy przetwornicy częstotliwości. Więc tutaj jest to bardzo dobry pomysł, aby sobie to w ten sposób przygotować.
Proszę zwrócić uwagę jak wygląda praca w pętli.
Uruchamiam taką sekwencję. Zaznaczam sobie tutaj „Repeat Sequence” i klikamy „Play”.
W tym momencie silnik zostaje uruchomiony, po 5 sekundach zostanie zatrzymany i ponownie jak tylko ta sekwencja się wykona będzie to widoczne. Proszę zobaczyć, śledzimy tu zielony kursor, który pokazuje na który krok oczekujemy tak naprawdę w naszej jednostce czasu.
Taką sekwencję naturalnie musimy zatrzymać, ponieważ będzie pracowała w sposób ciągły. Tym razem już nie martwimy się tym, że stan silnika jest w staniem wysokim, ponieważ przy najbliższej symulacji pierwsze co robimy, to zerujemy ten parametr. Proszę zwrócić uwagę, że te sygnały delikatnie zamieniły się miejscami. Być może przesuniemy na przykład o 100 milisekund przycisk w czasie i posortujemy sobie po osi aby mieć gwarancję, że najpierw wyłączamy silnik a później, zgodnie z naszym testem, uruchamiamy.
Wyobraźmy sobie w takim razie inny scenariusz, w którym chcielibyśmy, aby sprawdzić czy zbyt krótkie wciśnięcie zielonego przycisku nie spowoduje przypadkowego uruchomienia takiego silnika. W związku z tym pomiędzy stykiem normalnie otwartym a cewką „Set” przerzutnika wprowadzamy instrukcję czasową w postaci timera (TON). Nazwiemy go sobie „TimerOpóźnienieStart”.
Powiedzmy, że w przypadkowe wciśnięcie to takie do sekundy, czyli powiedzmy, że ustawimy sobie timer na 3 sekundy. To oznacza, że operator jest zobligowany, aby ten przycisk przez 3 sekundy trzymać wciśnięty.
Wgrywamy taki program do sterownika ponieważ jest to jedyna zmiana na tym etapie. Wracamy do naszego symulatora PLCSIM.
Każda zmiana programu sterownika PLC będzie wymagała od nas, aby ten symulator PLCSIM się przeładował.
Widzą Państwo, że chwilę to zajęło. No i proszę zobaczyć. W tym konkretnym przypadku jeżeli byśmy chcieli zobaczyć zasadę działania naszego programu to my przycisk start trzymamy wciśnięty przez blisko sekundę – w setnej milisekundzie uruchamiamy go, puszczamy go po dziewięciuset milisekundach.
Jeżeli ja teraz taka sekwencję uruchomię, właśnie to czynię, to widzimy, że przypadkowe wciśnięcie przycisku nie przeszło przez timer, który wymaga tych 3 sekund. W związku z tym w konsekwencji cała nasza sekwencja jest zatrzymana.
Jeszcze tutaj cały czas jest oznaczona opcja, aby była realizowana w sposób powtarzalny. No i bez żadnego rezultatu.
Generalnie rzecz biorąc, możemy za pomocą narzędzia „Sequences” budować dowolne sekwencje, dowolne scenariusze testowe, w których na przykład: stycznik nie zdąży potwierdzić czasu albo w trakcie pracy nie wystawi stanu wysokiego i będziemy mieli z tego tytułu komplikacje.
Pozwolę sobie teraz taki scenariusz zbudować. To znaczy pozostaniemy przy założeniu, że wyłączamy w pierwszym kroku nasz silnik, wiec zdejmujemy stan wysoki z wyjścia cyfrowego. Następnie wciskamy przycisk start, ale tym razem nie będziemy już zatrzymywać tego silnika, czyli usuwam sobie nadmiarowe kroki. Powiedzmy tutaj dla poprawy przejrzystości co 500 milisekund można sobie też taki interwał zdefiniować domyślny, czyli dodanie kolejnego kroku co 500 milisekund, pół sekundy w tym momencie, będzie generowało.
Powiedzmy tak. Jeżeli byłoby to urządzenie typu „stycznik” to dość rozsądnym jest założyć, że po około sekundzie czy dwóch otrzymamy potwierdzenie ze styku pomocniczego.
Dodaję sobie zatem konkretny krok do sekwencji. Żeby móc spokojnie to monitorować ustawimy go na piątą sekundę, bez żadnych opóźnień – 5 sekunda – i chcielibyśmy sprawdzić czy na przykład potwierdzenie styków ze stycznika – styków normalnie otwartych – spowoduje zapalenie lampy.
W pierwszej kolejności musimy zapanować po stronie programu, gdzie takie potwierdzenie zostanie fizycznie, elektrycznie podłączone. W przypadku symulacji mamy tutaj pełną swobodę. W związku z tym stworze sobie osobne połączenie w postaci networku numer 2 i wybiorę kolejne wolne wejście cyfrowe. To będzie potwierdzenie pracy – od razu sobie taki sygnał przygotuję – a następnie na wyjściu włączymy lampę, która będzie nam to wszystko sygnalizować o adresie %Q10.1
Zmieniam nazwy tych parametrów. Potwierdzenie pracy – oczywiście z prefiksem „in”, konsekwentnie do poprzednich zmiennych oraz „outLampa”. Wgrywam taki program do sterownika PLC i naturalnie czekam na odświeżenie symulacji. Widzą Państwo to opóźnienie w środowisku, jest to niestety „zasobochłonne” narzędzie.
Po stronie programu, wydaje się, że jesteśmy gotowi, no i proszę sprawdzić. Tutaj po czasie, w okolicy tej 5 sekundy… Jako potwierdzenie pracy naszego stycznika my symulujemy stan wysoki ze styków pomocniczych. Czyli my tutaj, w tym programie wejście %I50.2, które już oczywiście automatycznie zostało pobrane do PLCSIM, uruchamiamy sobie w stan wysoki, podajemy stan wysoki symulując potwierdzenie ze stycznika. W drugą stronę można tworzyć scenariusze, w których taki sygnał pozostaje w stanie niskim i po upływie zadanego czasu, na przykład generuje alarm.
Proszę zobaczyć. Uruchamiamy sobie symulację i oczekujemy, że lampa będzie zapalona. Włączamy od początku. Niestety ze względu na fakt, iż przycisk start został wciśnięty zbyt krótko widzimy, że nasz silnik nie został włączony i ten scenariusz nie zachował się w sposób prawidłowy.
Musimy mieć na uwadze fakt, że jeżeli przygotujemy w sposób błędny, tak jak ma to miejsce tutaj, taki scenariusz, no to rezultat będzie taki jak została zbudowana symulacja. Pomimo braku potwierdzenia, braku stanu wysokiego na wyjściu cyfrowym otrzymaliśmy potwierdzenie pracy ze stycznika. To tak jakby przy szafie sterowniczej ktoś wymusił mechanicznie zadziałanie tego stycznika a my przecież w programie niczego nie zmieniliśmy.
Dodatkowo, oprócz sygnału wejściowego, będziemy chcieli w stan niski także takie potwierdzenie wprowadzać żeby nie pozostało to przy kolejnych symulacjach. Już mamy więc dwa parametry, które sobie na „dzień dobry” usuwamy.
Teraz, aby program zadziałał w pełni prawidłowo przycisk start będzie wciśnięty przez kilka sekund. Czyli my tutaj timer mamy ustawiony na 3 sekundy w związku z tym na przykład do 4 sekundy ten przycisk jest wciśnięty – od 500 milisekund do 4000 milisekund.
Uruchamiamy sekwencję ponownie i widzimy, że na początku wszystkie sygnały wyjściowe przechodzą w stan niski, przycisk start był wciśnięty przez odpowiedni czas i oba urządzenia są w stanie wysokim.
W podstawowym zakresie to taki wystarczający, myślę, opis jeżeli chodzi o pracę z narzędziem „Sequences”. Można w ten sposób budować kompletne sekwencje, na przykład z robotem przemysłowym, dzięki któremu odkładamy, pobieramy, sprawdzamy położenie, idziemy do innego punktu i układamy na stosie.
Dziękuję pięknie! Do usłyszenia w kolejnych częściach!
Zainteresowanych tematyką szkoleń zapraszamy do zapoznania się z pełną listą kursów.