女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

丟包問(wèn)題如何解決?方法在這里

億佰特物聯(lián)網(wǎng)應(yīng)用專家 ? 2022-10-14 10:23 ? 次閱讀

關(guān)于丟包的問(wèn)題

無(wú)線通信最常見(jiàn)的問(wèn)題就是丟包,無(wú)論是簡(jiǎn)單原始的433MHz通信,還是高精尖的5G信號(hào),都會(huì)有丟包問(wèn)題。解決丟包問(wèn)題也是無(wú)線工程師的必要工作,丟包不可避免,但是遇到丟包了應(yīng)該怎么辦才是本文要談的。無(wú)線通信最重要的就是設(shè)計(jì)一套能夠解決應(yīng)用需求的通信協(xié)議,而通信協(xié)議包含這些要素:無(wú)線信號(hào)使用什么頻段、什么調(diào)制方式不被干擾、無(wú)線信號(hào)發(fā)給誰(shuí)、如何保證無(wú)線信號(hào)送達(dá)目標(biāo)、多個(gè)相同的設(shè)備同時(shí)使用該怎么辦、接收端如何判斷收到的信號(hào)是否重復(fù)收或漏收……其實(shí)這些都是圍繞解決一個(gè)問(wèn)題——丟包。

所以任何一種普遍使用的無(wú)線通信協(xié)議,都要分成若干邏輯層,每一個(gè)邏輯層。例如常見(jiàn)的Wi-FiZigBee藍(lán)牙,它們都具備兩個(gè)共同的邏輯層——PHY物理層,MAC鏈路層。其中PHY層定義了頻段、調(diào)制方式以及傳輸方式。MAC層則定義了誰(shuí)來(lái)發(fā)信號(hào),誰(shuí)來(lái)收信號(hào),什么時(shí)候發(fā)信號(hào)。基本的PHY層和MAC層解決了常見(jiàn)的物理丟包問(wèn)題,但是無(wú)線設(shè)備的應(yīng)用場(chǎng)景十分復(fù)雜,因此各種通信協(xié)議之上還增加了諸如網(wǎng)絡(luò)層這些邏輯層用于保證通信的穩(wěn)定性,如Wi-Fi協(xié)議上 的TCP協(xié)議就是為了保證傳輸穩(wěn)定而設(shè)計(jì)的。例如ZigBee的PHY層和MAC層就為了減少丟包做了一些處理機(jī)制。

減少丟包處理機(jī)制

