Strona główna ASTOR
Automatyka w praktyce

Komunikacja falownika Astraada DRV-260 ze sterownikiem PLC Horner Canvas 7 w protokole Modbus TCP oraz sterowanie falownikiem za pomocą panelu HMI sterownika

Kontakt w sprawie artykułu: Kamil Jaszczur - 2025-09-24

Z tego artykułu dowiesz się:

  • jak nawiązać komunikację między falownikiem, a sterownikiem PLC w protokole Modbus TCP,
  • jak przesyłać i odczytywać parametry falownika z pomocą środowiska Cscape10 i sterownika Horner Canvas 7,
  • jak przedstawić dane na panelu HMI sterownika.

W wielu aplikacjach przemysłowych zachodzi potrzeba zdalnego sterowania falownikiem oraz monitorowania parametrów jego pracy z poziomu sterownika PLC i panelu operatorskiego. Dzięki protokołowi Modbus TCP proces ten staje się bardzo prosty, a pozyskane w ten sposób dane mogą być w czytelny i atrakcyjny sposób przedstawione na ekranie HMI.

Środowisko Cscape 10 w połączeniu ze sterownikiem Horner Canvas 7 daje szerokie możliwości zarówno w zakresie programowania logiki, jak i projektowania nowoczesnych ekranów operatorskich. Ułatwiają to m.in. wbudowane  biblioteki graficzne czy obsługa animacji.

W tym artykule pokażemy, jak dokonać konfiguracji komunikacji w protokole Modbus TCP na przykładzie falownika Astraada z serii DRV-260 oraz sterownika Horner Canvas 7 z wbudowanym panelem HMI. Do stworzenia projektu wykorzystamy darmowe oprogramowanie narzędziowe Cscape 10, które możesz pobrać ze strony wsparcia technicznego ASTOR.

Konfiguracja falownika

Dobrą praktyką przed przystąpieniem do tworzenia nowego projektu jest przywrócenie falownika do ustawień fabrycznych. Po zresetowaniu falownika należy pamiętać, aby uzupełnić informacje o parametrach znamionowych silnika i przeprowadzić ewentualną autokonfigurację (dokładny opis, jak tego dokonać, znaleźć można w tym artykule).

Na początku musimy skonfigurować falownik tak, my mógł on wymieniać dane przez protokół Modbus TCP. Wszystkie funkcje, które są do tego niezbędne, znajdują się w grupie P0.

Aby nawiązać komunikację w protokole Modbus, należy ustawić następujące parametry:

Kod funkcjiFunkcjaUstawienie
P00.01Źródło poleceń sterujących2: port komunikacyjny
P00.02Typ portu komunikacyjnego0: Modbus
P00.06Źródło częstotliwości8: Modbus

Pełna lista parametrów znajduje się w dokumentacji falownika, dostępnej na stronie wsparcia technicznego ASTOR.

Następnie należy skonfigurować adres IP falownika, tak by znajdował się w tej samej podsieci, co sterownik PLC. Zmieniamy adres IP (P16.58 – P16.61) i maskę podsieci (P16.62-P16.65). Ustawiony adres należy zapamiętać, ponieważ konieczny będzie później do konfiguracji połączenia w sterowniku PLC. Dodatkowo należy ustawić ID urządzenia w parametrze P14.00 (domyślnie jest on ustawiony na 1).

Możemy teraz połączyć falownik ze sterownikiem kablem ethernetowym. Kolejny krok konfiguracji będzie odbywać się w dedykowanym dla sterowników Horner środowisku Cscape 10.

Konfiguracja sterownika PLC w środowisku Cscape 10

Sterownik PLC najłatwiej połączyć z komputerem za pomocą kabla USB. Po podłączeniu sterownika czas stworzyć nowy projekt w Cscape.

Po uruchomieniu programu naszym oczom ukaże się okienko do konfiguracji języka projektu. Jako że później będziemy tworzyć logiki w różnych językach, należy wybrać opcję IEC 61131 Language Editors. Pozwoli to na tworzenie kodu zarówno w języku drabinkowym, jak i jako tekst strukturalny (więcej o językach programowania PLC w standardzie IEC 61131-3 możesz przeczytać tutaj).

Po utworzeniu projektu naszym oczom ukaże się Connection Wizard, który pozwoli na wybranie, w jaki sposób podłączyliśmy sterownik do komputera.

Wybieramy opcję USB -> Next. Następnie z rozwijanej listy możemy wybrać port, do którego podłączyliśmy sterownik. Jeżeli nie jesteśmy pewni numeru portu, możemy wybrać opcję I Don’t Know. Wówczas program sam spróbuje wykryć numer portu i da nam podpowiedź.

Jeżeli połączenie zakończyło się sukcesem, ikonki na pasku narzędzi w sekcji Controller powinny zmienić kolor.

Wchodzimy w zakładkę Hardware configuration i wybieramy opcję Config obok portu LAN1. Ukaże się nam wówczas okno konfiguracyjne (możemy również tutaj podejrzeć adres IP sterownika). Na samym dole, w kategorii Downloadable Protocols, z rozwijanej listy wybieramy opcję Modbus Client v 5.08. Dostępne staną się wówczas trzy nowe opcje: Network, Devices oraz Scan List.

W zakładce Network możemy zmienić m.in. konfigurację portów czy okres akwizycji danych. W tej zakładce nie musimy nic zmieniać.

Przechodzimy do zakładki Devices -> Add. Dodajemy nazwę urządzenia, np. „DRV_260”, i wpisujemy adres IP taki, jaki ustawiliśmy wcześniej na falowniku. Należy też zaznaczyć opcję Remote Slave Id oraz wpisać ID urządzenia, które ustawialiśmy wcześniej pod parametrem P14.00. Jako Device type wybieramy Modicon PLC 5-Digit Addressing. Opcjonalnie można uaktywnić rejestr statusowy.

Dodajmy teraz pierwszy parametr falownika. Niektóre parametry mogą być modyfikowane podczas pracy falownika, niektóre tylko gdy jego praca jest zatrzymana, a jeszcze inne informują o aktualnym stanie urządzenia i mogą być tylko odczytane. Aby odwołać się do odpowiedniej funkcji, musimy znać jej adres. Obliczanie adresu rejestru przypisanego do danej funkcji można wykonać w pięciu krokach:

1. Zamieniamy numer grupy funkcyjnej na kod heksadecymalny.

2. Zamieniamy numer funkcji na kod heksadecymalny.

3. ,,Sklejamy” ze sobą oba kody w jeden.

4. Zamieniamy otrzymany kod z powrotem na postać decymalną.

5. Dodajemy offset (+1).

Przećwiczmy to na przykładzie funkcji P16.58, czyli pierwszym oktecie adresu IP falownika. Rozdzielamy adres funkcji na dwa człony i zamieniamy je na liczbę w kodzie heksadecymalnym:

  • numer grupy funkcyjnej: 16 DEC = 10 HEX,
  • numer funkcji: 58 DEC = 3A HEX.

Następnie łączymy ze sobą dwa kody: 103A HEX.

Ostatecznie zamieniamy uzyskaną liczbę z powrotem do postaci decymalnej i dodajemy wartość offsetu (+1), czyli w naszym przypadku:

103A HEX = 4154 DEC,

4154 DEC + 1 OFFSET = 4155 DEC.

Dodajmy zmienną, w której przechowywana będzie wartość odczytanego parametru. Po kliknięciu Program Variables na górnym pasku ukaże się nam lista zmiennych użytych w programie. Rozwijamy sekcję Global Variables i klikając prawym przyciskiem myszy wybieramy Add Variable. Nadajemy zmiennej nazwę (np. „Adres_IP_1_SL” – dopisek SL informuje, które zmienne mają zmapowane rejestry) i wybieramy długość 16 bitów, czyli typ WORD.

