m基于simulink的PID控制器,模糊PID控制器以及MPC控制器性能对比仿真

简介: m基于simulink的PID控制器,模糊PID控制器以及MPC控制器性能对比仿真

1.算法仿真效果
matlab2022a仿真结果如下:

61d95c407183919d19ff00d205401223_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

   从图仿真结果可知,PID控制器,其超调较大,且控制器进入收敛状态时间也最长,。对于模糊PID控制器,其超调小于PID控制器,且收敛速度也较快,因此其性能优于传统的PID控制器。对于MPC控制器,其超调最小,控制器进入稳定状态速度也最快,因此其控制性能最优,但是MPC的上升时间较慢,大约需要0.1s左右完成。但在实际情况下,对控制对象起到影响的主要是控制器的超调和收敛稳定时间两个因素。因此,MPC控制器的控制效果最优,其次为模糊PID控制器,最次是PID控制器。

d6ff6f403846cc46b5e03a8d5899e8b1_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
46b494ff80f0be3afaac2d12ce0a0958_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
f0cb7ef9ee07a919ee2926e56150e162_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要
根据PID控制器的基本原理,PID控制器的结构如下图所示:

87cec43acd03a0730ab80a72f5399542_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

  PID控制器的比例调整参数,积分调整参数以及微分调整参数对系统的控制效果有着十分明显的影响。随着微分调整参数的变小,PD控制器的阶跃响应有较大的超调量,但是系统的控制响应速度较慢。反之,随着微分调整参数不断变大,系统超调减小,系统的控制响应速度较快。在本课题中,控制器的参数设置为Kp= 1000000,Ki= 10000,Kd=15000。

  模糊PID控制器的基本结构如下所示:

f1fa75258dcd978409c67315bf5c286d_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

    在实现模糊PID控制器之前,我们首先需要设计模糊规则表,在本课题中,我们选取七个语言等级作为模糊控制器的语言等级,即负大(NB)、负中(NM)、负小(NS)、零(ZO)、正小(PS)、正中(PM)、正大(PB)。然后模糊控制器的输入为E和Ec,输出为PID控制器的、、的值的调整值。我们这里采用的隶属函数为系统中的NB和PB采用正态型分布;NM、NS、Z0、Ps、PM则采用三角形分布。 完成隶属函数构建之后,开始设计模糊规则,模糊规则设置原则为:当输入误差E和Ec较大的时候,则应该快速消除误差,当输入误差E和Ec较小的时候,这主要控制目的是防止超调过大。因此我们构建如下的模糊规则表:

4bc97fe5b450ae15657cc5a39935d130_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

模糊fis规则文件如下:

Name='files'
Type='mamdani'
Version=2.0
NumInputs=2
NumOutputs=3
NumRules=49
AndMethod='min'
OrMethod='max'
ImpMethod='min'
AggMethod='max'
DefuzzMethod='centroid'

[Input1]
Name='E'
Range=[-6 6]
NumMFs=7
MF1='NB':'gaussmf',[0.9716 -5.856]
MF2='NM':'trimf',[-6 -4 -2]
MF3='NS':'trimf',[-4 -2 0]
MF4='ZO':'trimf',[-2 0 2]
MF5='PS':'trimf',[0 2 4]
MF6='PM':'trimf',[2 4 6]
MF7='PB':'gaussmf',[0.8494 6]

[Input2]
Name='Ec'
Range=[-3 3]
NumMFs=7
MF1='NB':'gaussmf',[0.4247 -3]
MF2='NM':'trimf',[-3 -2 -1]
MF3='NS':'trimf',[-2 -1 0]
MF4='ZO':'trimf',[-1 0 1]
MF5='PS':'trimf',[0 1 2]
MF6='PM':'trimf',[1 2 3]
MF7='PB':'gaussmf',[0.4247 3]

[Output1]
Name='Kp'
Range=[0 1]
NumMFs=7
MF1='NB':'gaussmf',[0.07079 0]
MF2='NM':'trimf',[0 0.1667 0.3333]
MF3='NS':'trimf',[0.1667 0.3333 0.5]
MF4='ZO':'trimf',[0.3333 0.5 0.6667]
MF5='PS':'trimf',[0.5 0.6667 0.8333]
MF6='PM':'trimf',[0.6667 0.8333 1]
MF7='PB':'gaussmf',[0.07079 1]

