这个例子展示了如何将系统的非线性行为近似为一组相互关联的LTI模型。
这个例子描述了在一系列操作条件下机身俯仰轴动力学的线性近似。所得到的线性系统阵列用于创建动力学的线性参数变化(LPV)表示。LPV模型作为非线性俯仰动力学的近似。
在许多情况下,必须用更简单的线性系统来近似系统的非线性动力学。一个单一的线性系统提供了一个合理的行为模型,其行为限制在非线性系统的工作点周围的一个小的邻域内。当您必须在一定的操作条件范围内近似非线性行为需求时,您可以使用一组通过适当的插值规则相互连接的线性模型。这样的模型称为LPV模型。
为了生成LPV模型,在工作点网格上对非线性模型进行修剪和线性化。为此目的,操作空间被少量的参数化调度参数.这些参数通常是非线性系统的输入、状态和输出变量的子集。在创建LPV模型时,重要的考虑事项是确定一个调度参数集,并选择用于线性化模型的参数值范围。
为了说明这种方法,这个例子近似的俯仰动力学的一个机身。
考虑一个机身俯仰轴动力学的三自由度模型。这些状态是地球坐标,身体坐标,俯仰角,以及音高速率.下图总结了惯性架与机体架、飞行路径角之间的关系,入射角,以及俯仰角度.
机身动力学是非线性的,气动力和力矩依赖于速度和发病率.的scdairframeTRIM
模型scdairframeTRIM
这些动力学描述。
open_system (“scdairframeTRIM”)
使用的速度以及入射角作为调度参数;也就是说,在网格上修剪机身模型和值。属性的5个输出中的两个scdairframeTRIM
模型。
假设在-20到20度之间变化,这是速度在700和1400米/秒之间变化。使用线性间隔的15 × 12网格对调度。
nA = 15;% alpha值的数量nV = 12;V值的百分比alphaRange = linspace (20, -20 nA) *π/ 180;VRange = linspace(700、1400、nV);(α,V) = ndgrid (alphaRange VRange);
对于每种飞行状态,线性化机身动力学在修剪(零法向加速度和俯仰力矩)。这样做需要计算电梯挠度和球场结果是稳定的和.
对于每种飞行条件,您:
控件指定修剪条件operspec
函数。
计算的配平值和使用findop
函数。
线性化机身动力学的结果工作点使用线性化
函数。
身体坐标,美国是众所周知的善于削减开支的国家。因此,您必须为它们提供适当的值,您可以显式地指定这些值。但是,在本例中,让模型根据每个值派生这些已知值对。对于每种飞行状态,更新模型中的值并创建操作点规范。在所有180种飞行条件下重复以上步骤。
清晰的人事处报告为ct = 1:nA*nV alpha_ini = alpha(ct);% (rad)发生率v_ini = V (ct);%的速度(米/秒)指定纵倾条件opspec (ct) = operspec (“scdairframeTRIM”);% Xe、Ze:已知,不稳定。opspec (ct) .States(1)。知道= (1,1);opspec (ct) .States(1)。稳态= (0,0);% u,w:已知,w稳定opspec (ct) .States(3)。已知= [1 1];opspec (ct) .States(3)。SteadyState = [0 1];% θ:已知,不稳定opspec (ct) .States(2)。= 1;opspec (ct) .States(2)。稳态= 0;% q:未知,稳定opspec (ct) .States(4)。知道= 0;opspec (ct) .States(4)。稳态= 1;结束opspec =重塑(opspec,[nA nV]);
根据所有的操作点规范修剪模型。
选择= findopOptions (“DisplayReport”,“关闭”,“OptimizerType”,“lsqnonlin”);opt.OptimizationOptions.Algorithm =“trust-region-reflective”;(op、报告)= findop (“scdairframeTRIM”、opspec选择);
的人事处
数组包含找到的操作点findop
这将用于线性化。的报告
数组包含每个点的输入、输出和状态值的记录。
要对模型进行线性化,首先指定线性化的输入和输出点。
io = [linio (“scdairframeTRIM /δ”, 1“在”);%△linio (“scdairframeTRIM /机身模型”, 1“出”);%αlinio (“scdairframeTRIM /机身模型”2,“出”);% Vlinio (“scdairframeTRIM /机身模型”,3,“出”);%问linio (“scdairframeTRIM /机身模型”4“出”);%阿兹linio (“scdairframeTRIM /机身模型”5,“出”));%γ
线性化每个修剪条件的模型。将线性化偏移信息存储在信息
结构。
linOpt = linearizeOptions (“StoreOffsets”,真正的);(G, ~,信息)=线性化(“scdairframeTRIM”io, op linOpt);G =重塑(G,[nA nV]);G.u =“δ”;G.y = {“α”,“V”,“问”,“阿兹”,“伽马”};G.SamplingGrid =结构(“α”α,“V”, V);
G
是一个15乘12的线性化植物模型阵列在180飞行条件下吗.整个飞行包络线的工厂动态变化很大,包括当地动态不稳定的调度地点。
bodemag (G(3:5,::,:))标题(“机身动力学的变化”)
LPV系统模块便于对线性参数变化系统的仿真。该块需要状态空间系统阵列G
你用批处理线性化生成的。的输入、输出、状态和状态导数偏移量也可以增加该信息信息
结构。
提取偏移量信息。
偏移量= getOffsetsForLPV(信息);xOffset = offsets.x;yOffset = offsets.y;uOffset = offsets.u;dxOffset = offsets.dx;
的scdairframeLPV
模型,其中包含使用线性系统阵列的LPV System块G
以及相应的偏移量。
这个模型使用一个输入信号基于一个期望的轨迹的机身。这个信号u
对应的时间向量t
保存在scdairframeLPVsimdata.mat
文件,由模型加载。指定模拟的初始条件。
alpha_ini = 0;v_ini = 700;x0 = [0;700;0;0);
打开并模拟模型。
open_system (“scdairframeLPV”) sim卡(“scdairframeLPV”)
仿真结果表明,LPV系统能较好地仿真机体的响应。对于这个模拟,您指定了调度空间的精细网格,导致大量(180)线性模型。大数组会增加实现成本。然而,LPV表示的优势在于,您可以根据以下条件调整调度网格,从而调整数组中线性系统的数量:
由预期轨迹所跨越的调度子空间
应用程序所需的精度水平
前一个信息有助于减少调度变量的范围。后者有助于在调度空间中选择样本的最佳分辨率(间距)。
在网格化调度空间背景下,绘制前面仿真中调度变量的实际轨迹。的使用对应的作用域(包含在的比较响应块中)记录输出scdairframeLPV
).
稳定的= false (nA, nV);为ct = 1:nA*nV Stable(ct) = isstable(G(:,:,ct));结束alpha_trajectory = Alpha_V_Data.signals (1) . values (: 1);V_trajectory = Alpha_V_Data.signals (2) . values (: 1);情节(α(稳定)* 180 /π,V(稳定),“g”。,...α(~稳定)* 180 /π,V(~稳定),“k”。,...alpha_trajectory V_trajectory,“r”。)标题(“调度变量的轨迹”)包含(‘\α’) ylabel (“V”)传说(“稳定的位置”,的不稳定的位置,“实际轨迹”)
仿真过程中轨迹用红色表示。它遍历调度空间的稳定区域和不稳定区域。
假设您希望在目标硬件上实现此模型,使其与前面模拟使用的模型类似,同时使用最少的内存。仿真结果表明,弹道主要停留在890 ~ 1200m /s的速度范围和-15 ~ 12度的入射角范围。找到调度空间中与该操作区域对应的索引。
if (alphaRange <=12*pi/180), if (alphaRange <=12*pi/180), color0000ff;I2 = find(VRange>=890 & VRange<=1200);
为了减少飞行条件的数量,还可以增加采样点之间的间隔。例如,抽取每三个样本的指数尺寸和每一秒的样品沿维度。
I1 = I1(1:2:结束);I2 = I2(1:3:结束);
提取LTI系统数组的子集。
Gr = G (:,:, I1、I2);大小(Gr)
状态空间模型的5x2数组。每个模型有5个输出,1个输入和4个状态。
新的采样网格,Gr
它的尺寸更经济,为5乘2。模拟简化后的模型,并在再现原始行为时检查其逼真度。
配置LPV System块以使用简化的模型和相应的偏移量。
lpvblk =“scdairframeLPV / LPV系统”;set_param (lpvblk...“sys”,“Gr”,...“uOffset”,“uOffset (:,:, I1、I2) ',...“yOffset”,“yOffset (:,:, I1、I2) ',...“xOffset”,“xOffset (:,:, I1、I2) ',...“dxOffset”,“dxOffset (:,:, I1、I2) ') sim卡(“scdairframeLPV”)
原始模型与其LPV代理之间的响应重叠没有显著减少。
在需要更快模拟的情况下,LPV模型可以作为原始系统的代理。LPV模型所使用的线性系统也可以通过系统识别技术获得(需要额外注意保持整个阵列的状态一致性)。LPV模型可以为初始化Simulink®Design Optimization™问题和执行快速硬件在环模拟提供很好的代理万博1manbetx。
bdclose (“scdairframeLPV”) bdclose (“scdairframeTRIM”)