数字PID控制器的MATLAB仿真

合集下载

基于MATLAB的数字PID仿真

基于MATLAB的数字PID仿真

基于MATLAB 的数字PID 仿真一、实验目的1、 了解MATLAB 集成开发环境2、 了解MATLAB 编程基本方法3、 了解MATLAB 中数字控制器设计的基本方法4、 加深对数字PID 的理解二、实验内容1、位置PID 的MA TLAB 仿真。

2、增量PID 的MA TLAB 仿真三、实验程序框图四、实验步骤1、 熟悉MATLAB 开发环境2、 输入参考程序3、 设置断点,运行程序,观察运行结果4、 参考程序(1) 位置PID被控对象21()0.00670.1G s s s =+,控制参数20,0.50p d k k ==clear allts=0.001;xk=zeros(2,1);e_1=0;u_1=0;PID 控制程序流程图for k=1:1:2000time(k)=k*ts;rin(k)=0.50*sin(1*2*pi*k*ts);para=u_1;tspan=[0 ts];[tt,xx]=ode45('chap1_6f',tspan,xk,[],para);xk=xx(length(xx),:);yout(k)=xk(1);e(k)=rin(k)-yout(k);de(k)=(e(k)-e_1)/ts;u(k)=20.0*e(k)+0.50*de(k);if u(k)>10.0u(k)=10.0;endif u(k)<-10.0u(k)=-10.0endu_1=u(k);e_1=e(k);endfigure(1);num=[0,0,1];den=[0.0067,0.1,0];sys=tf(num,den);[yy,time]=lsim(sys,rin,time);plot(time,rin,'r',time,yout,'b',time,yy,'g');(2)增量PID 被控对象2400()50G s s s =+,控制参数8,0.10,10p i d k k k ===clear all ;ts=0.001;sys=tf(400,[1,50,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;y_2=0;y_3=0;x=[0,0,0]';error_1=0;error_2=0;for k=1:1:1000time(k)=k*ts;rin(k)=1.0;kp=8;ki=0.10;kd=10;du(k)=kp*x(1)+kd*x(2)+ki*x(3); 控制器输出u(k)=u_1+du(k);if u(k)>=10u(k)=10;endif u(k)<=-10u(k)=-10;endyout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; 系统输出error=rin(k)-yout(k);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-error_1;x(2)=error-2*error_1+error_2;x(3)=error;error_2=error_1;error_1=error;end[yy,time]=lsim(sys,rin,time);plot(time,rin,'b',time,yout,'r',time,yy,’g’);xlabel('time(s)');ylabel('rin,yout');五、思考题1、把增量PID参考程序中阶跃输入改成正弦输入,求出PID控制器输出。

基于matlab的pid控制仿真课程设计

基于matlab的pid控制仿真课程设计

这篇文章是关于基于Matlab的PID控制仿真课程设计的,主要内容包括PID控制的基本原理、Matlab的应用、课程设计的目的和意义、课程设计的具体步骤和具体操作步骤。

文章采用客观正式的语气,结构合理,旨在解释基于Matlab的PID控制仿真课程设计的重要性和实施方法。

1. 简介PID控制是一种常见的控制算法,由比例项(P)、积分项(I)和微分项(D)组成,可以根据被控对象的实际输出与期望输出的偏差来调整控制器的输出,从而实现对被控对象的精确控制。

Matlab是一种强大的数学建模与仿真软件,广泛应用于工程领域,尤其在控制系统设计和仿真方面具有独特优势。

2. PID控制的基本原理PID控制算法根据被控对象的实际输出与期望输出的偏差来调整控制器的输出。

具体来说,比例项根据偏差的大小直接调整输出,积分项根据偏差的积累情况调整输出,微分项根据偏差的变化速度调整输出。

三者综合起来,可以实现对被控对象的精确控制。

3. Matlab在PID控制中的应用Matlab提供了丰富的工具箱,其中包括控制系统工具箱,可以方便地进行PID控制算法的设计、仿真和调试。

利用Matlab,可以快速建立被控对象的数学模型,设计PID控制器,并进行系统的仿真和性能分析,为工程实践提供重要支持。

4. 课程设计的目的和意义基于Matlab的PID控制仿真课程设计,旨在帮助学生深入理解PID控制算法的原理和实现方法,掌握Matlab在控制系统设计中的应用技能,提高学生的工程实践能力和创新思维。

5. 课程设计的具体步骤(1)理论学习:学生首先需要学习PID控制算法的基本原理和Matlab在控制系统设计中的应用知识,包括控制系统的建模、PID控制器的设计原理、Matlab的控制系统工具箱的基本使用方法等。

(2)案例分析:学生根据教师提供的PID控制实例,在Matlab环境下进行仿真分析,了解PID控制算法的具体应用场景和性能指标。

(3)课程设计任务:学生根据所学知识,选择一个具体的控制对象,如温度控制系统、水位控制系统等,利用Matlab建立其数学模型,设计PID控制器,并进行系统的仿真和性能分析。

PID控制及其MATLAB仿真详细课件

PID控制及其MATLAB仿真详细课件
积分分离控制基本思路是,当被控量与设定值偏差较 大时,取消积分作用,以免由于积分作用使系统稳定 性降低,超调量增大;当被控量接近给定量时,引入 积分控制,以便消除静差,提高控制精度。
1.3.5 积分分离PID控制算法及仿真
具体实现的步骤是: 1、根据实际情况,人为设定阈值ε>0; 2、当∣e (k)∣>ε时,采用PD控制,可避免产生 过大的超调,又使系统有较快的响应; 3、当∣e (k)∣≤ε时,采用PID控制,以保证系统 的控制精度。
G(s)
U (s) E(s)
k p 1
1 T1s
TD s
1.1 PID控制原理
PID控制器各校正环节的作用如下:
比例环节:成比例地反映控制系统的偏差信号e(t),偏差 一旦产生,控制器立即产生控制作用,以减小偏差。 积分环节:主要用于消除静差,提高系统的无差度。积 分作用的强弱取决于积分时间常数T,T越大,积分作用 越弱,反之则越强。 微分环节:反映偏差信号的变化趋势,并能在偏差信号 变得太大之前,在系统中引入一个有效的早期修正信号, 从而加快系统的动作速度,减少调节时间。
1)T )
e(k) e(k
1)
dt
T
T
1.3.1 位置式PID控制算法
可得离散表达式:
u(k
)
k
p
(e(k
)
T T1
k e( j) TD
j0
T
(e(k) e(k
1)))
k p e(k )
ki
k
e(
j0
j)T
kd
e(k )
e(k T
1)
式中,Ki=Kp/Ti,Kd=KpTd,T为采样周期,K为 采样序号,k=1,2,……,e (k-1)和e (k)分别为 第(k-1)和第k时刻所得的偏差信号。

