2026/2/16 8:23:50
网站建设
项目流程
网站微信认证费用多少钱,赣州网站优化制作,电商设计美工,网站推广免费 优帮云该模型在额定以下采用MTPA控制#xff0c;速度环输出给定电流#xff0c;然后代入MTPA得到dq电流#xff0c;电压反馈环输出超前角进行弱磁。
PI控制采用抗积分饱和#xff0c;SVPWM考虑过调制情况#xff0c;附带参考文献电机控制这玩意儿挺有意思的#xff0c;特别是涉…该模型在额定以下采用MTPA控制速度环输出给定电流然后代入MTPA得到dq电流电压反馈环输出超前角进行弱磁。 PI控制采用抗积分饱和SVPWM考虑过调制情况附带参考文献电机控制这玩意儿挺有意思的特别是涉及到MTPA和弱磁这种组合拳。咱们先拆解下这个架构——速度环给电流指令MTPA算dq轴分量电压不够了就启动弱磁。这中间PI控制要防积分饱和SVPWM还得处理过调制全是硬核知识点。先说说MTPA的实现。假设现在有个永磁同步电机当转速低于额定值时系统采用最大转矩电流比控制。代码里通常会存着个二维查表根据当前转矩需求匹配最优的id/iq组合void MTPA_Lookup(float torque_cmd, float* id_ref, float* iq_ref) { int index (int)(torque_cmd / TORQUE_STEP); *id_ref mtpa_table[index][0]; *iq_ref mtpa_table[index][1]; }这表格可不是随便填的得用离线参数辨识或者有限元分析算出来。有个坑是当温度变化导致磁链变化时得做在线参数补偿否则实际运行会偏离最优工作点。速度环PI的输出作为电流给定这事要注意这里有个防积分饱和的骚操作。常规PI容易在限幅时积分项溢出咱们在代码里加个conditional updatevoid PI_Controller_Update(PI_TypeDef* pi, float error) { float integral_temp pi-integral error * pi-Ki; if(!((pi-output pi-out_max error 0) || (pi-output pi-out_min error 0))) { pi-integral integral_temp; } pi-output pi-Kp * error pi-integral; pi-output clamp(pi-output, pi-out_min, pi-out_max); }这个判断条件贼关键——只有输出未达到限幅值时才更新积分项或者虽然达到限幅但误差方向与限幅方向相反时才允许积分回退。实测这个逻辑能有效避免转速超调时积分项持续累积。该模型在额定以下采用MTPA控制速度环输出给定电流然后代入MTPA得到dq电流电压反馈环输出超前角进行弱磁。 PI控制采用抗积分饱和SVPWM考虑过调制情况附带参考文献弱磁控制这块电压环输出的超前角补偿得讲究。当直流母线电压吃紧时要根据电压极限圆调整电流相位def field_weakening(vdc, vd, vq): vmax vdc * 0.57735 # 考虑SVPWM最大线性调制 v_mag math.sqrt(vd**2 vq**2) if v_mag vmax: delta_theta math.atan2(vq, vd) - math.atan2(vq_ref, vd_ref) return delta_theta * 0.5 # 系数需要根据电机参数调整 return 0这里0.57735是SVPWM在常规调制区的最大电压利用率√3/3。实际工程中还要考虑磁链变化率防止角度突变导致转矩抖动。说到SVPWM的过调制处理当调制比超过1时传统的七段式波形会畸变。有个实用方法是调整矢量作用时间void SVPWM_OverModulation(float* t1, float* t2, float* t0) { float Ts *t1 *t2 *t0; if(Ts PWM_PERIOD) { float ratio PWM_PERIOD / Ts; *t1 * ratio; *t2 * ratio; *t0 0; } // 后续处理五段式波形生成... }这个比例缩放在过调制区能保证电压矢量方向不变但幅值被钳位。实际测试时要注意死区时间补偿否则高调制比下波形畸变更严重。参考文献里[1]提出的变参数PI在弱磁区特别好用[2]的过调制算法能让电压利用率提升15%左右。不过具体参数还是得在电机台架上调毕竟理论计算和实际工况总有偏差。玩电机控制就像做菜菜谱算法是基础火候参数整定才是真功夫。