主要内容

设计一个大迎角俯仰模式控制

使用Simulink®进行控制设计金宝app

这个例子展示了如何使用控制系统工具箱™和Simulink®控制设计™与Simulink交互来设计飞机的数字俯仰控制。金宝app在本例中,我们将设计控制器以允许飞机以最小的飞行员工作量以大迎角操作。

我们的例子将带您通过设计一个高迎角控制器的数字自动驾驶仪的第一步。要运行本例中的所有内容,您必须拥有控制系统工具箱、Simulink Control Design、Simulink和Simulink®Coder™。金宝app如果您没有所有这些产品,您仍然可以使用MATLAB®编辑器的单下载188bet金宝搏元格执行模式运行示例的部分内容。

下图是飞机的Simul金宝appink模型。控制器模块中的控制系统可以在模型中切换,以允许您查看模拟响应,然后切换到使用控制系统工具箱的线性时不变(LTI)对象创建的设计。还包括控制器,该控制器是模拟设计的离散实现,该模拟设计类似于将进入机载飞行计算机的算法。花点时间研究一下模型。

图1:金宝app飞机飞行控制系统的Simulink模型。

裁剪和线性化

可以使用Simulink Control Design软件对模型进行金宝app线性化。要交互地线性化模型,请使用模型线性化电路要打开应用程序,请在Simulink编辑器中金宝app应用程序选项卡,在控制系统,点击模型线性化电路.方法也可以以编程方式线性化模型线性化函数。

打开slexAircraftPitchControlAutopilot模型。

查看线性化模型参数:

apmdl =“slexAircraftPitchControlAutopilot”;Open_system (apmdl) op = operpoint(apmdl);IO = getlinio(apmdl);Contap = linearize(apmdl,op,io)
contap L = = Alpha-sensor音高的速度比例贴Prefil Alpha-sensor -2.526 0 0 0螺距-4.144 L 0 0 0比例-1.71 - 0.9567 0 10贴Prefil 0 0 0 -10 B =α感觉到贴问感觉到Alpha-sensor 1 0 0节率L 0 0 1比例0 0 -0.8156粘Prefil 0 1 0 L C = Alpha-sensor距率比例贴Prefil 2.986 - -1.67和-3.864 - -17.46 D =α感觉到贴问感觉到和0 0 1.424连续时间状态空间模型。

图2:原始模拟自动驾驶仪。

线性时不变系统

有三种类型的LTI对象可以用来开发线性模型:

状态空间(SS)、传递函数(TF)和零极增益(ZPG)对象。

变量contap是一个状态空间对象。然后,您可以使用其他命令获取其他类型之一。在MATLAB中创建对象时,可以使用*、+、-等操作来操作它。这被称为“重载”MATLAB运算符。试着创建一个自己的对象,看看在使用contap对象进行加法、乘法等操作时会发生什么。

要查看LTI对象中存储了什么,请键入get(contap)或contap。例如InputName。

查看零/极/增益传递函数:

Contap = tf(Contap);Contap = zpk(Contap)
contap =从输入“阿尔法感觉到“输出”和“:2.9857 (+ 2.213 ) ---------------- s (s + 2.526)从输入“粘”输出“总和”:-17.46 (+ 2.213 ) ---------------- s (s + 10)从输入“问感觉到”输出“总和”:1.424 (+ 2.971)(s + 2.213 ) ------------------------- s (s + 4.144)连续时间零/钢管/增益模型。

使用零阶保持器的离散控制器

现在,LTI对象将用于设计数字自动驾驶仪,以取代模拟自动驾驶仪。模拟系统被编码到称为contap (CONtinuous AutoPilot)的LTI对象中。

数字自动驾驶仪的首次尝试将使用零阶保持器,采样时间为0.1秒。注意,离散对象维护类型(ss、tf或zpk)。

从下面的波德图可以清楚地看出,对于导频棒输入和迎角传感器,系统在3 rad/sec到半采样频率(垂直黑线)之间的相位不匹配。与模拟系统相比,该设计的响应较差。转到Simulink金宝app模型并开始模拟(确保您可以看到作用域窗口)。在模拟运行时,双击标有“模拟”或“数字”的手动开关。

模拟是否验证了通过解释波德图得出的结论?

Discap = c2d(contap, 0.1,“zoh”);get (discap)波德(contap discap)
Z: {[0.8016] [0.8039] [2x1 double]} P: {[2x1 double] [2x1 double] [2x1 double]} K: [0.2943 -1.2458 1.4240] DisplayFormat: 'roots'变量:' Z ' IODelay: [0 000] InputDelay: [3x1 double] OutputDelay: 0 InputName: {3x1 cell} InputUnit: {3x1 cell} InputGroup: [1x1 struct] OutputName: {'Sum'} OutputUnit: {"} OutputGroup: [1x1 struct]备注:[0x1 string] UserData:[]名称:" Ts: 0.1000 TimeUnit: 'seconds' SamplingGrid: [1x1 struct]

图3:比较模拟和ZOH控制器的博德图。

Tustin(双线性)离散化

现在试试不同的转换技巧。你可以用塔斯汀变换。在命令窗口中键入上面的命令。

应该清楚的是,系统仍然不匹配相位从3拉德/秒到半样本频率,塔斯廷变换做得更好。模拟使用设计时的LTI对象。要查看如何使用对象,请使用浏览器或双击图标查看Controllers子系统。LTI块从工作区中获取一个LTI对象。您可以将块中使用的对象名称更改为工作区中的任何LTI对象。

尝试使用“discap1”,模拟设计的Tustin离散化:

Discap1 = c2d(contap,0.1,“tustin”);波德(contap discap discap1)

图4:波德图比较模拟和0.1秒塔斯廷控制器。

选择采样时间

从目前的分析来看,Tustin变换比零阶保持器性能更好。对于离散系统来说,0.1秒的采样时间似乎太慢,无法跟踪模拟系统在采样频率的一半时的性能。

现在使用0.05秒采样周期的Tustin变换转换模拟设计:

Discap = c2d(contap,0.05,“tustin”)波德(contap discap)
discap =从输入“阿尔法感觉到“输出”和“:0.074094 (z - 0.8951) (z + 1 ) ------------------------- ( z 1) (z - 0.8812)从输入“粘”输出“总和”:-0.36852 (z - 0.8951) (z + 1 ) ------------------------- ( z 1) (z - 0.6)从输入“问感觉到”输出“总和”:1.4629 (z - 0.8617) (z - 0.8951 ) ---------------------------- ( z 1) (z - 0.8123)样品时间:0.05秒离散时间零/钢管/增益模型。

图5:波德图比较模拟和0.05秒Tustin控制器。

现实的考虑

现在我们有了一个看起来可行的设计,我们需要以一种形式来实现它,该形式将包括一些在线性分析中被忽略的必要元素。例如,如果你看一下控制器子系统中的模拟自动驾驶仪,你会看到一些逻辑,当执行器饱和时,会阻止积分器绕组:

打开AnalogControl子系统。

图6:AnalogControl子系统。

完整设计的实施

积分器清盘只是需要解决的实际问题之一。另一个是需要消除可能进入测量点的混叠高频信号。可以通过在采样和保持(ZOH)模块前指定模拟滤波器来防止这些混叠信号,该模块对模数转换器(ADC)设备进行建模,通常用于测量嵌入式应用程序中的信号。此外,自动驾驶仪数字部分的滤波器以比补偿器更高的采样率运行,以向补偿器提供条件信号。模拟滤波器是必要的,因为一旦信号被混叠,就无法将有效的带内频率内容与混叠内容分开。

这种新的控制器叫做数字控制。滤波器的采样时间为deltat1(设置为deltat1 /10)。零阶保持块通过采样时间继承为各种下游块指定这些采样时间。

slexAircraftPitchControlExample模型中的开关已经设置好,因此您可以在模拟自动驾驶仪、数字LTI对象和可以使用软件实现的数字自动驾驶仪之间进行切换。

再次尝试模拟系统,并在三种自动驾驶仪设计之间切换。你应该看到,自动驾驶仪的激活状态对设计没有显著影响。您也可以增加阵风的振幅,并验证抗混叠滤波器工作令人满意。要增加阵风振幅,打开Dryden风阵风子系统并改变(通过双击图标)驱动阵风模拟的白噪声的噪声方差。

打开DigitalControl子系统。

图7:DigitalControl子系统。

设计变型的变型系统

Simulink模型中的执行器使用Vari金宝appant子系统块来表示多个执行器实现,在模拟期间只有一个实现是活动的。您可以双击Variant Actuator Subsystem块来查看不同的执行器实现。

为了使仿真改变,使用非线性驱动器代替线性驱动器。您可以通过使用Variant子系统块来做到这一点变体>覆盖使用上下文菜单。

注意,为了重新配置执金宝app行器选择,必须停止Simulink。你还应该注意到,非线性驱动器有饱和的位置和速率。

图8:执行器的变体子系统

代码生成

利用Simulink Coder可以将自动驾驶仪的设计转换为可嵌入的代码。金宝app下面是数字自动驾驶仪的单独模型slexAircraftPitchControlDAP;它使用Simulink Coder和使用mex -setup配置指定的编译器编码成一个基于主机的独立程序。金宝app仿真结果可作为生成代码功能正确性的验证基准。

代码生成和编译产生的可执行文件是slexAircraftPitchControlDAP.exe。如果你创建了它,它可以直接从OS shell (DOS)命令行或从MATLAB中运行,输入:

> > ! slexAircraftPitchControlDAP.exe

可执行程序创建一个名为slexAircraftPitchControlDAP的文件。你可以通过输入load slexAircraftPitchControlDAP加载mat。

工作区中有两个变量rt_tout和rt_yout,它们与模拟基线的差异可以被绘制出来。注意,这个模型在这个主机上的方差实际上为零。在更复杂的计算中,由于不同的编译器优化和使用比double的64位存储格式精度更高的中间寄存器变量,预计会有一些小的数值差异。应该检查显著的差异,因为它们可能表明模型算法中的数值稳定性问题、编译器或运行时库错误或其他问题。

打开slexAircraftPitchControlDAP模型。

图9:仿真与代码生成结果的比较。

第一关设计的行为

下面是大迎角模式数字螺距控制器的时间响应设计:

图10:飞机数字俯仰控制设计的响应。

总结

该设计的进一步工作可能包括合并和分析补偿器的更多现实影响,例如抗混叠滤波器动态和嵌入式数字计算机的计算延迟对数字计算所看到的整体“工厂”的影响。实际装置、计算延迟、抗混叠滤波器和采样-保持延迟的组合只是可能影响数字补偿器参数设计的一些附加项目。

另请参阅

(金宝appSimulink控制设计)|(金宝appSimulink控制设计)

相关的话题