ParaMge_Common.h 4.0 KB
#ifndef __PARAMGE_COMMON_H__
#define __PARAMGE_COMMON_H__

#include "stdint.h"
#include "MGE_Hal.h"

#include "PID_Gen.h"
#include "math_utils.h"

//================== Storage Status ===================


// 储存状态 - 1没有储存 2储存损坏 3储存有效
// 1和2可以看成一种
//     当设备第一次使用时,应为 1没有储存
//     第一次保存后,储存状态应从 没有储存->储存有效
// 当状态未1或2时,所有读取的数据应全为0,同时返回错误信息

typedef enum
{
    __PARAMGE_DEF_STORAGE_STA_NONE = 1, //没有储存
    __PARAMGE_DEF_STORAGE1_STA_BROKEN,   //储存1损坏
    __PARAMGE_DEF_STORAGE2_STA_BROKEN,   //储存2损坏
    __PARAMGE_DEF_STORAGE_STA_VAILD,    //储存有效
} __PARAMGE_DEF_STORAGE_STA;

typedef enum
{
    __PARAMGE_DEF_SAVE_STA_FAIL = 1, //保存失败
    __PARAMGE_DEF_SAVE_STA_SAVING,   //保存中
    __PARAMGE_DEF_SAVE_STA_SUCCEED,  //保存成功
} __PARAMGE_DEF_SAVE_STA;



//=======================GenPID========================


typedef enum
{
    __PARAMGE_INDEX_GENPID_ANGPID = 0,    // GenPID 参数索引 - 角度PID
    __PARAMGE_INDEX_GENPID_VELPID,          // GenPID 参数索引 - 速度PID
} __PARAMGE_INDEX_GENPID;

/// @brief 通用PID 内容
typedef struct
{
    GenPID_CONFIG config;
} __PARAMGE_TEMP_GENPID;



//======================= KPF =========================


typedef enum
{
    __PARAMGE_INDEX_KPF_VEL = 0, // 电机速度卡尔曼滤波
    __PARAMGE_INDEX_KPF_ANG,     // 电机角度卡尔曼滤波
    __PARAMGE_INDEX_KPF_SSMQ,    // ?
    __PARAMGE_INDEX_KPF_PMOTANG, // P轴电机角度卡尔曼滤波
} __PARAMGE_INDEX_KPF;

typedef struct
{
    KFP_CONFIG config;
} __PARAMGE_TEMP_KPF;



//======================= INIF =========================


typedef enum
{
    __PARAMGE_INDEX_INTF_0 = 0, // 窗口滤波参数组0
    __PARAMGE_INDEX_INTF_1,     // 窗口滤波参数组1
} __PARAMGE_INDEX_INIF;

typedef struct
{
    uint32_t inter_Range;   // 窗口滤波参数
} __PARAMGE_TEMP_INTF;



//======================= MGE/MOT =========================


typedef enum
{
    __PARAMGE_DEF_MGE_CALI_STA_BAD = 0xA0,  // 磁编码器校准状态 - 未校准
    __PARAMGE_DEF_MGE_CALI_STA_GOOD = 0xAA, // 磁编码器校准状态 - 已校准
} __PARAMGE_DEF_MGE_CALI_STA;

//WARN:     电机校准状态目前使用BMCL中的 NONE,S1,S2的配置。有空再改
typedef enum
{
    __PARAMGE_DEF_MOT_CALI_STA_CALIBRATING = 0x01,  // 电机校准状态 - 校准中
    __PARAMGE_DEF_MOT_CALI_STA_ODD = 0x02, // 电机校准状态 - 校准异常
    __PARAMGE_DEF_MOT_CALI_STA_GOOD = 0x03, // 电机校准状态 - 校准成功
    __PARAMGE_DEF_MOT_CALI_STA_BAD = 0x04, // 电机校准状态 - 校准失败
} __PARAMGE_DEF_MOT_CALI_STA;

typedef enum
{
    __PARAMGE_INDEX_MOT_P = 0x01, // 电机轴参数索引 - pitch轴
    __PARAMGE_INDEX_MOT_R = 0x02, // 电机轴参数索引 - roll轴
    __PARAMGE_INDEX_MOT_Y = 0x03, // 电机轴参数索引 - yaw轴
} __PARAMGE_INDEX_MOT;


typedef struct
{
    // MGE Part
    __PARAMGE_DEF_MGE_CALI_STA mge_Calibration;     // mge 校准状态
    int8_t mge_direction;         // mge 方向
    float mge_absOffset;          // mge 绝对偏移
    float mge_mot_eleAngleOffset; // mge 电角度零电位偏移

    // Motor Part
    __PARAMGE_DEF_MOT_CALI_STA mot_Calibration;  // Motor 校准状态
    float mot_FOC_Udc;         // Motor 总线电压
    float mot_FOC_ULimitOnUdc; // Motor 总线限制电压
    uint32_t mot_FOC_PP;       // Motor 极对数

    float mot_LimitAngle_S;     // Motor 限位小端角度
    float mot_LimitAngle_B;     // Motor 限位大端角度

    float mot_CenterAngle;  // Motor 电机中心角度

} __PARAMGE_TEMP_MOT;




// 通用电机结构体
typedef struct
{
    __PARAMGE_TEMP_GENPID angle_PID;
    __PARAMGE_TEMP_GENPID Vel_PID;
    
    __PARAMGE_TEMP_MOT motDevSetting;

    __PARAMGE_TEMP_INTF interFilter;
    __PARAMGE_TEMP_INTF interFilter1;

    __PARAMGE_TEMP_KPF kfp_velP;
    __PARAMGE_TEMP_KPF kfp_angP;
    __PARAMGE_TEMP_KPF kfp_ssmq;
    __PARAMGE_TEMP_KPF kfp_motAngP;
} _PARAMGE_CONFIG_MOTCOM;



#endif