在《WiMinet 評說(shuō) 1.2:多跳無(wú)線(xiàn)網(wǎng)絡(luò )的現狀》一文中,我們提到:在室外長(cháng)距離的無(wú)線(xiàn)自組織網(wǎng)絡(luò )中,由于節點(diǎn)之間的鏈路損耗較大,其鏈路預算相對不足,其包誤碼率PER會(huì )相應升高,也就是丟包概率 p 會(huì )比較大;而在一個(gè)大規模網(wǎng)絡(luò )中,某些分支節點(diǎn)的通訊鏈路又會(huì )比較深,也就是網(wǎng)絡(luò )跳數n 比較大,在這種情況下其通訊成功率Pn自然也就顯著(zhù)下降了,人們的切身感受就是這個(gè)鏈路不太穩定。 很顯然在一個(gè)真實(shí)的無(wú)線(xiàn)通訊系統中,每一個(gè)節點(diǎn)都是具備雙向收發(fā)能力的,但是為了更加清晰的描述數據流向,我們將原始數據的發(fā)出者定義為發(fā)射機,將目標數據的接受者定義為接收機;如下圖所示,我們定義左邊紅色的“鐵塔”為發(fā)射機,右邊藍色的“鍋蓋”為接收機。 在一個(gè)較大規模的無(wú)線(xiàn)通訊網(wǎng)絡(luò )中,中繼通常有兩種存在形式,一種是獨立的中繼器,通常其硬件配置較高,性能也比較強勁,并安裝有多根天線(xiàn);另外一種是普通的數據節點(diǎn)本身承擔數據轉發(fā)的功能,這種節點(diǎn)成本較低,通常僅僅配置一根天線(xiàn)。無(wú)論其硬件配置和工作原理如何,它們都可以承擔數據轉發(fā)的功能,為了更加直觀(guān)的描述中繼的工作機制,我們以雙天線(xiàn)的中繼器為例。 在多數情況下,負責參數通訊的還有外部的用戶(hù)系統,比如連接數據庫的上位機應用程序和連接現場(chǎng)工業(yè)傳感器的嵌入式設備;通常負責發(fā)起數據請求的是上位機應用程序,二者以RJ45以太網(wǎng)線(xiàn)或者RS232電纜連接。 負責采集數據并回傳的是嵌入式設備,二者以RS232電纜,TTL電平的串口或者GPIO端口直接相連。 按照我們之前的約定,我們選定網(wǎng)絡(luò )中一個(gè)具有6跳的(5個(gè)中繼)分支鏈路,在該鏈路上一個(gè)標準的通訊業(yè)務(wù)流程通常如下:
注意到,這里僅僅是數據的下行請求過(guò)程,在嵌入式系統完成了數據的采集之后,就會(huì )將其作為應答回傳給上位機系統,其上行通訊流程剛好和下行傳輸完全相反:
我們都知道,有線(xiàn)通訊由于在封閉的通道中運行,其錯誤率通常在10-9~10-12,可靠性是非常高的,我們基本不用考慮丟包的問(wèn)題。這里為了敘述方便,我們將上位機應用程序的功能合并到發(fā)射機中去,將連接工業(yè)傳感器的嵌入式設備的功能合并到接收機中去。 在該模型中,每一個(gè)角色的基本工作原理如下:
上圖是丟包概率p = 10% 的時(shí)候的一種效果模擬圖。這里設定了5次數據重傳,從該圖我們看出來(lái)每一次的通訊丟包情況都不同:
當然有的讀者心里會(huì )想,這個(gè)效果模擬圖太過(guò)于極端,上述流程中有好幾次差一點(diǎn)就通訊成功了呢,就差一口氣!如果我們加大嘗試的次數,說(shuō)不定就成功了呢? 事實(shí)上在大多數情況下,加大嘗試次數,通訊成功率的確會(huì )有一定的改善,但無(wú)法從根本上消除問(wèn)題?紤]到有線(xiàn)鏈路的和無(wú)線(xiàn)多跳的通訊延遲,再疊加上目標設備的數據采集行為,下行或者上行鏈路的傳輸時(shí)間可能高達數百毫秒。 在真實(shí)的環(huán)境中,還要考慮到各種系統延遲和等待操作,比如Windows,Linux等主流桌面操作系統的調度延遲,各級無(wú)線(xiàn)節點(diǎn)的單片機延遲,這個(gè)時(shí)間往往還需要進(jìn)一步加大,最終這個(gè)總的時(shí)間往往高達數秒甚至幾十秒,在一個(gè)有幾百個(gè)節點(diǎn)的數據采集系統中,系統整體掃描一遍,耗時(shí)將會(huì )比較長(cháng)了。 從上述分析可以看出,端到端的重傳機制在跳數較深的無(wú)線(xiàn)自組織網(wǎng)絡(luò )中難以保證足夠的可靠性,即便犧牲延時(shí),加大重傳次數,效果也不會(huì )有根本性的改善。那么問(wèn)題來(lái)了!我們要怎么做才可以獲得理想的可靠性與實(shí)時(shí)性呢?敬請關(guān)注后續系列文章的深入解讀。 |