先进PID控制及MATLAB仿真第3章专家PID学习心得及疑问
- 格式:doc
- 大小:751.06 KB
- 文档页数:79
matlab实训心得体会《MATLAB实训心得体会》一、引言随着科学技术的飞速发展,数值计算和仿真技术在各个领域的应用越来越广泛。
MATLAB作为一款强大的数学计算软件,在工程、物理、经济等多个领域都发挥着重要的作用。
为了更深入地掌握MATLAB的应用,我参加了为期一个月的MATLAB实训项目。
通过这次实训,我对MATLAB有了更全面的认识,也收获了许多宝贵的经验和技能。
二、实训过程在实训过程中,我们主要进行了以下几个方面的工作:1.基础知识学习:首先,我们系统地学习了MATLAB的基础知识,包括语法、数据类型、函数、程序流程控制等。
这些基础知识是后续学习的基础,对于我们理解和应用MATLAB至关重要。
2.编程实践:在掌握了基础知识后,我们开始进行编程实践。
通过编写各种类型的程序,如矩阵运算、数据处理、图形绘制等,来提高我们的编程能力和解决问题的能力。
3.项目实战:最后,我们参与了几个实际项目。
在这些项目中,我们不仅将所学的知识应用到实际问题中,还学会了如何与团队成员协作、如何解决突发问题等。
三、实训收获经过一个月的实训,我取得了显著的进步,具体表现在以下几个方面:1.提高了编程能力:通过大量的编程实践,我的MATLAB编程能力得到了很大的提高。
现在,我已经能够熟练地运用MATLAB解决各种复杂的问题。
2.加深了对MATLAB的理解:实训让我更深入地了解了MATLAB的工作原理和应用场景。
我意识到,MATLAB不仅仅是一款编程软件,更是一个强大的数学计算和仿真平台。
3.培养了团队协作能力:在项目实战中,我学会了如何与团队成员进行有效的沟通和协作。
我们共同解决问题、分享经验,最终完成了项目目标。
4.增强了自信心:通过实训,我成功地解决了许多实际问题,这让我对自己的能力和潜力充满了信心。
我相信,在未来的学习和工作中,我会更加自信地面对各种挑战。
四、展望未来虽然我在实训中取得了一定的成绩,但我深知自己还有很多不足之处需要改进。
题目:以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调节心得(大全)第一篇:PID调节心得(大全)鉴于最近一直在研究算法,所以颇有些心得体会,整理了一下,觉得比较实用的一些PID的原理,及具体的调节方案,供大家参考学习,调节这个参量的值,需要耐心和经验,但是更多的是我们得静下心来调整,希望大家加油,马上我们就要交锋了。
如有疏忽之处请大家见谅。
模拟PID调节器模拟PID调节器的微分方程和传输函数PID调节器是一种线性调节器,它将给定值r(t)与实际输出值c(t)的偏差的比例(P)、积分(I)、微分(D)通过线性组合构成控制量,对控制对象进行控制。
PID调节器各校正环节的作用1、比例环节:即时成比例地反应控制系统的偏差信号e(t),偏差一旦产生,调节器立即产生控制作用以减小偏差。
2、积分环节:主要用于消除静差,提高系统的无差度。
积分作用的强弱取决于积分时间常数TI,TI越大,积分作用越弱,反之则越强。
3、微分环节:能反应偏差信号的变化趋势(变化速率),并能在偏差信号的值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。
常用的控制方式1、P控制2、PI控制3、PD控制4、PID控制PID算法的两种类型1、位置型控制――2、增量型控制微分先行和输入滤波1、微分先行微分先行是把对偏差的微分改为对被控量的微分,这样,在给定值变化时,不会产生输出的大幅度变化。
而且由于被控量一般不会突变,即使给定值已发生改变,被控量也是缓慢变化的,从而不致引起微分项的突变。
微分项的输出增量为2、输入滤波输入滤波就是在计算微分项时,不是直接应用当前时刻的误差e(n),而是采用滤波值e(n),即用过去和当前四个采样时刻的误差的平均值,再通过加权求和形式近似构成微分积分项的改进一、抗积分饱和积分作用虽能消除控制系统的静差,但它也有一个副作用,即会引起积分饱和。
在偏差始终存在的情况下,造成积分过量。
当偏差方向改变后,需经过一段时间后,输出u(n)才脱离饱和区。
专家PID控制设计的实践体会随着工业自动化领域的不断发展,PID控制算法作为一种常用的控制方法,被广泛应用于工业生产过程中。
在实际的生产实践中,PID控制的设计和调试是非常重要的环节。
本文将从专家PID控制设计的实践体会出发,探讨PID控制在工业自动化中的应用,并共享相关经验和教训。
一、专家PID控制设计的基本原理我们需要了解PID控制的基本原理。
PID控制是一种反馈控制系统,它由比例项(P)、积分项(I)和微分项(D)三个部分组成。
比例项用于实时调节系统的响应速度,积分项用于消除系统静态误差,微分项用于抑制系统的震荡。
专家PID控制是在传统PID控制的基础上,引入了专家经验和知识,通过专家系统来自动调整PID参数,提高控制系统的性能和鲁棒性。
二、专家PID控制设计的实践经验1.系统建模与参数调试在实践中,我们首先需要对控制对象进行建模,得到系统的数学模型。
根据系统的动态特性,调试PID控制参数。
值得注意的是,专家PID控制设计需要对专家知识进行建模,将模糊化的专家经验转化为数学表达式,这对控制系统的稳定性和鲁棒性至关重要。
2.实时监测与调整在实际应用中,控制系统往往会受到外部扰动和参数变化的影响,因此需要实时监测控制系统的状态,并进行参数调整。
专家PID控制设计可以通过专家系统的知识库,实时分析控制系统的运行状态,自动调整PID参数,提高系统的适应性和鲁棒性。
3.故障诊断与处理在生产实践中,控制系统往往会出现故障,如传感器损坏、执行机构失效等。
专家PID控制设计可以借助专家系统的故障诊断功能,及时发现和处理控制系统的故障,保证生产过程的稳定和安全。
三、专家PID控制设计的实践教训1. 知识库的建立和更新在实践中,专家PID控制设计需要建立一个完善的知识库,包括专家知识、系统模型和控制规则等。
需要定期对知识库进行更新和维护,以适应控制系统的多样化和变化。
2. 系统稳定性与性能衡量在进行专家PID控制设计时,需要综合考虑系统的稳定性和性能,避免过度调节导致系统的不稳定性,同时要考虑系统的控制性能,如超调量、调节时间和稳定偏差等指标。
控制系统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整定法是基于频域曲线拟合的方法,主要应用于一阶和二阶系统的整定。
matlab仿真心得体会【篇一:matlab心得体会】matlab心得体会班级:电气08-3班姓名:张强学号:24matlab一个高级的距阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。
用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(m文件)后再一起运行。
新版本的matlab语言是基于最为流行的c++语言基础上的,因此语法特征与c++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。
使之更利于非计算机专业的科技人员使用。
而且这种语言可移植性好、可拓展性极强,这也是matlab能够深入到科学研究及工程计算各个领域的重要原因。
在对升压-降压(boost-buck)式变换器电路理论分析的基础上,建立基于simulink的升压-降压式变换器的仿真模型直流斩波就是将直流电压变换成固定的或可调的直流电压,也称dc/dc变换。
使用直流斩波技术,不仅可以实现调压的功能,而且还可以达到改善网侧谐波和提高功率因数的目的。
升压-降压式变换电路即升降压斩波电路,主要应用于已具有直流电源需要调节直流电压的场合。
升压-降压式变换器电路图如右图1-1所示。
设电路中电感l值很大,电容c值也很大,使电感电流il和电容电压u0基本为恒值。
设计原理是:当可控开关v出于通态时,电源经v向电感l供电使其贮存能量,此时电流为i1,方向如图1-1中所示。
同时,电容c维持输出电压基本恒定并向负载r供电。
此后,使v关断,电感l中贮存的能量向负载释放,电流为i2,方向如图1-1中所示。
可见,负载电压极性为上负下正,与电源电压极性相反,因此该电路也称作反极性斩波电路。
稳定时,一个周期t内电感l两端电压ul对时间的积分为零,当v 处于通态期间时,ul=e;而当v处于端态期间时,ul=-出电压为 u0。
于是,etonu0toff=,所以输图1-2中给出了电源电流i1和负载电流i2的波形,设两者的平均值分别为i1和i2,当电流脉动足够小时,有 i1tont i2=off可得如下如果v、vd为没有损耗的理想开关时,则ei1=u0i2,其输出功率和输入功率相等,可将其看作直流变压器。
先进PID控制及MATLAB仿真第3章专家PID学习心得及疑问因为课题需要,刚开始学习专家控制器matlab仿真,用的是刘金锟先进PID控制及MATLAB仿真。
有一些问题想和大家交流,向大家请教。
1、第三章专家PID中,第一条规则应按最大输出。
在p96例3-1中输出分别为0.45、0.40、0.12、0.01。
如果我的输入信号不是阶跃信号,而是从0到1缓慢变化的s形曲线,如v=[1-cos(pi/50*t)]*735。
输出还可以设定为0.45、0.40、0.12、0.01吗?2、专家PID控制中第二条规则当误差处在增大阶段,前面讲的输出为,而例3-1中rule2输出u(k)=u_1+1.5*kp*x(1)。
这与上式为什么不同?我觉得kp*x(2)+ki*x(1)+kd*[x(2)-x2_1]等于u(k)的导数,对不对?它与kp*x(1)相等吗?为什么在例3-1中不用?3、假设某时刻误差处在变大阶段,且x(1)=0.25。
程序执行时首先执行rule1,因为误差大于0.2,则u(k)= 0.12。
然后再判断rule2,因为条件也满足,误差值在变大,也大于0.05所以u(k)又变为u_1+1.5*kp*x(1)。
这样程序是不是存在二义性?而且在我应用此算法仿真一五阶系统时(详见附件),rule5误差值小于0.001,则输出震荡,而改为0.1,则输出正常。
这样,很多时候,只要误差小于0.1,则执行rule1,u(k)先等于0.1,再执行rule2,等于u_1+1.5*kp*x(1),再执行rule5,等于0.4*x(1)+0.475*x(3)。
这样,使得rule2、rule4根本就不起作用。
我觉得各误差段应既无遗漏又不重叠。
不知我的理解对否?4、本来我对采样时间的理解是采样时间越短,仿真精度越高。
但我发现只改变采样时间,其它不变,则输出大不相同,甚至震荡。
一开始我以为我的控制器没设计好,后来我找了书上不少例子试了试,例3-1、1-9、1-12都有此现象。
自动控制原理课外作业PL PD、PID控制器系统的Mat lab仿真及特点分析大学机自学院自动化系电气工程及其自动化专业:王文涛学号:121234052015年1月13日PI D 控制器系统的Mat lab 仿真及特点分析:王文涛 学号:12123405摘要:比例、积分、微分控制简称 PID (Propotional-Integrate-Differential) 控制,它是工业生产过程中最常用的控制算法,在工业生产过程控制中,PID 控 制占了 85390%,随着科学技术的发展,特别是计算机的发展,许多先进的PID 控制涌现出来得到了广泛的应用。
那么这次我们就用mat lab 来对带有PID 控制 器的系统进行仿真来研究分析PID 控制器的特点。
关键词:PID 控制器;mat lab 仿真;控制系统一、概述PID 控制器乂称为PID 调节器,是按偏差的比例P 、积分I 、微分进行控制 的调节器的简称,它主要针对控制对象来进行参数调节。
PID 控制分为模拟式PID 控制和数字式PID 控制。
模拟式PID 控制是以模拟的连续控制为基础的,理想的 模拟式PID 控制算法为:式中K p ——比例放大系数;7\一一积分时间常数;T D ——微分时间常数。
另外,e (t) = r(t)-y(t)为系统输入和输出在t 时刻的偏差值。
理想PID 控制器的传递函数为:,、〃(s) 1°(沪呢rKp[i+乔+珂p 作用的输出与偏差成比例,成为比例控制作用;I 作用的输出与偏差的积 分成比例,成为积分控制作用;D 作用的输出与偏差的微分成比例,称为微分控 制作用。
控制流程图为u(t) = K pe(t) + 1 f 1 Y j e (t)dt + T D 微分二.在单位阶跃函数作用下,若反馈系统控制参数的数学模型传递函 数为:1G °(S )= (s+l)(S + 2)(S+3)(S + 4)方块图如下:列写出PI, PD, PID 控制器的数学表达式,并用MTLAB 软件对该系统进行仿真, 通过仿真曲线和理论说明相结合的方式,说明三种控制器的特点。
Matlab与Simulink系统仿真学习心得班级:07610 学号:072019 姓名:马楠第一部分:Matlab学习心得以及实践Matlab是迄今为止我所见到过的功能最为强大实用范围宽广的软件。
的确Matlab适用于教学,航天,网络仿真等等。
而且提供了很多功能强大的工具箱,并且最为突出的是它自带的很全面细致的帮助文档,无论你是初学者还是老手都会惊叹于此,你也不必去花很多时间去熟悉那些繁杂的命令,并且很容易通过这些帮助文档得到关于这些函数最精准的用法。
Matlab是一个建立在矩阵操作上的软件,我想要想真正懂得并理解Matlab与一般的语言比如C 或者java的区别,那么你就应该真正理解矩阵的思想。
而且要熟悉Matlab对矩阵存储的方式(在下文中我会详细解释与之相关的内容),这样对提高你的代码执行效率与易懂性都有很大的帮助。
但是Matlab究竟应该怎么定位呢一个编程软件,一个数学工具,一个工具箱,一个开发引擎,一个仿真工具,一个虚拟现实软件……的确要精准的说出Matlab的作用很难,或许去定义这个东西到底是用来干什么的并不重要,It is just a tool。
关于Matlab的学习方法,我想与别的语言有很大不同,对于汇编或者C,我们应当很注重底层的一些操作,比如栈或者队列存储数据的方式,int或者double类型转换的时候产生的数据丢失,或者指针方面很头疼的一些东西,但是对于Matlab你根本不必去注重这些东西,也不必去清除的记得那个函数的具体调用方式,那个函数的内容与结构等等。
你需要的只是相当用一个笔记本写下你一步一步实现目标的步骤而已。
一种草稿纸式的语言。
你所学的东西很大部分都是为你要做的目标来服务的,也许这就是当初面向对象式语言产生的原因,但是Matlab就是这种语言的一个代表。
好了,就说到这里了,接下来是我自己学习中对Matlab的一些应用中所遇到的问题以及思考方式和解决办法。
1 离散信号卷积:N1=input('N1=');%输入N1N2=input('N2=');%输入N2k1=0:(N1-1);%定义序列f1的对应序号向量k2=0:(N2-1);% 序列f2的对应序号向量f1=ones(1,N1);%f1为阶跃序列f2=*k2;%f2为斜坡序列[f,k]=dconv(f1,f2,k1,k2)%求离散卷积其中dconv函数的代码为:function [f,k]=dconv(f1,f2,k1,k2)%The function of compute f=f1*f2% f: 卷积和序列f(k)对应的非零样值向量% k:序列f(k)的对应序号向量% f1: 序列f1(k)非零样值向量% f2: 序列f2(k)的非零样值向量% k1: 序列f1(k)的对应序号向量% k2: 序列f2(k)的对应序号向量f=conv(f1,f2) %计算序列f1与f2的卷积和fk0=k1(1)+k2(1); %计算序列f非零样值的起点位置k3=length(f1)+length(f2)-2; %计算卷积和f的非零样值的宽度k=k0:k0+k3 %确定卷积和f非零样值的序号向量subplot(2,2,1)stem(k1,f1) %在子图1绘序列f1(k)时域波形图title('f1(k)')xlabel('k')ylabel('f1(k)')subplot(2,2,2)stem(k2,f2) %在图2绘序列f2(k)时波形图title('f2(k)')xlabel('k')ylabel('f2(k)')subplot(2,2,3)stem(k,f); %在子图3绘序列f(k)的波形图title('f(k)f1(k)与f2(k)的卷积和f(k)')xlabel('k')ylabel('f(k)')h=get(gca,'position');h(3)=*h(3);set(gca,'position',h) %将第三个子图的横坐标范围扩为原来的倍2 一次物理实验中的数据处理,关于非线性电阻。
matlab学习心得体会(精选3篇)matlab学习心得体会一:matlab学习心得 matlab中有丰富的图形处理能力,提供了绘制各种图形、图像数据的函数。
他提供了一组绘制二维和三维曲线的函数,他们还可以对图形进行旋转、缩放等操作。
matlab内部还包含丰富的数学函数和数据类型,使用方便且功能非常强大。
本学期通过对matlab的系统环境,数据的各种运算,矩阵的分析和处理,程序设计,绘图,数值计算及符号运算的学习,初步掌握了matlab的实用方法。
通过理论课的讲解与实验课的操作,使我在短时间内学会使用matlab,同时,通过上机实验,对理论知识的复习巩固实践,可以自己根据例题编写设计简单的程序来实现不同的功能,绘制出比较满意的二维三维图形,在实践中找到乐趣。
matlab是一个实用性很强,操作相对容易,比较完善的工具软件,使用起来比较方便,通过操作可以很快看到结果,能够清晰的感觉到成功与失败,虽然课程中也会出现一些小问题,但是很喜欢这门课程。
matlab学习心得体会二:matlab学习心得(463字) 学习matlab是听说它是一个功能强大的数学软件,但是正被微积分的计算缠身,听说有一个高级的计算器当然高兴,以后可以偷懒了,当然现在不能偷懒。
听说关于自动化的计算特别复杂,如果有一种软件能帮忙解题,那是一种极大的解脱,有益于缩短研究时间。
目前我只知道有三种数学软件,都是国外的,没有国内的,差距挺大的。
matlab学起来挺顺手的,比c语言简单。
但是深入学习的时候却困难重重,因为很多知识都没有学习,就算知道那些函数,也没有什么用处。
老师布置的作业难度大,写一篇实验,大一什么都不会,写一篇这种论文谈何容易。
最多也就会一些数值计算、符号计算、简单绘图,根本不会什么实验。
学习matlab体会最多的是这个软件的功能强大,好多数学题都被轻易的解出。
但是有一点遗憾,不知是我不会用,还是它没个功能,已知空间的电荷分布,求空间的电场分布。
先进PID控制及MATLAB仿真第3章专家PID学习心得及疑问因为课题需要,刚开始学习专家控制器matlab仿真,用的是刘金锟先进PID控制及MATLAB仿真。
有一些问题想和大家交流,向大家请教。
1、第三章专家PID中,第一条规则应按最大输出。
在p96例3-1中输出分别为0.45、0.40、0.12、0.01。
如果我的输入信号不是阶跃信号,而是从0到1缓慢变化的s形曲线,如v=[1-cos(pi/50*t)]*735。
输出还可以设定为0.45、0.40、0.12、0.01吗?2、专家PID控制中第二条规则当误差处在增大阶段,前面讲的输出为,而例3-1中rule2输出u(k)=u_1+1.5*kp*x(1)。
这与上式为什么不同?我觉得kp*x(2)+ki*x(1)+kd*[x(2)-x2_1]等于u(k)的导数,对不对?它与kp*x(1)相等吗?为什么在例3-1中不用?3、假设某时刻误差处在变大阶段,且x(1)=0.25。
程序执行时首先执行rule1,因为误差大于0.2,则u(k)= 0.12。
然后再判断rule2,因为条件也满足,误差值在变大,也大于0.05所以u(k)又变为u_1+1.5*kp*x(1)。
这样程序是不是存在二义性?而且在我应用此算法仿真一五阶系统时(详见附件),rule5误差值小于0.001,则输出震荡,而改为0.1,则输出正常。
这样,很多时候,只要误差小于0.1,则执行rule1,u(k)先等于0.1,再执行rule2,等于u_1+1.5*kp*x(1),再执行rule5,等于0.4*x(1)+0.475*x(3)。
这样,使得rule2、rule4根本就不起作用。
我觉得各误差段应既无遗漏又不重叠。
不知我的理解对否?4、本来我对采样时间的理解是采样时间越短,仿真精度越高。
但我发现只改变采样时间,其它不变,则输出大不相同,甚至震荡。
一开始我以为我的控制器没设计好,后来我找了书上不少例子试了试,例3-1、1-9、1-12都有此现象。
这怎么解释?那这样仿真,和其他控制方法比较时还有可信度吗?也必须在相同采样时间下吗?5、在simulink模型仿真时,怎样设置采样时间?在configuration parameter中,有sample time,但都不能设定具体值。
在solver中,当采用固定步长时,不能设置采样时间。
当采用变步长ode45时,max step time和min step time又不能设置为相等。
难道只有采用默认采样时间?而默认的又是多少呢?6、input delay和transport delay 、iodelay到底有什么区别啊?带延迟环节的传递函数应该用哪个来表示,还是都可以?7、在例3-1加入滞后,sys=tf(5.235e005,[1,87.35,1.047e004,0],'inputdelay',76000000);结果输出和不加滞后完全一样,不管滞后有多大。
我自己的控制器也是如此。
是专家PID抵抗滞后能力强,还是滞后加的不对?8、例3-2.s.m中最后一句sys=[sys; x(3)];是什么意思?输出为什么是加上x(3)的增广矩阵?这些问题困扰我好长时间了,百思不得其解,书上也找不到相关的资料。
如能解惑,不胜感激。
谢谢我的专家控制器附:我的专家控制器%Expert PID Controllerclear all;close all;ts=0.001;sys=tf(158.91e6,[0.7596 133.728 1.405e4 6.237e5 1.015e7 9.015e6]); dsys=c2d(sys,ts,'z');[num,den]=tfdata(dsys,'v');u_1=0.0;u_2=0.0;u_3=0.0;u_4=0.0;u_5=0.0;y_1=0;y_2=0;y_3=0;y_4=0;y_5=0;x=[0,0,0]';x2_1=0;kp=1.44;ki=1.28;kd=0.008;error_1=0;for k=1:1:5000time(k)=k*ts;rin(k)=1; %Tracing Jieyue Signalu(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controller%Expert control ruleif abs(x(1))>0.8 %Rule1:Unclosed control firstly u(k)=0.45;elseif abs(x(1))>0.40u(k)=0.30;elseif abs(x(1))>0.20u(k)=0.2;elseif abs(x(1))>0.10u(k)=0.03;elseif abs(x(1))<=0.05 %Rule5:Integration separation PI control u(k)=0.25*x(1)+1.75*x(3);elseif x(1)*x(2)>0|(x(2)==0) %Rule2if abs(x(1))>=0.1u(k)=u_1+1.5*[kp*x(2)+ki*x(1)];elseu(k)=u_1+0.6*[kp*x(2)+ki*x(1)];endelseif x(1)*x(2)<0&x(2)*x2_1<0 %Rule4if abs(x(1))>=0.1u(k)=u_1+2*kp*error_1;elseu(k)=u_1+0.4*kp*error_1;endendif (x(1)*x(2)<0&x(2)*x2_1>0)|(x(1)==0) %Rule3u(k)=u(k);end%Restricting the output of controllerif u(k)>=2u(k)=2;endif u(k)<=0u(k)=0;end%Linear modelyout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3-den(5)*y_4-den(6)*y_5+num(2 )*u_1+num(3)*u_2+num(4)*u_3+num(5)*u_4+num(6)*u_5;error(k)=rin(k)-yout(k);%----------Return of PID parameters------------%u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);y_5=y_4;y_4=y_3;y_3=y_2;y_2=y_1;y_1=yout(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(1);plot(time,rin,'b',time,yout,'r');xlabel('time(s)');ylabel('rin,yout');grid on;刚学PID的一点想法PID这几天稍微看了一点点的PID,今天有了小小头绪,于是,就想把自己的想法写出来,欢迎拍砖。
最开始的时候,是先了解什么是PID。
PID实指“比例proportional”、“积分integral”、“微分derivative”,如果我们要求被控制的对象最终趋于一个稳定的结果,一般就可以使用PID算法。
假设说,有一辆速度为1m/s的小车,我们要求他的速度改变为5m/s,要完成这样的一件事,我们必须要有,1.小车驱动装置(用程序控制它输出多大的电压,电压决定驱动的马力),2.被驱动器控制的部分(即小车),3.检测当前速度的装置(当前速度与目标速度的差称为误差)。
本来,我们可以给小车一个驱动力让小车加速,直到检测到小车速度达到5m/s,撤去驱动力。
然而,这样做会带来几个问题。
1,当小车速度达到5m/s时,从装置检测到这个速度,通知控制器,让控制器改变输出的电压,这一个过程需要耗费一定时间,在这个时间里面,小车速度可能增加了不少。
2,撤去驱动力后,外界条件如摩擦会让小车速度进一步改变。
PID算法可以在一定误差内解决这些问题。
使用PID算法时,大致是这样的。
每一个采样周期,通过速度检测装置获得当前速度,传入程序,通过程序计算得到电压控制小车得到新速度。
下一个采样周期又把新速度传入,获得新电压,再传入速度,再获得电压,如此反复。
PID算法的关键,是如何根据当前得到的速度值,输出一个“恰当”的电压,以致小车最终能够趋于稳定。
PID算法采用比例,积分,微分三种方法进行控制。
三种方法都有自己对应的一个常量(pconst,iconst,dconst)。
这三个变量都需要在实验中多次尝试得出。
一般地,先把与算法相关的量放入一个结构体,方便调用。
srtuct PID{double pconst, //比例控制常量iconst, //积分控制常量dconst; //微分控制常量double ErrorSum; //误差累计double iMax,iMin; //积分上下限double Vnew; //当前速度};比例:Vnew = GetV(); //获得当前速度error = aim - Vnew; //误差=目标速度 - 当前速度pTerm = error*pconst; //比例项的值就是误差乘上比例常量Motor(pTerm); //让电机根据得出的值工作有时候,我们增大比例常数可以让小车更快的到达目标速度,但是过大的比例常数又容易产生过冲,即速度超过目标速度5m/s,然后再减速,再加速,在减速。
这样,系统产生振荡,然而,振荡的结果不一定能趋于稳定。
积分:Vnew = GetV(); //获得当前速度ErrorSum += (aim - Vnew); //每一次的误差累计起来if(ErrorSum > iMax)ErrorSum = iMax;else if(ErrorSum < iMin)ErrorSum = iMin;iTerm = ErrorSum *iconst; //误差和乘上积分常量Motor(iTerm); //让电机根据得出的值工作一般我们都让比例配合积分一起使用,即PI算法,类似上面的程序,得出pTerm和iTerm,然后Motor(pTerm+iTerm)。
PI控制一般会比纯比例控制花费更少时间使小车到达目标值,但是我们必须避免积分饱和,通常的做法是像上面程序一样设定iMax和iMin。