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

📄 dtc_svm_416_acc.c

📁 关于永磁同步电机DTC系统的无速度传感器
💻 C
📖 第 1 页 / 共 5 页
字号:
    }
  }

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

    /* ZeroOrderHold: '<Root>/Zero-Order Hold4' */
    dtc_svm_416_B->Zero_Order_Hold4 = dtc_svm_416_B->Fcn1_a;
  }

  if (ssIsSampleHit(S, 2, tid)) {       /* Sample time: [1.0E-006, 0.0] */

    /* Sum: '<S7>/Sum' */
    rtb_Sum_b = dtc_svm_416_B->Saturation2_a - dtc_svm_416_B->Zero_Order_Hold4;
  }

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

    /* DiscreteIntegrator: '<S21>/Discrete-Time Integrator'
     *
     * Regarding '<S21>/Discrete-Time Integrator':
     *    Limited, w/o Saturation Port
     */
    dtc_svm_416_B->Discrete_Time_Integrat_d =
      dtc_svm_416_DWork->Discrete_Time_Integrat_d_DSTATE;
    if ( dtc_svm_416_B->Discrete_Time_Integrat_d >=
     dtc_svm_416_P->Discrete_Time_Integrat_d_UpperS ) {
      dtc_svm_416_B->Discrete_Time_Integrat_d =
        dtc_svm_416_P->Discrete_Time_Integrat_d_UpperS;
    } else if ( dtc_svm_416_B->Discrete_Time_Integrat_d <=
     dtc_svm_416_P->Discrete_Time_Integrat_d_LowerS ) {
      dtc_svm_416_B->Discrete_Time_Integrat_d =
        dtc_svm_416_P->Discrete_Time_Integrat_d_LowerS;
    }
  }

  if (ssIsSampleHit(S, 2, tid)) {       /* Sample time: [1.0E-006, 0.0] */

    /* Sum: '<S21>/Sum6' incorporates:
     *   Gain: '<S21>/Kp4'
     *
     * Regarding '<S21>/Kp4':
     *   Gain value: dtc_svm_416_P->Kp4_b_Gain
     */
    rtb_temp183 = (rtb_Sum_b * dtc_svm_416_P->Kp4_b_Gain)
      + dtc_svm_416_B->Discrete_Time_Integrat_d;

    /* Saturate: '<S21>/Saturation2'
     *
     * Regarding '<S21>/Saturation2':
     *   Lower limit: dtc_svm_416_P->Saturation2_b_LowerSat
     *   Upper limit: dtc_svm_416_P->Saturation2_b_UpperSat
     */
    if (rtb_temp183 >= dtc_svm_416_P->Saturation2_b_UpperSat) {
      dtc_svm_416_B->Saturation2_b = dtc_svm_416_P->Saturation2_b_UpperSat;
    } else if (rtb_temp183 <= dtc_svm_416_P->Saturation2_b_LowerSat) {
      dtc_svm_416_B->Saturation2_b = dtc_svm_416_P->Saturation2_b_LowerSat;
    } else {
      dtc_svm_416_B->Saturation2_b = rtb_temp183;
    }

    /* MATLABFcn: '<S7>/MATLAB Fcn' */
    /* Call into Simulink to run the Matlab Fcn block. */
    ssCallAccelRunBlock(S, 8, 39, SS_CALL_MDL_OUTPUTS);
  }

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

    /* Constant: '<S25>/Constant3' */
    dtc_svm_416_B->Constant3 = dtc_svm_416_P->Constant3_Value;

    /* Switch: '<S25>/Switch' */
    if (dtc_svm_416_B->MATLAB_Fcn[1] >= dtc_svm_416_P->Switch_a_Threshold) {
      rtb_temp189 = dtc_svm_416_B->Constant2_a;
    } else {
      rtb_temp189 = dtc_svm_416_B->Constant3;
    }
  }

  if (ssIsSampleHit(S, 2, tid)) {       /* Sample time: [1.0E-006, 0.0] */

    /* Sum: '<S25>/Sum' incorporates:
     *   Gain: '<S25>/Gain'
     *
     * Regarding '<S25>/Gain':
     *   Gain value: dtc_svm_416_P->Gain_a_Gain
     */
    dtc_svm_416_B->Sum_c = - dtc_svm_416_B->MATLAB_Fcn[1]
      + (dtc_svm_416_B->MATLAB_Fcn[0] * dtc_svm_416_P->Gain_a_Gain);
  }

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

    /* Switch: '<S25>/Switch1' */
    if (dtc_svm_416_B->Sum_c >= dtc_svm_416_P->Switch1_a_Threshold) {
      rtb_Switch1_a = dtc_svm_416_B->Constant2_a;
    } else {
      rtb_Switch1_a = dtc_svm_416_B->Constant3;
    }
  }

  if (ssIsSampleHit(S, 2, tid)) {       /* Sample time: [1.0E-006, 0.0] */

    /* Sum: '<S25>/Sum1' incorporates:
     *   Gain: '<S25>/Gain1'
     *
     * Regarding '<S25>/Gain1':
     *   Gain value: dtc_svm_416_P->Gain1_a_Gain
     */
    dtc_svm_416_B->Sum1_a = - dtc_svm_416_B->MATLAB_Fcn[1]
      + (dtc_svm_416_B->MATLAB_Fcn[0] * dtc_svm_416_P->Gain1_a_Gain);
  }

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

    /* Switch: '<S25>/Switch2' */
    if (dtc_svm_416_B->Sum1_a >= dtc_svm_416_P->Switch2_Threshold) {
      rtb_Switch2 = dtc_svm_416_B->Constant2_a;
    } else {
      rtb_Switch2 = dtc_svm_416_B->Constant3;
    }

    /* Sum: '<S25>/Sum2' incorporates:
     *   Gain: '<S25>/Gain2'
     *   Gain: '<S25>/Gain3'
     *
     * Regarding '<S25>/Gain2':
     *   Gain value: dtc_svm_416_P->Gain2_a_Gain
     *
     * Regarding '<S25>/Gain3':
     *   Gain value: dtc_svm_416_P->Gain3_a_Gain
     */
    dtc_svm_416_B->temp116 = rtb_temp189
      + (rtb_Switch1_a * dtc_svm_416_P->Gain2_a_Gain)
      + (rtb_Switch2 * dtc_svm_416_P->Gain3_a_Gain);
  }

  if (ssIsSampleHit(S, 2, tid)) {       /* Sample time: [1.0E-006, 0.0] */

    /* Gain: '<S29>/Gain1'
     *
     * Regarding '<S29>/Gain1':
     *   Gain value: dtc_svm_416_P->Gain1_b_Gain
     */
    rtb_temp183 = dtc_svm_416_B->MATLAB_Fcn[1] * dtc_svm_416_P->Gain1_b_Gain;

    /* Sum: '<S29>/Sum1' */
    dtc_svm_416_B->Sum1_b = rtb_temp183 - dtc_svm_416_B->MATLAB_Fcn[0];
  }

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

    /* Constant: '<S9>/Constant' */
    dtc_svm_416_B->Constant_a = dtc_svm_416_P->Constant_a_Value;

    /* Constant: '<S9>/Constant1' */
    dtc_svm_416_B->Constant1_a = dtc_svm_416_P->Constant1_a_Value;

    /* Fcn: '<S29>/Fcn2'
     *
     * Regarding '<S29>/Fcn2':
     *   Expression: u(1)*u(2)/u(3)
     */
    rtb_temp189 = dtc_svm_416_B->Sum1_b * dtc_svm_416_B->Constant_a /
      dtc_svm_416_B->Constant1_a;

    /* Gain: '<S29>/Gain3'
     *
     * Regarding '<S29>/Gain3':
     *   Gain value: dtc_svm_416_P->Gain3_b_Gain
     */
    rtb_temp189 *= dtc_svm_416_P->Gain3_b_Gain;
  }

  if (ssIsSampleHit(S, 2, tid)) {       /* Sample time: [1.0E-006, 0.0] */

    /* Sum: '<S29>/Sum' */
    dtc_svm_416_B->Sum_d = rtb_temp183 + dtc_svm_416_B->MATLAB_Fcn[0];
  }

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

    /* Fcn: '<S29>/Fcn1'
     *
     * Regarding '<S29>/Fcn1':
     *   Expression: u(1)*u(2)/u(3)
     */
    rtb_temp184 = dtc_svm_416_B->Sum_d * dtc_svm_416_B->Constant_a /
      dtc_svm_416_B->Constant1_a;

    /* Gain: '<S29>/Gain2'
     *
     * Regarding '<S29>/Gain2':
     *   Gain value: dtc_svm_416_P->Gain2_b_Gain
     */
    rtb_temp184 *= dtc_svm_416_P->Gain2_b_Gain;

    /* Gain: '<S27>/Gain2'
     *
     * Regarding '<S27>/Gain2':
     *   Gain value: dtc_svm_416_P->Gain2_c_Gain
     */
    rtb_Gain2_c = rtb_temp189 * dtc_svm_416_P->Gain2_c_Gain;
  }

  if (ssIsSampleHit(S, 2, tid)) {       /* Sample time: [1.0E-006, 0.0] */

    /* Gain: '<S29>/Gain'
     *
     * Regarding '<S29>/Gain':
     *   Gain value: dtc_svm_416_P->Gain_b_Gain
     */
    dtc_svm_416_B->Gain_b = dtc_svm_416_B->MATLAB_Fcn[1] *
      dtc_svm_416_P->Gain_b_Gain;
  }

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

    /* Fcn: '<S29>/Fcn'
     *
     * Regarding '<S29>/Fcn':
     *   Expression: u(1)*u(2)/u(3)
     */
    rtb_temp185 = dtc_svm_416_B->Gain_b * dtc_svm_416_B->Constant_a /
      dtc_svm_416_B->Constant1_a;

    /* Gain: '<S27>/Gain'
     *
     * Regarding '<S27>/Gain':
     *   Gain value: dtc_svm_416_P->Gain_c_Gain
     */
    rtb_temp186 = rtb_temp185 * dtc_svm_416_P->Gain_c_Gain;

    /* Gain: '<S27>/Gain1'
     *
     * Regarding '<S27>/Gain1':
     *   Gain value: dtc_svm_416_P->Gain1_c_Gain
     */
    rtb_temp190 = rtb_temp184 * dtc_svm_416_P->Gain1_c_Gain;

    /* MultiPortSwitch: '<S27>/Multiport Switch' */
    switch ((int_T)dtc_svm_416_B->temp116) {
     case 1:

      rtb_Multiport_Switch_a = rtb_temp189;
      break;
     case 2:

      rtb_Multiport_Switch_a = rtb_temp184;
      break;
     case 3:

      rtb_Multiport_Switch_a = rtb_Gain2_c;
      break;
     case 4:

      rtb_Multiport_Switch_a = rtb_temp186;
      break;
     case 5:

      rtb_Multiport_Switch_a = rtb_temp185;
      break;
     case 6:

      rtb_Multiport_Switch_a = rtb_temp190;
      break;
     default:
      /* Result undefined */
#if defined(MATLAB_MEX_FILE)
      (void)mexPrintf("Error: Invalid control input for block:"
       "<S27>/Multiport Switch\n"
       "Result is undefined.");
#endif
      break;
    }

    /* MultiPortSwitch: '<S27>/Multiport Switch1' */
    switch ((int_T)dtc_svm_416_B->temp116) {
     case 1:

      rtb_Multiport_Switch1_a = rtb_temp184;
      break;
     case 2:

      rtb_Multiport_Switch1_a = rtb_temp186;
      break;
     case 3:

      rtb_Multiport_Switch1_a = rtb_temp185;
      break;
     case 4:

      rtb_Multiport_Switch1_a = rtb_temp189;
      break;
     case 5:

      rtb_Multiport_Switch1_a = rtb_temp190;
      break;
     case 6:

      rtb_Multiport_Switch1_a = rtb_Gain2_c;
      break;
     default:
      /* Result undefined */
#if defined(MATLAB_MEX_FILE)
      (void)mexPrintf("Error: Invalid control input for block:"
       "<S27>/Multiport Switch1\n"
       "Result is undefined.");
#endif
      break;
    }

    /* Fcn: '<S27>/Fcn'
     *
     * Regarding '<S27>/Fcn':
     *   Expression: u(3)-u(2)-u(1)
     */
    rtb_temp190 = dtc_svm_416_B->Constant_a - rtb_Multiport_Switch1_a -
      rtb_Multiport_Switch_a;
  }

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

    /* Switch: '<S27>/Switch' */
    if (rtb_temp190 >= dtc_svm_416_P->Switch_b_Threshold) {
      dtc_svm_416_B->Switch_b = rtb_Multiport_Switch_a;
    } else {

      {
        /* simstruct variables */
        dtc_svm_416_BlockIO *dtc_svm_416_B = (dtc_svm_416_BlockIO *)
          _ssGetBlockIO(S);

        /* Fcn: '<S27>/Fcn1'
         *
         * Regarding '<S27>/Fcn1':
         *   Expression: u(1)*u(3)/(u(1)+u(2))
         */
        dtc_svm_416_B->Fcn1_k = rtb_Multiport_Switch_a *
          dtc_svm_416_B->Constant_a / ( rtb_Multiport_Switch_a +
          rtb_Multiport_Switch1_a );
      }

      dtc_svm_416_B->Switch_b = dtc_svm_416_B->Fcn1_k;
    }
  }

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

    /* Switch: '<S27>/Switch1' */
    if (rtb_temp190 >= dtc_svm_416_P->Switch1_b_Threshold) {
      dtc_svm_416_B->Switch1_b = rtb_Multiport_Switch1_a;
    } else {

      {
        /* simstruct variables */
        dtc_svm_416_BlockIO *dtc_svm_416_B = (dtc_svm_416_BlockIO *)
          _ssGetBlockIO(S);

        /* Fcn: '<S27>/Fcn2'
         *
         * Regarding '<S27>/Fcn2':
         *   Expression: u(2)*u(3)/(u(1)+u(2))
         */
        dtc_svm_416_B->Fcn2_g = rtb_Multiport_Switch1_a *
          dtc_svm_416_B->Constant_a / ( rtb_Multiport_Switch_a +
          rtb_Multiport_Switch1_a );
      }

      dtc_svm_416_B->Switch1_b = dtc_svm_416_B->Fcn2_g;
    }

    /* Gain: '<S26>/Gain' incorporates:
     *   Sum: '<S26>/Sum1'
     *
     * Regarding '<S26>/Gain':
     *   Gain value: dtc_svm_416_P->Gain_d_Gain
     */
    rtb_temp190 = (-dtc_svm_416_B->Switch_b - dtc_svm_416_B->Switch1_b +
      dtc_svm_416_B->Constant_a) * dtc_svm_416_P->Gain_d_Gain;

    /* Sum: '<S26>/Sum2' incorporates:
     *   Gain: '<S26>/Gain2'
     *
     * Regarding '<S26>/Gain2':
     *   Gain value: dtc_svm_416_P->Gain2_d_Gain
     */
    rtb_temp186 = (dtc_svm_416_B->Switch_b * dtc_svm_416_P->Gain2_d_Gain)
      + rtb_temp190;

    /* Sum: '<S26>/Sum' incorporates:
     *   Gain: '<S26>/Gain1'
     *
     * Regarding '<S26>/Gain1':
     *   Gain value: dtc_svm_416_P->Gain1_d_Gain
     */
    rtb_temp185 = (dtc_svm_416_B->Switch1_b * dtc_svm_416_P->Gain1_d_Gain)
      + rtb_temp186;

    /* MultiPortSwitch: '<S26>/Multiport Switch' */
    switch ((int_T)dtc_svm_416_B->temp116) {
     case 1:

      dtc_svm_416_B->Multiport_Switch_b = rtb_temp186;
      break;
     case 2:

      dtc_svm_416_B->Multiport_Switch_b = rtb_temp190;
      break;
     case 3:

      dtc_svm_416_B->Multiport_Switch_b = rtb_temp190;
      break;
     case 4:

      dtc_svm_416_B->Multiport_Switch_b = rtb_temp185;
      break;
     case 5:

      dtc_svm_416_B->Multiport_Switch_b = rtb_temp185;

⌨️ 快捷键说明

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