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

相关文章

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

Java中StopWatch的使用示例详解

《Java中StopWatch的使用示例详解》stopWatch是org.springframework.util包下的一个工具类,使用它可直观的输出代码执行耗时,以及执行时间百分比,这篇文章主要介绍... 目录stopWatch 是org.springframework.util 包下的一个工具类,使用它

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为