matlab实现pid仿真

matlab实现pid仿真

左图表示了本步骤的内容,以图片内 容为准。
sum的下面的符号变成了-,反馈回来 的信号相减,系统变成负反馈。
点击执行按钮,然后双击Scope,切 换到显示界面,出现熟悉的pid输出 波形。
双击pid控件可以调整PID的三个基本 参数,Proportional(比例常数), Integral(积分常数),Derivative (微分常数)。
谢谢观看
《先进模糊智能复合经典PID控制理论与应用及其Matlab实现》是2019年7月首都经济贸易大学 出版社出版的图书,作者是刘经纬、朱敏玲、周瑞。
《过程控制系统的MATLAB仿真》是2009年机械工业出版社出版的图书,作者是刘文定。
《MATLAB控制系统仿真与设计》是2010年11月1日机械工业出版社出版的图书, 作者是赵景波。
打开matlab2009,新建一个模型文件, 点击“开始”->"Simulink">“Library Browser”,打开 simulink库。
左图表示了本步骤的内容,以图片内 容为准。
在“Simulink Library Browser” 的库列表中找到“Simulink Extras”,点击右侧的“Additional Linear”。
我们试试将积分常数改为100,然后 再次运行,在Scope中点击 “Autoscale”,可以看到输出由平 滑变得震荡起来了。
左图表示了本步骤的内容,以图片内 容为准。
可以试着自己调整下PID的各个参数, 看看效果,加深理解。
用step信号做pid的输入信号效果会更明显些。
MATLAB/Simulink与控制系统仿真(第3版)是2012-01-01电子工业出版社出版的图书,由王正 林,王胜开,陈国顺等编著。

