BMCL_ParaLoadF4.c 4.4 KB
#include "BMCL_ParaLoadF4.h"
#include "BMCL_Config.h"
#include "ParaMge_F4.h"

#include "motor.h"
#include "math_utils.h"
#include "FOC.h"

#include "stdlib.h"
#include "string.h"

void BMCL_PL_PreLoadALL(void)
{
    BMCL_motorSetting_PreLoad();
    BMCL_motorPID_PreLoad();
    BMCL_filter_PreLoad();
}

int BMCL_PL_LoadPID4ParaMge(void)
{
    __PARAMGE_TEMP_GENPID *pidConfig = malloc(sizeof(__PARAMGE_TEMP_GENPID));
    memset(pidConfig, 0x00, sizeof(__PARAMGE_TEMP_GENPID));

    paraMge_GetGenPID(__PARAMGE_INDEX_GENPID_ANGPID, pidConfig,__PARAMGE_INDEX_MOT_P);
    motor_GenPID_Set_Needle(__MOTOR_GENPID_INDEX_ANG,&(pidConfig->config));

    memset(pidConfig, 0x00, sizeof(__PARAMGE_TEMP_GENPID));
    paraMge_GetGenPID(__PARAMGE_INDEX_GENPID_VELPID, pidConfig,__PARAMGE_INDEX_MOT_P);
    motor_GenPID_Set_Needle(__MOTOR_GENPID_INDEX_VEL,&(pidConfig->config));

    free(pidConfig);
}

int BMCL_PL_WritePID2ParaMge(void)
{
    __PARAMGE_TEMP_GENPID *pidConfig = malloc(sizeof(__PARAMGE_TEMP_GENPID));
    memset(pidConfig, 0x00, sizeof(__PARAMGE_TEMP_GENPID));

    motor_GenPID_Get_Needle(__MOTOR_GENPID_INDEX_ANG,&(pidConfig->config));
    paraMge_WriteGenPID(__PARAMGE_INDEX_GENPID_ANGPID,pidConfig,__PARAMGE_INDEX_MOT_P);

    memset(pidConfig, 0x00, sizeof(__PARAMGE_TEMP_GENPID));
    motor_GenPID_Get_Needle(__MOTOR_GENPID_INDEX_VEL,&(pidConfig->config));
    paraMge_WriteGenPID(__PARAMGE_INDEX_GENPID_VELPID,pidConfig,__PARAMGE_INDEX_MOT_P);

    free(pidConfig);
}

int BMCL_PL_LoadFilter4ParaMge(void)
{
    __PARAMGE_TEMP_KPF kfpConfig = {0};
    paraMge_GetKPF(__PARAMGE_INDEX_KPF_VEL, &kfpConfig,__PARAMGE_INDEX_MOT_P);
    motor_velKFP_Set(kfpConfig.config);

    __PARAMGE_TEMP_INTF intfConfig = {0};
    paraMge_GetINIF(__PARAMGE_INDEX_INTF_0, &intfConfig,__PARAMGE_INDEX_MOT_P);
    inter_filter_SetRange((uint16_t)intfConfig.inter_Range);

    memset(&intfConfig, 0x00, sizeof(__PARAMGE_TEMP_INTF));

    paraMge_GetINIF(__PARAMGE_INDEX_INTF_1, &intfConfig,__PARAMGE_INDEX_MOT_P);
    inter_filterC1_SetRange((uint16_t)intfConfig.inter_Range);
}

int BMCL_PL_WriteFilter2ParaMge(void)
{
    __PARAMGE_TEMP_KPF kfpConfig = {0};
    kfpConfig.config = motor_velKFP_Get();
    paraMge_WriteGenKPF(__PARAMGE_INDEX_KPF_VEL, &kfpConfig,__PARAMGE_INDEX_MOT_P);

    __PARAMGE_TEMP_INTF intfConfig = {0};
    intfConfig.inter_Range = inter_filter_GetRange();
    paraMge_WriteINIF(__PARAMGE_INDEX_INTF_0, &intfConfig,__PARAMGE_INDEX_MOT_P);

    memset(&intfConfig, 0x00, sizeof(__PARAMGE_TEMP_INTF));

    intfConfig.inter_Range = inter_filterC1_GetRange();
    paraMge_WriteINIF(__PARAMGE_INDEX_INTF_1, &intfConfig,__PARAMGE_INDEX_MOT_P);
}

int BMCL_PL_LoadMot4ParaMge(void)
{
    __PARAMGE_TEMP_MOT *motConfig = malloc(sizeof(__PARAMGE_TEMP_MOT));
    memset(motConfig, 0x00, sizeof(__PARAMGE_TEMP_MOT));

    paraMge_GetMOT(motConfig,__PARAMGE_INDEX_MOT_P);
    
    motor_Set_ZeroEAngleOffset(motConfig->mge_mot_eleAngleOffset);
    motor_SetPP(motConfig->mot_FOC_PP);
    
    mge_Set_abOffset(motConfig->mge_absOffset);
    mge_Set_direction(motConfig->mge_direction);

    FOC_PARA focConfig = {0};
    focConfig.foc_Udc = motConfig->mot_FOC_Udc;
    focConfig.foc_ULimit = motConfig->mot_FOC_ULimitOnUdc;

    foc_para_Set(focConfig);

    free(motConfig);
}


int BMCL_PL_WriteMot2ParaMge(void)
{
    __PARAMGE_TEMP_MOT *motConfig = malloc(sizeof(__PARAMGE_TEMP_MOT));
    memset(motConfig, 0x00, sizeof(__PARAMGE_TEMP_MOT));

    motConfig->mge_Calibration = BMCL_mot_Calibration;
    
    motConfig->mge_mot_eleAngleOffset = motor_Get_ZeroEAngleOffset();
    motConfig->mot_FOC_PP = motor_GetPP();
    
    motConfig->mge_absOffset = mge_Get_abOffset();
    motConfig->mge_direction = mge_Get_direction();

    FOC_PARA focConfig = {0};
    focConfig = foc_para_Get();

    motConfig->mot_FOC_Udc = focConfig.foc_Udc;
    motConfig->mot_FOC_ULimitOnUdc = focConfig.foc_ULimit;

    paraMge_WriteMOT(motConfig,__PARAMGE_INDEX_MOT_P);

    free(motConfig);

}

int BMCL_PL_LoadAll4ParaMge(void)
{
    // CUT##        加载PID
    BMCL_PL_LoadPID4ParaMge();
    // CUT##        加载滤波器
    BMCL_PL_LoadFilter4ParaMge();
    // CUT##        加载电机
    BMCL_PL_LoadMot4ParaMge();

}

int BMCL_PL_WriteAll2ParaMge(void)
{
    // CUT##        写入PID
    BMCL_PL_WritePID2ParaMge();
    // CUT##        写入滤波器
    BMCL_PL_WriteFilter2ParaMge();
    // CUT##        写入电机
    BMCL_PL_WriteMot2ParaMge();

}