VIRTUAL COMMISSIONING PRZY WYKORZYSTANIU TIA PORTAL ORAZ ROBOT STUDIO
KROK 1: Tworzenie sceny robota przemysłowego w programie ABB RobotStudio
Po ściągnięciu i zainstalowaniu programu RobotStudio włączamy go a następnie:

Tworzymy nowy pusty obszar roboczy: Klikamy Empty Station – następnie Create

Otworzy nam się główne okno programu z naszą sceną.

Dodajemy naszego robota z biblioteki ABB. Klikamy ABB Library

Z listy jaka nam się pojawiła wybieramy interesującego nas robota – niech to będzie IRB 120 – klikamy na ikonę tego robota, a następnie potwierdzamy - OK

W oknie View1oraz zakładce Layoutpojawił się nasz robot.

Dobrze będzie zapisać już naszą stację. Klikamy ikonkę dyskietki w lewym górnym rogu i zapisujemy naszą stację.

Kolejnym krokiem będzie dodanie wirtualnego kontrolera do naszego robota. W tym celu wybieramy Virtual Controller a następnie From Layout… – dzięki temu program sam skonfiguruje odpowiedni kontroler.

Możemy nadać nazwę naszemu kontrolerowi i wybrać miejsce gdzie ma zoastać zapisany, nastepnie klikamy Finish.

Po krótkiej chwili kontroler zostanie dodany i załadowany. Możemy to zaobserwować na dolnym pasku naszego programu w prawym rogu jeśli wszystko poszło dobrze powinniśmy mieć na zielono Controller status: 1/1. W oknie Outputmożna też prześledzić kolejne kroki ładowania się kontrolera. Gdyby coś było nie tak pojawią się tu komunikaty oznaczone
czyli ostrzeżenia lub ❌ czyli awarie.

To co zostało zrobione do tej pory można zrobić w sposób automatyczny już na samym początku. W tym celu należało po uruchomieniu programu wybrać opcję Solution with Station and Virtual Controller. Określamy nazwę naszej sceny – Solution Name, wybieramy miejsce zapisu – Location, wybieramy interesującego nas robota z rozwijanej listy – Robot model, nadajemy nazwę naszemu kontrolerowi - Name. Jak wszystko mamy ustawione klikamy Create

W trakcie ładowania może pojawić się okienko z prośbą o potwierdzenie modelu robota którego wybraliśmy z listy. Zaznaczamy interesujący nas modeli i zatwierdzamy - OK

Jeśli wszystko poszło ok powinniśmy uzyskać ten sam efekt końcowy jak w przypadku tworzenia naszego stanowiska robota krok po kroku.

Kolejnym krokiem jest dodanie biblioteki – RSConnectDIOToSnap7.rslib – która zezwala na połączenie robota ze sterownikiem PLC za pomocą komunikacji Sharp7 (Snap7).
Wybieramy zakładkę Add-Ins i w pasku Search wpisujemy nazwę szukanego dodatku - RSConnectDIOToSnap7

Po wpisaniu automatycznie wyskoczy nam szukana biblioteka. Klikamy na niej i po prawej stronie otworzy nam się opis. Klikamy na Download file, następnie Accept
Biblioteka zostanie ściągnięta automatycznie do domyślnego folderu pobierania naszej przeglądarki internetowej. Należy ją przenieść do folderu „Libraries”
C:\Users\twoja_nazwa_użytkownika\Documents\RobotStudio\Libraries.

Aby dodać bibliotekę do naszej stacji klikamy na zakładkę Homea następnie Import Library – User Library - RSConnectDIOToSnap7

Biblioteka zostanie dodana do naszej stacji i pojawi się na liście Layout

Można też dodać ściągnięta bibliotekę w inny sposób, a mianowicie wybierając zakładkę Simulation, następnie kliknąć na Station Logic, wybieramy w oknie, które się nam otworzy zakładkę Compose, następnie klikamy Add component i wybieramy z listy Import Library…

W okienku wybieramy lokalizację ściągniętego pliku z biblioteką i go zaznaczamy, następnie klikamy Otwórz

Po dodaniu nasza biblioteka pojawi się również w okienku Layout

