Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2018/03/20180310_130741.jpg

Sterowanie silnikiem krokowym przez Siemens S7-1200 – Pierwszy program

autor: Rafał.

Artykuł z serii: Sterowanie silnikiem krokowym przez Siemens S7-1200


Cześć!

Zapraszam Was na kolejną część serii o Motion Control w sterowniku S7-1200 (poprzednia część tutaj). Dzisiaj postaram się wyjaśnić zagadnienia związane ze sterowaniem naszym napędem z poziomu programu PLC. Cały artykuł stanowi swego rodzaju tutorial zarówno programu jak i budowy ekranów na panel HMI Siemens. Na końcu znajdziesz film prezentujący omawiane zagadnienia oraz projekt z TIA Portal do pobrania.

Zobacz też: Kursy Wideo z Programowania PLC Siemens W TIA Portal i Step 7

Ostatnio sterowaliśmy już naszym silnikiem wykorzystując panel kontrolny Commissioning, lecz jest on tylko narzędziem diagnostycznym. W tym odcinku postaramy się zrobić własny panel kontrolny. Do tego celu wykorzystam panel HMI TP700 Comfort.

Przed rozpoczęciem prac wykorzystajcie jeszcze raz zakładkę Commissioning, by sprawdzić naszą konfigurację napędu. W razie niespodzianek będziemy pewni, że błąd mamy w programie, a nie w samej konfiguracji. Dodatkowo warto też wspomnieć o jednej rzeczy. Tak jak i przy zmianach konfiguracji sterownika tak i przy konfigurowaniu naszego napędu wymagane jest, by być w trybie offline. Nie wprowadzimy żadnych zmian jeśli będziemy połączeni z naszym sterownikiem.

Zaczynamy

Wszystkie instrukcje MC możemy znaleźć w zakładce Technology. Rozwijamy tam listę Motion Control, by zobaczyć wszystkie możliwe opcje.

Ich ilość jest spora, a po przeciągnięciu ich do naszego programu, ilość wejść i wyjść każdej funkcji może przytłoczyć. Jednak nie jest aż tak źle, bo Siemens zaopatrzył nas w bardzo dobrze przygotowane pliki pomocy. Wystarczy, że zaznaczymy sobie bloczek o którym chcielibyśmy się dowiedzieć czegoś więcej i wciśniemy klawisz F1. Wyświetlony zostanie plik pomocy, który przedstawi nam wszystkie najważniejsze informacje.

Sam program PLC będzie bardzo prosty. Po prostu przeciągniemy sobie bloczki kontrolujące oś do programu i odpowiednio je skonfigurujemy. Na wejściach zdefiniujemy sobie Tag’i, które potem pozwolą nam sterować naszą osią z poziomu HMI. Poznajmy zatem bliżej wykorzystane funkcje.

MC_Power – włączenie osi

Pierwszy i najważniejszy bloczek funkcyjny motion control, który musimy dodać do naszego programu, to MC_Power. Dopóki wejście Enable będzie aktywne, dopóty nasz skonfigurowany napęd również będzie aktywny. Zmiana tego sygnału z logicznej „1” na logiczne „0” spowoduje zatrzymanie napędu, według parametru StopMode.  Standardowo ustawione „0” spowoduje zatrzymanie napędu według skonfigurowanego zatrzymania awaryjnego (zakładka Emergency stop w konfiguracji napędu). Jeśli chcemy, by w momencie wyłączenia napęd zatrzymał się natychmiastowo, to wpisujemy tam „1”. Spowoduje to natychmiastowe i całkowite wyłączenie wyjść PTO po zdezaktywowaniu bloczka MC_Power. Wyjście Status przyjmuje wartość „1”, gdy napęd jest gotowy. Natomiast wyjście Error przyjmie „1”, gdy podczas wykonywania danego rozkazu pojawi się błąd. Konkretny numer błędu ukaże się na wyjściu ErrorID. Wykorzystanie tego wyjścia pokażę w kolejnych częściach, gdy naszą oś zamienimy na oś liniową, a na końcach dołożymy sprzętowe wyłączniki krańcowe.

Jeśli TIA Portal jest dla Ciebie nowością, to możliwe, że zaskoczy Cię fakt iż u Ciebie nie pokazało się wyjście ErrorID. Jeśli tak jest, to zerknij na sam dół naszego bloczka. Widzisz ten trójkącik? Kliknij w niego, a twoja funkcja poszerzy się o kolejne wyjścia.

MC_Reset – Potwierdzenie błędów

Instrukcja ta wykorzystywana jest do potwierdzania pojawiających się błędów. Wystąpienie zbocza narastającego na wejściu Execute spowoduje skasowanie aktywnych błędów.

Spróbujemy wywołać pewien błąd, by przetestować tę funkcję. Naszym błędem będzie osiągnięcie programowego wyłącznika krańcowego. By tego dokonać musimy na chwilę powrócić do konfiguracji naszej osi. Wyszukujemy zakładkę Position limits i aktywujemy tam programowe wyłączniki krańcowe. Zmieńmy także wartości tych wyłączników ustawiając je na „-1000” i „1000”. Po tej zmianie nasz sterownik będzie pilnował, by pozycja osi nie przekroczyła zadanego zakresu. A jeśli pozycja jednego lub drugiego wyłącznika krańcowego zostanie osiągnięta, to napęd zwróci nam błąd.

MC_Home – Zerowanie

Każda oś musi zostać wyzerowana, by móc wykorzystać jej wszystkie możliwości. Dokonać tego możemy wykorzystując bloczek MC_Home. Jeden ten bloczek pozwala wyzerować naszą oś na cztery różne sposoby, a wybieramy je wejściem Mode. Jeśli wystąpi zbocze narastające na wejściu Exevute, to:

  •  W przypadku „0” na wejściu Mode – Nasza aktualna pozycja zostanie nadpisana przez wartość z wejścia Position.
  • W przypadku „1” na wejściu Mode – Do naszej aktualnej pozycji zostanie dodana wartość Position, a suma tych wartości nadpisze aktualną pozycję.
  • W przypadku „2” lub „3” na wejściu Mode – Zostanie aktywowane pasywne lub aktywne zerowanie osi, których konfiguracja znajduje się w konfiguracji osi. Takie zerowanie wykorzystamy w kolejnych częściach, gdy nasze stanowisko testowe zostanie rozbudowane o czujnik zerowania osi.

MC_Halt – Zatrzymanie osi

By zatrzymać wykonywanie danej funkcji wykorzystujemy bloczek MC_Halt. Przejmuje on kontrolę nad naszą osią i zatrzymuje ją. Tak jak i w poprzednich funkcjach, wykonanie jej nastąpi po pojawieniu się zbocza narastającego na wejściu Execute.

MC_MoveAbsolute – Ruch bezwzględny

Teraz dodamy do programu pierwszą instrukcję pozycjonowania osi, a dokładniej pozycjonowania bezwzględnego. Co to oznacza? Po aktywowaniu tej funkcji nasza oś zostanie ustawiona na pozycję Position z prędkością określoną parametrem Velocity. Do aktywowania tej funkcji wymagane jest wcześniejsze wyzerowanie osi.

MC_MoveRelative – Ruch względny

Czym się różni pozycjonowanie względne od bezwzględnego? Wcześniej nasza oś ustawiana była na konkretną pozycję według wejścia Position. Natomiast przy pozycjonowaniu względnym pozycja naszej osi będzie przesuwana o wartość z wejścia Distance. Kierunek przesunięcia naszej osi determinujemy znakiem tej wartości. „+” będzie oznaczał ruch osi do przodu. Natomiast „-„ będzie oznaczał ruch do tyłu.

MC_MoveVelocity – Ruch z zadaną prędkością

Funkcja ta rozpędzą naszą oś do zadanej prędkości i utrzymuje ją aż do przerwania działania tej funkcji. Przerwanie możemy zrealizować funkcją MC_Halt lub inną funkcją pozycjonowania. Wejście Velocity określa prędkość jaką ma utrzymać nasza oś, a wejście Direction wyznacza kierunek obrotu naszej osi.

MC_MoveJog – Sterowanie w trybie JOG

Funkcja MC_MoveJog pozwala na ręczne sterowanie osią. Podanie stanu wysokiego na wejście JogForward spowoduje ruch osi do przodu z prędkością ustaloną przez Velocity. Natomiast stan wysoki na wejściu JogBackward spowoduje obrót osi w drugą stronę.

MC_CommandTable – Tabela ruchu sekwencyjnego

Po wykryciu zbocza narastającego na wejściu Execute zostaje wywołana tabela ruchów, która zdefiniowana jest wejściem CommandTable.

Jednak by taką tabelę wywołać najpierw musimy ją stworzyć. Tak jak przy tworzeniu nowej osi, w drzewie projektu szukamy zakładki Technology objects, a następnie klikamy Add new object. W wyświetlonym oknie zaznaczamy TO_CommandTable, a następnie wciskamy OK.

Zostajemy automatycznie przeniesieni do konfiguracji naszej tabeli, do której możemy również wejść poprzez drzewko projektu po lewej stronie.

Pierwsza zakładka General pozwala nam tylko zmienić nazwę – nic ciekawego

Druga zakładka, czyli Command table, pozwala już na zdecydowanie więcej. Właściwie to wszystko co nas interesuje znajduje się właśnie tu. Pierwszym krokiem będzie skopiowanie parametrów naszej osi. Dzięki temu kolejne zakładki konfiguracji zostaną automatycznie dopasowane do osi, którą będziemy sterować.

Maksymalna ilość wierszy w naszej tabeli wynosi 32, ale nie musimy wykorzystywać ich wszystkich. W naszym bloczku wywołującym tabelę dokładnie ustalamy od którego do którego wiersza będą wykonywane zaprogramowane ruchy.

Tabela podzielona jest na 7 kolumn. Pierwsza kolumna przedstawia numer kroku, a w drugiej kolumnie wybieramy funkcję którą ma wykonać nasza oś. Mamy do dyspozycji aż pięć opcji: pozycjonowanie względne, bezwzględne, ruch z zadaną prędkością, zatrzymanie i postój na określony czas.

Kolumny 3,4 i 5, to kolejne parametry dokładniej opisujące funkcje wybraną w kolumnie drugiej. Są to pozycja/dystans, prędkość osi w danym kroku oraz czas w przypadku wybrania postoju osi.

Ciekawą kolumną jest kolumna szósta. Dostajemy tu możliwość łączenia poszczególnych kroków, co wygładza ruch naszej osi. Complete command (lewy wykres) oznacza, że kolejny krok wykona się dopiero wtedy, gdy poprzedni zostanie całkowicie zakończony, a oś będzie nieruchoma. Natomiast przy wybraniu opcji Blending motion (prawy wykres) poszczególne kroki zostaną połączone. Bardzo dobrze to widać na poniższym przykładzie. W obu przypadkach nasza oś pozycjonowania jest na pozycję 90 stopni z prędkością 100 stopni/s, a w drugim kroku pozycjonowana jest na pozycję 180 stopni, ale już z większą prędkością. Sekwencje identyczne, ale sposób łączenia ruchów jest już inny. W pierwszym wypadku nasza oś zatrzymana jest całkowicie przed wykonaniem drugiego kroku. Natomiast w drugim wypadku ruch zrealizowany jest tak, że nasza oś wykonuje płynne przejście pomiędzy poszczególnymi krokami

Ostatnia kolumna, to Step code. Jest to kod aktualnie wykonywanego kroku, który będzie wystawiany na wyjście naszej funkcji MC_CommandTable. Do każdego kroku możemy przypisać swój własny „Step code”.

Wizualizacja – Panel HMI

Jak widzicie program PLC jest banalnie prosty. Bloki Motion Control maksymalnie upraszczają sterowanie silnikami krokowymi co niejednokrotnie może być bardzo przydatne. Zrobimy jeszcze tylko prostą wizualizację poprzez którą będziemy sterować naszą osią i zaczniemy testy.

Na panelu HMI utworzyłem szablon, który będzie przedstawiał najważniejsze informacje o naszej osi. Pierwsza wyświetlana informacja to pozycja naszej osi. Dodajcie sobie nowy element –I/O field, a następnie połączmy go ze zmienną w naszym sterowniku.

Wyświetli się nam okienko w którym odszukamy zakładki Technology objects. Rozwijamy ją i klikamy na nazwę naszej osi. Teraz, po prawej stronie ukazały nam się podstawowe informacje o naszym napędzie. Zaznaczmy Tag ActualPosition, a następnie zatwierdźmy wybór zieloną fajką. Gotowe! Dodaliśmy do panelu pozycję naszego napędu! Sformatujcie sobie dowoli wyświetlanie tej pozycji i przejdźcie dalej.

Tak samo jak pozycje dodacie również aktualną prędkość osi. Przenieście na ekran nowy element I/O field i skonfigurujcie go tak jak pozycję. Różnica będzie tylko  w tym, że z tej samej zakładki wybierzemy tag ActualVelocity zamiast ActualPosition.

Kolejnymi elementami, które warte są opisania, to bity określające status naszego napędu. Sposób ich prezentacji jest dowolny, a ja użyłem Graphic I/O field. W najprostszym programie graficznym możemy utworzyć małe, kolorowe obrazki, które będą odzwierciedlały stan naszej osi. Jako przykład pokażę wam jak dodać sygnalizację, że nasza oś jest włączona.

W drzewku projektu odnajdujemy pozycję Text and graphic lists. Wchodzimy tam, a następnie wybieramy Graphics lists. Dodajemy nową listę i dodajemy dwie utworzone grafiki. Szary prostokącik będzie oznaczał, że nasza oś jest wyłączona, a zielony prostokącik będzie oznaczał jej aktywność.

W ustawieniach naszego Graphic I/O field ustawiamy wcześniej utworzoną Graphics list, a następnie przypisujemy sobie nasz Tag.  Znowu odszukujemy naszą oś, ale tym razem nie klikamy na nią, a w mały trójkącik, który znajduje się po jej lewej stronie. Wyświetli się nam długo lista w której wyszukujemy StatusBits.

Klikamy na to, a po prawej stronie wyświetlają się bity określające status naszej osi. Wybieramy bit Enable i zatwierdzamy fajką.

W podobny sposób możemy na naszym panelu przedstawić wszystkie inne parametry i statusy naszego napędu.

Do mojego szablonu dodałem jeszcze pięć przycisków. Pierwszy będzie załączał nasz napęd (MC_Power), drugi odpowie za potwierdzanie pojawiających się błędów (MC_Reset), a kolejne trzy będą odpowiedzialne za przełączanie poszczególnych ekranów naszej wizualizacji.

Pierwszy ekran naszej wizualizacji, to zerowanie osi. Właściwie to niewiele tu potrzebujemy. Mamy przycisk, który uaktywni naszą funkcję MC_Home, a także element I/O field, który pozwoli na przypisanie naszej osi dowolnej pozycji. W tym miejscu trzeba pamiętać, że pozycje i prędkości naszych osi zawsze muszą być określane zmienną typu Real.

Kolejny ekran przedstawia już trochę więcej. U samej góry dostajemy możliwość edycji prędkości ruchu naszej osi, a poniżej mamy przyciski aktywujące bloczki MC_MoveJog, MC_MoveVelocity oraz MC_Halt.

Trzeci ekran odpowiada za pozycjonowanie naszej osi. Oprócz prędkości osi możemy tu określić pozycję i dystans dla funkcji MC_MoveRelative i MC_MoveAbsolute. Mamy tu też przyciski wyzwalające te funkcje, oraz przycisk odpowiadający za wyzwolenie naszej tabeli ruchu.

Tak jak i program PLC, tak i wizualizacja jest bardzo prosta. Wszystkie elementy odnoszą się bezpośrednio do naszych bloczków motion control. Nie mamy tu nic skomplikowanego, a i tak stworzyliśmy panel kontrolny, który ma duże możliwości kontroli naszego napędu. Wgrajmy konfigurację sprzętową oraz program do sterownika PLC i panelu HMI. Czas zaczać testy!

W ten oto sposób zakończyliśmy kolejną część serii o Motion Control w sterownikach S7-1200. Dzięki temu opisowi, sami widzicie jak proste jest sterowanie osią w sterowniku S7-1200. Zobaczyliście na własne oczy jak działają poszczególne funkcje i które z nich sami wykorzystacie we własnej aplikacji. W kolejnym odcinku, spróbujemy wykorzystać poznane informacje do sterowania napędem liniowym. Wypróbujemy jak dotąd nie poznane funkcje i rozbudujemy nasze stanowisko o dodatkowe elementy – wyłączniki krańcowe i czujnik zerowania osi.

Natomiast to co zrobiliśmy w TIA Portal w tym artykule możesz pobrać tutaj: iAutomatyka_Motion_Control_Pierwszy_program

Rafał Lelito


Więcej z serii: Sterowanie silnikiem krokowym przez Siemens S7-1200


Utworzono: / Kategoria: , , , , ,

Reklama

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY
  • 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
  • Nowoczesne dotykowe panele operatorskie HMI firmy WEINTEK Labs. – Bezpłatne oprogramowanie narzędziowe w pełnej wersji – Precyzyjne, dotykowe ekrany wyświetlające szczegółową grafikę – Obszerne biblioteki komponentów grafi...
  • Wyświetlacz słupkowy ITP15 jest kompaktowym wskaźnikiem procesowym, który wizualizuje analogowy sygnał wejściowy w zakresie od 0 do 100% z 10 słupkami po 10%. Sygnałem wejściowym może być liniowy sygnał napięciowy 0 (2) -10 V lub sygnał prą...
  • 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...
  • Bezpieczny, prosty w obsłudze i energooszczędny Seria serwowzmacniaczy Mitsubishi Electric MELSERVO MR-J4 wraz z kompatybilnymi modułami pozycjonującymi oraz zaawansowanymi kontrolerami motion, umożliwia konstruktorom maszyn i urządzeń oraz...
  • Poniższy poradnik jest zbiorem schematów połączeń elektrycznych. W poradniku zapoznamy się z podstawami wprowadzenia do systemów przekaźnikowych, sekwencji przełączeń przekaźników, porównania systemów przekaźnikowych z systemami tradycyjnym...