Magistrala M-Bus

Magistrala M-Bus została wprowadzona w 1979 roku przez firmę Modicon (obecnie Schneider Electric). Protkół został opisany szczegółowo w dokumentacji.

Najczęściej spotykanym zastosowaniem jest przesył małej ilości danych na dalekie odległości wewnątrz obiektu. Przykładowo, umożliwia to zbieranie danych z urządeń, jak np liczniki.

Magitrala pracuje na warstwie 7 modelu OSI (warstwa aplikacji), co oznacza, że umożliwia przesyłanie informacji pomiędzy urządzeniami w różnych typach magistrali/sieci. Jest więc możliwe podłączenie magistrali do sieci LAN przez bramkę, w takim przypadku komunikacja odbywa się przez TCP/IP.

Warstwa fizyczna

Magistrala składa się z dwóch przewodów służących do przesyłu danych. Każde urządzenie podłączone do magistrali musi mieć wyprowadzone 2 porty, Rx i Tx. Rx odpowiada za odbiór danych, a Tx za ich wysyłanie. Tak więc Tx slave'ów muszą być podłączone do Rx mastera, a Rx slave'ów łączy się z Tx mastera.


MASTER


Rx <=> Tx
SLAVE


Tx <=> Rx

Dane przesyłane są bajtami( po 8 bitów ).

Transmisja jednego bajtu odbywa się poprzez nadawanie bitów w następującej kolejności:

1b start - informuje o początku transmisji, ma wartość '1'
8b przesyłany bajt w kolejności od najmłodszego do najstarszego ( gdy potraktujemy bajt jako liczbę dwójkową najmłodszy bit to ten, który decyduje o parzystości tej liczby )
1b kontrola parzystości - informuje, czy liczba jedynek w wysłanym bajcie była
parzysta czy nie, służy do weryfikacji poprawności, nieuwzględniany, pełni funkcję dodatkowego bitu stopu
1b start - przerwa pomiędzy nadawaniem kolejnych ramek, ma wartość '0'

Tak więc aby wysłać 8b danych, trzeba przesłać 11 bitów. Oznacza to, że faktyczna prędkość transmisji jest o ok 27% niższa niż szybkość wysłania bitu. Jest to wada wszystkich protkołów używających tego przestarzałego już standardu przesyłania danych.

Master -> Slave

Transmisja danych od mastera( urządzenia zarzadzającego magistralą ) do
slave'ów(pozostałych urządzeń) odbywa się poprzez zmiany poziomu napięcia
na linii. 24V oznacza przesłanie '0', a 36V - '1'.

Slave -> Master

Slave'mi na magistrali mogą być nieskomplikowane urządzenia, np czujniki. Do wysłania danych za pomocą zmian poziomu napięcia potrzeba dwóch źródeł napięcia. Aby niepotrzebnie nie komplikować prostych urządzeń, za utrzymanie poziomu napięcia na linii odpowiada master. Slave'y mogą jedynie wymusić niskie napięcie poprzez zwarcie do masy. Podczas przesyłania danych od slave'ów, master próbuje utrzymywać na magistrali napięcie. Jeśli udaje się to, oznacza to odebranie przez niego '1'. Natomiast gdy slave zewrze magistralę do masy, nadaje '0'.

Prędkość

Szybkość przesyłu danych określa baudrate. Informuje on, ile bitów na
sekundę urządzenie może wysłać. Powinien zawierać się przedziale <300,9600>.
Im niższy baudrate, tym transmisja wolniejsza, ale odporniejsza na
zakłócenia. Ponadto, pojemność linii nie powinna przekroczyć 180nF, co w praktyce
ogranicza jej długość do ok 2km( przy pojemności skrętki 80nF/km ).

W celu eleminacji zakłóceń, magistrala może pracować także w trybie 4-przewodowym( 4W ). Linia przesyłowa składa się wtedy z dwóch skręconych par przewodów i sygnały w obu kierunkach przes są różnicowo, co pozwala na wzajemne znoszenie się zakłóceń.

Ramki


Pojedynczy znak:

1 bajt - 0xE5( 229 ) wartość stała
wysłanie pojedynczego znaku, służy to do potwierdzenie odbioru danych


Pusta ramka:

