PH47框架机载控制参数系统

概述

PH7 代码框架的机载控制参数系统为整个代码框架以及用户代码提供了控制参数的读取、写入、空地间传输等功能的全套使用解决方案。用户只需要掌握几个简单函数的使用,即可使用上述功能。

机载参数数据存储于控制板外置 flash 或 eeprom 存储器中。可通过 CSS控制站以单个或批量的方式下载及上传设定。同时,还提供了相应的功能函数供二次开发使用。

与数据总线系统类似,二次开发用户同样可以自定义添加自己所需的参数。

基本使用步骤

  • 加入UseGlobalObject.h文件包含

若是在二次开发代码中首次使用参数系统功能,那么需要在二次开发代码的.cpp文件顶部加入如下文件包含(与数据总线使用方式一致):

#include"../../Frame/UseGlobalObject.h" //文件包含路径根据实际情况确定

若是在PH47框架文件中(如应用层)使用参数系统,一般情况下都已经进行过必要的文件包含了,无需再次包含。

  • 通过引用对象frm.para来使用参数系统功能

通过框架层全局引用frm下的参数系统子引用para来使用参数系统的各种功能函数:

frm.para.function()

简明使用指南

读取参数数值

使用函数

float Get(PARAID eParaId)

功能

获取机载控制参数数值。

Get() 函数获取的参数是存储于RAM当中的,若存储器(flash/e2prom)中参数被CSS上传设定所更新,或被程序中其他参数设定函数()所改变,则RAM中参数数值也自动更新,用户无需手动刷新。

参数  

eParaId为机载参数 id,定义见:

\DevStudio\BoardConfig\Board_xxx\ParamDict_xxx.h 中的enum PARAID

所属类 

CParameter

类文件

\DevStudio\Frame\Core\Parameter.cpp(.h)

示例

// 获取当前设定的遥测通讯波特率
uint32_t uBaudRate = (uint32_t)(core.para.Get(P_TELE_USART_BAUD_RATE));

// P_SENSOR_ACC_OFST_X 为加速度计x轴偏移量
float fVal = frm.para.Get(P_SENSOR_ACC_OFST_X);

更新及写入参数数值

使用函数

bool Set(PARAID eParaId, float fValue, bool blForceSave = false)

功能

设置机载调参参数数值, 同时可选是否对存储介质(Flash或EEprom)存储数据进行强制更新。

参数  

eParaId

机载参数 id;

fValue

待设置参数数值;

blForceSave

为 ture时同时更新 RAM 及存储器中数值,此时应注意考虑存储耗时造成的影响。

false时只更新RAM中的数值。

blForceSave 为 ture时不能进行高速率(>50hz)密集调用,否则有可能造成存储器写入超时而导致数据存储失败

所属类 

CParameter

类文件

\DevStudio\Frame\Core\Parameter.cpp(.h)

示例

// 设置参数 P_SENSOR_ACC_OFST_X 为 _cal_acc_offset.x, 且强制进行存储
core.para.Set(P_SENSOR_ACC_OFST_X, _cal_acc_offset.x, true);


// 仅对RAM当中的参数数值进行更新,控制板重启后丢失
frm.para.Set(P_SENSOR_ACC_OFST_X, blSave);  
机载控制参数ID定义

相关声明

由枚举PARAID进行声明

功能作用

对机载控制参数ID及顺序进行定义

相关文件

DevStudio\BoardConfig\Board_xxx\ParamDict_xxx.h

说明

枚举PARAID定义中的ID顺序决定了在 CSS 参数数值列表中的顺序。

机载控制参数详细信息设定(参数字典)

增加用户自定义参数
  • 步骤1:加入参数ID

相关定义

在g_arParaDictMCU[]结构数组对每个机载控制参数的详细信息进行设定

g_arParaDictMCU[]结构数组也成为参数字典

功能作用

对机载控制参数包括名称,默认数值,数值范围等具体信息进行设定

相关文件

