脉振方波高频注入仿真程序,永磁同步电机高频方波注入。 1,仿真为离散模型,开关频率5k,注入频率取开关频率的一半是2.5k。 2,程序在1.5s加载,在4.1s不再注入方波,从波形可以看到低速区可以带载启动,可以带载; 3,程序加了状态机,电流环以及观测器运行在5k频率也就是200us周期下,转速环运行在2ms周期,模拟处理器真实应用工况,容易移植; 4,环路参数全部是通过电机参数计算而来,也做了限幅,也可以自己调整下环路参数; 5,位置估计通过PLL锁相环实现; 6,程序采用转子预定位-高频注入启动-反电势观测器的三步走完整流程; 7,带仿真模型对应的算法说明,观测器文档,参考文献,帮助理解模型,看最后一个图。 8,注意程序方波电压注入,在旋转坐标系dq轴

最近在调永磁同步电机的脉振方波高频注入方案,顺手撸了个仿真模型,正好聊聊实现细节。老司机都知道,这玩意儿对低速带载启动特别有效,但具体怎么在工程上落地还是有不少门道。

先说注入策略的核心配置。开关频率5kHz的情况下,直接把方波频率干到2.5kHz(图1),这可不是随便拍脑袋定的。高频信号在dq轴的d轴方向叠加,注意这里用的是旋转坐标系下的注入方式,不像静止坐标系需要处理复杂的坐标变换。代码里对应的调制部分长这样:

if (t < 4.1)  //注入时段判断
    Vdh = Vh * square(2*pi*Fh*t);  //d轴脉振方波
else
    Vdh = 0;  //停止注入
end

这里用方波而不是正弦波主要是考虑到实现简单,对处理器运算量要求低。但要注意注入电压幅值别太猛,实测超过50%额定电压就容易导致电流环震荡。

状态机设计是程序的灵魂(图2)。咱们把整个流程拆成三阶段:

  1. 转子预定位(0-0.5s):强制对齐d轴
  2. 高频注入阶段(0.5-4.1s):带载启动核心阶段
  3. 反电势观测器切换(4.1s后):高速区无缝衔接

对应的状态切换代码用了个switch-case结构,关键判断逻辑看转速阈值:

switch(StateMachine){
    case PRE_ALIGN:
        if(t > 0.5) StateMachine = HF_INJECTION;
        break;
    case HF_INJECTION:
        if(rpm > 200) StateMachine = EMF_OBSERVER;
        break;
    ...
}

电流环参数可不是随便调的,得按电机参数算。举个栗子,q轴电流环比例系数Kp=Ls*ω_bandwidth,Ls是定子电感,带宽取2000rad/s左右。代码里这样实现:

Ls = 0.0085  # 8.5mH
Rs = 0.32    # 0.32Ω
Kp_iq = Ls * 2000  # 17左右
Ki_iq = Rs * 2000   # 640左右

重点说说锁相环的实现(图3)。误差信号来自估计的扩展反电势,经过两个PI环节分别处理角度和转速。这里有个坑:PLL带宽要设为高频信号频率的1/10左右,否则容易震荡。代码片段:

// PLL核心算法
delta_theta = atan2(epsilon_q, epsilon_d);  //位置误差
omega_pll += Kp_pll * delta_theta + Ki_pll * delta_theta * Ts;
theta_pll += omega_pll * Ts;

仿真波形里(图4)明显能看到1.5s突加负载时转速只是轻微波动,4.1s停止注入后观测器平滑接手。这说明参数整定到位了,高频注入和反电势观测的过渡区处理得当。

脉振方波高频注入仿真程序,永磁同步电机高频方波注入。 1,仿真为离散模型,开关频率5k,注入频率取开关频率的一半是2.5k。 2,程序在1.5s加载,在4.1s不再注入方波,从波形可以看到低速区可以带载启动,可以带载; 3,程序加了状态机,电流环以及观测器运行在5k频率也就是200us周期下,转速环运行在2ms周期,模拟处理器真实应用工况,容易移植; 4,环路参数全部是通过电机参数计算而来,也做了限幅,也可以自己调整下环路参数; 5,位置估计通过PLL锁相环实现; 6,程序采用转子预定位-高频注入启动-反电势观测器的三步走完整流程; 7,带仿真模型对应的算法说明,观测器文档,参考文献,帮助理解模型,看最后一个图。 8,注意程序方波电压注入,在旋转坐标系dq轴

移植到真实控制器时要注意时序配合。本模型把电流环和观测器放在200us中断,转速环扔到1ms任务,这样既能保证动态响应,又给ADC采样留足时间。实测时发现,如果所有环路都跑5kHz,STM32F4的利用率直接飙到70%,分频处理后就降到35%左右。

最后扔个调试小技巧:当发现高频响应信号中混入明显谐波时,不妨检查下逆变器死区补偿是否到位。曾经有个坑爹的BUG,死区时间设反了导致注入信号严重畸变,折腾了一整天...

模型文档和参考文献已经打包,需要的兄弟在评论区自取。下期可能聊聊无滤波器的改进方案,听说有人把信噪比提高了6dB?

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