Driver ten służy do komunikacji poprzez protokół
Modbus. Patrz
Komunikacja poprzez protokół Modbus.
Przed zastosowaniem tego drivera w aplikacji PROMOTIC należy obejżeć "
PROMOTIC wideo kurs 4 - Drivery komunikacyjne".
Podstawowe właściwości drivera:
- Zastosowanie tego drivera wymaga zakup
licencji PmModbus. Podczas wytwarzania aplikacji w trybie freeware
PmFree lub z
licencją deweloperską oraz podczas jej testowania w runtime element ten jest zawsze funkcjonalny.
- Komunikacja jest dla Ethernetu (aplikacja PROMOTIC jest klientem) lub dla łącza szeregowego (COM1, COM2 ...).
- Komunikacja jset sieciowa, to znaczy, że jeden obiekt
PmaComm potrafi komunikować się z kilkoma urządzeniami (protokół wspiera adresację urządzeń).
- Driver wspiera tryby transferu TCP, RTU oraz ASCII.
- Można przenosić standardowe wartości 1-bitowe (bits) oraz 16-bitowe (registers) oraz mniej standardowe wartości 32-bitowe typu float oraz long oraz 64-bitowe wartości (float double precision).
- Driver można zastosować także do komunikacji poprzez protokół
JBUS. Protokół
JBUS jest podzbiorem protokołu
Modbus RTU. Wszystkie wiadomości implementowane w omawianym driverze (patrz niżej) wspiera także protokół
JBUS.
Driver wspiera następujące typy danych Modbus:
- b = Bit (1 Bit):
W sterowniku PLC: 1bit. W aplikacji PROMOTIC: typ danych Boolean.
- W = Word (2Byte Unsigned Integer):
16 Bit Unsigned, Big-endian
W sterowniku PLC: 16 bitów (wartość od 0 do 65535). W aplikacji PROMOTIC: typ danych Long.
Format binarny tego typu jest taki sam jak w aplikacji PROMOTIC, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:12, PLC:21).
-
W2 = Word (2Byte Unsigned Integer):
16 Bit Unsigned, Little-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów nie zmienia się - jest taki sam jak w aplikacji PROMOTIC (kolejność bajtów PC:12, PLC:12).
- I = Int (2Byte Signed Integer):
16 Bit Signed, Big-endian
W sterowniku PLC: 16 bitów (wartość od -32767 do +32767). W aplikacji PROMOTIC: typ danych Integer.
Format binarny tego typu jest taki sam jak w aplikacji PROMOTIC, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:12, PLC:21).
-
I2 = Word (2Byte Signed Integer):
16 Bit Signed, Little-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów nie zmienia się - jest taki sam jak w aplikacji PROMOTIC (kolejność bajtów PC:12, PLC:12).
-
L1 = Long type 1 (4Byte Signed Integer):
32-bit Signed, Big-endian byte swap
W sterowniku PLC: 32 bitów. W aplikacji PROMOTIC: typ danych
Long.
Tylko dla wiadomości typu
03, 04, 16.
Format binarny tego typu jest taki sam jak w aplikacji PROMOTIC, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:2143).
Stosowane na przykład:
Modicon,
Wago, itd.
-
L2 = Long type 2 (4Byte Signed Integer):
32-bit Signed, Big-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:4321).
Stosowane na przykład:
JUMO.
- L3 = Long type 3 (4Byte Signed Integer):
32-bit Signed, Little-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów nie zmienia się - jest taki sam jak w aplikacji PROMOTIC (kolejność bajtów PC:1234, PLC:1234).
-
L4 = Long type 4 (4Byte Signed Integer):
32-bit Signed, Little-endian byte swap
Taki sam jak poprzedni typ danych, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:3412).
-
UL1 = ULong type 1 (4Byte Unsigned Integer):
32-bit Unsigned, Big-endian byte swap
W sterowniku PLC: 32 bitów. W aplikacji PROMOTIC: typ danych
Double.
Tylko dla wiadomości typu
03, 04, 16.
Format binarny tego typu jest taki sam jak w aplikacji PROMOTIC, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:2143).
-
UL2 = ULong type 2 (4Byte Unsigned Integer):
32-bit Unsigned, Big-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:4321).
-
UL3 = ULong type 3 (4Byte Unsigned Integer):
32-bit Unsigned, Little-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów nie zmienia się - jest taki sam jak w aplikacji PROMOTIC (kolejność bajtów PC:1234, PLC:1234).
-
UL4 = ULong type 4 (4Byte Unsigned Integer):
32-bit Unsigned, Little-endian byte swap
Taki sam jak poprzedni typ danych, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:3412).
-
LL2 = LongLong type 2 (8Byte Signed Integer):
64-bit Signed, Big-endian
W sterowniku PLC: 64 bitów. W aplikacji PROMOTIC: typ danych
Double. (kolejność bajtów PLC:87654321)
Tylko dla wiadomości typu
03, 04, 16.
8-bajtowa liczba całkowita nie może być zapisana z dokładnością do liczb całych do żadnego typu danych. Tu zapis jest wykonany do wartości typu
Double, ale dla bardzo dużych liczb póżniej dochodzi do niedokładnosści (maksymalnie
+-2047).
Stosowane na przykład: Miernik energii
iEM3100(
Schneider-Electric), Multimeter
EPM-07S(
ENTES) ...
-
R = Float type 1 (4Byte - IEEE-754):
32-bit Float, Big-endian byte swap
W sterowniku PLC: 32 bitów. W aplikacji PROMOTIC: typ danych
Single.
Tylko dla wiadomości typu
03, 04, 16.
Format binarny tego typu jest według normy
IEEE-754, a więc taki sam jak w aplikacji PROMOTIC, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:2143).
-
R2 = Float type 2 (4Byte - IEEE-754):
32-bit Float, Big-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:4321).
Stosowane na przykład:
ABB AC500.
- R3 = Float type 3 (4Byte - IEEE-754):
32-bit Float, Little-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów nie zmienia się - jest taki sam jak w aplikacji PROMOTIC (kolejność bajtów PC:1234, PLC:1234).
- D1 = Float Double-precision type 1 (8Byte - IEEE-754):
64-bit Float, Big-endian byte swap
W sterowniku PLC: 64 bitów W aplikacji PROMOTIC: typ danych Double.
Tylko dla wiadomości typu 03, 04, 16.
Format binarny tego typu jest według normy IEEE-754, a więc taki sam jak w aplikacji PROMOTIC, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:12345678, PLC:21436587).
- D2 = Float Double-precision type 2 (8Byte - IEEE-754):
64-bit Float, Big-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:12345678, PLC:87654321).
- D3 = Float Double-precision type 3 (8Byte - IEEE-754):
64-bit Float, Little-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów nie zmienia się - jest taki sam jak w aplikacji PROMOTIC (kolejność bajtów PC:12345678, PLC:12345678).
-
S1 = String type 1 (byte order: 214365..):
W sterowniku PLC: 2*N bajtów, gdzie
N to ilość rejestrów, w których jest zapisany tekst. W aplikacji PROMOTIC: typ danych
String.
Tylko dla wiadomości typu
03, 04, 16.
W sterowniku PLC łańcuch tekstowy jest zapisany w innej kolejności niż w aplikacji PROMOTIC.
Stosowane na przykład sterownik PLC
Modicon M340.
Jeżeli łańcuch zawiera zero w postaci binarnej, wtedy w aplikacji PROMOTIC taki łańcuch zostanie skrócony (zero kończy łańcuch tekstowy).
Ten typ danych nie można zastosować w obiekcie
PmaCommMsg.
-
S3 = String type 3 (byte order: 123456..):
Taki sam jak poprzedni typ danych, tylko kolejność bajtów nie zmienia się - jest taki sam jak w aplikacji PROMOTIC.
Ten typ danych nie można zastosować w obiekcie
PmaCommMsg.
Zalecone wartości parametrów obiektu PmaComm:
Ilość bitów informacji | 8 dla trybu RTU, 7 dla trybu ASCII |
Ilość bitów stopu | 1 jeżeli jest wykorzystany parytet, 2 jeżeli parytet jest NO (żaden) |
---|
Typ danych protokołu | Tylko dla Ethernetu. Określa wygląd danych protokołu. Można wybrać:
MODBUS TCP/IP - Standardowa komunikacja Ethernet MODBUS. W porównaniu z danymi przeznaczonymi dla łącza szeregowego odróżnia się specjalnym nagłówkiem i jest przenoszona poprzez Ethernet TCP na porcie 502.
Dane takie same jak dla łącza szeregowego - Opcję tą można wybrać na przykład jeżeli urządzenie jest wyposażone w łącze szeregowe i przy pomocy konwertera RS232/Ethernet jest podłączone do Ethernetu. Jeżeli konwerter nie zmienia transmitowanych danych, wtedy można w ten prosty sposób komunikować się poprzez Ethernet z urządzeniem, które nie posiada wyjścia Ethernet. |
Timeout odbioru odpowiedzi | Tylko dla łącza szeregowego. Odpowiednią wartością jest na przykład 2000 ms. Okres czasu (w milisekundach) w którym driver będzie oczekiwać na odpowiedź po odesłaniu wiadomości.
Jeżeli do tego czasu nie zostanie odebrana żadna odpowiedź, wtedy transmisja wiadomości zostanie zakończona (zostanie wywołane zdarzenie onEndOfTransfer z błędem 24 lub 66). |
Tryb transferu | Protokół Modbus ma dwie możliwości transmisji.
W parametrach wiadomości obiektu PmaCommMsg ten tryb można zmienić (w specjalnym przypadku, kiedy jest konieczna komunikacja z kilku PLC w różnych trybach).
RTU - Najczęściej stosowany tryb transmisji, kiedy dane są transmitowane w formie binarnej.
ASCII - Typ transmisji, w którym dane są transmitowane w formie ASCII. Ten tryb nie jest dostępny dla MODBUS TCP/IP. |
---|
Opis komunikacji przy pomocy obiektu PmaCommGroup
Dla niniejszego drivera komunikacyjnego można zastosować obiekty
PmaCommGroup. Dla zwykłych transmisji danych jest to bardziej dogodne niż zastosowanie obiektu
PmaCommMsg.
Zmiennych w obiekcie
PmaCommGroup (lub jeszcze lepiej zmiennych w obiekcie
PmaData z rozszerzeniem danych
ExtComm) może być dowolna ilości, mogą być dowolnego typu danych i w dowolnej kolejności. Driver sam w zoptymalizowany sposób odczyta dane z urządzenia przy pomocy wewnętrznie wytworzonych wiadomości komunikacyjnych.
Odczytywane są wszystkie zmienne (jeżeli konfigurator "
Odświeżanie danych zezwolone" jest zaznaczony). Przy zapisie do zmiennej do urządzenia jest odesłana tylko zapisywana zmienna (jeżeli konfigurator "
Automatycznie przesyłaj przy zapisie do pozycji" jest zaznaczony).
Opis konfiguratora "ItemId":
ItemId jest identyfikator tekstowy pozycji, który służy do adresacji pozycji w urządzeniu. Z konfiguratora
ItemId driver stwierdzi, w jaki sposób ma zostać wartość pozycji wczytana lub wysłana.
Tekst można albo wpisać ręcznie, lub ułożyć w oknie, które zostanie otwarte przy pomocy przycisku wprawo od konfiguratora.
Do wprowadzenia można zastosować
Makro wyrażenie (wartość jest obliczana po uruchomieniu aplikacji).
Identyfikator
ItemId może mieć wygląd na przykład "
dev2.Ri33.W", gdzie:
dev2 = pozycja znajduje się w sterowniku PLC (
device) pod adresem
2. Zamiast numeru można wprowadzić
devD (=adres domyślny) i wtedy adres urządzenia będzie określony według konfiguratora "
Domyślny adres urządzenia".
Ri33 = jest w obszarze danych
"Input registers pod względnym adresem 33. Adres 33 jest tylko względny, podczas komunikacji zostanie doliczona wartość określona w konfiguratorze "
Bazowe adresy danych".
Lista obszarów danych:
-
Bo = obszar
"Coil status / Output bits".
Do odbioru danych jest wykorzystana funkcja Modbus: FN01 (Read Coil Status, Read Output Bits).
Do zapisu danych jest zastosowana funkcja Modbus: FN05 (Force Single Coil, Write 1 Bit).
-
BoM = obszar
"Coil status / Output bits".
Do odbioru danych jest wykorzystana funkcja Modbus: FN01 (Read Coil Status, Read Output Bits).
Do zapisu danych jest zastosowana funkcja Modbus: FN15 (Force Multiple Coils, Write n Bits).
Od obszaru
Bo różni się tylko sposobem zapisu (zamiast
FN05 stosuje się
FN15).
-
Bi = obszar
"Input status / Input bits".
Do odbioru danych jest wykorzystana funkcja Modbus: FN02 (Read Input Status, Read Input Bits).
Zapis danych nie jest możliwy.
-
Ro = obszar
"Holding/Output registers".
Do odbioru danych jest wykorzystana funkcja Modbus: FN03 (Read Holding/Output Registers).
Do zapisu danych jest zastosowana funkcja Modbus: FN16 (Preset Multiple Registers, Write n Registers).
-
RoS = obszar
"Holding/Output registers".
Do odbioru danych jest wykorzystana funkcja Modbus: FN03 (Read Holding/Output Registers).
Do zapisu danych jest zastosowana funkcja Modbus: FN06 (Preset Single Register, Write 1 Register).
Od obszaru
Ro różni się tylko sposobem zapisu (zamiast
FN16 stosuje się
FN06).
Uwaga: Funkcja
FN06 nie potrafi zapisywać 4 oraz więcej bajtowe wartości (na przykład typy danych
Long oraz
Float).
-
RoB = obszar
"Holding/Output registers". Transmisja poszczególnych bitów.
Do odbioru danych jest wykorzystana funkcja Modbus: FN03 (Read Holding/Output Registers).
Do zapisu danych jest zastosowana funkcja Modbus: FN22 (22-Mask Write Register).
Przykład:
RoB38.0 oznacza odczyt/zapis bitu
0 w rejestrze 38.
-
Ri = obszar
"Input registers.
Do odbioru danych jest wykorzystana funkcja Modbus: FN04 (Read Input Registers).
Zapis danych nie jest możliwy.
W = PLC posiada typ danych Word
Domyślny adres urządzenia | W tym miejscu wprowadzony adres można zastosować przy ustawianiu konfiguratora "ItemId" w zmiennych w tym obiekcie (tzn. w zmiennych w karcie "Dane" lub w rozszerzeniu danych ExtComm). Adres można wprowadzić w ItemId:
- albo na przykład dev1... - wtedy wartość zmiennej będzie odczytywana ze sterownika PLC pod adresem 1.
- lub devD... - znak "D" w tym miejscu oznacza default, (to znaczy, że adres zostanie przejęty z niniejszego konfiguratora).
Parametr ten można zmienić w runtime i odczytać w skrypcie przy pomocy metod: SetSpecParam("SlaveAddr") oraz GetSpecParam("SlaveAddr"). |
Bazowe adresy danych | Tutaj sąwprowadzane adresy początku obszaru danych (Bo, Bi, Ro, Ri).
Adresy tych obszarów są wstępnie ustawione na 0 (jeżeli nie zostanie wybrana konfiguracja wstępna dla określonego urządzenia - patrz Konfiguracje wstępne / Komunikacja / Protokoły i inne środki komunikacji / Modbus). Dla różnych rodzajów PLC adresy te mogą być inne (np. adresy często nie rozpoczynają się od 0 lecz od 1 lub 40001, itd.).
Podczas komunikacji "Adres pozycji danych" jest obliczony jako suma względnego adresu pozycji (określone w identyfikatorze ItemId) i bazowego adresu obszaru. |
Maksymalna ilość zmiennych odebrana w jednej wiadomości | Dla każdego obszaru (Bo,Bi,Ro,Ri) określana jest maksymalna ilość zmiennych, które mogą być transmitowane w jednej wiadomości. Warości te są zależne od typu sterownika, z którym komunikujemy (niektóre sterowniki PLC wspierają transmisję "małej ilości" rejestrów w jednej wiadomości, inne zaś wspierają większą ilość rejestrów) - informacja ta jest albo zawarta w dokumentacji sterownika lub należy to stwierdzić metodą "prób i błędów".
Wstępnie ustawionymi wartościami są 64 dla Bo oraz Bi, 32 dla Ro oraz Ri (jeżeli nie zostanie wybrana konfiguracja wstępna dla określonego urządzenia - patrz Konfiguracje wstępne / Komunikacja / Protokoły i inne środki komunikacji / Modbus).
Wstępnie ustawiona wartości są bardzo niskie. Poprzez zwiększenie tych wartości (jeżeli dane urządzenie umożliwia to) można osiągnąć przyspieszenie komunikacji, ponieważ wymagane dane mogą być transmitowane przy pomocy mniejszej ilości wiadomości komunikacyjnych. |
---|
Opis komunikacji przy pomocy obiektu PmaCommMsg
Obiekt
PmaCommMsg można zastosować do specjalnych komunikacji, których nie można wykonać przy pomocy obiektu
PmaCommGroup. Na przykład przy pomocy wiadomości typu
"XX-User defined opened function" można ułożyć dowolne typy wiadomości Modbus, które inaczej nie są driverem wspierane.
W każdej wiadomości musi się znajdować
adres Slave stacji z której dane są odczytywane lub do której dane są zapisywane. Adres ten określa się w karcie "
Dane-wysłanie" danej wiadomości w zmiennej
Slave (np. dla
Modicon są ważne adresz
Slave w zakresie 0-247.
Adres
0 jest wykorzystany dla
broadcast, tzn. dla wiadomości, które przyjmują wszystkie stacje (jeżeli jest protokół
Modbus wykorzystany na wyższej warstwie sieciowej, wtedy
broadcast może nie być dozwolony). Driver te wiadomości tylko wysyła i nie oczekiwuje odpowiedzi - nie ma sens ustawianie adresu 0 dla wiadomości, które powinny odczytywać (np. wiadomości
01 do
04).
Następnie w karcie "
Dane-wysłanie" w zmiennej
Addr wpisuje się
adres zmiennej w danej stacji. Wartość adresu zmiennej domyślnie ustawia się od 0. Niektóre urządzenia (np.
Modicon,
GE-Fanuc) jednak adresują od 1, i dlatego jest konieczne określić wartość
Addr o 1 mniejszą.
Maksymalna ilość wartości (stanów, rejestrów) w jednej wiadomości jest zależna według sterownika PLC. Może być na przykład 32, 125, 128, 1024, itd.
Lista oraz opis wiadomości komunikacyjnych:
01-Read Coil Status (Read Output Bits):
Wiadomość ta odczyta n stanów wyjść (wartości 1-bitowe) od określonego adresu
Addr.
02-Read Input Status (Read Input Bits):
Wiadomość ta odczyta n stanów wejść (wartości 1-bitowe) od określonego adresu
Addr.
03-Read Holding Registers (Read Output Registers):
Wiadomość ta odczyta n rejestrów wyjściowych (wartości 16-bitowe) od określonego adresu
Addr.
04-Read Input Registers:
Wiadomość ta odczyta n rejestrów wejściowych (wartości 16-bitowe) od określonego adresu
Addr.
05-Force Single Coil (Write 1 Bit):
Wiadomość ta zapisze do jednego stanu (wartość 1-bitowa) pod określonym adresem
Addr.
06-Preset Single Register (Write 1 Register):
Wiadomość ta zapisze do jednego rejestru (wartość 16-bitowa) pod określonym adresem
Addr.
15-Force Multiple Coils (Write n Bits):
Wiadomość ta zapisze n stanów (wartości 1-bitowe) od określonego adresu
Addr.
16-Preset Multiple Registers (Write n Registers):
Wiadomość ta zapisze n rejestrów (wartości 16-bitowe) od określonego adresu
Addr.
22-Mask Write Register (Modify Register Using both AND & OR Masks):
Wiadomość ta zapisze określone poszczególne
bity do jednego rejestru (wartość 16-bitowa) przy pomocy
AND oraz
OR maskowania.
W karcie "
Dane-wysłanie" znajdują się zmienne:
Slave - Adres urządzenia, z którym ma być prowadzona komunikacja.
Addr - adres rejestru, do którego będą zapisywane bity.
AND_Mask - maska bitów, które mają zostać wyzerowane
OR_Mask - maska bitów, które mają zostać ustawione
XX-User defined opened function:
Wiadomość Modbus definiowana przez uytkownika. Można zastosować dla tych wiadomości, które nie są w inny sposób wspierane przez ten driver. Projektant może tu definiować kompletną zawartość wiadomości (odbieraną i nadawaną), musi przy tym uważać na kolejność oraz typ danych zmiennych
DataX.
Zmienne
DataX (w
Dane-wysłanie i v
Dane-odbiór) przedstawiają dane w protokole Modbus od znaku
Function (bez tego znaku) i do znaku
CRC (dla
serial RTU, bez tego znaku) lub do końca wiadomości (dla
Modbus TCP/IP). Dla trybu transmisji
ASCII dane są wprowadzane tak samo jak dla trybu
RTU oraz driver wtedy sam takie dane przetransformuje do
ASCII.
W karcie "
Dane-wysłanie" znajdują się zmienne:
TXLength - Wielkość nadawanych danych (w bajtach). Nie jest to wielkość kompletnej nadawanej wiadomości lecz tylko tej jej części, która jest zapisana w zmiennych DataX w tej karcie. Wartość -1 oznacza, że mają zostać nadane wszystkie zmienne DataX w tej karcie.
RXLength - Maksymalna oczekiwana wielkość odebranych danych (w bajtach).
Nie jest to wielkość kompletnej odbieranej wiadomości lecz tylko tej jej części, która będzie zapisywana do zmiennych
DataX w karcie "
Dane-odbiór".
Wartość
-1 oznacza, że oczekiwana wielkość zostanie obliczona jako całkowita długość wszystkich zmiennych
DataX w karcie "
Dane-odbiór".
Jeżeli wielkość wydaje się mniejsze niż w rzeczywistości odebrane dane, wtedy dojdzie do błędu i odebrane dane nie będą przetwarzane.
Jeżeli wielkość wydaje się większe niż w rzeczywistości odebrane dane, wtedy transmisja będzie trwać dłużej (będzie czekać na timeout), ale odebrane dane zostaną przetwarzane.
Slave - Adres urządzenia, z którym ma być prowadzona komunikacja.
Function - Numer (kod) funkcji Modbus. Na przykład 1 = Read Coil Status, 17 = Report Slave ID itd.
DataX - Dane definiowane przez użytkownika, które mają następują za numeren funkcji w wiadomości (bez końcowej sumy kontrolnej). Tych zmiennych (i różnych typów danych) może się w karcie znajdować więcej lecz nadane zostaną tylko te, które zmieszczą się do nadawanej wiadomości (tzn. według wartości w TxLength).
W karcie "
Dane-odbiór" znajdujuą się zmienne:
Length - Wielkość rzeczywiście odebranych danych (w bajtach). Nie jest to wielkpść całej odebranej wiadomości lecz tylko tej jej części, która jest zapisana w zmiennych DataX w tej karcie.
Function - Numer (kód) funkcji Modbus. Stadardowo powinna się tu znajdpować taka sama wartość jak w karcie "
Dane-wysłanie".
DataX - Odebrane dane. Takich zmiennych (także różnych typów danych) może się w tej karcie znajdować więcej, lecz wpisane zostaną tylko te, które znajdowały się w odebranej wiadomości.