無(wú)線通信中丟包重傳數(shù)據(jù)通信應(yīng)用里面一項(xiàng)非常重要的功能,是無(wú)線通信模塊選型的一項(xiàng)主要參考指標(biāo)。前文詳細(xì)的介紹了什么是網(wǎng)絡(luò)丟包、數(shù)據(jù)丟包是如何檢測(cè)及系統(tǒng)層數(shù)據(jù)丟包重傳機(jī)制、數(shù)據(jù)丟包有哪些解決辦法等,本文接著介紹通信協(xié)議中數(shù)據(jù)通信丟包重傳是如何實(shí)現(xiàn)的,具體實(shí)現(xiàn)丟包重傳功能如下:
系統(tǒng)層的重傳,無(wú)論是CSMA/CA,還是MAC重傳,還是APS重傳,都是機(jī)械呆板的策略。系統(tǒng)層的重傳機(jī)制,特點(diǎn)就是重傳2~3次,如果重傳失敗就通過(guò)“AF Data Confirm”向應(yīng)用層報(bào)告發(fā)送失敗。
但是應(yīng)用層是無(wú)線傳輸中智能化程度最高的,也是可以進(jìn)行重傳策略設(shè)計(jì)的層級(jí)。應(yīng)用層應(yīng)該根據(jù)應(yīng)用環(huán)境,消息的重要性設(shè)計(jì)丟包重傳的策略。我們以zigbee的應(yīng)用為例,來(lái)設(shè)計(jì)重傳策略。
通常zigbee設(shè)備出現(xiàn)CSMA/CA失敗,要么是環(huán)境干擾太強(qiáng),要么是同時(shí)發(fā)送消息的zigbee設(shè)備數(shù)量太多超過(guò)了CSMA/CA的最大窗口。
如果是同時(shí)發(fā)送消息的設(shè)備數(shù)量太多,這個(gè)時(shí)候就要加入“手動(dòng)避讓”機(jī)制。比如很多節(jié)點(diǎn)同時(shí)向協(xié)調(diào)器上傳消息,某個(gè)節(jié)點(diǎn)通過(guò)“AF Data Confirm”檢測(cè)到載波沖突丟包。這時(shí)候可以把丟包的消息記下來(lái),然后同樣延時(shí)一段隨機(jī)時(shí)間,錯(cuò)開(kāi)發(fā)送高峰進(jìn)行重傳。當(dāng)然這個(gè)隨機(jī)時(shí)間范圍就要比MAC層的CSMA/CA的隨機(jī)時(shí)間大得多。應(yīng)用層的重傳可以隨機(jī)1~4秒進(jìn)行重傳,以0.1秒為最小單位,如果再次發(fā)生載波沖突可以加倍隨機(jī)時(shí)間范圍。特別是zigbee網(wǎng)絡(luò)應(yīng)用中節(jié)點(diǎn)數(shù)量是一個(gè)動(dòng)態(tài)可變的因素,在節(jié)點(diǎn)數(shù)量多的時(shí)候可以不用在乎數(shù)據(jù)的實(shí)時(shí)性,而是要保證每個(gè)節(jié)點(diǎn)的消息都能被收到,而且“設(shè)備越多耗時(shí)越多”這個(gè)邏輯也是科學(xué)合理的道理。
Zigbee系統(tǒng)提供的沖突檢測(cè)機(jī)制,只能檢測(cè)沖突,但是無(wú)法區(qū)分是傳輸沖突還是惡意的信號(hào)干擾。因此有可能會(huì)出現(xiàn)應(yīng)用層一直在重傳,“AF Data Confirm”一直在報(bào)告載波沖突。這個(gè)時(shí)候應(yīng)用層就要做“聰明”一點(diǎn),有可能是zigbee設(shè)備遇到了持續(xù)的干擾信號(hào)。對(duì)于持續(xù)的干擾信號(hào)只能通過(guò)暴力手段解決,可以通過(guò)無(wú)線電定位設(shè)備找到干擾源并摧毀它。
系統(tǒng)應(yīng)答丟包,包括MAC-ACK丟包和APS-ACK丟包,可以采用以下策略。ZigBee的系統(tǒng)層具有Mesh路由設(shè)計(jì),數(shù)據(jù)傳輸時(shí)會(huì)尋找一條最短的路由路徑。在出現(xiàn)MAC-ACK丟包且MAC重傳失敗時(shí),zigbee的路由算法會(huì)計(jì)算出一條新的路徑。而APS-ACK是最終目標(biāo)丟包,出現(xiàn)這種情況極大可能就是最終目標(biāo)壞掉,或者這個(gè)最終目標(biāo)根本就不存在。另外如果最終目標(biāo)不需要進(jìn)過(guò)路由,zigbee系統(tǒng)直接發(fā)送MAC幀,也就直接報(bào)告MAC-ACK丟包。
出現(xiàn)應(yīng)答丟包且重傳失敗,因?yàn)橄到y(tǒng)層已經(jīng)做了MAC重傳和APS重傳。因此可以不用立即重傳,可以等待一段時(shí)間(10秒~1分鐘)再繼續(xù)重傳。如果重傳成功則說(shuō)明目標(biāo)設(shè)備是好的,只是剛才出了點(diǎn)意外;如果重傳失敗則可以懷疑目標(biāo)設(shè)備出問(wèn)題了,以后就不要再向出問(wèn)題的目標(biāo)設(shè)備發(fā)送任何消息。在zigbee網(wǎng)絡(luò)中如果有故障設(shè)備,其它設(shè)備向他發(fā)送消息都會(huì)消耗網(wǎng)絡(luò)資源對(duì)其進(jìn)行路由尋址,不但會(huì)有很長(zhǎng)的時(shí)延,而且還沒(méi)有好的結(jié)果。因此一旦網(wǎng)絡(luò)中有故障設(shè)備,應(yīng)用層就應(yīng)該避免向故障設(shè)備發(fā)送任何消息。
系統(tǒng)層重傳的應(yīng)答機(jī)制僅能表示發(fā)送的消息是否到達(dá)目標(biāo),應(yīng)用層的應(yīng)答除了表示消息到達(dá)目標(biāo)外,還有表示對(duì)消息的執(zhí)行結(jié)果的功能。系統(tǒng)層的應(yīng)答的英文叫做“acknowledge”簡(jiǎn)寫(xiě)“ACK”而應(yīng)用層應(yīng)答則叫做“response”簡(jiǎn)寫(xiě)“RSP”。ACK是目標(biāo)設(shè)備收到消息后立即產(chǎn)生的,RSP則是目標(biāo)設(shè)備處理完消息后再回復(fù)的,其等待時(shí)間要加上目標(biāo)設(shè)備處理消息的時(shí)間,這個(gè)時(shí)間具有很高的不可預(yù)測(cè)性。因此通常在zigbee的控制應(yīng)用中,發(fā)送短發(fā)送消息時(shí)只使能MAC-ACK而不使能APS-ACK,然后等待RSP。RSP除了可以用來(lái)判斷是否丟包,還可以判斷一下次該發(fā)送什么消息,這樣就可以形成一個(gè)閉環(huán)控制系統(tǒng)。
閉環(huán)負(fù)反饋系統(tǒng),RSP應(yīng)答可以作為負(fù)反饋通道
而接收端收到消息后向發(fā)送端發(fā)送RSP應(yīng)答時(shí),為了保證RSP能到達(dá)發(fā)送端,通常反而會(huì)開(kāi)啟APS-ACK。這樣即使RSP應(yīng)答丟包了,傳輸層的重傳機(jī)制也會(huì)自動(dòng)讓RSP應(yīng)答重傳。另外在zigbee 3.0中規(guī)定zigbee設(shè)備可以用自己的任意狀態(tài)值作為心跳包報(bào)告給另一個(gè)設(shè)備,心跳包什么時(shí)候發(fā)出去也是系統(tǒng)層控制不受應(yīng)用層干預(yù),應(yīng)用層也不會(huì)去干涉心跳包是否丟包。因此心跳包在傳送的時(shí)候通常也使能APS-ACK而不使能RSP。
今天的分享就到這里啦,EBYTE人每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)進(jìn)行了解,還有客服小姐姐在線答疑哦!
7 X 24 銷售服務(wù)熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 杭州辦事處戴經(jīng)理:17512568697
常州辦事處崔經(jīng)理:15906110783 南京辦事處葛經(jīng)理:17626012283
業(yè)務(wù)郵箱:support@cdebyte.com
全國(guó)銷售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號(hào)B5棟(前臺(tái)座機(jī):028-61543675)
?? 成都億佰特電子科技有限公司【版權(quán)所有】 蜀ICP備13019384號(hào)-3