Logo SILICON LABS

AN451
IMPLEMENTACIJA BEŽIČNOG M-BUS SOFTVERA

Uvod

Ova napomena o aplikaciji opisuje implementaciju Silicon Labs bežične M-Bus pomoću Silicon Labs C8051 MCU i EZRadioPRO®. Bežični M-bus je evropski standard za aplikacije za očitavanje brojila koji koriste frekvencijski opseg od 868 MHz.

Stack Layers

Bežična M-Bus koristi 3-slojni IEC model, koji je podskup 7-slojnog OSI modela (vidi sliku 1).

SILICON LABS bežična M-BUS implementacija softvera AN451Fizički (PHY) sloj je definiran u EN 13757-4. Fizički sloj definira kako se bitovi kodiraju i prenose, karakteristike RF modema (brzina čipa, preambula i sinhronizacijske riječi) i RF parametre (modulacija, središnja frekvencija i devijacija frekvencije).
PHY sloj je implementiran upotrebom kombinacije hardvera i firmvera. EZRadioPRO obavlja sve RF i modemske funkcije. EZRadioPRO se koristi u FIFO modu sa rukovaocem paketa. MbusPhy.c modul pruža SPI interfejs, kodiranje/dekodiranje, čitanje/pisanje blokova i rukovanje paketima i upravlja stanjima primopredajnika.
M-Bus Data link sloj je implementiran u MbusLink.c modulu. M-Bus aplikacijski programski interfejs se sastoji od javnih funkcija koje se mogu pozvati iz sloja aplikacije u glavnoj niti. MbusLink modul takođe implementira sloj podataka veze. Sloj veze podataka će formatirati i kopirati podatke iz TX bafera aplikacije u MbusPhy TX bafer, dodajući potrebna zaglavlja i CRC-ove.
Sam sloj aplikacije nije dio firmvera M-busa. Sloj aplikacije definira kako se širok spektar podataka treba formatirati za prijenos. Većina mjerača treba da prenese samo jednu ili dvije vrste podataka. Dodavanje velike količine koda za prilagođavanje bilo koje vrste podataka brojilu bi dodalo nepotreban kod i trošak mjeraču. Možda bi bilo izvodljivo implementirati biblioteku ili zaglavlje file sa iscrpnom listom tipova podataka. Međutim, većina korisnika mjerenja tačno zna koju vrstu podataka treba da prenesu i mogu se pozvati na standard za detalje o formatiranju. Univerzalni čitač ili njuškalo može implementirati kompletan skup tipova podataka aplikacije na PC GUI. Iz ovih razloga, sloj aplikacije se implementira pomoću example aplikacije za brojilo i čitač.

Zahtevani standardi
  1. EN 13757-4
    EN 13757-4
    Komunikacioni sistem za brojila i daljinsko očitavanje brojila
    Dio 4: Bežično očitavanje brojila
    Očitavanje radiometra za rad u SRD opsegu od 868 MHz do 870 MHz
  2. EN 13757-3
    Komunikacioni sistem za brojila i daljinsko očitavanje brojila
    Dio 3: Namjenski sloj aplikacije
  3. IEC 60870-2-1:1992
    Oprema i sistemi za daljinsko upravljanje
    Dio 5: Protokoli za prijenos
    Odjeljak 1: Procedura prijenosa veze
  4. IEC 60870-1-1:1990
    Oprema i sistemi za daljinsko upravljanje
    Dio 5: Protokoli za prijenos
    Odjeljak 1: Formati okvira za prijenos
Definicije
  • M-Bus—M-Bus je žičani standard za očitavanje brojila u Evropi.
  • Bežični M-Bus—Bežična M-Bus za aplikacije očitavanja brojila u Evropi.
  • PHY—Fizički sloj definira kako se bitovi i bajtovi podataka kodiraju i prenose.
  • API—Interfejs programera aplikacija.
  • VEZA-Sloj veze podataka definira kako se blokovi i okviri prenose.
  • CRC—Ciklična provjera redundanse.
  • FSK—Frekventni pomak.
  • čip—Najmanja jedinica prenetih podataka. Jedan bit podataka je kodiran kao više čipova.
  • Modul—AC izvor koda .c file.

M-Bus PHY funkcionalni opis

Sekvenca preambule

Slijed preambule specificiran u M-bus specifikaciji je cijeli broj koji se naizmjenično mijenja nulama i jedinicama. Jedinica je definirana kao viša frekvencija, a nula je definirana kao niža frekvencija.
nx (01)
Opcije preambule za Si443x su cijeli broj grickanja koji se sastoje od naizmjeničnih jedinica i nula.
nx (1010)
Preambula sa dodatnim vodećim ne bi predstavljala problem, ali bi, tada, riječ za sinhronizaciju i korisni teret bili pogrešno usklađeni za jedan bit.
Rješenje je invertiranje cijelog paketa postavljanjem bita motora u registru Modulation Control 2 (0x71). Ovo će invertirati preambulu, sinkroniziranu riječ i TX/RX podatke. Kao posljedica toga, podaci bi trebali biti invertirani prilikom pisanja TX podataka ili čitanja RX podataka. Također, riječ za sinhronizaciju se invertuje prije upisivanja u registre riječi za sinhronizaciju Si443x.

Synchronization Word

Riječ za sinhronizaciju koju zahtijeva EN-13757-4 je ili 18 čipova za Mode S i Mode R ili 10 čipova za Model T. Riječ za sinhronizaciju za Si443x je 1 do 4 bajta. Međutim, budući da sinkronizacijskoj riječi uvijek prethodi preambula, posljednjih šest bitova preambule se može smatrati dijelom riječi za sinhronizaciju; dakle, prva riječ za sinhronizaciju je dopunjena sa tri ponavljanja nule praćene jedinicom. Riječ za sinhronizaciju se dopunjuje prije upisivanja u registre Si443x.
Tabela 1. Riječ za sinhronizaciju za Mode S i Mode R

EN 13757-4 00 01110110 10010110 binarni
00 76 96 Hex
jastučić sa (01) x 3 01010100 01110110 10010110 binarni
54 76 96 Hex
dopuna 10101011 10001001 01101001 binarni
AB 89 69 Hex

Tabela 2. Riječ za sinhronizaciju za Mode T Meter na Other

SYNCH SYNCH SYNCH
WORD WORD WORD
3 2 1
Dužina preambule prenosa

Minimalna preambula je određena za četiri različita načina rada. Prihvatljivo je imati preambulu dužu od navedenog. Oduzimanje šest čipova za preambulu daje minimalni broj čipova za preambulu Si443x. Implementacija dodaje dva dodatna dijela preambule u svim kratkim modovima preambule kako bi se poboljšala detekcija preambule i interoperabilnost. Preambula na Mode S sa dugačkom preambulom je veoma duga; pa se koristi minimalna preambula. Dužina preambule u nibbles se upisuje u registar dužine preambule (0x34). Registar dužine preambule određuje preambulu samo nakon prijenosa. Minimalne specifikacije i postavke dužine preambule sažete su u tabeli 3.
Tabela 3. Dužina preambule prijenosa

EN-13757-4
minimum
Si443x Preambula
Set ing
Sync
Riječ
Ukupno extra
nx (01) čips grickanje čips čips čips čips
Mode S kratka preambula 15 30 8 32 6 38 8
Mode S duga preambula 279 558 138 552 6 558 0
Način rada T (metar-ostalo) 19 38 10 40 6 46 8
Način R 39 78 20 80 6 86 8

Minimalna preambula za prijem je određena registrom kontrole detekcije preambule (0x35). Nakon prijema, broj bitova u sinkroniziranoj riječi mora se oduzeti od specificirane minimalne preambule da bi se odredila upotrebljiva preambula. Minimalno vrijeme poravnanja prijemnika je 16 čipova ako je AFC omogućen ili 8 čipova ako je AFC onemogućen. Vrijeme uspostavljanja prijemnika se također oduzima od upotrebljive preambule da bi se odredilo minimalno podešavanje za registar kontrole detekcije preambule.

Verovatnoća lažne preambule zavisi od podešavanja registra kontrole detekcije preambule. Kratka postavka od 8 čipova može dovesti do otkrivanja lažne preambule svakih nekoliko sekundi. Preporučena postavka od 20 čipova čini otkrivanje lažne preambule malo vjerojatnim događajem. Duljine preambule za Mode R i Mode SL su dovoljno dugačke da se koristi preporučena postavka.
Vrlo je malo koristi od toga da preambula detektuje duže od 20 čipova.
AFC je onemogućen za model S sa kratkom preambulom i model T. Ovo smanjuje vrijeme namještanja prijemnika i omogućava duže podešavanje detekcije preambule. Kada je AFC onemogućen, Mode T može koristiti preporučenu postavku od 20 čipova. Postavka od 4 grickalice ili 20 žetona se koristi za Model S sa kratkom preambulom. Ovo čini vjerovatnoću otkrivanja lažne preambule nešto većom za ovaj model.
Tabela 4. Detekcija preambule