①PHY層的減少丟包機(jī)制:
物理層的丟包,就是發(fā)送端發(fā)送了信號(hào),但是接收端沒(méi)有接收到信號(hào)。這也是最簡(jiǎn)單也是最常見(jiàn)的原因,通常就是發(fā)射端的功率低了,發(fā)射端距離接收端太遠(yuǎn)。遇到這種情況,通常會(huì)想到的辦法就是提高發(fā)射功率,信號(hào)能發(fā)射得更遠(yuǎn)。但是根據(jù)香農(nóng)定律,在相同信道帶寬下,信號(hào)攜帶的信息量越少,對(duì)信噪比的需求越低,對(duì)信噪比需求越低就意味著對(duì)功率的需求越低。這時(shí)除了提高功率,還有一種方式就是擴(kuò)頻。比如典型的ZigBee上使用的DSSS擴(kuò)頻,原本ZigBee的信道帶寬有2MHz,也就是能在1秒鐘內(nèi)輸出2M個(gè)0或1的信號(hào)。通常我們使用8個(gè)0或1的信號(hào)表示一個(gè)字節(jié),但是DSSS的作用下,需要64個(gè)0或1的信號(hào)來(lái)表示一個(gè)字節(jié)。這樣使用無(wú)線信號(hào)傳輸一個(gè)字節(jié)需要64個(gè)0或1,即使信號(hào)在傳輸過(guò)程中發(fā)生了失真,接收端也能對(duì)信號(hào)進(jìn)行糾錯(cuò)。這也就是為什么ZigBee的傳輸穩(wěn)定性優(yōu)于433MHz通信。正常情況下,ZigBee在20dBm發(fā)射功率的情況下,傳輸距離可達(dá)1公里。40390aa2-4b31-11ed-b116-dac502259ad0.png還有一種情況,就是天線的問(wèn)題。任何一種天線都有天線增益系數(shù)以及方向性。通常外置天線的增益就優(yōu)于PCB天線,在設(shè)備空間充足的情況下盡量選擇外置天線。而天線的方向性也是要考慮的因素,例如棒狀天線的信號(hào)覆蓋范圍就是一個(gè)扁球體,平行天線的位置信號(hào)非常好,而天線軸線延長(zhǎng)線位置信號(hào)差得多。
②MAC層減少丟包的機(jī)制:以ZigBee的IEEE802.15.4系列協(xié)議為例,該協(xié)議的MAC層具有一下幾個(gè)重要的功能。載波偵聽和CSMA機(jī)制:IEEE802.15.4具備基于載波偵聽的CSMA機(jī)制。設(shè)備在每次發(fā)射信號(hào)前,會(huì)偵聽當(dāng)前信道是否繁忙,并在信道空閑的時(shí)候發(fā)射信號(hào)。很多sub-G芯片也帶有載波偵聽功能的,但是缺少類似CSMA這樣的協(xié)議機(jī)制。CSMA則規(guī)定了信道偵聽的方法:發(fā)射前在一個(gè)隨機(jī)時(shí)間內(nèi)持續(xù)偵聽信道,這樣就能適當(dāng)避免兩個(gè)相同的設(shè)備同時(shí)發(fā)射信號(hào);隨機(jī)時(shí)間到達(dá)后嘗試發(fā)送信號(hào),如果發(fā)送失敗就再偵聽一次,并且下一次隨機(jī)時(shí)間范圍繼續(xù)擴(kuò)大(2倍),這樣就能避免更多的設(shè)備同時(shí)發(fā)射信號(hào);如果多次嘗試都失敗,而且達(dá)到了最大次數(shù)限制,那么這個(gè)信號(hào)就算丟包了。自動(dòng)應(yīng)答機(jī)制:IEEE802.15.4-MAC層有兩種主要通信方式:廣播和點(diǎn)播。點(diǎn)播到目標(biāo)時(shí),目標(biāo)節(jié)點(diǎn)會(huì)返回ACK幀。發(fā)送端沒(méi)有收到ACK幀,會(huì)嘗試重傳信號(hào),如果多次重傳都沒(méi)收到ACK就算丟包。另外接收端回復(fù)MAC-ACK的時(shí)候是不受CSMA機(jī)制可以強(qiáng)行發(fā)送的,發(fā)送端在CSMA機(jī)制下成功將點(diǎn)播信號(hào)送出去后,只需要0.2~0.5毫秒就能收到ACK。

因此,導(dǎo)致MAC層丟包常見(jiàn)的現(xiàn)象就是CSMA失敗丟包和MAC-ACK失敗丟包,和物理層的丟包不同的是這兩種丟包都可以被發(fā)送端自己檢測(cè)到。通常遇到這種丟包,應(yīng)用上的處理就是重傳。但是重傳也是要講究科學(xué)性的,比如惡意信號(hào)干擾導(dǎo)致CSMA失敗重傳就沒(méi)法解決;接收目標(biāo)不存在導(dǎo)致的 MAC-ACK失敗重傳也是沒(méi)法解決的。PHY層和MAC層的一系列處理機(jī)制都是為了減少丟包而設(shè)計(jì)的,但是無(wú)法保證絕對(duì)沒(méi)有丟包,因此無(wú)線應(yīng)用設(shè)計(jì)中,最關(guān)鍵的就是遇到丟包了該怎么辦。

無(wú)線應(yīng)用中丟包解決方法

以ZigBee傳輸為例,PHY層、MAC層、NWK層做了很多處理機(jī)制,丟包率幾乎達(dá)到0.1%~0.01%。但是如果應(yīng)用設(shè)計(jì)沒(méi)考慮到僅剩的0.1%~0.01%丟包問(wèn)題,對(duì)應(yīng)用自身的影響就是致命的。在應(yīng)用中常見(jiàn)的對(duì)丟包的容錯(cuò),有如下解決辦法。4050ae0a-4b31-11ed-b116-dac502259ad0.jpg①合理重傳:重傳是大家都能想到的方法,ZigBee就提供了CSMA失敗檢測(cè)和ACK失敗檢測(cè)。通常遇到以上兩種情況大家的常見(jiàn)做法就是數(shù)據(jù)重傳。但是重傳也要講究合理性,例如CSMA失敗,這個(gè)時(shí)候有可能是很多個(gè)節(jié)點(diǎn)同時(shí)在發(fā)射信號(hào);例如設(shè)備上電的時(shí)候會(huì)把上電時(shí)的信息上報(bào)給網(wǎng)關(guān),多個(gè)設(shè)備一起上電肯定會(huì)有很大的沖突率,CSMA失敗是很常見(jiàn)的事。因此,這時(shí)候遇到CSMA失敗不要立即重傳,可以隨機(jī)延時(shí)100毫秒~1秒再重傳,如果再次失敗說(shuō)明同時(shí)傳輸?shù)脑O(shè)備確實(shí)太多,再隨機(jī)延時(shí)2~4秒,失敗再隨機(jī)延時(shí)4~8秒……。如果是ACK失敗則可以根據(jù)該次發(fā)射數(shù)據(jù)的實(shí)時(shí)性,延遲一個(gè)固定時(shí)間再重傳,一般在1秒以上5秒以下,因?yàn)橛锌赡苌洗蝹鬏斒∈悄繕?biāo)節(jié)點(diǎn)“不在狀態(tài)”,下次傳輸可能就自動(dòng)好了。②設(shè)計(jì)時(shí)序規(guī)則:應(yīng)用數(shù)據(jù)傳輸時(shí)需要考慮出現(xiàn)丟包時(shí)該如何處理,例如OTA升級(jí),文件傳輸。每一幀數(shù)據(jù)都是必不可少的,而且順序還要正確。所以這類無(wú)線傳輸應(yīng)用中,應(yīng)該對(duì)每一幀數(shù)據(jù)包都標(biāo)注上序號(hào)。發(fā)送端一旦檢測(cè)到丟包,可能會(huì)重傳數(shù)據(jù)幀。而接收端有可能是因?yàn)锳CK沒(méi)有發(fā)送到發(fā)送端導(dǎo)致發(fā)送端誤判。如果接收端收到多一幀或少一幀數(shù)據(jù),都可以從每一幀的序號(hào)判斷出來(lái)。③該放棄時(shí)要放棄:類似接收端不存在,或者信道遇到干擾的問(wèn)題,通過(guò)MAC層都可以偵測(cè)到。例如出現(xiàn)連續(xù)長(zhǎng)時(shí)間的ACK失敗,可能就是接收端不存在;連續(xù)長(zhǎng)時(shí)間的CSMA失敗,可能就是遇到了干擾。接收端不存在的情況下完全可以放棄對(duì)這個(gè)接收端發(fā)送消息。信道被干擾的情況下可以做整體信道切換,也可以暫停全網(wǎng)絡(luò)的運(yùn)行,保存當(dāng)前狀態(tài),等待干擾消失后再恢復(fù)全部的傳輸。

不算丟包的“丟包”

無(wú)線通信上除了無(wú)線信號(hào)導(dǎo)致的丟包,還有軟件邏輯上的丟包。典型的就是通信的數(shù)據(jù)量超過(guò)了發(fā)送端或接收端的處理能力。比如ZigBee的傳輸速率只有250kbps,加上CSMA延遲,路由轉(zhuǎn)發(fā),實(shí)際數(shù)據(jù)傳輸速率能夠達(dá)到5kbps~10kbps就很不錯(cuò)了。發(fā)射端的應(yīng)用程序如果向發(fā)射端寫入數(shù)據(jù)的速度超過(guò)了發(fā)射端的傳輸速度,也會(huì)導(dǎo)致軟件丟包。通常各家芯片廠商的IEEE802.15.4的協(xié)議棧都會(huì)提供一個(gè)Send Confirm的回調(diào)接口,應(yīng)用程序向傳輸接口寫入需要傳輸?shù)南⒑螅s在幾毫秒到幾十毫秒內(nèi)收到Send Confirm回調(diào)觸發(fā)。同時(shí)一般射頻芯片SoC也會(huì)提供緩存來(lái)存儲(chǔ)寫入的數(shù)據(jù)幀,有可能應(yīng)用程序一次向射頻芯片寫入多個(gè)數(shù)據(jù)幀都被芯片SOC緩存起來(lái),再慢慢的一幀一幀發(fā)射出去,然后Send Confirm回調(diào)被陸陸續(xù)續(xù)地觸發(fā)。如果應(yīng)用程序在發(fā)送消息的時(shí)候,每次向射頻SoC寫入傳輸消息,待Send Confirm觸發(fā)后再寫入下一條消息,就可以很好地規(guī)避軟件丟包的問(wèn)題。4081abae-4b31-11ed-b116-dac502259ad0.png