Wracamy do Hardware config -> LAN1 Config -> Scan List -> Add. Z rozwijanej listy wybieramy nasz falownik. W celu odwołania się do funkcji P16.59 musimy wysłać zapytanie do rejestru 4156. Jako że wybraliśmy adresowanie Modicon, na początek musimy jeszcze dodać 4, ponieważ parametry falownika przechowywane są w rejestrach (holding registers). W zakładce mapping wybieramy utworzoną wcześniej zmienną Adres_IP_1_SL. Następnie wybieramy rodzaj dostępu do zmiennej, a ponieważ chcemy tylko podejrzeć adres, a nie go modyfikować, wybieramy Polled Read.

Analogicznie dodać można resztę oktetów adresu IP. Możemy teraz wgrać naszą konfigurację do sterownika za pomocą przycisku Download na górnym pasku. Wprowadzamy sterownik w tryb Run i wchodzimy w tryb Debug (ikonka „robaczka” na górnym pasku). Jeżeli wszystko zakończyło się sukcesem, na liście zmiennych w kolumnie Value pojawią się aktualne wartości pobrane z falownika.

W podobny sposób można odnosić się do innych parametrów falownika. Spróbujmy teraz skonfigurować nasz program tak, aby można było sterować ruchem i częstotliwością pracy silnika z panelu operatorskiego.

Komunikując się z falownikiem w protokole Modbus, poza zmianą i odczytem parametrów możliwe jest także kontrolowanie pracy falownika. Służą do tego specjalne funkcje, dokładniej opisane w dokumentacji. Zajmijmy się funkcją kontrolującą pracę falownika:

Widzimy, że aby sterować ruchem, musimy pod adres 2000H wpisać odpowiedni numer instrukcji. Dodajmy zatem zmienne, które pozwolą nam na sterowanie ruchem silnika. W zakładce Program Variables zdefiniujmy zmienne:

Nazwa zmiennejTyp
FWDBOOL
REVBOOL
StopBOOL
StartBOOL
Sterowanie_SLWORD
Zadaj_czestotliwosc_SLWORD
Zadaj_czestotliwosc_convUINT
Zadaj_czestotliwosc_INUINT

Powiążmy teraz zmienną Sterowanie_SL z odpowiednim adresem w falowniku. Ponownie przechodzimy do Hardware Config -> LAN1 Config -> Scan list i dodajemy nową zmienną. W przypadku funkcji dedykowanych do komunikacji Modbus adresy podane są od razu w kodzie heksadecymalnym, więc wystarczy zamienić adres na liczbę dziesiętną, nie zapominając o dodaniu offsetu (czyli w naszym przypadku: 2000 HEX -> 8192 DEC + 1 OFFSET -> 8193 DEC).

Podobnie postępujemy ze zmienną Zadaj_czestotliwosc_SL. Tym razem będziemy chcieli modyfikować wartość w rejestrze, więc zamiast Polled Read wybieramy opcję Polled Read/Write.

Stwórzmy teraz logikę w języku LD, która będzie realizowała sterowanie.

Do wyboru są dwa tryby: do przodu (FWD) i do tyłu (REV). Jeżeli jednocześnie w stanie wysokim znajdują się zmienne FWD i Start, bloczek MOV przenosi wartość 1 do słowa, do którego zmapowany jest rejestr falownika (analogicznie, wartość 2 dla kierunku w tył). Jeżeli wciśnięty zostanie przycisk Stop, do falownika wysyłana jest komenda stopu (5), a zmienne Start, FWD i REV są resetowane.  

Przejdźmy do zadawania częstotliwości. Z panelu HMI będziemy zadawać częstotliwość w hercach, jednak z dokumentacji wyczytać można, że podstawową jednostką jest 0.01 Hz. Przed wysłaniem wartości do falownika musimy ją przekonwertować, mnożąc ją razy 100.

Stwórzmy teraz ekran HMI, z którego będziemy mogli kontrolować falownik. W drzewie projektu wchodzimy w User interface -> Main screen -> (prawy klawisz myszy) New screen. Z kategorii Touch Objects wybieramy Buton/Switch i konfigurujemy przyciski, dołączając do nich zmienne sterujące.