Klikamy dwa razy lewym przyciskiem myszy na nasz przed chwilą dodany komponent na liście Layout.

Otworzy nam się okienko Properties , w którym możemy definiować ilość wejść i wyjść DI_Number i DO_Number, które będą wykorzystywane w komunikacji ze sterownikiem PLC. Określamy „położenie” naszego sterownika PLC_Rack i PLC_Slot - domyślnie jest to 0 i 1. Ustalamy też adres IP naszego wirtualnego środowiska PLC_Addr, !!! UWAGA !!! będzie to adres IP naszego komputera na którym aktualnie tworzymy nasz projekt a nie adres sterownika PLC, który zdefiniujemy w dalszej części.
Aby sprawdzić IP naszego komputera klikamy na pasku zadań naszego Windowsa na START i wpisujemy „cmd” w celu wywołania Wiersza polecenia


W okienku wiersza polecenia wpisujemy ipconfigi naciskamy ENTER.
Wpisujemy nasz adres IP w polu PLC_Addrustawiamy PLC_Rackna wartość 0 i PLC_Slotna wartość 1. DI_Numberi DO_Number ustalamy w zależności od ilości pozycji jakie chcemy zaprogramować dla naszego robota. Przyjmijmy do naszego projektu po 4 wejścia i wyjścia, którym nadamy odpowiednie oznaczenia wejścia w zakresie Q0.0 – Q0.3, a wyjścia M0.0 – M0.3, kończymy naciskając przycisk Close”

Musimy teraz też dodać interesujące nas wejścia i wyjścia do naszego kontrolera. W tym celu wybieramy zakładkę Controller. Z listy po lewej stronie wybieramy I/O System, w oknie które się pojawiło wybieramy z listy Signali pojawi nam się tabela.

Klikamy prawym przyciskiem myszy na tabeli i wybieramy New Signal…

W okienku które się pojawi definiujemy nasz nowy sygnał podając jego nazwę w polu Nameoraz definiując typ sygnału – Type of Signal. Proponuję nazwy nadawać w ten sposób aby były łatwe do identyfikacji. Zatwierdzamy OK.

Otrzymamy komunikat , że wprowadzone zmiany zaczną obowiązywać dopiero po zrestartowaniu kontrolera. Aby uniknąć tego komunikatu podczas dodawania kolejnych wejść i wyjść zaznaczamy ptaszkiem okienko z napisem „Do not show this dialog again” i klikamy OK

Klikamy PPM na nowo dodanym sygnale w tabeli i wybieramy Copy Signal

Otworzy się automatycznie okienko w którym zmieniamy tylko nazwę. Czynność tę powtarzamy dla kolejnych sygnałów wejścia, aż do dodania takiej liczby sygnałów jaką zdeklarowaliśmy konfigurując bibliotekę RSConnectDIOToSnap7 (w naszm przypadku były to 4 wejścia i 4 wyjścia). Analogicznie postępujemy przy dodawaniu wyjść, pamiętając aby zmienić nie tylko nazwę ale również typ sygnału na Digital Output.

Na końcu powinniśmy otrzymać tabelę ze zdefiniowanymi wszystkimi naszymi sygnałami wejścia i wyjścia.

Restartujemy nasz kontroler klikając ikonkę Restart i zatwierdzając OK w okienku które się pojawi.

Kolejnym krokiem jest zdefiniowanie pozycji robota. W tym celu skorzystamy z opcji Jointtarget. Klikamy na zakładkęHomenastępnie na napisTargeti z listy która się pojawi wybieramyCreate Jointtarget.

Po wybraniu Create Jointtarget należy przejść do widoku naszego robota, w tym celu klikamy na zakładkę View1. Można zauważyć też, że po lewej stronie pojawiło nam się okienko Create Jointtarget.

Klikamy na przycisk Createaby zapisać pierwszą pozycję naszego robota – będzie to pozycja bazowa. Po kliknięciu na Creata okienko Create Jointtarget zniknie. Należy kliknąć na zakładkę Path&Targets gdzie można zauważyć, że zostało dodane nasze pierwsze zdefiniowane położenie jako Joint Target_1. Klikając PPM na tym elemencie i wybierając Rename możemy zmienić nazwę np. na jPozycja0. Nazwę można też zdefiniować na poziomie dodawania położenia w pisując ją w polu Name.