對(duì)于接收端也是如此,多個(gè)發(fā)送端向同一個(gè)接收端發(fā)送消息,CSMA很好的規(guī)避了沖突,發(fā)送端收到了各自的ACK,但是發(fā)送端發(fā)送的消息在接收端沒(méi)有得到正確的響應(yīng)。那么就有可能是接收端的處理能力有限,各個(gè)發(fā)送端累計(jì)發(fā)送的消息全部堆在接收端正在處理,這種情況就要考慮系統(tǒng)設(shè)計(jì)問(wèn)題,減少接收端的處理壓力。

總結(jié)

對(duì)于丟包的容錯(cuò)處理是無(wú)線通信設(shè)計(jì)的關(guān)鍵,現(xiàn)有成熟的通信協(xié)議雖然做了很多措施來(lái)降低丟包率,如果丟包一旦發(fā)生一定要有容錯(cuò)機(jī)制來(lái)應(yīng)對(duì),否則就算是千分之一或萬(wàn)分之一的丟包,都會(huì)為整個(gè)無(wú)線系統(tǒng)帶來(lái)災(zāi)難性的后果。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6171

    瀏覽量

    137362
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    為何 MCX 插頭會(huì)呈現(xiàn)大小不同?答案在這里

    同時(shí),設(shè)備制造商在產(chǎn)品設(shè)計(jì)階段,會(huì)根據(jù)整體結(jié)構(gòu)和接口規(guī)劃,審慎選擇合適大小的 MCX 插頭。這一決策不僅關(guān)乎插頭與內(nèi)部組件的適配,還影響著設(shè)備的外部接口兼容性和可擴(kuò)展性,確保產(chǎn)品在復(fù)雜的電子生態(tài)系統(tǒng)中能夠無(wú)縫對(duì)接、協(xié)同工作。
    的頭像 發(fā)表于 04-11 08:40 ?125次閱讀
    為何 MCX 插頭會(huì)呈現(xiàn)大小不同?答案<b class='flag-5'>在這里</b>

    騰訊會(huì)議免費(fèi)40分鐘不夠用?你要的秘訣在這里

    影響效率。更令人擔(dān)憂的是,未來(lái)免費(fèi)時(shí)長(zhǎng)可能進(jìn)一步縮短。那么,有沒(méi)有一種經(jīng)濟(jì)實(shí)惠又功能強(qiáng)大的解決方案呢?答案就在這里:結(jié)合樹莓派和3CXPBX,你就能打造一個(gè)無(wú)時(shí)間限制
    的頭像 發(fā)表于 03-25 09:24 ?586次閱讀
    騰訊會(huì)議免費(fèi)40分鐘不夠用?你要的秘訣<b class='flag-5'>在這里</b>!

    STM32H743+USB3300傳輸采集的數(shù)據(jù)前幾次會(huì)怎么解決?

    的,只會(huì)出現(xiàn)在USB斷開重連后,要多發(fā)幾次才會(huì)不,有知道的佬嗎。使用官方的USB庫(kù)移植,和Cubemx配置也一樣有此問(wèn)題。使用的是CDC虛擬串口的USB高速HS模式,在其他論壇
    發(fā)表于 03-10 06:26

    用CPLD來(lái)控制TLK1221有情況,怎么解決?

    用CPLD來(lái)控制TLK1221有情況。所傳輸?shù)囊曨l信號(hào)在顯示器上面有條紋出現(xiàn)。請(qǐng)問(wèn)是不是在8B/10B轉(zhuǎn)換時(shí),沒(méi)寫好程序。AD和DA轉(zhuǎn)換我感覺(jué)沒(méi)有問(wèn)題。
    發(fā)表于 02-13 06:08

    華納云如何解讀WinMTR的率數(shù)據(jù)?

    是如何解讀WinMTR的率數(shù)據(jù): 1. 率的定義
    的頭像 發(fā)表于 12-30 16:51 ?453次閱讀

    ubuntu ping 開發(fā)板存在嚴(yán)重的情況,請(qǐng)問(wèn)該怎么解決?

    我現(xiàn)在在學(xué)習(xí)一個(gè)嵌入式Linux的項(xiàng)目,要實(shí)現(xiàn)主機(jī),虛擬機(jī),開發(fā)板三者的通信,我的一系列設(shè)置應(yīng)該是沒(méi)問(wèn)題的。但是在ubuntu上ping開發(fā)板時(shí)總是會(huì)出現(xiàn)很嚴(yán)重的情況,有時(shí)甚至?xí)蠪rom
    發(fā)表于 11-01 16:50

    工業(yè)交換機(jī)的零延遲和零

    在現(xiàn)代工業(yè)自動(dòng)化和網(wǎng)絡(luò)通信的快速發(fā)展中,工業(yè)交換機(jī)作為連接各類設(shè)備的核心元素,其性能和穩(wěn)定性顯得尤為重要。零延遲和零的概念不僅是技術(shù)上的追求,更是推動(dòng)工業(yè)智能化進(jìn)程的重要保障。傳統(tǒng)網(wǎng)絡(luò)在數(shù)
    的頭像 發(fā)表于 09-24 15:52 ?451次閱讀

    LM258在這個(gè)電路里是電壓跟隨器嗎?R4在這里不影響輸出電壓?jiǎn)幔?/a>

    我想問(wèn)一下LM258在這個(gè)電路里是電壓跟隨器嗎?R4在這里不影響輸出電壓?jiǎn)幔扛鶕?jù)虛短的原理,V-是等于Vref。 那么Vo和V-的關(guān)系怎么分析呢,是相等嗎?怎么根據(jù)虛斷的原理分析Vo和V-的關(guān)系?這里是怎么得到Vo=V-的呢?
    發(fā)表于 08-13 06:05

    為什么ESP8266 TCP透?jìng)鬟^(guò)程會(huì)

    為什么ESP8266 TCP透?jìng)鬟^(guò)程會(huì)
    發(fā)表于 07-09 07:55

    ESP8266_RTOS3.0串口0傳輸大量數(shù)據(jù)的原因?

    多個(gè)分段進(jìn)入處理函數(shù),后來(lái)使用example示例中的uart_echo,發(fā)現(xiàn)接收可以完整接收,但是當(dāng)把數(shù)據(jù)原樣從串口0的tx輸出時(shí),數(shù)據(jù)中間出現(xiàn)多次中斷。 我發(fā)現(xiàn)用系統(tǒng)自帶的打印log的函數(shù)打印數(shù)據(jù)時(shí),并不會(huì)出現(xiàn)
    發(fā)表于 07-09 06:32

    cy7c68013a-56ltxc搭載fpga傳輸數(shù)據(jù)是哪里出了問(wèn)題?

    1.8m的一個(gè)圖像數(shù)據(jù)由fpga傳輸給usb芯片,再由cy7c68013-56ltxc芯片把數(shù)據(jù)傳輸給電腦,然后由軟件排列起來(lái),發(fā)現(xiàn)數(shù)據(jù)出現(xiàn)了,數(shù)據(jù)卻行,大家有什么看法?
    發(fā)表于 07-03 08:26

    串口通信的時(shí)候怎么避免的情況?

    1.如何避免在中斷里面執(zhí)行長(zhǎng)時(shí)間的操作 2.串口通信的時(shí)候怎么避免的情況 3.串口通信為什么不可以一次發(fā)送1000bit或者10000bit 也就是說(shuō)一幀數(shù)據(jù)為 一位起始位 10000bit數(shù)據(jù)位 一位停止位
    發(fā)表于 07-03 07:00

    例程simple_sniffer接收wifi數(shù)據(jù)時(shí)老是,有什么改進(jìn)辦法?

    您好! 在用例程simple_sniffer接收wifi數(shù)據(jù)時(shí)老是,是否有什么改進(jìn)辦法? 謝謝
    發(fā)表于 06-26 07:41

    ESP8266 STA+AP模式下何解決?

    ESP8266 STA單模式下,發(fā)送成功率在99%以上,請(qǐng)問(wèn)如果存在STA+AP模式下bug的話(我在網(wǎng)上看到相關(guān)信息,說(shuō)信道共用的問(wèn)題)那么我的95%通訊成功率是否正常(基于這個(gè)bug的前提下),再問(wèn)
    發(fā)表于 06-26 06:25

    esp32 udp broadcast怎么避免?

    esp32 udp broadcast
    發(fā)表于 06-17 06:05