Częstotliwość zadawać będziemy w polu Numeric Data z zakładki Live Text Data. Ważne, żeby w zakładce Edit/Write zaznaczyć opcję Enabled. Pozwoli to nam na edytowanie wyświetlanej wartości z poziomu HMI. Możemy również zdefiniować zakres wartości, jakie mogą być wprowadzone, a w zakładce Legend możemy zdefiniować wyświetlany tekst.

Przygotowany ekran HMI wygląda tak, jak poniżej. Zawiera on również wyświetlanie adresu IP falownika za pomocą pola Numeric. W tym przypadku funkcja Edit/Write została odznaczona, przez co pole to działa jedynie jako wyświetlacz wartości. Logo Astraada zostało dodane jako obiekt Picture/Graphic, który pozwala na przesłanie naszej własnej grafiki z komputera.

Proste animacje

Sterowniki Horner z serii Canvas pozwalają na dynamiczne ustawianie parametrów obiektów, takich jak widoczność, położenie, kąt obrotu itp. Modyfikując te wartości możemy stworzyć prostą animację. Jako że dodaliśmy możliwość sterowania kierunkiem obrotu, dodajmy teraz animację, która to zwizualizuje.

Funkcja Enchances Atrtibutes pozwala na modyfikowanie parametrów obiektów przez przypisanie do nich zmiennej typu INT, która może być modyfikowana w programie. Stworzymy animację obracających się strzałek, raz w prawo, a raz w lewo. Widoczność modyfikować będziemy przypisując odpowiednią liczbę z zakresu 0-100, a kąt obrotu z zakresu 0-360. Dodajmy zmienne:

Nazwa zmiennejTyp
Widocznosc_FWDINT
Widocznosc_REVINT
Kat_obrotu_FWDINT
Kat_obrotu_REVINT
ImpulsBOOL

Tworzymy nowy blok logiczny w języku LD i nadajemy mu nazwę. Przeanalizujmy logikę na podstawie animacji obrotu do przodu. Gdy Start jest wyłączony albo nie została wybrana opcja FWD, grafika będzie niewidoczna (przepisujemy 0 do zmiennej). Gdy falownik będzie w trybie Run FWD, zmieniamy widoczność grafiki na 100. Kąt obrotu będziemy inkrementować przy użyciu licznika Cnt_UP, który będzie zliczał wartości do 359. Do generowania impulsów wykorzystamy gotową zmienną T_10MS, która zmienia swój stan logiczny co 10 ms.

Logikę dla obrotu w drugą stronę zrealizujemy podobnie, jednak tym razem wykorzystamy zmienną Kat_obrotu_FWD i będziemy odejmować ją od wartości 360. Dzięki temu będziemy uzyskiwać coraz mniejszy kąt.

Wróćmy teraz do edytowania ekranu HMI. Oprogramowanie Cscape 10 ma wbudowaną bibliotekę grafik, które możemy wykorzystywać do projektowania ekranów. Korzystając z ikonek dostępnych w zakładce Clipart dodajmy grafikę pompy i dwie okrągłe strzałki, z których jedną obrócimy dzięki opcji Vertical Flipw Image Properties.

Następnie przechodzimy do Image Properties -> Attributes -> Enhanced. Przypisujemy utworzone wcześniej zmienne, odpowiadające za widoczność i obrót, a następnie zatwierdzamy przyciskiem OK.

Analogicznie postępujemy z drugą grafiką. Możemy teraz nałożyć na siebie obydwie grafiki, ponieważ i tak tylko jedna z nich będzie widoczna w danym czasie. Najłatwiej to zrobić zaznaczając obydwie grafiki (kliknięcie z przytrzymanym przyciskiem Ctrl) i wybierając Align Objects -> Align Middle/Center. Po wgraniu programu na sterownik animacja powinna działać w następujący sposób:

Tworzenie trendów

Rozbudujemy teraz wizualizację HMI o wyświetlanie parametrów pracy falownika oraz przedstawimy jeden z nich na trendzie. Za parametry pracy urządzenia odpowiada grupa funkcji P17. Odczytamy ustawioną zadaną częstotliwość (P17.00), częstotliwość wyjściową (P17.01) i napięcie na szynie DC (P17.01).

