MATLAB课件 6.5线性化模型

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

[x,u,y,dx]=trim('cadp155b',[],[3],[1;1],[],[1],[1;2])
%寻找输入为3,输出固定为1的平衡点 x = -0.0000 1.3333 1.3333 u = 2.6667
dx =
1.0e-015 * 0.4441 -0.0000 0
y =
1.3333 1.3333
B =
1.0000e-003 C = 1.0000 D = 0
从而得到线性化后系统的状态空间描述。其中 A,B,C与D是线性系统的状态空间矩阵。故相应的线 性系统的状态空间描述方程为
x 0.199 x 0.001u y x
注意此状态空间描述是在系统平衡点x=100, u=9900以及y=100处附近的近似表示。此时系统为 稳定的系统,但是由于矩阵A的值为负值,故当系 统在其他的工作点处可能不稳定。
解 (1)滑艇速度控制系统的模型建立与仿真 根据上式建立图6-59所示仿真框图;
F Step
1/1000 Gain
1 s
v Scope
Integrator
v^2-v
Hale Waihona Puke Baidu
u^2-u Fcn
1 2 v ( F (v v)) m
图6-59 滑艇速度控制系统模型ex6_15
使用下面的Simulink模块建立滑艇速度控制系统的模型:
>>[x,u,y,dx]=trim('ex6_15_1',[ ],[ ],100,[ ],[ ],1)
%寻找输出固定为100的平衡点
结果显示: x= 100 u= 9900 y= 100 dx= 0
x=100表示滑艇控制系统中的状态 变量,即滑艇速度v=100;
u=9900表示滑艇在平衡点处的系 统输入值,即滑艇牵引力F=9900; y=100表示滑艇在平衡点处的系统 输出,即滑艇速度v=100。
• 系统状态的确定
动态系统仿真时,经常需要对系统中的状态 变量进行分析。特别要清楚系统中的某个状态变 量究竟由哪个模块产生,从而确定此状态变量的 实际意义。
>> [sizes, x0, xord]= mod8 % mod8为系统模型框图的文件名
>>[sizes, x0, xord]=ex6_15
sizes = 1 0 0 0 0 0 1
x0 = 0
xord =
'ex6_15/Integrator'
按照如下步骤可以获得滑艇速度控制系统的平衡点: ① 修改系统模型ex6_15,并另存为ex6_15_1,如图所 示。其中In1、Out1分别表示系统的输入与输出。
V
② 求取滑艇速度控制系统在此工作点处的平衡点 在 MATLAB命令窗口中,利用以下命令获得系统在 输出为100 km/h时的平衡状态:
例6-15 在滑艇的运行过程中,滑艇主要受到如下 作用力的控制:滑艇自身的牵引力F,滑艇受到 的水的阻力f。其中水的阻力 f v 2 v ,v为 滑艇的运动速度。由运动学的相关定理可知,此 滑艇系统的动力学方程为:
1 2 v ( F (v v)) m
其中,m为滑艇的质量。由滑艇系统的动力学方程 可知,此系统为一非线性系统。假设滑艇的质量 m=1000kg,滑艇牵引力为1000。下面来建立此系 统的Simulink模型并进行线性分析。
6.5 仿真系统的线性化模型
主要内容概述 • 一般的非线性系统分析中,常需要在平衡点 处求系统的线性化模型。 • 利用Simulink提供的基本函数,可对非线性 系统进行线性化处理。 • 用数学方法描述,平衡点是系统状态导数为 零的点。
• 1. 系统平衡点的确定
在大多数的系统设计中,设计者都需要进行 稳定性分析,因为绝大多数的系统在运行之中, 都需要按照某种方式收敛到指定的平衡点处。 这里所谓的平衡点一般指的是系统的稳定工 作点,此时系统中所有的状态变量的导数均为0, 系统处于稳定的工作状态。 可以使用命令trim对系统的稳定性与平衡点 进行分析。
③ 求取滑艇速度控制系统的线性系统描述 在获得使滑艇速度稳定在100 km/h处时系统的平 衡点x、u与y之后,在MATLAB命令窗口中使用linmod 命令便可以获得相应的线性系统描述,如下所示:
>>[A,B,C,D]=linmod('ex6_15_1',x,u) 结果显示:
A = -0.1990
结果显示:
num(1)/den = -8.8818e-016 s^2 + 1 s + 1 -------------------------------s^3 + 2.4 s^2 + 2.4 s + 2 num(2)/den = s^3 + 2.4 s^2 + 2.4 s + 1 ---------------------------s^3 + 2.4 s^2 + 2.4 s + 2
[Ad,Bd,Cd,Dd]=dlinmod(‘model’,Ts,x,u,)
其中 Ts为指定的采样周期,其它参数同连续系统中。
例6-14 求图6-57 所示非线性系统的平衡工作点,及 在平衡工作点附近的线性模型 。
图6-57 单输入—双输出非线性系统
解 (1)饱和非线性模块(Saturation)
• (1) Sources模块库中的Step模块:产生滑艇的牵引力F。 Step的Final Value值设置为1000(即滑艇牵引力) • (2) Continuous模块库中的Integrator模块。 • (3) Sinks模块库中的Scope模块:输出滑艇的速度v 。 • (4)Functions & Tables 模 块 库 中 的 函 数 Fcn 模 块 。 expression设置为u^2-u,求取水的阻力。 函数Fcn模块的输入总是用u表示的。 • (5) Math模块库中的Gain模块。取值为1/1000(即1/m)
• 注意:模型的输入和输出用输入/输出接口模块 (In1/Out1)来表示。
• 详细功能描述 • 根据系统的输入、初始状态(也可以说是 初始的工作点),按照一定的方法求取系统中 距离此工作点最近的平衡点,以及在达到平衡 点时的系统输入与输出。如果系统中不存在平 衡点,则trim命令会返回系统状态变量最接近 0的工作点。
在指定的系统状态x与系统输入u下对系统model进行 线性化处理,x和u分别为平衡点处的状态向量和输入 向量,缺省值为0。A、B、C与D为线性化后的系统状 态空间描述矩阵。
由linmod2( ) 所得线性模型比linmod( )准确, 当然所需的运行时间也更多。 对于线性系统上面的调用格式可简写为
• 2. 连续系统的线性化模型 • 利用Simulink提供的函数linmod( )和linmod2( ) 可以根据模型文件(同上系统的输入和输出必须由 Connections库中的In1和Out1模块来定义)得到线性 化模型的状态参数A、B、C和D,它们的调用格式为
• [A,B,C,D]=linmod(‘model’,x,u,) • [A,B,C,D]=linmod2(‘model’,x,u,)
图6-58
饱和非线性模块参数对话框
在MATLAB指令方式下,运行以下指令可求出平衡点。 >> x=[0;0;0];u=0;y=[1;1]; >> ix=[ ]; %不固定任何状态 >> iu=[ ]; %不固定输入 >> iy=[1;2]; %固定输出y(1)和y(2) >>[x,u,y,dx]=trim('ex6_14', x,u,y,ix,iu,iy) 以上几行命令等同于 [x,u,y,dx]=trim('ex6_14',[],[],[1;1],[],[], [1;2]) %寻找输出固定为1的平衡点
结果显示: x = -0.0000 0.5380 0.5000
y = 0.5000 0.5380 dx =
u =
1.0380
1.0e-024 *
0 -0.2467 0
在MATLAB指令方式下运行以下命令可得到系统在平衡工作点 附近的线性模型
>>[A,B,C,D]=linmod('ex6_14'); >>[num,den]=ss2tf(A,B,C,D); >> printsys(num,den,'s')

