DFP 數(shù)據轉發(fā)協(xié)議應用實例
DFP 是什么?
穩(wěn)控科技編寫的一套數(shù)據轉發(fā)規(guī)則, 取自“自由轉發(fā)協(xié)議 FFP(Free Forward Protocol)” ,或者 DFP(DoubleF Protocol), DF 也可以理解為 Datas Forward(數(shù)據轉發(fā))的縮寫。DF 協(xié)議是與硬件接口無關的數(shù)據鏈路層協(xié)議,規(guī)定了數(shù)據流如何在不同設備之間、不同接口之間的傳輸方向。
DF 協(xié)議一般用于延長數(shù)字接口的傳輸距離(數(shù)據中繼),它與硬件接口類型無關,可以基于 UART、 LoRA、TCP 等異步數(shù)據傳輸介質。
應用實例
DLS10 是符合 DFP 協(xié)議的數(shù)據中繼設備, 自帶兩個 UART 接口和兩個 LoRA 無線接口,實現(xiàn)了 DFP 所有需求。即: DLS10 是符合 DFP 協(xié)議的具有兩個 UART 和兩個 LoRA 數(shù)字接口的數(shù)據轉發(fā)設備。DLS10 的轉發(fā)前綴識別碼為: @#@#(0x40 0x23 0x40 0x23)DLS10 內部預置有若干參數(shù)項(寄存器),用戶可修改這些參數(shù)以對 DLS10 進行數(shù)據轉發(fā)設置,寄存器
定義如下。寄存器匯總表(讀/寫)
(3)端口數(shù)據轉發(fā)規(guī)則寄存器(目標端口設置)
每個數(shù)字接口均有一個 xxxx_FWR(Forward Rule)寄存器用于設置此接口接收到數(shù)據后將數(shù)據轉發(fā)到哪個(或者哪幾個)數(shù)字接口。這個寄存器從低位向高位每兩位代表一個目標端口, bit0/1 代表 UART-A, bit2/3代表 UART-B, bit4/5 代表 LoRA-A, bit6/7 代表 LoRA-B。每兩位中,低位表示是否從此接口輸出數(shù)據包,高位表示輸出數(shù)據時是否帶有轉發(fā)協(xié)議頭 FP(ForwardPrefix)。
數(shù)據轉發(fā)寄存器 xxxx_FWR
例如:
設置 UA_FWR=00010000B(0x10)表示 UART-A 收到數(shù)據后從 LoRA-A 轉發(fā)出去,轉發(fā)時不帶 FP。
設置 LA_FWR=00000001B(0x01)表示 LoRA-A 收到數(shù)據后從 UART-A 轉發(fā)出去,轉發(fā)時不帶 FP。
以下實例均以 DLS 默認參數(shù)為基礎。
實例 1.UART(RS232/RS485)、 LoRA 互轉本實例實現(xiàn)兩個 UART 設備之間的無線透明傳輸(代替 UART 之間的物理線路)。設備 I、設備 II 均為UART 接口
DLS(1#)參數(shù)設置:設置 UART-A 通訊參數(shù)與設備 I 一致。
DLS(2#)參數(shù)設置:設置 UART-B 通訊參數(shù)與設備 II 一致。
其它參數(shù)保持默認值,主要的幾個默認參數(shù)說明如下:(后續(xù)實例不再一一說明默認參數(shù))本實例僅使用了 DLS 設備的 UART-A 和 LoRA-A,默認參數(shù)時,這兩個端口在接收到數(shù)據相互轉發(fā),即: UARTA 接收到數(shù)據后從 LoRA-A 端口發(fā)送出去(期間會對轉發(fā)前綴做相應的添加、修改、去除輸出等)。數(shù)據轉發(fā)過程描述如下:
設備 I 由 UART 發(fā)送:“123”(0x31 0x32 0x33)
DLS(1#)接收到 UART-A 數(shù)據“123” ,為其增加 FP,因參數(shù) UA_FWR=0x0010,故此 UART-A 接收到的數(shù)據轉發(fā)到 LoRA-A,轉發(fā)時不帶 FP,則經由 DLS(1#) 的 LoRA-A 發(fā)出的數(shù)據內容為:31 32 33
DLS(2#) 的 LoRA-A 接收到數(shù)據包 31 32 33,因為 LA_FWR=0x0001,故此數(shù)據轉發(fā)到 UART-A,轉發(fā)時不帶 FP, DLS(4#)的 UART-A 發(fā)送的內容為:31 32 33,即設備 II 的 UART 接收到“123”。由設備 II 發(fā)送的數(shù)據傳輸至設備 I 的過程與以上過程完全相同,在此不再重復說明。