【空气起动系统控制】使用神经网络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

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他