控制系统pid参数整定方法的matlab仿真

控制系统pid参数整定方法的matlab仿真

控制系统PID参数整定方法的MATLAB仿真1. 引言PID控制器是一种常见的控制算法,广泛应用于自动控制系统中。

其通过调节三个参数:比例增益(Proportional gain)、积分时间常数(Integral time constant)和微分时间常数(Derivative time constant),实现对被控对象的稳态误差、响应速度和稳定性等性能指标的调节。

PID参数的合理选择对控制系统的性能至关重要。

本文将介绍PID控制器的经典整定方法,并通过MATLAB软件进行仿真,验证整定方法的有效性。

2. PID控制器的整定方法2.1 手动整定法手动整定法是根据经验和试错法来选择PID参数的方法。

具体步骤如下:1.将积分时间常数和微分时间常数设为零,仅保留比例增益,将比例增益逐渐增大直至系统产生较大的超调现象。

2.根据超调响应的情况,调整比例增益,以使系统的超调量接近所需的范围。

3.逐步增加微分时间常数,观察系统的响应速度和稳定性。

4.增加积分时间常数,以减小系统的稳态误差。

手动整定法的优点是简单易行,但需要经验和反复试验,对控制系统要求较高。

2.2 Ziegler-Nichols整定法Ziegler-Nichols整定法是一种基于试探和试错法的自整定方法,该方法通过调整系统的输入信号,观察系统的输出响应,从而确定PID参数。

具体步骤如下:1.将I和D参数设为零,仅保留P参数。

2.逐步增大P参数,直到系统的输出出现大幅度的振荡。

3.记录下此时的P参数值,记为Ku。

4.根据振荡的周期Tp,计算出系统的临界增益Kc = 0.6 * Ku。

5.根据系统的类型选择相应的整定法则:–P型系统:Kp = 0.5 * Kc,Ti = ∞,Td = 0–PI型系统:Kp = 0.45 * Kc,Ti = Tp / 1.2,Td = 0–PID型系统:Kp = 0.6 * Kc,Ti = Tp / 2,Td = Tp / 82.3 Cohen-Coon整定法Cohen-Coon整定法是基于频域曲线拟合的方法,主要应用于一阶和二阶系统的整定。

PID控制算法matlab仿真实验

PID控制算法matlab仿真实验

1 数字PID控制在MATLAB仿真实验下图为数字PID控制算法仿真实验的示意图:
在模拟的过程中,我们分别改变其中的一个参数,而其他的两个参数不变的情况下,观测他的图像变化。

1、当改变比例时:
分析结果:当只改变比例,积分和微分都不变的情况下,比例系数越大,调节作用越强,但是存在调节误差。

2、当只改变积分时
分析结果:当系统中只改变积分,而比例和微风都不变时,可以减少或消除误差,但响应慢。

3、当只改变微分时
分析结果:当系统中加入了微分环节时,改善了系统的稳定性能和动态性能,但是,它的响应比较慢。

PID控制算法的MATLAB仿真应用

PID控制算法的MATLAB仿真应用

PID控制算法的MATLAB仿真应用首先,我们需要了解PID控制算法的原理。

PID控制算法由比例控制、积分控制和微分控制三部分组成。

比例控制是根据误差信号的大小与输出信号的差异来调节控制器输出信号的增益。

积分控制是根据误差信号的累积值来调节控制器输出信号的增益。

微分控制是根据误差信号的变化率来调节控制器输出信号的增益。

PID控制算法的输出信号可以表示为:u(t) = Kp * e(t) + Ki * ∫e(t) dt + Kd * de(t)/dt其中,e(t)是系统输入与目标值之间的误差信号,u(t)是控制器的输出信号,Kp、Ki和Kd分别是比例增益、积分增益和微分增益。

在MATLAB中使用PID控制算法进行仿真应用,可以按照以下步骤进行:1. 创建一个Simulink模型,可以通过在命令窗口中输入simulink打开Simulink库,然后从库中选择合适的模块进行建模。

在模型中,需要包括被控对象、PID控制器和反馈信号。

2. 配置PID控制器的参数。

在Simulink模型中,可以使用PID Controller模块配置PID控制器的参数,包括比例增益、积分增益和微分增益。

