Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2019/05/zdjecie_TIA_FACTORY_IO.jpg

Nauka programowania PLC z Factory IO – Wprowadzenie i pierwszy projekt


Zaczynając naukę programowania sterowników PLC każdy automatyk zadaje sobie pytania:

  • „Czy muszę kupować sterownik PLC?”
  • „Czy mogę uczyć się programowania w domu?”
  • „Jakie sterowniki programować?”
  • „Czy będę musiał zainwestować w oprogramowanie?”

Okazuje się, że nie trzeba kupować sterownika PLC, aby uczyć się programowania w domu. Wielu producentów udostępnia symulator programowalnego sterownika logicznego, za pomocą którego można w każdych warunkach przetestować napisany program. W przemyśle bardzo duże zastosowanie znalazły sterowniki firmy Siemens. Są to jedne z najbardziej popularnych sterowników PLC. Każdy automatyk programista na pewno choć raz zetknął się ze sterownikami Siemensa.

Zobacz też: kursy online programowania sterowników dla początkujących

No dobrze, ale jak testując program zasymulować sygnały wejść/wyjść które są kluczowe do poprawnego działania maszyny/linii produkcyjnej?

Na to pytanie odpowiedź jest bardzo prosta: FACTORY IO!

Czym jest Factory IO?

Factory IO jest to środowisko symulacyjne, które odtwarza warunki panujące w fabryce. Innymi słowy jest to wirtualna fabryka, którą każdy może mieć u siebie na komputerze. Pozwala ona na stworzenie własnej linii produkcyjnej, a następnie połączenie się ze sterownikiem PLC i przetestowanie jej działania. Brzmi dobrze ? Może być jeszcze lepiej! Factory IO współpracuje z symulatorami sterowników PLC, dzięki czemu nie musimy kupować sterownika. Wystarczy, że będziemy mieli oprogramowanie Factory IO oraz symulator PLC w dedykowanym oprogramowaniu i już możemy programować maszyny w fabryce.

Możemy skorzystać z ponad 20 gotowych scen lub stworzyć własną od podstaw. Oczywiście istnieje możliwość modyfikacji istniejących scen. W tym celu należy otworzyć istniejącą scenę, zapisać ją pod inną nazwą i już możemy modyfikować linię produkcyjną. Wbudowane aplikacje są posortowane poziomami zaawansowania w taki sposób, aby każdy użytkownik znalazł tu coś dla siebie. Rysunek 1. Wbudowane sceny w Factory IO

Każdy może pobrać 30 dniową wersję próbną programu. Dla osoby chcącej szybko podnieść swoje umiejętności w programowaniu sterowników PLC jest to wystarczająca ilość czasu. Wersja próbna zawiera wszystkie elementy potrzebne do budowania własnej fabryki oraz pozwala na połączenie Factory IO z wieloma sterownikami różnych producentów.

Możliwości połączenia Factory IO ze sterownikami PLC:

Rysunek 2. Możliwości połączenia z Factory IO

Wsparcie początkującego w Factory IO

W Factory IO znajdziemy szereg materiałów pomagających w poznaniu środowiska i stawianiu pierwszych kroków. Przede wszystkim polecam zajrzeć do „Getting started”, gdzie znajdziecie podstawowe informacje na temat poruszania się po wirtualnej fabryce, tworzenia własnych scen, dodawania pierwszych elementów fabryki, modyfikacji ich położenia i parametrów (np. w przenośnikach rolkowych można włączyć wykorzystanie sygnału enkodera z napędu).

Dodatkowo znajdziemy tam także przydatne tutoriale pomagające w połączeniu Factory IO ze sterownikami np. Allen-Bradley, Schneider, czy Siemens.

Jak zacząć programować w TIA Portal wykorzystując Factory IO?

W przypadku tego projektu będę wykorzystywał symulator sterownika PLC s7-1200. W jaki sposób nawiązać komunikację pomiędzy symulatorem, a Factory IO? Na początku należy pobrać szablon:

https://factoryio.com/docs/tutorialshttps://factoryio.com/docs/tutorials/siemens/setting-up-s7-plcsim-v13//siemens/sample-s7-plcsim-v13/

Znajdziemy go w powyższym linku. Z dostępnych wersji symulatora v13, v14 i v15 wybieramy tą, którą posiadamy. W moim przypadku jest to wersja v15. Pobieramy szablon projektu na bazie którego powstanie program.


