MBus 1.Úvod Standard MBus (z anglického MeterBus) je určen pro aplikace sběru dat z měřičů odběru nejrůznějších médií (například pitné a užitkové vody, plynu, tepla, elektrické energie). Je vyvíjen ve spolupráci University Padeborn a firmy Texas Instruments Německo. Standard je zatím ve vývoji, nicméně je natolik ustálen, že na jeho základě lze navrhovat jednotlivé prvky a budovat celé systémy. Zde uvedený popis vychází z verze 4.8 standardu MBus, která definuje všechny použité protokolové vrstvy včetně aplikačních protokolů.
2.Základní charakteristika Vzhledem k relativně úzké a poměrně specializované aplikační oblasti jsou na MBus kladeny specifické požadavky. Musí zajistit propojení velkého množství zařízení (řádově několika set) na vzdálenost až několika kilometrů. Přenos dat musí být kvalitně zabezpečen proti chybám. Na druhé straně je typickou vlastností aplikace nepříliš časté odečítání naměřených hodnot s nízkými nároky na odezvy v reálném čase. To spolu s přenosovými rychlostmi do 9600 Bd a obvykle nízkými požadavky měřičů na výpočetní výkon procesoru umožňuje implementovat všechny protokolové vrstvy ISO-OSI modelu programově a to včetně programové emulace sériového řadiče (UARTu). Charakteristické rysy standardní konfigurace lze shrnout do následujících bodů: Specielní implementace fyzické vrstvy
Galvanicky oddělené rozhraní Možnost napájení účastníků po sběrnici Dvoudrátové vedení s délkou až několik kilometrů Řízení komunikace na principu Master - Slave Bez implementace síťové vrstvy maximálně 250 účastníků Asynchronní přenos znaků, 8 bitů dat, sudá parita Přenosová rychlost 300 až 9600 Bd Zabezpečení datového bloku pomocí kontrolního součtu
Obr. 1 Standardní struktura sběrnice MBus
3.Fyzická vrstva standardu Standardní konfigurace MBusu zahrnuje jedinou řídicí stanici (repeater) a maximálně 250 stanic účastnických. Délka kabelového segmentu v této konfiguraci nesmí překročit 1000 m (350 m pro 9600 Bd). Pro rozsáhlejší systémy je nezbytné přejít k složitějším konfiguracím, kdy je celý systém rozdělen na tzv. zóny. Jednotlivé zóny se skládají ze segmentů připojených prostřednictvím vzdálených repeaterů a jsou řízeny tzv. řadiči zóny.
3.1Definice logických úrovní Jak již bylo naznačeno, standard MBus používá zcela specielní implementaci fyzické vrstvy protokolu. Jde o dvoudrátovou sběrnici na bázi běžného telefonního kabelu s poloduplexním přenosem dat a řízením přístupu Master - Slave. Aby bylo možné napájení účastnických stanic po tomtéž vedení, používá MBus pro přenos od řídicí stanice ke stanicím účastnickým změny napěťových úrovní, ve směru opačném změny v odběru proudu. Ve směru od řídicí stanice ke stanicím účastnickým odpovídá logické jedničce napětí +36 V na výstupu budiče řídicí stanice, logické nule pak napětí o 12 V nižší, tj. +24 V . Ve směru od účastnické stanice ke stanici řídicí je logická jednička reprezentována proudovým odběrem 1,5 mA, logická nula odběrem o 11 20 mA vyšším. Proud odebíraný ve stavu log. 1 může být využit k napájení galvanicky odděleného rozhraní a případně i vlastního měřiče. V klidovém stavu je na sběrnici úroveň log. 1 (+36 V) a odběr z budiče řídicí stanice odpovídá počtu účastnických stanic násobeným odběrem účastnické stanice ve stavu log. 1, tj. 1,5 mA. Je zřejmé, že zejména při vyšším počtu účastnických stanic klade standard na budič řídicí stanice poměrně vysoké nároky. Navíc vzhledem k proměnnému počtu účastnických stanic a k požadavku možnosti jejich přidávání a odebírání za provozu nemůže řídicí stanice detekovat absolutní odebíraný proud, ale pouze výše uvedenou změnu. Stejně tak napětí v různých bodech sběrnice, které je monitorováno účastnickými stanicemi, je proměnné a závisí na odporu vedení a na počtu účastnických stanic k němu připojených. To znamená, že také účastnické stanice musí reagovat na změny napětí sběrnice, nikoliv na jejich absolutní hodnoty. Vzhledem k poměrně velkým změnám jak napětí (12 V) tak proudu (11 20 mA) vykazuje fyzická vrstva standardu vysokou odolnost vůči vnějšímu rušení.
3.2Konektory Konektory pro připojení řídicí i účastnických stanic ke sběrnici standard zatím nedefinuje. Připravuje se specifikace konektorů pro pevné i rozebíratelné připojení ke sběrnici.
3.3Implementace fyzického rozhraní Jelikož požadavky na elektrické parametry rozhraní účastnické stanice jsou poměrně značné, vyvinula firma Texas Instruments integrovaný obvod TSS721 (viz Obr. 2), který realizuje veškeré funkce fyzického rozhraní. Výhodou použití tohoto obvodu je celkové zjednodušení konstrukce účastnické stanice, záruka dodržení parametrů rozhraní a navíc i další funkce obvodu, usnadňující jeho implementaci (např. výstup napájení mikroprocesoru). Na sběrnici je obvod připojen vývody BUSl, díky internímu ochrannému obvodu BR na polaritě nezáleží. Příjem je realizován obvody komparátoru TC3 za pomoci kondenzátoru připojeného na vývod SC. Nabíjecí konstanta tohoto kondenzátoru při úrovni napětí na sběrnici odpovídající logické jedničce je asi 30-krát menší než vybíjecí konstanta v logické nule. Napětí na tomto kondenzátoru je použito pro komparaci vstupního napětí a tedy pro zjištění logické úrovně vysílané řídicí stanicí. Odpovídající logická úroveň je k dispozici na vývodu TX (invertovaná na TXI).
Obr. 2 Blokové schéma obvodu TSS721 Pro vysílání jsou využity obvody komparátoru TC4, který ovládá proudový zdroj CS3. Proud logické nuly lze dostavit rezistorem na vývodu RIS, proud logické jedničky rezistorem na vývodu RIID. Vstupem od mikroprocesoru je vývod RX, popřípadě invertovaný RXI. Vysílání je současně přijímáno na vývodu TX (TXI), takže mikroprocesor může detekovat kolize.
Obr. 3 Varianty napájení účastnické stanice Obvod umožňuje tři základní konfigurace napájení účastnické stanice. Jsou to kombinované napájení z vedení nebo z baterie, napájení pouze z baterie a napájení pouze z vedení. Zapojení jednotlivých konfigurací je zřejmé z Obr. 3.
Na vývodu VDD je k dispozici napájecí napětí 3.3 V pro mikroprocesor, maximální trvalý odběr je však omezen na 600 A. Pro krytí špičkových odběrů může být využit kondenzátor, připojený na vývod STC. Případný výpadek napájení po vedení je signalizován na vývodu PF (power fail). Dále je podporováno automatické přepnutí na bateriový provoz prostřednictvím signálu na vývodu VS.
4.Linková vrstva standardu Základem protokolu je asynchronní přenos. Zvláštním dodatečným požadavkem, který vyplývá z požadavků fyzické vrstvy, je, aby mezi jednotlivými přenášenými znaky nebyly časové mezery. To znamená, že ihned po stopbitu musí následovat přenos dalšího znaku.
4.1Formát rámce MBus využívá čtyř formátů rámce (viz Obr. 4). Jsou to jednotlivý znak (Single Character), krátký rámec (Short Frame), řídicí rámec (Control Frame) a dlouhý rámec (Long Frame).
Obr. 4 Formáty rámců Jednotlivý znak Tento rámec se skládá z jediného znaku, jmenovitě 0xE5 hexadecimálně (dále již 0x.. znamená vždy vyjádření v šestnáctkové soustavě). Používá se k potvrzení o přijetí jiného vyslaného rámce. Krátký rámec Tento rámec má pevnou délku. Začíná úvodním znakem 0x10, následuje pole C, pole A, kontrolní součet a koncový znak 0x16. Kontrolní součet se počítá pouze z polí C a A. Dlouhý rámec Tento rámec začíná znakem 0x68, pokračuje dvakrát opakovaným polem L, obsahujícím délku rámce a opět úvodním znakem 0x68. Poté následuje pole C, pole A, pole CI, uživatelská data o délce 0 252 bajtů, kontrolní součet a ukončovací znak 0x16. Pole L obsahuje počet bajtů uživatelských dat zvýšený o tři (tj. o délku polí C, A a CI). Kontrolní součet je počítán z polí C, A, CI a z uživatelských dat. Řídicí rámec
Obsah řídicího rámce odpovídá dlouhému rámci, neobsahuje však položku „uživatelská data“. Kontrolní součet je počítán z polí C, A a CI.
4.2Význam polí rámce Všechna pole mají délku jednoho znaku, což odpovídá osmi bitům. 4.2.1Pole C (Control Field) Toto pole obsahuje řídicí parametry rámce. Význam jednotlivých bitů je zřejmý z tabulky 1. Číslo bitu
7 0 0
Master Slave Slave Master
6 1 0
5 4 FCB FCV ACD DFC
3 F3 F3
2 F2 F2
1 F1 F1
0 F0 F0
Tab. 1 Kódování řídicího pole C Nejvýznamnější bit (bit 7) je rezervován a jeho hodnota je vždy log. 0. Bit 6 specifikuje směr komunikace, hodnotu log. 0 mají rámce od řídicí stanice ke stanici účastnické, hodnotu log. 1 rámce ve směru opačném. V rámci vysílaném řídicí stanicí je bit FCB (frame count bit) při bezchybné komunikaci nastavován střídavě do log. 0 a log. 1. Pokud řídicí stanice nepřijala odezvu na předchozí rámec, vysílá ho znovu s identickým FCB a účastnická stanice odpovídá znovu stejným rámcem. Bit FCV (frame count valid) v log. 1 indikuje platnost bitu FCB. Pokud je FCV v log. 0, bit FCB musí být ignorován. V rámci vysílaném účastnickou stanicí mají bity 5 a 4 odlišný význam. Bit ACD (access demand) v log. 1 signalizuje řídicí stanici, že účastnická stanice potřebuje předat data s vyšší prioritou (tzv. Class 1 data). Tato data na rozdíl od standardních (Class 2) dat mají být přenesena co nejdříve. Řídicí stanice proto v následujícím cyklu reaguje požadavkem na přenos těchto dat. Bit DFC (data flow control) slouží k řízení datového toku. Hodnota log. 1 indikuje řídicí stanici, že účastnická stanice není schopna akceptovat další data. Bity F0 F3 kódují vlastní účel zprávy. Tabulka 2 ukazuje běžně používané řídicí kódy v rámcích MBusu. Jméno SND_NKE SND_UD
Pole C bin. 0100 0000 01F1 0011
Pole C hex. 40 53/73
SND_UD2
01F1 1011
5B/7B
SND_UD1
01F1 1010
5A/7A
RSP_UD
00AD 1000
08/18/28/38
Rámec krátký dlouhý/řídicí
Popis inicializace účastníka odeslání dat účastnické stanici stanicí řídicí krátký požadavek na běžná data (Class 2) od účastnické stanice krátký požadavek na prioritní data (Class 1) od účastnické stanice dlouhý/řídicí odeslání dat řídicí stanici stanicí účastnickou
Tab. 2 Řídicí kódy (F: FCB bit, A: ACD bit, D: DFC bit)
4.2.2Pole A (Address Field) Pole A slouží k adresaci účastnické stanice. Jeho velikost je osm bitů, rozsah je tedy 0 255. Adresy 0 250 mohou být přiřazeny jednotlivým účastnickým stanicím, adresy 254 resp. 255 jsou využity pro potvrzovaný resp. nepotvrzovaný broadcast. Je zřejmé, že při potvrzení broadcastu dojde na sběrnici ke kolizím vždy, je-li připojena více než jedna účastnická stanice. Jeho použití je pouze pro testovací účely. Adresa 253 indikuje adresaci v síťové vrstvě, nikoli v linkové. Adresy 251 a 252 jsou rezervovány pro budoucí využití. 4.2.3Pole CI (Control Information Field) Pole CI nese informaci, která je již součástí aplikačního protokolu. Jeho úkolem je kromě jiného rozlišení formátu dlouhého a řídicího rámce. Podrobnější popis tohoto pole je součástí kapitoly o aplikačním protokolu MBusu. 4.2.4Kontrolní součet Pole kontrolního součtu slouží k odhalení chyb při přenosu. Vzniká aritmetickým součtem výše uvedených položek jednotlivých rámců bez uvažování přenosu (carry).
4.3Komunikace na linkové vrstvě protokolu Linková vrstva využívá dvě základní procedury: Vyslání/Potvrzení Žádost/Odezva 4.3.1Vyslání / Potvrzení SND_NKE Jednoznakové potvrzení Tato procedura slouží k nastartování komunikace po jejím přerušení nebo po spuštění účastnické stanice. Inicializační rámec způsobí nastavení FCB bitu, takže první následující rámec bude mít tento bit nastaven do log. 1. Účastnická stanice potvrdí přijetí rámce jednoznakovým potvrzením (znak 0xE5). SND_UD Jednoznakové potvrzení Tato procedura slouží k přenosu dat od řídicí k účastnické stanici. Ta potvrdí bezchybný příjem rámce odesláním jednoznakového potvrzení. Při chybě v komunikaci není potvrzení odesláno. 4.3.2Žádost / Odezva REQ_UD2 RSP_UD Řídicí stanice žádá účastnickou stanici o vyslání dat. Ta pak buď vyšle příslušný rámec s požadovanými daty nebo indikuje chybné přijetí žádosti tím, že na ni nijak nereaguje.
4.4Detekce chyb linkovým protokolem Dojde-li při přenosu rámce linkové vrstvy k chybě, je tato detekována a příchozí rámec je ignorován. Po uplynutí časového limitu (timeoutu) o délce 330 bitových intervalů + 50 ms považuje řídicí stanice odeslaný rámec za nepotvrzený a vyšle ho znovu. To se opakuje maximálně dvakrát. Pokud účastnická stanice vysílá neplatné odezvy, může řídicí stanice svoje žádosti také dvakrát opakovat. Nezdaří-li se přenos, pak po uplynutí časového limitu o délce 33 bitových period se může řídicí stanice pokusit o obnovení spojení vysláním rámce
SND_NKE. Pokud tento pokus selže, pokračuje v komunikaci s další účastnickou stanicí. K detekci chyb slouží následujícími mechanismy: Start bit / Parita / Stop bit v rámci každého znaku rámce Start / Stop znaky každého rámce Kontrolní součet rámce Dvakrát přenášená délka rámce a kontrola počtu přijatých znaků rámce
5.Aplikační vrstva standardu Protokoly aplikační vrstvy definují význam pole CI a uživatelských dat rámců. Jejich definice vychází z normy EN1434-3.
5.1Pole CI Toto pole definuje typ a sekvenci aplikačních dat v rámci. Bit s vahou 0x04, značený normou jako bit M (Mode bit), specifikuje pořadí bajtů ve vícebajtových datových strukturách. Je-li nastaven (Mode 2), významnější bajty vícebajtových záznamů jsou přenášeny jako první, je-li v log. 0 (Mode 1), je tomu naopak. Je doporučeno používat pouze Mode 1. Následující tabulka (Tabulka 3) popisuje kódy CI pole definované pro rámce vysílané řídicí stanicí. Mode 1 Mode 2 0x51 0x55 0x52 0x56 0x50 0x54 0xB8 0xB9 0xBA 0xBB 0xBC 0xBD 0xBE 0xBF 0xB1 0xB2 0xB3 0xB4 0xB6 0x90 0x97
Aplikace vyslání dat výběr účastnické stanice reset aplikace synchronizovaná akce nastavení baudové rychlosti na 300 Bd nastavení baudové rychlosti na 600 Bd nastavení baudové rychlosti na 1200 Bd nastavení baudové rychlosti na 2400 Bd nastavení baudové rychlosti na 4800 Bd nastavení baudové rychlosti na 9600 Bd nastavení baudové rychlosti na 19200 Bd nastavení baudové rychlosti na 38400 Bd žádost o čtení obsahu RAM zápis obsahu RAM inicializace testu kalibrace čtení EEPROM spuštění programového testu kódy pro hashování
Tab. 3 Kódy CI pole rámců vysílaných řídicí stanicí Následující tabulka (Tabulka 4) popisuje kódy CI pole definované pro rámce vysílané účastnickou stanicí. Mode 1 0x70 0x71
Mode 2
Aplikace hlášení obecných chyb aplikace hlášení stavu varování
0x72 0x73
0x76 0x77
odezva s proměnným formátem rámce odezva s pevným formátem rámce
Tab. 4 Kódy CI pole rámců vysílaných účastnickou stanicí Podrobnější popis použití všech těchto kódů a formátu příslušných rámců jde nad rámec tohoto příspěvku, zájemce o implementaci je nalezne ve standardu. Dále budou popsána pouze základní struktura rámců vysílaných účastnickými stanicemi.
5.2Rámec s pevnou strukturou dat V rámci s pevnou strukturou dat (viz Obr. 5) mohou být přenášeny stavy maximálně dvou čítačů. Pole CI má hodnotu 0x73/0x77. Identifikační číslo 4 bajty
Čítač přístupů 1 bajt
Status 1 bajt
Médium/Jednotka 2 bajty
Čítač 1 Čítač 2 4 bajty 4 bajty
Obr. 5 Formát datového pole rámce s pevnou strukturou dat Identifikační číslo (Identification Number) je sériové číslo přiřazené během výroby. Je kódováno v osmi BCD číslicích, jeho rozsah je tedy 0 99999999. Čítač přístupů (Access Number) je binární čítač, inkrementovaný po každém odeslání datového rámce účastnickou stanicí. Slouží ke kontrole konzistence dat na úrovni aplikačního protokolu. Položka Status obsahuje bitovou mapu, která definuje kódování údajů v polích obou čítačů a zároveň umožňuje základní hlášení chybových stavů. Položka Médium/Jednotka (Medium/Unit) obsahuje kódovaný údaj o měřeném médiu a o jednotkách obou čítačů. Položky Čítač 1 a Čítač 2 (Counter 1, Counter 2) pak obsahují údaje o množství odebraného média. Tento formát není doporučen pro další vývoj a je součástí standardu pouze z důvodu zachování zpětné kompatibility.
5.3Rámec s proměnnou strukturou dat V tomto rámci může být přenášen libovolný počet hodnot, omezený pouze maximální délkou datového pole (viz Obr. 6). Pevná hlavička dat 12 bajtů
Proměnné datové bloky variabilní počet
MDH 1 bajt
Specifická data výrobce variabilní počet
Obr. 6 Formát datového pole rámce s proměnnou strukturou dat 5.3.1Pevná hlavička dat (Fixed Data Header) Prvních dvanáct bajtů rámce obsahuje Pevnou hlavičku dat, což je blok s pevnou strukturou (viz Obr. 7). Identifikační číslo 4 bajty
Výrobce 2 bajty
Verze 1 bajt
Médium Číslo přístupu 1 bajt 1 bajt
Status 1 bajt
Podpis 2 bajty
Obr. 7 Formát pevné hlavičky dat Oproti rámci s pevnou strukturou dat je Identifikační číslo (Identification Number) číslem zákazníka. Je kódováno jako osm BCD číslic. Může být nastaveno při výrobě, ale může být měnitelné i později, zejména pokud je implementováno i Výrobní číslo (Fabrication Number - bude popsáno později). Čítač přístupu (Access Number) funguje obdobně jako u rámce s pevným formátem. Pole Výrobce (Manufacturer) je kódováno dle EN61107. Pole Verze (Version) specifikuje verzi měřiče a jeho obsah definuje výrobce. Pole Médium
(Medium) určuje opět typ měřeného média, pole Status je určeno pro hlášení chybových stavů. Poslední pole Podpis (Signature) je rezervováno pro budoucí využití. 5.3.2Proměnný datový blok (Variable Data Block) Délka bloku je maximálně 240 bajtů 255 - 3 (C, A, CI) - 12 (pevná hlavička). Formát bloku je uveden na DIF 1 bajt
DIFE VIF VIFE 1 bajt 0 10 bajtů 0 10 bajtů DIB VIB DRH
Data 0 N bajtů
Obr. 8 Formát proměnného bloku dat Celý datový blok se skládá z Hlavičky datového záznamu (DRH Data Record Header) a z vlastních dat. Hlavička datového záznamu se skládá z Informačního bloku dat (DIB Data Information Block), který popisuje délku, typ a kódování dat, a z Informačního bloku hodnoty (VIB Value Information Block), který popisuje jednotku a její řád. 5.3.3Informační blok dat (DIB) Informační blok dat se skládá z Informačního pole dat (DIF Data Information Field, viz Obr. 9) a případně i z Rozšíření informačního pole dat (DIFE Data Information Field Extension, viz Obr. 10). Bit 7 Bit rozšíření
6 LSB čísla paměti
5 4 Pole funkce
3 2 1 0 Pole délky a kódování dat
Obr. 9 Kódování Informačního pole dat Bit rozšíření indikuje, zda po DIF bajtu následuje bajt DIFE či bajt VIF. Číslo paměti (bit 6) umožňuje přenos více různých hodnot čítače, hodnota log. 0 znamená aktuální stav. Pro vyšší čísla paměti je nezbytný bajt DIFE. Pole funkce kóduje typ údaje (minimum, maximum, okamžitá hodnota, hodnota při chybovém stavu). Pole délky a kódování dat definuje datový typ (např. celočíselný nebo v plovoucí čárce) a jeho kódování (binární či BCD). Existují i vyhrazené kombinace DIF bajtu, které slouží k specielním operacím. Bit 7 Bit rozšíření
6 Podsystém
5
4 Tarif
3
2 1 Číslo paměti
0
Obr. 10 Kódování Rozšíření informačního pole dat Každý bajt Rozšíření informačního pole dat poskytuje další místo na rozsáhlejší specifikaci přenášených dat. Bit rozšíření indikuje, zda následuje bajt DIFE či bajt VIF. Pole Podsystém (Unit) umožňuje specifikaci podsystému měřiče, pole Tarif informuje o tarifu pro přenášená data a pole Číslo paměti umožňuje specifikovat další možné naměřené údaje. Celkem je s maximálně 10 DIFE bajty k dispozici 41 bitů pro Číslo paměti, 20 bitů pro Tarif a 10 bitů pro Podsystém. 5.3.4Informační blok hodnoty (VIB) Informační blok hodnoty se skládá z Informačního pole hodnoty (VIF Value Information Field, viz Obr. 11) a případně i z Rozšíření informačního pole hodnoty (VIFE Value Information Field Extension), které má shodný formát.
Bit 7 Bit rozšíření
6
5
4
3 Jednotka a řád
2
1
0
Obr. 11 Kódování Informačního pole hodnoty Bit rozšíření v log. 1 indikuje následující bajt VIFE, jinak následují data. Položka Jednotka a řád obsahuje kódovanou informaci o jednotce přenášených dat a příslušné násobící konstantě. VIFE bajty umožňují rozšíření definic a implementaci zákaznických variant. 5.3.5Specifická data výrobce (Manufacturer Specific Data Block) Specifická data výrobce jsou uvedena bajtem Hlavičky dat výrobce (MDH Manufacturer Data Header). Jeho hodnota (DIF = 0x0F nebo 0x1F) indikuje, že následující data jsou specifická pro výrobce. Jejich obsah pak není standardem definován. Popis kódování jednotlivých polí přesahuje rozsah tohoto příspěvku a zájemce jej nalezne ve standardu.
6.Síťová vrstva standardu Pokud nestačí rozsah 250 primárních adres dostupných v linkové vrstvě, lze pro rozsáhlejší systémy implementovat vrstvu síťovou. Protokoly této vrstvy vlastně dynamicky přiřazují linkové adrese 253 jednotlivé účastnické stanice. Chce-li řídicí stanice přiřadit účastnické stanici linkovou adresu 253, použije k tomu specielní rámec (viz Obr. 12), který uvede vybranou účastnickou stanici do tzv. vybraného (selected) stavu. V tomto stavu reaguje zvolená stanice na linkové rámce s adresou 253. 0x68 0x0B 0x0B 0x68
0x53 0xFD 0x52 ID1-4 Man1-2
Gen
Med
CS 0x16
Obr. 12 Přiřazení sekundární adresy Sekundární adresa je definována prvky Identifikační číslo, Výrobce, Verze a Médium. Po uvedení do vybraného stavu pak účastnická stanice komunikuje tak, jako by její adresa byla 253, a to až do té doby, než je do vybraného stavu uvedena jiná účastnická stanice.