[Output2]
Name='Ki'
Range=[0 1]
NumMFs=7
MF1='NB':'gaussmf',[0.07078 0]
MF2='NM':'trimf',[0 0.1667 0.3333]
MF3='NS':'trimf',[0.1667 0.3333 0.5]
MF4='ZO':'trimf',[0.3333 0.5 0.6667]
MF5='PS':'trimf',[0.5 0.6667 0.8333]
MF6='PM':'trimf',[0.6667 0.8333 1]
MF7='PB':'gaussmf',[0.07078 1]

[Output3]
Name='Kd'
Range=[0 1]
NumMFs=7
MF1='NB':'gaussmf',[0.07078 0]
MF2='NM':'trimf',[0 0.1667 0.3333]
MF3='NS':'trimf',[0.1667 0.3333 0.5]
MF4='ZO':'trimf',[0.3333 0.5 0.6667]
MF5='PS':'trimf',[0.5 0.6667 0.8333]
MF6='PM':'trimf',[0.6667 0.8333 1]
MF7='PB':'gaussmf',[0.07078 1]

[Rules]
1 1, 7 1 5 (1) : 1
1 2, 7 1 3 (1) : 1
1 3, 6 2 1 (1) : 1
1 4, 6 2 1 (1) : 1
1 5, 5 3 1 (1) : 1
1 6, 4 4 2 (1) : 1
1 7, 4 4 5 (1) : 1
2 1, 7 1 5 (1) : 1
2 2, 7 1 3 (1) : 1
2 3, 6 2 1 (1) : 1
2 4, 5 3 2 (1) : 1
2 5, 5 3 2 (1) : 1
2 6, 4 4 3 (1) : 1
2 7, 3 4 4 (1) : 1
3 1, 6 1 4 (1) : 1
3 2, 6 2 3 (1) : 1
3 3, 6 3 2 (1) : 1
3 4, 5 3 2 (1) : 1
3 5, 4 4 3 (1) : 1
3 6, 3 5 3 (1) : 1
3 7, 3 5 4 (1) : 1
4 1, 6 2 4 (1) : 1
4 2, 6 2 3 (1) : 1
4 3, 5 3 3 (1) : 1
4 4, 4 4 3 (1) : 1
4 5, 3 5 3 (1) : 1
4 6, 2 6 3 (1) : 1
4 7, 2 6 4 (1) : 1
5 1, 5 2 4 (1) : 1
5 2, 5 3 4 (1) : 1
5 3, 4 4 4 (1) : 1
5 4, 3 5 4 (1) : 1
5 5, 3 5 4 (1) : 1
5 6, 2 6 4 (1) : 1
5 7, 2 7 4 (1) : 1
6 1, 5 4 7 (1) : 1
6 2, 4 4 3 (1) : 1
6 3, 3 5 5 (1) : 1
6 4, 2 6 5 (1) : 1
6 5, 2 6 5 (1) : 1
6 6, 2 7 5 (1) : 1
6 7, 1 7 7 (1) : 1
7 1, 4 4 7 (1) : 1
7 2, 4 4 6 (1) : 1
7 3, 2 5 6 (1) : 1
7 4, 2 6 6 (1) : 1
7 5, 2 6 5 (1) : 1
7 6, 1 7 5 (1) : 1
7 7, 1 7 7 (1) : 1

根据MPC控制器的基本原理,MPC控制器的基本结构如下图所示:

c291e8a7bd71445598f01537d7a4f85e_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

    MPC控制器结构较为复杂,这里我们采用SIMULINK自带的MPC工具箱来实现该结构,我们构建如下的MPC仿真模型: 

   这里,空间状态变量矩阵A,B,C,D为6*6维度的矩阵。本文通过如下方法,将SIMULINK建立的3-PUU仿真模型转换为空间状态方程。分别通过一个阶跃响应输入到公式3的空间状态方程中和3-PUU并联机构SIMULINK仿真模型,通过对比空间状态方程输出和3-PUU并联机构SIMULINK仿真模型输出是否接近,来计算对应的空间状态变量矩阵A,B,C,D,在本课题中,我们通过测试得到空间状态变量矩阵A,B,C,D分别为:

383dbcde2c5f71b8ce6dd4d98c269df1_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

3.MATLAB核心程序

image.png
f866b8bac94195e07e9ee8e45b4b196e_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
190f7f17932fe56886cfde4a10732372_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png


load piderr.mat
t1=ans.Time;
d1=ans.Data(:,1);

load fuzzypiderr.mat
t2=ans.Time;
d2=ans.Data(:,1);

load mpc.mat
t3=ans.Time;
d3=ans.Data(:,1);


figure;
plot(t1(1:end),d1(1:end),'r');
hold on
plot(t2(1:end),d2(1:end),'b');
hold on
plot(t3(1:end),d3(1:end),'g','LineWidth',2);
hold on
grid on
legend('PID','Fuzzy PID','MPC');
xlabel('time(s)');
ylabel('error');
xlim([0,1]);
相关文章
|
26天前
|
算法
基于双闭环PI的SVPWM控制器simulink建模与仿真
本课题基于双闭环PI的SVPWM控制器,在MATLAB2022a中构建Simulink模型,涵盖DA转换、abc-dq变换、Clark变换、PI控制器及SVPWM模块。该控制器利用SVPWM技术提高电压利用率并减少谐波,通过双闭环PI算法精准控制电机转速与电流。仿真结果显示该系统具有优异的控制性能。
基于PID控制器的直流电机位置控制系统simulink建模与仿真
**摘要:** 构建基于PID的直流电机位置控制系统,利用PID的简易性和有效性实现精确控制。在MATLAB2022a中进行系统仿真,展示结果。控制器基于误差(e(t))生成控制信号(u(t)),由比例(K_p)、积分(K_i)和微分(K_d)项构成。系统采用三层控制环:位置环设定速度参考,速度环调节实际速度,电流环确保电流匹配,以达成期望位置。
|
3月前
|
算法
自适应PID控制器的simulink建模与仿真
本研究实现PID控制器参数(kp, ki, kd)的自适应调整,达成最优控制并展示参数收敛过程。MATLAB2022a环境下仿真结果显示,参数经调整后趋于稳定,控制器输出平滑,误差显著降低。自适应PID通过实时监测系统性能自动优化参数,有效应对不确定性,维持系统稳定及高性能。采用不同优化算法调整PID参数,确保最佳控制效果。
基于simulink的模糊PID控制器建模与仿真,并对比PID控制器
在MATLAB 2022a的Simulink中,构建了模糊PID和标准PID控制器模型,对比两者控制输出。模糊控制器采用模糊逻辑处理误差和误差变化率,通过模糊化、推理和去模糊化调整PID参数。模糊PID能更好地应对非线性和不确定性,而标准PID虽然简单易实现,但对复杂系统控制可能不足。通过仿真分析,可选择适合的控制器类型。
|
5月前
|
流计算
基于双闭环PI和SVPWM的PMSM控制器simulink建模与仿真
该文主要介绍了一个基于双闭环PI和SVPWM技术的PMSM控制器的Simulink建模与仿真项目。系统包含逆变桥、PMSM电机、变换器、SVPWM、PI控制器等模块,实现了转速和电流的快速稳定控制。文章提供了系统仿真的图表,并详细阐述了双闭环PI控制器设计及SVPWM技术。在控制流程中,系统不断采集反馈信息,通过PI控制器调整直轴和交轴电流,经SVPWM调制后驱动电机运行,确保高效精确的电机控制。使用的工具为MATLAB2022a。
|
机器学习/深度学习 存储 数据采集
m基于强化学习的永磁同步电机位置控制器simulink仿真,对比传统的PI控制器和模糊PI控制器
m基于强化学习的永磁同步电机位置控制器simulink仿真,对比传统的PI控制器和模糊PI控制器
355 1
[simulink] --- 模型生成嵌入式代码配置
[simulink] --- 模型生成嵌入式代码配置
182 0
[simulink] --- 模型生成嵌入式代码配置
|
算法
m基于simulink的PID控制器,模糊PID控制器以及MPC控制器性能对比仿真
m基于simulink的PID控制器,模糊PID控制器以及MPC控制器性能对比仿真
216 0
|
机器学习/深度学习 算法 机器人
m基于simulink的PID,模糊PID以及神经网络模糊PID三种控制器的控制性能对比仿真
m基于simulink的PID,模糊PID以及神经网络模糊PID三种控制器的控制性能对比仿真
244 0
|
算法 SoC
m基于PID控制器的电动车充放电系统的simulink建模与仿真
m基于PID控制器的电动车充放电系统的simulink建模与仿真
183 0