SILICON LABS logotyp

AN451
TRÅDLÖS M-BUS PROGRAMVARA IMPLEMENTERING

Introduktion

Denna applikationsnotis beskriver Silicon Labs implementering av Wireless M-Bus med en Silicon Labs C8051 MCU och EZRadioPRO®. Wireless M-bus är en europeisk standard för mätaravläsningstillämpningar som använder frekvensbandet 868 MHz.

Stapla lager

Wireless M-Bus använder 3-lagers IEC-modellen, som är en delmängd av 7-lagers OSI-modellen (se figur 1).

SILICON LABS trådlös M-BUS-programimplementering AN451Det fysiska (PHY) skiktet definieras i EN 13757-4. Det fysiska lagret definierar hur bitarna kodas och sänds, RF-modemets egenskaper (chiphastighet, inledning och synkroniseringsord) och RF-parametrar (modulering, mittfrekvens och frekvensavvikelse).
PHY-lagret implementeras med en kombination av hårdvara och firmware. EZRadioPRO utför alla RF- och modemfunktioner. EZRadioPRO används i FIFO-läge med pakethanteraren. MbusPhy.c-modulen tillhandahåller SPI-gränssnitt, kodning/avkodning, blockläsning/skriv- och pakethantering och hanterar sändtagarens tillstånd.
M-Bus datalänklagret är implementerat i MbusLink.c-modulen. M-Bus applikationsprogrammeringsgränssnitt består av publika funktioner som kan anropas från applikationslagret i huvudtråden. MbusLink-modulen implementerar också Data Link Layer. Datalänkslagret kommer att formatera och kopiera data från applikationens TX-buffert till MbusPhy TX-bufferten och lägga till de nödvändiga rubrikerna och CRC:erna.
Själva applikationslagret är inte en del av M-bus firmware. Applikationsskiktet definierar hur en mängd olika data ska formateras för överföring. De flesta mätare behöver bara överföra en eller två typer av data. Att lägga till en stor mängd kod för att ta emot alla typer av data till mätaren skulle lägga till onödig kod och kostnad för mätaren. Det kan vara möjligt att implementera ett bibliotek eller en header file med en uttömmande lista över datatyper. De flesta mätkunder vet dock exakt vilken typ av data de behöver överföra och kan hänvisa till standarden för formateringsdetaljer. En universell läsare eller sniffer kan implementera en komplett uppsättning programdatatyper på PC GUI. Av dessa skäl implementeras applikationslagret med example applikationer för en mätare och läsare.

Obligatoriska standarder
  1. EN 13757-4
    EN 13757-4
    Kommunikationssystem för mätare och fjärravläsning av mätare
    Del 4: Trådlös mätaravläsning
    Radiometeravläsning för drift i 868 MHz till 870 MHz SRD-bandet
  2. EN 13757-3
    Kommunikationssystem för mätare och fjärravläsning av mätare
    Del 3: Dedikerat applikationslager
  3. IEC 60870-2-1:1992
    Fjärrkontrollutrustning och system
    Del 5: Överföringsprotokoll
    Avsnitt 1: Procedur för länköverföring
  4. IEC 60870-1-1:1990
    Fjärrkontrollutrustning och system
    Del 5: Överföringsprotokoll
    Avsnitt 1: Sändningsramformat
Definitioner
  • M-buss—M-Bus är en trådbunden standard för mätaravläsning i Europa.
  • Trådlös M-Bus—Trådlös M-Bus för mätaravläsningstillämpningar i Europa.
  • PHY— Physical Layer definierar hur databitar och byte kodas och överförs.
  • API—Application Programmer gränssnitt.
  • LÄNK-Data Link Layer definierar hur block och ramar sänds.
  • CRC—Cyklisk redundanskontroll.
  • FSK—Nyckel för frekvensskift.
  • Chip-Minsta enhet av överförda data. En databit kodas som flera chips.
  • Modul-AC-kodkälla .c file.

M-Bus PHY Funktionsbeskrivning

Inledningssekvens

