1. Indeks
  2. Poradniki instalatora
  3. Konfiguracja uniwersalnego integratora MODBUS RTU U025.7

Konfiguracja uniwersalnego integratora MODBUS RTU U025.7

Dostępne od wersji konfiguratora Ampio Smart Home 5.0.0.2359

Wstęp

Przedstawiamy kolejne rozwiązanie programowe dla urządzeń integracyjnych. Jest to oprogramowanie integracji z większością urządzeń wspierających protokół MODBUS RS485.
Posiada ono możliwość komunikacji dwukierunkowej z urządzeniami podpiętymi do magistrali RS485.

Wgranie odpowiedniego oprogramowania

Aby urządzenie MCON485 posiadało opisywaną funkcjonalność należy w nie wgrać oprogramowanie z końcówką o wartości „7”, jak na przykład plik o nazwie: „ampio_T25_P3_S707.amp”. Ze względu na różnego rodzaju funkcje, które pełnią urządzenia z rodziny MCON, aktualizacje ich oprogramowania nie są sygnalizowane jak w przypadku pozostałych. Trzeba je wgrać ręcznie przez menu „Plik>Aktualizuj urządzenie”, wybierając odpowiedni plik.


Informacje ogólne

Do konfiguracji jego parametrów niezbędna jest dokumentacja protokołu MODBUS urządzenia, czyli lista rejestrów ze specyfikacją wartości i sposobem ich pobierania.

Parametry dostępne są w oknie parametrów urządzenia U025.7 MODBUS, wywoływanym przez naciśnięcie w oknie konfiguracji urządzenia przycisku „Parametry”, pokazanym poniżej.

Podstawowe parametry urządzenia

Zakładka „Podstawowe

W tym miejscu decydujemy czy flagi urządzenia będą widziane przez pozostałe urządzenia w sieci Ampio Smart Home.

Parametr „Minimalne odstępy czasowe …” określa minimalny czas pomiędzy kolejnymi ramkami rozgłoszeniowymi sieci Ampio z informacjami, uzyskanymi z magistrali RS485. Wartość jest wpisywana w sekundach, z dokładnością do 0.01s. Musi ona mieścić się w przedziale od 0.01s do 655.35s (maksymalny czas to 10min 55.35s). Domyślnie jest ona ustawiona na 1s. Drugi parametr określa jaki jest odstęp czasowy między kolejnymi zapytaniami (tworzenie zapytań zostanie opisane w dalszej części instrukcji).

Konfiguracja parametrów transmisji

Zakładka „Parametry transmisji”.

Wszystkie urządzenia MODBUS muszą mieć ustawione identyczne parametry transmisji portu RS485. Za pomocą konfiguratora Ampio Smart Home CAN takie same parametry ustawiamy w naszym urządzeniu.

Ustawiamy tu szybkość transmisji szeregowej, dostępne są tu wszystkie standardowe wartości od 300 – 230400 bitów na sekundę.

Oto cała dostępna lista: 300bps, 600bps, 1200bps, 2400bps, 4800bps, 9600bps, 14400bps, 19200bps, 28800bps, 38400bps, 57600bps, 76800bps, 115200bps, 230400bps.

Najczęściej spotykana prędkość domyślna, wykorzystywana przez urządzenia to 9600bps. Oczywiście większość z urządzeń posiada możliwość zmiany każdego z parametrów transmisji i należy dopasować ją do długości przewodu magistrali i warunków, w których pracuje. W tym miejscu należy dopasować wszystkie parametry do urządzeń podłączonych do magistrali RS485.

Flagi

Flagi binarne oraz liniowe działają tak samo jak innych modułach Ampio Smart Home.

Monitor transmisji MODBUS

Przydatnym narzędziem podczas konfiguracji, jest tester funkcji MODBUS. Daje on możliwość wysyłania danych do urządzenia i podgląd jego odpowiedzi. Dzięki niemu można zweryfikować dane dostępne w specyfikacji producenta, przeanalizować odpowiedzi z urządzenia, by później użyć ich przy definicji zapytań i rozkazów.

Monitor dostępny jest w zakładce „Diagnostyka ModBUS” widocznej poniżej.

Widać tu pola ramki wysyłane do urządzenia, przycisk „Wyślij”, tabelę odpowiedzi, oraz przycisk „Wyczyść”, który opróżnia zawartość listy.

