学生--PID控制MATLAB仿真实验

合集下载

PID控制算法的MATLAB仿真研究Word版

PID控制算法的MATLAB仿真研究Word版

计算机控制技术实验报告题目PID控制算法的MATLAB仿真研究班级姓名学号一、 目的和要求1. 目的(1) 通过本课程设计进一步巩固PID 算法基本理论及数字控制器实现的认识和掌握,归纳和总结PID 控制算法在实际运用中的一些特性。

(2) 熟悉MATLAB 语言及其在控制系统设计中的应用,提高学生设计控制系统程序的能力。

2. 要求通过查阅资料,了解PID 算法的研究现状和研究领域,充分理解设计内容,对PID 算法的基本原理与运用进行归纳和总结,并独立完成设计实验和总结报告。

二、 基本内容及步骤1. 任务的提出采用纯滞后的一阶惯性环节作为系统的被控对象模型,传递函数为()1d sf Ke G s T sτ-=+,其中各参数分别为:, 630f T =,60d τ=。

对PID 控制算法的仿真研究可从以下四个方面展开。

(1) PID 控制器调节参数的整定。

PID 参数的整定对控制系统能否得到较好的控制效果是至关重要的,PID 参数的整定方法有很多种,可采用理论整定法(如ZN 法)或者实验确定法(如扩充临界比例度法、试凑法等),也可采用模糊自适应参数整定、遗传算法参数整定等新型的PID 参数整定方法。

选择某种方法对参数整定后,在MATLAB 上对系统进行数字仿真,绘制系统的阶跃响应曲线,从动态特性的性能指标评价系统控制效果的优劣。

(2)改变对象模型参数,通过仿真实验讨论PID 控制参数在被控对象模型失配情况下的控制效果。

由于在实际生产过程的控制中,用模型表示被控对象时往往存在一定误差,且参数也不可能是固定不变的。

在已确定控制器最优PID 调节参数下,仿真验证对象模型的三个参数()中某一个参数变化(不超过原值的±5%)时,系统出现模型失配时控制效果改变的现象并分析原因。

(3)执行机构非线性对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仿真实验

计算机控制技术实验指导书(MATLAB版)机电学院杨蜀秦编2012-11-19实验一 连续系统的模拟PID 仿真一、基本的PID 控制 在模拟控制系统中,控制器最常用的控制规律是PID 控制。

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

