2,10,30

ZAPISZ SIĘ DO NEWSLETTERA SERWISU AUTOMATYKAONLINE.PL I POBIERZ DARMOWY NUMER "AUTOMATYKI"!

okładka Automatyka

*Wyrażam zgodę na przetwarzanie moich danych osobowych przez Przemysłowy Instytut Automatyki i Pomiarów PIAP, z siedzibą w Warszawie przy ul. Al. Jerozolimskie 202, 02-486 Warszawa, w celach marketingowych, w tym marketingu bezpośredniego. Oświadczam, że zostałem poinformowany/a o prawie do wglądu, modyfikacji oraz usuwania moich danych osobowych.

*Wyrażam zgodę na przesyłanie mi informacji handlowej (w tym informacji handlowej partnerów portalu AutomatykaOnline.pl) za pomocą środków komunikacji elektronicznej w rozumieniu ustawy z dnia 18 lipca 2002 r. o świadczeniu usług drogą elektroniczną (Dz.U. 2002 nr 144, poz. 1204).

*Wyrażam zgodę na używanie przez Przemysłowy Instytut Automatyki i Pomiarów PIAP, z siedzibą w Warszawie przy ul. Al. Jerozolimskie 202, 02-486 Warszawa, telekomunikacyjnych urządzeń końcowych, których jestem użytkownikiem, dla celów marketingu bezpośredniego zgodnie z art. 172 ustawy z dnia 16 lipca 2004 r. Prawo telekomunikacyjne (Dz.U. 2004 nr 171 poz. 1800).

*Akceptuję regulamin portalu AutomatykaOnline.pl oraz politykę prywatności serwisu.




ZAMKNIJ OKNO

Dziękujemy!

Prawie gotowe ... Musimy potwierdzić Twój adres email. Aby zakończyć proces subskrypcji, należy kliknąć link w mailu, który właśnie wysłaliśmy do Ciebie.

Po akceptacji zapisu na newsletter zostanie przesłany do Ciebie numer promocyjny miesięcznika Automatyka.

ZAMKNIJ OKNO

Dziękujemy za próbę ponownego zapisu na nasz newsletter.

Twój mail już jest w naszej bazie!

W przypadku pytań, prosimy o kontakt:
redakcja@automatykaonline.pl

ZAMKNIJ OKNO

This website uses cookies

W celu zapewnienia najwyższej jakości usług strona używa plików cookies. Szczegóły w polityce prywatności serwisu.

POL ENG
a a a
Search
  • Login
  • Sign up
Site map Site map
AutomatykaOnline.pl
  • Home page
  • News
  • Interviews
  • Application
  • Articles
  • Events
  • Companies
  • Products
Search
Automatyka 6/2025

Automation6/2025

In this issue:
  • Interview with Paweł Hoerner de Roithberger and Paweł Reszel, National Instruments
  • Cybersecurity of industrial control systems
  • Signaling columns
  • Magazine
  • Subscription
  • Contact
  • Advertisement
Articles
  • Building Automation
  • Safety
  • Druk 3D
  • Electrics
  • Energy
  • Energia
  • Building Automation
  • Communication
  • Computers and HMI
  • Building Automation
  • Assembly and Conveyance
  • Software
  • Pneumatics
  • Measurements
  • Prawo i normy
  • Przemysł 4.0
  • Robotics
  • Control
  • Visions Systems
  • Drives
  • Technika łożyskowa
  • Technologia obróbki
  • Services
  • Building Automation
  • Others
Expand all
  • Home page
  • Articles
  • Drives

Komunikacja Modbus RTU – konfiguracja i przykładowa aplikacja w środowisku Codesys, część 1 Kurs obsługi i konfiguracji serwonapędów Astraada

Marcin Ryznar (ASTOR) print

Monday January 13 2025
Komunikacja Modbus RTU – konfiguracja i przykładowa aplikacja w środowisku Codesys, część 1 Kurs obsługi i konfiguracji serwonapędów Astraada
Tweet

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.