Objaśnienia pól:

Wszystkie wartości wpisywane są w postaci dziesiętnej.

  • Urządzenie (Adres urządzenia) – W sieci MODBUS może współistnieć wiele urządzeń, i z każdym z nich możemy się komunikować. W tym polu wpisujemy adres urządzenia, z którym chcemy wymieniać informację.
  • Funkcja (Numer instrukcji) – Zgodnie ze specyfikacją istnieje kilkanaście instrukcji MODBUS. Ich listę można znaleźć pod koniec tego dokumentu. Instrukcje dają nam możliwość odczytania lub zapisania wartości rejestru konkretnego typu. W zależności od wybranej instrukcji konstrukcje ramek wysyłanych w magistralę ModBus różnią się od siebie.
  • Rejestr (Adres rejestru) – Urządzenia MODBUS posiadają listę rejestrów które umożliwiają wymianę informacji ze światem zewnętrznym. Ich pełna lista, odpowiednia dla danego urządzenia, wraz z ich przeznaczeniem, opisana jest w dokumentacji protokołu MODBUS urządzenia.
  • Wartość – Pole to służy w zależności od funkcji, jako wartość, lub ich lista do zapisu w rejestrach w przypadku funkcji zapisu. W przypadku funkcji odczytu wpisujemy tu długość danych, które otrzymamy w odpowiedzi. Długości podawane są w paczkach 2 bajtowych, co zdefiniowane jest w standardzie MODBUS. Czyli jeśli odbieramy dane w ilości 2, w odpowiedzi otrzymamy 4 bajty danych. Dzieje się tak, gdyż elementarną wartością wg standardu MODBUS jest wartość 16bitowa.

W przypadku stosowania funkcji zapisu wielu wartości, jak na przykład funkcja 15 czy 16, kolejne wartości wpisujemy rozdzielając je przecinkami, jak pokazano na powyższym rysunku.

Po wypełnieniu wszystkich pól zgodnie z zamierzeniem wciskamy przycisk wyślij.

Na poniższej liście pojawi nam się nowy wiersz z czterema kolumnami. Pierwsza z nich to liczba porządkowa. W drugiej kolumnie pojawi się czas, który upłynął od włączenia komputera do zaistnienia zdarzenia, a w trzeciej kolumnie wyświetlony będzie kierunek komunikacji. W ostatniej zaś pojawi się informacja zwrotna, lub też komunikat o błędzie.

Na poniższym zrzucie widać wynik odpowiedzi na wysłanie funkcji, na którą nie było odpowiedzi.

Komunikat błędu zasugeruje nam, gdzie błąd został popełniony.

Odpowiedzi z urządzenia na poprawne zapytanie o rejestr numer 2 widać poniżej. Urządzenie MCON z adresem 9C14 odpowiedziało wartością rejestru równą 1.

Dane widać w postaci dziesiątkowej i szesnastkowej.

Funkcja testowania jest niezwykle przydatna zarówno przy sprawdzeniu definiowanych zapytań, jak i rozkazów. Poza podstawowym przeznaczeniem daje również możliwość ustawienie parametrów urządzenia podczas pierwszego uruchomienia. Przydatna jest też przy odczycie wartości, np. statusów błędów podczas diagnostyki. Gdy wartości nie będą istotne przy normalnym użytkowaniu i nie ma potrzeby wyciągania ich dla systemu Ampio na stałe.

Zapytania o wartości urządzeń MODBUS

W zakładce „Pobierania wartości” definiujemy listę zapytań kierowanych do urządzeń i interpretację ich odpowiedzi na nie.

W tym miejscu potrzebna będzie dokumentacja protokołu MODBUS odpytywanego urządzenia.

Przedstawimy tu przykład uzyskiwania informacji z licznika zużycia energii elektrycznej F&F LE-03MW CT.

Poniżej widać wygląd zakładki definicji zapytań z pustą listą definicji podczas tworzenia pierwszego zapytania.

W najnowszym konfiguratorze mamy również możliwość wykrycia kolizji zapytań. Jeżeli Typ celu i numer celu jest już używany, podpisy zaświecą się na czerwono.

Dodajemy więc nowe zapytanie, przez wciśnięcie przycisku „Dodaj zapytanie”. Po prawej stronie, pod przyciskami pojawią się pola edycji zapytania, widoczne na poniższym zrzucie.

Opis zapytania ułatwi późniejszą identyfikację konstrukcji i wyświetlany jest w drzewie zapytań.

W polu „Adres urządzenia” wpisujemy numer adresu urządzenia z magistrali MODBUS, zgodnie z jego konfiguracją. Tu przyjmiemy, że będzie ono miało adres 1.

Dla tego licznika odczytujemy rejestry przy użyciu funkcji nr 3, przez wybranie tej wartości z listy „Funkcja”. Zakładamy, że podłączona jest tylko jedna jednostka o ID=1 i chcemy z niej odczytać czas wyświetlania widoku. Zgodnie z dokumentacją wpisujemy 13 w polu „Rejestr”. Po wypełnieniu wszystkich pól zatwierdzamy definicję przez przyciśnięcie przycisku „Zatwierdź”.

Poniżej zrzut opisu rejestrów z dokumentacji F&F.

Po tej operacji na liście definicji pojawi się pozycja zapytania, jak na poniższym obrazie.

 W nawiasie kwadratowym widać, ile w danej gałęzi jest funkcji obróbki (obecnie ich nie ma, poniżej dalsze informacje jak je tworzyć i do czego służą). Jeśli zapytanie zostanie opisane widoczna jest treść opisu i adres pytanego urządzenia, widać to w pozycjach od pierwszej do trzeciej. Jeśli natomiast nie wypełnimy treści opisu pojawi się pełna konstrukcja zapytania, czyli adres urządzenia, nr funkcji modbus, adres rejestru oraz długość danych, widać to w ostatniej pozycji na liście.

Jednak aby wartość pobrana przez zapytania była dostępna po stronie systemu Ampio Smart Home, należy jeszcze dokonać analizy odebranych danych. Do tego celu służą funkcje obróbki danych z odpowiedzi na dane zapytanie.

Jak widać opis dodanego wiersza obrazuje wartości, które przed momentem wpisaliśmy.

Do każdego z zapytań można zdefiniować do 10 takich funkcji. W tym przykładzie zwracane odpowiedzi mają pojedyncze wartości, więc do każdego zapytania wystarczy po jednej funkcji analizy.

Po dokonaniu wskazania zapytania wciskamy przycisk „Funkcja”. Pojawią się pola definicji funkcji analizy danych.

Pole „Typ danych ModBUS” to rodzaj danych jakie analizujemy w odpowiedzi na zapytanie. Dostępne typy danych:

  • Int16 – wartość całkowita o długości 16 bitów, czyli 2 bajtów (jednostka długości jednej paczki danych w standardzie MODBUS);
  • Int32 – wartość całkowita 32 bitowa, zajmująca 2 informacje wg standardu MODBUS;
  • Bool – wartość logiczna przyjmująca wartość prawda lub fałsz.
  • Float16 – wartość zmiennoprzecinkowa 16 bitowa
  • Float32 – wartość zmiennoprzecinkowa 32 bitowa
  • Reg8/24 – typ dedykowany pod jeden z liczników F&F liczony w nietypowy sposób

Kolejne pole „bajt odpowiedzi” określa numer paczki odpowiedzi.

Kolejne pola służą do definicji przelicznika wartości wg prostej zależności linowej:

  • X – Wartość z MODBUS – to wartość uzyskana z odpowiedzi na zapytanie;
  • Mnożnik – to licznik ułamka zwykłego współczynnika kierunkowego równania przelicznika, może przyjmować wartości od 1 do 65535;
  • Dzielnik – to mianownik ułamka zwykłego współczynnika kierunkowego równania przelicznika, może przyjmować wartości od 1 do 65535;
  • Przesunięcie – wartość przesunięcia równania przelicznika i może przyjmować wartości od 32768 do 32767

Teraz zdecydujemy w jaki sposób dane dostaną się do sieci Ampio Smart Home. W polu „Typ celu danych” wybieramy typ informacji danych wg standardu rozgłoszeniowego Ampio. Do wyboru mamy:

  • Temp16b – wartości 16 bitowe (2 bajtowe) prezentowane z dokładnością do 0.1 z zakresu: 99.9 do 100.0, np. wartości temperatur;
  • Int32Val –  wartości 32 bitowe (4 bajtowe), np.: chwilowy pobór mocy, prądu czy napięcia, lub zużycie energii w kWh;
  • AmpioInt16Val – 16 bitowa (2 bajtowa) wartość linowa ze znakiem, z dokładnością do 0.1;
  • Uint8Val – 8 bitowa (1 bajtowa) wartość liniowa z dokładnością do 1 i z zakresu -99 do 100;