W oprogramowaniu TIA Portal otwieramy pobrany projekt. W drzewie projektu pokaże nam się dodany już sterownik z rodziny s7-1200 CPU 1211C DC/DC/DC. W konfiguracji sterownika nie musimy nic modyfikować, chyba że chcemy skorzystać z rzeczywistego sterownika, a nie z symulatora. Pobrany szablon służy do komunikacji Factory IO z symulatorem. W blokach programu znajdziemy gotową funkcję FC9000 do komunikacji symulatora z wirtualną fabryką. Jest ona dodana w bloku organizacyjnym OB1 [Main]. Wykonuje się w każdym cyklu programu, co pozwala na komunikację Factory IO <—> TIA Portal.

W tym miejscu nie będę zagłębiał się w strukturę tej funkcji. Została ona napisana w języku STL i doświadczeni programiści z łatwością ją rozszyfrują. Dla nas najważniejsze jest, że dzięki tej „małej” funkcji możemy nie martwić się w jaki sposób nasz symulator i wirtualna fabryka się dogadają.

Zaczynamy zabawę z wirtualną fabryką

Po zapoznaniu się z pierwszymi krokami w wirtualnej fabryce możemy przejść do zbudowania pierwszej sceny. Sceny w Factory IO są to po prostu kolejne maszyny/linie produkcyjne. Na podstawie „Pierwszych kroków” dostępnych w oprogramowaniu oraz na stronie: https://factoryio.com/docs/getting-started/manually-controlling-scene/ stworzyłem pierwszą scenę. Nie będę w tym miejscu opisywał po kolei procesu tworzenia sceny, ponieważ po przerobieniu startowego manuala każdy z Was powinien być w stanie samodzielnie zbudować własną. Mój pierwszy projekt w Factory IO wymyśliłem w ten prosty sposób.

Na stanowisku znajdują się trzy podajniki rolkowe. Każdy z podajników wyposażony jest w napęd o działaniu jednostronnym tzn. rolki mogą obracać się tylko w jedną stronę. Każdy z silników posiada możliwość wykorzystania sygnału z enkodera (opcjonalnie). Włącza się go klikając PPM na podajnik i wybierając opcję „Use encoder”.  Na każdym z podajników zamontowano dwa czujniki optyczne. Dodatkowo mamy pośrodku stół obrotowy, który może obracać się w zakresie 0-90 stopni. W stole obrotowym znajdują się także rolki przesuwające jadący obiekt. Dodatkowo zawiera on dwa czujniki wykrywające przejeżdżający detal. Zapewne domyślacie się już co będzie robić ta linia.

Koncepcja programu

Linia którą zbudowałem w Factory IO będzie sortować paczki. Na początku myślałem o tym jak wyglądałoby to w rzeczywistej fabryce. Zapewne sortowanie paczki na region (w naszym wypadku lewo/prawo) odbywałby się z z wykorzystaniem odczytu kodu kreskowego na naklejce paczki. Finalnie zrezygnowałem z tego, ponieważ na pierwszy projekt linia ta jest wystarczająco skomplikowana. Koncepcja programu przedstawia się następująco:

  1. Czujnik na początku pierwszego przenośnika wykrywa pudełko.
  2. Przenośnik 1 jest uruchamiany.
  3. Razem ze startem przenośnika 1 uruchamiane są rolki stołu obrotowego, dzięki czemu paczka może wjechać na stół.
  4. Gdy paczka dojeżdża do czujnika na końcu stołu obrotowego, rolki stołu i przenośnika 1 się zatrzymują.
  5. Następuje obrót stołu.
  6. Gdy stół się obróci włączane są ponownie rolki stołu obrotowego (w jedną lub w drugą stronę na zmianę).
  7. Uruchamiany jest odpowiednio przenośnik 2 lub przenośnik 3.
  8. Gdy paczka dojedzie do końcowego czujnika przenośnik a2 lub przenośnika 3 stół obrotowy powraca do pozycji początkowej.
  9. Gdy sygnał z czujnika końcowego przenośnika 2 lub przenośnika 3 osiągnie zbocze opadające (gdy paczka znajdzie się za czujnikiem) wyłącz odpowiadający przenośnik i zmień kierunek paczki w kolejnym cyklu.
  10. Zresetuj symulację.

