matlab在自控原理中的应用(2)

2019-09-01 23:32

G=tf(num,den); (4)

例2 一个简单的传递函数模型:

G(s)?s?5 432s?2s?3s?4s?5可以由下面的命令输入到MATLAB工作空间中去。 >> num=[1,5];

den=[1,2,3,4,5]; G=tf(num,den) 运行结果:

Transfer function:

s + 5

----------------------------- s^4 + 2s^3 + 3s^2 + 4s + 5

这时对象G可以用来描述给定的传递函数模型,作为其它函数调用的变量。 例3 一个稍微复杂一些的传递函数模型:

G(s)?6(s?5)

(s2?3s?1)2(s?6)该传递函数模型可以通过下面的语句输入到MATLAB工作空间。 >> num=6*[1,5];

den=conv(conv([1,3,1],[1,3,1]),[1,6]); tf(num,den) 运行结果

Transfer function: 6 s + 30

----------------------------------------- s^5 + 12 s^4 + 47 s^3 + 72 s^2 + 37 s + 6

其中conv()函数(标准的MATLAB函数)用来计算两个向量的卷积,多项式乘法当然也可以用这个函数来计算。该函数允许任意地多层嵌套,从而表示复杂的计算。 2.零极点模型

线性系统的传递函数还可以写成极点的形式:

G(s)?K(s?z1)(s?z2)???(s?zm) (5)

(s?p1)(s?p2)???(s?pn)将系统增益、零点和极点以向量的形式输入给三个变量KGain、Z和P,就可以将系统的零极点模型输入到MATLAB工作空间中,命令格式为:

KGain?K; (6)

(7) Z?[?z1;?z2;???;?zm]; (8) P?[?p1;?p2;???;?pn];- 6 -

在MATLAB控制工具箱中,定义了zpk()函数,由它可通过以上三个MATLAB变量构造出零极点对象,用于简单地表述零极点模型。该函数的调用格式为:

G=zpk(Z,P,KGain) (9)

例4 某系统的零极点模型为: G(s)?6(s?1.9294)(s?0.0353?0.9287j)

(s?0.9567?1.2272j)(s?0.0433?0.6412j)该模型可以由下面的语句输入到MATLAB工作空间中。

>> KGain=6;

z=[-1.9294;-0.0353+0.9287j;-0.0353-0.9287j];

p=[-0.9567+1.2272j;-0.9567-1.2272j;0.0433+0.6412j;0.0433-0.6412j]; G=zpk(Z,P,KGain)

运行结果:

Zero/pole/gain:

6 (s+1.929) (s^2 + 0.0706s + 0.8637)

---------------------------------------------- (s^2 - 0.0866s + 0.413) (s^2 + 1.913s + 2.421)

注意:对于单变量系统,其零极点均是用列向量来表示的,故Z、P向量中各项均用分号(;)隔开。

3. 反馈系统结构图模型

设反馈系统结构图如图5所示。

控制系统工具箱中提供

了feedback()函数,用来求

图5 反馈系统结构图

取反馈连接下总的系统模

型,该函数调用格式如下:

G=feedback(G1,G2,sign); (10)

其中变量sign用来表示正反馈或负反馈结构,若sign=-1表示负反馈系统的模型,若省略sign变量,则仍将表示负反馈结构。G1和G2分别表示前向模型和反馈模型的LTI(线性时不变)对象。

例5 若反馈系统图5中的两个传递函数分别为: G1(s)?11G(s)?, 2s?1(s?1)2则反馈系统的传递函数可由下列的MATLAB命令得出

>> G1=tf(1,[1,2,1]); G2=tf(1,[1,1]); G=feedback(G1,G2) 运行结果:

- 7 -

Transfer function:

s + 1

--------------------- s^3 + 3 s^2 + 3 s + 2

若采用正反馈连接结构输入命令

>> G=feedback(G1,G2,1) 则得出如下结果:

Transfer function: s + 1

----------------- s^3 + 3 s^2 + 3 s

例6 若反馈系统为更复杂的结构如图6所示。其中

10s?51s3?7s2?24s?24G2(s)?H(s)?G1(s)?4,, 32s0.01s?1s?10s?35s?50s?24则闭环系统的传递函数可以由下面的MATLAB命令得出:

>> G1=tf([1,7,24,24],[1,10,35,50,24]);

G2=tf([10,5],[1,0]); H=tf([1],[0.01,1]); G_a=feedback(G1*G2,H)

得到结果:

Transfer function:

0.1 s^5 + 10.75 s^4 + 77.75 s^3 + 278.6 s^2 + 361.2 s + 120

-------------------------------------------------------------------- 0.01 s^6 + 1.1 s^5 + 20.35 s^4 + 110.5 s^3 + 325.2 s^2 + 384 s + 120

4. 有理分式模型与零 极点模型的转换

图6 复杂反馈系统

有了传递函数的

有理分式模型之后,求取零极点模型就不是一件困难的事情了。在控制系统工具箱中,可以由zpk()函数立即将给定的LTI对象G转换成等效的零极点对象G1。该函数的调用格式为: G1=zpk(G) (11)

