AnyMath 文档
Notebook

航天器飞行紧急中止系统

本项目提出了一个基于有限自动机库的航天器飞行紧急中止系统模型,用于复杂技术系统控制逻辑的可视化设计。

使用宏 @__DIR__ 定义包含交互式脚本的路径:

In [ ]:
demoroot = @__DIR__;

系统要求

如果检测到航天器的故障,则必须进行紧急飞行中断。

根据获得的高度,航天器可能:

*返回发射场(RTLS模式,返回发射场):
*海拔高度低于10,000米。
*燃料必须排出,侧助推器和外部油箱必须分开。
*在预先准备好的垫上紧急着陆(DRL模式,下行着陆):
*条件是海拔在10,000米至100,000米的范围内。
*侧助推器和外部油箱必须分开。
*在绕地球一个轨道后紧急着陆(AOA,围绕模式中止一次):
*条件是海拔在100,000米至400,000米的范围内。
*外部油箱必须分开。
*实现稳定轨道(ATO模式,中止轨道):
*海拔高度超过400,000米。

因此,如果飞行器的高度和速度不允许返回发射场,则启动DRL模式。 如果该设备无法实现稳定的轨道,但获得了足够的速度来完成绕地球的公转,则aoa模式被激活。 如果无法到达目标轨道,但有可能到达较低的稳定轨道,则在船上发送ATO命令。

管理模式的示例

挑战者穿梭机紧急飞行中断模式的控制面板(sts-51-F飞行期间拍摄的照片):

launchAbortSystem_1.PNG

在航天器发射期间,航天飞机发动机的传感器发生故障,之后三个主发动机中的一个被关闭。 这是所有被归类为"到达稳定轨道"的航天飞机飞行中唯一的事件。"

模型描述

紧急飞行中止系统的模型 launch_abort_system.engee 它由一个子系统组成,用于选择活动场景 scenario_selection 和有限状态机 launch_abort_controller,其中实现了控制逻辑:

launchAbortSystem_2.PNG

在街区入口处 launch_abort_controller 信号来了:

  • alt -航天器的高度。
  • anomaly -故障的迹象。

块输出信号 launch_abort_controller:

  • dumpFuel -燃料排放指示器。
  • releaseBoosters -侧面助推器分离的标志。
  • releaseTank -表示外部燃料箱的分离。

紧急飞行中止控制器由两个并联状态 ModeLogicAbort.

条件 ModeLogic 根据航天器的当前高度确定可接受的紧急飞行中止模式。:

launchAbortSystem_3_1.PNG

条件 Abort 检测到故障时控制设备:

launchAbortSystem_3_2.PNG

如果输入信号是 anomaly 取值 true,系统正在从 NormalAbortLogic,从而实现了飞行中断的逻辑-燃料排放,侧面助推器和外部燃料箱的分离。

并行状态的协调(即确定在状态中选择的模式 ModeLogic)是使用运算符执行的 in().

时间逻辑的运算符 after() 允许您在状态之间进行转换 FuelDump, BoosterReleaseTankRelease 激活后10个时钟周期。

条件 NoActionRequired 对应于模式 ATO.

进入和退出状态 AbortLogic 超过渡的基础上实现的。

用于选择活动场景的子系统 scenario_selection 它由用于从工作区加载数据的块和确定信号值的变体源组成。 altitudeanomaly 基于逻辑表达式的真理:

launchAbortSystem_4.PNG

变体源的设置:

launchAbortSystem_5.PNG

变量的值 active_scenario 它将在开始模拟之前确定(基于交互式脚本的代码单元格的掩码中的下拉列表)。

紧急飞行中止方案

让我们定义信号的值 anomalyaltitude 对于各种紧急飞行中止场景的变量的形式,如 WorkspaceArray.

RTLS模式

