|
|
|
@@ -5,7 +5,7 @@
|
|
|
|
|
*
|
|
|
|
|
* Model version : 1.1309
|
|
|
|
|
* Simulink Coder version : 9.0 (R2018b) 24-May-2018
|
|
|
|
|
* C/C++ source code generated on : Tue Jan 11 14:52:20 2022
|
|
|
|
|
* C/C++ source code generated on : Tue Jan 11 21:07:27 2022
|
|
|
|
|
*
|
|
|
|
|
* Target selection: ert_shrlib.tlc
|
|
|
|
|
* Embedded hardware selection: Intel->x86-64 (Windows64)
|
|
|
|
@@ -126,15 +126,16 @@
|
|
|
|
|
#define ET39_SIL_IN_Hovering_m ((uint8_T)6U)
|
|
|
|
|
#define ET39_SIL_IN_Landed_m ((uint8_T)7U)
|
|
|
|
|
#define ET39_SIL_IN_Liftoff ((uint8_T)8U)
|
|
|
|
|
#define ET39_SIL_IN_OnRunWay ((uint8_T)9U)
|
|
|
|
|
#define ET39_SIL_IN_Prepare ((uint8_T)10U)
|
|
|
|
|
#define ET39_SIL_IN_Sink1 ((uint8_T)12U)
|
|
|
|
|
#define ET39_SIL_IN_Sink_l ((uint8_T)11U)
|
|
|
|
|
#define ET39_SIL_IN_Test_Rot ((uint8_T)13U)
|
|
|
|
|
#define ET39_SIL_IN_Trans2FW ((uint8_T)14U)
|
|
|
|
|
#define ET39_SIL_IN_Unarmed_g ((uint8_T)15U)
|
|
|
|
|
#define ET39_SIL_IN_Wait4Cmd ((uint8_T)16U)
|
|
|
|
|
#define ET39_SIL_IN_wait_on_line ((uint8_T)17U)
|
|
|
|
|
#define ET39_SIL_IN_Liftoff1 ((uint8_T)9U)
|
|
|
|
|
#define ET39_SIL_IN_OnRunWay ((uint8_T)10U)
|
|
|
|
|
#define ET39_SIL_IN_Prepare ((uint8_T)11U)
|
|
|
|
|
#define ET39_SIL_IN_Sink1 ((uint8_T)13U)
|
|
|
|
|
#define ET39_SIL_IN_Sink_l ((uint8_T)12U)
|
|
|
|
|
#define ET39_SIL_IN_Test_Rot ((uint8_T)14U)
|
|
|
|
|
#define ET39_SIL_IN_Trans2FW ((uint8_T)15U)
|
|
|
|
|
#define ET39_SIL_IN_Unarmed_g ((uint8_T)16U)
|
|
|
|
|
#define ET39_SIL_IN_Wait4Cmd ((uint8_T)17U)
|
|
|
|
|
#define ET39_SIL_IN_wait_on_line ((uint8_T)18U)
|
|
|
|
|
|
|
|
|
|
/* Named constants for Chart: '<S182>/landing_task' */
|
|
|
|
|
#define ET39_SIL_IN_Hover_j ((uint8_T)1U)
|
|
|
|
@@ -805,6 +806,7 @@ static boolean_T ET39_SIL_sf_msg_pop_set_cur(void);
|
|
|
|
|
static void ET39_SIL_sf_msg_discard_set_cur(void);
|
|
|
|
|
static void ET39_SIL_sf_msg_send_ack(void);
|
|
|
|
|
static void ET39_SIL_FWstage(void);
|
|
|
|
|
static void ET39_SIL_Hover(void);
|
|
|
|
|
static real32_T ET39_SIL_cal_az(real_T lat0, real_T lon0, real_T lat1, real_T
|
|
|
|
|
lon1);
|
|
|
|
|
static void ET39_SIL_sf_msg_send_cmd(void);
|
|
|
|
@@ -814,11 +816,14 @@ static void ET39_SIL_wait_on_line(void);
|
|
|
|
|
static void ET39_SIL_Decelerate(void);
|
|
|
|
|
static void ET39_SIL_EngineStart(void);
|
|
|
|
|
static void ET39_SIL_FW(void);
|
|
|
|
|
static void ET39_SIL_Hovering(void);
|
|
|
|
|
static void ET39_SIL_Hover1(void);
|
|
|
|
|
static void ET39_SIL_Landed(void);
|
|
|
|
|
static void ET39_SIL_Liftoff(void);
|
|
|
|
|
static void ET39_SIL_Liftoff1(void);
|
|
|
|
|
static void ET39_SIL_OnRunWay(void);
|
|
|
|
|
static void ET39_SIL_enter_atomic_Prepare(void);
|
|
|
|
|
static void ET39_SIL_Unarmed(void);
|
|
|
|
|
static void ET39_SIL_Hover_i(void);
|
|
|
|
|
static void ET39_SIL_enter_atomic_Trans2MC(void);
|
|
|
|
|
static void ET39_SIL_WP(void);
|
|
|
|
|
static void ET39_SIL_MC(void);
|
|
|
|
@@ -7377,6 +7382,20 @@ static void ET39_SIL_FWstage(void)
|
|
|
|
|
/* End of Constant: '<S10>/Constant71' */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Function for Chart: '<S175>/RTL_task' */
|
|
|
|
|
static void ET39_SIL_Hover(void)
|
|
|
|
|
{
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_cq = ENUM_AFCS_VERT_VNAV2HDOT;
|
|
|
|
|
if ((ET39_SIL_B.BusAssignment.rc.throttle_cmd < 0.25F) &&
|
|
|
|
|
ET39_SIL_B.BusAssignment.landing_cmd) {
|
|
|
|
|
ET39_SIL_B.landing_cmd_out_g = false;
|
|
|
|
|
ET39_SIL_DW.is_c11_ET39_autopilot = ET39_SIL_IN_Sink;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_cq = ENUM_AFCS_VERT_OFF;
|
|
|
|
|
ET39_SIL_B.AG_h = ENUM_AG_HDOT_MC;
|
|
|
|
|
ET39_SIL_B.hdot_c_out_p = -0.5F;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Function for Chart: '<S175>/RTL_task' */
|
|
|
|
|
static real32_T ET39_SIL_cal_az(real_T lat0, real_T lon0, real_T lat1, real_T
|
|
|
|
|
lon1)
|
|
|
|
@@ -7607,19 +7626,40 @@ static void ET39_SIL_FW(void)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Function for Chart: '<S188>/takeoff_task' */
|
|
|
|
|
static void ET39_SIL_Hovering(void)
|
|
|
|
|
static void ET39_SIL_Hover1(void)
|
|
|
|
|
{
|
|
|
|
|
ET39_SIL_B.engine_mode_j = 0U;
|
|
|
|
|
ET39_SIL_B.mode_f = ENUM_mode_AUTO_LAND;
|
|
|
|
|
ET39_SIL_B.landed_state_n = ENUM_LANDED_STATE_LANDING;
|
|
|
|
|
ET39_SIL_B.AFCS_LAT_a = ENUM_AFCS_LAT_MC_HOLD_POS;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_c = ENUM_AFCS_VERT_VNAV2HDOT;
|
|
|
|
|
ET39_SIL_B.use_mission_traj_j = false;
|
|
|
|
|
if (ET39_SIL_Y.traj.dist < 5.0F) {
|
|
|
|
|
ET39_SIL_DW.is_c27_ET39_autopilot = ET39_SIL_IN_Hover1;
|
|
|
|
|
/* Constant: '<S10>/Constant75' */
|
|
|
|
|
if (ET39_SIL_Y.traj.rel_alt < ET39_SIL_P.LandHoverAgl + 1.0F) {
|
|
|
|
|
ET39_SIL_DW.is_c27_ET39_autopilot = ET39_SIL_IN_Wait4Cmd;
|
|
|
|
|
ET39_SIL_B.landing_cmd_out_m = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Constant: '<S10>/Constant75' */
|
|
|
|
|
ET39_SIL_B.traj_k.h1 = ET39_SIL_B.home.h1 + ET39_SIL_P.LandHoverAgl;
|
|
|
|
|
/* End of Constant: '<S10>/Constant75' */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Function for Chart: '<S188>/takeoff_task' */
|
|
|
|
|
static void ET39_SIL_Landed(void)
|
|
|
|
|
{
|
|
|
|
|
if (ET39_SIL_DW.temporalCounter_i1_p >= 2000U) {
|
|
|
|
|
ET39_SIL_DW.is_c27_ET39_autopilot = ET39_SIL_IN_Unarmed_g;
|
|
|
|
|
ET39_SIL_B.landed_state_n = ENUM_LANDED_STATE_ON_GROUND;
|
|
|
|
|
ET39_SIL_B.AFCS_LAT_a = ENUM_AFCS_LAT_OFF;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_c = ENUM_AFCS_VERT_OFF;
|
|
|
|
|
ET39_SIL_B.CSAS_roll_m = ENUM_CSAS_ROLL_OFF;
|
|
|
|
|
ET39_SIL_B.CSAS_pitch_a = ENUM_CSAS_PITCH_OFF;
|
|
|
|
|
ET39_SIL_B.CSAS_yaw_j = ENUM_CSAS_YAW_OFF;
|
|
|
|
|
ET39_SIL_B.AT_p = ENUM_AT_OFF;
|
|
|
|
|
ET39_SIL_B.AG_d = ENUM_AG_OFF;
|
|
|
|
|
ET39_SIL_B.armed_out_d = false;
|
|
|
|
|
} else {
|
|
|
|
|
if ((ET39_SIL_B.BusAssignment_b.rc.throttle_cmd > 0.1F) ||
|
|
|
|
|
(ET39_SIL_Y.traj.hdot < -0.1F) || (ET39_SIL_B.BusAssignment_n.satnum < 9))
|
|
|
|
|
{
|
|
|
|
|
ET39_SIL_DW.is_c27_ET39_autopilot = ET39_SIL_IN_Sink_l;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_c = ENUM_AFCS_VERT_OFF;
|
|
|
|
|
ET39_SIL_B.AG_d = ENUM_AG_HDOT_MC;
|
|
|
|
|
ET39_SIL_B.hdot_c = -0.5F;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -7627,15 +7667,7 @@ static void ET39_SIL_Hovering(void)
|
|
|
|
|
static void ET39_SIL_Liftoff(void)
|
|
|
|
|
{
|
|
|
|
|
boolean_T guard1 = false;
|
|
|
|
|
ET39_SIL_B.mode_f = ENUM_mode_AUTO_TAKEOFF;
|
|
|
|
|
ET39_SIL_B.state = ENUM_SystemState_ACTIVE;
|
|
|
|
|
ET39_SIL_B.landed_state_n = ENUM_LANDED_STATE_TAKEOFF;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_c = ENUM_AFCS_VERT_VNAV2HDOT;
|
|
|
|
|
ET39_SIL_B.AFCS_LAT_a = ENUM_AFCS_LAT_MC_HOLD_POS;
|
|
|
|
|
ET39_SIL_B.CSAS_roll_m = ENUM_CSAS_ROLL_ROLL_CTRL;
|
|
|
|
|
ET39_SIL_B.CSAS_pitch_a = ENUM_CSAS_PITCH_THT_CTRL;
|
|
|
|
|
ET39_SIL_B.CSAS_yaw_j = ENUM_CSAS_YAW_PSIDOT_CTRL;
|
|
|
|
|
ET39_SIL_B.use_mission_traj_j = false;
|
|
|
|
|
ET39_SIL_B.engine_mode_j = 1U;
|
|
|
|
|
|
|
|
|
|
/* Constant: '<S10>/Constant10' incorporates:
|
|
|
|
@@ -7680,6 +7712,45 @@ static void ET39_SIL_Liftoff(void)
|
|
|
|
|
/* End of Constant: '<S10>/Constant10' */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Function for Chart: '<S188>/takeoff_task' */
|
|
|
|
|
static void ET39_SIL_Liftoff1(void)
|
|
|
|
|
{
|
|
|
|
|
ET39_SIL_B.mode_f = ENUM_mode_AUTO_TAKEOFF;
|
|
|
|
|
ET39_SIL_B.state = ENUM_SystemState_ACTIVE;
|
|
|
|
|
ET39_SIL_B.landed_state_n = ENUM_LANDED_STATE_TAKEOFF;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_c = ENUM_AFCS_VERT_OFF;
|
|
|
|
|
ET39_SIL_B.AFCS_LAT_a = ENUM_AFCS_LAT_MC_HOLD_POS;
|
|
|
|
|
ET39_SIL_B.CSAS_roll_m = ENUM_CSAS_ROLL_ROLL_CTRL;
|
|
|
|
|
ET39_SIL_B.CSAS_pitch_a = ENUM_CSAS_PITCH_THT_CTRL;
|
|
|
|
|
ET39_SIL_B.CSAS_yaw_j = ENUM_CSAS_YAW_PSIDOT_CTRL;
|
|
|
|
|
ET39_SIL_B.use_mission_traj_j = false;
|
|
|
|
|
ET39_SIL_B.engine_mode_j = 0U;
|
|
|
|
|
ET39_SIL_B.hdot_c = 0.5F;
|
|
|
|
|
if (ET39_SIL_DW.temporalCounter_i1_p >= 600U) {
|
|
|
|
|
ET39_SIL_DW.is_c27_ET39_autopilot = ET39_SIL_IN_Liftoff;
|
|
|
|
|
ET39_SIL_DW.temporalCounter_i1_p = 0U;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_c = ENUM_AFCS_VERT_VNAV2HDOT;
|
|
|
|
|
ET39_SIL_B.engine_mode_j = 1U;
|
|
|
|
|
} else {
|
|
|
|
|
if (((!ET39_SIL_P.force_sysauto_level) &&
|
|
|
|
|
(ET39_SIL_B.BusAssignment_b.rc.throttle_cmd < 0.25F)) ||
|
|
|
|
|
(ET39_SIL_B.BusAssignment_n.tht > 0.26178F) ||
|
|
|
|
|
(ET39_SIL_B.BusAssignment_n.tht < -0.26178F) ||
|
|
|
|
|
(ET39_SIL_B.BusAssignment_n.phi > 0.26178F) ||
|
|
|
|
|
(ET39_SIL_B.BusAssignment_n.phi < -0.26178F) ||
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.abort_takeoff_cmd) {
|
|
|
|
|
ET39_SIL_B.abort_takeoff_cmd_out_h = false;
|
|
|
|
|
ET39_SIL_DW.is_c27_ET39_autopilot = ET39_SIL_IN_Sink1;
|
|
|
|
|
ET39_SIL_B.engine_mode_j = 0U;
|
|
|
|
|
ET39_SIL_B.mode_f = ENUM_mode_AUTO_LAND;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_c = ENUM_AFCS_VERT_OFF;
|
|
|
|
|
ET39_SIL_B.landed_state_n = ENUM_LANDED_STATE_LANDING;
|
|
|
|
|
ET39_SIL_B.AG_d = ENUM_AG_HDOT_MC;
|
|
|
|
|
ET39_SIL_B.hdot_c = -0.3F;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Function for Chart: '<S188>/takeoff_task' */
|
|
|
|
|
static void ET39_SIL_OnRunWay(void)
|
|
|
|
|
{
|
|
|
|
@@ -7775,6 +7846,20 @@ static void ET39_SIL_Unarmed(void)
|
|
|
|
|
ET39_SIL_B.AG = ENUM_AG_OFF;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Function for Chart: '<S182>/landing_task' */
|
|
|
|
|
static void ET39_SIL_Hover_i(void)
|
|
|
|
|
{
|
|
|
|
|
ET39_SIL_B.AFCS_VERT = ENUM_AFCS_VERT_VNAV2HDOT;
|
|
|
|
|
if ((ET39_SIL_B.BusAssignment_b.rc.throttle_cmd < 0.25F) &&
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.landing_cmd) {
|
|
|
|
|
ET39_SIL_B.landing_cmd_out = false;
|
|
|
|
|
ET39_SIL_DW.is_c26_ET39_autopilot = ET39_SIL_IN_Sink_f;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT = ENUM_AFCS_VERT_OFF;
|
|
|
|
|
ET39_SIL_B.AG = ENUM_AG_HDOT_MC;
|
|
|
|
|
ET39_SIL_B.hdot_c_out = -0.5F;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Function for Chart: '<S189>/Chart' */
|
|
|
|
|
static void ET39_SIL_enter_atomic_Trans2MC(void)
|
|
|
|
|
{
|
|
|
|
@@ -7935,8 +8020,7 @@ static void ET39_SIL_Trans2FW(void)
|
|
|
|
|
boolean_T b_sf_internal_predicateOutput;
|
|
|
|
|
switch (ET39_SIL_DW.is_Trans2FW) {
|
|
|
|
|
case ET39_SIL_IN_EngineStart_p:
|
|
|
|
|
if ((ET39_SIL_DW.temporalCounter_i1_do >= 1600U) &&
|
|
|
|
|
(ET39_SIL_B.BusAssignment_n.RPMs[4] > 1000)) {
|
|
|
|
|
if (ET39_SIL_DW.temporalCounter_i1_do >= 1600U) {
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW = ET39_SIL_IN_EngineStarted;
|
|
|
|
|
ET39_SIL_B.engine_mode = 1U;
|
|
|
|
|
ET39_SIL_B.abort_takeoff_cmd_out = false;
|
|
|
|
@@ -7970,25 +8054,24 @@ static void ET39_SIL_Trans2FW(void)
|
|
|
|
|
if (b_sf_internal_predicateOutput) {
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW = ET39_SIL_IN_wait_on_line_b;
|
|
|
|
|
ET39_SIL_DW.temporalCounter_i1_do = 0U;
|
|
|
|
|
} else if ((ET39_SIL_B.BusAssignment_b.rc.throttle_cmd < 0.25F) ||
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.abort_takeoff_cmd) {
|
|
|
|
|
ET39_SIL_B.abort_takeoff_cmd_out = false;
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW = 0;
|
|
|
|
|
ET39_SIL_DW.is_c19_ET39_autopilot = ET39_SIL_IN_MC;
|
|
|
|
|
ET39_SIL_DW.temporalCounter_i1_do = 0U;
|
|
|
|
|
ET39_SIL_B.vtol_state_out = ENUM_VTOL_STATE_MC;
|
|
|
|
|
ET39_SIL_B.engine_mode = ET39_SIL_B.BusAssignment_b.engine_mode;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_out_m = ENUM_AFCS_VERT_VNAV2HDOT;
|
|
|
|
|
ET39_SIL_B.AFCS_LAT_out = ENUM_AFCS_LAT_MC_HOLD_POS_VCTRL;
|
|
|
|
|
ET39_SIL_B.CSAS_pitch_out = ENUM_CSAS_PITCH_THT_CTRL;
|
|
|
|
|
ET39_SIL_B.CSAS_roll_out = ENUM_CSAS_ROLL_ROLL_CTRL;
|
|
|
|
|
ET39_SIL_B.CSAS_yaw_out = ENUM_CSAS_YAW_PSIDOT_CTRL;
|
|
|
|
|
ET39_SIL_B.AT_out_m = ENUM_AT_OFF;
|
|
|
|
|
ET39_SIL_B.AG_out = ENUM_AG_HDOT_MC;
|
|
|
|
|
ET39_SIL_B.gs_c_out = 1.0F;
|
|
|
|
|
} else {
|
|
|
|
|
if ((ET39_SIL_B.BusAssignment_b.rc.throttle_cmd < 0.25F) ||
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.abort_takeoff_cmd ||
|
|
|
|
|
(ET39_SIL_B.BusAssignment_n.RPMs[4] < 1000)) {
|
|
|
|
|
ET39_SIL_B.abort_takeoff_cmd_out = false;
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW = 0;
|
|
|
|
|
ET39_SIL_DW.is_c19_ET39_autopilot = ET39_SIL_IN_MC;
|
|
|
|
|
ET39_SIL_DW.temporalCounter_i1_do = 0U;
|
|
|
|
|
ET39_SIL_B.vtol_state_out = ENUM_VTOL_STATE_MC;
|
|
|
|
|
ET39_SIL_B.engine_mode = ET39_SIL_B.BusAssignment_b.engine_mode;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_out_m = ENUM_AFCS_VERT_VNAV2HDOT;
|
|
|
|
|
ET39_SIL_B.AFCS_LAT_out = ENUM_AFCS_LAT_MC_HOLD_POS_VCTRL;
|
|
|
|
|
ET39_SIL_B.CSAS_pitch_out = ENUM_CSAS_PITCH_THT_CTRL;
|
|
|
|
|
ET39_SIL_B.CSAS_roll_out = ENUM_CSAS_ROLL_ROLL_CTRL;
|
|
|
|
|
ET39_SIL_B.CSAS_yaw_out = ENUM_CSAS_YAW_PSIDOT_CTRL;
|
|
|
|
|
ET39_SIL_B.AT_out_m = ENUM_AT_OFF;
|
|
|
|
|
ET39_SIL_B.AG_out = ENUM_AG_HDOT_MC;
|
|
|
|
|
ET39_SIL_B.gs_c_out = 1.0F;
|
|
|
|
|
}
|
|
|
|
|
ET39_SIL_B.engine_mode = ET39_SIL_B.BusAssignment_b.engine_mode;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
@@ -8016,22 +8099,15 @@ static void ET39_SIL_Trans2FW(void)
|
|
|
|
|
|
|
|
|
|
case ET39_SIL_IN_Idle:
|
|
|
|
|
if (ET39_SIL_DW.temporalCounter_i1_do >= 200U) {
|
|
|
|
|
if (ET39_SIL_B.BusAssignment_n.RPMs[4] < 1000) {
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW = ET39_SIL_IN_EngineStart_p;
|
|
|
|
|
ET39_SIL_DW.temporalCounter_i1_do = 0U;
|
|
|
|
|
ET39_SIL_B.engine_mode = 2U;
|
|
|
|
|
} else {
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW = ET39_SIL_IN_EngineStarted;
|
|
|
|
|
ET39_SIL_B.engine_mode = 1U;
|
|
|
|
|
ET39_SIL_B.abort_takeoff_cmd_out = false;
|
|
|
|
|
}
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW = ET39_SIL_IN_EngineStart_p;
|
|
|
|
|
ET39_SIL_DW.temporalCounter_i1_do = 0U;
|
|
|
|
|
ET39_SIL_B.engine_mode = 2U;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ET39_SIL_IN_Trans2FW_gw:
|
|
|
|
|
if ((ET39_SIL_B.BusAssignment_b.rc.throttle_cmd < 0.25F) ||
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.abort_takeoff_cmd ||
|
|
|
|
|
(ET39_SIL_B.BusAssignment_n.RPMs[4] < 1000)) {
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.abort_takeoff_cmd) {
|
|
|
|
|
ET39_SIL_B.abort_takeoff_cmd_out = false;
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW = 0;
|
|
|
|
|
ET39_SIL_DW.is_c19_ET39_autopilot = ET39_SIL_IN_MC;
|
|
|
|
@@ -8058,8 +8134,10 @@ static void ET39_SIL_Trans2FW(void)
|
|
|
|
|
ET39_SIL_B.as_c_out = ET39_SIL_P.CruiseSpeed;
|
|
|
|
|
ET39_SIL_B.AG_out = ENUM_AG_COMMAND;
|
|
|
|
|
ET39_SIL_B.gyro_c_out = ET39_SIL_B.BusAssignment_b.rot_heave;
|
|
|
|
|
ET39_SIL_B.engine_mode = 1U;
|
|
|
|
|
} else {
|
|
|
|
|
ET39_SIL_B.WP_out_h = ET39_SIL_B.BusAssignment_b.WP_cur;
|
|
|
|
|
ET39_SIL_B.engine_mode = ET39_SIL_B.BusAssignment_b.engine_mode;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
@@ -8070,8 +8148,7 @@ static void ET39_SIL_Trans2FW(void)
|
|
|
|
|
/* Constant: '<S10>/Constant106' */
|
|
|
|
|
ET39_SIL_B.gs_c_out = ET39_SIL_P.TransferSpeed * 2.0F;
|
|
|
|
|
} else if ((ET39_SIL_B.BusAssignment_b.rc.throttle_cmd < 0.25F) ||
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.abort_takeoff_cmd ||
|
|
|
|
|
(ET39_SIL_B.BusAssignment_n.RPMs[4] < 1000)) {
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.abort_takeoff_cmd) {
|
|
|
|
|
ET39_SIL_B.abort_takeoff_cmd_out = false;
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW = 0;
|
|
|
|
|
ET39_SIL_DW.is_c19_ET39_autopilot = ET39_SIL_IN_MC;
|
|
|
|
@@ -8095,6 +8172,8 @@ static void ET39_SIL_Trans2FW(void)
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW = ET39_SIL_IN_EngineStarted;
|
|
|
|
|
ET39_SIL_B.engine_mode = 1U;
|
|
|
|
|
ET39_SIL_B.abort_takeoff_cmd_out = false;
|
|
|
|
|
} else {
|
|
|
|
|
ET39_SIL_B.engine_mode = ET39_SIL_B.BusAssignment_b.engine_mode;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
@@ -19346,8 +19425,8 @@ void ET39_SIL_step(void)
|
|
|
|
|
* ActionPort: '<S83>/Action Port'
|
|
|
|
|
*/
|
|
|
|
|
/* If: '<S83>/If' */
|
|
|
|
|
if ((ET39_SIL_B.params_a[1] > rtb_Merge6) && (ET39_SIL_B.params_a[1]
|
|
|
|
|
< rtb_Merge7)) {
|
|
|
|
|
if ((ET39_SIL_B.params_a[1] > rtb_Merge7) && (ET39_SIL_B.params_a[1]
|
|
|
|
|
< rtb_Merge6)) {
|
|
|
|
|
/* Outputs for IfAction SubSystem: '<S83>/Subsystem' incorporates:
|
|
|
|
|
* ActionPort: '<S89>/Action Port'
|
|
|
|
|
*/
|
|
|
|
@@ -22197,15 +22276,7 @@ void ET39_SIL_step(void)
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ET39_SIL_IN_Hover:
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_cq = ENUM_AFCS_VERT_VNAV2HDOT;
|
|
|
|
|
if ((ET39_SIL_B.BusAssignment.rc.throttle_cmd < 0.25F) &&
|
|
|
|
|
ET39_SIL_B.BusAssignment.landing_cmd) {
|
|
|
|
|
ET39_SIL_B.landing_cmd_out_g = false;
|
|
|
|
|
ET39_SIL_DW.is_c11_ET39_autopilot = ET39_SIL_IN_Sink;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_cq = ENUM_AFCS_VERT_OFF;
|
|
|
|
|
ET39_SIL_B.AG_h = ENUM_AG_HDOT_MC;
|
|
|
|
|
ET39_SIL_B.hdot_c_out_p = -0.5F;
|
|
|
|
|
}
|
|
|
|
|
ET39_SIL_Hover();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ET39_SIL_IN_Hovering:
|
|
|
|
@@ -22663,45 +22734,35 @@ void ET39_SIL_step(void)
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ET39_SIL_IN_Hover1:
|
|
|
|
|
if (ET39_SIL_Y.traj.rel_alt < ET39_SIL_P.LandHoverAgl + 1.0F)
|
|
|
|
|
{
|
|
|
|
|
ET39_SIL_DW.is_c27_ET39_autopilot = ET39_SIL_IN_Wait4Cmd;
|
|
|
|
|
ET39_SIL_B.landing_cmd_out_m = false;
|
|
|
|
|
}
|
|
|
|
|
ET39_SIL_Hover1();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ET39_SIL_IN_Hovering_m:
|
|
|
|
|
ET39_SIL_Hovering();
|
|
|
|
|
ET39_SIL_B.engine_mode_j = 0U;
|
|
|
|
|
ET39_SIL_B.mode_f = ENUM_mode_AUTO_LAND;
|
|
|
|
|
ET39_SIL_B.landed_state_n = ENUM_LANDED_STATE_LANDING;
|
|
|
|
|
ET39_SIL_B.AFCS_LAT_a = ENUM_AFCS_LAT_MC_HOLD_POS;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_c = ENUM_AFCS_VERT_VNAV2HDOT;
|
|
|
|
|
ET39_SIL_B.use_mission_traj_j = false;
|
|
|
|
|
if (ET39_SIL_Y.traj.dist < 5.0F) {
|
|
|
|
|
ET39_SIL_DW.is_c27_ET39_autopilot = ET39_SIL_IN_Hover1;
|
|
|
|
|
ET39_SIL_B.traj_k.h1 = ET39_SIL_B.home.h1 +
|
|
|
|
|
ET39_SIL_P.LandHoverAgl;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ET39_SIL_IN_Landed_m:
|
|
|
|
|
if (ET39_SIL_DW.temporalCounter_i1_p >= 2000U) {
|
|
|
|
|
ET39_SIL_DW.is_c27_ET39_autopilot = ET39_SIL_IN_Unarmed_g;
|
|
|
|
|
ET39_SIL_B.landed_state_n = ENUM_LANDED_STATE_ON_GROUND;
|
|
|
|
|
ET39_SIL_B.AFCS_LAT_a = ENUM_AFCS_LAT_OFF;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_c = ENUM_AFCS_VERT_OFF;
|
|
|
|
|
ET39_SIL_B.CSAS_roll_m = ENUM_CSAS_ROLL_OFF;
|
|
|
|
|
ET39_SIL_B.CSAS_pitch_a = ENUM_CSAS_PITCH_OFF;
|
|
|
|
|
ET39_SIL_B.CSAS_yaw_j = ENUM_CSAS_YAW_OFF;
|
|
|
|
|
ET39_SIL_B.AT_p = ENUM_AT_OFF;
|
|
|
|
|
ET39_SIL_B.AG_d = ENUM_AG_OFF;
|
|
|
|
|
ET39_SIL_B.armed_out_d = false;
|
|
|
|
|
} else {
|
|
|
|
|
if ((ET39_SIL_B.BusAssignment_b.rc.throttle_cmd > 0.1F) ||
|
|
|
|
|
(ET39_SIL_Y.traj.hdot < -0.1F) ||
|
|
|
|
|
(ET39_SIL_B.BusAssignment_n.satnum < 9)) {
|
|
|
|
|
ET39_SIL_DW.is_c27_ET39_autopilot = ET39_SIL_IN_Sink_l;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_c = ENUM_AFCS_VERT_OFF;
|
|
|
|
|
ET39_SIL_B.AG_d = ENUM_AG_HDOT_MC;
|
|
|
|
|
ET39_SIL_B.hdot_c = -0.5F;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ET39_SIL_Landed();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ET39_SIL_IN_Liftoff:
|
|
|
|
|
ET39_SIL_Liftoff();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ET39_SIL_IN_Liftoff1:
|
|
|
|
|
ET39_SIL_Liftoff1();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ET39_SIL_IN_OnRunWay:
|
|
|
|
|
ET39_SIL_OnRunWay();
|
|
|
|
|
break;
|
|
|
|
@@ -22775,12 +22836,12 @@ void ET39_SIL_step(void)
|
|
|
|
|
ET39_SIL_P.force_sysauto_level) ||
|
|
|
|
|
((ET39_SIL_DW.temporalCounter_i1_p >= 600U) &&
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.takeoff_cmd)) {
|
|
|
|
|
ET39_SIL_DW.is_c27_ET39_autopilot = ET39_SIL_IN_Liftoff;
|
|
|
|
|
ET39_SIL_DW.is_c27_ET39_autopilot = ET39_SIL_IN_Liftoff1;
|
|
|
|
|
ET39_SIL_DW.temporalCounter_i1_p = 0U;
|
|
|
|
|
ET39_SIL_B.mode_f = ENUM_mode_AUTO_TAKEOFF;
|
|
|
|
|
ET39_SIL_B.state = ENUM_SystemState_ACTIVE;
|
|
|
|
|
ET39_SIL_B.landed_state_n = ENUM_LANDED_STATE_TAKEOFF;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_c = ENUM_AFCS_VERT_VNAV2HDOT;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_c = ENUM_AFCS_VERT_OFF;
|
|
|
|
|
ET39_SIL_B.AFCS_LAT_a = ENUM_AFCS_LAT_MC_HOLD_POS;
|
|
|
|
|
ET39_SIL_B.CSAS_roll_m = ENUM_CSAS_ROLL_ROLL_CTRL;
|
|
|
|
|
ET39_SIL_B.CSAS_pitch_a = ENUM_CSAS_PITCH_THT_CTRL;
|
|
|
|
@@ -22796,7 +22857,8 @@ void ET39_SIL_step(void)
|
|
|
|
|
ET39_SIL_B.abort_takeoff_cmd_out_h = false;
|
|
|
|
|
ET39_SIL_B.takeoff_cmd_out = false;
|
|
|
|
|
ET39_SIL_DW.tick_abort = 0U;
|
|
|
|
|
ET39_SIL_B.engine_mode_j = 1U;
|
|
|
|
|
ET39_SIL_B.engine_mode_j = 0U;
|
|
|
|
|
ET39_SIL_B.hdot_c = 0.5F;
|
|
|
|
|
} else {
|
|
|
|
|
if (((!ET39_SIL_P.force_sysauto_level) &&
|
|
|
|
|
(ET39_SIL_B.BusAssignment_b.rc.throttle_cmd < 0.5F)) ||
|
|
|
|
@@ -22996,15 +23058,7 @@ void ET39_SIL_step(void)
|
|
|
|
|
} else {
|
|
|
|
|
switch (ET39_SIL_DW.is_c26_ET39_autopilot) {
|
|
|
|
|
case ET39_SIL_IN_Hover_j:
|
|
|
|
|
ET39_SIL_B.AFCS_VERT = ENUM_AFCS_VERT_VNAV2HDOT;
|
|
|
|
|
if ((ET39_SIL_B.BusAssignment_b.rc.throttle_cmd < 0.25F) &&
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.landing_cmd) {
|
|
|
|
|
ET39_SIL_B.landing_cmd_out = false;
|
|
|
|
|
ET39_SIL_DW.is_c26_ET39_autopilot = ET39_SIL_IN_Sink_f;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT = ENUM_AFCS_VERT_OFF;
|
|
|
|
|
ET39_SIL_B.AG = ENUM_AG_HDOT_MC;
|
|
|
|
|
ET39_SIL_B.hdot_c_out = -0.5F;
|
|
|
|
|
}
|
|
|
|
|
ET39_SIL_Hover_i();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ET39_SIL_IN_Hovering_mj:
|
|
|
|
@@ -23319,8 +23373,7 @@ void ET39_SIL_step(void)
|
|
|
|
|
case ET39_SIL_IN_Trans2FW1:
|
|
|
|
|
switch (ET39_SIL_DW.is_Trans2FW1) {
|
|
|
|
|
case ET39_SIL_IN_EngineStart_p:
|
|
|
|
|
if ((ET39_SIL_DW.temporalCounter_i1_do >= 1600U) &&
|
|
|
|
|
(ET39_SIL_B.BusAssignment_n.RPMs[4] > 1000)) {
|
|
|
|
|
if (ET39_SIL_DW.temporalCounter_i1_do >= 1600U) {
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW1 = ET39_SIL_IN_EngineStarted;
|
|
|
|
|
ET39_SIL_DW.temporalCounter_i1_do = 0U;
|
|
|
|
|
ET39_SIL_B.engine_mode = 1U;
|
|
|
|
@@ -23329,30 +23382,9 @@ void ET39_SIL_step(void)
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ET39_SIL_IN_EngineStarted:
|
|
|
|
|
if (ET39_SIL_DW.temporalCounter_i1_do >= 600U) {
|
|
|
|
|
if (ET39_SIL_DW.temporalCounter_i1_do >= 200U) {
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW1 = ET39_SIL_IN_Trans2FW_gw;
|
|
|
|
|
ET39_SIL_B.gs_c_out = ET39_SIL_P.TransferSpeed * 2.0F;
|
|
|
|
|
} else {
|
|
|
|
|
if ((ET39_SIL_B.BusAssignment_b.rc.throttle_cmd < 0.25F) ||
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.abort_takeoff_cmd ||
|
|
|
|
|
(ET39_SIL_B.BusAssignment_n.RPMs[4] < 1000)) {
|
|
|
|
|
ET39_SIL_B.abort_takeoff_cmd_out = false;
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW1 = 0;
|
|
|
|
|
ET39_SIL_DW.is_c19_ET39_autopilot = ET39_SIL_IN_MC;
|
|
|
|
|
ET39_SIL_DW.temporalCounter_i1_do = 0U;
|
|
|
|
|
ET39_SIL_B.vtol_state_out = ENUM_VTOL_STATE_MC;
|
|
|
|
|
ET39_SIL_B.engine_mode =
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.engine_mode;
|
|
|
|
|
ET39_SIL_B.AFCS_VERT_out_m = ENUM_AFCS_VERT_VNAV2HDOT;
|
|
|
|
|
ET39_SIL_B.AFCS_LAT_out =
|
|
|
|
|
ENUM_AFCS_LAT_MC_HOLD_POS_VCTRL;
|
|
|
|
|
ET39_SIL_B.CSAS_pitch_out = ENUM_CSAS_PITCH_THT_CTRL;
|
|
|
|
|
ET39_SIL_B.CSAS_roll_out = ENUM_CSAS_ROLL_ROLL_CTRL;
|
|
|
|
|
ET39_SIL_B.CSAS_yaw_out = ENUM_CSAS_YAW_PSIDOT_CTRL;
|
|
|
|
|
ET39_SIL_B.AT_out_m = ENUM_AT_OFF;
|
|
|
|
|
ET39_SIL_B.AG_out = ENUM_AG_HDOT_MC;
|
|
|
|
|
ET39_SIL_B.gs_c_out = 1.0F;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
@@ -23381,23 +23413,15 @@ void ET39_SIL_step(void)
|
|
|
|
|
|
|
|
|
|
case ET39_SIL_IN_Idle:
|
|
|
|
|
if (ET39_SIL_DW.temporalCounter_i1_do >= 200U) {
|
|
|
|
|
if (ET39_SIL_B.BusAssignment_n.RPMs[4] < 1000) {
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW1 = ET39_SIL_IN_EngineStart_p;
|
|
|
|
|
ET39_SIL_DW.temporalCounter_i1_do = 0U;
|
|
|
|
|
ET39_SIL_B.engine_mode = 2U;
|
|
|
|
|
} else {
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW1 = ET39_SIL_IN_EngineStarted;
|
|
|
|
|
ET39_SIL_DW.temporalCounter_i1_do = 0U;
|
|
|
|
|
ET39_SIL_B.engine_mode = 1U;
|
|
|
|
|
ET39_SIL_B.abort_takeoff_cmd_out = false;
|
|
|
|
|
}
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW1 = ET39_SIL_IN_EngineStart_p;
|
|
|
|
|
ET39_SIL_DW.temporalCounter_i1_do = 0U;
|
|
|
|
|
ET39_SIL_B.engine_mode = 2U;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
if ((ET39_SIL_B.BusAssignment_b.rc.throttle_cmd < 0.25F) ||
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.abort_takeoff_cmd ||
|
|
|
|
|
(ET39_SIL_B.BusAssignment_n.RPMs[4] < 1000)) {
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.abort_takeoff_cmd) {
|
|
|
|
|
ET39_SIL_B.abort_takeoff_cmd_out = false;
|
|
|
|
|
ET39_SIL_DW.is_Trans2FW1 = 0;
|
|
|
|
|
ET39_SIL_DW.is_c19_ET39_autopilot = ET39_SIL_IN_MC;
|
|
|
|
@@ -23425,8 +23449,11 @@ void ET39_SIL_step(void)
|
|
|
|
|
ET39_SIL_B.AG_out = ENUM_AG_COMMAND;
|
|
|
|
|
ET39_SIL_B.gyro_c_out =
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.rot_heave;
|
|
|
|
|
ET39_SIL_B.engine_mode = 1U;
|
|
|
|
|
} else {
|
|
|
|
|
ET39_SIL_B.WP_out_h = ET39_SIL_B.BusAssignment_b.WP_cur;
|
|
|
|
|
ET39_SIL_B.engine_mode =
|
|
|
|
|
ET39_SIL_B.BusAssignment_b.engine_mode;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|