EN-13757-4
minimum
Sync
Riječ
upotrebljiv
preambula
RX Settling Detect
min
Si443x Preambula
Postavka otkrivanja
nx (01) čips čips čips čips čips grickanje čips
Mode S kratka preambula 15 30 6 24 8* 16 4 16
Duga preambula modela S 279 558 6 552 16 536 5 20
Model T (metar-ostalo) 19 38 6 32 8* 24 5 20
Način R 39 78 6 72 16 56 5 20
*Napomena: AFC onemogućen

Prijemnik je konfigurisan da radi sa predajnikom koristeći minimalno specificiranu preambulu. Ovo osigurava da će prijemnik raditi sa bilo kojim predajnikom kompatibilnim sa M-busom.
Bežična M-Bus specifikacija zahtijeva vrlo dugačku preambulu za Mod S1 od najmanje 558 čipova. Ovo će trajati oko 17 ms samo za prijenos preambule. Si443x ne zahtijeva tako dugu preambulu i nema koristi od dugačke preambule. Iako je duga preambula označena kao opciona za Mode S2, nema razloga da se koristi duga preambula sa Si443x. Ako je jednosmjerna komunikacija poželjna, Mod T1 će osigurati kraću preambulu, veću brzinu prijenosa podataka i duži vijek trajanja baterije. Ako je potrebna dvosmjerna komunikacija korištenjem Mode S2, preporučuje se kratka preambula.
Imajte na umu da je prag detekcije za Model S sa dugom preambulom duži od broja preambula prenošenih za Model S sa kratkom preambulom. To znači da prijemnik Mode S duge preambule neće detektovati preambulu iz kratke preambule Mode S predajnika. Ovo je neophodno ako prijemnik Mode S duge preambule želi da dobije bilo kakvu korist od dugačke preambule.
Imajte na umu da će prijemnik Mode S kratke preambule otkriti preambulu i primiti pakete iz oba kratkog preambule Moda S
predajnik i dugo preambula Mode S predajnik; tako da, generalno gledano, čitač brojila treba da koristi kratku preambulu konfiguraciju prijemnika Mode S.

Kodiranje/dekodiranje

Specifikacija bežičnog M-busa zahtijeva dvije različite metode kodiranja. Manchestersko kodiranje se koristi za Mode S i Mode R. Manchestersko kodiranje se također koristi za vezu "drugi-metar" u modelu T. Model T metar-to-druga veza koristi 3 od 6 kodiranja.
1. Manchester Encoded/Decoding
Mančestersko kodiranje je uobičajeno u RF sistemima kako bi se obezbedio robustan oporavak takta i praćenje pomoću jednostavnog i jeftinog modema. Međutim, moderan radio visokih performansi poput Si443x ne treba kodiranje u Manchesteru. Mančestersko kodiranje je podržano prvenstveno zbog kompatibilnosti sa postojećim standardima, ali brzina prenosa podataka za Si443x se efektivno udvostručuje kada se ne koristi Mančestersko kodiranje.
Si443x podržava Manchester kodiranje i dekodiranje cijelog paketa u hardveru. Nažalost, riječ za sinhronizaciju nije kodirana u Manchesteru. Namjerno je odabrana nevažeća Manchester sekvenca za riječ za sinhronizaciju. Ovo čini Manchester kodiranje nekompatibilnim sa većinom postojećih radija, uključujući Si443x. Kao posljedica toga, kodiranje i dekodiranje u Manchesteru mora izvršiti MCU. Svaki bajt nekodiranih podataka sastoji se od osam bitova podataka. Koristeći Manchester kodiranje, svaki bit podataka je kodiran u simbol sa dva čipa. Pošto kodirani podaci moraju biti upisani u radio FIFO osam čipova istovremeno, jedan grickalica podataka se kodira i upisuje u FIFO.
Tabela 5. Manchestersko kodiranje

podaci Ox12 0x34 bajtova
Ox1 0x2 0x3 0x4 grickanje
1 10 11 100 binarni
čip 10101001 10100110 10100101 10011010 binarni
FIFO OxA9 OxA6 OxA5 Ox9A Hex

