- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例6-15 在滑艇的运行过程中,滑艇主要受到如下 作用力的控制:滑艇自身的牵引力F,滑艇受到 的水的阻力f。其中水的阻力 f v 2 v ,v为 滑艇的运动速度。由运动学的相关定理可知,此 滑艇系统的动力学方程为:
结果显示: 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')
6.5 仿真系统的线性化模型
主要内容概述 • 一般的非线性系统分析中,常需要在平衡点 处求系统的线性化模型。 • 利用Simulink提供的基本函数,可对非线性 系统进行线性化处理。 • 用数学方法描述,平衡点是系统状态导数为 零的点。
• 1. 系统平衡点的确定
在大多数的系统设计中,设计者都需要进行 稳定性分析,因为绝大多数的系统在运行之中, 都需要按照某种方式收敛到指定的平衡点处。 这里所谓的平衡点一般指的是系统的稳定工 作点,此时系统中所有的状态变量的导数均为0, 系统处于稳定的工作状态。 可以使用命令 trim 对系统的稳定性与平衡点 进行分析。
[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
• 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,)
结果显示:
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
• 注意:模型的输入和输出用输入/输出接口模块 (In1/Out1)来表示。
• 详细功能描述 • 根据系统的输入、初始状态(也可以说是 初始的工作点),按照一定的方法求取系统中 距离此工作点最近的平衡点,以及在达到平衡 点时的系统输入与输出。如果系统中不存在平 衡点,则trim命令会返回系统状态变量最接近 0的工作点。
比较
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
图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 与系统输入 u 下对系统 model 进行 线性化处理,x和 u分别为平衡点处的状态向量和输入 向量,缺省值为 0 。 A 、 B 、 C 与 D 为线性化后的系统状 态空间描述矩阵。
由 linmod2( ) 所得线性模型比 linmod ( )准确 , 当然所需的运行时间也更多。 对于线性系统上面的调用格式可简写为
•
利用 Simulink 提供的 trim( )函数可根据系统 的模型文件来求出系统的平衡点。 该函数的调用格式如下 [x,u,y,dx]=trim(‘model’,x0,u0,y0,ix,iu,iy) 其中,参数model是模型文件名。 初始状态x0、初始输入u0与初始输出y0。 ix,iu,iy 都是整数向量,它们的元素指示初始向 量 x0,u0,y0 中哪些分量固定不变,即为固定输出。
[Ad,Bd,Cd,Dd]=dlinmod(‘model’,Ts,x,u,)
其中 Ts为指定的采样周期,其它参数同连续系统中。
例6-14 求图6-57 所示非线性系统的平衡工作点,及 在平衡工作点附近的线性模型 。
图6-57 单输入—双输出非线性系统
解 (1)饱和非线性模块(Saturation)
• •
[A,B,C,D]=linmod(‘model’) [A,B,C,D]=linmod2(‘model’)
• 3. 离散系统的线性化模型 Simulink 提供的函数 dlinmod( ) 能够从非线性 多频率采样离散--连续混和系统中提取一个在任何 给定的采样周期Ts下的近似线性模型。 当Ts取零时,可得近似的连续线性模型,否则,得 到离散线性模型。该指令的一般调用格式为