Preambelsekvensen som specificeras av M-bus-specifikationen är ett heltal som omväxlar nollor och ettor. En etta definieras som den högre frekvensen och en nolla definieras som den lägre frekvensen.
nx (01)
Inledningsalternativen för Si443x är ett heltal av nibbles som består av alternerande ettor och nollor.
nx (1010)
En inledning med en extra ledande skulle inte vara ett problem, men då skulle synkroniseringsordet och nyttolasten vara felinriktade med en bit.
Lösningen är att invertera hela paketet genom att ställa in motorbiten i Modulation Control 2-registret (0x71). Detta kommer att invertera ingressen, synkordet och TX/RX-data. Som en konsekvens bör data inverteras när man skriver TX-data eller läser RX-data. Synkroniseringsordet inverteras också innan det skrivs till Si443x Synchronization Word-register.

Synkroniseringsord

Synkroniseringsordet som krävs enligt EN-13757-4 är antingen 18 chips för Mode S och Mode R eller 10 chips för Model T. Synkroniseringsordet för Si443x är 1 till 4 byte. Emellertid, eftersom synkroniseringsordet alltid föregås av ingressen, kan de sista sex bitarna i ingressen betraktas som en del av synkroniseringsordet; så, det första synkroniseringsordet utfylls av tre repetitioner av en nolla följt av en etta. Synkroniseringsordet kompletteras innan skrivning till Si443x-registren.
Tabell 1. Synkroniseringsord för Mode S och Mode R

EN 13757-4 00 01110110 10010110 binär
00 76 96 hex
pad med (01) x 3 01010100 01110110 10010110 binär
54 76 96 hex
komplement 10101011 10001001 01101001 binär
AB 89 69 hex

Tabell 2. Synkroniseringsord för Mode T-mätare till Annat

SYNKRONISERA SYNKRONISERA SYNKRONISERA
ORD ORD ORD
3 2 1
Längd på ingressen för sändning

Minsta inledning är specificerad för fyra olika driftlägen. Det är acceptabelt att ha en ingress längre än vad som anges. Att subtrahera sex marker för ingressen ger det minsta antalet marker för Si443x-inledningen. Implementeringen lägger till två extra bitar av ingressen i alla korta ingresslägen för att förbättra ingressdetektering och interoperabilitet. Ingressen på Mode S med en lång ingress är mycket lång; så, minimiingressen används. Ingressens längd i nibbles skrivs till registret Preamble Length (0x34). Ingresslängdregistret bestämmer endast ingressen vid sändning. Inställningarna för minsta specifikation och ingresslängd sammanfattas i tabell 3.
Tabell 3. Längd för sändningsingress

EN-13757-4
minimum
Si443x ingress
Ställ ing
Synkronisera
Ord
Total extra
nx (01) pommes frites nappar pommes frites pommes frites pommes frites pommes frites
Mode S kort ingress 15 30 8 32 6 38 8
Mode S lång ingress 279 558 138 552 6 558 0
Läge T (meter-annan) 19 38 10 40 6 46 8
Läge R 39 78 20 80 6 86 8

Minsta inledning för mottagning bestäms av registret för inledningsdetektering (0x35). Vid mottagning måste antalet bitar i synkordet subtraheras från den specificerade minimibörjan för att bestämma den användbara ingressen. Minsta inställningstid för mottagaren är 16-chips om AFC är aktiverat eller 8-chips om AFC är inaktiverat. Mottagarens inställningstid subtraheras också från den användbara inledningen för att bestämma minimiinställningen för inledningsdetekteringskontrollregistret.

Sannolikheten för en falsk inledning beror på inställningen av registret för inledningsdetektering. En kort inställning av 8-marker kan resultera i att en falsk inledning upptäcks med några sekunders mellanrum. Den rekommenderade inställningen på 20chips gör upptäckt av falsk ingress till en osannolik händelse. Ingresslängderna för Mode R och Mode SL är tillräckligt långa för att den rekommenderade inställningen ska användas.
Det finns mycket liten fördel med att få inledningen att upptäcka längre än 20 marker.
AFC är inaktiverat för Model S med en kort preambel och Model T. Detta minskar mottagarens inställningstid och tillåter en längre ingressdetektering. Med AFC inaktiverat kan Mode T använda den rekommenderade inställningen på 20 marker. En inställning på 4 nibbles eller 20 chips används för Model S med en kort inledning. Detta gör sannolikheten för en falsk ingressdetektering något högre för denna modell.
Tabell 4. Inledningsdetektering

