ST的FOC库 2.0学习
1 无感矢量闭环控制
1.1 主要程序讲解
1.1.1 MC_type.h
定义了电机控制算法层的所有变量结构体。
Curr_Components 电流值结构体
Volt_Components 电压值结构体
Trig_Components 三角函数结构体
StateObserver_Const 观测器用常数,初始化时被赋值
StateObserver_GainsUpdate 观测器的增益更新
MTPA_Const MTPA常数
PID_Struct_t PID参数结构体
SystStatus_t 系统状态结构体,空闲、初始化、启动、运行、停止、刹车、等待和错误 8 种状态
BusV_t 母线电压状态,有无错误、过压和欠压 3 种状态。
1.1.2 MC_const.h
提供了由所有模块共用的常数。sqrt(3)相关,状态宏定义相关,三角函数数据表。
1.1.3 MC_Control_Param.h
该文件定义了硬件控制参数,包含功率器件参数、电流调节参数、电源板保护阈值、速度循环采样时间、转速PID控制器初始化值、正交电流PID控制器初始化值、根据机械速度线性变化的PID常数。
主要的参数就是PWM频率、死区时间、电流采样频率、PID参数等等。
1.1.4 MC_encoder_param.h
通过编码器获取速度和位置的参数设置,例如编码器线数、底层定时器、速度范围等宏定义参数。
1.1.5 MC_hall_prm.h
霍尔传感器参数设置代码,使用霍尔传感器获取转子位置和速度。
1.1.6 MC_State_Observer_Interface.c
该文件就是实现PMSM B-EMF的状态观测器,从而识别转子的速度和位置。但是很不幸的是,观测器的源码是不开源的,只能通过调用函数得到转子角都和速度信息。
那么假如你有一定的电机控制基础,想要学习不用的电机控制算法,那么这套算法的参考价值就有限了。如果你是要学习使用ST的算法来做项目做产品的话,需要将所有.h和.c文件都了解清楚。
通过网上一些资料说的是使用的反电势的滑动模型观测器。值得学习的是观测器获取的速度来测试可靠性,这个功能也是不开源的,猜测是包含堵转、观测器故障等保护。重点还是转子速度和角度的获取函数
1.2 三段式启动
一般的三段式启动都是 对齐定位开环拖动闭环控制。
1.2.1 对齐
对齐理解起来就简单一些,就是在开机时不知道转子的位置,这个时候在进行PARK变换时,角度设为对齐的角度,得到Id和Iq,这个时候通过电流环PID,输出力矩大小,转子就被控制到设定的对齐角度上。
1.2.2 开环拖动
开环拖动可以理解为,让设置的转子角度变化速率随一定加速度变化。加速可以划分为三类:换相信号频率不变,逐步增大电压使电机加速,称为恒频升压法。保持电压不变,逐渐增高换相信号的频率,使电机逐步加速,称为恒压升频法。在逐步增大电压的同时,增高换相的频率,称为升频升压法。
然后当电机转速增加到一定阈值后,反电势可以很容易检测时,切入闭环控制。
1.2.3 闭环控制
闭环控制就是核心,重点就是观测器,实时观测出转子的角度和速度。