Podobnie, jak w przypadku poprzednich danych, tworzymy odpowiednie zmienne (potrzebne do konwersji oraz WORD na zmapowanie rejestru) i w Scan List mapujemy rejestr, obliczając jego adres jak poprzednio.

W dokumentacji należy sprawdzić również, jaka jest podstawowa jednostka wartości, które chcemy odczytać. W przypadku częstotliwości jest to 0.01 Hz, a napięcia 0.1 V. Będziemy więc musieli przekonwertować te wartości (podobnie jak robiliśmy to w przypadku zadawania częstotliwości).

Do panelu operatorskiego za pomocą obiektu Numeric dodajmy wyświetlanie przekonwertowanych wartości. Trend skonfigurujemy na nowym ekranie. W drzewie projektu wybieramy User interface -> Main screen -> (prawy klawisz myszy) New screen i nadajemy mu nazwę.

Na naszym głównym ekranie dodajemy obiekt Screen Jump i w Jump to Screen number wybieramy nowy ekran. Wygląd przycisku możemy zmienić, modyfikując właściwości w sekcji Display Properties.

W nowym ekranie dodajemy obiekt Trend Graph. Wybieramy typ trendu Standard Trend – będzie on ciągle rejestrował dane i zaznaczał wyłączenie sterownika z trybu RUN (więcej o typach i konfigurowaniu trendów przeczytasz w naszym kursie programowania sterowników Horner).

Aby trend był aktywny cały czas, w zakładce Trigger możemy przypisać zmienną ALW_ON. W zakładce Pens jako Data source wybierz zmienną przechowującą wartość napięcia na szynie (Napiecie_na_szynie_conv) oraz Data Type jako Real/Floating point. Możemy również skonfigurować kolor, typ i grubość linii.

Osie wykresu konfigurujemy w polu Axis. Możemy zmienić ich zakres, liczbę podziałek, opis, oraz format, w jakim będzie wyświetlany czas. W tym wypadku wybierzmy hh:mm:ss.

Po skonfigurowaniu trendu dodaj obiekt Jump screen, który pozwoli na powrót do ekranu startowego. Na swoim panelu dodałam również pole wyświetlające aktualne napięcie. Gotowy panel prezentuje się w ten sposób:

Obsługa błędów i wyświetlanie za pomocą Text Table

Sterownik Astraada DRV-260 pozwala na sprawdzenie obecnego i pięciu ostatnich błędów oraz parametrów pracy w momencie ich wystąpienia. Funkcje te znajdują się w grupie P07. Wykorzystajmy je teraz do stworzenia ekranu, który pozwoli na wyświetlanie historii błędów.

Informacje o błędach można sprawdzić, zaczynając od funkcji P07.27. W dokumentacji znajdują się także dokładne opisy błędów.

Dodajmy opis na przykładzie pierwszego błędu. Kod błędu znajduje się pod adresem funkcji P07.28. Załóżmy, że będziemy chcieli odczytywać częstotliwość pracy, napięcie i prąd wyjściowy oraz napięcie na szynie w chwili wystąpienia błędu.

Ponownie musimy stworzyć zmienne do przechowywania odpowiednich wartości i zmapować je w Scan List. Potrzebna będzie również seria zmiennych do zmiany typu (z dopiskiem _real) oraz przechowujących wynik konwersji, które będziemy wyświetlać na ekranie (z dopiskiem _display). Dodajmy również serię zmiennych boolowskich (np. Blad_1, Blad_2 itd.), które będą przypisane do przycisków odpowiadających za wybór numeru błędu.

ZmiennaOpisTyp
Blad_1Sygnał z przyciskuBOOL
Wybor_bleduKod wybranego błęduUINT
Blad_freq_displayPrzekonwertowane dane wyświetlane na paneluREAL
Blad_bus_volt_display
Blad_out_curr_display
Blad_out_volt_displayUINT
Blad_1_freq_SLDane zmapowane w Scan ListWORD
Blad_1_bus_volt_SL
Blad_1_out_curr_SL
Blad_1_out_volt_SL
Blad_1_freq_realKonwersja zmiennych do REALREAL
Blad_1_bus_volt_real
Blad_1_out_curr_real

Dodamy nowy blok logiczny. Tym razem łatwiej będzie go utworzyć w języku Structured Text. Jeżeli zostanie wciśnięty przycisk odpowiadający za dany błąd, wartości ze zmiennych zmapowanych w Scan list zostają przypisane do wartości wyświetlanych na panelu, lub konwertowane na inny typ i jednostkę i dopiero przypisywane do wyświetlanych wartości. Poniższy kod prezentuje logikę dla dwóch pierwszych błędów.

Tworzymy nowy ekran Historia bledow i dodajemy na ekran startowy przycisk pozwalający na przejście do niego. Dodajemy przyciski pozwalające na wybór numeru błędu. Kod błędu oraz parametry wyświetlamy za pomocą obiektu Numeric jak poprzednio. Opisy błędów będziemy wyświetlać za pomocą Text Table. W polu Variable wybieramy zmienną, która przechowuje kod błędu, który wyświetlamy. Pole Digits odpowiada za to, ile znaków możemy wyświetlić. Maksymalnie w Text Table można wyświetlić 20 znaków, jednak wystarczy to do dodania skróconego opisu błędu. Możemy również zmienić podpis w zakładce Legend.

Następnie przechodzimy do zakładki Text table >>>. Otworzy się nam okno konfiguracyjne, w którym ręcznie możemy dodawać wpisy do tabeli za pomocą przycisku Add. W naszym przypadku musimy wprowadzić około 70 opisów, więc dodawanie tego ręcznie zajęłoby bardzo dużo czasu. Lepszym rozwiązaniem będzie użycie funkcji Import, która pozwala na przesłanie danych z wybranego pliku csv. Dane w pliku muszą być zapisane w formacie: numer tabeli, wartość, tekst.

Gotowy ekran prezentuje się następująco:

Ochrona dostępu za pomocą profili użytkowników

W oprogramowaniu Cscape 10 mamy możliwość ustawienia dostępu do danego obiektu na panelu HMI. Zmodyfikujmy nasz ekran startowy tak, by możliwość przejścia do ekranu z historią błędów była dostępna tylko po zalogowaniu.

Z górnego paska narzędzi przechodzimy do zakładki User Interface -> User. Widzimy, że dodany jest jeden profil DefaultUser – jest to domyślny profil, który nie wymaga logowania, ale ma najniższy poziom dostępu. Dodajmy zatem nowego użytkownika: wybieramy Add New User i ustawiamy nazwę użytkownika, hasło i poziom dostępu. Nazwę i hasło możemy ustawić, przypisując zmienną lub wpisując bezpośrednio, pamiętając o zawarciu treści w apostrofach.

Na ekranie startowym klikamy na przycisk przejścia do ekranu Historia bledow. Przechodzimy do zakładki Access i zmieniamy poziom dostępu na 1.

Na ekran dodajemy również obiekt Password/User Access, dzięki któremu możliwe będzie zalogowanie się do konta użytkownika. W miejscu Variable przypisujemy zmienną typu DIN (Logowanie), a z rozwijanej listy Object Type wybieramy User Access.

Gotowy ekran startowy wygląda następująco:

Autorka artykułu:


Patrycja Wybranowska

Praktykantka ASTOR

Studentka Akademii Górniczo Hutniczej na kierunku Automatyka i robotyka.

Newsletter Poradnika Automatyka

Czytaj trendy i inspiracje, podstawy automatyki, automatykę w praktyce

Please wait...

Dziękujemy za zapis do newslettera!

Czy ten artykuł był dla Ciebie przydatny?

Średnia ocena artykułu: 5 / 5. Ilość ocen: 1

Ten artykuł nie był jeszcze oceniony.

Zadaj pytanie

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