图1-1 模拟PID 控制系统原理框图PID 控制规律为:⎪⎪⎭⎫⎝⎛++=⎰dt t de T dt t e T t e k t u DtI p )()(1)()(0或写成传递函数的形式⎪⎪⎭⎫ ⎝⎛++==s T s T k s E s U s G D I p 11)()()( Ex1 以二阶线性传递函数ss 251332+为被控对象,进行模拟PID 控制。

输入信号)2.0*2sin()(t t r π=,仿真时取3,1,60===d i p k k k ,采用ODE45迭代方法,仿真时间10s 。

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

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

图1-2 连续系统PID 的Simulink 仿真程序连续系统的模拟PID 控制正弦响应结果如图1-3所示。

图1-3 连续系统的模拟PID 控制正弦响应仿真方法二:在仿真一的基础上,将仿真结果输出到工作空间中,并利用m 文件作图。

仿真程序:ex1_2.mdl ,程序中同时采用了传递函数的另一种表达方式,即状态方程的形式,其中[]0,01,1330,25010==⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡-=D C B A ,如图1-4所示。

m 文件作图程序:ex1_2plot.mclose all ;plot(t,rin,'k',t,yout,'k'); xlabel('time(s)'); ylabel('r,y');二、线性时变系统的PID 控制 Ex2 设被控对象为Jss Ks G +=2)(,其中)2sin(300400),6sin(1020t K t J ππ+=+=,输入信号为)2sin(5.0t π。

PID控制器MATLAB仿真

PID控制器MATLAB仿真

实验4 PID 控制器一、 实验目的1. 了解PID 控制器中P ,I ,D 三种基本控制作用对控制系统性能的影响。

2. 进行PID 控制器参数工程整定技能训练。

二、实验内容:题目1 了解P 、I 、D 三种控制器的作用:. )11(s T sT K G d i p c ++= 已知被控对象传递函数为3)1(1+sA 获取比例系数为1的系统阶跃响应曲线;实验步骤:在matlab 命令窗口中键入: clcclear allg0=tf(1,conv([1 2 1],[1 1])); kp=1;sys=feedback(kp*g0,1); step(sys);legend('Kp=1');grid on 运行得到的图象如图一:Step ResponseTime (sec)A m p l i t u d e图一B 调节比例系数,分析p K 过大和过小对系统动态性能(s p t t ,,σ)有何影响?稳态性能(稳定/ss e )的影响;实验步骤:在matlab 命令窗口中键入: clcclear allg0=tf(1,conv([1 2 1],[1 1])); kp=0.1:0.6:3;for i=1:length(kp)sys=feedback(kp(i)*g0,1); step(sys);legend('first','second','third','four','five'); grid on hold onend 运行之后得到的图象如图二:0246810121416180.10.20.30.40.50.60.70.80.91Step ResponseTime (sec)A m p l i t u d e图二分析:图二中绘制了Kp 从0.1到3时的系统单位阶跃响应曲线,可以看到,当比例作用增大时,闭环系统稳态误差变小,响应的震荡加剧,响应速度变快。

PID控制算法及MATLAB仿真分析

PID控制算法及MATLAB仿真分析

题目:以PID控制进行系统仿真学院自动化学院专业班级工业自动化111班学生姓名黄熙晴目录1 引言 (1)1.1本论文研究内容 (1)2 PID控制算法 (1)2.1模拟PID控制算法 (1)2.2数字式PID控制算法 (3)2.3PID控制算法的改进 (5)2.3.1微分项的改进 (5)2.3.2积分项的改进 (9)2.4模糊PID控制算法 (11)2.4.1模糊推理的系统结构 (12)2.4.2 PID参数在线整定原则 (12)2.5PID控制器研究面临的主要问题 .................................. 错误!未定义书签。

3 MATLAB编程和仿真 (13)3.1PID控制算法分析 (13)3.2MATLAB仿真 (15)4结语 (20)参考文献...................................................................................... 错误!未定义书签。

1 引言PID控制器以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。

光学表面等离子共振生物传感技术受温度影响很大,因此设计高精度的温度控制器对于生物分析仪十分重要。

研究PID的控制算法是PID控制器整定参数优化和设定的关键技术之一。

在工业过程控制中,目前采用最多的控制方式依然是PID方式。

它具有容易实现、控制效果好、鲁棒性强等特点,同时它原理简单,参数物理意义明确,理论分析体系完整,并为工程界所熟悉,因而在工业过程控制中得到了广泛应用。

在实际的应用中,许多被控过程机理复杂,具有高度非线性、时变不确定性和纯滞后等特点,特别是在噪声、负载扰动等因素的影响下,参数复杂烦琐的整定过程一直困扰着工程技术人员。

为了减少参数整定的工作量,克服因环境变化或扰动作用造成系统性能的降低,就要提出一种PID控制参数的自动整定。

1.2本论文研究内容本文在介绍传统的PID控制算法,并对传统算法改进后,在学习的基础上提出一种模糊参数自整定方法,这种模糊控制的PID算法必须精确地确定对象模型。

数字PID控制算法及Matlab仿真

数字PID控制算法及Matlab仿真

数字PID 控制算法及Matlab 仿真一.实验目的:1.学习数字PID 算法的基本原理。

2.学习数字PID 调节器参数调节方法。

二.实验属性及设备:验证性实验,使用电脑及相关专业软件。

三.实验原理:1.概述首先建立数字PID 直流电机控制模型,然后用Matlab 的LTI 状态分析工具箱进行仿真,并绘制转速及控制电压变化图形。

图:kk k y r e -=2.位置式数字PID 算法公式010j )(u e e K e K e K u k k D kk I k P k +-⨯+⨯+⨯=-=∑3.增量式数字PID 算法公式)2()(211---+-⨯+⨯+-⨯=∆k k k D k I k k P k e e e K e K e e K u kk k u u u ∆+=-14.Matlab LTI 工具箱函数(作为了解内容)例:一台150kW 直流电动机,额定电压220V ,额定转速1000r/min ,额定电流700A ,R a =0.05Ω,L d =2mH ,假设负载及电动机转动总惯量GD 2=125kg ·m 2,则:)min/185.0100005.0*700220r V n R I U C N a N N e ⋅=-=-=Am N C C e T /767.155.9⋅==s R L T a a a 04.005.01023=⨯==-s C C R GD T T e a m 051.0767.1185.037505.01253752=⨯⨯⨯==mA kg C C e M ⋅==18.003.1传递函数为4902526521051.000204.041.51/1)()(222++=++=++=s s s s s T s T T C s u s y m m a e利用Matlab 建立传递函数方法为:sys=tf(270.5,[1,40,50])当采样间隔为ts=0.01s 时,则其z 变换(离散)传递函数为:dsys=c2d(sys,ts,'z')Matlab 输出为(Transfer function):0.1217z +0.112-----------------------------z^2-1.736z +0.7788Sampling time:0.01获得分子和分母的函数为:[num,den]=tfdata(dsys,'v')如果电机输入电压状态为u k ,输出转速状态为y k 。

matlab实验四基于Matlab的PID控制器实验

matlab实验四基于Matlab的PID控制器实验

实验四 基于Matlab 的PID 控制器实验一、实验目的1、掌握使用MATLAB 进行根轨迹法的控制系统设计2、掌握使用MATLAB 进行Bode 图法的系统的控制系统设计3、掌握使用MATLAB 进行PID 控制器设计 二、实验内容和要求1. 实验内容(1)练习MATLAB6.5或以上版本(2)练习掌握MATLAB 进行控制系统的设计 2. 实验要求:每位学生独立完成。

三、实验主要仪器设备和材料装有MATLAB6.5或以上版本的PC 机一台。

四、实验方法、步骤及结果测试1. 实验方法:上机练习。

2.实验步骤:(1)根据如图二阶系统,其中,0.7,0.5/n rad s ζω==,当有一阶跃信号作用于系统时,试计算特征量r p s p t t t σ、、、。

程序源代码: Wn=0.5; Rr=0.7; numo=[Wn^2];deno=conv([1,0],[1,2*Wn*Rr]); [num,den]=cloop(numo,deno,-1); G=tf(num,den); step(G); [Y ,T] =step(G);[pos,tp,tr,ts2]=stepchar(Y,T);pos =4.7092tp =8.8343tr =4.2594ts2 =11.8317其中stepchar函数如下function [pos,tp,tr,ts2]=stepchar(y,t)%find pos and tp%返回阶跃响应输出y列向量的最大值mp及对应下标值ind [mp,ind]=max(y);%求取时间向量的长度dimtdimt=length(t);%确定最终的稳定值yssyss=y(dimt);pos=100*(mp-yss)/yss;tp=t(ind);% find rise time tr%确定输出为0.1时的时刻i=1;j=1;k=1;q=1;while y(i)<0.1i=i+1;endt1=t(i);%确定输出为0.9时的时刻 while y(j)<0.9 j=j+1; end t2=t(j); tr=t2-t1; % find ts2 i=dimt+1; n=0; while n==0 i=i-1; if i==1 n=1; elseif y(i)>=1.02 n=1; end endt1=t(i);i=dimt+1;n=0; while n==0 i=i-1; if y(i)<=0.98 n=1; end t2=t(i); if t1>t2 ts2=t1; else ts2=t2; end end(2)设被控对象的传递函数为0()(1)(0.51)kG s s s s =++试其设计要求:1v K s -=10,相角裕度为50度,幅值裕度为10dB ,试确定一个校正装置,以满足性能指标。

用MATLAB对PID控制做简单的仿真

用MATLAB对PID控制做简单的仿真

⽤MATLAB 对PID 控制做简单的仿真PID 控制是⽬前⼯程上应⽤最⼴的⼀种控制⽅法,其结构简单,且不依赖被控对象模型,控制所需的信息量也很少,因⽽易于⼯程实现,同时也可获得较好的控制效果。

PID 控制是将误差信号e(t)的⽐例(P),积分(I)和微分(D)通过线性组合构成控制量进⾏控制,其输出信号为:下⾯⽤MATLAB 软件对PID 控制做简单的仿真描述。

1. 建⽴⼆阶负反馈控制系统,其开环传递函数为:clc; clear all; close all;Go = tf(1,conv([2,1],[5,1]));2. ⽐例控制,输出与输⼊偏差成⽐例,即直接将误差信号放⼤或缩⼩。

⽐例控制的传递函数为:取不同的⽐例系数,绘制系统的单位阶跃响应曲线:Kp = [0.5,2,5,10];for m = 1:4 sys = feedback(Kp(m)*Go,1); step(sys); hold on;end随着K P 值的增⼤,系统响应速度加快,但系统的超调也随着增加,调节时间也随着增长。

当K P 增⼤到⼀定值后,闭环系统将趋于不稳定。

⽐例控制具有抗⼲扰能⼒强、控制及时、过渡时间短的优点,但存在稳态误差,增⼤⽐例系数可提⾼系统的开环增益,减⼩系统的稳态误差,从⽽提⾼系统的控制精度,但这会降低系统的相对稳定性,甚⾄可能造成闭环系统的不稳定,因此,在系统校正和设计中,⽐例控制⼀般不单独使⽤。

3. 微分控制,输出与输⼊偏差的微分成⽐例,即与偏差的变化速度成⽐例。

微分控制(与⽐例控制同时使⽤)的传递函数为:取不同的微分系数,绘制系统的单位阶跃响应曲线:Kp = 10;u(t)=[e(t)+e(t)dt +]K P 1T I ∫t 0T D de(t)dt(s)=G O 1(2s +1)(5s +1)(s)=G C K P(s)=(1+s)G C K P T DTd = [0,0.4,1,4];for m = 1:4 G1 = tf([Kp*Td(m),Kp],[0,1]); sys = feedback(G1*Go,1); step(sys); hold on;end随着T D 值的增⼤,系统超调量逐渐减⼩,动态特征有改善。

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

计算机控制技术实验指导书(MATLAB版)机电学院杨蜀秦编2012-11-19实验一 连续系统的模拟PID 仿真一、基本的PID 控制 在模拟控制系统中,控制器最常用的控制规律是PID 控制。

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

比例微分积分被控对象r(t)-y(t)u(t)e(t)++图1-1 模拟PID 控制系统原理框图PID 控制规律为:⎪⎪⎭⎫⎝⎛++=⎰dt t de T dt t e T t e k t u DtI p )()(1)()(0或写成传递函数的形式⎪⎪⎭⎫ ⎝⎛++==s T s T k s E s U s G D I p 11)()()( Ex1 以二阶线性传递函数ss 251332+为被控对象,进行模拟PID 控制。

输入信号)2.0*2sin()(t t r π=,仿真时取3,1,60===d i p k k k ,采用ODE45迭代方法,仿真时间10s 。

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

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

图1-2 连续系统PID 的Simulink 仿真程序连续系统的模拟PID 控制正弦响应结果如图1-3所示。

图1-3 连续系统的模拟PID 控制正弦响应仿真方法二:在仿真一的基础上,将仿真结果输出到工作空间中,并利用m 文件作图。

仿真程序:ex1_2.mdl ,程序中同时采用了传递函数的另一种表达方式,即状态方程的形式,其中[]0,01,1330,25010==⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡-=D C B A ,如图1-4所示。

m 文件作图程序:ex1_2plot.mclose all ;plot(t,rin,'k',t,yout,'k'); xlabel('time(s)'); ylabel('r,y');二、线性时变系统的PID 控制 Ex2 设被控对象为Jss Ks G +=2)(,其中)2sin(300400),6sin(1020t K t J ππ+=+=,输入信号为)2sin(5.0t π。

采用PD 控制,取1,0,10===d i p k k k 。

仿真程序:ex2.mdl ,如图1-4和图1-5所示。

图1-4 ex2的Simulink 程序图1-5 Simulink 子系统实验二 数字PID 控制计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量。

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

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

一、位置式PID 控制算法按模拟PID 控制算法,以一系列的采样时刻点kT 代表连续时间t ,以矩形法数值积分近似代替积分,以一阶后向差分近似代替微分,可得离散PID 位置式表达式:∑∑==--++=⎪⎪⎭⎫ ⎝⎛--++=kj di p kj DIp Tk e k e k T j e k k e k k e k e T T j e T Tk e k k u 00)1()()()())1()(()()()(式中,D p d Ip i T k k T k k ==,,e 为误差信号(即PID 控制器的输入),u 为控制信号(即控制器的输出)。

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

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

Ex3 设被控对象为一个电机模型传递函数BsJs s G +=21)(,式中J=0.0067,B=0.1。

输入信号为)2sin(5.0t π,采用PD 控制,其中5.0,20==d p k k 。

采用ODE45方法求解连续被控对象方程。

因为Bs Js s U s Y s G +==21)()()(,所以u dt dy B dt y d J =+22,另y y y y &==2,1,则⎪⎩⎪⎨⎧+-==/J)*u ((B/J)y y y y 12221&&,因此连续对象微分方程函数ex3f.m 如下 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/A tSpan=[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.0 u(k)=10.0; endif u(k)<-10.0 u(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');%误差图Ex4 被控对象是一个三阶传递函数ss s 1047035.8752350023++,采用Simulink 与m 文件相结合的形式,利用ODE45方法求解连续对象方程,主程序由Simulink 模块实现,控制器由m 文件实现。

输入信号为一个采样周期1ms 的正弦信号。

采用PID 方法设计控制器,其中05.0,2,5.1===d i p k k k 。

误差初始化由时钟功能实现,从而在m 文件中实现了误差的积分和微分。

控制主程序:ex4.mdl图2-1 Simulink 仿真程序控制子程序:ex4f.mfunction [u]=ex4f(u1,u2)%u1为Clock ,u2为图2-1中Sum 模块输出的误差信号e 的采样值 persistent errori error_1if u1==0 %当Clock=0时,即初始时,e(k)=e(k-1)=0 errori=0 error_1=0 endts=0.001; kp=1.5; ki=2.0; kd=0.05;error=u2;errord=(error-error_1)/ts;%一阶后向差分误差信号表示的误差微分 errori=errori+error*ts;%累积矩形求和计算的误差的积分u=kp*error+kd*errord+ki*errori;%由PID 算式得出的当前控制信号u(k) error_1=error;%误差信号更新三、离散系统的数字PID 控制仿真 Ex5 设被控对象为ss s s G 1047035.87523500)(23++=,采样时间为1ms ,对其进行离散化。

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

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

求出G(s)对应的离散形式)()()(z U z Y z G =,其中Y(z)和U(z)是关于z 的多项式,则可以得到其对应的差分表达式)3()4()2()3()1()2()3()4()2()3()1()2()(-+-+-+------=k u num k u num k u num k y den k y den k y den k yout仿真程序:ex5.m%PID Controller clear 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');Ex6针对于Ex5被控对象所对应的离散系统,设计针对三角波、锯齿波和随机信号的位置式响应。

相关文档
最新文档