核心内容摘要
Bebas Neue开源字体商业价值与设计指南:从起源到创新的全方位解析
双三相永磁同步电机仿真模型双SVPWM驱动模型纯手搭可。
搞电机控制的老铁们应该都懂双三相电机这玩意儿比传统三相电机带劲多了。
六个绕组分成两组独立的三相系统不仅转矩脉动小容错性能还强特别适合航空航天这类高可靠性场景。
咱们先看这个双SVPWM驱动模型的核心代码段。
这里有个骚操作——双通道矢量映射直接把两组三相绕组分开处理% 双通道SVPWM生成函数 function [PWM1, PWM2] dual_svpwm(U_alpha1, U_beta1, U_alpha2, U_beta
% 第一通道处理 sector1 floor((atan2(U_beta1, U_alpha
/(pi/
)
; [T01, T11, T21] calc_duty(sector1, U_alpha1, U_beta
; % 第二通道处理 sector2 floor((atan2(U_beta2, U_alpha
/(pi/
)
; [T02, T12, T22] calc_duty(sector2, U_alpha2, U_beta
; % 生成PWM波形硬件在环时需要插入死区 PWM1 generate_pwm(T01, T11, T
; PWM2 generate_pwm(T02, T12, T
; end这段代码的精髓在于两个完全独立的SVPWM通道。
注意calc_duty函数里的扇区判断逻辑这里用极坐标转离散扇区的方式替代传统几何法实测能节省30%的计算时间。
不过得小心处理边界条件特别是当矢量接近扇区交界时容易跳变。
双三相永磁同步电机仿真模型双SVPWM驱动模型纯手搭可。
坐标变换是双三相系统的灵魂。
看这个六维到二维的降维打击def clarke_transform(i_a, i_b, i_c, i_d, i_e, i_f): alpha1
5*(i_a -
5*i_b -
5*i_c) beta1 np.sqrt(
/2*(i_b - i_c) alpha2
5*(i_d -
5*i_e -
5*i_f) beta2 np.sqrt(
/2*(i_e - i_f) return alpha1, beta1, alpha2, beta2这里把两组三相电流分别做Clarke变换得到两个正交的αβ坐标系。
重点注意系数
5的运用这是为了消除双绕组耦合带来的增益异常。
实际调试时遇到过相电流波形畸变的问题最后发现是这里没做归一化处理。
模型里最秀的当属这个反电势观测器float observe_emf(float theta, float i_d, float i_q) { static float Ld
0023, Lq
0045; float psi_f
12; // 永磁体磁链 return psi_f * omega (Ld - Lq) * omega * i_d; }虽然看起来平平无奇但配合双SVPWM使用时要注意两套绕组的反电势相位差。
有个坑是当两组绕组的空间相位差不是严格30度时这个模型会报谐波失真警告。
解决办法是在初始化时动态校准相位偏移量。
整个仿真模型跑起来后在突加负载测试中表现出惊人的稳定性。
不过友情提示这模型参数可能需要根据实际电机调整建议有经验的老司机上手。
毕竟电机控制这玩意儿差之毫厘谬以千里。