Druhý díl článku o sběrnici a síti LonWorks, který jsem uvedl úvodním článkem " Sběrnice LonWorks - 1.část - Úvod", bude stručně popisovat komunikační protokol LonTalk, který je součástí firmwaru každého uzlu - Neuron chipu.
Tento protokol, který byl navržen v roce 1989 firmou Echelon a standardizován jako EIA 709.1 Standard, definuje přístup na sběrnici a řízení přenosu paketu (zpráv - messages) po existující síti. Síťový protokol LonTalk byl navržen dle ISO OSI referenčního modelu (viz. obrázek 1.). To umožňuje programům běžícím na aplikačním CPU komunikovat s aplikací běžící na jiném uzlu tvořeného Neuronovým chipem kdekoliv ve stejné síti. Služby protokolu, které jsou vyvolávány programy a objekty pracující na aplikačním hladině OSI modelu.
Obr.1. OSI model pro LonTalk protokol
Fyzická vrstva OSI modelu (Physical OSI layer)
Fyzická vrstva definuje propojení po fyzickém komunikačním médiu. Již zmíněnou velkou výhodou protokolu LonTalk je možnost přenosu po libovolném médiu, pro který existuje tranceiver. Ten je přímo napojen na k tomu určeným pinům neuron chipu. Dohromady tedy tvoří uzel sítě. V současné době se využívají tyto média, resp. existují pro ně tranceivery vhodné pro napojení na neuron chip (viz. obrázek 2. a tabulka 1.):
- Manchesterem kódovaný signál po zkroucený pár vodičů (twisted wires pair) izolovaný transformátorem a sběrnicovou topologií s rychlostí přenosu 78kbps až 1.25Mbps
- Zkroucený pár vodičů libovolnou topologií (kruh, hvězda, sběrnice) a kombinací kabelů s průřezem od 0.65 až 1.3mm
- Napájený zkroucený pár vodičů s libovolnou topologií se společným přenosem dat a napájení libovolného zařízení (ostatní viz bod výše)
- Výkonový síťové vedení, kde se společně přenášejí data i střídavé, příp. stejnosměrné, napájení (například síťový rozvod 230V). Tato komunikace se v Evropě řídí standardem CENELEC.
- Optické kabely v podobě dvou vláknového přenosu (dopředný a zpětný přenos po samostatném vláknu) nebo jednovláknový přenos (oba směry se šíří po jednom vláknu)
- Radiový (RF) přenos s využitím frekvencí 49MHz, 400 - 450MHz, 900MHz s rozprostřeným spektrem, 1.2GHz s rozprostřeným spektrem nebo 2.4GHz s rozprostřeným spektrem.
- Infračervený (IR) přenos obvyklý a vhodný pro přenosové aplikace
- Koaxiální kabel vhodný pro vysokorychlostní přenos nebo ve spojení s přenosem dat, obrazu i zvuku
Obr. 2. Příklady typů topologií LonWorks sítě
Samozřejmostí je využití a navázání více druhu médií, kdy například od vzdálené řídící stanice s využije síťové vedení a pak pro místní přístroje zkroucený pár. Zároveň je podporovány tzv. vícenásobné komunikační kanály (multiple communications channels), kde pojem kanál (channel) se uvažuje fyzické transportní médium pro datové pakety (telegramy) s možností připojit až 32385 uzlů. Každá síť může být složena z jednoho nebo více kanálů tvořených i různými fyzickými médii. Pro přenos z jednoho kanálu do druhého se využívají routery.
Tab. 1. Některé tranceivery pro síť LonWorks z nabídky firmy Echelon
Linková vrstva OSI modelu (Data Link OSI layer)
Linková vrstva ovládá a řídí přístup na médium (viz. obrázek 3.) a provádí kódování dat pro případnou opravu chyby vzniklé přenosem. Zde se využívá cyklický kód CRC (viz. obrázek 4.).
Přístup na médium
Obr. 3. Schéma přístupu daného uzlu na sběrnici - metoda CSMA/CA
Pro přístup se zde využívá známá metoda CSMA/CA pro přenášení paketů dle obrázku 3. Všechny uzlu, resp. jejich neuron chipy sledují přenos po síti a pro jejich přístup čekají na stav nečinnosti (Idle state), kdy nikdo nevysílá. Vysílání předchozího uzlu je ukončeno synchronizačním bitem, tzv. End-of-frame Synchronization, ukončující přenášený rámec. Pak každý uzel odpočítává tzv. Priority time slots, kdy mohou určité uzly nebo zprávy míst vyšší prioritu než další a tímto způsobem se na sběrnici dostanou přednostně dříve, protože je jim odpočítáván kratší čas. Každý neuron chip uzlu má proto několik bufferů s rozdílnou prioritou pro rozdělení priorit jednotlivých paketů. Pak následuje čekání dle náhodně vygenerované doby, tzv. randomly allocated time slots, a pokud se do té doby neobjeví na sběrnici komunikace, vyšle uzel svůj paket. Počet čekacích slotů se automaticky zvyšuje s rostoucí vytížeností sítě. Je možné využít i detekce kolize, ale tu musejí pak podporovat všechny tranceivery (hardware) zapojené v síti.
Tab. 2. Datová rychlost přenosu v porovnání s propustností sítě (počet paketů / sekundu)
Síťová vrstva OSI modelu (Network OSI layer)
Síťová vrstva je zodpovědná za správné doručení paketu cílovému uzlu nebo více uzlům.
Adresování sítě
Zde se využívá 3-úrovňové adresace k identifikování daného uzlu (viz. obrázek 5.). První úroveň hierarchie je doména jejíž identifikátor je délkou volitelný mezi hodnotami 0, 1, 3 nebo 6 bajtů. Každý uzel může být členem maximálně dvou domén. K propojení domén slouží brány (Gateways).
Obr. 4. Rámec LonTalk protokolu (detail)
Druhá úroveň adresování je podsíť (subnet). V každé doméně muže být až 255 podsítí. Podsíť je tvořená logickou skupinou uzlů z různých kanálů (adresování samotných uzlů je kanálově nezávislé). K propojení podsítí slouží routery.
Třetí úroveň (nejnižší) tvoří samotný uzel, který je adresován 48-bitovým identifikačním číslem (Neuron ID). V každé podsíti může být až 127 uzlů, tzn. až 32385 uzlů v jedné doméně. Protože každý uzel může být zároveň členem dvou domén, může sloužit jako mezidoménová brána a posílat například data z jednoho senzoru do dvou domén najednou.
Obr. 5. Adresování uzlů v síti
Transportní vrstva OSI modelu (Transport OSI layer)
Transportní vrstva zajišťuje spolehlivost doručení paketů, tj.provádí kontrolu správného přenosu paketů sítí od vysílajícího uzlu k cílovému, zajišťuje potvrzování přijetí paketu, ničí duplikátně vyslané pakety a další služby. Blíže bych se zastavil u čtyřech základních:
Služba potvrzování došlého paketu či zprávy (End-to-End Acknowledged service)
Po zprávě, resp. paketu, vyslaném uzlem sítě dalšímu uzlu nebo skupině uzlů se vždy očekává zpětné potvrzení o úspěšném doručení (acknowledgement) od každého uzlu. Jestliže vysílající uzel nedostane potvrzení od všech příjemců, vyčká určitou nastavenou dobu a provede nové odeslání zprávy. Doba i maximální počet pokusů o znovu vyslání je nastavitelný. Potvrzení o přijetí zprávy, resp. vyslání potvrzení, se provádí automaticky neuron chipem daného uzlu. K zamezení duplikátního příjmu tytéž zprávy se využívá číslování zpráv a potvrzení tzn. Transaction ID číslem.
Služba Žádost/Odpověï (Request/Response)
Ta je využívána k vyslání zprávy jednomu či více uzlům, od kterých se očekává zaslání nějaké konkrétní odpovědi. Ta může obsahovat i přenášená data, což se využívá při volání vzdálených procedur nebo v client/server aplikacích. Příchozí zpráva je uzlem nebo externí aplikací uzlu zpracována a výsledek vyslán jako odpověï se určitým nastavitelným časovým zpožděním.
Služba zasílání zpráv typu broadcast
Toho se využívá při jednom či opakovaném hromadném zasílání zpráv velkému počtu uzlů, kdy by hromadné odpovědi od každého zahltilo síť.
Služba nepotvrzeného zasílání zpráv
Tato služba je podobná předchozí, tzn. od vyslané zprávy se neočekává ani odpověï ani potvrzení. Je možné ji zasílat i pouze jednomu uzlu sítě. Tak to komunikující aplikace však musí být odolné proti ztrátě paketů či zpráv.
Relační vrstva OSI modelu (Session OSI layer)
Pakety mohou použít třídu služeb známé jako žádost-odpověï (request-response) požadující akci od nějakého vzdáleného uzlu. LonTalk relační vrstva definuje standardní kódy zpráv pro síťový managment (network managment messages) a diagnostiku (network diagnostic messages). Network managment messages usnadňují instalaci a řízení sítě, kde příkazy umožňuje měnit nastavení a konfiguraci neuron chipů, resp. obsah jejich EEPROM. Network diagnostic messages zajišťují diagnostiku sítě a případně opravy.
Tato vrstva také definuje ověřovací protokol pro ověřování zpráv (authenticated messages), který umožňuje příjemci zprávy zjistit, zda ten co zprávu vyslal, je k tomu oprávněný. Tento způsob zabraňuje neoprávněnému přístupu na uzel a do aplikace. Totiž každý uzel má 48-bitový ověřovací klíč (Authentication Key). Příjemce zprávy si tak může ověřit, zda ten vysílající má ten samý klíč.
Dále tato vrstva provádí rozhraní mezi 6. a 7. vrstvou protokolu běžícím v hostitelské aplikaci a nižšími vrstvami běžící jako firmware na neuron chipech jednotlivých uzlů.
Prezentační hladina OSI modelu (Presentation OSI layer)
Prezentační vrstva provádí vyměňování zpráv mezi aplikacemi, tak že došlý paket zprávy interpretuje jako:
- síťovou proměnnou (network variable)
- explicitní zprávu (explicit message)
- cizí rámec (foreign frame)
Aplikační data se obvykle vyměňují prostřednictvím síťových proměnných, které tvoří třídu zpráv, kde jsou data označena jako Neuron C proměnná a tak je s nimi i zacházeno. Tyto proměnné zjednodušují vývoj a instalování systému. Jak ukážu v jednom z dalších částí o sběrnici LonWorks, tyto proměnné definují a přiřadí data do určité skupiny dle jejich fyzikálního významu, včetně jednotek. Takto přenášená data mají pevně definováno co prezentují za hodnoty a jak se s nimi má ve vzdálené aplikaci zacházet. Z programátorského hlediska se to dá přirovnat k definování typu proměnné při její deklaraci (například int, float apod. v jazyku C) LonTalk protokol definuje několik standardních proměnných, tzv. Standard Network Variable Types (SNVT), které tvoří skupinu předdefinovaných typů asociovaných s fyzikálními jednotkami (například Volty, Ampéry, °C, metry, sekundy apod.) - viz. tabulka 3.
Tab. 3. Některé síťové proměnné a jejich reprezentace
Explicitní zprávy jsou určené pro prezentaci dat, které se nehodí do některého typu síťových proměnných. Tyto zprávy jsou složená ze dvou částí : kódu (message code) - 1 bajt, který aplikaci definuje interpretaci dat, a samotný obsah (data). Speciální kód patří tzv. cizím rámcům (foreign frames), což jsou rámce dat, které nijak nesouvisí se s touto vrstvou a prostě mají být přenesena v do cílové aplikace bez bližší specifikace. Takto lze přenést surová data už do 228 bajtů.
Aplikační vrstva OSI modelu (Application OSI layer)
V aplikační vrstvě běží samotná aplikační program, který deklaruje používané typy síťových proměnných, kódy explicitních zpráv apod. Mohou se využívat standardní síťové proměnné, aby obě aplikace na obou stranách sítě libovolné aplikace pracovali například se stejnými jednotkami a data stejně interpretovali. Stejně tak lze i definovat nové proměnné pro společné aplikace. V případě hodových produktů, dává obvykle výrobce k dispozici seznam proměnných, které zařízení využívají. často jich bývá i přes 30.
Závěr
Tento článek obecně popisoval LonTalk protokol, který je jako firmware součástí každého uzlu v LonWorks síti. Úkolem ani cílem tohoto článku nebylo přesný popis celého protokolu, protože to by bylo na tlustou knihu. Proto pro bližší informace odkazuji na informace a manuály na stránkách firmy Echelon, kde je možné si stáhnou a získat podrobné manuály v angličtině ve formátu pdf (odkazy viz. sekce DOWNLOAD & Odkazy). Další pokračování článku o LonWorks bude pojednávat o konkrétní struktuře Neuron Chipů jako součástek plus ostatním hardwaru okolo a bude se jmenovat "Sběrnice LonWorks - 3.část - Neuron Chip & ostatní hardware". Zanedlouho by se měl objevit na stránkách automatizace.HW.cz .
Antonín Vojáček
vojacek@ hwg.cz
DOWNLOAD & Odkazy
- Stránky firmy Echelon - www.echelon.com
- Stránky firmy EBV Elektronik GmbH, dodavatel technologie Echelon - www.ebv.com
- Stránky o LonMark - www.lonmark.org/
- článek na HW Serveru - " Sběrnice LonWorks - 1.část - Úvod"
- článek o LON - www.svetlosoft.cz/LON.htm
Modulární systém LONET pro sběrnic LonWorks:
- ATD, spol. s r.o. Praha - www.atd.cz
- ZPA CZ s.r.o. Trutnov - www.zpa.cz/lonet.htm