コード例 #1
0
/* 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;
  }
}
コード例 #2
0
/* 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;
  }
}