1B 0x10( 16d ) stała
1B C funkcja pakietu, informuje co oznaczają dane
1B A adres, pod który wysyłana jest ramka
2B CRC suma kontrolna, służy do sprawdzenia poprawności danych
1B 0x16( 22d ) stała

Krótka ramka bez danych, z sumą kontrolną
Może być wykorzystania do przesłania komunikatu lub komedy, zawierającej się w funkcji pakietu


Ramka danych:

1B 0x68( 104d ) stała
1B L długość =ilość danych + 3( C + A + CI )
1B L długość - dla pewności powtórzona
1B C funkcja
1B A adres
1B 0x68( 104 ) stała
1B CI dodatkowe informacje, komenda dla urządzenia
dokumentacja definiuje kilka komend, które mogą być przekazane
tym polem jak np reset, zmiana baud rate czy żądanie odczytania
danych, ale zależy to tylko od komunikujących się urządeń
( nie wpływa na przebieg transmisji danego pakietu )
<0,252>B dane
2B CRC suma kontrolna
1B 0x16( 22d ) stała

Ramka służy do transmisji danych, zawiera sumę kontrolną, co pozwala
zweryfikować ich poprawność

Ramka kontrolna:

Ramka danych o danych długości 0B, służy tylko do przekazania komendy.


Adresowanie

Adres na magistrali mieści się w 1 bajcie, czyli jest to liczba
z przedziału <0,255>. Możliwe adresy na magistrali:

0 ten adres przyjmują nieskonfigurowane urządzenia
<1,250> adresy slave'ów
251,252 zarezerwowane do wykorzystania w przyszłości
253 oznacza, że dane zaadresowane są w wyższej warstwie, czyli adresu
należy szukać w innej części pakietu
254 adres rozgłoszeniowy( broadcast ), odbiera każdy slave, odpowiada swoim adresem
255 broadcast, odbiera każdy slave, bez odpowiedzi


Ilość adresów ogranicza liczbę slave'ów podłączonych do jednej
magistrali do 250.
W celu podłączenia większej liczby urządzeń najczęściej stosuje się
transmitery, np zbierające dane z magistrali i wysyłające do sieci LAN.
Adres na mogistrali staje się wtedy ostatnim bajtem adresu IP.

Adresy można ustalić ręcznie, ale jeśli konfiguracja mastera i slave'ów
na to pozwala, można przydzielić je automatycznie. Wykorzystywane są w tym celu
32-bitowe identyfikatory każdego urządzenia. Składają się one w systemie szesnastkowym
z cyfr 0-9, np 0x12345678. Cyfry F są przez urządzenia traktowane jakby
mogła być tam dowolna inna cyfra, np urządzenia o adresach 0x47111111 i 0x48111111
odpowiedzą na zapytanie dla adresu 0x4FFFFFFF. Master wykonuje odpowiednie
zapytania i w ten sposób wyszukuje podłączone urządzenia.
przykład:
master pyta magistralę o grupę adresów 0x4FFFFFFF. Zgłaszają się dwa
urządzenia:
0x47111111 i 0x48111111.
Master wyłapuje konflikt i dzieli przedział adresów na mniejsze aż oddzieli od siebie wszystkie urządzenia, po czym przyporządkowuje im adresy.

  • Written by: Kazimierz Palutkiewicz
  • wtorek, 24 marzec 2020

Wchodząc na strony http://www.odbiory.pl wyrażają Państwo zgodę na umieszczanie na komputerze danych w postaci plików tzw. cookies, Pozwali to nam na automatyczne rozpoznanie Państwa komputera podczas następnego wejścia na strony www.odbiory.pl. Pliki cookies pozwolą przykładowo zachować wygląd witryny zgodny z upodobaniami bez konieczności dokonywania czynności od początku każdorazowo. Pliki cookies mogą też być wykorzystywane przez współpracujących z nami reklamodawców, a także przez narzędzie Google Analytics, które jest przez nas wykorzystywane do zbierania statystyk. W przypadku braku zgody z Państwa strony na otrzymywanie cookies a chęci korzystania ze stron www.odbiory.pl należy zmienić konfigurację przeglądarki internetowej w taki sposób by blokowała lub usuwała pliki tego typu, lub ostrzegała za każdym razem przed ich zapisaniem. Możesz w każdej chwili zmienić ustawienia swojej przeglądarki. Przeczytaj, jak wyłączyć pliki cookie i nie tylko »