#ifndef __FEEDFORWARDCTRL_H
#define __FEEDFORWARDCTRL_H
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* Includes ------------------------------------------------------------------*/
#include "mc_type.h"
#include "bus_voltage_sensor.h"
#include "speed_pos_fdbk.h"
#include "speed_torq_ctrl.h"
#include "sto_speed_pos_fdbk.h"
typedef struct
{
Volt_Components Vqdff; /**< Feed Forward controller @f$I_{qd}@f$ contribution to @f$V_{qd}@f$ */
Volt_Components VqdPIout; /**< @f$V_{qd}@f$ as output by PID controller */
Volt_Components VqdAvPIout; /**< Averaged @f$V_{qd}@f$ as output by PID controller */
int32_t wConstant_1D; /**< Feed forward default constant for the @f$d@f$ axis */
int32_t wConstant_1Q; /**< Feed forward default constant for the @f$q@f$ axis */
int32_t wConstant_2; /**< Default constant value used by Feed-Forward algorithm */
BusVoltageSensor_Handle_t *pBus_Sensor; /**< Related bus voltage sensor */
PID_Handle_t *pPID_q; /*!< Related PI for @f$I_{q}@f$ regulator */
PID_Handle_t *pPID_d; /*!< Related PI for @f$I_{d}@f$ regulator */
uint16_t hVqdLowPassFilterBW; /**< Configures the @f$V_{qd}@f$
first order software filter bandwidth.
If #FULL_MISRA_COMPLIANCY is defined, this field must be
set to
@f[
\frac{FOC_CurrController
call rate [Hz]}{FilterBandwidth[Hz]}
@f]
Otherwise, it must be set to:
@f[
log_2(\frac{FOC_CurrController
call rate [Hz]}{FilterBandwidth[Hz]})
@f]
*/
int32_t wDefConstant_1D; /**< Feed forward default constant for d axes */
int32_t wDefConstant_1Q; /**< Feed forward default constant for q axes */
int32_t wDefConstant_2; /**< Default constant value used by
Feed-Forward algorithm*/
uint16_t hVqdLowPassFilterBWLOG; /**< hVqdLowPassFilterBW expressed as power of 2.
E.g. if gain divisor is 512 the value
must be 9 because 2^9 = 512 */
} FF_Handle_t;
该代码定义了一个名为 FeedForwardCtrl_Handle_t 的结构,其中包含与前馈控制组件相关的各种变量和指针。该结构用于存储有关前馈控制器的信息并配置其参数。
该代码还包括与前馈控制组件相关的几个功能。这些函数用于初始化前馈控制器,设置其参数,并计算对电压矢量的前馈贡献。前馈控制器用于补偿负载转矩和干扰对电机控制系统的影响。
结构中的pBus_Sensor指针指向相关的总线电压传感器,该传感器用于测量总线电压并将其合并到前馈控制计算中。pPID_q和pPID_d指针分别指向q轴和d轴电流分量的相关PI稳压器。hVqdLowPassFilterBW 变量用于为 Vqd 电压矢量配置软件低通滤波器。
该代码包括几个与前馈控制组件相关的功能。FF_Init函数初始化前馈控制器并设置FF_Handle_t结构中的各种变量。该函数将指向总线电压传感器的指针作为输入,并将指向 Id 和 Iq 电流分量的 PI 稳压器的指针作为输入。
FF_Clear函数重置前馈控制器的内部变量。应在每次电机重新启动之前调用此函数。
FF_VqdffComputation函数通过计算新的 Vqdff 值来实现前馈控制器。然后将该值添加到IMFF_VqdConditioning函数中PI稳压器的输出中。该函数将 Idq 参考组件和指向速度传感器的指针作为输入。
FF_VqdConditioning函数返回输入中的 Vqd 分量以及前馈操作。该函数还将最后一个 Vqd 值存储在前馈控制器的内部变量中。
FF_DataProcess功能低通滤除来自速度PI的Vqd电压。滤波器带宽取决于 hVqdLowPassFilterBW 参数。
FF_InitFOCAdditionalMethods 函数用于初始化处于START_TO_RUN状态的前馈控制器变量。
FF_SetFFConstants函数用于为前馈算法使用的常量设置新值。该函数将常量的新值作为输入。