Svaki bajt koji se prenosi prosljeđuje se jedan po jedan bajt funkciji kodiranja bajta. Funkcija bajtova kodiranja će dvaput pozvati funkciju grickanja kodiranja, prvo za najznačajniji grickanje, a zatim za najmanje značajan grickanje.
Manchestersko kodiranje u softveru nije teško. Počevši od najznačajnijeg bita, jedan je kodiran kao "01" sekvenca čipa. Nula je kodirana kao "10" sekvenca čipa. Ovo se lako može postići korištenjem petlje i pomicanjem dva bita za svaki simbol. Međutim, brže je koristiti jednostavnu tabelu sa 16 unosa za svaki grickanje. Funkcija encode Manchester grickanja kodira grickanje podataka, a zatim ga upisuje u FIFO. Čipovi se invertiraju prije pisanja u FIFO da bi se uračunali zahtjevi za invertovanu preambulu.
Prilikom prijema, svaki bajt u FIFO-u se sastoji od osam čipova i dekodira se u jedan ugriz podataka. Funkcija bloka čitanja čita jedan po jedan bajt iz FIFO i poziva funkciju dekodiranja bajta. Čipovi se invertuju nakon čitanja iz FIFO-a kako bi se uračunali zahtjevi obrnute preambule. Svaki bajt čipova kodiranih u Manchesteru se dekodira u djelić podataka. Dekodirani nibble se upisuje u RX bafer koristeći funkciju RX bafera za upisivanje.
Primijetite da se i kodiranje i dekodiranje izvode jedan po jedan grickanje podataka u hodu. Kodiranje u bafer bi zahtijevalo dodatni međuspremnik dvostruko veći od nekodiranih podataka. Kodiranje i dekodiranje je mnogo brže od najbrže podržane brzine podataka (100 k čipova u sekundi). S obzirom da Si443x podržava višebajtno čitanje i upisivanje u FIFO, postoje mali troškovi u korištenju samo jednobajtnog čitanja i pisanja. Overhead je oko 10 µs za 100 kodiranih čipova. Prednost je ušteda RAM-a od 512 bajtova.
2. Tri od šest kodiranje dekodiranja
Metoda kodiranja tri od šest specificirana u EN-13757-4 je također implementirana u firmveru na MCU. Ovo kodiranje se koristi za brzi (100 k čipova u sekundi) mod T od metra do drugog. Model T pruža najkraće vrijeme prijenosa i najduži vijek trajanja baterije za bežični mjerač.
Svaki bajt podataka koji se prenosi podijeljen je na dva grickanja. Najznačajniji grickanje se prvo kodira i prenosi. Opet, ovo je implementirano korištenjem encode byte funkcije koja dvaput poziva funkciju encode nibble.
Svaki zalogaj podataka je kodiran u simbol sa šest čipova. Niz simbola sa šest čipova mora biti upisan u FIFO sa 8 čipova.
Tokom kodiranja, dva bajta podataka se kodiraju kao četiri grickanja. Svaki grickanje je simbol sa 6 čipova. Četiri simbola sa 6 čipova su agregirana kao tri bajta.
Tabela 6. Tri od šest kodiranja

podaci 0x12 0x34 bajtova
Ox1 0x2 0x3 0x4 grickanje
čip 15 16 13 34 oktalno
1101 1110 1011 11100 binarni
FIFO 110100 11100010 11011100 binarni
0x34 OxE2 OxDC Hex

U softveru se kodiranje tri od šest implementira pomoću tri ugniježđene funkcije. Funkcija encode byte će pozvati funkciju encode grickanja dvaput. Funkcija grickanja kodiranja koristi tabelu traženja za simbol sa šest čipova i upisuje simbol u funkcije Shift Three of Six. Ova funkcija implementira pomakni registar sa 16 čipova u softveru. Simbol se upisuje u najmanji značajan bajt registra pomaka. Registar se dvaput pomjera lijevo. Ovo se ponavlja tri puta. Kada je kompletan bajt prisutan u gornjem bajtu registra pomaka, on se invertuje i upisuje u FIFO.
Budući da je svaki bajt podataka kodiran kao jedan i po kodirani bajt, važno je prvo očistiti pomični registar kako bi prvi kodirani bajt bio ispravan. Ako je dužina paketa neparan broj, nakon kodiranja svih bajtova, i dalje će ostati jedan grickanje u registru pomaka. Ovo se rješava s poštanskim pismom kako je objašnjeno u sljedećem odjeljku.
Dekodiranje tri od šest kodiranih je obrnuti postupak. Prilikom dekodiranja, tri kodirana bajta se dekodiraju u dva bajta podataka. Softverski pomični registar se ponovo koristi za agregiranje bajtova dekodiranih podataka. Za dekodiranje se koristi tablica inverznog pregleda sa 64 unosa. Ovo koristi manje ciklusa, ali više memorije koda. Pretraživanje odgovarajućeg simbola u tabeli sa 16 unosa traje znatno duže.
Postamble
Specifikacija bežičnog M-busa ima posebne zahtjeve za poštansku oznaku ili prikolicu. Za sve modove, minimum je dva čipa, a maksimum je osam čipova. Budući da je minimalna atomska jedinica za FIFO jedan bajt, za Mode S i Mode R koristi se prikolica sa 8 čipova. Mode T postamble ima osam čipova ako je dužina paketa parna ili četiri čipa ako je dužina paketa neparna. Poštanska oznaka sa četiri čipa za neparnu dužinu paketa ispunjava zahtjeve da imaju najmanje dva naizmjenična čipa.
Tabela 7. Poštanska dužina

Dužina postamble (čipovi)
min max Implementacija sekvenca čipova
Način rada S 2 8 8 1010101
Način rada T 2 8 4 (neparan) 101
8 (parno) 1010101
Način R 2 8 8 1010101
Packet Handler

Rukovalac paketima na Si443x može se koristiti u režimu promenljive širine paketa ili režimu fiksne širine paketa. Režim varijabilne širine paketa zahtijeva bajt dužine paketa nakon riječi za sinhronizaciju i opcionih bajtova zaglavlja. Po prijemu, radio će koristiti bajt dužine da odredi kraj važećeg paketa. Prilikom prenosa, radio će umetnuti polje dužine iza bajtova zaglavlja.
L polje za bežični M-bus protokol ne može se koristiti za polje dužine Si443x. Prvo, polje L nije stvarna dužina paketa. To je broj bajtova korisnog opterećenja sloja veze ne uključujući CRC bajtove ili kodiranje. Drugo, samo L-polje je kodirano koristeći ili Manchester kodiranje ili tri od šest kodiranja za Mode T metar prema drugom.
Implementacija koristi rukovatelj paketima u načinu fiksne širine paketa i za prijenos i za prijem. Nakon prijenosa, PHY sloj će pročitati L polje u baferu za prijenos i izračunati broj kodiranih bajtova, uključujući poštansku oznaku. Ukupan broj kodiranih bajtova koji se prenose upisuje se u registar dužine paketa (0x3E).
Po prijemu, prva dva kodirana bajta se dekodiraju, a L-polje se upisuje u bafer za prijem. L-polje se koristi za izračunavanje broja kodiranih bajtova koji se primaju. Broj kodiranih bajtova koji se primaju tada se upisuje u registar dužine paketa (0x3E). Poštanska oznaka se odbacuje.
MCU mora dekodirati L-polje, izračunati broj kodiranih bajtova i upisati vrijednost u registar dužine paketa prije nego što se primi najkraća moguća dužina paketa. Najkraće dozvoljeno L-polje za PHY sloj je 9, što daje 12 nekodiranih bajtova. Ovo daje 18 kodiranih bajtova za model T. Prva dva bajta su već dekodirana. Dakle, registar dužine paketa mora biti ažuriran u 16-bajtnom vremenu na 100 kbps ili 1.28 milisekundi. Ovo nije problem za 8051 koji radi na 20 MIPS.
Broj bajtova koji se primaju ne uključuje poštansku oznaku, osim poštanske oznake sa četiri čipa koja se koristi za Mode T pakete sa neparnom dužinom paketa. Dakle, prijemniku nije potrebna poštanska oznaka, osim za pakete neparne dužine Model T. Ova poštanska oznaka je potrebna samo za davanje cijelog broja kodiranih bajtova. Sadržaj pošte je zanemaren; tako da, ako se poštarina ne prenese, četiri čipa buke će biti primljena i zanemarena. Pošto je ukupan broj kodiranih bajtova ograničen na 255 (0xFF), implementacija ograničava maksimalno L-polje za različite načine rada.
Tabela 8. Ograničenja veličine paketa

kodiran dekodirano M-Bus
bajtova bajtova L-Field
dec Hex dec Hex dec Hex
Način rada S 255 FF 127 7 F 110 6E
Način rada T (metar-ostalo) 255 FF 169 A9 148 94
Način R 255 FF 127 7 F 110 6E

Ova ograničenja su obično znatno iznad tipičnog slučaja upotrebe bežičnog mjerača. Dužina paketa bi trebala biti mala da bi se postiglo najbolje moguće trajanje baterije.
Dodatno, korisnik može odrediti maksimalno L-polje koje treba primiti (USER_RX_MAX_L_FIELD). Ovo određuje potrebnu veličinu za prijemni bafer (USER_RX_BUFFER_SIZE).
Podržavanje maksimalnog L-polja od 255 zahtijevalo bi bafer za primanje od 290 bajtova i maksimalno 581 Manchester kodirani bajt. Rukovalac paketima bi trebao biti onemogućen i registar dužine paketa se ne bi mogao koristiti u tom slučaju. Ovo je izvodljivo, ali je zgodnije koristiti rukovalac paketima, ako je moguće.

Upotreba FIFO

Si4431 obezbeđuje 64-bajtni FIFO za odašiljanje i prijem. Pošto je broj kodiranih bajtova 255, cijeli kodirani paket možda neće stati u 64-bajtni bafer.
Prijenos
Prilikom prijenosa izračunava se ukupan broj kodiranih bajtova. Ako je ukupan broj kodiranih bajtova, uključujući poštansku oznaku, manji od 64 bajta, cijeli paket se upisuje u FIFO i omogućen je samo prekid poslanog paketa. Većina kratkih paketa će biti poslata u jednom FIFO prijenosu.
Ako je broj kodiranih bajtova veći od 64, za slanje paketa bit će potrebno više FIFO prijenosa. Prva 64 bajta se upisuju u FIFO. Paket poslat i TX FIFO skoro prazan prekidi su omogućeni. Prag TX FIFO skoro prazan je postavljen na 16 bajtova (25%). Nakon svakog IRQ događaja čita se registar statusa 2. Prvo se provjerava bit Packet Sent i, ako paket nije u potpunosti poslan, sljedećih 48 bajtova kodiranih podataka se upisuje u FIFO. Ovo se nastavlja sve dok svi kodirani bajtovi ne budu napisani i dok se ne dogodi prekid poslat paketa.
1. Prijem
Prilikom prijema, u početku je omogućen samo prekid Sync Word. Nakon prijema riječi za sinhronizaciju, prekid riječi za sinhronizaciju je onemogućen i FIFO skoro pun prekid je omogućen. FIFO skoro pun prag je inicijalno postavljen na 2 bajta. Prvi FIFO skoro pun prekid se koristi da se zna kada su primljena dva bajta dužine. Kada se primi dužina, dužina se dekodira i izračunava se broj kodiranih bajtova. Prag RX FIFO skoro pun je tada postavljen na 48 bajtova. RX FIFO je skoro pun i prekidi valjanog paketa su omogućeni. Prilikom sljedećeg IRQ događaja čita se registar statusa 1. Prvo se provjerava bit Valid Packet, a zatim se provjerava bit FIFO Almost Full. Ako je postavljen samo RX FIFO skoro pun bit, sljedećih 48 bajtova se čita iz FIFO. Ako je postavljen važeći bit paketa, ostatak paketa se čita iz FIFO. MCU prati koliko je bajtova pročitano i zaustavlja čitanje nakon posljednjeg bajta.

Sloj podatkovne veze

Modul sloja veze podataka implementira sloj veze usklađen sa 13757-4:2005. Sloj veze podataka (LINK) pruža sučelje između fizičkog sloja (PHY) i sloja aplikacije (AL).
Sloj veze podataka obavlja sljedeće funkcije:

  • Pruža funkcije koje prenose podatke između PHY i AL
  • Generiše CRC-ove za odlazne poruke
  • Otkriva CRC greške u dolaznim porukama
  • Omogućava fizičko adresiranje
  • Potvrđuje prijenose za dvosmjerne načine komunikacije
  • Uokviruje bitove podataka
  • Otkriva greške u okvirima u dolaznim porukama
Format okvira sloja veze

Bežični M-Bus format okvira koji se koristi u EN 13757-4:2005 izveden je iz formata okvira FT3 (Frame Type 3) iz IEC60870-5-2. Okvir se sastoji od jednog ili više blokova podataka. Svaki blok uključuje 16-bitno CRC polje. Prvi blok je blok fiksne dužine od 12 bajtova koji uključuje L-polje, C-polje, M-polje i A-polje.

  1. L-Field
    L-polje je dužina korisnog opterećenja podataka sloja veze. Ovo ne uključuje samo L-polje ili bilo koji od CRC bajtova. Uključuje L-polje, C-polje, M-polje i A-polje. Ovo su dio PHY korisnog opterećenja.
    Budući da je broj kodiranih bajtova ograničen na 255 bajtova, maksimalna podržana vrijednost za M-polje je 110 bajtova za Manchester kodirane podatke i 148 bajtova za Mode T Three-Out-of-Six kodirane podatke.
    Link sloj je odgovoran za izračunavanje L-polja pri prenosu. Sloj veze će koristiti L-polje na prijemu.
    Imajte na umu da L-polje ne označava dužinu PHY korisnog opterećenja ili broj kodiranih bajtova. Nakon prijenosa, PHY će izračunati dužinu PHY korisnog opterećenja i broj kodiranih bajtova. Nakon prijema, PHY će dekodirati L-polje i izračunati broj bajtova za dekodiranje.
  2. C-Field
    C-polje je polje kontrole okvira. Ovo polje identificira tip okvira i koristi se za primitive usluge razmjene podataka veze. C-polje označava tip okvira – SEND, CONFIRM, REQUEST ili RESPOND. U slučaju okvira SEND i REQUEST, C-polje pokazuje da li se očekuje POTVRDA ili ODGOVOR.
    Kada koristite osnovnu funkciju Link TX, može se koristiti bilo koja vrijednost C. Kada koristite Link Service Primitives, polje C se automatski popunjava u skladu sa EN 13757-4:2005.
  3. M-Field
    M-polje je kod proizvođača. Proizvođači mogu zatražiti troslovni kod od sljedećeg web adresa: http://www.dlms.com/flag/INDEX.HTM Svaki znak koda od tri slova je kodiran kao pet bitova. 5-bitni kod se može dobiti uzimanjem ASCII koda i oduzimanjem 0x40 (“A”). Tri 5-bitna koda su spojena u 15-bitne. Najznačajniji bit je nula.
  4. A-Field
    Adresno polje je jedinstvena 6-bajtna adresa za svaki uređaj. Jedinstvenu adresu treba dodijeliti proizvođač. Odgovornost svakog proizvođača je da osigura da svaki uređaj ima jedinstvenu 6-bajtnu adresu. Adresa za okvire za slanje i zahtjeve je samoadresa mjerača ili drugog uređaja. Okviri podataka potvrde i odgovora se šalju koristeći adresu izvornog uređaja.
  5. CI-Field
    CI-polje je zaglavlje aplikacije i specificira tip podataka u korisnom učitavanju podataka aplikacije. Dok EN13757-4:2005 specificira ograničen broj vrijednosti, Link Service Primitives će dozvoliti korištenje bilo koje vrijednosti.
  6. CRC
    CRC je specificiran u EN13757-4:2005.
    CRC polinom je:
    X16 + x13 + x12 + x11 + x10 + x8 +x6 + x5 +x2 + 1
    Imajte na umu da se M-Bus CRC izračunava za svaki blok od 16 bajta. Rezultat je da svakih 16 bajtova podataka zahtijeva 18 bajtova za prijenos,
Dodatne informacije

Za dodatne informacije o implementaciji sloja veze, pogledajte “AN452: Vodič za programere bežičnog M-Bus steka”.

Upravljanje napajanjem

Slika 2 prikazuje vremensku liniju upravljanja napajanjem za mjerač nprample koristeći Mode T1.

MCU bi trebao biti u stanju mirovanja kad god je to moguće radi uštede energije. U ovom exampda, MCU spava kada radi RTC, kada čeka na pokretanje radio kristala i kada prenosi sa FIFO. MCU će se probuditi iz EZRadioPRO IRQ signala spojenog na buđenje u skladu s portovima.
Kada šalje poruke duže od jednog bloka, MCU se mora probuditi da popuni FIFO (zasnovano na FIFO skoro praznom prekidu) i zatim se vrati u stanje spavanja.
MCU bi trebao biti u stanju mirovanja radi iz oscilatora male snage ili oscilatora u burst modu kada čita sa ADC-a. ADC-u je potreban SAR sat.
Kada se ne koristi, EZRadioPRO bi trebao biti u načinu isključivanja sa SDN pin-om na visokom nivou. Ovo zahtijeva žičanu vezu sa MCU. EZ Radio Pro registri se ne čuvaju u režimu isključivanja; tako da se EZRadioPro inicijalizira na svakom RTC intervalu. Inicijalizacija radija traje manje od 100 µs i štedi 400 nA. Ovo rezultira uštedom energije od 10 µJ, na osnovu intervala od 10 sekundi.
Kristalu EZRadioPRO potrebno je oko 16 ms za POR. Ovo je dovoljno dugo da se izračuna CRC za oko osam blokova. MCU će se vratiti u stanje mirovanja ako završi sve CRC-ove prije nego što se kristal stabilizira. Ako je potrebna enkripcija, ona se također može pokrenuti dok se čeka na kristalnom oscilatoru.
MCU bi trebao raditi na 20 MHz koristeći oscilator male snage za većinu zadataka. Zadaci koji zahtijevaju precizno vremensko ograničenje moraju koristiti precizan oscilator i režim mirovanja umjesto mirovanja. RTC pruža dovoljnu rezoluciju za većinu zadataka. Vremenski okvir upravljanja napajanjem za T2 mjerač prample aplikacija je prikazana na slici 3.