Przechodzimy do zdefiniowania kolejnych pozycji. Tym razem po wybraniu ponownie w zakładce Homenastępnie na napis Targeti z listy która się pojawi Create Jointtarget zanim klikniemy Create musimy zdefiniować położenie naszego robota. W pierwszej kolejności zmieniamy nazwę w polu Namena jPozycja1. Nastepnie klikamy na Robot axes pojawi nam się strzałka przy Values.., na którą należy kliknąć. Pojawi nam się okienko – Joint values [mm|deg] w którym definiujemy położenie naszego robota.

Ten sposób jest dość kłopotliwy bo trzeba znać dokładne współrzędne i je wpisać. Istniej inny sposób dający nam możliwość skorzystania z funkcji Freehand. Dzięki niemu możemy ustawić dowolną pozycję naszego robota, a następnie dodać ją jako kolejną pozycję Jointtarget. Dla szybkiego przypomnienia korzystając z funkcji Jog Joint możemy klikając na każdy człon robota ustawiać jego pozycję aż do osiągnięcia końcowej pozycji, którą chcemy zapisać.



Gdy już ustalimy pozycję naszego robota skorzystamy z opcji Teach Target w zakładce Homeaby dodać pozycję ale najpierw musimy dokonać jeszcze jednej zmiany aby opcja Teach Target dodała nam nasza pozycję jako Jointtarget a nie jako Target. Na samym dole na dolnym pasku obok współrzędnych jest napis MoveJ klikamy go i zmieniamy na MoveAbsJ

Teraz możemy kliknąć na Teach Target w zakładce Homei zostanie dodana kolejna pozycja robota Jointtarget, której należy zmienić nazwę na jPozycja1. Możemy dodać kolejne dwie pozycję jPozycja2 i jPozycja3postępując w analogiczny sposób jak przedstawiono powyżej tj. korzystając z funkcji Freehand– Jog Joint oraz Teach Target.

Jeżeli wszystko wykonane zostało prawidłowo na liście pojawią się nasze cztery ustalone pozycje Jointtargets. Możemy przejść do tworzenia ścieżek i definiowania zdarzeń. Klikamy PPM na jPozycja0i wybieramy Add to new path. Na liście pod kategorią Paths & Procedures pojawi nam się nowa ścieżka, której zmieniamy nazwę (PPM i Rename) na pozycja0osiagnieta. Analogicznie postępujemy z kolejnymi pozycjami tworząc za każdym razem nowe ścieżki pozycja1osiagnieta, pozycja2osiagnieta, pozycja3osiagnieta. Po dodaniu wszystkich ścieżek, musimy dodać jeszcze jedną tzw. ścieżkę główną main, w tym celu klikamy PPM na kategorii Paths & Procedures i wybieramy Create Path. Zmieniamy nazwę dodanej ścieżki na main, po czym trzymając wciśnięty klawisz Ctrl zaznaczamy wszystkie ścieżki oprócz nowo utworzonej.



Mając zaznaczone wszystkie ścieżki łapiemy je LPM i przeciągamy do ścieżki mainw efekcie otrzymując odnośniki do ścieżek w ścieżce głównej.

Kolejnym krokiem będzie zdefiniowanie zdarzeń dla pozycji bazowej. Klikamy PPM na ścieżkę pozycja0osiagnieta i wybieramy Insert Action Instruction… Otworzy nam się nowe okno po lewej stronie Create Action Instruction w którym z rozwijanej listy Instruction Templates wybieramy:


1. Wait DI i klikamy Create.
2. Reseti klikamy Create.
3. Reset, zmieniamy Signalna doPozycja1osiagnietai klikamy Create.
4. Reset, zmieniamy Signalna doPozycja2osiagnietai klikamy Create.
5. Reset, zmieniamy Signalna doPozycja3osiagnieta i klikamy Create.
6. Przesuwamy MoveAbsJ jPozycja0na sam dół, łapiąc i trzymając LPM, przeciągamy w dół.
7. Set i klikamy Create.
8. Wait DI, zmieniamy Value na 0 (zero) i klikamy Create.
Ostatecznie otrzymujemy układ jak pokazano obok
