DFP 數(shù)據(jù)轉(zhuǎn)發(fā)協(xié)議 規(guī)則說明(二)
DFP 數(shù)據(jù)轉(zhuǎn)發(fā)協(xié)議 規(guī)則說明
DFP 是什么?
穩(wěn)控科技編寫的一套數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則, 取自“自由轉(zhuǎn)發(fā)協(xié)議 FFP(Free Forward Protocol)” ,或者 DFP(DoubleF Protocol), DF 也可以理解為 Datas Forward(數(shù)據(jù)轉(zhuǎn)發(fā))的縮寫。DF 協(xié)議是與硬件接口無關(guān)的數(shù)據(jù)鏈路層協(xié)議,規(guī)定了數(shù)據(jù)流如何在不同設(shè)備之間、不同接口之間的傳輸方向。
DF 協(xié)議一般用于延長數(shù)字接口的傳輸距離(數(shù)據(jù)中繼),它與硬件接口類型無關(guān),可以基于 UART、 LoRA、TCP 等異步數(shù)據(jù)傳輸介質(zhì)。
數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則
(1) 處于同一區(qū)域內(nèi)的每臺設(shè)備均有唯一的地址(同一區(qū)域不得有相同地址的的設(shè)備)。合法的設(shè)備地址為0x01~0xFE。 0xFF 等效于任意地址值, 0x00 等效于不存在的地址值。
(2)每臺設(shè)備均有多個數(shù)字接口(如: UART、 LoRA 等),各端口均有獨立的通訊參數(shù)(不同參數(shù)可形成不同的數(shù)據(jù)區(qū)域)。每臺設(shè)備均有與數(shù)字接口對應(yīng)數(shù)量的群組 ID 碼(GroupA_ID/GroupB_ID 等)。
(3)被傳輸?shù)臄?shù)據(jù)包均帶有協(xié)議前綴 FP(ForwardPrefix), FP 包含有數(shù)據(jù)包的發(fā)送起始設(shè)備地址、數(shù)據(jù)包目的設(shè)備地址、數(shù)據(jù)包群組 ID、數(shù)據(jù)包轉(zhuǎn)發(fā)路徑記錄等信息。
(4) 當(dāng) DFP 設(shè)備通過某個數(shù)字接口接收到無 FP 的數(shù)據(jù)包(干數(shù)據(jù)) 時會自動為其添加。添加規(guī)則為:群組號=接收到數(shù)據(jù)的端口對應(yīng)的群組 ID 號(接收數(shù)據(jù)的端口為 xxxxA 時為 GAID,接收數(shù)據(jù)的端口為 xxxxB 時為 GBID)。
起始設(shè)備地址=0xFF。 目標(biāo)設(shè)備地址=0xFF。
注:其它設(shè)備使用 LoRA 發(fā)來的數(shù)據(jù)包僅可被 NLM5 的 LORA-A 接收到。
(5) 無論哪個數(shù)字接口,當(dāng)接收到數(shù)據(jù)包后會判斷 FP 中的群組 ID 是否與自身的兩個群組 ID 之一相同(匹配),若不同則丟棄處理,若相同則會首先判斷數(shù)據(jù)包是否是用于自身的指令,若是則執(zhí)行指令然后丟棄數(shù)據(jù)包,若不是則按照轉(zhuǎn)發(fā)規(guī)則對數(shù)據(jù)包進行轉(zhuǎn)發(fā)。
數(shù)據(jù)包轉(zhuǎn)發(fā)規(guī)則為:每個數(shù)字接口均可指定在收到數(shù)據(jù)后將數(shù)據(jù)轉(zhuǎn)發(fā)到哪個(或者哪幾個)數(shù)字端口以及是否輸出數(shù)據(jù)時帶有 FP。轉(zhuǎn)發(fā)數(shù)據(jù)前會根據(jù)數(shù)據(jù)輸出的端口自動更新 FP 中的群組 ID 值。
(6)當(dāng)接收到的數(shù)據(jù)包 FP 中的目的地址與本設(shè)備地址相同時,在轉(zhuǎn)發(fā)前會修改 FP 中的目標(biāo)設(shè)備地址為0x00。其它設(shè)備在接收到數(shù)據(jù)包后會判斷 FP 中的目的地址是否為 0x00,是則立即丟棄數(shù)據(jù)包(即:數(shù)據(jù)包轉(zhuǎn)發(fā)終止)。
(7)數(shù)據(jù)映射
DFP 設(shè)備用一個參數(shù)來啟用或者禁止數(shù)據(jù)映射,參數(shù)作用說明如下:當(dāng)某臺 DFP 設(shè)備的多個數(shù)字接口處于同一數(shù)據(jù)區(qū)域時,會同時接收到數(shù)據(jù)包,按照上述規(guī)則,若數(shù)據(jù)映射參數(shù)為未啟用狀態(tài)時,每個端口均為按照預(yù)設(shè)轉(zhuǎn)發(fā)規(guī)則和轉(zhuǎn)發(fā)方向進行數(shù)據(jù)處理和轉(zhuǎn)發(fā)。若數(shù)據(jù)映射參數(shù)為啟動狀態(tài)時, DFP 設(shè)備會進行如下處理:檢查數(shù)據(jù)包是否帶有正確的 FP 前導(dǎo)符號(默認(rèn)為“@#@#” )
有:繼續(xù)檢查 FP 中的群組碼是否適用于本設(shè)備
是:則將數(shù)據(jù)包映射到與群組號對應(yīng)的 LoRA-x。
否:維持現(xiàn)狀(不進行映射處理)。
無: 將接收到的 LoRA 數(shù)據(jù)包映射到 LoRA-A。
LoRA 接收到的數(shù)據(jù)映射的意思是:無論 LoRA 數(shù)據(jù)包是由 LoRA-A 或者 LoRA-B 接收到的, 強制的將接收到的數(shù)據(jù)包按照上述規(guī)則更新到 LoRA-A 或者 LoRA-B 的接收緩存,然后進一步按照數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則處理。
DFP 協(xié)議的數(shù)據(jù)映射功能以上述數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則,可以實現(xiàn)單線型、樹杈型、十字交叉型數(shù)據(jù)傳輸網(wǎng)絡(luò)。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)