摘要:使用matlab编写PID控制器与模糊控制器,并对原理进行解析。
背景: 小白自学。
基础:1、视频“自动控制原理”,1-3章,柠檬大学,点此链接
2、《基于MATLAB的系统分析与设计——模糊系统》,楼顺天等,西安电子科技大学出版社,1-80页。
3、视频“单片机STM32——PID算法讲解”,1-6节,ArgonGhost,哔哩哔哩,点此链接。
4、视频“第9章线性系统的状态空间分析与综合(1)”,第一节,张超,哔哩哔哩,点此链接。
目录
一、控制案例
在此通过一个典型案例编写PID控制器和模糊控制器代码,并进行注释。(例子为《基于MATLAB的系统分析与设计——模糊系统》例3.8)
例:典型二阶系统的模糊控制与 传统PID控制的性能比较。通常的工业过程可以等效成二阶系统加上一些典型的非线性环境,如死区、饱和、纯延迟等,这里假设系统为
(1)
控制执行结构具有0.07的死区和0.7的饱和区,取样时间间隔T=0.01。
解:在PID仿真中,经过仔细选择,取,
,
。在模糊控制仿真中,
,
,
,
,模糊控制器输出为
(2)
其中积分项用于消除控制系统的稳态误差。
MATLAB程序中,Nd用于表示系统的纯延迟(),umin用于表示控制的死区电平,umax用于表示饱和电平。当Nd=0时,表示系统不存在纯延迟。MATLAB程序如下:
% -----------------------------------------
% 典型二阶系统的模糊控制与传统PID控制的性能比较
% -----------------------------------------
num=20;
den=[1.6,4.4,1];
[a1,b,c,d]=tf2ss(num,den); %将传递函数转换为状态空间,[1]
x=[0;0]; %有两个输入所以状态向量为二维
T=0.01;h=T;
umin=0.07;umax=0.7; %死区和饱和区
td=0.02;Nd=td/T;
N=500;R=1.5*ones(1,N); %稳态为1.5,存入R一维矩阵
% -------------
% PID 控制
% -------------
e=0;de=0;ie=0; %初始误差、误差微分、误差积分
kp=5;ki=0.1;kd=0.001; %PID控制器的三个参数
for k=1:N %重复1~500
uu1(1,k)=-(kp*e+ki*de+kd*ie); %计算本次PID控制器的输出
if k<=Nd