Einführung

In diesem zweiten Beitrag in der Serie über Bluetooth 5 behandeln wir die neue Funktion der verbesserten 2-fachen Geschwindigkeit zusammen mit einem allgemeinen Überblick über den Durchsatz für eine BLE-Anwendung (der vorherige Beitrag ging auf die neuen Funktionen von Bluetooth 5 im Allgemeinen ein und behandelte speziell die Funktion der erhöhten Werbekapazität).

Zunächst müssen wir verstehen, dass die beworbenen Geschwindigkeiten (1 Mbit/s und die neuen 2 Mbit/s) nur theoretisch sind und sich auf den Durchsatz der Anwendung auswirken. Dafür gibt es mehrere Gründe, auf die wir im nächsten Abschnitt eingehen werden.

Die Bluetooth 5-Funktion „2x Geschwindigkeit“ erfordert ein Hardware-Update, so dass ältere Geräte/Chips/Module diese Funktion nicht unterstützen werden. Um diesen höheren Durchsatz zu erreichen, müssen beide BLE-Geräte, die miteinander kommunizieren, den neuen LE 2M PHY unterstützen (der die Datenübertragung mit dieser höheren Geschwindigkeit ermöglicht).

Der neue LE 2M PHY sowie der ursprüngliche LE 1M PHY werden beide als uncodierte PHYs bezeichnet, da sie eine 1-Symbol-Darstellung pro Datenbit verwenden (im Vergleich zum neuen LE Coded PHY, der eine 2-Symbol- oder 8-Symbol-Darstellung pro Datenbit verwendet).

Ein weiterer wichtiger Punkt ist, dass bei der Verwendung des PHYs mit höherer Geschwindigkeit tatsächlich ein geringerer Stromverbrauch erzielt wird (vorausgesetzt, es wird die gleiche Datenmenge übertragen). Das liegt daran, dass die Funkeinschaltzeit verkürzt wird, ohne dass die Sendeleistung erhöht wird. Dies wiederum verbessert auch die Koexistenz mit anderen drahtlosen Technologien innerhalb des 2,4-GHz-Spektrums (ebenfalls aufgrund der reduzierten Funkeinschaltzeit).

In diesem Beitrag behandeln wir:

  • Welchen praktischen Durchsatz kann man von BLE erwarten?
  • Der neue 2M-PHY von Bluetooth 5 für die Datenübertragung
  • Welche Faktoren beeinflussen/bestimmen den Datendurchsatz?
  • Wie berechnet man den Datendurchsatz einer Anwendung?
  • Wie maximiert man den Datendurchsatz?
  • Testen, Messen und Berechnen des Datendurchsatzes mit zwei Entwicklungskits der nRF52-Serie

Warum ist es unmöglich, die theoretischen Geschwindigkeiten von BLE zu erreichen?

Die Datenraten von 1 Mbit/s (LE 1M PHY), 2 Mbit/s (LE 2M PHY), 125 kbit/s und 500 kbit/s (beide unter Verwendung des LE Coded PHY mit S=8 bzw. S=2) sind die Raten, mit denen das Funkgerät Daten überträgt, aber dies ist für den Anwendungsdurchsatz aus folgenden Gründen nicht erreichbar:

  • Begrenzung der Anzahl der Pakete pro Verbindungsintervall
  • Inter Frame Space (IFS) Verzögerung zwischen den Paketen (150 us)
  • Leere Pakete, die von einem Gerät gesendet werden müssen, auch wenn keine Daten
  • Paket-Overhead – nicht alle Bytes in einem Paket werden für die Nutzlast verwendet

Um diese Faktoren besser zu verstehen und zu begreifen, was den Anwendungsdurchsatz beeinflusst müssen wir einen genaueren Blick auf das Paketformat werfen. Die folgende Abbildung zeigt, wie LE 1M PHY- und 2M PHY-Datenpakete aussehen:

Der Teil, der uns interessiert (und der die Anwendungsdaten wirklich definiert), ist die ATT-Nutzlast. Wie Sie aus der Abbildung ersehen können, gibt es eine Reihe von Overhead-Bytes, die von jeder Schicht in Bluetooth Low Energy verwendet werden.

  • In 4.0 und 4.1 beträgt die maximale ATT-Nutzlast 20 Bytes.
  • In 4.2 und 5.0 ermöglicht eine neue Funktion namens Data Length Extensions (DLE), dass die ATT-Nutzlast bis zu 244 Bytes an Daten enthält.

