| 1234567891011121314151617181920212223242526272829303132333435 |
- #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;
- float real_est_diff;
- float real_est_ration;
- 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);
- float foc_observer_sensorless_diff(void);
- float foc_observer_sensorless_ration(void);
- #endif /*_FOC_OBSERVER_H__*/
|