SILICON LABS logo

AN451
DRAADLOSE M-BUS SAGTEWARE IMPLEMENTERING

Inleiding

Hierdie toepassingsnota beskryf die Silicon Labs-implementering van Wireless M-Bus met behulp van 'n Silicon Labs C8051 MCU en EZRadioPRO®. Wireless M-bus is 'n Europese standaard vir meterleestoepassings wat die 868 MHz frekwensieband gebruik.

Stapel lae

Wireless M-Bus gebruik die 3-laag IEC-model, wat 'n subset van die 7-laag OSI-model is (sien Figuur 1).

SILICON LABS Wireless M-BUS sagteware-implementering AN451Die Fisiese (PHY) laag word gedefinieer in EN 13757-4. Die fisiese laag definieer hoe die bisse geënkodeer en oorgedra word, die RF-modemkenmerke (skyfietempo, aanhef en sinchronisasiewoord) en RF-parameters (modulasie, middelfrekwensie en frekwensieafwyking).
Die PHY-laag word geïmplementeer deur 'n kombinasie van hardeware en firmware te gebruik. Die EZRadioPRO voer al die RF- en modemfunksies uit. Die EZRadioPRO word in EIEU-modus saam met die pakkiehanteerder gebruik. Die MbusPhy.c module verskaf SPI koppelvlak, enkodering/dekodering, blok lees/skryf, en pakkie hantering en bestuur die transceiver state.
Die M-Bus Data skakel laag is geïmplementeer in die MbusLink.c module. Die M-Bus Toepassingsprogrammeringskoppelvlak bestaan ​​uit publieke funksies wat vanaf die toepassingslaag in die hoofdraad opgeroep kan word. Die MbusLink-module implementeer ook die Data Link Layer. Die dataskakellaag sal data vanaf die toepassing TX-buffer formateer en kopieer na die MbusPhy TX-buffer, en die vereiste kopskrifte en CRC's byvoeg.
Die toepassingslaag self is nie deel van die M-bus-firmware nie. Die toepassingslaag definieer hoe 'n wye verskeidenheid data geformateer moet word vir oordrag. Die meeste meters hoef net een of twee tipes data oor te dra. Om 'n groot hoeveelheid kode by te voeg om enige soort data by die meter te akkommodeer, sal onnodige kode en koste by die meter voeg. Dit kan moontlik wees om 'n biblioteek of 'n kopskrif te implementeer file met 'n volledige lys van datatipes. Die meeste meetkliënte weet egter presies watter soort data hulle moet oordra en kan na die standaard verwys vir formateringbesonderhede. 'n Universele leser of snuffel kan 'n volledige stel toepassingsdatatipes op die rekenaar-GUI implementeer. Om hierdie redes word die toepassingslaag geïmplementeer deur bvample aansoeke vir 'n meter en leser.

Vereiste Standaarde
  1. EN 13757-4
    EN 13757-4
    Kommunikasiestelsel vir meters en afstandlesing van meters
    Deel 4: Draadlose meteruitlees
    Radiometerlesing vir werking in die 868 MHz tot 870 MHz SRD-band
  2. EN 13757-3
    Kommunikasiestelsel vir meters en afstandlesing van meters
    Deel 3: Toegewyde toedieningslaag
  3. IEC 60870-2-1:1992
    Telebeheer toerusting en stelsels
    Deel 5: Transmissieprotokolle
    Afdeling 1: Skakeltransmissieprosedure
  4. IEC 60870-1-1:1990
    Telebeheer toerusting en stelsels
    Deel 5: Transmissieprotokolle
    Afdeling 1: Transmissieraamformate
Definisies
  • M-bus—M-Bus is 'n bedrade standaard vir meterlesing in Europa.
  • Draadlose M-Bus—Draadlose M-Bus vir meterlesingstoepassings in Europa.
  • PHY—Fisiese laag definieer hoe databisse en grepe geënkodeer en versend word.
  • API—Toepassing programmeerder koppelvlak.
  • SKAKEL—Data Link Layer definieer hoe blokke en rame oorgedra word.
  • CRC—Sikliese oortolligheidstoets.
  • FSK—Frekwensieverskuiwingsleuteling.
  • Chip—Kleinste eenheid van oorgedra data. Een databis word as veelvuldige skyfies geënkodeer.
  • Module—AC-kode bron .c file.

M-Bus PHY Funksionele Beskrywing

Aanhef volgorde

