工学自动控制原理matlab控制系统仿真课件_第1页
工学自动控制原理matlab控制系统仿真课件_第2页
工学自动控制原理matlab控制系统仿真课件_第3页
工学自动控制原理matlab控制系统仿真课件_第4页
工学自动控制原理matlab控制系统仿真课件_第5页
已阅读5页,还剩211页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自动控制原理

与Matlab自动控制原理

与Matlab1Matlab软件工具

在控制系统分析和综合中的应用Matlab基本特点控制系统在Matlab中的描述进行部分分式展开控制系统的时间响应分析控制系统的频域响应分析控制系统的根轨迹图系统稳定性分析Simulink仿真工具Matlab软件工具

在控制系统分析和综合中的应用Matla21、matlab基本特点Matlab简介:1980年前后,美国moler博士构思并开发;最初的matlab版本是用fortran语言编写,现在的版本用c语言改写;1992年推出了具有划时代意义的matlab4.0版本;并于1993年推出了其windows平台下的微机版,现在比较新的版本是6.5版1、matlab基本特点3Matlab语言特点:Matlab以复数矩阵为最基本的运算单元,既可以对它整体地进行处理,也可以对它的某个或某些元素进行单独地处理。在matlab中,数据的存储/输入/输出都是以矩阵为基础的,矩阵和其它变量不需要预先定义。matlab语言最基本的赋值语句结构为变量名列表=表达式变量名为matlab语句的返回值;等号右边是表达式的定义,它可以是矩阵,也可是函数调用Matlab语言特点:Matlab以复数矩阵为最基本的运算单4等号右边的表达式可以由分号结束,也可以由逗号或换行结束,但它们的含义是不同的。如果用分号结束,则左边的变量结果将不在屏幕上显示出来,否则将把左边返回矩阵的内容全部显示出来。如»A=[1,0,1;1,0,0;2,1,0];»B=[1,0,2;2,1,1;1,0,1]B=102211101等号右边的表达式可以由分号结束,也可以由逗号或换行结束,但它5在matlab下,矩阵A和矩阵B的乘积(假定其中A,B矩阵是可乘的)可以简单地由运算C=A*B求出»C=A*BC=203102415在matlab下,矩阵A和矩阵B的乘积(假定6而D=A.*B称点乘积运算,即表示A和B矩阵的相应元素之间直接进行乘法运算,然后将结果赋给D矩阵,点乘积运算要求A和B矩阵的维数相同。»D=A.*BD=102200200而D=A.*B称点乘积运算,即表示A和B矩阵的相应7在MATLAB中多项式由行向量组成,这些行向量包含了降次排列的多项式系数。例如多项式p(s)=1s3+3s2+0s1+4s0输入>>p=[1304];>>r=roots(p)r=-3.3553e+001.7765e-01+1.0773e+00j1.7765e-01-1.0773e+00j>>p=poly(r)p=1.0003.0000.000-0.000j4.000+0.000j输入多项式并求根在MATLAB中多项式由行向量组成,这些行向量包含8

Matlab下提供了两种文件格式:m文件,matlab函数M文件是普通的ascii码构成的文件,在这样的文件中只有由matlab语言所支持的语句,类似于doc下的批处理文件,它的执行方式很简单,用户只需在matlab的提示符>>下键入该m文件的文件名,这样matlab就会自动执行该m文件中的各条语句。它采用文本方式,编程效率高,可读性很强。Matlab下提供了两种文件格式:m文件,matla9Matlab函数是最常用的特殊m文件,该函数是由function语句引导,其基本格式如下

Function返回变量列表=函数名(输入量列表)注释说明语句段

函数体语句调用时在matlab的提示符下键入函数名,并包括输入变量。类似于c语言的子程序调用。如Functionplot_sin(xmin,xmax)X=xmin:min(0.01,(xmax-xmin)/100):xmax;Plot(x,sin(x));%ThisisademoMatlab函数是最常用的特殊m文件,该函数是由functi10要分析系统,首先需要能够描述这个系统。在线性系统理论中,一般常用的数学模型形式有:传递函数模型(系统的外部模型);状态方程模型(系统的内部模型);零极点增益模型和部分分式模型等。这些模型之间都有着内在的联系,可以相互进行转换。2、控制系统在matlab中的描述要分析系统,首先需要能够描述这个系统。在线性系11一、传递函数模型对线性定常系统,式中s的系数均为常数,且a1不等于零,这时系统在MATLAB中可以方便地由分子和分母系数构成的两个向量唯一地确定出来,这两个向量分别用num和den表示。 分子:num=[b1,b2,…,bm,bm+1]

分母:den=[a1,a2,…,an,an+1]

注意:它们都是按s的降幂进行排列的。一、传递函数模型12在MATLAB中零极点增益模型用[z,p,K]矢量组表示。即:z=[z1,z2,…,zm]p=[p1,p2,...,pn]K=[k]函数tf2zp()可以用来求传递函数的零极点和增益。二、零极点增益模型K为系统增益,zi为零点,pj为极点在MATLAB中零极点增益模型用[z,p,K]矢量组表示。即13利用下面的语句就可以表示这个系统:

传递函数的形式sys=tf(num,den)其中tf()代表传递函数的形式描述系统,

零极点形式sys1=zpk(sys)

传递函数形式和零极点形式之间可以相互转化,语句为 [z,p,k]=tf2zp(num,den)[num,den]=zp2tf(z,p,k)当传递函数复杂时,应用多项式乘法函数conv()等实现。利用下面的语句就可以表示这个系统:14举例:传递函数描述

1)》num=[12,24,0,20];den=[24622];2)借助多项式乘法函数conv(卷积)来处理:》num=4*conv([1,2],conv([1,6,6],[1,6,6]));》den=conv([1,0],conv([1,1],conv([1,1],conv([1,1],[1,3,2,5]))));举例:传递函数描述15》num=[1,11,30,0];》den=[1,9,45,87,50];[z,p,k]=tf2zp(num,den)》z=0-6-5p=-3.0000+4.0000i-3.0000-4.0000i-2.0000-1.0000k=1零极点增益模型:》num=[1,11,30,0];z=p=k=零极点增益模型16》s=zpk(z,p,k,-1)Zero/pole/gain:1

z(z+6)(z+5)1

(z+2)(z+1)(z^2+6z+25)输入命令:》s=zpk(z,p,k,-1)Zero/pole/gai17控制系统常用到并联系统,这时就要对系统函数进行分解,使其表现为一些基本控制单元和的形式。函数[r,p,k]=residue(num,den)对两个多项式的比进行部分展开,以及把传函分解为微分单元的形式。向量num和den是按s的降幂排列的多项式系数。部分分式展开后,留数返回到向量r,极点返回到列向量p,常数项返回到k。[num,den]=residue(r,p,k)可以将部分分式转化为多项式比三、部分分式展开控制系统常用到并联系统,这时就要对系统函数进行分解,使其表现18num和den分别表示传递函数的分子和分母的系数,即

num=[bo,bl,…,bn]den=[1,al.…,an]命令[r,p,k]=residue(num,den)将求出传递函数的部分分式展开式中的留数、极点和余项,即得到

num和den分别表示传递函数的分子和分母的系数,即19例:对于下列系统传递函数输入命令

>>

num=[0,1,3];

>>

den=[1,3,2];

>>[r,p,k]=residue(num,den)

r=2.0000-1.0000p=-1.0000-2.0000k=[]即得到例:对于下列系统传递函数输入命令r=2.0000即得到20反之,利用下列命令

[num,den]=residue(r,p,k)可以将部分分式展开式返回到传递函数多项式之比的形式,

即得到num=0.00001.00003.0000den=1.00003.00002.0000

>>

[num,den]=residue(r,p,k)反之,利用下列命令>>[num,den]=residue21当包含m重极点时,部分分式展开式将包括下列m项:例对于下列系统传递函数输入命令

>>

num=[0,1,2,3];

>>

den=[1,3,3,1];

>>

[r,p,k]=residue(num,den)当包含m重极点时,部分分式展开式将包括下列m项:例对于下22r=1.00000.00002.0000p=-1.0000-1.0000-l.0000k=[]即r=233、结构图模型串联一个开环控制系统可以通过G1

(s)与G2

(s)两个环节的串联而得到,利用series()函数可以求串联连接的传递函数,函数的具体形式为:

[num,den]=series(num1,den1,num2,den2)并联当系统是以并联的形式连接时,利用parallel()函数可得到系统的传递函数。指令的具体形式为:%将并联连接的传递函数进行相加。[num,den]=parallel(num1,den1,num2,den2)3、结构图模型串联[num,den]=parallel(24串联函数的用法如下:>>num1=[11];den2=[12];>>num2=[1];den1=[50000];

>>[num,den]=series(num1,den1,num2,den2);>>printsys(num,den)num/den=(

s+1

)

500s^3+1000s^2series函数的用法例如G1(s)和G2(s)串联连接的传递函数分别为:串联函数的用法如下:>>num1=[11];den2=[125反馈

系统以反馈方式构成闭环,则系统的闭环传递函数为:求闭环传递函数的MATLAB函数有两个:cloop()和feedback()其中cloop()函数只能用于H

(s)=1(即单位反馈)的情况。

cloop()函数的具体用法为:[num,den]=cloop(numg,deng,sign)其中numg和deng分别为G

(s)的分子和分母多项式,sign=1为正反馈,sign=-1为负反馈(默认值)。

feedback()函数的用法为:[num,den]=feedback(numg,deng,numh,denh,sign)

其中numh为H(s)的分子多项式,denh为分母多项式。反馈求闭环传递函数的MATLAB函数有两个:cloop(26闭环反馈系统的结构图如图2-70所示,被控对象G(s)和控制部分Gc(s)以及测量环节H

(s)的传递函数分别为:图2-70闭环反馈系统的结构图闭环反馈系统的结构图如图2-70所示,被控对象G(s)和控制27应用series()函数和feedback()函数求闭环传递函数的MATLAB指令如图2-71所示:

>>numg=[1];deng=[500];>>numc=[11];denc=[12];>>numh=[1];denh=[110];>>[num1,den1]=series(numc,denc,numg,deng);>>[num,den]=feedback(num1,den1,numh,denh,-1);>>printsys(num,den)num/den=

s^2+11s+10)

5s^4+60s^3+100s^2+s+1图2-71feedback()函数的应用应用series()函数和feedback()函数求28练习编程实现传递函数模型、零极点模型及部分方式模型练习编程实现传递函数模型、零极点模型及部分方式模型294、线性系统的时间响应分析Matlab的Control工具箱提供了很多线性系统在特定输入下仿真的函数,例如连续时间系统在阶跃输入激励下的仿真函数step(),脉冲激励下的仿真函数impulse()及任意输入激励下的仿真函数lsim()等求取系统单位阶跃响应:step()求取系统的冲激响应:impulse()求取系统任意激励响应:lsim()4、线性系统的时间响应分析Matlab的Control工具箱30如果用户对具体的响应数值不感兴趣,而只想绘制出系统的阶跃响应曲线,则可以由如下的格式调用step(sys,t)或step(sys)step()函数的用法y=step(sys,t):其中sys可以由tf()或zpk()函数得到,

t为选定的仿真时间向量,一般可以由t=0:step:end等步长地产生出来。此函数只返回仿真数据而不在屏幕上画仿真图形,返回值y为系统在仿真时刻各个输出所组成的矩阵。y=step(num,den,t)[y,x,t]=step(sys):此时时间向量t由系统模型的特性自动生成,

状态变量x返回为空矩阵。如果用户对具体的响应数值不感兴趣,而只想绘制出系统的阶跃响应31任意输入下的仿真函数lsim()的调用格式稍有不同,因为在此函数的调用时还应该给出一个输入表向量,该函数的调用格式为[y,x]=lsim(sys,u,t)impulse()函数的用法求取脉冲激励响应的调用方法与step()函数基本一致。y=impulse(num,den,t);y=impulse(sys,t)[y,x,t]=impulse(num,den);impulse(num,den);impulse(num,den,t)任意输入下的仿真函数lsim()的调用格式稍有不同,因为在此32[y,x]=lsim(sys,u,t)式中,u为给定输入构成的列向量,它的元素个数应该和t的个数是一致的。当然该函数若调用时不返回参数,也可以直接绘制出响应曲线图形。例如

sys=tf(num,den)t=0:0.01:5;u=sin(t);lsim(sys,u,t)为单输入模型sys对u(t)=sin(t)在5秒之内的输入响应仿真。任意输入下的仿真函数lsim()[y,x]=lsim(sys,u,t)任意输入下的仿真函数l33对于典型二阶系统根据其响应时间的估算公式可以确定。对于高阶系统往往其响应时间很难估计,一般采用试探的方法,把t选大一些,看看响应曲线的结果,最后再确定其合适的仿真时间。一般来说,先不指定仿真时间,由Matlab自己确定,然后根据结果,最后确定合适的仿真时间。在指定仿真时间时,步长的不同会影响到输出曲线的光滑程度,一般不易取太大。仿真时间t的选择对于典型二阶系统根据其响应时间的估算公式34MATLAB还提供了离散时间系统的仿真函数,包括阶跃响应函数dstep(),脉冲响应函数dimpulse()和任意输入响应函数dlsim()等,它们的调用方式和连续系统的不完全一致,读者可以参阅MATLAB的帮助,如在MATLAB的提示符>>下键入helpdstep来了解它们的调用方式

离散时间系统的仿真函数MATLAB还提供了离散时间系统的仿真函数,包括阶跃响应函数35step-阶跃响应impulse-脉冲响应lsim-对指定输入的连续输出gensig-对LSIM产生输入信号stepfun-产生单位阶跃输入时域分析常用函数如下:step-阶跃响应时域分析常用函数如下:36格式:

[u,t]=gensig(type,tau)功能:按指定类型type和周期tau生成特定类型的激励信号。Type可取为:‘sin’、’square’、’pulse’例:产生一个周期为4秒的方波(

持续时间10秒,采样周期0.1秒)

gensig-对LSIM产生输入信号[u,t]=gensig('square',4,10,0.1);格式:gensig-对LSIM产生输入信号[u,t]=37stepfun-产生单位阶跃输入例产生一阶跃信号命令:>>t=0:1:10;>>to=1;>>y=stepfun(t,to)结果y=01111111111stepfun-产生单位阶跃输入例产生一阶跃信号命38MATLAB程序:[u,t]=gensig(‘square’,6,12,0.1);plot(t,u,’r-.’);holdon;sys=tf([1,1],[1,2,5]);lsim(sys,u,t);求系统方波响应MATLAB程序:[u,t]=gensig(‘square’39例对于下列系统传递函数下列MATLABPrograml1.1将给出该系统的单位阶跃响应曲线。该单位阶跃响应曲线如图1所示。----MATLABPrograml1.1----num=[0,0,50];den=[25,2,1];step(num,den)gridtitle('Unit-StepResponseofG(s)=50/(25s^2+2s+1)')例对于下列系统传递函数----MATLABProgra40[工学]自动控制原理matlab控制系统仿真课件41状态方程与输出方程的组合称为状态空间表达式,又称为动态方程,经典控制理论用传递函数将输入—输出关系表达出来,而现代控制理论则用状态方程和输出方程来表达输入—输出关系,揭示了系统内部状态对系统性能的影响。状态空间描述在MATLAB中,系统状态空间用(A,B,C,D)矩阵组表示。状态方程与输出方程的组合称为状态空间表达式,又称为动态方程,42例考虑下列系统

试求该系统的单位阶跃响应曲线。

虽然用MATLAB求该系统的单位阶跃响应曲线时,不需要求它的传递函数表达式,这里导出这种表达式,以便作为参考。

例考虑下列系统

试求该系统的单位阶跃响应曲43

对于给定的系统,传递矩阵G(s)为对于给定的系统,传递矩阵G(s)为44该系统包含两个输入量和两个输出量,根据考虑不同的输入信号和输出信号,可以定义4个传递函数。当考虑信号u1为输入量时,我们假设u2为零,反之亦然。这4个传递函数为该系统包含两个输入量和两个输出量,根据考虑不同的输入45利用下列命令:step(A,B,C,D)

可以画出4个单独的阶跃响应曲线,程序如下:A=[-1-1;6.50];B=[11;10];

C=[10;01];D=[00;00];

step(A,B,C,D)利用下列命令:step(A,B,C,D)

可以画出4个单46

47例对于下列系统传递函数下列MATLABPrograml1.2将给出该系统的单位脉冲响应曲线。该单位脉冲响应曲线如图2所示。----MATLABPrograml1.2----num=[0,0,50];den=[25,2,1];impulse(num,den)gridtitle('Unit-ImpulseResponseofG(s)=50/(25s^2+2s+1)')例对于下列系统传递函数----MATLABProgra48[工学]自动控制原理matlab控制系统仿真课件49

在MATLAB中没有斜坡响应命令,可利用阶跃响应命令求斜坡响应,先用s除G(s),再利用阶跃响应命令。例如,考虑下列闭环系统:对于单位斜坡输人量在MATLAB中没有斜坡响应命令,可利用阶跃响应50----MATLABPrograml1.3----num=[0,0,0,50];den=[25,2,1,0];t=0:0.01:100;step(num,den,t)gridtitle('Unit-SteprampResponseofG(s)=50/(25s^2+2s+1)')下列MATLABPrograml1.3给出该系统单位斜坡响应曲线。该单位斜坡响应曲线如图3所示。----MATLABPrograml1.3----下列MA51[工学]自动控制原理matlab控制系统仿真课件525、控制系统的频域响应分析已知该系统的频率响应为如果有一个频率向量w,命令格式:Gw=polyval(num,sqrt(-1)*w)./polyval(den,sqrt(-1)*w);其中num和den分别为系统的分子分母多项式系数向量。5、控制系统的频域响应分析已知该系统的频率响应为53频域分析的一般方法频率特性是指系统在正弦信号作用下,稳态输出与输入之比对频率的关系特性。频率特性函数与传递函数有直接的关系,记为:频域分析法是应用频率特性研究控制系统的一种典型方法。通常将频率特性用曲线的形式进行表示,包括对数频率特性曲线和幅相频率特性曲线简称幅相曲线,MATLAB提供了绘制这两种曲线的函数。求取系统对数频率特性图(波特图):bode()求取系统奈奎斯特图(幅相曲线图或极坐标图):nyquist()频域分析的一般方法频率特性是指系统在正弦信号作用下,稳态输出54对数频率特性图(波特图)绘制:bode()bode()函数的调用格式为:[m,p,w]=bode(num,den,w)这里,num,den和前面的叙述一样,w为频率点构成的向量,该向量最好由logspace()函数构成。m,p,w分别代表Bode响应的幅值向量、相位向量和角频率。相角以度为单位,幅值可转换为分贝单位,格式为:magdb=20*log(mag)

对数频率特性图(波特图)绘制:bode()bode()函55如果用户只想绘制出系统的Bode图,而对获得幅值和相位的具体数值并不感兴趣,则可以由以下更简洁的格式调用bode()函数bode(num,den,w)或更简洁地bode(num,den)这时该函数会自动地根据模型的变化情况选择一个比较合适的频率范围。对数频率特性图(波特图)绘制:bode()如果用户只想绘制出系统的Bode图,而对获得幅值和相位的具体56logspace()函数格式:logspace(a,b,n)

在(10a~10b)之间产生n个对数行向量;当没有n时,产生50个对数行向量。例:logspace(0,2,5)ans=1.00003.162310.000031.6228100.0000logspace()函数57调用格式为:nyquist(num,den):可绘制出以连续时间多项式传递函数表示的系统的极坐标图。nyquist(num,den,w):可利用指定的角频率矢量绘制出系统的极坐标图。当不带返回参数时,直接在屏幕上绘制出系统的极坐标图(图上用箭头表示w的变化方向,负无穷到正无穷)。[re,im,w]=nyquist(num,den,w)返回实部re和虚部im及角频率点w矢量(为正的部分)。然后用plot(re,im)绘制出对应w从负无穷到零变化的部分。Nyquist曲线绘制:nyquist()函数调用格式为:Nyquist曲线绘制:nyquist()函数58bode-频率响应伯德图nyquist-频率响应乃奎斯特图nichols-频率响应尼柯尔斯图freqresp-求取频率响应数据margin-幅值裕量与相位裕量pzmap-零极点图使用时可以利用他们的帮助,如helpbode。另外,命令ltiview可以画时域响应和频域响应图,利用helpltiview查看使用说明。常用频域分析函数如下:bode-频率响应伯德图常用频域分析函数如下59在分析系统性能的时候经常涉及到系统的幅值裕量与相位裕量的问题,使用Control工具箱提供的margin()函数,可以直接求出系统的幅值裕量与相位裕量。该函数的调用格式为[Gm,Pm,wcg,wcp]=margin(num,den)其中:幅值裕量Gm、相位裕度裕量Pm,幅值裕量和相位裕量处相应的频率值wcg和wcp。margin()函数在分析系统性能的时候经常涉及到系统的幅值裕60freqs()函数:模拟滤波器特性freqs用于计算由矢量a和b构成的模拟滤波器H(s)=B(s)/A(s)的幅频响应。h=freqs(b,a,w)用于计算模拟滤波器的幅频响应,其中实矢量w用于指定频率值,返回值h为一个复数行向量,要得到幅值必须对它取绝对值,即求模。[h,w]=freqs(b,a)自动设定200个频率点来计算频率响应,这200个频率值记录在w中。[h,w]=freqs(b,a,n)设定n个频率点计算频率响应。不带输出变量的freqs函数,将在当前图形窗口中绘制出幅频和相频曲线,其中幅相曲线对纵坐标与横坐标均为对数分度。freqs()函数:模拟滤波器特性freqs用于计算由矢量a61例对于下列系统传递函数下列MATLABPrograml1.4将给出该系统对应的伯德图。其伯德图如图4所示。----MATLABPrograml1.4----num=[0,0,50];den=[25,2,1];bode(num,den)gridtitle('BodeDiagramofG(s)=50/(25s^2+2s+1)')例对于下列系统传递函数----MATLABProgra62[工学]自动控制原理matlab控制系统仿真课件63如果希望从0.01弧度/秒到1000弧度/秒画伯德图,可输入下列命令:

w=logspace(-2,3,100)bode(num,den,w)该命令在0.01弧度/秒和100弧度/秒之间产生100个在对数刻度上等距离的点如果希望从0.01弧度/秒到1000弧度/秒画伯德图,可输入64例对于下列系统传递函数

下列MATLABPrograml1.5将给出该系统对应的伯德图。其伯德图如图5所示。----MATLABPrograml1.5----num=[10,30];den1=[1,2,0];den2=[1,1,2];den=conv(den1,den2);w=logspace(-2,3,100);bode(num,den,w)gridtitle('BodeDiagramofG(s)=10(s+3)/s(s+2)(s^2+s+2)')例对于下列系统传递函数----MATLABProgra65[工学]自动控制原理matlab控制系统仿真课件66例对于下列系统传递函数

下列MATLABPrograml1.6将给出该系统对应的乃奎斯图。其乃奎斯特图如图6所示。----MATLABPrograml1.6----num=[0,0,50];den=[25,2,1,];nyquist(num,den)title('NyquistPlotofG(s)=50/(25s^2+2s+1)')例对于下列系统传递函数----MATLABProgra67[工学]自动控制原理matlab控制系统仿真课件68例考虑由下列方程定义的系统:

该系统包含两个输入量和两个输出量。这里存在4种正弦输出-输入关系:Y1(jω)/Ul(jω)、Y2(jω)/Ul(jω)、

Y1(jω)/U2(jω)和Y2(jω)/U2(jω)。试画出该系统的奈魁斯特图。

MATLABProgram10

A=[-1-1;6.50];B=[11;10];C=[10;01];D=[00;00];nyquist(A,B,C,D)例考虑由下列方程定义的系统:

该系统包含两69[工学]自动控制原理matlab控制系统仿真课件706、控制系统的根轨迹图

通常采用下列MATLAB命令画根轨迹

rlocus(num,den)利用该命令,可以在屏幕上得到画出的根轨迹图。增益向量K自动被确定。命令rlocus既适用于连续系统,也适用于离散时间系统。对于定义在状态空间内的系统,其命令为

rlocus(A,B,C,D)MATLAB在绘图命令中还包含自动轴定标功能。6、控制系统的根轨迹图通常采用下列MATLAB命令画根轨迹71rlocus(a,b,c,d)或者rlocus(num,den):根据SISO开环系统的状态空间描述模型和传递函数模型,直接在屏幕上绘制出系统的根轨迹图。开环增益的值从零到无穷大变化。rlocus(a,b,c,d,k)或rlocus(num,den,k):通过指定开环增益k的变化范围来绘制系统的根轨迹图。r=rlocus(num,den,k)或者[r,k]=rlocus(num,den):不在屏幕上直接绘出系统的根轨迹图,而根据开环增益变化矢量k,返回闭环系统特征方程1+k*num(s)/den(s)=0的根r,它有length(k)行,length(den)-1列,每行对应某个k值时的所有闭环极点。或者同时返回k与r。若给出传递函数描述系统的分子项num为负,则利用rlocus函数绘制的是系统的零度根轨迹。(正反馈系统或非最小相位系统)根轨迹图绘制:rlocus()函数rlocus(a,b,c,d)或者rlocus(num,de72例对于一单位反馈控制系统,其开环传递函数为下列MATLABPrograml1.7将给出该系统对应的根轨迹图。其根轨迹图如图7所示。---------MATLABPrograml1.7-----------num=[1,3];den1=[1,2,0];den2=[1,1,2];den=conv(den1,den2);rlocus(num,den)v=[-1010-1010];axis(v)gridtitle('Root-LocusPlotofG(s)=K(s+3)/s(s+2)(s^2+s+2)')例对于一单位反馈控制系统,其开环传递函数为-------73[工学]自动控制原理matlab控制系统仿真课件747、系统稳定性分析给定一个控制系统,可利用MATLAB在它的时域、频域图形分析中看出系统的稳定性,并可直接求出系统的相角裕量和幅值裕量。此外,我们还可通过求出特征根的分布更直接地判断出系统稳定性。如果闭环系统所有的特征根都为负实部则系统稳定。7、系统稳定性分析给定一个控制系统,可利用MATLAB在它的75[p,z]=pzmap(a,b,c,d):返回状态空间描述系统的极点矢量和零点矢量,而不在屏幕上绘制出零极点图。[p,z]=pzmap(num,den):返回传递函数描述系统的极点矢量和零点矢量,而不在屏幕上绘制出零极点图。pzmap(a,b,c,d)或pzmap(num,den):不带输出参数项,则直接在s复平面上绘制出系统对应的零极点位置,极点用×表示,零点用o表示。pzmap(p,z):根据系统已知的零极点列向量或行向量直接在s复平面上绘制出对应的零极点位置,极点用×表示,零点用o表示。零极点图绘制:pzmap()函数[p,z]=pzmap(a,b,c,d):返回状态空间描述系76rlocfind()函数MATLAB提供了函数rlocfind()来找出给定的一组根(闭环极点)对应的根轨迹增益。其用法如下:[k,p]=rlocfind(a,b,c,d)或者[k,p]=rlocfind(num,den)它要求在屏幕上先已经绘制好有关的根轨迹图。然后,此命令将产生一个光标以用来选择希望的闭环极点。命令执行结果:k为对应选择点处根轨迹开环增益;p为此点处的系统闭环特征根。不带输出参数项[k,p]时,同样可以执行,只是此时只将k的值返回到缺省变量ans中。rlocfind()函数MATLAB提供了函数rlocfin77sgrid()函数sgrid:在现存的屏幕根轨迹或零极点图上绘制出自然振荡频率wn、阻尼比矢量z对应的格线。sgrid(‘new’):是先清屏,再画格线。sgrid(z,wn):则绘制由用户指定的阻尼比矢量z、自然振荡频率wn的格线。sgrid()函数sgrid:在现存的屏幕根轨迹或零极点图上78用来求取满足条件的向量的下标向量,以列向量表示。例如条件式为real(p>0),其含义就是找出极点向量p中满足实部的值大于0的所有元素下标,并将结果返回到ii向量中去。这样如果找到了实部大于0的极点,则会将该极点的序号返回到ii下。如果最终的结果里ii的元素个数大于0,则认为找到了不稳定极点,因而给出系统不稳定的提示,若产生的ii向量的元素个数为0,则认为没有找到不稳定的极点,因而得出系统稳定的结论。ii=find(条件式)用来求取满足条件的向量的下标向量,以列向量表示。例如79例如,给出控制系统闭环传递函数为»num=[3,2,1,4,2]num=32142»den=[3,5,1,2,2,1]den=351221»[z,p]=tf2zp(num,den)例如,给出控制系统闭环传递函数为»num=[3,2,1,480z=0.4500+0.9870i0.4500-0.9870i-1.0000-0.5666p=-1.60670.4103+0.6801i0.4103-0.6801i-0.4403+0.3673i-0.4403-0.3673I>>pzmap(num,den)z=81[工学]自动控制原理matlab控制系统仿真课件82»ii=find(real(p)>0)ii=23»n1=length(ii)n1=2»if(n1>0),disp(['Systemisunstable,with'int2str(n1)'unstablepoles']);elsedisp('Syatemisstable');end»ii=find(real(p)>0)83Systemisunstable,with2unstablepoles»disp('Theunstablepolesare:'),disp(p(ii))Theunstablepolesare:0.4103+0.6801i0.4103-0.6801i以上求出具体的零极点、画出零极点分布、明确指出系统不稳定,并指出引起系统不稳定的具体右根。Systemisunstable,with2unst848、Simulink仿真工具如果控制系统的结构很复杂,则若不借助专用的系统建模软件,在过去很难准确地把一个控制系统的复杂模型输入给计算机,对之进行分析和仿真。1990年MathWorks软件公司为MATLAB提供了新的控制系统模型图形输入与仿真工具,命名为SIMULINK,这一名字的含义相当直观,SIMU(仿真)与LINK(连接),亦即可以利用鼠标器在模型窗口上“画”出所需的控制系统模型,然后利用SIMULINK提供的功能来对系统进行仿真或线性化。这种法的一个优点是,可以使得一个很复杂系统的输入变得相当容易且直观。8、Simulink仿真工具如果控制系统的结构很复杂,则若不85Simulink工作平台启动Simulink,通常有两种方法:(1)在MATLAB命令窗口中直接输入Simulink命令;(2)在MATLAB工具栏上单击Simulink按钮,如图所示。

图7.1启动Simulink这样就可打开了Simulink的SimulinkLibraryBrower(库模块浏览器),如图7.2所示。在菜单栏中执行File/New/Model命令,就建立了一个名为untitled的模型窗口,如图7.3所示。在建立了空的模块窗口后,用户可以在此窗口中创建自己需要的Simulink模型。Simulink工作平台启动Simulink,通常有两种方法86图7.2库模块浏览器

图7.3新建的空白模块窗口

图7.2库模块浏览器图7.3新建的空白模块窗口877.2

Simulink的仿真原理7.2.1Simulink仿真模块通常,Simulink仿真系统包括输入(Input)、状态(states)和输出(Output)三个部分。·输入模块:即信号源模块,包括常数字信号源和用户自定义信号;·状态模块:即被模拟的系统模块,是系统建模的核心和主要部分;·输出模块:即信号显示模块,它能够以图形方式、文件格式进行显示。注意:在设计一个模型时,必须先确定这三个部分的意,以及它们之间的联系;Simulink的仿真模型并非一定要完全包括这三个部分,它可以缺少其中一个或者两个;Simulink的状态模块可以是连续的、离散的,或者它们二者的结合。7.2Simulink的仿真原理7.2.1Simulin887.3.1连续模块库(Continuous)

在连续模块(Continuous)库中包括了常见的连续模块,这些模块如图所示。

7.3Simulink模块库在库模块浏览器中单击Simulink前面的“+”号,就能够看到Simulink的模块库,如图7.2所示。

7.3.1连续模块库(Continuous)7.3Sim894.传递函数模块(TransferFcn)功能:用执行一个线性传递函数。5.零极点传递函数模块(Zero-Pole)功能:用于建立一个预先指定的零点、极点,并用延迟算子s表示的连续。6.存储器模块(Memory)功能:保持输出前一步的输入值。7.传输延迟模块(TransportDelay)功能:用于将输入端的信号延迟指定的时间后再传输给输出信号。8.可变传输延迟模块(VariableTransportDelay)功能:用于将输入端的信号进行可变时间的延迟。1.积分模块(Integrator):功能:对输入变量进行积分。说明:模块的输入可以是标量,也可以是矢量;输入信号的维数必须与输入信号保持一致。2.微分模块(Derivative)功能:通过计算差分∆u/

∆t近似计算输入变量的微分。3.线性状态空间模块(State-Space)功能:用于实现以下数学方程描述的系统:4.传递函数模块(TransferFcn)1.积分模块907.3.2离散模块库(Discrete)

离散模块库(Discrete)主要用于建立离散采样的系统模型,包括的主要模块,如图所示。1.零阶保持器模块(Zero-Order-Hold)功能:在一个步长内将输出的值保持在同一个值上。7.3.2离散模块库(Discrete)1.零阶保持器模块912.单位延迟模块(UnitDelay)功能:将输入信号作单位延迟,并且保持一个采样周期相当于时间算子z-1

。3.离散时间积分模块(DiscreteTimeIntegrator)功能:在构造完全离散的系统时,代替连续积分的功能。使用的积分方法有:向前欧拉法、向后欧拉法、梯形法。4.离散状态空间模块(DiscreteStateSpace)功能:用于实现如下数学方程描述的系统:5.离散滤波器模块(DiscreteFilter)功能:用于实现无限脉冲响应(IIR)和有限脉冲响应(FIR)的数字滤波器。6.离散传递函数模块(DiscreteTransferFcn)功能:用于执行一个离散传递函数。7.离散零极点传递函数模块(DiscreteZero-Pole)功能:用于建立一个预先指定的零点、极点,并用延迟算子z-1表示的离散系统。8.一阶保持器模块(FirstOrderHold)功能:在一定时间间隔内保持一阶采样。2.单位延迟模块(UnitDelay)5.离散滤波器模块(927.3.4数学模块库(Math)

数学模块库(Math)包括多个数学运算模块,如图7.8所示。7.3.4数学模块库(Math)933.矢量的点乘模块(DotProduct)功能:矢量的点乘模块(DotProduct)用于实现输入信号的点积运算。4.增益模块(Gain)功能:增益模块(Gain)的作用是把输入信号乘以一个指定的增益因子,使输入产生增益。1.求和模块(Sum)功能:求和模块(Sum)用于对多路输入信号进行求和运算,并输出结果。2.乘法模块(Product)功能:乘法模块(Product)用于实现对多路输入的乘积、商、矩阵乘法或者模块的转置等。5.常用数学函数模块(MathFunction)功能:用于执行多个通用数学函数,其中包含exp、log、log10、square、sqrt、pow、reciprocal、hypot、rem、mod等。3.矢量的点乘模块(DotProduct)1.求和模块946.三角函数模块(TrigonometricFunction)功能:用于对输入信号进行三角函数运算,共有10种三角函数供选择。7.特殊数学模块特殊数学模块中包括求最大最小值模块(MinMax)、取绝对值模块(Abs)、符号函数模块(Sign)、取整数函数模块(RoundingFunction)等。8.数字逻辑函数模块数字逻辑函数模块包括复合逻辑模块(CombinationalLogic)、逻辑运算符模块(LogicalOperator)、位逻辑运算符模块(BitwiseLogicalOperator)等。9.关系运算模块(RelationalOperator)

关系符号包括:==(等于)、≠(不等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)等。10.复数运算模块复数运算模块包括计算复数的模与幅角(ComplextoMagnitude-Angle)、由模和幅角计算复数(Magnitude-AngletoComplex)、提取复数实部与虚部模块(ComplextoRealandImage)、由复数实部和虚部计算复数(RealandImagetoComplex)。6.三角函数模块(TrigonometricFuncti957.3.7信号输出模块(Sinks)

信号输出模块(Sinks)包括的主要模块如图7.12所示。图7.12输出显示模块库7.3.7信号输出模块(Sinks)图7.12输出显示961.示波器模块(Scope)功能:显示在仿真过程中产生的输出信号,用于在示波器中显示输入信号与仿真时间的关系曲线,仿真时间为x轴。2.二维信号显示模块(XYGraph)功能:在MATLAB的图形窗口中显示一个二维信号图,并将两路信号分别作为示波器坐标的x轴与y轴,同时把它们之间的关系图形显示出来。3.显示模块(Display)功能:按照一定的格式显示输入信号的值。可供选择的输出格式包括:short、long、short_e、long_e、bank等。4.输出到文件模块(ToFile)功能:按照矩阵的形式把输入信号保存到一个指定的MAT文件。第一行为仿真时间,余下的行则是输入数据,一个数据点是输入矢量的一个分量。5.输出到工作空间模块(ToWorkspace)功能:把信号保存到MATLAB的当前工作空间,是另一种输出方式。6.终止信号模块(Terminator)功能:中断一个未连接的信号输出端口。7.结束仿真模块(Stopsimulation)功能:停止仿真过程。当输入为非零时,停止系统仿真。1.示波器模块(Scope)4.输出到文件模块(ToF977.3.8信号源模块库(Sources)信号源模块库(Sources)包括的主要模块如图7.13所示。图7.13信号源模块库7.3.8信号源模块库(Sources)图7.13信号981.输入常数模块(Constant)功能:产生一个常数。该常数可以是实数,也可以是复数。2.信号源发生器模块(SignalGenerator)功能:产生不同的信号,其中包括:正弦波、方波、锯齿波信号。3.从文件读取信号模块(FromFile)功能:从一个MAT文件中读取信号,读取的信号为一个矩阵,其矩阵的格式与ToFile模块中介绍的矩阵格式相同。如果矩阵在同一采样时间有两个或者更多的列,则数据点的输出应该是首次出现的列。4.从工作空间读取信号模块(FromWorkspace)功能:从MATLAB工作空间读取信号作为当前的输入信号。5.随机数模块(RandomNumber)功能:产生正态分布的随机数,默认的随机数是期望为0,方差为1的标准正态分布量。6.带宽限制白噪声模块(BandLimitedWhiteNoise)功能:实现对连续或者混杂系统的白噪声输入。7.其它模块除以上介绍的常用模块外,还包括其模块。各模块功能可通过以下方法查看:先进入Simulink工作窗口,在菜单中执行Help/SimulinkHelp命令,这时就会弹出Help界面。然后用鼠标展开UsingSimulink\BlockReference\SimulinkBlockLibraries就可以看到Simulink的所有模块。查看相应的模块的使用方法和说明信息即可。

1.输入常数模块(Constant)4.从工作空间读取信号模997.4仿真模型的建立与模块参数与属性的设置1.仿真模块的建立首先启动Simulink命令,建立一个空的模块窗口“untitled”,然后利用Simulink提供的模块库,在此窗口中创建自己需要的Simulink模型。具体方法:在模块库浏览器中找到所需模块,选中该模块后右击鼠标,把它加入到一个模型窗口中即可完成模块的建立。

图7.14添加模块

7.4仿真模型的建立与模块参数与属性的设置1.仿真模块的1002.模块参数与属性的设置

方法:在所建立的模型窗口中,选中相应的模块,单击右击鼠标,在弹出的快捷菜单中单击“Blockparameters”选项(如图7.15所示),即可打开该模块的参数设置对话框,如图7.16(a)所示。右击鼠标,在弹出的快捷菜单中单击“BlockProperties”选项,即可打开该模块的属性设置对话框,如图7.16(b)所示。图7.15Blockparamenters选项

2.模块参数与属性的设置图7.15Blockpara1013.模块的连接

一般情况下,每个模块都有一个或者多个输入口或者输出口。输入口通常是模块的左边的“>”符号;输出口是右边的“>”符号。

模块的连接方法:把鼠标指针放到模块的输出口,这时,鼠标指针将变为“+”十字形;然后,拖运鼠标至其它模块的输入口,这时信号线就变成了带有方向箭头的线段。此时,说明这两个模块的连接成功,否则需要重新进行连接。3.模块的连接一般情况下,每个模块都有一个或者多个1024.运行仿真

在运行仿真之前,首先保存已设置和连接的模型,然后就可以运行仿真。4.运行仿真

在运行仿真之前,首先保存已设置和连接1031.Simulink仿真注意(1)Simulink的数据类型由于Simulink在仿真过程中,始终都要检查模型的类型安全性。模型的类型安全性是指从该模型产生的代码不出现上溢或者下溢现象,当产生溢出现象时,系统将出错误。查看模块的数据类型的方法是:在模型窗口的菜单中执行Format/PortDataTypes命令,这样每个模块支持的数据类型就显示出来了。要取消数据类型的查看方式,单击PortDataTypes去掉其前面的勾号即可。7.4.3Simulink仿真注意与技巧图7.23查看模块支持的数据类型1.Simulink仿真注意7.4.3Simulink仿104(2)数据的传输在仿真过程中,Simulink首先查看有没有特别设置的信号的数据类型,以及检验信号的输入和输出端口的数据类型是否产生冲突。如果有冲突,Simulink将停止仿真,并给出一个出错提示对话框,在此对话框中将显示出错的信号以及端口,并把信号的路径以高亮显示。遇到该情形,必须改变数据类型以适应模块的需要。(3)提高仿真速度

Simulink仿真过程,仿真的性能受诸多因素的影响,包括模型的设计和仿真参数的选择等。对于大多数问题,使用Simulink系统默认的解法和仿真参数值就能够比较好地解决。因素及解决方法:(1)仿真的时间步长太小。针对这种情况可以把最大仿真步长参数设置为默认值auto。(2)仿真的时间过长。可酌情减小仿真的时间。(3)选择了错误的解法。针对这种情况可以通过改变解法器来解决。(4)仿真的精度要求过高。仿真时,如果绝对误差限度太小,则会使仿真在接近零的状态附近耗费过多时间。通常,相对误差限为0.1%就已经足够了。(5)模型包含一个外部存储块。尽量使用内置存储模块。(2)数据的传输(3)提高仿真速度105(4)改善仿真精度检验仿真精度的方法是:通过修改仿真的相对误差限和绝对误差限,并在一个合适的时间跨度反复运行仿真,对比仿真结果有无大的变化,如果变化不大,表示解是收敛的。说明仿真的精度是有效的,结果是稳定的。如果仿真结果不稳定,其原因可参是系统本身不稳定或仿真解法不适合。如果仿真的结果不精确,其原因很可能是:(1)模型有取值接近零的状态。如果绝对误差过大,会使仿真在接近零区域运行的仿真时间太小。解决的办法是修改绝对误差参数或者修改初始的状态。(2)如果改变绝对误差限还不能达到预期的误差限,则修改相对误差限,使可接受的误差降低,并减小仿真的步长。(4)改善仿真精度106

首先根据一个例子来说明控制系统框图模型的建立,这是一个简化的调速系统。我们看如何利用Simulink工具输入这个框图,然后再进行分析。具体利用Simulink建立框图的方法见网络辅助教学中“控制工程基础”第11章有关内容。首先根据一个例子来说明控制系统框图模型的建立,这是一个107下图是Matlab中Simulink工具建立的例题框图。可以点击图中Simulation下的start图标开始仿真,然后双击框图中的scope,查看仿真图形。其他仿真命令大家可以自行学习。下图是Matlab中Simulink工具建立的例题框图。可以108自动控制原理

与Matlab自动控制原理

与Matlab109Matlab软件工具

在控制系统分析和综合中的应用Matlab基本特点控制系统在Matlab中的描述进行部分分式展开控制系统的时间响应分析控制系统的频域响应分析控制系统的根轨迹图系统稳定性分析Simulink仿真工具Matlab软件工具

在控制系统分析和综合中的应用Matla1101、matlab基本特点Matlab简介:1980年前后,美国moler博士构思并开发;最初的matlab版本是用fortran语言编写,现在的版本用c语言改写;1992年推出了具有划时代意义的matlab4.0版本;并于1993年推出了其windows平台下的微机版,现在比较新的版本是6.5版1、matlab基本特点111Matlab语言特点:Matlab以复数矩阵为最基本的运算单元,既可以对它整体地进行处理,也可以对它的某个或某些元素进行单独地处理。在matlab中,数据的存储/输入/输出都是以矩阵为基础的,矩阵和其它变量不需要预先定义。matlab语言最基本的赋值语句结构为变量名列表=表达式变量名为matlab语句的返回值;等号右边是表达式的定义,它可以是矩阵,也可是函数调用Matlab语言特点:Matlab以复数矩阵为最基本的运算单112等号右边的表达式可以由分号结束,也可以由逗号或换行结束,但它们的含义是不同的。如果用分号结束,则左边的变量结果将不在屏幕上显示出来,否则将把左边返回矩阵的内容全部显示出来。如»A=[1,0,1;1,0,0;2,1,0];»B=[1,0,2;2,1,1;1,0,1]B=102211101等号右边的表达式可以由分号结束,也可以由逗号或换行结束,但它113在matlab下,矩阵A和矩阵B的乘积(假定其中A,B矩阵是可乘的)可以简单地由运算C=A*B求出»C=A*BC=203102415在matlab下,矩阵A和矩阵B的乘积(假定114而D=A.*B称点乘积运算,即表示A和B矩阵的相应元素之间直接进行乘法运算,然后将结果赋给D矩阵,点乘积运算要求A和B矩阵的维数相同。»D=A.*BD=102200200而D=A.*B称点乘积运算,即表示A和B矩阵的相应115在MATLAB中多项式由行向量组成,这些行向量包含了降次排列的多项式系数。例如多项式p(s)=1s3+3s2+0s1+4s0输入>>p=[1304];>>r=roots(p)r=-3.3553e+001.7765e-01+1.0773e+00j1.7765e-01-1.0773e+00j>>p=poly(r)p=1.0003.0000.000-0.000j4.000+0.000j输入多项式并求根在MATLAB中多项式由行向量组成,这些行向量包含116

Matlab下提供了两种文件格式:m文件,matlab函数M文件是普通的ascii码构成的文件,在这样的文件中只有由matlab语言所支持的语句,类似于doc下的批处理文件,它的执行方式很简单,用户只需在matlab的提示符>>下键入该m文件的文件名,这样matlab就会自动执行该m文件中的各条语句。它采用文本方式,编程效率高,可读性很强。Matlab下提供了两种文件格式:m文件,matla117Matlab函数是最常用的特殊m文件,该函数是由function语句引导,其基本格式如下

Function返回变量列表=函数名(输入量列表)注释说明语句段

函数体语句调用时在matlab的提示符下键入函数名,并包括输入变量。类似于c语言的子程序调用。如Functionplot_sin(xmin,xmax)X=xmin:min(0.01,(xmax-xmin)/100):xmax;Plot(x,sin(x));%ThisisademoMatlab函数是最常用的特殊m文件,该函数是由functi118要分析系统,首先需要能够描述这个系统。在线性系统理论中,一般常用的数学模型形式有:传递函数模型(系统的外部模型);状态方程模型(系统的内部模型);零极点增益模型和部分分式模型等。这些模型之间都有着内在的联系,可以相互进行转换。2、控制系统在matlab中的描述要分析系统,首先需要能够描述这个系统。在线性系119一、传递函数模型对线性定常系统,式中s的系数均为常数,且a1不等于零,这时系统在MATLAB中可以方便地由分子和分母系数构成的两个向量唯一地确定出来,这两个向量分别用num和den表示。 分子:num=[b1,b2,…,bm,bm+1]

分母:den=[a1,a2,…,an,an+1]

注意:它们都是按s的降幂进行排列的。一、传递函数模型120在MATLAB中零极点增益模型用[z,p,K]矢量组表示。即:z=[z1,z2,…,zm]p=[p1,p2,...,pn]K=[k]函数tf2zp()可以用来求传递函数的零极点和增益。二、零极点增益模型K为系统增益,zi为零点,pj为极点在MATLAB中零极点增益模型用[z,p,K]矢量组表示。即121利用下面的语句就可以表示这个系统:

传递函数的形式sys=tf(num,den)其中tf()代表传递函数的形式描述系统,

零极点形式sys1=zpk(sys)

传递函数形式和零极点形式之间可以相互转化,语句为 [z,p,k]=tf2zp(num,den)[num,den]=zp2tf(z,p,k)当传递函数复杂时,应用多项式乘法函数conv()等实现。利用下面的语句就可以表示这个系统:122举例:传递函数描述

1)》num=[12,24,0,20];den=[24622];2)借助多项式乘法函数conv(卷积)来处理:》num=4*conv([1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论