#ifndef _FOC_OBSERVER_H__ #define _FOC_OBSERVER_H__ #include "os/os_types.h" /* 处理编码器和角度观测器的电角度融合,主要是判断编码器是否异常,切换到角度观测器 */ typedef struct { float enc_angle; float enc_speed; float enc_est_angle; //通过encoder速度,估计当前角度 float sensorless_angle; float sensorless_speed; float sensorless_est_angle; //通过smo速度,估计当前角度 bool is_sensorless_enable; bool is_sensorless_running; u16 enc_err_cnt; //融合系数 }foc_observer_t; void foc_observer_init(void); float foc_observer_update(float uAlp, float uBeta, float iAlp, float iBeta); bool foc_observer_diagnostic(float enc_angle, float enc_vel); float foc_observer_speed(void); bool foc_observer_is_encoder(void); void foc_observer_use_sensorless(bool use_smo); void foc_observer_enable_sensorless(bool enable); float foc_observer_sensorless_angle(void); float foc_observer_sensorless_speed(void); float foc_observer_sensorless_working_speed(void); u16 foc_observer_enc_errcount(void); #endif /*_FOC_OBSERVER_H__*/