3. 配置被控对象的模型。

在Simulink模型中,可以使用Transfer Fcn模块来建立被控对象的传递函数模型,包括系统的输入和输出端口,以及系统的传递函数。

4. 配置反馈信号。

在Simulink模型中,可以使用Sum模块将被控对象的输出信号和控制器的输出信号相加,作为反馈信号传递给PID控制器。

5. 运行Simulink模型进行仿真。

在Simulink中,可以选择仿真的时间范围和时间步长,然后点击运行按钮开始仿真。

仿真结果可以在模型中的Scope或To Workspace模块中查看和分析。

6.通过调整PID控制器的参数来优化系统的稳定性和响应速度。

根据仿真结果,可以逐步调整PID控制器的比例增益、积分增益和微分增益,以达到期望的控制效果。

《MATLAB控制系统仿真》PID控制系统校正设计

《MATLAB控制系统仿真》PID控制系统校正设计

《MATLAB控制系统仿真》PID控制系统校正设计引言1.PID校正装置PID校正装置也称为PID控制器或PID调节器。

这里P,I,D分别表示比例、积分、微分,它是最早发展起来的控制方式之一。

2.PID校正装置的主要优点原理简单,应用方便,参数整定灵活。

适用性强,在不同生产行业或领域都有广泛应用。

鲁棒性强,控制品质对受控对象的变化不太敏感,如受控对象受外界扰动时,无需经常改变控制器的参数或结构。

在科学技术迅速发展的今天,出现了许多新的控制方法,但PID由于其自身的的优点仍然在工业过程控制中得到最广泛的应用。

PID控制系统校正设计1.设计目的1.1 熟悉常规PID控制器的设计方法1.2掌握PID参数的调节规律1.3学习编写程序求系统的动态性能指标2.实验内容2.1在SIMULINK窗口建立方框图结构模型。

2.2设计PID控制器,传递函数模型如下。

()⎪⎭⎫⎝⎛++=s T s T k s G d i p c 112.3修改PID 参数p K 、i T 和d T ,讨论参数对系统的影响。

3.4利用稳定边界法对PID 参数p K 、i T 和d T 校正设计。

2.5根据PID 参数p K 、i T 和d T 对系统的影响,调节PID 参数实现系统的超调量小于10%。

3. 实验操作过程3.1在SIMULINK 窗口建立模型图1 设计模型方框图3.2设计PID 控制器图2 PID控制器模型3.3利用稳定边界法对PID参数p K、i T和d T校正设计: 表1 PID稳定边界参数值校正后的响应曲线图3(a)校正后的响应曲线图3(b)校正后的响应曲线3.4调节PID参数实现系统的超调量小于10%:表2 PID 参数图4 响应曲线图4.规律总结1.P控制规律控制及时但不能消除余差,I控制规律能消除余差但控制不及时且一般不单独使用,D控制规律控制很及时但存在余差且不能单独使用。

2.比例系数越小,过渡过程越平缓,稳态误差越大;反之,过渡过程振荡越激烈,稳态误差越小;若p K过大,则可能导致发散振荡。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字PID控制器的MATLAB仿真江苏科技大学电子信息学院实验报告评定成绩指导教师实验课程:计算机控制技术宋英磊实验名称:数字PID控制器的MATLAB仿真学号: 1345733203 姓名: 胡文千班级: 13457332 完成日期: 2015年 11 月16日一、实验目的(1)掌握用SIMULINK对系统进行仿真的基本方法。

(2)对PID数字控制器进行仿真。

二、实验内容1、基本的PID控制在模拟控制系统中,控制器最常用的控制规律是PID控制。

模拟PID控制系统原理框图如图1-1所示。

比例y(t)r(t)+e(t)u(t)微分被控对象+-积分图1-1 模拟PID控制系统原理框图PID控制规律为:t,,1de(t),,u(t),ke(t),e(t)dt,T pD,,,0TdtI,,,,()1Us,,()1Gs,,k,,Ts或写成传递函数的形式 pD,,E(s)TsI,,133仿真1 以二阶线性传递函数为被控对象,进行模拟PID控制。

输入信号2s,25sk,60,k,1,k,3,仿真时取,采用ODE45迭代方法,仿真时间r(t),sin(2,*0.2t)pid10s。

仿真方法:在Simulink下进行仿真,PID控制由Simulink Extras节点中的PID Controller提供。

仿真程序:ex1_1.mdl,如图1-2所示。

图1-2 连续系统PID的Simulink仿真程序将该连续系统的模拟PID控制正弦响应结果截图后至于下面的空白处: 连续系统的模拟PID控制正弦响应如图1-3所示。

图1-3 连续系统的模拟PID控制正弦响应2、连续系统的数字PID控制仿真计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量。

因此连续PID控制算法不能直接使用,需要采用离散化方法。

在计算机PID控制中,使用的是数字PID控制器。

按模拟PID控制算法,以一系列的采样时刻点kT代表连续时间t,以矩形法数值积分近似代替积分,以一阶后向差分近似代替微分,可得离散PID位置式表达式: k,,TTD,,ukkekejekek(),(),(),((),(,1)),p,,TT,0jI,,kekek(),(,1)kekkejTk,(),(),,pidT,0jkpk,,k,kT式中,,e为误差信号(即PID控制器的输入),u为控制信号(即控制idpDTI器的输出)。

在仿真过程中,可根据实际情况,对控制器的输出进行限幅。

连续系统的数字PID控制可实现D/A及A/D的功能,符合数字实时控制的真实情况,计算机及DSP的实时PID控制都属于这种情况。

1Gs, 仿真2 设被控对象为一个电机模型传递函数,式中J=0.0067,B=0.1。

输()2Js,Bs入信号为,采用PID控制,其中。

采用ODE45方法求解连k,20,k,0.50.5sin(2,t)pd续被控对象方程。

