【空气起动系统控制】使用神经网络PID调节起动机入口压力值

本文主要是介绍【空气起动系统控制】使用神经网络PID调节起动机入口压力值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  前段时间师傅让做一个空起系统的建模,结果给忘了,现在趁着这几天疫情封控期间在家搞一搞,断断续续搞了五天,空起系统控制的相关资料太少了,还好最后弄出来了,虽然最后还存在点小问题,不过大体上ok的。

0 引言

  空气起动系统主要是用于辅助发动机起动,通过为发动机的起动机提供特定压力流量的气流,驱动空气涡轮起动机,并通过传动齿轮带动发动机转子,完成发动机起动过程。
  空气起动系统主要由各阀门(主路调节阀、旁路调节阀等)与连接管道组成。阀门主要是调节管道部位的压力流量,维持特定压力。

  上图中电动球阀、气动阀1和气动阀2为开关阀,通常根据试验所需维持恒定的阀门开度。通过改变主路调节阀开度来调节压力测点2的压力值,改变旁路调节阀开度来调节压力测点3处的压力值。以下针对通过改变旁路阀开度来调节起动机入口压力的情况进行分析与建模仿真

1 阀门流量公式

  主路/旁路控制阀门的工作原理与孔板类似,对于空气等可压缩介质,利用一系列热力学方程,最终可推导出如下流量公式
Q m = [ u 2 1 − u 2 m 2 p r 2 k ⋅ k p r 2 k k − 1 ( 1 − p r k − 1 k ) ] 1 / 2 × A 0 p 1 2 R g T 1 Q_m=\left[ \frac{u^2}{1-u^2m^2p_{r}^{\frac{2}{k}}}\cdot \frac{kp_{r}^{\frac{2}{k}}}{k-1}\left( 1-p_{r}^{\frac{k-1}{k}} \right) \right] ^{1/2}\times A_0p_1\sqrt{\frac{2}{R_gT_1}} Qm=[1u2m2prk2u2k1kprk2(1prkk1)]1/2×A0p1RgT12
  式中, Q m Q_m Qm 阀门出口流量, u u u 流束收缩系数, m m m 节流孔截面积与管道截面积之比, p r p_r pr 阀后与阀前压力之比, k k k 气体绝热指数, A 0 A_0 A0 调节阀等效截面积, R g R_g Rg 空气气体常数, p 1 p_1 p1 阀前压力, T 1 T_1 T1 阀前温度。

2 容腔建模

  将集气罐简化为单通结构,将排气管路简化为单通单出和单进双出结构,并且将集气罐至主路控制阀门前的部分简化为容腔1,主路控制阀至起动机和旁路阀前的部分简化为容腔2,如下图所示。

  不考虑管壁换热情况,通过热力学公式最终可得如下微分方程
d p d t = R V d ( c p − R ) ( c p 1 Q m 1 T 1 − c p Q m T ) d T d t = R T p V d ( c p − R ) ( c p 1 Q m 1 T 1 − c p Q m T ) − R T 2 p V d ( Q m 1 − Q m ) \frac{\mathrm{d}p}{\mathrm{d}t}=\frac{R}{V_d\left( c_p-R \right)}\left( c_{p1}Q_{m1}T_1-c_pQ_mT \right) \\ \frac{\mathrm{d}T}{\mathrm{d}t}=\frac{RT}{pV_d\left( c_p-R \right)}\left( c_{p1}Q_{m1}T_1-c_pQ_mT \right) -\frac{RT^2}{pV_d}\left( Q_{m1}-Q_m \right) dtdp=Vd(cpR)R(cp1Qm1T1cpQmT)dtdT=pVd(cpR)RT(cp1Qm1T1cpQmT)pVdRT2(Qm1Qm)
  式中, p p p 容腔出口压力, T T T 出口温度, R R R 空气气体常数, c p c_p cp c p 1 c_{p1} cp1 分别为进排气比定压热容, Q m Q_m Qm Q m 1 Q_{m1} Qm1 分别为容腔进排气流量, V d V_d Vd 容腔等效面积, T 1 T_1 T1 容腔入口温度。

3 喷管建模

  喷管流量计算公式如上,详情可见书籍《工程热力学,第五版》中第七章。