Die aanhefvolgorde wat deur die M-bus-spesifikasie gespesifiseer word, is 'n heelgetal wat nulle en ene afwissel. 'n Een word gedefinieer as die hoër frekwensie, en 'n nul word gedefinieer as die laer frekwensie.
nx (01)
Die aanhef-opsies vir die Si443x is 'n heelgetal knabbels wat bestaan ​​uit afwisselende ene en nulle.
nx (1010)
'n Aanhef met 'n ekstra voorste een sal nie 'n probleem wees nie, maar dan sal die sinchronisasiewoord en loonvrag met 'n bietjie wanbelyn wees.
Die oplossing is om die hele pakkie om te keer deur die enjinbit in die Modulation Control 2-register (0x71) in te stel. Dit sal die aanhef, sinkroniseringswoord en TX/RX-data omkeer. As gevolg hiervan, moet die data omgekeer word wanneer die TX-data geskryf word of die RX-data lees. Die sinchronisasiewoord word ook omgekeer voordat dit na die Si443x-sinchronisasiewoord-registers geskryf word.

Sinchronisasie Woord

Die sinchronisasiewoord wat deur EN-13757-4 vereis word, is óf 18 skyfies vir Mode S en Mode R of 10 skyfies vir Model T. Die sinchronisasiewoord vir die Si443x is 1 tot 4 grepe. Aangesien die sinchronisasiewoord egter altyd deur die aanhef voorafgegaan word, kan die laaste ses stukkies van die aanhef as deel van die sinchronisasiewoord beskou word; dus word die eerste sinchronisasiewoord opgevul met drie herhalings van 'n nul gevolg deur 'n een. Die sinchronisasiewoord word aangevul voordat dit na die Si443x-registers geskryf word.
Tabel 1. Sinchronisasiewoord vir Modus S en Modus R

EN 13757-4 00 01110110 10010110 binêre
00 76 96 blok
pad met (01) x 3 01010100 01110110 10010110 binêre
54 76 96 blok
aanvul 10101011 10001001 01101001 binêre
AB 89 69 blok

Tabel 2. Sinchronisasiewoord vir Modus T Meter na Ander

SINK SINK SINK
WOORD WOORD WOORD
3 2 1
Versend aanhef Lengte

Die minimum aanhef word vir vier verskillende bedryfsmodusse gespesifiseer. Dit is aanvaarbaar om 'n aanhef langer as gespesifiseer te hê. Die aftrekking van ses skyfies vir die aanhef gee die minimum aantal skyfies vir die Si443x aanhef. Die implementering voeg twee ekstra happies aan aanhef by in alle kort aanhefmodusse om aanhefopsporing en interoperabiliteit te verbeter. Die aanhef op Mode S met 'n lang aanhef is baie lank; dus word die minimum aanhef gebruik. Die aanheflengte in nibbles word in die Aanheflengte (0x34) register geskryf. Die aanheflengteregister bepaal die aanhef slegs by versending. Die minimum spesifikasie- en aanheflengte-instellings word in Tabel 3 opgesom.
Tabel 3. Versending aanhef Lengte

EN-13757-4
minimum
Si443x Aanhef
Stel ing
Sinkroniseer
Woord
Totaal ekstra
nx (01) skyfies peusel skyfies skyfies skyfies skyfies
Mode S kort aanhef 15 30 8 32 6 38 8
Mode S lang aanhef 279 558 138 552 6 558 0
Modus T (meter-ander) 19 38 10 40 6 46 8
Modus R 39 78 20 80 6 86 8

Die minimum aanhef vir ontvangs word bepaal deur die Aanhef Opsporingsbeheerregister (0x35). By ontvangs moet die aantal bisse in die sinchronisasiewoord van die gespesifiseerde minimum aanhef afgetrek word om die bruikbare aanhef te bepaal. Die minimum insteltyd van die ontvanger is 16-skyfies as AFC geaktiveer is of 8-skyfies as AFC gedeaktiveer is. Die insteltyd van die ontvanger word ook van die bruikbare aanhef afgetrek om die minimum instelling vir die Aanhefopsporingsbeheerregister te bepaal.

Die waarskynlikheid van 'n vals aanhef hang af van die instelling van die aanhefopsporingsbeheerregister. 'n Kort instelling van 8-skyfies kan lei tot 'n valse aanhef wat elke paar sekondes opgespoor word. Die aanbevole instelling van 20chips maak die opsporing van vals aanhef 'n onwaarskynlike gebeurtenis. Die aanheflengtes vir Mode R en Mode SL is lank genoeg vir die aanbevole instelling om gebruik te word.
Daar is baie min voordeel daaraan om die aanhef langer as 20 skyfies te laat opspoor.
Die AFC is gedeaktiveer vir Model S met 'n kort aanhef en Model T. Dit verminder die insteltyd van die ontvanger en laat 'n langer aanhefbespeurinstelling toe. Met AFC gedeaktiveer, kan Mode T die aanbevole instelling van 20 skyfies gebruik. 'n Verstelling van 4 nibbles of 20 skyfies word gebruik vir Model S met 'n kort aanhef. Dit maak die waarskynlikheid van 'n vals aanhefopsporing effens hoër vir hierdie model.
Tabel 4. Aanhef Opsporing

