AN451
DRAADLOZE M-BUS SOFTWARE IMPLEMENTERING
Ynlieding
Dizze applikaasjenota beskriuwt de ymplemintaasje fan Silicon Labs fan Wireless M-Bus mei in Silicon Labs C8051 MCU en EZRadioPRO®. Wireless M-bus is in Jeropeeske standert foar tapassingen foar meterlêzen mei de 868 MHz frekwinsjeband.
Stack Lagen
Wireless M-Bus brûkt it 3-laach IEC-model, dat in subset is fan it 7-laach OSI-model (sjoch figuer 1).
De fysike (PHY) laach is definiearre yn EN 13757-4. De fysike laach definiearret hoe't de bits wurde kodearre en oerdroegen, de skaaimerken fan RF-modem (chiprate, preambule en syngronisaasjewurd), en RF-parameters (modulaasje, sintrumfrekwinsje en frekwinsjeôfwiking).
De PHY-laach wurdt ymplementearre mei in kombinaasje fan hardware en firmware. De EZRadioPRO fiert alle RF- en modemfunksjes út. De EZRadioPRO wurdt brûkt yn FIFO-modus mei de pakkethanneler. De MbusPhy.c-module leveret SPI-ynterface, kodearring / dekodearring, blokkearje lêzen / skriuwe, en pakketferwurking en beheart de transceiver-staten.
De M-Bus Data keppeling laach wurdt ymplemintearre yn de MbusLink.c module. De ynterface foar M-Bus-applikaasjeprogrammearring bestiet út iepenbiere funksjes dy't kinne wurde oproppen fanút de applikaasjelaach yn 'e haadtried. De MbusLink-module ymplementearret ek de Data Link Layer. De gegevenskeppelingslaach sil gegevens fan 'e applikaasje TX-buffer formatearje en kopiearje nei de MbusPhy TX-buffer, en de fereaske kopteksten en CRC's tafoegje.
De applikaasjelaach sels is gjin diel fan 'e M-bus-firmware. De applikaasjelaach definiearret hoe't in breed ferskaat oan gegevens opmakke wurde moat foar oerdracht. De measte meters hoege mar ien of twa soarten gegevens oer te stjoeren. It tafoegjen fan in grutte hoemannichte koade om elke soart gegevens oan 'e meter te foldwaan soe unnedige koade en kosten tafoegje oan' e meter. It kin mooglik wêze om in bibleteek of in koptekst te ymplementearjen file mei in útputtende list fan gegevenstypen. De measte meterklanten witte lykwols krekt hokker soarte gegevens se moatte ferstjoere en kinne ferwize nei de standert foar opmaakdetails. In universele lêzer as sniffer kin in folsleine set fan tapassingsgegevenstypen ymplementearje op 'e PC GUI. Om dizze redenen wurdt de applikaasjelaach ymplementearre mei example applikaasjes foar in meter en lêzer.
Required Standards
- EN 13757-4
EN 13757-4
Kommunikaasjesysteem foar meters en ôflêzen fan meters
Diel 4: Draadloze meterlêzing
Radiometerlêzing foar operaasje yn 'e 868 MHz oant 870 MHz SRD-band - EN 13757-3
Kommunikaasjesysteem foar meters en ôflêzen fan meters
Diel 3: Tawiisde applikaasjelaach - IEC 60870-2-1:1992
Telecontrol apparatuer en systemen
Diel 5: Oerdrachtprotokollen
Seksje 1: Ferbiningproseduere - IEC 60870-1-1:1990
Telecontrol apparatuer en systemen
Diel 5: Oerdrachtprotokollen
Seksje 1: Transmission frame formaten
Definysjes
- M-bus—M-Bus is in bedrade standert foar meterlêzen yn Europa.
- Wireless M-Bus-Wireless M-Bus foar meterlêzenapplikaasjes yn Jeropa.
- PHY-Physical Layer definiearret hoe't gegevensbits en bytes wurde kodearre en oerdroegen.
- API—Applikaasje Programmer ynterface.
- LINK—Data Link Layer definiearret hoe't blokken en frames wurde oerdroegen.
- CRC—Cyclic Redundancy Check.
- FSK—Frekwinsje Shift Keying.
- Sjip—De lytste ienheid fan oerdroegen gegevens. Ien gegevensbit wurdt kodearre as meardere chips.
- Module—AC koade boarne .c file.
M-Bus PHY Funksjonele beskriuwing
Preambule Sequence
De Preambule-sekwinsje oantsjutte troch de M-bus-spesifikaasje is in hiel getal dat nullen en enen ôfwikselje. In ien wurdt definiearre as de hegere frekwinsje, en in nul wurdt definiearre as de legere frekwinsje.
nx (01)
De Preamble-opsjes foar de Si443x is in hiel oantal nibbles besteande út ôfwikseljende enen en nullen.
nx (1010)
In preambule mei in ekstra liedende soe gjin probleem wêze, mar dan soe it syngronisaasjewurd en de lading mei ien bit ferkeard wurde.
De oplossing is om it hiele pakket om te kearen troch it motorbit yn te stellen yn it Modulation Control 2-register (0x71). Dit sil de preambule, syngronisaasjewurd en TX/RX-gegevens omkeare. As gefolch moatte de gegevens omkeard wurde by it skriuwen fan de TX-gegevens of it lêzen fan de RX-gegevens. Ek wurdt it syngronisaasjewurd omkeard foar it skriuwen nei de Si443x Syngronisaasjewurdregisters.
Syngronisaasje Wurd
It syngronisaasjewurd fereaske troch EN-13757-4 is of 18 chips foar Mode S en Mode R of 10 chips foar Model T. It syngronisaasjewurd foar de Si443x is 1 oan 4 bytes. Om't it syngronisaasjewurd lykwols altyd foarôfgiet troch de oanhef, kinne de lêste seis bits fan 'e oanhef beskôge wurde as ûnderdiel fan it syngronisaasjewurd; sa, it earste syngronisaasje wurd wurdt opknapt troch trije werhellingen fan in nul folge troch in ien. It syngronisaasjewurd wurdt oanfolle foar it skriuwen nei de Si443x-registers.
Tabel 1. Syngronisaasjewurd foar Mode S en Mode R
EN 13757-4 | 00 | 01110110 | 10010110 | binêr |
00 | 76 | 96 | hex | |
pad mei (01) x 3 | 01010100 | 01110110 | 10010110 | binêr |
54 | 76 | 96 | hex | |
oanfolling | 10101011 | 10001001 | 01101001 | binêr |
AB | 89 | 69 | hex |
Tabel 2. Syngronisaasje Wurd foar Mode T Meter nei Oare
SYNKJE | SYNKJE | SYNKJE |
WURD | WURD | WURD |
3 | 2 | 1 |
Transmit Preamble Lengte
De minimale preambule is spesifisearre foar fjouwer ferskillende operaasjemodi. It is akseptabel om in oanhef langer te hawwen as oantsjutte. It subtrahearjen fan seis chips foar de preambule jout it minimale oantal chips foar de Si443x-preambule. De ymplemintaasje foeget twa ekstra nibbles fan preambule ta yn alle koarte preambelmodi om preambeldeteksje en ynteroperabiliteit te ferbetterjen. De preambule op Mode S mei in lange preambule is hiel lang; sa, de minimale preambule wurdt brûkt. De preambulengte yn nibbles wurdt skreaun yn it register Preamble Length (0x34). It preambule-lingteregister bepaalt de preambule allinich by oerdracht. De minimale spesifikaasjes en ynstellings foar preambellange wurde gearfette yn Tabel 3.
tabel 3. Transmit Preamble Length
EN-13757-4 minimum |
Si443x Preambule Set ing |
Syngronisearje Wurd |
Totaal | ekstra | |||
nx (01) | chips | knibbels | chips | chips | chips | chips | |
Mode S koarte preambule | 15 | 30 | 8 | 32 | 6 | 38 | 8 |
Mode S lange preambule | 279 | 558 | 138 | 552 | 6 | 558 | 0 |
Mode T (meter-oare) | 19 | 38 | 10 | 40 | 6 | 46 | 8 |
Mode R | 39 | 78 | 20 | 80 | 6 | 86 | 8 |
De minimale preambule foar ûntfangst wurdt bepaald troch it register Preambule Detection Control (0x35). By ûntfangst moat it oantal bits yn it syngronisaasjewurd lutsen wurde fan de oantsjutte minimale preambule om de brûkbere preambule te bepalen. De minimale settling tiid fan de ûntfanger is 16-chips as AFC is ynskeakele of 8-chips as AFC is útskeakele. De fêstigingstiid fan 'e ûntfanger wurdt ek lutsen fan' e brûkbere preambule om de minimale ynstelling foar it register foar preambeldeteksjekontrôle te bepalen.
De kâns op in falske preambule hinget ôf fan 'e ynstelling fan it register foar preambeldeteksjekontrôle. In koarte ynstelling fan 8-chips kin resultearje yn in falske preambule ûntdutsen elke pear sekonden. De oanrikkemandearre ynstelling fan 20chips makket falske preambeldeteksje in ûnwierskynlik barren. De preambulten foar Mode R en Mode SL binne lang genôch foar de oanbefellende ynstelling om te brûken.
D'r is heul min foardiel om de preambule langer te meitsjen as 20 chips.
De AFC is útskeakele foar Model S mei in koarte preambule en Model T. Dit ferminderet de ûntfangsttiid en makket in langere preambule-deteksje ynstelling mooglik. Mei AFC útskeakele, kin Mode T brûke de rekommandearre ynstelling fan 20 chips. In ynstelling fan 4 nibbles of 20 chips wurdt brûkt foar Model S mei in koarte preambule. Dit makket de kâns op in falske preambeldeteksje wat heger foar dit model.
tabel 4. Preambule Detection
EN-13757-4 minimum |
Syngronisearje Wurd |
brûkber preambule |
RX Settling | Detect min |
Si443x Preambule Opspoaren ynstelle |
|||
nx (01) | chips | chips | chips | chips | chips | knibbels | chips | |
Mode S koarte preambule | 15 | 30 | 6 | 24 | 8* | 16 | 4 | 16 |
Model S lange preambule | 279 | 558 | 6 | 552 | 16 | 536 | 5 | 20 |
Model T (meter-oare) | 19 | 38 | 6 | 32 | 8* | 24 | 5 | 20 |
Mode R | 39 | 78 | 6 | 72 | 16 | 56 | 5 | 20 |
*Noat: AFC útskeakele |
De ûntfanger is konfigureare om te wurkjen mei in stjoerder mei de minimale spesifisearre preambule. Dit soarget derfoar dat de ûntfanger sil ynteroperearje mei elke M-bus-kompatibele stjoerder.
De Wireless M-Bus-spesifikaasje fereasket in heul lange preambule foar Mode S1 fan op syn minst 558 chips. Dit sil sawat 17 ms duorje om de preambule te ferstjoeren. De Si443x hat net sa'n lange preambule nedich en profiteart net fan 'e lange preambule. Wylst de lange preambule wurdt opmurken as opsjoneel foar Mode S2, is d'r gjin reden om in lange preambule te brûken mei de Si443x. As ien-wei kommunikaasje is winske, Mode T1 sil foarsjen in koartere preambule, hegere gegevens taryf, en langer batterij libben. As twa-wei kommunikaasje mei help fan Mode S2 is nedich, in koarte preambule wurdt oanrikkemandearre.
Merk op dat de deteksjedrompel foar Model S mei in lange preambule langer is dan it oantal preambule-nibbles dat wurdt oerbrocht foar Model S mei in koarte preambule. Dit betsjut dat de lange preambule Mode S-ûntfanger gjin preambule sil ûntdekke fan in koarte preambule Mode S-stjoerder. Dit is nedich as de lange preambule Mode S-ûntfanger elk foardiel fan 'e lange preambule moat krije.
Tink derom dat de koarte preambule Mode S-ûntfanger de preambule sil detectearje en pakketten ûntfangt fan sawol in koarte preambule Mode S
stjoerder en in lange preambule Mode S stjoerder; sa, yn it algemien, de meter lêzer moat brûke de koarte preambule Mode S ûntfanger konfiguraasje.
Kodearring / Decoding
De Wireless M-bus spesifikaasje fereasket twa ferskillende kodearring metoaden. Manchester kodearring wurdt brûkt foar Mode S en Mode R. Manchester kodearring wurdt ek brûkt foar de oare-to-meter keppeling yn Model T. De Model T meter-to-oare keppeling brûkt 3 fan 6 kodearrings.
1. Manchester kodearre / Decoding
Manchester-kodearring is histoarysk gewoan yn RF-systemen om robúste klokherstel en folgjen te leverjen mei in ienfâldich en goedkeap modem. In moderne radio mei hege prestaasjes lykas de Si443x hat lykwols gjin Manchester-kodearring nedich. Manchester-kodearring wurdt primêr stipe foar kompatibiliteit mei besteande noarmen, mar de gegevensrate foar de Si443x wurdt effektyf ferdûbele as net Manchester-kodearring brûkt wurdt.
De Si443x stipet Manchester kodearring en dekodearring fan it hiele pakket yn hardware. Spitigernôch is it syngronisaasjewurd net Manchester kodearre. In ûnjildige Manchester-sekwinsje waard mei opsetsin keazen foar it syngronisaasjewurd. Dit makket Manchester kodearring ynkompatibel mei de measte besteande radio's, ynklusyf de Si443x. As gefolch moatte de Manchester kodearring en dekodearring wurde útfierd troch de MCU. Elke byte op net-kodearre gegevens bestiet út acht gegevensbits. Mei help fan Manchester kodearring, elke gegevens bit wurdt kodearre yn in twa-chip symboal. Sûnt de kodearre gegevens moatte wurde skreaun nei de radio FIFO acht chips tagelyk, ien nibble fan gegevens wurdt kodearre en skreaun nei de FIFO op in tiid.
tabel 5. Manchester Kodearring
data | ox12 | 0x34 | bytes | ||
ox1 | 0x2 | 0x3 | 0x4 | knibbels | |
1 | 10 | 11 | 100 | binêr | |
chip | 10101001 | 10100110 | 10100101 | 10011010 | binêr |
FIFO | OxA9 | OxA6 | OxA5 | Ox9A | hex |
Elke byte dy't oerdroegen wurde wurdt ien byte tagelyk trochjûn oan de kodearringbytefunksje. De kodearring byte funksje sil de kodearring nibble funksje twa kear neame, earst foar de meast wichtige nibble en dan foar de minst wichtige nibble.
Manchester kodearring yn software is net dreech. Utgeande fan de meast wichtige bit, men wurdt kodearre as in "01" chip sequence. In nul wurdt kodearre as in "10" chip sequence. Dit kin maklik berikt wurde mei help fan in loop en ferskowing twa-bits foar eltse symboal. It is lykwols flugger om gewoan in ienfâldige 16-yngongstafel te brûken foar elke nibble. De kodearje Manchester nibble-funksje kodearret in nibble fan gegevens en skriuwt it dan nei de FIFO. De chips wurde omkeard foardat se skriuwe nei de FIFO om rekken te hâlden mei de easken foar omkearde preambule.
By ûntfangst bestiet elke byte yn 'e FIFO út acht chips en wurdt dekodearre yn ien nibble fan gegevens. De lêsblokfunksje lêst ien byte tagelyk út 'e FIFO en ropt de dekodearjen bytefunksje op. De chips wurde omkeard nei it lêzen fan 'e FIFO om rekken te hâlden mei de easken foar omkearde preambule. Elke byte fan Manchester kodearre chips wurdt dekodearre yn in nibble fan gegevens. De dekodearre nibble wurdt skreaun nei de RX buffer mei de skriuw nibble RX buffer funksje.
Merk op dat sawol kodearre as dekodearjen ien gegevens nibble tagelyk wurde útfierd op 'e flecht. Kodearjen nei in buffer soe in ekstra buffer fereaskje twa kear de grutte fan 'e net-kodearre gegevens. Kodearjen en dekodearjen is folle rapper dan de fluchste stipe gegevensrate (100 k chips per sekonde). Sûnt de Si443x stipet meardere-byte lêzen en skriuwt nei de FIFO, d'r is in lytse overhead yn it brûken fan allinnich single-byte lêzen en skriuwt. De overhead is sawat 10 µs foar 100 kodearre chips. It foardiel is in RAM-besparring fan 512 bytes.
2. Trije út seis kodearring Decoding
De trije-út-fan-seis kodearringmetoade spesifisearre yn EN-13757-4 wurdt ek ymplementearre yn firmware op 'e MCU. Dizze kodearring wurdt brûkt foar de hege snelheid (100 k chips per sekonde) Mode T fan meter nei oare. Model T leveret de koartste oerdrachttiid en de langste batterijlibben foar in draadloze meter.
Elke byte fan gegevens dy't wurde oerdroegen wurdt ferdield yn twa nibbles. De meast wichtige nibble wurdt kodearre en earst oerdroegen. Nochris, dit wurdt ymplementearre mei in kodearring byte funksje dy't ropt de kodearring nibble funksje twa kear.
Elke nibble fan gegevens wurdt kodearre yn in seis-chip symboal. De folchoarder fan seis-chip symboalen moatte wurde skreaun oan de 8chip FIFO.
By kodearring wurde twa bytes oan gegevens kodearre as fjouwer nibbles. Elts nibble is in 6-chip symboal. Fjouwer 6chip symboalen wurde aggregearre as trije bytes.
tabel 6. Trije fan seis kodearring
data | 0x12 | 0x34 | bytes | ||||
ox1 | 0x2 | 0x3 | 0x4 | knibbels | |||
chip | 15 | 16 | 13 | 34 | oktaal | ||
1101 | 1110 | 1011 | 11100 | binêr | |||
FIFO | 110100 | 11100010 | 11011100 | binêr | |||
0x34 | OxE2 | OxDC | hex |
Yn software wurdt de trije-fan-seis kodearring ymplementearre mei trije nestele funksjes. De kodearring byte funksje sil neame de kodearring nibble funksje twa kear. De encode nibble funksje brûkt in opsykje tafel foar de seis-chip symboal en skriuwt it symboal nei de Shift Trije fan seis funksjes. Dizze funksje ymplemintearret in 16-chip shift register yn software. It symboal wurdt skreaun nei de minst signifikante byte fan it skiftregister. It register wurdt twa kear nei links skood. Dit wurdt trije kear werhelle. As in folsleine byte oanwêzich is yn 'e boppeste byte fan it skiftregister, wurdt it omkeard en skreaun nei de FIFO.
Sûnt elke byte fan gegevens wurdt kodearre as ien en in heal kodearre bytes, is it wichtich om te wiskjen it shift register earstoan sadat de earste kodearre byte is korrekt. As de pakketlingte in ûneven getal is, sil der, nei it kodearjen fan alle bytes, noch ien nibbel wêze yn it skiftregister. Dit wurdt behannele mei de postamble lykas útlein yn 'e folgjende paragraaf.
It dekodearjen fan de trije fan de seis kodearre is de omkearde proseduere. By dekodearjen wurde trije kodearre bytes dekodearre yn twa databytes. It software-skiftregister wurdt wer brûkt om bytes fan dekodearre gegevens te aggregearjen. In omkearde opsyktabel mei 64 yngongen wurdt brûkt foar dekodearjen. Dit brûkt minder syklusen, mar mear koade ûnthâld. It sykjen fan in opsyktabel mei 16 yngongen foar it oerienkommende symboal duorret folle langer.
Postamble
De Wireless M-bus spesifikaasje hat spesifike easken foar de postamble of trailer. Foar alle modes is it minimum twa chips, en it maksimum is acht chips. Sûnt de minimale atoomienheid foar de FIFO is ien byte, in 8-chip trailer wurdt brûkt foar Mode S en Mode R. De Mode T postamble is acht chips as de pakket lingte is even of fjouwer chips as de pakket lingte is ûneven. De fjouwer-chip postamble foar in ûneven pakket lingte foldocht oan de easken fan it hawwen fan op syn minst twa wikseljende chips.
tabel 7. Postamble Length
Postamble Lengte (chips) | |||||
min | max | Útfiering | chip folchoarder | ||
Mode S | 2 | 8 | 8 | 1010101 | |
Mode T | 2 | 8 | 4 | (ûneven) | 101 |
8 | (sels) | 1010101 | |||
Mode R | 2 | 8 | 8 | 1010101 |
Pakkethanneler
De pakkethanneler op 'e Si443x kin brûkt wurde yn in modus foar fariabele pakketbreedte as in modus foar fêste pakketbreedte. De modus foar fariabele pakketbreedte fereasket in byte fan pakketlange nei it syngronisaasjewurd en opsjonele koptekstbytes. By ûntfangst sil de Radio de lingtebyte brûke om it ein fan in jildich pakket te bepalen. By oerdracht sil de radio it lingtefjild ynfoegje nei de koptekstbytes.
It L-fjild foar it draadloze M-bus-protokol kin net brûkt wurde foar it lingtefjild fan Si443x. Earst is it L-fjild net de eigentlike pakketlange. It is it oantal ferbiningslaach-ladingsbytes net ynklusyf de CRC-bytes of kodearring. Twad, it L-fjild sels wurdt kodearre mei of Manchester kodearring of Trije út seis kodearring foar Mode T meter nei oare.
De ymplemintaasje brûkt de pakketbehearder yn fêste pakketbreedtemodus foar sawol oerdracht as ûntfangst. By oerdracht sil de PHY-laach it L-fjild yn 'e ferstjoerbuffer lêze en it oantal kodearre bytes berekkenje, ynklusyf de postamble. It totale oantal kodearre bytes dat moat wurde oerdroegen wurdt skreaun nei it pakketlangeregister (0x3E).
By ûntfangst wurde de earste twa kodearre bytes dekodearre, en it L-fjild wurdt skreaun nei de ûntfangende buffer. It L-fjild wurdt brûkt om it oantal te ûntfangen kodearre bytes te berekkenjen. It oantal te ûntfangen kodearre bytes wurdt dan skreaun nei it register fan pakketlange (0x3E). De postamble wurdt fuorthelle.
De MCU moat it L-fjild ûntsiferje, it oantal kodearre bytes berekkenje, en de wearde skriuwe yn it pakketlangeregister foardat de koartst mooglike pakketlingte is ûntfongen. It koartste tastiene L-fjild foar de PHY-laach is 9, wat 12 net-kodearre bytes jout. Dit jout 18 kodearre bytes foar Model T. De earste twa bytes binne al dekodearre. Sa, it pakket Lengte register moat wurde bywurke yn 16-byte tiden op 100 kbps of 1.28 millisekonden. Dit is gjin probleem foar in 8051 dy't rint op 20 MIPS.
It oantal bytes om te ûntfangen omfettet de postamble net, útsein de fjouwer-chip postamble brûkt foar Mode T-pakketten mei in ûneven pakketlingte. Sa hat de ûntfanger gjin postamble nedich, útsein de Model T-pakketten mei ûneven lingte. Dizze postamble is allinich nedich om in folslein oantal kodearre bytes te jaan. De ynhâld fan de postamble wurdt negearre; dus, as de postamble wurdt net oerdroegen, fjouwer chips fan lûd wurde ûntfongen en negearre. Sûnt it totale oantal kodearre bytes is beheind ta 255 (0xFF), beheint de ymplemintaasje it maksimale L-fjild foar de ferskate modi.
tabel 8. Pakketgrutte Limits
kodearre | dekodearre | M-bus | ||||
bytes | bytes | L-fjild | ||||
dec | hex | dec | hex | dec | hex | |
Mode S | 255 | FF | 127 | 7 F | 110 | 6E |
Mode T (meter-oare) | 255 | FF | 169 | A9 | 148 | 94 |
Mode R | 255 | FF | 127 | 7 F | 110 | 6E |
Dizze grinzen binne normaal goed boppe it typyske gebrûksgefal foar in draadloze meter. De pakketlange moat lyts wurde hâlden om de bêste mooglike batterijlibben te krijen.
Derneist kin de brûker it maksimale L-fjild oanjaan dat moat wurde ûntfongen (USER_RX_MAX_L_FIELD). Dit bepaalt de fereaske grutte foar de ûntfangende buffer (USER_RX_BUFFER_SIZE).
Stypjen fan in maksimum L-fjild fan 255 soe in ûntfangende buffer fan 290 bytes en in maksimum fan 581 Manchester kodearre bytes fereaskje. De pakketbehearder soe útskeakele wurde moatte en it pakketlangeregister koe yn dat gefal net brûkt wurde. Dit is mooglik, mar it is handiger om de pakketbehearder te brûken, as it mooglik is.
FIFO Gebrûk
De Si4431 leveret in FIFO fan 64 byte foar ferstjoeren en ûntfangen. Sûnt it oantal kodearre bytes is 255, kin in folslein kodearre pakket net passe binnen de 64-byte buffer.
Oerdracht
By oerdracht wurdt it totale oantal kodearre bytes berekkene. As it totale oantal kodearre bytes, ynklusyf de postamble, minder is as 64 bytes, wurdt it hiele pakket skreaun nei de FIFO en allinich de pakket ferstjoerde ûnderbrekking is ynskeakele. De measte koarte pakketten wurde ferstjoerd yn ien FIFO oerdracht.
As it oantal kodearre bytes grutter is as 64, sille meardere FIFO-oerdrachten nedich wêze om it pakket te ferstjoeren. De earste 64 bytes wurde skreaun nei de FIFO. De pakket ferstjoerd en TX FIFO hast lege ûnderbrekkings binne ynskeakele. De TX FIFO hast lege drompel is ynsteld op 16 bytes (25%). By elk IRQ-evenemint wurdt it status 2-register lêzen. It pakket ferstjoerde bit wurdt earst kontrolearre, en as it pakket net folslein ferstjoerd is, wurde de folgjende 48 bytes fan kodearre gegevens skreaun nei de FIFO. Dit giet troch oant alle kodearre bytes binne skreaun en de Packet Sent interrupt optreedt.
1. Resepsje
By ûntfangst is yn earste ynstânsje allinich de Sync Word-ûnderbrekking ynskeakele. Nei ûntfangst fan it syngronisaasjewurd is de syngronisaasjewurdûnderbrekking útskeakele en is de FIFO Hast Folsleine ûnderbrekking ynskeakele. De FIFO hast folsleine drompel is yn earste ynstânsje ynsteld op 2 bytes. De earste FIFO hast folsleine ûnderbrekking wurdt brûkt om te witten wannear't de twa lingtebytes binne ûntfongen. Sadree't de lingte is ûntfongen, de lingte wurdt dekodearre en it oantal kodearre bytes wurdt berekkene. De RX FIFO hast Folsleine drompel wurdt dan ynsteld op 48 bytes. De RX FIFO is hast fol en Valid Packet interrupts binne ynskeakele. By it folgjende IRQ-evenemint wurdt it status 1-register lêzen. Earst wurdt it jildich pakket bit kontrolearre, en dan wurdt it FIFO hast folslein bit kontrolearre. As allinich de RX FIFO Hast Folsleine bit is ynsteld, wurde de folgjende 48 bytes lêzen fan 'e FIFO. As de jildige pakket bit is ynsteld, de rest fan it pakket wurdt lêzen út de FIFO. De MCU hâldt by hoefolle bytes binne lêzen en hâldt op mei lêzen nei de lêste byte.
Data Link Laach
De module foar gegevenslinklaach ymplementearret in 13757-4: 2005-kompatibele keppelingslaach. De gegevenslinklaach (LINK) jout in ynterface tusken de fysike laach (PHY) en de applikaasjelaach (AL).
De Data Link Layer fiert de folgjende funksjes út:
- Biedt funksjes dy't gegevens oerdrage tusken PHY en AL
- Genereart CRC's foar útgeande berjochten
- Detektearret CRC flaters yn ynkommende berjochten
- Biedt fysike adressering
- Erkent oerdrachten foar bidirectionele kommunikaasjemodi
- Frames data bits
- Detektearret framing flaters yn ynkommende berjochten
Link Layer Frame Format
It Wireless M-Bus frameformaat brûkt yn EN 13757-4:2005 is ôflaat fan it FT3 (Frame Type 3) frameformaat fan IEC60870-5-2. It frame bestiet út ien of mear blokken fan gegevens. Elk blok befettet in 16-bit CRC-fjild. It earste blok is in blok mei fêste lingte fan 12 bytes dat it L-fjild, C-fjild, M-fjild en A-fjild omfettet.
- L-fjild
It L-fjild is de lingte fan 'e gegevenslading fan Link-laach. Dit omfettet net it L-fjild sels of ien fan 'e CRC-bytes. It omfettet it L-fjild, C-fjild, M-fjild, en A-fjild. Dizze binne diel fan 'e PHY-lading.
Om't it oantal kodearre bytes is beheind ta 255 bytes, is de maksimale stipe wearde foar it M-fjild 110 bytes foar Manchester kodearre gegevens en 148 bytes foar Mode T Three-Out-of-Six kodearre gegevens.
De Link-laach is ferantwurdlik foar it berekkenjen fan it L-fjild by oerdracht. De linklaach sil it L-fjild brûke by ûntfangst.
Tink derom dat it L-fjild net de lingte fan 'e PHY-lading of it oantal kodearre bytes oanjout. By oerdracht sil de PHY de PHY-ladingslingte en it oantal kodearre bytes berekkenje. By ûntfangst sil de PHY it L-fjild ûntsiferje en it oantal te dekodearjen bytes berekkenje. - C-fjild
It C-fjild is it framekontrôlefjild. Dit fjild identifisearret it frame type en wurdt brûkt foar de link gegevens útwikseling tsjinst primitives. It C-fjild jout it frametype oan - SEND, CONFIRM, REQUEST, of RESPOND. Yn it gefal fan SEND- en REQUEST-frames jout it C-fjild oan oft in CONFIRM of RESPOND wurdt ferwachte.
By it brûken fan de basis funksje Link TX kin elke wearde fan C brûkt wurde. By it brûken fan de Link Service Primitives, wurdt it C-fjild automatysk befolke neffens EN 13757-4:2005. - M-fjild
It M-fjild is de koade fan de fabrikant. Fabrikanten kinne oanfreegje in trije-letter koade út de folgjende web adres: http://www.dlms.com/flag/INDEX.HTM Elk karakter fan de trije-letter koade is kodearre as fiif bits. De 5-bit-koade kin wurde krigen troch de ASCII-koade te nimmen en 0x40 ("A") ôf te trekken. De trije 5-bit koades wurde gearfoege om 15-bits te meitsjen. De meast wichtige bit is nul. - A-fjild
It adresfjild is in unyk 6-byte-adres foar elk apparaat. It unike adres moat wurde tawiisd troch de fabrikant. It is de ferantwurdlikens fan elke fabrikant om te soargjen dat elk apparaat in unyk 6-byte-adres hat. It adres foar frames ferstjoere en oanfreegje is it selsadres fan de meter as in oar apparaat. De gegevensframes foar befêstiging en antwurd wurde ferstjoerd mei it adres fan it orizjinele apparaat. - CI-fjild
It CI-fjild is de koptekst fan 'e applikaasje en spesifisearret it type gegevens yn' e lading fan 'e applikaasjegegevens. Wylst EN13757-4: 2005 in beheind oantal wearden spesifisearret, sille de Link Service Primitives tastean elke wearde te brûken. - CRC
De CRC is spesifisearre yn EN13757-4:2005.
De CRC Polynomial is:
X16 + x13 + x12 + x11 + x10 + x8 +x6 + x5 +x2 + 1
Tink derom dat de M-Bus CRC wurdt berekkene oer elk 16-byte blok. It resultaat is dat elke 16 bytes oan gegevens 18 bytes nedich binne om te ferstjoeren,
Oanfoljende ynformaasje
Foar oanfoljende ynformaasje oer de keppeling Layer Implementation, sjoch "AN452: Wireless M-Bus Stack Programmers Guide".
Power Management
Figuer 2 toant de tiidline foar enerzjybehear foar in meter eksample mei help fan de Mode T1.
De MCU moat wannear mooglik yn sliepmodus wêze om enerzjy te besparjen. Yn dizze eksample, de MCU sliept as de RTC rint, by it wachtsjen op it opstarten fan it radiokristal, en by it útstjoeren fan 'e FIFO. De MCU sil wekker wurde fan it EZRadioPRO IRQ-sinjaal ferbûn mei in Port Match-wekker.
By it ferstjoeren fan berjochten langer dan ien blok, moat de MCU wekker wurde om de FIFO te foljen (basearre op 'e FIFO hast lege ûnderbrekking) en dan werom te sliepen.
De MCU moat yn Idle-modus wêze dy't rint fan 'e oscillator mei lege macht of burst-modus oscillator by it lêzen fan' e ADC. De ADC fereasket in SAR-klok.
As net yn gebrûk, moat de EZRadioPRO yn Shutdown-modus wêze mei de SDN-pin heech dreaun. Dit fereasket in hardwired ferbining mei de MCU. De EZ Radio Pro registers wurde net bewarre yn shutdown modus; sa, de EZRadioPro wurdt inisjalisearre op elk RTC ynterval. It inisjalisearjen fan de radio nimt minder dan 100 µs en besparret 400 nA. Dit resulteart yn in enerzjybesparring fan 10 µJ, basearre op in ynterval fan 10 sekonden.
It EZRadioPRO-kristal nimt sawat 16 ms foar in POR. Dit is lang genôch om de CRC foar sawat acht blokken te berekkenjen. De MCU sil weromgean yn sliep as it alle CRC's foltôget foardat it kristal stabilisearre is. As fersifering fereaske is, kin it ek wurde begon wylst jo wachtsje op 'e kristaloscillator.
De MCU moat op 20 MHz rinne mei de oscillator mei lege krêft foar de measte taken. Taken dy't in krekte time-out fereaskje, moatte de presysoscillator en idle-modus brûke ynstee fan sliepmodus. De RTC jout genôch resolúsje foar de measte taken. De tiidline foar enerzjybehear foar de T2 meter exampDe applikaasje wurdt werjûn yn figuer 3.
De ymplemintaasje fan 'e transceiver moat wurde optimalisearre foar it normale gefal as de meter wekker wurdt en d'r gjin lêzer oanwêzich is. De minimale / maksimale ACK-timeouts binne genôch lang, sadat it mooglik is om de C8051F930 RTC te brûken en de MCU yn sliepmodus te setten.
Bouwopsjes wurde levere foar net- as USB-oandreaune lêzers dy't gjin sliepmodus hoege te brûken. De idle-modus sil brûkt wurde ynstee fan sliep, sadat de USB en UART de MCU kinne ûnderbrekke.
Ienfâld Studio
Ien-klik tagong ta MCU en draadloze ark, dokumintaasje, software, boarnekoadebiblioteken en mear. Beskikber foar Windows,
Mac en Linux!
![]() |
![]() |
![]() |
![]() |
IoT Portfolio www.silabs.com/IoT |
SW/HW www.silabs.com/simplicity |
Kwaliteit www.silabs.com/quality |
Stipe en Mienskip community.silabs.com |
Disclaimer
Silicon Labs is fan doel klanten de lêste, krekte en yngeande dokumintaasje te leverjen fan alle perifeare apparaten en modules dy't beskikber binne foar systeem- en software-implementers dy't de Silicon Labs-produkten brûke of wolle brûke. Characterization gegevens, beskikbere modules en perifeare apparaten, ûnthâld maten en ûnthâld adressen ferwize nei elk spesifyk apparaat, en "Typyske" parameters foarsjoen kin en fariearje yn ferskillende applikaasjes. Applikaasje bvampLes hjir beskreaun binne allinich foar yllustrative doelen. Silicon Labs behâldt it rjocht foar om feroaringen te meitsjen sûnder fierdere notice en beheining oan produktynformaasje, spesifikaasjes en beskriuwingen hjiryn, en jout gjin garânsjes oangeande de krektens of folsleinens fan 'e opnommen ynformaasje. Silicon Labs hat gjin oanspraaklikens foar de gefolgen fan it brûken fan de ynformaasje levere hjir. Dit dokumint ymplisearret of drukt gjin auteursrjochtlike lisinsjes út dy't hjirûnder ferliend binne om yntegreare circuits te ûntwerpen of te meitsjen. De produkten binne net ûntworpen of autorisearre om te brûken binnen in Life Support System sûnder de spesifike skriftlike tastimming fan Silicon Labs. In "Life Support System" is elk produkt of systeem dat bedoeld is om libben en / of sûnens te stypjen of te ûnderhâlden, dat, as it mislearret, ridlik ferwachte kin wurde resultearre yn signifikant persoanlik ferwûning of dea. Silicon Labs-produkten binne net ûntworpen of autorisearre foar militêre tapassingen. Silicon Labs-produkten sille ûnder gjin omstannichheden wurde brûkt yn wapens fan massa ferneatiging, ynklusyf (mar net beheind ta) nukleêre, biologyske of gemyske wapens, of raketten dy't sokke wapens kinne leverje.
Trademark Ynformaasje
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs®, en it Silicon Labs logo®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, Energy Micro-logo en kombinaasjes dêrfan, "de wrâlds meast enerzjyfreonlike mikrocontrollers", Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, it Telegesis Logo®, USBXpress®, en oaren binne hannelsmerken as registrearre hannelsmerken fan Silicon Labs. ARM, CORTEX, Cortex-M3, en thumbs binne hannelsmerken as registrearre hannelsmerken fan ARM Holdings. Keil is in registrearre hannelsmerk fan ARM Limited. Alle oare produkten of merknammen neamd hjir binne hannelsmerken fan harren respektive hâlders.
Ien diel fan Silicon Laboratories Inc.
400 West Cesar Chavez
Austin, TX 78701
USA
http://www.silabs.com
Dokuminten / Resources
![]() |
SILICON LABS Wireless M-BUS Software ymplemintaasje AN451 [pdf] Brûkersgids SILICON LABS, C8051, MCU, en, EZRadioPRO, Wireless M-bus, Wireless, M-BUS, Software, ymplemintaasje, AN451 |