DevStudio\BoardConfig\Board_xxx\ParamDict_xxx.cpp

说明

在此文件中,参数信息描述的顺序不必与 ParamDict_XXX.h 文件的 PARAID 枚举中的顺序严格保持一致

在 ParaDict_xxx.h 文件 enum PARAID 枚举定义的用户区域(注释符号 <=>=<=>=<=>=<=> 包围)当中加入新参数 id 的定义,不要为id指定特定数值,顺序排列即可。

 除此之外, 对于区域内用户自定义参数的位置及顺序无特别要求。在 CSS 参数下载列表中的顺序以 enum PARAID 顺序为准。

  // <=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>
  // 用户自定义参数设置区域, 不得对该区域之外的任何内容进行修改
  P_TEST_USER_1,       // 自定义参数 id
  // <=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>
  • 步骤2:加入新参数的的属性设定  

在 ParaDict_xxx.cpp 文件的参数字典 g_arParaDictMCU[] 定义的用户区域(注释符号 <=>=<=>=<=>=<=> 包围)加入新参数的属性数据。enum PARAID 当中参数 id 数值及顺序与 g_arParaDictMCU[] 各元素均无关系,可根据实际需要组织

 修改参数字典后,必须通过调试控制台运行一次 "initfstrun;"命令以初始化存储器数据。执行该命令后,控制板需要重新启动以便让初始化生效

注意!!! 普通用户对于用户区域(注释符号 <=>=<=>=<=>=<=> 包围)之外的代码不能进行任何修改高级用户若需进行修改,则修改后必须重新编译相关 lib 文件。

  // <=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>
  // 用户自定义参数设置区域, 不得对该区域之外的任何内容进行修改

  // 自定义参数 P_TEST_USER_1 的默认属性进行设置
  {"TestUser_1", P_TEST_USER_1, 0x0000, 256.0f, 0.0f, 500.0f},   
  // <=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>

BBDB固件参数说明

参数名称

参数id

默认数值

功能描述

RunCounts

P_RUNCNTS,

0.0f

飞控板自最近一次执行initfstrun;命令后的运行次数

FirmwareID

P_FIRMWARE_TYPE

FIRMWARE_BBDB

(7453)

当前固件ID

TeleBaudRate

P_TELE_USART_BAUD_RATE

115200.0f

USART1遥测串口波特率

ConsoleMode

P_CONSOLE_MODE

MUSART_DEBUG_CONSOLE

(0)

USART6调试串口工作模式

PlaceMent

P_PILOT_PLACEMENT

0.0f

未使用,飞控板摆放方式

参数名称

参数id

默认数值

功能描述

AccOffsetX

P_SENSOR_ACC_OFST_X

0.0f

加速度计x,y,z三轴偏移量。

在执行加速度计校准后自动设置

AccOffsetY

P_SENSOR_ACC_OFST_Y

AccOffsetZ

P_SENSOR_ACC_OFST_Z

AccScaleX

P_SENSOR_ACC_SCALE_X

1.0f

加速度计三轴x,y,z比例系数。

在执行加速度计校准后自动设置

AccScaleY

P_SENSOR_ACC_SCALE_Y

AccScaleZ

P_SENSOR_ACC_SCALE_Z

MagOffsetX

P_SENSOR_MAG_OFST_X

0.0f

磁强计x,y,z三轴偏移量。

在执行磁强计校准后自动设置

MagOffsetY

P_SENSOR_MAG_OFST_Y

MagOffsetZ

P_SENSOR_MAG_OFST_Z

MagScaleX

P_SENSOR_MAG_SCALE_X

1.0f

磁强计三轴x,y,z比例系数。

在执行磁强计校准后自动设置

MagScaleY

P_SENSOR_MAG_SCALE_Y

MagScaleZ

P_SENSOR_MAG_SCALE_Z

MagOffsetDX

P_SENSOR_MAG_OFF_DIAG_X

0.0f

MagOffsetDY

P_SENSOR_MAG_OFF_DIAG_Y

MagOffsetDZ

P_SENSOR_MAG_OFF_DIAG_Z

参数名称

参数id

默认数值

功能描述

GyrLpf

P_SENSOR_GYR_LPF_Hz

12.5f

陀螺仪低通滤波器截止频率

AccLpf

P_SENSOR_ACC_LPF_Hz

10.0f

加速度计低通滤波器截止频率

AccLpfVibeFlr

P_SENSOR_ACC_LPF_VIBE_FLR

5.0f

AccLpfVibe

P_SENSOR_ACC_LPF_VIBE

2.0f

AccClipMss

P_SENSOR_ACC_CLIP_MSS

15.5f * GRAVITY_MSS

AccStillMss

P_SENSOR_ACC_STILL_MSS

2.5f

MagFiltrRng

P_SENSOR_MAG_FILTER_RANGE

0.0f

参数名称

参数id

默认数值

功能描述

NcfKp

P_AHRS_NCF_Kp

0.1f

NcfKpp

P_AHRS_NCF_Kpp

0.1f

NcfKi

P_AHRS_NCF_Ki

0.0087f

NcfKpYaw

P_AHRS_NCF_Ki_Yaw

0.01

NcfKiYaw

P_AHRS_NCF_Ki_Yaw

0.01f

GyrDrfitLimit

P_AHRS_GYR_DRFIT_LIMIT

radians(0.5f/60.0f)

参数名称

参数id

默认数值

功能描述

AccConvertX

P_ACC_AXIS_CONVERT_X

X_AXIS

将加速度计X轴数据变换为飞控板坐标系中某一轴的数据

AccConvertY

P_ACC_AXIS_CONVERT_Y

Y_AXIS

将加速度计Y轴数据变换为飞控板坐标系中某一轴的数据

AccConvertZ

P_ACC_AXIS_CONVERT_Z

Z_AXIS

将加速度计Z轴数据变换飞控板坐标系中某一轴的数据

AccSameDirectX

P_ACC_SAME_DIRECTION_X

ORIENT_SAME

同一指向的加速度计坐标轴与飞控板坐标轴方向一致则为ORIENT_SAME,否则为

ORIENT_REVERSE

AccSameDirectY

P_ACC_SAME_DIRECTION_Y

ORIENT_SAME

AccSameDirectZ

P_ACC_SAME_DIRECTION_Z

ORIENT_SAME

MagConvertX

P_MAG_AXIS_CONVERT_X

X_AXIS

磁强及坐标数据变换,与加速度计相同

MagConvertY

P_MAG_AXIS_CONVERT_Y

Y_AXIS

MagConvertZ

P_MAG_AXIS_CONVERT_Z

Z_AXIS

MagSameDirectX

P_MAG_SAME_DIRECTION_X

ORIENT_SAME

磁强计与飞控板坐标系坐标轴指向一致性,同加速度计

MagSameDirectY

P_MAG_SAME_DIRECTION_Y

ORIENT_SAME

MagSameDirectZ

P_MAG_SAME_DIRECTION_Z

ORIENT_SAME

参数名称

参数id

默认数值

功能描述

WpCounts

P_WP_CNTS

自动设置

当前飞控板已设置的航点数量,在通过CSS对航点进行上传后自动修改。

航点0为GCS位置,所以该航点数为实际航点数+1。

AirSpdMin

P_PLANE_AIRSPD_MIN

8.0f

飞行最小空速,BBDB未使用

AirSpdMax

P_PLANE_AIRSPD_MAX

20.0f

飞行最大空速,BBDB未使用

RollLimit

P_ROLL_LIMIT_DEG

30.0f

操作者对飞控给出的最大目标滚转角

可以理解为摇杆角度限制, 即摇杆到最大值时候对的 目标角度(stab mode) / 目标爬升率(FBW mode) / 舵机摆动角度(RC 直通模式) 的最大值。

BBDB未使用

PitchLimitUp

P_PITCH_LIMIT_MAX_DEG

20.0f

操作者对飞控给出的最大目标仰角

BBDB未使用

PitchLimitDwn

P_PITCH_LIMIT_MIN_DEG

25.0f

操作者对飞控给出的最大目标俯角

BBDB未使用

MsgDownRate

P_RATE_MESSAGE_DOWN

0.0f

遥测串口USART1下行速率

BBDB未使用

LogRate

P_RATE_LOG_RECORD

0.0f

记载数据记录速率

BBDB未使用

参数名称

参数id

默认数值

功能描述

SrvPwmOutMax

P_SRV_PWM_OUT_MAX

1950.0f

控制输出PWM最大值

SrvPwmOutMin

P_SRV_PWM_OUT_MIN

950.0f

控制输出PWM最小值

ThrDzBottom

P_THROTTLE_DZ_BOTTOM

0.095f

油门死区(百分值,即9.5%)

参数名称

参数id

默认数值

功能描述

PwmMax_1

P_PWM_MAX_CH1

2100.0f

Pwm输入最大值

PwmMin_1

P_PWM_MIN_CH1

900.0f

Pwm输入最小值

PwmTrim_1

P_PWM_TRIM_CH1

1500.0f

Pwm输入中间值

PwmDz_1

P_PWM_DZ_CH1

25.0f

Pwm输入死区

PwmHigh_1

P_PWM_HIGH_CH1

45.0f

Pwm输入最大值对应的舵机偏转角度

PwmInv_1

P_PWM_INV_CH1

0.0f

Pwm输入反向设置

PwmBiDirect_1

P_PWM_BIDIRECT_CH1

1.0f

Pwm输入对应的是角度变化,还是范围值

备注:

上述参数设置在BBDB中均未使用,用户可根据自己需求进行适当使用

Pwm2-Pwm4 与以上同理

参数名称

参数id

默认数值

功能描述

ReleaseMode

P_RELEASE_MODE

0.0f

发行版标志,BBDB未使用

AspdDiffLpf

P_SENSOR_DIFF_LPF_Hz

0.75f

空速计低通滤波截止频率

BBDB未使用

AccOfstExtX

P_SENSOR_ACC_OFST_EXT_X

0.0f

扩展加速度计x,y,z三轴偏移量。

BBP扩展加速度计为磁强计LSM303上的加速度计,通过I2C接口与MCU相连

在执行加速度计校准后自动设置

AccOfstExtY

P_SENSOR_ACC_OFST_EXT_Y

AccOfstExtZ

P_SENSOR_ACC_OFST_EXT_Z

"AccScaleExtX

P_SENSOR_ACC_SCALE_EXT_X

1.0f

扩展加速度计x,y,z三轴比例系数。

BBP扩展加速度计为磁强计LSM303上的加速度计,通过I2C接口与MCU相连

在执行加速度计校准后自动设置

AccScaleExtY

P_SENSOR_ACC_SCALE_EXT_Y

AccScaleExtZ

P_SENSOR_ACC_SCALE_EXT_Z

AspdCaliRatio

P_ASPD_CALI_RATIO

1.9936f

空速计校正系数,固定翼飞行过程中自动设置

BBDB未使用

MaxWindSpeed

P_MAX_WIND_SPEED

6.0f

固定翼最大允许风速,BBDB未使用

FenceAlt

P_FENCE_ATL

50.0f

飞行高度围栏设置,BBDB未使用

FenceDistant

P_FENCE_DISTANT

100.0f

飞行距离围栏设置,BBDB未使用


 更多内容见CSDN博客专栏:无人机飞控icon-default.png?t=O83Ahttps://blog.csdn.net/ss15/category_9690939.html?spm=1001.2014.3001.5482相关资源:PH47: PH47运动控制代码框架.icon-default.png?t=O83Ahttps://gitee.com/ss15/ph47

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值