Symulacja maszyny sortującej działa w pętli, po dojechaniu paczki do końca (spadnięciu na paletę z lewej lub prawej strony) zaczynamy od początku, pamiętając w którą stronę spadła poprzednio paczka. Jeżeli poprzednia paczka pojechała w lewą stronę, wówczas kolejna pojedzie w stronę prawą. Analogicznie będzie w sytuacji, gdy poprzednia paczka pojechała w stronę prawą. Może się Wam wydawać, że zaprogramowanie tej linii to „bułka z masłem”. Też tak uważałem dopóki nie zacząłem programować. Możliwość programowania metodą prób i błędów bardzo wiele uczy, zwłaszcza kiedy nie uszkodzimy maszyny. W Factory IO możemy obserwować działania naszego programu i na bieżąco korygować błędy (które na pewno się pojawią).

Podłączamy symulator PLC do Factory IO

Przyszedł czas na połączenie symulatora sterownika PLC do sceny w Factory IO. Na początku w Factory IO przechodzimy do zakładki File –> Drivers lub wciskamy klawisz F4. Naszym oczom ukaże się okno konfiguracji sygnałów wejść/wyjść sterownika.

Z rozwijalnej listy na górze ekranu wybieramy „Siemens S7-PLCSIM”. Po lewej stronie mamy wszystkie dostępne sygnały wejściowe podzielone według typu (Bool, Float, Int, Any). Po prawej stronie mamy dostępne sygnały wyjściowe. Oczywiście nie musimy korzystać z nich wszystkich, ponieważ niektóre dotyczą działania symulacji w Factory IO (zarówno wejścia jak i wyjścia). Widoczna na powyższym rysunku konfiguracja jest rozbudowana o dodatkowe wejścia i wyjścia. Nie pod wszystkie zaciski będą podłączone sygnały. Istnieje możliwość zmiany konfiguracji wirtualnego sterownika (np. zmiana ilości wejść/wyjść). W tym celu należy kliknąć w przycisk „Configuration” w prawym górnym rogu aplikacji.

Na początku musimy wybrać model sterownika, którego działanie będziemy symulować. W tym przypadku jest to sterownik z rodziny S7-1200. Poniżej można wybrać typ używanych danych numerycznych w odniesieniu do wejść/wyjść. Wybrać można typ WORD lub DWORD (double word). Na samym dole wybieramy ilości zacisków wejściowych i wyjściowych razem z offsetem, czyli bajtem od którego zaczniemy odliczać adresy konkretnych wejść i wyjść. W naszym przypadku domyślnie zaczynamy odliczać od bajtu zerowego, zatem adresowanie pamięci wejść rozpocznie adres I0.0, zaś wyjść adres Q0.0. Po zakończeniu konfiguracji sterownika możemy przejść do poprzedniego menu. Przypisywanie sygnałów wejść/wyjść odbywa się poprzez przeciągnięcie sygnału z lewej strony do zacisku wejściowego. Analogicznie w przypadku sygnałów wyjściowych.

Następnie w TIA Portal uruchamiamy symulator sterownika klikając PPM na naszym sterowniku w drzewie projektowym. Wybieramy opcję „Start simulation” po czym naszym oczom ukaże się okno konfiguracji połączenia ze sterownikiem „symulatorem”. Wgrywamy naszą konfigurację sprzętową i funkcję do komunikacji.

Po wgraniu konfiguracji i programu naszym oczom powinien ukazać się symulator z zieloną diodą RUN/STOP.

Teraz możemy wrócić do Factory IO do okna „Device”, w którym konfigurowaliśmy nasze wejścia/wyjścia. Klikamy w prawym górnym rogu na „Connect” i jeżeli wszystko skonfigurowaliśmy poprawnie po chwili naszym oczom powinien ukazać się zielony znak potwierdzający poprawność połączenia. Znajduje się on po prawej stronie rozwijalnej listy.

Na powyższym rysunku możecie zauważyć w jaki sposób skonfigurowałem sygnały wejść/wyjść mojego sterownika. Po stronie sygnałów wejściowych znajdują się tam sygnały takie jak:

  • sygnały z Factory IO sygnalizujące działanie symulacji oraz jej reset,
  • sygnały z enkoderów napędów przenośników rolkowych,
  • 6 czujników z przenośników rolkowych,
  • 4 sygnały z czujników stołu obrotowego.


Sygnały z enkoderów napędów przenośników rolkowych dodałem z możliwością rozbudowania programu w przyszłości. W tej wersji programu sygnały te nie będą wykorzystywane. Stół obrotowy posiada 4 czujniki, z których dwa można było zauważyć na wcześniejszych zdjęciach. Pozostałe dwa czujniki odpowiadają za pozycję obrotową stołu (pozycja 0 ° lub pozycja 90 °). Dzięki temu możemy uzależnić działanie programu od jego precyzyjnej pozycji (obrócony lub nie). Po stronie sygnałów wyjściowych znalazły się takie sygnały, jak:

  • włączenie napędów przenośników rolkowych,
  • włączenie napędów rolek w stole obrotowym (kierunek + i kierunek -),
  • włączenie obrotu stołu obrotowego,
  • sygnały wysyłane do Factory IO nakazujące reset symulacji i jej start.