4 神经网络PID控制器设计

  设计RBF-PID控制器,将神经网络的输出值作为PID参数的的调整值,以达到PID参数自整定的目的,同时与不带神经网络的PID控制进行对比,神经网络RBF-PID控制思路如下:

5 仿真模型搭建

  搭建思路为

  使用matlab搭建仿真模型

  将起动机入口压力设定为8.5e4 pa,主路调节阀开度设置为0.99全开状态,通过神经网络PID控制器来调节旁路阀门的开度,进而调节起动机入口压力值,最终使得起动机的入口压力(容腔2的出口压力)跟踪上给定值,仿真结果如下所示。
  另外,由于容腔2的出口压力变化趋势与旁路阀门的开度变化趋势成反比,所以这里的P值为负。

阀门开度变化曲线:

起动机入口压力跟踪对比曲线:

5 仿真分析

  由仿真结果可得,使用RBF-PID控制器的系统振荡幅度更小,且稳态误差也更小,可能是由于神经网络控制器的参数设置的不是很恰当,所以区别看出来不是很大,不过总的来说,是比传统的PID控制要好一些的,达到了优化的目的。

  同时可见,阀门开度的变化与跟踪误差趋势保持一致,即当起动机入口压力值小于参考值时关阀门,起动机入口压力值大于参考值时开阀门。压力跟踪曲线存在一些振荡但总体效果良好,起动机的实际压力在10s左右时跟踪上参考压力值,且稳态误差维持在0.01%数量级,跟踪效果较好,初步完成了本次仿真试验。

6 总结

  本次仿真主要完成了当主路阀门开度保持不变的情况下,通过控制旁路阀门的开度来调节起动机入口压力,试验效果良好。

  不足之处:本次仿真是从理论入手,考虑的多是系统简化等效后的数学模型,有很多其他因素都没被考虑到,后续可以再进行优化。

  另外,当我同时使用主路调节阀门和旁路调节阀门时仿真效果不好,只有单独使用主路调节阀或者旁路调节阀时才能取得较好的效果,不过话说回来,最终的目的是使起动机入口压力保持稳定,这个目的算是达到了,后续需要再优化的话也可以从这个问题入手。

参考文献

  [1]. 空气起动系统动态特性机理分析与建模研究技术报告.
  [2]. 空气起动系统试验仿真平台设计技术报告.
  [3]. 沈维道, 童钧耕. 工程热力学[M]. 高等教育出版社.
  [4]. 雷勇,李辉,石小江. 航空发动机空气起动系统的前馈-反馈复合控制[J]. 机电工程,2011,28(5):586-589.
  [5]. 丰会萍,胡亚南,李明辉,等. 基于RBF-PID的多功能包装机热封温度控制[J]. 制造业自动化,2018,40(1):16-20.

这篇关于【空气起动系统控制】使用神经网络PID调节起动机入口压力值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

pandas DataFrame keys的使用小结

《pandasDataFramekeys的使用小结》pandas.DataFrame.keys()方法返回DataFrame的列名,类似于字典的键,本文主要介绍了pandasDataFrameke... 目录Pandas2.2 DataFrameIndexing, iterationpandas.DataF

使用Python和PaddleOCR实现图文识别的代码和步骤

《使用Python和PaddleOCR实现图文识别的代码和步骤》在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等,PaddleOCR是百度开源的一款强大的OCR工具包,它集成了... 目录一、引言二、环境准备2.1 安装 python2.2 安装 PaddlePaddle2.3 安装

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

Python中Flask模板的使用与高级技巧详解

《Python中Flask模板的使用与高级技巧详解》在Web开发中,直接将HTML代码写在Python文件中会导致诸多问题,Flask内置了Jinja2模板引擎,完美解决了这些问题,下面我们就来看看F... 目录一、模板渲染基础1.1 为什么需要模板引擎1.2 第一个模板渲染示例1.3 模板渲染原理二、模板

浅析如何使用xstream实现javaBean与xml互转

《浅析如何使用xstream实现javaBean与xml互转》XStream是一个用于将Java对象与XML之间进行转换的库,它非常简单易用,下面将详细介绍如何使用XStream实现JavaBean与... 目录1. 引入依赖2. 定义 JavaBean3. JavaBean 转 XML4. XML 转 J

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