Z tego artykułu dowiesz się:

  • jak przygotować serwonapęd Astraada SRV do komunikacji w protokole Modbus RTU,
  • jak skonfigurować komunikację Modbus RTU w środowisku Codesys,
  • jak skonfigurować pracę w trybie sterowania pozycją oraz w trybie sterowania prędkością.

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?

Powszechnie znany Modbus jest protokołem opracowanym specjalnie do zastosowań przemysłowych oraz opiera się na zdefiniowanych rejestrach i odwoływaniu się do nich. Modbus występuje w wersji szeregowej RTU i sieciowej TCP. W tym odcinku będziemy wykorzystywać Modbus RTU, będący asynchronicznym protokołem master-slave, pozwalającym na dwukierunkową komunikację kilkuset urządzeń, połączonych w jednej sieci.

Modbus RTU Master to urządzenie inicjujące transmisję i wysyłające zapytania do urządzeń typu slave. W sieci Modbus RTU funkcję master może pełnić tylko jedno urządzenie, które komunikuje się
z urządzeniami slave w trybie dwuprzewodowego RS-485.

Modbus RTU Slave to urządzenia odpowiadające na zapytania wysyłane przez urządzenia master.
W sieci Modbus RTU może pracować kilkaset urządzeń slave.

Architektura protokołu Modbus RTU

Komunikacja urządzenia nadrzędnego (master) z urządzeniami podrzędnymi (slave’ami) przebiega dzięki dwuprzewodowemu standardowi transmisji danych RS-485. W tym celu przekazywanie informacji odbywa się przy pomocy linii DATA+, DATA- oraz GND. Master zarządza siecią tak, aby komunikacja przebiegała sprawnie.

image02

Schemat architektury protokołu Modbus RTU. Źródło: ASTOR

W przypadku, gdy wywoływane urządzenie nie odpowiada, jednostka nadrzędna zgłasza błąd komunikacji ze slave’m i przechodzi do odpytywania urządzenia o innym identyfikatorze, będącego następnym w kolejce.

Przygotowanie wzmacniacza do komunikacji w protokole Modbus RTU, ustawienie parametrów komunikacyjnych

Parametry komunikacyjne można ustawić przy pomocy przycisków i wyświetlacza, znajdujących się na serwowzmacniaczu. W celu przygotowania wzmacniacza do komunikacji po protokole Modbus RTU powinniśmy skupić się na poniższych aspektach.

Ustawianie parametrów komunikacyjnych łącza RS485 w serwowzmacniaczu

Parametr Wartość
P4.01 Adres w protokole Modbus RTU
P4.03 Prędkość transmisji: wartość 0 oznacza 9600 bpswartość 1 oznacza 19200 bpswartość 2 oznacza 38400 bpswartość 3 oznacza 57600 bps
P4.04 Pozostałe parametry transmisji: wartość 0 oznacza 8/N/1wartość 1 oznacza 8/E/1wartość 2 oznacza 8/O/1

Zezwolenie na sterowanie z poziomu Modbus RTU

Parametr Nazwa Adres Modbus RTU (Holding Register) Wartość, opis
P4.10 Źródła sterowania 1821 Wartość 1 oznacza wybranie Modbus RTU jako źródło sterowania
P0.40 Źródło zadawania prędkości 1081 Wartość 2 oznacza zadawanie w protokole Modbus RTU
P0.60 Źródło zadawania momentu siły 1121 Wartość 2 oznacza zadawanie w protokole Modbus RTU

Załączenie osi z poziomu Modbus RTU

Załączenie osi z użyciem protokołu Modbus RTU może być użyte w celach testowych. Ze względów bezpieczeństwa zaleca się docelowo załączanie serwonapędu sygnałem elektrycznym.

Parametr Nazwa Adres Modbus RTU (Holding Register) Wartość, opis
P4.11 Polecenie załączania osi 1823 0 = wyłącz 1 = załącz

Konfigurowanie komunikacji Modbus RTU w środowisku Codesys

Pierwszym krokiem od którego powinniśmy zacząć, jest stworzenie nowego projektu
w środowisku Codesys. Następnie dodaj do niego swój sterownik i wybierz język Ladder Logic Diagram (LD). Język drabinkowy nie jest wyborem obligatoryjnym, gdyż w późniejszym etapie pisania aplikacji możesz go zmienić. Co więcej, Twoja aplikacja może zostać napisana w kilku językach jednocześnie.

Pamiętaj o dodaniu pliku deskrypcyjnego do obsługi serwonapędów Astraada SRV w celu poprawnego skonfigurowania połączenia. Jeżeli jeszcze nie konfigurowałeś serwonapędów Astraada SRV w oprogramowaniu Codesys, wybierz polecenie Tool -> Device Repository i wskaż lokalizację pobranego pliku (np.Astraada_SRV_CoE_V106.xml). W razie napotkania problemów skorzystaj z kursu, który pomoże Ci podłączyć i przygotować Codesys do pracy ze sterownikiem PLC.

Następnie w celu uaktywnienia w sterowniku Astraada One obsługi protokołu Modbus RTU, kliknij prawym przyciskiem myszy w drzewku projektu na Device i zaznacz polecenie Add Device.

image04-1

W następnej kolejności w polu Vendor wybierz <All vendors> i rozwiń listę, która pozwoli Ci przejść do Modbus COM. Zatwierdź wybór poprzez dwukrotne kliknięcie lewym przyciskiem myszy lub dzięki przyciskowi Add Device.

image05-1-605x734

Podobnie jak w punkcie 2 kliknij opcję Add Device, jednak po wcześniejszym wybraniu Modbus_COM. Po chwili ujrzysz okno, w którym możesz wybrać urządzenie nadrzędne z zakładki Modbus Serial Master – wybierz Modbus Master, COM Port. Dodaj je do projektu.

image06-1

Analogicznie dodaj urządzenie Modbus Slave po wcześniejszym wybraniu Add Device na naszym nowo stworzonym Masterze.

image07-1

Kolejnym krokiem jest ustawienie pożądanych parametrów portu szeregowego. Przejdźmy więc do jego konfiguracji. Z drzewka projektu wybierz Modbus_COM (Modbus COM). W przykładzie urządzenie Slave ma następujące parametry: RS485, prędkość 19200, brak parzystości, 8 bitów danych i 1 bit stopu.

UWAGA! Jeśli zaobserwujesz błąd komunikacji w postaci pomarańczowego trójkąta przy Modbus_Slave_COM, pamiętaj, aby powrócić do tego punktu i skonfigurować parametry w zależności od Twojego urządzenia.

image08

Następnie przejdźmy do Modbus_Master_COM_Port (Modbus Master, COM Port). Będąc w zakładce General ustawiamy w Response timeout(ms) czas odpowiedzi na zapytanie, natomiast w Time between frames(ms) – czas pomiędzy kolejnymi zapytaniami. W tym miejscu musimy również zwrócić uwagę na Auto-restart communication – ta opcja odpowiada za automatyczne ponawianie próby połączenia w przypadku zerwania komunikacji. Zaznaczamy ją.

image09-1

Z kolei wybieramy Modbus_Slave_COM_Port (Modbus Slave,COM Port), a następnie zakładkę General i wybieramy odpowiedni adres urządzenia podrzędnego.

UWAGA! Jeśli zaobserwujesz błąd komunikacji w postaci pomarańczowego trójkąta przy Modbus_Slave_COM, pamiętaj, aby powrócić do tego punktu i skonfigurować adres
w zależności od Twojego urządzenia.

image10-1

W Modbus Slave Channel mamy możliwość wybrania zmiennych służących do zapisu lub odczytu. Najpierw jednak zapoznaj się z trybami, w jakich serwonapęd w komunikacji Modbus RTU może pracować.

image11-1-1536x844

Praca w trybie sterowania prędkością

W trybie ruchu z zadaną prędkością zmiany prędkości realizowane są zgodnie z zadanym przyspieszeniem. W celu uruchomienia serwonapędu do pracy w tym trybie wykonaj kroki na podstawie poniższych tabel. Pozwoli Ci ona również ustawić parametry w sposób ręczny.

Zezwolenie na sterowanie z poziomu Modbus RTU

