
SRM开关磁阻电机CCC控制算法的仿真
直接上干货。CCC(Current Chopping Control)这玩意儿玩电机控制的都熟,说白了就是让相电流
在设定值附近来回震荡,像拿菜刀剁肉馅似的。SRM这货天生非线性,建模能让人掉头发,但仿真时咱得先
给它整个能用的数学模型。
先甩个相电压方程出来镇楼:
```c
// 电机单相模型
float phase_voltage = R * current + dLdθ * current * speed + L * dIdt;
```
这方程右边第三项就是SRM最恶心的位置-速度耦合项,仿真的时候不处理这个动态电感变化,电流
波形能歪到姥姥家。
直接看滞环比较器的核心代码:
```c
// 滞环控制器
void hysteresis_controller(float i_ref, float i_actual, float band) {
static int pwm_state = 0;
if (i_actual < (i_ref - band/2)) {
pwm_state = 1; // 开通开关管
}
else if (i_actual > (i_ref + band/2)) {
pwm_state = 0; // 关断开关管
}
apply_pwm(pwm_state); // 实际要处理死区时间
}
```
这代码里藏了个坑——实际得加时间锁存,不然高频切换时仿真步长稍微大点就直接振荡发散。见过
有人拿10kHz PWM仿得挺欢,结果真机一上就炸MOS管,多半是这逻辑没处理好。
重点看动态电感处理:
```matlab
% 查表法处理L(θ,i)