例7 给定系统传递函数为:

6.8s2?61.2s?95.2 G(s)?4 32s?7.5s?22s?19.5s对应的零极点格式可由下面的命令得出 >> num=[6.8, 61.2, 95.2];

- 8 -

den=[1, 7.5, 22, 19.5, 0]; G=tf(num,den); G1=zpk(G) 显示结果:

Zero/pole/gain:

6.8 (s+7) (s+2)

------------------------- s (s+1.5) (s^2 + 6s + 13) 可见,在系统的零极点模型中若出现复数值,则在显示时将以二阶因子的形式表示相应的共轭复数对。

同样,对于给定的零极点模型,也可以直接由MATLAB语句立即得出等效传递函数模型。调用格式为:

G1=tf(G) (12) 例8 给定零极点模型:

G(s)?6.8(s?2)(s?7))

s(s?3?j2)(s?1.5)可以用下面的MATLAB命令立即得出其等效的传递函数模型。输入程序的过程中要注意大小写。

>> Z=[-2,-7];

P=[0,-3-2j,-3+2j,-1.5]; K=6.8;

G=zpk(Z,P,K); G1=tf(G)

结果显示:

Transfer function:

6.8 s^2 + 61.2 s + 95.2

------------------------------- s^4 + 7.5 s^3 + 22 s^2 + 19.5 s

5. Simulink建模方法

在一些实际应用中,如果系统的结构过于复杂,不适合用前面介绍的方法建模。在这种情况下,功能完善的Simulink程序可以用来建立新的数学模型。Simulink是由Math Works 软件公司1990年为MATLAB提供的新的控制系统模型图形输入仿真工具。它具有两个显著的功能:Simul(仿真)与Link(连接),亦即可以利用鼠标在模型窗口上“画”出所需的控制系统模型。然后利用SIMULINK提供的功能来对系统进行仿真或线性化分析。与MATLAB中逐行输入命令相比,这样输入更容易,分析更直观。下面简单介绍SIMULINK建立系统模型的基本步骤:

(1) SIMULINK的启动:在MATLAB命令窗口的工具栏中单击按钮

或者在命令提示符>>

下键入simulink命令,回车后即可启动Simulink程序。启动后软件自动打开Simullink模型库窗口,如图 7所示。这一模型库中含有许多子模型库,如Sources(输入源模块库)、Sinks(输出显示模块库)、Nonlinear(非线性环节)等。若想建立一个控制系统结构框图,则应该选择File| New菜单中的Model选项,或选择工具栏上new Model

按钮,打开一个

- 9 -

空白的模型编辑窗口如图 8所示。

(2) 画出系统的各个模块:打开相应的子模块库,选择所需要的元素,用鼠标左键点中后拖

图 7 simulink 模型库

图8 模型编辑窗口

到模型编辑窗口的合适位置。 (3) 给出各个模块参数:由于选中的各个模块只包含默认的模型参数,如默认的传递函数模

型为1/(s+1)的简单格式,必须通过修改得到实际的模块参数。要修改模块的参数,可以用鼠标双击该模块图标,则会出现一个相应对话框,提示用户修改模块参数。

(4) 画出连接线:当所有的模块都画出来之后,可以再画出模块间所需要的连线,构成完整

的系统。模块间连线的画法很简单,只需要用鼠标点按起始模块的输出端(三角符号),再拖动鼠标,到终止模块的输入端释放鼠标键,系统会自动地在两个模块间画出带箭头的连线。若需要从连线中引出节点,可在鼠标点击起始节点时按住Ctrl键,再将鼠标拖动到目的模块。

(5) 指定输入和输出端子:在Simulink下允许有两类输入输出信号,第一类是仿真信号,

可从source(输入源模块库)图标中取出相应的输入信号端子,从Sink(输出显示模块库)图标中取出相应输出端子即可。第二类是要提取系统线性模型,则需打开Connection(连接模块库)图标,从中选取相应的输入输出端子。

例9 典型二阶系统的结构图如图9所示。用SIMULINK对系统进行仿真分析。

图9 典型二阶系统结构图

按前面步骤,启动simulink并打开一个空白的模型编辑窗口。

(1) 画出所需模块,并给出正确的参数:

? 在sources子模块库中选中阶跃输入(step)图标,将其拖入编辑窗口,并用鼠标

左键双击该图标,打开参数设定的对话框,将参数step time(阶跃时刻)设为0。 ? 在Math(数学)子模块库中选中加法器(sum)图标,拖到编辑窗口中,并双击该图

标将参数List of signs(符号列表)设为|+-(表示输入为正,反馈为负)。

? 在continuous(连续)子模块库中、选积分器(Integrator)和传递函数(Transfer

Fcn)图标拖到编辑窗口中,并将传递函数分子(Numerator)改为〔900〕,分母

- 10 -


matlab在自控原理中的应用(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:最新-绵阳市高中2018级第二学年末教学质量测试物理试题 精品

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: