基于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平台上,运用控制板进行实际效果验证。