Parametr Nazwa Adres Modbus RTU (Holding Register) Wartość, opis
P4.10 Źródło sterowania 1821 Wartość 1 oznacza wybranie Modbus RTU jako źródło sterowania
P0.40 Źródło zadawania prędkości 1081 Wartość 2 oznacza zadawanie w protokole Modbus RTU
P0.60 Źródło zadawania momentu siły 1121 Wartość 2 oznacza zadawanie w protokole Modbus RTU

Załączenie osi z poziomu Modbus RTU

Parametr Nazwa Adres Modbus RTU (Holding Register) Wartość, opis
P4.11 Polecenie załączenia osi 1823 0 = wyłącz 1 = załącz

Zadawanie parametrów w trybie sterowania prędkością

Parametr           Nazwa Adres Modbus RTU (Holding Register) Wartość, opis
P0.03 Ustawiony tryb sterowania 1007 0 = pozycją 1 = prędkością 2 = momentem siły   W przypadku zmiany parametr ten musi zostać zapisany do pamięci nieulotnej, a następnie powinno zostać ponownie załączone zasilanie serwonapędu.
P4.13 Zadana prędkość [rpm] 1827 Zależnie od znaku wpisanej wartości, ruch osi odbędzie się odpowiednim kierunku. Wpisanie zera spowoduje zatrzymanie osi.

Opcjonalnie można też nałożyć ograniczenie dla momentu siły. Należy pamiętać, że przy zbyt małym momencie siły, pewne prędkości nie będą mogły zostać osiągnięte lub oś w ogóle może nie ruszyć.

Parametr                 Nazwa Adres Modbus RTU (Holding Register) Wartość, opis
P0.09 Zezwolenie na ograniczanie momentu siły 1019 Po wpisaniu wartości 1 do P0.09 serwonapęd będzie reagował na ograniczanie momentu siły parametrem P0.10.
P0.10 Zadany limit momentu siły [%] 1021 Wprowadzona wartość momentu siły nie będzie przekraczana podczas pracy serwonapędu.

Opcjonalnie można również określić sposób rozpędzania i hamowania osi (czasy wpływające na wartość przyspieszenia).

Parametr                 Nazwa Adres Modbus RTU (Holding Register) Wartość, opis
P0.54 Czas rozpędzania [ms] 1109 Czas na rozpędzenie osi od zera do prędkości znamionowej.
P0.55 Czas hamowania [ms] 1111 Czas na zahamowanie osi z prędkości znamionowej do zera.

Następnie dodajmy powyższe zmienne, które odczytamy w celu sprawdzenia poprawności komunikacji. Dla podstawowej aplikacji służącej do sterowania prędkością będzie to Polecenie załączenia osi oraz Zadana prędkość [rpm]. Wybierz, więc przycisk Add Channel, aby je zadeklarować.
W celu lepszego rozróżniania na końcu nazwy przykładowo dodam wyrażenie „_o”. Do odczytu rejestrów wykorzystamy funkcję 3 protokołu Modbus. Długość odczytywanych rejestrów ustawiamy na 2 i w polu Offset (READ Register) ustawiamy rejestr niższy o jeden (np. 1822, po zapisaniu wartość zmieni się na heksadecymalną). W wyniku tego, będzie możliwa widoczna komunikacja z naszym serwonapędem. W polu Trigger pozostawiamy wielkość Cyclic. Dzięki niej zapytania będą wysyłane cyklicznie co 100 ms. W razie wystąpienia problemu z połączeniem naszego urządzenia podrzędnego (symbolizowanego pomarańczowym trójkątem), przyczyną może być źle zadeklarowana właśnie ta zmienna. W Error handling wybieramy Set to ZERO, aby w przypadku błędu wpisać wartość zerową do danego parametru.

image12-1

Potrzebujemy również zmiennych, do których chcemy zapisywać. Wybierzmy Access type jako Write Multiple Registers (Function Code 16). Posłuży to do zapisu wielu rejestrów jednocześnie. Nazwę możemy przykładowo również zakończyć przyrostkiem „_z” w celu odróżnienia zmiennych do zapisu. Następnie w polu Trigger ustaw wartość Cyclic, aby wartości zmiennych były wysyłane na żądanie, gdy zmienna bitowa zmieni się z wartości zero na jeden. Zmienna będzie dostępna w zakładce ModbusGenericSerialSlave I/O Mapping. Długość wpisywanych rejestrów ustawiamy tak samo jak w odczycie na wartość równą 2.

