基于永磁同步电机(PMSM)的自抗扰控制(ADRC)与改进的神经网络自抗扰控制的simulink仿真模型,可直接进行对比仿真。 自抗扰偏向于无模型控制,控制对象更换后只需要简单调试即可使用。 附带有理论参考资料,可提供指导。 采用三闭环控制。 经过改进效果非常好。

在电机控制领域,永磁同步电机(PMSM)因其高效、节能等诸多优点,应用愈发广泛。而如何实现对PMSM精准且鲁棒的控制,一直是研究的热点。今天就来聊聊基于PMSM的自抗扰控制(ADRC)以及改进的神经网络自抗扰控制,并通过Simulink仿真模型来一探究竟。

自抗扰控制(ADRC):无模型控制的魅力

自抗扰控制是一种偏向于无模型的控制策略,这意味着它摆脱了传统控制方法对精确数学模型的依赖。在实际应用中,控制对象往往会因为各种因素发生变化,要是采用传统基于精确模型的控制方法,面对对象更换可能需要重新推导模型,耗时又费力。但ADRC就不一样,控制对象更换后,仅需简单调试即可继续使用。

以ADRC中的扩张状态观测器(ESO)为例,在Matlab代码中可能会有类似这样的实现:

% 假设一些参数
beta01 = 100;
beta02 = 200;
beta03 = 300;
% 系统状态
x1 = 0;
x2 = 0;
x3 = 0;
% 输入和输出
y = 0;
u = 0;
% 时间步长
dt = 0.001;

for k = 1:1000
    % 计算ESO估计值
    e = x1 - y;
    x1 = x1 + dt * (x2 - beta01 * e);
    x2 = x2 + dt * (x3 - beta02 * e);
    x3 = x3 + dt * (-beta03 * e);
    % 这里的x3就是对系统总扰动的估计,基于这个估计来调整控制量u
    % 实际中控制量u的计算会更复杂,这里仅示意
    u = -x1 - x2 - x3;
    % 模拟系统输出更新
    y = 2 * u + 0.5 * sin(2 * pi * 0.1 * k * dt); % 简单模拟系统动态
end

在这段代码里,通过设置不同的beta参数来调整ESO对系统状态和扰动的观测能力。beta01、beta02、beta03 分别对应不同状态变量的观测增益。通过不断地根据实际输出与估计状态的误差e,对系统状态x1、x2、x3进行更新,进而估计出系统的总扰动x3,为后续控制量的调整提供依据。

改进的神经网络自抗扰控制:优势在哪?

为了进一步提升控制效果,对传统ADRC进行改进,引入神经网络是个不错的思路。神经网络强大的非线性拟合能力,可以更好地处理PMSM控制过程中的复杂非线性问题。通过训练神经网络,可以使其自适应地学习系统的动态特性,从而更精准地估计扰动和优化控制策略。

在Simulink模型搭建中,我们可以把神经网络模块嵌入到自抗扰控制结构里。例如,将神经网络作为扰动估计的补充环节,与原有的ESO协同工作。代码实现上,假设使用Matlab的Neural Network Toolbox来构建一个简单的前馈神经网络:

% 创建一个前馈神经网络
net = feedforwardnet([10]);
% 设置训练参数
net.trainParam.epochs = 100;
net.trainParam.goal = 0.01;
% 准备训练数据,这里假设已经有输入数据inputData和目标数据targetData
[net,tr] = train(net,inputData,targetData);
% 使用训练好的神经网络进行扰动估计预测
estimatedDisturbance = net(inputData);

这里创建了一个具有10个神经元的隐藏层的前馈神经网络。设置训练的最大迭代次数为100次,目标误差为0.01。通过准备好的输入和目标数据对网络进行训练,训练完成后,就可以用训练好的网络对扰动进行估计预测,得到estimatedDisturbance。这个估计结果可以和ESO估计的扰动结合起来,进一步优化控制效果。

三闭环控制:稳固的架构

无论是ADRC还是改进的神经网络自抗扰控制,这里都采用了三闭环控制结构。一般来说,三闭环分别为电流环、速度环和位置环。电流环主要是对电机绕组电流进行快速跟踪控制,保证电机的转矩输出稳定。速度环基于电流环的输出,调节电机的转速,使其能够快速跟踪给定转速。位置环则是在速度环基础上,实现对电机转子位置的精确控制。

在Simulink中搭建三闭环结构时,每个闭环都有对应的PI控制器。例如电流环的PI控制器代码可能如下:

% 电流环PI参数
kp_i = 0.5;
ki_i = 10;
% 电流误差和积分项
error_i = 0;
integral_i = 0;
% 假设给定电流和反馈电流
referenceCurrent = 1;
feedbackCurrent = 0;

for k = 1:1000
    error_i = referenceCurrent - feedbackCurrent;
    integral_i = integral_i + error_i * dt;
    controlSignal_i = kp_i * error_i + ki_i * integral_i;
    % controlSignal_i就是电流环输出,用于控制电机电流
    % 这里更新反馈电流,假设电机模型会根据控制信号更新电流
    feedbackCurrent = feedbackCurrent + controlSignal_i * dt;
end

在这段代码里,通过设置比例系数kpi和积分系数kii,对电流误差进行比例和积分运算,得到控制信号controlSignal_i,以调节电机电流跟踪给定电流。

仿真对比:效果如何?

通过搭建的Simulink仿真模型,可以直接对ADRC和改进的神经网络自抗扰控制进行对比仿真。从仿真结果来看,经过改进的神经网络自抗扰控制效果非常好。在面对外部干扰和电机参数变化时,改进后的控制策略能够更快地使电机恢复稳定运行,并且速度和位置跟踪精度更高。例如在电机突加负载的情况下,改进的神经网络自抗扰控制下的电机转速波动更小,能够更快地回到给定转速,这得益于神经网络对复杂扰动的精准估计和自适应调整能力。

同时,我们附带有理论参考资料,这些资料可以为大家深入理解和进一步优化控制策略提供指导。无论是初次接触PMSM控制,还是想要进一步探索高级控制策略的朋友,都能从这些理论资料和仿真模型中获取到有价值的信息。希望大家可以基于这些内容,在PMSM控制领域有更多的发现和创新。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