一、实验目的

1.掌握数字PID控制的编程方法
2.实现连续系统与离散系统PID控制的MATLAB编程

二、实验原理

PID控制器是一种线性控制器,它根据给定值r(t)与实际输出值c(t)构成偏差:e(t)=r(t)-c(t)。将偏差的比例§、积分(I)和微分(D)通过线性组合构成控制量,对受控对象进行控制。PID控制系统结构框图下图所示。

PID控制系统结构框图
为系统的输入信号,为系统的输出,控制器的输出信号
其控制规律为:

KP是比例系数,KI是积分常数,KD是微分常数。
PID控制器由比例(P)环节、积分(I)环节和微分(D)环节组合而成。比例(P)环节:将控制系统的给定输入与系统反馈所形成的偏差信号成比例的放大,偏差一旦产生,控制器立即产生控制作用,以减少偏差。比例环节能够提高控制系统的响应速度,增大比例系数KP,可以加快调节,但KP过大,控制系统会产生较大的超调,甚至导致系统不稳定。积分(I)环节:主要是消除系统的静态误差,提高系统的无差度,同时提高控制系统的响应速度。积分作用的强弱取决于积分常数KI,积分常数KI越大,积分作用越强,反之则越弱。微分(D)环节:反映偏差信号的变化率,调节误差的微分输出,能够在系统误差突变时,在系统中引入一个有效的早期修正信号,以加快系统的动作速度,减少调节时间,从而改善系统的动态性能。

三、实验内容

1.连续系统的数字 PID 控制仿真:

假设被控对象为电机模型,其传递函数为,其中 。输入信号为,采用PID控制,请根据如下代码选择合适的KP、KD参数,使得跟踪曲线误差尽可能小,并记录最小误差情况下的KP和KD值。

2.设被控对象为

采样时间为1ms,对其进行离散化。针对离散系统的阶跃信号、正弦信号和方波信号的位置响应,设计离散PID控制器。其中S为信号选择变量,S=1是阶跃跟踪,S=2是方波跟踪,S=3是正弦跟踪。请根据如下代码选择合适的Kp、Ki、Kd参数,观察三组信号跟踪曲线响应速度、超调量和稳态误差的变化,选择最好的一组跟踪效果最好阶跃跟踪、方波跟踪和正弦跟踪曲线,并记录下各自对应的Kp、Ki、Kd值。

四、实验过程

1.数字PID控制仿真

(1)首先新建函数文件,用于创建连续函数对象的微分方程函数

(2)初始化界面如图

(3)将指导书中提供的代码粘贴到文件中

function dy=chap1_1f(t,y,flag,para)
u=para;
J=0.0067;B=0.1;dy=zeros(2,1);
dy(1) = y(2);
dy(2) = -(B/J)*y(2) + (1/J)*u;

(4)保存,文件类型为m文件,注意需要放到环境路径文件夹,或者将文件夹路径设置为环境路径

(5)将指导书中的主程序代码复制到命令行窗口中并执行

% chap1_1.m
%Discrete PID control for continuous plant
clear all;
close all;
ts=0.001;  %Sampling time
xk=zeros(2,1);
e_1=0;
u_1=0;for k=1:1:2000
time(k) = k*ts;rin(k)=0.50*sin(1*2*pi*k*ts);para=u_1;              % D/A
tSpan=[0 ts];
[tt,xx]=ode45('chap1_1f',tSpan,xk,[],para);
xk = xx(length(xx),:);    % A/D
yout(k)=xk(1); e(k)=rin(k)-yout(k);
de(k)=(e(k)-e_1)/ts; u(k)=KP*e(k)+KD*de(k);
%Control limit
if u(k)>10.0u(k)=10.0;
end
if u(k)<-10.0u(k)=-10.0;
endu_1=u(k);
e_1=e(k);
end
figure(1);
plot(time,rin,'r',time,yout,'b');
xlabel('time(s)'),ylabel('rin,yout');
figure(2);
plot(time,rin-yout,'r');
xlabel('time(s)'),ylabel('error');

(6)产生如图报错

(7)修改代码中KP,KD的值,令KP=20,KD=0.5

(8)运行后得到图像如图,此时KP=20,KD=0.5

(9)分析:输出跟随输入,PD控制中,微分控制可以改善动态性能,调节时间缩短,允许加大比例控制,使稳态误差减小,提高了控制精度

2.被控对象

(1)在主程序中添加KP,KI,KD的具体数值

(2)令KP=1.5,KI=2,KD=0.05

