- Bevezetés
- Miért lehetetlen elérni a BLE elméleti sebességét?
- Bluetooth 5 sebesség : 2x sebesség az új 2M PHY-t használva
- Az adatátviteli teljesítményt befolyásoló/meghatározó tényezők
- PHY
- Kapcsolati intervallum & max. csomagok egy kapcsolati eseményen
- Data Length Extensions (DLE)
- ATT Maximum Transmission Unit (ATT MTU)
- Műveleti típus:
- Inter Frame Space (IFS): az egymást követő csomagok közötti időkésleltetés (150 us)
- Üres csomagok továbbítása
- Packet overhead
- Az alkalmazási adatok áteresztőképességének kiszámítása
- LE 1M PHY és LE 2M PHY számítása
- Lépések az átviteli sebesség kiszámításához (Mbps-ban):
- Lépések:
- Az adatátviteli sebesség tesztelése és kiszámítása két nRF52 fejlesztőkészlet között
- 1. eset (PHY: 1 Mbps, ATT MTU = 23 bájt, DLE: engedélyezve, Kapcsolati időköz: 7,5 milliszekundum)
- A firmware által bejelentett adatátviteli teljesítmény:
- Kiszámított adatteljesítmény:
- 2. eset (PHY: 2 Mbps, ATT MTU = 23 bájt, DLE: engedélyezve, Csatlakozási időköz: 7.5 milliszekundum)
- A firmware által jelentett adatátviteli sebesség:
- 3. eset (PHY: 1 Mbps, ATT MTU = 158 bájt, DLE: engedélyezve, Csatlakozási időköz: 7.5 milliszekundum)
- A firmware által jelentett adatátviteli teljesítmény:
- Kiszámított adatteljesítmény:
- Kiszámított adatteljesítmény: Kiszámított adatteljesítmény:1 + 4 + 2 + 4 + 158 + 3 bájt / 1 Mbps = 172*8 bit / 1 Mbps = 1376 mikrosec
- 4. eset (PHY: 2 Mbps, ATT MTU = 247 bájt, DLE: engedélyezve, Csatlakozási időköz: 7.5 milliszekundum)
- A firmware által jelentett adatátviteli sebesség:
- Kiszámított adatteljesítmény: Kiszámított adatteljesítmény: Az adatátviteli sebesség:
- 5. eset (PHY: 2 Mbps, ATT MTU = 247 byte, DLE: engedélyezve, Kapcsolati intervallum:
- A firmware által jelentett adatátviteli sebesség:
- Kiszámított adatteljesítmény: Kiszámított adatteljesítmény:
- 6. eset (PHY: 2 Mbps, ATT MTU = 247 bájt, DLE: engedélyezve, Csatlakozási intervallum:
- A firmware által jelentett adatátviteli sebesség:
- Kiszámított adatteljesítmény: Kiszámított adatteljesítmény: Az adatátviteli sebesség:
- Optimalizálás a maximális adatátviteli sebességre
- Összefoglaló & Zárás
Bevezetés
A Bluetooth 5-ről szóló sorozat második bejegyzésében a 2x nagyobb sebességű új funkcióval foglalkozunk, valamint a BLE-alkalmazások átviteli sebességének általános áttekintésével (az előző bejegyzésben a Bluetooth 5 új funkcióival foglalkoztunk általánosságban, és konkrétan a megnövelt hirdetési kapacitás funkcióval).
Először is meg kell értenünk, hogy a hirdetett sebességek (1 Mbps és az új 2 Mbps) csak elméleti értékek, és az alkalmazás átbocsátóképességénél csökkennek. Ennek több oka is van, amelyeket a következő részben ismertetünk.
A Bluetooth 5 “2x sebesség” funkciója hardverfrissítést igényel, így a régebbi eszközök/chipek/modulok nem fogják támogatni. Azt is fontos megjegyezni, hogy a nagyobb átviteli sebesség eléréséhez mindkét egymással kommunikáló BLE-eszköznek támogatnia kell az új LE 2M PHY-t (amely lehetővé teszi a nagyobb sebességű adatátvitelt).
Az új LE 2M PHY-t, valamint az eredeti LE 1M PHY-t egyaránt kódolatlan PHY-nak nevezik, mivel adatbitenként 1 szimbólumos ábrázolást használnak (szemben az új LE kódolt PHY-val, amely adatbitenként 2 vagy 8 szimbólumos ábrázolást használ).
A másik fontos dolog, hogy a nagyobb sebességű PHY használatakor valójában alacsonyabb energiafogyasztást érünk el (feltéve, hogy ugyanannyi adatot továbbítunk). Ez azért van, mert a rádió bekapcsolási ideje csökken anélkül, hogy az átviteli teljesítmény növekedne. Ez viszont javítja a 2,4 GHz-es spektrumon belüli más vezeték nélküli technológiákkal való együttélést is (szintén a csökkentett rádiókapcsolási idő miatt).
Ezzel a bejegyzéssel foglalkozunk:
- Milyen gyakorlati átviteli teljesítményre számíthatunk a BLE-től?
- A Bluetooth 5 új 2M PHY-ja az adatátvitelhez
- Melyek azok a tényezők, amelyek befolyásolják/meghatározzák az adatátviteli teljesítményt?
- Hogyan számolja ki az alkalmazás adatátviteli teljesítményét?
- Hogyan maximalizálja az adatátviteli teljesítményt?
- Tesztelés, mérés és az adatátviteli teljesítmény kiszámítása két nRF52 sorozatú fejlesztőkészlet segítségével
Miért lehetetlen elérni a BLE elméleti sebességét?
Az 1 Mbps (LE 1M PHY), 2 Mbps (LE 2M PHY), 125 kbps és 500 kbps (mindkettő az LE Coded PHY-t használja S=8, illetve S=2-vel) adatátviteli sebességek azok, amelyekkel a rádió adatokat továbbít, de ez nem érhető el az alkalmazási átviteli sebesség esetében a következő okok miatt:
- Kapcsolati intervallumonként a csomagok számának korlátozása
- A csomagok közötti IFS (Inter Frame Space) késleltetés (150 us)
- Az eszközről akkor is üres csomagokat kell küldeni, ha nincs adat. adattovábbításra rendelkezésre áll
- Packet overhead – nem minden bájtot használnak fel egy csomagban a hasznos teherre
Azért, hogy jobban megértsük ezeket a tényezőket, és megértsük, mi befolyásolja az alkalmazás átviteli teljesítményét, mélyebben meg kell vizsgálnunk a csomagformátumot. Az alábbi ábra mutatja, hogyan néznek ki a LE 1M PHY és 2M PHY adatcsomagok:
A minket érdeklő rész (és az, amely valóban meghatározza az alkalmazási adatokat) az ATT Payload. Amint az ábrán látható, a Bluetooth Low Energyben minden egyes réteg által használt overhead bájtok száma van.
- A 4.0 és 4.1 verzióban az ATT Payload maximum 20 bájt.
- A 4.2 és 5.0 verzióban egy új funkció, a Data Length Extensions (DLE) lehetővé teszi, hogy az ATT Payload akár 244 bájtnyi adatot is tartalmazzon.
Bluetooth 5 sebesség : 2x sebesség az új 2M PHY-t használva
Nem árt tisztában lenni az új LE 2M PHY használatának korlátaival a Bluetooth 5-ben:
- Nem használható az elsődleges hirdetések továbbítására (az elsődleges csatornákon).
- Az adatcsomagokkal azonos csatornákon (37 csatorna: 0-36) küldött másodlagos “segédcsomagokhoz” használható.
Az elsődleges és másodlagos hirdetésekről bővebben az előző blogbejegyzésemben olvashat: Bluetooth 5 Advertisements: Minden, amit tudni kell. - Az LE 1M kötelező, míg az LE 2M opcionális. Tehát nem minden, Bluetooth 5 támogatást igénylő chip képes feltétlenül kezelni a nagyobb áteresztőképességet.
- A hirdetések és a felfedezés történhet a LE 2M PHY-n, majd a kapcsolatok a másodlagos hirdetési csatornán történnek a LE 2M PHY használatával
Az alkalmazási adatok átadása egyik eszközről a másikra általában a két eszköz közötti kapcsolat során történik. A csatlakoztatott eszközök a PHY-frissítési eljáráson keresztül egyeztethetnek egy másik PHY használatáról. Ezt akár a slave, akár a master kezdeményezheti a kapcsolat létrejötte után, de végső soron a master hozza meg a végső döntést arról, hogy melyik PHY-t használják az egyes irányokban (a slave kérése és a master által támogatott PHY-k alapján).
Az adatátviteli teljesítményt befolyásoló/meghatározó tényezők
Egy BLE-alkalmazás adatátviteli teljesítményét néhány tényező befolyásolja. A leggyakoribbak:
- A használt PHY (LE 1M vs. LE 2M vs. LE Coded (S=2 vagy S=8))
- Kapcsolati intervallum
- A csomagok maximális száma kapcsolati intervallumonként
- ATT Maximum Transmission Unit (ATT MTU)
- Data Length Extension (DLE)
- Működési típus:
- Inter Frame Space (IFS): az egymást követő csomagok közötti időkülönbség (150 us)
- Az üres csomagok továbbítása
- Packet overhead – nem minden bájtot használnak fel egy csomagban az alkalmazás hasznos terhére
Menjünk végig ezeken részletesebben.
PHY
A Bluetooth 5-ben alapvetően három PHY van: az eredeti 1 Mbps PHY, az új 2 Mbps és a kódolt PHY (S=2 vagy S=8). Az alkalmazott PHY közvetlenül befolyásolja az elérhető maximális adatátviteli teljesítményt, mivel ez határozza meg a tényleges nyers adatátviteli sebességet, amellyel a csomagokat a levegőben elküldi.
Kapcsolati intervallum & max. csomagok egy kapcsolati eseményen
A kapcsolati intervallum gyakorlatilag meghatározza, hogy egy kapcsolati esemény során hány csomagot lehet elküldeni. Minél magasabb az érték, annál több csomag küldhető egy kapcsolati esemény során (egyes eszközök esetében egy bizonyos határértékig).
Tudjon meg többet a kapcsolati intervallumokról: BLE-kapcsolati intervallumok és események
Az egy kapcsolati eseményre jutó csomagok száma azonban az eszköztől és a BLE-veremtől függ, így korlátozott, és egy adott eszközön eszközönként és verziónként eltérő. Ez az érték az eszköz működésétől is függ, így előfordulhat, hogy a rádiónak más eseményekre kell figyelnie, és a kapcsolati eseményenként elküldött csomagok száma nem éri el a verem által megengedett maximális értéket. Ez a szám például eltér az iOS és az Android között, és az eszközön futó operációs rendszer verziójától függően is változik.
Néha hasznos a kapcsolati paraméterek dinamikus frissítése a felhasználási eset alapján. Ne feledje azonban, hogy a mesteren múlik, hogy elfogadja-e ezeket az ajánlásokat, vagy frissíti-e a paramétereket ezekhez igazodva.
Data Length Extensions (DLE)
Ez a funkció lehetővé teszi, hogy a csomagméret nagyobb mennyiségű hasznos adatot tartalmazzon (akár 251 bájtot, szemben a kikapcsolt 27 bájttal). Ez a funkció a Bluetooth specifikáció 4.2-es verziójában került bevezetésre.
ATT Maximum Transmission Unit (ATT MTU)
ATT MTU Meghatározza az adó és a vevő által kezelhető és a pufferükben tárolható maximális adatmennyiséget.
Az MTU érték befolyásolja az overhead adatok mennyiségét (különösen az ATT fejlécet, amely 3 bájt). A minimálisan megengedett ATT MTU érték 27 bájt. Ez maximum 20 bájt ATT hasznos terhet tesz lehetővé (3 bájtot használnak az ATT fejléchez, és 4 bájtot az L2CAP fejléchez).
A specifikáció szerint nincs korlátozás arra vonatkozóan, hogy az MTU érték milyen magas lehet, de az adott használt veremnek lehetnek saját korlátai. Ha például engedélyezi a DLE-t, akkor legfeljebb 251 – 4 = 247 bájtot tud átvinni (az L2CAP fejléc méretének levonása után). Az ATT fejléc (3 bájt) figyelembe vétele után 244 bájt marad a tényleges ATT hasznos adatokra. Ha az MTU legalább 247 bájt, akkor az MTU belefér egyetlen csomagba. Ha az MTU nagyobb, mint 247 bájt, akkor az MTU több csomagra terjed ki, ami az áteresztőképesség csökkenését okozza (a csomagok közötti többletköltség és időzítés miatt).
A tényleges MTU-t az ATT MTU minimális értéke határozza meg, amelyet az ügyfél és a kiszolgáló támogat. Például, ha az ügyfél 100 bájt ATT MTU-t támogat, és a kiszolgáló azt válaszolja, hogy 150 bájt ATT MTU-t támogat, akkor az ügyfél úgy dönt, hogy a kapcsolathoz használandó ATT MTU ettől kezdve 100 bájt.
Műveleti típus:
Ha nagy áteresztőképességet szeretnénk, akkor válasz nélküli írást vagy értesítést használhatunk az adatok átvitelére az ügyféltől a kiszolgálóhoz és a kiszolgálótól az ügyfélhez. Ezek a műveletek megszüntetik annak szükségességét, hogy a másik eszköz visszaigazolja az adatok fogadását és válaszoljon, mielőtt a következő adatblokk elküldhető lenne.
Inter Frame Space (IFS): az egymást követő csomagok közötti időkésleltetés (150 us)
A Bluetooth specifikációból:
4.1.1 Inter Frame Space
Az azonos csatornaindexen két egymást követő csomag közötti időintervallumot Inter Frame Space-nek nevezzük. Ez az előző csomag utolsó bitjének vége és a következő csomag első bitjének kezdete közötti idő.
A keretek közötti tér a “T_IFS” jelölést kapja, és 150 μs.
Üres csomagok továbbítása
Ha az adatot fogadó eszköznek nincs visszaküldendő adata, akkor is üres csomagot kell küldenie a Bluetooth specifikációnak megfelelően.
Packet overhead
Amint a csomagformátum ábrán láttuk, a csomag tartalmaz néhány overhead adatot, amely nem számít bele az alkalmazási adatokba (ATT adatok). Alapvetően ezek a bájtok felemésztik az átviteli adatátviteli sebesség egy részét, miközben nem veszik figyelembe az alkalmazási adatok részeként küldött bájtokat.
Az alkalmazási adatok áteresztőképességének kiszámítása
A nagy kérdés az: hogyan számoljuk ki az alkalmazásunk áteresztőképességét?
Mint már említettük, van néhány változó, amely befolyásolja az adatátviteli teljesítményt:
- Bluetooth verzió &használt PHY
- DLE: Data Length Extensions – engedélyezve vagy sem
- ATT MTU érték
- Connection interval
- Maximal number of packets per connection event
- Operation (writes with responses vs. írások válaszok nélkül, és értesítés vs. jelzés)
- Keretközi tér (IFS): 150 mikroszekundum
A Bluetooth verzió és a PHY határozza meg a nyers adatátviteli sebességet. Ha például a Bluetooth 4.2-es verzióját és az LE 1M PHY-t használjuk, akkor az átviteli sebesség 1 Mbps. Ha viszont a Bluetooth 5 LE kódolt PHY-t használjuk S=8-mal, akkor az adatátviteli sebesség 125 kbps-ra csökken.
A DLE, az ATT MTU, a kapcsolati intervallum, a csomagok maximális száma kapcsolati intervallumonként, az Operation és az IFS mind meghatározzák a rádiós időnek azt a részét, amelyet tényleges adatátvitelre használunk.
A csomagformátum nagy szerepet játszik abban, hogy az átvitt adatok mekkora része a tényleges alkalmazási adat. Az LE 1M PHY és az LE 2M PHY is hasonló csomagformátummal rendelkezik. Az LE Coded PHY jelentősen eltérő csomagformátummal rendelkezik, ezért ezt a két esetet külön fogjuk megvizsgálni.
LE 1M PHY és LE 2M PHY számítása
Visszatérve az LE Uncoded PHY-k csomagformátumára:
Az egyes PHY-k esetében a többletköltség összege kissé eltérő. A Preamble az 1M PHY esetében 1 bájt, a 2M PHY esetében 2 bájt. A MIC mező egy opcionális mező, amely csak titkosított kapcsolatoknál használatos. Az egyszerűség kedvéért csak a titkosítatlan kapcsolatokat vesszük figyelembe – a titkosított esetben ez egyszerűen 4 bájt többletköltséget jelent.
A LE kódolt PHY-k esetében a csomagformátum így néz ki (a Bluetooth 5.0 spec 6. kötet, B rész, 2. szakasz.2):
Lépések az átviteli sebesség kiszámításához (Mbps-ban):
Az egyszerűség kedvéért a következőket feltételezzük:
- A titkosítás NEM engedélyezett (a MIC-mező nem szerepel a csomagban)
- Az átviteli sebesség az egyik irányban (pl. Master to Slave), ezért feltételezzük, hogy a másik irány csak üres csomagokat továbbít
- Válasz nélküli írások (ami nagy mennyiségű adat átvitelekor segítene az átviteli sebesség maximalizálásában
Lépések:
- Határozzuk meg a használt PHY-t és jegyezzük fel a nyers adatátvitel sebességét
Pl. 1M PHY esetén -> 1 Mbps, kódolt PHY és S=8 esetén -> 125 kbps - Határozza meg az időt, amely alatt egy adatcsomagot és az üres csomagot elküldi a vevő.
Az idő, amely alatt egy adatcsomagot el lehet küldeni, a következőket tartalmazza:Data_Packet_Time = Az üres csomag átvitelének ideje + IFS + A tényleges adatcsomag átvitelének ideje + IFS.
Egy üres csomag átviteli ideje a következőképpen számítható ki:Az üres csomag átviteli ideje = üres csomag mérete / nyers adatátviteli sebesség
Egy üres csomag a következő mezőket tartalmazza:
Preamble + Access Address + LL Header + CRC.
1M PHY esetén a Preamble 1 byte lesz, így az üres csomag teljes mérete = 1 + 4 + 2 + 3 byte = 10 byte = 80 bit.
(2M PHY esetén az üres csomag mérete 88 bit lesz, mivel a Premable 1 byte helyett 2 byte).Ez alapján egy üres 1M PHY csomag továbbításának ideje:
Az üres csomag továbbításának ideje = üres csomag mérete / nyers adatátviteli sebesség = 80 bit / 1 megabit másodpercenként = 80 mikro másodperc
Az adatcsomag a MIC mező kivételével (titkosítás letiltva) a csomagformátum diagramban felsorolt összes mezőt tartalmazza.
Adatcsomag átviteli ideje = adatcsomag mérete / nyers adatátviteli sebesség
Ha engedélyezve van a DLE és az ATT MTU egyenlő az egy csomagban megengedett maximális bájtokkal: 247 bájt, akkor az adatcsomag méretét a következőképpen számíthatjuk ki:
Adatcsomag mérete = 1 + 4 + 2 + 4 + 247 + 3 bájt = 265 bájt = 265*8 bit = 2088 bit
Az adatcsomag átviteli ideje = 2088 bit / 1 Mbps = 2,088 mikromásodperc
Data_Packet_Time = Az üres csomag átvitelének ideje + IFS + a tényleges adatcsomag átvitelének ideje + IFS = 80 + 2*150 + 2088 = 2,468 mikromásodperc
Összehasonlításképpen, 2M PHY esetén ez így lenne:Data_Packet_Time = Az üres csomag átvitelének ideje + IFS + A tényleges adatcsomag átvitelének ideje + IFS = 88/2 + 2*150 + (2 + 4 + 2 + 2 + 4 + 247 + 3)*8/2 = 1392 mikrosec
Ha a DLE engedélyezett és az ATT MTU 247-nél kisebbre van beállítva, akkor több overheadet kapunk (mivel most az ATT MTU-nál nagyobb adatok több csomagra lesznek felosztva). Például, ha az ATT MTU 158-ra van beállítva, akkor 244 bájtnyi alkalmazási adat átviteléhez egy helyett két csomagra lesz szükségünk, ami az átviteli teljesítmény csökkenését okozza a megnövekedett bájtterhelés, valamint a csomagok közötti megnövekedett IFS miatt. Egy másik forgatókönyv szerint a DLE-t kikapcsolhatjuk (a hasznos teher mérete legfeljebb 27 bájt), és az ATT MTU értéke nagyobb, mint 27 bájt. Itt ez szintén azt eredményezi, hogy ugyanahhoz az adatmennyiséghez több csomagot kell küldeni, ami az átviteli teljesítmény csökkenését okozza.Megjegyzés: Az adat- és üres csomagméretek kiszámításához ugyanaz a módszer, mint amit fentebb használtunk, használható a LE kódolt PHY esetében is.
- Számolja ki, hány csomagot lehet továbbítani egy kapcsolati intervallum alatt
Ez a számítás nem mindig tisztán matematikai – figyelembe kell vennie a használt verem és eszköz korlátait. Az iOS és az Android operációs rendszereknek az operációs rendszer verziójával változó maximumai vannak, így nem mindig könnyű kiszámítani. Ettől függetlenül egy MCU esetében a gyártó SDK-ja általában felsorolja a maximumot a dokumentációban. Az is hasznos, ha kipróbálod, és kitalálod, hogy az adott eszközöd mit támogat.Ha már kitaláltad a maximumot, kiszámíthatod a csomagok maximális elméleti számát, amely belefér a választott kapcsolati intervallumba. Ha például 7,5 milliszekundumos (a specifikáció által megengedett legalacsonyabb) kapcsolati intervallummal rendelkeznénk, akkor a fenti példánk esetében (1M PHY-t használva, DLE engedélyezve):
Maximal # of data packets per connection interval = , ahol a legnagyobb egész számra kerekít (egész szám)Maximum # of data packets per connection interval = = 3 packets
Ez a szám általában nem reális, mivel az egymást követő kapcsolati eseményeken elküldött csomagok között időzítési késések vannak. Ezért példánkban 3 helyett 2 csomaggal számolunk.
- Mihelyt kitaláltuk a kapcsolati intervallumonként átvihető adatcsomagok maximális számát, kiszámíthatjuk az adatátviteli teljesítményt:Adatátviteli teljesítmény = adat/kapcsolati intervallum / kapcsolati intervallum = Adatcsomagok száma/kapcsolati intervallum * adatméret csomagonként / kapcsolati intervallum
= 2 * 244 * 8 bit / 7.5 milliszekundum = 520,533 bit/sec ~= 508 kbps
Az adatátviteli sebesség tesztelése és kiszámítása két nRF52 fejlesztőkészlet között
Ebben a részben több adatátviteli tesztet futtatunk, kiszámítjuk az átviteli sebességet a korábban ismertetett eljárás segítségével, majd összehasonlítjuk a fejlesztőkártyákon futó alkalmazás által jelzett mért átviteli sebességgel. A teszteket a Nordic Semiconductor által biztosított és ebben a blogbejegyzésben szereplő demoalkalmazás alapján futtatjuk: Áteresztőképesség és nagy hatótávolságú demo.
A példa forráskódja megtalálható a GitHub oldalon itt.
1. eset (PHY: 1 Mbps, ATT MTU = 23 bájt, DLE: engedélyezve, Kapcsolati időköz: 7,5 milliszekundum)
A firmware által bejelentett adatátviteli teljesítmény:
Idő: 36.11 másodperc telt el.
Átteljesítmény: 232,29 Kbits/s.
1048580 bájt ATT hasznos teher elküldése.
Kiszámított adatteljesítmény:
Az MTU 23 bájtra állítva, a DLE nem igazán befolyásolja az adatteljesítményt és a csomagméreteket.
Adatcsomag átviteli ideje = adatcsomag mérete / nyers adatátviteli sebesség = 1 + 4 + 2 + 4 + 4 + 23 + 3 bájt / 1 Mbps= 37*8 bit / 1 Mbps = 296 mikrosec
Data_Packet_Time = Az üres csomag átviteli ideje + IFS + a tényleges adatcsomag átviteli ideje + IFS = 80 + 150 + 296 + 150 mikrosec =. 676 mikroszek
Az adatcsomagok maximális száma egy kapcsolati intervallumban = = = = = = 11 csomag
Egy kapcsolati intervallumban átvitt összes adat = 11 * 20 bájt = 11 * 20 * 8 bit = 1760 bit
Adatátviteli teljesítmény = Egy kapcsolati intervallumban átvitt összes adat/kapcsolati intervallum = 1760 bit / 7.5 milliszekundum = 234,67 Kbits/s
Mint láthatjuk, a számított és a mért érték elég közel áll egymáshoz.
2. eset (PHY: 2 Mbps, ATT MTU = 23 bájt, DLE: engedélyezve, Csatlakozási időköz: 7.5 milliszekundum)
A firmware által jelentett adatátviteli sebesség:
Az idő: 27,23 másodperc telt el.
Átviteli sebesség: 307,96 Kbits/s.
1048580 bájt ATT hasznos teher elküldése.Adat_csomag_idő = üres csomag átvitelének ideje + IFS + a tényleges adatcsomag átvitelének ideje + IFS = 44 + 150 + 152 + 150 mikrosec =. 496 mikroszek
Az adatcsomagok maximális száma kapcsolati intervallumonként = = = = = 15 csomag
Kapcsolati intervallumonként átvitt összes adat = 15 * 20 bájt = 15 * 20 * 8 bit = 2400 bitAdatátviteli teljesítmény = Kapcsolati intervallumonként átvitt összes adat/kapcsolati intervallum = 2400 bit / 7.5 milliszekundum = 320 Kbits/s
Mint láthatjuk, a számított és a mért érték elég közel áll egymáshoz.3. eset (PHY: 1 Mbps, ATT MTU = 158 bájt, DLE: engedélyezve, Csatlakozási időköz: 7.5 milliszekundum)
A firmware által jelentett adatátviteli teljesítmény:
Az idő: 17,53 másodperc telt el.
Átviteli teljesítmény: 478,36 Kbits/s.
1048730 bájt ATT hasznos teher elküldése.Kiszámított adatteljesítmény:
Kiszámított adatteljesítmény:
Kiszámított adatteljesítmény:1 + 4 + 2 + 4 + 158 + 3 bájt / 1 Mbps = 172*8 bit / 1 Mbps = 1376 mikrosec
Data_Packet_Time = Az üres csomag átvitelének ideje + IFS + a tényleges adatcsomag átvitelének ideje + IFS = 80 + 150 + 1376 + 150 mikrosec =
Data_Packet_Time = Az üres csomag átvitelének ideje + IFS + a tényleges adatcsomag átvitelének ideje + IFS = 80 + 150 + 1376 + 150 mikrosec = 1756 mikroszek
Az adatcsomagok maximális száma kapcsolati intervallumonként = = = = = = 4 csomag
Kapcsolati intervallumonként átvitt összes adat = 4 * 155 bájt = 4 * 155 * 8 bit = 4960 bit
Adatátviteli teljesítmény = Kapcsolati intervallumonként átvitt összes adat/kapcsolati intervallum = 4960 bit / 7.5 milliszekundum = 661,33 Kbits/s
4. eset (PHY: 2 Mbps, ATT MTU = 247 bájt, DLE: engedélyezve, Csatlakozási időköz: 7.5 milliszekundum)
A firmware által jelentett adatátviteli sebesség:
Az idő: 8,45 másodperc telt el.
Átviteli sebesség: 992,07 Kbits/s.
1048712 byte ATT hasznos adatot küldött.
Kiszámított adatteljesítmény:
Kiszámított adatteljesítmény:
Az adatátviteli sebesség:
Az adatátviteli sebesség:
Data_Packet_Time = Az üres csomag átvitelének ideje + IFS + a tényleges adatcsomag átvitelének ideje + IFS = 44 + 150 + 1048 + 150 mikrosec =. 1392 mikroszek
Az adatcsomagok maximális száma kapcsolati intervallumonként = = = = = = 5 csomag
Kapcsolati intervallumonként átvitt összes adat = 5 * 244 bájt = 5 * 244 * 8 bit = 9760 bit
Adatátviteli teljesítmény = Kapcsolati intervallumonként átvitt összes adat/kapcsolati intervallum = 9760 bit / 7.5 milliszekundum = 1301,33 Kbits/s
Megjegyzés: Az utolsó két esetben a csomagok száma kapcsolati intervallumonként kicsi, és bármilyen különbség az általunk számított és a mért értékek között nagy hatással lesz a tényleges adatátviteli teljesítményre. Ha például a 4. esetben a kapcsolati intervallumonkénti csomagok száma 5 helyett 4 lesz, a számított átviteli sebesség 1.041,1 Kbps lesz 1.301,33 Kbps helyett (ami nagy különbség, és megmagyarázhatja a számok eltérését).
5. eset (PHY: 2 Mbps, ATT MTU = 247 byte, DLE: engedélyezve, Kapcsolati intervallum:
A firmware által jelentett adatátviteli sebesség:
Az idő: 6,34 másodperc telt el.
Átviteli sebesség: 1322,33 Kbits/s.
1048712 byte ATT hasznos adatot küldött.
Kiszámított adatteljesítmény:
Kiszámított adatteljesítmény:
Data_Packet_Time = Az üres csomag átvitelének ideje + IFS + a tényleges adatcsomag átvitelének ideje + IFS = 44 + 150 + 1048 + 150 mikrosec = 1392 mikrosec
.
Az adatcsomagok maximális száma egy kapcsolati intervallumban = = = = = 35 csomag
Egy kapcsolati intervallumban átvitt összes adat = 36 * 244 bájt = 35 * 244 * 8 bit = 68320 bit
Adatátviteli sebesség = Egy kapcsolati intervallumban/kapcsolati intervallumban átvitt összes adat = 70272 bit / 50 milliszekundum = 1366.4 Kbits/s
6. eset (PHY: 2 Mbps, ATT MTU = 247 bájt, DLE: engedélyezve, Csatlakozási intervallum:
A firmware által jelentett adatátviteli sebesség:
Az idő: 6,11 másodperc telt el.
Átviteli sebesség: 1371,82 Kbits/s.
1048712 byte ATT hasznos terhet küldött.
Kiszámított adatteljesítmény:
Kiszámított adatteljesítmény:
Az adatátviteli sebesség:
Az adatátviteli sebesség:
Data_Packet_Time = Az üres csomag átvitelének ideje + IFS + a tényleges adatcsomag átvitelének ideje + IFS = 44 + 150 + 1048 + 150 mikrosec = 1392 mikrosec
.
Az adatcsomagok maximális száma egy kapcsolati intervallumban = = = = = 287 csomag
Egy kapcsolati intervallumban átvitt összes adat = 287 * 244 bájt = 287 * 244 * 8 bit = 560224 bit
Adatátviteli sebesség = Egy kapcsolati intervallumban/kapcsolati intervallumban átvitt összes adat =560224 bit / 400 milliszekundum = 1400.56 Kbits/s
Optimalizálás a maximális adatátviteli sebességre
Az átvett tényezők alapján a következőket jegyezhetjük meg a nagy adatátviteli sebességre való optimalizálásnál:
- Mindig engedélyezzük a DLE-t
Nyilvánvaló, hogy ha Bluetooth v4.1 vagy korábbi verziót használunk, ez nem érvényes opció. Általánosságban azonban győződjön meg róla, hogy engedélyezte a DLE-t, hogy maximalizálja a csomagok és az alkalmazás adatátviteli hatékonyságát - LE 2M PHY használata
Ha tudja, hogy az eszközök mindkét végén támogatják a Bluetooth 5-öt, akkor az LE 2M PHY használata az egyik legjobb módja az alkalmazás adatátviteli teljesítményének maximalizálásának. Az LE 2M PHY használata segít az energiafogyasztás csökkentésében is, így két legyet üthet egy csapásra! - Értesítések és válasz nélküli írások használata
Ezek használata segít eltávolítani a feleslegesen továbbított csomagokat (a jelzésekhez és a normál írásokhoz képest, amelyeknél a fogadó félnek minden egyes kapott csomagot vissza kell nyugtáznia). - Válasszon legalább 247 bájtnál nagyobb ATT MTU-értéket
Ez minimalizálja a csomagbájtokban jelentkező többletköltséget. - Válasszon olyan kapcsolati intervallumot, amely lehetővé teszi a maximális számú csomagot kapcsolati intervallumonként
De ne feledje, hogy a kapcsolati intervallum befolyásolja az energiafogyasztást. Minél rövidebb az intervallum, annál több energiát fogyaszt a készülék a megnövekedett rádiós bekapcsolási idő miatt. Arra is ügyelni kell, hogy ne válasszon túl nagy intervallumot, különben a felhasználói élményt rontja (a nagyobb kapcsolati intervallum nagyobb késleltetést eredményez). Egy utolsó dolog, amit mindenképpen figyelembe kell vennie, az a rendszerében lévő eszközök esetleges korlátai a támogatott kapcsolati intervallumonkénti maximális csomagszám tekintetében.
Összefoglaló & Zárás
A fent felsorolt számított értékek még elméleti jellegűek, és nem biztos, hogy egyeznek a gyakorlatban és a valós környezetben mért adatátviteli sebességgel, de ettől függetlenül jó kiindulási pontot jelentenek, és jó támpontot adnak arra, hogy mire számíthatunk (legalábbis a maximumot illetően). Az interferencia és az átviteli/vételi hibák szintén befolyásolják az adatátviteli teljesítményt (az újbóli próbálkozások, az adatvesztés és a kapcsolat lezárása alacsonyabb átviteli teljesítményt eredményeznek). Ezeket okozhatja más, a Bluetooth-szal azonos 2,4 GHz-es sávot használó eszközök jelenléte, az eszközök közötti nagyobb távolság, az eszközök közötti akadályok megléte és így tovább…