PID专家控制matlab仿真

一、实验目的

  使用matlab针对某二阶或三阶系统,结合专家控制规则,设计相应的专家PID控制器,使得其闭环系统能快速跟踪阶跃信号。
(1)画出闭环输出响应,误差响应曲线;
(2)画出控制器输出曲线;
(3)结合以上曲线,分析专家控制规则的合理性。

二、实验基本原理

(一)专家控制的基本思想
  专家控制是智能控制的一个分支,是专家系统的理论和技术同控制理论、方法与技术相结合,在无对象模型的情况下,模仿领域专家的经验来实现对被控对象的控制。
  专家控制一般由知识库和推理机构构成主体框架,按照某种策略及时选用恰当的规则进行推理输出,实现控制。其基本结构如下:

  有上图我们不难发现影响专家控制器控制精确性的主要是知识库表达的准确性以及推理机的正确性。知识库越完备、越准确那么对你被控对像的状态识别也就越准确。当然,推理机设计的差别也会对控制结果有影响。
  专家控制器一般来说分为两种实现形式,被称之为直接型专家控制器和间接型专家控制器。所谓直接型专家控制器就是用专门设计的专家控制器直接对被控对象进行控制的方法。该控制器任务和功能都比较简单,一般都是实时在线运行,直接对被控对象进行控制。其结构图如下:

  而所谓间接型专家控制器是指专家控制器作为其他控制器的辅助方式或者相互结合的控制方式来实现的一种控制器。专家系统通过高层决策来影响控制器输出,而这种高层决策可以是在线也可以是离线,器不会直接控制被控对象。其结构图如下:

  所以我们所要讨论的专家PID算法应该是一种直接型专家控制器,因为专家系统决策与PID算法是结合在一起的,并没有独于PID算法的专家控制器,而是专家决策直接决定PID算法机器输出,这与直接型专家控制的定义是相符的。
(二)专家PID的设计思路
  专家PID控制就是基于被控对象和控制规律的各种知识,而不需要知道被控对象的精确模型,利用专家经验来设计PID参数。怎么来实现这一过程呢?我们来分析并推导这一算法。
  我们假设当前为第k采样,当前偏差为e(k),同样前一采样时刻的偏差为e(k-1),而前两个采样时刻的偏差为e(k-1),则可以得到两次的偏差增量为:

  清楚了以上公式,我们再设定偏差的一个极大值,记为Mmax;设定一个偏差较大的中间值,记为Mmid;设定一个偏差的极小值,记为Mmin。根据以上偏差、偏差增量以及偏差极值的设定,我们分析如下:
(i)如果|e(k)|>Mmax
  这种情况说明偏差的绝对值已经很大了,不论偏差变化趋势如何,都应该考虑控制器的输入应按最大(或最小)输出,以达到迅速调整偏差的效果,使偏差绝对值以最大的速度减小。

这种情况下其实相当于实施开环控制,是一种对偏差出现极限情况的快速响应。
(ii)如果|e(k)|≤Mmax
  这种情况我们需要更具系统的变化趋势来分析,具体的情况实施不同的控制方式,我们引入偏差增量来协助分析。
(1)当e(k)∆e(k)>0或者∆e(k)=0时
  这种情况说明偏差在朝向偏差绝对值增大的方向变化,或者偏差为某一固定值,此时我们再判断偏差的绝对值与偏差的中间值Mmid之间的关系。
(1.1) 此时如果|e(k)|>Mmid,说明偏差也较大,可考虑由控制器实施较强的控制作用,以达到扭转偏差绝对值向减小的方向变化,并迅速减小偏差的绝对值。

(1.2) 此时如果|e(k)|≤Mmid,说明尽管偏差是向绝对值增大的方向变化,但是偏差绝对值本身并不是很大,可以考虑控制器实施一般的控制作用,只需要扭转偏差的变化趋势,使其向偏差绝对值减小的方向变化即可。

(2)当e(k)∆e(k)<0且∆e(k)∆e(k-1)>0或者e(k)=0时
  说明偏差的绝对值向减小的方向变化,或者已经达到平衡状态,此时保持控制器输出不变即可。即:U(k)=U(k-1)。
(3)当e(k)∆e(k)<0且∆e(k)∆e(k-1)<0时
  说明偏差处于极限状态。如果此时偏差的绝对值较大,|e(k)|>Mmid,可以考虑实施较强控制作用。

  如果此时偏差绝对值较小,|e(k)|<Mmid,可以考虑实施较弱控制作用。

  其中,k1为增益放大系数,k1取大于1的值;k2为增益抑制系数,取大于0而小于1的值。
(iii)如果|e(k)|<Mmin
  这种情况实际上说明偏差绝对值很小,这种偏差有可能是系统静差引起的,此时必须要引入积分作用,实施PID控制或者PI控制。

  Kp和Ki可以适当减小,以减小控制作用。当偏差小到一定程度后,甚至可以引入死区的概念,是系统稳定下来而不需要去进行调节。

三、实验结果及源代码



源代码下:

 %Expert PID Controller
clc
clear
closets = 0.001;sys = tf(5.235e005,[1,87.35,1.047e004,0]);
dsys = c2d(sys,ts,'z');
[num,den] = tfdata(dsys,'v');[y0,t,x] = step(sys,0.5);
figure(1);
plot([0 0.5],[1 1],'b',t,y0,'r');
figure(2);
plot(t,1-y0,'r');u_1 = 0.0;
u_2 = 0.0;
u_3 = 0.0;
y_1 = 0;
y_2 = 0;
y_3 = 0;x = [0 0 0]';
x2_1 = 0;kp = 0.6;ki = 0.03;kd = 0.01;error_1 = 0;
for k = 1:1:500
time(k) = k*ts;
r(k)= 1.0;
%Tracing Jieyue Signalu(k)= kp*x(1)+kd*x(2)+ki*x(3);          %PID controller%Expert control rule
if abs(x(1))>0.8                              %Rule1:Unclosed control firstl u(k) = 0.45;
elseif abs(x(1))>0.40u(k) = 0.40;
elseif abs(x(1))>0.20 u(k) = 0.12;
elseif abs(x(1))>0.01u(k) = 0.10;
endif x(1)*x(2)>0||(x(2)==0)                       %Rule2      if abs(x(1))>=0.05 u(k)=u_1+2*kp*x(1); else u(k)=u_1+0.4*kp*x(1);   end
endif (x(1)*x(2)<0&&x(2)*x2_1>0)||(x(1)==0)     %Rule3      u(k)=u(k);
endif x(1)*x(2)<0&&x(2)*x2_1<0                    %Rule4     if abs(x(1))>=0.05          u(k)=u_1+2*kp*error_1;   else     u(k)=u_1+0.6*kp*error_1;end
endif abs(x(1))<=0.001                %Rule5:Integration separation PI control        u(k)=0.5*x(1)+0.010*x(3);
end%Restricting the output of controllerif u(k) >= 10     u(k) = 10;
end
if u(k) <= -10u(k) = -10;
end   %Linear model
y(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u(k)+num(2)*u_1+num(3)*u_2+num(4)*u_3;
error(k) = r(k)-y(k);     %Return of parameters%u_3 =u_2;u_2 =u_1;u_1 =u(k);y_3 =y_2;y_2 =y_1;y_1 =y(k);  x(1)= error(k);                %Calculating Px2_1= x(2);x(2)= (error(k)-error_1)/ts;   %Calculating Dx(3)= x(3)+error(k)*ts;        %Calculating Ierror_1 = error(k);
endfigure(3);
plot(time,r,'b',time,y,'r');
xlabel('time(s)');ylabel('r,y');
figure(4);
plot(time,r-y,'r');
xlabel('time(s)');ylabel('error');

四、参考资料

【1】https://blog.csdn.net/foxclever/article/details/82562285 PID控制器开发笔记之十一:专家PID控制器的实现

【2】智能控制 刘金琨著 电子工业出版社

PID专家控制matlab仿真相关推荐

  1. 先进pid控制matlab仿真程序,先进PID控制Matlab仿真第4版-仿真程序-上交

    文件名大小更新时间 先进PID控制Matlab仿真第4版-仿真程序-上交02016-03-07 先进PID控制Matlab仿真第4版-仿真程序-上交\chap102016-03-07 先进PID控制M ...

  2. matlab pid buck,BUCK电路闭环PID控制系统的MATLAB仿真.doc

    BUCK电路闭环PID控制系统的MATLAB仿真.doc 题目BUCK 电路闭环 PID 控制系统的 MATLAB 仿真目录一.课题简介 2二.BUCK 变换器主电路参数设计 .22.1 设计及内容及 ...

  3. 神经网络pid控制器MATLAB,基于BP神经网络的PID控制器及其MATLAB仿真.pdf

    基于BP神经网络的PID控制器及其MATLAB仿真.pdf 2009 NO.10 中国新技术新产品 China New Technologies and Products 高新技术 基于BP 神经网络 ...

  4. 多自由度机械臂运动学正-逆解|空间轨迹规划控制|MATLAB仿真+实际机器调试

    多自由度机械臂运动学正-逆解|空间轨迹规划控制|MATLAB仿真+实际机器调试 ) DH建模法可以参考这个博客: 还有<机器人>这本书,一定要理论实践相结合,理解后可以用几何法建模也可以用 ...

  5. matlab转差频率控制,异步电动机转差频率间接矢量控制matlab仿真(毕业设计).doc

    PAGE PAGE I 太原理工大学 毕业设计(论文)任务书 毕业设计(论文)题目: 异步电动机转差频率间接矢量控制matlab仿真 一. 毕业设计(论文)基本要求: 1.掌握异步电动机工作的基本原理 ...

  6. 微电网下垂控制,VF控制,PQ控制matlab仿真

    微电网逆变器中最常见的4种控制:下垂控制,VF控制,PQ控制,虚拟同步机控制matlab仿真 这里只写下垂.VF.PQ控制的matlab/simulink搭建的仿真结果,虚拟同步机(VSG)matal ...

  7. 永磁同步电机矢量控制的matlab仿真研究,永磁同步电机矢量控制MATLAB仿真研究

    科技信息 2012 年 第 3 期SCIENCE & TECHNOLOGY INFORMATION 永磁同步电机矢量控制 MATLAB 仿真研究 彭 超 (重庆邮电大学自动化学院中国重庆 53 ...

  8. 感应电动机的matlab仿真实验报告,异步电机矢量控制MATLAB仿真 实验 (2).doc

    学 号: 课 程 设 计 题 目异步电机矢量控制MATLAB仿真实验 (矢量控制部分)学 院自动化学院专 业自动化专业班 级姓 名指导教师曹雪莲 2015年1月7日目录 摘要1 1异步电动机矢量控制原 ...

  9. 异步电动机matlab仿真实验报告,异步电机矢量控制MATLAB仿真实验

    异步电机矢量控制MATLAB仿真实验Tag内容描述: 1.异步电机矢量控制 VC 系统仿真实验 电气与信息工程学院 2019年6月 教学内容 1 矢量控制原理分析2 仿真实验模型的搭建3 仿真实验结果 ...

最新文章

  1. RDKit:化合物骨架分析
  2. Linux(CentOS)下设置nginx开机自动启动和chkconfig管理
  3. maven报错找不到依赖
  4. Java读取文件时第一行出现乱码“?”问号
  5. 计算机没有搜索筛选功能,EXCEL中筛选工具怎么没有搜索功能
  6. 虚拟机连接iso后挂载
  7. 计算机思维游戏案例doc,国外火爆的计算机思维训练游戏,国内居然不知道!
  8. Springboot 返回数据提示语 国际化 (AOP实现)
  9. 用python搭建邮箱,自动收发邮箱
  10. 2017.8.18总结3-沙耶的玩偶
  11. Kettle spoon 工具实战分享
  12. Centos 7系统密码破解
  13. 火车头采集器php,火车头采集器3.0采集图文教程
  14. 程序员转行干什么好呢
  15. oracle设置密码永不过期
  16. 复制链接到safari浏览器打开_苹果手机把链接复制到浏览器打不开也下载不了这怎么回事...
  17. CMD命令窗口光标消失解决方案
  18. ui设计现状与意义_UI设计的现状如何?
  19. 【评测】Invent脂肪组织蛋白质快速提取
  20. CTFHUB-WEB-XSS【05】反射型

热门文章

  1. 微搭低代码官方模板解析(一)
  2. 2022年7月25日开始学习Jupyter Notebook
  3. HTML5新增的标签属性以及它们的用法
  4. python列表去重
  5. 「首席架构师推荐」精选数据挖掘和机器学习软件列表
  6. 后台服务器高性能架构设计
  7. TYPEC拓展坞电源管理芯片|IM2603设计方案
  8. 匿名类、内部类、匿名内部类
  9. 手机号的正则表达式(以1开头的11位数字)
  10. php使用tcpdf,通过html生成的pdf文件,合同章(图片)错位?需要怎么解决