2dydyYs()1仿真方法: 因为,所以J,B,u,另Gs,,()22dtdtUsJs,Bs(),y,y,,12,,则,因此连续对象微分方程函数ex3f.m如下 y1,y,y2,y,,y2,,(B/J)y,(1/J)*u,2,function dy = ex3f(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;控制主程序ex3.mclear all;close all;ts=0.001; %采样周期xk=zeros(2,1);%被控对象经A/D转换器的输出信号y的初值 e_1=0;%误差e(k-1)初值u_1=0;%控制信号u(k-1)初值for k=1:1:2000 %k为采样步数time(k) = k*ts; %time中存放着各采样时刻rin(k)=0.50*sin(1*2*pi*k*ts); %计算输入信号的采样值para=u_1; % D/AtSpan=[0 ts];[tt,xx]=ode45('ex3f',tSpan,xk,[],para); %ode45解系统微分方程%xx有两列,第一列为tt时刻对应的y,第二列为tt时刻对应的y导数xk = xx(end,:); % A/D,提取xx中最后一行的值,即当前y和y导数yout(k)=xk(1); %xk(1)即为当前系统输出采样值y(k)e(k)=rin(k)-yout(k);%计算当前误差de(k)=(e(k)-e_1)/ts; %计算u(k)中微分项输出u(k)=20.0*e(k)+0.50*de(k);%计算当前u(k)的输出 %控制信号限幅if u(k)>10.0u(k)=10.0;endif u(k)<-10.0u(k)=-10.0;end%更新u(k-1)和e(k-1)u_1=u(k);e_1=e(k);endfigure(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');%误差图将仿真获得的结果截图后附于下面的空白处:连续被控对象模拟PID控制响应如图1-4所示。

图1-4 连续被控对象模拟PID控制响应523500G(s),仿真3 设被控对象为,采样时间为1ms,对其进行离散32s,87.35s,10470s化。

针对离散系统的阶跃信号、正弦信号和方波信号的位置响应,设计离散PID控制器。

其中S为信号选择变量,S=1时是阶跃跟踪,S=2时为方波跟踪,S=3时为正弦跟踪。

Y(z)G(z),仿真方法: 求出G(s)对应的离散形式,其中Y(z)和U(z)是关于z的多项U(z)式,则可以得到其对应的差分表达式yout(k),,den(2)y(k,1),den(3)y(k,2),den(4)y(k,3) ,num(2)u(k,1),num(3)u(k,2),num(4)u(k,3)仿真程序:ex5.m%PID Controllerclear all;close all;ts=0.001;%采样周期sys=tf(5.235e005,[1,87.35,1.047e004,0]);%被控对象连续传递函数dsys=c2d(sys,ts,'z');%转换成离散z传递函数的形式[num,den]=tfdata(dsys,'v');%提取z传递函数中的分子和分母多项式系数u_1=0.0;u_2=0.0;u_3=0.0;%u(k-1)、u(k-2)、u(k-3)的初值y_1=0.0;y_2=0.0;y_3=0.0; %y(k-1)、y(k-2)、y(k-3)的初值 x=[0,0,0]'; %比例、微分、积分项的初值error_1=0;%e(k-1)的初值disp('S=1--step,S=2--sin,S=3--square')% S=1阶跃,S=2方波,S=3正弦S=input('Number of input signal S:')%接收输入信号代号for k=1:1:1500time(k)=k*ts;%各采样时刻if S==1 %阶跃输入时kp=0.50;ki=0.001;kd=0.001; %各项PID系数rin(k)=1; %阶跃信号输入 elseif S==2kp=0.50;ki=0.001;kd=0.001; %各项PID系数rin(k)=sign(sin(2*2*pi*k*ts)); %方波信号输入 elseif S==3kp=1.5;ki=1.0;kd=0.01; %各项PID系数rin(k)=0.5*sin(2*2*pi*k*ts); %正弦信号输入 endu(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID控制信号输出u(k)%控制信号输出限幅if u(k)>=10u(k)=10;endif u(k)<=-10u(k)=-10;end%根据差分方程计算系统当前输出y(k)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);%当前误差%更新u(k-1)、u(k-2)、u(k-3)、y(k-1)、y(k-2)、y(k-3)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); %比例输出x(2)=(error(k)-error_1)/ts; %微分输出x(3)=x(3)+error(k)*ts; %积分输出error_1=error(k); %更新e(k-1) endfigure(1); %作图plot(time,rin,'r',time,yout,'b');xlabel('time(s)'),ylabel('rin,yout');将仿真获得的结果截图后附于下面的空白处:S=1时是阶跃跟踪,如图1-5所示;S=2时为方波跟踪,如图1-6所示;S=3时为正弦跟踪,-7所示。

如图1图1-5 S=1时阶跃跟踪图1-6 S=2时方波跟踪图1-7 S=3时正弦跟踪。

仿真4 针对于上一例子中被控对象所对应的离散系统,设计代码仿真系统针对三角波和锯齿波的位置式响应。

此处附上你的代码:%PID Controllerclear 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;r_1=rand;y_1=0;y_2=0;y_3=0;x=[0,0,0]';error_1=0;disp('S=1--Triangle,S=2--Sawtooth,S=3--Random')% S=1三角,S=2锯齿,S=3随机S=input('Number of input signal S:')%接收输入信号代号 disp('D=1--Dynamic display,D~=1--Direct display')%D=1动画显示,D~=1直接显示D=input('D=')for k=1:1:3000time(k)=k*ts;kp=1.0;ki=2.0;kd=0.01;if S==1 %Triangle Signalif mod(time(k),2)<1rin(k)=mod(time(k),1);elserin(k)=1-mod(time(k),1);endrin(k)=rin(k)-0.5; endif S==2 %Sawtooth Signalrin(k)=mod(time(k),1.0); endif S==3 %Random Signalrin(k)=rand;vr(k)=(rin(k)-r_1)/ts; %Max speed is 5.0while abs(vr(k))>=5.0rin(k)=rand;vr(k)=abs((rin(k)-r_1)/ts);endendu(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controller%Restricting the output of controllerif u(k)>=10u(k)=10;endif u(k)<=-10u(k)=-10;end%Linear modelyout(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);r_1=rin(k);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 xi(k)=x(3);error_1=error(k);if D==1 %Dynamic Simulation Displayplot(time,rin,'b',time,yout,'r');pause(0.000001);endendplot(time,rin,'r',time,yout,'b');xlabel('time(s)');ylabel('rin,yout'); 将仿真获得的结果截图后附于下面的空白处:根据上一例子中被控对象所对应的离散系统,S=1时是三角波的位置式响应,如图1-8所示;S=2时是锯齿波的位置式响应,如图1-9所示。

相关文档
最新文档