% chap1_1.m
%Discrete PID control for continuous plant
clear all;
close all;ts=0.001;
sys=tf(5.235e005,[1,87.35,1.047e004,0]);
dsys=c2d(sys,ts,'z');
[num,den]=tfdata(dsys,'v');u_1=0.0;u_2=0.0;u_3=0.0;
y_1=0.0;y_2=0.0;y_3=0.0;
x=[0,0,0]';
error_1=0;
for k=1:1:1500
time(k)=k*ts;%S=input('?s= ');%
S=1;
if S==1kp=1.5;ki=2;kd=0.05;          rin(k)=1;                            %Step Signal
elseif S==2kp=1.5;ki=2;kd=0.05;          rin(k)=sign(sin(2*2*pi*k*ts));  %Square Wave Signal
elseif S==3kp=1.5;ki=2;kd=0.05;             %Sine Signalrin(k)=0.5*sin(2*2*pi*k*ts);
endu(k)=kp*x(1)+kd*x(2)+ki*x(3);   %PID Controller
%Restricting the output of controller
if u(k)>=10       u(k)=10;
end
if u(k)<=-10u(k)=-10;
end
%Linear model
yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(2)*u_1+num(3)*u_2+num(4)*u_3;error(k)=rin(k)-yout(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=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_1=error(k);
end
figure(1);
plot(time,rin,'k',time,yout,'k');
xlabel('time(s)'),ylabel('rin,yout');

(3)运行主程序,结果如下

智能控制基础实验3:数字PID控制相关推荐

  1. 计算机控制pid控制实验,计算机控制实验三数字PID调节器算法的研究

    计算机控制技术实验报告 学院:********** 班级:********** 姓名:****** 学号:**********实验三 数字PID调节器算法的研究 实验项目名称:数字PID调节器算法的研 ...

  2. 计算机控制实验PID数字控制器设计,实验二数字PID控制器的设计

    <实验二数字PID控制器的设计>由会员分享,可在线阅读,更多相关<实验二数字PID控制器的设计(13页珍藏版)>请在人人文库网上搜索. 1.实验二 数字PID控制器的设计直流闭 ...

  3. matlab数字pid控制仿真程序,基于MATLAB的数字PID控制器设计及仿真分析

    基于MATLAB的数字PID控制器设计及仿真分析 基于基于MATLABMATLAB的数字的数字PIDPID控制器设计及仿真分析控制器设计及仿真分析 摘摘 要要 PID控制作为历史最为悠久,生命力最强的 ...

  4. matlab离散系统pid控制系统,离散系统的数字PID控制仿真

    内容介绍 原文档由会员 霜天盈月 发布 离散系统的数字PID控制仿真 本文共计33页,14252字: 摘 要 近年来,由于脉冲技术.数字式元部件.数字计算机,特别是微处理器的蓬勃发展,数字控制器在许多 ...

  5. 基于MATLAB的离散系统的数字PID控制仿真

    基于MATLAB的离散系统的数字PID控制仿真 1 设计要求 2 方案设计 2.1 设计思路及总体方案框图 2.2 PID算法的基本原理 2.3 PID算法的离散化 3 总体方案的选择与设计 3.1 ...

  6. CC2530基础实验:(1)按键控制LED跑马灯

    文章目录 前言 一.实验相关电路图 二.实验相关寄存器 三.源码分析 前言 本实验用于学习CC2530芯片GPIO 的配置方法,Led 驱动电路及开关 Led 的原理,按键的使用,实现简单的人机交互. ...

  7. 连续系统的数字PID控制仿真-1

    被控对象为一电机模型传递函数: 式中,J = 0.0067;B=0.10. 采用M函数的形式,利用ODE45的方法求解连续对象方程,输入指令信号为yd(k)=0.50sin(2*3.14*t),采用P ...

  8. 差分pid模块_基于数字PID切换控制的Buck变换器研究

    DC-DC开关变换器在电力电子工业.军工系统中有着十分广泛的应用[1].并且手持式电子设备.移动手机等用电设备对供电电源的轻载效率.瞬态响应特性以及负载范围提出了更高的要求[2].因此,对开关DC-D ...

  9. 单容水箱液位pid控制实验报告_单容水箱液位过程控制实验报告

    四.单容水箱系统PID控制规律及整定方法 数字PID控制是在实验研究和生产过程中采用最普遍的一种控制方法,在液位控制系统中也有着极其重要的控制作用.本章主要介绍PID控制的基本原理,液位控制系统中用到 ...

最新文章

  1. oozie的作业调度
  2. 网络推广——网络推广如何安排网站关键词的布局策略?
  3. 智慧树python程序设计基础山东联盟期末答案_智慧树Python程序设计基础(山东联盟)期末答案...
  4. windows下spark开发环境配置
  5. linux 2行数据为一条记录 该如何操作这一条记录_Linux 日志文件系统原来是这样工作的...
  6. Java数据库篇9——备份与还原、忘记密码
  7. JDK1.8 中文文档下载与在线阅读
  8. Java基础题笔记1
  9. 字符集ASCII、GBK、UNICODE、UTF在储存字符时的区别
  10. python不正确的关系字符_Python系列之 - 字符编码问题
  11. python与贝叶斯_python-与PyMC3的贝叶斯相关
  12. python调用接口失败_python调用软件com接口问题,python报错 -问答-阿里云开发者社区-阿里云...
  13. [UE4]在UI中获取玩家角色实例
  14. mysql jion on 三表_MySQL 三表连接(join)
  15. reboot流程简述
  16. 高等数学笔记-苏德矿-第十章-曲线积分和曲面积分-第七节-高斯公式与斯托克斯公式
  17. (RN)Region Normalization for Image Inpainting
  18. ip中继对接_FreePBX配置IP对接中继
  19. 智能手机功能设计实现
  20. 两次腾讯面试挂二面的苦逼经历

热门文章

  1. 清华大学计算机系高考选科要求,2020年清华大学在北京招生专业选科要求对照表...
  2. 基于微信小程序的图书馆管理系统设计与实现
  3. 俄剧实习医生改名脚本
  4. linux+上的录屏软件下载,Linux下优秀的屏幕录像软件Kazam | 薄荷开源网
  5. 字符串中利用正则表达式提取出数字,并存如数组
  6. C语言程序设计:“编辑单词本”功能编写
  7. 计算机网络基础之以太网
  8. 开封机器人餐厅_北京机器人餐厅在哪-北京装修
  9. CARIS11.4基本使用流程及其bug解决
  10. 从vue-element-admin框架中,学习如何优雅地使用icon