软件实现

术语规定

术语 描述
extern module 在这里是指外部高频头模块,有时候也叫 module
multiprotocl 多协议高频头
pulse 这里特指输出协议
telemetry 遥测,回传
TBS 黑羊高频头
crossfilre TBS的一种协议

程序整体架构

_images/外部模块架构图.png

程序的主要工作在协议层的解包、打包和业务逻辑三大模块

模块架构

该程序主要分为三个模块

遥测数据解包

_images/外部模块遥测数据解包流程图.png

发射数据打包

_images/外部模块输出协议.png

业务逻辑

_images/计算类型传感器评估.png

接口设计

外部接口

主要集中在*mulprotocol_interface.c*,接口分为两大类设置高频头和设置传感器, 参看工程目录下Doxygen生成的文档

内部接口

数据结构设计

逻辑结构设计

FIFO

FIFO结构体,用于遥测数据缓冲区数据的操作

TelemetrySensor

  • TelemetrySensor结构体存储遥测传感器解包得到的数据,这部分数据为用户可设置, 需要存储
  • 每个传感器对应一个TelemetrySensor和 TelemetryItem
  • 传感器的计算公式和类型不一样,设置的参数也有所区别,所以出现了data联合体

TelemetryItem

  • TelemetryItem结构体,这部分数据是传感器的实时数值,不需要关机保存.
  • 每个传感器对应一个TelemetryItem和 TelemetrySensor
  • 每个传感器包含的数值信息不一样,所以这里使用了联合体

ModuleData

  • 用于存储用户对高频头的设置
  • 每种高频头协议不一样,所以能够设置的选项也有区别,但同时只能使用一种高频头,所以 使用来联合体

ExternalModulePulsesData

  • ExternalModulePulsesData结构体存储数据打包的数据
  • 外部模块支持多种高频头,每个都高频头协议格式不一样,每次只能支持一种外部高频头 所以使用了联合体封装高频头协议

物理结构设计

都是线性存储

数据结构与程序的关系

遥测数据解包

_images/遥测函数流程.png

数据打包

_images/打包函数流程.png

运行设计

程序主要由数据打包发送、解包和业务逻辑三个模块组成。

  • 业务逻辑就是根据用户对传感器的设置进行相关的运行

运行模块的组合

解包和业务逻辑放在同一周期执行,打包发送在另外一个周期执行

运行控制

解包和业务逻辑

运行时间

对于TBS外部高频头的回传数据最快4ms一个周期,传输26个字节,多协议高频头 也差不多,设计缓存区最大缓存区的设计存储量128个字节,所以*telemetryWakeup()* 应该小于4ms执行一次,否则会导致处理上丢帧。

对于数据打包发送的周期,理论上混控计算时间要小于发送的周期,否则会不能发挥出 外置高频头的最高性能。发射的周期精度为MS

维护设计(说明为方便维护工作的设施,如维护模块等。)