概述
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博客专栏:无人机飞控
https://blog.csdn.net/ss15/category_9690939.html?spm=1001.2014.3001.5482相关资源:PH47: PH47运动控制代码框架.
https://gitee.com/ss15/ph47

1000

被折叠的 条评论
为什么被折叠?