image13-1

Pamiętajmy jednak, aby uwzględnić zmienną przeznaczoną do ustawiania trybu sterowania, dzięki której będziemy mieli w naszej aplikacji możliwość przełączania się między danymi trybami pracy.

image14-1
image15-1

Przechodząc do wcześniej wspomnianej zakładki ModbusGenericSerialSlave I/O Mapping możemy mieć rzeczywisty podgląd na nowo wpisane zmienne po połączeniu ze sterownikiem. W tym celu wybierz opcję Enabled 2(always in bus cycle task).

image16-1

Po konfiguracji musimy poprawnie połączyć sterownik z urządzeniem slave, używając odpowiedniego kabla. W naszym przypadku dla RS485 istotne jest skrzyżowanie linii RX (odbieranie) z TX (wysyłanie) na podstawie poniższego układu pinów portów szeregowych.

image17-1

Dodatkowo pozostało dodać również nasz zestaw XBIO_Berghof_IO (XBIO Berghof IO) w którym zaimplementujemy przyciski oraz diody. Przyda nam się on w tworzeniu podstawowej aplikacji.

image18-1

Do Extension_Slots dodaj urządzenie XBIO Berghof IO.

image19-1

Świetnie, tak naprawdę pozostało nam połączenie sterownika oraz sprawdzenie poprawności działania modułu Modbus. Poprawna komunikacja powinna wyglądać w poniższy sposób:

image20-1

W przypadku wystąpienia błędów powinniśmy powrócić do wcześniejszych etapów konfiguracji i sprawdzić ustawienia komunikacji.

Przejdźmy teraz do przypisania wartości dla naszych zmiennych zakończonych „_z”, odpowiadających za zapis. Pozwoli nam to sprawdzić poprawność konfiguracji komunikacji oraz zaobserwowania „ręcznej” pracy w trybie sterowania prędkością. Wprowadź wartości w Prepared Value, a następnie przyciśnij CTRL + F7,aby wpisać je do serwonapędu. Zostaną one przepisane do Current Value. Teraz powinieneś zaobserwować pracę silnika.

image21-1

Praca w trybie sterowania momentem siły

W celu rozpoczęcia pracy w tym trybie pamiętaj o wcześniejszej deklaracji tak samo jak w trybie sterowania prędkością Polecenia załączenia osi. Pierwszy poniższy parametr, a mowa o Zadanym momencie siły w Astraada SRV-64 ma domyślnie ustawioną wartość na 300[%],natomiast w tym trybie to od nas będzie zależeć jaką wielkość powinna przyjąć ta zmienna.

Parametr                 Nazwa Adres Modbus RTU (Holding Register) Wartość, opis
P4.14 Zadany moment siły [%] 1829 Zależnie od znaku wpisanej wartości, ruch osi odbędzie się odpowiednim kierunku. Wpisanie zera lub małej wartości spowoduje zatrzymanie osi.
Parametr                 Nazwa Adres Modbus RTU (Holding Register) Wartość, opis
P0.67 Zezwolenie na zadawanie limitu prędkości 1135 Po wpisaniu wartości 1 do P0.67, serwonapęd będzie reagował na zadawanie limitu prędkości parametrem P0.46.
P0.46 Zadany limit prędkości [rpm] 1093 Wprowadzona wartość prędkości nie będzie przekraczana podczas pracy serwonapędu. O ile zadany moment będzie wystarczający, serwonapęd osiągnie zadaną prędkość.

Przy zadawaniu ruchu osi poprzez moment siły, należy określić limit prędkości takiego ruchu.

Poczytaj więcej o serwonapędach Astraada.

Praca w trybie sterowania pozycją

Najwłaściwszą metodą sterowania pozycją poprzez zadawanie jej w protokole Modbus RTU, jest skorzystanie z tzw. ruchów PTP (point-to-point), ponieważ metoda ta umożliwia określanie nie tylko pozycji, ale też i innych parametrów związanych z osiągnięciem tej pozycji, tj. prędkości, przyspieszania, hamowania oraz ewentualnego czasu na zatrzymanie się po wykonaniu ruchu, a także ustalania, czy ruch ma być absolutny, czy też inkrementalny.

Wykonanie ruchu polega na wpisaniu numeru ruchu do zrealizowania do odpowiedniego rejestru. Sterowanie za pomocą ruchów PTP jest dość skomplikowane, więc nie będziemy skupiać się na tym w tym odcinku. Poniżej przedstawiam najistotniejsze parametry.

Zezwolenie na sterowanie z poziomu Modbus RTU

Parametr Nazwa Adres Modbus RTU (Holding Register) Wartość, opis
P4.10 Źródło sterowania 1821 Wartość 1 oznacza wybranie Modbus RTU jako źródło sterowania
P0.40 Źródło zadawania prędkości 1081 Wartość 2 oznacza zadawanie w protokole Modbus RTU
P0.60 Źródło zadawania momentu siły 1121 Wartość 2 oznacza zadawanie w protokole Modbus RTU

Załączenie osi z poziomu Modbus RTU

Parametr Nazwa Adres Modbus RTU (Holding Register) Wartość, opis
P4.11 Polecenie załączenia osi 1823 0 = wyłącz 1 = załącz

Zadawanie parametrów w trybie sterowania prędkością

Parametr           Nazwa Adres Modbus RTU (Holding Register) Wartość, opis
P5.20 Wartość w tym parametrze oznacza komendę do zrealizowania 2041 Wartość „-1” oznacza brak polecenia.   Wartość od 0 do 15 oznacza numer ruchu do wykonania. Wpisanie wartości z tego przedziału jest równoznaczne z wyborem numeru ruchu i wydaniem polecenia TRIG (wykonaj). Aby ruch został zrealizowany, konieczne jest wcześniejsze załączenie serwonapędu (np. klasycznym sygnałem SON lub komendą wydaną w protokole Modbus RTU).   Wartość „2048” to polecenie zatrzymania (STOP) dla aktualnie wykonywanego ruchu

Teraz możemy przejść do drugiej części odcinka, w której zbudujemy przykładową aplikację wykorzystującą przedstawione wyżej informacje.

Przejdź do części drugiej.

Sprawdź ofertę serwonapędów w sklepie internetowym firmy ASTOR.

www.astor.com.pl/poradnikautomatyka

source: ASTOR

Keywords

ASTOR, astraada, automatyka, CODESYS, komunikacja, Modbus RTU, serwonapęd

Related articles

  • Zintegrowana regulacja temperatury
  • Pasy napędowe, pasy klinowe: popularni producenci i dystrybutorzy
  • Technika napędowa
  • Jak dobrać serwomechanizm do aplikacji?
  • Komunikacja Modbus RTU – konfiguracja i przykładowa aplikacja w środowisku Codesys, część 2 Kurs obsługi i konfiguracji serwonapędów Astraada

Newsletter

Stay up to date with current information.

Comau videos YouTube

Show more videos
Inżynier wie

Events

Show more events
1 Jan Training

Zwiedzanie centrum efektywnej prefabrykacji szaf sterowniczych

1 January 2025 – 31 December 2025
24 Jul Workshops

Podstawy prefabrykacji szaf sterowniczych

Wrocław 24 July 2025
16 Sep Conference

Energetab 2025

Bielsko-Biała 16–19 September 2025
16 Sep Trade fair

Heating Tech 2025

16–18 September 2025
  • facebook
  • Tweeter
  • google+
  • RSS AutomatykaOnline
  • About Us
  • Sales and customer service
  • Privacy Policy
  • Presentation
  • Terms of Use
  • Accessibility Statement
  • Contact Us
  • Contact form
  • Media cooperation
  • Portal Editorial
  • Automatyka Editorial
  • Advertising
  • Advertising contact
  • Advertising in "Automatyka"
  • Newsletter
AutomatykaOnline.pl

© 2014 by Przemysłowy Instytut Automatyki i Pomiarów PIAP. All rights reserved.
created by: TOMP