EN-13757-4
minimum
Synkronisera
Ord
användbar
inledning
RX Settling Upptäcka
min
Si443x ingress
Detektionsinställning
nx (01) pommes frites pommes frites pommes frites pommes frites pommes frites nappar pommes frites
Mode S kort ingress 15 30 6 24 8* 16 4 16
Model S lång ingress 279 558 6 552 16 536 5 20
Modell T (meter-annan) 19 38 6 32 8* 24 5 20
Läge R 39 78 6 72 16 56 5 20
*Notera: AFC inaktiverad

Mottagaren är konfigurerad att samverka med en sändare med den minsta specificerade ingressen. Detta säkerställer att mottagaren kommer att samverka med alla M-bus-kompatibla sändare.
Wireless M-Bus-specifikationen kräver en mycket lång inledning för Mode S1 på minst 558 chips. Detta tar cirka 17 ms bara att överföra ingressen. Si443x kräver inte en så lång ingress och tjänar inte på den långa ingressen. Även om den långa ingressen noteras som valfri för Mode S2, finns det ingen anledning att använda en lång ingress med Si443x. Om envägskommunikation önskas ger Mode T1 en kortare inledning, högre datahastighet och längre batteritid. Om tvåvägskommunikation med läge S2 krävs, rekommenderas en kort inledning.
Observera att detektionströskeln för Model S med en lång ingress är längre än antalet ingressnipplar som sänds för Model S med en kort ingress. Detta betyder att den långa ingressen Mode S-mottagaren inte kommer att upptäcka en ingress från en kort ingress Mode S-sändare. Detta är nödvändigt om den långa ingressen Mode S-mottagaren ska få någon nytta av den långa ingressen.
Observera att den korta ingressen Mode S-mottagaren kommer att upptäcka ingressen och ta emot paket från både en kort ingress Mode S
sändare och en lång ingress Mode S-sändare; så i allmänhet bör mätarläsaren använda den korta ingressen Mode S-mottagarkonfigurationen.

Kodning/avkodning

Wireless M-bus-specifikationen kräver två olika kodningsmetoder. Manchester-kodning används för Mode S och Mode R. Manchester-kodning används också för annan-till-meter-länken i Model T. Model T meter-till-andra-länken använder 3 av 6 kodningar.
1. Manchester kodad/avkodning
Manchester-kodning är historiskt vanligt i RF-system för att ge robust klockåterställning och spårning med ett enkelt och billigt modem. En modern högpresterande radio som Si443x behöver dock inte Manchester-kodning. Manchester-kodning stöds främst för kompatibilitet med befintliga standarder, men datahastigheten för Si443x fördubblas i praktiken när man inte använder Manchester-kodning.
Si443x stöder Manchester-kodning och avkodning av hela paketet i hårdvara. Tyvärr är synkroniseringsordet inte Manchester-kodat. En ogiltig Manchester-sekvens valdes avsiktligt för synkroniseringsordet. Detta gör Manchester-kodning inkompatibel med de flesta befintliga radioapparater, inklusive Si443x. Som en konsekvens måste Manchester-kodningen och avkodningen utföras av MCU. Varje byte på okodad data består av åtta databitar. Med Manchester-kodning kodas varje databit till en tvåchipssymbol. Eftersom den kodade datan måste skrivas till radio-FIFO åtta chips åt gången, kodas och skrivs en bit data åt gången till FIFO:n.
Tabell 5. Manchester-kodning

data Ox12 0x34 bytes
Ox1 0x2 0x3 0x4 nappar
1 10 11 100 binär
chips 10101001 10100110 10100101 10011010 binär
FIFO OxA9 OxA6 OxA5 OxOA hex

Varje byte som ska sändas skickas en byte åt gången till kodningsbytefunktionen. Encode byte-funktionen kommer att anropa encode nibble-funktionen två gånger, först för den mest signifikanta nibble och sedan för den minst signifikanta nibble.
Manchester-kodning i programvara är inte svårt. Med utgångspunkt från den mest signifikanta biten, kodas en som en "01"-chipsekvens. En nolla kodas som en "10"-chipsekvens. Detta kan enkelt åstadkommas genom att använda en loop och skifta två bitar för varje symbol. Det är dock snabbare att bara använda en enkel tabell med 16 poster för varje napp. Koda Manchester nibble-funktionen kodar en nibble av data och skriver den sedan till FIFO. Chipsen inverteras innan de skrivs till FIFO för att ta hänsyn till de inverterade ingresskraven.
Vid mottagning består varje byte i FIFO av åtta chips och avkodas till en bit data. Läsblocksfunktionen läser en byte åt gången från FIFO:n och anropar avkodningsbytefunktionen. Chipsen inverteras efter att ha lästs från FIFO för att ta hänsyn till de inverterade ingresskraven. Varje byte av Manchester-kodade chips avkodas till en bit data. Den avkodade nibblet skrivs till RX-bufferten med hjälp av skrivnibble-RX-buffertfunktionen.
Lägg märke till att både kodning och avkodning utförs en databit åt gången i farten. Kodning till en buffert skulle kräva en extra buffert som är dubbelt så stor som den okodade datan. Kodning och avkodning är mycket snabbare än den snabbaste datahastigheten som stöds (100 k chips per sekund). Eftersom Si443x stöder läsning och skrivning av flera byte till FIFO, finns det en liten overhead i att endast använda en-byte läsning och skrivning. Overheaden är cirka 10 µs för 100 kodade chips. Fördelen är en RAM-besparing på 512 byte.
2. Tre av sex kodningsavkodning
Tre-av-sex-kodningsmetoden som specificeras i EN-13757-4 är också implementerad i firmware på MCU:n. Denna kodning används för höghastighetsläget (100 k chips per sekund) Mode T från meter till annan. Model T ger den kortaste överföringstiden och den längsta batteritiden för en trådlös mätare.
Varje byte med data som ska överföras är uppdelad i två nibbles. Den mest betydande nibblet kodas och sänds först. Återigen implementeras detta med hjälp av en kodningsbytefunktion som anropar encode nibble-funktionen två gånger.
Varje bit data kodas till en symbol med sex chip. Sekvensen av sex-chips symboler måste skrivas till 8chip FIFO.
Under kodning kodas två byte data som fyra nibbles. Varje napp är en symbol med 6 marker. Fyra symboler med 6 chip är aggregerade som tre byte.
Tabell 6. Tre av sex kodning

data 0x12 0x34 bytes
Ox1 0x2 0x3 0x4 nappar
chips 15 16 13 34 oktal
1101 1110 1011 11100 binär
FIFO 110100 11100010 11011100 binär
0x34 OxE2 OxDC hex

I mjukvara implementeras tre-av-sex-kodningen med hjälp av tre kapslade funktioner. Encode byte-funktionen anropar encode nibble-funktionen två gånger. Encode nibble-funktionen använder en uppslagstabell för sex-chips-symbolen och skriver symbolen till Shift Three of Sex-funktionerna. Denna funktion implementerar ett 16-chips skiftregister i mjukvara. Symbolen skrivs till den minst signifikanta byten i skiftregistret. Registret flyttas åt vänster två gånger. Detta upprepas tre gånger. När en komplett byte finns i den övre byten i skiftregistret, inverteras den och skrivs till FIFO.
Eftersom varje byte av data är kodad som en och en halv kodad byte, är det viktigt att rensa skiftregistret initialt så att den första kodade byten är korrekt. Om paketlängden är ett udda tal, efter att alla bytes kodats, kommer det fortfarande att finnas en bit kvar i skiftregistret. Detta hanteras med postamblen som förklaras i nästa avsnitt.
Att avkoda de tre av sex kodade är den omvända proceduren. Vid avkodning avkodas tre kodade byte till två databyte. Programvaruskiftregistret används återigen för att aggregera bytes av avkodad data. En omvänd uppslagstabell med 64 poster används för avkodning. Detta använder färre cykler men mer kodminne. Att söka i en uppslagstabell med 16 poster efter motsvarande symbol tar betydligt längre tid.
Postamble
Wireless M-bus-specifikationen har specifika krav för postamblen eller trailern. För alla lägen är minimum två marker och max åtta marker. Eftersom den minsta atomenheten för FIFO är en byte, används en 8-chip trailer för Mode S och Mode R. Mode T postamble är åtta chips om paketlängden är jämn eller fyra chips om paketlängden är udda. Fyra-chips postamble för en udda paketlängd uppfyller kraven på att ha minst två alternerande chips.
Tabell 7. Postamble Längd

Postamble Längd (chips)
min max Genomförande chipsekvens
Läge S 2 8 8 1010101
Läge T 2 8 4 (udda) 101
8 (även) 1010101
Läge R 2 8 8 1010101
Pakethanterare

Pakethanteraren på Si443x kan användas i ett läge med variabel paketbredd eller ett läge med fast paketbredd. Moden för variabel paketbredd kräver en paketlängdbyte efter synkroniseringsordet och valfria rubrikbytes. Vid mottagning kommer radion att använda längdbyten för att fastställa slutet på ett giltigt paket. Vid sändning kommer radion att infoga längdfältet efter sidhuvudet byte.
L-fältet för det trådlösa M-bus-protokollet kan inte användas för Si443x-längdfältet. För det första är L-fältet inte den faktiska paketlängden. Det är antalet länklagers nyttolastbyte som inte inkluderar CRC-byte eller kodning. För det andra är själva L-fältet kodat med antingen Manchester-kodning eller Tre av sex-kodning för Mode T-mätare till annan.
Implementeringen använder pakethanteraren i läge med fast paketbredd för både sändning och mottagning. Vid överföring kommer PHY-skiktet att läsa L-fältet i sändningsbufferten och beräkna antalet kodade bytes, inklusive postamblen. Det totala antalet kodade bytes som ska sändas skrivs till paketlängdregistret (0x3E).
Vid mottagning avkodas de två första kodade byten, och L-fältet skrivs till mottagningsbufferten. L-fältet används för att beräkna antalet kodade byte som ska tas emot. Antalet kodade bytes som ska tas emot skrivs sedan till paketlängdregistret (0x3E). Postamblen kasseras.
MCU:n måste avkoda L-fältet, beräkna antalet kodade bytes och skriva värdet till paketlängdregistret innan kortast möjliga paketlängd har tagits emot. Det kortaste tillåtna L-fältet för PHY-lagret är 9, vilket ger 12 okodade byte. Detta ger 18 kodade byte för Model T. De två första byten har redan avkodats. Således måste paketlängdregistret uppdateras i 16-byte-tider vid 100 kbps eller 1.28 millisekunder. Detta är inga problem för en 8051 som kör på 20 MIPS.
Antalet byte som ska tas emot inkluderar inte postamblen, förutom den fyra-chip postamble som används för Mode T-paket med en udda paketlängd. Mottagaren kräver således ingen postamble, förutom modell T-paket med udda längd. Denna postamble behövs bara för att ge ett heltal av kodade byte. Innehållet i postamblen ignoreras; så, om postamblen inte sänds, kommer fyra chip med brus att tas emot och ignoreras. Eftersom det totala antalet kodade bytes är begränsat till 255 (0xFF), begränsar implementeringen det maximala L-fältet för de olika lägena.
Tabell 8. Gränser för paketstorlek

kodad avkodas M-buss
bytes bytes L-fält
dec hex dec hex dec hex
Läge S 255 FF 127 7 F 110 6E
Läge T (meter-annan) 255 FF 169 A9 148 94
Läge R 255 FF 127 7 F 110 6E

Dessa gränser ligger normalt långt över det typiska användningsfallet för en trådlös mätare. Paketlängden bör hållas liten för att få bästa möjliga batteritid.
Dessutom kan användaren ange det maximala L-fältet som ska tas emot (USER_RX_MAX_L_FIELD). Detta bestämmer den nödvändiga storleken för mottagningsbufferten (USER_RX_BUFFER_SIZE).
Att stödja ett maximalt L-fält på 255 skulle kräva en mottagningsbuffert på 290 byte och maximalt 581 Manchester-kodade byte. Pakethanteraren skulle behöva inaktiveras och paketlängdregistret kunde inte användas i det fallet. Detta är möjligt, men det är bekvämare att använda pakethanteraren, om möjligt.

FIFO-användning

Si4431 tillhandahåller en 64 byte FIFO för sändning och mottagning. Eftersom antalet kodade byte är 255 kanske ett helt kodat paket inte får plats i bufferten på 64 byte.
Överföring
Vid överföring beräknas det totala antalet kodade bytes. Om det totala antalet kodade byte, inklusive postamblen, är mindre än 64 byte, skrivs hela paketet till FIFO och endast det sända paketavbrottet är aktiverat. De flesta korta paket kommer att skickas i en FIFO-överföring.
Om antalet kodade byte är större än 64 kommer flera FIFO-överföringar att krävas för att skicka paketet. De första 64 byten skrivs till FIFO. Packet Sent och TX FIFO Nästan tomma avbrott är aktiverade. Tröskeln för TX FIFO Nästan tom är satt till 16 byte (25%). Vid varje IRQ-händelse läses status 2-registret. Den sända paketbiten kontrolleras först, och om paketet inte har sänts fullständigt, skrivs nästa 48 byte av kodad data till FIFO:n. Detta fortsätter tills alla kodade bytes har skrivits och avbrottet i paketsändning inträffar.
1. Reception
Vid mottagning är först endast Sync Word-avbrottet aktiverat. Efter att ha mottagit synkordet inaktiveras synkordsavbrottet och FIFO Nästan Full avbrott är aktiverat. FIFO:s nästan fulla tröskel är initialt satt till 2 byte. Det första FIFO-nästan full-avbrottet används för att veta när de två längdbytena har tagits emot. När längden väl har tagits emot avkodas längden och antalet kodade bytes beräknas. Tröskelvärdet för RX FIFO nästan fullt sätts sedan till 48 byte. RX FIFO är nästan full och giltiga paketavbrott är aktiverade. Vid nästa IRQ-händelse läses status 1-registret. Först kontrolleras den giltiga paketbiten, och sedan kontrolleras FIFO-biten nästan full. Om endast RX-FIFO-biten nästan full är inställd, läses nästa 48 byte från FIFO:n. Om den giltiga paketbiten är inställd läses resten av paketet från FIFO. MCU:n håller reda på hur många byte som har lästs och slutar läsa efter den sista byten.

Datalänkskikt

Datalänklagermodulen implementerar ett 13757-4:2005-kompatibelt länklager. Datalänkslagret (LINK) tillhandahåller ett gränssnitt mellan det fysiska lagret (PHY) och applikationslagret (AL).
Data Link Layer utför följande funktioner:

  • Tillhandahåller funktioner som överför data mellan PHY och AL
  • Genererar CRC för utgående meddelanden
  • Upptäcker CRC-fel i inkommande meddelanden
  • Ger fysisk adressering
  • Bekräftar överföringar för dubbelriktade kommunikationslägen
  • Ramar databitar
  • Upptäcker ramfel i inkommande meddelanden
Ramformat för länklager

Det trådlösa M-Bus-ramformatet som används i EN 13757-4:2005 är härlett från ramformatet FT3 (Frame Type 3) från IEC60870-5-2. Ramen består av ett eller flera datablock. Varje block inkluderar ett 16-bitars CRC-fält. Det första blocket är ett block med fast längd på 12 byte som inkluderar L-fältet, C-fältet, M-fältet och A-fältet.

  1. L-fält
    L-fältet är längden på länklagerdatanyttolasten. Detta inkluderar inte själva L-fältet eller någon av CRC-bytena. Det inkluderar L-fältet, C-fältet, M-fältet och A-fältet. Dessa är en del av PHYs nyttolast.
    Eftersom antalet kodade byte är begränsat till 255 byte, är det maximala stödda värdet för M-fältet 110 byte för Manchester-kodad data och 148 byte för Mode T tre-av-sex-kodad data.
    Länkskiktet ansvarar för att beräkna L-fältet vid överföring. Länkskiktet kommer att använda L-fältet vid mottagning.
    Observera att L-fältet inte indikerar PHY-nyttolastens längd eller antalet kodade byte. Vid överföring kommer PHY att beräkna PHYs nyttolastlängd och antalet kodade byte. Vid mottagning kommer PHY att avkoda L-fältet och beräkna antalet byte som ska avkodas.
  2. C-fält
    C-fältet är ramkontrollfältet. Detta fält identifierar ramtypen och används för länkdatautbytestjänstens primitiver. C-fältet indikerar ramtypen – SEND, CONFIRM, REQUEST eller RESPOND. I fallet med SEND- och REQUEST-ramar indikerar C-fältet om en BEKRÄFTA eller SVAR förväntas.
    När du använder den grundläggande länksändningsfunktionen kan valfritt värde på C användas. När du använder Link Service Primitives, fylls C-fältet i automatiskt enligt EN 13757-4:2005.
  3. M-fält
    M-fältet är tillverkarens kod. Tillverkare kan begära en trebokstavskod från följande web adress: http://www.dlms.com/flag/INDEX.HTM Varje tecken i trebokstavskoden kodas som fem bitar. 5-bitarskoden kan erhållas genom att ta ASCII-koden och subtrahera 0x40 ("A"). De tre 5-bitarskoderna är sammanlänkade för att göra 15-bitar. Den mest signifikanta biten är noll.
  4. Ett fält
    Adressfältet är en unik 6-byte adress för varje enhet. Den unika adressen bör tilldelas av tillverkaren. Det är varje tillverkares ansvar att se till att varje enhet har en unik 6-byte adress. Adressen för Sänd och Begär ramar är självadressen för mätaren eller annan enhet. Bekräftelsesvarsdataramarna sänds med hjälp av adressen till ursprungsanordningen.
  5. CI-fält
    CI-fältet är applikationshuvudet och specificerar typen av data i applikationsdatanyttolasten. Medan EN13757-4:2005 specificerar ett begränsat antal värden, tillåter Link Service Primitives alla värden att användas.
  6. CRC
    CRC specificeras i EN13757-4:2005.
    CRC-polynomet är:
    X16 + x13 + x12 + x11 + x10 + x8 +x6 + x5 +x2 + 1
    Observera att M-Bus CRC beräknas över varje 16-byte block. Resultatet är att varje 16 byte med data kräver 18 byte för att överföras,
Ytterligare information

För ytterligare information om Link Layer Implementation, se "AN452: Wireless M-Bus Stack Programmers Guide".

Power Management

Figur 2 visar energihanteringens tidslinje för en mätare example med läge T1.

MCU:n bör vara i viloläge när det är möjligt för att spara energi. I detta example, MCU:n vilar när RTC körs, när den väntar på radiokristallstart och när den sänder från FIFO. MCU:n kommer att vakna från EZRadioPRO IRQ-signalen ansluten till en Port Match-vakning.
Vid sändning av meddelanden som är längre än ett block måste MCU:n vakna för att fylla FIFO:n (baserat på FIFO nästan tomma avbrott) och sedan gå tillbaka till viloläge.
MCU:n bör vara i viloläge och körs från lågeffektoscillatorn eller burst-modoscillatorn när den läser från ADC. ADC kräver en SAR-klocka.
När den inte används ska EZRadioPRO vara i avstängningsläge med SDN-stiftet högt. Detta kräver en fast anslutning till MCU:n. EZ Radio Pro-registren bevaras inte i avstängningsläge; så EZRadioPro initieras vid varje RTC-intervall. Att initiera radion tar mindre än 100 µs och sparar 400 nA. Detta resulterar i en energibesparing på 10 µJ, baserat på ett 10-sekundersintervall.
EZRadioPRO-kristallen tar cirka 16 ms för en POR. Detta är tillräckligt långt för att beräkna CRC för cirka åtta block. MCU:n går tillbaka till viloläge om den slutför alla CRC:er innan kristallen har stabiliserats. Om kryptering krävs kan den också startas medan du väntar på kristalloscillatorn.
MCU:n bör köras på 20 MHz med lågeffektoscillatorn för de flesta uppgifter. Uppgifter som kräver en exakt timeout måste använda precisionsoscillatorn och viloläge istället för viloläge. RTC ger tillräckligt med upplösning för de flesta uppgifter. Tidslinjen för energihantering för T2-mätaren exampapplikationen visas i figur 3.

Transceiverimplementeringen bör optimeras för normalfallet när mätaren vaknar och det inte finns någon läsare. Minsta/maximala ACK-timeouts är tillräckligt långa så att det är möjligt att använda C8051F930 RTC och försätta MCU i viloläge.
Byggalternativ finns för nät- eller USB-drivna läsare som inte behöver använda viloläge. Inaktivt läge kommer att användas istället för viloläge så att USB och UART kan avbryta MCU.

SILICON LABS trådlös M-BUS-programvaruimplementering AN451-1

Simplicity Studio
Ett klick-åtkomst till MCU och trådlösa verktyg, dokumentation, programvara, källkodsbibliotek med mera. Tillgänglig för Windows,
Mac och Linux!

IoT-portfölj Kvalitet
IoT-portfölj
www.silabs.com/IoT
SW/HW
www.silabs.com/simplicity
Kvalitet
www.silabs.com/quality
Stöd och gemenskap
community.silabs.com

Ansvarsfriskrivning
Silicon Labs avser att förse kunder med den senaste, exakta och djupgående dokumentationen av all kringutrustning och moduler som är tillgängliga för system- och mjukvaruimplementerare som använder eller avser att använda Silicon Labs-produkterna. Karakteriseringsdata, tillgängliga moduler och kringutrustning, minnesstorlekar och minnesadresser avser varje specifik enhet, och "typiska" parametrar som tillhandahålls kan och varierar i olika applikationer. Applikation exampartiklarna som beskrivs här är endast för illustrativa syften. Silicon Labs förbehåller sig rätten att göra ändringar utan ytterligare meddelande och begränsning av produktinformation, specifikationer och beskrivningar häri, och ger inga garantier för riktigheten eller fullständigheten av den inkluderade informationen. Silicon Labs har inget ansvar för konsekvenserna av användningen av informationen som tillhandahålls häri. Detta dokument antyder eller uttrycker inte upphovsrättslicenser som beviljas nedan för att designa eller tillverka några integrerade kretsar. Produkterna är inte designade eller godkända för att användas inom något Life Support System utan specifikt skriftligt medgivande från Silicon Labs. Ett "Livsstödssystem" är varje produkt eller system som är avsett att stödja eller upprätthålla liv och/eller hälsa, som, om det misslyckas, rimligen kan förväntas leda till betydande personskada eller dödsfall. Silicon Labs produkter är inte designade eller godkända för militära tillämpningar. Silicon Labs produkter får under inga omständigheter användas i massförstörelsevapen inklusive (men inte begränsat till) kärnvapen, biologiska eller kemiska vapen eller missiler som kan leverera sådana vapen.
Varumärkesinformation
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs® och Silicon Labs logo®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, Energy Micro-logotypen och kombinationer därav, "världens mest energivänliga mikrokontroller", Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, Telegesis Logo®, USBXpress® och andra är varumärken eller registrerade varumärken som tillhör Silicon Labs. ARM, CORTEX, Cortex-M3 och thumbs är varumärken eller registrerade varumärken som tillhör ARM Holdings. Keil är ett registrerat varumärke som tillhör ARM Limited. Alla andra produkter eller varumärken som nämns häri är varumärken som tillhör sina respektive ägare.SILICON LABS logotyp

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

Dokument/resurser

SILICON LABS trådlös M-BUS-programimplementering AN451 [pdf] Användarhandbok
SILICON LABS, C8051, MCU och, EZRadioPRO, Wireless M-bus, Wireless, M-BUS, Software, Implementation, AN451

Referenser

Lämna en kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade *