Protokół komunikacyjny systemu KNX/EIB

Na ilustracjach pokazano, jaka jest struktura stosu komunikacyjnego KNX/EIB w odniesieniu do siedmiowarstwowego modelu OSI (Open Systems Interconnections) opracowanego w 1984 roku przez ISO (International Standard Organisation). Model ten stał się podstawą do opisywania systemów komunikacji, głównie komputerowej. Stosuje się go również do sieci przemysłowych.

Model OSI podzielony jest na siedem warstw. Każda z nich definiuje zbiór usług i związanych z nimi protokółów (zasad komunikacji), manipulowania informacja na poziomie danej warstwy. Każda warstwa otrzymuje informacje z bezpośrednio niższej warstwy i przekazuje ją do bezpośrednio wyższej lub na odwrót. Ponieważ w każdej warstwie zdefiniowano wiele różnorodnych czynności, model ten może być dopasowany do szerokiej gamy sprzętu i programowania sieciowego. Takie warstwowe ułożenie funkcji i protokołów daje podstawę komunikacji pomiędzy odmiennymi typami sprzętu i oprogramowania sieciowego.

Warstwa fizyczna – odpowiada za fizyczny transport bitów, zapewnia fizyczne dołączenie (okablowanie) do przepływu danych pomiędzy urządzeniami sieci. Definiuje elektryczne i mechaniczne połączenia (złącza) z systemem okablowania sieci oraz funkcje zajmujące się właściwą transmisją bitów danych pomiędzy urządzeniami sieci.

Warstwa łącza – odpowiada za dzielenie telegramów na pakiety i odpowiednie ich zabezpieczenie. Warstwa łącza określa podstawowe jednostki informacji (zwane pakietami) oraz metody tworzenia, wysyłania i odbierania tych pakietów. Warstwa ta ma zapewnić bezbłędna komunikację pomiędzy urządzeniami sieciowymi.

Komunikacja w KNX/EIB w odniesieniu do referencyjnego modelu OSI:

Warstwa fizyczna i warstwa łącza danych zależą oczywiście od cech fizycznego medium.

Do kontroli dostępu do mediów zastosowano protokół CSMA (Carrier Sense Multiple Access) z zoptymalizowanym unikaniem kolizji OCA (Optimised Collision Avoidance). KNX/EIB umożliwia optymalizację mechanizmów dla określonych mediów. Wszystkie elementy magistrali nadsłuchują, ale reagują tylko aktory, pod których adres telegramy są skierowane. Jeśli element magistrali (sensor) chce nadać telegram, musi najpierw „wysłuchać” magistrali i poczekać, aż żaden inny element już nie będzie nadawał (Carrier Sense). Jeśli magistrala jest wolna, proces nadawania może rozpocząć każdy z elementów magistralo (Multiple Access). Jeśli nadawanie rozpoczynają równocześnie dwa elementy magistrali, na magistralę przebije się bez opóźnień ten z wyższym priorytetem (Collision Avoidance). Drugi z nich wstrzymuje się i kontynuuje proces przesyłu w dalszym punkcie czasowym. Jeśli oba elementy mają priorytet jednakowy, pierwszy przebije się ten, który ma mniejszy tzw. adres fizyczny. Znacznik DAF (Destination Address Flag) określa czy telegram (wiadomość) jest przeznaczony dla urządzenia (Device Oriented) czy dla grupy urządzeń (Group Oriented).

Warstwa sieciowa – określa, w jaki sposób dane są kierowane z jednego urządzenia do drugiego. Może również ukrywać niższe warstwy przed wyższymi, umożliwiając temu samemu oprogramowaniu górno-warstwowemu wykorzystanie różnych rodzajów sprzętu sieciowego. Ponadto w tej warstwie dane mogą być kierowane z jednego sprzętu sieciowego do innego. W przypadku KNX/EIB warstwa sieciowa kontroluje zliczanie skoków poprzez strukturę NPCI (Network Protokol Control Information). Dla urządzeń innych niż routery i bridge jest to zadanie dość proste.

Warstwa transportowa – określa procedury rozpoznawania błędów, korekcji ich oraz wymagania dotyczące powtórzeń informacji.

Warstwa sesji – koordynuje współdziałanie między funkcjami i programami użytkowymi wykonywanymi na różnych urządzeniach sieciowych

Warstwa prezentacji – określa konwersje kodu i dopasowania formatów danych dla programów użytkowych.

Dla wszystkich usług warstwy sesji i prezentacji są przeźroczyste.

Warstwa aplikacji – zajmuje się usługami sieciowymi i komunikacją użytkownika z siecią (interfejs użytkownika). W przypadku KNX/EIB warstwa aplikacji implementuje API dla zarządzenia typu klient-serwer w sieci. Warstwa aplikacji grupowych zajmuje się przydzielaniem cr_id (Communication_Reference_ID) do lokalnej instancji obiektu komunikacji grupowej (Group Communication Object) lub współdzielonej zmiennej, co umożliwia otrzymywanie wiadomości typu 1-do-N i wysyłanie 1-do-1. Dla większej wygody, zarówno obiekty komunikacji grupowej jak i obiekty rozproszone zamknięte są w warstwie użytkownika stosu KNX/EIB, która przejmuje zadania warstwy aplikacyjnej dotyczące aplikacji. Warstwa użytkownika pełni także rolę domyślnej aplikacji – serwera zarządzania.

Ramki PDU (Protokol Data Unit) mogą przenosić formaty danych aplikacji o rozmiarach do 14 bajtów (aktualnie rozważane jest rozszerzenie do 230 bajtów).

mgr inż. Wojciech Wiśniewski
Politechnika Łódzka