2019 高教社杯数模竞赛A题 高压油管的压力控制 题解

2019 高教社杯数模竞赛A题 高压油管的压力控制 题解

  • 问题一题解
    • 分析
    • 求解
      • 求解微分方程
      • 求解管内燃油密度变化
  • 问题二题解
    • 分析
    • 求解
      • 燃油的进入
      • 燃油的喷出
      • 模型的求解
  • 问题三题解
    • 分析
    • 求解
  • 代码附录
    • Q1.1
    • Q1.2
    • Q2
    • Q3

初见这道题目的时候真是一头雾水。由于和队友们都没有建模的经历,初次作业就碰上了于这种硬核的物理题,属实劝退(

本文是从最终的latex论文摘要出来的,公式因为katex不完全兼容的问题没有显示序号QAQ

问题一题解

2019 高教社杯数模竞赛A题 高压油管的压力控制 题解_第1张图片

分析

要使高压油管内的燃油压力稳定在给定值100MPa,我们的切入点应该是将压力转换成可直接计算的量。附录三中已经给出了已知燃油的压力与弹性模量的关系,我们又已知燃油的压力变化量与密度变化量满足一微分方程,根据这两个条件我们可以得到燃油压力与密度的关系。再根据进出口的流量函数,我们可以推出计算出油管内燃油密度的变化规律。到此,我们就可以将原问题转化为对燃油密度优化的问题了。

(关于求解微分方程这一步骤,我觉得直接近似求解和拟合都可以,但是拟合的话最好不要用线性,二次和指数的效果相对可能好一丢丢。)

问题一的第二小问,可以在第一小问的工作上求解。第一小问是优化因变量压力,第二小问则是优化自变量时间,我们需要系统达到稳定的时间精确控制在指定数值左右。

求解

求解微分方程

因为燃油的压力变化量与密度变化量成正比,易知微分方程:

d P d ρ = E ρ \frac{d P}{d \rho}=\frac{E}{\rho} dρdP=ρE

d P E = ∫ d ρ ρ + C \frac{d P}{E}=\int \frac{d \rho}{\rho}+C EdP=ρdρ+C

由附录三知 E = 0.029 P 2 + 3.08 P + 1571.6 E=0.029P^2 +3.08P+1571.6 E=0.029P2+3.08P+1571.6

根据已知条件当压力为100 MPa时,燃油的密度为 0.850 m g / m m 3 0.850mg/mm^3 0.850mg/mm3解得 P = ρ − 0.80853816 0.001859637768 − 0.00170 ρ × 1 0 − 3 P=\frac{\rho-0.80853816}{0.001859637768-0.00170 \rho} \times 10^{-3} P=0.0018596377680.00170ρρ0.80853816×103
ρ = 0.80853816 + 0.80853816 0.0006 P 1 + 0.0017 P ; \rho=0.80853816+0.80853816\frac{0.0006P}{1+0.0017P}; ρ=0.80853816+0.808538161+0.0017P0.0006P;

求解管内燃油密度变化

根据流量计算公式 Q = C A 2 Δ P ρ Q=C A \sqrt{\frac{2 \Delta P}{\rho}} Q=CAρ2ΔP

可以得到燃油进出速度 v ( t ) = C A 2 Δ P ρ v(t)=C A \sqrt{\frac{2 \Delta P}{\rho}} v(t)=CAρ2ΔP

燃油进入时的速度(一个周期内)
I ( t ) = { C A 2 [ P 1 ( t ) − P 2 ( t ) ρ 1 , t ∈ ( 0 , t 1 ) 0 , t ∈ ( t 1 , T 1 ) I(t)=\left\{\begin{array}{ll} C A \sqrt{\frac{2\left[P_{1}(t)-P_{2}(t)\right.}{\rho_{1}}} & , t \in\left(0,t_{1}\right) \\ 0 & , t \in\left(t_{1},T_1\right) \end{array}\right. I(t)={ CAρ12[P1(t)P2(t) 0,t(0,t1),t(t1,T1)
燃油喷出时的速度(一个周期内)
O ( t ) = { 100 t , t ∈ ( 0 , 0.2 ) 20 , t ∈ ( 0.2 , 2.2 ) − 100 t + 240 , t ∈ ( 2.2 , 2.4 ) 0 , t ∈ ( 2.4 , T 2 ) O(t)=\left\{\begin{array}{ll} 100t & , t \in\left(0, 0.2\right) \\ 20 & , t \in\left(0.2, 2.2\right) \\ -100 t+240 & , t \in\left(2.2, 2.4\right) \\ 0 & , t \in\left(2.4,T_2)\right. \end{array}\right. O(t)=100t20100t+2400,t(0,0.2),t(0.2,2.2),t(2.2,2.4),t(2.4,T2)

油管增加的质量
m 1 ( t ) = ρ 1 I ( t ) Δ t m_{1}(t)=\rho_{1} I(t) \Delta t m1(t)=ρ1I(t)Δt

油管减少的质量
m 2 ( t ) = ρ 2 O ( t ) Δ t m_{2}(t)=\rho_{2} O(t) \Delta t m2(t)=ρ2O(t)Δt

油管内质量的变化
m 1 ( t ) − m 2 ( t ) = ρ 1 I ( t ) Δ t − ρ 2 O ( t ) Δ t m_{1}(t)-m_{2}(t)=\rho_{1} I(t) \Delta t-\rho_{2} O(t) \Delta t m1(t)m2(t)=ρ1I(t)Δtρ2O(t)Δt

油管内密度的变化
ρ 2 ( t + Δ t ) − ρ 2 ( t ) = 1 V [ ρ 1 I ( t ) − ρ 2 O ( t ) ] Δ t \rho_{2}(t+\Delta t)-\rho_{2}(t)=\frac{1}{V}\left[\rho_{1} I(t)-\rho_{2} O(t)\right] \Delta t ρ2(t+Δt)ρ2(t)=V1[ρ1I(t)ρ2O(t)]Δt
所以给定单向阀开启时长的值,我们就能通过燃油进出流量的函数来求得油管内质量的变化,进而求得密度的变化。再根据密度与压力的关系函数,我们就能求得压力的变化。当我们取很小的时间间隔为步长时,压力可以取离散值,那么原问题可以看作优化
m i n ∑ i = 1 N ∣ P ( t k ) − P 0 ∣ N min\frac{\sum_{i=1}^{N}\left|P\left(t_{k}\right)-P_{0}\right|}{N} minNi=1NP(tk)P0

因为单向阀每次开启结束后需要关闭10ms,考虑到周期的数量级,我们先将最优解的查找范围限定在(0.10ms)之间,步长为0.5ms。取100s中后5s压力稳定值的平均值作为结果,画出图像如图1所示。
2019 高教社杯数模竞赛A题 高压油管的压力控制 题解_第2张图片

由图1可以看出压力稳定在100Mpa时时间区间应该是(0.27ms,0.29ms),我们在此区间再次搜索最优解。步长为0.01ms。结果如图2所示。
2019 高教社杯数模竞赛A题 高压油管的压力控制 题解_第3张图片

由图2可以进一步缩小区间至(0.2875ms,0.2876ms),我们在此区间再次搜索最优解。步长为0.00001ms。结果如图3所示。
2019 高教社杯数模竞赛A题 高压油管的压力控制 题解_第4张图片

得到最后结果0.28752ms。对应压力变化图如图4所示。
2019 高教社杯数模竞赛A题 高压油管的压力控制 题解_第5张图片

问题二题解

2019 高教社杯数模竞赛A题 高压油管的压力控制 题解_第6张图片

分析

问题二与问题一一样都是压力控制,不同的是我们需要从几何图形上入手。进油时,在柱塞的压油过程中,柱塞被凸轮驱动上下运动,从而改变柱塞腔内的压力,决定高压油泵内的燃油是否进入。那么,由凸轮边缘曲线与角度的关系可以求得柱塞的运动情况,从而得到腔内的体积变化情况,进而求得腔内燃油的密度变化,由燃油压力与密度关系式得到其压力变化。喷油时,由已知喷油器的喷嘴结构及其工作条件和附录可以得到针阀与密封座之间的空隙面积。将问题一中给定的喷油器工作次数、高压油管尺寸和初始压力等条件代入模型求解,搜索凸轮的角速度,使高压油管内的压力尽量稳定在100 MPa左右。

求解

燃油的进入

由附件1给出的凸轮轮廓线极径、极角的关系,用插值法处理数据,经过三次差值后得到拟合轮廓线。对于凸轮的运动规律,可由对拟合曲线进行反解得到。在柱塞的运动过程中,我们关注其升程的最大值和最小值。其对应于凸轮轮廓线变化过程中的最高点与最低点。通过观察凸轮轮廓线发现,两个最值对应于凸轮轮廓线上的两端圆弧。以水平和竖直方向建立直角坐标系,将柱塞与轮廓接触点标为M,则该点对应坐标由式(18)计算
{ x = r ⋅ cos ⁡ θ y = r ⋅ sin ⁡ θ \left\{\begin{array}{l} x=r \cdot \cos \theta \\ y=r \cdot \sin \theta \end{array}\right. { x=rcosθy=rsinθ
图8为凸轮与柱塞连接驱动的几何示意图,M点为某时刻凸轮轮廓线上y坐标值最大的点。
2019 高教社杯数模竞赛A题 高压油管的压力控制 题解_第7张图片

初始位置时极角 ϕ 0 = 0 \phi_{0}=0 ϕ0=0。当凸轮运动到最大值点时,低压燃油将会在油泵作用下充满柱塞腔。设凸轮轮廓线上的点横坐标为 X 0 = [ x 1 , 0 , x 2 , 0 , … , x m , 0 , … , x n , 0 ] X_{0}=\left[x_{1,0}, x_{2,0}, \ldots, x_{m, 0}, \ldots, x_{n, 0}\right] X0=[x1,0,x2,0,,xm,0,,xn,0],相应的纵坐标为 Y 0 = [ y 1 , 0 , y 2 , 0 , … , y m , 0 , … , y n , 0 ] Y_{0}=\left[y_{1,0}, y_{2,0}, \ldots, y_{m, 0}, \ldots, y_{n, 0}\right] Y0=[y1,0,y2,0,,ym,0,,yn,0]

为了求任意时刻对应的x,y坐标值,设凸轮转动角度 ϕ k \phi_{k} ϕk,由上文坐标的计算公式可得,转角为 ϕ k \phi_{k} ϕk时的坐标为:

{ x m , k = x m , 0 ⋅ cos ⁡ φ k − y m , 0 ⋅ sin ⁡ φ k y m , k = x m , 0 ⋅ sin ⁡ φ k − y m , 0 ⋅ cos ⁡ φ k \left\{\begin{array}{l} x_{m, k}=x_{m, 0} \cdot \cos \varphi_{k}-y_{m, 0} \cdot \sin \varphi_{k} \\ y_{m, k}=x_{m, 0} \cdot \sin \varphi_{k}-y_{m, 0} \cdot \cos \varphi_{k} \end{array}\right. { xm,k=xm,0cosφkym,0sinφkym,k=xm,0sinφkym,0cosφk

由此可得当凸轮转角为 ϕ k \phi_{k} ϕk时,凸轮轮廓线的横坐标为 X k = [ x 1 , k , x 2 , k , … , x m , k , … , x n , k ] X_{k}=\left[x_{1, k}, x_{2, k}, \ldots, x_{m, k}, \ldots, x_{n, k}\right] Xk=[x1,k,x2,k,,xm,k,,xn,k]对应的纵坐标为 Y k = [ y 1 , k , y 2 , k , … , y m , k , … , y n , k ] Y_{k}=\left[y_{1, k}, y_{2, k}, \ldots, y_{m, k}, \ldots, y_{n, k}\right] Yk=[y1,k,y2,k,,ym,k,,yn,k]

若凸轮结构中的基圆半径为 R 0 R_0 R0,则当凸轮转角为 ϕ k \phi_{k} ϕk时,柱塞的升程 s k s_k sk s k = max ⁡ ( Y k ) − R 0 s_{k}=\max \left(Y_{k}\right)-R_{0} sk=max(Yk)R0,由求得的升程,根据 V = ( h 2 − s k ) S V=\left(h_{2}-s_{k}\right) S V=(h2sk)S可得该时刻高压油泵内的燃油体积。上式中S为柱塞腔的底面积, h 2 h_2 h2为柱塞运动到下止点时,柱塞底端与高压油泵顶端的距离。根据问题2中题设中的信息,柱塞运动到下止点时,低压燃油的压力为0.5MPa,根据燃油压力与密度对应关系的表达式,即可得到高压油泵内低压燃油的密度 ρ 0 \rho_{0} ρ0

凸轮运动到下止点,柱塞腔内燃油体积为 V 0 = S h 2 V_{0}=S h_{2} V0=Sh2,则腔内的燃油质量为 m = ρ 0 V 0 m=\rho_{0} V_{0} m=ρ0V0。凸轮转角为 ϕ k \phi_{k} ϕk时,腔内燃油质量不变,体积因柱塞的升降变为 V 1 V_1 V1,当没有再次进油时,腔内燃油密度为 ρ 1 = m V 1 = ρ 0 h 2 h 2 − s k \rho_{1}=\frac{m}{V_{1}}=\frac{\rho_{0} h_{2}}{h_{2}-s_{k}} ρ1=V1m=h2skρ0h2

现考虑凸轮转速与转角间关系。设凸轮转动角速度为 ω \omega ω,则在 Δ t \Delta t Δt时间内凸轮转过角度为 ϕ k + 1 − ϕ k = ω Δ t \phi_{k+1}-\phi_{k}=\omega \Delta t ϕk+1ϕk=ωΔt

设凸轮转角为 ϕ k \phi_{k} ϕk时腔内压力为 P 1 ( t ) P_1(t) P1(t),根据问题2题设,高压油管内的压力 P 2 ( t ) P_2(t) P2(t)若小于腔内压力,则高压油泵开始往油管内进油,进油量为 I ( t ) = C A 2 [ P 1 ( t ) − P 2 ( t ) ] ρ 1 I(t)=C A \sqrt{\frac{2\left[P_{1}(t)-P_{2}(t)\right]}{\rho_{1}}} I(t)=CAρ12[P1(t)P2(t)]

燃油的喷出

对喷油器喷嘴的示意图分析,将针阀与密封座之间的空隙面积记为S1,密封座底部面积记为S2。图9、图10分别为喷油嘴的的纵向截面和横向截面的各部分面积示意图。
2019 高教社杯数模竞赛A题 高压油管的压力控制 题解_第8张图片

根据附件2提供的针阀升程和时间的关系可以发现,针阀升程在[0,0.45]区间递增,在[0.45,2]区间稳定在2mm,在[2,2.46]区间内递减到0,在接下来的时间内恒为0。令针阀在某时刻的升程为 h ( t ) h(t) h(t),密封座的截面半径为 R 1 ( t ) R_1(t) R1(t),喷孔半径 R 2 = 0.7 m m R_2=0.7mm R2=0.7mm,由下图的几何关系图,底座圆锥半角为9度,将喷孔与圆锥订点的距离记为 L 0 L_0 L0。其几何关系如图11所示。

2019 高教社杯数模竞赛A题 高压油管的压力控制 题解_第9张图片

根据上图的几何关系,密封座截面半径为: R 1 ( t ) = [ h ( t ) + L 0 ] tan ⁡ 9 R_{1}(t)=\left[h(t)+L_{0}\right] \tan 9 R1(t)=[h(t)+L0]tan9

对应的针阀与密封座之间的面积S1为: S 1 ( t ) = π [ h ( t ) + L 0 ] 2 tan ⁡ 2 9 S_{1}(t)=\pi\left[h(t)+L_{0}\right]^{2} \tan ^{2} 9 S1(t)=π[h(t)+L0]2tan29

喷孔面积 s 2 s_2 s2 π R 2 2 \pi R_{2}^{2} πR22,故燃油喷出时,喷出燃油的流经面积 S ( t ) S(t) S(t),则 S ( t ) = min ⁡ { S 1 ( t ) , S 2 } S(t)=\min \left\{S_{1}(t), S_{2}\right\} S(t)=min{ S1(t),S2}

假设喷油嘴外部压强等于一标准大气压 P N P_N PN,高压油管内压力为 P 2 ( t ) P_2(t) P2(t),则由高压油管的流量计算公式,可得燃油喷出的流量 O ( t ) O(t) O(t) O ( t ) = C S ( t ) 2 [ P 2 ( t ) − P N ] ρ 2 O(t)=C S(t) \sqrt{\frac{2\left[P_{2}(t)-P_{N}\right]}{\rho_{2}}} O(t)=CS(t)ρ22[P2(t)PN]

同理问题一,当我们取很小的时间间隔为步长时,压力可以取离散值,那么原问题可以看作优化
m i n ∑ i = 1 N ∣ P ( t k ) − P 0 ∣ N min\frac{\sum_{i=1}^{N}\left|P\left(t_{k}\right)-P_{0}\right|}{N} minNi=1NP(tk)P0

求解该问题得到凸轮的角速度。

模型的求解

以0.01为步长搜索凸轮运动角速度,反复尝试使管内压力波动尽可能小。求得凸轮角速度为0.027249rad/ms时,高压油管压力稳定在100MPa左右。压力时间曲线如图12所示。

2019 高教社杯数模竞赛A题 高压油管的压力控制 题解_第10张图片

问题三题解

2019 高教社杯数模竞赛A题 高压油管的压力控制 题解_第11张图片

分析

问题三在问题二的基础上增加了一个喷油嘴,除此之外均与问题二相同,增加喷油嘴可以更快地将供油排出,从而减少高压油管内压力变化峰值,使油管内压力更加稳定。因为两个喷油嘴的喷油规律相同,所以我们可以直接在问题二基础上进行下一步工作。在原有模型的基础上考虑单向减压阀的引入。由单向减压阀的工作原理,设置单向减压阀的开启条件,设置阈值压强,管内压强大于阈值压强为减压阀开启条件,即此时燃油从油管内回流进减压阀,由流量计算公式求解减压阀中回流的燃油流量,从而得到高压油管内的燃油密度,进而得其压力,得到压力波动最小时的最优解。

求解

若要使高压油管内的压力稳定在100MPa左右,需调整喷油和供油策略。通过改变凸轮转速可以调整燃油的进入,通过单向减压阀调整高压油管内的压力;通过控制两个喷油嘴的喷油时间和调整针阀下止点来改变喷油策略。

要寻求合适的供油策略,相当于寻找一个合适的凸轮转动角速度 ω \omega ω,在该部分的求解中,我们将 ω \omega ω的值与其他参量联合起来进行求解。

喷油策略调整的主要目标为调节两个喷油嘴的喷油时间。这里假设每个喷油嘴的喷油规律与问题2中的相同,即1s喷射10次。由于两喷油嘴喷油存在时间间隔,故设两喷油嘴喷油时间间隔为 Δ t \Delta t Δt,喷油嘴1在t=0时刻开始喷射,喷油嘴2在 t = Δ t t = \Delta t t=Δt时刻开始喷射。

搜索两个喷油嘴的喷油间隙。当喷油嘴开始喷射时间间隔在0-50ms内变化时,取特征点12.5ms,25ms 37.5ms,50.0ms。其压力变化如图13-16所示。

2019 高教社杯数模竞赛A题 高压油管的压力控制 题解_第12张图片

由图可得,当喷油嘴开始喷射时间间隔在0-50ms内变化时,管内压力在稳定值附近的波动幅度逐渐减小借由前面的分析,可知道0-50ms时间间隔的大致趋势,我们画出0-100ms时压强差指标的图。如图17所示。

2019 高教社杯数模竞赛A题 高压油管的压力控制 题解_第13张图片

从图中可以看到,延迟时间在63ms附近压力差最小。

在上述调整策略的基础上引入单向减压阀,当高压油管内压力过高时降低压力。使用单向减压阀时,需设置一个压力阈值 P ′ P' P,当管内压力大于阈值时开启减压阀,使得管内燃油回流至外部低压油路,从而减小管内压力。设回流的燃油流量为 Q d Q_d Qd,单向减压阀单次开启时长为 t d t_d td,则
Q d = C A 2 [ P ( t ) − P e ( t ) ] ρ Q_d = CA\sqrt{\frac{2[P(t)-P_e(t)]}{\rho}} Qd=CAρ2[P(t)Pe(t)]

当油管内压力小于阈值P’时,单向减压阀关闭。因此需求凸轮旋转角速度 ω \omega ω和压力阈值 P ′ P' P,最小化压力变化,即 m i n P m a x − P m i n min P_{max}-P_{min} minPmaxPmin

最终找到的最优解为角速度0.0545, Δ t = 63 m s \Delta t= 63ms Δt=63ms,对应压力变化如图18:

2019 高教社杯数模竞赛A题 高压油管的压力控制 题解_第14张图片

代码附录

Q1.1

%密度函数,压力函数,出油函数
P=@(x)(x-0.80853816)/(0.001859637768-0.00170*x);
density=@(x)0.80853816*(1+ (0.6*10^-3*x)/(1+0.0017*x));
O=@(x)100*x.*(x<=0.2)+20.*(x>0.2&x<=2.2)-(100*x-240).*(x>2.2&x<=2.4)+0.*(x>2.4);

%规定常量
delta_t=0.01;
C=0.85;
V=(5^2)*500*pi;
A=(1.4/2)^2*pi;
p0=100;        
m0=density(100)*V; 
ml=m0;

y_test=[]
x_test=[]
l=0;

for t=0.28752:0.28752

result=0;
t_out=0;t_in=0;flag=0;
x=[];y=[];   %画图坐标
l=l+1;

for i=0:delta_t:100000   


flag=flag+1;
x(flag)=i;
y(flag)=p0;


vin=0;
if t_in>t+10
t_in=t_in-(t+10);
end
if t_in<t
vin=(C*A*(2*(160-p0)/0.8696)^(.5));
end

t_in=t_in+delta_t;
m_in=0.8696*vin*delta_t; 
if t_out>100
t_out=t_out-100;
end

vout=O(t_out)*delta_t;
t_out=t_out+delta_t;
mout=vout*density(p0) ;
delta_m=m_in-mout;

rho_now=(m0+delta_m)/V;
p0=P(rho_now);

m0=m0+delta_m;

flag=flag+1;
x(flag)=i;
y(flag)=p0;
end 

%搜索判定条件
y_ave=0;k=0;
for j=9950000:10000000
k=k+1;
y_ave=y_ave+y(j);
end
y_ave=y_ave/k;
y_test(l)=y_ave;
x_test(l)=t;
end

plot(x,y)
%plot(x_test,y_test);

Q1.2

%密度函数,压力函数,出油函数
P=@(x)(x-0.80853816)/(0.001859637768-0.00170*x);
density=@(x)0.80853816*(1+ (0.6*10^-3*x)/(1+0.0017*x));
O=@(x)100*x.*(x<=0.2)+20.*(x>0.2&x<=2.2)-(100*x-240).*(x>2.2&x<=2.4)+0.*(x>2.4);

%规定常量
delta_t=0.01;
C=0.85;
V=(5^2)*500*pi;
A=(1.4/2)^2*pi;
p0=100;        
m0=density(100)*V; 
ml=m0;

y_test=[]
x_test=[]
l=0;
t=0;


result=0;
t_out=0;t_in=0;flag=0;
x=[];y=[];   %画图坐标
l=l+1;

for i=0:delta_t:20000   


flag=flag+1;
x(flag)=i;
y(flag)=p0;

%if i<5000
%   t=0.0001*i+0.26485;  
%end
%if i>=5000
%   t=0.76485;  
%end
%if i<2000
%   t=-0.0001*i+0.96685;  
%end
%if i>=2000
%   t=0.76485;  
%end
if i<10000
t=0.00004*i+0.36485;  
end
if i>=10000
t=0.76485;  
end

vin=0;
if t_in>t+10
t_in=t_in-(t+10);
end
if t_in<t
vin=(C*A*(2*(160-p0)/0.8696)^(.5));
end

t_in=t_in+delta_t;
m_in=0.8696*vin*delta_t; 
if t_out>100
t_out=t_out-100;
end

vout=O(t_out)*delta_t;
t_out=t_out+delta_t;
mout=vout*density(p0) ;
delta_m=m_in-mout;

rho_now=(m0+delta_m)/V;
p0=P(rho_now);

m0=m0+delta_m;

flag=flag+1;
x(flag)=i;
y(flag)=p0;
end 

%搜索判定条件
%y_ave=0;k=0;
%for j=9950000:10000000
%    k=k+1;
%    y_ave=y_ave+y(j);
%end
%y_ave=y_ave/k;
%y_test(l)=y_ave;
%x_test(l)=t;


plot(x,y)
%plot(x_test,y_test);

Q2

 %密度函数,压力函数
 density=@(x)0.80853816*(1+ (0.6*10^-3*x)/(1+1.7*10^-3*x));
 P=@(x)-(90071992547409920000*x-72826643121816530000)/(153122387330596864*x-167501279180178019);
 
 c=0.85;
 V=(5^2)*500*pi;
 A=(1.4/2)^2*pi;
 A_oil=(5/2)^2*pi;
 H=5.8446;
 Vmax=H*A_oil;
 M=Vmax*density(0.5);
 m0=density(100)*V; 
 delta_t=0.01;
 p_wai=0.1;
 theta=xlsread('附件1-凸轮边缘曲线','sheet1','A2:A629');
 r=xlsread('附件1-凸轮边缘曲线','sheet1','B2:B629');
 L0=0.7/tan(9/180*pi)*2.5/1.4;
 A_zhen=(2.5/2)^2*pi;
 A_kong=0.7^2*pi;
 k=[];x=[];y=[];
 al=xlsread('附件2-针阀运动曲线','sheet1','B2:B46');
 bl=2*ones(156,1);
 cl=xlsread('附件2-针阀运动曲线','sheet1','E2:E46');
 h_zhen=[al;bl;cl;zeros(9755,1)]';
 
 
 for i=1:628
 x(i)=sin(theta(i))*r(i);
 y(i)=cos(theta(i))*r(i);
 end
 s=[];u=1;
 
 for i=0:0.01:6.27
 xk=[];
 yk=[];
 for j=1:628
 xk(j)=x(j)*cos(i)-y(j)*sin(i);
 yk(j)=x(j)*sin(i)-y(j)*cos(i);
 end
 s(u)=max(yk)-2.4130;
 u=u+1;
 end
 
 s=interp1([0:0.01:6.27],s,[0:0.000001:6.27],'spline');
 w=0.027249;
 j=1;
 u=1;
 p0=100; 
 rho0=0.85;
 m_oil=M;
 fy=1;
 
 for i=0:delta_t:100000
 fy=fy+int32(w*delta_t/0.000001);
 while fy>6270001
 fy=fy-6270001;
 m_oil=M;
 end
 h_now=H-s(fy);
 V_now=A_oil*h_now;
 rho_now=m_oil/V_now;
 P_now=P(rho_now);
 vin=0;
 if P_now>p0
 vin=c*A*(2*(P_now-p0)/rho_now)^(.5);
 end
 m_in=rho_now*vin*delta_t;
 m_oil=m_oil-m_in;
 rl=(h_zhen(u)+L0)*tan(9/180*pi);h_z=h_zhen(u);
 A_out=pi*rl^2-A_zhen;
 if pi*rl^2-A_zhen-A_kong>0
 A_out=A_kong;
 end
 if h_zhen(u)==0
 A_out=0;
 end
 u=u+1;
 if u>10001
 u=u-10001;
 end
 vout=c*A_out*(2*(p0-p_wai)/rho0)^(.5);
 mout=vout*rho0*delta_t;
 delta_m=m_in-mout;
 rho0=(m0+delta_m)/V;
 k(j)=p0;
 p0=P(rho0);
 j=j+1;
 
 m0=m0+delta_m;
 end
 
 
 plot(k)
 xlabel('时间(t/ms)')
 ylabel('压力(P/MPa)')

Q3

%密度函数,压力函数
 density=@(x)0.80853816*(1+ (0.6*10^-3*x)/(1+1.7*10^-3*x));
 P=@(x)-(90071992547409920000*x-72826643121816530000)/(153122387330596864*x-167501279180178019);
 
 
 c=0.85;
 V=(5^2)*500*pi;
 A=(1.4/2)^2*pi;
 A_oil=(5/2)^2*pi;
 H=5.8446;
 Vmax=H*A_oil;
 M=Vmax*density(0.5);
 m0=density(100)*V; 
 delta_t=0.01;
 p_wai=0.1;
 theta=xlsread('附件1-凸轮边缘曲线','sheet1','A2:A629');
 r=xlsread('附件1-凸轮边缘曲线','sheet1','B2:B629');
 L0=0.7/tan(9/180*pi)*2.5/1.4;
 A_zhen=(2.5/2)^2*pi;
 A_kong=0.7^2*pi;
 k=[];x=[];y=[];
 al=xlsread('附件2-针阀运动曲线','sheet1','B2:B46');
 bl=2*ones(156,1);
 cl=xlsread('附件2-针阀运动曲线','sheet1','E2:E46');
 h_zhen=[al;bl;cl;zeros(9755,1)]';
 yanchi=5000;
 for i=10001:-1:yanchi+1
 h_zhenl(i)=h_zhen(i-yanchi);
 end
 for i=1:1:yanchi
 h_zhenl(i)=0;
 end
 
 for i=1:628
 x(i)=sin(theta(i))*r(i);
 y(i)=cos(theta(i))*r(i);
 end
 s=[];u=1;
 
 for i=0:0.01:6.27
 xk=[];
 yk=[];
 for j=1:628
 xk(j)=x(j)*cos(i)-y(j)*sin(i);
 yk(j)=x(j)*sin(i)-y(j)*cos(i);
 end
 s(u)=max(yk)-2.4130;
 u=u+1;
 end
 
 s=interp1([0:0.01:6.27],s,[0:0.000001:6.27],'spline');
 w=0.0545;
 j=1;
 u=1;
 p0=100; 
 rho0=0.85;
 m_oil=M;
 fy=1;
 
 for i=0:delta_t:100000
 fy=fy+int32(w*delta_t/0.000001);
 while fy>6270001
 fy=fy-6270001;
 m_oil=M;
 end
 h_now=H-s(fy);
 V_now=A_oil*h_now;
 rho_now=m_oil/V_now;
 P_now=P(rho_now);
 vin=0;
 if P_now>p0
 vin=c*A*(2*(P_now-p0)/rho_now)^(.5);
 end
 m_in=rho_now*vin*delta_t;
 m_oil=m_oil-m_in;
 rl=(h_zhen(u)+L0)*tan(9/180*pi);
 rl2=(h_zhenl(u)+L0)*tan(9/180*pi);
 
 A_out=pi*rl^2-A_zhen;
 if pi*rl^2-A_zhen-A_kong>0
 A_out=A_kong;
 end
 if h_zhen(u)==0
 A_out=0;
 end
 
 Al_out=pi*rl2^2-A_zhen;
 if pi*rl2^2-A_zhen-A_kong>0
 Al_out=A_kong;
 end
 if h_zhenl(u)==0
 Al_out=0;
 end
 u=u+1;
 if u>10001
 u=u-10001;
 end
 vout=c*(A_out+Al_out)*(2*(p0-p_wai)/rho0)^(.5);
 mout=vout*rho0*delta_t;
 delta_m=m_in-mout;
 rho0=(m0+delta_m)/V;
 k(j)=p0;
 p0=P(rho0);
 j=j+1;
 
 m0=m0+delta_m;
 end
 
 
 
 plot(k)
 xlabel('时间(t/ms)')
 ylabel('压力(P/MPa)')

你可能感兴趣的:(Gadgets,matlab,数学建模,算法)