Bluetooth 5-Geschwindigkeit: 2-fache Geschwindigkeit unter Verwendung des neuen 2M PHY

Es ist nützlich, die Einschränkungen bei der Verwendung des neuen LE 2M PHY in Bluetooth 5 zu verstehen:

  • Kann nicht zur Übertragung der primären Werbung (auf den primären Kanälen) verwendet werden.
  • Kann für die sekundären „Hilfspakete“ verwendet werden, die auf denselben Kanälen wie die Datenpakete gesendet werden (37 Kanäle: 0-36).
    Um mehr über primäre und sekundäre Anzeigen zu erfahren, lesen Sie meinen früheren Blogbeitrag: Bluetooth 5 Advertisements: Alles, was Sie wissen müssen.
  • LE 1M ist obligatorisch, während LE 2M optional ist. Daher können nicht alle Chips, die Bluetooth 5 unterstützen, notwendigerweise den höheren Durchsatz bewältigen.
  • Ankündigungen und Erkennung können auf dem LE 2M PHY erfolgen, und dann werden Verbindungen auf dem sekundären Ankündigungskanal unter Verwendung des LE 2M PHY hergestellt

Die Übertragung von Anwendungsdaten von einem Gerät zum anderen erfolgt normalerweise während einer Verbindung zwischen den beiden Geräten. Die verbundenen Geräte können die Verwendung eines anderen PHY über das PHY-Update-Verfahren aushandeln. Es kann entweder vom Slave oder vom Master initiiert werden, nachdem eine Verbindung hergestellt wurde, aber der Master wird letztendlich die endgültige Entscheidung treffen, welche PHYs für jede Richtung verwendet werden (basierend auf der Anfrage des Slaves und den PHYs, die der Master unterstützt).

Faktoren, die den Datendurchsatz beeinflussen/bestimmen

Es gibt einige Faktoren, die den Datendurchsatz einer BLE-Anwendung beeinflussen. Die häufigsten sind:

  • Verwendete PHY (LE 1M vs. LE 2M vs. LE Coded (S=2 oder S=8))
  • Verbindungsintervall
  • Maximale Anzahl von Paketen pro Verbindungsintervall
  • ATT Maximum Transmission Unit (ATT MTU)
  • Data Length Extension (DLE)
  • Operationstyp: Schreiben mit Antwort vs. Schreiben ohne Antwort, Anzeigen vs. Benachrichtigungen
  • Inter Frame Space (IFS): Zeitlücke zwischen aufeinanderfolgenden Paketen (150 us)
  • Übertragung von leeren Paketen
  • Paket-Overhead – nicht alle Bytes in einem Paket werden für die Nutzlast der Anwendung verwendet

Lassen Sie uns jedes dieser Elemente genauer betrachten.

PHY

Es gibt grundsätzlich drei PHYs in Bluetooth 5: den ursprünglichen 1 Mbps PHY, den neuen 2 Mbps und den kodierten PHY (mit S=2 oder S=8). Der verwendete PHY wirkt sich direkt auf den maximalen Datendurchsatz aus, den Sie erreichen können, da er die tatsächliche Rohdatenrate bestimmt, mit der Pakete über die Luft gesendet werden.

Verbindungsintervall &max Pakete pro Verbindungsereignis

Das Verbindungsintervall bestimmt effektiv, wie viele Pakete während eines Verbindungsereignisses gesendet werden können. Je höher der Wert, desto mehr Pakete können in einem Verbindungsereignis gesendet werden (bis zu einer bestimmten Grenze für einige Geräte).

Erfahren Sie mehr über Verbindungsintervalle: BLE-Verbindungsintervalle und -Ereignisse

Die Anzahl der Pakete pro Verbindungsereignis hängt jedoch vom Gerät und dem BLE-Stack ab, ist also begrenzt und unterscheidet sich zwischen Geräten und Stack-Versionen auf einem bestimmten Gerät. Dieser Wert hängt auch vom Betrieb des Geräts ab, d. h. das Funkgerät muss sich möglicherweise um andere Ereignisse kümmern, und die Anzahl der pro Verbindungsereignis gesendeten Pakete erreicht möglicherweise nicht die vom Stack erlaubte Höchstzahl. Die Anzahl unterscheidet sich zum Beispiel zwischen iOS und Android und ändert sich auch je nach Version des Betriebssystems, das auf dem Gerät läuft.

