Sterowanie robotem z PLC – program i symulacja

W ramach dzisiejszego wpisu przygotowany programu w sterowniku PLC obsługującego procedurę pobrania detalu i odłożenia go do wskazanego pojemnika. Konfiguracja i przygotowanie robota przemysłowego zostało omówione w poprzednim wpisie. W celu przypomnienia wykorzystany zostanie manipulator ABB IRB 1200, kontroler IRC5.

Co jest do zrobienia?

Dwa tematy – program w sterowniku PLC oraz przygotowanie sekwencji w symulatorze. Oprogramowanie PLCSIM umożliwia przygotowanie sekwencji zmian sygnałów wejściowych w czasie. Innymi słowy możemy „rozpisać” sekwencję wciśnięć przycisków i odpowiedzi robota w czasie, tak jak miałoby to miejsce na rzeczywistej stacji. Działania rozpoczniemy jednak od programu w sterowniku PLC.

W celu przypomnienia sygnały wykorzystywane w ramach naszej aplikacji prezentują się następująco:

Sygnały wyjściowe (ze sterownika PLC do robota)

  • Start – sygnał rozpoczynający program,
  • BoxNumber – numer pojemnika w zakresie od 1 do 3.

Sygnały wejściowe (z robota do sterownika PLC)

  • AtHome – informacja, że robot jest w pozycji Home – będzie wykorzystywana do rozpoczęcia pracy,
  • ProgramStarted – informacja, że robot rozpoczął wykonywanie programu,
  • BoxNumberRcvd – numer otrzymanego pojemnika, do którego docelowo odłożony zostanie detal.

Algorytm – krok po kroku

Algorytm rozpisać można w kilku krokach:

  1. Program PLC wystawia sygnał wyjściowy Start.
  2. Robot ABB musi być w pozycji Home, aby rozpocząć program i odpowiedzieć sygnałem ProgramStarted. Robot rozpoczyna wykonywać ruch w celu pobrania detalu. Następnie, gdy detal zostanie pobrany robot sprawdza jaki numer pojemnika został wybrany.
  3. Program PLC wystawia numer pojemnika z zakresu od 1 do 3.
  4. Robot odpowiada numerem otrzymanym od PLC.
  5. Robot kończy pracę – zmienna ProgramStarted przechodzi w stan niski, zwracany numer pojemnika jest zerowany, a robot znajduje się w pozycji Home.

Zanim rozpoczniemy działania w TIA Portal warto zwrócić uwagę na kilka rzeczy:

  • Uruchomienie programu w robocie – zmienna PLC Start powinna być wystawiana tak długo, aż robot nie odpowie sygnałem ProgramStarted. Nie ma większego sensu wystawiać tej zmiennej przez cały czas trwania programu (chyba, że wynika to wprost z konfiguracji robota).
  • Warunki początkowe – jeszcze przed wystawieniem sygnału Start warto kontrolować, czy robot jest w pozycji Home, a także czy zwracany przez niego numer pojemnika jest równy 0. Jest to swego rodzaju oczywistość, lecz procesy przemysłowe potrafią być doprowadzane do przeróżnych, skrajnych sytuacji.
  • Numer pojemnika – teoretycznie, można wysłać jego wartość od razu ze zmienną Start. W naszym przypadku robot nie wymaga tej wartości natychmiast, gdyż w międzyczasie pobrany musi zostać jeszcze detal. W docelowej aplikacji liczba sygnałów kontrolujących poprawność pobrania detalu byłaby większa. Naturalnie, istnieje ryzyko pojawienia się błędu w trakcie pobierania – dlaczego zatem program PLC miałby cały czas wysyłać numer pojemnika?
  • Numer pojemnika #2 – analogicznie, jak w przypadku zmiennej Start. Gdy robot odpowie numerem otrzymanego pojemnika, wówczas program PLC przestaje go wystawiać.

Program w sterowniku PLC

Proces tworzenia rozpoczniemy od stworzenia tabeli tagów, w której umieszczone zostaną wszystkie podstawowe sygnały I/O.

Tabela sygnałów I/O.

Następnie, w bloku FC przystąpimy do tworzenia programu w sterowniku PLC. Pierwszy etap, to wypracowanie sygnału start, czyli wyjścia %Q100.0. Do uruchomienia wystarczy sprawdzić, czy robot znajduje się w pozycji Home. Proces aktywowany jest przyciskiem Start_Button %I0.0. Gdy robot otrzyma sygnał wystawiony zostanie sygnał wejściowy inRobot_ProgramStarted %I100.1 – od tego momentu nie ma konieczności wystawiania wyjścia %Q100.0.

