基于PID控制原理的单翼机横滚动作模型的搭建与MATLAB仿真

2024-01-13 08:08

本文主要是介绍基于PID控制原理的单翼机横滚动作模型的搭建与MATLAB仿真,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言写这个的主要目的是向我的学弟学妹们举个栗子展示一下如何从纯物理公式到最终的MATLAB建模的。额,实际上这整个单翼机的三个动作模型GITHUB找一找还是有的吧,我的也不是抄的,就是自己写自己画,毕竟这也是我论文的一部分,关于PID我也没发太多东西,上次我的亲学弟直接拿我的报告交教授了,然后,我就教授批评了。好吧,以后我只讲怎么做的,加上简单案例,这样懂的人也会举一反三,能为大家做点什么我也很开心,都是从新人苦逼过来的何必互相喷呢,也没啥。

摘要:基于飞机动力学原理,本文建立了单翼飞机的滚动模型。 通过飞机副翼的不同转弯力矩,改变倾斜角度以达到控制飞机执行横向滚动动作的目的。 建立了侧倾姿态控制的数学模型,采用PID控制方法设计了相应的姿态控制器。 最后,通过MATLAB软件平台的Simulink模块验证了PID控制方法的可行性和有效性。 结果表明,侧倾姿态控制器可以满足要求。

滚动原理:单翼飞机,飞行有三种姿态:俯仰,偏航,翻滚。俯仰就是飞机的尾翼的升降舵控制飞机的俯仰角,从而让飞机低头或者抬头。(比如自动驾驶系统就是控制俯仰角和水平仪完成的,实际上比我说的还复杂,就是举个例子,大神勿喷)偏航就是通过调整飞机尾翼的方向舵控制飞机的偏航角。翻滚就是通过控制飞机两侧机翼的副翼来改变升力对机翼的影响从而使飞机横向翻滚。额,如果我讲的,你脑海中没有画面,不是很懂,你可以搜查一下我标记红色的三个关键词,进一步理解一下。

在本文中只对飞机的翻滚动作建模,为了简化模型,不考虑其他两个动作,也不考虑一些常见的干扰量(空气阻力,不同地心引力,转动惯量,非刚体等)

建立三角坐标系,使飞机头部向正方向,飞机头部方向为X轴,垂直于X轴的方向为Y轴。 垂直于XY平面的是Z轴。 X,Y和Z轴分别代表飞机的俯仰角,侧倾和偏航运动控制。 下图显示了飞机的空间轴模型。

本文建立了一种简单的飞行姿态控制器模型,仅用于控制倾斜角度。 通过改变副翼的姿态,控制飞机以产生不同的角速度和速度。 飞机的滚动是通过飞机机翼左侧和右侧的副翼的摆动产生的,从而产生不同的扭矩,从而改变机翼上的气流压力,产生滚动扭矩以通过产生来控制飞机 左翼和右翼之间的压力差。 水平滚动。

飞行器的倾斜角指的是飞行器围绕身体坐标系的X轴(垂直轴)旋转的角度。在飞行力学中,飞行器的倾斜角度是飞行器围绕纵向轴线旋转的角度,而不是飞行器的水平轴线与地面之间的角度。例如,当飞机垂直上升时,其水平轴已经与地面平行。然而,只要按下转向柱并且存在滚动力矩,飞机将围绕纵向轴线旋转,并且飞机将倾斜,其倾斜角度将逐渐改变。当飞机向右倾斜时,其倾斜角度为正;否则为负。按照惯例,倾斜角(∅)的范围是:-π≤∅≤π。由现代飞机的地平线指示的倾斜角度是飞机围绕其纵向轴线旋转的角度。当飞机水平飞行或直线上升时,其角度为0。

当飞机的机翼具有对称的形状并且气流沿着机翼的对称轴线流动时,由于机翼的两个表面具有相同的形状,气流速度是相同的,并且产生的压力是相同的, 并且机翼不会产生升力。 然而,当对称机翼在空气中以一定的倾斜角度(倾斜角度)移动时,出现类似于不对称机翼的流动现象,使得上表面和下表面上的压力不一致,因此产生升力。
例如飞行员将方向盘向左压,左副翼向上偏转,右副翼向下偏转,飞机向左侧滚动; 否则,右副翼向上偏转,左副翼向下偏转,飞机向右侧倾斜。(这种现象挺好玩的,上次我坐飞机回家,特意观察了飞机起飞时候副翼偏转情况,要知道飞机起飞后,它拔高都是螺旋攀升的,所以就需要不断的朝着同一个方向旋转,实际上飞行员操作是,左转-加速直飞-左转-加速直飞-左转,这样,然后我在机腹那看到的就是副翼总是那么变化

建立模型

以下模型公式引用了这个文章(https://wenku.baidu.com/view/5f9cf40ecec789eb172ded630b1c59eef8c79a90.html)的内容,但是我MATLAB是自己写的,PID控制器也是自己的。

在构建运动方程时,考虑所有因素是非常复杂的。为了简化仿真模型,进行了以下假设:

1.飞机是刚性的,质量为恒定值。
2.假设地球静止,忽略地球的曲率。
3.重力加速度是恒定的,不随高度变化
4.飞机移动时重心不变,重心是坐标系的原点。
5.飞机的布局是平面对称的,惯性为0。
6.忽略机械部件之间的轻微阻力。
首先,如图1所示,建立坐标系。飞机运动的物理量如下:
选择地面上的一个点作为大地轴的中心。选择水平面上的方向为X,Y方向垂直于水平面上的X轴,Z轴垂直于X,Y水平面。
建立飞机机体坐标系,以飞机的重心为原点。 X轴直接位于飞机机身前方,Y方向位于飞机机身右侧,Z方向位于机身正下方。沿这三个方向(x,y,z)将飞行速度分为三个速度分量(u,v,w),并且飞行的角速度也可以分为三个角速度分量(p,q,r) )。 Z轴和穿过X轴的垂直平面之间的角度是倾斜角(∅)。

根据身体坐标系与地面坐标系之间的关系,得到姿态的角速度与身体坐标的角速度分量之间的运动关系:

主体前部与水平面之间的角度是仰角θ 。 F1是飞机的左副翼力矩拉力,F2是飞机的右副翼拉力,L是飞机的单独机翼长度,并且飞机沿X轴方向的整体机翼长度是2L。 从上面可以得到飞机副翼滚动力矩(τ)的表达式:

然后将合力F和扭矩引入牛顿公式,并且可以获得倾斜翼的机械模型。 使用倾斜角作为输出,水平和垂直通道在稳态点附近以小角度分解,以获得:

因此,根据上述两个方程,得到了飞行升力与飞行坡角之间的传递函数

PID姿态控制器:本文研究的模型相对简单,主要用于滚动姿态调整。 PID控制器具有简单的控制结构,并且在实际应用中相对容易设置。 下图显示了PID控制原理图。

基于传递函数公式的控制系统框图如下图所示。

稳态特性:输入,et在参考信号输出下,系统输出的误差和无限时间后的参考信号。 影响因素:系统结构,参数和形式c。

Simulink仿真:根据上图所示的控制系统结构,Simulink仿真模型建立在MATLAB软件上,如下所示:

图中的绿色框图是PID结构。 添加PID控制器后PID控制系统的结构如下图所示:

 假设副翼执行器的参数并输入传递函数:

 假设飞行动态系统的参数并输入传递函数:

 模拟参数可以如下图所示进行设置,通过改变P,I和D值,可以调整系统使系统更平滑,更接近稳定状态。

结果分析:根据上表,通过调整不同的PID值,获得不同的PID特性曲线。 稳定性:P和I降低系统稳定性D提高系统稳定性。 精度:P和I提高稳态精度,D无效。 坚牢度:P和D提高响应速度,降低响应速度。(对PID理解不深的可以去看下这篇文章,形象的举例说明了PID控制https://blog.csdn.net/jackiexzy/article/details/79699477)(PID原理概述请看这篇https://blog.csdn.net/gsww404/article/details/81366518)

最后,根据表格得出以下结论:
1.上升时间和峰值时间用于评估系统的响应速度;
2.过冲用于评估系统的阻尼程度;
3.在响应响应速度和阻尼水平时调整时间;
通过PID控制器对系统进行优化,调整PID值,调整响应时间和传输特性值,从而更加方便地调整系统稳态。 如下图所示,调整按钮位于图片上方,以调整系统的响应时间和系统传输的稳健性。

通过调整这两个值,可以平滑系统以实现系统稳定状态。 最后,PID控制器具有调节稳态的可行性。

比例P调整:当系统出现偏差时,比例调整会立即产生调整以减少偏差。 比例作用大,可以加快调整,缩短调整时间,降低稳态误差,使效果过分,从而降低系统的稳定性。
  积分I调节:消除稳态误差,降低系统稳定性,降低动态响应速度。
差分D调节:预测,可预测偏差趋势,具有先进的控制,增强系统动态性能,减少过冲,减少调整时间。

 

这篇关于基于PID控制原理的单翼机横滚动作模型的搭建与MATLAB仿真的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/600758

相关文章

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放