Implementaciju primopredajnika treba optimizirati za normalan slučaj kada se mjerač probudi, a čitač nije prisutan. Minimalno/maksimalno ACK vremensko ograničenje je dovoljno dugo da je moguće koristiti C8051F930 RTC i staviti MCU u stanje mirovanja.
Dostupne su opcije izrade za mrežne ili USB čitače koji ne moraju da koriste režim mirovanja. Način mirovanja će se koristiti umjesto mirovanja, tako da USB i UART mogu prekinuti MCU.

SILICON LABS bežična M-BUS implementacija softvera AN451-1

Studio Simplicity
Pristup MCU i bežičnim alatima, dokumentaciji, softveru, bibliotekama izvornog koda i još mnogo toga jednim klikom. Dostupno za Windows,
Mac i Linux!

IoT portfolio Kvaliteta
IoT portfolio
www.silabs.com/IoT
SW/HW
www.silabs.com/simplicity
Kvaliteta
www.silabs.com/quality
Podrška i zajednica
community.silabs.com

Odricanje od odgovornosti
Silicon Labs namjerava kupcima pružiti najnoviju, tačnu i detaljnu dokumentaciju o svim perifernim uređajima i modulima dostupnim za implementatore sistema i softvera koji koriste ili namjeravaju koristiti Silicon Labs proizvode. Podaci o karakteristikama, dostupni moduli i periferni uređaji, veličine memorije i memorijske adrese odnose se na svaki određeni uređaj, a navedeni „tipični“ parametri mogu varirati i variraju u različitim aplikacijama. Aplikacija exampsve opisane ovdje služe samo u ilustrativne svrhe. Silicon Labs zadržava pravo izmjene bez daljnjeg upozorenja i ograničenja na informacije o proizvodu, specifikacije i opise ovdje, i ne daje jamstva u pogledu tačnosti ili potpunosti uključenih informacija. Silicon Labs neće snositi nikakvu odgovornost za posledice korišćenja ovde datih informacija. Ovaj dokument ne podrazumijeva niti izriče licence autorskih prava koje su dodijeljene ovim Ugovorom za dizajniranje ili proizvodnju bilo kojeg integriranog kola. Proizvodi nisu dizajnirani niti odobreni za upotrebu u okviru bilo kojeg sistema za održavanje života bez posebne pismene saglasnosti Silicon Labsa. “Sistem za održavanje života” je svaki proizvod ili sistem namijenjen da podrži ili održi život i/ili zdravlje, za koji se može razumno očekivati ​​da će, ako ne uspije, dovesti do značajnih ozljeda ili smrti. Proizvodi Silicon Labsa nisu dizajnirani niti odobreni za vojnu primjenu. Proizvodi Silicon Labsa se ni pod kojim okolnostima neće koristiti u oružju za masovno uništenje uključujući (ali ne ograničavajući se na) nuklearno, biološko ili hemijsko oružje, ili projektile koji mogu isporučiti takvo oružje.
Trademark Information
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs® i logotip Silicon Labs®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, Energy Micro logo i njihove kombinacije, „mikrokontroleri na svijetu koji najviše koriste energiju“, Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, Telegesis Logo®, USBXpress® i drugi su zaštitni znaci ili registrovani zaštitni znaci Silicon Labs. ARM, CORTEX, Cortex-M3 i thumbs su zaštitni znaci ili registrovani zaštitni znaci kompanije ARM Holdings. Keil je registrovani zaštitni znak kompanije ARM Limited. Svi ostali proizvodi ili nazivi robnih marki koji se ovdje pominju su zaštitni znakovi njihovih vlasnika.Logo SILICON LABS

Silicon Laboratories Inc.
400 West Cesar Chavez
Ostin, TX 78701
USA
http://www.silabs.com

Dokumenti / Resursi

SILICON LABS bežična M-BUS implementacija softvera AN451 [pdf] Korisnički priručnik
SILICON LABS, C8051, MCU i, EZRadioPRO, bežični M-bus, bežični, M-BUS, softver, implementacija, AN451

Reference

Ostavite komentar

Vaša email adresa neće biti objavljena. Obavezna polja su označena *