利用Simulink提供的trim( )函数可根据系统 的模型文件来求出系统的平衡点。 该函数的调用格式如下 [x,u,y,dx]=trim(‘model’,x0,u0,y0,ix,iu,iy) 其中,参数model是模型文件名。 初始状态x0、初始输入u0与初始输出y0。 ix,iu,iy都是整数向量,它们的元素指示初始向 量x0,u0,y0中哪些分量固定不变,即为固定输出。
图6-60 滑艇系统仿真结果
由仿真曲线可知,滑艇在牵引力F(值1000) 的作用下,速度在经过80s左右的时间后,由0上升 并稳定在33km/h。
(2)滑艇速度控制器系统的线性化 对于滑艇速度控制器系统而言,如果要在比赛 中获得胜利,则滑艇必须在尽可能短的时间内达到 最大速度。 设此速度控制器所能达到的最大速度将为 100km/h。而在前面所提供的滑艇牵引力为1000时, 能达到的最大速度仅为33km/h,故需要重新设置合 适的牵引力对滑艇速度控制器进行操纵。
• •
[A,B,C,D]=linmod(‘model’) [A,B,C,D]=linmod2(‘model’)
• 3. 离散系统的线性化模型 Simulink提供的函数dlinmod( ) 能够从非线性 多频率采样离散--连续混和系统中提取一个在任何 给定的采样周期Ts下的近似线性模型。 当Ts取零时,可得近似的连续线性模型,否则,得 到离散线性模型。该指令的一般调用格式为
比较
2 Out2 1 In1 1 s2+1.4s+1 Transfer Fcn 1 Out1
1 s+1 Transfer Fcn1
模型cadp155b.mdl
• [x,u,y,dx]=trim('cadp155b',[],[],[1;1],[],[],[1;2]) %寻找输出固定为1的平衡点 x = dx = -0.0000 1.0000 1.0e-015 * 1.0000 u = -0.2220 2 -0.0227 y = 0.3331 1.0000 1.0000
既然滑艇速度最大值要求为100km/h,因此对 滑艇速度控制系统进行线性化时,希望此系统能够 使滑艇的速度基本稳定在最大速度处。换句话说, 系统的工作点应该选择为使速度达到100km/h时的 系统输入与系统状态。 由于对非线性系统进行线性化表示需要给出系 统所在的操作点(即平衡点),因此在对滑艇速度 控制系统进行线性化之前,需要获得滑艇速度稳定 在100km/h处的系统平衡点。
相关文档
最新文档