/* TargetLimits_Pkg::v_SBI2 */ void v_SBI2_TargetLimits_Pkg( /* TargetLimits_Pkg::v_SBI2::EBDcurve */ ParabolaCurve_T_CalcBrakingCurves_types *EBDcurve, /* TargetLimits_Pkg::v_SBI2::V_est */ V_internal_real_Type_SDM_Types_Pkg V_est, /* TargetLimits_Pkg::v_SBI2::V_target */ V_internal_real_Type_SDM_Types_Pkg V_target, /* TargetLimits_Pkg::v_SBI2::V_bec */ V_internal_real_Type_SDM_Types_Pkg V_bec, /* TargetLimits_Pkg::v_SBI2::D_maxsafefront */ L_internal_real_Type_SDM_Types_Pkg D_maxsafefront, /* TargetLimits_Pkg::v_SBI2::D_bec */ L_internal_real_Type_SDM_Types_Pkg D_bec, /* TargetLimits_Pkg::v_SBI2::T_bs2 */ T_internal_real_Type_SDM_Types_Pkg T_bs2, /* TargetLimits_Pkg::v_SBI2::V_SBI1 */ V_internal_real_Type_SDM_Types_Pkg *V_SBI1, /* TargetLimits_Pkg::v_SBI2::valid */ kcg_bool *valid) { V_internal_real_Type_SDM_Types_Pkg tmp; /* TargetLimits_Pkg::v_SBI2::_L5 */ kcg_real _L5; /* TargetLimits_Pkg::v_SBI2::_L11 */ kcg_bool _L11; /* TargetLimits_Pkg::v_SBI2::_L19 */ L_internal_real_Type_SDM_Types_Pkg _L19; /* 1 */ getLocationOnCurve_CalcBrakingCurves_types(EBDcurve, V_target, &_L11, &_L19); _L5 = D_bec + D_maxsafefront + V_est * T_bs2; _L11 = _L19 > _L5; if (_L11) { /* 1 */ getSpeedOnCurve_CalcBrakingCurves_types(EBDcurve, _L5, valid, &tmp); *V_SBI1 = tmp - (V_bec - V_est); } else { *valid = kcg_false; *V_SBI1 = V_target; } }
/* TargetLimits_Pkg::v_SBI2 */ void v_SBI2_TargetLimits_Pkg( /* TargetLimits_Pkg::v_SBI2::EBDcurve */ParabolaCurve_T_CalcBrakingCurves_types *EBDcurve, /* TargetLimits_Pkg::v_SBI2::V_est */V_internal_real_Type_SDM_Types_Pkg V_est, /* TargetLimits_Pkg::v_SBI2::V_target */V_internal_real_Type_SDM_Types_Pkg V_target, /* TargetLimits_Pkg::v_SBI2::bec */bec_t_TargetLimits_Pkg *bec, /* TargetLimits_Pkg::v_SBI2::D_maxsafefront */L_internal_real_Type_SDM_Types_Pkg D_maxsafefront, /* TargetLimits_Pkg::v_SBI2::t_driver */T_internal_real_Type_SDM_Types_Pkg t_driver, /* TargetLimits_Pkg::v_SBI2::guiCurveEnabled */kcg_bool guiCurveEnabled, /* TargetLimits_Pkg::v_SBI2::GUIcurve */ParabolaCurve_T_CalcBrakingCurves_types *GUIcurve, /* TargetLimits_Pkg::v_SBI2::T */T_trac_t_TargetLimits_Pkg *T, /* TargetLimits_Pkg::v_SBI2::valid */kcg_bool *valid, /* TargetLimits_Pkg::v_SBI2::V_SBI2 */V_internal_real_Type_SDM_Types_Pkg *V_SBI2) { static kcg_bool tmp3; static V_internal_real_Type_SDM_Types_Pkg tmp2; static kcg_bool tmp1; static V_internal_real_Type_SDM_Types_Pkg tmp; /* TargetLimits_Pkg::v_SBI2::_L33 */ static kcg_bool _L33; /* TargetLimits_Pkg::v_SBI2::_L49 */ static kcg_real _L49; /* TargetLimits_Pkg::v_SBI2::_L48 */ static kcg_bool _L48; /* TargetLimits_Pkg::v_SBI2::_L47 */ static kcg_bool _L47; /* 1 */ getLocationOnCurve_CalcBrakingCurves_types(EBDcurve, V_target, &_L33, &tmp); _L49 = D_maxsafefront + V_est * ((*T).bs2 + t_driver) + (*bec).d; if (guiCurveEnabled) { /* 3 */ getLocationOnCurve_CalcBrakingCurves_types( GUIcurve, V_target, &tmp3, &tmp2); } else { tmp3 = kcg_false; tmp2 = 0.0; } _L33 = (tmp3 & (tmp2 > D_maxsafefront)) | (tmp > _L49); tmp1 = tmp3 & _L33; if (tmp1) { /* 2 */ getSpeedOnCurve_CalcBrakingCurves_types( GUIcurve, D_maxsafefront, &tmp3, &tmp2); } else { tmp3 = kcg_false; tmp2 = 0.0; } if (_L33) { /* 1 */ getSpeedOnCurve_CalcBrakingCurves_types(EBDcurve, _L49, &tmp1, &tmp); } else { tmp1 = kcg_false; tmp = 0.0; } /* 1 */ selectLEValid_TargetLimits_Pkg( tmp3, tmp2, tmp1, tmp - ((*bec).v - V_est), &_L47, &_L48, &_L49); *valid = !_L33 | _L48; if (_L33) { *V_SBI2 = _L49; } else { *V_SBI2 = V_target; } }
/* TargetLimits_Pkg::v_ReleaseOnboardIterator */ void v_ReleaseOnboardIterator_TargetLimits_Pkg( /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_release */V_internal_real_Type_SDM_Types_Pkg V_release, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::EBDcurve */ParabolaCurve_T_CalcBrakingCurves_types *EBDcurve, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_ura */V_internal_real_Type_SDM_Types_Pkg V_ura, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_target */V_internal_real_Type_SDM_Types_Pkg V_target, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::D_tripEOA */L_internal_real_Type_SDM_Types_Pkg D_tripEOA, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::T */T_trac_t_TargetLimits_Pkg *T, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::run_condition */kcg_bool *run_condition, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_release_next */V_internal_real_Type_SDM_Types_Pkg *V_release_next) { /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L20 */ static kcg_bool _L20; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L24 */ static kcg_real _L24; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L25 */ static kcg_real _L25; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L28 */ static V_internal_real_Type_SDM_Types_Pkg _L28; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L32 */ static L_internal_real_Type_SDM_Types_Pkg _L32; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L31 */ static kcg_bool _L31; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L40 */ static kcg_real _L40; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L50 */ static kcg_bool _L50; /* 1 */ getLocationOnCurve_CalcBrakingCurves_types(EBDcurve, V_target, &_L31, &_L32); _L20 = !(*T).inhComp; _L24 = /* 1 */ f_41_TargetLimits_Pkg(V_release); if (_L20) { if (V_ura >= _L24) { _L40 = V_ura; } else { _L40 = _L24; } } else { _L40 = 0.0; } _L24 = D_tripEOA + (V_release + _L40) * ((*T).berem + (*T).Traction); /* 1 */ getSpeedOnCurve_CalcBrakingCurves_types(EBDcurve, _L24, &_L20, &_L28); _L50 = _L31 & _L20; _L25 = _L28 - _L40; if ((_L32 <= _L24) | (_L25 <= V_target)) { _L28 = V_target; } else { _L28 = _L25; } if (_L50) { *V_release_next = _L28; } else { *V_release_next = - 1.0; } _L40 = _L28 - V_release; if (0. <= _L40) { _L24 = _L40; } else { _L24 = - _L40; } *run_condition = _L50 & !(_L24 <= 1.0 / 3.6); }
/* TargetLimits_Pkg::v_ReleaseOnboardIterator */ void v_ReleaseOnboardIterator_TargetLimits_Pkg( /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_release */ V_internal_real_Type_SDM_Types_Pkg V_release, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::EBDcurve */ ParabolaCurve_T_CalcBrakingCurves_types *EBDcurve, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_ura */ V_internal_real_Type_SDM_Types_Pkg V_ura, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_target */ V_internal_real_Type_SDM_Types_Pkg V_target, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::D_tripEOA */ L_internal_real_Type_SDM_Types_Pkg D_tripEOA, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::T */ T_trac_t_TargetLimits_Pkg *T, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::run_condition */ kcg_bool *run_condition, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_release_next */ V_internal_real_Type_SDM_Types_Pkg *V_release_next) { /* TargetLimits_Pkg::v_ReleaseOnboardIterator */ static kcg_real tmp; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::v_delta0rsob */ static V_internal_real_Type_SDM_Types_Pkg v_delta0rsob; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L21 */ static V_internal_real_Type_SDM_Types_Pkg _L21; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L20 */ static kcg_bool _L20; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L32 */ static L_internal_real_Type_SDM_Types_Pkg _L32; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L31 */ static kcg_bool _L31; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L40 */ static kcg_real _L40; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L50 */ static kcg_bool _L50; _L21 = /* 1 */ f_41_TargetLimits_Pkg(V_release); _L20 = !(*T).inhComp; /* ck__L10 */ if (_L20) { /* 2 */ if (V_ura >= _L21) { v_delta0rsob = V_ura; } else { v_delta0rsob = _L21; } } else { v_delta0rsob = 0.0; } tmp = D_tripEOA + (V_release + v_delta0rsob) * ((*T).berem + (*T).Traction); /* 1 */ getSpeedOnCurve_CalcBrakingCurves_types(EBDcurve, tmp, &_L20, &_L21); _L40 = _L21 - v_delta0rsob; /* 1 */ getLocationOnCurve_CalcBrakingCurves_types(EBDcurve, V_target, &_L31, &_L32); /* 1 */ if ((_L32 <= tmp) | (_L40 <= V_target)) { _L21 = V_target; } else { _L21 = _L40; } _L40 = _L21 - V_release; _L50 = _L31 & _L20; /* 2 */ if (0. <= _L40) { tmp = _L40; } else { tmp = - _L40; } *run_condition = _L50 & !(tmp <= 1.0 / 3.6); /* 2 */ if (_L50) { *V_release_next = _L21; } else { *V_release_next = - 1.0; } }