W polu „Numer celu danych” wpisujemy indeks wartości z danego typu. W systemie Ampio ilość poszczególnych wartości jest również zdefiniowana, każde urządzenie może wysłać po kilka/kilkanaście konkretnych typów danych, numerowanych od 0 i tak:

  • Temp16b – do dyspozycji mamy 6 wartości (0 do 5);
  • Int32Val – 16 różnych wartości (0 do 15);
  • AmpioInt16Val – 9 wartości (0 do 8);
  • Uint8Val – 18 wartości (0 do 17);

UWAGA!
Należy pamiętać o różnicach w przesyłaniu typów danych między różnymi sieciami. Np. dla przeliczania temperatur:

Załóżmy że z sieci ModBUS wartości temperatur podawane są z dokładnością do 0.1 ⁰C, w postaci liczby całkowitej ze znakiem, pomnożonej przez 10. Oznacza to, iż wartość 1 jest równa 0.1⁰C. Identycznie wygląda to systemie Ampio. Jednak w przypadku temperatur w Ampio SmartHome wartości wysyłane są jako wartości UInt16, czyli bez znaku. Aby możliwe było przesyłanie liczby ujemnej zastosowaliśmy offset równy 1000.

Więc do otrzymanej wartości z urządzenia (np. rekuperatora) należy dodać wartość 1000. Zgodnie z nią wypełniamy pola jak na poniższym zrzucie.

Rozkazy sterujące urządzeniami MODBUS

Lista rozkazów wykorzystywana jest do sterowania urządzeniami, np. sterowanie prędkości
obrotowej wentylatorów rekuperatora z przycisków panela sensorowego, aplikacji mobilnej, czy w reakcji na obecność domowników.

Przeprowadzimy tu przykład konfiguracji na podstawie jak powyżej, rekuperatora firmy ZEFIR.

Skonstruujemy tu rozkazy sterujące wydajnością wywiewu i nawiewu.

Podobnie jak w przypadku zapytań, rozkazy również podzielone są na bloki. Daje to możliwość
wysłania wielu rozkazów przez wywołanie jednej funkcji. Niektóre rekuperatory, czy inne urządzenia do osiągnięcia pewnych parametrów wymagają ustawienia paru wartości rejestrów, np. w przypadku wydajności wentylacji nieraz należy osobno ustawić nawiew i wywiew, czy jeszcze dodatkowo inne parametry. Tu ustawimy przez jedną funkcję zarówno nawiew jak i wywiew.

Zakładka rozkazów wygląda podobnie do zakładki pobierania wartości.

Bloki rozkazów dodajemy przez przycisk „Blok” widoczny powyżej.

Po jego naciśnięciu pojawi się możliwość wpisania nazwy bloku. Wpisanie nazwy ułatwi w znacznym stopniu wykorzystanie jego definicji podczas konfiguracji funkcji i jego późniejszej reedycji.

Po zatwierdzeniu pojawi się nowa pozycja na liście definicji rozkazów. Tu podobnie jak poprzednio, w bloku definiujemy rozkazy składowe przez naciśnięcie przycisku „Dodaj rozkaz”.

Pojawią się pola definicji rozkazu jak na poniższym rysunku.

Widać tu wszystkie elementy rozkazu które musimy wpisać, znów posłużymy się dokumentacją do rekuperatora firmy ZEFIR.

Według standardu ModBus istnieje kilka funkcji umożliwiających zapis danych w urządzeniach.
Aplikacja wspiera instrukcje 05, 06, 15, 16. Każda z nich ma inne znaczenie i zwykle, której z nich należy użyć opisane jest w dokumentacji integrowanego urządzenia.

Zgodnie z powyższym, by ustawić wartość zastosujemy funkcję MODBUS nr 6 (Write Single Register). Jak wcześniej przyjmiemy, że adres urządzenia ma wartość 0. W dokumentacji odszukujemy właściwego rejestru i wartości do ustawienia nawiewu.