Manchmal ist es sinnvoll, die Verbindungsparameter dynamisch zu aktualisieren, je nach Anwendungsfall. Denken Sie jedoch daran, dass es dem Master obliegt, diese Empfehlungen zu akzeptieren oder die Parameter zu aktualisieren, um sie zu berücksichtigen.

Data Length Extensions (DLE)

Diese Funktion ermöglicht es, dass die Paketgröße eine größere Menge an Nutzdaten enthält (bis zu 251 Byte im Vergleich zu 27 Byte bei Deaktivierung). Diese Funktion wurde in Version 4.2 der Bluetooth-Spezifikation eingeführt.

ATT Maximum Transmission Unit (ATT MTU)

ATT MTU Bestimmt die maximale Datenmenge, die von Sender und Empfänger verarbeitet werden kann und die sie in ihren Puffern speichern können.

Der MTU-Wert wirkt sich auf die Menge der Overhead-Daten aus (insbesondere den ATT-Header, der 3 Byte beträgt). Die minimal zulässige ATT-MTU beträgt 27 Byte. Damit sind maximal 20 Byte ATT-Nutzdaten möglich (3 Byte werden für den ATT-Header und 4 Byte für den L2CAP-Header verwendet).

Die Spezifikation sieht keine Begrenzung für die Höhe des MTU-Werts vor, aber der verwendete Stack kann seine eigenen Einschränkungen haben. Wenn Sie zum Beispiel DLE aktivieren, können Sie bis zu 251 – 4 = 247 Bytes übertragen (nach Abzug der L2CAP-Header-Größe). Nach Abzug des ATT-Headers (3 Byte) bleiben 244 Byte für die eigentlichen ATT-Nutzdaten übrig. Wenn die MTU mindestens 247 Byte beträgt, passt die MTU in ein einziges Paket. Ist die MTU größer als 247 Byte, dann erstreckt sich die MTU über mehrere Pakete, wodurch der Durchsatz sinkt (wegen des Paket-Overheads und des Timings zwischen den Paketen).

Die effektive MTU wird durch den Mindestwert der ATT MTU bestimmt, den Client und Server unterstützen. Wenn ein Client beispielsweise eine ATT MTU von 100 Byte unterstützt und der Server antwortet, dass er eine ATT MTU von 150 Byte unterstützt, dann entscheidet der Client, dass die ATT MTU, die für die Verbindung verwendet werden soll, von da an 100 Byte beträgt.

Operationstyp: Schreiben mit Antwort vs. Schreiben ohne Antwort, Anzeigen vs. Benachrichtigungen

Wenn ein hoher Durchsatz gewünscht ist, kann man Schreiben ohne Antwort oder Benachrichtigungen verwenden, um die Daten vom Client zum Server und vom Server zum Client zu übertragen. Diese Operationen machen es überflüssig, dass das andere Gerät den Empfang der Daten bestätigt und antwortet, bevor der nächste Datenblock gesendet werden kann.

Inter Frame Space (IFS): Zeitverzögerung zwischen aufeinanderfolgenden Paketen (150 us)

Aus der Bluetooth-Spezifikation:

4.1.1 Inter Frame Space

Das Zeitintervall zwischen zwei aufeinanderfolgenden Paketen auf demselben Kanalindex wird Inter Frame Space genannt. Er ist definiert als die Zeit vom Ende des letzten Bits des vorhergehenden Pakets bis zum Beginn des ersten Bits des nachfolgenden Pakets.
Der Inter Frame Space wird mit „T_IFS“ bezeichnet und soll 150 μs betragen.

Übertragung von leeren Paketen

Wenn das Gerät, das Daten empfängt, keine Daten zurücksenden möchte, muss es dennoch ein leeres Paket gemäß der Bluetooth-Spezifikation senden.

Paket-Overhead

Wie wir in der Abbildung des Paketformats gesehen haben, enthält das Paket einige Overhead-Daten, die nicht zu den Anwendungsdaten (ATT-Daten) zählen. Im Grunde genommen verbrauchen diese Bytes einen Teil Ihrer Übertragungsdatenrate, während die Bytes, die als Teil Ihrer Anwendungsdaten gesendet werden, nicht berücksichtigt werden.

Berechnung des Anwendungsdatendurchsatzes

Die große Frage ist: Wie berechnen wir unseren Anwendungsdurchsatz?

