DFP 数据转发协议 规则说明
DFP 是什么?
稳控科技编写的一套数据转发规则, 取自“自由转发协议 FFP(Free Forward Protocol)” ,或者 DFP(DoubleF Protocol), DF 也可以理解为 Datas Forward(数据转发)的缩写。DF 协议是与硬件接口无关的数据链路层协议,规定了数据流如何在不同设备之间、不同接口之间的传输方向。
DF 协议一般用于延长数字接口的传输距离(数据中继),它与硬件接口类型无关,可以基于 UART、 LoRA、TCP 等异步数据传输介质。
数据转发规则
(1) 处于同一区域内的每台设备均有唯一的地址(同一区域不得有相同地址的的设备)。合法的设备地址为0x01~0xFE。 0xFF 等效于任意地址值, 0x00 等效于不存在的地址值。
(2)每台设备均有多个数字接口(如: UART、 LoRA 等),各端口均有独立的通讯参数(不同参数可形成不同的数据区域)。每台设备均有与数字接口对应数量的群组 ID 码(GroupA_ID/GroupB_ID 等)。
(3)被传输的数据包均带有协议前缀 FP(ForwardPrefix), FP 包含有数据包的发送起始设备地址、数据包目的设备地址、数据包群组 ID、数据包转发路径记录等信息。
(4) 当 DFP 设备通过某个数字接口接收到无 FP 的数据包(干数据) 时会自动为其添加。添加规则为:群组号=接收到数据的端口对应的群组 ID 号(接收数据的端口为 xxxxA 时为 GAID,接收数据的端口为 xxxxB 时为 GBID)。
起始设备地址=0xFF。 目标设备地址=0xFF。
注:其它设备使用 LoRA 发来的数据包仅可被 NLM5 的 LORA-A 接收到。
(5) 无论哪个数字接口,当接收到数据包后会判断 FP 中的群组 ID 是否与自身的两个群组 ID 之一相同(匹配),若不同则丢弃处理,若相同则会首先判断数据包是否是用于自身的指令,若是则执行指令然后丢弃数据包,若不是则按照转发规则对数据包进行转发。
数据包转发规则为:每个数字接口均可指定在收到数据后将数据转发到哪个(或者哪几个)数字端口以及是否输出数据时带有 FP。转发数据前会根据数据输出的端口自动更新 FP 中的群组 ID 值。
(6)当接收到的数据包 FP 中的目的地址与本设备地址相同时,在转发前会修改 FP 中的目标设备地址为0x00。其它设备在接收到数据包后会判断 FP 中的目的地址是否为 0x00,是则立即丢弃数据包(即:数据包转发终止)。
(7)数据映射
DFP 设备用一个参数来启用或者禁止数据映射,参数作用说明如下:当某台 DFP 设备的多个数字接口处于同一数据区域时,会同时接收到数据包,按照上述规则,若数据映射参数为未启用状态时,每个端口均为按照预设转发规则和转发方向进行数据处理和转发。若数据映射参数为启动状态时, DFP 设备会进行如下处理:检查数据包是否带有正确的 FP 前导符号(默认为“@#@#” )
有:继续检查 FP 中的群组码是否适用于本设备
是:则将数据包映射到与群组号对应的 LoRA-x。
否:维持现状(不进行映射处理)。
无: 将接收到的 LoRA 数据包映射到 LoRA-A。
LoRA 接收到的数据映射的意思是:无论 LoRA 数据包是由 LoRA-A 或者 LoRA-B 接收到的, 强制的将接收到的数据包按照上述规则更新到 LoRA-A 或者 LoRA-B 的接收缓存,然后进一步按照数据转发规则处理。
DFP 协议的数据映射功能以上述数据转发规则,可以实现单线型、树杈型、十字交叉型数据传输网络。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。