In [ ]:
RTLS_anomaly_time = [0.0, 10.0, 10.0, 136.0];
RTLS_anomaly_value = [0.0, 0.0, 1.0, 1.0];
RTLS_altitude_time = [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0, 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, 100.0, 101.0, 102.0, 103.0, 104.0, 105.0, 106.0, 107.0, 108.0, 109.0, 110.0, 111.0, 112.0, 113.0, 114.0, 115.0, 116.0, 117.0, 118.0, 119.0, 120.0, 121.0, 122.0, 123.0, 124.0, 125.0, 126.0, 127.0, 128.0, 129.0, 130.0, 131.0, 132.0, 133.0, 134.0, 135.0, 136.0];
RTLS_altitude_value = [0.0, 238.83418401927727, 473.82790161180975, 706.627066960488, 934.4884897604945, 1155.7662558289385, 1368.8144509829292, 1571.987161039576, 1739.1879956908977, 1863.4500084748431, 1971.2869080588416, 2071.2716641032416, 2164.6229115772194, 2278.2716398435027, 2421.28127268735, 2570.4964570329994, 2715.1505439327766, 2830.412157103741, 2923.5750342421434, 3023.184393769722, 3129.9367163790193, 3249.5898448793996, 3408.8300113444957, 3600.465782838117, 3794.3016946679513, 3986.238468840256, 4166.585340339876, 4307.345173874779, 4414.489404298698, 4513.151229927636, 4601.026833688474, 4681.536327982139, 4776.538637939075, 4870.94703061685, 4935.830300786651, 4978.674368023556, 5003.816562756626, 5013.284895255117, 5014.967054543678, 5014.967054543678, 5011.804490770724, 5005.482083164423, 4999.46368486074, 4996.4133770985045, 4995.747216056592, 4995.747216056592, 4996.417934636157, 4997.989644250674, 4999.664143288303, 5000.597652657715, 5000.695848528347, 5000.685990535441, 5000.662036769181, 5000.355686205225, 5000.201844608568, 5000.507180581901, 5001.164648152473, 5001.795481969884, 5001.933780418543, 5001.820273687701, 5001.416741843737, 4999.81521449166, 4997.008981225274, 4994.053575497205, 4991.884217505219, 4991.884217505219, 4992.838135279628, 4995.489654871515, 5003.187707967534, 5013.576220869276, 5020.802913160951, 5020.802913160951, 5020.326793018041, 5014.086470774979, 4986.353228819495, 4933.680790345622, 4857.003118546842, 4746.269936688438, 4602.493718790893, 4444.599578678139, 4290.045324860334, 4166.722996659114, 4072.37505511064, 3990.4204229175475, 3922.330097188704, 3859.539360441905, 3778.087948117197, 3683.1690715240757, 3610.2592980411655, 3551.795060613914, 3482.691553248512, 3399.607932792115, 3298.7836731884213, 3159.082645326051, 2982.940994801094, 2793.861637095698, 2597.1490557978527, 2398.1077344955465, 2237.8087623579167, 2117.913203197453, 2002.918701784611, 1894.6558131562974, 1793.867406770269, 1664.3076418205474, 1507.9185981752182, 1362.5836700618195, 1232.0941727690831, 1132.7481600611118, 1057.8445246935014, 988.1012651163192, 922.6072048975066, 855.6314594286775, 768.4452143565462, 672.9086146738782, 599.0409178963897, 537.9099739741458, 476.0085956994564, 414.6186482018665, 349.1332248834753, 271.06822753905976, 198.99626302395365, 147.87338676747203, 111.34081225111692, 88.88075132576502, 77.87818232677606, 67.87818232677606, 57.87818232677604, 52.0500788270874, 45.59954907462388, 36.60253222779843, 26.602532227798427, 16.602532227798427, 7.130396358607671, 1.0, 1.0, 1.0, 1.0];
In [ ]:
RTLS_anomaly = WorkspaceArray("wa_RTLS_anomaly", DataFrame(time = RTLS_anomaly_time, value = RTLS_anomaly_value));
RTLS_altitude = WorkspaceArray("wa_RTLS_altitude", DataFrame(time = RTLS_altitude_time, value = RTLS_altitude_value));

DRL模式