„2.4. Wydajność nawiewu
Adres rejestru (offset): 0003
Tryb: odczyt/zapis
W przypadku centrali ze sterownikiem STANDARD rejestr ten zawiera dane o numerze włączonego
biegu na wentylatorze nawiewnym, w innych sterownikach jest to wartość procentowa. Wydajnością
nawiewu można sterować przesyłając do rejestru odpowiednią wartość.
Wysyłane/odbierane dane:
1 – 5: numer biegu w przypadku sterownika STANDARD
20 – 100: procent wydajności w pozostałych sterownikach”

Przyjmiemy, że posiadamy sterownik o płynnej regulacji nawiewu i wywiewu od 20 do 100%.

Jak widać, aby nastawić nawiew na 30% musimy w rejestrze o numerze 3 wpisać wartość 30.
Odpowiednio wypełniamy pola jak na poniższym zrzucie.

Całą konstrukcję zatwierdzamy przyciskiem „Zatwierdź” i pojawia się pierwszy element bloku.

Teraz do bloku dodamy polecenie ustawiające wydajność wywiewu na 30%, analogicznie do nawiewu i zgodnie z dokumentacją.

„2.5. Wydajność wywiewu
Adres rejestru (offset): 0004
Tryb: odczyt/zapis
W przypadku centrali ze sterownikiem STANDARD rejestr ten zawiera dane o numerze włączonego biegu na wentylatorze wywiewnym, w innych sterownikach jest to wartość procentowa. Wydajnością wywiewu można sterować przesyłając do rejestru odpowiednią wartość.
Wysyłane/odbierane dane:
1 – 5: numer biegu w przypadku sterownika STANDARD
20 – 100: procent wydajności w pozostałych sterownikach”

W bloku dodajemy kolejny rozkaz i wypełniamy odpowiednie pola jak poniżej.

Zatwierdzamy i mamy przykładowy komplet rozkazów na poniższym rysunku.

Analogicznie do powyższego przebiegu konstruujemy kolejne bloki, odpowiedzialne za wydajność wentylacji czy inne parametry urządzenia.

Reedycja nazwy bloku, czy poszczególnych rozkazów analogicznie jak przy zapytaniach o wartość odbywa się za pomocą przycisku Edytuj.

Jeśli istnieje konieczność użycia funkcji zapisu wielu rejestrów przez funkcję 15 (Write Multiple Coils) lub 16 (Write Multiple Holding Registers), konfiguracja wygląda podobnie. Różnicą jest tylko sposób wpisywania wartości do wysłania. W polu wartość do wysłania wpisujemy kolejne wartości w systemie dziesiętnym, rozdzielone przecinkami. Przykład konfiguracji rozkazu przy użyciu funkcji 16 widać na następnym rysunku.

Tak skonstruowane bloki rozkazów możemy użyć w funkcjach systemu Ampio SmartHome.

Wysyłanie i odczyt parametrów do i z urządzenia

Jak w przypadku każdego z urządzeń, tu również przygotowaną konfigurację parametrów należy wysłać do urządzenia. Operację wykonujemy przez naciśnięcie przycisku „Wyślij”.

Pobieranie parametrów odbywa się automatycznie przy otwieraniu okna konfiguracji, gdyby jednak zaistniała konieczność ponownego ich pobrania, można to wykonać naciskając przycisk „Pobierz” widoczny powyżej.

Zapis i odczyt parametrów do i z pliku

Istnieje możliwość przechowywania danych parametrów w pliku. Plik może być przenoszony i
wczytywany ponownie. Daje to możliwość tworzenia kopii ustawień, tworzenie gotowych konfiguracji do wykorzystania w przyszłości. Da to również możliwość tworzenia bazy konfiguracji dla różnych integrowanych urządzeń i udostępniania ich innym, np. na forum.

W pliku przechowywane są wszystkie wartości parametrów urządzenia, łącznie z opisami bloków rozkazów i funkcji zapytań. Do pliku nie dołączane są inne wartości, by nie nadpisywać danych nie edytowanych w tym oknie, np. nazw flag przy zaimportowaniu gotowych konfiguracji parametrów Modbus.

Zapisywanie i odczyt danych z pliku możliwe jest przez przyciski „Otwórz z pliku” i „Zapisz do pliku” widoczne poniżej.

Domyślną lokalizacją dla plików kopii konfiguracji jest folder:

„Dysk:\Users{nazwa zalogowanego użytkownika}\Ampio\AmpioSmartHome\Params\”

Domyślna nazwa pliku składa się ze słowa „Param-{MAC fabryczny urządzenia}-{Data i dokładny czas zapisu}.ashparxml”

Jest to plik w postaci XML, zawierający binarne postaci elementów parametrów.

Wykorzystanie bloków rozkazów w konfiguracji warunków uniwersalnego integratora Modbus

Do przykładowej konfiguracji wykorzystamy nasz moduł wraz z panelem dotykowym.
Przygotowaliśmy bloki rozkazów, które ustawią nam wydajność nawiewu rekuperatora na 3 różne prędkości.

Na wykonanie każdego z bloków przeznaczymy jedno pole dotykowe urządzenia MDOT.

W oknie konfiguracji urządzenia U025 MCON485, wybieramy nasz panel dotykowy i dodajemy od niego warunek.

Pierwsze pole ma nam spowodować wyłączenie wentylacji, drugi ustawienie jej na 30% i trzeci na 100%.

Tworzymy standardowo warunek podstawowy od pola nr 1 i zatwierdzamy, jak poniżej.

Pojawi nam się okno konstrukcji funkcji, wybieramy zakładkę „Funkcja MODBUS” i z listy rozwijalnej wybieramy odpowiednią funkcję, zdefiniowaną wcześniej w parametrach. Przy polu nr 1 będzie to funkcja Wylacz wentylac.

Widać tu przydatność opisów bloków rozkazów z parametrów. Bez nich są to dla nas tylko numery funkcji, które oczywiście nadal będą funkcjonowały, jednak konfiguracja bez kartki i ołówka byłaby dość trudna.

Zatwierdzamy i mamy już pole, które nam wyłączy wentylację, opis widzimy również na liście
warunków.

Analogicznie tworzymy kolejne warunki i funkcje dla pola 2 i funkcji ustawienia wentylacji na 30%, oraz pola nr 3 dla 100%. Otrzymaną listę warunków wysyłamy do urządzenia i gotowe.

Konfiguracja warunków od wartości ModBus

Dzięki stworzeniu funkcji zapytań, i wybraniu gdzie mają trafiać dane wartości, informacje te trafiają do magistrali. Poza ich prezentacją w aplikacjach na smartfonie, czy tablecie mogą one być również wykorzystane do stworzenia warunku.

Warunki od wartości 8 bitowych (8bLinVal)

Zakładka konfiguracji warunku od wartości 8 bitowych pokazana jest na poniższym rysunku.

Istnieje możliwość umieszczenia danych 8 bitowych w 18 miejscach. W związku z tym do magistrali trafiają one w 3 różnych wiadomościach typu broadcast (po 6 na 1 wiadomość). Stąd możemy w konstrukcji jednego warunku wykorzystać do 6 sąsiednich wartości (1-6 LUB 7-12 LUB 13-18).

Powyżej pokazany jest elementarny komponent konstrukcji, czyli pojedynczej wartości 8 bitowej. Widać tu numer wartości, pole wyboru, jej opis, aktualny odczyt oraz wartość warunku.

W naszych warunkach możemy sprawdzić czy wartość jest równa (=), większa niż(>), mniejsza niż(<) lub nierówna zadanej (!= czyli inna niż).

Lista funkcji według standardu MODBUS RTU

DECHEXOpis funkcji
10x01Read Coils
Odczyt stanów wyjść binarnych, wyjść przekaźnikowych
20x02Read Discrete Inputs
Odczyt stanów wejść binarnych, np. krańcówki zamknięcia obudowy
30x03Read Holding Register
Odczyt rejestrów pamiętających
40x04Read Input Register
Odczyt wejścia analogowego, np. wartości z czujnika temperatury
50x05Write Single Coils
Zapis pojedynczego wyjścia binarnego, np. wysterowanie przekaźnika
60x06Write Single Holding Register
Zapis pojedynczego rejestru pamiętającego
150x0FWrite Multiple Coils
Zapis wielu wyjść binarnych, np. odpowiednie wysterowanie kilku przekaźników
160x10Write Multiple Registers
Zapis wielu rejestrów, np. zapis do rejestrów danych o długości większej niż 16bitów
Numer dokumentuWersjaData opublikowania
PO-641.027 sierpień 2021

Powiązane artykuły