基于Matlab/GUI界面设计的参数在线整定与优化(一)

基于Matlab/GUI界面设计的参数在线整定与优化(一)

在这里介绍下最近接触到的Matlab/GUI界面设计,将设置参数kp、ki和kd,阶跃响应曲线均体现在一个设置界面上,但是所基于matlab环境进行开发的,后续有精力的话可以在QT平台上进行开发,对于工程应用很有实战效果。
1.参数整定的Matlab/GUI界面设计;
2.参数整定的运行结果展示。



前言

Matlab/GUI界面设计很简单,在此不赘述。可以网上搜索到很多相关的资料及介绍文档。同时本博客直接给出所设计好的.fig文件。

一、参数整定的Matlab/GUI界面设计

命令行输入guide,回车。

在这里插入图片描述
打开设计好的GUI界面
在这里插入图片描述

在运行按钮的句柄下放置之前博客所介绍的----运用PID控制器优化传递函数的阶跃响应曲线。

function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
kp = get(handles.edit1,'String');  % 获取P值
ki = get(handles.edit2,'String');  % 获取I值
kd = get(handles.edit3,'String');  % 获取d值

KP=str2double(kp);  %因为edit默认都是字符,需要转为数值进行运算
KI=str2double(ki);
KD=str2double(kd);

% s=tf('s');
% PID=KP+KD*s+KI/s;  % 获得pid传递函数
% P = 1/(s^2 + 10*s + 20);
% T = feedback(PID*P,1);
% t = 0:0.01:2;
% y=step(T,t);  % 阶跃响应
% plot(t,y);   % 绘图

%% 定义传递函数
ts=0.001;
sys=tf(400,[1,1,0]); %% 400/(s(s+1))  
dsys=c2d(sys,ts,'z');
[num,den]=tfdata(dsys,'v');

rin=1.0;
u_1=0.0;u_2=0.0;
y_1=0.0;y_2=0.0;
x=[0,0,0]';
error_1=0;
P=1000;

%% 定义PID控制参数
Kpidi(1) = KP;%0-30
Kpidi(2) = KI;%0-1
Kpidi(3) = KD;%0-1

for k=1:1:P
   timef(k)=k*ts;
   r(k)=rin;
   u(k)=Kpidi(1)*x(1)+Kpidi(2)*x(2)+Kpidi(3)*x(3); 
   
   if u(k)>=10
      u(k)=10;
   end
   if u(k)<=-10
      u(k)=-10;
   end   
   
   yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;
   error(k)=r(k)-yout(k);
   
%------------ Return of PID parameters -------------
   u_2=u_1;u_1=u(k);
   y_2=y_1;y_1=yout(k);
   
   x(1)=error(k);                % Calculating P
   x(2)=(error(k)-error_1)/ts;   % Calculating D
   x(3)=x(3)+error(k)*ts;        % Calculating I
   error_2=error_1;
   error_1=error(k);

end
plot(timef,rin,'r',timef,yout,'b');
xlabel('Time(s)');ylabel('rin,yout');
end

二、参数整定的运行结果展示

运行程序Tuning.m,未输入三个kp、ki和kd 输出的结果如下:
在这里插入图片描述
最终调整后,所优化的结果如下:kp=28;ki=0.5;ki=0.01,结果如下;

在这里插入图片描述

1.Kp变化的结果

当kp=38;ki=0.5;ki=0.01,运行结果如下:

在这里插入图片描述

当kp=8;ki=0.5;ki=0.01,运行结果如下:
在这里插入图片描述
由上可知,增大比例系数Kp会加快系统响应但会带来超调。

2.Ki变化的结果

当kp=28;ki=5;ki=0.01,运行结果如下:
在这里插入图片描述

当kp=28;ki=0.05;ki=0.01,运行结果如下:
在这里插入图片描述

由上可知,增大积分系数Ki有利于减小超调,减小振荡,但系统响应速度变慢。过小的Ki会导致系统不稳定。

3.Kd变化的结果

当kp=28;ki=0.5;ki=1,运行结果如下:
在这里插入图片描述
当kp=28;ki=0.5;ki=0.0001,运行结果如下:
在这里插入图片描述
由上可知,对于精确的1型2阶系统而言微分环节作用影响较小,主要是由于微分的作用是提高系统抗扰动能力,降低系统抗噪声能力。后续可以在联合仿真模型给予一定的扰动,再进行试验的验证。

总结

1.后续博客的研究是将前述所讲的算法在线整定PID参数,融合到这个Matlab/GUI界面设计上,可以实时观看参数变化、曲线变化以及适应度函数大小值变化的曲线图。

2.将这个思路拓展到QT平台上,运用控制板进行实际效果验证。

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昔时扬尘处

你的鼓励会让技术更加具有价值!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值