In [ ]:
DRL_anomaly_time = [0.0, 41.0, 41.0, 136.0];
DRL_anomaly_value = [0.0, 0.0, 1.0, 1.0];
DRL_altitude_time = [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0, 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, 100.0, 101.0, 102.0, 103.0, 104.0, 105.0, 106.0, 107.0, 108.0, 109.0, 110.0, 111.0, 112.0, 113.0, 114.0, 115.0, 116.0, 117.0, 118.0, 119.0, 120.0, 121.0, 122.0, 123.0, 124.0, 125.0, 126.0, 127.0, 128.0, 129.0, 130.0, 131.0, 132.0, 133.0, 134.0, 135.0, 136.0];
DRL_altitude_value = [0.0, 298.0918059881316, 593.2168514777068, 886.6466052538208, 1176.2619526746478, 1457.109994865068, 1679.0177925432465, 1846.4297386890717, 2009.5713890124762, 2169.2929969245324, 2331.635662807361, 2549.369944330823, 2822.1584837840783, 3105.392177607269, 3396.3520964910867, 3634.0094306082583, 3825.2687997429975, 4033.4369901398118, 4259.1715623258815, 4509.361535531119, 4846.442723276801, 5262.154423246115, 5689.07068043535, 6119.651679331526, 6546.357604421659, 6961.648640192767, 7336.9432895652535, 7625.388790817116, 7850.329465575045, 8056.224642229942, 8243.36417674694, 8436.730493879484, 8683.228170245135, 8963.21558633446, 9239.587003095525, 9500.075245061736, 9706.708927929192, 9883.150151423823, 10074.25573647291, 10278.213638809317, 10510.0796510681, 10804.499815561687, 11128.37273141273, 11421.288317382583, 11658.167923334842, 11826.30191107606, 11937.218894321315, 11999.240354829984, 12017.952190047858, 12017.952190047858, 12017.952190047858, 12011.457518787653, 12000.946186250236, 11997.029773218092, 11997.029773218092, 11997.02977321809, 11999.121247755274, 12001.754332339717, 12001.88897928284, 12001.88897928284, 12001.880226431687, 11999.595782832, 11998.31362139505, 11998.31362139505, 11998.31362139505, 12002.896532615214, 12009.853784976738, 12010.180918146676, 12010.180918146676, 12002.326874880055, 11957.454428093311, 11863.440021029117, 11715.081980957797, 11498.756593987368, 11218.125029071813, 10897.408693584666, 10585.816340871193, 10334.174380942513, 10120.340658601193, 9914.524556645218, 9721.250345069453, 9510.146717920625, 9244.417490968292, 8955.42782357927, 8677.384115513669, 8431.67295099431, 8242.776578143139, 8082.225756638946, 7920.0116944856545, 7754.926514379689, 7560.633153136476, 7308.8719910622285, 7025.508004296224, 6739.118828042508, 6476.54942635223, 6270.842787595443, 6096.70742895015, 5922.420735960909, 5748.416795175865, 5549.140603426964, 5292.745179660741, 5005.6240604492905, 4720.50796043164, 4462.263916324462, 4261.5401080733645, 4093.5391267010755, 3927.287793164557, 3762.131293260738, 3572.3741326613044, 3325.8859703314924, 3045.3283506819002, 2758.884884711378, 2493.0882128446206, 2282.8453734440545, 2100.0639461634805, 1910.3658030856532, 1716.8559372198224, 1496.6024877318114, 1221.5834397496067, 930.0604810097218, 669.8652507196172, 469.0875560234799, 329.34100551149106, 229.18476252229578, 164.90963145929058, 129.75702961532502, 99.75702961532502, 69.5690580284263, 49.85010557336069, 36.03339891362815, 26.033398913628137, 16.033398913628137, 5.315210626608653, -0.7438897386855101, -1.8595036656778174, -3.0991727761296954, 0.0];
In [ ]:
DRL_anomaly = WorkspaceArray("wa_DRL_anomaly", DataFrame(time = DRL_anomaly_time, value = DRL_anomaly_value));
DRL_altitude = WorkspaceArray("wa_DRL_altitude", DataFrame(time = DRL_altitude_time, value = DRL_altitude_value));

AOA模式

In [ ]:
AOA_anomaly_time = [0.0, 70.0, 70.0, 136.0];
AOA_anomaly_value = [0.0, 0.0, 1.0, 1.0];
AOA_altitude_time = [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0, 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, 100.0, 101.0, 102.0, 103.0, 104.0, 105.0, 106.0, 107.0, 108.0, 109.0, 110.0, 111.0, 112.0, 113.0, 114.0, 115.0, 116.0, 117.0, 118.0, 119.0, 120.0, 121.0, 122.0, 123.0, 124.0, 125.0, 126.0, 127.0, 128.0, 129.0, 130.0, 131.0, 132.0, 133.0, 134.0, 135.0, 136.0];
AOA_altitude_value = [0.0, 2785.921275281699, 5314.497101501311, 7314.497101501311, 8900.475460334066, 10421.203513621582, 11922.305335863419, 13652.710996071612, 15652.710996071612, 17506.369667867322, 19310.380888339918, 21429.93026527767, 23883.169934730176, 27048.620513298272, 31227.00392209639, 35982.89079945362, 40719.295263941734, 44535.64993428104, 47545.35858107984, 50475.334622653834, 53279.623850601994, 56126.25710591658, 59794.43765411858, 64088.262338752, 67979.90288837987, 70983.79771351689, 73394.48645452577, 75770.39633770857, 78145.7175288137, 80819.06143369994, 84365.64617582805, 88587.72969173649, 92543.6392603517, 95699.33415924627, 98512.67816860638, 101536.41794557704, 104775.28985344693, 108693.1138048021, 113849.35525176072, 119783.4745785262, 125911.9487270421, 132171.164367807, 138253.34041645186, 143097.09896949324, 146920.47912005824, 150712.35988926783, 154453.8468969249, 158386.35588267483, 163521.04177025205, 169605.78485175528, 175633.76785626408, 181622.08927915088, 187587.84761578817, 192453.16172821098, 196124.23125513087, 199699.99021174348, 203288.42723039386, 206891.42305547118, 211601.46240272446, 217522.57354924871, 223561.67473367776, 229612.25391551823, 235669.53128025556, 240959.49193300228, 245038.380786478, 248674.15147504635, 252306.27093702962, 255934.09567111672, 260327.57727668583, 265927.76756582456, 271965.3696492929, 278000.9333542085, 284036.47896763874, 289642.99736206955, 294042.80707293085, 297666.93310564634, 301294.2501661641, 304924.52671147644, 308987.496198557, 314260.5000068359, 320311.1086311488, 326357.9784512074, 332397.80768107926, 338334.8381939987, 343061.8343857198, 346672.6609367461, 350273.92328546435, 353866.7617950936, 357547.6710832808, 362427.5211587476, 368418.9796590614, 374424.87137750065, 380456.38409610617, 386524.705596919, 391644.85552145215, 395560.9404586724, 399260.87542302976, 402993.7276847959, 406747.2822974383, 411494.96497083624, 417470.58698329946, 423653.62370353844, 429751.87076032616, 435723.8785151237, 440976.19584172574, 445000.57382926246, 448374.18540782994, 451595.60254968255, 454634.96630677406, 458011.1341046509, 462154.4760394491, 466406.65525226534, 469837.77092872065, 472323.6140151891, 474299.2181660241, 475992.88425800466, 477536.4796793071, 479508.84451209585, 481508.8445120958, 483157.0725633841, 485083.82167789526, 487350.09451662644, 489747.7435774153, 492626.625305557, 495626.625305557, 497862.86816426704, 499252.5261910053, 499882.51229742763, 500003.630569286, 500003.630569286, 500003.630569286, 500000.61302446184, 500000.61302446184, 500000.61302446184, 500000.61302446184, 500000.0, 500000.0];
In [ ]:
AOA_anomaly = WorkspaceArray("wa_AOA_anomaly", DataFrame(time = AOA_anomaly_time, value = AOA_anomaly_value));
AOA_altitude = WorkspaceArray("wa_AOA_altitude", DataFrame(time = AOA_altitude_time, value = AOA_altitude_value));

ATO模式

In [ ]:
ATO_anomaly_time = [0.0, 110.0, 110.0, 136.0];
ATO_anomaly_value = [0.0, 0.0, 1.0, 1.0];
ATO_altitude_time = [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0, 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, 100.0, 101.0, 102.0, 103.0, 104.0, 105.0, 106.0, 107.0, 108.0, 109.0, 110.0, 111.0, 112.0, 113.0, 114.0, 115.0, 116.0, 117.0, 118.0, 119.0, 120.0, 121.0, 122.0, 123.0, 124.0, 125.0, 126.0, 127.0, 128.0, 129.0, 130.0, 131.0, 132.0, 133.0, 134.0, 135.0, 136.0];
ATO_altitude_value = [0.0, 2785.921275281699, 5314.497101501311, 7314.497101501311, 8900.475460334066, 10421.203513621582, 11922.305335863419, 13652.710996071612, 15652.710996071612, 17506.369667867322, 19310.380888339918, 21429.93026527767, 23883.169934730176, 27048.620513298272, 31227.00392209639, 35982.89079945362, 40719.295263941734, 44535.64993428104, 47545.35858107984, 50475.334622653834, 53279.623850601994, 56126.25710591658, 59794.43765411858, 64088.262338752, 67979.90288837987, 70983.79771351689, 73394.48645452577, 75770.39633770857, 78145.7175288137, 80819.06143369994, 84365.64617582805, 88587.72969173649, 92543.6392603517, 95699.33415924627, 98512.67816860638, 101536.41794557704, 104775.28985344693, 108693.1138048021, 113849.35525176072, 119783.4745785262, 125911.9487270421, 132171.164367807, 138253.34041645186, 143097.09896949324, 146920.47912005824, 150712.35988926783, 154453.8468969249, 158386.35588267483, 163521.04177025205, 169605.78485175528, 175633.76785626408, 181622.08927915088, 187587.84761578817, 192453.16172821098, 196124.23125513087, 199699.99021174348, 203288.42723039386, 206891.42305547118, 211601.46240272446, 217522.57354924871, 223561.67473367776, 229612.25391551823, 235669.53128025556, 240959.49193300228, 245038.380786478, 248674.15147504635, 252306.27093702962, 255934.09567111672, 260327.57727668583, 265927.76756582456, 271965.3696492929, 278000.9333542085, 284036.47896763874, 289642.99736206955, 294042.80707293085, 297666.93310564634, 301294.2501661641, 304924.52671147644, 308987.496198557, 314260.5000068359, 320311.1086311488, 326357.9784512074, 332397.80768107926, 338334.8381939987, 343061.8343857198, 346672.6609367461, 350273.92328546435, 353866.7617950936, 357547.6710832808, 362427.5211587476, 368418.9796590614, 374424.87137750065, 380456.38409610617, 386524.705596919, 391644.85552145215, 395560.9404586724, 399260.87542302976, 402993.7276847959, 406747.2822974383, 411494.96497083624, 417470.58698329946, 423653.62370353844, 429751.87076032616, 435723.8785151237, 440976.19584172574, 445000.57382926246, 448374.18540782994, 451595.60254968255, 454634.96630677406, 458011.1341046509, 462154.4760394491, 466406.65525226534, 469837.77092872065, 472323.6140151891, 474299.2181660241, 475992.88425800466, 477536.4796793071, 479508.84451209585, 481508.8445120958, 483157.0725633841, 485083.82167789526, 487350.09451662644, 489747.7435774153, 492626.625305557, 495626.625305557, 497862.86816426704, 499252.5261910053, 499882.51229742763, 500003.630569286, 500003.630569286, 500003.630569286, 500000.61302446184, 500000.61302446184, 500000.61302446184, 500000.61302446184, 500000.0, 500000.0];
In [ ]:
ATO_anomaly = WorkspaceArray("wa_ATO_anomaly", DataFrame(time = ATO_anomaly_time, value = ATO_anomaly_value));
ATO_altitude = WorkspaceArray("wa_ATO_altitude", DataFrame(time = ATO_altitude_time, value = ATO_altitude_value));

正常模式

In [ ]:
Normal_anomaly_time = [0.0, 136.0];
Normal_anomaly_value = [0.0, 0.0];
Normal_altitude_time = [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0, 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, 100.0, 101.0, 102.0, 103.0, 104.0, 105.0, 106.0, 107.0, 108.0, 109.0, 110.0, 111.0, 112.0, 113.0, 114.0, 115.0, 116.0, 117.0, 118.0, 119.0, 120.0, 121.0, 122.0, 123.0, 124.0, 125.0, 126.0, 127.0, 128.0, 129.0, 130.0, 131.0, 132.0, 133.0, 134.0, 135.0, 136.0];
Normal_altitude_value = [0.0, 2785.921275281699, 5314.497101501311, 7314.497101501311, 8900.475460334066, 10421.203513621582, 11922.305335863419, 13652.710996071612, 15652.710996071612, 17506.369667867322, 19310.380888339918, 21429.93026527767, 23883.169934730176, 27048.620513298272, 31227.00392209639, 35982.89079945362, 40719.295263941734, 44535.64993428104, 47545.35858107984, 50475.334622653834, 53279.623850601994, 56126.25710591658, 59794.43765411858, 64088.262338752, 67979.90288837987, 70983.79771351689, 73394.48645452577, 75770.39633770857, 78145.7175288137, 80819.06143369994, 84365.64617582805, 88587.72969173649, 92543.6392603517, 95699.33415924627, 98512.67816860638, 101536.41794557704, 104775.28985344693, 108693.1138048021, 113849.35525176072, 119783.4745785262, 125911.9487270421, 132171.164367807, 138253.34041645186, 143097.09896949324, 146920.47912005824, 150712.35988926783, 154453.8468969249, 158386.35588267483, 163521.04177025205, 169605.78485175528, 175633.76785626408, 181622.08927915088, 187587.84761578817, 192453.16172821098, 196124.23125513087, 199699.99021174348, 203288.42723039386, 206891.42305547118, 211601.46240272446, 217522.57354924871, 223561.67473367776, 229612.25391551823, 235669.53128025556, 240959.49193300228, 245038.380786478, 248674.15147504635, 252306.27093702962, 255934.09567111672, 260327.57727668583, 265927.76756582456, 271965.3696492929, 278000.9333542085, 284036.47896763874, 289642.99736206955, 294042.80707293085, 297666.93310564634, 301294.2501661641, 304924.52671147644, 308987.496198557, 314260.5000068359, 320311.1086311488, 326357.9784512074, 332397.80768107926, 338334.8381939987, 343061.8343857198, 346672.6609367461, 350273.92328546435, 353866.7617950936, 357547.6710832808, 362427.5211587476, 368418.9796590614, 374424.87137750065, 380456.38409610617, 386524.705596919, 391644.85552145215, 395560.9404586724, 399260.87542302976, 402993.7276847959, 406747.2822974383, 411494.96497083624, 417470.58698329946, 423653.62370353844, 429751.87076032616, 435723.8785151237, 440976.19584172574, 445000.57382926246, 448374.18540782994, 451595.60254968255, 454634.96630677406, 458011.1341046509, 462154.4760394491, 466406.65525226534, 469837.77092872065, 472323.6140151891, 474299.2181660241, 475992.88425800466, 477536.4796793071, 479508.84451209585, 481508.8445120958, 483157.0725633841, 485083.82167789526, 487350.09451662644, 489747.7435774153, 492626.625305557, 495626.625305557, 497862.86816426704, 499252.5261910053, 499882.51229742763, 500003.630569286, 500003.630569286, 500003.630569286, 500000.61302446184, 500000.61302446184, 500000.61302446184, 500000.61302446184, 500000.0, 500000.0];
In [ ]:
Normal_anomaly = WorkspaceArray("wa_Normal_anomaly", DataFrame(time = Normal_anomaly_time, value = Normal_anomaly_value));
Normal_altitude = WorkspaceArray("wa_Normal_altitude", DataFrame(time = Normal_altitude_time, value = Normal_altitude_value));

运行模拟

让我们选择航天器飞行中断所需的场景。:

In [ ]:
active_scenario = "RTLS" # @param ["RTLS", "DRL", "AOA", "ATO", "Normal"]
;

加载模型 launchAbortSystem.engee:

In [ ]:
launchAbortSystem = engee.load("$demoroot/launch_abort_system.engee");

让我们运行她的模拟。:

In [ ]:
simulationResults = engee.run(launchAbortSystem);

我们将在模拟结束后关闭模型:

In [ ]:
engee.close(launchAbortSystem, force = true);

模拟结果

导入模拟结果:

In [ ]:
launchAbortSystem_dumpFuel_t = simulationResults["dumpFuel"].time;
launchAbortSystem_dumpFuel_y = simulationResults["dumpFuel"].value;
In [ ]:
launchAbortSystem_releaseBoosters_t = simulationResults["releaseBoosters"].time;
launchAbortSystem_releaseBoosters_y = simulationResults["releaseBoosters"].value;
In [ ]:
launchAbortSystem_releaseTank_t = simulationResults["releaseTank"].time;
launchAbortSystem_releaseTank_y = simulationResults["releaseTank"].value;

让我们构建图表:

In [ ]:
plot(launchAbortSystem_dumpFuel_t, launchAbortSystem_dumpFuel_y, label = "燃油排放指示器", legend=:bottomright)
plot!(launchAbortSystem_releaseBoosters_t, launchAbortSystem_releaseBoosters_y, label = "侧面助推器分离的标志")
plot!(launchAbortSystem_releaseTank_t, launchAbortSystem_releaseTank_y, label = "外部油箱分离的指示")

title!("紧急航班中断。 $active_scenario模式")
xlabel!("时间,[s]")
ylabel!("签署")
Out[0]:

结论

该项目演示了有限自动机库的高级功能:

*分层并行状态;
*状态活动检查操作员 in();
*时间逻辑运算符 after();
*超级过渡。

此外,该项目还显示了根据交互式脚本的代码单元格的掩码和"变体源"块选择不同测试场景的可能性。