Wie bereits erwähnt, gibt es einige Variablen, die den Datendurchsatz beeinflussen:

  • Bluetooth-Version &verwendete PHY
  • DLE: Data Length Extensions – aktiviert oder nicht
  • ATT MTU-Wert
  • Verbindungsintervall
  • Maximale Anzahl von Paketen pro Verbindungsereignis
  • Betrieb (Schreiben mit Antworten vs. Schreiben ohne Antworten und Benachrichtigung vs. Anzeige)
  • Inter Frame Space (IFS): 150 Mikrosekunden

Die Bluetooth-Version und PHY bestimmen die Rohdatenübertragungsrate. Wenn wir beispielsweise Bluetooth Version 4.2 und den LE 1M PHY verwenden, liegt die Übertragungsrate bei 1 Mbps. Wird dagegen der Bluetooth 5 LE Coded PHY mit S=8 verwendet, sinkt die Datenrate auf 125 kbit/s.

Die DLE, ATT MTU, das Verbindungsintervall, die maximale Anzahl von Paketen pro Verbindungsintervall, Operation und IFS bestimmen den Anteil der Funkzeit, der für die tatsächliche Datenübertragung genutzt wird.

Das Paketformat spielt eine große Rolle dabei, wie viele der übertragenen Daten Ihre tatsächlichen Anwendungsdaten sind. Der LE 1M PHY und der LE 2M PHY haben beide ein ähnliches Paketformat. Der LE Coded PHY hat ein deutlich anderes Paketformat, daher werden wir diese beiden Fälle getrennt betrachten.

LE 1M PHY und LE 2M PHY Berechnung

Zurück zum Paketformat für LE Uncoded PHYs:

Die Menge des Overheads für jeden PHY ist leicht unterschiedlich. Die Präambel ist 1 Byte im Falle des 1M PHY und 2 Byte im Falle des 2M PHY. Das MIC-Feld ist ein optionales Feld, das nur für verschlüsselte Verbindungen verwendet wird. Der Einfachheit halber werden wir nur unverschlüsselte Verbindungen betrachten – für den verschlüsselten Fall fügt es einfach 4 Bytes Overhead hinzu.

Für LE Coded PHYs sieht das Paketformat wie folgt aus (aus der Bluetooth 5.0 spec Vol 6, Part B, Section 2.2):

Schritte zur Berechnung des Durchsatzes (in Mbit/s):

