⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialsim_no_observer_acc.c

📁 SVPWM应用
💻 C
📖 第 1 页 / 共 5 页
字号:
    }

    /* Output the values */
    if (serialsim_no_observer_DWork->Pulse_Generator3_IWORK.currValue == 1){
      serialsim_no_observer_B->Pulse_Generator3 =
        serialsim_no_observer_P->Pulse_Generator3_Amp;
    } else {
      serialsim_no_observer_B->Pulse_Generator3 = 0;
    }
  }

  if (ssIsSampleHit(S, 6, tid)) {       /* Sample time: [-2.0, 4.0] */

    /* DiscretePulseGenerator: '<S5>/Pulse Generator4' */
    real_T time = ssGetTaskTime(S,tid);
    real_T delay = 0.0;
    if ( (int_T)serialsim_no_observer_DWork->Pulse_Generator4_IWORK.justEnabled
     ) {
      serialsim_no_observer_DWork->Pulse_Generator4_IWORK.justEnabled = 0;
      if (time >= delay) {
        real_T ratio = (time - delay)/
          serialsim_no_observer_P->Pulse_Generator4_Period;

        serialsim_no_observer_DWork->Pulse_Generator4_IWORK.numCompleteCycles =
          (int)floor(ratio);

        if (
         fabs((serialsim_no_observer_DWork->Pulse_Generator4_IWORK.numCompleteCycles+1)-
          ratio ) < DBL_EPSILON * ratio )
        {
          serialsim_no_observer_DWork->Pulse_Generator4_IWORK.numCompleteCycles
          =
            serialsim_no_observer_DWork->Pulse_Generator4_IWORK.numCompleteCycles+1;
        }
        serialsim_no_observer_DWork->Pulse_Generator4_IWORK.numCompleteCycles =
          serialsim_no_observer_DWork->Pulse_Generator4_IWORK.numCompleteCycles;
        if (time < delay +
         serialsim_no_observer_DWork->Pulse_Generator4_IWORK.numCompleteCycles *
         serialsim_no_observer_P->Pulse_Generator4_Period
         + serialsim_no_observer_P->Pulse_Generator4_Duty *
         serialsim_no_observer_P->Pulse_Generator4_Period/100) {
          serialsim_no_observer_DWork->Pulse_Generator4_IWORK.currValue = 1;
          serialsim_no_observer_DWork->Pulse_Generator4_RWORK.nextTime = delay +
            serialsim_no_observer_DWork->Pulse_Generator4_IWORK.numCompleteCycles
            * serialsim_no_observer_P->Pulse_Generator4_Period
            + serialsim_no_observer_P->Pulse_Generator4_Duty *
            serialsim_no_observer_P->Pulse_Generator4_Period/100;
        } else {
          serialsim_no_observer_DWork->Pulse_Generator4_IWORK.currValue = 0;
          serialsim_no_observer_DWork->Pulse_Generator4_RWORK.nextTime = delay +
            (serialsim_no_observer_DWork->Pulse_Generator4_IWORK.numCompleteCycles
            + 1) * serialsim_no_observer_P->Pulse_Generator4_Period;
        }
      } else {
        serialsim_no_observer_DWork->Pulse_Generator4_IWORK.numCompleteCycles =
          0;
        serialsim_no_observer_DWork->Pulse_Generator4_IWORK.currValue = 0;
        serialsim_no_observer_DWork->Pulse_Generator4_RWORK.nextTime = delay;
      }
    } else {
      /* Determine if any values need to change */
      if (serialsim_no_observer_DWork->Pulse_Generator4_RWORK.nextTime <= time) {
        if (serialsim_no_observer_DWork->Pulse_Generator4_IWORK.currValue == 1) {
          serialsim_no_observer_DWork->Pulse_Generator4_IWORK.currValue = 0;
          serialsim_no_observer_DWork->Pulse_Generator4_RWORK.nextTime = delay +
            (serialsim_no_observer_DWork->Pulse_Generator4_IWORK.numCompleteCycles
            + 1) * serialsim_no_observer_P->Pulse_Generator4_Period;
        } else {
          if ( serialsim_no_observer_DWork->Pulse_Generator4_RWORK.nextTime !=
           delay) {
            serialsim_no_observer_DWork->Pulse_Generator4_IWORK.numCompleteCycles
            += 1;
          }
          serialsim_no_observer_DWork->Pulse_Generator4_IWORK.currValue = 1;
          serialsim_no_observer_DWork->Pulse_Generator4_RWORK.nextTime = delay +
            serialsim_no_observer_DWork->Pulse_Generator4_IWORK.numCompleteCycles
            * serialsim_no_observer_P->Pulse_Generator4_Period
            + 0.01 * serialsim_no_observer_P->Pulse_Generator4_Duty *
            serialsim_no_observer_P->Pulse_Generator4_Period;
        }
      }
    }

    /* Set the next hit time */
    {
      real_T tNext =
        serialsim_no_observer_DWork->Pulse_Generator4_RWORK.nextTime;
      _ssSetVarNextHitTime(S, (int_T)4.0, tNext);
    }

    /* Output the values */
    if (serialsim_no_observer_DWork->Pulse_Generator4_IWORK.currValue == 1){
      serialsim_no_observer_B->Pulse_Generator4 =
        serialsim_no_observer_P->Pulse_Generator4_Amp;
    } else {
      serialsim_no_observer_B->Pulse_Generator4 = 0;
    }
  }

  if (ssIsSampleHit(S, 1, tid)) {       /* Sample time: [0.0, 1.0] */

    /* Constant: '<S5>/T8' */
    serialsim_no_observer_B->T8 = serialsim_no_observer_P->T8_Value;

    /* Constant: '<S5>/T9' */
    serialsim_no_observer_B->T9 = serialsim_no_observer_P->T9_Value;

    /* Constant: '<S8>/m4' */
    serialsim_no_observer_B->m4 = serialsim_no_observer_P->m4_Value;
  }

  if (ssIsContinuousTask(S, tid)) {     /* Sample time: [0.0, 0.0] */

    /* Clock: '<S8>/t' */
    rtb_t = ssGetT(S);
  }

  if (ssIsSampleHit(S, 1, tid)) {       /* Sample time: [0.0, 1.0] */

    /* Constant: '<S8>/m3' */
    serialsim_no_observer_B->m3 = serialsim_no_observer_P->m3_Value;

    /* Gain: '<S8>/Gain2'
     *
     * Regarding '<S8>/Gain2':
     *   Gain value: serialsim_no_observer_P->Gain2_Gain
     */
    serialsim_no_observer_B->Gain2 = serialsim_no_observer_B->m3 *
      serialsim_no_observer_P->Gain2_Gain;

    /* Constant: '<S8>/Constant' */
    serialsim_no_observer_B->Constant_c[0] =
      serialsim_no_observer_P->Constant_c_Value[0];
    serialsim_no_observer_B->Constant_c[1] =
      serialsim_no_observer_P->Constant_c_Value[1];
    serialsim_no_observer_B->Constant_c[2] =
      serialsim_no_observer_P->Constant_c_Value[2];

    /* Constant: '<S8>/Constant1' */
    serialsim_no_observer_B->Constant1_b =
      serialsim_no_observer_P->Constant1_b_Value;
  }

  if (ssIsContinuousTask(S, tid)) {     /* Sample time: [0.0, 0.0] */

    /* Switch: '<S8>/Switch' */
    if (serialsim_no_observer_B->Constant1_b >=
     serialsim_no_observer_P->Switch_b_Threshold) {

      {
        /* simstruct variables */
        serialsim_no_observer_BlockIO *serialsim_no_observer_B =
          (serialsim_no_observer_BlockIO *) _ssGetBlockIO(S);
        serialsim_no_observer_Parameters *serialsim_no_observer_P =
          (serialsim_no_observer_Parameters *) ssGetDefaultParam(S);

        /* Gain: '<S8>/Gain'
         *
         * Regarding '<S8>/Gain':
         *   Gain value: serialsim_no_observer_P->Gain_c_Gain
         */
        rtb_Gain_c = rtb_t * serialsim_no_observer_P->Gain_c_Gain;

        /* Sum: '<S8>/Sum' */
        rtb_temp191[0] = rtb_Gain_c + serialsim_no_observer_B->Gain2
          + serialsim_no_observer_B->Constant_c[0];
        rtb_temp191[1] = rtb_Gain_c + serialsim_no_observer_B->Gain2
          + serialsim_no_observer_B->Constant_c[1];
        rtb_temp191[2] = rtb_Gain_c + serialsim_no_observer_B->Gain2
          + serialsim_no_observer_B->Constant_c[2];

        /* Trigonometry: '<S8>/Trigonometric Function' */
        rtb_temp191[0] = sin(rtb_temp191[0]);
        rtb_temp191[1] = sin(rtb_temp191[1]);
        rtb_temp191[2] = sin(rtb_temp191[2]);

        /* Product: '<S8>/Product' */
        serialsim_no_observer_B->Product_d[0] = serialsim_no_observer_B->m4 *
          rtb_temp191[0];
        serialsim_no_observer_B->Product_d[1] = serialsim_no_observer_B->m4 *
          rtb_temp191[1];
        serialsim_no_observer_B->Product_d[2] = serialsim_no_observer_B->m4 *
          rtb_temp191[2];
      }

      serialsim_no_observer_B->Switch_b[0] =
        serialsim_no_observer_B->Product_d[0];
      serialsim_no_observer_B->Switch_b[1] =
        serialsim_no_observer_B->Product_d[1];
      serialsim_no_observer_B->Switch_b[2] =
        serialsim_no_observer_B->Product_d[2];
    } else {
      serialsim_no_observer_B->Switch_b[0] = 0.0;
      serialsim_no_observer_B->Switch_b[1] = 0.0;
      serialsim_no_observer_B->Switch_b[2] = 0.0;
    }

    /* Clock: '<S10>/Clock' */
    rtb_Clock_a = ssGetT(S);

    /* S-Function (sfun_tstart): '<S10>/startTime' */

    /* S-Function Block (sfun_tstart): <S10>/startTime */
    serialsim_no_observer_B->startTime = ssGetTStart(S);

    /* Lookup: '<S10>/Look-Up Table1' incorporates:
     *   Fcn: '<S10>/Fcn1'
     *   Sum: '<S10>/Sum'
     *
     * Regarding '<S10>/Fcn1':
     *   Expression: rem(u[1],period)
     */

    serialsim_no_observer_B->Look_Up_Table1 =
      rt_Lookup(serialsim_no_observer_P->Look_Up_Table1_XData, 4, (fmod(
      (rtb_Clock_a - serialsim_no_observer_B->startTime) ,
      9.2592592592592588E-005) ), serialsim_no_observer_P->Look_Up_Table1_YData);
  }

  if (ssIsSampleHit(S, 1, tid)) {       /* Sample time: [0.0, 1.0] */

    /* RelationalOperator: '<S8>/Relational Operator' */
    if (ssIsMajorTimeStep(S)) {
      serialsim_no_observer_DWork->Relational_Operator_a_MODE[0] =
        (int_T)(serialsim_no_observer_B->Switch_b[0] >=
        serialsim_no_observer_B->Look_Up_Table1);
      serialsim_no_observer_DWork->Relational_Operator_a_MODE[1] =
        (int_T)(serialsim_no_observer_B->Switch_b[1] >=
        serialsim_no_observer_B->Look_Up_Table1);
      serialsim_no_observer_DWork->Relational_Operator_a_MODE[2] =
        (int_T)(serialsim_no_observer_B->Switch_b[2] >=
        serialsim_no_observer_B->Look_Up_Table1);
    }
    rtb_Relational_Operator_a[0] =
      (real_T)(serialsim_no_observer_DWork->Relational_Operator_a_MODE[0]);
    rtb_Relational_Operator_a[1] =
      (real_T)(serialsim_no_observer_DWork->Relational_Operator_a_MODE[1]);
    rtb_Relational_Operator_a[2] =
      (real_T)(serialsim_no_observer_DWork->Relational_Operator_a_MODE[2]);

    /* Logic: '<S8>/BL4' */
    rtb_temp204[0] = !rtb_Relational_Operator_a[0];
    rtb_temp204[1] = !rtb_Relational_Operator_a[1];
    rtb_temp204[2] = !rtb_Relational_Operator_a[2];

    /* DataTypeConversion: '<S8>/Data Type  Conversion' */
    serialsim_no_observer_B->Data_Type_Conversion[0] =
      (real_T)rtb_Relational_Operator_a[0];
    serialsim_no_observer_B->Data_Type_Conversion[1] = (real_T)rtb_temp204[0];
    serialsim_no_observer_B->Data_Type_Conversion[2] =
      (real_T)rtb_Relational_Operator_a[1];
    serialsim_no_observer_B->Data_Type_Conversion[3] = (real_T)rtb_temp204[1];
    serialsim_no_observer_B->Data_Type_Conversion[4] =
      (real_T)rtb_Relational_Operator_a[2];
    serialsim_no_observer_B->Data_Type_Conversion[5] = (real_T)rtb_temp204[2];

    /* Constant: '<S5>/T5' */
    serialsim_no_observer_B->T5_b = serialsim_no_observer_P->T5_b_Value;

    /* Constant: '<S5>/T6' */
    serialsim_no_observer_B->T6_b = serialsim_no_observer_P->T6_b_Value;
  }

  if (ssIsContinuousTask(S, tid)) {     /* Sample time: [0.0, 0.0] */

    /* MultiPortSwitch: '<Root>/Multiport Switch' incorporates:
     *   Sum: '<S7>/Sum'
     */
    switch ((int_T)(rtb_Step + rtb_Step1 + rtb_Step2 + rtb_Step3)) {
     case 1:

      rtb_Multiport_Switch_b[0] = serialsim_no_observer_B->Pulse_Generator;
      rtb_Multiport_Switch_b[1] = serialsim_no_observer_B->T2_a;
      rtb_Multiport_Switch_b[2] = serialsim_no_observer_B->T3_a;
      rtb_Multiport_Switch_b[3] = serialsim_no_observer_B->T4_a;
      rtb_Multiport_Switch_b[4] = serialsim_no_observer_B->T1_a;
      rtb_Multiport_Switch_b[5] = serialsim_no_observer_B->T7;
      break;
     case 2:

      rtb_Multiport_Switch_b[0] = serialsim_no_observer_B->T1_b;
      rtb_Multiport_Switch_b[1] = serialsim_no_observer_B->T2_b;
      rtb_Multiport_Switch_b[2] = serialsim_no_observer_B->T3_b;
      rtb_Multiport_Switch_b[3] = serialsim_no_observer_B->T4_b;
      rtb_Multiport_Switch_b[4] = serialsim_no_observer_B->T5_a;
      rtb_Multiport_Switch_b[5] = serialsim_no_observer_B->T6_a;
      break;
     case 3:

      rtb_Multiport_Switch_b[0] = serialsim_no_observer_B->Pulse_Generator1;
      rtb_Multiport_Switch_b[1] = serialsim_no_observer_B->Pulse_Generator2;
      rtb_Multiport_Switch_b[2] = serialsim_no_observer_B->Pulse_Generator3;
      rtb_Multiport_Switch_b[3] = serialsim_no_observer_B->Pulse_Generator4;
      rtb_Multiport_Switch_b[4] = serialsim_no_observer_B->T8;
      rtb_Multiport_Switch_b[5] = serialsim_no_observer_B->T9;
      break;
     case 4:

      rtb_Multiport_Switch_b[0] =
        serialsim_no_observer_B->Data_Type_Conversion[0];
      rtb_Multiport_Switch_b[1] =
        serialsim_no_observer_B->Data_Type_Conversion[1];
      rtb_Multiport_Switch_b[2] =
        serialsim_no_observer_B->Data_Type_Conversion[2];
      rtb_Multiport_Switch_b[3] =
        serialsim_no_observer_B->Data_Type_Conversion[3];
      rtb_Multiport_Switch_b[4] = serialsim_no_observer_B->T5_b;
      rtb_Multiport_Switch_b[5] = serialsim_no_observer_B->T6_b;
      break;
     default:
      /* Result undefined */
#if defined(MATLAB_MEX_FILE)
      (void)mexPrintf("Error: Invalid control input for block:"
       "<Root>/Multiport Switch\n"
       "Result is undefined.");
#endif
      break;
    }

    /* DataTypeConversion: '<S17>/Data Type  Conversion4' */
    {
      int_T i1;

      const real_T *u0 = &rtb_Multiport_Switch_b[0];
      boolean_T *

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -