AN451
LANGATON M-BUS-OHJELMISTON TOTEUTUS
Johdanto
Tämä sovellushuomautus kuvaa Wireless M-Busin Silicon Labs -toteutusta käyttämällä Silicon Labs C8051 MCU:ta ja EZRadioPRO®:a. Langaton M-bus on eurooppalainen standardi 868 MHz:n taajuuskaistaa käyttäville mittaussovelluksille.
Pinoa tasot
Langaton M-Bus käyttää 3-kerroksista IEC-mallia, joka on 7-kerroksisen OSI-mallin osajoukko (katso kuva 1).
Fyysinen (PHY) kerros on määritelty standardissa EN 13757-4. Fyysinen kerros määrittelee kuinka bitit koodataan ja lähetetään, RF-modeemin ominaisuudet (sirunopeus, alustusosa ja synkronointisana) ja RF-parametrit (modulaatio, keskitaajuus ja taajuuspoikkeama).
PHY-kerros toteutetaan laitteiston ja laiteohjelmiston yhdistelmällä. EZRadioPRO suorittaa kaikki RF- ja modeemitoiminnot. EZRadioPRO:ta käytetään FIFO-tilassa paketinkäsittelijän kanssa. MbusPhy.c-moduuli tarjoaa SPI-rajapinnan, koodauksen/dekoodauksen, lohkon luku-/kirjoitus- ja pakettien käsittelyn sekä hallitsee lähetin-vastaanottimen tiloja.
M-Bus Data -linkkikerros on toteutettu MbusLink.c-moduulissa. M-Bus Application Programming -rajapinta koostuu julkisista toiminnoista, joita voidaan kutsua pääsäikeen sovelluskerroksesta. MbusLink-moduuli toteuttaa myös Data Link Layerin. Tietolinkkikerros alustaa ja kopioi tiedot sovelluksen TX-puskurista MbusPhy TX -puskuriin ja lisää tarvittavat otsikot ja CRC:t.
Sovelluskerros itsessään ei ole osa M-bus-laiteohjelmistoa. Sovelluskerros määrittää, kuinka laaja valikoima dataa muotoillaan lähetystä varten. Useimpien mittareiden tarvitsee lähettää vain yhden tai kahden tyyppistä dataa. Suuren koodimäärän lisääminen kaikenlaisten tietojen vastaanottamiseksi mittariin lisäisi tarpeetonta koodia ja lisäisi mittariin kustannuksia. Kirjaston tai otsikon toteuttaminen saattaa olla mahdollista file ja kattava luettelo tietotyypeistä. Useimmat mittausasiakkaat tietävät kuitenkin tarkalleen, millaista dataa he tarvitsevat siirrettäväksi, ja voivat viitata muotoilun yksityiskohtien standardiin. Universaali lukija tai haistaja saattaa toteuttaa täydellisen joukon sovellustietotyyppejä PC:n graafisessa käyttöliittymässä. Näistä syistä sovelluskerros toteutetaan käyttämällä esimampsovellukset mittarille ja lukijalle.
Vaaditut standardit
- EN 13757-4
EN 13757-4
Tietoliikennejärjestelmä mittareille ja mittarien etäluennolle
Osa 4: Langattoman mittarin lukema
Radiometrin lukema käytettäväksi 868 MHz - 870 MHz SRD-kaistalla - EN 13757-3
Tietoliikennejärjestelmä mittareille ja mittarien etäluennolle
Osa 3: Erillinen sovelluskerros - IEC 60870-2-1:1992
Kauko-ohjauslaitteet ja -järjestelmät
Osa 5: Lähetysprotokollat
Osa 1: Linkin lähetysmenettely - IEC 60870-1-1:1990
Kauko-ohjauslaitteet ja -järjestelmät
Osa 5: Lähetysprotokollat
Osa 1: Lähetyskehysmuodot
Määritelmät
- M-bussi -M-Bus on langallinen standardi mittarien lukemiseen Euroopassa.
- Langaton M-Bus-Langaton M-Bus mittarinluentaan Euroopassa.
- PHY—Physical Layer määrittää, kuinka databitit ja -tavut koodataan ja lähetetään.
- API-Sovellusohjelmoijan käyttöliittymä.
- LINKKI-Data Link Layer määrittää kuinka lohkot ja kehykset lähetetään.
- CRC-Syklinen redundanssin tarkistus.
- FSK-Frequency Shift Keying.
- Siru-Pienin lähetetyn tiedon yksikkö. Yksi databitti on koodattu useiksi siruiksi.
- Moduuli-AC-koodin lähde .c file.
M-Bus PHY Toiminnallinen kuvaus
Johdantosarja
M-bus-spesifikaatiossa määritetty johdanto-osa on kokonaisluku, joka vuorottelee nollia ja ykkösiä. Yksi määritellään korkeammaksi taajuudeksi ja nolla alemmaksi taajuudeksi.
nx (01)
Si443x:n johdannon vaihtoehdot ovat kokonaislukumäärä nibblejä, jotka koostuvat vuorottelevista ykkösistä ja nollista.
nx (1010)
Johdanto ylimääräisellä johdolla ei olisi ongelma, mutta silloin synkronointisana ja hyötykuorma olisivat yhden bitin verrannollisia.
Ratkaisu on kääntää koko paketti asettamalla moottoribitti Modulation Control 2 -rekisteriin (0x71). Tämä kääntää johdanto-osan, synkronointisanan ja TX/RX-tiedot. Tämän seurauksena data tulisi käännellä TX-dataa kirjoitettaessa tai RX-tietoja luettaessa. Myös synkronointisana käännetään ennen kuin kirjoitetaan Si443x-synkronointisanarekistereihin.
Synkronointi Word
EN-13757-4:n vaatima synkronointisana on joko 18 alibittiä Mode S- ja Mode R:lle tai 10 chipiä mallille T. Synkronointisana Si443x:lle on 1-4 tavua. Koska tahdistussanaa edeltää kuitenkin aina alustusosa, johdanto-osan kuutta viimeistä bittiä voidaan pitää osana tahdistussanaa; niin ensimmäinen synkronointisana täytetään kolmella nollan toistolla, jota seuraa yksi. Synkronointisanaa täydennetään ennen kirjoittamista Si443x-rekistereihin.
Taulukko 1. Synkronointisana Modelle S ja Mode R
EN 13757-4 | 00 | 01110110 | 10010110 | binääri |
00 | 76 | 96 | hex | |
tyyny (01) x 3 | 01010100 | 01110110 | 10010110 | binääri |
54 | 76 | 96 | hex | |
täydentää | 10101011 | 10001001 | 01101001 | binääri |
AB | 89 | 69 | hex |
Taulukko 2. Synkronointisana Mode T -mittarille muuhun
SYNKROINTI | SYNKROINTI | SYNKROINTI |
SANA | SANA | SANA |
3 | 2 | 1 |
Lähetyksen johdannon pituus
Minimijohdanto on määritetty neljälle eri toimintatilalle. On hyväksyttävää, että johdanto-osa on määritettyä pidempi. Kun vähennetään kuusi alibittiä johdanto-osaa varten, saadaan Si443x-johdanto-osan alibittien vähimmäismäärä. Toteutus lisää kaksi ylimääräistä alustusosaa kaikkiin lyhyisiin alustusmuotoihin parantaakseen alustusosan havaitsemista ja yhteentoimivuutta. Mode S:n johdanto, jossa on pitkä johdanto, on hyvin pitkä; siis käytetään vähimmäisjohdanto-osaa. Alkuosan pituus nibbleinä kirjoitetaan Preamble Length (0x34) -rekisteriin. Alkuosan pituusrekisteri määrittää alustusosan vain lähetyksen yhteydessä. Vähimmäismääritykset ja alustusosan pituusasetukset on esitetty yhteenvetona taulukossa 3.
Taulukko 3. Lähetyksen alustusosan pituus
EN-13757-4 minimi |
Si443x Johdanto Aseta ing |
Synkronoi Sana |
Kokonais | ylimääräistä | |||
nx (01) | sirut | napostelee | sirut | sirut | sirut | sirut | |
Mode S lyhyt johdanto | 15 | 30 | 8 | 32 | 6 | 38 | 8 |
Mode S pitkä johdanto | 279 | 558 | 138 | 552 | 6 | 558 | 0 |
Mode T (mittari-muu) | 19 | 38 | 10 | 40 | 6 | 46 | 8 |
Mode R | 39 | 78 | 20 | 80 | 6 | 86 | 8 |
Vastaanoton vähimmäisjohdanto-osan määrittää Preamble Detection Control -rekisteri (0x35). Vastaanottamisen yhteydessä synkronointisanan bittien määrä on vähennettävä määritetystä vähimmäisjohdanto-osasta käytettävän alustusosan määrittämiseksi. Vastaanottimen asettumisaika on vähintään 16 merkkiä, jos AFC on käytössä, tai 8 pelimerkkiä, jos AFC ei ole käytössä. Vastaanottimen asettumisaika vähennetään myös käyttökelpoisesta alustusosasta määrittämään minimiasetuksen Preamble Detection Control -rekisterille.
Väärän alustusosan todennäköisyys riippuu Preamble Detection Control -rekisterin asetuksista. Lyhyt 8 chipin asetus voi aiheuttaa väärän johdannon, joka havaitaan muutaman sekunnin välein. Suositeltu 20 chipin asetus tekee väärän johdannon havaitsemisesta epätodennäköisen tapahtuman. Mode R:n ja Mode SL:n johdanto-osan pituudet ovat riittävän pitkiä suositeltua asetusta varten.
On hyvin vähän hyötyä siitä, että alustusosa havaitsee yli 20 chippiä.
AFC on poistettu käytöstä Model S:ssä, jossa on lyhyt alustusosa, ja Model T:ssä. Tämä lyhentää vastaanottimen asettumisaikaa ja mahdollistaa pidemmän alustusosan tunnistusasetuksen. Kun AFC ei ole käytössä, Mode T voi käyttää suositeltua 20 chipin asetusta. Mallissa S, jossa on lyhyt johdanto, käytetään asetusta 4 nibbles tai 20 chips. Tämä tekee väärän alustusosan havaitsemisen todennäköisyydestä hieman suuremman tässä mallissa.
Taulukko 4. Alkuosan tunnistus
EN-13757-4 minimi |
Synkronoi Sana |
käyttökelpoinen johdanto |
RX:n selvitys | Havaita min |
Si443x Johdanto Tunnistusasetus |
|||
nx (01) | sirut | sirut | sirut | sirut | sirut | napostelee | sirut | |
Mode S lyhyt johdanto | 15 | 30 | 6 | 24 | 8* | 16 | 4 | 16 |
Model S pitkä johdanto | 279 | 558 | 6 | 552 | 16 | 536 | 5 | 20 |
Malli T (mittari-muu) | 19 | 38 | 6 | 32 | 8* | 24 | 5 | 20 |
Mode R | 39 | 78 | 6 | 72 | 16 | 56 | 5 | 20 |
*Huomautus: AFC pois käytöstä |
Vastaanotin on konfiguroitu toimimaan yhdessä lähettimen kanssa käyttämällä määritettyä vähimmäisjohdanto-osaa. Tämä varmistaa, että vastaanotin toimii yhdessä minkä tahansa M-bus-yhteensopivan lähettimen kanssa.
Wireless M-Bus -spesifikaatio vaatii Mode S1:lle erittäin pitkän johdanto-osan, jossa on vähintään 558 sirua. Tämä kestää noin 17 ms pelkän johdannon lähettämiseen. Si443x ei vaadi niin pitkää johdanto-osaa, eikä se hyödy siitä. Vaikka pitkä johdanto-osa on todettu valinnaiseksi Mode S2:ssa, ei ole mitään syytä käyttää pitkää johdanto-osaa Si443x:n kanssa. Jos halutaan yksisuuntainen tiedonsiirto, Mode T1 tarjoaa lyhyemmän johdanto-osan, suuremman tiedonsiirtonopeuden ja pidemmän akun käyttöiän. Jos tarvitaan kaksisuuntaista tiedonsiirtoa Mode S2:n avulla, lyhyt johdanto on suositeltavaa.
Huomaa, että mallin S, jossa on pitkä alustusosa, tunnistuskynnys on pidempi kuin lyhyellä alustusosassa varustetun Model S:n alustusosien määrä. Tämä tarkoittaa, että pitkän alustusosan Mode S -vastaanotin ei havaitse alustusosaa lyhyen alustusosan Mode S -lähettimestä. Tämä on tarpeen, jos pitkän alustusosan Mode S -vastaanottimen on määrä saada hyötyä pitkästä alustusosasta.
Huomaa, että lyhyen alustusosan Mode S -vastaanotin havaitsee alustusosan ja vastaanottaa paketteja sekä lyhyestä alustusosasta Mode S
lähetin ja pitkän alustusosan Mode S -lähetin; joten yleensä mittarinlukijan tulisi käyttää lyhyttä alustusosaa Mode S -vastaanotinkonfiguraatiota.
Koodaus/dekoodaus
Wireless M-bus -spesifikaatio vaatii kaksi erilaista koodausmenetelmää. Manchester-koodausta käytetään Mode S- ja Mode R -tilassa. Manchester-koodausta käytetään myös mallin T muusta mittariin -linkissä. Mallin T mittarin ja muun välinen linkki käyttää kolmea kuudesta koodauksesta.
1. Manchesterin koodattu/dekoodaus
Manchester-koodaus on historiallisesti yleinen RF-järjestelmissä, jotta se tarjoaa vankan kellonpalautuksen ja seurannan yksinkertaisen ja edullisen modeemin avulla. Moderni korkean suorituskyvyn radio, kuten Si443x, ei kuitenkaan tarvitse Manchester-koodausta. Manchester-koodausta tuetaan ensisijaisesti yhteensopivuuden vuoksi olemassa olevien standardien kanssa, mutta Si443x:n tiedonsiirtonopeus kaksinkertaistuu, kun Manchester-koodausta ei käytetä.
Si443x tukee Manchesterin koodausta ja koko paketin dekoodausta laitteistossa. Valitettavasti synkronointisanaa ei ole Manchester-koodattu. Synkronointisanalle valittiin tarkoituksella virheellinen Manchester-sekvenssi. Tämä tekee Manchester-koodauksesta yhteensopimattoman useimpien olemassa olevien radioiden, mukaan lukien Si443x:n, kanssa. Tämän seurauksena Manchesterin koodaus ja dekoodaus on suoritettava MCU:n toimesta. Jokainen koodaamattoman datan tavu koostuu kahdeksasta databitistä. Manchester-koodausta käyttämällä jokainen databitti koodataan kaksisiruiseksi symboliksi. Koska koodattu data on kirjoitettava radio-FIFO:hon kahdeksan alibittiä kerrallaan, yksi datan nibble koodataan ja kirjoitetaan FIFO:hon kerrallaan.
Taulukko 5. Manchester-koodaus
tiedot | Ox12 | 0x34 | tavua | ||
Ox1 | 0x2 | 0x3 | 0x4 | napostelee | |
1 | 10 | 11 | 100 | binääri | |
siru | 10101001 | 10100110 | 10100101 | 10011010 | binääri |
FIFO | OxA9 | OxA6 | OxA5 | Ox9A | hex |
Jokainen lähetettävä tavu välitetään tavu kerrallaan koodaustavutoimintoon. Koodaustavutoiminto kutsuu encode-nibble-funktiota kahdesti, ensin kaikkein merkitsevimmän ja sitten vähiten merkitsevän nibble-toiminnon osalta.
Manchesterin koodaus ohjelmistossa ei ole vaikeaa. Merkittävimmästä bitistä alkaen yksi koodataan "01"-alibittisekvenssiksi. Nolla on koodattu "10" chip-sekvenssiksi. Tämä voidaan tehdä helposti käyttämällä silmukkaa ja siirtämällä kaksi bittiä jokaiselle symbolille. On kuitenkin nopeampaa käyttää yksinkertaista 16 merkinnän hakutaulukkoa jokaiselle napsulle. Koodaa Manchesterin nibble -toiminto koodaa datan ja kirjoittaa sen sitten FIFO:hon. Sirut käännetään ylösalaisin ennen kirjoittamista FIFO:lle käänteisen johdanto-osan vaatimusten huomioon ottamiseksi.
Vastaanotettaessa jokainen FIFO:n tavu koostuu kahdeksasta alibitistä ja puretaan yhdeksi datanipuksi. Lukulohkotoiminto lukee tavun kerrallaan FIFO:sta ja kutsuu dekoodaustavufunktion. Sirut käännetään FIFO:sta lukemisen jälkeen käänteisen alustusosan vaatimusten huomioon ottamiseksi. Jokainen Manchesterin koodattujen sirujen tavu dekoodataan datapalaksi. Dekoodattu nibble kirjoitetaan RX-puskuriin käyttämällä kirjoitusnibble RX-puskuritoimintoa.
Huomaa, että sekä koodaus että dekoodaus suoritetaan yksi datapala kerrallaan lennossa. Koodaus puskuriin vaatisi ylimääräisen puskurin, joka on kaksi kertaa suurempi kuin koodaamaton data. Koodaus ja dekoodaus on paljon nopeampaa kuin nopein tuettu tiedonsiirtonopeus (100 k chippiä sekunnissa). Koska Si443x tukee monitavuista luku- ja kirjoitusta FIFO:lle, vain yksitavuisten lukujen ja kirjoitusten käyttäminen aiheuttaa pientä lisäkustannuksia. Yläraja on noin 10 µs 100 koodatulle sirulle. Etuna on 512 tavun RAM-säästö.
2. Kolme kuudesta koodausdekoodauksesta
Standardissa EN-13757-4 määritelty Three-of-Six-koodausmenetelmä on toteutettu myös MCU:n laiteohjelmistossa. Tätä koodausta käytetään nopeaan (100 k chippiä sekunnissa) T-moodiin mittarista toiseen. Malli T tarjoaa lyhimmän lähetysajan ja pisimmän akun käyttöiän langattomalle mittarille.
Jokainen siirrettävä datatavu on jaettu kahteen nibbleen. Merkittävin nibble koodataan ja lähetetään ensin. Jälleen tämä on toteutettu käyttämällä koodaustavutoimintoa, joka kutsuu encode nibble -funktiota kahdesti.
Jokainen datapala on koodattu kuuden sirun symboliksi. Kuuden sirun symbolien sarja on kirjoitettava 8 chipin FIFO:han.
Koodauksen aikana kaksi tavua dataa koodataan neljäksi nibbleksi. Jokainen napostelu on 6 pelimerkin symboli. Neljä 6 chipin symbolia kootaan kolmeksi tavuksi.
Taulukko 6. Kolme kuudesta koodaus
tiedot | 0x12 | 0x34 | tavua | ||||
Ox1 | 0x2 | 0x3 | 0x4 | napostelee | |||
siru | 15 | 16 | 13 | 34 | oktaali | ||
1101 | 1110 | 1011 | 11100 | binääri | |||
FIFO | 110100 | 11100010 | 11011100 | binääri | |||
0x34 | OxE2 | OxDC | hex |
Ohjelmistossa kolme kuudesta koodaus toteutetaan käyttämällä kolmea sisäkkäistä funktiota. Koodaustavutoiminto kutsuu encode nibble -funktiota kahdesti. Koodaus nibble-funktio käyttää hakutaulukkoa kuuden chipin symbolille ja kirjoittaa symbolin Shift Three of Six -funktioihin. Tämä toiminto toteuttaa ohjelmistossa 16 chipin siirtorekisterin. Symboli kirjoitetaan siirtorekisterin vähiten merkitsevälle tavulle. Rekisteriä siirretään vasemmalle kahdesti. Tämä toistetaan kolme kertaa. Kun siirtorekisterin ylemmässä tavussa on täydellinen tavu, se käännetään ja kirjoitetaan FIFO:han.
Koska jokainen datatavu on koodattu puolitoista koodatuksi tavuksi, on tärkeää tyhjentää siirtorekisteri aluksi, jotta ensimmäinen koodattu tavu on oikea. Jos paketin pituus on pariton luku, siirtorekisteriin jää vielä yksi nibble kaikkien tavujen koodauksen jälkeen. Tämä käsitellään postamblen kanssa seuraavassa osiossa kuvatulla tavalla.
Kolmen kuudesta koodatusta dekoodaus on käänteinen menettely. Dekoodattaessa kolme koodattua tavua puretaan kahdeksi datatavuksi. Ohjelmiston siirtorekisteriä käytetään jälleen dekoodatun datan tavujen yhdistämiseen. Dekoodaukseen käytetään 64-merkinnän käänteistä hakutaulukkoa. Tämä käyttää vähemmän jaksoja, mutta enemmän koodimuistia. Vastaavan symbolin etsiminen 16 merkinnän hakutaulukosta kestää huomattavasti kauemmin.
Postamble
Wireless M-bus -spesifikaatiossa on erityisiä vaatimuksia postamblelle tai perävaunulle. Kaikissa tiloissa minimi on kaksi pelimerkkiä ja maksimi kahdeksan pelimerkkiä. Koska FIFO:n vähimmäisatomiyksikkö on yksi tavu, Mode S:lle ja Mode R:lle käytetään 8 chipin traileria. Mode T -postamble on kahdeksan chipiä, jos paketin pituus on parillinen, tai neljä chipiä, jos paketin pituus on pariton. Parittoman paketin pituuden nelisiruinen postamble täyttää vaatimukset, jotka koskevat vähintään kahta vuorottelevaa sirua.
Taulukko 7. Postamblen pituus
Postamblen pituus (sirut) | |||||
min | max | Toteutus | sirujärjestys | ||
Mode S | 2 | 8 | 8 | 1010101 | |
Mode T | 2 | 8 | 4 | (outo) | 101 |
8 | (jopa) | 1010101 | |||
Mode R | 2 | 8 | 8 | 1010101 |
Paketinkäsittelijä
Si443x:n paketinkäsittelijää voidaan käyttää muuttuvan pakettileveyden tai kiinteän pakettileveyden tilassa. Muuttuvan pakettileveyden tila vaatii paketin pituuden tavun synkronointisanan jälkeen ja valinnaisia otsikkotavuja. Vastaanotettuaan radio käyttää pituutta tavua määrittääkseen kelvollisen paketin lopun. Lähetettäessä radio lisää pituuskentän otsikkotavujen jälkeen.
Langattoman M-bus-protokollan L-kenttää ei voi käyttää Si443x-pituuskentässä. Ensinnäkin L-kenttä ei ole paketin todellinen pituus. Se on linkkikerroksen hyötykuormatavujen määrä ilman CRC-tavuja tai koodausta. Toiseksi itse L-kenttä on koodattu joko Manchester-koodauksella tai Three of Six -koodauksella Mode T -mittarille toiselle.
Toteutus käyttää paketinkäsittelijää kiinteän pakettileveyden tilassa sekä lähetykseen että vastaanottoon. Lähetyksen yhteydessä PHY-kerros lukee L-kentän lähetyspuskurissa ja laskee koodattujen tavujen määrän, mukaan lukien postamblen. Lähetettävien koodattujen tavujen kokonaismäärä kirjoitetaan Packet Length -rekisteriin (0x3E).
Vastaanoton yhteydessä kaksi ensimmäistä koodattua tavua dekoodataan ja L-kenttä kirjoitetaan vastaanottopuskuriin. L-kenttää käytetään vastaanotettavien koodattujen tavujen määrän laskemiseen. Vastaanotettavien koodattujen tavujen määrä kirjoitetaan sitten Packet Length -rekisteriin (0x3E). Postimerkki heitetään pois.
MCU:n on dekoodattava L-kenttä, laskettava koodattujen tavujen määrä ja kirjoitettava arvo Packet Length -rekisteriin ennen kuin lyhin mahdollinen paketin pituus on vastaanotettu. PHY-kerroksen lyhin sallittu L-kenttä on 9, mikä antaa 12 koodaamatonta tavua. Tämä antaa 18 koodattua tavua mallille T. Kaksi ensimmäistä tavua on jo dekoodattu. Siten paketin pituusrekisteri on päivitettävä 16-tavuisina kertoina nopeudella 100 kbps tai 1.28 millisekuntia. Tämä ei ole ongelma 8051:lle, joka toimii 20 MIPS:llä.
Vastaanotettavien tavujen määrä ei sisällä postamblea, lukuun ottamatta nelisiruista postamblea, jota käytetään T-moodin paketeille, joiden paketin pituus on pariton. Siten vastaanottaja ei vaadi postamblea, paitsi Model T parittoman pituisille paketeille. Tätä postamblea tarvitaan vain antamaan kokonaisluku koodattuja tavuja. Postinumeron sisältö jätetään huomiotta; joten jos postamblea ei lähetetä, neljä kohinabittiä vastaanotetaan ja jätetään huomiotta. Koska koodattujen tavujen kokonaismäärä on rajoitettu 255:een (0xFF), toteutus rajoittaa eri tilojen maksimi L-kenttää.
Taulukko 8. Paketin kokorajoitukset
koodattu | dekoodattu | M-bussi | ||||
tavua | tavua | L-kenttä | ||||
joulukuu | hex | joulukuu | hex | joulukuu | hex | |
Mode S | 255 | FF | 127 | 7 F | 110 | 6E |
Mode T (mittari-muu) | 255 | FF | 169 | A9 | 148 | 94 |
Mode R | 255 | FF | 127 | 7 F | 110 | 6E |
Nämä rajat ylittävät yleensä huomattavasti langattoman mittarin tyypillisen käyttötapauksen. Paketin pituus tulee pitää pienenä parhaan mahdollisen akun keston saavuttamiseksi.
Lisäksi käyttäjä voi määrittää vastaanotettavan L-kentän enimmäismäärän (USER_RX_MAX_L_FIELD). Tämä määrittää vastaanottopuskurin vaaditun koon (USER_RX_BUFFER_SIZE).
Maksimi 255 L-kentän tukeminen vaatisi 290 tavun vastaanottopuskurin ja enintään 581 Manchester-koodatun tavun. Paketinkäsittelijä on poistettava käytöstä, eikä Packet Length -rekisteriä voida käyttää siinä tapauksessa. Tämä on mahdollista, mutta on kätevämpää käyttää paketinkäsittelijää, jos mahdollista.
FIFO-käyttö
Si4431 tarjoaa 64 tavun FIFO:n lähetystä ja vastaanottoa varten. Koska koodattujen tavujen määrä on 255, koko koodattu paketti ei välttämättä mahdu 64-tavuiseen puskuriin.
Tarttuminen
Lähetyksen yhteydessä lasketaan koodattujen tavujen kokonaismäärä. Jos koodattujen tavujen kokonaismäärä postamble mukaan lukien on alle 64 tavua, koko paketti kirjoitetaan FIFO:han ja vain paketin lähetetty keskeytys on käytössä. Suurin osa lyhyistä paketeista lähetetään yhdessä FIFO-siirrossa.
Jos koodattujen tavujen määrä on suurempi kuin 64, paketin lähettäminen edellyttää useita FIFO-siirtoja. Ensimmäiset 64 tavua kirjoitetaan FIFO:hon. Lähetetyt paketit ja TX FIFO lähes tyhjät keskeytykset ovat käytössä. TX FIFO:n lähes tyhjä kynnys on asetettu 16 tavuun (25 %). Jokaisen IRQ-tapahtuman yhteydessä luetaan status 2 -rekisteri. Ensin tarkistetaan Packet Sent -bitti, ja jos pakettia ei ole lähetetty kokonaan, seuraavat 48 tavua koodattua dataa kirjoitetaan FIFO:hon. Tämä jatkuu, kunnes kaikki koodatut tavut on kirjoitettu ja paketin lähetetty keskeytys tapahtuu.
1. Vastaanotto
Vastaanotossa aluksi vain Sync Word -keskeytys on käytössä. Synkronointisanan vastaanottamisen jälkeen synkronointisanan keskeytys poistetaan käytöstä ja FIFO lähes täysi keskeytys otetaan käyttöön. FIFO:n lähes täysi kynnys on alun perin asetettu 2 tavuksi. Ensimmäistä FIFO Almost Full -keskeytystä käytetään tietämään, milloin kaksi pituutta tavua on vastaanotettu. Kun pituus on vastaanotettu, pituus dekoodataan ja koodattujen tavujen lukumäärä lasketaan. RX FIFO:n lähes täysi kynnys asetetaan sitten 48 tavuun. RX FIFO on melkein täynnä ja kelvolliset pakettikeskeytykset ovat käytössä. Seuraavassa IRQ-tapahtumassa luetaan status 1 -rekisteri. Ensin tarkistetaan Valid Packet -bitti ja sitten FIFO Almost Full -bitti. Jos vain RX FIFO Almost Full -bitti on asetettu, seuraavat 48 tavua luetaan FIFO:sta. Jos kelvollinen pakettibitti on asetettu, paketin loppuosa luetaan FIFO:sta. MCU seuraa, kuinka monta tavua on luettu, ja lopettaa lukemisen viimeisen tavun jälkeen.
Tietolinkkikerros
Tietolinkkikerroksen moduuli toteuttaa 13757-4:2005-yhteensopivan linkkikerroksen. Tietolinkkikerros (LINK) tarjoaa rajapinnan fyysisen kerroksen (PHY) ja sovelluskerroksen (AL) välille.
Tietolinkkikerros suorittaa seuraavat toiminnot:
- Tarjoaa toimintoja, jotka siirtävät tietoja PHY:n ja AL:n välillä
- Luo CRC:t lähteville viesteille
- Havaitsee CRC-virheet saapuvissa viesteissä
- Tarjoaa fyysisen osoitteen
- Kuittaa kaksisuuntaisten viestintätilojen siirrot
- Kehykset databittejä
- Havaitsee kehystysvirheet saapuvissa viesteissä
Linkkikerroksen kehysmuoto
Standardissa EN 13757-4:2005 käytetty langaton M-Bus-kehysmuoto on johdettu standardin IEC3-3-60870 FT5 (Frame Type 2) -kehysformaatista. Kehys koostuu yhdestä tai useammasta tietolohkosta. Jokainen lohko sisältää 16-bittisen CRC-kentän. Ensimmäinen lohko on kiinteäpituinen 12 tavun lohko, joka sisältää L-kentän, C-kentän, M-kentän ja A-kentän.
- L-kenttä
L-kenttä on linkkikerroksen datahyötykuorman pituus. Tämä ei sisällä itse L-kenttää tai mitään CRC-tavuista. Se sisältää L-kentän, C-kentän, M-kentän ja A-kentän. Nämä ovat osa PHY:n hyötykuormaa.
Koska koodattujen tavujen määrä on rajoitettu 255 tavuun, M-kentän suurin tuettu arvo on 110 tavua Manchester-koodatulle tiedolle ja 148 tavua Mode T Three-Out-of-Six -koodatulle datalle.
Linkkikerros vastaa L-kentän laskemisesta lähetyksen yhteydessä. Linkkikerros käyttää L-kenttää vastaanotossa.
Huomaa, että L-kenttä ei osoita PHY-hyötykuorman pituutta tai koodattujen tavujen määrää. Lähetyksen yhteydessä PHY laskee PHY:n hyötykuorman pituuden ja koodattujen tavujen määrän. Vastaanotettuaan PHY dekoodaa L-kentän ja laskee dekoodattavien tavujen määrän. - C-kenttä
C-kenttä on kehyksen ohjauskenttä. Tämä kenttä identifioi kehystyypin, ja sitä käytetään linkin datanvaihtopalvelun primitiiveille. C-kenttä ilmaisee kehystyypin – SEND, CONFIRM, REQUEST tai RESPOND. SEND- ja REQUEST-kehyksissä C-kenttä osoittaa, odotetaanko VAHVISTA vai VASTAA.
Kun käytetään perus Link TX -toimintoa, mitä tahansa C:n arvoa voidaan käyttää. Käytettäessä Link Service Primitives -kenttää C-kenttä täytetään automaattisesti standardin EN 13757-4:2005 mukaisesti. - M-kenttä
M-kenttä on valmistajan koodi. Valmistajat voivat pyytää kolmikirjaimista koodia seuraavista web osoite: http://www.dlms.com/flag/INDEX.HTM Jokainen kolmikirjaimisen koodin merkki on koodattu viideksi bitiksi. 5-bittinen koodi voidaan saada ottamalla ASCII-koodi ja vähentämällä 0x40 ("A"). Kolme 5-bittistä koodia ketjutetaan 15-bittisiksi. Merkittävin bitti on nolla. - A-kenttä
Osoitekenttä on yksilöllinen 6-tavuinen osoite jokaiselle laitteelle. Valmistajan tulee antaa yksilöllinen osoite. Jokaisen valmistajan vastuulla on varmistaa, että jokaisella laitteella on yksilöllinen 6-tavuinen osoite. Lähetä- ja Pyydä-kehysten osoite on mittarin tai muun laitteen oma osoite. Vahvistus- ja vastaustietokehykset lähetetään käyttämällä lähettävän laitteen osoitetta. - CI-kenttä
CI-kenttä on sovelluksen otsikko ja määrittää sovelluksen datan hyötykuorman datatyypin. Vaikka EN13757-4:2005 määrittelee rajoitetun määrän arvoja, linkkipalvelun primitiivit sallivat minkä tahansa arvon käytön. - CRC
CRC on määritelty standardissa EN13757-4:2005.
CRC-polynomi on:
X16 + x13 + x12 + x11 + x10 + x8 +x6 + x5 +x2 + 1
Huomaa, että M-Bus CRC lasketaan jokaiselle 16-tavuiselle lohkolle. Tuloksena on, että jokaista 16 tavua dataa lähetetään 18 tavua,
Lisätietoja
Lisätietoja linkkikerroksen toteutuksesta on kohdassa "AN452: Wireless M-Bus Stack Programmers Guide".
Virranhallinta
Kuva 2 esittää virranhallinnan aikajanaa esim. mittarilleample käyttäen Mode T1:tä.
MCU:n tulee olla lepotilassa aina kun mahdollista energian säästämiseksi. Tässä example, MCU on lepotilassa, kun RTC on käynnissä, odottaessaan radiokiteen käynnistystä ja lähettäessään FIFO:sta. MCU herää EZRadioPRO IRQ -signaalista, joka on liitetty Port Match -herätykseen.
Lähetettäessä viestejä, jotka ovat pidempiä kuin yksi lohko, MCU:n on herättävä täyttämään FIFO (FIFO:n lähes tyhjän keskeytyksen perusteella) ja palattava sitten nukkumaan.
MCU:n tulee olla lepotilassa ja käynnissä pienitehoiselta oskillaattorilta tai pursketilan oskillaattorilta, kun se lukee ADC:stä. ADC vaatii SAR-kellon.
Kun EZRadioPRO ei ole käytössä, sen tulee olla sammutustilassa ja SDN-nasta on asetettu korkealle. Tämä vaatii kiinteän yhteyden MCU:hun. EZ Radio Pro -rekisterit eivät säily sammutustilassa; joten EZRadioPro alustetaan jokaisella RTC-välillä. Radion alustus kestää alle 100 µs ja säästää 400 nA. Tämä johtaa 10 µJ energiansäästöön 10 sekunnin intervallin perusteella.
EZRadioPRO-kide kestää noin 16 ms POR:lle. Tämä on tarpeeksi pitkä CRC:n laskemiseen noin kahdeksalle lohkolle. MCU menee takaisin nukkumaan, jos se suorittaa kaikki CRC:t ennen kuin kide on stabiloitunut. Jos salausta tarvitaan, sekin voidaan käynnistää odotellessa kideoskillaattoria.
MCU:n tulisi toimia 20 MHz:n taajuudella käyttämällä pienitehoista oskillaattoria useimpiin tehtäviin. Tehtävissä, jotka vaativat tarkan aikakatkaisun, on käytettävä tarkkuusoskillaattoria ja lepotilaa lepotilan sijaan. RTC tarjoaa riittävän resoluution useimpiin tehtäviin. Virranhallinnan aikajana T2-mittarille esimampsovellus näkyy kuvassa 3.
Lähetin-vastaanottimen toteutus tulee optimoida normaaliin tapaukseen, kun mittari herää eikä lukijaa ole paikalla. Minimi/maksimi ACK-aikakatkaisut ovat riittävän pitkiä, jotta C8051F930 RTC:tä voidaan käyttää ja MCU saattaa lepotilaan.
Koontivaihtoehdot ovat saatavilla verkkovirralla tai USB-virtalähteellä toimiville lukijoille, joiden ei tarvitse käyttää lepotilaa. Lepotilaa käytetään lepotilan sijaan, jotta USB ja UART voivat keskeyttää MCU:n.
Yksinkertaisuus Studio
Pääset yhdellä napsautuksella MCU- ja langattomiin työkaluihin, dokumentaatioon, ohjelmistoon, lähdekoodikirjastoihin ja muihin. Saatavilla Windowsille,
Mac ja Linux!
![]() |
![]() |
![]() |
![]() |
IoT-portfolio www.silabs.com/IoT |
SW/HW www.silabs.com/simplicity |
Laatu www.silabs.com/quality |
Tuki ja yhteisö Community.silabs.com |
Vastuuvapauslauseke
Silicon Labs aikoo tarjota asiakkaille uusimman, tarkan ja perusteellisen dokumentaation kaikista lisälaitteista ja moduuleista, jotka ovat saatavilla järjestelmän ja ohjelmiston toteuttajille, jotka käyttävät tai aikovat käyttää Silicon Labs -tuotteita. Karakterisointitiedot, käytettävissä olevat moduulit ja oheislaitteet, muistikoot ja muistiosoitteet viittaavat kuhunkin tiettyyn laitteeseen, ja toimitetut "tyypilliset" parametrit voivat vaihdella ja vaihtelevat eri sovelluksissa. Sovellus esimamptässä kuvatut ovat vain havainnollistavia tarkoituksia. Silicon Labs pidättää oikeuden tehdä muutoksia ilman erillistä ilmoitusta ja rajoituksia tässä oleviin tuotetietoihin, spesifikaatioihin ja kuvauksiin, eikä anna takuita mukana olevien tietojen tarkkuudesta tai täydellisyydestä. Silicon Labs ei ole vastuussa tässä annettujen tietojen käytön seurauksista. Tämä asiakirja ei tarkoita tai ilmaise tässä yhteydessä myönnettyjä tekijänoikeuslisenssejä integroitujen piirien suunnitteluun tai valmistukseen. Tuotteita ei ole suunniteltu tai valtuutettu käytettäviksi missään Life Support Systemissä ilman Silicon Labsin kirjallista lupaa. "Life Support System" on mikä tahansa tuote tai järjestelmä, joka on tarkoitettu tukemaan tai ylläpitämään elämää ja/tai terveyttä ja jonka epäonnistuessa voidaan kohtuudella odottaa johtavan merkittävään henkilövahinkoon tai kuolemaan. Silicon Labsin tuotteita ei ole suunniteltu tai hyväksytty sotilaskäyttöön. Silicon Labsin tuotteita ei saa missään olosuhteissa käyttää joukkotuhoaseissa, mukaan lukien (mutta ei rajoittuen) ydin-, biologisissa tai kemiallisissa aseissa tai ohjuksissa, jotka pystyvät kuljettamaan tällaisia aseita.
Tavaramerkkitiedot
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs® ja Silicon Labs logo®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, Energy Micro -logo ja niiden yhdistelmät, "maailman energiaystävällisimmät mikro-ohjaimet", Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, Telegesis Logo®, USBXpress® ja muut ovat Silicon Labsin tavaramerkkejä tai rekisteröityjä tavaramerkkejä. ARM, CORTEX, Cortex-M3 ja thumbs ovat ARM Holdingsin tavaramerkkejä tai rekisteröityjä tavaramerkkejä. Keil on ARM Limitedin rekisteröity tavaramerkki. Kaikki muut tässä mainitut tuotteet tai tuotenimet ovat vastaavien haltijoidensa tavaramerkkejä.
Silicon Laboratories Inc.
400 West Cesar Chavez
Austin, TX 78701
USA
http://www.silabs.com
Asiakirjat / Resurssit
![]() |
SILICON LABS Wireless M-BUS -ohjelmistototeutus AN451 [pdfKäyttöopas SILICON LABS, C8051, MCU ja, EZRadioPRO, langaton M-väylä, langaton, M-BUS, ohjelmisto, toteutus, AN451 |