Der Einfachheit halber gehen wir von folgenden Annahmen aus:

  • Verschlüsselung ist NICHT aktiviert (MIC-Feld ist nicht im Paket enthalten)
  • Wir interessieren uns für den Durchsatz in einer Richtung (z.B. Master zu Slave), also nehmen wir an, dass die andere Richtung nur leere Pakete überträgt
  • Schreiben ohne Antworten (was bei der Maximierung des Durchsatzes bei der Übertragung großer Datenmengen helfen würde
Schritte:
  1. Bestimmen Sie den verwendeten PHY und notieren Sie die Rate der Rohdatenübertragung
    Z.B. für 1M PHY -> 1 Mbps, für Coded PHY und S=8 -> 125 kbps
  2. Bestimme die Zeit, die benötigt wird, um ein Datenpaket und das leere Paket vom Empfänger zu senden.
    Die Zeit, in der ein Datenpaket gesendet werden kann, umfasst Folgendes:

    Datenpaket_Zeit = Zeit zum Senden des leeren Pakets + IFS + Zeit zum Senden des eigentlichen Datenpakets + IFS.
    Eine Zeit für die Übertragung eines leeren Pakets kann wie folgt berechnet werden:

    Zeit für die Übertragung eines leeren Pakets = Größe des leeren Pakets / Rohdatenrate

    Ein leeres Paket enthält die folgenden Felder:

    Preamble + Zugangsadresse + LL Header + CRC.

    Für 1M PHY, Preamble wird 1 Byte, und so die Gesamtgröße des leeren Pakets = 1 + 4 + 2 + 3 Bytes = 10 Bytes = 80 Bits.
    (für 2M PHY, wird die Größe eines leeren Pakets 88 Bits sein, da die Premable 2 Bytes statt 1 Byte ist).

    Die Zeit für die Übertragung eines leeren 1M PHY-Pakets beträgt demnach:

    Zeit für die Übertragung eines leeren Pakets = Größe des leeren Pakets / Rohdatenrate = 80 Bits / 1 Megabit pro Sekunde = 80 Mikrosekunden

    Ein Datenpaket enthält alle im Paketformatdiagramm aufgeführten Felder mit Ausnahme des MIC-Feldes (Verschlüsselung deaktiviert).

    Zeit für die Übertragung des Datenpakets = Größe des Datenpakets / Rohdatenrate

    Wenn wir DLE aktiviert haben und die ATT MTU gleich der maximal zulässigen Bytes in einem Paket ist: 247 Bytes, dann können wir die Größe des Datenpakets berechnen als:

    Datenpaketgröße = 1 + 4 + 2 + 4 + 247 + 3 Bytes = 265 Bytes = 265*8 Bits = 2088 Bits

    Zeit zur Übertragung des Datenpakets = 2088 Bits / 1 Mbps = 2,088 Mikrosekunden

    Datenpaketzeit = Zeit zum Übertragen des leeren Pakets + IFS + Zeit zum Übertragen des eigentlichen Datenpakets + IFS = 80 + 2*150 + 2088 = 2,468 Mikrosekunden
    Zum Vergleich, im Falle von 2M PHY, wäre es:

    Data_Packet_Time = Zeit für die Übertragung des leeren Pakets + IFS + Zeit für die Übertragung des eigentlichen Datenpakets + IFS = 88/2 + 2*150 + (2 + 4 + 2 + 4 + 247 + 3)*8/2 = 1,392 microsecs
    Wenn DLE aktiviert ist und die ATT MTU auf weniger als 247 gesetzt ist, haben wir am Ende mehr Overhead (da nun Daten, die größer als die ATT MTU sind, in mehr Pakete aufgeteilt werden). Angenommen, die ATT MTU ist auf 158 eingestellt, dann werden für die Übertragung von 244 Byte Anwendungsdaten zwei Pakete anstelle von einem benötigt, wodurch der Durchsatz aufgrund des erhöhten Byte-Overheads und der erhöhten IFS zwischen den Paketen sinkt. In einem anderen Szenario könnte DLE deaktiviert sein (Payload-Größe bis zu 27 Byte) und die ATT MTU größer als 27 Byte sein. In diesem Fall müssen ebenfalls mehr Pakete für die gleiche Datenmenge gesendet werden, wodurch der Durchsatz sinkt.

    Hinweis: Die gleiche Methode zur Berechnung der Daten- und Leerpaketgrößen, die wir oben verwendet haben, kann auch für das LE Coded PHY verwendet werden.

  3. Berechnen Sie, wie viele Pakete während eines Verbindungsintervalls übertragen werden können
    Diese Berechnung ist nicht immer rein mathematisch – Sie müssen die Beschränkungen des verwendeten Stacks und Geräts berücksichtigen. iOS und Android haben Maximalwerte, die sich mit der Betriebssystemversion ändern, daher ist es nicht immer einfach, das herauszufinden. Bei MCUs wird der Höchstwert in der Regel in der Dokumentation des SDK des Herstellers angegeben. Es ist auch hilfreich, durch Ausprobieren herauszufinden, was Ihr spezifisches Gerät unterstützt.

    Wenn Sie das Maximum herausgefunden haben, können Sie die maximale theoretische Anzahl von Paketen berechnen, die in ein beliebiges Verbindungsintervall passen würde. Wenn wir zum Beispiel ein Verbindungsintervall von 7,5 Millisekunden haben (die niedrigste von der Spezifikation erlaubte Zahl), dann gilt für unser obiges Beispiel (mit 1M PHY, DLE aktiviert):

    Maximale Anzahl von Datenpaketen pro Verbindungsintervall = , wobei auf die höchste ganze Zahl gerundet wird (Ganzzahl)Maximale Anzahl von Datenpaketen pro Verbindungsintervall = = 3 Pakete

    In der Regel ist diese Zahl nicht realistisch, da es zeitliche Verzögerungen zwischen den Paketen gibt, die bei aufeinanderfolgenden Verbindungsereignissen gesendet werden. Für unser Beispiel nehmen wir also 2 statt 3 Pakete an.

  4. Wenn wir die maximale Anzahl von Datenpaketen herausgefunden haben, die pro Verbindungsintervall übertragen werden können, können wir den Datendurchsatz berechnen:Datendurchsatz = Daten pro Verbindungsintervall / Verbindungsintervall = Anzahl der Datenpakete pro Verbindungsintervall * Datengröße pro Paket / Verbindungsintervall
    = 2 * 244 * 8 Bits / 7.5 millisecs = 520,533 bits/sec ~= 508 kbps

Testen und Berechnen des Datendurchsatzes zwischen zwei nRF52-Entwicklungskits

In diesem Abschnitt werden wir mehrere Tests zur Datenübertragung durchführen, den Durchsatz mit dem zuvor beschriebenen Verfahren berechnen und dann mit dem gemessenen Durchsatz vergleichen, der von der auf den Entwicklungsboards laufenden Anwendung gemeldet wird. Die Tests werden auf der Grundlage der von Nordic Semiconductor bereitgestellten und in diesem Blogbeitrag vorgestellten Demo-App durchgeführt: Durchsatz und Langstrecken-Demo.

Der Quellcode für das Beispiel ist auf der GitHub-Seite hier zu finden.

Fall 1 (PHY: 1 Mbps, ATT MTU = 23 Bytes, DLE: aktiviert, Verbindungsintervall: 7,5 Millisekunden)

Datendurchsatz von der Firmware gemeldet:

Zeit: 36.11 Sekunden verstrichen.
Durchsatz: 232,29 Kbits/s.
Sendete 1048580 Bytes ATT-Nutzlast.

Berechneter Datendurchsatz:

Mit der auf 23 Bytes eingestellten MTU hat DLE keinen wirklichen Einfluss auf den Datendurchsatz und die Paketgrößen.

Zeit für die Übertragung des Datenpakets = Datenpaketgröße / Rohdatenrate = 1 + 4 + 2 + 4 + 23 + 3 Bytes / 1 Mbps= 37*8 Bits / 1 Mbps = 296 Mikrosekunden

Datenpaket_Zeit = Zeit für die Übertragung des leeren Pakets + IFS + Zeit für die Übertragung des eigentlichen Datenpakets + IFS = 80 + 150 + 296 + 150 Mikrosekunden = 676 Mikrosekunden

Maximale Anzahl von Datenpaketen pro Verbindungsintervall = = = = 11 Pakete
Gesamtübertragene Daten pro Verbindungsintervall = 11 * 20 Bytes = 11 * 20 * 8 Bits = 1760 Bits

Datendurchsatz = Gesamtübertragene Daten pro Verbindungsintervall/Verbindungsintervall = 1760 Bits / 7.5 Millisekunden = 234,67 Kbits/s
Wie wir sehen können, liegen der berechnete Wert und der gemessene Wert ziemlich nahe beieinander.

Fall 2 (PHY: 2 Mbps, ATT MTU = 23 Bytes, DLE: aktiviert, Verbindungsintervall: 7.5 millisecs)

Datendurchsatz von der Firmware gemeldet:

Zeit: 27,23 Sekunden verstrichen.
Durchsatz: 307,96 Kbits/s.
Sendete 1048580 Bytes ATT-Nutzdaten.

Berechneter Datendurchsatz:

Zeit für die Übertragung des Datenpakets = Größe des Datenpakets / Rohdatenrate = 2 + 4 + 2 + 4 + 23 + 3 Bytes / 2 Mbps= 38*8 Bits / 2 Mbps = 152 Mikrosekunden

Datenpaket_Zeit = Zeit für die Übertragung des leeren Pakets + IFS + Zeit für die Übertragung des eigentlichen Datenpakets + IFS = 44 + 150 + 152 + 150 Mikrosekunden = 496 Mikrosekunden

Maximale Anzahl von Datenpaketen pro Verbindungsintervall = = = = 15 Pakete
Gesamtübertragene Daten pro Verbindungsintervall = 15 * 20 Bytes = 15 * 20 * 8 Bits = 2400 Bits

Datendurchsatz = Gesamtübertragene Daten pro Verbindungsintervall/Verbindungsintervall = 2400 Bits / 7.5 Millisekunden = 320 Kbits/s
Wie wir sehen können, liegen der berechnete Wert und der gemessene Wert ziemlich nahe beieinander.

Fall 3 (PHY: 1 Mbps, ATT MTU = 158 Bytes, DLE: aktiviert, Verbindungsintervall: 7.5 millisecs)

Datendurchsatz von der Firmware gemeldet:

Zeit: 17,53 Sekunden verstrichen.
Durchsatz: 478,36 Kbits/s.
Sendete 1048730 Bytes ATT-Nutzdaten.

Berechneter Datendurchsatz:

Zeit für die Übertragung des Datenpakets = Größe des Datenpakets / Rohdatenrate = 1 + 4 + 2 + 4 + 158 + 3 Bytes / 1 Mbps= 172*8 Bits / 1 Mbps = 1376 Mikrosekunden

Datenpaket_Zeit = Zeit für die Übertragung des leeren Pakets + IFS + Zeit für die Übertragung des eigentlichen Datenpakets + IFS = 80 + 150 + 1376 + 150 Mikrosekunden = 1756 Mikrosekunden

Maximale Anzahl von Datenpaketen pro Verbindungsintervall = = = = 4 Pakete
Gesamtübertragene Daten pro Verbindungsintervall = 4 * 155 Bytes = 4 * 155 * 8 Bits = 4960 Bits

Datendurchsatz = Gesamtübertragene Daten pro Verbindungsintervall/Verbindungsintervall = 4960 Bits / 7.5 Millisekunden = 661,33 Kbits/s

Fall 4 (PHY: 2 Mbps, ATT MTU = 247 Bytes, DLE: aktiviert, Verbindungsintervall: 7.5 Millisekunden)

Datendurchsatz von der Firmware gemeldet:

Zeit: 8,45 Sekunden verstrichen.
Durchsatz: 992,07 Kbits/s.
Sendete 1048712 Bytes ATT-Nutzdaten.

Berechneter Datendurchsatz:

Zeit für die Übertragung des Datenpakets = Datenpaketgröße / Rohdatenrate = 2 + 4 + 2 + 4 + 247 + 3 Bytes / 2 Mbps= 262*8 Bits / 2 Mbps = 1048 Mikrosekunden

Datenpaket_Zeit = Zeit für die Übertragung des leeren Pakets + IFS + Zeit für die Übertragung des eigentlichen Datenpakets + IFS = 44 + 150 + 1048 + 150 Mikrosekunden = 1392 Mikrosekunden

Maximale Anzahl von Datenpaketen pro Verbindungsintervall = = = = 5 Pakete
Gesamtübertragene Daten pro Verbindungsintervall = 5 * 244 Bytes = 5 * 244 * 8 Bits = 9760 Bits

Datendurchsatz = Gesamtübertragene Daten pro Verbindungsintervall/Verbindungsintervall = 9760 Bits / 7.5 Millisekunden = 1301,33 Kbits/s

Hinweis: In den letzten beiden Fällen ist die Anzahl der Pakete pro Verbindungsintervall gering, und jeder Unterschied zwischen dem, was wir berechnen, und dem, was gemessen wird, hat große Auswirkungen auf den tatsächlichen Datendurchsatz. Wenn zum Beispiel die Anzahl der Pakete pro Verbindungsintervall im Fall 4 4 statt 5 beträgt, wird der berechnete Durchsatz 1.041,1 Kbps statt 1.301,33 Kbps (was ein großer Unterschied ist und die Diskrepanz in den Zahlen hier erklären könnte).

Fall 5 (PHY: 2 Mbps, ATT MTU = 247 Bytes, DLE: aktiviert, Verbindungsintervall: 50 millisecs)

Datendurchsatz von der Firmware gemeldet:

Zeit: 6,34 Sekunden verstrichen.
Durchsatz: 1322,33 Kbits/s.
Sendete 1048712 Bytes ATT-Nutzdaten.

Berechneter Datendurchsatz:

Zeit für die Übertragung des Datenpakets = Datenpaketgröße / Rohdatenrate = 2 + 4 + 2 + 4 + 247 + 3 Bytes / 2 Mbps= 262*8 Bits / 2 Mbps = 1048 Mikrosekunden

Datenpaket_Zeit = Zeit für die Übertragung des leeren Pakets + IFS + Zeit für die Übertragung des eigentlichen Datenpakets + IFS = 44 + 150 + 1048 + 150 Mikrosekunden = 1392 Mikrosekunden

Maximale Anzahl von Datenpaketen pro Verbindungsintervall = = = = 35 Pakete

Gesamtübertragene Daten pro Verbindungsintervall = 36 * 244 Bytes = 35 * 244 * 8 Bits = 68320 Bits

Datendurchsatz = Gesamtübertragene Daten pro Verbindungsintervall/Verbindungsintervall = 70272 Bits / 50 Millisekunden = 1366.4 Kbits/s

Fall 6 (PHY: 2 Mbps, ATT MTU = 247 Bytes, DLE: aktiviert, Verbindungsintervall: 400 Millisekunden)

Datendurchsatz von der Firmware gemeldet:

Zeit: 6,11 Sekunden verstrichen.
Durchsatz: 1371,82 Kbits/s.
Sendete 1048712 Bytes ATT-Nutzdaten.

Berechneter Datendurchsatz:

Zeit für die Übertragung des Datenpakets = Datenpaketgröße / Rohdatenrate = 2 + 4 + 2 + 4 + 247 + 3 Bytes / 2 Mbps= 262*8 Bits / 2 Mbps = 1048 Mikrosekunden

Datenpaket_Zeit = Zeit für die Übertragung des leeren Pakets + IFS + Zeit für die Übertragung des eigentlichen Datenpakets + IFS = 44 + 150 + 1048 + 150 Mikrosekunden = 1392 Mikrosekunden

Maximale Anzahl von Datenpaketen pro Verbindungsintervall = = = = 287 Pakete

Gesamtübertragene Daten pro Verbindungsintervall = 287 * 244 Bytes = 287 * 244 * 8 Bits = 560224 Bits

Datendurchsatz = Gesamtübertragene Daten pro Verbindungsintervall/Verbindungsintervall =560224 Bits / 400 Millisekunden = 1400.56 Kbits/s

Optimierung für maximalen Datendurchsatz

Basierend auf den Faktoren, die wir besprochen haben, können wir bei der Optimierung für einen hohen Datendurchsatz Folgendes beachten:

  • Aktivieren Sie immer DLE
    Wenn Sie Bluetooth v4.1 oder früher verwenden, ist dies natürlich keine gültige Option. Im Allgemeinen sollten Sie jedoch sicherstellen, dass Sie DLE aktiviert haben, um die Effizienz der Datenpakete für die Anwendung zu maximieren
  • LE 2M PHY verwenden
    Wenn Sie wissen, dass die Geräte auf beiden Seiten Bluetooth 5 unterstützen, dann ist die Verwendung des LE 2M PHY eine der besten Möglichkeiten, um den Datendurchsatz Ihrer Anwendung zu maximieren. Die Verwendung des LE 2M PHY hilft auch, den Stromverbrauch zu senken, so dass Sie zwei Fliegen mit einer Klappe schlagen!
  • Verwenden Sie Benachrichtigungen und Writes ohne Antworten
    Dadurch werden unnötige Pakete vermieden (im Vergleich zu Indications und normalen Writes, bei denen das empfangende Ende jedes empfangene Paket bestätigen muss).
  • Wählen Sie einen ATT MTU-Wert von mindestens mehr als 247 Bytes
    Dadurch wird der Overhead an Paketbytes minimiert.
  • Wählen Sie ein Verbindungsintervall, das die maximale Anzahl an Paketen pro Verbindungsintervall zulässt
    Aber bedenken Sie, dass das Verbindungsintervall den Stromverbrauch beeinflusst. Je kürzer das Intervall ist, desto mehr Strom verbraucht Ihr Gerät aufgrund der längeren Funkeinschaltzeit. Außerdem sollten Sie darauf achten, dass Sie das Intervall nicht zu groß wählen, da sonst die Benutzerfreundlichkeit beeinträchtigt wird (ein größeres Verbindungsintervall führt zu einer höheren Latenz). Ein letzter Punkt, den Sie berücksichtigen sollten, sind etwaige Beschränkungen der Geräte in Ihrem System in Bezug auf die maximal unterstützte Anzahl von Paketen pro Verbindungsintervall.

Zusammenfassung & Schließen

Die oben aufgeführten berechneten Werte sind immer noch theoretisch und stimmen möglicherweise nicht mit dem gemessenen Datendurchsatz in der Praxis und in realen Umgebungen überein, aber sie sind dennoch ein guter Ausgangspunkt und geben einen guten Hinweis darauf, was zu erwarten ist (zumindest für ein Maximum). Störungen und Sende-/Empfangsfehler wirken sich ebenfalls auf den Datendurchsatz aus (Wiederholungsversuche, Datenverluste und Verbindungsabbrüche führen zu einem geringeren Durchsatz). Diese können durch das Vorhandensein anderer Geräte verursacht werden, die dasselbe 2,4-GHz-Band wie Bluetooth verwenden, durch größere Entfernungen zwischen den Geräten, das Vorhandensein von Hindernissen zwischen den Geräten und mehr…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.