Komunikacja Modbus RTU – konfiguracja i przykładowa aplikacja w środowisku Codesys, część 2
Kurs obsługi i konfiguracji serwonapędów Astraada
Kontakt w sprawie artykułu: Rafał Pilch - 2023-09-09
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/06/kurs-srv-header2.jpg)
Z tego artykułu dowiesz się:
- jak zdefiniować zmienne w przykładowej aplikacji,
- jak powinna wyglądać logika w języku LD,
- jak przygotować prostą wizualizację na panelu operatorskim.
To już czwarty odcinek naszego kursu. W poprzednim odcinku dowiedziałeś się, w jaki sposób komunikować się z serwonapędem za pomocą protokołu EtherCAT. Natomiast w tej części nauczysz się konfigurować komunikację poprzez protokół Modbus RTU.
W drugiej części odcinka stworzymy przykładową aplikację w języku LD jak wizualizację na panelu HMI. Zbudujemy program pozwalający na sterowanie prędkością serwosilnika z uwzględnieniem momentu siły. Wszystkie wartości przypisywane do zmiennych będą zależeć od „osoby sterującej”, działającej na naszym oprogramowaniu. W razie wątpliwości zawsze możesz wrócić do pierwszej części odcinka.
Kurs obsługi i konfiguracji serwonapędów Astraada SRV
1. Z czego składa się zestaw serwonapędowy?2. Pierwsze podłączenie serwonapędu i przygotowanie do pracy.
3a. Sterowanie serwonapędem w EtherCAT – komunikacja i konfiguracja, część 1.
3b. Sterowanie serwonapędem w EtherCAT – komunikacja i konfiguracja, część 2.
4a. Sterowanie serwonapędem w Modbus RTU – komunikacja i konfiguracja, część 1
4b. Sterowanie serwonapędem w Modbus RTU – komunikacja i konfiguracja, część 2
5. Sterowanie Pulse Direction – jak sterować serwonapędem poprzez impulsy?
6. Czym jest oraz jakie możliwości daje tryb JOG?
7. Jak działa funkcja STO w serwonapędzie oraz jak podłączyć E-STOP?
Pierwszym krokiem jest nazwanie zmiennych, z których będziemy korzystać. Przejdź do zakładki ModbusGenericSerialSlave I/O Mapping poprzez wcześniejsze wejście w nasze urządzenie podrzędne Modbus_Slave_COM_Port. Zadeklaruj odpowiednie komponenty, tak jak zostało to przedstawione przy opisie trybu prędkości. Skupmy się dodatkowo na parametrze Zezwolenia na ograniczanie momentu siły oraz Zadaniu limit momentu siły [%]. Następnie będziemy potrzebować jedynie zmiennych służących do zapisu, więc nadaj im nazwy w kolumnie Variable. Nasza tabela powinna wyglądać w poniższy sposób.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/09/image24-1.png)
Przejdźmy teraz do ustawień wejść i wyjść naszego zestawu XBIO_Berghof_IO (XBIO Berghof IO) i ustawmy przyciski oraz diody. Diody tak naprawdę będą miały charakter jedynie informacyjny. Dzięki nim dowiemy się w jakim trybie aktualnie jesteśmy. Dzięki przyciskom będziemy mogli włączyć nasz serwonapęd w tryb gotowy do pracy.
Przejdź do zakładki i zadeklaruj poniższe zmienne.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/09/image25-1.png)
Jesteśmy gotowi do budowania logiki działania serwonapędu. Otwórz więc zakładkę PLC_PRG znajdującą się w drzewku programu. Będziemy korzystać z języka drabinkowego.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/09/image26-1.png)
Więcej o języku drabinkowym możesz dowiedzieć się z naszego kursu programowania w Codesys.
Zacznijmy od inicjalizacji przycisków i przypisania odpowiednich wartości do zmiennych. Tworzymy więc sekwencję, gdzie pierwszy przycisk uruchamia tryb sterowania prędkością, polecenie załączania osi oraz zezwala na ograniczenie momentu siły. Na wyjściu dodajemy również zmienną „Generator_1” dla Przycisku1.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/09/image27-1.png)
W kolejnych networkach stworzymy prosty generator, który będzie powiązany z trybem pracy oraz z naszymi diodami. Wszystkie cztery diody, poprzez miganie będą nas informowały, że Polecenie załączania osi jest aktywne i serwonapęd jest gotowy do pracy. Korzystamy z bloków TON (Time On Delay) z opóźniającym załączaniem. Wykorzystamy również dodatkowe zmienne „puls_”, aby zapętlić odliczanie oraz stworzyć ideę na której bazuje generator.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/09/image28-2.png)
Tworzymy dodatkową zmienną „RESET”, dzięki której mamy możliwość stworzenia logiki, która pozwoli na przypisanie zera do zmiennych. Innymi słowy zresetuje nam przypisane wcześniej wielkości liczbowe zadane w panelu HMI, do którego teraz przejdziemy.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/09/image29-1.png)
Świetnie, zakończyliśmy tworzenie logiki w języku drabinkowym! Przejdźmy teraz do wizualizacji naszego projektu. Stwórzmy ekrany, dzięki którym będziemy mieli kontrolę nad trybami sterowaniu w panelu HMI. W drzewku projektu wybierz Application -> Add Object -> VisualizationManager.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/09/image30-1.png)
W menedżerze wizualizacji dodaj TargetVisualization, a jeśli chciałbyś mieć dostęp do wizualizacji poprzez przeglądarkę internetową, wybierz WebVisualization.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/09/image31-1.png)
Poczytaj więcej o serwonapędach Astraada.
Dodajmy teraz ekran odpowiadający za deklaracje zmiennych w trybie sterowania.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/09/image32-1.png)
Po poprawnej konfiguracji, tak powinno wyglądać nasze drzewo projektu.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/09/image33-1.png)
Rozpocznijmy od zobrazowania możliwości wyboru pracy dla danego trybu sterowania. W celu lepszego przedstawienia naszej wizualizacji na panelu HMI wybierzmy jego odpowiednią rozdzielczość. Klikamy prawym przyciskiem myszy na Wizualizacja, a następnie Properties. Powinniśmy ujrzeć takie okno:
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/09/image34-1.png)
W zakładce Visualization zaznaczmy opcję Use specified visualization size, gdzie w rubryce Visualization Size mamy możliwość wybrania parametrów naszego panelu HMI.
Zobaczmy teraz, jak powinien wyglądać nasz ekran. Musimy uwzględnić wszystkie zmienne liczbowe oraz odnieść się do logiki, którą zadeklarowaliśmy z wykorzystaniem języka LD. Utwórzmy w zakładce Wizualizacja trzy elementy typu Button, które będą odpowiedzialne za:
Podpis przycisku | Nazwa zmiennej |
Zadana predkosc | Zadana_predkosc |
Zadany limit momentu sily | Zad_limit_mom_sily |
RESET | RESET |
Z tą różnicą jednak, że w bloczkach oprócz bloczka RESET nie przypisujemy nazwy tak jak poprzednio, a wyrażenie „%d”, dzięki któremu mamy rzeczywisty podgląd na zmieniające się wartości liczbowe danych zmiennych. Odniesienie do danej zmiennej musi zostać uwzględnione w Text variable znajdującej się w zakładce Text variables. Dodałem opcjonalnie również tekst „Tryb sterowania predkoscia” mający cel jedynie informacyjny.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/09/image35-1.png)
W celu przypisywania dowolnych wartości na bieżąco, musimy zadeklarować klawiaturę dla każdego przycisku.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/09/image36-1.png)
Następnie przygotujmy przycisk RESET, dzięki któremu usuniemy wszystkie wartości wybrane z klawiatury. Nadajmy mu kolor oraz nazwę. W celu odniesienia się do naszej stworzonej logiki, wyszukaj zmienną RESET w Variable dla Tap.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/09/image37-1.png)
Finalna wersja ekranu powinna zostać przedstawiona w poniższy sposób. Sprawdź działanie aplikacji, pozwalające na sterowanie prędkością serwosilnika wraz z uwzględnieniem momentu siły.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/09/image38-1.png)
Sprawdź ofertę serwonapędów w sklepie internetowym firmy ASTOR.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2023/06/wojciech-ryznar-767x734.jpg)
Autor kursu:
Marcin Ryznar
Student Akademii Górniczo-Hutniczej w Krakowie, na kierunku Automatyka i Robotyka