Rozpoczęcie pracy robota.

Naturalnie, w docelowej aplikacji uwarunkowanie byłoby o wiele bogatsze – brakuje tu między innymi sprawdzania trybu pracy sterownika PLC, informacji o aktywnych alarmach i wielu innych.

Następnym krokiem jest obsługa numeru pojemnika. Może być on wysyłany równocześnie z wciśnięciem przycisku, lecz warto się nad tym odrobinę zastanowić – co jeżeli operator wciśnie przycisk, a robot nie będzie w pozycji Home? Program nie wystartuje, a robot niepotrzebnie otrzyma numer pojemnika. W naszym przypadku poczekamy, aż robot odpowie sygnałem inRobot_ProgramStarted, co jest równoważne z rozpoczęciem programu (wiemy także, że pobranie detalu nie odbywa się natychmiast, jest to proces, który zapewne trwa np. kilka sekund).

Numer pojemnika wysyłamy do momentu odpowiedzi od robota. Gdy wysłany przez PLC numer jest inny, niż odbierany od robota aktywna jest pierwsza funkcja MOVE. Gdy robot odpowie, numer pojemnika jest zerowany.

Sekwencja czasowa symulacji w PLCSIM

W pierwszej kolejności należy stworzyć projekt symulacji PLCSIM. Proces ten omawiany był w tym wpisie. Przed rozpoczęciem prac warto wczytać zmienne projektowe z TIA Portal poprzez opcję Load project tags widoczną na zdjęciu.

Zakładka SIM table po wczytaniu zmiennych z projektu w TIA Portal.

W otwartym projekcie symulacji wybieramy zakładkę Sequences.

Widok okna Sequence.

W tym miejscu można testować programy sterownika PLC w czasie. Innymi słowy, zasymulować można które wejście fizyczne będzie zmieniać stan w konkretnej chwili czasu. W naszym przypadku rozpoczniemy od przygotowania procesu. Chcemy, aby na „dzień dobry” robot był w pozycji Home, a wszystkie pozostałe wejścia (robota i przyciski) były w stanie niskim.

Ustawienie sygnałów wejściowych na odpowiednich stanach – początek sekwencji.

Wszystkie sygnały wejściowe są zerowane z wyjątkiem sygnału informującego o pozycji Home robota ABB. Następnie, rozpoczynamy budowanie sekwencji:

  1. Wciśnięcie przycisku Start_Button – zmiana stanu z 0 na 1.
  2. Puszczenie przycisku Start_Button – zmiana stanu z 1 na 0.
  3. Robot wystawia rozkaz startu inRobot_ProgramStarted – zmiana stanu z 0 na 1.
  4. Robot opuszcza pozycję Home – zmiana stanu z 1 na 0.
  5. Robot wysyła wartość pojemnika (dla testów będzie to wartość 2).
  6. Program odkłada detal do odpowiedniego pojemnika, wraca do pozycji Home i resetuje sygnały ProgramStarted oraz BoxNumberReceived.

Każdy sygnał pojawi się z opóźnieniem 2 sekund względem poprzedniego. Pozwoli to na komfortowe monitorowanie przebiegu programu i sekwencji. Inicjalizacja wartości oraz zerowanie parametrów na końcu realizowane są w tej samej chwili czasu.

Finalna sekwencja.

Testowanie aplikacji

W celu uruchomienia sekwencji należy wybrać opcję Start sequence. W oknie symulacji zauważyć można jak odmierzany jest czas (prawy górny róg). Monitorować można także program sterownika PLC w TIA Portal.

Poniższa animacja prezentuje działanie programu. Przykładowe rozwiązanie cechuje się prostotą i ma na celu wyłącznie charakter informacyjny.

Przygotowany program działa w sposób prawidłowy, a co więcej – powtarzalny. Ponowne uruchamiania sekwencji skutkuje kompletną realizacją uruchomienia robota, pobrania detalu i odłożenia do wskazanego pojemnika (w pamięci nie pozostają nieobsłużone sygnały).

Co dalej?

W kolejnych częściach planujemy kontynuację prac związanych z bieżącym projektem. Przewidujemy między innymi rozbudowę programu o tryby pracy czy alarmy, stworzenie prostej wizualizacji, a także – jeżeli będą Państwo zainteresowani – przeniesieniem programu na rzeczywisty sterownik z rzeczywistym robotem. Będziemy wdzięczni za pozostawione w tej kwestii komentarze.

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *