SILICON LABS-Logo

AN451
DRAHTLOSE M-BUS-SOFTWARE-IMPLEMENTIERUNG

Einführung

Dieser Anwendungshinweis beschreibt die Silicon Labs-Implementierung von Wireless M-Bus unter Verwendung einer Silicon Labs C8051 MCU und EZRadioPRO®. Wireless M-Bus ist ein europäischer Standard für Zählerablesungsanwendungen im 868-MHz-Frequenzband.

Schichten stapeln

Wireless M-Bus verwendet das 3-Schichten-IEC-Modell, das eine Untermenge des 7-Schichten-OSI-Modells ist (siehe Abbildung 1).

SILICON LABS Wireless M-BUS Softwareimplementierung AN451Die physikalische (PHY) Schicht ist in EN 13757-4 definiert. Die physikalische Schicht definiert, wie die Bits codiert und übertragen werden, die HF-Modemeigenschaften (Chiprate, Präambel und Synchronisationswort) und HF-Parameter (Modulation, Mittenfrequenz und Frequenzabweichung).
Die PHY-Schicht wird unter Verwendung einer Kombination aus Hardware und Firmware implementiert. Das EZRadioPRO führt alle HF- und Modemfunktionen aus. Das EZRadioPRO wird im FIFO-Modus mit dem Pakethandler verwendet. Das MbusPhy.c-Modul bietet eine SPI-Schnittstelle, Kodierung/Dekodierung, Blocklesen/Schreiben und Paketbehandlung und verwaltet die Transceiver-Zustände.
Die M-Bus-Datenverbindungsschicht ist im MbusLink.c-Modul implementiert. Die M-Bus-Anwendungsprogrammierschnittstelle besteht aus öffentlichen Funktionen, die von der Anwendungsschicht im Hauptthread aufgerufen werden können. Das MbusLink-Modul implementiert auch die Sicherungsschicht. Die Sicherungsschicht formatiert und kopiert Daten aus dem Anwendungs-TX-Puffer in den MbusPhy-TX-Puffer, wobei die erforderlichen Header und CRCs hinzugefügt werden.
Die Anwendungsschicht selbst ist nicht Bestandteil der M-Bus-Firmware. Die Anwendungsschicht definiert, wie unterschiedlichste Daten für die Übertragung formatiert werden sollen. Die meisten Zähler müssen nur ein oder zwei Arten von Daten übertragen. Das Hinzufügen einer großen Codemenge, um jede Art von Daten in das Messgerät aufzunehmen, würde dem Messgerät unnötigen Code und Kosten hinzufügen. Es könnte möglich sein, eine Bibliothek oder einen Header zu implementieren file mit einer vollständigen Liste von Datentypen. Die meisten Metering-Kunden wissen jedoch genau, welche Art von Daten sie übertragen müssen und können sich für Formatierungsdetails auf den Standard beziehen. Ein universeller Leser oder Sniffer kann einen vollständigen Satz von Anwendungsdatentypen auf der PC-GUI implementieren. Aus diesen Gründen wird die Anwendungsschicht mit example Anwendungen für ein Messgerät und ein Lesegerät.

Erforderliche Standards
  1. EN 13757-4
    EN 13757-4
    Kommunikationssystem für Zähler und Zählerfernauslesung
    Teil 4: Drahtlose Zählerablesung
    Radiometerablesung für den Betrieb im 868 MHz bis 870 MHz SRD-Band
  2. EN 13757-3
    Kommunikationssystem für Zähler und Zählerfernauslesung
    Teil 3: Dedizierte Anwendungsschicht
  3. Norm IEC 60870-2-1:1992
    Fernwirkgeräte und -systeme
    Teil 5: Übertragungsprotokolle
    Abschnitt 1: Verfahren zur Linkübertragung
  4. Norm IEC 60870-1-1:1990
    Fernwirkgeräte und -systeme
    Teil 5: Übertragungsprotokolle
    Abschnitt 1: Übertragungsrahmenformate
Definitionen
  • M-Bus—M-Bus ist ein kabelgebundener Standard für die Zählerablesung in Europa.
  • Drahtloser M-Bus—Wireless M-Bus für Zählerablesungsanwendungen in Europa.
  • PHY—Physical Layer definiert, wie Datenbits und -bytes kodiert und übertragen werden.
  • API –Anwendungsprogrammierer-Schnittstelle.
  • VERKNÜPFUNG-Data Link Layer definiert, wie Blöcke und Frames übertragen werden.
  • CRC—Zyklische Redundanzprüfung.
  • FSK—Frequenzumtastung.
  • Chip-Kleinste Einheit der übertragenen Daten. Ein Datenbit wird als mehrere Chips codiert.
  • Modul-AC-Codequelle .c file.

M-Bus PHY Funktionsbeschreibung

Präambelsequenz

Die durch die M-Bus-Spezifikation spezifizierte Präambelsequenz ist eine ganzzahlige Zahl abwechselnder Nullen und Einsen. Eine Eins wird als die höhere Frequenz und eine Null als die niedrigere Frequenz definiert.
nx (01)
Die Preamble-Optionen für den Si443x sind eine ganzzahlige Anzahl von Nibbles, die aus abwechselnden Einsen und Nullen bestehen.
nx (1010)
Eine Präambel mit einer zusätzlichen führenden Eins wäre kein Problem, aber dann würden das Synchronisationswort und die Nutzdaten um ein Bit falsch ausgerichtet sein.
Die Lösung besteht darin, das gesamte Paket zu invertieren, indem das Engine-Bit im Register Modulation Control 2 (0x71) gesetzt wird. Dadurch werden die Präambel, das Sync-Wort und die TX/RX-Daten invertiert. Folglich sollten die Daten beim Schreiben der TX-Daten oder beim Lesen der RX-Daten invertiert werden. Außerdem wird das Synchronisationswort invertiert, bevor es in die Register des Si443x-Synchronisationsworts geschrieben wird.

Synchronisationswort

Das von EN-13757-4 geforderte Synchronisationswort beträgt entweder 18 Chips für Mode S und Mode R oder 10 Chips für Model T. Das Synchronisationswort für den Si443x beträgt 1 bis 4 Byte. Da jedoch dem Synchronisationswort immer die Präambel vorausgeht, können die letzten sechs Bits der Präambel als Teil des Synchronisationswortes betrachtet werden; so wird das erste Synchronisationswort durch drei Wiederholungen einer Null gefolgt von einer Eins aufgefüllt. Das Synchronisationswort wird vor dem Schreiben in die Si443x-Register komplementiert.
Tabelle 1. Synchronisationswort für Modus S und Modus R

EN 13757-4 00 01110110 10010110 binär
00 76 96 hex
Unterlage mit (01) x 3 01010100 01110110 10010110 binär
54 76 96 hex
ergänzen 10101011 10001001 01101001 binär
AB 89 69 hex

Tabelle 2. Synchronisationswort für Modus-T-Zähler zu anderen

SYNCHRONISIEREN SYNCHRONISIEREN SYNCHRONISIEREN
WORT WORT WORT
3 2 1
Präambellänge übertragen

Die minimale Präambel ist für vier verschiedene Betriebsarten angegeben. Es ist akzeptabel, eine Präambel zu verwenden, die länger als angegeben ist. Das Subtrahieren von sechs Chips für die Präambel ergibt die minimale Anzahl von Chips für die Si443x-Präambel. Die Implementierung fügt in allen kurzen Präambelmodi zwei zusätzliche Nibbles der Präambel hinzu, um die Erkennung und Interoperabilität der Präambel zu verbessern. Die Präambel bei Mode S mit einer langen Präambel ist sehr lang; daher wird die minimale Präambel verwendet. Die Präambellänge in Nibbles wird in das Register für die Präambellänge (0x34) geschrieben. Das Präambellängenregister bestimmt die Präambel nur bei der Übertragung. Die Mindestspezifikationen und Einstellungen für die Präambellänge sind in Tabelle 3 zusammengefasst.
Tabelle 3. Länge der Sendepräambel

DE-13757-4
Minimum
Si443x Präambel
Einstellung
Synchronisieren
Wort
Gesamt Extra
nx (01) Chips Knabbereien Chips Chips Chips Chips
Mode S kurze Präambel 15 30 8 32 6 38 8
Mode S lange Präambel 279 558 138 552 6 558 0
Modus T (Meter-andere) 19 38 10 40 6 46 8
Modus R. 39 78 20 80 6 86 8

Die minimale Präambel für den Empfang wird durch das Preamble Detection Control Register (0x35) bestimmt. Beim Empfang muss die Anzahl der Bits im Sync-Wort von der spezifizierten minimalen Präambel subtrahiert werden, um die verwendbare Präambel zu bestimmen. Die minimale Einschwingzeit des Empfängers beträgt 16 Chips, wenn AFC aktiviert ist, oder 8 Chips, wenn AFC deaktiviert ist. Die Empfängereinschwingzeit wird auch von der verwendbaren Präambel subtrahiert, um die minimale Einstellung für das Präambelerkennungssteuerregister zu bestimmen.

Die Wahrscheinlichkeit einer falschen Präambel hängt von der Einstellung des Präambelerkennungssteuerregisters ab. Eine kurze Einstellung von 8 Chips kann dazu führen, dass alle paar Sekunden eine falsche Präambel erkannt wird. Die empfohlene Einstellung von 20 Chips macht die Erkennung einer falschen Präambel zu einem unwahrscheinlichen Ereignis. Die Präambellängen für Mode R und Mode SL sind ausreichend lang, um die empfohlene Einstellung zu verwenden.
Es bringt nur sehr wenig Nutzen, wenn die Präambel länger als 20 Chips erkennt.
Die AFC ist für Model S mit kurzer Präambel und Model T deaktiviert. Dies reduziert die Empfängereinschwingzeit und ermöglicht eine längere Einstellung der Präambelerkennung. Bei deaktiviertem AFC kann Mode T die empfohlene Einstellung von 20 Chips verwenden. Für Model S mit kurzer Präambel wird eine Einstellung von 4 Nibbles oder 20 Chips verwendet. Dies macht die Wahrscheinlichkeit einer falschen Präambelerkennung für dieses Modell etwas höher.
Tabelle 4. Erkennung von Präambeln

DE-13757-4
Minimum
Synchronisieren
Wort
verwendbar
Präambel
RX-Abstimmung Erkennen
Min
Si443x Präambel
Erkennungseinstellung
nx (01) Chips Chips Chips Chips Chips Knabbereien Chips
Mode S kurze Präambel 15 30 6 24 8* 16 4 16
Modell S lange Präambel 279 558 6 552 16 536 5 20
Modell T (Meter-andere) 19 38 6 32 8* 24 5 20
Modus R. 39 78 6 72 16 56 5 20
*Notiz: AFC deaktiviert

Der Empfänger ist so konfiguriert, dass er mit einem Sender unter Verwendung der minimal spezifizierten Präambel zusammenarbeitet. Dadurch wird sichergestellt, dass der Empfänger mit jedem M-Bus-kompatiblen Sender zusammenarbeitet.
Die Wireless M-Bus Spezifikation erfordert eine sehr lange Präambel für Mode S1 von mindestens 558 Chips. Dies dauert etwa 17 ms, nur um die Präambel zu übertragen. Der Si443x benötigt keine so lange Präambel und profitiert nicht von der langen Präambel. Während die lange Präambel für Mode S2 als optional angegeben ist, gibt es beim Si443x keinen Grund, eine lange Präambel zu verwenden. Wenn eine unidirektionale Kommunikation gewünscht wird, bietet Modus T1 eine kürzere Präambel, eine höhere Datenrate und eine längere Batterielebensdauer. Wenn eine Zwei-Wege-Kommunikation mit Modus S2 erforderlich ist, wird eine kurze Präambel empfohlen.
Beachten Sie, dass die Erkennungsschwelle für Model S mit einer langen Präambel länger ist als die Anzahl von Präambel-Halbbytes, die für Model S mit einer kurzen Präambel übertragen werden. Dies bedeutet, dass der Mode-S-Empfänger mit langer Präambel keine Präambel von einem Mode-S-Sender mit kurzer Präambel erkennt. Dies ist notwendig, wenn der Mode-S-Empfänger mit langer Präambel irgendeinen Nutzen aus der langen Präambel ziehen soll.
Beachten Sie, dass der Empfänger im Modus S mit kurzer Präambel die Präambel erkennt und Pakete sowohl von einem Modus S mit kurzer Präambel empfängt
Sender und einen Mode-S-Sender mit langer Präambel; Daher sollte der Zähler im Allgemeinen die Kurzpräambel-Modus-S-Empfängerkonfiguration verwenden.

Kodierung/Dekodierung

Die Wireless-M-Bus-Spezifikation erfordert zwei verschiedene Kodierungsmethoden. Manchester-Codierung wird für Mode S und Mode R verwendet. Manchester-Codierung wird auch für die andere-zu-Zähler-Verbindung in Modell T verwendet. Die Modell-T-Zähler-zu-andere-Verbindung verwendet 3 von 6 Kodierungen.
1. Manchester-Kodierung/Dekodierung
Manchester-Codierung ist in HF-Systemen in der Vergangenheit üblich, um eine robuste Taktrückgewinnung und -verfolgung unter Verwendung eines einfachen und kostengünstigen Modems bereitzustellen. Ein modernes Hochleistungsradio wie das Si443x benötigt jedoch keine Manchester-Kodierung. Manchester-Codierung wird hauptsächlich aus Kompatibilitätsgründen mit bestehenden Standards unterstützt, aber die Datenrate für den Si443x wird effektiv verdoppelt, wenn die Manchester-Codierung nicht verwendet wird.
Der Si443x unterstützt die Manchester-Kodierung und -Dekodierung des gesamten Pakets in Hardware. Leider ist das Synchronisationswort nicht Manchester-codiert. Für das Synchronisationswort wurde absichtlich eine ungültige Manchester-Sequenz gewählt. Dadurch ist die Manchester-Kodierung mit den meisten vorhandenen Funkgeräten, einschließlich dem Si443x, nicht kompatibel. Folglich muss die Manchester-Codierung und -Decodierung von der MCU durchgeführt werden. Jedes Byte bei uncodierten Daten besteht aus acht Datenbits. Bei der Manchester-Codierung wird jedes Datenbit in ein Zwei-Chip-Symbol codiert. Da die codierten Daten acht Chips gleichzeitig in den Funk-FIFO geschrieben werden müssen, wird jeweils ein Datennibble codiert und in den FIFO geschrieben.
Tabelle 5. Manchester-Kodierung

Daten Ox12 0 x 34 Bytes
Ox1 0 x 2 0 x 3 0 x 4 Knabbereien
1 10 11 100 binär
Chip 10101001 10100110 10100101 10011010 binär
FIFO OxA9 OxA6 OxA5 Ox9A hex

Jedes zu übertragende Byte wird Byte für Byte an die Byte-Verschlüsselungsfunktion übergeben. Die Byte-Verschlüsselungsfunktion ruft die Halbbyte-Verschlüsselungsfunktion zweimal auf, zuerst für das höchstwertige Halbbyte und dann für das niedrigstwertige Halbbyte.
Manchester-Codierung in Software ist nicht schwierig. Ausgehend vom höchstwertigen Bit wird eine als „01“-Chipfolge codiert. Eine Null wird als „10“-Chipsequenz codiert. Dies kann leicht erreicht werden, indem eine Schleife verwendet wird und zwei Bits für jedes Symbol verschoben werden. Es ist jedoch schneller, einfach eine einfache Nachschlagetabelle mit 16 Einträgen für jedes Halbbyte zu verwenden. Die Funktion "Manchester-Nibble codieren" codiert ein Daten-Nibble und schreibt es dann in den FIFO. Die Chips werden vor dem Schreiben in den FIFO invertiert, um die Anforderungen der invertierten Präambel zu berücksichtigen.
Beim Empfang besteht jedes Byte im FIFO aus acht Chips und wird in ein Datennibble decodiert. Die Funktion Block lesen liest jeweils ein Byte aus dem FIFO und ruft die Funktion Byte dekodieren auf. Die Chips werden nach dem Lesen aus dem FIFO invertiert, um die Anforderungen der invertierten Präambel zu berücksichtigen. Jedes Byte von Manchester-kodierten Chips wird in ein Datennibble dekodiert. Das decodierte Nibble wird unter Verwendung der Schreib-Nibble-RX-Pufferfunktion in den RX-Puffer geschrieben.
Beachten Sie, dass sowohl die Codierung als auch die Decodierung im laufenden Betrieb jeweils ein Datennibble nach dem anderen durchgeführt werden. Das Codieren in einen Puffer würde einen zusätzlichen Puffer erfordern, der doppelt so groß ist wie die uncodierten Daten. Die Kodierung und Dekodierung ist viel schneller als die schnellste unterstützte Datenrate (100 k Chips pro Sekunde). Da der Si443x Multibyte-Lese- und -Schreibvorgänge in den FIFO unterstützt, entsteht ein geringer Overhead, wenn nur Einzelbyte-Lese- und -Schreibvorgänge verwendet werden. Der Overhead beträgt etwa 10 µs für 100 codierte Chips. Der Vorteil ist eine RAM-Einsparung von 512 Byte.
2. Drei von sechs Kodierung Dekodierung
Das in EN-13757-4 spezifizierte Drei-von-Sechs-Kodierungsverfahren ist auch in der Firmware auf der MCU implementiert. Diese Codierung wird für den Hochgeschwindigkeitsmodus (100 k Chips pro Sekunde) Mode T von Meter zu anderen verwendet. Modell T bietet die kürzeste Übertragungszeit und die längste Batterielebensdauer für ein drahtloses Messgerät.
Jedes zu übertragende Datenbyte wird in zwei Nibbles unterteilt. Das höchstwertige Halbbyte wird zuerst codiert und übertragen. Dies wird wiederum unter Verwendung einer Codierungsbytefunktion implementiert, die die Codierungshalbbytefunktion zweimal aufruft.
Jedes Datennibble wird in ein Sechs-Chip-Symbol codiert. Die Folge von Sechs-Chip-Symbolen muss in das 8-Chip-FIFO geschrieben werden.
Während der Codierung werden zwei Datenbytes als vier Nibbles codiert. Jedes Nibble ist ein 6-Chip-Symbol. Vier 6-Chip-Symbole werden zu drei Bytes zusammengefasst.
Tabelle 6. Drei von sechs Codierungen

Daten 0 x 12 0 x 34 Bytes
Ox1 0 x 2 0 x 3 0 x 4 Knabbereien
Chip 15 16 13 34 Oktal
1101 1110 1011 11100 binär
FIFO 110100 11100010 11011100 binär
0 x 34 OxE2 OxDC hex

In Software wird die Drei-aus-Sechs-Codierung unter Verwendung von drei verschachtelten Funktionen implementiert. Die Byte-Verschlüsselungsfunktion ruft die Nibble-Verschlüsselungsfunktion zweimal auf. Die Codierungs-Halbbyte-Funktion verwendet eine Nachschlagetabelle für das Sechs-Chip-Symbol und schreibt das Symbol in die Drei-von-Sechs-Verschiebungsfunktionen. Diese Funktion implementiert ein 16-Chip-Schieberegister in Software. Das Symbol wird in das niedrigstwertige Byte des Schieberegisters geschrieben. Das Register wird zweimal nach links verschoben. Dies wird dreimal wiederholt. Wenn im oberen Byte des Schieberegisters ein vollständiges Byte vorhanden ist, wird es invertiert und in den FIFO geschrieben.
Da jedes Datenbyte als eineinhalb codierte Bytes codiert ist, ist es wichtig, das Schieberegister anfänglich zu löschen, damit das erste codierte Byte korrekt ist. Wenn die Paketlänge eine ungerade Zahl ist, bleibt nach dem Codieren aller Bytes noch ein Halbbyte im Schieberegister übrig. Dies wird mit der Postambel gehandhabt, wie im nächsten Abschnitt erläutert.
Das Decodieren der drei von sechs codierten ist das umgekehrte Verfahren. Beim Dekodieren werden drei kodierte Bytes in zwei Datenbytes dekodiert. Das Software-Schieberegister wird wiederum verwendet, um Bytes decodierter Daten zu aggregieren. Zum Decodieren wird eine inverse Nachschlagetabelle mit 64 Einträgen verwendet. Dies verwendet weniger Zyklen, aber mehr Codespeicher. Das Durchsuchen einer Nachschlagetabelle mit 16 Einträgen nach dem entsprechenden Symbol dauert erheblich länger.
Postambel
Die Wireless M-Bus-Spezifikation hat spezifische Anforderungen für die Postambel oder den Anhänger. Für alle Modi beträgt das Minimum zwei Chips und das Maximum acht Chips. Da die minimale atomare Einheit für den FIFO ein Byte ist, wird ein 8-Chip-Trailer für Modus S und Modus R verwendet. Die Modus-T-Postambel beträgt acht Chips, wenn die Paketlänge gerade ist, oder vier Chips, wenn die Paketlänge ungerade ist. Die Vier-Chip-Postambel für eine ungerade Paketlänge erfüllt die Anforderungen von mindestens zwei alternierenden Chips.
Tabelle 7. Länge der Postambel

Postambellänge (Chips)
Min max Durchführung Chip-Sequenz
Modus S 2 8 8 1010101
Modus T 2 8 4 (seltsam) 101
8 (auch) 1010101
Modus R. 2 8 8 1010101
Pakethandler

Der Pakethandler des Si443x kann in einem Modus mit variabler Paketbreite oder einem Modus mit fester Paketbreite verwendet werden. Der Modus mit variabler Paketbreite erfordert ein Paketlängenbyte nach dem Synchronisationswort und optionale Kopfbytes. Beim Empfang verwendet das Funkgerät das Längenbyte, um das Ende eines gültigen Pakets zu bestimmen. Bei der Übertragung fügt das Funkgerät das Längenfeld nach den Header-Bytes ein.
Das Feld L für das drahtlose M-Bus-Protokoll kann nicht für das Längenfeld Si443x verwendet werden. Erstens ist das L-Feld nicht die tatsächliche Paketlänge. Es ist die Anzahl der Nutzlastbytes der Verbindungsschicht, ohne die CRC-Bytes oder die Codierung. Zweitens wird das L-Feld selbst unter Verwendung von entweder Manchester-Kodierung oder Drei-aus-Sechs-Kodierung für Modus-T-Meter zu anderen kodiert.
Die Implementierung verwendet den Pakethandler im Modus mit fester Paketbreite sowohl für das Senden als auch für den Empfang. Bei der Übertragung liest die PHY-Schicht das L-Feld im Sendepuffer und berechnet die Anzahl der codierten Bytes einschließlich der Postambel. Die Gesamtzahl der zu übertragenden codierten Bytes wird in das Paketlängenregister (0x3E) geschrieben.
Beim Empfang werden die ersten beiden codierten Bytes decodiert und das L-Feld wird in den Empfangspuffer geschrieben. Das L-Feld wird verwendet, um die Anzahl der zu empfangenden codierten Bytes zu berechnen. Die Anzahl der zu empfangenden codierten Bytes wird dann in das Paketlängenregister (0x3E) geschrieben. Die Postambel wird verworfen.
Die MCU muss das L-Feld decodieren, die Anzahl der codierten Bytes berechnen und den Wert in das Paketlängenregister schreiben, bevor die kürzestmögliche Paketlänge empfangen wurde. Das kürzeste zulässige L-Feld für die PHY-Schicht ist 9, was 12 uncodierte Bytes ergibt. Dies ergibt 18 codierte Bytes für Model T. Die ersten beiden Bytes wurden bereits decodiert. Somit muss das Paketlängenregister in 16-Byte-Zeiten mit 100 kbps oder 1.28 Millisekunden aktualisiert werden. Für einen 8051 mit 20 MIPS kein Problem.
Die Anzahl der zu empfangenden Bytes beinhaltet nicht die Postambel, mit Ausnahme der Vier-Chip-Postambel, die für Mode-T-Pakete mit einer ungeraden Paketlänge verwendet wird. Somit benötigt der Empfänger keine Postambel, außer für die Pakete ungerader Länge des Modells T. Diese Postambel wird nur benötigt, um eine ganze Zahl von codierten Bytes anzugeben. Der Inhalt der Postambel wird ignoriert; Wenn also die Postambel nicht übertragen wird, werden vier Rauschchips empfangen und ignoriert. Da die Gesamtzahl der codierten Bytes auf 255 (0xFF) begrenzt ist, begrenzt die Implementierung das maximale L-Feld für die verschiedenen Modi.
Tabelle 8. Paketgrößenbeschränkungen

codiert dekodiert M-Bus
Bytes Bytes L-Feld
Dezember hex Dezember hex Dezember hex
Modus S 255 FF 127 7 F 110 6E
Modus T (Meter-andere) 255 FF 169 A9 148 94
Modus R. 255 FF 127 7 F 110 6E

Diese Grenzwerte liegen normalerweise weit über dem typischen Anwendungsfall für ein drahtloses Messgerät. Die Paketlänge sollte klein gehalten werden, um die bestmögliche Akkulaufzeit zu erzielen.
Außerdem kann der Benutzer das maximal zu empfangende L-Feld spezifizieren (USER_RX_MAX_L_FIELD). Dadurch wird die erforderliche Größe für den Empfangspuffer (USER_RX_BUFFER_SIZE) bestimmt.
Die Unterstützung eines maximalen L-Feldes von 255 würde einen Empfangspuffer von 290 Bytes und maximal 581 Manchester-codierten Bytes erfordern. Der Pakethandler müsste deaktiviert werden und das Paketlängenregister könnte in diesem Fall nicht verwendet werden. Dies ist möglich, aber es ist bequemer, wenn möglich, den Pakethandler zu verwenden.

FIFO-Nutzung

Der Si4431 bietet einen 64-Byte-FIFO zum Senden und Empfangen. Da die Anzahl der codierten Bytes 255 beträgt, passt möglicherweise nicht ein gesamtes codiertes Paket in den 64-Byte-Puffer.
Übertragung
Bei der Übertragung wird die Gesamtzahl der codierten Bytes berechnet. Wenn die Gesamtzahl der codierten Bytes, einschließlich der Postambel, weniger als 64 Bytes beträgt, wird das gesamte Paket in den FIFO geschrieben und nur der Interrupt für das gesendete Paket freigegeben. Die meisten kurzen Pakete werden in einer FIFO-Übertragung gesendet.
Wenn die Anzahl der codierten Bytes größer als 64 ist, sind mehrere FIFO-Übertragungen erforderlich, um das Paket zu senden. Die ersten 64 Byte werden in das FIFO geschrieben. Die Interrupts Packet Sent und TX FIFO Fast Empty werden freigegeben. Der Schwellenwert TX FIFO Fast Empty ist auf 16 Byte (25 %) eingestellt. Bei jedem IRQ-Ereignis wird das Status-2-Register gelesen. Das Bit Packet Sent wird zuerst überprüft, und wenn das Paket nicht vollständig gesendet wurde, werden die nächsten 48 Bytes codierter Daten in den FIFO geschrieben. Dies wird so lange fortgesetzt, bis alle codierten Bytes geschrieben wurden und der Packet Sent Interrupt auftritt.
1. Rezeption
Beim Empfang ist zunächst nur der Sync-Word-Interrupt freigegeben. Nach dem Empfang des Sync-Wortes wird die Sync-Wort-Unterbrechung gesperrt und die FIFO-Fast-Voll-Unterbrechung wird freigegeben. Der fast volle FIFO-Schwellenwert wird anfänglich auf 2 Byte eingestellt. Der erste FIFO-Fast-Voll-Interrupt wird verwendet, um zu wissen, wann die zwei Längenbytes empfangen wurden. Nachdem die Länge empfangen wurde, wird die Länge decodiert und die Anzahl der codierten Bytes berechnet. Der RX-FIFO-fast-voll-Schwellenwert wird dann auf 48 Bytes gesetzt. Der RX-FIFO ist fast voll und die Unterbrechungen für gültige Pakete sind aktiviert. Beim nächsten IRQ-Ereignis wird das Status-1-Register gelesen. Zuerst wird das Gültig-Paket-Bit geprüft, und dann wird das FIFO-Fast-Voll-Bit geprüft. Wenn nur das Bit RX FIFO Fast Full gesetzt ist, werden die nächsten 48 Bytes aus dem FIFO gelesen. Wenn das gültige Paketbit gesetzt ist, wird der Rest des Pakets aus dem FIFO gelesen. Die MCU verfolgt, wie viele Bytes gelesen wurden und stoppt das Lesen nach dem letzten Byte.

Datenübertragungsebene

Das Sicherungsschichtmodul implementiert eine 13757-4:2005-konforme Sicherungsschicht. Die Sicherungsschicht (LINK) stellt eine Schnittstelle zwischen der physikalischen Schicht (PHY) und der Anwendungsschicht (AL) bereit.
Die Sicherungsschicht führt die folgenden Funktionen aus:

  • Bietet Funktionen zum Übertragen von Daten zwischen PHY und AL
  • Generiert CRCs für ausgehende Nachrichten
  • Erkennt CRC-Fehler in eingehenden Nachrichten
  • Bietet physikalische Adressierung
  • Bestätigt Übertragungen für bidirektionale Kommunikationsmodi
  • Frames Datenbits
  • Erkennt Framing-Fehler in eingehenden Nachrichten
Link-Layer-Frame-Format

Das in EN 13757-4:2005 verwendete Wireless-M-Bus-Rahmenformat ist vom FT3-Rahmenformat (Frame Type 3) von IEC60870-5-2 abgeleitet. Der Rahmen besteht aus einem oder mehreren Datenblöcken. Jeder Block enthält ein 16-Bit-CRC-Feld. Der erste Block ist ein Block fester Länge von 12 Bytes, der das L-Feld, C-Feld, M-Feld und A-Feld enthält.

  1. L-Feld
    Das L-Feld ist die Länge der Datennutzlast der Verbindungsschicht. Dies beinhaltet nicht das L-Feld selbst oder eines der CRC-Bytes. Es enthält das L-Feld, C-Feld, M-Feld und A-Feld. Diese sind Teil der PHY-Nutzlast.
    Da die Anzahl der codierten Bytes auf 255 Bytes begrenzt ist, beträgt der maximal unterstützte Wert für das M-Feld 110 Bytes für Manchester-codierte Daten und 148 Bytes für Modus-T-Drei-aus-Sechs-codierte Daten.
    Die Link-Schicht ist für die Berechnung des L-Feldes bei der Übertragung verantwortlich. Die Verbindungsschicht verwendet das L-Feld beim Empfang.
    Beachten Sie, dass das L-Feld nicht die Länge der PHY-Nutzlast oder die Anzahl der codierten Bytes anzeigt. Bei der Übertragung berechnet der PHY die PHY-Nutzlastlänge und die Anzahl der codierten Bytes. Beim Empfang dekodiert die PHY das L-Feld und berechnet die Anzahl der zu dekodierenden Bytes.
  2. C-Feld
    Das C-Feld ist das Rahmensteuerfeld. Dieses Feld identifiziert den Rahmentyp und wird für die Verbindungsdatenaustausch-Dienstprimitive verwendet. Das C-Feld zeigt den Rahmentyp an – SEND, CONFIRM, REQUEST oder RESPOND. Bei SEND- und REQUEST-Rahmen zeigt das C-Feld an, ob eine BESTÄTIGUNG oder ANTWORT erwartet wird.
    Bei Verwendung der grundlegenden Link TX-Funktion kann jeder Wert von C verwendet werden. Bei Verwendung der Link Service Primitives wird das C-Feld gemäß EN 13757-4:2005 automatisch ausgefüllt.
  3. M-Feld
    Das M-Feld ist der Herstellercode. Hersteller können einen aus drei Buchstaben bestehenden Code von den folgenden anfordern web Adresse: http://www.dlms.com/flag/INDEX.HTM Jedes Zeichen des Drei-Buchstaben-Codes wird als fünf Bits codiert. Der 5-Bit-Code kann erhalten werden, indem man den ASCII-Code nimmt und 0x40 ("A") subtrahiert. Die drei 5-Bit-Codes werden zu 15-Bit verkettet. Das höchstwertige Bit ist Null.
  4. A-Feld
    Das Adressfeld ist eine eindeutige 6-Byte-Adresse für jedes Gerät. Die eindeutige Adresse sollte vom Hersteller vergeben werden. Es liegt in der Verantwortung jedes Herstellers sicherzustellen, dass jedes Gerät eine eindeutige 6-Byte-Adresse hat. Die Adresse für Send- und Request-Frames ist die Eigenadresse des Zählers oder eines anderen Geräts. Die Bestätigungs- und Antwortdatenrahmen werden unter Verwendung der Adresse des Ursprungsgeräts gesendet.
  5. CI-Feld
    Das CI-Feld ist der Anwendungsheader und spezifiziert den Datentyp in der Nutzlast der Anwendungsdaten. Während EN13757-4:2005 eine begrenzte Anzahl von Werten festlegt, erlauben die Link Service Primitives die Verwendung eines beliebigen Wertes.
  6. CRC
    Der CRC ist in EN13757-4:2005 spezifiziert.
    Das CRC-Polynom lautet:
    X16 + x13 + x12 + x11 + x10 + x8 + x6 + x5 + x2 + 1
    Beachten Sie, dass der M-Bus CRC über jeden 16-Byte-Block berechnet wird. Das Ergebnis ist, dass alle 16 Byte Daten 18 Byte übertragen werden müssen,
Weitere Informationen

Weitere Informationen zur Link-Layer-Implementierung finden Sie unter „AN452: Wireless M-Bus Stack Programmers Guide“.

Energieverwaltung

Abbildung 2 zeigt die Energieverwaltungs-Zeitleiste für ein Messgerät exampVerwenden Sie den Modus T1.

Die MCU sollte sich nach Möglichkeit im Ruhemodus befinden, um Energie zu sparen. In dieser example, die MCU schläft, wenn die RTC läuft, auf den Start des Funkquarzes wartet und vom FIFO sendet. Die MCU wird von dem EZRadioPRO IRQ-Signal geweckt, das mit einem Port-Match-Wake-up verbunden ist.
Wenn Nachrichten übertragen werden, die länger als ein Block sind, muss die MCU aufwachen, um den FIFO zu füllen (basierend auf dem fast leeren FIFO-Interrupt) und dann wieder schlafen gehen.
Die MCU sollte sich beim Lesen vom ADC im Idle-Modus befinden und vom Low-Power-Oszillator oder Burst-Mode-Oszillator laufen. Der ADC benötigt eine SAR-Uhr.
Bei Nichtgebrauch sollte sich das EZRadioPRO im Shutdown-Modus befinden, wobei der SDN-Pin auf High geschaltet ist. Dies erfordert eine festverdrahtete Verbindung zur MCU. Die EZ Radio Pro-Register werden im Shutdown-Modus nicht beibehalten; Daher wird das EZRadioPro bei jedem RTC-Intervall initialisiert. Die Initialisierung des Funkgeräts dauert weniger als 100 µs und spart 400 nA. Dies führt zu einer Energieeinsparung von 10 µJ, basierend auf einem 10-Sekunden-Intervall.
Der EZRadioPRO-Kristall benötigt etwa 16 ms für einen POR. Dies ist lang genug, um den CRC für etwa acht Blöcke zu berechnen. Die MCU geht wieder in den Ruhezustand, wenn alle CRCs abgeschlossen sind, bevor sich der Quarz stabilisiert hat. Wenn eine Verschlüsselung erforderlich ist, kann auch diese gestartet werden, während auf den Quarzoszillator gewartet wird.
Die MCU sollte für die meisten Aufgaben mit 20 MHz laufen und den Low-Power-Oszillator verwenden. Aufgaben, die ein genaues Timeout erfordern, müssen den Präzisionsoszillator und den Ruhemodus anstelle des Schlafmodus verwenden. Die RTC bietet für die meisten Aufgaben genügend Auflösung. Die Energieverwaltungs-Zeitleiste für das T2-Messgerät exampDie Anwendung ist in Abbildung 3 dargestellt.

Die Transceiver-Implementierung sollte für den Normalfall optimiert werden, wenn der Zähler aufwacht und kein Lesegerät vorhanden ist. Die minimalen/maximalen ACK-Timeouts sind ausreichend lang, damit es möglich ist, den C8051F930 RTC zu verwenden und die MCU in den Schlafmodus zu versetzen.
Build-Optionen werden für netz- oder USB-betriebene Lesegeräte bereitgestellt, die den Ruhemodus nicht verwenden müssen. Der Ruhemodus wird anstelle des Ruhezustands verwendet, damit USB und UART die MCU unterbrechen können.

SILICON LABS Wireless M-BUS Softwareimplementierung AN451-1

Einfachheit Studio
Zugriff mit einem Klick auf MCU- und Wireless-Tools, Dokumentation, Software, Quellcodebibliotheken und mehr. Verfügbar für Windows,
Mac und Linux!

IoT-Portfolio Qualität
IoT-Portfolio
www.silabs.com/IoT
SW/HW
www.silabs.com/simplicity
Qualität
www.silabs.com/quality
Support und Community
community.silabs.com

Haftungsausschluss
Silicon Labs möchte seinen Kunden die neueste, genaueste und ausführlichste Dokumentation aller Peripheriegeräte und Module zur Verfügung stellen, die für System- und Softwareimplementierer verfügbar sind, die die Silicon Labs-Produkte verwenden oder verwenden möchten. Charakterisierungsdaten, verfügbare Module und Peripheriegeräte, Speichergrößen und Speicheradressen beziehen sich auf jedes spezifische Gerät, und die angegebenen „typischen“ Parameter können je nach Anwendung variieren. AnwendungsbeispielampDie hierin beschriebenen dienen nur zur Veranschaulichung. Silicon Labs behält sich das Recht vor, hierin Produktinformationen, Spezifikationen und Beschreibungen ohne weitere Ankündigung und Einschränkung zu ändern und gibt keine Garantien für die Richtigkeit oder Vollständigkeit der enthaltenen Informationen ab. Silicon Labs übernimmt keine Haftung für die Folgen der Verwendung der hierin bereitgestellten Informationen. Dieses Dokument impliziert oder drückt keine Urheberrechtslizenzen aus, die hierunter gewährt werden, um integrierte Schaltkreise zu entwerfen oder herzustellen. Die Produkte sind ohne die ausdrückliche schriftliche Zustimmung von Silicon Labs nicht für die Verwendung innerhalb eines Lebenserhaltungssystems ausgelegt oder autorisiert. Ein „Lebenserhaltungssystem“ ist jedes Produkt oder System, das dazu bestimmt ist, Leben und/oder Gesundheit zu unterstützen oder zu erhalten, und von dem vernünftigerweise erwartet werden kann, dass es zu erheblichen Personenschäden oder zum Tod führt, wenn es versagt. Produkte von Silicon Labs sind nicht für militärische Anwendungen konzipiert oder zugelassen. Produkte von Silicon Labs dürfen unter keinen Umständen in Massenvernichtungswaffen verwendet werden, einschließlich (aber nicht beschränkt auf) nuklearen, biologischen oder chemischen Waffen oder Raketen, die solche Waffen liefern können.
Markeninformationen
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs® und das Silicon Labs Logo®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, Energy Micro-Logo und Kombinationen daraus, „die energiefreundlichsten Mikrocontroller der Welt“, Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, das Telegesis Logo®, USBXpress® und andere sind Marken oder eingetragene Marken von Silicon Labs. ARM, CORTEX, Cortex-M3 und thumbs sind Marken oder eingetragene Marken von ARM Holdings. Keil ist ein eingetragenes Warenzeichen von ARM Limited. Alle anderen hierin erwähnten Produkte oder Markennamen sind Warenzeichen ihrer jeweiligen Inhaber.SILICON LABS-Logo

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

Dokumente / Ressourcen

SILICON LABS Wireless M-BUS Softwareimplementierung AN451 [pdf] Benutzerhandbuch
SILICON LABS, C8051, MCU und, EZRadioPRO, Wireless M-Bus, Wireless, M-BUS, Software, Implementierung, AN451

Verweise

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind markiert *