EN-13757-4
minimum
Sinkroniseer
Woord
bruikbaar
aanhef
RX Vereffening Bespeur
min
Si443x Aanhef
Opsporinginstelling
nx (01) skyfies skyfies skyfies skyfies skyfies peusel skyfies
Mode S kort aanhef 15 30 6 24 8* 16 4 16
Model S lang aanhef 279 558 6 552 16 536 5 20
Model T (meter-ander) 19 38 6 32 8* 24 5 20
Modus R 39 78 6 72 16 56 5 20
*Let wel: AFC gedeaktiveer

Die ontvanger is gekonfigureer om saam te werk met 'n sender deur die minimum gespesifiseerde aanhef te gebruik. Dit verseker dat die ontvanger sal saamwerk met enige M-bus-voldoende sender.
Die Wireless M-Bus-spesifikasie vereis 'n baie lang aanhef vir Mode S1 van ten minste 558 skyfies. Dit sal ongeveer 17 ms neem net om die aanhef te versend. Die Si443x benodig nie so 'n lang aanhef nie en trek nie voordeel uit die lang aanhef nie. Terwyl die lang aanhef as opsioneel vir Mode S2 opgemerk word, is daar geen rede om 'n lang aanhef met die Si443x te gebruik nie. Indien eenrigtingkommunikasie verlang word, sal Modus T1 'n korter aanhef, hoër datatempo en langer batterylewe verskaf. Indien tweerigtingkommunikasie met Mode S2 vereis word, word 'n kort aanhef aanbeveel.
Let daarop dat die opsporingsdrempel vir Model S met 'n lang aanhef langer is as die aantal aanhef-knibbels wat vir Model S met 'n kort aanhef oorgedra word. Dit beteken dat die lang aanhef Mode S-ontvanger nie 'n aanhef van 'n kort aanhef Mode S-sender sal bespeur nie. Dit is nodig as die lang aanhef Mode S-ontvanger enige voordeel uit die lang aanhef wil ontvang.
Let daarop dat die kort aanhef Mode S-ontvanger die aanhef sal opspoor en pakkies van beide 'n kort aanhef Mode S sal ontvang
sender en 'n lang-aanhef Mode S-sender; dus, oor die algemeen, moet die meterleser die kort aanhef Mode S-ontvangerkonfigurasie gebruik.

Enkodering/Dekodering

Die draadlose M-bus-spesifikasie vereis twee verskillende enkoderingsmetodes. Manchester-kodering word gebruik vir Mode S en Mode R. Manchester-kodering word ook gebruik vir die ander-tot-meter-skakel in Model T. Die Model T meter-tot-ander-skakel gebruik 3 uit 6 enkoderings.
1. Manchester Geënkodeer/Dekodering
Manchester-kodering is histories algemeen in RF-stelsels om robuuste klokherwinning en -opsporing te verskaf met behulp van 'n eenvoudige en goedkoop modem. 'n Moderne hoëprestasie-radio soos die Si443x het egter nie Manchester-kodering nodig nie. Manchester-kodering word hoofsaaklik ondersteun vir versoenbaarheid met bestaande standaarde, maar die datatempo vir die Si443x word effektief verdubbel wanneer nie Manchester-kodering gebruik word nie.
Die Si443x ondersteun Manchester-kodering en dekodering van die hele pakkie in hardeware. Ongelukkig is die sinchronisasiewoord nie Manchester-geënkodeer nie. 'n Ongeldige Manchester-volgorde is doelbewus vir die sinchronisasiewoord gekies. Dit maak Manchester-kodering onversoenbaar met die meeste bestaande radio's, insluitend die Si443x. As gevolg hiervan moet die Manchester-kodering en -dekodering deur die MCU uitgevoer word. Elke greep op ongekodeerde data bestaan ​​uit agt databissies. Deur Manchester-kodering te gebruik, word elke databis geënkodeer in 'n twee-skyfie-simbool. Aangesien die geënkodeerde data agt skyfies op 'n slag na die radio-EIEU geskryf moet word, word een happie data op 'n slag geënkodeer en na die EIEU geskryf.
Tabel 5. Manchester Enkodering

data Ox12 0x34 grepe
Ox1 0x2 0x3 0x4 peusel
1 10 11 100 binêre
chip 10101001 10100110 10100101 10011010 binêre
EIEU OxA9 OxA6 OxA5 Ox9A blok

Elke greep wat oorgedra moet word, word een greep op 'n slag na die enkodeergreepfunksie oorgedra. Die enkodeergreepfunksie sal die enkodeer-knibbelfunksie twee keer oproep, eers vir die mees beduidende knabbel en dan vir die minste beduidende knabbel.
Manchester-kodering in sagteware is nie moeilik nie. Begin van die mees betekenisvolle bietjie, een word geënkodeer as 'n "01" chip volgorde. 'n Nul word geënkodeer as 'n "10" skyfie volgorde. Dit kan maklik bereik word deur 'n lus te gebruik en twee bisse te verskuif vir elke simbool. Dit is egter vinniger om net 'n eenvoudige 16-inskrywing-opsoektabel vir elke hap te gebruik. Die enkodeer Manchester nibble funksie kodeer 'n nibble van data en skryf dit dan na die EIEU. Die skyfies word omgekeer voordat dit aan die EIEU geskryf word om rekening te hou met die omgekeerde aanhefvereistes.
By ontvangs bestaan ​​elke greep in die EIEU uit agt skyfies en word gedekodeer in een happie data. Die leesblokfunksie lees een greep op 'n slag vanaf die EIEU en roep die dekodeergreepfunksie. Die skyfies word omgekeer nadat dit van die EIEU gelees is om rekening te hou met die omgekeerde aanhefvereistes. Elke greep Manchester-gekodeerde skyfies word gedekodeer in 'n happie data. Die gedekodeerde knabbel word na die RX-buffer geskryf deur die skryf knabbel RX-bufferfunksie te gebruik.
Let daarop dat beide geënkodeerde en dekodering een data-knibbel op 'n slag uitgevoer word. Enkodering na 'n buffer sal 'n bykomende buffer vereis twee keer die grootte van die ongekodeerde data. Enkodering en dekodering is baie vinniger as die vinnigste ondersteunde datatempo (100 k skyfies per sekonde). Aangesien die Si443x veelvuldige grepe lees en skryf na die EIEU ondersteun, is daar 'n klein oorhoofse koste om slegs enkelgreep lees en skryf te gebruik. Die bokoste is ongeveer 10 µs vir 100 geënkodeerde skyfies. Die voordeel is 'n RAM-besparing van 512 grepe.
2. Drie uit Ses Enkodering Dekodering
Die Drie-uit-Ses-enkoderingsmetode gespesifiseer in EN-13757-4 word ook in firmware op die MCU geïmplementeer. Hierdie enkodering word gebruik vir die hoëspoed (100 k skyfies per sekonde) Modus T van meter na ander. Model T bied die kortste transmissietyd en die langste batterylewe vir 'n draadlose meter.
Elke greep data wat oorgedra moet word, word in twee hakies verdeel. Die belangrikste knabbel word eerste geënkodeer en versend. Weereens, dit word geïmplementeer deur gebruik te maak van 'n enkodeergreepfunksie wat die encode nibble-funksie twee keer oproep.
Elke happie data word in 'n ses-skyfie-simbool geënkodeer. Die volgorde van ses-skyfie-simbole moet na die 8chip EIEU geskryf word.
Tydens enkodering word twee grepe data as vier nibbles geënkodeer. Elke peusel is 'n 6-skyfie simbool. Vier 6-skyfie-simbole word as drie grepe saamgevoeg.
Tabel 6. Drie uit Ses Enkodering

data 0x12 0x34 grepe
Ox1 0x2 0x3 0x4 peusel
chip 15 16 13 34 oktaal
1101 1110 1011 11100 binêre
EIEU 110100 11100010 11011100 binêre
0x34 OxE2 OxDC blok

In sagteware word die drie-uit-ses-kodering geïmplementeer met behulp van drie geneste funksies. Die enkodeergreepfunksie sal die enkodeer-knibbelfunksie twee keer oproep. Die enkodeer-knibbelfunksie gebruik 'n opsoektabel vir die ses-skyfie-simbool en skryf die simbool na die Shift Three of Six-funksies. Hierdie funksie implementeer 'n 16-skyfie skuifregister in sagteware. Die simbool word geskryf na die minste betekenisvolle greep van die skuifregister. Die register word twee keer na links geskuif. Dit word drie keer herhaal. Wanneer 'n volledige greep in die boonste greep van die skuifregister teenwoordig is, word dit omgekeer en na die EIEU geskryf.
Aangesien elke greep data geënkodeer is as een en 'n half gekodeerde grepe, is dit belangrik om die skuifregister aanvanklik skoon te maak sodat die eerste geënkodeerde grepe korrek is. As die pakkielengte 'n onewe getal is, sal daar, nadat alle grepe gekodeer is, steeds een knabbel in die skuifregister oorbly. Dit word met die posstuk hanteer soos in die volgende afdeling verduidelik.
Dekodering van die drie uit ses geënkodeerde is die omgekeerde prosedure. Tydens dekodering word drie geënkodeerde grepe in twee datagrepe gedekodeer. Die sagteware-skuifregister word weer gebruik om grepe van gedekodeerde data te versamel. 'n 64-inskrywing omgekeerde opsoektabel word vir dekodering gebruik. Dit gebruik minder siklusse, maar meer kodegeheue. Om 'n 16-inskrywing-opsoektabel vir die ooreenstemmende simbool te soek, neem aansienlik langer.
Postamble
Die draadlose M-bus-spesifikasie het spesifieke vereistes vir die posbus of sleepwa. Vir alle modusse is die minimum twee skyfies, en die maksimum is agt skyfies. Aangesien die minimum atoomeenheid vir die EIEU een greep is, word 'n 8-skyfie sleepwa gebruik vir Mode S en Mode R. Die Mode T postamble is agt skyfies as die pakkie lengte ewe is of vier skyfies as die pakkie lengte onewe is. Die vierskyfie-posstuk vir 'n vreemde pakkielengte voldoen aan die vereistes om ten minste twee afwisselende skyfies te hê.
Tabel 7. Posamble Lengte

Posamble Lengte (skyfies)
min maks Implementering skyfie volgorde
Modus S 2 8 8 1010101
Modus T 2 8 4 (vreemd) 101
8 (selfs) 1010101
Modus R 2 8 8 1010101
Pakkie hanteerder

Die pakkiehanteerder op die Si443x kan in 'n veranderlike pakkiewydtemodus of 'n vaste pakkiewydtemodus gebruik word. Die veranderlike pakkiewydte-modus vereis 'n pakkielengtegreep na die sinchronisasiewoord en opsionele kopgrepe. By ontvangs sal die Radio die lengtegreep gebruik om die einde van 'n geldige pakkie te bepaal. By uitsending sal die radio die lengteveld na die kopgrepe invoeg.
Die L-veld vir die draadlose M-bus-protokol kan nie vir die Si443x-lengteveld gebruik word nie. Eerstens is die L-veld nie die werklike pakkielengte nie. Dit is die aantal skakellaag loonvraggrepe wat nie die CRC-grepe of enkodering insluit nie. Tweedens word die L-veld self geënkodeer deur óf Manchester-kodering óf Drie uit Ses-kodering vir Mode T-meter na ander te gebruik.
Die implementering gebruik die pakkie hanteerder in vaste pakkie wydte af vir beide transmissie en ontvangs. By transmissie sal die PHY-laag die L-veld in die oordragbuffer lees en die aantal geënkodeerde grepe, insluitend die postamble, bereken. Die totale aantal geënkodeerde grepe wat oorgedra moet word, word na die Pakketlengte-register (0x3E) geskryf.
By ontvangs word die eerste twee geënkodeerde grepe gedekodeer, en die L-veld word na die ontvangbuffer geskryf. Die L-veld word gebruik om die aantal geënkodeerde grepe wat ontvang moet word, te bereken. Die aantal geënkodeerde grepe wat ontvang moet word, word dan na die Pakketlengte-register (0x3E) geskryf. Die posstuk word weggegooi.
Die MCU moet die L-veld dekodeer, die aantal geënkodeerde grepe bereken en die waarde na die Pakkielengte-register skryf voordat die kortste moontlike pakkielengte ontvang is. Die kortste toelaatbare L-veld vir die PHY-laag is 9, wat 12 ongekodeerde grepe gee. Dit gee 18 geënkodeerde grepe vir Model T. Die eerste twee grepe is reeds gedekodeer. Dus, die pakkie Lengte register moet opgedateer word in 16-grepe tye teen 100 kbps of 1.28 millisekondes. Dit is geen probleem vir 'n 8051 wat teen 20 MIPS loop nie.
Die aantal grepe wat ontvang moet word sluit nie die postamble in nie, behalwe vir die vier-chip postamble wat gebruik word vir Mode T-pakkies met 'n vreemde pakkielengte. Die ontvanger benodig dus nie 'n posstuk nie, behalwe vir die Model T-pakkies met onewe lengte. Hierdie postamble is slegs nodig om 'n heelgetal getal geënkodeerde grepe te gee. Die inhoud van die posstuk word geïgnoreer; dus, as die postamble nie versend word nie, sal vier skyfies geraas ontvang en geïgnoreer word. Aangesien die totale aantal geënkodeerde grepe beperk is tot 255 (0xFF), beperk die implementering die maksimum L-veld vir die verskillende modusse.
Tabel 8. Pakkiegroottelimiete

geënkodeer gedekodeer M-bus
grepe grepe L-veld
des blok des blok des blok
Modus S 255 FF 127 7 F 110 6E
Modus T (meter-ander) 255 FF 169 A9 148 94
Modus R 255 FF 127 7 F 110 6E

Hierdie limiete is gewoonlik ver bo die tipiese gebruiksgeval vir 'n draadlose meter. Die pakkielengte moet klein gehou word om die beste moontlike batterylewe te kry.
Daarbenewens kan die gebruiker die maksimum L-veld spesifiseer wat ontvang moet word (USER_RX_MAX_L_FIELD). Dit bepaal die vereiste grootte vir die ontvangbuffer (USER_RX_BUFFER_SIZE).
Om 'n maksimum L-veld van 255 te ondersteun, sal 'n ontvangbuffer van 290 grepe en 'n maksimum van 581 Manchester-gekodeerde grepe vereis. Die pakkiehanteerder sal gedeaktiveer moet word en die Pakkielengte-register kon nie in daardie geval gebruik word nie. Dit is haalbaar, maar dit is geriefliker om die pakkiehanteerder te gebruik, indien moontlik.

EIEU Gebruik

Die Si4431 bied 'n EIEU van 64 grepe vir oordrag en ontvang. Aangesien die aantal geënkodeerde grepe 255 is, kan 'n hele geënkodeerde pakkie nie binne die 64-grepe-buffer pas nie.
Oordrag
By transmissie word die totale aantal geënkodeerde grepe bereken. As die totale aantal geënkodeerde grepe, insluitend die postamble, minder as 64 grepe is, word die hele pakkie na die EIEU geskryf en slegs die pakkie gestuur onderbreking is geaktiveer. Die meeste kort pakkies sal in een EIEU-oordrag gestuur word.
As die aantal geënkodeerde grepe groter as 64 is, sal verskeie EIEU-oordragte nodig wees om die pakkie te stuur. Die eerste 64 grepe word na die EIEU geskryf. Die pakkie gestuur en TX EIEU amper leeg onderbrekings is geaktiveer. Die TX EIEU amper leeg-drempel is gestel op 16 grepe (25%). By elke IRQ-gebeurtenis word die status 2-register gelees. Die Pakkie Gestuur-bis word eerste gekontroleer, en as die pakkie nie heeltemal gestuur is nie, word die volgende 48 grepe geënkodeerde data na die EIEU geskryf. Dit gaan voort totdat alle geënkodeerde grepe geskryf is en die Pakket gestuur onderbreking plaasvind.
1. Ontvangs
By ontvangs is aanvanklik slegs die Sync Word-onderbreking geaktiveer. Nadat die sinkroniseringswoord ontvang is, word die sinkroniseringswoordonderbreking gedeaktiveer en die EIEU Amper Vol onderbreking is geaktiveer. Die EIEU byna volle drempel is aanvanklik op 2 grepe gestel. Die eerste EIEU Amper Vol onderbreking word gebruik om te weet wanneer die twee lengtegrepe ontvang is. Sodra die lengte ontvang is, word die lengte gedekodeer en die aantal geënkodeerde grepe word bereken. Die RX EIEU amper Volle drempel word dan op 48 grepe gestel. Die RX EIEU is amper vol en geldige pakkie-onderbrekings is geaktiveer. By die volgende IRQ-gebeurtenis word die status 1-register gelees. Eerstens word die Geldige Pakkie-bis gekontroleer, en dan word die EIEU Amper Vol-bis gekontroleer. As slegs die RX EIEU Amper Vol bis gestel is, word die volgende 48 grepe van die EIEU gelees. As die geldige pakkiebis gestel is, word die res van die pakkie uit die EIEU gelees. Die MCU hou rekord van hoeveel grepe gelees is en hou op lees na die laaste grepe.

Data skakel laag

Die dataskakellaagmodule implementeer 'n 13757-4:2005-skakellaag. Die dataskakellaag (LINK) verskaf 'n koppelvlak tussen die fisiese laag (PHY) en die toepassingslaag (AL).
Die dataskakellaag voer die volgende funksies uit:

  • Verskaf funksies wat data tussen PHY en AL oordra
  • Genereer CRC's vir uitgaande boodskappe
  • Bespeur CRC-foute in inkomende boodskappe
  • Verskaf fisiese adressering
  • Erken oordragte vir tweerigting kommunikasiemodusse
  • Raam datastukke
  • Bespeur raamfoute in inkomende boodskappe
Skakellaagraamformaat

Die Wireless M-Bus-raamformaat wat in EN 13757-4:2005 gebruik word, is afgelei van die FT3 (Frame Type 3)-raamformaat van IEC60870-5-2. Die raam bestaan ​​uit een of meer blokke data. Elke blok bevat 'n 16-bis CRC-veld. Die eerste blok is 'n vaste-lengte blok van 12 grepe wat die L-veld, C-veld, M-veld en A-veld insluit.

  1. L-veld
    Die L-veld is die lengte van die skakellaagdata loonvrag. Dit sluit nie die L-veld self of enige van die CRC-grepe in nie. Dit sluit wel die L-veld, C-veld, M-veld en A-veld in. Dit is deel van die PHY loonvrag.
    Omdat die aantal geënkodeerde grepe beperk is tot 255 grepe, is die maksimum ondersteunde waarde vir die M-veld 110 grepe vir Manchester-gekodeerde data en 148 grepe vir Mode T Drie-Uit-Ses geënkodeerde data.
    Die skakellaag is verantwoordelik vir die berekening van die L-veld tydens transmissie. Die skakellaag sal die L-veld gebruik by ontvangs.
    Let daarop dat die L-veld nie die PHY-loonvraglengte of die aantal geënkodeerde grepe aandui nie. By transmissie sal die PHY die PHY loonvraglengte en die aantal geënkodeerde grepe bereken. By ontvangs sal die PHY die L-veld dekodeer en die aantal grepe om te dekodeer bereken.
  2. C-veld
    Die C-veld is die raambeheerveld. Hierdie veld identifiseer die raamtipe en word gebruik vir die skakeldata-uitruildiens-primitiewe. Die C-veld dui die raamtipe aan – STUUR, BEVESTIG, VERSOEK of REAGEER. In die geval van SEND- en VERSOEK-rame, dui die C-veld aan of 'n BEVESTIG of REAGEER verwag word.
    Wanneer die basiese Link TX-funksie gebruik word, kan enige waarde van C gebruik word. Wanneer die Link Service Primitives gebruik word, word die C-veld outomaties gevul volgens EN 13757-4:2005.
  3. M-veld
    Die M-veld is die vervaardiger se kode. Vervaardigers kan 'n drieletterkode van die volgende versoek web adres: http://www.dlms.com/flag/INDEX.HTM Elke karakter van die drieletterkode word as vyf bisse geënkodeer. Die 5-bis-kode kan verkry word deur die ASCII-kode te neem en 0x40 (“A”) af te trek. Die drie 5-bis-kodes word aaneengeskakel om 15-bis te maak. Die belangrikste bietjie is nul.
  4. A-veld
    Die adresveld is 'n unieke 6-grepe-adres vir elke toestel. Die unieke adres moet deur die vervaardiger toegeken word. Dit is die verantwoordelikheid van elke vervaardiger om te verseker dat elke toestel 'n unieke 6-grepe-adres het. Die adres vir Stuur en Versoek rame is die selfadres van die meter of ander toestel. Die bevestiging-antwoorddatarame word gestuur deur die adres van die oorspronklike toestel te gebruik.
  5. CI-veld
    Die CI-veld is die toepassingsopskrif en spesifiseer die tipe data in die toepassingsdataloonvrag. Terwyl EN13757-4:2005 'n beperkte aantal waardes spesifiseer, sal die Link Service Primitives toelaat dat enige waarde gebruik word.
  6. CRC
    Die CRC word gespesifiseer in EN13757-4:2005.
    Die CRC-polinoom is:
    X16 + x13 + x12 + x11 + x10 + x8 +x6 + x5 +x2 + 1
    Let daarop dat die M-Bus CRC oor elke 16-grepe blok bereken word. Die resultaat is dat elke 16 grepe data vereis dat 18 grepe versend word,
Bykomende inligting

Vir bykomende inligting oor die skakellaagimplementering, sien "AN452: Wireless M-Bus Stack Programmers Guide".

Kragbestuur

Figuur 2 toon die kragbestuurtydlyn vir 'n meter bvample met behulp van die Mode T1.

Die MCU moet waar moontlik in slaapmodus wees om energie te bespaar. In hierdie example, die MCU slaap wanneer die RTC aan die gang is, wanneer daar gewag word op die radiokristal opstart, en wanneer dit vanaf die EIEU uitsaai. Die MCU sal wakker word van die EZRadioPRO IRQ-sein wat aan 'n Port Match-opwekking gekoppel is.
Wanneer boodskappe langer as een blok oorgedra word, moet die MCU wakker word om die EIEU te vul (gebaseer op die EIEU byna leë onderbreking) en dan terug te gaan slaap.
Die MCU moet in Idle-modus wees wat vanaf die laekrag-ossillator of burst-modus-ossillator loop wanneer dit vanaf die ADC lees. Die ADC benodig 'n SAR-horlosie.
Wanneer dit nie gebruik word nie, moet die EZRadioPRO in afskakelmodus wees met die SDN-pen hoog aangedryf. Dit vereis 'n vaste verbinding met die MCU. Die EZ Radio Pro-registers word nie in afskakelmodus bewaar nie; dus, die EZRadioPro word geïnisialiseer op elke RTC-interval. Die inisiasie van die Radio neem minder as 100 µs en bewaar 400 nA. Dit lei tot 'n 10 µJ energiebesparing, gebaseer op 'n 10-sekonde interval.
Die EZRadioPRO kristal neem ongeveer 16 ms vir 'n POR. Dit is lank genoeg om die CRC vir ongeveer agt blokke te bereken. Die MCU sal weer aan die slaap raak as dit alle CRC's voltooi voordat die kristal gestabiliseer het. As enkripsie vereis word, kan dit ook begin word terwyl daar op die kristal ossillator gewag word.
Die MCU moet teen 20 MHz loop met die lae-krag ossillator vir die meeste take. Take wat 'n presiese uitteltyd vereis, moet die presisie-ossillator en ledige modus gebruik in plaas van slaapmodus. Die RTC bied genoeg resolusie vir die meeste take. Die kragbestuurtydlyn vir die T2 meter exampDie toepassing word in Figuur 3 getoon.

Die transceiver-implementering moet geoptimaliseer word vir die normale geval wanneer die meter wakker word en daar geen leser teenwoordig is nie. Die minimum/maksimum ACK-time-outs is lank genoeg sodat dit moontlik is om die C8051F930 RTC te gebruik en die MCU in slaapmodus te plaas.
Bou-opsies word verskaf vir net- of USB-aangedrewe lesers wat nie slaapmodus hoef te gebruik nie. Die ledige modus sal in plaas van slaap gebruik word sodat die USB en UART die MCU kan onderbreek.

SILICON LABS Wireless M-BUS sagteware-implementering AN451-1

Simplicity Studio
Een-klik toegang tot MCU en draadlose gereedskap, dokumentasie, sagteware, bronkode biblioteke en meer. Beskikbaar vir Windows,
Mac en Linux!

IoT-portefeulje Kwaliteit
IoT-portefeulje
www.silabs.com/IoT
SW/HW
www.silabs.com/simplicity
Kwaliteit
www.silabs.com/quality
Ondersteuning en gemeenskap
community.silabs.com

Disclaimer
Silicon Labs beoog om kliënte te voorsien van die nuutste, akkurate en diepgaande dokumentasie van alle randapparatuur en modules wat beskikbaar is vir stelsel- en sagteware-implementeerders wat die Silicon Labs-produkte gebruik of van voorneme is om te gebruik. Karakteriseringsdata, beskikbare modules en randapparatuur, geheuegroottes en geheue-adresse verwys na elke spesifieke toestel, en “Tipiese” parameters wat verskaf word, kan en verskil in verskillende toepassings. Toepassing bvampLese wat hierin beskryf word, is slegs vir illustratiewe doeleindes. Silicon Labs behou die reg voor om veranderinge aan te bring sonder verdere kennisgewing en beperking aan produkinligting, spesifikasies en beskrywings hierin, en gee geen waarborge ten opsigte van die akkuraatheid of volledigheid van die ingeslote inligting nie. Silicon Labs sal geen aanspreeklikheid hê vir die gevolge van die gebruik van die inligting wat hierin verskaf word nie. Hierdie dokument impliseer of druk nie kopiereglisensies uit wat hieronder toegestaan ​​word om enige geïntegreerde stroombane te ontwerp of te vervaardig nie. Die produkte is nie ontwerp of gemagtig om binne enige lewensondersteuningstelsel gebruik te word sonder die spesifieke skriftelike toestemming van Silicon Labs nie. 'n "Lewensondersteuningstelsel" is enige produk of stelsel wat bedoel is om lewe en/of gesondheid te ondersteun of te onderhou, wat, indien dit misluk, redelikerwys verwag kan word om aansienlike persoonlike besering of dood tot gevolg te hê. Silicon Labs-produkte is nie ontwerp of gemagtig vir militêre toepassings nie. Silicon Labs-produkte sal onder geen omstandighede in massavernietigingswapens gebruik word nie, insluitend (maar nie beperk nie tot) kern-, biologiese of chemiese wapens, of missiele wat in staat is om sulke wapens te lewer nie.
Handelsmerkinligting
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs®, en die Silicon Labs-logo®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, Energy Micro-logo en kombinasies daarvan, "die wêreld se mees energievriendelike mikrobeheerders", Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, die Telegesis Logo®, USBXpress®, en ander is handelsmerke of geregistreerde handelsmerke van Silicon Labs. ARM, CORTEX, Cortex-M3 en thumbs is handelsmerke of geregistreerde handelsmerke van ARM Holdings. Keil is 'n geregistreerde handelsmerk van ARM Beperk. Alle ander produkte of handelsname wat hierin genoem word, is handelsmerke van hul onderskeie houers.SILICON LABS logo

Silicon Laboratories Inc.
400 Wes Cesar Chavez
Austin, TX 78701
VSA
http://www.silabs.com

Dokumente / Hulpbronne

SILICON LABS Wireless M-BUS sagteware-implementering AN451 [pdf] Gebruikersgids
SILICON LABS, C8051, MCU, en, EZRadioPRO, Wireless M-bus, Wireless, M-BUS, Sagteware, Implementering, AN451

Verwysings

Los 'n opmerking

Jou e-posadres sal nie gepubliseer word nie. Vereiste velde is gemerk *