永磁同步电机伺服控制仿真三环PI参数自整定 Matlab仿真模型 1.模型简介 模型为永磁同步电机伺服控制仿真,采用 Matlab R2018a Simulink搭建。 模型内主要包含DC直流电压源、三相逆变器、永磁同步电机、采样模块、SVPWM、Clark、Park、Ipark、位置环、速度环、电流环等模块,其中,SVPWM、Clark、Park、Ipark模块采用Matlab funtion编写,其与C语言编程较为接近,容易进行实物移植。 模型均采用离散化仿真,其效果更接近实际数字控制系统。 2.算法简介 伺服控制由位置环、速度环、电流环三环结构构成,其中,电流环采用PI控制,并具有电流环解耦功能;转速环采用抗积分饱和PI控制;位置环采用P+前馈的复合控制,能够更好地跟踪指令信号。 本仿真中最大的亮点是三环PI参数自整定,只需输入正确的电机参数(电阻、电感、转动惯量等参数),无需手动调节PI参数,能够节省调试时间。 3.仿真效果 位置响应波形,如下图所示。 转速响应波形,如下图所示。 转矩电流响应波形,如下图所示。 4. 可提供模型内相关算法的参考文献,避免大量阅读文献浪费时间

最近在研究永磁同步电机伺服控制仿真这块,发现了一个超有意思的Matlab模型,今天就来跟大家唠唠。

一、模型搭建

这个模型是基于Matlab R2018a的Simulink搭建的,就像是搭乐高一样,把各种模块拼起来实现特定功能。里面有DC直流电压源、三相逆变器、永磁同步电机这些基础模块,还有采样模块、SVPWM、Clark、Park、Ipark、位置环、速度环、电流环等等。

像SVPWM、Clark、Park、Ipark这些模块是用Matlab function编写的,为啥用这个写呢?因为它和C语言编程很接近呀,后续要是想把这个仿真模型应用到实际硬件上,移植起来那叫一个方便。

而且整个模型采用离散化仿真,这就好比把时间切成一小段一小段来模拟,这样得到的效果就跟实际的数字控制系统更贴近了。

永磁同步电机伺服控制仿真三环PI参数自整定 Matlab仿真模型 1.模型简介 模型为永磁同步电机伺服控制仿真,采用 Matlab R2018a Simulink搭建。 模型内主要包含DC直流电压源、三相逆变器、永磁同步电机、采样模块、SVPWM、Clark、Park、Ipark、位置环、速度环、电流环等模块,其中,SVPWM、Clark、Park、Ipark模块采用Matlab funtion编写,其与C语言编程较为接近,容易进行实物移植。 模型均采用离散化仿真,其效果更接近实际数字控制系统。 2.算法简介 伺服控制由位置环、速度环、电流环三环结构构成,其中,电流环采用PI控制,并具有电流环解耦功能;转速环采用抗积分饱和PI控制;位置环采用P+前馈的复合控制,能够更好地跟踪指令信号。 本仿真中最大的亮点是三环PI参数自整定,只需输入正确的电机参数(电阻、电感、转动惯量等参数),无需手动调节PI参数,能够节省调试时间。 3.仿真效果 位置响应波形,如下图所示。 转速响应波形,如下图所示。 转矩电流响应波形,如下图所示。 4. 可提供模型内相关算法的参考文献,避免大量阅读文献浪费时间

比如说,SVPWM模块代码大概像这样(以下为示意代码,非完整精确代码):

function svpwm_output = svpwm_function(u_d, u_q, Vdc)
    % 根据输入的d轴和q轴电压u_d, u_q以及直流母线电压Vdc计算SVPWM输出
    % 这里面涉及复杂的坐标变换和扇区判断
    % 例如计算参考电压矢量的幅值和角度
    mag = sqrt(u_d^2 + u_q^2);
    theta = atan2(u_q, u_d);
    % 然后根据这些值判断处于哪个扇区,并计算相应的开关时间
    % 省略具体计算过程
    svpwm_output = [t1, t2, t3]; % 最终输出三个开关时间
end

在这段代码里,通过输入的d轴和q轴电压以及直流母线电压,经过一系列计算得出SVPWM的输出,也就是三个开关时间,这些开关时间决定了逆变器的工作状态,进而控制永磁同步电机。

二、算法解析

伺服控制采用的是经典的三环结构,分别是位置环、速度环和电流环。

电流环

电流环采用PI控制,而且还有解耦功能。简单来说,就是让电机的d轴和q轴电流相互不干扰,各自完成自己的控制任务。代码实现上,PI控制就是根据当前电流与目标电流的差值,通过比例和积分环节来调整输出,让电流尽快稳定在目标值。

function i_out = current_pi_control(i_ref, i_act, Kp, Ki, dt)
    error = i_ref - i_act;
    integral = integral + error * dt;
    i_out = Kp * error + Ki * integral;
end

这里iref是目标电流,iact是实际电流,KpKi分别是比例和积分系数,dt是采样时间间隔。通过不断计算误差并进行比例和积分运算,输出调整后的电流值。

转速环

转速环用的是抗积分饱和PI控制。为啥要用抗积分饱和呢?因为在实际控制中,如果电机长时间处于某个极限状态,PI控制的积分项可能会积累得特别大,导致控制输出异常,抗积分饱和就能避免这种情况。

function omega_out = speed_pi_control(omega_ref, omega_act, Kp, Ki, dt, max_limit, min_limit)
    error = omega_ref - omega_act;
    integral = integral + error * dt;
    % 抗积分饱和处理
    if integral > max_limit
        integral = max_limit;
    elseif integral < min_limit
        integral = min_limit;
    end
    omega_out = Kp * error + Ki * integral;
end

这里除了常规的PI计算,还加入了对积分项的限制,确保它不会超出设定的最大最小值。

位置环

位置环采用P + 前馈的复合控制,这种控制方式可以更好地跟踪指令信号。前馈部分能根据输入的指令提前做出响应,和比例控制结合起来,让电机的位置控制更精准。

最厉害的是这个模型的三环PI参数自整定功能。以前调PI参数,那可得费老劲了,得一点一点试。但在这个仿真里,只要把电机的参数,像电阻、电感、转动惯量这些输对了,PI参数就自己调整好了,能节省超多调试时间。

三、仿真效果展示

从位置响应波形、转速响应波形和转矩电流响应波形可以看出,这个模型的控制效果还是很不错的。位置能快速准确地跟踪指令,转速也能稳定在设定值附近,转矩电流也在合理范围内波动。可惜这里没办法直接展示图片,但大家自己运行模型就能看到啦。

四、参考文献支持

这个模型还提供了相关算法的参考文献,不用自己再大海捞针似的去找文献了,能节省不少阅读文献的时间,对于想要深入研究背后算法原理的小伙伴来说,简直太贴心了。

总之,这个永磁同步电机伺服控制仿真的三环PI参数自整定Matlab模型,无论是在模型搭建的巧妙性,还是算法的实用性上,都非常值得学习和研究。感兴趣的小伙伴不妨自己动手试试~

Logo

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

更多推荐