想象一下,我们要在FOC控制循环中植入一个高精度的“位置雷达”,这个雷达的工作原理就是高频注入法。
1. 定义“雷达”的数据结构
首先,我们需要一个结构体来存储这个“雷达”的所有状态和参数。
/* 高频注入模块控制句柄 */ typedef struct { /* 高频激励信号 */ float Vh_amp; // 注入电压幅值 float Wh_freq; // 注入角频率 (rad/s) float phase_accum; // 相位累加器 float sin_val; // 当前正弦值 float cos_val; // 当前余弦值 /* 信号处理单元 */ BAND_PASS_FILTER bpf_alpha; // α轴带通滤波器 BAND_PASS_FILTER bpf_beta; // β轴带通滤波器 LOW_PASS_FILTER lpf_error; // 误差低通滤波器 /* 位置观测器 (PLL) */ float position_error; // 提取出的位置误差 float estimated_speed; // 估算的转子速度 (rad/s) float estimated_angle; // 估算的转子角度 (rad) float pll_kp; // 锁相环比例增益 float pll_ki; // 锁相环积分增益 float pll_integral; // 锁相环积分项