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

相关文章

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

Python中配置文件的全面解析与使用

《Python中配置文件的全面解析与使用》在Python开发中,配置文件扮演着举足轻重的角色,它们允许开发者在不修改代码的情况下调整应用程序的行为,下面我们就来看看常见Python配置文件格式的使用吧... 目录一、INI配置文件二、YAML配置文件三、jsON配置文件四、TOML配置文件五、XML配置文件

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

Python中conda虚拟环境创建及使用小结

《Python中conda虚拟环境创建及使用小结》本文主要介绍了Python中conda虚拟环境创建及使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录0.前言1.Miniconda安装2.conda本地基本操作3.创建conda虚拟环境4.激活c

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

Spring Boot 中正确地在异步线程中使用 HttpServletRequest的方法

《SpringBoot中正确地在异步线程中使用HttpServletRequest的方法》文章讨论了在SpringBoot中如何在异步线程中正确使用HttpServletRequest的问题,... 目录前言一、问题的来源:为什么异步线程中无法访问 HttpServletRequest?1. 请求上下文与线

在 Spring Boot 中使用异步线程时的 HttpServletRequest 复用问题记录

《在SpringBoot中使用异步线程时的HttpServletRequest复用问题记录》文章讨论了在SpringBoot中使用异步线程时,由于HttpServletRequest复用导致... 目录一、问题描述:异步线程操作导致请求复用时 Cookie 解析失败1. 场景背景2. 问题根源二、问题详细分