Nareszcie programujemy!

Możemy w końcu przejść do tego co tygryski lubią najbardziej 🙂 Na początku dobrze jest stworzyć tablicę zmiennych (ang. Tag table). Dla czytelności zawsze tworzę oddzielne tablice dla zmiennych typu I (wejścia), Q (wyjścia), M (markery). Staram się także nazywać zmienne w taki sposób, aby można było odczytać ich znaczenie bez pisania dodatkowych komentarzy. Dodatkowo na początku nazwy zmiennej określam za pomocą jednego znaku typ zmiennej (i,q,m). Oczywiście adresy sygnałów wejściowych i wyjściowych muszą pokrywać się z tymi, które przypisaliśmy w Factory IO.

Tablica sygnałów wejściowych:

Tablica sygnałów wyjściowych:

Tablica markerów programu:

Możecie się zastanawiać dlaczego nazwy sygnałów wejściowych i wyjściowych pokrywają się z nazwami markerów. Dzieje się tak dlatego, iż w przypadku rozbudowanych programów łatwiej jest wielokrotnie wykorzystywać markery, zaś do fizycznych wejść/wyjść odwoływać się w programie tylko raz. Niektórzy producenci sterowników nie pozwalają na wielokrotne odwoływanie się do wejść/wyjść w programie. Takie wykorzystanie markerów poprawia także czytelność programu (zaraz dowiecie się dlaczego).

Przepisujemy wejścia i wyjścia

Z tak zadeklarowanymi sygnałami i markerami możemy przystąpić do przepisania wejść i wyjść. W tym celu tworzymy oddzielne bloki OB (jeden dla sygnałów wejściowych, drugi dla sygnałów wyjściowych). Program prezentuje się następująco:

Kolejne bajty wykorzystywanych wejść i wyjść podzielono na oddzielne networki i wykonano analogicznie do powyższych. Po przepisaniu wejść i wyjść możemy zacząć pisać cykl programu.

Cykl programu

Cykl programu zawiera kolejny blok OB o nazwie „Cykl”.  Istotne parametry procesu są zazwyczaj zapisywane w blokach danych DB (ang. Data Block). Również w przypadku tego programu przyda nam się blok danych. Parametry w nim zapisane zostały na bieżąco dodawane w miarę rozwoju programu. Jego ostateczna postać przedstawiona jest na poniższym rysunku.

Na początku programu w Networku 1 sprawdzamy czy paczka znajduje się na początku pierwszego przenośnika z wykorzystaniem czujnika. Jeżeli czujnik wykryje obecność paczki, to wystawi sygnał do startu przenośnika. Przenośnik 1 będzie pracował dopóty, dopóki paczka nie osiągnie czujnika końcowego na stole obrotowym. Sygnał o uruchomieniu ulega samopodrzymaniu, aż do przerwania przez sygnał z czujnika stołu obrotowego. Sygnał o wykryciu paczki jest wysyłany tylko w pierwszym cyklu pracy sterownika po uruchomieniu symulacji w Factory IO.

Trzeci network służy do obsługi parametrów stołu obrotowego, które będą powracać w kolejnych networkach. Znajduje się tam przepisanie stanu z czujników do odpowiadających im zmiennych w bloku danych, a także sprawdzenie na podstawie stanu czujników z przenośników, czy obiekt znajduje się na sortowniku. Na podstawie resetu symulacji resetowane są sygnały obecności obiektu, jego przemieszczenia, zatrzymania stołu oraz 20 (z zapasem) parametrów przechowujących stan zboczy używanych w programie.

Kolejne networki sterują rolkami stołu obrotowego w kierunku dodatnim (do przodu) i ujemnym (do tyłu). Program nie jest skomplikowany, gdyż na początku rolki w kierunku + obracają się, gdy paczka wjeżdża na stół, a następnie jeżeli paczka ma jechać w lewą stronę. W naszym przypadku rolki obracają się w kierunku minus tylko jeżeli paczka ma jechać w prawą stronę. O kierunku paczki decyduje marker „mKierunek_paczki”.

Network szósty odpowiada za obracanie stołem obrotowym po tym, jak paczka dojedzie do jego końcowego czujnika. Powrót stołu następuje po otrzymaniu stanu wysokiego sygnału „Zatrzymaj_stol”.

W networku 7 znajduje się program sterujący drugim przenośnikiem rolkowym. Przenośnik ten uruchamiany jest jeżeli paczka osiągnie koniec stołu obrotowego oraz paczka powinna zmierzać na prawo. Najechanie paczki na początkowy czujnik przenośnika skutkuje cofnięciem stołu obrotowego. Natomiast zejście paczki z czujnika końcowego przenośnika 2 powoduje zmianę kierunku paczki i reset sygnału o obecności paczki. W konsekwencji na dole networku odmierzany przez Timer jest czas do resetu symulacji.


W networku 7 znajduje się program sterujący trzecim przenośnikiem rolkowym. Przenośnik ten uruchamiany jest jeżeli paczka osiągnie koniec stołu obrotowego oraz paczka powinna zmierzać na lewo. Najechanie paczki na początkowy czujnik przenośnika skutkuje cofnięciem stołu obrotowego. Natomiast zejście paczki z czujnika końcowego przenośnika 3 powoduje zmianę kierunku paczki i reset sygnału o obecności paczki. W konsekwencji na dole networku Timer odmierza czas do resetu symulacji.

Pora na testy

Symulacja w wirtualnej fabryce została tak zaprogramowana aby po zakończeniu cyklu automatycznie się resetowała, dzięki czemu można zaobserwować sytuację co działoby się z kolejną paczką w cyklu programu. Zapraszam na film podsumowujący nasze działania 🙂

Podsumowanie

Po przeprowadzonych testach możemy zauważyć, że program działa poprawnie (przyjmując nasze założenia). Dzięki Factory IO w warunkach domowych jesteśmy w stanie zaprogramować maszyny w wirtualnej fabryce. Oczywiście program, który przedstawiłem w tym artykule nie jest jedyną możliwą opcja rozwiązania przedstawionego problemu. Na pewno każdy z Was rozwiązałby ten problem nieco inaczej. Wszystko zależy od podejścia programisty. Mam nadzieję, że dzięki temu artykułowi będziecie mogli zagłębić się w świat automatyki i programowania PLC.

Artykuł został nagrodzony w Konkursie iAutomatyka – edycja Maj 2019

Nagrodę Termos + klucz do szaf + zestaw gadżetów dostarcza ambasador konkursu, firma Multiprojekt.

 



Utworzono: / Kategoria: , , ,
  • Autor: Marcin Siemikowski
  • Z wykształcenia mgr inż. Automatyki i Robotyki. W pracy zajmuję się programowaniem sterowników PLC i paneli HMI różnych producentów. Pracuję z przekonaniem, że automatyk uczy się całe życie.
  • Profil Autora

Reklama



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY
  • Seria EX-Z Czujniki z serii EX-Z to jedne z najmniejszych urządzeń tego typu na świecie. Najcieńszy model posiada grubość jedynie 3 mm co zostało osiągnięte przez zastosowanie nowych półprzewodników i dzięki temu wyeliminowanie przewodów. B...
  • RPI-1ZI-U24A, to przekaźnik  instalacyjny wytrzymujący maksymalny prąd załączania 120A w czasie 20ms. Przekaźnik ten dedykowany jest do załączania obwodów o wysokim prądzie początkowym, w szczególności do obwodów oświetleniowych, potwierdzo...
  • ROUTER VPN EWON COSY 131 Zapewnia sprawny i prosty w obsłudze zdalny dostęp do dowolnego urządzenia Kompatybilność z najważniejszymi markami i protokołami sterowników PLC (m.in. Siemens, Allen-bradley, Omron…) Szybie zarządzenie roote...
  • PR200 to uniwersalne i łatwe w obsłudze urządzenie zaprojektowane w plastikowej obudowie do montażu na szynie DIN jako alternatywa dla PLC. Przekaźnik jest dostępny w kilku wersjach dla napięcia stałego i przemiennego. Jest wyposażony w cyf...
  • Kurs zaczyna się od uniwersalnych porad związanych z czytaniem schematów elektrycznych. Następnie, Agata stopniowo wprowadzi Cię w zagadnienia związane z wykorzystaniem oprogramowania podczas tworzenia kompletnej dokumentacji elektrycznej. ...
    Link: Terminy
  • ITP14 to uniwersalny wyświetlacz procesowy do monitorowania i kontroli procesów przemysłowych. To urządzenie ma zwartą, znormalizowaną konstrukcję i pasuje do standardowego otworu montażowego ⌀22,5 mm na lampy sygnalizacyjne. Zapewnia to sz...