Sfoglia il codice sorgente

update simlink model

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 4 anni fa
parent
commit
c8519ff1e4
77 ha cambiato i file con 16176 aggiunte e 0 eliminazioni
  1. BIN
      Simulink/BLDCmotor_FOC_R2017b_fixdt.slxc
  2. BIN
      Simulink/MotorController_FOC.slx
  3. BIN
      Simulink/MotorController_FOC.slx.autosave
  4. BIN
      Simulink/MotorController_FOC.slxc
  5. BIN
      Simulink/MotorController_FOC_ert_rtw/build_exception.mat
  6. 16 0
      Simulink/PMSM_Controller_ert_rtw/PMSM_Controller.bat
  7. 1038 0
      Simulink/PMSM_Controller_ert_rtw/PMSM_Controller.c
  8. 431 0
      Simulink/PMSM_Controller_ert_rtw/PMSM_Controller.h
  9. 426 0
      Simulink/PMSM_Controller_ert_rtw/PMSM_Controller.mk
  10. 7 0
      Simulink/PMSM_Controller_ert_rtw/PMSM_Controller.rsp
  11. 7 0
      Simulink/PMSM_Controller_ert_rtw/PMSM_Controller_comp.rsp
  12. 104 0
      Simulink/PMSM_Controller_ert_rtw/PMSM_Controller_data.c
  13. 82 0
      Simulink/PMSM_Controller_ert_rtw/PMSM_Controller_private.h
  14. 0 0
      Simulink/PMSM_Controller_ert_rtw/PMSM_Controller_ref.rsp
  15. 32 0
      Simulink/PMSM_Controller_ert_rtw/PMSM_Controller_types.h
  16. 171 0
      Simulink/PMSM_Controller_ert_rtw/Shunt_Three_Sample_Point.c
  17. 38 0
      Simulink/PMSM_Controller_ert_rtw/Shunt_Three_Sample_Point.h
  18. BIN
      Simulink/PMSM_Controller_ert_rtw/buildInfo.mat
  19. BIN
      Simulink/PMSM_Controller_ert_rtw/codeInfo.mat
  20. BIN
      Simulink/PMSM_Controller_ert_rtw/codedescriptor.dmr
  21. BIN
      Simulink/PMSM_Controller_ert_rtw/compileInfo.mat
  22. 14 0
      Simulink/PMSM_Controller_ert_rtw/defines.txt
  23. 162 0
      Simulink/PMSM_Controller_ert_rtw/ert_main.c
  24. 2094 0
      Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_c.html
  25. 33 0
      Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_codegen_rpt.html
  26. 245 0
      Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_coderassumptions.html
  27. 427 0
      Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_contents.html
  28. 226 0
      Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_data_c.html
  29. 880 0
      Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_h.html
  30. 878 0
      Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_interface.html
  31. 18 0
      Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_metrics.html
  32. 182 0
      Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_private_h.html
  33. 1191 0
      Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_reducedblocks.html
  34. 18 0
      Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_replacements.html
  35. 249 0
      Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_subsystems.html
  36. 177 0
      Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_survey.html
  37. 7 0
      Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_trace.html
  38. 82 0
      Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_types_h.html
  39. 360 0
      Simulink/PMSM_Controller_ert_rtw/html/Shunt_Three_Sample_Point_c.html
  40. 94 0
      Simulink/PMSM_Controller_ert_rtw/html/Shunt_Three_Sample_Point_h.html
  41. 184 0
      Simulink/PMSM_Controller_ert_rtw/html/css/coder_app.css
  42. 133 0
      Simulink/PMSM_Controller_ert_rtw/html/define.js
  43. 342 0
      Simulink/PMSM_Controller_ert_rtw/html/ert_main_c.html
  44. BIN
      Simulink/PMSM_Controller_ert_rtw/html/hilite_warning.png
  45. 33 0
      Simulink/PMSM_Controller_ert_rtw/html/inspect.html
  46. 525 0
      Simulink/PMSM_Controller_ert_rtw/html/js/coder_app.js
  47. 14 0
      Simulink/PMSM_Controller_ert_rtw/html/nav.html
  48. 69 0
      Simulink/PMSM_Controller_ert_rtw/html/navToolbar.html
  49. 216 0
      Simulink/PMSM_Controller_ert_rtw/html/rtGetInf_c.html
  50. 88 0
      Simulink/PMSM_Controller_ert_rtw/html/rtGetInf_h.html
  51. 148 0
      Simulink/PMSM_Controller_ert_rtw/html/rtGetNaN_c.html
  52. 84 0
      Simulink/PMSM_Controller_ert_rtw/html/rtGetNaN_h.html
  53. 130 0
      Simulink/PMSM_Controller_ert_rtw/html/rt_defines_h.html
  54. 212 0
      Simulink/PMSM_Controller_ert_rtw/html/rt_nonfinite_c.html
  55. 140 0
      Simulink/PMSM_Controller_ert_rtw/html/rt_nonfinite_h.html
  56. 2091 0
      Simulink/PMSM_Controller_ert_rtw/html/rtwhilite.js
  57. 31 0
      Simulink/PMSM_Controller_ert_rtw/html/rtwmsg.html
  58. 257 0
      Simulink/PMSM_Controller_ert_rtw/html/rtwreport.css
  59. 92 0
      Simulink/PMSM_Controller_ert_rtw/html/rtwreport_utils.js
  60. 210 0
      Simulink/PMSM_Controller_ert_rtw/html/rtwshrink.js
  61. 222 0
      Simulink/PMSM_Controller_ert_rtw/html/rtwtypes_h.html
  62. 559 0
      Simulink/PMSM_Controller_ert_rtw/html/search.js
  63. BIN
      Simulink/PMSM_Controller_ert_rtw/html/spinner.gif
  64. 3 0
      Simulink/PMSM_Controller_ert_rtw/modelsources.txt
  65. 99 0
      Simulink/PMSM_Controller_ert_rtw/rtGetInf.c
  66. 35 0
      Simulink/PMSM_Controller_ert_rtw/rtGetInf.h
  67. 65 0
      Simulink/PMSM_Controller_ert_rtw/rtGetNaN.c
  68. 33 0
      Simulink/PMSM_Controller_ert_rtw/rtGetNaN.h
  69. 56 0
      Simulink/PMSM_Controller_ert_rtw/rt_defines.h
  70. 97 0
      Simulink/PMSM_Controller_ert_rtw/rt_nonfinite.c
  71. 61 0
      Simulink/PMSM_Controller_ert_rtw/rt_nonfinite.h
  72. 4 0
      Simulink/PMSM_Controller_ert_rtw/rtw_proj.tmw
  73. 102 0
      Simulink/PMSM_Controller_ert_rtw/rtwtypes.h
  74. BIN
      Simulink/PMSM_Controller_ert_rtw/rtwtypeschksum.mat
  75. 2 0
      Simulink/PMSM_Controller_ert_rtw/setup_msvc.bat
  76. BIN
      Simulink/foc_libs.slx
  77. 150 0
      Simulink/init_model.m

BIN
Simulink/BLDCmotor_FOC_R2017b_fixdt.slxc


BIN
Simulink/MotorController_FOC.slx


BIN
Simulink/MotorController_FOC.slx.autosave


BIN
Simulink/MotorController_FOC.slxc


BIN
Simulink/MotorController_FOC_ert_rtw/build_exception.mat


+ 16 - 0
Simulink/PMSM_Controller_ert_rtw/PMSM_Controller.bat

@@ -0,0 +1,16 @@
+
+call "setup_msvc.bat"
+
+
+call  "\\DESKTOP-C3O4FD7\D$\Program Files\R2020b\bin\win64\checkMATLABRootForDriveMap.exe" "\\DESKTOP-C3O4FD7\D$\Program Files\R2020b"  > mlEnv.txt
+for /f %%a in (mlEnv.txt) do set "%%a"\n
+cd .
+
+if "%1"=="" (nmake MATLAB_ROOT=%MATLAB_ROOT% ALT_MATLAB_ROOT=%ALT_MATLAB_ROOT% MATLAB_BIN=%MATLAB_BIN% ALT_MATLAB_BIN=%ALT_MATLAB_BIN%  -f PMSM_Controller.mk all) else (nmake MATLAB_ROOT=%MATLAB_ROOT% ALT_MATLAB_ROOT=%ALT_MATLAB_ROOT% MATLAB_BIN=%MATLAB_BIN% ALT_MATLAB_BIN=%ALT_MATLAB_BIN%  -f PMSM_Controller.mk %1)
+@if errorlevel 1 goto error_exit
+
+exit 0
+
+:error_exit
+echo The make command returned an error of %errorlevel%
+exit 1

+ 1038 - 0
Simulink/PMSM_Controller_ert_rtw/PMSM_Controller.c

@@ -0,0 +1,1038 @@
+/*
+ * File: PMSM_Controller.c
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+#include "PMSM_Controller.h"
+#include "PMSM_Controller_private.h"
+
+static void rate_scheduler(RT_MODEL *const rtM);
+uint16_T plook_u16u16_evencka(uint16_T u, uint16_T bp0, uint16_T bpSpace,
+  uint32_T maxIndex)
+{
+  uint16_T bpIndex;
+
+  /* Prelookup - Index only
+     Index Search method: 'even'
+     Extrapolation method: 'Clip'
+     Use previous index: 'off'
+     Use last breakpoint for index at or above upper limit: 'on'
+     Remove protection against out-of-range input in generated code: 'off'
+   */
+  if (u <= bp0) {
+    bpIndex = 0U;
+  } else {
+    bpIndex = (uint16_T)((uint32_T)(uint16_T)((uint32_T)u - bp0) / bpSpace);
+    if (bpIndex < maxIndex) {
+    } else {
+      bpIndex = (uint16_T)maxIndex;
+    }
+  }
+
+  return bpIndex;
+}
+
+int32_T div_nde_s32_floor(int32_T numerator, int32_T denominator)
+{
+  return (((numerator < 0) != (denominator < 0)) && (numerator % denominator !=
+           0) ? -1 : 0) + numerator / denominator;
+}
+
+/*
+ *   This function updates active task flag for each subrate.
+ * The function is called at model base rate, hence the
+ * generated code self-manages all its subrates.
+ */
+static void rate_scheduler(RT_MODEL *const rtM)
+{
+  /* Compute which subrates run during the next base time step.  Subrates
+   * are an integer multiple of the base rate counter.  Therefore, the subtask
+   * counter is reset when it reaches its limit (zero means run).
+   */
+  (rtM->Timing.TaskCounters.TID[1])++;
+  if ((rtM->Timing.TaskCounters.TID[1]) > 9) {/* Sample time: [6.2E-5s, 0.0s] */
+    rtM->Timing.TaskCounters.TID[1] = 0;
+  }
+}
+
+real_T rt_modd_snf(real_T u0, real_T u1)
+{
+  real_T q;
+  real_T y;
+  boolean_T yEq;
+  y = u0;
+  if (u1 == 0.0) {
+    if (u0 == 0.0) {
+      y = u1;
+    }
+  } else if (rtIsNaN(u0) || rtIsNaN(u1) || rtIsInf(u0)) {
+    y = (rtNaN);
+  } else if (u0 == 0.0) {
+    y = 0.0 / u1;
+  } else if (rtIsInf(u1)) {
+    if ((u1 < 0.0) != (u0 < 0.0)) {
+      y = u1;
+    }
+  } else {
+    y = fmod(u0, u1);
+    yEq = (y == 0.0);
+    if ((!yEq) && (u1 > floor(u1))) {
+      q = fabs(u0 / u1);
+      yEq = !(fabs(q - floor(q + 0.5)) > DBL_EPSILON * q);
+    }
+
+    if (yEq) {
+      y = u1 * 0.0;
+    } else {
+      if ((u0 < 0.0) != (u1 < 0.0)) {
+        y += u1;
+      }
+    }
+  }
+
+  return y;
+}
+
+real_T rt_roundd_snf(real_T u)
+{
+  real_T y;
+  if (fabs(u) < 4.503599627370496E+15) {
+    if (u >= 0.5) {
+      y = floor(u + 0.5);
+    } else if (u > -0.5) {
+      y = u * 0.0;
+    } else {
+      y = ceil(u - 0.5);
+    }
+  } else {
+    y = u;
+  }
+
+  return y;
+}
+
+/* Model step function */
+void PMSM_Controller_step(RT_MODEL *const rtM, int16_T rtU_Vdc, uint16_T rtU_Ts,
+  int16_T rtU_adc_a, int16_T rtU_adc_b, real_T rtU_rotor_angle, int16_T
+  rtU_rotor_speed, int16_T rtU_input_target, uint16_T rtY_pwm_counts[8], uint8_T
+  *rtY_sector)
+{
+  DW *rtDW = rtM->dwork;
+  int32_T rtb_Sum1_tmp;
+  int32_T rtb_Sum3_idx_0;
+  int32_T rtb_Sum3_idx_1;
+  int32_T tmp;
+  int32_T tmp_0;
+  int16_T rtb_Divide;
+  int16_T rtb_Divide4;
+  int16_T rtb_Divide7;
+  int16_T rtb_Multiply_idx_0;
+  int16_T rtb_Multiply_idx_1;
+  int16_T rtb_SignPreIntegrator;
+  int16_T rtb_SignPreSat;
+  int16_T rtb_SignPreSat_k;
+  int16_T rtb_Sum1;
+  int16_T rtb_Sum2;
+  int16_T rtb_Sum3_l;
+  uint16_T rtb_DataTypeConversion3;
+  uint16_T rtb_MultiportSwitch_idx_0;
+  uint16_T rtb_MultiportSwitch_idx_1;
+  uint16_T rtb_o_samp_p1;
+  uint8_T rtb_DataTypeConversion_a;
+  boolean_T rtb_NotEqual;
+
+  /* Gain: '<S1>/Multiply' incorporates:
+   *  Inport: '<Root>/adc_a'
+   *  Inport: '<Root>/adc_b'
+   */
+  rtb_Multiply_idx_0 = (int16_T)((19761 * rtU_adc_a) >> 17);
+  rtb_Multiply_idx_1 = (int16_T)((19761 * rtU_adc_b) >> 17);
+
+  /* Outputs for Atomic SubSystem: '<S1>/controller' */
+  /* PreLookup: '<S23>/a_elecAngle_XA' incorporates:
+   *  Constant: '<S1>/Constant1'
+   *  Gain: '<S1>/Gain'
+   *  Inport: '<Root>/rotor_angle'
+   *  Math: '<S1>/Math Function'
+   */
+  rtb_o_samp_p1 = plook_u16u16_evencka((uint16_T)(57.295779513082323 *
+    rt_modd_snf(rtU_rotor_angle, 6.2831853071795862)), 0U, 1U, 360U);
+
+  /* Sum: '<S15>/Add1' incorporates:
+   *  Product: '<S177>/Divide4'
+   *  Sum: '<S15>/Add'
+   */
+  rtb_Divide4 = (int16_T)-(rtb_Multiply_idx_0 + rtb_Multiply_idx_1);
+
+  /* Gain: '<S20>/Gain1' incorporates:
+   *  Gain: '<S20>/Gain'
+   *  Product: '<S177>/Divide'
+   *  Product: '<S177>/Divide4'
+   *  Sum: '<S20>/Add'
+   *  Sum: '<S20>/Add1'
+   */
+  rtb_Divide = (int16_T)(((((rtb_Multiply_idx_0 << 1) - rtb_Multiply_idx_1) -
+    rtb_Divide4) * 21845) >> 16);
+
+  /* Gain: '<S20>/Gain2' incorporates:
+   *  Product: '<S177>/Divide4'
+   *  Sum: '<S20>/Add2'
+   */
+  rtb_Divide4 = (int16_T)(((rtb_Multiply_idx_1 - rtb_Divide4) * 18919) >> 15);
+
+  /* Sum: '<S22>/Sum1' incorporates:
+   *  Interpolation_n-D: '<S23>/r_cos_M1'
+   *  Interpolation_n-D: '<S23>/r_sin_M1'
+   *  Product: '<S177>/Divide'
+   *  Product: '<S177>/Divide4'
+   *  Product: '<S22>/Divide2'
+   *  Product: '<S22>/Divide3'
+   */
+  rtb_Sum1_tmp = ((rtb_Divide * rtConstP.r_cos_M1_Table[rtb_o_samp_p1]) >> 14) +
+    ((rtb_Divide4 * rtConstP.r_sin_M1_Table[rtb_o_samp_p1]) >> 14);
+  if (rtb_Sum1_tmp > 32767) {
+    rtb_Sum1_tmp = 32767;
+  } else {
+    if (rtb_Sum1_tmp < -32768) {
+      rtb_Sum1_tmp = -32768;
+    }
+  }
+
+  /* Sum: '<S21>/Sum2' incorporates:
+   *  Sum: '<S22>/Sum1'
+   *  UnitDelay: '<S21>/UnitDelay1'
+   */
+  rtb_Sum1_tmp -= rtDW->UnitDelay1_DSTATE[0] >> 16;
+  if (rtb_Sum1_tmp > 32767) {
+    rtb_Sum1_tmp = 32767;
+  } else {
+    if (rtb_Sum1_tmp < -32768) {
+      rtb_Sum1_tmp = -32768;
+    }
+  }
+
+  /* Sum: '<S21>/Sum3' incorporates:
+   *  Constant: '<S15>/Constant'
+   *  Product: '<S21>/Divide3'
+   *  Sum: '<S21>/Sum2'
+   *  UnitDelay: '<S21>/UnitDelay1'
+   */
+  rtb_Sum3_idx_0 = 13107 * rtb_Sum1_tmp + rtDW->UnitDelay1_DSTATE[0];
+
+  /* Sum: '<S22>/Sum6' incorporates:
+   *  Interpolation_n-D: '<S23>/r_cos_M1'
+   *  Interpolation_n-D: '<S23>/r_sin_M1'
+   *  Product: '<S177>/Divide'
+   *  Product: '<S177>/Divide4'
+   *  Product: '<S22>/Divide1'
+   *  Product: '<S22>/Divide4'
+   */
+  rtb_Sum1_tmp = ((rtb_Divide4 * rtConstP.r_cos_M1_Table[rtb_o_samp_p1]) >> 14)
+    - ((rtb_Divide * rtConstP.r_sin_M1_Table[rtb_o_samp_p1]) >> 14);
+  if (rtb_Sum1_tmp > 32767) {
+    rtb_Sum1_tmp = 32767;
+  } else {
+    if (rtb_Sum1_tmp < -32768) {
+      rtb_Sum1_tmp = -32768;
+    }
+  }
+
+  /* Sum: '<S21>/Sum2' incorporates:
+   *  Sum: '<S22>/Sum6'
+   *  UnitDelay: '<S21>/UnitDelay1'
+   */
+  rtb_Sum1_tmp -= rtDW->UnitDelay1_DSTATE[1] >> 16;
+  if (rtb_Sum1_tmp > 32767) {
+    rtb_Sum1_tmp = 32767;
+  } else {
+    if (rtb_Sum1_tmp < -32768) {
+      rtb_Sum1_tmp = -32768;
+    }
+  }
+
+  /* Sum: '<S21>/Sum3' incorporates:
+   *  Constant: '<S15>/Constant'
+   *  Product: '<S21>/Divide3'
+   *  Sum: '<S21>/Sum2'
+   *  UnitDelay: '<S21>/UnitDelay1'
+   */
+  rtb_Sum3_idx_1 = 13107 * rtb_Sum1_tmp + rtDW->UnitDelay1_DSTATE[1];
+
+  /* DataTypeConversion: '<S21>/Data Type Conversion' incorporates:
+   *  Sum: '<S21>/Sum3'
+   */
+  rtb_Multiply_idx_0 = (int16_T)(rtb_Sum3_idx_0 >> 16);
+
+  /* Sum: '<S69>/Sum' incorporates:
+   *  DiscreteIntegrator: '<S60>/Integrator'
+   *  Gain: '<S65>/Proportional Gain'
+   *  Signum: '<S51>/SignPreSat'
+   *  Sum: '<S16>/Sum1'
+   */
+  rtb_Multiply_idx_1 = (int16_T)((((int16_T)(9 * (int16_T)-rtb_Multiply_idx_0) <<
+    15) + (int32_T)((rtDW->Integrator_DSTATE * 1704243LL) >> 23)) >> 15);
+
+  /* Saturate: '<S67>/Saturation' incorporates:
+   *  Product: '<S177>/Divide'
+   *  Signum: '<S51>/SignPreSat'
+   */
+  if (rtb_Multiply_idx_1 > 8960) {
+    rtb_Divide = 8960;
+  } else if (rtb_Multiply_idx_1 < -8960) {
+    rtb_Divide = -8960;
+  } else {
+    rtb_Divide = rtb_Multiply_idx_1;
+  }
+
+  /* End of Saturate: '<S67>/Saturation' */
+
+  /* Sum: '<S16>/Sum3' incorporates:
+   *  Inport: '<Root>/input_target'
+   *  Inport: '<Root>/rotor_speed'
+   */
+  rtb_Sum3_l = (int16_T)(rtU_input_target - rtU_rotor_speed);
+
+  /* Sum: '<S169>/Sum' incorporates:
+   *  DiscreteIntegrator: '<S160>/Integrator'
+   *  Gain: '<S165>/Proportional Gain'
+   *  Signum: '<S151>/SignPreSat'
+   */
+  rtb_SignPreSat = (int16_T)((rtDW->Integrator_DSTATE_i * 26629 < 0 ? -1 : 0) +
+    (rtb_Sum3_l << 4));
+
+  /* Saturate: '<S167>/Saturation' incorporates:
+   *  Signum: '<S151>/SignPreSat'
+   */
+  if (rtb_SignPreSat > 800) {
+    rtb_Divide4 = 800;
+  } else if (rtb_SignPreSat < -800) {
+    rtb_Divide4 = -800;
+  } else {
+    rtb_Divide4 = rtb_SignPreSat;
+  }
+
+  /* End of Saturate: '<S167>/Saturation' */
+
+  /* Sum: '<S16>/Sum2' incorporates:
+   *  DataTypeConversion: '<S21>/Data Type Conversion'
+   *  Sum: '<S21>/Sum3'
+   */
+  rtb_Sum2 = (int16_T)(rtb_Divide4 - (int16_T)(rtb_Sum3_idx_1 >> 16));
+
+  /* Sum: '<S119>/Sum' incorporates:
+   *  DiscreteIntegrator: '<S110>/Integrator'
+   *  Gain: '<S115>/Proportional Gain'
+   *  Signum: '<S101>/SignPreSat'
+   *  Sum: '<S16>/Sum2'
+   */
+  rtb_SignPreSat_k = (int16_T)((((int16_T)(10 * rtb_Sum2) << 15) + (int32_T)
+    ((rtDW->Integrator_DSTATE_p * 1704243LL) >> 23)) >> 15);
+
+  /* Saturate: '<S117>/Saturation' incorporates:
+   *  Signum: '<S101>/SignPreSat'
+   *  Signum: '<S51>/SignPreIntegrator'
+   */
+  if (rtb_SignPreSat_k > 8960) {
+    rtb_SignPreIntegrator = 8960;
+  } else if (rtb_SignPreSat_k < -8960) {
+    rtb_SignPreIntegrator = -8960;
+  } else {
+    rtb_SignPreIntegrator = rtb_SignPreSat_k;
+  }
+
+  /* End of Saturate: '<S117>/Saturation' */
+
+  /* Sum: '<S18>/Sum1' incorporates:
+   *  Interpolation_n-D: '<S23>/r_cos_M1'
+   *  Interpolation_n-D: '<S23>/r_sin_M1'
+   *  Product: '<S177>/Divide'
+   *  Product: '<S18>/Divide2'
+   *  Product: '<S18>/Divide3'
+   *  Signum: '<S51>/SignPreIntegrator'
+   */
+  rtb_Sum1_tmp = ((rtb_Divide * rtConstP.r_sin_M1_Table[rtb_o_samp_p1]) >> 14) +
+    ((rtb_SignPreIntegrator * rtConstP.r_cos_M1_Table[rtb_o_samp_p1]) >> 14);
+  if (rtb_Sum1_tmp > 32767) {
+    rtb_Sum1_tmp = 32767;
+  } else {
+    if (rtb_Sum1_tmp < -32768) {
+      rtb_Sum1_tmp = -32768;
+    }
+  }
+
+  /* Sum: '<S18>/Sum6' incorporates:
+   *  Interpolation_n-D: '<S23>/r_cos_M1'
+   *  Interpolation_n-D: '<S23>/r_sin_M1'
+   *  Product: '<S177>/Divide'
+   *  Product: '<S18>/Divide1'
+   *  Product: '<S18>/Divide4'
+   *  Signum: '<S51>/SignPreIntegrator'
+   */
+  tmp_0 = ((rtb_Divide * rtConstP.r_cos_M1_Table[rtb_o_samp_p1]) >> 14) -
+    ((rtb_SignPreIntegrator * rtConstP.r_sin_M1_Table[rtb_o_samp_p1]) >> 14);
+  if (tmp_0 > 32767) {
+    tmp_0 = 32767;
+  } else {
+    if (tmp_0 < -32768) {
+      tmp_0 = -32768;
+    }
+  }
+
+  /* Product: '<S177>/Divide7' incorporates:
+   *  Constant: '<S177>/Constant3'
+   *  Sum: '<S18>/Sum1'
+   */
+  rtb_Divide7 = (int16_T)((2365 * (int16_T)rtb_Sum1_tmp) >> 10);
+
+  /* MATLAB Function: '<S177>/sector_select' incorporates:
+   *  Product: '<S177>/Divide7'
+   *  Sum: '<S18>/Sum1'
+   *  Sum: '<S18>/Sum6'
+   */
+  if ((int16_T)rtb_Sum1_tmp >= 0) {
+    if ((int16_T)tmp_0 >= 0) {
+      if (rtb_Divide7 > ((int16_T)tmp_0 << 2)) {
+        /* DataTypeConversion: '<S177>/Data Type Conversion' */
+        rtb_DataTypeConversion_a = 2U;
+      } else {
+        /* DataTypeConversion: '<S177>/Data Type Conversion' */
+        rtb_DataTypeConversion_a = 1U;
+      }
+    } else {
+      tmp = -rtb_Divide7;
+      if (-rtb_Divide7 > 32767) {
+        tmp = 32767;
+      }
+
+      if (tmp > ((int16_T)tmp_0 << 2)) {
+        /* DataTypeConversion: '<S177>/Data Type Conversion' */
+        rtb_DataTypeConversion_a = 3U;
+      } else {
+        /* DataTypeConversion: '<S177>/Data Type Conversion' */
+        rtb_DataTypeConversion_a = 2U;
+      }
+    }
+  } else if ((int16_T)tmp_0 >= 0) {
+    tmp = -rtb_Divide7;
+    if (-rtb_Divide7 > 32767) {
+      tmp = 32767;
+    }
+
+    if (tmp > ((int16_T)tmp_0 << 2)) {
+      /* DataTypeConversion: '<S177>/Data Type Conversion' */
+      rtb_DataTypeConversion_a = 5U;
+    } else {
+      /* DataTypeConversion: '<S177>/Data Type Conversion' */
+      rtb_DataTypeConversion_a = 6U;
+    }
+  } else if (rtb_Divide7 > ((int16_T)tmp_0 << 2)) {
+    /* DataTypeConversion: '<S177>/Data Type Conversion' */
+    rtb_DataTypeConversion_a = 4U;
+  } else {
+    /* DataTypeConversion: '<S177>/Data Type Conversion' */
+    rtb_DataTypeConversion_a = 5U;
+  }
+
+  /* End of MATLAB Function: '<S177>/sector_select' */
+
+  /* Product: '<S177>/Divide' incorporates:
+   *  DataTypeConversion: '<S177>/Data Type Conversion6'
+   *  Inport: '<Root>/Ts'
+   *  Inport: '<Root>/Vdc'
+   */
+  rtb_Divide = (int16_T)div_nde_s32_floor((int16_T)rtU_Ts << 10, rtU_Vdc);
+
+  /* Product: '<S177>/Divide8' incorporates:
+   *  Constant: '<S177>/Constant'
+   *  Product: '<S177>/Divide2'
+   *  Product: '<S177>/Divide4'
+   *  Sum: '<S18>/Sum1'
+   */
+  rtb_Sum1_tmp = 2365 * (int16_T)((3547 * (int16_T)rtb_Sum1_tmp) >> 10);
+
+  /* Product: '<S177>/Divide1' incorporates:
+   *  Product: '<S177>/Divide'
+   *  Product: '<S177>/Divide8'
+   */
+  rtb_Sum1 = (int16_T)(((int16_T)(rtb_Sum1_tmp >> 11) * rtb_Divide) >> 12);
+
+  /* Product: '<S177>/Divide3' incorporates:
+   *  Constant: '<S177>/Constant1'
+   *  Signum: '<S51>/SignPreIntegrator'
+   *  Sum: '<S18>/Sum6'
+   */
+  rtb_SignPreIntegrator = (int16_T)((3547 * (int16_T)tmp_0) >> 10);
+
+  /* Product: '<S177>/Divide4' */
+  rtb_Divide4 = (int16_T)(rtb_Sum1_tmp >> 12);
+
+  /* Product: '<S177>/Divide5' incorporates:
+   *  Product: '<S177>/Divide'
+   *  Product: '<S177>/Divide4'
+   *  Signum: '<S51>/SignPreIntegrator'
+   *  Sum: '<S177>/Add'
+   */
+  rtb_Divide7 = (int16_T)(((int16_T)(rtb_SignPreIntegrator + rtb_Divide4) *
+    rtb_Divide) >> 12);
+
+  /* Product: '<S177>/Divide6' incorporates:
+   *  Product: '<S177>/Divide'
+   *  Product: '<S177>/Divide4'
+   *  Signum: '<S51>/SignPreIntegrator'
+   *  Sum: '<S177>/Add1'
+   */
+  rtb_SignPreIntegrator = (int16_T)(((int16_T)(rtb_Divide4 -
+    rtb_SignPreIntegrator) * rtb_Divide) >> 12);
+
+  /* MATLAB Function: '<S177>/phase_time' incorporates:
+   *  DataTypeConversion: '<S177>/Data Type Conversion1'
+   *  DataTypeConversion: '<S177>/Data Type Conversion2'
+   *  Inport: '<Root>/Ts'
+   */
+  switch ((int8_T)rtb_DataTypeConversion_a) {
+   case 1:
+    rtb_Sum1_tmp = -rtb_SignPreIntegrator;
+    if (-rtb_SignPreIntegrator > 32767) {
+      rtb_Sum1_tmp = 32767;
+    }
+
+    tmp_0 = (int16_T)rtU_Ts - (int16_T)rtb_Sum1_tmp;
+    if (tmp_0 > 32767) {
+      tmp_0 = 32767;
+    } else {
+      if (tmp_0 < -32768) {
+        tmp_0 = -32768;
+      }
+    }
+
+    tmp_0 -= rtb_Sum1;
+    if (tmp_0 > 32767) {
+      tmp_0 = 32767;
+    } else {
+      if (tmp_0 < -32768) {
+        tmp_0 = -32768;
+      }
+    }
+
+    rtb_Divide = (int16_T)rt_roundd_snf((real_T)tmp_0 / 4.0);
+    rtb_Sum1 = (int16_T)((int32_T)rt_roundd_snf((real_T)rtb_Sum1 / 2.0) +
+                         rtb_Divide);
+    rtb_Sum1_tmp = (int32_T)rt_roundd_snf((real_T)(int16_T)rtb_Sum1_tmp / 2.0) +
+      rtb_Sum1;
+    if (rtb_Sum1_tmp > 32767) {
+      rtb_Sum1_tmp = 32767;
+    } else {
+      if (rtb_Sum1_tmp < -32768) {
+        rtb_Sum1_tmp = -32768;
+      }
+    }
+
+    rtb_Divide7 = (int16_T)rtb_Sum1_tmp;
+    break;
+
+   case 2:
+    rtb_Sum1_tmp = (int16_T)rtU_Ts - rtb_Divide7;
+    if (rtb_Sum1_tmp > 32767) {
+      rtb_Sum1_tmp = 32767;
+    } else {
+      if (rtb_Sum1_tmp < -32768) {
+        rtb_Sum1_tmp = -32768;
+      }
+    }
+
+    rtb_Sum1_tmp -= rtb_SignPreIntegrator;
+    if (rtb_Sum1_tmp > 32767) {
+      rtb_Sum1_tmp = 32767;
+    } else {
+      if (rtb_Sum1_tmp < -32768) {
+        rtb_Sum1_tmp = -32768;
+      }
+    }
+
+    rtb_Divide = (int16_T)rt_roundd_snf((real_T)rtb_Sum1_tmp / 4.0);
+    rtb_Divide7 = (int16_T)((int32_T)rt_roundd_snf((real_T)rtb_Divide7 / 2.0) +
+      rtb_Divide);
+    rtb_Sum1_tmp = (int32_T)rt_roundd_snf((real_T)rtb_SignPreIntegrator / 2.0) +
+      rtb_Divide7;
+    if (rtb_Sum1_tmp > 32767) {
+      rtb_Sum1_tmp = 32767;
+    } else {
+      if (rtb_Sum1_tmp < -32768) {
+        rtb_Sum1_tmp = -32768;
+      }
+    }
+
+    rtb_Sum1 = (int16_T)rtb_Sum1_tmp;
+    break;
+
+   case 3:
+    rtb_Sum1_tmp = -rtb_Divide7;
+    if (-rtb_Divide7 > 32767) {
+      rtb_Sum1_tmp = 32767;
+    }
+
+    tmp_0 = (int16_T)rtU_Ts - rtb_Sum1;
+    if (tmp_0 > 32767) {
+      tmp_0 = 32767;
+    } else {
+      if (tmp_0 < -32768) {
+        tmp_0 = -32768;
+      }
+    }
+
+    tmp_0 -= (int16_T)rtb_Sum1_tmp;
+    if (tmp_0 > 32767) {
+      tmp_0 = 32767;
+    } else {
+      if (tmp_0 < -32768) {
+        tmp_0 = -32768;
+      }
+    }
+
+    rtb_Divide7 = (int16_T)rt_roundd_snf((real_T)tmp_0 / 4.0);
+    rtb_Divide = (int16_T)((int32_T)rt_roundd_snf((real_T)(int16_T)rtb_Sum1_tmp /
+      2.0) + rtb_Divide7);
+    rtb_Sum1_tmp = (int32_T)rt_roundd_snf((real_T)rtb_Sum1 / 2.0) + rtb_Divide;
+    if (rtb_Sum1_tmp > 32767) {
+      rtb_Sum1_tmp = 32767;
+    } else {
+      if (rtb_Sum1_tmp < -32768) {
+        rtb_Sum1_tmp = -32768;
+      }
+    }
+
+    rtb_Sum1 = (int16_T)rtb_Sum1_tmp;
+    break;
+
+   case 4:
+    rtb_Sum1_tmp = -rtb_Sum1;
+    if (-rtb_Sum1 > 32767) {
+      rtb_Sum1_tmp = 32767;
+    }
+
+    tmp_0 = (int16_T)rtU_Ts - (int16_T)rtb_Sum1_tmp;
+    if (tmp_0 > 32767) {
+      tmp_0 = 32767;
+    } else {
+      if (tmp_0 < -32768) {
+        tmp_0 = -32768;
+      }
+    }
+
+    tmp_0 -= rtb_SignPreIntegrator;
+    if (tmp_0 > 32767) {
+      tmp_0 = 32767;
+    } else {
+      if (tmp_0 < -32768) {
+        tmp_0 = -32768;
+      }
+    }
+
+    rtb_Divide7 = (int16_T)rt_roundd_snf((real_T)tmp_0 / 4.0);
+    rtb_Sum1 = (int16_T)((int32_T)rt_roundd_snf((real_T)rtb_SignPreIntegrator /
+      2.0) + rtb_Divide7);
+    rtb_Sum1_tmp = (int32_T)rt_roundd_snf((real_T)(int16_T)rtb_Sum1_tmp / 2.0) +
+      rtb_Sum1;
+    if (rtb_Sum1_tmp > 32767) {
+      rtb_Sum1_tmp = 32767;
+    } else {
+      if (rtb_Sum1_tmp < -32768) {
+        rtb_Sum1_tmp = -32768;
+      }
+    }
+
+    rtb_Divide = (int16_T)rtb_Sum1_tmp;
+    break;
+
+   case 5:
+    rtb_Sum1_tmp = -rtb_Divide7;
+    if (-rtb_Divide7 > 32767) {
+      rtb_Sum1_tmp = 32767;
+    }
+
+    tmp_0 = -rtb_SignPreIntegrator;
+    if (-rtb_SignPreIntegrator > 32767) {
+      tmp_0 = 32767;
+    }
+
+    tmp = (int16_T)rtU_Ts - (int16_T)rtb_Sum1_tmp;
+    if (tmp > 32767) {
+      tmp = 32767;
+    } else {
+      if (tmp < -32768) {
+        tmp = -32768;
+      }
+    }
+
+    tmp -= (int16_T)tmp_0;
+    if (tmp > 32767) {
+      tmp = 32767;
+    } else {
+      if (tmp < -32768) {
+        tmp = -32768;
+      }
+    }
+
+    rtb_Sum1 = (int16_T)rt_roundd_snf((real_T)tmp / 4.0);
+    rtb_Divide7 = (int16_T)((int32_T)rt_roundd_snf((real_T)(int16_T)tmp_0 / 2.0)
+      + rtb_Sum1);
+    rtb_Sum1_tmp = (int32_T)rt_roundd_snf((real_T)(int16_T)rtb_Sum1_tmp / 2.0) +
+      rtb_Divide7;
+    if (rtb_Sum1_tmp > 32767) {
+      rtb_Sum1_tmp = 32767;
+    } else {
+      if (rtb_Sum1_tmp < -32768) {
+        rtb_Sum1_tmp = -32768;
+      }
+    }
+
+    rtb_Divide = (int16_T)rtb_Sum1_tmp;
+    break;
+
+   default:
+    rtb_Sum1_tmp = -rtb_Sum1;
+    if (-rtb_Sum1 > 32767) {
+      rtb_Sum1_tmp = 32767;
+    }
+
+    tmp_0 = (int16_T)rtU_Ts - rtb_Divide7;
+    if (tmp_0 > 32767) {
+      tmp_0 = 32767;
+    } else {
+      if (tmp_0 < -32768) {
+        tmp_0 = -32768;
+      }
+    }
+
+    tmp_0 -= (int16_T)rtb_Sum1_tmp;
+    if (tmp_0 > 32767) {
+      tmp_0 = 32767;
+    } else {
+      if (tmp_0 < -32768) {
+        tmp_0 = -32768;
+      }
+    }
+
+    rtb_Sum1 = (int16_T)rt_roundd_snf((real_T)tmp_0 / 4.0);
+    rtb_Divide = (int16_T)((int32_T)rt_roundd_snf((real_T)(int16_T)rtb_Sum1_tmp /
+      2.0) + rtb_Sum1);
+    rtb_Sum1_tmp = (int32_T)rt_roundd_snf((real_T)rtb_Divide7 / 2.0) +
+      rtb_Divide;
+    if (rtb_Sum1_tmp > 32767) {
+      rtb_Sum1_tmp = 32767;
+    } else {
+      if (rtb_Sum1_tmp < -32768) {
+        rtb_Sum1_tmp = -32768;
+      }
+    }
+
+    rtb_Divide7 = (int16_T)rtb_Sum1_tmp;
+    break;
+  }
+
+  /* DataTypeConversion: '<S177>/Data Type Conversion3' incorporates:
+   *  MATLAB Function: '<S177>/phase_time'
+   */
+  rtb_DataTypeConversion3 = (uint16_T)rtb_Divide7;
+
+  /* MultiPortSwitch: '<S178>/Multiport Switch' incorporates:
+   *  DataTypeConversion: '<S177>/Data Type Conversion3'
+   *  DataTypeConversion: '<S177>/Data Type Conversion4'
+   *  DataTypeConversion: '<S177>/Data Type Conversion5'
+   *  MATLAB Function: '<S177>/phase_time'
+   */
+  switch (rtb_DataTypeConversion_a) {
+   case 1:
+    rtb_MultiportSwitch_idx_0 = (uint16_T)rtb_Divide7;
+    rtb_MultiportSwitch_idx_1 = (uint16_T)rtb_Sum1;
+    break;
+
+   case 2:
+    rtb_MultiportSwitch_idx_0 = (uint16_T)rtb_Sum1;
+    rtb_MultiportSwitch_idx_1 = (uint16_T)rtb_Divide7;
+    break;
+
+   case 3:
+    rtb_MultiportSwitch_idx_0 = (uint16_T)rtb_Sum1;
+    rtb_MultiportSwitch_idx_1 = (uint16_T)rtb_Divide;
+    break;
+
+   case 4:
+    rtb_MultiportSwitch_idx_0 = (uint16_T)rtb_Divide;
+    rtb_MultiportSwitch_idx_1 = (uint16_T)rtb_Sum1;
+    break;
+
+   case 5:
+    rtb_MultiportSwitch_idx_0 = (uint16_T)rtb_Divide;
+    rtb_MultiportSwitch_idx_1 = (uint16_T)rtb_Divide7;
+    break;
+
+   default:
+    rtb_MultiportSwitch_idx_0 = (uint16_T)rtb_Divide7;
+    rtb_MultiportSwitch_idx_1 = (uint16_T)rtb_Divide;
+    break;
+  }
+
+  /* End of MultiPortSwitch: '<S178>/Multiport Switch' */
+
+  /* Outport: '<Root>/pwm_counts' incorporates:
+   *  Constant: '<S178>/Constant'
+   *  Constant: '<S178>/Constant1'
+   *  Constant: '<S178>/Constant2'
+   *  Constant: '<S178>/Constant3'
+   *  MATLAB Function: '<S178>/Shunt_Three_Sample_Point'
+   *  Outport: '<Root>/sector'
+   */
+  Shunt_Three_Sample_Point(rtb_MultiportSwitch_idx_0, rtb_MultiportSwitch_idx_1,
+    rtb_DataTypeConversion_a, 4000, 10, 10, 10, &rtb_o_samp_p1, &rtY_pwm_counts
+    [7], rtY_sector);
+
+  /* DeadZone: '<S103>/DeadZone' incorporates:
+   *  Signum: '<S101>/SignPreSat'
+   */
+  if (rtb_SignPreSat_k > 8960) {
+    rtb_SignPreSat_k = (int16_T)(rtb_SignPreSat_k - 8960);
+  } else if (rtb_SignPreSat_k >= -8960) {
+    rtb_SignPreSat_k = 0;
+  } else {
+    rtb_SignPreSat_k = (int16_T)(rtb_SignPreSat_k - -8960);
+  }
+
+  /* End of DeadZone: '<S103>/DeadZone' */
+
+  /* RelationalOperator: '<S101>/NotEqual' incorporates:
+   *  Gain: '<S101>/ZeroGain'
+   *  Signum: '<S101>/SignPreSat'
+   */
+  rtb_NotEqual = (0 != rtb_SignPreSat_k);
+
+  /* Signum: '<S101>/SignPreSat' */
+  if (rtb_SignPreSat_k < 0) {
+    rtb_SignPreSat_k = -1;
+  } else {
+    rtb_SignPreSat_k = (int16_T)(rtb_SignPreSat_k > 0);
+  }
+
+  /* End of Signum: '<S101>/SignPreSat' */
+
+  /* Gain: '<S107>/Integral Gain' incorporates:
+   *  Gain: '<S57>/Integral Gain'
+   *  Sum: '<S16>/Sum2'
+   */
+  rtb_Divide7 = (int16_T)(1080 * rtb_Sum2);
+
+  /* Signum: '<S101>/SignPreIntegrator' incorporates:
+   *  Gain: '<S57>/Integral Gain'
+   */
+  if (rtb_Divide7 < 0) {
+    rtb_Divide4 = -1;
+  } else {
+    rtb_Divide4 = (int16_T)(rtb_Divide7 > 0);
+  }
+
+  /* End of Signum: '<S101>/SignPreIntegrator' */
+
+  /* Switch: '<S101>/Switch' incorporates:
+   *  Constant: '<S101>/Constant1'
+   *  DataTypeConversion: '<S101>/DataTypeConv1'
+   *  DataTypeConversion: '<S101>/DataTypeConv2'
+   *  Gain: '<S57>/Integral Gain'
+   *  Logic: '<S101>/AND3'
+   *  RelationalOperator: '<S101>/Equal1'
+   */
+  if (rtb_NotEqual && (rtb_SignPreSat_k == rtb_Divide4)) {
+    rtb_Sum2 = 0;
+  } else {
+    rtb_Sum2 = rtb_Divide7;
+  }
+
+  /* End of Switch: '<S101>/Switch' */
+
+  /* DeadZone: '<S153>/DeadZone' incorporates:
+   *  Signum: '<S151>/SignPreSat'
+   */
+  if (rtb_SignPreSat > 800) {
+    rtb_SignPreSat = (int16_T)(rtb_SignPreSat - 800);
+  } else if (rtb_SignPreSat >= -800) {
+    rtb_SignPreSat = 0;
+  } else {
+    rtb_SignPreSat = (int16_T)(rtb_SignPreSat - -800);
+  }
+
+  /* End of DeadZone: '<S153>/DeadZone' */
+
+  /* RelationalOperator: '<S151>/NotEqual' incorporates:
+   *  Gain: '<S151>/ZeroGain'
+   *  Signum: '<S151>/SignPreSat'
+   */
+  rtb_NotEqual = (0 != rtb_SignPreSat);
+
+  /* Signum: '<S151>/SignPreSat' */
+  if (rtb_SignPreSat < 0) {
+    rtb_SignPreSat = -1;
+  } else {
+    rtb_SignPreSat = (int16_T)(rtb_SignPreSat > 0);
+  }
+
+  /* End of Signum: '<S151>/SignPreSat' */
+
+  /* Gain: '<S157>/Integral Gain' incorporates:
+   *  Gain: '<S57>/Integral Gain'
+   */
+  rtb_Divide7 = (int16_T)((int16_T)(200 * rtb_Sum3_l) << 4);
+
+  /* Signum: '<S151>/SignPreIntegrator' incorporates:
+   *  Gain: '<S57>/Integral Gain'
+   */
+  if (rtb_Divide7 < 0) {
+    rtb_Divide4 = -1;
+  } else {
+    rtb_Divide4 = (int16_T)(rtb_Divide7 > 0);
+  }
+
+  /* End of Signum: '<S151>/SignPreIntegrator' */
+
+  /* Switch: '<S151>/Switch' incorporates:
+   *  Constant: '<S151>/Constant1'
+   *  DataTypeConversion: '<S151>/DataTypeConv1'
+   *  DataTypeConversion: '<S151>/DataTypeConv2'
+   *  Gain: '<S57>/Integral Gain'
+   *  Logic: '<S151>/AND3'
+   *  RelationalOperator: '<S151>/Equal1'
+   */
+  if (rtb_NotEqual && (rtb_SignPreSat == rtb_Divide4)) {
+    rtb_Sum3_l = 0;
+  } else {
+    rtb_Sum3_l = rtb_Divide7;
+  }
+
+  /* End of Switch: '<S151>/Switch' */
+
+  /* DeadZone: '<S53>/DeadZone' incorporates:
+   *  Signum: '<S51>/SignPreSat'
+   */
+  if (rtb_Multiply_idx_1 > 8960) {
+    rtb_Multiply_idx_1 = (int16_T)(rtb_Multiply_idx_1 - 8960);
+  } else if (rtb_Multiply_idx_1 >= -8960) {
+    rtb_Multiply_idx_1 = 0;
+  } else {
+    rtb_Multiply_idx_1 = (int16_T)(rtb_Multiply_idx_1 - -8960);
+  }
+
+  /* End of DeadZone: '<S53>/DeadZone' */
+
+  /* RelationalOperator: '<S51>/NotEqual' incorporates:
+   *  Gain: '<S51>/ZeroGain'
+   *  Signum: '<S51>/SignPreSat'
+   */
+  rtb_NotEqual = (0 != rtb_Multiply_idx_1);
+
+  /* Signum: '<S51>/SignPreSat' */
+  if (rtb_Multiply_idx_1 < 0) {
+    rtb_Multiply_idx_1 = -1;
+  } else {
+    rtb_Multiply_idx_1 = (int16_T)(rtb_Multiply_idx_1 > 0);
+  }
+
+  /* End of Signum: '<S51>/SignPreSat' */
+
+  /* Gain: '<S57>/Integral Gain' incorporates:
+   *  Sum: '<S16>/Sum1'
+   */
+  rtb_Divide7 = (int16_T)(1071 * (int16_T)-rtb_Multiply_idx_0);
+
+  /* Update for UnitDelay: '<S21>/UnitDelay1' incorporates:
+   *  Sum: '<S21>/Sum3'
+   */
+  rtDW->UnitDelay1_DSTATE[0] = rtb_Sum3_idx_0;
+  rtDW->UnitDelay1_DSTATE[1] = rtb_Sum3_idx_1;
+
+  /* Signum: '<S51>/SignPreIntegrator' incorporates:
+   *  Gain: '<S57>/Integral Gain'
+   */
+  if (rtb_Divide7 < 0) {
+    rtb_Divide4 = -1;
+  } else {
+    rtb_Divide4 = (int16_T)(rtb_Divide7 > 0);
+  }
+
+  /* End of Signum: '<S51>/SignPreIntegrator' */
+
+  /* Switch: '<S51>/Switch' incorporates:
+   *  Constant: '<S51>/Constant1'
+   *  DataTypeConversion: '<S51>/DataTypeConv1'
+   *  DataTypeConversion: '<S51>/DataTypeConv2'
+   *  Logic: '<S51>/AND3'
+   *  RelationalOperator: '<S51>/Equal1'
+   */
+  if (rtb_NotEqual && (rtb_Multiply_idx_1 == rtb_Divide4)) {
+    rtb_Divide7 = 0;
+  }
+
+  /* End of Switch: '<S51>/Switch' */
+
+  /* Update for DiscreteIntegrator: '<S60>/Integrator' */
+  rtDW->Integrator_DSTATE += rtb_Divide7;
+
+  /* Update for DiscreteIntegrator: '<S160>/Integrator' incorporates:
+   *  Switch: '<S151>/Switch'
+   */
+  rtDW->Integrator_DSTATE_i += rtb_Sum3_l;
+
+  /* Update for DiscreteIntegrator: '<S110>/Integrator' incorporates:
+   *  Switch: '<S101>/Switch'
+   */
+  rtDW->Integrator_DSTATE_p += rtb_Sum2;
+
+  /* End of Outputs for SubSystem: '<S1>/controller' */
+
+  /* Outport: '<Root>/pwm_counts' incorporates:
+   *  DataTypeConversion: '<S177>/Data Type Conversion4'
+   *  DataTypeConversion: '<S177>/Data Type Conversion5'
+   *  MATLAB Function: '<S177>/phase_time'
+   */
+  rtY_pwm_counts[0] = rtb_DataTypeConversion3;
+
+  /* Outputs for Atomic SubSystem: '<S1>/controller' */
+  rtY_pwm_counts[1] = (uint16_T)rtb_Sum1;
+  rtY_pwm_counts[2] = (uint16_T)rtb_Divide;
+
+  /* End of Outputs for SubSystem: '<S1>/controller' */
+  rtY_pwm_counts[3] = rtb_DataTypeConversion3;
+
+  /* Outputs for Atomic SubSystem: '<S1>/controller' */
+  rtY_pwm_counts[4] = (uint16_T)rtb_Sum1;
+  rtY_pwm_counts[5] = (uint16_T)rtb_Divide;
+
+  /* End of Outputs for SubSystem: '<S1>/controller' */
+  rtY_pwm_counts[6] = rtb_o_samp_p1;
+  rate_scheduler(rtM);
+}
+
+/* Model initialize function */
+void PMSM_Controller_initialize(RT_MODEL *const rtM)
+{
+  /* Registration code */
+
+  /* initialize non-finites */
+  rt_InitInfAndNaN(sizeof(real_T));
+  UNUSED_PARAMETER(rtM);
+}
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

+ 431 - 0
Simulink/PMSM_Controller_ert_rtw/PMSM_Controller.h

@@ -0,0 +1,431 @@
+/*
+ * File: PMSM_Controller.h
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+#ifndef RTW_HEADER_PMSM_Controller_h_
+#define RTW_HEADER_PMSM_Controller_h_
+#include <float.h>
+#include <math.h>
+#ifndef PMSM_Controller_COMMON_INCLUDES_
+#define PMSM_Controller_COMMON_INCLUDES_
+#include "rtwtypes.h"
+#endif                                 /* PMSM_Controller_COMMON_INCLUDES_ */
+
+#include "PMSM_Controller_types.h"
+
+/* Child system includes */
+#include "Shunt_Three_Sample_Point.h"
+#include "rt_nonfinite.h"
+#include "rtGetInf.h"
+#include "rt_defines.h"
+
+/* Macros for accessing real-time model data structure */
+#ifndef rtmGetErrorStatus
+#define rtmGetErrorStatus(rtm)         ((rtm)->errorStatus)
+#endif
+
+#ifndef rtmSetErrorStatus
+#define rtmSetErrorStatus(rtm, val)    ((rtm)->errorStatus = (val))
+#endif
+
+/* Block signals and states (default storage) for system '<Root>' */
+typedef struct {
+  int32_T UnitDelay1_DSTATE[2];        /* '<S21>/UnitDelay1' */
+  int16_T Integrator_DSTATE;           /* '<S60>/Integrator' */
+  int16_T Integrator_DSTATE_i;         /* '<S160>/Integrator' */
+  int16_T Integrator_DSTATE_p;         /* '<S110>/Integrator' */
+} DW;
+
+/* Constant parameters (default storage) */
+typedef struct {
+  /* Computed Parameter: r_sin_M1_Table
+   * Referenced by: '<S23>/r_sin_M1'
+   */
+  int16_T r_sin_M1_Table[361];
+
+  /* Computed Parameter: r_cos_M1_Table
+   * Referenced by: '<S23>/r_cos_M1'
+   */
+  int16_T r_cos_M1_Table[361];
+} ConstP;
+
+/* Real-time Model Data Structure */
+struct tag_RTM {
+  const char_T * volatile errorStatus;
+  DW *dwork;
+
+  /*
+   * Timing:
+   * The following substructure contains information regarding
+   * the timing information for the model.
+   */
+  struct {
+    struct {
+      uint8_T TID[2];
+    } TaskCounters;
+  } Timing;
+};
+
+/* Constant parameters (default storage) */
+extern const ConstP rtConstP;
+
+/* Model entry point functions */
+extern void PMSM_Controller_initialize(RT_MODEL *const rtM);
+extern void PMSM_Controller_step(RT_MODEL *const rtM, int16_T rtU_Vdc, uint16_T
+  rtU_Ts, int16_T rtU_adc_a, int16_T rtU_adc_b, real_T rtU_rotor_angle, int16_T
+  rtU_rotor_speed, int16_T rtU_input_target, uint16_T rtY_pwm_counts[8], uint8_T
+  *rtY_sector);
+
+/*-
+ * These blocks were eliminated from the model due to optimizations:
+ *
+ * Block '<S1>/Abs1' : Unused code path elimination
+ * Block '<S2>/Scope' : Unused code path elimination
+ * Block '<S7>/Scope' : Unused code path elimination
+ * Block '<S3>/Scope' : Unused code path elimination
+ * Block '<S10>/Relational Operator9' : Unused code path elimination
+ * Block '<S10>/Scope1' : Unused code path elimination
+ * Block '<S10>/Scope2' : Unused code path elimination
+ * Block '<S10>/n_stdStillDet' : Unused code path elimination
+ * Block '<S12>/Abs5' : Unused code path elimination
+ * Block '<S12>/Divide1' : Unused code path elimination
+ * Block '<S12>/Divide14' : Unused code path elimination
+ * Block '<S12>/Divide2' : Unused code path elimination
+ * Block '<S12>/Divide3' : Unused code path elimination
+ * Block '<S13>/Data Type Duplicate' : Unused code path elimination
+ * Block '<S13>/Data Type Propagation' : Unused code path elimination
+ * Block '<S13>/LowerRelop1' : Unused code path elimination
+ * Block '<S13>/Switch' : Unused code path elimination
+ * Block '<S13>/Switch2' : Unused code path elimination
+ * Block '<S13>/UpperRelop' : Unused code path elimination
+ * Block '<S14>/Data Type Duplicate' : Unused code path elimination
+ * Block '<S14>/Data Type Propagation' : Unused code path elimination
+ * Block '<S14>/LowerRelop1' : Unused code path elimination
+ * Block '<S14>/Switch' : Unused code path elimination
+ * Block '<S14>/Switch2' : Unused code path elimination
+ * Block '<S14>/UpperRelop' : Unused code path elimination
+ * Block '<S12>/Sum1' : Unused code path elimination
+ * Block '<S12>/Sum2' : Unused code path elimination
+ * Block '<S12>/Sum3' : Unused code path elimination
+ * Block '<S12>/Sum4' : Unused code path elimination
+ * Block '<S12>/id_fieldWeakMax' : Unused code path elimination
+ * Block '<S12>/n_fieldWeakAuthHi' : Unused code path elimination
+ * Block '<S12>/n_fieldWeakAuthLo' : Unused code path elimination
+ * Block '<S12>/r_fieldWeakHi' : Unused code path elimination
+ * Block '<S12>/r_fieldWeakLo' : Unused code path elimination
+ * Block '<S1>/Scope' : Unused code path elimination
+ * Block '<S1>/Scope1' : Unused code path elimination
+ * Block '<S5>/Gain6' : Unused code path elimination
+ * Block '<S17>/Abs5' : Unused code path elimination
+ * Block '<S17>/Constant' : Unused code path elimination
+ * Block '<S17>/Constant1' : Unused code path elimination
+ * Block '<S17>/Divide1' : Unused code path elimination
+ * Block '<S17>/Divide4' : Unused code path elimination
+ * Block '<S17>/Gain1' : Unused code path elimination
+ * Block '<S17>/Gain3' : Unused code path elimination
+ * Block '<S17>/Gain4' : Unused code path elimination
+ * Block '<S17>/Gain5' : Unused code path elimination
+ * Block '<S17>/Vd_max1' : Unused code path elimination
+ * Block '<S17>/Vq_max_M1' : Unused code path elimination
+ * Block '<S17>/Vq_max_XA' : Unused code path elimination
+ * Block '<S17>/i_max' : Unused code path elimination
+ * Block '<S17>/iq_maxSca_M1' : Unused code path elimination
+ * Block '<S17>/iq_maxSca_XA' : Unused code path elimination
+ * Block '<S17>/n_max1' : Unused code path elimination
+ * Block '<S178>/Scope' : Unused code path elimination
+ * Block '<S5>/Scope1' : Unused code path elimination
+ * Block '<S5>/Scope12' : Unused code path elimination
+ * Block '<S5>/UnitDelay4' : Unused code path elimination
+ * Block '<S2>/Signal Conversion2' : Eliminate redundant signal conversion block
+ * Block '<S1>/hall_motor_angel_choice' : Eliminated due to constant selection input
+ * Block '<S1>/hall_motor_speed_choice' : Eliminated due to constant selection input
+ * Block '<S2>/AND' : Unused code path elimination
+ * Block '<S2>/Constant1' : Unused code path elimination
+ * Block '<S2>/Constant16' : Unused code path elimination
+ * Block '<S2>/Constant2' : Unused code path elimination
+ * Block '<S2>/Divide1' : Unused code path elimination
+ * Block '<S2>/Divide2' : Unused code path elimination
+ * Block '<S2>/Divide3' : Unused code path elimination
+ * Block '<S2>/MinMax' : Unused code path elimination
+ * Block '<S2>/MinMax1' : Unused code path elimination
+ * Block '<S2>/NOT' : Unused code path elimination
+ * Block '<S2>/Relational Operator7' : Unused code path elimination
+ * Block '<S2>/Sum1' : Unused code path elimination
+ * Block '<S2>/Sum3' : Unused code path elimination
+ * Block '<S2>/Switch2' : Unused code path elimination
+ * Block '<S2>/Switch3' : Unused code path elimination
+ * Block '<S2>/a_elecAngle1' : Unused code path elimination
+ * Block '<S6>/Add2' : Unused code path elimination
+ * Block '<S6>/Constant1' : Unused code path elimination
+ * Block '<S6>/Constant2' : Unused code path elimination
+ * Block '<S6>/Math Function' : Unused code path elimination
+ * Block '<S2>/ÊÇ·ñ·½²¨Æô¶¯' : Unused code path elimination
+ * Block '<S7>/Constant20' : Unused code path elimination
+ * Block '<S7>/Constant23' : Unused code path elimination
+ * Block '<S7>/Constant24' : Unused code path elimination
+ * Block '<S7>/Constant8' : Unused code path elimination
+ * Block '<S7>/Logical Operator3' : Unused code path elimination
+ * Block '<S7>/Relational Operator1' : Unused code path elimination
+ * Block '<S7>/Relational Operator6' : Unused code path elimination
+ * Block '<S7>/Sum2' : Unused code path elimination
+ * Block '<S7>/Switch2' : Unused code path elimination
+ * Block '<S7>/UnitDelay2' : Unused code path elimination
+ * Block '<S7>/UnitDelay3' : Unused code path elimination
+ * Block '<S9>/Add' : Unused code path elimination
+ * Block '<S9>/Gain' : Unused code path elimination
+ * Block '<S9>/Gain1' : Unused code path elimination
+ * Block '<S9>/Selector' : Unused code path elimination
+ * Block '<S9>/vec_hallToPos' : Unused code path elimination
+ * Block '<S10>/Abs5' : Unused code path elimination
+ * Block '<S10>/Constant4' : Unused code path elimination
+ * Block '<S10>/Logical Operator1' : Unused code path elimination
+ * Block '<S10>/Logical Operator2' : Unused code path elimination
+ * Block '<S10>/Logical Operator3' : Unused code path elimination
+ * Block '<S11>/Abs2' : Unused code path elimination
+ * Block '<S11>/Constant4' : Unused code path elimination
+ * Block '<S11>/Divide11' : Unused code path elimination
+ * Block '<S11>/Divide13' : Unused code path elimination
+ * Block '<S11>/Divide14' : Unused code path elimination
+ * Block '<S11>/Logical Operator1' : Unused code path elimination
+ * Block '<S11>/Relational Operator4' : Unused code path elimination
+ * Block '<S11>/Sum13' : Unused code path elimination
+ * Block '<S11>/Sum7' : Unused code path elimination
+ * Block '<S11>/Switch1' : Unused code path elimination
+ * Block '<S11>/Switch2' : Unused code path elimination
+ * Block '<S11>/Switch3' : Unused code path elimination
+ * Block '<S11>/UnitDelay1' : Unused code path elimination
+ * Block '<S11>/UnitDelay2' : Unused code path elimination
+ * Block '<S11>/UnitDelay3' : Unused code path elimination
+ * Block '<S11>/UnitDelay4' : Unused code path elimination
+ * Block '<S11>/UnitDelay5' : Unused code path elimination
+ * Block '<S11>/cf_speedCoef' : Unused code path elimination
+ * Block '<S11>/dz_cntTrnsDet' : Unused code path elimination
+ * Block '<S11>/g_Ha' : Unused code path elimination
+ * Block '<S10>/Relational Operator2' : Unused code path elimination
+ * Block '<S10>/Switch2' : Unused code path elimination
+ * Block '<S10>/UnitDelay4' : Unused code path elimination
+ * Block '<S10>/b_angleMeasEna' : Unused code path elimination
+ * Block '<S10>/n_commDeacv' : Unused code path elimination
+ * Block '<S10>/z_maxCntRst' : Unused code path elimination
+ */
+
+/*-
+ * The generated code includes comments that allow you to trace directly
+ * back to the appropriate location in the model.  The basic format
+ * is <system>/block_name, where system is the system number (uniquely
+ * assigned by Simulink) and block_name is the name of the block.
+ *
+ * Note that this particular code originates from a subsystem build,
+ * and has its own system numbers different from the parent model.
+ * Refer to the system hierarchy for this subsystem below, and use the
+ * MATLAB hilite_system command to trace the generated code back
+ * to the parent model.  For example,
+ *
+ * hilite_system('MotorController_FOC/PMSM_Controller')    - opens subsystem MotorController_FOC/PMSM_Controller
+ * hilite_system('MotorController_FOC/PMSM_Controller/Kp') - opens and selects block Kp
+ *
+ * Here is the system hierarchy for this model
+ *
+ * '<Root>' : 'MotorController_FOC'
+ * '<S1>'   : 'MotorController_FOC/PMSM_Controller'
+ * '<S2>'   : 'MotorController_FOC/PMSM_Controller/Electrical_Angle_Estimation'
+ * '<S3>'   : 'MotorController_FOC/PMSM_Controller/Electrical_Speed_Estimation'
+ * '<S4>'   : 'MotorController_FOC/PMSM_Controller/Field_Weakening_Enabled'
+ * '<S5>'   : 'MotorController_FOC/PMSM_Controller/controller'
+ * '<S6>'   : 'MotorController_FOC/PMSM_Controller/Electrical_Angle_Estimation/degree_rad'
+ * '<S7>'   : 'MotorController_FOC/PMSM_Controller/Electrical_Speed_Estimation/Direction_Detection'
+ * '<S8>'   : 'MotorController_FOC/PMSM_Controller/Electrical_Speed_Estimation/Edge_Detect'
+ * '<S9>'   : 'MotorController_FOC/PMSM_Controller/Electrical_Speed_Estimation/Hall_Angle_Raw'
+ * '<S10>'  : 'MotorController_FOC/PMSM_Controller/Electrical_Speed_Estimation/Speed_Estimation'
+ * '<S11>'  : 'MotorController_FOC/PMSM_Controller/Electrical_Speed_Estimation/Speed_Estimation/Raw_Motor_Speed_Estimation'
+ * '<S12>'  : 'MotorController_FOC/PMSM_Controller/Field_Weakening_Enabled/Field_Weakening'
+ * '<S13>'  : 'MotorController_FOC/PMSM_Controller/Field_Weakening_Enabled/Field_Weakening/Saturation Dynamic'
+ * '<S14>'  : 'MotorController_FOC/PMSM_Controller/Field_Weakening_Enabled/Field_Weakening/Saturation Dynamic1'
+ * '<S15>'  : 'MotorController_FOC/PMSM_Controller/controller/Clarke_Park_Transform_Forward'
+ * '<S16>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC'
+ * '<S17>'  : 'MotorController_FOC/PMSM_Controller/controller/Motor_Limitations_Enabled'
+ * '<S18>'  : 'MotorController_FOC/PMSM_Controller/controller/Park_Transform_Inverse'
+ * '<S19>'  : 'MotorController_FOC/PMSM_Controller/controller/SVM'
+ * '<S20>'  : 'MotorController_FOC/PMSM_Controller/controller/Clarke_Park_Transform_Forward/Clarke'
+ * '<S21>'  : 'MotorController_FOC/PMSM_Controller/controller/Clarke_Park_Transform_Forward/LowPassFilter'
+ * '<S22>'  : 'MotorController_FOC/PMSM_Controller/controller/Clarke_Park_Transform_Forward/Park'
+ * '<S23>'  : 'MotorController_FOC/PMSM_Controller/controller/Clarke_Park_Transform_Forward/Sine_Cosine_Approximation'
+ * '<S24>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id'
+ * '<S25>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq'
+ * '<S26>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed'
+ * '<S27>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Anti-windup'
+ * '<S28>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/D Gain'
+ * '<S29>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Filter'
+ * '<S30>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Filter ICs'
+ * '<S31>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/I Gain'
+ * '<S32>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Ideal P Gain'
+ * '<S33>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Ideal P Gain Fdbk'
+ * '<S34>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Integrator'
+ * '<S35>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Integrator ICs'
+ * '<S36>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/N Copy'
+ * '<S37>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/N Gain'
+ * '<S38>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/P Copy'
+ * '<S39>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Parallel P Gain'
+ * '<S40>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Reset Signal'
+ * '<S41>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Saturation'
+ * '<S42>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Saturation Fdbk'
+ * '<S43>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Sum'
+ * '<S44>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Sum Fdbk'
+ * '<S45>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tracking Mode'
+ * '<S46>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tracking Mode Sum'
+ * '<S47>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tsamp - Integral'
+ * '<S48>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tsamp - Ngain'
+ * '<S49>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/postSat Signal'
+ * '<S50>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/preSat Signal'
+ * '<S51>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Anti-windup/Disc. Clamping Parallel'
+ * '<S52>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Anti-windup/Disc. Clamping Parallel/Dead Zone'
+ * '<S53>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Anti-windup/Disc. Clamping Parallel/Dead Zone/Enabled'
+ * '<S54>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/D Gain/Disabled'
+ * '<S55>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Filter/Disabled'
+ * '<S56>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Filter ICs/Disabled'
+ * '<S57>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/I Gain/Internal Parameters'
+ * '<S58>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Ideal P Gain/Passthrough'
+ * '<S59>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Ideal P Gain Fdbk/Disabled'
+ * '<S60>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Integrator/Discrete'
+ * '<S61>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Integrator ICs/Internal IC'
+ * '<S62>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/N Copy/Disabled wSignal Specification'
+ * '<S63>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/N Gain/Disabled'
+ * '<S64>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/P Copy/Disabled'
+ * '<S65>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Parallel P Gain/Internal Parameters'
+ * '<S66>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Reset Signal/Disabled'
+ * '<S67>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Saturation/Enabled'
+ * '<S68>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Saturation Fdbk/Disabled'
+ * '<S69>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Sum/Sum_PI'
+ * '<S70>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Sum Fdbk/Disabled'
+ * '<S71>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tracking Mode/Disabled'
+ * '<S72>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tracking Mode Sum/Passthrough'
+ * '<S73>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tsamp - Integral/Passthrough'
+ * '<S74>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tsamp - Ngain/Passthrough'
+ * '<S75>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/postSat Signal/Forward_Path'
+ * '<S76>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/preSat Signal/Forward_Path'
+ * '<S77>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Anti-windup'
+ * '<S78>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/D Gain'
+ * '<S79>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Filter'
+ * '<S80>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Filter ICs'
+ * '<S81>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/I Gain'
+ * '<S82>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Ideal P Gain'
+ * '<S83>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Ideal P Gain Fdbk'
+ * '<S84>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Integrator'
+ * '<S85>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Integrator ICs'
+ * '<S86>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/N Copy'
+ * '<S87>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/N Gain'
+ * '<S88>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/P Copy'
+ * '<S89>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Parallel P Gain'
+ * '<S90>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Reset Signal'
+ * '<S91>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Saturation'
+ * '<S92>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Saturation Fdbk'
+ * '<S93>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Sum'
+ * '<S94>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Sum Fdbk'
+ * '<S95>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tracking Mode'
+ * '<S96>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tracking Mode Sum'
+ * '<S97>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tsamp - Integral'
+ * '<S98>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tsamp - Ngain'
+ * '<S99>'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/postSat Signal'
+ * '<S100>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/preSat Signal'
+ * '<S101>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Anti-windup/Disc. Clamping Parallel'
+ * '<S102>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Anti-windup/Disc. Clamping Parallel/Dead Zone'
+ * '<S103>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Anti-windup/Disc. Clamping Parallel/Dead Zone/Enabled'
+ * '<S104>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/D Gain/Disabled'
+ * '<S105>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Filter/Disabled'
+ * '<S106>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Filter ICs/Disabled'
+ * '<S107>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/I Gain/Internal Parameters'
+ * '<S108>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Ideal P Gain/Passthrough'
+ * '<S109>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Ideal P Gain Fdbk/Disabled'
+ * '<S110>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Integrator/Discrete'
+ * '<S111>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Integrator ICs/Internal IC'
+ * '<S112>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/N Copy/Disabled wSignal Specification'
+ * '<S113>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/N Gain/Disabled'
+ * '<S114>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/P Copy/Disabled'
+ * '<S115>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Parallel P Gain/Internal Parameters'
+ * '<S116>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Reset Signal/Disabled'
+ * '<S117>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Saturation/Enabled'
+ * '<S118>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Saturation Fdbk/Disabled'
+ * '<S119>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Sum/Sum_PI'
+ * '<S120>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Sum Fdbk/Disabled'
+ * '<S121>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tracking Mode/Disabled'
+ * '<S122>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tracking Mode Sum/Passthrough'
+ * '<S123>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tsamp - Integral/Passthrough'
+ * '<S124>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tsamp - Ngain/Passthrough'
+ * '<S125>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/postSat Signal/Forward_Path'
+ * '<S126>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/preSat Signal/Forward_Path'
+ * '<S127>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Anti-windup'
+ * '<S128>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/D Gain'
+ * '<S129>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Filter'
+ * '<S130>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Filter ICs'
+ * '<S131>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/I Gain'
+ * '<S132>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Ideal P Gain'
+ * '<S133>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Ideal P Gain Fdbk'
+ * '<S134>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Integrator'
+ * '<S135>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Integrator ICs'
+ * '<S136>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/N Copy'
+ * '<S137>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/N Gain'
+ * '<S138>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/P Copy'
+ * '<S139>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Parallel P Gain'
+ * '<S140>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Reset Signal'
+ * '<S141>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Saturation'
+ * '<S142>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Saturation Fdbk'
+ * '<S143>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Sum'
+ * '<S144>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Sum Fdbk'
+ * '<S145>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tracking Mode'
+ * '<S146>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tracking Mode Sum'
+ * '<S147>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tsamp - Integral'
+ * '<S148>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tsamp - Ngain'
+ * '<S149>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/postSat Signal'
+ * '<S150>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/preSat Signal'
+ * '<S151>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Anti-windup/Disc. Clamping Parallel'
+ * '<S152>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Anti-windup/Disc. Clamping Parallel/Dead Zone'
+ * '<S153>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Anti-windup/Disc. Clamping Parallel/Dead Zone/Enabled'
+ * '<S154>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/D Gain/Disabled'
+ * '<S155>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Filter/Disabled'
+ * '<S156>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Filter ICs/Disabled'
+ * '<S157>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/I Gain/Internal Parameters'
+ * '<S158>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Ideal P Gain/Passthrough'
+ * '<S159>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Ideal P Gain Fdbk/Disabled'
+ * '<S160>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Integrator/Discrete'
+ * '<S161>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Integrator ICs/Internal IC'
+ * '<S162>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/N Copy/Disabled wSignal Specification'
+ * '<S163>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/N Gain/Disabled'
+ * '<S164>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/P Copy/Disabled'
+ * '<S165>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Parallel P Gain/Internal Parameters'
+ * '<S166>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Reset Signal/Disabled'
+ * '<S167>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Saturation/Enabled'
+ * '<S168>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Saturation Fdbk/Disabled'
+ * '<S169>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Sum/Sum_PI'
+ * '<S170>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Sum Fdbk/Disabled'
+ * '<S171>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tracking Mode/Disabled'
+ * '<S172>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tracking Mode Sum/Passthrough'
+ * '<S173>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tsamp - Integral/Passthrough'
+ * '<S174>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tsamp - Ngain/Passthrough'
+ * '<S175>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/postSat Signal/Forward_Path'
+ * '<S176>' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/preSat Signal/Forward_Path'
+ * '<S177>' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM'
+ * '<S178>' : 'MotorController_FOC/PMSM_Controller/controller/SVM/Sample_Control'
+ * '<S179>' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM/phase_time'
+ * '<S180>' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM/sector_select'
+ * '<S181>' : 'MotorController_FOC/PMSM_Controller/controller/SVM/Sample_Control/Shunt_Three_Sample_Point'
+ */
+#endif                                 /* RTW_HEADER_PMSM_Controller_h_ */
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

+ 426 - 0
Simulink/PMSM_Controller_ert_rtw/PMSM_Controller.mk

@@ -0,0 +1,426 @@
+###########################################################################
+## Makefile generated for component 'PMSM_Controller'. 
+## 
+## Makefile     : PMSM_Controller.mk
+## Generated on : Tue Jan 04 17:22:17 2022
+## Final product: $(RELATIVE_PATH_TO_ANCHOR)\PMSM_Controller.exe
+## Product type : executable
+## 
+###########################################################################
+
+###########################################################################
+## MACROS
+###########################################################################
+
+# Macro Descriptions:
+# PRODUCT_NAME            Name of the system to build
+# MAKEFILE                Name of this makefile
+# COMPILER_COMMAND_FILE   Compiler command listing model reference header paths
+# CMD_FILE                Command file
+
+PRODUCT_NAME              = PMSM_Controller
+MAKEFILE                  = PMSM_Controller.mk
+MATLAB_ROOT               = D:\Program Files\R2020b
+MATLAB_BIN                = D:\Program Files\R2020b\bin
+MATLAB_ARCH_BIN           = $(MATLAB_BIN)\win64
+START_DIR                 = E:\works\mcu\MC100\Simulink
+SOLVER                    = 
+SOLVER_OBJ                = 
+CLASSIC_INTERFACE         = 0
+TGT_FCN_LIB               = ISO_C
+MODEL_HAS_DYNAMICALLY_LOADED_SFCNS = 0
+RELATIVE_PATH_TO_ANCHOR   = ..
+COMPILER_COMMAND_FILE     = PMSM_Controller_comp.rsp
+CMD_FILE                  = PMSM_Controller.rsp
+C_STANDARD_OPTS           = 
+CPP_STANDARD_OPTS         = 
+NODEBUG                   = 1
+
+###########################################################################
+## TOOLCHAIN SPECIFICATIONS
+###########################################################################
+
+# Toolchain Name:          Microsoft Visual C++ 2019 v16.0 | nmake (64-bit Windows)
+# Supported Version(s):    16.0
+# ToolchainInfo Version:   2020b
+# Specification Revision:  1.0
+# 
+#-------------------------------------------
+# Macros assumed to be defined elsewhere
+#-------------------------------------------
+
+# NODEBUG
+# cvarsdll
+# cvarsmt
+# conlibsmt
+# ldebug
+# conflags
+# cflags
+
+#-----------
+# MACROS
+#-----------
+
+MW_EXTERNLIB_DIR    = $(MATLAB_ROOT)\extern\lib\win64\microsoft
+MW_LIB_DIR          = $(MATLAB_ROOT)\lib\win64
+CPU                 = AMD64
+APPVER              = 5.02
+CVARSFLAG           = $(cvarsmt)
+CFLAGS_ADDITIONAL   = -D_CRT_SECURE_NO_WARNINGS
+CPPFLAGS_ADDITIONAL = -EHs -D_CRT_SECURE_NO_WARNINGS /wd4251
+LIBS_TOOLCHAIN      = $(conlibs)
+
+TOOLCHAIN_SRCS = 
+TOOLCHAIN_INCS = 
+TOOLCHAIN_LIBS = 
+
+#------------------------
+# BUILD TOOL COMMANDS
+#------------------------
+
+# C Compiler: Microsoft Visual C Compiler
+CC = cl
+
+# Linker: Microsoft Visual C Linker
+LD = link
+
+# C++ Compiler: Microsoft Visual C++ Compiler
+CPP = cl
+
+# C++ Linker: Microsoft Visual C++ Linker
+CPP_LD = link
+
+# Archiver: Microsoft Visual C/C++ Archiver
+AR = lib
+
+# MEX Tool: MEX Tool
+MEX_PATH = $(MATLAB_ARCH_BIN)
+MEX = "$(MEX_PATH)\mex"
+
+# Download: Download
+DOWNLOAD =
+
+# Execute: Execute
+EXECUTE = $(PRODUCT)
+
+# Builder: NMAKE Utility
+MAKE = nmake
+
+
+#-------------------------
+# Directives/Utilities
+#-------------------------
+
+CDEBUG              = -Zi
+C_OUTPUT_FLAG       = -Fo
+LDDEBUG             = /DEBUG
+OUTPUT_FLAG         = -out:
+CPPDEBUG            = -Zi
+CPP_OUTPUT_FLAG     = -Fo
+CPPLDDEBUG          = /DEBUG
+OUTPUT_FLAG         = -out:
+ARDEBUG             =
+STATICLIB_OUTPUT_FLAG = -out:
+MEX_DEBUG           = -g
+RM                  = @del
+ECHO                = @echo
+MV                  = @ren
+RUN                 = @cmd /C
+
+#----------------------------------------
+# "Faster Builds" Build Configuration
+#----------------------------------------
+
+ARFLAGS              = /nologo
+CFLAGS               = $(cflags) $(CVARSFLAG) $(CFLAGS_ADDITIONAL) \
+                       /Od /Oy-
+CPPFLAGS             = /TP $(cflags) $(CVARSFLAG) $(CPPFLAGS_ADDITIONAL) \
+                       /Od /Oy-
+CPP_LDFLAGS          = $(ldebug) $(conflags) $(LIBS_TOOLCHAIN)
+CPP_SHAREDLIB_LDFLAGS  = $(ldebug) $(conflags) $(LIBS_TOOLCHAIN) \
+                         -dll -def:$(DEF_FILE)
+DOWNLOAD_FLAGS       =
+EXECUTE_FLAGS        =
+LDFLAGS              = $(ldebug) $(conflags) $(LIBS_TOOLCHAIN)
+MEX_CPPFLAGS         =
+MEX_CPPLDFLAGS       =
+MEX_CFLAGS           =
+MEX_LDFLAGS          =
+MAKE_FLAGS           = -f $(MAKEFILE)
+SHAREDLIB_LDFLAGS    = $(ldebug) $(conflags) $(LIBS_TOOLCHAIN) \
+                       -dll -def:$(DEF_FILE)
+
+
+
+###########################################################################
+## OUTPUT INFO
+###########################################################################
+
+PRODUCT = $(RELATIVE_PATH_TO_ANCHOR)\PMSM_Controller.exe
+PRODUCT_TYPE = "executable"
+BUILD_TYPE = "Top-Level Standalone Executable"
+
+###########################################################################
+## INCLUDE PATHS
+###########################################################################
+
+INCLUDES_BUILDINFO = 
+
+INCLUDES = $(INCLUDES_BUILDINFO)
+
+###########################################################################
+## DEFINES
+###########################################################################
+
+DEFINES_BUILD_ARGS = -DCLASSIC_INTERFACE=0 -DALLOCATIONFCN=0 -DTERMFCN=0 -DONESTEPFCN=1 -DMAT_FILE=0 -DMULTI_INSTANCE_CODE=1 -DINTEGER_CODE=0 -DMT=0
+DEFINES_CUSTOM = 
+DEFINES_OPTS = -DTID01EQ=0
+DEFINES_STANDARD = -DMODEL=PMSM_Controller -DNUMST=2 -DNCSTATES=0 -DHAVESTDIO -DMODEL_HAS_DYNAMICALLY_LOADED_SFCNS=0
+
+DEFINES = $(DEFINES_BUILD_ARGS) $(DEFINES_CUSTOM) $(DEFINES_OPTS) $(DEFINES_STANDARD)
+
+###########################################################################
+## SOURCE FILES
+###########################################################################
+
+SRCS = $(START_DIR)\PMSM_Controller_ert_rtw\PMSM_Controller.c $(START_DIR)\PMSM_Controller_ert_rtw\PMSM_Controller_data.c $(START_DIR)\PMSM_Controller_ert_rtw\Shunt_Three_Sample_Point.c $(START_DIR)\PMSM_Controller_ert_rtw\rtGetInf.c $(START_DIR)\PMSM_Controller_ert_rtw\rtGetNaN.c $(START_DIR)\PMSM_Controller_ert_rtw\rt_nonfinite.c
+
+MAIN_SRC = $(START_DIR)\PMSM_Controller_ert_rtw\ert_main.c
+
+ALL_SRCS = $(SRCS) $(MAIN_SRC)
+
+###########################################################################
+## OBJECTS
+###########################################################################
+
+OBJS = PMSM_Controller.obj PMSM_Controller_data.obj Shunt_Three_Sample_Point.obj rtGetInf.obj rtGetNaN.obj rt_nonfinite.obj
+
+MAIN_OBJ = ert_main.obj
+
+ALL_OBJS = $(OBJS) $(MAIN_OBJ)
+
+###########################################################################
+## PREBUILT OBJECT FILES
+###########################################################################
+
+PREBUILT_OBJS = 
+
+###########################################################################
+## LIBRARIES
+###########################################################################
+
+LIBS = 
+
+###########################################################################
+## SYSTEM LIBRARIES
+###########################################################################
+
+SYSTEM_LIBS = 
+
+###########################################################################
+## ADDITIONAL TOOLCHAIN FLAGS
+###########################################################################
+
+#---------------
+# C Compiler
+#---------------
+
+CFLAGS_BASIC = $(DEFINES) @$(COMPILER_COMMAND_FILE)
+
+CFLAGS = $(CFLAGS) $(CFLAGS_BASIC)
+
+#-----------------
+# C++ Compiler
+#-----------------
+
+CPPFLAGS_BASIC = $(DEFINES) @$(COMPILER_COMMAND_FILE)
+
+CPPFLAGS = $(CPPFLAGS) $(CPPFLAGS_BASIC)
+
+###########################################################################
+## INLINED COMMANDS
+###########################################################################
+
+
+!include $(MATLAB_ROOT)\rtw\c\tools\vcdefs.mak
+
+
+###########################################################################
+## PHONY TARGETS
+###########################################################################
+
+.PHONY : all build buildobj clean info prebuild download execute set_environment_variables
+
+
+all : build
+	@cmd /C "@echo ### Successfully generated all binary outputs."
+
+
+build : set_environment_variables prebuild $(PRODUCT)
+
+
+buildobj : set_environment_variables prebuild $(OBJS) $(PREBUILT_OBJS)
+	@cmd /C "@echo ### Successfully generated all binary outputs."
+
+
+prebuild : 
+
+
+download : $(PRODUCT)
+
+
+execute : download
+	@cmd /C "@echo ### Invoking postbuild tool "Execute" ..."
+	$(EXECUTE) $(EXECUTE_FLAGS)
+	@cmd /C "@echo ### Done invoking postbuild tool."
+
+
+set_environment_variables : 
+	@set INCLUDE=$(INCLUDES);$(INCLUDE)
+	@set LIB=$(LIB)
+
+
+###########################################################################
+## FINAL TARGET
+###########################################################################
+
+#-------------------------------------------
+# Create a standalone executable            
+#-------------------------------------------
+
+$(PRODUCT) : $(OBJS) $(PREBUILT_OBJS) $(MAIN_OBJ)
+	@cmd /C "@echo ### Creating standalone executable "$(PRODUCT)" ..."
+	$(LD) $(LDFLAGS) -out:$(PRODUCT) @$(CMD_FILE) $(SYSTEM_LIBS) $(TOOLCHAIN_LIBS)
+	@cmd /C "@echo ### Created: $(PRODUCT)"
+
+
+###########################################################################
+## INTERMEDIATE TARGETS
+###########################################################################
+
+#---------------------
+# SOURCE-TO-OBJECT
+#---------------------
+
+.c.obj :
+	$(CC) $(CFLAGS) -Fo"$@" "$<"
+
+
+.cpp.obj :
+	$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
+
+
+{$(RELATIVE_PATH_TO_ANCHOR)}.c.obj :
+	$(CC) $(CFLAGS) -Fo"$@" "$<"
+
+
+{$(RELATIVE_PATH_TO_ANCHOR)}.cpp.obj :
+	$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
+
+
+{$(START_DIR)}.c.obj :
+	$(CC) $(CFLAGS) -Fo"$@" "$<"
+
+
+{$(START_DIR)}.cpp.obj :
+	$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
+
+
+{$(START_DIR)\PMSM_Controller_ert_rtw}.c.obj :
+	$(CC) $(CFLAGS) -Fo"$@" "$<"
+
+
+{$(START_DIR)\PMSM_Controller_ert_rtw}.cpp.obj :
+	$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
+
+
+{$(MATLAB_ROOT)\rtw\c\src}.c.obj :
+	$(CC) $(CFLAGS) -Fo"$@" "$<"
+
+
+{$(MATLAB_ROOT)\rtw\c\src}.cpp.obj :
+	$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
+
+
+{$(MATLAB_ROOT)\simulink\src}.c.obj :
+	$(CC) $(CFLAGS) -Fo"$@" "$<"
+
+
+{$(MATLAB_ROOT)\simulink\src}.cpp.obj :
+	$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
+
+
+PMSM_Controller.obj : $(START_DIR)\PMSM_Controller_ert_rtw\PMSM_Controller.c
+	$(CC) $(CFLAGS) -Fo"$@" $(START_DIR)\PMSM_Controller_ert_rtw\PMSM_Controller.c
+
+
+PMSM_Controller_data.obj : $(START_DIR)\PMSM_Controller_ert_rtw\PMSM_Controller_data.c
+	$(CC) $(CFLAGS) -Fo"$@" $(START_DIR)\PMSM_Controller_ert_rtw\PMSM_Controller_data.c
+
+
+Shunt_Three_Sample_Point.obj : $(START_DIR)\PMSM_Controller_ert_rtw\Shunt_Three_Sample_Point.c
+	$(CC) $(CFLAGS) -Fo"$@" $(START_DIR)\PMSM_Controller_ert_rtw\Shunt_Three_Sample_Point.c
+
+
+ert_main.obj : $(START_DIR)\PMSM_Controller_ert_rtw\ert_main.c
+	$(CC) $(CFLAGS) -Fo"$@" $(START_DIR)\PMSM_Controller_ert_rtw\ert_main.c
+
+
+rtGetInf.obj : $(START_DIR)\PMSM_Controller_ert_rtw\rtGetInf.c
+	$(CC) $(CFLAGS) -Fo"$@" $(START_DIR)\PMSM_Controller_ert_rtw\rtGetInf.c
+
+
+rtGetNaN.obj : $(START_DIR)\PMSM_Controller_ert_rtw\rtGetNaN.c
+	$(CC) $(CFLAGS) -Fo"$@" $(START_DIR)\PMSM_Controller_ert_rtw\rtGetNaN.c
+
+
+rt_nonfinite.obj : $(START_DIR)\PMSM_Controller_ert_rtw\rt_nonfinite.c
+	$(CC) $(CFLAGS) -Fo"$@" $(START_DIR)\PMSM_Controller_ert_rtw\rt_nonfinite.c
+
+
+###########################################################################
+## DEPENDENCIES
+###########################################################################
+
+$(ALL_OBJS) : rtw_proj.tmw $(COMPILER_COMMAND_FILE) $(MAKEFILE)
+
+
+###########################################################################
+## MISCELLANEOUS TARGETS
+###########################################################################
+
+info : 
+	@cmd /C "@echo ### PRODUCT = $(PRODUCT)"
+	@cmd /C "@echo ### PRODUCT_TYPE = $(PRODUCT_TYPE)"
+	@cmd /C "@echo ### BUILD_TYPE = $(BUILD_TYPE)"
+	@cmd /C "@echo ### INCLUDES = $(INCLUDES)"
+	@cmd /C "@echo ### DEFINES = $(DEFINES)"
+	@cmd /C "@echo ### ALL_SRCS = $(ALL_SRCS)"
+	@cmd /C "@echo ### ALL_OBJS = $(ALL_OBJS)"
+	@cmd /C "@echo ### LIBS = $(LIBS)"
+	@cmd /C "@echo ### MODELREF_LIBS = $(MODELREF_LIBS)"
+	@cmd /C "@echo ### SYSTEM_LIBS = $(SYSTEM_LIBS)"
+	@cmd /C "@echo ### TOOLCHAIN_LIBS = $(TOOLCHAIN_LIBS)"
+	@cmd /C "@echo ### CFLAGS = $(CFLAGS)"
+	@cmd /C "@echo ### LDFLAGS = $(LDFLAGS)"
+	@cmd /C "@echo ### SHAREDLIB_LDFLAGS = $(SHAREDLIB_LDFLAGS)"
+	@cmd /C "@echo ### CPPFLAGS = $(CPPFLAGS)"
+	@cmd /C "@echo ### CPP_LDFLAGS = $(CPP_LDFLAGS)"
+	@cmd /C "@echo ### CPP_SHAREDLIB_LDFLAGS = $(CPP_SHAREDLIB_LDFLAGS)"
+	@cmd /C "@echo ### ARFLAGS = $(ARFLAGS)"
+	@cmd /C "@echo ### MEX_CFLAGS = $(MEX_CFLAGS)"
+	@cmd /C "@echo ### MEX_CPPFLAGS = $(MEX_CPPFLAGS)"
+	@cmd /C "@echo ### MEX_LDFLAGS = $(MEX_LDFLAGS)"
+	@cmd /C "@echo ### MEX_CPPLDFLAGS = $(MEX_CPPLDFLAGS)"
+	@cmd /C "@echo ### DOWNLOAD_FLAGS = $(DOWNLOAD_FLAGS)"
+	@cmd /C "@echo ### EXECUTE_FLAGS = $(EXECUTE_FLAGS)"
+	@cmd /C "@echo ### MAKE_FLAGS = $(MAKE_FLAGS)"
+
+
+clean : 
+	$(ECHO) "### Deleting all derived files..."
+	@if exist $(PRODUCT) $(RM) $(PRODUCT)
+	$(RM) $(ALL_OBJS)
+	$(ECHO) "### Deleted all derived files."
+
+

+ 7 - 0
Simulink/PMSM_Controller_ert_rtw/PMSM_Controller.rsp

@@ -0,0 +1,7 @@
+PMSM_Controller.obj
+PMSM_Controller_data.obj
+Shunt_Three_Sample_Point.obj
+ert_main.obj
+rtGetInf.obj
+rtGetNaN.obj
+rt_nonfinite.obj

+ 7 - 0
Simulink/PMSM_Controller_ert_rtw/PMSM_Controller_comp.rsp

@@ -0,0 +1,7 @@
+-IE:\works\mcu\MC100\Simulink
+-IE:\works\mcu\MC100\Simulink\PMSM_Controller_ert_rtw
+-I"D:\Program Files\R2020b\extern\include"
+-I"D:\Program Files\R2020b\simulink\include"
+-I"D:\Program Files\R2020b\rtw\c\src"
+-I"D:\Program Files\R2020b\rtw\c\src\ext_mode\common"
+-I"D:\Program Files\R2020b\rtw\c\ert"

+ 104 - 0
Simulink/PMSM_Controller_ert_rtw/PMSM_Controller_data.c

@@ -0,0 +1,104 @@
+/*
+ * File: PMSM_Controller_data.c
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+#include "PMSM_Controller.h"
+#include "PMSM_Controller_private.h"
+
+/* Constant parameters (default storage) */
+const ConstP rtConstP = {
+  /* Computed Parameter: r_sin_M1_Table
+   * Referenced by: '<S23>/r_sin_M1'
+   */
+  { 0, 286, 572, 857, 1143, 1428, 1713, 1997, 2280, 2563, 2845, 3126, 3406, 3686,
+    3964, 4240, 4516, 4790, 5063, 5334, 5604, 5872, 6138, 6402, 6664, 6924, 7182,
+    7438, 7692, 7943, 8192, 8438, 8682, 8923, 9162, 9397, 9630, 9860, 10087,
+    10311, 10531, 10749, 10963, 11174, 11381, 11585, 11786, 11982, 12176, 12365,
+    12551, 12733, 12911, 13085, 13255, 13421, 13583, 13741, 13894, 14044, 14189,
+    14330, 14466, 14598, 14726, 14849, 14968, 15082, 15191, 15296, 15396, 15491,
+    15582, 15668, 15749, 15826, 15897, 15964, 16026, 16083, 16135, 16182, 16225,
+    16262, 16294, 16322, 16344, 16362, 16374, 16382, 16384, 16382, 16374, 16362,
+    16344, 16322, 16294, 16262, 16225, 16182, 16135, 16083, 16026, 15964, 15897,
+    15826, 15749, 15668, 15582, 15491, 15396, 15296, 15191, 15082, 14968, 14849,
+    14726, 14598, 14466, 14330, 14189, 14044, 13894, 13741, 13583, 13421, 13255,
+    13085, 12911, 12733, 12551, 12365, 12176, 11982, 11786, 11585, 11381, 11174,
+    10963, 10749, 10531, 10311, 10087, 9860, 9630, 9397, 9162, 8923, 8682, 8438,
+    8192, 7943, 7692, 7438, 7182, 6924, 6664, 6402, 6138, 5872, 5604, 5334, 5063,
+    4790, 4516, 4240, 3964, 3686, 3406, 3126, 2845, 2563, 2280, 1997, 1713, 1428,
+    1143, 857, 572, 286, 0, -286, -572, -857, -1143, -1428, -1713, -1997, -2280,
+    -2563, -2845, -3126, -3406, -3686, -3964, -4240, -4516, -4790, -5063, -5334,
+    -5604, -5872, -6138, -6402, -6664, -6924, -7182, -7438, -7692, -7943, -8192,
+    -8438, -8682, -8923, -9162, -9397, -9630, -9860, -10087, -10311, -10531,
+    -10749, -10963, -11174, -11381, -11585, -11786, -11982, -12176, -12365,
+    -12551, -12733, -12911, -13085, -13255, -13421, -13583, -13741, -13894,
+    -14044, -14189, -14330, -14466, -14598, -14726, -14849, -14968, -15082,
+    -15191, -15296, -15396, -15491, -15582, -15668, -15749, -15826, -15897,
+    -15964, -16026, -16083, -16135, -16182, -16225, -16262, -16294, -16322,
+    -16344, -16362, -16374, -16382, -16384, -16382, -16374, -16362, -16344,
+    -16322, -16294, -16262, -16225, -16182, -16135, -16083, -16026, -15964,
+    -15897, -15826, -15749, -15668, -15582, -15491, -15396, -15296, -15191,
+    -15082, -14968, -14849, -14726, -14598, -14466, -14330, -14189, -14044,
+    -13894, -13741, -13583, -13421, -13255, -13085, -12911, -12733, -12551,
+    -12365, -12176, -11982, -11786, -11585, -11381, -11174, -10963, -10749,
+    -10531, -10311, -10087, -9860, -9630, -9397, -9162, -8923, -8682, -8438,
+    -8192, -7943, -7692, -7438, -7182, -6924, -6664, -6402, -6138, -5872, -5604,
+    -5334, -5063, -4790, -4516, -4240, -3964, -3686, -3406, -3126, -2845, -2563,
+    -2280, -1997, -1713, -1428, -1143, -857, -572, -286, 0 },
+
+  /* Computed Parameter: r_cos_M1_Table
+   * Referenced by: '<S23>/r_cos_M1'
+   */
+  { 16384, 16382, 16374, 16362, 16344, 16322, 16294, 16262, 16225, 16182, 16135,
+    16083, 16026, 15964, 15897, 15826, 15749, 15668, 15582, 15491, 15396, 15296,
+    15191, 15082, 14968, 14849, 14726, 14598, 14466, 14330, 14189, 14044, 13894,
+    13741, 13583, 13421, 13255, 13085, 12911, 12733, 12551, 12365, 12176, 11982,
+    11786, 11585, 11381, 11174, 10963, 10749, 10531, 10311, 10087, 9860, 9630,
+    9397, 9162, 8923, 8682, 8438, 8192, 7943, 7692, 7438, 7182, 6924, 6664, 6402,
+    6138, 5872, 5604, 5334, 5063, 4790, 4516, 4240, 3964, 3686, 3406, 3126, 2845,
+    2563, 2280, 1997, 1713, 1428, 1143, 857, 572, 286, 0, -286, -572, -857,
+    -1143, -1428, -1713, -1997, -2280, -2563, -2845, -3126, -3406, -3686, -3964,
+    -4240, -4516, -4790, -5063, -5334, -5604, -5872, -6138, -6402, -6664, -6924,
+    -7182, -7438, -7692, -7943, -8192, -8438, -8682, -8923, -9162, -9397, -9630,
+    -9860, -10087, -10311, -10531, -10749, -10963, -11174, -11381, -11585,
+    -11786, -11982, -12176, -12365, -12551, -12733, -12911, -13085, -13255,
+    -13421, -13583, -13741, -13894, -14044, -14189, -14330, -14466, -14598,
+    -14726, -14849, -14968, -15082, -15191, -15296, -15396, -15491, -15582,
+    -15668, -15749, -15826, -15897, -15964, -16026, -16083, -16135, -16182,
+    -16225, -16262, -16294, -16322, -16344, -16362, -16374, -16382, -16384,
+    -16382, -16374, -16362, -16344, -16322, -16294, -16262, -16225, -16182,
+    -16135, -16083, -16026, -15964, -15897, -15826, -15749, -15668, -15582,
+    -15491, -15396, -15296, -15191, -15082, -14968, -14849, -14726, -14598,
+    -14466, -14330, -14189, -14044, -13894, -13741, -13583, -13421, -13255,
+    -13085, -12911, -12733, -12551, -12365, -12176, -11982, -11786, -11585,
+    -11381, -11174, -10963, -10749, -10531, -10311, -10087, -9860, -9630, -9397,
+    -9162, -8923, -8682, -8438, -8192, -7943, -7692, -7438, -7182, -6924, -6664,
+    -6402, -6138, -5872, -5604, -5334, -5063, -4790, -4516, -4240, -3964, -3686,
+    -3406, -3126, -2845, -2563, -2280, -1997, -1713, -1428, -1143, -857, -572,
+    -286, 0, 286, 572, 857, 1143, 1428, 1713, 1997, 2280, 2563, 2845, 3126, 3406,
+    3686, 3964, 4240, 4516, 4790, 5063, 5334, 5604, 5872, 6138, 6402, 6664, 6924,
+    7182, 7438, 7692, 7943, 8192, 8438, 8682, 8923, 9162, 9397, 9630, 9860,
+    10087, 10311, 10531, 10749, 10963, 11174, 11381, 11585, 11786, 11982, 12176,
+    12365, 12551, 12733, 12911, 13085, 13255, 13421, 13583, 13741, 13894, 14044,
+    14189, 14330, 14466, 14598, 14726, 14849, 14968, 15082, 15191, 15296, 15396,
+    15491, 15582, 15668, 15749, 15826, 15897, 15964, 16026, 16083, 16135, 16182,
+    16225, 16262, 16294, 16322, 16344, 16362, 16374, 16382, 16384 }
+};
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

+ 82 - 0
Simulink/PMSM_Controller_ert_rtw/PMSM_Controller_private.h

@@ -0,0 +1,82 @@
+/*
+ * File: PMSM_Controller_private.h
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+#ifndef RTW_HEADER_PMSM_Controller_private_h_
+#define RTW_HEADER_PMSM_Controller_private_h_
+#include "rtwtypes.h"
+#ifndef UCHAR_MAX
+#include <limits.h>
+#endif
+
+#if ( UCHAR_MAX != (0xFFU) ) || ( SCHAR_MAX != (0x7F) )
+#error Code was generated for compiler with different sized uchar/char. \
+Consider adjusting Test hardware word size settings on the \
+Hardware Implementation pane to match your compiler word sizes as \
+defined in limits.h of the compiler. Alternatively, you can \
+select the Test hardware is the same as production hardware option and \
+select the Enable portable word sizes option on the Code Generation > \
+Verification pane for ERT based targets, which will disable the \
+preprocessor word size checks.
+#endif
+
+#if ( USHRT_MAX != (0xFFFFU) ) || ( SHRT_MAX != (0x7FFF) )
+#error Code was generated for compiler with different sized ushort/short. \
+Consider adjusting Test hardware word size settings on the \
+Hardware Implementation pane to match your compiler word sizes as \
+defined in limits.h of the compiler. Alternatively, you can \
+select the Test hardware is the same as production hardware option and \
+select the Enable portable word sizes option on the Code Generation > \
+Verification pane for ERT based targets, which will disable the \
+preprocessor word size checks.
+#endif
+
+#if ( UINT_MAX != (0xFFFFFFFFU) ) || ( INT_MAX != (0x7FFFFFFF) )
+#error Code was generated for compiler with different sized uint/int. \
+Consider adjusting Test hardware word size settings on the \
+Hardware Implementation pane to match your compiler word sizes as \
+defined in limits.h of the compiler. Alternatively, you can \
+select the Test hardware is the same as production hardware option and \
+select the Enable portable word sizes option on the Code Generation > \
+Verification pane for ERT based targets, which will disable the \
+preprocessor word size checks.
+#endif
+
+#if ( ULONG_MAX != (0xFFFFFFFFU) ) || ( LONG_MAX != (0x7FFFFFFF) )
+#error Code was generated for compiler with different sized ulong/long. \
+Consider adjusting Test hardware word size settings on the \
+Hardware Implementation pane to match your compiler word sizes as \
+defined in limits.h of the compiler. Alternatively, you can \
+select the Test hardware is the same as production hardware option and \
+select the Enable portable word sizes option on the Code Generation > \
+Verification pane for ERT based targets, which will disable the \
+preprocessor word size checks.
+#endif
+
+/* Skipping ulong_long/long_long check: insufficient preprocessor integer range. */
+extern real_T rt_modd_snf(real_T u0, real_T u1);
+extern real_T rt_roundd_snf(real_T u);
+extern uint16_T plook_u16u16_evencka(uint16_T u, uint16_T bp0, uint16_T bpSpace,
+  uint32_T maxIndex);
+extern int32_T div_nde_s32_floor(int32_T numerator, int32_T denominator);
+
+#endif                               /* RTW_HEADER_PMSM_Controller_private_h_ */
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

+ 0 - 0
Simulink/PMSM_Controller_ert_rtw/PMSM_Controller_ref.rsp


+ 32 - 0
Simulink/PMSM_Controller_ert_rtw/PMSM_Controller_types.h

@@ -0,0 +1,32 @@
+/*
+ * File: PMSM_Controller_types.h
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+#ifndef RTW_HEADER_PMSM_Controller_types_h_
+#define RTW_HEADER_PMSM_Controller_types_h_
+
+/* Model Code Variants */
+
+/* Forward declaration for rtModel */
+typedef struct tag_RTM RT_MODEL;
+
+#endif                                 /* RTW_HEADER_PMSM_Controller_types_h_ */
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

+ 171 - 0
Simulink/PMSM_Controller_ert_rtw/Shunt_Three_Sample_Point.c

@@ -0,0 +1,171 @@
+/*
+ * File: Shunt_Three_Sample_Point.c
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+#include "Shunt_Three_Sample_Point.h"
+
+/* Include model header file for global data */
+#include "PMSM_Controller.h"
+#include "PMSM_Controller_private.h"
+
+/* Output and update for atomic system: '<S178>/Shunt_Three_Sample_Point' */
+void Shunt_Three_Sample_Point(uint16_T rtu_low, uint16_T rtu_midle, uint8_T
+  rtu_i_sector, uint16_T rtu_half_pwm_count, uint16_T rtu_t_adc, uint16_T
+  rtu_t_dead, uint16_T rtu_t_samp_before, uint16_T *rty_o_samp_p1, uint16_T
+  *rty_o_samp_p2, uint8_T *rty_o_sector)
+{
+  uint32_T qY;
+  uint32_T qY_0;
+  uint32_T tmp;
+  uint32_T tmp_0;
+  uint16_T qY_1;
+  *rty_o_sector = rtu_i_sector;
+  tmp_0 = rtu_half_pwm_count + 1U;
+  if (rtu_half_pwm_count + 1U > 65535U) {
+    tmp_0 = 65535U;
+  }
+
+  *rty_o_samp_p1 = (uint16_T)tmp_0;
+  tmp_0 = rtu_half_pwm_count + 1U;
+  if (rtu_half_pwm_count + 1U > 65535U) {
+    tmp_0 = 65535U;
+  }
+
+  *rty_o_samp_p2 = (uint16_T)tmp_0;
+  tmp_0 = (uint32_T)rtu_t_adc + rtu_t_dead;
+  tmp = tmp_0;
+  if (tmp_0 > 65535U) {
+    tmp = 65535U;
+  }
+
+  tmp += rtu_t_samp_before;
+  if (tmp > 65535U) {
+    tmp = 65535U;
+  }
+
+  qY_0 = (uint32_T)rtu_half_pwm_count - /*MW:OvSatOk*/ rtu_low;
+  if (qY_0 > rtu_half_pwm_count) {
+    qY_0 = 0U;
+  }
+
+  qY = (uint32_T)rtu_half_pwm_count - /*MW:OvSatOk*/ rtu_midle;
+  if (qY > rtu_half_pwm_count) {
+    qY = 0U;
+  }
+
+  if ((uint16_T)qY_0 > 32767) {
+    qY_1 = MAX_uint16_T;
+  } else {
+    qY_1 = (uint16_T)((uint16_T)qY_0 << 1);
+  }
+
+  if (qY_1 >= (uint16_T)tmp) {
+    if (tmp_0 > 65535U) {
+      tmp_0 = 65535U;
+    }
+
+    if ((uint16_T)qY_0 >= (int32_T)tmp_0) {
+      qY_0 = rtu_half_pwm_count - /*MW:OvSatOk*/ 1U;
+      if (rtu_half_pwm_count - 1U > rtu_half_pwm_count) {
+        qY_0 = 0U;
+      }
+
+      *rty_o_samp_p1 = (uint16_T)qY_0;
+      *rty_o_sector = 1U;
+    } else {
+      tmp_0 = (uint32_T)rtu_low + rtu_t_samp_before;
+      if (tmp_0 > 65535U) {
+        tmp_0 = 65535U;
+      }
+
+      if ((uint16_T)tmp_0 >= rtu_half_pwm_count) {
+        if (rtu_half_pwm_count > 32767) {
+          qY_1 = MAX_uint16_T;
+        } else {
+          qY_1 = (uint16_T)(rtu_half_pwm_count << 1);
+        }
+
+        qY_0 = (uint32_T)qY_1 - /*MW:OvSatOk*/ (uint16_T)tmp_0;
+        if (qY_0 > qY_1) {
+          qY_0 = 0U;
+        }
+
+        qY = qY_0 - /*MW:OvSatOk*/ 1U;
+        if (qY_0 - 1U > qY_0) {
+          qY = 0U;
+        }
+
+        *rty_o_samp_p2 = (uint16_T)qY;
+      } else {
+        *rty_o_samp_p1 = (uint16_T)tmp_0;
+      }
+    }
+  } else {
+    if ((uint16_T)qY > 32767) {
+      qY_1 = MAX_uint16_T;
+    } else {
+      qY_1 = (uint16_T)((uint16_T)qY << 1);
+    }
+
+    if (qY_1 >= (uint16_T)tmp) {
+      if (tmp_0 > 65535U) {
+        tmp_0 = 65535U;
+      }
+
+      if ((uint16_T)qY >= (int32_T)tmp_0) {
+        qY_0 = rtu_half_pwm_count - /*MW:OvSatOk*/ 1U;
+        if (rtu_half_pwm_count - 1U > rtu_half_pwm_count) {
+          qY_0 = 0U;
+        }
+
+        *rty_o_samp_p1 = (uint16_T)qY_0;
+      } else {
+        tmp_0 = (uint32_T)rtu_midle + rtu_t_samp_before;
+        if (tmp_0 > 65535U) {
+          tmp_0 = 65535U;
+        }
+
+        if ((uint16_T)tmp_0 >= rtu_half_pwm_count) {
+          if (rtu_half_pwm_count > 32767) {
+            qY_1 = MAX_uint16_T;
+          } else {
+            qY_1 = (uint16_T)(rtu_half_pwm_count << 1);
+          }
+
+          qY_0 = (uint32_T)qY_1 - /*MW:OvSatOk*/ (uint16_T)tmp_0;
+          if (qY_0 > qY_1) {
+            qY_0 = 0U;
+          }
+
+          qY = qY_0 - /*MW:OvSatOk*/ 1U;
+          if (qY_0 - 1U > qY_0) {
+            qY = 0U;
+          }
+
+          *rty_o_samp_p2 = (uint16_T)qY;
+        } else {
+          *rty_o_samp_p1 = (uint16_T)tmp_0;
+        }
+      }
+    }
+  }
+}
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

+ 38 - 0
Simulink/PMSM_Controller_ert_rtw/Shunt_Three_Sample_Point.h

@@ -0,0 +1,38 @@
+/*
+ * File: Shunt_Three_Sample_Point.h
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+#ifndef RTW_HEADER_Shunt_Three_Sample_Point_h_
+#define RTW_HEADER_Shunt_Three_Sample_Point_h_
+#ifndef PMSM_Controller_COMMON_INCLUDES_
+#define PMSM_Controller_COMMON_INCLUDES_
+#include "rtwtypes.h"
+#endif                                 /* PMSM_Controller_COMMON_INCLUDES_ */
+
+#include "PMSM_Controller_types.h"
+
+extern void Shunt_Three_Sample_Point(uint16_T rtu_low, uint16_T rtu_midle,
+  uint8_T rtu_i_sector, uint16_T rtu_half_pwm_count, uint16_T rtu_t_adc,
+  uint16_T rtu_t_dead, uint16_T rtu_t_samp_before, uint16_T *rty_o_samp_p1,
+  uint16_T *rty_o_samp_p2, uint8_T *rty_o_sector);
+
+#endif                              /* RTW_HEADER_Shunt_Three_Sample_Point_h_ */
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

BIN
Simulink/PMSM_Controller_ert_rtw/buildInfo.mat


BIN
Simulink/PMSM_Controller_ert_rtw/codeInfo.mat


BIN
Simulink/PMSM_Controller_ert_rtw/codedescriptor.dmr


BIN
Simulink/PMSM_Controller_ert_rtw/compileInfo.mat


+ 14 - 0
Simulink/PMSM_Controller_ert_rtw/defines.txt

@@ -0,0 +1,14 @@
+MODEL=PMSM_Controller
+NUMST=2
+NCSTATES=0
+HAVESTDIO
+MODEL_HAS_DYNAMICALLY_LOADED_SFCNS=0
+CLASSIC_INTERFACE=0
+ALLOCATIONFCN=0
+TID01EQ=0
+TERMFCN=0
+ONESTEPFCN=1
+MAT_FILE=0
+MULTI_INSTANCE_CODE=1
+INTEGER_CODE=0
+MT=0

+ 162 - 0
Simulink/PMSM_Controller_ert_rtw/ert_main.c

@@ -0,0 +1,162 @@
+/*
+ * File: ert_main.c
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+#include <stddef.h>
+#include <stdio.h>              /* This ert_main.c example uses printf/fflush */
+#include "PMSM_Controller.h"           /* Model's header file */
+#include "rtwtypes.h"
+
+static RT_MODEL rtM_;
+static RT_MODEL *const rtMPtr = &rtM_; /* Real-time model */
+static DW rtDW;                        /* Observable states */
+
+/* '<Root>/Vdc' */
+static int16_T rtU_Vdc;
+
+/* '<Root>/Ts' */
+static uint16_T rtU_Ts;
+
+/* '<Root>/adc_a' */
+static int16_T rtU_adc_a;
+
+/* '<Root>/adc_b' */
+static int16_T rtU_adc_b;
+
+/* '<Root>/rotor_angle' */
+static real_T rtU_rotor_angle;
+
+/* '<Root>/rotor_speed' */
+static int16_T rtU_rotor_speed;
+
+/* '<Root>/input_target' */
+static int16_T rtU_input_target;
+
+/* '<Root>/hall_a' */
+static uint8_T rtU_hall_a;
+
+/* '<Root>/hall_b' */
+static uint8_T rtU_hall_b;
+
+/* '<Root>/hall_c' */
+static uint8_T rtU_hall_c;
+
+/* '<Root>/hw_count' */
+static uint32_T rtU_hw_count;
+
+/* '<Root>/b_motor_enable' */
+static boolean_T rtU_b_motor_enable;
+
+/* '<Root>/b_cruise_enable' */
+static boolean_T rtU_b_cruise_enable;
+
+/* '<Root>/n_ctrl_type' */
+static uint8_T rtU_n_ctrl_type;
+
+/* '<Root>/pwm_counts' */
+static uint16_T rtY_pwm_counts[8];
+
+/* '<Root>/sector' */
+static uint8_T rtY_sector;
+
+/*
+ * Associating rt_OneStep with a real-time clock or interrupt service routine
+ * is what makes the generated code "real-time".  The function rt_OneStep is
+ * always associated with the base rate of the model.  Subrates are managed
+ * by the base rate from inside the generated code.  Enabling/disabling
+ * interrupts and floating point context switches are target specific.  This
+ * example code indicates where these should take place relative to executing
+ * the generated code step function.  Overrun behavior should be tailored to
+ * your application needs.  This example simply sets an error status in the
+ * real-time model and returns from rt_OneStep.
+ */
+void rt_OneStep(RT_MODEL *const rtM);
+void rt_OneStep(RT_MODEL *const rtM)
+{
+  static boolean_T OverrunFlag = false;
+
+  /* Disable interrupts here */
+
+  /* Check for overrun */
+  if (OverrunFlag) {
+    rtmSetErrorStatus(rtM, "Overrun");
+    return;
+  }
+
+  OverrunFlag = true;
+
+  /* Save FPU context here (if necessary) */
+  /* Re-enable timer or interrupt here */
+  /* Set model inputs here */
+
+  /* Step the model for base rate */
+  PMSM_Controller_step(rtM, rtU_Vdc, rtU_Ts, rtU_adc_a, rtU_adc_b,
+                       rtU_rotor_angle, rtU_rotor_speed, rtU_input_target,
+                       rtY_pwm_counts, &rtY_sector);
+
+  /* Get model outputs here */
+
+  /* Indicate task complete */
+  OverrunFlag = false;
+
+  /* Disable interrupts here */
+  /* Restore FPU context here (if necessary) */
+  /* Enable interrupts here */
+}
+
+/*
+ * The example "main" function illustrates what is required by your
+ * application code to initialize, execute, and terminate the generated code.
+ * Attaching rt_OneStep to a real-time clock is target specific.  This example
+ * illustrates how you do this relative to initializing the model.
+ */
+int_T main(int_T argc, const char *argv[])
+{
+  RT_MODEL *const rtM = rtMPtr;
+
+  /* Unused arguments */
+  (void)(argc);
+  (void)(argv);
+
+  /* Pack model data into RTM */
+  rtM->dwork = &rtDW;
+
+  /* Initialize model */
+  PMSM_Controller_initialize(rtM);
+
+  /* Attach rt_OneStep to a timer or interrupt service routine with
+   * period 6.2E-6 seconds (the model's base sample time) here.  The
+   * call syntax for rt_OneStep is
+   *
+   *  rt_OneStep(rtM);
+   */
+  printf("Warning: The simulation will run forever. "
+         "Generated ERT main won't simulate model step behavior. "
+         "To change this behavior select the 'MAT-file logging' option.\n");
+  fflush((NULL));
+  while (rtmGetErrorStatus(rtM) == (NULL)) {
+    /*  Perform other application tasks here */
+  }
+
+  /* Disable rt_OneStep() here */
+  return 0;
+}
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

+ 2094 - 0
Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_c.html

@@ -0,0 +1,2094 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: PMSM_Controller.c</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="pp">#include "PMSM_Controller.h"</span></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td><span class="pp">#include "PMSM_Controller_private.h"</span></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="kw">static</span> <span class="kw">void</span> <a id="21c13" class="tk">rate_scheduler</a>(<a id="21c28" class="tk">RT_MODEL</a> <a id="21c37" class="tk">*</a><span class="kw">const</span> <a id="21c44" class="tk">rtM</a>);</td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td><a id="22c1" class="tk">uint16_T</a> <a id="22c10" class="tk">plook_u16u16_evencka</a>(<a id="22c31" class="tk">uint16_T</a> <a id="22c40" class="tk">u</a>, <a id="22c43" class="tk">uint16_T</a> <a id="22c52" class="tk">bp0</a>, <a id="22c57" class="tk">uint16_T</a> <a id="22c66" class="tk">bpSpace</a>,</td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td>  <a id="23c3" class="tk">uint32_T</a> <a id="23c12" class="tk">maxIndex</a>)</td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td><span class="br">{</span></td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td>  <a id="25c3" class="tk">uint16_T</a> <a id="25c12" class="tk">bpIndex</a>;</td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td></td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td>  <span class="ct">/* Prelookup - Index only</span></td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td><span class="ct">     Index Search method: 'even'</span></td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td><span class="ct">     Extrapolation method: 'Clip'</span></td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td><span class="ct">     Use previous index: 'off'</span></td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td><span class="ct">     Use last breakpoint for index at or above upper limit: 'on'</span></td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td><span class="ct">     Remove protection against out-of-range input in generated code: 'off'</span></td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="34" id="34">
+<td><a id="l34" class='ln'>34</a></td><td>  <span class="kw">if</span> (<a id="34c7" class="tk">u</a> <a id="34c9" class="tk">&lt;=</a> <a id="34c12" class="tk">bp0</a>) <span class="br">{</span></td></tr>
+<tr name="35" id="35">
+<td><a id="l35" class='ln'>35</a></td><td>    <a id="35c5" class="tk">bpIndex</a> = 0U;</td></tr>
+<tr name="36" id="36">
+<td><a id="l36" class='ln'>36</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="37" id="37">
+<td><a id="l37" class='ln'>37</a></td><td>    <a id="37c5" class="tk">bpIndex</a> = (<a id="37c16" class="tk">uint16_T</a>)((<a id="37c27" class="tk">uint32_T</a>)(<a id="37c37" class="tk">uint16_T</a>)((<a id="37c48" class="tk">uint32_T</a>)<a id="37c57" class="tk">u</a> <a id="37c59" class="tk">-</a> <a id="37c61" class="tk">bp0</a>) <a id="37c66" class="tk">/</a> <a id="37c68" class="tk">bpSpace</a>);</td></tr>
+<tr name="38" id="38">
+<td><a id="l38" class='ln'>38</a></td><td>    <span class="kw">if</span> (<a id="38c9" class="tk">bpIndex</a> <a id="38c17" class="tk">&lt;</a> <a id="38c19" class="tk">maxIndex</a>) <span class="br">{</span></td></tr>
+<tr name="39" id="39">
+<td><a id="l39" class='ln'>39</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="40" id="40">
+<td><a id="l40" class='ln'>40</a></td><td>      <a id="40c7" class="tk">bpIndex</a> = (<a id="40c18" class="tk">uint16_T</a>)<a id="40c27" class="tk">maxIndex</a>;</td></tr>
+<tr name="41" id="41">
+<td><a id="l41" class='ln'>41</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="42" id="42">
+<td><a id="l42" class='ln'>42</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="43" id="43">
+<td><a id="l43" class='ln'>43</a></td><td></td></tr>
+<tr name="44" id="44">
+<td><a id="l44" class='ln'>44</a></td><td>  <span class="kw">return</span> <a id="44c10" class="tk">bpIndex</a>;</td></tr>
+<tr name="45" id="45">
+<td><a id="l45" class='ln'>45</a></td><td><span class="br">}</span></td></tr>
+<tr name="46" id="46">
+<td><a id="l46" class='ln'>46</a></td><td></td></tr>
+<tr name="47" id="47">
+<td><a id="l47" class='ln'>47</a></td><td><a id="47c1" class="tk">int32_T</a> <a id="47c9" class="tk">div_nde_s32_floor</a>(<a id="47c27" class="tk">int32_T</a> <a id="47c35" class="tk">numerator</a>, <a id="47c46" class="tk">int32_T</a> <a id="47c54" class="tk">denominator</a>)</td></tr>
+<tr name="48" id="48">
+<td><a id="l48" class='ln'>48</a></td><td><span class="br">{</span></td></tr>
+<tr name="49" id="49">
+<td><a id="l49" class='ln'>49</a></td><td>  <span class="kw">return</span> (((<a id="49c13" class="tk">numerator</a> <a id="49c23" class="tk">&lt;</a> 0) <a id="49c28" class="tk">!=</a> (<a id="49c32" class="tk">denominator</a> <a id="49c44" class="tk">&lt;</a> 0)) <a id="49c50" class="tk">&amp;&amp;</a> (<a id="49c54" class="tk">numerator</a> <a id="49c64" class="tk">%</a> <a id="49c66" class="tk">denominator</a> <a id="49c78" class="tk">!=</a></td></tr>
+<tr name="50" id="50">
+<td><a id="l50" class='ln'>50</a></td><td>           0) <a id="50c15" class="tk">?</a> <a id="50c17" class="tk">-</a>1 <a id="50c20" class="tk">:</a> 0) <a id="50c25" class="tk">+</a> <a id="50c27" class="tk">numerator</a> <a id="50c37" class="tk">/</a> <a id="50c39" class="tk">denominator</a>;</td></tr>
+<tr name="51" id="51">
+<td><a id="l51" class='ln'>51</a></td><td><span class="br">}</span></td></tr>
+<tr name="52" id="52">
+<td><a id="l52" class='ln'>52</a></td><td></td></tr>
+<tr name="53" id="53">
+<td><a id="l53" class='ln'>53</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="54" id="54">
+<td><a id="l54" class='ln'>54</a></td><td><span class="ct"> *   This function updates active task flag for each subrate.</span></td></tr>
+<tr name="55" id="55">
+<td><a id="l55" class='ln'>55</a></td><td><span class="ct"> * The function is called at model base rate, hence the</span></td></tr>
+<tr name="56" id="56">
+<td><a id="l56" class='ln'>56</a></td><td><span class="ct"> * generated code self-manages all its subrates.</span></td></tr>
+<tr name="57" id="57">
+<td><a id="l57" class='ln'>57</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="58" id="58">
+<td><a id="l58" class='ln'>58</a></td><td><span class="kw">static</span> <span class="kw">void</span> <a id="58c13" class="tk">rate_scheduler</a>(<a id="58c28" class="tk">RT_MODEL</a> <a id="58c37" class="tk">*</a><span class="kw">const</span> <a id="58c44" class="tk">rtM</a>)</td></tr>
+<tr name="59" id="59">
+<td><a id="l59" class='ln'>59</a></td><td><span class="br">{</span></td></tr>
+<tr name="60" id="60">
+<td><a id="l60" class='ln'>60</a></td><td>  <span class="ct">/* Compute which subrates run during the next base time step.  Subrates</span></td></tr>
+<tr name="61" id="61">
+<td><a id="l61" class='ln'>61</a></td><td><span class="ct">   * are an integer multiple of the base rate counter.  Therefore, the subtask</span></td></tr>
+<tr name="62" id="62">
+<td><a id="l62" class='ln'>62</a></td><td><span class="ct">   * counter is reset when it reaches its limit (zero means run).</span></td></tr>
+<tr name="63" id="63">
+<td><a id="l63" class='ln'>63</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="64" id="64">
+<td><a id="l64" class='ln'>64</a></td><td>  (<a id="64c4" class="tk">rtM</a>-&gt;<a id="64c9" class="tk">Timing</a>.<a id="64c16" class="tk">TaskCounters</a>.<a id="64c29" class="tk">TID</a>[1])<a id="64c36" class="tk">++</a>;</td></tr>
+<tr name="65" id="65">
+<td><a id="l65" class='ln'>65</a></td><td>  <span class="kw">if</span> ((<a id="65c8" class="tk">rtM</a>-&gt;<a id="65c13" class="tk">Timing</a>.<a id="65c20" class="tk">TaskCounters</a>.<a id="65c33" class="tk">TID</a>[1]) <a id="65c41" class="tk">&gt;</a> 9) <span class="br">{</span><span class="ct">/* Sample time: [6.2E-5s, 0.0s] */</span></td></tr>
+<tr name="66" id="66">
+<td><a id="l66" class='ln'>66</a></td><td>    <a id="66c5" class="tk">rtM</a>-&gt;<a id="66c10" class="tk">Timing</a>.<a id="66c17" class="tk">TaskCounters</a>.<a id="66c30" class="tk">TID</a>[1] = 0;</td></tr>
+<tr name="67" id="67">
+<td><a id="l67" class='ln'>67</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="68" id="68">
+<td><a id="l68" class='ln'>68</a></td><td><span class="br">}</span></td></tr>
+<tr name="69" id="69">
+<td><a id="l69" class='ln'>69</a></td><td></td></tr>
+<tr name="70" id="70">
+<td><a id="l70" class='ln'>70</a></td><td><a id="70c1" class="tk">real_T</a> <a id="70c8" class="tk">rt_modd_snf</a>(<a id="70c20" class="tk">real_T</a> <a id="70c27" class="tk">u0</a>, <a id="70c31" class="tk">real_T</a> <a id="70c38" class="tk">u1</a>)</td></tr>
+<tr name="71" id="71">
+<td><a id="l71" class='ln'>71</a></td><td><span class="br">{</span></td></tr>
+<tr name="72" id="72">
+<td><a id="l72" class='ln'>72</a></td><td>  <a id="72c3" class="tk">real_T</a> <a id="72c10" class="tk">q</a>;</td></tr>
+<tr name="73" id="73">
+<td><a id="l73" class='ln'>73</a></td><td>  <a id="73c3" class="tk">real_T</a> <a id="73c10" class="tk">y</a>;</td></tr>
+<tr name="74" id="74">
+<td><a id="l74" class='ln'>74</a></td><td>  <a id="74c3" class="tk">boolean_T</a> <a id="74c13" class="tk">yEq</a>;</td></tr>
+<tr name="75" id="75">
+<td><a id="l75" class='ln'>75</a></td><td>  <a id="75c3" class="tk">y</a> = <a id="75c7" class="tk">u0</a>;</td></tr>
+<tr name="76" id="76">
+<td><a id="l76" class='ln'>76</a></td><td>  <span class="kw">if</span> (<a id="76c7" class="tk">u1</a> <a id="76c10" class="tk">==</a> 0.0) <span class="br">{</span></td></tr>
+<tr name="77" id="77">
+<td><a id="l77" class='ln'>77</a></td><td>    <span class="kw">if</span> (<a id="77c9" class="tk">u0</a> <a id="77c12" class="tk">==</a> 0.0) <span class="br">{</span></td></tr>
+<tr name="78" id="78">
+<td><a id="l78" class='ln'>78</a></td><td>      <a id="78c7" class="tk">y</a> = <a id="78c11" class="tk">u1</a>;</td></tr>
+<tr name="79" id="79">
+<td><a id="l79" class='ln'>79</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="80" id="80">
+<td><a id="l80" class='ln'>80</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="80c14" class="tk">rtIsNaN</a>(<a id="80c22" class="tk">u0</a>) <a id="80c26" class="tk">||</a> <a id="80c29" class="tk">rtIsNaN</a>(<a id="80c37" class="tk">u1</a>) <a id="80c41" class="tk">||</a> <a id="80c44" class="tk">rtIsInf</a>(<a id="80c52" class="tk">u0</a>)) <span class="br">{</span></td></tr>
+<tr name="81" id="81">
+<td><a id="l81" class='ln'>81</a></td><td>    <a id="81c5" class="tk">y</a> = (<a id="81c10" class="tk">rtNaN</a>);</td></tr>
+<tr name="82" id="82">
+<td><a id="l82" class='ln'>82</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="82c14" class="tk">u0</a> <a id="82c17" class="tk">==</a> 0.0) <span class="br">{</span></td></tr>
+<tr name="83" id="83">
+<td><a id="l83" class='ln'>83</a></td><td>    <a id="83c5" class="tk">y</a> = 0.0 <a id="83c13" class="tk">/</a> <a id="83c15" class="tk">u1</a>;</td></tr>
+<tr name="84" id="84">
+<td><a id="l84" class='ln'>84</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="84c14" class="tk">rtIsInf</a>(<a id="84c22" class="tk">u1</a>)) <span class="br">{</span></td></tr>
+<tr name="85" id="85">
+<td><a id="l85" class='ln'>85</a></td><td>    <span class="kw">if</span> ((<a id="85c10" class="tk">u1</a> <a id="85c13" class="tk">&lt;</a> 0.0) <a id="85c20" class="tk">!=</a> (<a id="85c24" class="tk">u0</a> <a id="85c27" class="tk">&lt;</a> 0.0)) <span class="br">{</span></td></tr>
+<tr name="86" id="86">
+<td><a id="l86" class='ln'>86</a></td><td>      <a id="86c7" class="tk">y</a> = <a id="86c11" class="tk">u1</a>;</td></tr>
+<tr name="87" id="87">
+<td><a id="l87" class='ln'>87</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="88" id="88">
+<td><a id="l88" class='ln'>88</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="89" id="89">
+<td><a id="l89" class='ln'>89</a></td><td>    <a id="89c5" class="tk">y</a> = <a id="89c9" class="tk">fmod</a>(<a id="89c14" class="tk">u0</a>, <a id="89c18" class="tk">u1</a>);</td></tr>
+<tr name="90" id="90">
+<td><a id="l90" class='ln'>90</a></td><td>    <a id="90c5" class="tk">yEq</a> = (<a id="90c12" class="tk">y</a> <a id="90c14" class="tk">==</a> 0.0);</td></tr>
+<tr name="91" id="91">
+<td><a id="l91" class='ln'>91</a></td><td>    <span class="kw">if</span> ((<a id="91c10" class="tk">!</a><a id="91c11" class="tk">yEq</a>) <a id="91c16" class="tk">&amp;&amp;</a> (<a id="91c20" class="tk">u1</a> <a id="91c23" class="tk">&gt;</a> <a id="91c25" class="tk">floor</a>(<a id="91c31" class="tk">u1</a>))) <span class="br">{</span></td></tr>
+<tr name="92" id="92">
+<td><a id="l92" class='ln'>92</a></td><td>      <a id="92c7" class="tk">q</a> = <a id="92c11" class="tk">fabs</a>(<a id="92c16" class="tk">u0</a> <a id="92c19" class="tk">/</a> <a id="92c21" class="tk">u1</a>);</td></tr>
+<tr name="93" id="93">
+<td><a id="l93" class='ln'>93</a></td><td>      <a id="93c7" class="tk">yEq</a> = <a id="93c13" class="tk">!</a>(<a id="93c15" class="tk">fabs</a>(<a id="93c20" class="tk">q</a> <a id="93c22" class="tk">-</a> <a id="93c24" class="tk">floor</a>(<a id="93c30" class="tk">q</a> <a id="93c32" class="tk">+</a> 0.5)) <a id="93c40" class="tk">&gt;</a> <a id="93c42" class="tk">DBL_EPSILON</a> <a id="93c54" class="tk">*</a> <a id="93c56" class="tk">q</a>);</td></tr>
+<tr name="94" id="94">
+<td><a id="l94" class='ln'>94</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="95" id="95">
+<td><a id="l95" class='ln'>95</a></td><td></td></tr>
+<tr name="96" id="96">
+<td><a id="l96" class='ln'>96</a></td><td>    <span class="kw">if</span> (<a id="96c9" class="tk">yEq</a>) <span class="br">{</span></td></tr>
+<tr name="97" id="97">
+<td><a id="l97" class='ln'>97</a></td><td>      <a id="97c7" class="tk">y</a> = <a id="97c11" class="tk">u1</a> <a id="97c14" class="tk">*</a> 0.0;</td></tr>
+<tr name="98" id="98">
+<td><a id="l98" class='ln'>98</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="99" id="99">
+<td><a id="l99" class='ln'>99</a></td><td>      <span class="kw">if</span> ((<a id="99c12" class="tk">u0</a> <a id="99c15" class="tk">&lt;</a> 0.0) <a id="99c22" class="tk">!=</a> (<a id="99c26" class="tk">u1</a> <a id="99c29" class="tk">&lt;</a> 0.0)) <span class="br">{</span></td></tr>
+<tr name="100" id="100">
+<td><a id="l100" class='ln'>100</a></td><td>        <a id="100c9" class="tk">y</a> <a id="100c11" class="tk">+=</a> <a id="100c14" class="tk">u1</a>;</td></tr>
+<tr name="101" id="101">
+<td><a id="l101" class='ln'>101</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="102" id="102">
+<td><a id="l102" class='ln'>102</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="103" id="103">
+<td><a id="l103" class='ln'>103</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="104" id="104">
+<td><a id="l104" class='ln'>104</a></td><td></td></tr>
+<tr name="105" id="105">
+<td><a id="l105" class='ln'>105</a></td><td>  <span class="kw">return</span> <a id="105c10" class="tk">y</a>;</td></tr>
+<tr name="106" id="106">
+<td><a id="l106" class='ln'>106</a></td><td><span class="br">}</span></td></tr>
+<tr name="107" id="107">
+<td><a id="l107" class='ln'>107</a></td><td></td></tr>
+<tr name="108" id="108">
+<td><a id="l108" class='ln'>108</a></td><td><a id="108c1" class="tk">real_T</a> <a id="108c8" class="tk">rt_roundd_snf</a>(<a id="108c22" class="tk">real_T</a> <a id="108c29" class="tk">u</a>)</td></tr>
+<tr name="109" id="109">
+<td><a id="l109" class='ln'>109</a></td><td><span class="br">{</span></td></tr>
+<tr name="110" id="110">
+<td><a id="l110" class='ln'>110</a></td><td>  <a id="110c3" class="tk">real_T</a> <a id="110c10" class="tk">y</a>;</td></tr>
+<tr name="111" id="111">
+<td><a id="l111" class='ln'>111</a></td><td>  <span class="kw">if</span> (<a id="111c7" class="tk">fabs</a>(<a id="111c12" class="tk">u</a>) <a id="111c15" class="tk">&lt;</a> 4.503599627370496E+15) <span class="br">{</span></td></tr>
+<tr name="112" id="112">
+<td><a id="l112" class='ln'>112</a></td><td>    <span class="kw">if</span> (<a id="112c9" class="tk">u</a> <a id="112c11" class="tk">&gt;=</a> 0.5) <span class="br">{</span></td></tr>
+<tr name="113" id="113">
+<td><a id="l113" class='ln'>113</a></td><td>      <a id="113c7" class="tk">y</a> = <a id="113c11" class="tk">floor</a>(<a id="113c17" class="tk">u</a> <a id="113c19" class="tk">+</a> 0.5);</td></tr>
+<tr name="114" id="114">
+<td><a id="l114" class='ln'>114</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="114c16" class="tk">u</a> <a id="114c18" class="tk">&gt;</a> <a id="114c20" class="tk">-</a>0.5) <span class="br">{</span></td></tr>
+<tr name="115" id="115">
+<td><a id="l115" class='ln'>115</a></td><td>      <a id="115c7" class="tk">y</a> = <a id="115c11" class="tk">u</a> <a id="115c13" class="tk">*</a> 0.0;</td></tr>
+<tr name="116" id="116">
+<td><a id="l116" class='ln'>116</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="117" id="117">
+<td><a id="l117" class='ln'>117</a></td><td>      <a id="117c7" class="tk">y</a> = <a id="117c11" class="tk">ceil</a>(<a id="117c16" class="tk">u</a> <a id="117c18" class="tk">-</a> 0.5);</td></tr>
+<tr name="118" id="118">
+<td><a id="l118" class='ln'>118</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="119" id="119">
+<td><a id="l119" class='ln'>119</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="120" id="120">
+<td><a id="l120" class='ln'>120</a></td><td>    <a id="120c5" class="tk">y</a> = <a id="120c9" class="tk">u</a>;</td></tr>
+<tr name="121" id="121">
+<td><a id="l121" class='ln'>121</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="122" id="122">
+<td><a id="l122" class='ln'>122</a></td><td></td></tr>
+<tr name="123" id="123">
+<td><a id="l123" class='ln'>123</a></td><td>  <span class="kw">return</span> <a id="123c10" class="tk">y</a>;</td></tr>
+<tr name="124" id="124">
+<td><a id="l124" class='ln'>124</a></td><td><span class="br">}</span></td></tr>
+<tr name="125" id="125">
+<td><a id="l125" class='ln'>125</a></td><td></td></tr>
+<tr name="126" id="126">
+<td><a id="l126" class='ln'>126</a></td><td><span class="ct">/* Model step function */</span></td></tr>
+<tr name="127" id="127">
+<td><a id="l127" class='ln'>127</a></td><td><span class="kw">void</span> <a id="127c6" class="tk">PMSM_Controller_step</a>(<a id="127c27" class="tk">RT_MODEL</a> <a id="127c36" class="tk">*</a><span class="kw">const</span> <a id="127c43" class="tk">rtM</a>, <a id="127c48" class="tk">int16_T</a> <a id="127c56" class="tk">rtU_Vdc</a>, <a id="127c65" class="tk">uint16_T</a> <a id="127c74" class="tk">rtU_Ts</a>,</td></tr>
+<tr name="128" id="128">
+<td><a id="l128" class='ln'>128</a></td><td>  <a id="128c3" class="tk">int16_T</a> <a id="128c11" class="tk">rtU_adc_a</a>, <a id="128c22" class="tk">int16_T</a> <a id="128c30" class="tk">rtU_adc_b</a>, <a id="128c41" class="tk">real_T</a> <a id="128c48" class="tk">rtU_rotor_angle</a>, <a id="128c65" class="tk">int16_T</a></td></tr>
+<tr name="129" id="129">
+<td><a id="l129" class='ln'>129</a></td><td>  <a id="129c3" class="tk">rtU_rotor_speed</a>, <a id="129c20" class="tk">int16_T</a> <a id="129c28" class="tk">rtU_input_target</a>, <a id="129c46" class="tk">uint16_T</a> <a id="129c55" class="tk">rtY_pwm_counts</a>[8], <a id="129c74" class="tk">uint8_T</a></td></tr>
+<tr name="130" id="130">
+<td><a id="l130" class='ln'>130</a></td><td>  <a id="130c3" class="tk">*</a><a id="130c4" class="tk">rtY_sector</a>)</td></tr>
+<tr name="131" id="131">
+<td><a id="l131" class='ln'>131</a></td><td><span class="br">{</span></td></tr>
+<tr name="132" id="132">
+<td><a id="l132" class='ln'>132</a></td><td>  <a id="132c3" class="tk">DW</a> <a id="132c6" class="tk">*</a><a id="132c7" class="tk">rtDW</a> = <a id="132c14" class="tk">rtM</a>-&gt;<a id="132c19" class="tk">dwork</a>;</td></tr>
+<tr name="133" id="133">
+<td><a id="l133" class='ln'>133</a></td><td>  <a id="133c3" class="tk">int32_T</a> <a id="133c11" class="tk">rtb_Sum1_tmp</a>;</td></tr>
+<tr name="134" id="134">
+<td><a id="l134" class='ln'>134</a></td><td>  <a id="134c3" class="tk">int32_T</a> <a id="134c11" class="tk">rtb_Sum3_idx_0</a>;</td></tr>
+<tr name="135" id="135">
+<td><a id="l135" class='ln'>135</a></td><td>  <a id="135c3" class="tk">int32_T</a> <a id="135c11" class="tk">rtb_Sum3_idx_1</a>;</td></tr>
+<tr name="136" id="136">
+<td><a id="l136" class='ln'>136</a></td><td>  <a id="136c3" class="tk">int32_T</a> <a id="136c11" class="tk">tmp</a>;</td></tr>
+<tr name="137" id="137">
+<td><a id="l137" class='ln'>137</a></td><td>  <a id="137c3" class="tk">int32_T</a> <a id="137c11" class="tk">tmp_0</a>;</td></tr>
+<tr name="138" id="138">
+<td><a id="l138" class='ln'>138</a></td><td>  <a id="138c3" class="tk">int16_T</a> <a id="138c11" class="tk">rtb_Divide</a>;</td></tr>
+<tr name="139" id="139">
+<td><a id="l139" class='ln'>139</a></td><td>  <a id="139c3" class="tk">int16_T</a> <a id="139c11" class="tk">rtb_Divide4</a>;</td></tr>
+<tr name="140" id="140">
+<td><a id="l140" class='ln'>140</a></td><td>  <a id="140c3" class="tk">int16_T</a> <a id="140c11" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="141" id="141">
+<td><a id="l141" class='ln'>141</a></td><td>  <a id="141c3" class="tk">int16_T</a> <a id="141c11" class="tk">rtb_Multiply_idx_0</a>;</td></tr>
+<tr name="142" id="142">
+<td><a id="l142" class='ln'>142</a></td><td>  <a id="142c3" class="tk">int16_T</a> <a id="142c11" class="tk">rtb_Multiply_idx_1</a>;</td></tr>
+<tr name="143" id="143">
+<td><a id="l143" class='ln'>143</a></td><td>  <a id="143c3" class="tk">int16_T</a> <a id="143c11" class="tk">rtb_SignPreIntegrator</a>;</td></tr>
+<tr name="144" id="144">
+<td><a id="l144" class='ln'>144</a></td><td>  <a id="144c3" class="tk">int16_T</a> <a id="144c11" class="tk">rtb_SignPreSat</a>;</td></tr>
+<tr name="145" id="145">
+<td><a id="l145" class='ln'>145</a></td><td>  <a id="145c3" class="tk">int16_T</a> <a id="145c11" class="tk">rtb_SignPreSat_k</a>;</td></tr>
+<tr name="146" id="146">
+<td><a id="l146" class='ln'>146</a></td><td>  <a id="146c3" class="tk">int16_T</a> <a id="146c11" class="tk">rtb_Sum1</a>;</td></tr>
+<tr name="147" id="147">
+<td><a id="l147" class='ln'>147</a></td><td>  <a id="147c3" class="tk">int16_T</a> <a id="147c11" class="tk">rtb_Sum2</a>;</td></tr>
+<tr name="148" id="148">
+<td><a id="l148" class='ln'>148</a></td><td>  <a id="148c3" class="tk">int16_T</a> <a id="148c11" class="tk">rtb_Sum3_l</a>;</td></tr>
+<tr name="149" id="149">
+<td><a id="l149" class='ln'>149</a></td><td>  <a id="149c3" class="tk">uint16_T</a> <a id="149c12" class="tk">rtb_DataTypeConversion3</a>;</td></tr>
+<tr name="150" id="150">
+<td><a id="l150" class='ln'>150</a></td><td>  <a id="150c3" class="tk">uint16_T</a> <a id="150c12" class="tk">rtb_MultiportSwitch_idx_0</a>;</td></tr>
+<tr name="151" id="151">
+<td><a id="l151" class='ln'>151</a></td><td>  <a id="151c3" class="tk">uint16_T</a> <a id="151c12" class="tk">rtb_MultiportSwitch_idx_1</a>;</td></tr>
+<tr name="152" id="152">
+<td><a id="l152" class='ln'>152</a></td><td>  <a id="152c3" class="tk">uint16_T</a> <a id="152c12" class="tk">rtb_o_samp_p1</a>;</td></tr>
+<tr name="153" id="153">
+<td><a id="l153" class='ln'>153</a></td><td>  <a id="153c3" class="tk">uint8_T</a> <a id="153c11" class="tk">rtb_DataTypeConversion_a</a>;</td></tr>
+<tr name="154" id="154">
+<td><a id="l154" class='ln'>154</a></td><td>  <a id="154c3" class="tk">boolean_T</a> <a id="154c13" class="tk">rtb_NotEqual</a>;</td></tr>
+<tr name="155" id="155">
+<td><a id="l155" class='ln'>155</a></td><td></td></tr>
+<tr name="156" id="156">
+<td><a id="l156" class='ln'>156</a></td><td>  <span class="ct">/* Gain: '&lt;S1&gt;/Multiply' incorporates:</span></td></tr>
+<tr name="157" id="157">
+<td><a id="l157" class='ln'>157</a></td><td><span class="ct">   *  Inport: '&lt;Root&gt;/adc_a'</span></td></tr>
+<tr name="158" id="158">
+<td><a id="l158" class='ln'>158</a></td><td><span class="ct">   *  Inport: '&lt;Root&gt;/adc_b'</span></td></tr>
+<tr name="159" id="159">
+<td><a id="l159" class='ln'>159</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="160" id="160">
+<td><a id="l160" class='ln'>160</a></td><td>  <a id="160c3" class="tk">rtb_Multiply_idx_0</a> = (<a id="160c25" class="tk">int16_T</a>)((19761 <a id="160c41" class="tk">*</a> <a id="160c43" class="tk">rtU_adc_a</a>) <a id="160c54" class="tk">&gt;&gt;</a> 17);</td></tr>
+<tr name="161" id="161">
+<td><a id="l161" class='ln'>161</a></td><td>  <a id="161c3" class="tk">rtb_Multiply_idx_1</a> = (<a id="161c25" class="tk">int16_T</a>)((19761 <a id="161c41" class="tk">*</a> <a id="161c43" class="tk">rtU_adc_b</a>) <a id="161c54" class="tk">&gt;&gt;</a> 17);</td></tr>
+<tr name="162" id="162">
+<td><a id="l162" class='ln'>162</a></td><td></td></tr>
+<tr name="163" id="163">
+<td><a id="l163" class='ln'>163</a></td><td>  <span class="ct">/* Outputs for Atomic SubSystem: '&lt;S1&gt;/controller' */</span></td></tr>
+<tr name="164" id="164">
+<td><a id="l164" class='ln'>164</a></td><td>  <span class="ct">/* PreLookup: '&lt;S23&gt;/a_elecAngle_XA' incorporates:</span></td></tr>
+<tr name="165" id="165">
+<td><a id="l165" class='ln'>165</a></td><td><span class="ct">   *  Constant: '&lt;S1&gt;/Constant1'</span></td></tr>
+<tr name="166" id="166">
+<td><a id="l166" class='ln'>166</a></td><td><span class="ct">   *  Gain: '&lt;S1&gt;/Gain'</span></td></tr>
+<tr name="167" id="167">
+<td><a id="l167" class='ln'>167</a></td><td><span class="ct">   *  Inport: '&lt;Root&gt;/rotor_angle'</span></td></tr>
+<tr name="168" id="168">
+<td><a id="l168" class='ln'>168</a></td><td><span class="ct">   *  Math: '&lt;S1&gt;/Math Function'</span></td></tr>
+<tr name="169" id="169">
+<td><a id="l169" class='ln'>169</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="170" id="170">
+<td><a id="l170" class='ln'>170</a></td><td>  <a id="170c3" class="tk">rtb_o_samp_p1</a> = <a id="170c19" class="tk">plook_u16u16_evencka</a>((<a id="170c41" class="tk">uint16_T</a>)(57.295779513082323 <a id="170c70" class="tk">*</a></td></tr>
+<tr name="171" id="171">
+<td><a id="l171" class='ln'>171</a></td><td>    <a id="171c5" class="tk">rt_modd_snf</a>(<a id="171c17" class="tk">rtU_rotor_angle</a>, 6.2831853071795862)), 0U, 1U, 360U);</td></tr>
+<tr name="172" id="172">
+<td><a id="l172" class='ln'>172</a></td><td></td></tr>
+<tr name="173" id="173">
+<td><a id="l173" class='ln'>173</a></td><td>  <span class="ct">/* Sum: '&lt;S15&gt;/Add1' incorporates:</span></td></tr>
+<tr name="174" id="174">
+<td><a id="l174" class='ln'>174</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide4'</span></td></tr>
+<tr name="175" id="175">
+<td><a id="l175" class='ln'>175</a></td><td><span class="ct">   *  Sum: '&lt;S15&gt;/Add'</span></td></tr>
+<tr name="176" id="176">
+<td><a id="l176" class='ln'>176</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="177" id="177">
+<td><a id="l177" class='ln'>177</a></td><td>  <a id="177c3" class="tk">rtb_Divide4</a> = (<a id="177c18" class="tk">int16_T</a>)<a id="177c26" class="tk">-</a>(<a id="177c28" class="tk">rtb_Multiply_idx_0</a> <a id="177c47" class="tk">+</a> <a id="177c49" class="tk">rtb_Multiply_idx_1</a>);</td></tr>
+<tr name="178" id="178">
+<td><a id="l178" class='ln'>178</a></td><td></td></tr>
+<tr name="179" id="179">
+<td><a id="l179" class='ln'>179</a></td><td>  <span class="ct">/* Gain: '&lt;S20&gt;/Gain1' incorporates:</span></td></tr>
+<tr name="180" id="180">
+<td><a id="l180" class='ln'>180</a></td><td><span class="ct">   *  Gain: '&lt;S20&gt;/Gain'</span></td></tr>
+<tr name="181" id="181">
+<td><a id="l181" class='ln'>181</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide'</span></td></tr>
+<tr name="182" id="182">
+<td><a id="l182" class='ln'>182</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide4'</span></td></tr>
+<tr name="183" id="183">
+<td><a id="l183" class='ln'>183</a></td><td><span class="ct">   *  Sum: '&lt;S20&gt;/Add'</span></td></tr>
+<tr name="184" id="184">
+<td><a id="l184" class='ln'>184</a></td><td><span class="ct">   *  Sum: '&lt;S20&gt;/Add1'</span></td></tr>
+<tr name="185" id="185">
+<td><a id="l185" class='ln'>185</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="186" id="186">
+<td><a id="l186" class='ln'>186</a></td><td>  <a id="186c3" class="tk">rtb_Divide</a> = (<a id="186c17" class="tk">int16_T</a>)(((((<a id="186c30" class="tk">rtb_Multiply_idx_0</a> <a id="186c49" class="tk">&lt;&lt;</a> 1) <a id="186c55" class="tk">-</a> <a id="186c57" class="tk">rtb_Multiply_idx_1</a>) <a id="186c77" class="tk">-</a></td></tr>
+<tr name="187" id="187">
+<td><a id="l187" class='ln'>187</a></td><td>    <a id="187c5" class="tk">rtb_Divide4</a>) <a id="187c18" class="tk">*</a> 21845) <a id="187c27" class="tk">&gt;&gt;</a> 16);</td></tr>
+<tr name="188" id="188">
+<td><a id="l188" class='ln'>188</a></td><td></td></tr>
+<tr name="189" id="189">
+<td><a id="l189" class='ln'>189</a></td><td>  <span class="ct">/* Gain: '&lt;S20&gt;/Gain2' incorporates:</span></td></tr>
+<tr name="190" id="190">
+<td><a id="l190" class='ln'>190</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide4'</span></td></tr>
+<tr name="191" id="191">
+<td><a id="l191" class='ln'>191</a></td><td><span class="ct">   *  Sum: '&lt;S20&gt;/Add2'</span></td></tr>
+<tr name="192" id="192">
+<td><a id="l192" class='ln'>192</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="193" id="193">
+<td><a id="l193" class='ln'>193</a></td><td>  <a id="193c3" class="tk">rtb_Divide4</a> = (<a id="193c18" class="tk">int16_T</a>)(((<a id="193c29" class="tk">rtb_Multiply_idx_1</a> <a id="193c48" class="tk">-</a> <a id="193c50" class="tk">rtb_Divide4</a>) <a id="193c63" class="tk">*</a> 18919) <a id="193c72" class="tk">&gt;&gt;</a> 15);</td></tr>
+<tr name="194" id="194">
+<td><a id="l194" class='ln'>194</a></td><td></td></tr>
+<tr name="195" id="195">
+<td><a id="l195" class='ln'>195</a></td><td>  <span class="ct">/* Sum: '&lt;S22&gt;/Sum1' incorporates:</span></td></tr>
+<tr name="196" id="196">
+<td><a id="l196" class='ln'>196</a></td><td><span class="ct">   *  Interpolation_n-D: '&lt;S23&gt;/r_cos_M1'</span></td></tr>
+<tr name="197" id="197">
+<td><a id="l197" class='ln'>197</a></td><td><span class="ct">   *  Interpolation_n-D: '&lt;S23&gt;/r_sin_M1'</span></td></tr>
+<tr name="198" id="198">
+<td><a id="l198" class='ln'>198</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide'</span></td></tr>
+<tr name="199" id="199">
+<td><a id="l199" class='ln'>199</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide4'</span></td></tr>
+<tr name="200" id="200">
+<td><a id="l200" class='ln'>200</a></td><td><span class="ct">   *  Product: '&lt;S22&gt;/Divide2'</span></td></tr>
+<tr name="201" id="201">
+<td><a id="l201" class='ln'>201</a></td><td><span class="ct">   *  Product: '&lt;S22&gt;/Divide3'</span></td></tr>
+<tr name="202" id="202">
+<td><a id="l202" class='ln'>202</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="203" id="203">
+<td><a id="l203" class='ln'>203</a></td><td>  <a id="203c3" class="tk">rtb_Sum1_tmp</a> = ((<a id="203c20" class="tk">rtb_Divide</a> <a id="203c31" class="tk">*</a> <a id="203c33" class="tk">rtConstP</a>.<a id="203c42" class="tk">r_cos_M1_Table</a>[<a id="203c57" class="tk">rtb_o_samp_p1</a>]) <a id="203c73" class="tk">&gt;&gt;</a> 14) <a id="203c80" class="tk">+</a></td></tr>
+<tr name="204" id="204">
+<td><a id="l204" class='ln'>204</a></td><td>    ((<a id="204c7" class="tk">rtb_Divide4</a> <a id="204c19" class="tk">*</a> <a id="204c21" class="tk">rtConstP</a>.<a id="204c30" class="tk">r_sin_M1_Table</a>[<a id="204c45" class="tk">rtb_o_samp_p1</a>]) <a id="204c61" class="tk">&gt;&gt;</a> 14);</td></tr>
+<tr name="205" id="205">
+<td><a id="l205" class='ln'>205</a></td><td>  <span class="kw">if</span> (<a id="205c7" class="tk">rtb_Sum1_tmp</a> <a id="205c20" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="206" id="206">
+<td><a id="l206" class='ln'>206</a></td><td>    <a id="206c5" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="207" id="207">
+<td><a id="l207" class='ln'>207</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="208" id="208">
+<td><a id="l208" class='ln'>208</a></td><td>    <span class="kw">if</span> (<a id="208c9" class="tk">rtb_Sum1_tmp</a> <a id="208c22" class="tk">&lt;</a> <a id="208c24" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="209" id="209">
+<td><a id="l209" class='ln'>209</a></td><td>      <a id="209c7" class="tk">rtb_Sum1_tmp</a> = <a id="209c22" class="tk">-</a>32768;</td></tr>
+<tr name="210" id="210">
+<td><a id="l210" class='ln'>210</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="211" id="211">
+<td><a id="l211" class='ln'>211</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="212" id="212">
+<td><a id="l212" class='ln'>212</a></td><td></td></tr>
+<tr name="213" id="213">
+<td><a id="l213" class='ln'>213</a></td><td>  <span class="ct">/* Sum: '&lt;S21&gt;/Sum2' incorporates:</span></td></tr>
+<tr name="214" id="214">
+<td><a id="l214" class='ln'>214</a></td><td><span class="ct">   *  Sum: '&lt;S22&gt;/Sum1'</span></td></tr>
+<tr name="215" id="215">
+<td><a id="l215" class='ln'>215</a></td><td><span class="ct">   *  UnitDelay: '&lt;S21&gt;/UnitDelay1'</span></td></tr>
+<tr name="216" id="216">
+<td><a id="l216" class='ln'>216</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="217" id="217">
+<td><a id="l217" class='ln'>217</a></td><td>  <a id="217c3" class="tk">rtb_Sum1_tmp</a> <a id="217c16" class="tk">-=</a> <a id="217c19" class="tk">rtDW</a>-&gt;<a id="217c25" class="tk">UnitDelay1_DSTATE</a>[0] <a id="217c46" class="tk">&gt;&gt;</a> 16;</td></tr>
+<tr name="218" id="218">
+<td><a id="l218" class='ln'>218</a></td><td>  <span class="kw">if</span> (<a id="218c7" class="tk">rtb_Sum1_tmp</a> <a id="218c20" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="219" id="219">
+<td><a id="l219" class='ln'>219</a></td><td>    <a id="219c5" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="220" id="220">
+<td><a id="l220" class='ln'>220</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="221" id="221">
+<td><a id="l221" class='ln'>221</a></td><td>    <span class="kw">if</span> (<a id="221c9" class="tk">rtb_Sum1_tmp</a> <a id="221c22" class="tk">&lt;</a> <a id="221c24" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="222" id="222">
+<td><a id="l222" class='ln'>222</a></td><td>      <a id="222c7" class="tk">rtb_Sum1_tmp</a> = <a id="222c22" class="tk">-</a>32768;</td></tr>
+<tr name="223" id="223">
+<td><a id="l223" class='ln'>223</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="224" id="224">
+<td><a id="l224" class='ln'>224</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="225" id="225">
+<td><a id="l225" class='ln'>225</a></td><td></td></tr>
+<tr name="226" id="226">
+<td><a id="l226" class='ln'>226</a></td><td>  <span class="ct">/* Sum: '&lt;S21&gt;/Sum3' incorporates:</span></td></tr>
+<tr name="227" id="227">
+<td><a id="l227" class='ln'>227</a></td><td><span class="ct">   *  Constant: '&lt;S15&gt;/Constant'</span></td></tr>
+<tr name="228" id="228">
+<td><a id="l228" class='ln'>228</a></td><td><span class="ct">   *  Product: '&lt;S21&gt;/Divide3'</span></td></tr>
+<tr name="229" id="229">
+<td><a id="l229" class='ln'>229</a></td><td><span class="ct">   *  Sum: '&lt;S21&gt;/Sum2'</span></td></tr>
+<tr name="230" id="230">
+<td><a id="l230" class='ln'>230</a></td><td><span class="ct">   *  UnitDelay: '&lt;S21&gt;/UnitDelay1'</span></td></tr>
+<tr name="231" id="231">
+<td><a id="l231" class='ln'>231</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="232" id="232">
+<td><a id="l232" class='ln'>232</a></td><td>  <a id="232c3" class="tk">rtb_Sum3_idx_0</a> = 13107 <a id="232c26" class="tk">*</a> <a id="232c28" class="tk">rtb_Sum1_tmp</a> <a id="232c41" class="tk">+</a> <a id="232c43" class="tk">rtDW</a>-&gt;<a id="232c49" class="tk">UnitDelay1_DSTATE</a>[0];</td></tr>
+<tr name="233" id="233">
+<td><a id="l233" class='ln'>233</a></td><td></td></tr>
+<tr name="234" id="234">
+<td><a id="l234" class='ln'>234</a></td><td>  <span class="ct">/* Sum: '&lt;S22&gt;/Sum6' incorporates:</span></td></tr>
+<tr name="235" id="235">
+<td><a id="l235" class='ln'>235</a></td><td><span class="ct">   *  Interpolation_n-D: '&lt;S23&gt;/r_cos_M1'</span></td></tr>
+<tr name="236" id="236">
+<td><a id="l236" class='ln'>236</a></td><td><span class="ct">   *  Interpolation_n-D: '&lt;S23&gt;/r_sin_M1'</span></td></tr>
+<tr name="237" id="237">
+<td><a id="l237" class='ln'>237</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide'</span></td></tr>
+<tr name="238" id="238">
+<td><a id="l238" class='ln'>238</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide4'</span></td></tr>
+<tr name="239" id="239">
+<td><a id="l239" class='ln'>239</a></td><td><span class="ct">   *  Product: '&lt;S22&gt;/Divide1'</span></td></tr>
+<tr name="240" id="240">
+<td><a id="l240" class='ln'>240</a></td><td><span class="ct">   *  Product: '&lt;S22&gt;/Divide4'</span></td></tr>
+<tr name="241" id="241">
+<td><a id="l241" class='ln'>241</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="242" id="242">
+<td><a id="l242" class='ln'>242</a></td><td>  <a id="242c3" class="tk">rtb_Sum1_tmp</a> = ((<a id="242c20" class="tk">rtb_Divide4</a> <a id="242c32" class="tk">*</a> <a id="242c34" class="tk">rtConstP</a>.<a id="242c43" class="tk">r_cos_M1_Table</a>[<a id="242c58" class="tk">rtb_o_samp_p1</a>]) <a id="242c74" class="tk">&gt;&gt;</a> 14)</td></tr>
+<tr name="243" id="243">
+<td><a id="l243" class='ln'>243</a></td><td>    <a id="243c5" class="tk">-</a> ((<a id="243c9" class="tk">rtb_Divide</a> <a id="243c20" class="tk">*</a> <a id="243c22" class="tk">rtConstP</a>.<a id="243c31" class="tk">r_sin_M1_Table</a>[<a id="243c46" class="tk">rtb_o_samp_p1</a>]) <a id="243c62" class="tk">&gt;&gt;</a> 14);</td></tr>
+<tr name="244" id="244">
+<td><a id="l244" class='ln'>244</a></td><td>  <span class="kw">if</span> (<a id="244c7" class="tk">rtb_Sum1_tmp</a> <a id="244c20" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="245" id="245">
+<td><a id="l245" class='ln'>245</a></td><td>    <a id="245c5" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="246" id="246">
+<td><a id="l246" class='ln'>246</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="247" id="247">
+<td><a id="l247" class='ln'>247</a></td><td>    <span class="kw">if</span> (<a id="247c9" class="tk">rtb_Sum1_tmp</a> <a id="247c22" class="tk">&lt;</a> <a id="247c24" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="248" id="248">
+<td><a id="l248" class='ln'>248</a></td><td>      <a id="248c7" class="tk">rtb_Sum1_tmp</a> = <a id="248c22" class="tk">-</a>32768;</td></tr>
+<tr name="249" id="249">
+<td><a id="l249" class='ln'>249</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="250" id="250">
+<td><a id="l250" class='ln'>250</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="251" id="251">
+<td><a id="l251" class='ln'>251</a></td><td></td></tr>
+<tr name="252" id="252">
+<td><a id="l252" class='ln'>252</a></td><td>  <span class="ct">/* Sum: '&lt;S21&gt;/Sum2' incorporates:</span></td></tr>
+<tr name="253" id="253">
+<td><a id="l253" class='ln'>253</a></td><td><span class="ct">   *  Sum: '&lt;S22&gt;/Sum6'</span></td></tr>
+<tr name="254" id="254">
+<td><a id="l254" class='ln'>254</a></td><td><span class="ct">   *  UnitDelay: '&lt;S21&gt;/UnitDelay1'</span></td></tr>
+<tr name="255" id="255">
+<td><a id="l255" class='ln'>255</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="256" id="256">
+<td><a id="l256" class='ln'>256</a></td><td>  <a id="256c3" class="tk">rtb_Sum1_tmp</a> <a id="256c16" class="tk">-=</a> <a id="256c19" class="tk">rtDW</a>-&gt;<a id="256c25" class="tk">UnitDelay1_DSTATE</a>[1] <a id="256c46" class="tk">&gt;&gt;</a> 16;</td></tr>
+<tr name="257" id="257">
+<td><a id="l257" class='ln'>257</a></td><td>  <span class="kw">if</span> (<a id="257c7" class="tk">rtb_Sum1_tmp</a> <a id="257c20" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="258" id="258">
+<td><a id="l258" class='ln'>258</a></td><td>    <a id="258c5" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="259" id="259">
+<td><a id="l259" class='ln'>259</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="260" id="260">
+<td><a id="l260" class='ln'>260</a></td><td>    <span class="kw">if</span> (<a id="260c9" class="tk">rtb_Sum1_tmp</a> <a id="260c22" class="tk">&lt;</a> <a id="260c24" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="261" id="261">
+<td><a id="l261" class='ln'>261</a></td><td>      <a id="261c7" class="tk">rtb_Sum1_tmp</a> = <a id="261c22" class="tk">-</a>32768;</td></tr>
+<tr name="262" id="262">
+<td><a id="l262" class='ln'>262</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="263" id="263">
+<td><a id="l263" class='ln'>263</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="264" id="264">
+<td><a id="l264" class='ln'>264</a></td><td></td></tr>
+<tr name="265" id="265">
+<td><a id="l265" class='ln'>265</a></td><td>  <span class="ct">/* Sum: '&lt;S21&gt;/Sum3' incorporates:</span></td></tr>
+<tr name="266" id="266">
+<td><a id="l266" class='ln'>266</a></td><td><span class="ct">   *  Constant: '&lt;S15&gt;/Constant'</span></td></tr>
+<tr name="267" id="267">
+<td><a id="l267" class='ln'>267</a></td><td><span class="ct">   *  Product: '&lt;S21&gt;/Divide3'</span></td></tr>
+<tr name="268" id="268">
+<td><a id="l268" class='ln'>268</a></td><td><span class="ct">   *  Sum: '&lt;S21&gt;/Sum2'</span></td></tr>
+<tr name="269" id="269">
+<td><a id="l269" class='ln'>269</a></td><td><span class="ct">   *  UnitDelay: '&lt;S21&gt;/UnitDelay1'</span></td></tr>
+<tr name="270" id="270">
+<td><a id="l270" class='ln'>270</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="271" id="271">
+<td><a id="l271" class='ln'>271</a></td><td>  <a id="271c3" class="tk">rtb_Sum3_idx_1</a> = 13107 <a id="271c26" class="tk">*</a> <a id="271c28" class="tk">rtb_Sum1_tmp</a> <a id="271c41" class="tk">+</a> <a id="271c43" class="tk">rtDW</a>-&gt;<a id="271c49" class="tk">UnitDelay1_DSTATE</a>[1];</td></tr>
+<tr name="272" id="272">
+<td><a id="l272" class='ln'>272</a></td><td></td></tr>
+<tr name="273" id="273">
+<td><a id="l273" class='ln'>273</a></td><td>  <span class="ct">/* DataTypeConversion: '&lt;S21&gt;/Data Type Conversion' incorporates:</span></td></tr>
+<tr name="274" id="274">
+<td><a id="l274" class='ln'>274</a></td><td><span class="ct">   *  Sum: '&lt;S21&gt;/Sum3'</span></td></tr>
+<tr name="275" id="275">
+<td><a id="l275" class='ln'>275</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="276" id="276">
+<td><a id="l276" class='ln'>276</a></td><td>  <a id="276c3" class="tk">rtb_Multiply_idx_0</a> = (<a id="276c25" class="tk">int16_T</a>)(<a id="276c34" class="tk">rtb_Sum3_idx_0</a> <a id="276c49" class="tk">&gt;&gt;</a> 16);</td></tr>
+<tr name="277" id="277">
+<td><a id="l277" class='ln'>277</a></td><td></td></tr>
+<tr name="278" id="278">
+<td><a id="l278" class='ln'>278</a></td><td>  <span class="ct">/* Sum: '&lt;S69&gt;/Sum' incorporates:</span></td></tr>
+<tr name="279" id="279">
+<td><a id="l279" class='ln'>279</a></td><td><span class="ct">   *  DiscreteIntegrator: '&lt;S60&gt;/Integrator'</span></td></tr>
+<tr name="280" id="280">
+<td><a id="l280" class='ln'>280</a></td><td><span class="ct">   *  Gain: '&lt;S65&gt;/Proportional Gain'</span></td></tr>
+<tr name="281" id="281">
+<td><a id="l281" class='ln'>281</a></td><td><span class="ct">   *  Signum: '&lt;S51&gt;/SignPreSat'</span></td></tr>
+<tr name="282" id="282">
+<td><a id="l282" class='ln'>282</a></td><td><span class="ct">   *  Sum: '&lt;S16&gt;/Sum1'</span></td></tr>
+<tr name="283" id="283">
+<td><a id="l283" class='ln'>283</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="284" id="284">
+<td><a id="l284" class='ln'>284</a></td><td>  <a id="284c3" class="tk">rtb_Multiply_idx_1</a> = (<a id="284c25" class="tk">int16_T</a>)((((<a id="284c37" class="tk">int16_T</a>)(9 <a id="284c48" class="tk">*</a> (<a id="284c51" class="tk">int16_T</a>)<a id="284c59" class="tk">-</a><a id="284c60" class="tk">rtb_Multiply_idx_0</a>) <a id="284c80" class="tk">&lt;&lt;</a></td></tr>
+<tr name="285" id="285">
+<td><a id="l285" class='ln'>285</a></td><td>    15) <a id="285c9" class="tk">+</a> (<a id="285c12" class="tk">int32_T</a>)((<a id="285c22" class="tk">rtDW</a>-&gt;<a id="285c28" class="tk">Integrator_DSTATE</a> <a id="285c46" class="tk">*</a> 1704243LL) <a id="285c59" class="tk">&gt;&gt;</a> 23)) <a id="285c67" class="tk">&gt;&gt;</a> 15);</td></tr>
+<tr name="286" id="286">
+<td><a id="l286" class='ln'>286</a></td><td></td></tr>
+<tr name="287" id="287">
+<td><a id="l287" class='ln'>287</a></td><td>  <span class="ct">/* Saturate: '&lt;S67&gt;/Saturation' incorporates:</span></td></tr>
+<tr name="288" id="288">
+<td><a id="l288" class='ln'>288</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide'</span></td></tr>
+<tr name="289" id="289">
+<td><a id="l289" class='ln'>289</a></td><td><span class="ct">   *  Signum: '&lt;S51&gt;/SignPreSat'</span></td></tr>
+<tr name="290" id="290">
+<td><a id="l290" class='ln'>290</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="291" id="291">
+<td><a id="l291" class='ln'>291</a></td><td>  <span class="kw">if</span> (<a id="291c7" class="tk">rtb_Multiply_idx_1</a> <a id="291c26" class="tk">&gt;</a> 8960) <span class="br">{</span></td></tr>
+<tr name="292" id="292">
+<td><a id="l292" class='ln'>292</a></td><td>    <a id="292c5" class="tk">rtb_Divide</a> = 8960;</td></tr>
+<tr name="293" id="293">
+<td><a id="l293" class='ln'>293</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="293c14" class="tk">rtb_Multiply_idx_1</a> <a id="293c33" class="tk">&lt;</a> <a id="293c35" class="tk">-</a>8960) <span class="br">{</span></td></tr>
+<tr name="294" id="294">
+<td><a id="l294" class='ln'>294</a></td><td>    <a id="294c5" class="tk">rtb_Divide</a> = <a id="294c18" class="tk">-</a>8960;</td></tr>
+<tr name="295" id="295">
+<td><a id="l295" class='ln'>295</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="296" id="296">
+<td><a id="l296" class='ln'>296</a></td><td>    <a id="296c5" class="tk">rtb_Divide</a> = <a id="296c18" class="tk">rtb_Multiply_idx_1</a>;</td></tr>
+<tr name="297" id="297">
+<td><a id="l297" class='ln'>297</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="298" id="298">
+<td><a id="l298" class='ln'>298</a></td><td></td></tr>
+<tr name="299" id="299">
+<td><a id="l299" class='ln'>299</a></td><td>  <span class="ct">/* End of Saturate: '&lt;S67&gt;/Saturation' */</span></td></tr>
+<tr name="300" id="300">
+<td><a id="l300" class='ln'>300</a></td><td></td></tr>
+<tr name="301" id="301">
+<td><a id="l301" class='ln'>301</a></td><td>  <span class="ct">/* Sum: '&lt;S16&gt;/Sum3' incorporates:</span></td></tr>
+<tr name="302" id="302">
+<td><a id="l302" class='ln'>302</a></td><td><span class="ct">   *  Inport: '&lt;Root&gt;/input_target'</span></td></tr>
+<tr name="303" id="303">
+<td><a id="l303" class='ln'>303</a></td><td><span class="ct">   *  Inport: '&lt;Root&gt;/rotor_speed'</span></td></tr>
+<tr name="304" id="304">
+<td><a id="l304" class='ln'>304</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="305" id="305">
+<td><a id="l305" class='ln'>305</a></td><td>  <a id="305c3" class="tk">rtb_Sum3_l</a> = (<a id="305c17" class="tk">int16_T</a>)(<a id="305c26" class="tk">rtU_input_target</a> <a id="305c43" class="tk">-</a> <a id="305c45" class="tk">rtU_rotor_speed</a>);</td></tr>
+<tr name="306" id="306">
+<td><a id="l306" class='ln'>306</a></td><td></td></tr>
+<tr name="307" id="307">
+<td><a id="l307" class='ln'>307</a></td><td>  <span class="ct">/* Sum: '&lt;S169&gt;/Sum' incorporates:</span></td></tr>
+<tr name="308" id="308">
+<td><a id="l308" class='ln'>308</a></td><td><span class="ct">   *  DiscreteIntegrator: '&lt;S160&gt;/Integrator'</span></td></tr>
+<tr name="309" id="309">
+<td><a id="l309" class='ln'>309</a></td><td><span class="ct">   *  Gain: '&lt;S165&gt;/Proportional Gain'</span></td></tr>
+<tr name="310" id="310">
+<td><a id="l310" class='ln'>310</a></td><td><span class="ct">   *  Signum: '&lt;S151&gt;/SignPreSat'</span></td></tr>
+<tr name="311" id="311">
+<td><a id="l311" class='ln'>311</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="312" id="312">
+<td><a id="l312" class='ln'>312</a></td><td>  <a id="312c3" class="tk">rtb_SignPreSat</a> = (<a id="312c21" class="tk">int16_T</a>)((<a id="312c31" class="tk">rtDW</a>-&gt;<a id="312c37" class="tk">Integrator_DSTATE_i</a> <a id="312c57" class="tk">*</a> 26629 <a id="312c65" class="tk">&lt;</a> 0 <a id="312c69" class="tk">?</a> <a id="312c71" class="tk">-</a>1 <a id="312c74" class="tk">:</a> 0) <a id="312c79" class="tk">+</a></td></tr>
+<tr name="313" id="313">
+<td><a id="l313" class='ln'>313</a></td><td>    (<a id="313c6" class="tk">rtb_Sum3_l</a> <a id="313c17" class="tk">&lt;&lt;</a> 4));</td></tr>
+<tr name="314" id="314">
+<td><a id="l314" class='ln'>314</a></td><td></td></tr>
+<tr name="315" id="315">
+<td><a id="l315" class='ln'>315</a></td><td>  <span class="ct">/* Saturate: '&lt;S167&gt;/Saturation' incorporates:</span></td></tr>
+<tr name="316" id="316">
+<td><a id="l316" class='ln'>316</a></td><td><span class="ct">   *  Signum: '&lt;S151&gt;/SignPreSat'</span></td></tr>
+<tr name="317" id="317">
+<td><a id="l317" class='ln'>317</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="318" id="318">
+<td><a id="l318" class='ln'>318</a></td><td>  <span class="kw">if</span> (<a id="318c7" class="tk">rtb_SignPreSat</a> <a id="318c22" class="tk">&gt;</a> 800) <span class="br">{</span></td></tr>
+<tr name="319" id="319">
+<td><a id="l319" class='ln'>319</a></td><td>    <a id="319c5" class="tk">rtb_Divide4</a> = 800;</td></tr>
+<tr name="320" id="320">
+<td><a id="l320" class='ln'>320</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="320c14" class="tk">rtb_SignPreSat</a> <a id="320c29" class="tk">&lt;</a> <a id="320c31" class="tk">-</a>800) <span class="br">{</span></td></tr>
+<tr name="321" id="321">
+<td><a id="l321" class='ln'>321</a></td><td>    <a id="321c5" class="tk">rtb_Divide4</a> = <a id="321c19" class="tk">-</a>800;</td></tr>
+<tr name="322" id="322">
+<td><a id="l322" class='ln'>322</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="323" id="323">
+<td><a id="l323" class='ln'>323</a></td><td>    <a id="323c5" class="tk">rtb_Divide4</a> = <a id="323c19" class="tk">rtb_SignPreSat</a>;</td></tr>
+<tr name="324" id="324">
+<td><a id="l324" class='ln'>324</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="325" id="325">
+<td><a id="l325" class='ln'>325</a></td><td></td></tr>
+<tr name="326" id="326">
+<td><a id="l326" class='ln'>326</a></td><td>  <span class="ct">/* End of Saturate: '&lt;S167&gt;/Saturation' */</span></td></tr>
+<tr name="327" id="327">
+<td><a id="l327" class='ln'>327</a></td><td></td></tr>
+<tr name="328" id="328">
+<td><a id="l328" class='ln'>328</a></td><td>  <span class="ct">/* Sum: '&lt;S16&gt;/Sum2' incorporates:</span></td></tr>
+<tr name="329" id="329">
+<td><a id="l329" class='ln'>329</a></td><td><span class="ct">   *  DataTypeConversion: '&lt;S21&gt;/Data Type Conversion'</span></td></tr>
+<tr name="330" id="330">
+<td><a id="l330" class='ln'>330</a></td><td><span class="ct">   *  Sum: '&lt;S21&gt;/Sum3'</span></td></tr>
+<tr name="331" id="331">
+<td><a id="l331" class='ln'>331</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="332" id="332">
+<td><a id="l332" class='ln'>332</a></td><td>  <a id="332c3" class="tk">rtb_Sum2</a> = (<a id="332c15" class="tk">int16_T</a>)(<a id="332c24" class="tk">rtb_Divide4</a> <a id="332c36" class="tk">-</a> (<a id="332c39" class="tk">int16_T</a>)(<a id="332c48" class="tk">rtb_Sum3_idx_1</a> <a id="332c63" class="tk">&gt;&gt;</a> 16));</td></tr>
+<tr name="333" id="333">
+<td><a id="l333" class='ln'>333</a></td><td></td></tr>
+<tr name="334" id="334">
+<td><a id="l334" class='ln'>334</a></td><td>  <span class="ct">/* Sum: '&lt;S119&gt;/Sum' incorporates:</span></td></tr>
+<tr name="335" id="335">
+<td><a id="l335" class='ln'>335</a></td><td><span class="ct">   *  DiscreteIntegrator: '&lt;S110&gt;/Integrator'</span></td></tr>
+<tr name="336" id="336">
+<td><a id="l336" class='ln'>336</a></td><td><span class="ct">   *  Gain: '&lt;S115&gt;/Proportional Gain'</span></td></tr>
+<tr name="337" id="337">
+<td><a id="l337" class='ln'>337</a></td><td><span class="ct">   *  Signum: '&lt;S101&gt;/SignPreSat'</span></td></tr>
+<tr name="338" id="338">
+<td><a id="l338" class='ln'>338</a></td><td><span class="ct">   *  Sum: '&lt;S16&gt;/Sum2'</span></td></tr>
+<tr name="339" id="339">
+<td><a id="l339" class='ln'>339</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="340" id="340">
+<td><a id="l340" class='ln'>340</a></td><td>  <a id="340c3" class="tk">rtb_SignPreSat_k</a> = (<a id="340c23" class="tk">int16_T</a>)((((<a id="340c35" class="tk">int16_T</a>)(10 <a id="340c47" class="tk">*</a> <a id="340c49" class="tk">rtb_Sum2</a>) <a id="340c59" class="tk">&lt;&lt;</a> 15) <a id="340c66" class="tk">+</a> (<a id="340c69" class="tk">int32_T</a>)</td></tr>
+<tr name="341" id="341">
+<td><a id="l341" class='ln'>341</a></td><td>    ((<a id="341c7" class="tk">rtDW</a>-&gt;<a id="341c13" class="tk">Integrator_DSTATE_p</a> <a id="341c33" class="tk">*</a> 1704243LL) <a id="341c46" class="tk">&gt;&gt;</a> 23)) <a id="341c54" class="tk">&gt;&gt;</a> 15);</td></tr>
+<tr name="342" id="342">
+<td><a id="l342" class='ln'>342</a></td><td></td></tr>
+<tr name="343" id="343">
+<td><a id="l343" class='ln'>343</a></td><td>  <span class="ct">/* Saturate: '&lt;S117&gt;/Saturation' incorporates:</span></td></tr>
+<tr name="344" id="344">
+<td><a id="l344" class='ln'>344</a></td><td><span class="ct">   *  Signum: '&lt;S101&gt;/SignPreSat'</span></td></tr>
+<tr name="345" id="345">
+<td><a id="l345" class='ln'>345</a></td><td><span class="ct">   *  Signum: '&lt;S51&gt;/SignPreIntegrator'</span></td></tr>
+<tr name="346" id="346">
+<td><a id="l346" class='ln'>346</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="347" id="347">
+<td><a id="l347" class='ln'>347</a></td><td>  <span class="kw">if</span> (<a id="347c7" class="tk">rtb_SignPreSat_k</a> <a id="347c24" class="tk">&gt;</a> 8960) <span class="br">{</span></td></tr>
+<tr name="348" id="348">
+<td><a id="l348" class='ln'>348</a></td><td>    <a id="348c5" class="tk">rtb_SignPreIntegrator</a> = 8960;</td></tr>
+<tr name="349" id="349">
+<td><a id="l349" class='ln'>349</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="349c14" class="tk">rtb_SignPreSat_k</a> <a id="349c31" class="tk">&lt;</a> <a id="349c33" class="tk">-</a>8960) <span class="br">{</span></td></tr>
+<tr name="350" id="350">
+<td><a id="l350" class='ln'>350</a></td><td>    <a id="350c5" class="tk">rtb_SignPreIntegrator</a> = <a id="350c29" class="tk">-</a>8960;</td></tr>
+<tr name="351" id="351">
+<td><a id="l351" class='ln'>351</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="352" id="352">
+<td><a id="l352" class='ln'>352</a></td><td>    <a id="352c5" class="tk">rtb_SignPreIntegrator</a> = <a id="352c29" class="tk">rtb_SignPreSat_k</a>;</td></tr>
+<tr name="353" id="353">
+<td><a id="l353" class='ln'>353</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="354" id="354">
+<td><a id="l354" class='ln'>354</a></td><td></td></tr>
+<tr name="355" id="355">
+<td><a id="l355" class='ln'>355</a></td><td>  <span class="ct">/* End of Saturate: '&lt;S117&gt;/Saturation' */</span></td></tr>
+<tr name="356" id="356">
+<td><a id="l356" class='ln'>356</a></td><td></td></tr>
+<tr name="357" id="357">
+<td><a id="l357" class='ln'>357</a></td><td>  <span class="ct">/* Sum: '&lt;S18&gt;/Sum1' incorporates:</span></td></tr>
+<tr name="358" id="358">
+<td><a id="l358" class='ln'>358</a></td><td><span class="ct">   *  Interpolation_n-D: '&lt;S23&gt;/r_cos_M1'</span></td></tr>
+<tr name="359" id="359">
+<td><a id="l359" class='ln'>359</a></td><td><span class="ct">   *  Interpolation_n-D: '&lt;S23&gt;/r_sin_M1'</span></td></tr>
+<tr name="360" id="360">
+<td><a id="l360" class='ln'>360</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide'</span></td></tr>
+<tr name="361" id="361">
+<td><a id="l361" class='ln'>361</a></td><td><span class="ct">   *  Product: '&lt;S18&gt;/Divide2'</span></td></tr>
+<tr name="362" id="362">
+<td><a id="l362" class='ln'>362</a></td><td><span class="ct">   *  Product: '&lt;S18&gt;/Divide3'</span></td></tr>
+<tr name="363" id="363">
+<td><a id="l363" class='ln'>363</a></td><td><span class="ct">   *  Signum: '&lt;S51&gt;/SignPreIntegrator'</span></td></tr>
+<tr name="364" id="364">
+<td><a id="l364" class='ln'>364</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="365" id="365">
+<td><a id="l365" class='ln'>365</a></td><td>  <a id="365c3" class="tk">rtb_Sum1_tmp</a> = ((<a id="365c20" class="tk">rtb_Divide</a> <a id="365c31" class="tk">*</a> <a id="365c33" class="tk">rtConstP</a>.<a id="365c42" class="tk">r_sin_M1_Table</a>[<a id="365c57" class="tk">rtb_o_samp_p1</a>]) <a id="365c73" class="tk">&gt;&gt;</a> 14) <a id="365c80" class="tk">+</a></td></tr>
+<tr name="366" id="366">
+<td><a id="l366" class='ln'>366</a></td><td>    ((<a id="366c7" class="tk">rtb_SignPreIntegrator</a> <a id="366c29" class="tk">*</a> <a id="366c31" class="tk">rtConstP</a>.<a id="366c40" class="tk">r_cos_M1_Table</a>[<a id="366c55" class="tk">rtb_o_samp_p1</a>]) <a id="366c71" class="tk">&gt;&gt;</a> 14);</td></tr>
+<tr name="367" id="367">
+<td><a id="l367" class='ln'>367</a></td><td>  <span class="kw">if</span> (<a id="367c7" class="tk">rtb_Sum1_tmp</a> <a id="367c20" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="368" id="368">
+<td><a id="l368" class='ln'>368</a></td><td>    <a id="368c5" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="369" id="369">
+<td><a id="l369" class='ln'>369</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="370" id="370">
+<td><a id="l370" class='ln'>370</a></td><td>    <span class="kw">if</span> (<a id="370c9" class="tk">rtb_Sum1_tmp</a> <a id="370c22" class="tk">&lt;</a> <a id="370c24" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="371" id="371">
+<td><a id="l371" class='ln'>371</a></td><td>      <a id="371c7" class="tk">rtb_Sum1_tmp</a> = <a id="371c22" class="tk">-</a>32768;</td></tr>
+<tr name="372" id="372">
+<td><a id="l372" class='ln'>372</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="373" id="373">
+<td><a id="l373" class='ln'>373</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="374" id="374">
+<td><a id="l374" class='ln'>374</a></td><td></td></tr>
+<tr name="375" id="375">
+<td><a id="l375" class='ln'>375</a></td><td>  <span class="ct">/* Sum: '&lt;S18&gt;/Sum6' incorporates:</span></td></tr>
+<tr name="376" id="376">
+<td><a id="l376" class='ln'>376</a></td><td><span class="ct">   *  Interpolation_n-D: '&lt;S23&gt;/r_cos_M1'</span></td></tr>
+<tr name="377" id="377">
+<td><a id="l377" class='ln'>377</a></td><td><span class="ct">   *  Interpolation_n-D: '&lt;S23&gt;/r_sin_M1'</span></td></tr>
+<tr name="378" id="378">
+<td><a id="l378" class='ln'>378</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide'</span></td></tr>
+<tr name="379" id="379">
+<td><a id="l379" class='ln'>379</a></td><td><span class="ct">   *  Product: '&lt;S18&gt;/Divide1'</span></td></tr>
+<tr name="380" id="380">
+<td><a id="l380" class='ln'>380</a></td><td><span class="ct">   *  Product: '&lt;S18&gt;/Divide4'</span></td></tr>
+<tr name="381" id="381">
+<td><a id="l381" class='ln'>381</a></td><td><span class="ct">   *  Signum: '&lt;S51&gt;/SignPreIntegrator'</span></td></tr>
+<tr name="382" id="382">
+<td><a id="l382" class='ln'>382</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="383" id="383">
+<td><a id="l383" class='ln'>383</a></td><td>  <a id="383c3" class="tk">tmp_0</a> = ((<a id="383c13" class="tk">rtb_Divide</a> <a id="383c24" class="tk">*</a> <a id="383c26" class="tk">rtConstP</a>.<a id="383c35" class="tk">r_cos_M1_Table</a>[<a id="383c50" class="tk">rtb_o_samp_p1</a>]) <a id="383c66" class="tk">&gt;&gt;</a> 14) <a id="383c73" class="tk">-</a></td></tr>
+<tr name="384" id="384">
+<td><a id="l384" class='ln'>384</a></td><td>    ((<a id="384c7" class="tk">rtb_SignPreIntegrator</a> <a id="384c29" class="tk">*</a> <a id="384c31" class="tk">rtConstP</a>.<a id="384c40" class="tk">r_sin_M1_Table</a>[<a id="384c55" class="tk">rtb_o_samp_p1</a>]) <a id="384c71" class="tk">&gt;&gt;</a> 14);</td></tr>
+<tr name="385" id="385">
+<td><a id="l385" class='ln'>385</a></td><td>  <span class="kw">if</span> (<a id="385c7" class="tk">tmp_0</a> <a id="385c13" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="386" id="386">
+<td><a id="l386" class='ln'>386</a></td><td>    <a id="386c5" class="tk">tmp_0</a> = 32767;</td></tr>
+<tr name="387" id="387">
+<td><a id="l387" class='ln'>387</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="388" id="388">
+<td><a id="l388" class='ln'>388</a></td><td>    <span class="kw">if</span> (<a id="388c9" class="tk">tmp_0</a> <a id="388c15" class="tk">&lt;</a> <a id="388c17" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="389" id="389">
+<td><a id="l389" class='ln'>389</a></td><td>      <a id="389c7" class="tk">tmp_0</a> = <a id="389c15" class="tk">-</a>32768;</td></tr>
+<tr name="390" id="390">
+<td><a id="l390" class='ln'>390</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="391" id="391">
+<td><a id="l391" class='ln'>391</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="392" id="392">
+<td><a id="l392" class='ln'>392</a></td><td></td></tr>
+<tr name="393" id="393">
+<td><a id="l393" class='ln'>393</a></td><td>  <span class="ct">/* Product: '&lt;S177&gt;/Divide7' incorporates:</span></td></tr>
+<tr name="394" id="394">
+<td><a id="l394" class='ln'>394</a></td><td><span class="ct">   *  Constant: '&lt;S177&gt;/Constant3'</span></td></tr>
+<tr name="395" id="395">
+<td><a id="l395" class='ln'>395</a></td><td><span class="ct">   *  Sum: '&lt;S18&gt;/Sum1'</span></td></tr>
+<tr name="396" id="396">
+<td><a id="l396" class='ln'>396</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="397" id="397">
+<td><a id="l397" class='ln'>397</a></td><td>  <a id="397c3" class="tk">rtb_Divide7</a> = (<a id="397c18" class="tk">int16_T</a>)((2365 <a id="397c33" class="tk">*</a> (<a id="397c36" class="tk">int16_T</a>)<a id="397c44" class="tk">rtb_Sum1_tmp</a>) <a id="397c58" class="tk">&gt;&gt;</a> 10);</td></tr>
+<tr name="398" id="398">
+<td><a id="l398" class='ln'>398</a></td><td></td></tr>
+<tr name="399" id="399">
+<td><a id="l399" class='ln'>399</a></td><td>  <span class="ct">/* MATLAB Function: '&lt;S177&gt;/sector_select' incorporates:</span></td></tr>
+<tr name="400" id="400">
+<td><a id="l400" class='ln'>400</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide7'</span></td></tr>
+<tr name="401" id="401">
+<td><a id="l401" class='ln'>401</a></td><td><span class="ct">   *  Sum: '&lt;S18&gt;/Sum1'</span></td></tr>
+<tr name="402" id="402">
+<td><a id="l402" class='ln'>402</a></td><td><span class="ct">   *  Sum: '&lt;S18&gt;/Sum6'</span></td></tr>
+<tr name="403" id="403">
+<td><a id="l403" class='ln'>403</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="404" id="404">
+<td><a id="l404" class='ln'>404</a></td><td>  <span class="kw">if</span> ((<a id="404c8" class="tk">int16_T</a>)<a id="404c16" class="tk">rtb_Sum1_tmp</a> <a id="404c29" class="tk">&gt;=</a> 0) <span class="br">{</span></td></tr>
+<tr name="405" id="405">
+<td><a id="l405" class='ln'>405</a></td><td>    <span class="kw">if</span> ((<a id="405c10" class="tk">int16_T</a>)<a id="405c18" class="tk">tmp_0</a> <a id="405c24" class="tk">&gt;=</a> 0) <span class="br">{</span></td></tr>
+<tr name="406" id="406">
+<td><a id="l406" class='ln'>406</a></td><td>      <span class="kw">if</span> (<a id="406c11" class="tk">rtb_Divide7</a> <a id="406c23" class="tk">&gt;</a> ((<a id="406c27" class="tk">int16_T</a>)<a id="406c35" class="tk">tmp_0</a> <a id="406c41" class="tk">&lt;&lt;</a> 2)) <span class="br">{</span></td></tr>
+<tr name="407" id="407">
+<td><a id="l407" class='ln'>407</a></td><td>        <span class="ct">/* DataTypeConversion: '&lt;S177&gt;/Data Type Conversion' */</span></td></tr>
+<tr name="408" id="408">
+<td><a id="l408" class='ln'>408</a></td><td>        <a id="408c9" class="tk">rtb_DataTypeConversion_a</a> = 2U;</td></tr>
+<tr name="409" id="409">
+<td><a id="l409" class='ln'>409</a></td><td>      <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="410" id="410">
+<td><a id="l410" class='ln'>410</a></td><td>        <span class="ct">/* DataTypeConversion: '&lt;S177&gt;/Data Type Conversion' */</span></td></tr>
+<tr name="411" id="411">
+<td><a id="l411" class='ln'>411</a></td><td>        <a id="411c9" class="tk">rtb_DataTypeConversion_a</a> = 1U;</td></tr>
+<tr name="412" id="412">
+<td><a id="l412" class='ln'>412</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="413" id="413">
+<td><a id="l413" class='ln'>413</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="414" id="414">
+<td><a id="l414" class='ln'>414</a></td><td>      <a id="414c7" class="tk">tmp</a> = <a id="414c13" class="tk">-</a><a id="414c14" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="415" id="415">
+<td><a id="l415" class='ln'>415</a></td><td>      <span class="kw">if</span> (<a id="415c11" class="tk">-</a><a id="415c12" class="tk">rtb_Divide7</a> <a id="415c24" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="416" id="416">
+<td><a id="l416" class='ln'>416</a></td><td>        <a id="416c9" class="tk">tmp</a> = 32767;</td></tr>
+<tr name="417" id="417">
+<td><a id="l417" class='ln'>417</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="418" id="418">
+<td><a id="l418" class='ln'>418</a></td><td></td></tr>
+<tr name="419" id="419">
+<td><a id="l419" class='ln'>419</a></td><td>      <span class="kw">if</span> (<a id="419c11" class="tk">tmp</a> <a id="419c15" class="tk">&gt;</a> ((<a id="419c19" class="tk">int16_T</a>)<a id="419c27" class="tk">tmp_0</a> <a id="419c33" class="tk">&lt;&lt;</a> 2)) <span class="br">{</span></td></tr>
+<tr name="420" id="420">
+<td><a id="l420" class='ln'>420</a></td><td>        <span class="ct">/* DataTypeConversion: '&lt;S177&gt;/Data Type Conversion' */</span></td></tr>
+<tr name="421" id="421">
+<td><a id="l421" class='ln'>421</a></td><td>        <a id="421c9" class="tk">rtb_DataTypeConversion_a</a> = 3U;</td></tr>
+<tr name="422" id="422">
+<td><a id="l422" class='ln'>422</a></td><td>      <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="423" id="423">
+<td><a id="l423" class='ln'>423</a></td><td>        <span class="ct">/* DataTypeConversion: '&lt;S177&gt;/Data Type Conversion' */</span></td></tr>
+<tr name="424" id="424">
+<td><a id="l424" class='ln'>424</a></td><td>        <a id="424c9" class="tk">rtb_DataTypeConversion_a</a> = 2U;</td></tr>
+<tr name="425" id="425">
+<td><a id="l425" class='ln'>425</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="426" id="426">
+<td><a id="l426" class='ln'>426</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="427" id="427">
+<td><a id="l427" class='ln'>427</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> ((<a id="427c15" class="tk">int16_T</a>)<a id="427c23" class="tk">tmp_0</a> <a id="427c29" class="tk">&gt;=</a> 0) <span class="br">{</span></td></tr>
+<tr name="428" id="428">
+<td><a id="l428" class='ln'>428</a></td><td>    <a id="428c5" class="tk">tmp</a> = <a id="428c11" class="tk">-</a><a id="428c12" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="429" id="429">
+<td><a id="l429" class='ln'>429</a></td><td>    <span class="kw">if</span> (<a id="429c9" class="tk">-</a><a id="429c10" class="tk">rtb_Divide7</a> <a id="429c22" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="430" id="430">
+<td><a id="l430" class='ln'>430</a></td><td>      <a id="430c7" class="tk">tmp</a> = 32767;</td></tr>
+<tr name="431" id="431">
+<td><a id="l431" class='ln'>431</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="432" id="432">
+<td><a id="l432" class='ln'>432</a></td><td></td></tr>
+<tr name="433" id="433">
+<td><a id="l433" class='ln'>433</a></td><td>    <span class="kw">if</span> (<a id="433c9" class="tk">tmp</a> <a id="433c13" class="tk">&gt;</a> ((<a id="433c17" class="tk">int16_T</a>)<a id="433c25" class="tk">tmp_0</a> <a id="433c31" class="tk">&lt;&lt;</a> 2)) <span class="br">{</span></td></tr>
+<tr name="434" id="434">
+<td><a id="l434" class='ln'>434</a></td><td>      <span class="ct">/* DataTypeConversion: '&lt;S177&gt;/Data Type Conversion' */</span></td></tr>
+<tr name="435" id="435">
+<td><a id="l435" class='ln'>435</a></td><td>      <a id="435c7" class="tk">rtb_DataTypeConversion_a</a> = 5U;</td></tr>
+<tr name="436" id="436">
+<td><a id="l436" class='ln'>436</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="437" id="437">
+<td><a id="l437" class='ln'>437</a></td><td>      <span class="ct">/* DataTypeConversion: '&lt;S177&gt;/Data Type Conversion' */</span></td></tr>
+<tr name="438" id="438">
+<td><a id="l438" class='ln'>438</a></td><td>      <a id="438c7" class="tk">rtb_DataTypeConversion_a</a> = 6U;</td></tr>
+<tr name="439" id="439">
+<td><a id="l439" class='ln'>439</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="440" id="440">
+<td><a id="l440" class='ln'>440</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="440c14" class="tk">rtb_Divide7</a> <a id="440c26" class="tk">&gt;</a> ((<a id="440c30" class="tk">int16_T</a>)<a id="440c38" class="tk">tmp_0</a> <a id="440c44" class="tk">&lt;&lt;</a> 2)) <span class="br">{</span></td></tr>
+<tr name="441" id="441">
+<td><a id="l441" class='ln'>441</a></td><td>    <span class="ct">/* DataTypeConversion: '&lt;S177&gt;/Data Type Conversion' */</span></td></tr>
+<tr name="442" id="442">
+<td><a id="l442" class='ln'>442</a></td><td>    <a id="442c5" class="tk">rtb_DataTypeConversion_a</a> = 4U;</td></tr>
+<tr name="443" id="443">
+<td><a id="l443" class='ln'>443</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="444" id="444">
+<td><a id="l444" class='ln'>444</a></td><td>    <span class="ct">/* DataTypeConversion: '&lt;S177&gt;/Data Type Conversion' */</span></td></tr>
+<tr name="445" id="445">
+<td><a id="l445" class='ln'>445</a></td><td>    <a id="445c5" class="tk">rtb_DataTypeConversion_a</a> = 5U;</td></tr>
+<tr name="446" id="446">
+<td><a id="l446" class='ln'>446</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="447" id="447">
+<td><a id="l447" class='ln'>447</a></td><td></td></tr>
+<tr name="448" id="448">
+<td><a id="l448" class='ln'>448</a></td><td>  <span class="ct">/* End of MATLAB Function: '&lt;S177&gt;/sector_select' */</span></td></tr>
+<tr name="449" id="449">
+<td><a id="l449" class='ln'>449</a></td><td></td></tr>
+<tr name="450" id="450">
+<td><a id="l450" class='ln'>450</a></td><td>  <span class="ct">/* Product: '&lt;S177&gt;/Divide' incorporates:</span></td></tr>
+<tr name="451" id="451">
+<td><a id="l451" class='ln'>451</a></td><td><span class="ct">   *  DataTypeConversion: '&lt;S177&gt;/Data Type Conversion6'</span></td></tr>
+<tr name="452" id="452">
+<td><a id="l452" class='ln'>452</a></td><td><span class="ct">   *  Inport: '&lt;Root&gt;/Ts'</span></td></tr>
+<tr name="453" id="453">
+<td><a id="l453" class='ln'>453</a></td><td><span class="ct">   *  Inport: '&lt;Root&gt;/Vdc'</span></td></tr>
+<tr name="454" id="454">
+<td><a id="l454" class='ln'>454</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="455" id="455">
+<td><a id="l455" class='ln'>455</a></td><td>  <a id="455c3" class="tk">rtb_Divide</a> = (<a id="455c17" class="tk">int16_T</a>)<a id="455c25" class="tk">div_nde_s32_floor</a>((<a id="455c44" class="tk">int16_T</a>)<a id="455c52" class="tk">rtU_Ts</a> <a id="455c59" class="tk">&lt;&lt;</a> 10, <a id="455c66" class="tk">rtU_Vdc</a>);</td></tr>
+<tr name="456" id="456">
+<td><a id="l456" class='ln'>456</a></td><td></td></tr>
+<tr name="457" id="457">
+<td><a id="l457" class='ln'>457</a></td><td>  <span class="ct">/* Product: '&lt;S177&gt;/Divide8' incorporates:</span></td></tr>
+<tr name="458" id="458">
+<td><a id="l458" class='ln'>458</a></td><td><span class="ct">   *  Constant: '&lt;S177&gt;/Constant'</span></td></tr>
+<tr name="459" id="459">
+<td><a id="l459" class='ln'>459</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide2'</span></td></tr>
+<tr name="460" id="460">
+<td><a id="l460" class='ln'>460</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide4'</span></td></tr>
+<tr name="461" id="461">
+<td><a id="l461" class='ln'>461</a></td><td><span class="ct">   *  Sum: '&lt;S18&gt;/Sum1'</span></td></tr>
+<tr name="462" id="462">
+<td><a id="l462" class='ln'>462</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="463" id="463">
+<td><a id="l463" class='ln'>463</a></td><td>  <a id="463c3" class="tk">rtb_Sum1_tmp</a> = 2365 <a id="463c23" class="tk">*</a> (<a id="463c26" class="tk">int16_T</a>)((3547 <a id="463c41" class="tk">*</a> (<a id="463c44" class="tk">int16_T</a>)<a id="463c52" class="tk">rtb_Sum1_tmp</a>) <a id="463c66" class="tk">&gt;&gt;</a> 10);</td></tr>
+<tr name="464" id="464">
+<td><a id="l464" class='ln'>464</a></td><td></td></tr>
+<tr name="465" id="465">
+<td><a id="l465" class='ln'>465</a></td><td>  <span class="ct">/* Product: '&lt;S177&gt;/Divide1' incorporates:</span></td></tr>
+<tr name="466" id="466">
+<td><a id="l466" class='ln'>466</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide'</span></td></tr>
+<tr name="467" id="467">
+<td><a id="l467" class='ln'>467</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide8'</span></td></tr>
+<tr name="468" id="468">
+<td><a id="l468" class='ln'>468</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="469" id="469">
+<td><a id="l469" class='ln'>469</a></td><td>  <a id="469c3" class="tk">rtb_Sum1</a> = (<a id="469c15" class="tk">int16_T</a>)(((<a id="469c26" class="tk">int16_T</a>)(<a id="469c35" class="tk">rtb_Sum1_tmp</a> <a id="469c48" class="tk">&gt;&gt;</a> 11) <a id="469c55" class="tk">*</a> <a id="469c57" class="tk">rtb_Divide</a>) <a id="469c69" class="tk">&gt;&gt;</a> 12);</td></tr>
+<tr name="470" id="470">
+<td><a id="l470" class='ln'>470</a></td><td></td></tr>
+<tr name="471" id="471">
+<td><a id="l471" class='ln'>471</a></td><td>  <span class="ct">/* Product: '&lt;S177&gt;/Divide3' incorporates:</span></td></tr>
+<tr name="472" id="472">
+<td><a id="l472" class='ln'>472</a></td><td><span class="ct">   *  Constant: '&lt;S177&gt;/Constant1'</span></td></tr>
+<tr name="473" id="473">
+<td><a id="l473" class='ln'>473</a></td><td><span class="ct">   *  Signum: '&lt;S51&gt;/SignPreIntegrator'</span></td></tr>
+<tr name="474" id="474">
+<td><a id="l474" class='ln'>474</a></td><td><span class="ct">   *  Sum: '&lt;S18&gt;/Sum6'</span></td></tr>
+<tr name="475" id="475">
+<td><a id="l475" class='ln'>475</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="476" id="476">
+<td><a id="l476" class='ln'>476</a></td><td>  <a id="476c3" class="tk">rtb_SignPreIntegrator</a> = (<a id="476c28" class="tk">int16_T</a>)((3547 <a id="476c43" class="tk">*</a> (<a id="476c46" class="tk">int16_T</a>)<a id="476c54" class="tk">tmp_0</a>) <a id="476c61" class="tk">&gt;&gt;</a> 10);</td></tr>
+<tr name="477" id="477">
+<td><a id="l477" class='ln'>477</a></td><td></td></tr>
+<tr name="478" id="478">
+<td><a id="l478" class='ln'>478</a></td><td>  <span class="ct">/* Product: '&lt;S177&gt;/Divide4' */</span></td></tr>
+<tr name="479" id="479">
+<td><a id="l479" class='ln'>479</a></td><td>  <a id="479c3" class="tk">rtb_Divide4</a> = (<a id="479c18" class="tk">int16_T</a>)(<a id="479c27" class="tk">rtb_Sum1_tmp</a> <a id="479c40" class="tk">&gt;&gt;</a> 12);</td></tr>
+<tr name="480" id="480">
+<td><a id="l480" class='ln'>480</a></td><td></td></tr>
+<tr name="481" id="481">
+<td><a id="l481" class='ln'>481</a></td><td>  <span class="ct">/* Product: '&lt;S177&gt;/Divide5' incorporates:</span></td></tr>
+<tr name="482" id="482">
+<td><a id="l482" class='ln'>482</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide'</span></td></tr>
+<tr name="483" id="483">
+<td><a id="l483" class='ln'>483</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide4'</span></td></tr>
+<tr name="484" id="484">
+<td><a id="l484" class='ln'>484</a></td><td><span class="ct">   *  Signum: '&lt;S51&gt;/SignPreIntegrator'</span></td></tr>
+<tr name="485" id="485">
+<td><a id="l485" class='ln'>485</a></td><td><span class="ct">   *  Sum: '&lt;S177&gt;/Add'</span></td></tr>
+<tr name="486" id="486">
+<td><a id="l486" class='ln'>486</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="487" id="487">
+<td><a id="l487" class='ln'>487</a></td><td>  <a id="487c3" class="tk">rtb_Divide7</a> = (<a id="487c18" class="tk">int16_T</a>)(((<a id="487c29" class="tk">int16_T</a>)(<a id="487c38" class="tk">rtb_SignPreIntegrator</a> <a id="487c60" class="tk">+</a> <a id="487c62" class="tk">rtb_Divide4</a>) <a id="487c75" class="tk">*</a></td></tr>
+<tr name="488" id="488">
+<td><a id="l488" class='ln'>488</a></td><td>    <a id="488c5" class="tk">rtb_Divide</a>) <a id="488c17" class="tk">&gt;&gt;</a> 12);</td></tr>
+<tr name="489" id="489">
+<td><a id="l489" class='ln'>489</a></td><td></td></tr>
+<tr name="490" id="490">
+<td><a id="l490" class='ln'>490</a></td><td>  <span class="ct">/* Product: '&lt;S177&gt;/Divide6' incorporates:</span></td></tr>
+<tr name="491" id="491">
+<td><a id="l491" class='ln'>491</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide'</span></td></tr>
+<tr name="492" id="492">
+<td><a id="l492" class='ln'>492</a></td><td><span class="ct">   *  Product: '&lt;S177&gt;/Divide4'</span></td></tr>
+<tr name="493" id="493">
+<td><a id="l493" class='ln'>493</a></td><td><span class="ct">   *  Signum: '&lt;S51&gt;/SignPreIntegrator'</span></td></tr>
+<tr name="494" id="494">
+<td><a id="l494" class='ln'>494</a></td><td><span class="ct">   *  Sum: '&lt;S177&gt;/Add1'</span></td></tr>
+<tr name="495" id="495">
+<td><a id="l495" class='ln'>495</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="496" id="496">
+<td><a id="l496" class='ln'>496</a></td><td>  <a id="496c3" class="tk">rtb_SignPreIntegrator</a> = (<a id="496c28" class="tk">int16_T</a>)(((<a id="496c39" class="tk">int16_T</a>)(<a id="496c48" class="tk">rtb_Divide4</a> <a id="496c60" class="tk">-</a></td></tr>
+<tr name="497" id="497">
+<td><a id="l497" class='ln'>497</a></td><td>    <a id="497c5" class="tk">rtb_SignPreIntegrator</a>) <a id="497c28" class="tk">*</a> <a id="497c30" class="tk">rtb_Divide</a>) <a id="497c42" class="tk">&gt;&gt;</a> 12);</td></tr>
+<tr name="498" id="498">
+<td><a id="l498" class='ln'>498</a></td><td></td></tr>
+<tr name="499" id="499">
+<td><a id="l499" class='ln'>499</a></td><td>  <span class="ct">/* MATLAB Function: '&lt;S177&gt;/phase_time' incorporates:</span></td></tr>
+<tr name="500" id="500">
+<td><a id="l500" class='ln'>500</a></td><td><span class="ct">   *  DataTypeConversion: '&lt;S177&gt;/Data Type Conversion1'</span></td></tr>
+<tr name="501" id="501">
+<td><a id="l501" class='ln'>501</a></td><td><span class="ct">   *  DataTypeConversion: '&lt;S177&gt;/Data Type Conversion2'</span></td></tr>
+<tr name="502" id="502">
+<td><a id="l502" class='ln'>502</a></td><td><span class="ct">   *  Inport: '&lt;Root&gt;/Ts'</span></td></tr>
+<tr name="503" id="503">
+<td><a id="l503" class='ln'>503</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="504" id="504">
+<td><a id="l504" class='ln'>504</a></td><td>  <span class="kw">switch</span> ((<a id="504c12" class="tk">int8_T</a>)<a id="504c19" class="tk">rtb_DataTypeConversion_a</a>) <span class="br">{</span></td></tr>
+<tr name="505" id="505">
+<td><a id="l505" class='ln'>505</a></td><td>   <span class="kw">case</span> 1<a id="505c10" class="tk">:</a></td></tr>
+<tr name="506" id="506">
+<td><a id="l506" class='ln'>506</a></td><td>    <a id="506c5" class="tk">rtb_Sum1_tmp</a> = <a id="506c20" class="tk">-</a><a id="506c21" class="tk">rtb_SignPreIntegrator</a>;</td></tr>
+<tr name="507" id="507">
+<td><a id="l507" class='ln'>507</a></td><td>    <span class="kw">if</span> (<a id="507c9" class="tk">-</a><a id="507c10" class="tk">rtb_SignPreIntegrator</a> <a id="507c32" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="508" id="508">
+<td><a id="l508" class='ln'>508</a></td><td>      <a id="508c7" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="509" id="509">
+<td><a id="l509" class='ln'>509</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="510" id="510">
+<td><a id="l510" class='ln'>510</a></td><td></td></tr>
+<tr name="511" id="511">
+<td><a id="l511" class='ln'>511</a></td><td>    <a id="511c5" class="tk">tmp_0</a> = (<a id="511c14" class="tk">int16_T</a>)<a id="511c22" class="tk">rtU_Ts</a> <a id="511c29" class="tk">-</a> (<a id="511c32" class="tk">int16_T</a>)<a id="511c40" class="tk">rtb_Sum1_tmp</a>;</td></tr>
+<tr name="512" id="512">
+<td><a id="l512" class='ln'>512</a></td><td>    <span class="kw">if</span> (<a id="512c9" class="tk">tmp_0</a> <a id="512c15" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="513" id="513">
+<td><a id="l513" class='ln'>513</a></td><td>      <a id="513c7" class="tk">tmp_0</a> = 32767;</td></tr>
+<tr name="514" id="514">
+<td><a id="l514" class='ln'>514</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="515" id="515">
+<td><a id="l515" class='ln'>515</a></td><td>      <span class="kw">if</span> (<a id="515c11" class="tk">tmp_0</a> <a id="515c17" class="tk">&lt;</a> <a id="515c19" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="516" id="516">
+<td><a id="l516" class='ln'>516</a></td><td>        <a id="516c9" class="tk">tmp_0</a> = <a id="516c17" class="tk">-</a>32768;</td></tr>
+<tr name="517" id="517">
+<td><a id="l517" class='ln'>517</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="518" id="518">
+<td><a id="l518" class='ln'>518</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="519" id="519">
+<td><a id="l519" class='ln'>519</a></td><td></td></tr>
+<tr name="520" id="520">
+<td><a id="l520" class='ln'>520</a></td><td>    <a id="520c5" class="tk">tmp_0</a> <a id="520c11" class="tk">-=</a> <a id="520c14" class="tk">rtb_Sum1</a>;</td></tr>
+<tr name="521" id="521">
+<td><a id="l521" class='ln'>521</a></td><td>    <span class="kw">if</span> (<a id="521c9" class="tk">tmp_0</a> <a id="521c15" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="522" id="522">
+<td><a id="l522" class='ln'>522</a></td><td>      <a id="522c7" class="tk">tmp_0</a> = 32767;</td></tr>
+<tr name="523" id="523">
+<td><a id="l523" class='ln'>523</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="524" id="524">
+<td><a id="l524" class='ln'>524</a></td><td>      <span class="kw">if</span> (<a id="524c11" class="tk">tmp_0</a> <a id="524c17" class="tk">&lt;</a> <a id="524c19" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="525" id="525">
+<td><a id="l525" class='ln'>525</a></td><td>        <a id="525c9" class="tk">tmp_0</a> = <a id="525c17" class="tk">-</a>32768;</td></tr>
+<tr name="526" id="526">
+<td><a id="l526" class='ln'>526</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="527" id="527">
+<td><a id="l527" class='ln'>527</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="528" id="528">
+<td><a id="l528" class='ln'>528</a></td><td></td></tr>
+<tr name="529" id="529">
+<td><a id="l529" class='ln'>529</a></td><td>    <a id="529c5" class="tk">rtb_Divide</a> = (<a id="529c19" class="tk">int16_T</a>)<a id="529c27" class="tk">rt_roundd_snf</a>((<a id="529c42" class="tk">real_T</a>)<a id="529c49" class="tk">tmp_0</a> <a id="529c55" class="tk">/</a> 4.0);</td></tr>
+<tr name="530" id="530">
+<td><a id="l530" class='ln'>530</a></td><td>    <a id="530c5" class="tk">rtb_Sum1</a> = (<a id="530c17" class="tk">int16_T</a>)((<a id="530c27" class="tk">int32_T</a>)<a id="530c35" class="tk">rt_roundd_snf</a>((<a id="530c50" class="tk">real_T</a>)<a id="530c57" class="tk">rtb_Sum1</a> <a id="530c66" class="tk">/</a> 2.0) <a id="530c73" class="tk">+</a></td></tr>
+<tr name="531" id="531">
+<td><a id="l531" class='ln'>531</a></td><td>                         <a id="531c26" class="tk">rtb_Divide</a>);</td></tr>
+<tr name="532" id="532">
+<td><a id="l532" class='ln'>532</a></td><td>    <a id="532c5" class="tk">rtb_Sum1_tmp</a> = (<a id="532c21" class="tk">int32_T</a>)<a id="532c29" class="tk">rt_roundd_snf</a>((<a id="532c44" class="tk">real_T</a>)(<a id="532c52" class="tk">int16_T</a>)<a id="532c60" class="tk">rtb_Sum1_tmp</a> <a id="532c73" class="tk">/</a> 2.0) <a id="532c80" class="tk">+</a></td></tr>
+<tr name="533" id="533">
+<td><a id="l533" class='ln'>533</a></td><td>      <a id="533c7" class="tk">rtb_Sum1</a>;</td></tr>
+<tr name="534" id="534">
+<td><a id="l534" class='ln'>534</a></td><td>    <span class="kw">if</span> (<a id="534c9" class="tk">rtb_Sum1_tmp</a> <a id="534c22" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="535" id="535">
+<td><a id="l535" class='ln'>535</a></td><td>      <a id="535c7" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="536" id="536">
+<td><a id="l536" class='ln'>536</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="537" id="537">
+<td><a id="l537" class='ln'>537</a></td><td>      <span class="kw">if</span> (<a id="537c11" class="tk">rtb_Sum1_tmp</a> <a id="537c24" class="tk">&lt;</a> <a id="537c26" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="538" id="538">
+<td><a id="l538" class='ln'>538</a></td><td>        <a id="538c9" class="tk">rtb_Sum1_tmp</a> = <a id="538c24" class="tk">-</a>32768;</td></tr>
+<tr name="539" id="539">
+<td><a id="l539" class='ln'>539</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="540" id="540">
+<td><a id="l540" class='ln'>540</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="541" id="541">
+<td><a id="l541" class='ln'>541</a></td><td></td></tr>
+<tr name="542" id="542">
+<td><a id="l542" class='ln'>542</a></td><td>    <a id="542c5" class="tk">rtb_Divide7</a> = (<a id="542c20" class="tk">int16_T</a>)<a id="542c28" class="tk">rtb_Sum1_tmp</a>;</td></tr>
+<tr name="543" id="543">
+<td><a id="l543" class='ln'>543</a></td><td>    <span class="kw">break</span>;</td></tr>
+<tr name="544" id="544">
+<td><a id="l544" class='ln'>544</a></td><td></td></tr>
+<tr name="545" id="545">
+<td><a id="l545" class='ln'>545</a></td><td>   <span class="kw">case</span> 2<a id="545c10" class="tk">:</a></td></tr>
+<tr name="546" id="546">
+<td><a id="l546" class='ln'>546</a></td><td>    <a id="546c5" class="tk">rtb_Sum1_tmp</a> = (<a id="546c21" class="tk">int16_T</a>)<a id="546c29" class="tk">rtU_Ts</a> <a id="546c36" class="tk">-</a> <a id="546c38" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="547" id="547">
+<td><a id="l547" class='ln'>547</a></td><td>    <span class="kw">if</span> (<a id="547c9" class="tk">rtb_Sum1_tmp</a> <a id="547c22" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="548" id="548">
+<td><a id="l548" class='ln'>548</a></td><td>      <a id="548c7" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="549" id="549">
+<td><a id="l549" class='ln'>549</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="550" id="550">
+<td><a id="l550" class='ln'>550</a></td><td>      <span class="kw">if</span> (<a id="550c11" class="tk">rtb_Sum1_tmp</a> <a id="550c24" class="tk">&lt;</a> <a id="550c26" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="551" id="551">
+<td><a id="l551" class='ln'>551</a></td><td>        <a id="551c9" class="tk">rtb_Sum1_tmp</a> = <a id="551c24" class="tk">-</a>32768;</td></tr>
+<tr name="552" id="552">
+<td><a id="l552" class='ln'>552</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="553" id="553">
+<td><a id="l553" class='ln'>553</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="554" id="554">
+<td><a id="l554" class='ln'>554</a></td><td></td></tr>
+<tr name="555" id="555">
+<td><a id="l555" class='ln'>555</a></td><td>    <a id="555c5" class="tk">rtb_Sum1_tmp</a> <a id="555c18" class="tk">-=</a> <a id="555c21" class="tk">rtb_SignPreIntegrator</a>;</td></tr>
+<tr name="556" id="556">
+<td><a id="l556" class='ln'>556</a></td><td>    <span class="kw">if</span> (<a id="556c9" class="tk">rtb_Sum1_tmp</a> <a id="556c22" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="557" id="557">
+<td><a id="l557" class='ln'>557</a></td><td>      <a id="557c7" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="558" id="558">
+<td><a id="l558" class='ln'>558</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="559" id="559">
+<td><a id="l559" class='ln'>559</a></td><td>      <span class="kw">if</span> (<a id="559c11" class="tk">rtb_Sum1_tmp</a> <a id="559c24" class="tk">&lt;</a> <a id="559c26" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="560" id="560">
+<td><a id="l560" class='ln'>560</a></td><td>        <a id="560c9" class="tk">rtb_Sum1_tmp</a> = <a id="560c24" class="tk">-</a>32768;</td></tr>
+<tr name="561" id="561">
+<td><a id="l561" class='ln'>561</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="562" id="562">
+<td><a id="l562" class='ln'>562</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="563" id="563">
+<td><a id="l563" class='ln'>563</a></td><td></td></tr>
+<tr name="564" id="564">
+<td><a id="l564" class='ln'>564</a></td><td>    <a id="564c5" class="tk">rtb_Divide</a> = (<a id="564c19" class="tk">int16_T</a>)<a id="564c27" class="tk">rt_roundd_snf</a>((<a id="564c42" class="tk">real_T</a>)<a id="564c49" class="tk">rtb_Sum1_tmp</a> <a id="564c62" class="tk">/</a> 4.0);</td></tr>
+<tr name="565" id="565">
+<td><a id="l565" class='ln'>565</a></td><td>    <a id="565c5" class="tk">rtb_Divide7</a> = (<a id="565c20" class="tk">int16_T</a>)((<a id="565c30" class="tk">int32_T</a>)<a id="565c38" class="tk">rt_roundd_snf</a>((<a id="565c53" class="tk">real_T</a>)<a id="565c60" class="tk">rtb_Divide7</a> <a id="565c72" class="tk">/</a> 2.0) <a id="565c79" class="tk">+</a></td></tr>
+<tr name="566" id="566">
+<td><a id="l566" class='ln'>566</a></td><td>      <a id="566c7" class="tk">rtb_Divide</a>);</td></tr>
+<tr name="567" id="567">
+<td><a id="l567" class='ln'>567</a></td><td>    <a id="567c5" class="tk">rtb_Sum1_tmp</a> = (<a id="567c21" class="tk">int32_T</a>)<a id="567c29" class="tk">rt_roundd_snf</a>((<a id="567c44" class="tk">real_T</a>)<a id="567c51" class="tk">rtb_SignPreIntegrator</a> <a id="567c73" class="tk">/</a> 2.0) <a id="567c80" class="tk">+</a></td></tr>
+<tr name="568" id="568">
+<td><a id="l568" class='ln'>568</a></td><td>      <a id="568c7" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="569" id="569">
+<td><a id="l569" class='ln'>569</a></td><td>    <span class="kw">if</span> (<a id="569c9" class="tk">rtb_Sum1_tmp</a> <a id="569c22" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="570" id="570">
+<td><a id="l570" class='ln'>570</a></td><td>      <a id="570c7" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="571" id="571">
+<td><a id="l571" class='ln'>571</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="572" id="572">
+<td><a id="l572" class='ln'>572</a></td><td>      <span class="kw">if</span> (<a id="572c11" class="tk">rtb_Sum1_tmp</a> <a id="572c24" class="tk">&lt;</a> <a id="572c26" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="573" id="573">
+<td><a id="l573" class='ln'>573</a></td><td>        <a id="573c9" class="tk">rtb_Sum1_tmp</a> = <a id="573c24" class="tk">-</a>32768;</td></tr>
+<tr name="574" id="574">
+<td><a id="l574" class='ln'>574</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="575" id="575">
+<td><a id="l575" class='ln'>575</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="576" id="576">
+<td><a id="l576" class='ln'>576</a></td><td></td></tr>
+<tr name="577" id="577">
+<td><a id="l577" class='ln'>577</a></td><td>    <a id="577c5" class="tk">rtb_Sum1</a> = (<a id="577c17" class="tk">int16_T</a>)<a id="577c25" class="tk">rtb_Sum1_tmp</a>;</td></tr>
+<tr name="578" id="578">
+<td><a id="l578" class='ln'>578</a></td><td>    <span class="kw">break</span>;</td></tr>
+<tr name="579" id="579">
+<td><a id="l579" class='ln'>579</a></td><td></td></tr>
+<tr name="580" id="580">
+<td><a id="l580" class='ln'>580</a></td><td>   <span class="kw">case</span> 3<a id="580c10" class="tk">:</a></td></tr>
+<tr name="581" id="581">
+<td><a id="l581" class='ln'>581</a></td><td>    <a id="581c5" class="tk">rtb_Sum1_tmp</a> = <a id="581c20" class="tk">-</a><a id="581c21" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="582" id="582">
+<td><a id="l582" class='ln'>582</a></td><td>    <span class="kw">if</span> (<a id="582c9" class="tk">-</a><a id="582c10" class="tk">rtb_Divide7</a> <a id="582c22" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="583" id="583">
+<td><a id="l583" class='ln'>583</a></td><td>      <a id="583c7" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="584" id="584">
+<td><a id="l584" class='ln'>584</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="585" id="585">
+<td><a id="l585" class='ln'>585</a></td><td></td></tr>
+<tr name="586" id="586">
+<td><a id="l586" class='ln'>586</a></td><td>    <a id="586c5" class="tk">tmp_0</a> = (<a id="586c14" class="tk">int16_T</a>)<a id="586c22" class="tk">rtU_Ts</a> <a id="586c29" class="tk">-</a> <a id="586c31" class="tk">rtb_Sum1</a>;</td></tr>
+<tr name="587" id="587">
+<td><a id="l587" class='ln'>587</a></td><td>    <span class="kw">if</span> (<a id="587c9" class="tk">tmp_0</a> <a id="587c15" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="588" id="588">
+<td><a id="l588" class='ln'>588</a></td><td>      <a id="588c7" class="tk">tmp_0</a> = 32767;</td></tr>
+<tr name="589" id="589">
+<td><a id="l589" class='ln'>589</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="590" id="590">
+<td><a id="l590" class='ln'>590</a></td><td>      <span class="kw">if</span> (<a id="590c11" class="tk">tmp_0</a> <a id="590c17" class="tk">&lt;</a> <a id="590c19" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="591" id="591">
+<td><a id="l591" class='ln'>591</a></td><td>        <a id="591c9" class="tk">tmp_0</a> = <a id="591c17" class="tk">-</a>32768;</td></tr>
+<tr name="592" id="592">
+<td><a id="l592" class='ln'>592</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="593" id="593">
+<td><a id="l593" class='ln'>593</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="594" id="594">
+<td><a id="l594" class='ln'>594</a></td><td></td></tr>
+<tr name="595" id="595">
+<td><a id="l595" class='ln'>595</a></td><td>    <a id="595c5" class="tk">tmp_0</a> <a id="595c11" class="tk">-=</a> (<a id="595c15" class="tk">int16_T</a>)<a id="595c23" class="tk">rtb_Sum1_tmp</a>;</td></tr>
+<tr name="596" id="596">
+<td><a id="l596" class='ln'>596</a></td><td>    <span class="kw">if</span> (<a id="596c9" class="tk">tmp_0</a> <a id="596c15" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="597" id="597">
+<td><a id="l597" class='ln'>597</a></td><td>      <a id="597c7" class="tk">tmp_0</a> = 32767;</td></tr>
+<tr name="598" id="598">
+<td><a id="l598" class='ln'>598</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="599" id="599">
+<td><a id="l599" class='ln'>599</a></td><td>      <span class="kw">if</span> (<a id="599c11" class="tk">tmp_0</a> <a id="599c17" class="tk">&lt;</a> <a id="599c19" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="600" id="600">
+<td><a id="l600" class='ln'>600</a></td><td>        <a id="600c9" class="tk">tmp_0</a> = <a id="600c17" class="tk">-</a>32768;</td></tr>
+<tr name="601" id="601">
+<td><a id="l601" class='ln'>601</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="602" id="602">
+<td><a id="l602" class='ln'>602</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="603" id="603">
+<td><a id="l603" class='ln'>603</a></td><td></td></tr>
+<tr name="604" id="604">
+<td><a id="l604" class='ln'>604</a></td><td>    <a id="604c5" class="tk">rtb_Divide7</a> = (<a id="604c20" class="tk">int16_T</a>)<a id="604c28" class="tk">rt_roundd_snf</a>((<a id="604c43" class="tk">real_T</a>)<a id="604c50" class="tk">tmp_0</a> <a id="604c56" class="tk">/</a> 4.0);</td></tr>
+<tr name="605" id="605">
+<td><a id="l605" class='ln'>605</a></td><td>    <a id="605c5" class="tk">rtb_Divide</a> = (<a id="605c19" class="tk">int16_T</a>)((<a id="605c29" class="tk">int32_T</a>)<a id="605c37" class="tk">rt_roundd_snf</a>((<a id="605c52" class="tk">real_T</a>)(<a id="605c60" class="tk">int16_T</a>)<a id="605c68" class="tk">rtb_Sum1_tmp</a> <a id="605c81" class="tk">/</a></td></tr>
+<tr name="606" id="606">
+<td><a id="l606" class='ln'>606</a></td><td>      2.0) <a id="606c12" class="tk">+</a> <a id="606c14" class="tk">rtb_Divide7</a>);</td></tr>
+<tr name="607" id="607">
+<td><a id="l607" class='ln'>607</a></td><td>    <a id="607c5" class="tk">rtb_Sum1_tmp</a> = (<a id="607c21" class="tk">int32_T</a>)<a id="607c29" class="tk">rt_roundd_snf</a>((<a id="607c44" class="tk">real_T</a>)<a id="607c51" class="tk">rtb_Sum1</a> <a id="607c60" class="tk">/</a> 2.0) <a id="607c67" class="tk">+</a> <a id="607c69" class="tk">rtb_Divide</a>;</td></tr>
+<tr name="608" id="608">
+<td><a id="l608" class='ln'>608</a></td><td>    <span class="kw">if</span> (<a id="608c9" class="tk">rtb_Sum1_tmp</a> <a id="608c22" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="609" id="609">
+<td><a id="l609" class='ln'>609</a></td><td>      <a id="609c7" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="610" id="610">
+<td><a id="l610" class='ln'>610</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="611" id="611">
+<td><a id="l611" class='ln'>611</a></td><td>      <span class="kw">if</span> (<a id="611c11" class="tk">rtb_Sum1_tmp</a> <a id="611c24" class="tk">&lt;</a> <a id="611c26" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="612" id="612">
+<td><a id="l612" class='ln'>612</a></td><td>        <a id="612c9" class="tk">rtb_Sum1_tmp</a> = <a id="612c24" class="tk">-</a>32768;</td></tr>
+<tr name="613" id="613">
+<td><a id="l613" class='ln'>613</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="614" id="614">
+<td><a id="l614" class='ln'>614</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="615" id="615">
+<td><a id="l615" class='ln'>615</a></td><td></td></tr>
+<tr name="616" id="616">
+<td><a id="l616" class='ln'>616</a></td><td>    <a id="616c5" class="tk">rtb_Sum1</a> = (<a id="616c17" class="tk">int16_T</a>)<a id="616c25" class="tk">rtb_Sum1_tmp</a>;</td></tr>
+<tr name="617" id="617">
+<td><a id="l617" class='ln'>617</a></td><td>    <span class="kw">break</span>;</td></tr>
+<tr name="618" id="618">
+<td><a id="l618" class='ln'>618</a></td><td></td></tr>
+<tr name="619" id="619">
+<td><a id="l619" class='ln'>619</a></td><td>   <span class="kw">case</span> 4<a id="619c10" class="tk">:</a></td></tr>
+<tr name="620" id="620">
+<td><a id="l620" class='ln'>620</a></td><td>    <a id="620c5" class="tk">rtb_Sum1_tmp</a> = <a id="620c20" class="tk">-</a><a id="620c21" class="tk">rtb_Sum1</a>;</td></tr>
+<tr name="621" id="621">
+<td><a id="l621" class='ln'>621</a></td><td>    <span class="kw">if</span> (<a id="621c9" class="tk">-</a><a id="621c10" class="tk">rtb_Sum1</a> <a id="621c19" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="622" id="622">
+<td><a id="l622" class='ln'>622</a></td><td>      <a id="622c7" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="623" id="623">
+<td><a id="l623" class='ln'>623</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="624" id="624">
+<td><a id="l624" class='ln'>624</a></td><td></td></tr>
+<tr name="625" id="625">
+<td><a id="l625" class='ln'>625</a></td><td>    <a id="625c5" class="tk">tmp_0</a> = (<a id="625c14" class="tk">int16_T</a>)<a id="625c22" class="tk">rtU_Ts</a> <a id="625c29" class="tk">-</a> (<a id="625c32" class="tk">int16_T</a>)<a id="625c40" class="tk">rtb_Sum1_tmp</a>;</td></tr>
+<tr name="626" id="626">
+<td><a id="l626" class='ln'>626</a></td><td>    <span class="kw">if</span> (<a id="626c9" class="tk">tmp_0</a> <a id="626c15" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="627" id="627">
+<td><a id="l627" class='ln'>627</a></td><td>      <a id="627c7" class="tk">tmp_0</a> = 32767;</td></tr>
+<tr name="628" id="628">
+<td><a id="l628" class='ln'>628</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="629" id="629">
+<td><a id="l629" class='ln'>629</a></td><td>      <span class="kw">if</span> (<a id="629c11" class="tk">tmp_0</a> <a id="629c17" class="tk">&lt;</a> <a id="629c19" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="630" id="630">
+<td><a id="l630" class='ln'>630</a></td><td>        <a id="630c9" class="tk">tmp_0</a> = <a id="630c17" class="tk">-</a>32768;</td></tr>
+<tr name="631" id="631">
+<td><a id="l631" class='ln'>631</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="632" id="632">
+<td><a id="l632" class='ln'>632</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="633" id="633">
+<td><a id="l633" class='ln'>633</a></td><td></td></tr>
+<tr name="634" id="634">
+<td><a id="l634" class='ln'>634</a></td><td>    <a id="634c5" class="tk">tmp_0</a> <a id="634c11" class="tk">-=</a> <a id="634c14" class="tk">rtb_SignPreIntegrator</a>;</td></tr>
+<tr name="635" id="635">
+<td><a id="l635" class='ln'>635</a></td><td>    <span class="kw">if</span> (<a id="635c9" class="tk">tmp_0</a> <a id="635c15" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="636" id="636">
+<td><a id="l636" class='ln'>636</a></td><td>      <a id="636c7" class="tk">tmp_0</a> = 32767;</td></tr>
+<tr name="637" id="637">
+<td><a id="l637" class='ln'>637</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="638" id="638">
+<td><a id="l638" class='ln'>638</a></td><td>      <span class="kw">if</span> (<a id="638c11" class="tk">tmp_0</a> <a id="638c17" class="tk">&lt;</a> <a id="638c19" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="639" id="639">
+<td><a id="l639" class='ln'>639</a></td><td>        <a id="639c9" class="tk">tmp_0</a> = <a id="639c17" class="tk">-</a>32768;</td></tr>
+<tr name="640" id="640">
+<td><a id="l640" class='ln'>640</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="641" id="641">
+<td><a id="l641" class='ln'>641</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="642" id="642">
+<td><a id="l642" class='ln'>642</a></td><td></td></tr>
+<tr name="643" id="643">
+<td><a id="l643" class='ln'>643</a></td><td>    <a id="643c5" class="tk">rtb_Divide7</a> = (<a id="643c20" class="tk">int16_T</a>)<a id="643c28" class="tk">rt_roundd_snf</a>((<a id="643c43" class="tk">real_T</a>)<a id="643c50" class="tk">tmp_0</a> <a id="643c56" class="tk">/</a> 4.0);</td></tr>
+<tr name="644" id="644">
+<td><a id="l644" class='ln'>644</a></td><td>    <a id="644c5" class="tk">rtb_Sum1</a> = (<a id="644c17" class="tk">int16_T</a>)((<a id="644c27" class="tk">int32_T</a>)<a id="644c35" class="tk">rt_roundd_snf</a>((<a id="644c50" class="tk">real_T</a>)<a id="644c57" class="tk">rtb_SignPreIntegrator</a> <a id="644c79" class="tk">/</a></td></tr>
+<tr name="645" id="645">
+<td><a id="l645" class='ln'>645</a></td><td>      2.0) <a id="645c12" class="tk">+</a> <a id="645c14" class="tk">rtb_Divide7</a>);</td></tr>
+<tr name="646" id="646">
+<td><a id="l646" class='ln'>646</a></td><td>    <a id="646c5" class="tk">rtb_Sum1_tmp</a> = (<a id="646c21" class="tk">int32_T</a>)<a id="646c29" class="tk">rt_roundd_snf</a>((<a id="646c44" class="tk">real_T</a>)(<a id="646c52" class="tk">int16_T</a>)<a id="646c60" class="tk">rtb_Sum1_tmp</a> <a id="646c73" class="tk">/</a> 2.0) <a id="646c80" class="tk">+</a></td></tr>
+<tr name="647" id="647">
+<td><a id="l647" class='ln'>647</a></td><td>      <a id="647c7" class="tk">rtb_Sum1</a>;</td></tr>
+<tr name="648" id="648">
+<td><a id="l648" class='ln'>648</a></td><td>    <span class="kw">if</span> (<a id="648c9" class="tk">rtb_Sum1_tmp</a> <a id="648c22" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="649" id="649">
+<td><a id="l649" class='ln'>649</a></td><td>      <a id="649c7" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="650" id="650">
+<td><a id="l650" class='ln'>650</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="651" id="651">
+<td><a id="l651" class='ln'>651</a></td><td>      <span class="kw">if</span> (<a id="651c11" class="tk">rtb_Sum1_tmp</a> <a id="651c24" class="tk">&lt;</a> <a id="651c26" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="652" id="652">
+<td><a id="l652" class='ln'>652</a></td><td>        <a id="652c9" class="tk">rtb_Sum1_tmp</a> = <a id="652c24" class="tk">-</a>32768;</td></tr>
+<tr name="653" id="653">
+<td><a id="l653" class='ln'>653</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="654" id="654">
+<td><a id="l654" class='ln'>654</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="655" id="655">
+<td><a id="l655" class='ln'>655</a></td><td></td></tr>
+<tr name="656" id="656">
+<td><a id="l656" class='ln'>656</a></td><td>    <a id="656c5" class="tk">rtb_Divide</a> = (<a id="656c19" class="tk">int16_T</a>)<a id="656c27" class="tk">rtb_Sum1_tmp</a>;</td></tr>
+<tr name="657" id="657">
+<td><a id="l657" class='ln'>657</a></td><td>    <span class="kw">break</span>;</td></tr>
+<tr name="658" id="658">
+<td><a id="l658" class='ln'>658</a></td><td></td></tr>
+<tr name="659" id="659">
+<td><a id="l659" class='ln'>659</a></td><td>   <span class="kw">case</span> 5<a id="659c10" class="tk">:</a></td></tr>
+<tr name="660" id="660">
+<td><a id="l660" class='ln'>660</a></td><td>    <a id="660c5" class="tk">rtb_Sum1_tmp</a> = <a id="660c20" class="tk">-</a><a id="660c21" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="661" id="661">
+<td><a id="l661" class='ln'>661</a></td><td>    <span class="kw">if</span> (<a id="661c9" class="tk">-</a><a id="661c10" class="tk">rtb_Divide7</a> <a id="661c22" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="662" id="662">
+<td><a id="l662" class='ln'>662</a></td><td>      <a id="662c7" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="663" id="663">
+<td><a id="l663" class='ln'>663</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="664" id="664">
+<td><a id="l664" class='ln'>664</a></td><td></td></tr>
+<tr name="665" id="665">
+<td><a id="l665" class='ln'>665</a></td><td>    <a id="665c5" class="tk">tmp_0</a> = <a id="665c13" class="tk">-</a><a id="665c14" class="tk">rtb_SignPreIntegrator</a>;</td></tr>
+<tr name="666" id="666">
+<td><a id="l666" class='ln'>666</a></td><td>    <span class="kw">if</span> (<a id="666c9" class="tk">-</a><a id="666c10" class="tk">rtb_SignPreIntegrator</a> <a id="666c32" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="667" id="667">
+<td><a id="l667" class='ln'>667</a></td><td>      <a id="667c7" class="tk">tmp_0</a> = 32767;</td></tr>
+<tr name="668" id="668">
+<td><a id="l668" class='ln'>668</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="669" id="669">
+<td><a id="l669" class='ln'>669</a></td><td></td></tr>
+<tr name="670" id="670">
+<td><a id="l670" class='ln'>670</a></td><td>    <a id="670c5" class="tk">tmp</a> = (<a id="670c12" class="tk">int16_T</a>)<a id="670c20" class="tk">rtU_Ts</a> <a id="670c27" class="tk">-</a> (<a id="670c30" class="tk">int16_T</a>)<a id="670c38" class="tk">rtb_Sum1_tmp</a>;</td></tr>
+<tr name="671" id="671">
+<td><a id="l671" class='ln'>671</a></td><td>    <span class="kw">if</span> (<a id="671c9" class="tk">tmp</a> <a id="671c13" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="672" id="672">
+<td><a id="l672" class='ln'>672</a></td><td>      <a id="672c7" class="tk">tmp</a> = 32767;</td></tr>
+<tr name="673" id="673">
+<td><a id="l673" class='ln'>673</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="674" id="674">
+<td><a id="l674" class='ln'>674</a></td><td>      <span class="kw">if</span> (<a id="674c11" class="tk">tmp</a> <a id="674c15" class="tk">&lt;</a> <a id="674c17" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="675" id="675">
+<td><a id="l675" class='ln'>675</a></td><td>        <a id="675c9" class="tk">tmp</a> = <a id="675c15" class="tk">-</a>32768;</td></tr>
+<tr name="676" id="676">
+<td><a id="l676" class='ln'>676</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="677" id="677">
+<td><a id="l677" class='ln'>677</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="678" id="678">
+<td><a id="l678" class='ln'>678</a></td><td></td></tr>
+<tr name="679" id="679">
+<td><a id="l679" class='ln'>679</a></td><td>    <a id="679c5" class="tk">tmp</a> <a id="679c9" class="tk">-=</a> (<a id="679c13" class="tk">int16_T</a>)<a id="679c21" class="tk">tmp_0</a>;</td></tr>
+<tr name="680" id="680">
+<td><a id="l680" class='ln'>680</a></td><td>    <span class="kw">if</span> (<a id="680c9" class="tk">tmp</a> <a id="680c13" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="681" id="681">
+<td><a id="l681" class='ln'>681</a></td><td>      <a id="681c7" class="tk">tmp</a> = 32767;</td></tr>
+<tr name="682" id="682">
+<td><a id="l682" class='ln'>682</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="683" id="683">
+<td><a id="l683" class='ln'>683</a></td><td>      <span class="kw">if</span> (<a id="683c11" class="tk">tmp</a> <a id="683c15" class="tk">&lt;</a> <a id="683c17" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="684" id="684">
+<td><a id="l684" class='ln'>684</a></td><td>        <a id="684c9" class="tk">tmp</a> = <a id="684c15" class="tk">-</a>32768;</td></tr>
+<tr name="685" id="685">
+<td><a id="l685" class='ln'>685</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="686" id="686">
+<td><a id="l686" class='ln'>686</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="687" id="687">
+<td><a id="l687" class='ln'>687</a></td><td></td></tr>
+<tr name="688" id="688">
+<td><a id="l688" class='ln'>688</a></td><td>    <a id="688c5" class="tk">rtb_Sum1</a> = (<a id="688c17" class="tk">int16_T</a>)<a id="688c25" class="tk">rt_roundd_snf</a>((<a id="688c40" class="tk">real_T</a>)<a id="688c47" class="tk">tmp</a> <a id="688c51" class="tk">/</a> 4.0);</td></tr>
+<tr name="689" id="689">
+<td><a id="l689" class='ln'>689</a></td><td>    <a id="689c5" class="tk">rtb_Divide7</a> = (<a id="689c20" class="tk">int16_T</a>)((<a id="689c30" class="tk">int32_T</a>)<a id="689c38" class="tk">rt_roundd_snf</a>((<a id="689c53" class="tk">real_T</a>)(<a id="689c61" class="tk">int16_T</a>)<a id="689c69" class="tk">tmp_0</a> <a id="689c75" class="tk">/</a> 2.0)</td></tr>
+<tr name="690" id="690">
+<td><a id="l690" class='ln'>690</a></td><td>      <a id="690c7" class="tk">+</a> <a id="690c9" class="tk">rtb_Sum1</a>);</td></tr>
+<tr name="691" id="691">
+<td><a id="l691" class='ln'>691</a></td><td>    <a id="691c5" class="tk">rtb_Sum1_tmp</a> = (<a id="691c21" class="tk">int32_T</a>)<a id="691c29" class="tk">rt_roundd_snf</a>((<a id="691c44" class="tk">real_T</a>)(<a id="691c52" class="tk">int16_T</a>)<a id="691c60" class="tk">rtb_Sum1_tmp</a> <a id="691c73" class="tk">/</a> 2.0) <a id="691c80" class="tk">+</a></td></tr>
+<tr name="692" id="692">
+<td><a id="l692" class='ln'>692</a></td><td>      <a id="692c7" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="693" id="693">
+<td><a id="l693" class='ln'>693</a></td><td>    <span class="kw">if</span> (<a id="693c9" class="tk">rtb_Sum1_tmp</a> <a id="693c22" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="694" id="694">
+<td><a id="l694" class='ln'>694</a></td><td>      <a id="694c7" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="695" id="695">
+<td><a id="l695" class='ln'>695</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="696" id="696">
+<td><a id="l696" class='ln'>696</a></td><td>      <span class="kw">if</span> (<a id="696c11" class="tk">rtb_Sum1_tmp</a> <a id="696c24" class="tk">&lt;</a> <a id="696c26" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="697" id="697">
+<td><a id="l697" class='ln'>697</a></td><td>        <a id="697c9" class="tk">rtb_Sum1_tmp</a> = <a id="697c24" class="tk">-</a>32768;</td></tr>
+<tr name="698" id="698">
+<td><a id="l698" class='ln'>698</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="699" id="699">
+<td><a id="l699" class='ln'>699</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="700" id="700">
+<td><a id="l700" class='ln'>700</a></td><td></td></tr>
+<tr name="701" id="701">
+<td><a id="l701" class='ln'>701</a></td><td>    <a id="701c5" class="tk">rtb_Divide</a> = (<a id="701c19" class="tk">int16_T</a>)<a id="701c27" class="tk">rtb_Sum1_tmp</a>;</td></tr>
+<tr name="702" id="702">
+<td><a id="l702" class='ln'>702</a></td><td>    <span class="kw">break</span>;</td></tr>
+<tr name="703" id="703">
+<td><a id="l703" class='ln'>703</a></td><td></td></tr>
+<tr name="704" id="704">
+<td><a id="l704" class='ln'>704</a></td><td>   <span class="kw">default</span><a id="704c11" class="tk">:</a></td></tr>
+<tr name="705" id="705">
+<td><a id="l705" class='ln'>705</a></td><td>    <a id="705c5" class="tk">rtb_Sum1_tmp</a> = <a id="705c20" class="tk">-</a><a id="705c21" class="tk">rtb_Sum1</a>;</td></tr>
+<tr name="706" id="706">
+<td><a id="l706" class='ln'>706</a></td><td>    <span class="kw">if</span> (<a id="706c9" class="tk">-</a><a id="706c10" class="tk">rtb_Sum1</a> <a id="706c19" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="707" id="707">
+<td><a id="l707" class='ln'>707</a></td><td>      <a id="707c7" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="708" id="708">
+<td><a id="l708" class='ln'>708</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="709" id="709">
+<td><a id="l709" class='ln'>709</a></td><td></td></tr>
+<tr name="710" id="710">
+<td><a id="l710" class='ln'>710</a></td><td>    <a id="710c5" class="tk">tmp_0</a> = (<a id="710c14" class="tk">int16_T</a>)<a id="710c22" class="tk">rtU_Ts</a> <a id="710c29" class="tk">-</a> <a id="710c31" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="711" id="711">
+<td><a id="l711" class='ln'>711</a></td><td>    <span class="kw">if</span> (<a id="711c9" class="tk">tmp_0</a> <a id="711c15" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="712" id="712">
+<td><a id="l712" class='ln'>712</a></td><td>      <a id="712c7" class="tk">tmp_0</a> = 32767;</td></tr>
+<tr name="713" id="713">
+<td><a id="l713" class='ln'>713</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="714" id="714">
+<td><a id="l714" class='ln'>714</a></td><td>      <span class="kw">if</span> (<a id="714c11" class="tk">tmp_0</a> <a id="714c17" class="tk">&lt;</a> <a id="714c19" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="715" id="715">
+<td><a id="l715" class='ln'>715</a></td><td>        <a id="715c9" class="tk">tmp_0</a> = <a id="715c17" class="tk">-</a>32768;</td></tr>
+<tr name="716" id="716">
+<td><a id="l716" class='ln'>716</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="717" id="717">
+<td><a id="l717" class='ln'>717</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="718" id="718">
+<td><a id="l718" class='ln'>718</a></td><td></td></tr>
+<tr name="719" id="719">
+<td><a id="l719" class='ln'>719</a></td><td>    <a id="719c5" class="tk">tmp_0</a> <a id="719c11" class="tk">-=</a> (<a id="719c15" class="tk">int16_T</a>)<a id="719c23" class="tk">rtb_Sum1_tmp</a>;</td></tr>
+<tr name="720" id="720">
+<td><a id="l720" class='ln'>720</a></td><td>    <span class="kw">if</span> (<a id="720c9" class="tk">tmp_0</a> <a id="720c15" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="721" id="721">
+<td><a id="l721" class='ln'>721</a></td><td>      <a id="721c7" class="tk">tmp_0</a> = 32767;</td></tr>
+<tr name="722" id="722">
+<td><a id="l722" class='ln'>722</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="723" id="723">
+<td><a id="l723" class='ln'>723</a></td><td>      <span class="kw">if</span> (<a id="723c11" class="tk">tmp_0</a> <a id="723c17" class="tk">&lt;</a> <a id="723c19" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="724" id="724">
+<td><a id="l724" class='ln'>724</a></td><td>        <a id="724c9" class="tk">tmp_0</a> = <a id="724c17" class="tk">-</a>32768;</td></tr>
+<tr name="725" id="725">
+<td><a id="l725" class='ln'>725</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="726" id="726">
+<td><a id="l726" class='ln'>726</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="727" id="727">
+<td><a id="l727" class='ln'>727</a></td><td></td></tr>
+<tr name="728" id="728">
+<td><a id="l728" class='ln'>728</a></td><td>    <a id="728c5" class="tk">rtb_Sum1</a> = (<a id="728c17" class="tk">int16_T</a>)<a id="728c25" class="tk">rt_roundd_snf</a>((<a id="728c40" class="tk">real_T</a>)<a id="728c47" class="tk">tmp_0</a> <a id="728c53" class="tk">/</a> 4.0);</td></tr>
+<tr name="729" id="729">
+<td><a id="l729" class='ln'>729</a></td><td>    <a id="729c5" class="tk">rtb_Divide</a> = (<a id="729c19" class="tk">int16_T</a>)((<a id="729c29" class="tk">int32_T</a>)<a id="729c37" class="tk">rt_roundd_snf</a>((<a id="729c52" class="tk">real_T</a>)(<a id="729c60" class="tk">int16_T</a>)<a id="729c68" class="tk">rtb_Sum1_tmp</a> <a id="729c81" class="tk">/</a></td></tr>
+<tr name="730" id="730">
+<td><a id="l730" class='ln'>730</a></td><td>      2.0) <a id="730c12" class="tk">+</a> <a id="730c14" class="tk">rtb_Sum1</a>);</td></tr>
+<tr name="731" id="731">
+<td><a id="l731" class='ln'>731</a></td><td>    <a id="731c5" class="tk">rtb_Sum1_tmp</a> = (<a id="731c21" class="tk">int32_T</a>)<a id="731c29" class="tk">rt_roundd_snf</a>((<a id="731c44" class="tk">real_T</a>)<a id="731c51" class="tk">rtb_Divide7</a> <a id="731c63" class="tk">/</a> 2.0) <a id="731c70" class="tk">+</a></td></tr>
+<tr name="732" id="732">
+<td><a id="l732" class='ln'>732</a></td><td>      <a id="732c7" class="tk">rtb_Divide</a>;</td></tr>
+<tr name="733" id="733">
+<td><a id="l733" class='ln'>733</a></td><td>    <span class="kw">if</span> (<a id="733c9" class="tk">rtb_Sum1_tmp</a> <a id="733c22" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="734" id="734">
+<td><a id="l734" class='ln'>734</a></td><td>      <a id="734c7" class="tk">rtb_Sum1_tmp</a> = 32767;</td></tr>
+<tr name="735" id="735">
+<td><a id="l735" class='ln'>735</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="736" id="736">
+<td><a id="l736" class='ln'>736</a></td><td>      <span class="kw">if</span> (<a id="736c11" class="tk">rtb_Sum1_tmp</a> <a id="736c24" class="tk">&lt;</a> <a id="736c26" class="tk">-</a>32768) <span class="br">{</span></td></tr>
+<tr name="737" id="737">
+<td><a id="l737" class='ln'>737</a></td><td>        <a id="737c9" class="tk">rtb_Sum1_tmp</a> = <a id="737c24" class="tk">-</a>32768;</td></tr>
+<tr name="738" id="738">
+<td><a id="l738" class='ln'>738</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="739" id="739">
+<td><a id="l739" class='ln'>739</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="740" id="740">
+<td><a id="l740" class='ln'>740</a></td><td></td></tr>
+<tr name="741" id="741">
+<td><a id="l741" class='ln'>741</a></td><td>    <a id="741c5" class="tk">rtb_Divide7</a> = (<a id="741c20" class="tk">int16_T</a>)<a id="741c28" class="tk">rtb_Sum1_tmp</a>;</td></tr>
+<tr name="742" id="742">
+<td><a id="l742" class='ln'>742</a></td><td>    <span class="kw">break</span>;</td></tr>
+<tr name="743" id="743">
+<td><a id="l743" class='ln'>743</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="744" id="744">
+<td><a id="l744" class='ln'>744</a></td><td></td></tr>
+<tr name="745" id="745">
+<td><a id="l745" class='ln'>745</a></td><td>  <span class="ct">/* DataTypeConversion: '&lt;S177&gt;/Data Type Conversion3' incorporates:</span></td></tr>
+<tr name="746" id="746">
+<td><a id="l746" class='ln'>746</a></td><td><span class="ct">   *  MATLAB Function: '&lt;S177&gt;/phase_time'</span></td></tr>
+<tr name="747" id="747">
+<td><a id="l747" class='ln'>747</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="748" id="748">
+<td><a id="l748" class='ln'>748</a></td><td>  <a id="748c3" class="tk">rtb_DataTypeConversion3</a> = (<a id="748c30" class="tk">uint16_T</a>)<a id="748c39" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="749" id="749">
+<td><a id="l749" class='ln'>749</a></td><td></td></tr>
+<tr name="750" id="750">
+<td><a id="l750" class='ln'>750</a></td><td>  <span class="ct">/* MultiPortSwitch: '&lt;S178&gt;/Multiport Switch' incorporates:</span></td></tr>
+<tr name="751" id="751">
+<td><a id="l751" class='ln'>751</a></td><td><span class="ct">   *  DataTypeConversion: '&lt;S177&gt;/Data Type Conversion3'</span></td></tr>
+<tr name="752" id="752">
+<td><a id="l752" class='ln'>752</a></td><td><span class="ct">   *  DataTypeConversion: '&lt;S177&gt;/Data Type Conversion4'</span></td></tr>
+<tr name="753" id="753">
+<td><a id="l753" class='ln'>753</a></td><td><span class="ct">   *  DataTypeConversion: '&lt;S177&gt;/Data Type Conversion5'</span></td></tr>
+<tr name="754" id="754">
+<td><a id="l754" class='ln'>754</a></td><td><span class="ct">   *  MATLAB Function: '&lt;S177&gt;/phase_time'</span></td></tr>
+<tr name="755" id="755">
+<td><a id="l755" class='ln'>755</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="756" id="756">
+<td><a id="l756" class='ln'>756</a></td><td>  <span class="kw">switch</span> (<a id="756c11" class="tk">rtb_DataTypeConversion_a</a>) <span class="br">{</span></td></tr>
+<tr name="757" id="757">
+<td><a id="l757" class='ln'>757</a></td><td>   <span class="kw">case</span> 1<a id="757c10" class="tk">:</a></td></tr>
+<tr name="758" id="758">
+<td><a id="l758" class='ln'>758</a></td><td>    <a id="758c5" class="tk">rtb_MultiportSwitch_idx_0</a> = (<a id="758c34" class="tk">uint16_T</a>)<a id="758c43" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="759" id="759">
+<td><a id="l759" class='ln'>759</a></td><td>    <a id="759c5" class="tk">rtb_MultiportSwitch_idx_1</a> = (<a id="759c34" class="tk">uint16_T</a>)<a id="759c43" class="tk">rtb_Sum1</a>;</td></tr>
+<tr name="760" id="760">
+<td><a id="l760" class='ln'>760</a></td><td>    <span class="kw">break</span>;</td></tr>
+<tr name="761" id="761">
+<td><a id="l761" class='ln'>761</a></td><td></td></tr>
+<tr name="762" id="762">
+<td><a id="l762" class='ln'>762</a></td><td>   <span class="kw">case</span> 2<a id="762c10" class="tk">:</a></td></tr>
+<tr name="763" id="763">
+<td><a id="l763" class='ln'>763</a></td><td>    <a id="763c5" class="tk">rtb_MultiportSwitch_idx_0</a> = (<a id="763c34" class="tk">uint16_T</a>)<a id="763c43" class="tk">rtb_Sum1</a>;</td></tr>
+<tr name="764" id="764">
+<td><a id="l764" class='ln'>764</a></td><td>    <a id="764c5" class="tk">rtb_MultiportSwitch_idx_1</a> = (<a id="764c34" class="tk">uint16_T</a>)<a id="764c43" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="765" id="765">
+<td><a id="l765" class='ln'>765</a></td><td>    <span class="kw">break</span>;</td></tr>
+<tr name="766" id="766">
+<td><a id="l766" class='ln'>766</a></td><td></td></tr>
+<tr name="767" id="767">
+<td><a id="l767" class='ln'>767</a></td><td>   <span class="kw">case</span> 3<a id="767c10" class="tk">:</a></td></tr>
+<tr name="768" id="768">
+<td><a id="l768" class='ln'>768</a></td><td>    <a id="768c5" class="tk">rtb_MultiportSwitch_idx_0</a> = (<a id="768c34" class="tk">uint16_T</a>)<a id="768c43" class="tk">rtb_Sum1</a>;</td></tr>
+<tr name="769" id="769">
+<td><a id="l769" class='ln'>769</a></td><td>    <a id="769c5" class="tk">rtb_MultiportSwitch_idx_1</a> = (<a id="769c34" class="tk">uint16_T</a>)<a id="769c43" class="tk">rtb_Divide</a>;</td></tr>
+<tr name="770" id="770">
+<td><a id="l770" class='ln'>770</a></td><td>    <span class="kw">break</span>;</td></tr>
+<tr name="771" id="771">
+<td><a id="l771" class='ln'>771</a></td><td></td></tr>
+<tr name="772" id="772">
+<td><a id="l772" class='ln'>772</a></td><td>   <span class="kw">case</span> 4<a id="772c10" class="tk">:</a></td></tr>
+<tr name="773" id="773">
+<td><a id="l773" class='ln'>773</a></td><td>    <a id="773c5" class="tk">rtb_MultiportSwitch_idx_0</a> = (<a id="773c34" class="tk">uint16_T</a>)<a id="773c43" class="tk">rtb_Divide</a>;</td></tr>
+<tr name="774" id="774">
+<td><a id="l774" class='ln'>774</a></td><td>    <a id="774c5" class="tk">rtb_MultiportSwitch_idx_1</a> = (<a id="774c34" class="tk">uint16_T</a>)<a id="774c43" class="tk">rtb_Sum1</a>;</td></tr>
+<tr name="775" id="775">
+<td><a id="l775" class='ln'>775</a></td><td>    <span class="kw">break</span>;</td></tr>
+<tr name="776" id="776">
+<td><a id="l776" class='ln'>776</a></td><td></td></tr>
+<tr name="777" id="777">
+<td><a id="l777" class='ln'>777</a></td><td>   <span class="kw">case</span> 5<a id="777c10" class="tk">:</a></td></tr>
+<tr name="778" id="778">
+<td><a id="l778" class='ln'>778</a></td><td>    <a id="778c5" class="tk">rtb_MultiportSwitch_idx_0</a> = (<a id="778c34" class="tk">uint16_T</a>)<a id="778c43" class="tk">rtb_Divide</a>;</td></tr>
+<tr name="779" id="779">
+<td><a id="l779" class='ln'>779</a></td><td>    <a id="779c5" class="tk">rtb_MultiportSwitch_idx_1</a> = (<a id="779c34" class="tk">uint16_T</a>)<a id="779c43" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="780" id="780">
+<td><a id="l780" class='ln'>780</a></td><td>    <span class="kw">break</span>;</td></tr>
+<tr name="781" id="781">
+<td><a id="l781" class='ln'>781</a></td><td></td></tr>
+<tr name="782" id="782">
+<td><a id="l782" class='ln'>782</a></td><td>   <span class="kw">default</span><a id="782c11" class="tk">:</a></td></tr>
+<tr name="783" id="783">
+<td><a id="l783" class='ln'>783</a></td><td>    <a id="783c5" class="tk">rtb_MultiportSwitch_idx_0</a> = (<a id="783c34" class="tk">uint16_T</a>)<a id="783c43" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="784" id="784">
+<td><a id="l784" class='ln'>784</a></td><td>    <a id="784c5" class="tk">rtb_MultiportSwitch_idx_1</a> = (<a id="784c34" class="tk">uint16_T</a>)<a id="784c43" class="tk">rtb_Divide</a>;</td></tr>
+<tr name="785" id="785">
+<td><a id="l785" class='ln'>785</a></td><td>    <span class="kw">break</span>;</td></tr>
+<tr name="786" id="786">
+<td><a id="l786" class='ln'>786</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="787" id="787">
+<td><a id="l787" class='ln'>787</a></td><td></td></tr>
+<tr name="788" id="788">
+<td><a id="l788" class='ln'>788</a></td><td>  <span class="ct">/* End of MultiPortSwitch: '&lt;S178&gt;/Multiport Switch' */</span></td></tr>
+<tr name="789" id="789">
+<td><a id="l789" class='ln'>789</a></td><td></td></tr>
+<tr name="790" id="790">
+<td><a id="l790" class='ln'>790</a></td><td>  <span class="ct">/* Outport: '&lt;Root&gt;/pwm_counts' incorporates:</span></td></tr>
+<tr name="791" id="791">
+<td><a id="l791" class='ln'>791</a></td><td><span class="ct">   *  Constant: '&lt;S178&gt;/Constant'</span></td></tr>
+<tr name="792" id="792">
+<td><a id="l792" class='ln'>792</a></td><td><span class="ct">   *  Constant: '&lt;S178&gt;/Constant1'</span></td></tr>
+<tr name="793" id="793">
+<td><a id="l793" class='ln'>793</a></td><td><span class="ct">   *  Constant: '&lt;S178&gt;/Constant2'</span></td></tr>
+<tr name="794" id="794">
+<td><a id="l794" class='ln'>794</a></td><td><span class="ct">   *  Constant: '&lt;S178&gt;/Constant3'</span></td></tr>
+<tr name="795" id="795">
+<td><a id="l795" class='ln'>795</a></td><td><span class="ct">   *  MATLAB Function: '&lt;S178&gt;/Shunt_Three_Sample_Point'</span></td></tr>
+<tr name="796" id="796">
+<td><a id="l796" class='ln'>796</a></td><td><span class="ct">   *  Outport: '&lt;Root&gt;/sector'</span></td></tr>
+<tr name="797" id="797">
+<td><a id="l797" class='ln'>797</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="798" id="798">
+<td><a id="l798" class='ln'>798</a></td><td>  <a id="798c3" class="tk">Shunt_Three_Sample_Point</a>(<a id="798c28" class="tk">rtb_MultiportSwitch_idx_0</a>, <a id="798c55" class="tk">rtb_MultiportSwitch_idx_1</a>,</td></tr>
+<tr name="799" id="799">
+<td><a id="l799" class='ln'>799</a></td><td>    <a id="799c5" class="tk">rtb_DataTypeConversion_a</a>, 4000, 10, 10, 10, <a id="799c49" class="tk">&amp;</a><a id="799c50" class="tk">rtb_o_samp_p1</a>, <a id="799c65" class="tk">&amp;</a><a id="799c66" class="tk">rtY_pwm_counts</a></td></tr>
+<tr name="800" id="800">
+<td><a id="l800" class='ln'>800</a></td><td>    [7], <a id="800c10" class="tk">rtY_sector</a>);</td></tr>
+<tr name="801" id="801">
+<td><a id="l801" class='ln'>801</a></td><td></td></tr>
+<tr name="802" id="802">
+<td><a id="l802" class='ln'>802</a></td><td>  <span class="ct">/* DeadZone: '&lt;S103&gt;/DeadZone' incorporates:</span></td></tr>
+<tr name="803" id="803">
+<td><a id="l803" class='ln'>803</a></td><td><span class="ct">   *  Signum: '&lt;S101&gt;/SignPreSat'</span></td></tr>
+<tr name="804" id="804">
+<td><a id="l804" class='ln'>804</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="805" id="805">
+<td><a id="l805" class='ln'>805</a></td><td>  <span class="kw">if</span> (<a id="805c7" class="tk">rtb_SignPreSat_k</a> <a id="805c24" class="tk">&gt;</a> 8960) <span class="br">{</span></td></tr>
+<tr name="806" id="806">
+<td><a id="l806" class='ln'>806</a></td><td>    <a id="806c5" class="tk">rtb_SignPreSat_k</a> = (<a id="806c25" class="tk">int16_T</a>)(<a id="806c34" class="tk">rtb_SignPreSat_k</a> <a id="806c51" class="tk">-</a> 8960);</td></tr>
+<tr name="807" id="807">
+<td><a id="l807" class='ln'>807</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="807c14" class="tk">rtb_SignPreSat_k</a> <a id="807c31" class="tk">&gt;=</a> <a id="807c34" class="tk">-</a>8960) <span class="br">{</span></td></tr>
+<tr name="808" id="808">
+<td><a id="l808" class='ln'>808</a></td><td>    <a id="808c5" class="tk">rtb_SignPreSat_k</a> = 0;</td></tr>
+<tr name="809" id="809">
+<td><a id="l809" class='ln'>809</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="810" id="810">
+<td><a id="l810" class='ln'>810</a></td><td>    <a id="810c5" class="tk">rtb_SignPreSat_k</a> = (<a id="810c25" class="tk">int16_T</a>)(<a id="810c34" class="tk">rtb_SignPreSat_k</a> <a id="810c51" class="tk">-</a> <a id="810c53" class="tk">-</a>8960);</td></tr>
+<tr name="811" id="811">
+<td><a id="l811" class='ln'>811</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="812" id="812">
+<td><a id="l812" class='ln'>812</a></td><td></td></tr>
+<tr name="813" id="813">
+<td><a id="l813" class='ln'>813</a></td><td>  <span class="ct">/* End of DeadZone: '&lt;S103&gt;/DeadZone' */</span></td></tr>
+<tr name="814" id="814">
+<td><a id="l814" class='ln'>814</a></td><td></td></tr>
+<tr name="815" id="815">
+<td><a id="l815" class='ln'>815</a></td><td>  <span class="ct">/* RelationalOperator: '&lt;S101&gt;/NotEqual' incorporates:</span></td></tr>
+<tr name="816" id="816">
+<td><a id="l816" class='ln'>816</a></td><td><span class="ct">   *  Gain: '&lt;S101&gt;/ZeroGain'</span></td></tr>
+<tr name="817" id="817">
+<td><a id="l817" class='ln'>817</a></td><td><span class="ct">   *  Signum: '&lt;S101&gt;/SignPreSat'</span></td></tr>
+<tr name="818" id="818">
+<td><a id="l818" class='ln'>818</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="819" id="819">
+<td><a id="l819" class='ln'>819</a></td><td>  <a id="819c3" class="tk">rtb_NotEqual</a> = (0 <a id="819c21" class="tk">!=</a> <a id="819c24" class="tk">rtb_SignPreSat_k</a>);</td></tr>
+<tr name="820" id="820">
+<td><a id="l820" class='ln'>820</a></td><td></td></tr>
+<tr name="821" id="821">
+<td><a id="l821" class='ln'>821</a></td><td>  <span class="ct">/* Signum: '&lt;S101&gt;/SignPreSat' */</span></td></tr>
+<tr name="822" id="822">
+<td><a id="l822" class='ln'>822</a></td><td>  <span class="kw">if</span> (<a id="822c7" class="tk">rtb_SignPreSat_k</a> <a id="822c24" class="tk">&lt;</a> 0) <span class="br">{</span></td></tr>
+<tr name="823" id="823">
+<td><a id="l823" class='ln'>823</a></td><td>    <a id="823c5" class="tk">rtb_SignPreSat_k</a> = <a id="823c24" class="tk">-</a>1;</td></tr>
+<tr name="824" id="824">
+<td><a id="l824" class='ln'>824</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="825" id="825">
+<td><a id="l825" class='ln'>825</a></td><td>    <a id="825c5" class="tk">rtb_SignPreSat_k</a> = (<a id="825c25" class="tk">int16_T</a>)(<a id="825c34" class="tk">rtb_SignPreSat_k</a> <a id="825c51" class="tk">&gt;</a> 0);</td></tr>
+<tr name="826" id="826">
+<td><a id="l826" class='ln'>826</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="827" id="827">
+<td><a id="l827" class='ln'>827</a></td><td></td></tr>
+<tr name="828" id="828">
+<td><a id="l828" class='ln'>828</a></td><td>  <span class="ct">/* End of Signum: '&lt;S101&gt;/SignPreSat' */</span></td></tr>
+<tr name="829" id="829">
+<td><a id="l829" class='ln'>829</a></td><td></td></tr>
+<tr name="830" id="830">
+<td><a id="l830" class='ln'>830</a></td><td>  <span class="ct">/* Gain: '&lt;S107&gt;/Integral Gain' incorporates:</span></td></tr>
+<tr name="831" id="831">
+<td><a id="l831" class='ln'>831</a></td><td><span class="ct">   *  Gain: '&lt;S57&gt;/Integral Gain'</span></td></tr>
+<tr name="832" id="832">
+<td><a id="l832" class='ln'>832</a></td><td><span class="ct">   *  Sum: '&lt;S16&gt;/Sum2'</span></td></tr>
+<tr name="833" id="833">
+<td><a id="l833" class='ln'>833</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="834" id="834">
+<td><a id="l834" class='ln'>834</a></td><td>  <a id="834c3" class="tk">rtb_Divide7</a> = (<a id="834c18" class="tk">int16_T</a>)(1080 <a id="834c32" class="tk">*</a> <a id="834c34" class="tk">rtb_Sum2</a>);</td></tr>
+<tr name="835" id="835">
+<td><a id="l835" class='ln'>835</a></td><td></td></tr>
+<tr name="836" id="836">
+<td><a id="l836" class='ln'>836</a></td><td>  <span class="ct">/* Signum: '&lt;S101&gt;/SignPreIntegrator' incorporates:</span></td></tr>
+<tr name="837" id="837">
+<td><a id="l837" class='ln'>837</a></td><td><span class="ct">   *  Gain: '&lt;S57&gt;/Integral Gain'</span></td></tr>
+<tr name="838" id="838">
+<td><a id="l838" class='ln'>838</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="839" id="839">
+<td><a id="l839" class='ln'>839</a></td><td>  <span class="kw">if</span> (<a id="839c7" class="tk">rtb_Divide7</a> <a id="839c19" class="tk">&lt;</a> 0) <span class="br">{</span></td></tr>
+<tr name="840" id="840">
+<td><a id="l840" class='ln'>840</a></td><td>    <a id="840c5" class="tk">rtb_Divide4</a> = <a id="840c19" class="tk">-</a>1;</td></tr>
+<tr name="841" id="841">
+<td><a id="l841" class='ln'>841</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="842" id="842">
+<td><a id="l842" class='ln'>842</a></td><td>    <a id="842c5" class="tk">rtb_Divide4</a> = (<a id="842c20" class="tk">int16_T</a>)(<a id="842c29" class="tk">rtb_Divide7</a> <a id="842c41" class="tk">&gt;</a> 0);</td></tr>
+<tr name="843" id="843">
+<td><a id="l843" class='ln'>843</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="844" id="844">
+<td><a id="l844" class='ln'>844</a></td><td></td></tr>
+<tr name="845" id="845">
+<td><a id="l845" class='ln'>845</a></td><td>  <span class="ct">/* End of Signum: '&lt;S101&gt;/SignPreIntegrator' */</span></td></tr>
+<tr name="846" id="846">
+<td><a id="l846" class='ln'>846</a></td><td></td></tr>
+<tr name="847" id="847">
+<td><a id="l847" class='ln'>847</a></td><td>  <span class="ct">/* Switch: '&lt;S101&gt;/Switch' incorporates:</span></td></tr>
+<tr name="848" id="848">
+<td><a id="l848" class='ln'>848</a></td><td><span class="ct">   *  Constant: '&lt;S101&gt;/Constant1'</span></td></tr>
+<tr name="849" id="849">
+<td><a id="l849" class='ln'>849</a></td><td><span class="ct">   *  DataTypeConversion: '&lt;S101&gt;/DataTypeConv1'</span></td></tr>
+<tr name="850" id="850">
+<td><a id="l850" class='ln'>850</a></td><td><span class="ct">   *  DataTypeConversion: '&lt;S101&gt;/DataTypeConv2'</span></td></tr>
+<tr name="851" id="851">
+<td><a id="l851" class='ln'>851</a></td><td><span class="ct">   *  Gain: '&lt;S57&gt;/Integral Gain'</span></td></tr>
+<tr name="852" id="852">
+<td><a id="l852" class='ln'>852</a></td><td><span class="ct">   *  Logic: '&lt;S101&gt;/AND3'</span></td></tr>
+<tr name="853" id="853">
+<td><a id="l853" class='ln'>853</a></td><td><span class="ct">   *  RelationalOperator: '&lt;S101&gt;/Equal1'</span></td></tr>
+<tr name="854" id="854">
+<td><a id="l854" class='ln'>854</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="855" id="855">
+<td><a id="l855" class='ln'>855</a></td><td>  <span class="kw">if</span> (<a id="855c7" class="tk">rtb_NotEqual</a> <a id="855c20" class="tk">&amp;&amp;</a> (<a id="855c24" class="tk">rtb_SignPreSat_k</a> <a id="855c41" class="tk">==</a> <a id="855c44" class="tk">rtb_Divide4</a>)) <span class="br">{</span></td></tr>
+<tr name="856" id="856">
+<td><a id="l856" class='ln'>856</a></td><td>    <a id="856c5" class="tk">rtb_Sum2</a> = 0;</td></tr>
+<tr name="857" id="857">
+<td><a id="l857" class='ln'>857</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="858" id="858">
+<td><a id="l858" class='ln'>858</a></td><td>    <a id="858c5" class="tk">rtb_Sum2</a> = <a id="858c16" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="859" id="859">
+<td><a id="l859" class='ln'>859</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="860" id="860">
+<td><a id="l860" class='ln'>860</a></td><td></td></tr>
+<tr name="861" id="861">
+<td><a id="l861" class='ln'>861</a></td><td>  <span class="ct">/* End of Switch: '&lt;S101&gt;/Switch' */</span></td></tr>
+<tr name="862" id="862">
+<td><a id="l862" class='ln'>862</a></td><td></td></tr>
+<tr name="863" id="863">
+<td><a id="l863" class='ln'>863</a></td><td>  <span class="ct">/* DeadZone: '&lt;S153&gt;/DeadZone' incorporates:</span></td></tr>
+<tr name="864" id="864">
+<td><a id="l864" class='ln'>864</a></td><td><span class="ct">   *  Signum: '&lt;S151&gt;/SignPreSat'</span></td></tr>
+<tr name="865" id="865">
+<td><a id="l865" class='ln'>865</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="866" id="866">
+<td><a id="l866" class='ln'>866</a></td><td>  <span class="kw">if</span> (<a id="866c7" class="tk">rtb_SignPreSat</a> <a id="866c22" class="tk">&gt;</a> 800) <span class="br">{</span></td></tr>
+<tr name="867" id="867">
+<td><a id="l867" class='ln'>867</a></td><td>    <a id="867c5" class="tk">rtb_SignPreSat</a> = (<a id="867c23" class="tk">int16_T</a>)(<a id="867c32" class="tk">rtb_SignPreSat</a> <a id="867c47" class="tk">-</a> 800);</td></tr>
+<tr name="868" id="868">
+<td><a id="l868" class='ln'>868</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="868c14" class="tk">rtb_SignPreSat</a> <a id="868c29" class="tk">&gt;=</a> <a id="868c32" class="tk">-</a>800) <span class="br">{</span></td></tr>
+<tr name="869" id="869">
+<td><a id="l869" class='ln'>869</a></td><td>    <a id="869c5" class="tk">rtb_SignPreSat</a> = 0;</td></tr>
+<tr name="870" id="870">
+<td><a id="l870" class='ln'>870</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="871" id="871">
+<td><a id="l871" class='ln'>871</a></td><td>    <a id="871c5" class="tk">rtb_SignPreSat</a> = (<a id="871c23" class="tk">int16_T</a>)(<a id="871c32" class="tk">rtb_SignPreSat</a> <a id="871c47" class="tk">-</a> <a id="871c49" class="tk">-</a>800);</td></tr>
+<tr name="872" id="872">
+<td><a id="l872" class='ln'>872</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="873" id="873">
+<td><a id="l873" class='ln'>873</a></td><td></td></tr>
+<tr name="874" id="874">
+<td><a id="l874" class='ln'>874</a></td><td>  <span class="ct">/* End of DeadZone: '&lt;S153&gt;/DeadZone' */</span></td></tr>
+<tr name="875" id="875">
+<td><a id="l875" class='ln'>875</a></td><td></td></tr>
+<tr name="876" id="876">
+<td><a id="l876" class='ln'>876</a></td><td>  <span class="ct">/* RelationalOperator: '&lt;S151&gt;/NotEqual' incorporates:</span></td></tr>
+<tr name="877" id="877">
+<td><a id="l877" class='ln'>877</a></td><td><span class="ct">   *  Gain: '&lt;S151&gt;/ZeroGain'</span></td></tr>
+<tr name="878" id="878">
+<td><a id="l878" class='ln'>878</a></td><td><span class="ct">   *  Signum: '&lt;S151&gt;/SignPreSat'</span></td></tr>
+<tr name="879" id="879">
+<td><a id="l879" class='ln'>879</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="880" id="880">
+<td><a id="l880" class='ln'>880</a></td><td>  <a id="880c3" class="tk">rtb_NotEqual</a> = (0 <a id="880c21" class="tk">!=</a> <a id="880c24" class="tk">rtb_SignPreSat</a>);</td></tr>
+<tr name="881" id="881">
+<td><a id="l881" class='ln'>881</a></td><td></td></tr>
+<tr name="882" id="882">
+<td><a id="l882" class='ln'>882</a></td><td>  <span class="ct">/* Signum: '&lt;S151&gt;/SignPreSat' */</span></td></tr>
+<tr name="883" id="883">
+<td><a id="l883" class='ln'>883</a></td><td>  <span class="kw">if</span> (<a id="883c7" class="tk">rtb_SignPreSat</a> <a id="883c22" class="tk">&lt;</a> 0) <span class="br">{</span></td></tr>
+<tr name="884" id="884">
+<td><a id="l884" class='ln'>884</a></td><td>    <a id="884c5" class="tk">rtb_SignPreSat</a> = <a id="884c22" class="tk">-</a>1;</td></tr>
+<tr name="885" id="885">
+<td><a id="l885" class='ln'>885</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="886" id="886">
+<td><a id="l886" class='ln'>886</a></td><td>    <a id="886c5" class="tk">rtb_SignPreSat</a> = (<a id="886c23" class="tk">int16_T</a>)(<a id="886c32" class="tk">rtb_SignPreSat</a> <a id="886c47" class="tk">&gt;</a> 0);</td></tr>
+<tr name="887" id="887">
+<td><a id="l887" class='ln'>887</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="888" id="888">
+<td><a id="l888" class='ln'>888</a></td><td></td></tr>
+<tr name="889" id="889">
+<td><a id="l889" class='ln'>889</a></td><td>  <span class="ct">/* End of Signum: '&lt;S151&gt;/SignPreSat' */</span></td></tr>
+<tr name="890" id="890">
+<td><a id="l890" class='ln'>890</a></td><td></td></tr>
+<tr name="891" id="891">
+<td><a id="l891" class='ln'>891</a></td><td>  <span class="ct">/* Gain: '&lt;S157&gt;/Integral Gain' incorporates:</span></td></tr>
+<tr name="892" id="892">
+<td><a id="l892" class='ln'>892</a></td><td><span class="ct">   *  Gain: '&lt;S57&gt;/Integral Gain'</span></td></tr>
+<tr name="893" id="893">
+<td><a id="l893" class='ln'>893</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="894" id="894">
+<td><a id="l894" class='ln'>894</a></td><td>  <a id="894c3" class="tk">rtb_Divide7</a> = (<a id="894c18" class="tk">int16_T</a>)((<a id="894c28" class="tk">int16_T</a>)(200 <a id="894c41" class="tk">*</a> <a id="894c43" class="tk">rtb_Sum3_l</a>) <a id="894c55" class="tk">&lt;&lt;</a> 4);</td></tr>
+<tr name="895" id="895">
+<td><a id="l895" class='ln'>895</a></td><td></td></tr>
+<tr name="896" id="896">
+<td><a id="l896" class='ln'>896</a></td><td>  <span class="ct">/* Signum: '&lt;S151&gt;/SignPreIntegrator' incorporates:</span></td></tr>
+<tr name="897" id="897">
+<td><a id="l897" class='ln'>897</a></td><td><span class="ct">   *  Gain: '&lt;S57&gt;/Integral Gain'</span></td></tr>
+<tr name="898" id="898">
+<td><a id="l898" class='ln'>898</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="899" id="899">
+<td><a id="l899" class='ln'>899</a></td><td>  <span class="kw">if</span> (<a id="899c7" class="tk">rtb_Divide7</a> <a id="899c19" class="tk">&lt;</a> 0) <span class="br">{</span></td></tr>
+<tr name="900" id="900">
+<td><a id="l900" class='ln'>900</a></td><td>    <a id="900c5" class="tk">rtb_Divide4</a> = <a id="900c19" class="tk">-</a>1;</td></tr>
+<tr name="901" id="901">
+<td><a id="l901" class='ln'>901</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="902" id="902">
+<td><a id="l902" class='ln'>902</a></td><td>    <a id="902c5" class="tk">rtb_Divide4</a> = (<a id="902c20" class="tk">int16_T</a>)(<a id="902c29" class="tk">rtb_Divide7</a> <a id="902c41" class="tk">&gt;</a> 0);</td></tr>
+<tr name="903" id="903">
+<td><a id="l903" class='ln'>903</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="904" id="904">
+<td><a id="l904" class='ln'>904</a></td><td></td></tr>
+<tr name="905" id="905">
+<td><a id="l905" class='ln'>905</a></td><td>  <span class="ct">/* End of Signum: '&lt;S151&gt;/SignPreIntegrator' */</span></td></tr>
+<tr name="906" id="906">
+<td><a id="l906" class='ln'>906</a></td><td></td></tr>
+<tr name="907" id="907">
+<td><a id="l907" class='ln'>907</a></td><td>  <span class="ct">/* Switch: '&lt;S151&gt;/Switch' incorporates:</span></td></tr>
+<tr name="908" id="908">
+<td><a id="l908" class='ln'>908</a></td><td><span class="ct">   *  Constant: '&lt;S151&gt;/Constant1'</span></td></tr>
+<tr name="909" id="909">
+<td><a id="l909" class='ln'>909</a></td><td><span class="ct">   *  DataTypeConversion: '&lt;S151&gt;/DataTypeConv1'</span></td></tr>
+<tr name="910" id="910">
+<td><a id="l910" class='ln'>910</a></td><td><span class="ct">   *  DataTypeConversion: '&lt;S151&gt;/DataTypeConv2'</span></td></tr>
+<tr name="911" id="911">
+<td><a id="l911" class='ln'>911</a></td><td><span class="ct">   *  Gain: '&lt;S57&gt;/Integral Gain'</span></td></tr>
+<tr name="912" id="912">
+<td><a id="l912" class='ln'>912</a></td><td><span class="ct">   *  Logic: '&lt;S151&gt;/AND3'</span></td></tr>
+<tr name="913" id="913">
+<td><a id="l913" class='ln'>913</a></td><td><span class="ct">   *  RelationalOperator: '&lt;S151&gt;/Equal1'</span></td></tr>
+<tr name="914" id="914">
+<td><a id="l914" class='ln'>914</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="915" id="915">
+<td><a id="l915" class='ln'>915</a></td><td>  <span class="kw">if</span> (<a id="915c7" class="tk">rtb_NotEqual</a> <a id="915c20" class="tk">&amp;&amp;</a> (<a id="915c24" class="tk">rtb_SignPreSat</a> <a id="915c39" class="tk">==</a> <a id="915c42" class="tk">rtb_Divide4</a>)) <span class="br">{</span></td></tr>
+<tr name="916" id="916">
+<td><a id="l916" class='ln'>916</a></td><td>    <a id="916c5" class="tk">rtb_Sum3_l</a> = 0;</td></tr>
+<tr name="917" id="917">
+<td><a id="l917" class='ln'>917</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="918" id="918">
+<td><a id="l918" class='ln'>918</a></td><td>    <a id="918c5" class="tk">rtb_Sum3_l</a> = <a id="918c18" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="919" id="919">
+<td><a id="l919" class='ln'>919</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="920" id="920">
+<td><a id="l920" class='ln'>920</a></td><td></td></tr>
+<tr name="921" id="921">
+<td><a id="l921" class='ln'>921</a></td><td>  <span class="ct">/* End of Switch: '&lt;S151&gt;/Switch' */</span></td></tr>
+<tr name="922" id="922">
+<td><a id="l922" class='ln'>922</a></td><td></td></tr>
+<tr name="923" id="923">
+<td><a id="l923" class='ln'>923</a></td><td>  <span class="ct">/* DeadZone: '&lt;S53&gt;/DeadZone' incorporates:</span></td></tr>
+<tr name="924" id="924">
+<td><a id="l924" class='ln'>924</a></td><td><span class="ct">   *  Signum: '&lt;S51&gt;/SignPreSat'</span></td></tr>
+<tr name="925" id="925">
+<td><a id="l925" class='ln'>925</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="926" id="926">
+<td><a id="l926" class='ln'>926</a></td><td>  <span class="kw">if</span> (<a id="926c7" class="tk">rtb_Multiply_idx_1</a> <a id="926c26" class="tk">&gt;</a> 8960) <span class="br">{</span></td></tr>
+<tr name="927" id="927">
+<td><a id="l927" class='ln'>927</a></td><td>    <a id="927c5" class="tk">rtb_Multiply_idx_1</a> = (<a id="927c27" class="tk">int16_T</a>)(<a id="927c36" class="tk">rtb_Multiply_idx_1</a> <a id="927c55" class="tk">-</a> 8960);</td></tr>
+<tr name="928" id="928">
+<td><a id="l928" class='ln'>928</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="928c14" class="tk">rtb_Multiply_idx_1</a> <a id="928c33" class="tk">&gt;=</a> <a id="928c36" class="tk">-</a>8960) <span class="br">{</span></td></tr>
+<tr name="929" id="929">
+<td><a id="l929" class='ln'>929</a></td><td>    <a id="929c5" class="tk">rtb_Multiply_idx_1</a> = 0;</td></tr>
+<tr name="930" id="930">
+<td><a id="l930" class='ln'>930</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="931" id="931">
+<td><a id="l931" class='ln'>931</a></td><td>    <a id="931c5" class="tk">rtb_Multiply_idx_1</a> = (<a id="931c27" class="tk">int16_T</a>)(<a id="931c36" class="tk">rtb_Multiply_idx_1</a> <a id="931c55" class="tk">-</a> <a id="931c57" class="tk">-</a>8960);</td></tr>
+<tr name="932" id="932">
+<td><a id="l932" class='ln'>932</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="933" id="933">
+<td><a id="l933" class='ln'>933</a></td><td></td></tr>
+<tr name="934" id="934">
+<td><a id="l934" class='ln'>934</a></td><td>  <span class="ct">/* End of DeadZone: '&lt;S53&gt;/DeadZone' */</span></td></tr>
+<tr name="935" id="935">
+<td><a id="l935" class='ln'>935</a></td><td></td></tr>
+<tr name="936" id="936">
+<td><a id="l936" class='ln'>936</a></td><td>  <span class="ct">/* RelationalOperator: '&lt;S51&gt;/NotEqual' incorporates:</span></td></tr>
+<tr name="937" id="937">
+<td><a id="l937" class='ln'>937</a></td><td><span class="ct">   *  Gain: '&lt;S51&gt;/ZeroGain'</span></td></tr>
+<tr name="938" id="938">
+<td><a id="l938" class='ln'>938</a></td><td><span class="ct">   *  Signum: '&lt;S51&gt;/SignPreSat'</span></td></tr>
+<tr name="939" id="939">
+<td><a id="l939" class='ln'>939</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="940" id="940">
+<td><a id="l940" class='ln'>940</a></td><td>  <a id="940c3" class="tk">rtb_NotEqual</a> = (0 <a id="940c21" class="tk">!=</a> <a id="940c24" class="tk">rtb_Multiply_idx_1</a>);</td></tr>
+<tr name="941" id="941">
+<td><a id="l941" class='ln'>941</a></td><td></td></tr>
+<tr name="942" id="942">
+<td><a id="l942" class='ln'>942</a></td><td>  <span class="ct">/* Signum: '&lt;S51&gt;/SignPreSat' */</span></td></tr>
+<tr name="943" id="943">
+<td><a id="l943" class='ln'>943</a></td><td>  <span class="kw">if</span> (<a id="943c7" class="tk">rtb_Multiply_idx_1</a> <a id="943c26" class="tk">&lt;</a> 0) <span class="br">{</span></td></tr>
+<tr name="944" id="944">
+<td><a id="l944" class='ln'>944</a></td><td>    <a id="944c5" class="tk">rtb_Multiply_idx_1</a> = <a id="944c26" class="tk">-</a>1;</td></tr>
+<tr name="945" id="945">
+<td><a id="l945" class='ln'>945</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="946" id="946">
+<td><a id="l946" class='ln'>946</a></td><td>    <a id="946c5" class="tk">rtb_Multiply_idx_1</a> = (<a id="946c27" class="tk">int16_T</a>)(<a id="946c36" class="tk">rtb_Multiply_idx_1</a> <a id="946c55" class="tk">&gt;</a> 0);</td></tr>
+<tr name="947" id="947">
+<td><a id="l947" class='ln'>947</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="948" id="948">
+<td><a id="l948" class='ln'>948</a></td><td></td></tr>
+<tr name="949" id="949">
+<td><a id="l949" class='ln'>949</a></td><td>  <span class="ct">/* End of Signum: '&lt;S51&gt;/SignPreSat' */</span></td></tr>
+<tr name="950" id="950">
+<td><a id="l950" class='ln'>950</a></td><td></td></tr>
+<tr name="951" id="951">
+<td><a id="l951" class='ln'>951</a></td><td>  <span class="ct">/* Gain: '&lt;S57&gt;/Integral Gain' incorporates:</span></td></tr>
+<tr name="952" id="952">
+<td><a id="l952" class='ln'>952</a></td><td><span class="ct">   *  Sum: '&lt;S16&gt;/Sum1'</span></td></tr>
+<tr name="953" id="953">
+<td><a id="l953" class='ln'>953</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="954" id="954">
+<td><a id="l954" class='ln'>954</a></td><td>  <a id="954c3" class="tk">rtb_Divide7</a> = (<a id="954c18" class="tk">int16_T</a>)(1071 <a id="954c32" class="tk">*</a> (<a id="954c35" class="tk">int16_T</a>)<a id="954c43" class="tk">-</a><a id="954c44" class="tk">rtb_Multiply_idx_0</a>);</td></tr>
+<tr name="955" id="955">
+<td><a id="l955" class='ln'>955</a></td><td></td></tr>
+<tr name="956" id="956">
+<td><a id="l956" class='ln'>956</a></td><td>  <span class="ct">/* Update for UnitDelay: '&lt;S21&gt;/UnitDelay1' incorporates:</span></td></tr>
+<tr name="957" id="957">
+<td><a id="l957" class='ln'>957</a></td><td><span class="ct">   *  Sum: '&lt;S21&gt;/Sum3'</span></td></tr>
+<tr name="958" id="958">
+<td><a id="l958" class='ln'>958</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="959" id="959">
+<td><a id="l959" class='ln'>959</a></td><td>  <a id="959c3" class="tk">rtDW</a>-&gt;<a id="959c9" class="tk">UnitDelay1_DSTATE</a>[0] = <a id="959c32" class="tk">rtb_Sum3_idx_0</a>;</td></tr>
+<tr name="960" id="960">
+<td><a id="l960" class='ln'>960</a></td><td>  <a id="960c3" class="tk">rtDW</a>-&gt;<a id="960c9" class="tk">UnitDelay1_DSTATE</a>[1] = <a id="960c32" class="tk">rtb_Sum3_idx_1</a>;</td></tr>
+<tr name="961" id="961">
+<td><a id="l961" class='ln'>961</a></td><td></td></tr>
+<tr name="962" id="962">
+<td><a id="l962" class='ln'>962</a></td><td>  <span class="ct">/* Signum: '&lt;S51&gt;/SignPreIntegrator' incorporates:</span></td></tr>
+<tr name="963" id="963">
+<td><a id="l963" class='ln'>963</a></td><td><span class="ct">   *  Gain: '&lt;S57&gt;/Integral Gain'</span></td></tr>
+<tr name="964" id="964">
+<td><a id="l964" class='ln'>964</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="965" id="965">
+<td><a id="l965" class='ln'>965</a></td><td>  <span class="kw">if</span> (<a id="965c7" class="tk">rtb_Divide7</a> <a id="965c19" class="tk">&lt;</a> 0) <span class="br">{</span></td></tr>
+<tr name="966" id="966">
+<td><a id="l966" class='ln'>966</a></td><td>    <a id="966c5" class="tk">rtb_Divide4</a> = <a id="966c19" class="tk">-</a>1;</td></tr>
+<tr name="967" id="967">
+<td><a id="l967" class='ln'>967</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="968" id="968">
+<td><a id="l968" class='ln'>968</a></td><td>    <a id="968c5" class="tk">rtb_Divide4</a> = (<a id="968c20" class="tk">int16_T</a>)(<a id="968c29" class="tk">rtb_Divide7</a> <a id="968c41" class="tk">&gt;</a> 0);</td></tr>
+<tr name="969" id="969">
+<td><a id="l969" class='ln'>969</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="970" id="970">
+<td><a id="l970" class='ln'>970</a></td><td></td></tr>
+<tr name="971" id="971">
+<td><a id="l971" class='ln'>971</a></td><td>  <span class="ct">/* End of Signum: '&lt;S51&gt;/SignPreIntegrator' */</span></td></tr>
+<tr name="972" id="972">
+<td><a id="l972" class='ln'>972</a></td><td></td></tr>
+<tr name="973" id="973">
+<td><a id="l973" class='ln'>973</a></td><td>  <span class="ct">/* Switch: '&lt;S51&gt;/Switch' incorporates:</span></td></tr>
+<tr name="974" id="974">
+<td><a id="l974" class='ln'>974</a></td><td><span class="ct">   *  Constant: '&lt;S51&gt;/Constant1'</span></td></tr>
+<tr name="975" id="975">
+<td><a id="l975" class='ln'>975</a></td><td><span class="ct">   *  DataTypeConversion: '&lt;S51&gt;/DataTypeConv1'</span></td></tr>
+<tr name="976" id="976">
+<td><a id="l976" class='ln'>976</a></td><td><span class="ct">   *  DataTypeConversion: '&lt;S51&gt;/DataTypeConv2'</span></td></tr>
+<tr name="977" id="977">
+<td><a id="l977" class='ln'>977</a></td><td><span class="ct">   *  Logic: '&lt;S51&gt;/AND3'</span></td></tr>
+<tr name="978" id="978">
+<td><a id="l978" class='ln'>978</a></td><td><span class="ct">   *  RelationalOperator: '&lt;S51&gt;/Equal1'</span></td></tr>
+<tr name="979" id="979">
+<td><a id="l979" class='ln'>979</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="980" id="980">
+<td><a id="l980" class='ln'>980</a></td><td>  <span class="kw">if</span> (<a id="980c7" class="tk">rtb_NotEqual</a> <a id="980c20" class="tk">&amp;&amp;</a> (<a id="980c24" class="tk">rtb_Multiply_idx_1</a> <a id="980c43" class="tk">==</a> <a id="980c46" class="tk">rtb_Divide4</a>)) <span class="br">{</span></td></tr>
+<tr name="981" id="981">
+<td><a id="l981" class='ln'>981</a></td><td>    <a id="981c5" class="tk">rtb_Divide7</a> = 0;</td></tr>
+<tr name="982" id="982">
+<td><a id="l982" class='ln'>982</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="983" id="983">
+<td><a id="l983" class='ln'>983</a></td><td></td></tr>
+<tr name="984" id="984">
+<td><a id="l984" class='ln'>984</a></td><td>  <span class="ct">/* End of Switch: '&lt;S51&gt;/Switch' */</span></td></tr>
+<tr name="985" id="985">
+<td><a id="l985" class='ln'>985</a></td><td></td></tr>
+<tr name="986" id="986">
+<td><a id="l986" class='ln'>986</a></td><td>  <span class="ct">/* Update for DiscreteIntegrator: '&lt;S60&gt;/Integrator' */</span></td></tr>
+<tr name="987" id="987">
+<td><a id="l987" class='ln'>987</a></td><td>  <a id="987c3" class="tk">rtDW</a>-&gt;<a id="987c9" class="tk">Integrator_DSTATE</a> <a id="987c27" class="tk">+=</a> <a id="987c30" class="tk">rtb_Divide7</a>;</td></tr>
+<tr name="988" id="988">
+<td><a id="l988" class='ln'>988</a></td><td></td></tr>
+<tr name="989" id="989">
+<td><a id="l989" class='ln'>989</a></td><td>  <span class="ct">/* Update for DiscreteIntegrator: '&lt;S160&gt;/Integrator' incorporates:</span></td></tr>
+<tr name="990" id="990">
+<td><a id="l990" class='ln'>990</a></td><td><span class="ct">   *  Switch: '&lt;S151&gt;/Switch'</span></td></tr>
+<tr name="991" id="991">
+<td><a id="l991" class='ln'>991</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="992" id="992">
+<td><a id="l992" class='ln'>992</a></td><td>  <a id="992c3" class="tk">rtDW</a>-&gt;<a id="992c9" class="tk">Integrator_DSTATE_i</a> <a id="992c29" class="tk">+=</a> <a id="992c32" class="tk">rtb_Sum3_l</a>;</td></tr>
+<tr name="993" id="993">
+<td><a id="l993" class='ln'>993</a></td><td></td></tr>
+<tr name="994" id="994">
+<td><a id="l994" class='ln'>994</a></td><td>  <span class="ct">/* Update for DiscreteIntegrator: '&lt;S110&gt;/Integrator' incorporates:</span></td></tr>
+<tr name="995" id="995">
+<td><a id="l995" class='ln'>995</a></td><td><span class="ct">   *  Switch: '&lt;S101&gt;/Switch'</span></td></tr>
+<tr name="996" id="996">
+<td><a id="l996" class='ln'>996</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="997" id="997">
+<td><a id="l997" class='ln'>997</a></td><td>  <a id="997c3" class="tk">rtDW</a>-&gt;<a id="997c9" class="tk">Integrator_DSTATE_p</a> <a id="997c29" class="tk">+=</a> <a id="997c32" class="tk">rtb_Sum2</a>;</td></tr>
+<tr name="998" id="998">
+<td><a id="l998" class='ln'>998</a></td><td></td></tr>
+<tr name="999" id="999">
+<td><a id="l999" class='ln'>999</a></td><td>  <span class="ct">/* End of Outputs for SubSystem: '&lt;S1&gt;/controller' */</span></td></tr>
+<tr name="1000" id="1000">
+<td><a id="l1000" class='ln'>1000</a></td><td></td></tr>
+<tr name="1001" id="1001">
+<td><a id="l1001" class='ln'>1001</a></td><td>  <span class="ct">/* Outport: '&lt;Root&gt;/pwm_counts' incorporates:</span></td></tr>
+<tr name="1002" id="1002">
+<td><a id="l1002" class='ln'>1002</a></td><td><span class="ct">   *  DataTypeConversion: '&lt;S177&gt;/Data Type Conversion4'</span></td></tr>
+<tr name="1003" id="1003">
+<td><a id="l1003" class='ln'>1003</a></td><td><span class="ct">   *  DataTypeConversion: '&lt;S177&gt;/Data Type Conversion5'</span></td></tr>
+<tr name="1004" id="1004">
+<td><a id="l1004" class='ln'>1004</a></td><td><span class="ct">   *  MATLAB Function: '&lt;S177&gt;/phase_time'</span></td></tr>
+<tr name="1005" id="1005">
+<td><a id="l1005" class='ln'>1005</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="1006" id="1006">
+<td><a id="l1006" class='ln'>1006</a></td><td>  <a id="1006c3" class="tk">rtY_pwm_counts</a>[0] = <a id="1006c23" class="tk">rtb_DataTypeConversion3</a>;</td></tr>
+<tr name="1007" id="1007">
+<td><a id="l1007" class='ln'>1007</a></td><td></td></tr>
+<tr name="1008" id="1008">
+<td><a id="l1008" class='ln'>1008</a></td><td>  <span class="ct">/* Outputs for Atomic SubSystem: '&lt;S1&gt;/controller' */</span></td></tr>
+<tr name="1009" id="1009">
+<td><a id="l1009" class='ln'>1009</a></td><td>  <a id="1009c3" class="tk">rtY_pwm_counts</a>[1] = (<a id="1009c24" class="tk">uint16_T</a>)<a id="1009c33" class="tk">rtb_Sum1</a>;</td></tr>
+<tr name="1010" id="1010">
+<td><a id="l1010" class='ln'>1010</a></td><td>  <a id="1010c3" class="tk">rtY_pwm_counts</a>[2] = (<a id="1010c24" class="tk">uint16_T</a>)<a id="1010c33" class="tk">rtb_Divide</a>;</td></tr>
+<tr name="1011" id="1011">
+<td><a id="l1011" class='ln'>1011</a></td><td></td></tr>
+<tr name="1012" id="1012">
+<td><a id="l1012" class='ln'>1012</a></td><td>  <span class="ct">/* End of Outputs for SubSystem: '&lt;S1&gt;/controller' */</span></td></tr>
+<tr name="1013" id="1013">
+<td><a id="l1013" class='ln'>1013</a></td><td>  <a id="1013c3" class="tk">rtY_pwm_counts</a>[3] = <a id="1013c23" class="tk">rtb_DataTypeConversion3</a>;</td></tr>
+<tr name="1014" id="1014">
+<td><a id="l1014" class='ln'>1014</a></td><td></td></tr>
+<tr name="1015" id="1015">
+<td><a id="l1015" class='ln'>1015</a></td><td>  <span class="ct">/* Outputs for Atomic SubSystem: '&lt;S1&gt;/controller' */</span></td></tr>
+<tr name="1016" id="1016">
+<td><a id="l1016" class='ln'>1016</a></td><td>  <a id="1016c3" class="tk">rtY_pwm_counts</a>[4] = (<a id="1016c24" class="tk">uint16_T</a>)<a id="1016c33" class="tk">rtb_Sum1</a>;</td></tr>
+<tr name="1017" id="1017">
+<td><a id="l1017" class='ln'>1017</a></td><td>  <a id="1017c3" class="tk">rtY_pwm_counts</a>[5] = (<a id="1017c24" class="tk">uint16_T</a>)<a id="1017c33" class="tk">rtb_Divide</a>;</td></tr>
+<tr name="1018" id="1018">
+<td><a id="l1018" class='ln'>1018</a></td><td></td></tr>
+<tr name="1019" id="1019">
+<td><a id="l1019" class='ln'>1019</a></td><td>  <span class="ct">/* End of Outputs for SubSystem: '&lt;S1&gt;/controller' */</span></td></tr>
+<tr name="1020" id="1020">
+<td><a id="l1020" class='ln'>1020</a></td><td>  <a id="1020c3" class="tk">rtY_pwm_counts</a>[6] = <a id="1020c23" class="tk">rtb_o_samp_p1</a>;</td></tr>
+<tr name="1021" id="1021">
+<td><a id="l1021" class='ln'>1021</a></td><td>  <a id="1021c3" class="tk">rate_scheduler</a>(<a id="1021c18" class="tk">rtM</a>);</td></tr>
+<tr name="1022" id="1022">
+<td><a id="l1022" class='ln'>1022</a></td><td><span class="br">}</span></td></tr>
+<tr name="1023" id="1023">
+<td><a id="l1023" class='ln'>1023</a></td><td></td></tr>
+<tr name="1024" id="1024">
+<td><a id="l1024" class='ln'>1024</a></td><td><span class="ct">/* Model initialize function */</span></td></tr>
+<tr name="1025" id="1025">
+<td><a id="l1025" class='ln'>1025</a></td><td><span class="kw">void</span> <a id="1025c6" class="tk">PMSM_Controller_initialize</a>(<a id="1025c33" class="tk">RT_MODEL</a> <a id="1025c42" class="tk">*</a><span class="kw">const</span> <a id="1025c49" class="tk">rtM</a>)</td></tr>
+<tr name="1026" id="1026">
+<td><a id="l1026" class='ln'>1026</a></td><td><span class="br">{</span></td></tr>
+<tr name="1027" id="1027">
+<td><a id="l1027" class='ln'>1027</a></td><td>  <span class="ct">/* Registration code */</span></td></tr>
+<tr name="1028" id="1028">
+<td><a id="l1028" class='ln'>1028</a></td><td></td></tr>
+<tr name="1029" id="1029">
+<td><a id="l1029" class='ln'>1029</a></td><td>  <span class="ct">/* initialize non-finites */</span></td></tr>
+<tr name="1030" id="1030">
+<td><a id="l1030" class='ln'>1030</a></td><td>  <a id="1030c3" class="tk">rt_InitInfAndNaN</a>(<span class="kw">sizeof</span>(<a id="1030c27" class="tk">real_T</a>));</td></tr>
+<tr name="1031" id="1031">
+<td><a id="l1031" class='ln'>1031</a></td><td>  <a id="1031c3" class="tk">UNUSED_PARAMETER</a>(<a id="1031c20" class="tk">rtM</a>);</td></tr>
+<tr name="1032" id="1032">
+<td><a id="l1032" class='ln'>1032</a></td><td><span class="br">}</span></td></tr>
+<tr name="1033" id="1033">
+<td><a id="l1033" class='ln'>1033</a></td><td></td></tr>
+<tr name="1034" id="1034">
+<td><a id="l1034" class='ln'>1034</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="1035" id="1035">
+<td><a id="l1035" class='ln'>1035</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="1036" id="1036">
+<td><a id="l1036" class='ln'>1036</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="1037" id="1037">
+<td><a id="l1037" class='ln'>1037</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="1038" id="1038">
+<td><a id="l1038" class='ln'>1038</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="1039" id="1039">
+<td><a id="l1039" class='ln'>1039</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

+ 33 - 0
Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_codegen_rpt.html

@@ -0,0 +1,33 @@
+<html>
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge" ><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" href="rtwreport.css" /><script language="JavaScript" type="text/javascript" src="rtwhilite.js"></script><script language="JavaScript" type="text/javascript" src="rtwshrink.js"></script><script language="JavaScript" type="text/javascript">var reportModel = "MotorController_FOC:434"; </script><script type="text/javascript">var TargetLang = "C"; </script><script language="JavaScript" type="text/javascript" src="define.js"></script><script language="JavaScript" type="text/javascript" src="traceInfo_flag.js"></script><title>
+PMSM_Controller Code Generation Report
+</title>
+
+</head>
+<frameset cols="25%,75%,0%" id="main" border="2">
+<frame scrolling="auto" src="PMSM_Controller_contents.html" name="rtwreport_contents_frame" id="rtwreport_contents_frame" onLoad="loadDocFrameSource('PMSM_Controller')">
+
+</frame>
+<frameset rows="0%,100%,0%" id="rtw_midFrame">
+<frame scrolling="no" src="navToolbar.html" name="rtwreport_navToolbar_frame" id="rtwreport_navToolbar_frame" noresize="noresize">
+
+</frame>
+<frame scrolling="auto" name="rtwreport_document_frame" id="rtwreport_document_frame" style="background-color: white;">
+
+</frame>
+<frame scrolling="no" src="inspect.html" name="rtwreport_inspect_frame" id="rtwreport_inspect_frame" noresize="noresize">
+
+</frame>
+
+</frameset>
+<frame scrolling="no" src="nav.html" name="rtwreport_nav_frame" id="rtwreport_nav_frame" noresize="noresize">
+
+</frame>
+
+</frameset>
+<body>
+
+</body>
+
+</html>

+ 245 - 0
Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_coderassumptions.html

@@ -0,0 +1,245 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" href="rtwreport.css" /><title>
+Coder Assumptions for 'PMSM_Controller'
+</title>
+
+</head>
+<body onload="try {if (top) {if (top.rtwPageOnLoad) top.rtwPageOnLoad('rtwIdCoderAssumptionsPage'); else local_onload();}} catch(err) {};">
+<h1>
+Coder Assumptions for 'PMSM_Controller'
+</h1>
+<div>
+<p>
+List of assumptions that you can check and expected results for selected target environment. For more information see, <a href="matlab:helpview(fullfile(docroot,'toolbox','ecoder','helptargets.map'),'verif_of_code_generation_assumptions')">Verification of Code Generation Assumptions</a>.
+</p>
+</div>
+<div>
+
+</div>
+<h3 name="sec_C_Language_Configuration_for_ARM_Compatible->ARM_Cortex-M_Target_Hardware" id="sec_target_hardware">
+C Language Configuration for ARM Compatible->ARM Cortex-M Target Hardware
+</h3>
+<table width="100%" border="0">
+<tr>
+<td align="left" valign="top">
+<p>
+<table class="AltRow" cellspacing="0">
+<tr class="even">
+<td align="left" valign="top">
+BitPerChar
+</td>
+<td align="left" valign="top">
+8
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+BitPerShort
+</td>
+<td align="left" valign="top">
+16
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+BitPerInt
+</td>
+<td align="left" valign="top">
+32
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+BitPerLong
+</td>
+<td align="left" valign="top">
+32
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+BitPerLongLong
+</td>
+<td align="left" valign="top">
+64
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+BitPerFloat
+</td>
+<td align="left" valign="top">
+32
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+BitPerDouble
+</td>
+<td align="left" valign="top">
+64
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+BitPerPointer
+</td>
+<td align="left" valign="top">
+32
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+BitPerSizeT
+</td>
+<td align="left" valign="top">
+32
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+BitPerPtrDiffT
+</td>
+<td align="left" valign="top">
+32
+</td>
+
+</tr>
+
+</table>
+<br /><table class="AltRow" cellspacing="0">
+<tr class="even">
+<td align="left" valign="top">
+Endianess
+</td>
+<td align="left" valign="top">
+LittleEndian
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+Shift right for signed integer is arithmetic shift
+</td>
+<td align="left" valign="top">
+True
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+Signed integer division rounds to
+</td>
+<td align="left" valign="top">
+Zero
+</td>
+
+</tr>
+
+</table>
+
+</p>
+
+</td>
+
+</tr>
+
+</table>
+<h3 name="sec_C_Language_Standard" id="sec_lang_standard">
+C Language Standard
+</h3>
+<table width="100%" border="0">
+<tr>
+<td align="left" valign="top">
+<p>
+Zero initialization code has been optimized for model 'PMSM_Controller'.
+</p>
+<p>
+<table class="AltRow" cellspacing="0">
+<tr class="even">
+<td align="left" valign="top">
+Initial value of a global integer variable is zero
+</td>
+<td align="left" valign="top">
+True
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+Initial value of each element of dynamically allocated int array is zero
+</td>
+<td align="left" valign="top">
+True
+</td>
+
+</tr>
+
+</table>
+
+</p>
+<p>
+If the assumption is not correct, remove the optimization through the <a href="matlab:rtw.report.CoderAssumptions.showMemZeroInitParams('PMSM_Controller')">Configuration Parameters > Code Generation > Optimization</a> settings. Alternatively, configure your target environment to make the assumption hold.
+</p>
+
+</td>
+
+</tr>
+
+</table>
+<h3 name="sec_Floating-Point_Numbers" id="sec_floating_point_num">
+Floating-Point Numbers
+</h3>
+<table width="100%" border="0">
+<tr>
+<td align="left" valign="top">
+<p>
+Code generation is configured to support floating-point numbers, therefore your target environment might perform subnormal number calculations.
+</p>
+<p>
+<table class="AltRow" cellspacing="0">
+<tr class="even">
+<td align="left" valign="top">
+Flush-to-zero computed subnormal values (FTZ)
+</td>
+<td align="left" valign="top">
+False
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+Flush-to-zero incoming subnormal values (DAZ)
+</td>
+<td align="left" valign="top">
+False
+</td>
+
+</tr>
+
+</table>
+
+</p>
+<p>
+If the assumptions are not correct, subnormal numbers might cause mismatches between model and generated code simulation results.  For more information see, <a href="matlab:helpview(fullfile(docroot,'toolbox','ecoder','helptargets.map'),'subnormal_numbers_performance')">Subnormal Number Performance</a>.
+</p>
+
+</td>
+
+</tr>
+
+</table>
+
+</body>
+
+</html>

+ 427 - 0
Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_contents.html

@@ -0,0 +1,427 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" href="rtwreport.css" /><script language="JavaScript" type="text/javascript" defer="defer">
+    function rtwFileListShrink(o, category, categoryMsg, numFiles)
+    {
+        var indent = document.getElementById(category + "_indent");
+        var fileTable = document.getElementById(category + "_table");
+        var catName = document.getElementById(category + "_name");
+        if (fileTable.style.display == "none") {
+            fileTable.style.display = "";
+            indent.style.display = "";
+            o.innerHTML = '<span style="font-family:monospace" id = "' + category + '_button">[-]</span>';
+            catName.innerHTML = "<b>" + categoryMsg + "</b>";
+        } else {
+            fileTable.style.display = "none";
+            indent.style.display = "none";
+            o.innerHTML = '<span style="font-family:monospace" id = "' + category + '_button">[+]</span>';
+            catName.innerHTML = "<b>" + categoryMsg + " (" + numFiles + ")" + "</b>";
+        }
+    }
+</script>
+
+</head>
+<body bgcolor="#eeeeee" link="#0033cc" vlink="#666666" rightmargin="0">
+<table class="toc" border="1">
+<tr>
+<td align="left" valign="top">
+<b>
+Contents
+</b>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<a href="rtwmsg.html" id="rtwIdMsgFileLink" style="display: none" target="rtwreport_document_frame" onclick="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, true);" name="TOC_List">
+Block-to-code Message
+</a>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<a href="PMSM_Controller_survey.html" id="rtwIdSummaryPage" target="rtwreport_document_frame" onclick="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, true);" name="TOC_List">
+Summary
+</a>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<a href="PMSM_Controller_subsystems.html" id="rtwIdSubsystem" target="rtwreport_document_frame" onclick="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, true);" name="TOC_List">
+Subsystem Report
+</a>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<a href="PMSM_Controller_interface.html" id="rtwIdCodeInterface" target="rtwreport_document_frame" onclick="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, true);" name="TOC_List">
+Code Interface Report
+</a>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<a href="PMSM_Controller_trace.html" id="rtwIdTraceability" target="rtwreport_document_frame" onclick="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, true);" name="TOC_List">
+Traceability Report
+</a>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<a href="PMSM_Controller_metrics.html" id="rtwIdCodeMetrics" target="rtwreport_document_frame" onclick="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, true);" name="TOC_List">
+Static Code Metrics Report
+</a>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<a href="PMSM_Controller_reducedblocks.html" id="rtwIdReducedBlocks" target="rtwreport_document_frame" onclick="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, true);" name="TOC_List">
+Eliminated Blocks
+</a>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<a href="PMSM_Controller_replacements.html" id="rtwIdCodeReplacements" target="rtwreport_document_frame" onclick="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, true);" name="TOC_List">
+Code Replacements Report
+</a>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<a href="PMSM_Controller_coderassumptions.html" id="rtwIdCoderAssumptionsPage" target="rtwreport_document_frame" onclick="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, true);" name="TOC_List">
+Coder Assumptions
+</a>
+
+</td>
+
+</tr>
+
+</table>
+<!--ADD_CODE_PROFILE_REPORT_LINK_HERE--><hr /><table cellspacing="0" cellpadding="4" width="100%" bgcolor="#ffffff" border="0">
+<tr>
+<td align="left" valign="top">
+<b>
+Generated Code
+</b>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<table cellspacing="0" cellpadding="1" width="100%" bgcolor="#ffffff" id="Main" label="Main file" border="0">
+<tr>
+<td width="0%" align="left" valign="top">
+<span style="background-color:#ffffff;width:100%;cursor:pointer;white-space:nowrap" title="Click to shrink or expand category" onclick="rtwFileListShrink(this,'Main','Main file','1')"><span style="font-family:monospace" id = "Main_button">[-]</span></span>
+</td>
+<td width="100%" align="left" valign="top">
+<span id="Main_name"><b>Main file</b></span>
+</td>
+
+</tr>
+<tr>
+<td width="0%" align="left" valign="top">
+<span id="Main_indent"></span>
+</td>
+<td width="100%" align="left" valign="top">
+<table cellspacing="0" cellpadding="4" width="100%" bgcolor="#ffffff" id="Main_table" border="0">
+<tr>
+<td align="left" valign="top">
+<A HREF="ert_main_c.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="ert_main_c.html" NAME="rtwIdGenFileLinks">
+ert_main.c
+</A>
+<span> </span>
+</td>
+
+</tr>
+
+</table>
+
+</td>
+
+</tr>
+
+</table>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<table cellspacing="0" cellpadding="1" width="100%" bgcolor="#ffffff" id="Model" label="Model files" border="0">
+<tr>
+<td width="0%" align="left" valign="top">
+<span style="background-color:#ffffff;width:100%;cursor:pointer;white-space:nowrap" title="Click to shrink or expand category" onclick="rtwFileListShrink(this,'Model','Model files','4')"><span style="font-family:monospace" id = "Model_button">[-]</span></span>
+</td>
+<td width="100%" align="left" valign="top">
+<span id="Model_name"><b>Model files</b></span>
+</td>
+
+</tr>
+<tr>
+<td width="0%" align="left" valign="top">
+<span id="Model_indent"></span>
+</td>
+<td width="100%" align="left" valign="top">
+<table cellspacing="0" cellpadding="4" width="100%" bgcolor="#ffffff" id="Model_table" border="0">
+<tr>
+<td align="left" valign="top">
+<A HREF="PMSM_Controller_c.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="PMSM_Controller_c.html" NAME="rtwIdGenFileLinks">
+PMSM_Controller.c
+</A>
+<span> </span>
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<A HREF="PMSM_Controller_h.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="PMSM_Controller_h.html" NAME="rtwIdGenFileLinks">
+PMSM_Controller.h
+</A>
+<span> </span>
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<A HREF="PMSM_Controller_private_h.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="PMSM_Controller_private_h.html" NAME="rtwIdGenFileLinks">
+PMSM_Controller_private.h
+</A>
+<span> </span>
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<A HREF="PMSM_Controller_types_h.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="PMSM_Controller_types_h.html" NAME="rtwIdGenFileLinks">
+PMSM_Controller_types.h
+</A>
+<span> </span>
+</td>
+
+</tr>
+
+</table>
+
+</td>
+
+</tr>
+
+</table>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<table cellspacing="0" cellpadding="1" width="100%" bgcolor="#ffffff" id="Subsystem" label="Subsystem files" border="0">
+<tr>
+<td width="0%" align="left" valign="top">
+<span style="background-color:#ffffff;width:100%;cursor:pointer;white-space:nowrap" title="Click to shrink or expand category" onclick="rtwFileListShrink(this,'Subsystem','Subsystem files','2')"><span style="font-family:monospace" id = "Subsystem_button">[-]</span></span>
+</td>
+<td width="100%" align="left" valign="top">
+<span id="Subsystem_name"><b>Subsystem files</b></span>
+</td>
+
+</tr>
+<tr>
+<td width="0%" align="left" valign="top">
+<span id="Subsystem_indent"></span>
+</td>
+<td width="100%" align="left" valign="top">
+<table cellspacing="0" cellpadding="4" width="100%" bgcolor="#ffffff" id="Subsystem_table" border="0">
+<tr>
+<td align="left" valign="top">
+<A HREF="Shunt_Three_Sample_Point_c.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="Shunt_Three_Sample_Point_c.html" NAME="rtwIdGenFileLinks">
+Shunt_Three_Sample_Point.c
+</A>
+<span> </span>
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<A HREF="Shunt_Three_Sample_Point_h.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="Shunt_Three_Sample_Point_h.html" NAME="rtwIdGenFileLinks">
+Shunt_Three_Sample_Point.h
+</A>
+<span> </span>
+</td>
+
+</tr>
+
+</table>
+
+</td>
+
+</tr>
+
+</table>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<table cellspacing="0" cellpadding="1" width="100%" bgcolor="#ffffff" id="Data" label="Data files" border="0">
+<tr>
+<td width="0%" align="left" valign="top">
+<span style="background-color:#ffffff;width:100%;cursor:pointer;white-space:nowrap" title="Click to shrink or expand category" onclick="rtwFileListShrink(this,'Data','Data files','1')"><span style="font-family:monospace" id = "Data_button">[-]</span></span>
+</td>
+<td width="100%" align="left" valign="top">
+<span id="Data_name"><b>Data files</b></span>
+</td>
+
+</tr>
+<tr>
+<td width="0%" align="left" valign="top">
+<span id="Data_indent"></span>
+</td>
+<td width="100%" align="left" valign="top">
+<table cellspacing="0" cellpadding="4" width="100%" bgcolor="#ffffff" id="Data_table" border="0">
+<tr>
+<td align="left" valign="top">
+<A HREF="PMSM_Controller_data_c.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="PMSM_Controller_data_c.html" NAME="rtwIdGenFileLinks">
+PMSM_Controller_data.c
+</A>
+<span> </span>
+</td>
+
+</tr>
+
+</table>
+
+</td>
+
+</tr>
+
+</table>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<table cellspacing="0" cellpadding="1" width="100%" bgcolor="#ffffff" id="Utility" label="Utility files" border="0">
+<tr>
+<td width="0%" align="left" valign="top">
+<span style="background-color:#ffffff;width:100%;cursor:pointer;white-space:nowrap" title="Click to shrink or expand category" onclick="rtwFileListShrink(this,'Utility','Utility files','8')"><span style="font-family:monospace" id = "Utility_button">[+]</span></span>
+</td>
+<td width="100%" align="left" valign="top">
+<span id="Utility_name"><b>Utility files (8)</b></span>
+</td>
+
+</tr>
+<tr>
+<td width="0%" align="left" valign="top">
+<span id="Utility_indent"></span>
+</td>
+<td width="100%" align="left" valign="top">
+<table cellspacing="0" cellpadding="4" width="100%" bgcolor="#ffffff" id="Utility_table" style="display:none" border="0">
+<tr>
+<td align="left" valign="top">
+<A HREF="rtGetInf_c.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="rtGetInf_c.html" NAME="rtwIdGenFileLinks">
+rtGetInf.c
+</A>
+<span> </span>
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<A HREF="rtGetInf_h.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="rtGetInf_h.html" NAME="rtwIdGenFileLinks">
+rtGetInf.h
+</A>
+<span> </span>
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<A HREF="rtGetNaN_c.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="rtGetNaN_c.html" NAME="rtwIdGenFileLinks">
+rtGetNaN.c
+</A>
+<span> </span>
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<A HREF="rtGetNaN_h.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="rtGetNaN_h.html" NAME="rtwIdGenFileLinks">
+rtGetNaN.h
+</A>
+<span> </span>
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<A HREF="rt_defines_h.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="rt_defines_h.html" NAME="rtwIdGenFileLinks">
+rt_defines.h
+</A>
+<span> </span>
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<A HREF="rt_nonfinite_c.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="rt_nonfinite_c.html" NAME="rtwIdGenFileLinks">
+rt_nonfinite.c
+</A>
+<span> </span>
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<A HREF="rt_nonfinite_h.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="rt_nonfinite_h.html" NAME="rtwIdGenFileLinks">
+rt_nonfinite.h
+</A>
+<span> </span>
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<A HREF="rtwtypes_h.html" TARGET="rtwreport_document_frame" ONCLICK="if (top) if (top.tocHiliteMe) top.tocHiliteMe(window, this, false);" ID="rtwtypes_h.html" NAME="rtwIdGenFileLinks">
+rtwtypes.h
+</A>
+<span> </span>
+</td>
+
+</tr>
+
+</table>
+
+</td>
+
+</tr>
+
+</table>
+
+</td>
+
+</tr>
+
+</table>
+<hr />
+</body>
+
+</html>

+ 226 - 0
Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_data_c.html

@@ -0,0 +1,226 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: PMSM_Controller_data.c</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="pp">#include "PMSM_Controller.h"</span></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td><span class="pp">#include "PMSM_Controller_private.h"</span></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="ct">/* Constant parameters (default storage) */</span></td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td><span class="kw">const</span> <a id="22c7" class="tk">ConstP</a> <a id="22c14" class="tk">rtConstP</a> = <span class="br">{</span></td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td>  <span class="ct">/* Computed Parameter: r_sin_M1_Table</span></td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td><span class="ct">   * Referenced by: '&lt;S23&gt;/r_sin_M1'</span></td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td>  <span class="br">{</span> 0, 286, 572, 857, 1143, 1428, 1713, 1997, 2280, 2563, 2845, 3126, 3406, 3686,</td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td>    3964, 4240, 4516, 4790, 5063, 5334, 5604, 5872, 6138, 6402, 6664, 6924, 7182,</td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td>    7438, 7692, 7943, 8192, 8438, 8682, 8923, 9162, 9397, 9630, 9860, 10087,</td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td>    10311, 10531, 10749, 10963, 11174, 11381, 11585, 11786, 11982, 12176, 12365,</td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td>    12551, 12733, 12911, 13085, 13255, 13421, 13583, 13741, 13894, 14044, 14189,</td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td>    14330, 14466, 14598, 14726, 14849, 14968, 15082, 15191, 15296, 15396, 15491,</td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td>    15582, 15668, 15749, 15826, 15897, 15964, 16026, 16083, 16135, 16182, 16225,</td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td>    16262, 16294, 16322, 16344, 16362, 16374, 16382, 16384, 16382, 16374, 16362,</td></tr>
+<tr name="34" id="34">
+<td><a id="l34" class='ln'>34</a></td><td>    16344, 16322, 16294, 16262, 16225, 16182, 16135, 16083, 16026, 15964, 15897,</td></tr>
+<tr name="35" id="35">
+<td><a id="l35" class='ln'>35</a></td><td>    15826, 15749, 15668, 15582, 15491, 15396, 15296, 15191, 15082, 14968, 14849,</td></tr>
+<tr name="36" id="36">
+<td><a id="l36" class='ln'>36</a></td><td>    14726, 14598, 14466, 14330, 14189, 14044, 13894, 13741, 13583, 13421, 13255,</td></tr>
+<tr name="37" id="37">
+<td><a id="l37" class='ln'>37</a></td><td>    13085, 12911, 12733, 12551, 12365, 12176, 11982, 11786, 11585, 11381, 11174,</td></tr>
+<tr name="38" id="38">
+<td><a id="l38" class='ln'>38</a></td><td>    10963, 10749, 10531, 10311, 10087, 9860, 9630, 9397, 9162, 8923, 8682, 8438,</td></tr>
+<tr name="39" id="39">
+<td><a id="l39" class='ln'>39</a></td><td>    8192, 7943, 7692, 7438, 7182, 6924, 6664, 6402, 6138, 5872, 5604, 5334, 5063,</td></tr>
+<tr name="40" id="40">
+<td><a id="l40" class='ln'>40</a></td><td>    4790, 4516, 4240, 3964, 3686, 3406, 3126, 2845, 2563, 2280, 1997, 1713, 1428,</td></tr>
+<tr name="41" id="41">
+<td><a id="l41" class='ln'>41</a></td><td>    1143, 857, 572, 286, 0, <a id="41c29" class="tk">-</a>286, <a id="41c35" class="tk">-</a>572, <a id="41c41" class="tk">-</a>857, <a id="41c47" class="tk">-</a>1143, <a id="41c54" class="tk">-</a>1428, <a id="41c61" class="tk">-</a>1713, <a id="41c68" class="tk">-</a>1997, <a id="41c75" class="tk">-</a>2280,</td></tr>
+<tr name="42" id="42">
+<td><a id="l42" class='ln'>42</a></td><td>    <a id="42c5" class="tk">-</a>2563, <a id="42c12" class="tk">-</a>2845, <a id="42c19" class="tk">-</a>3126, <a id="42c26" class="tk">-</a>3406, <a id="42c33" class="tk">-</a>3686, <a id="42c40" class="tk">-</a>3964, <a id="42c47" class="tk">-</a>4240, <a id="42c54" class="tk">-</a>4516, <a id="42c61" class="tk">-</a>4790, <a id="42c68" class="tk">-</a>5063, <a id="42c75" class="tk">-</a>5334,</td></tr>
+<tr name="43" id="43">
+<td><a id="l43" class='ln'>43</a></td><td>    <a id="43c5" class="tk">-</a>5604, <a id="43c12" class="tk">-</a>5872, <a id="43c19" class="tk">-</a>6138, <a id="43c26" class="tk">-</a>6402, <a id="43c33" class="tk">-</a>6664, <a id="43c40" class="tk">-</a>6924, <a id="43c47" class="tk">-</a>7182, <a id="43c54" class="tk">-</a>7438, <a id="43c61" class="tk">-</a>7692, <a id="43c68" class="tk">-</a>7943, <a id="43c75" class="tk">-</a>8192,</td></tr>
+<tr name="44" id="44">
+<td><a id="l44" class='ln'>44</a></td><td>    <a id="44c5" class="tk">-</a>8438, <a id="44c12" class="tk">-</a>8682, <a id="44c19" class="tk">-</a>8923, <a id="44c26" class="tk">-</a>9162, <a id="44c33" class="tk">-</a>9397, <a id="44c40" class="tk">-</a>9630, <a id="44c47" class="tk">-</a>9860, <a id="44c54" class="tk">-</a>10087, <a id="44c62" class="tk">-</a>10311, <a id="44c70" class="tk">-</a>10531,</td></tr>
+<tr name="45" id="45">
+<td><a id="l45" class='ln'>45</a></td><td>    <a id="45c5" class="tk">-</a>10749, <a id="45c13" class="tk">-</a>10963, <a id="45c21" class="tk">-</a>11174, <a id="45c29" class="tk">-</a>11381, <a id="45c37" class="tk">-</a>11585, <a id="45c45" class="tk">-</a>11786, <a id="45c53" class="tk">-</a>11982, <a id="45c61" class="tk">-</a>12176, <a id="45c69" class="tk">-</a>12365,</td></tr>
+<tr name="46" id="46">
+<td><a id="l46" class='ln'>46</a></td><td>    <a id="46c5" class="tk">-</a>12551, <a id="46c13" class="tk">-</a>12733, <a id="46c21" class="tk">-</a>12911, <a id="46c29" class="tk">-</a>13085, <a id="46c37" class="tk">-</a>13255, <a id="46c45" class="tk">-</a>13421, <a id="46c53" class="tk">-</a>13583, <a id="46c61" class="tk">-</a>13741, <a id="46c69" class="tk">-</a>13894,</td></tr>
+<tr name="47" id="47">
+<td><a id="l47" class='ln'>47</a></td><td>    <a id="47c5" class="tk">-</a>14044, <a id="47c13" class="tk">-</a>14189, <a id="47c21" class="tk">-</a>14330, <a id="47c29" class="tk">-</a>14466, <a id="47c37" class="tk">-</a>14598, <a id="47c45" class="tk">-</a>14726, <a id="47c53" class="tk">-</a>14849, <a id="47c61" class="tk">-</a>14968, <a id="47c69" class="tk">-</a>15082,</td></tr>
+<tr name="48" id="48">
+<td><a id="l48" class='ln'>48</a></td><td>    <a id="48c5" class="tk">-</a>15191, <a id="48c13" class="tk">-</a>15296, <a id="48c21" class="tk">-</a>15396, <a id="48c29" class="tk">-</a>15491, <a id="48c37" class="tk">-</a>15582, <a id="48c45" class="tk">-</a>15668, <a id="48c53" class="tk">-</a>15749, <a id="48c61" class="tk">-</a>15826, <a id="48c69" class="tk">-</a>15897,</td></tr>
+<tr name="49" id="49">
+<td><a id="l49" class='ln'>49</a></td><td>    <a id="49c5" class="tk">-</a>15964, <a id="49c13" class="tk">-</a>16026, <a id="49c21" class="tk">-</a>16083, <a id="49c29" class="tk">-</a>16135, <a id="49c37" class="tk">-</a>16182, <a id="49c45" class="tk">-</a>16225, <a id="49c53" class="tk">-</a>16262, <a id="49c61" class="tk">-</a>16294, <a id="49c69" class="tk">-</a>16322,</td></tr>
+<tr name="50" id="50">
+<td><a id="l50" class='ln'>50</a></td><td>    <a id="50c5" class="tk">-</a>16344, <a id="50c13" class="tk">-</a>16362, <a id="50c21" class="tk">-</a>16374, <a id="50c29" class="tk">-</a>16382, <a id="50c37" class="tk">-</a>16384, <a id="50c45" class="tk">-</a>16382, <a id="50c53" class="tk">-</a>16374, <a id="50c61" class="tk">-</a>16362, <a id="50c69" class="tk">-</a>16344,</td></tr>
+<tr name="51" id="51">
+<td><a id="l51" class='ln'>51</a></td><td>    <a id="51c5" class="tk">-</a>16322, <a id="51c13" class="tk">-</a>16294, <a id="51c21" class="tk">-</a>16262, <a id="51c29" class="tk">-</a>16225, <a id="51c37" class="tk">-</a>16182, <a id="51c45" class="tk">-</a>16135, <a id="51c53" class="tk">-</a>16083, <a id="51c61" class="tk">-</a>16026, <a id="51c69" class="tk">-</a>15964,</td></tr>
+<tr name="52" id="52">
+<td><a id="l52" class='ln'>52</a></td><td>    <a id="52c5" class="tk">-</a>15897, <a id="52c13" class="tk">-</a>15826, <a id="52c21" class="tk">-</a>15749, <a id="52c29" class="tk">-</a>15668, <a id="52c37" class="tk">-</a>15582, <a id="52c45" class="tk">-</a>15491, <a id="52c53" class="tk">-</a>15396, <a id="52c61" class="tk">-</a>15296, <a id="52c69" class="tk">-</a>15191,</td></tr>
+<tr name="53" id="53">
+<td><a id="l53" class='ln'>53</a></td><td>    <a id="53c5" class="tk">-</a>15082, <a id="53c13" class="tk">-</a>14968, <a id="53c21" class="tk">-</a>14849, <a id="53c29" class="tk">-</a>14726, <a id="53c37" class="tk">-</a>14598, <a id="53c45" class="tk">-</a>14466, <a id="53c53" class="tk">-</a>14330, <a id="53c61" class="tk">-</a>14189, <a id="53c69" class="tk">-</a>14044,</td></tr>
+<tr name="54" id="54">
+<td><a id="l54" class='ln'>54</a></td><td>    <a id="54c5" class="tk">-</a>13894, <a id="54c13" class="tk">-</a>13741, <a id="54c21" class="tk">-</a>13583, <a id="54c29" class="tk">-</a>13421, <a id="54c37" class="tk">-</a>13255, <a id="54c45" class="tk">-</a>13085, <a id="54c53" class="tk">-</a>12911, <a id="54c61" class="tk">-</a>12733, <a id="54c69" class="tk">-</a>12551,</td></tr>
+<tr name="55" id="55">
+<td><a id="l55" class='ln'>55</a></td><td>    <a id="55c5" class="tk">-</a>12365, <a id="55c13" class="tk">-</a>12176, <a id="55c21" class="tk">-</a>11982, <a id="55c29" class="tk">-</a>11786, <a id="55c37" class="tk">-</a>11585, <a id="55c45" class="tk">-</a>11381, <a id="55c53" class="tk">-</a>11174, <a id="55c61" class="tk">-</a>10963, <a id="55c69" class="tk">-</a>10749,</td></tr>
+<tr name="56" id="56">
+<td><a id="l56" class='ln'>56</a></td><td>    <a id="56c5" class="tk">-</a>10531, <a id="56c13" class="tk">-</a>10311, <a id="56c21" class="tk">-</a>10087, <a id="56c29" class="tk">-</a>9860, <a id="56c36" class="tk">-</a>9630, <a id="56c43" class="tk">-</a>9397, <a id="56c50" class="tk">-</a>9162, <a id="56c57" class="tk">-</a>8923, <a id="56c64" class="tk">-</a>8682, <a id="56c71" class="tk">-</a>8438,</td></tr>
+<tr name="57" id="57">
+<td><a id="l57" class='ln'>57</a></td><td>    <a id="57c5" class="tk">-</a>8192, <a id="57c12" class="tk">-</a>7943, <a id="57c19" class="tk">-</a>7692, <a id="57c26" class="tk">-</a>7438, <a id="57c33" class="tk">-</a>7182, <a id="57c40" class="tk">-</a>6924, <a id="57c47" class="tk">-</a>6664, <a id="57c54" class="tk">-</a>6402, <a id="57c61" class="tk">-</a>6138, <a id="57c68" class="tk">-</a>5872, <a id="57c75" class="tk">-</a>5604,</td></tr>
+<tr name="58" id="58">
+<td><a id="l58" class='ln'>58</a></td><td>    <a id="58c5" class="tk">-</a>5334, <a id="58c12" class="tk">-</a>5063, <a id="58c19" class="tk">-</a>4790, <a id="58c26" class="tk">-</a>4516, <a id="58c33" class="tk">-</a>4240, <a id="58c40" class="tk">-</a>3964, <a id="58c47" class="tk">-</a>3686, <a id="58c54" class="tk">-</a>3406, <a id="58c61" class="tk">-</a>3126, <a id="58c68" class="tk">-</a>2845, <a id="58c75" class="tk">-</a>2563,</td></tr>
+<tr name="59" id="59">
+<td><a id="l59" class='ln'>59</a></td><td>    <a id="59c5" class="tk">-</a>2280, <a id="59c12" class="tk">-</a>1997, <a id="59c19" class="tk">-</a>1713, <a id="59c26" class="tk">-</a>1428, <a id="59c33" class="tk">-</a>1143, <a id="59c40" class="tk">-</a>857, <a id="59c46" class="tk">-</a>572, <a id="59c52" class="tk">-</a>286, 0 <span class="br">}</span>,</td></tr>
+<tr name="60" id="60">
+<td><a id="l60" class='ln'>60</a></td><td></td></tr>
+<tr name="61" id="61">
+<td><a id="l61" class='ln'>61</a></td><td>  <span class="ct">/* Computed Parameter: r_cos_M1_Table</span></td></tr>
+<tr name="62" id="62">
+<td><a id="l62" class='ln'>62</a></td><td><span class="ct">   * Referenced by: '&lt;S23&gt;/r_cos_M1'</span></td></tr>
+<tr name="63" id="63">
+<td><a id="l63" class='ln'>63</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="64" id="64">
+<td><a id="l64" class='ln'>64</a></td><td>  <span class="br">{</span> 16384, 16382, 16374, 16362, 16344, 16322, 16294, 16262, 16225, 16182, 16135,</td></tr>
+<tr name="65" id="65">
+<td><a id="l65" class='ln'>65</a></td><td>    16083, 16026, 15964, 15897, 15826, 15749, 15668, 15582, 15491, 15396, 15296,</td></tr>
+<tr name="66" id="66">
+<td><a id="l66" class='ln'>66</a></td><td>    15191, 15082, 14968, 14849, 14726, 14598, 14466, 14330, 14189, 14044, 13894,</td></tr>
+<tr name="67" id="67">
+<td><a id="l67" class='ln'>67</a></td><td>    13741, 13583, 13421, 13255, 13085, 12911, 12733, 12551, 12365, 12176, 11982,</td></tr>
+<tr name="68" id="68">
+<td><a id="l68" class='ln'>68</a></td><td>    11786, 11585, 11381, 11174, 10963, 10749, 10531, 10311, 10087, 9860, 9630,</td></tr>
+<tr name="69" id="69">
+<td><a id="l69" class='ln'>69</a></td><td>    9397, 9162, 8923, 8682, 8438, 8192, 7943, 7692, 7438, 7182, 6924, 6664, 6402,</td></tr>
+<tr name="70" id="70">
+<td><a id="l70" class='ln'>70</a></td><td>    6138, 5872, 5604, 5334, 5063, 4790, 4516, 4240, 3964, 3686, 3406, 3126, 2845,</td></tr>
+<tr name="71" id="71">
+<td><a id="l71" class='ln'>71</a></td><td>    2563, 2280, 1997, 1713, 1428, 1143, 857, 572, 286, 0, <a id="71c59" class="tk">-</a>286, <a id="71c65" class="tk">-</a>572, <a id="71c71" class="tk">-</a>857,</td></tr>
+<tr name="72" id="72">
+<td><a id="l72" class='ln'>72</a></td><td>    <a id="72c5" class="tk">-</a>1143, <a id="72c12" class="tk">-</a>1428, <a id="72c19" class="tk">-</a>1713, <a id="72c26" class="tk">-</a>1997, <a id="72c33" class="tk">-</a>2280, <a id="72c40" class="tk">-</a>2563, <a id="72c47" class="tk">-</a>2845, <a id="72c54" class="tk">-</a>3126, <a id="72c61" class="tk">-</a>3406, <a id="72c68" class="tk">-</a>3686, <a id="72c75" class="tk">-</a>3964,</td></tr>
+<tr name="73" id="73">
+<td><a id="l73" class='ln'>73</a></td><td>    <a id="73c5" class="tk">-</a>4240, <a id="73c12" class="tk">-</a>4516, <a id="73c19" class="tk">-</a>4790, <a id="73c26" class="tk">-</a>5063, <a id="73c33" class="tk">-</a>5334, <a id="73c40" class="tk">-</a>5604, <a id="73c47" class="tk">-</a>5872, <a id="73c54" class="tk">-</a>6138, <a id="73c61" class="tk">-</a>6402, <a id="73c68" class="tk">-</a>6664, <a id="73c75" class="tk">-</a>6924,</td></tr>
+<tr name="74" id="74">
+<td><a id="l74" class='ln'>74</a></td><td>    <a id="74c5" class="tk">-</a>7182, <a id="74c12" class="tk">-</a>7438, <a id="74c19" class="tk">-</a>7692, <a id="74c26" class="tk">-</a>7943, <a id="74c33" class="tk">-</a>8192, <a id="74c40" class="tk">-</a>8438, <a id="74c47" class="tk">-</a>8682, <a id="74c54" class="tk">-</a>8923, <a id="74c61" class="tk">-</a>9162, <a id="74c68" class="tk">-</a>9397, <a id="74c75" class="tk">-</a>9630,</td></tr>
+<tr name="75" id="75">
+<td><a id="l75" class='ln'>75</a></td><td>    <a id="75c5" class="tk">-</a>9860, <a id="75c12" class="tk">-</a>10087, <a id="75c20" class="tk">-</a>10311, <a id="75c28" class="tk">-</a>10531, <a id="75c36" class="tk">-</a>10749, <a id="75c44" class="tk">-</a>10963, <a id="75c52" class="tk">-</a>11174, <a id="75c60" class="tk">-</a>11381, <a id="75c68" class="tk">-</a>11585,</td></tr>
+<tr name="76" id="76">
+<td><a id="l76" class='ln'>76</a></td><td>    <a id="76c5" class="tk">-</a>11786, <a id="76c13" class="tk">-</a>11982, <a id="76c21" class="tk">-</a>12176, <a id="76c29" class="tk">-</a>12365, <a id="76c37" class="tk">-</a>12551, <a id="76c45" class="tk">-</a>12733, <a id="76c53" class="tk">-</a>12911, <a id="76c61" class="tk">-</a>13085, <a id="76c69" class="tk">-</a>13255,</td></tr>
+<tr name="77" id="77">
+<td><a id="l77" class='ln'>77</a></td><td>    <a id="77c5" class="tk">-</a>13421, <a id="77c13" class="tk">-</a>13583, <a id="77c21" class="tk">-</a>13741, <a id="77c29" class="tk">-</a>13894, <a id="77c37" class="tk">-</a>14044, <a id="77c45" class="tk">-</a>14189, <a id="77c53" class="tk">-</a>14330, <a id="77c61" class="tk">-</a>14466, <a id="77c69" class="tk">-</a>14598,</td></tr>
+<tr name="78" id="78">
+<td><a id="l78" class='ln'>78</a></td><td>    <a id="78c5" class="tk">-</a>14726, <a id="78c13" class="tk">-</a>14849, <a id="78c21" class="tk">-</a>14968, <a id="78c29" class="tk">-</a>15082, <a id="78c37" class="tk">-</a>15191, <a id="78c45" class="tk">-</a>15296, <a id="78c53" class="tk">-</a>15396, <a id="78c61" class="tk">-</a>15491, <a id="78c69" class="tk">-</a>15582,</td></tr>
+<tr name="79" id="79">
+<td><a id="l79" class='ln'>79</a></td><td>    <a id="79c5" class="tk">-</a>15668, <a id="79c13" class="tk">-</a>15749, <a id="79c21" class="tk">-</a>15826, <a id="79c29" class="tk">-</a>15897, <a id="79c37" class="tk">-</a>15964, <a id="79c45" class="tk">-</a>16026, <a id="79c53" class="tk">-</a>16083, <a id="79c61" class="tk">-</a>16135, <a id="79c69" class="tk">-</a>16182,</td></tr>
+<tr name="80" id="80">
+<td><a id="l80" class='ln'>80</a></td><td>    <a id="80c5" class="tk">-</a>16225, <a id="80c13" class="tk">-</a>16262, <a id="80c21" class="tk">-</a>16294, <a id="80c29" class="tk">-</a>16322, <a id="80c37" class="tk">-</a>16344, <a id="80c45" class="tk">-</a>16362, <a id="80c53" class="tk">-</a>16374, <a id="80c61" class="tk">-</a>16382, <a id="80c69" class="tk">-</a>16384,</td></tr>
+<tr name="81" id="81">
+<td><a id="l81" class='ln'>81</a></td><td>    <a id="81c5" class="tk">-</a>16382, <a id="81c13" class="tk">-</a>16374, <a id="81c21" class="tk">-</a>16362, <a id="81c29" class="tk">-</a>16344, <a id="81c37" class="tk">-</a>16322, <a id="81c45" class="tk">-</a>16294, <a id="81c53" class="tk">-</a>16262, <a id="81c61" class="tk">-</a>16225, <a id="81c69" class="tk">-</a>16182,</td></tr>
+<tr name="82" id="82">
+<td><a id="l82" class='ln'>82</a></td><td>    <a id="82c5" class="tk">-</a>16135, <a id="82c13" class="tk">-</a>16083, <a id="82c21" class="tk">-</a>16026, <a id="82c29" class="tk">-</a>15964, <a id="82c37" class="tk">-</a>15897, <a id="82c45" class="tk">-</a>15826, <a id="82c53" class="tk">-</a>15749, <a id="82c61" class="tk">-</a>15668, <a id="82c69" class="tk">-</a>15582,</td></tr>
+<tr name="83" id="83">
+<td><a id="l83" class='ln'>83</a></td><td>    <a id="83c5" class="tk">-</a>15491, <a id="83c13" class="tk">-</a>15396, <a id="83c21" class="tk">-</a>15296, <a id="83c29" class="tk">-</a>15191, <a id="83c37" class="tk">-</a>15082, <a id="83c45" class="tk">-</a>14968, <a id="83c53" class="tk">-</a>14849, <a id="83c61" class="tk">-</a>14726, <a id="83c69" class="tk">-</a>14598,</td></tr>
+<tr name="84" id="84">
+<td><a id="l84" class='ln'>84</a></td><td>    <a id="84c5" class="tk">-</a>14466, <a id="84c13" class="tk">-</a>14330, <a id="84c21" class="tk">-</a>14189, <a id="84c29" class="tk">-</a>14044, <a id="84c37" class="tk">-</a>13894, <a id="84c45" class="tk">-</a>13741, <a id="84c53" class="tk">-</a>13583, <a id="84c61" class="tk">-</a>13421, <a id="84c69" class="tk">-</a>13255,</td></tr>
+<tr name="85" id="85">
+<td><a id="l85" class='ln'>85</a></td><td>    <a id="85c5" class="tk">-</a>13085, <a id="85c13" class="tk">-</a>12911, <a id="85c21" class="tk">-</a>12733, <a id="85c29" class="tk">-</a>12551, <a id="85c37" class="tk">-</a>12365, <a id="85c45" class="tk">-</a>12176, <a id="85c53" class="tk">-</a>11982, <a id="85c61" class="tk">-</a>11786, <a id="85c69" class="tk">-</a>11585,</td></tr>
+<tr name="86" id="86">
+<td><a id="l86" class='ln'>86</a></td><td>    <a id="86c5" class="tk">-</a>11381, <a id="86c13" class="tk">-</a>11174, <a id="86c21" class="tk">-</a>10963, <a id="86c29" class="tk">-</a>10749, <a id="86c37" class="tk">-</a>10531, <a id="86c45" class="tk">-</a>10311, <a id="86c53" class="tk">-</a>10087, <a id="86c61" class="tk">-</a>9860, <a id="86c68" class="tk">-</a>9630, <a id="86c75" class="tk">-</a>9397,</td></tr>
+<tr name="87" id="87">
+<td><a id="l87" class='ln'>87</a></td><td>    <a id="87c5" class="tk">-</a>9162, <a id="87c12" class="tk">-</a>8923, <a id="87c19" class="tk">-</a>8682, <a id="87c26" class="tk">-</a>8438, <a id="87c33" class="tk">-</a>8192, <a id="87c40" class="tk">-</a>7943, <a id="87c47" class="tk">-</a>7692, <a id="87c54" class="tk">-</a>7438, <a id="87c61" class="tk">-</a>7182, <a id="87c68" class="tk">-</a>6924, <a id="87c75" class="tk">-</a>6664,</td></tr>
+<tr name="88" id="88">
+<td><a id="l88" class='ln'>88</a></td><td>    <a id="88c5" class="tk">-</a>6402, <a id="88c12" class="tk">-</a>6138, <a id="88c19" class="tk">-</a>5872, <a id="88c26" class="tk">-</a>5604, <a id="88c33" class="tk">-</a>5334, <a id="88c40" class="tk">-</a>5063, <a id="88c47" class="tk">-</a>4790, <a id="88c54" class="tk">-</a>4516, <a id="88c61" class="tk">-</a>4240, <a id="88c68" class="tk">-</a>3964, <a id="88c75" class="tk">-</a>3686,</td></tr>
+<tr name="89" id="89">
+<td><a id="l89" class='ln'>89</a></td><td>    <a id="89c5" class="tk">-</a>3406, <a id="89c12" class="tk">-</a>3126, <a id="89c19" class="tk">-</a>2845, <a id="89c26" class="tk">-</a>2563, <a id="89c33" class="tk">-</a>2280, <a id="89c40" class="tk">-</a>1997, <a id="89c47" class="tk">-</a>1713, <a id="89c54" class="tk">-</a>1428, <a id="89c61" class="tk">-</a>1143, <a id="89c68" class="tk">-</a>857, <a id="89c74" class="tk">-</a>572,</td></tr>
+<tr name="90" id="90">
+<td><a id="l90" class='ln'>90</a></td><td>    <a id="90c5" class="tk">-</a>286, 0, 286, 572, 857, 1143, 1428, 1713, 1997, 2280, 2563, 2845, 3126, 3406,</td></tr>
+<tr name="91" id="91">
+<td><a id="l91" class='ln'>91</a></td><td>    3686, 3964, 4240, 4516, 4790, 5063, 5334, 5604, 5872, 6138, 6402, 6664, 6924,</td></tr>
+<tr name="92" id="92">
+<td><a id="l92" class='ln'>92</a></td><td>    7182, 7438, 7692, 7943, 8192, 8438, 8682, 8923, 9162, 9397, 9630, 9860,</td></tr>
+<tr name="93" id="93">
+<td><a id="l93" class='ln'>93</a></td><td>    10087, 10311, 10531, 10749, 10963, 11174, 11381, 11585, 11786, 11982, 12176,</td></tr>
+<tr name="94" id="94">
+<td><a id="l94" class='ln'>94</a></td><td>    12365, 12551, 12733, 12911, 13085, 13255, 13421, 13583, 13741, 13894, 14044,</td></tr>
+<tr name="95" id="95">
+<td><a id="l95" class='ln'>95</a></td><td>    14189, 14330, 14466, 14598, 14726, 14849, 14968, 15082, 15191, 15296, 15396,</td></tr>
+<tr name="96" id="96">
+<td><a id="l96" class='ln'>96</a></td><td>    15491, 15582, 15668, 15749, 15826, 15897, 15964, 16026, 16083, 16135, 16182,</td></tr>
+<tr name="97" id="97">
+<td><a id="l97" class='ln'>97</a></td><td>    16225, 16262, 16294, 16322, 16344, 16362, 16374, 16382, 16384 <span class="br">}</span></td></tr>
+<tr name="98" id="98">
+<td><a id="l98" class='ln'>98</a></td><td><span class="br">}</span>;</td></tr>
+<tr name="99" id="99">
+<td><a id="l99" class='ln'>99</a></td><td></td></tr>
+<tr name="100" id="100">
+<td><a id="l100" class='ln'>100</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="101" id="101">
+<td><a id="l101" class='ln'>101</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="102" id="102">
+<td><a id="l102" class='ln'>102</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="103" id="103">
+<td><a id="l103" class='ln'>103</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="104" id="104">
+<td><a id="l104" class='ln'>104</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="105" id="105">
+<td><a id="l105" class='ln'>105</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

+ 880 - 0
Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_h.html

@@ -0,0 +1,880 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: PMSM_Controller.h</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="pp">#ifndef</span> <a id="18c9" class="tk">RTW_HEADER_PMSM_Controller_h_</a></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td><span class="pp">#define</span> <a id="19c9" class="tk">RTW_HEADER_PMSM_Controller_h_</a></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td><span class="pp">#include &lt;float.h&gt;</span></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="pp">#include &lt;math.h&gt;</span></td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td><span class="pp">#ifndef</span> <a id="22c9" class="tk">PMSM_Controller_COMMON_INCLUDES_</a></td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td><span class="pp">#define</span> <a id="23c9" class="tk">PMSM_Controller_COMMON_INCLUDES_</a></td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td><span class="pp">#include "rtwtypes.h"</span></td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td><span class="pp">#endif</span>                                 <span class="ct">/* PMSM_Controller_COMMON_INCLUDES_ */</span></td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td></td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td><span class="pp">#include "PMSM_Controller_types.h"</span></td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td></td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td><span class="ct">/* Child system includes */</span></td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td><span class="pp">#include "Shunt_Three_Sample_Point.h"</span></td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td><span class="pp">#include "rt_nonfinite.h"</span></td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td><span class="pp">#include "rtGetInf.h"</span></td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td><span class="pp">#include "rt_defines.h"</span></td></tr>
+<tr name="34" id="34">
+<td><a id="l34" class='ln'>34</a></td><td></td></tr>
+<tr name="35" id="35">
+<td><a id="l35" class='ln'>35</a></td><td><span class="ct">/* Macros for accessing real-time model data structure */</span></td></tr>
+<tr name="36" id="36">
+<td><a id="l36" class='ln'>36</a></td><td><span class="pp">#ifndef</span> <a id="36c9" class="tk">rtmGetErrorStatus</a></td></tr>
+<tr name="37" id="37">
+<td><a id="l37" class='ln'>37</a></td><td><span class="pp">#define</span> <a id="37c9" class="tk">rtmGetErrorStatus</a>(<a id="37c27" class="tk">rtm</a>)         ((<a id="37c42" class="tk">rtm</a>)-&gt;<a id="37c48" class="tk">errorStatus</a>)</td></tr>
+<tr name="38" id="38">
+<td><a id="l38" class='ln'>38</a></td><td><span class="pp">#endif</span></td></tr>
+<tr name="39" id="39">
+<td><a id="l39" class='ln'>39</a></td><td></td></tr>
+<tr name="40" id="40">
+<td><a id="l40" class='ln'>40</a></td><td><span class="pp">#ifndef</span> <a id="40c9" class="tk">rtmSetErrorStatus</a></td></tr>
+<tr name="41" id="41">
+<td><a id="l41" class='ln'>41</a></td><td><span class="pp">#define</span> <a id="41c9" class="tk">rtmSetErrorStatus</a>(<a id="41c27" class="tk">rtm</a>, <a id="41c32" class="tk">val</a>)    ((<a id="41c42" class="tk">rtm</a>)-&gt;<a id="41c48" class="tk">errorStatus</a> = (<a id="41c63" class="tk">val</a>))</td></tr>
+<tr name="42" id="42">
+<td><a id="l42" class='ln'>42</a></td><td><span class="pp">#endif</span></td></tr>
+<tr name="43" id="43">
+<td><a id="l43" class='ln'>43</a></td><td></td></tr>
+<tr name="44" id="44">
+<td><a id="l44" class='ln'>44</a></td><td><span class="ct">/* Block signals and states (default storage) for system '&lt;Root&gt;' */</span></td></tr>
+<tr name="45" id="45">
+<td><a id="l45" class='ln'>45</a></td><td><span class="kw">typedef</span> <span class="kw">struct</span> <span class="br">{</span></td></tr>
+<tr name="46" id="46">
+<td><a id="l46" class='ln'>46</a></td><td>  <a id="46c3" class="tk">int32_T</a> <a id="46c11" class="tk">UnitDelay1_DSTATE</a>[2];        <span class="ct">/* '&lt;S21&gt;/UnitDelay1' */</span></td></tr>
+<tr name="47" id="47">
+<td><a id="l47" class='ln'>47</a></td><td>  <a id="47c3" class="tk">int16_T</a> <a id="47c11" class="tk">Integrator_DSTATE</a>;           <span class="ct">/* '&lt;S60&gt;/Integrator' */</span></td></tr>
+<tr name="48" id="48">
+<td><a id="l48" class='ln'>48</a></td><td>  <a id="48c3" class="tk">int16_T</a> <a id="48c11" class="tk">Integrator_DSTATE_i</a>;         <span class="ct">/* '&lt;S160&gt;/Integrator' */</span></td></tr>
+<tr name="49" id="49">
+<td><a id="l49" class='ln'>49</a></td><td>  <a id="49c3" class="tk">int16_T</a> <a id="49c11" class="tk">Integrator_DSTATE_p</a>;         <span class="ct">/* '&lt;S110&gt;/Integrator' */</span></td></tr>
+<tr name="50" id="50">
+<td><a id="l50" class='ln'>50</a></td><td><span class="br">}</span> <a id="50c3" class="tk">DW</a>;</td></tr>
+<tr name="51" id="51">
+<td><a id="l51" class='ln'>51</a></td><td></td></tr>
+<tr name="52" id="52">
+<td><a id="l52" class='ln'>52</a></td><td><span class="ct">/* Constant parameters (default storage) */</span></td></tr>
+<tr name="53" id="53">
+<td><a id="l53" class='ln'>53</a></td><td><span class="kw">typedef</span> <span class="kw">struct</span> <span class="br">{</span></td></tr>
+<tr name="54" id="54">
+<td><a id="l54" class='ln'>54</a></td><td>  <span class="ct">/* Computed Parameter: r_sin_M1_Table</span></td></tr>
+<tr name="55" id="55">
+<td><a id="l55" class='ln'>55</a></td><td><span class="ct">   * Referenced by: '&lt;S23&gt;/r_sin_M1'</span></td></tr>
+<tr name="56" id="56">
+<td><a id="l56" class='ln'>56</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="57" id="57">
+<td><a id="l57" class='ln'>57</a></td><td>  <a id="57c3" class="tk">int16_T</a> <a id="57c11" class="tk">r_sin_M1_Table</a>[361];</td></tr>
+<tr name="58" id="58">
+<td><a id="l58" class='ln'>58</a></td><td></td></tr>
+<tr name="59" id="59">
+<td><a id="l59" class='ln'>59</a></td><td>  <span class="ct">/* Computed Parameter: r_cos_M1_Table</span></td></tr>
+<tr name="60" id="60">
+<td><a id="l60" class='ln'>60</a></td><td><span class="ct">   * Referenced by: '&lt;S23&gt;/r_cos_M1'</span></td></tr>
+<tr name="61" id="61">
+<td><a id="l61" class='ln'>61</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="62" id="62">
+<td><a id="l62" class='ln'>62</a></td><td>  <a id="62c3" class="tk">int16_T</a> <a id="62c11" class="tk">r_cos_M1_Table</a>[361];</td></tr>
+<tr name="63" id="63">
+<td><a id="l63" class='ln'>63</a></td><td><span class="br">}</span> <a id="63c3" class="tk">ConstP</a>;</td></tr>
+<tr name="64" id="64">
+<td><a id="l64" class='ln'>64</a></td><td></td></tr>
+<tr name="65" id="65">
+<td><a id="l65" class='ln'>65</a></td><td><span class="ct">/* Real-time Model Data Structure */</span></td></tr>
+<tr name="66" id="66">
+<td><a id="l66" class='ln'>66</a></td><td><span class="kw">struct</span> <a id="66c8" class="tk">tag_RTM</a> <span class="br">{</span></td></tr>
+<tr name="67" id="67">
+<td><a id="l67" class='ln'>67</a></td><td>  <span class="kw">const</span> <a id="67c9" class="tk">char_T</a> <a id="67c16" class="tk">*</a> <span class="kw">volatile</span> <a id="67c27" class="tk">errorStatus</a>;</td></tr>
+<tr name="68" id="68">
+<td><a id="l68" class='ln'>68</a></td><td>  <a id="68c3" class="tk">DW</a> <a id="68c6" class="tk">*</a><a id="68c7" class="tk">dwork</a>;</td></tr>
+<tr name="69" id="69">
+<td><a id="l69" class='ln'>69</a></td><td></td></tr>
+<tr name="70" id="70">
+<td><a id="l70" class='ln'>70</a></td><td>  <span class="ct">/*</span></td></tr>
+<tr name="71" id="71">
+<td><a id="l71" class='ln'>71</a></td><td><span class="ct">   * Timing:</span></td></tr>
+<tr name="72" id="72">
+<td><a id="l72" class='ln'>72</a></td><td><span class="ct">   * The following substructure contains information regarding</span></td></tr>
+<tr name="73" id="73">
+<td><a id="l73" class='ln'>73</a></td><td><span class="ct">   * the timing information for the model.</span></td></tr>
+<tr name="74" id="74">
+<td><a id="l74" class='ln'>74</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="75" id="75">
+<td><a id="l75" class='ln'>75</a></td><td>  <span class="kw">struct</span> <span class="br">{</span></td></tr>
+<tr name="76" id="76">
+<td><a id="l76" class='ln'>76</a></td><td>    <span class="kw">struct</span> <span class="br">{</span></td></tr>
+<tr name="77" id="77">
+<td><a id="l77" class='ln'>77</a></td><td>      <a id="77c7" class="tk">uint8_T</a> <a id="77c15" class="tk">TID</a>[2];</td></tr>
+<tr name="78" id="78">
+<td><a id="l78" class='ln'>78</a></td><td>    <span class="br">}</span> <a id="78c7" class="tk">TaskCounters</a>;</td></tr>
+<tr name="79" id="79">
+<td><a id="l79" class='ln'>79</a></td><td>  <span class="br">}</span> <a id="79c5" class="tk">Timing</a>;</td></tr>
+<tr name="80" id="80">
+<td><a id="l80" class='ln'>80</a></td><td><span class="br">}</span>;</td></tr>
+<tr name="81" id="81">
+<td><a id="l81" class='ln'>81</a></td><td></td></tr>
+<tr name="82" id="82">
+<td><a id="l82" class='ln'>82</a></td><td><span class="ct">/* Constant parameters (default storage) */</span></td></tr>
+<tr name="83" id="83">
+<td><a id="l83" class='ln'>83</a></td><td><span class="kw">extern</span> <span class="kw">const</span> <a id="83c14" class="tk">ConstP</a> <a id="83c21" class="tk">rtConstP</a>;</td></tr>
+<tr name="84" id="84">
+<td><a id="l84" class='ln'>84</a></td><td></td></tr>
+<tr name="85" id="85">
+<td><a id="l85" class='ln'>85</a></td><td><span class="ct">/* Model entry point functions */</span></td></tr>
+<tr name="86" id="86">
+<td><a id="l86" class='ln'>86</a></td><td><span class="kw">extern</span> <span class="kw">void</span> <a id="86c13" class="tk">PMSM_Controller_initialize</a>(<a id="86c40" class="tk">RT_MODEL</a> <a id="86c49" class="tk">*</a><span class="kw">const</span> <a id="86c56" class="tk">rtM</a>);</td></tr>
+<tr name="87" id="87">
+<td><a id="l87" class='ln'>87</a></td><td><span class="kw">extern</span> <span class="kw">void</span> <a id="87c13" class="tk">PMSM_Controller_step</a>(<a id="87c34" class="tk">RT_MODEL</a> <a id="87c43" class="tk">*</a><span class="kw">const</span> <a id="87c50" class="tk">rtM</a>, <a id="87c55" class="tk">int16_T</a> <a id="87c63" class="tk">rtU_Vdc</a>, <a id="87c72" class="tk">uint16_T</a></td></tr>
+<tr name="88" id="88">
+<td><a id="l88" class='ln'>88</a></td><td>  <a id="88c3" class="tk">rtU_Ts</a>, <a id="88c11" class="tk">int16_T</a> <a id="88c19" class="tk">rtU_adc_a</a>, <a id="88c30" class="tk">int16_T</a> <a id="88c38" class="tk">rtU_adc_b</a>, <a id="88c49" class="tk">real_T</a> <a id="88c56" class="tk">rtU_rotor_angle</a>, <a id="88c73" class="tk">int16_T</a></td></tr>
+<tr name="89" id="89">
+<td><a id="l89" class='ln'>89</a></td><td>  <a id="89c3" class="tk">rtU_rotor_speed</a>, <a id="89c20" class="tk">int16_T</a> <a id="89c28" class="tk">rtU_input_target</a>, <a id="89c46" class="tk">uint16_T</a> <a id="89c55" class="tk">rtY_pwm_counts</a>[8], <a id="89c74" class="tk">uint8_T</a></td></tr>
+<tr name="90" id="90">
+<td><a id="l90" class='ln'>90</a></td><td>  <a id="90c3" class="tk">*</a><a id="90c4" class="tk">rtY_sector</a>);</td></tr>
+<tr name="91" id="91">
+<td><a id="l91" class='ln'>91</a></td><td></td></tr>
+<tr name="92" id="92">
+<td><a id="l92" class='ln'>92</a></td><td><span class="ct">/*-</span></td></tr>
+<tr name="93" id="93">
+<td><a id="l93" class='ln'>93</a></td><td><span class="ct"> * These blocks were eliminated from the model due to optimizations:</span></td></tr>
+<tr name="94" id="94">
+<td><a id="l94" class='ln'>94</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="95" id="95">
+<td><a id="l95" class='ln'>95</a></td><td><span class="ct"> * Block '&lt;S1&gt;/Abs1' : Unused code path elimination</span></td></tr>
+<tr name="96" id="96">
+<td><a id="l96" class='ln'>96</a></td><td><span class="ct"> * Block '&lt;S2&gt;/Scope' : Unused code path elimination</span></td></tr>
+<tr name="97" id="97">
+<td><a id="l97" class='ln'>97</a></td><td><span class="ct"> * Block '&lt;S7&gt;/Scope' : Unused code path elimination</span></td></tr>
+<tr name="98" id="98">
+<td><a id="l98" class='ln'>98</a></td><td><span class="ct"> * Block '&lt;S3&gt;/Scope' : Unused code path elimination</span></td></tr>
+<tr name="99" id="99">
+<td><a id="l99" class='ln'>99</a></td><td><span class="ct"> * Block '&lt;S10&gt;/Relational Operator9' : Unused code path elimination</span></td></tr>
+<tr name="100" id="100">
+<td><a id="l100" class='ln'>100</a></td><td><span class="ct"> * Block '&lt;S10&gt;/Scope1' : Unused code path elimination</span></td></tr>
+<tr name="101" id="101">
+<td><a id="l101" class='ln'>101</a></td><td><span class="ct"> * Block '&lt;S10&gt;/Scope2' : Unused code path elimination</span></td></tr>
+<tr name="102" id="102">
+<td><a id="l102" class='ln'>102</a></td><td><span class="ct"> * Block '&lt;S10&gt;/n_stdStillDet' : Unused code path elimination</span></td></tr>
+<tr name="103" id="103">
+<td><a id="l103" class='ln'>103</a></td><td><span class="ct"> * Block '&lt;S12&gt;/Abs5' : Unused code path elimination</span></td></tr>
+<tr name="104" id="104">
+<td><a id="l104" class='ln'>104</a></td><td><span class="ct"> * Block '&lt;S12&gt;/Divide1' : Unused code path elimination</span></td></tr>
+<tr name="105" id="105">
+<td><a id="l105" class='ln'>105</a></td><td><span class="ct"> * Block '&lt;S12&gt;/Divide14' : Unused code path elimination</span></td></tr>
+<tr name="106" id="106">
+<td><a id="l106" class='ln'>106</a></td><td><span class="ct"> * Block '&lt;S12&gt;/Divide2' : Unused code path elimination</span></td></tr>
+<tr name="107" id="107">
+<td><a id="l107" class='ln'>107</a></td><td><span class="ct"> * Block '&lt;S12&gt;/Divide3' : Unused code path elimination</span></td></tr>
+<tr name="108" id="108">
+<td><a id="l108" class='ln'>108</a></td><td><span class="ct"> * Block '&lt;S13&gt;/Data Type Duplicate' : Unused code path elimination</span></td></tr>
+<tr name="109" id="109">
+<td><a id="l109" class='ln'>109</a></td><td><span class="ct"> * Block '&lt;S13&gt;/Data Type Propagation' : Unused code path elimination</span></td></tr>
+<tr name="110" id="110">
+<td><a id="l110" class='ln'>110</a></td><td><span class="ct"> * Block '&lt;S13&gt;/LowerRelop1' : Unused code path elimination</span></td></tr>
+<tr name="111" id="111">
+<td><a id="l111" class='ln'>111</a></td><td><span class="ct"> * Block '&lt;S13&gt;/Switch' : Unused code path elimination</span></td></tr>
+<tr name="112" id="112">
+<td><a id="l112" class='ln'>112</a></td><td><span class="ct"> * Block '&lt;S13&gt;/Switch2' : Unused code path elimination</span></td></tr>
+<tr name="113" id="113">
+<td><a id="l113" class='ln'>113</a></td><td><span class="ct"> * Block '&lt;S13&gt;/UpperRelop' : Unused code path elimination</span></td></tr>
+<tr name="114" id="114">
+<td><a id="l114" class='ln'>114</a></td><td><span class="ct"> * Block '&lt;S14&gt;/Data Type Duplicate' : Unused code path elimination</span></td></tr>
+<tr name="115" id="115">
+<td><a id="l115" class='ln'>115</a></td><td><span class="ct"> * Block '&lt;S14&gt;/Data Type Propagation' : Unused code path elimination</span></td></tr>
+<tr name="116" id="116">
+<td><a id="l116" class='ln'>116</a></td><td><span class="ct"> * Block '&lt;S14&gt;/LowerRelop1' : Unused code path elimination</span></td></tr>
+<tr name="117" id="117">
+<td><a id="l117" class='ln'>117</a></td><td><span class="ct"> * Block '&lt;S14&gt;/Switch' : Unused code path elimination</span></td></tr>
+<tr name="118" id="118">
+<td><a id="l118" class='ln'>118</a></td><td><span class="ct"> * Block '&lt;S14&gt;/Switch2' : Unused code path elimination</span></td></tr>
+<tr name="119" id="119">
+<td><a id="l119" class='ln'>119</a></td><td><span class="ct"> * Block '&lt;S14&gt;/UpperRelop' : Unused code path elimination</span></td></tr>
+<tr name="120" id="120">
+<td><a id="l120" class='ln'>120</a></td><td><span class="ct"> * Block '&lt;S12&gt;/Sum1' : Unused code path elimination</span></td></tr>
+<tr name="121" id="121">
+<td><a id="l121" class='ln'>121</a></td><td><span class="ct"> * Block '&lt;S12&gt;/Sum2' : Unused code path elimination</span></td></tr>
+<tr name="122" id="122">
+<td><a id="l122" class='ln'>122</a></td><td><span class="ct"> * Block '&lt;S12&gt;/Sum3' : Unused code path elimination</span></td></tr>
+<tr name="123" id="123">
+<td><a id="l123" class='ln'>123</a></td><td><span class="ct"> * Block '&lt;S12&gt;/Sum4' : Unused code path elimination</span></td></tr>
+<tr name="124" id="124">
+<td><a id="l124" class='ln'>124</a></td><td><span class="ct"> * Block '&lt;S12&gt;/id_fieldWeakMax' : Unused code path elimination</span></td></tr>
+<tr name="125" id="125">
+<td><a id="l125" class='ln'>125</a></td><td><span class="ct"> * Block '&lt;S12&gt;/n_fieldWeakAuthHi' : Unused code path elimination</span></td></tr>
+<tr name="126" id="126">
+<td><a id="l126" class='ln'>126</a></td><td><span class="ct"> * Block '&lt;S12&gt;/n_fieldWeakAuthLo' : Unused code path elimination</span></td></tr>
+<tr name="127" id="127">
+<td><a id="l127" class='ln'>127</a></td><td><span class="ct"> * Block '&lt;S12&gt;/r_fieldWeakHi' : Unused code path elimination</span></td></tr>
+<tr name="128" id="128">
+<td><a id="l128" class='ln'>128</a></td><td><span class="ct"> * Block '&lt;S12&gt;/r_fieldWeakLo' : Unused code path elimination</span></td></tr>
+<tr name="129" id="129">
+<td><a id="l129" class='ln'>129</a></td><td><span class="ct"> * Block '&lt;S1&gt;/Scope' : Unused code path elimination</span></td></tr>
+<tr name="130" id="130">
+<td><a id="l130" class='ln'>130</a></td><td><span class="ct"> * Block '&lt;S1&gt;/Scope1' : Unused code path elimination</span></td></tr>
+<tr name="131" id="131">
+<td><a id="l131" class='ln'>131</a></td><td><span class="ct"> * Block '&lt;S5&gt;/Gain6' : Unused code path elimination</span></td></tr>
+<tr name="132" id="132">
+<td><a id="l132" class='ln'>132</a></td><td><span class="ct"> * Block '&lt;S17&gt;/Abs5' : Unused code path elimination</span></td></tr>
+<tr name="133" id="133">
+<td><a id="l133" class='ln'>133</a></td><td><span class="ct"> * Block '&lt;S17&gt;/Constant' : Unused code path elimination</span></td></tr>
+<tr name="134" id="134">
+<td><a id="l134" class='ln'>134</a></td><td><span class="ct"> * Block '&lt;S17&gt;/Constant1' : Unused code path elimination</span></td></tr>
+<tr name="135" id="135">
+<td><a id="l135" class='ln'>135</a></td><td><span class="ct"> * Block '&lt;S17&gt;/Divide1' : Unused code path elimination</span></td></tr>
+<tr name="136" id="136">
+<td><a id="l136" class='ln'>136</a></td><td><span class="ct"> * Block '&lt;S17&gt;/Divide4' : Unused code path elimination</span></td></tr>
+<tr name="137" id="137">
+<td><a id="l137" class='ln'>137</a></td><td><span class="ct"> * Block '&lt;S17&gt;/Gain1' : Unused code path elimination</span></td></tr>
+<tr name="138" id="138">
+<td><a id="l138" class='ln'>138</a></td><td><span class="ct"> * Block '&lt;S17&gt;/Gain3' : Unused code path elimination</span></td></tr>
+<tr name="139" id="139">
+<td><a id="l139" class='ln'>139</a></td><td><span class="ct"> * Block '&lt;S17&gt;/Gain4' : Unused code path elimination</span></td></tr>
+<tr name="140" id="140">
+<td><a id="l140" class='ln'>140</a></td><td><span class="ct"> * Block '&lt;S17&gt;/Gain5' : Unused code path elimination</span></td></tr>
+<tr name="141" id="141">
+<td><a id="l141" class='ln'>141</a></td><td><span class="ct"> * Block '&lt;S17&gt;/Vd_max1' : Unused code path elimination</span></td></tr>
+<tr name="142" id="142">
+<td><a id="l142" class='ln'>142</a></td><td><span class="ct"> * Block '&lt;S17&gt;/Vq_max_M1' : Unused code path elimination</span></td></tr>
+<tr name="143" id="143">
+<td><a id="l143" class='ln'>143</a></td><td><span class="ct"> * Block '&lt;S17&gt;/Vq_max_XA' : Unused code path elimination</span></td></tr>
+<tr name="144" id="144">
+<td><a id="l144" class='ln'>144</a></td><td><span class="ct"> * Block '&lt;S17&gt;/i_max' : Unused code path elimination</span></td></tr>
+<tr name="145" id="145">
+<td><a id="l145" class='ln'>145</a></td><td><span class="ct"> * Block '&lt;S17&gt;/iq_maxSca_M1' : Unused code path elimination</span></td></tr>
+<tr name="146" id="146">
+<td><a id="l146" class='ln'>146</a></td><td><span class="ct"> * Block '&lt;S17&gt;/iq_maxSca_XA' : Unused code path elimination</span></td></tr>
+<tr name="147" id="147">
+<td><a id="l147" class='ln'>147</a></td><td><span class="ct"> * Block '&lt;S17&gt;/n_max1' : Unused code path elimination</span></td></tr>
+<tr name="148" id="148">
+<td><a id="l148" class='ln'>148</a></td><td><span class="ct"> * Block '&lt;S178&gt;/Scope' : Unused code path elimination</span></td></tr>
+<tr name="149" id="149">
+<td><a id="l149" class='ln'>149</a></td><td><span class="ct"> * Block '&lt;S5&gt;/Scope1' : Unused code path elimination</span></td></tr>
+<tr name="150" id="150">
+<td><a id="l150" class='ln'>150</a></td><td><span class="ct"> * Block '&lt;S5&gt;/Scope12' : Unused code path elimination</span></td></tr>
+<tr name="151" id="151">
+<td><a id="l151" class='ln'>151</a></td><td><span class="ct"> * Block '&lt;S5&gt;/UnitDelay4' : Unused code path elimination</span></td></tr>
+<tr name="152" id="152">
+<td><a id="l152" class='ln'>152</a></td><td><span class="ct"> * Block '&lt;S2&gt;/Signal Conversion2' : Eliminate redundant signal conversion block</span></td></tr>
+<tr name="153" id="153">
+<td><a id="l153" class='ln'>153</a></td><td><span class="ct"> * Block '&lt;S1&gt;/hall_motor_angel_choice' : Eliminated due to constant selection input</span></td></tr>
+<tr name="154" id="154">
+<td><a id="l154" class='ln'>154</a></td><td><span class="ct"> * Block '&lt;S1&gt;/hall_motor_speed_choice' : Eliminated due to constant selection input</span></td></tr>
+<tr name="155" id="155">
+<td><a id="l155" class='ln'>155</a></td><td><span class="ct"> * Block '&lt;S2&gt;/AND' : Unused code path elimination</span></td></tr>
+<tr name="156" id="156">
+<td><a id="l156" class='ln'>156</a></td><td><span class="ct"> * Block '&lt;S2&gt;/Constant1' : Unused code path elimination</span></td></tr>
+<tr name="157" id="157">
+<td><a id="l157" class='ln'>157</a></td><td><span class="ct"> * Block '&lt;S2&gt;/Constant16' : Unused code path elimination</span></td></tr>
+<tr name="158" id="158">
+<td><a id="l158" class='ln'>158</a></td><td><span class="ct"> * Block '&lt;S2&gt;/Constant2' : Unused code path elimination</span></td></tr>
+<tr name="159" id="159">
+<td><a id="l159" class='ln'>159</a></td><td><span class="ct"> * Block '&lt;S2&gt;/Divide1' : Unused code path elimination</span></td></tr>
+<tr name="160" id="160">
+<td><a id="l160" class='ln'>160</a></td><td><span class="ct"> * Block '&lt;S2&gt;/Divide2' : Unused code path elimination</span></td></tr>
+<tr name="161" id="161">
+<td><a id="l161" class='ln'>161</a></td><td><span class="ct"> * Block '&lt;S2&gt;/Divide3' : Unused code path elimination</span></td></tr>
+<tr name="162" id="162">
+<td><a id="l162" class='ln'>162</a></td><td><span class="ct"> * Block '&lt;S2&gt;/MinMax' : Unused code path elimination</span></td></tr>
+<tr name="163" id="163">
+<td><a id="l163" class='ln'>163</a></td><td><span class="ct"> * Block '&lt;S2&gt;/MinMax1' : Unused code path elimination</span></td></tr>
+<tr name="164" id="164">
+<td><a id="l164" class='ln'>164</a></td><td><span class="ct"> * Block '&lt;S2&gt;/NOT' : Unused code path elimination</span></td></tr>
+<tr name="165" id="165">
+<td><a id="l165" class='ln'>165</a></td><td><span class="ct"> * Block '&lt;S2&gt;/Relational Operator7' : Unused code path elimination</span></td></tr>
+<tr name="166" id="166">
+<td><a id="l166" class='ln'>166</a></td><td><span class="ct"> * Block '&lt;S2&gt;/Sum1' : Unused code path elimination</span></td></tr>
+<tr name="167" id="167">
+<td><a id="l167" class='ln'>167</a></td><td><span class="ct"> * Block '&lt;S2&gt;/Sum3' : Unused code path elimination</span></td></tr>
+<tr name="168" id="168">
+<td><a id="l168" class='ln'>168</a></td><td><span class="ct"> * Block '&lt;S2&gt;/Switch2' : Unused code path elimination</span></td></tr>
+<tr name="169" id="169">
+<td><a id="l169" class='ln'>169</a></td><td><span class="ct"> * Block '&lt;S2&gt;/Switch3' : Unused code path elimination</span></td></tr>
+<tr name="170" id="170">
+<td><a id="l170" class='ln'>170</a></td><td><span class="ct"> * Block '&lt;S2&gt;/a_elecAngle1' : Unused code path elimination</span></td></tr>
+<tr name="171" id="171">
+<td><a id="l171" class='ln'>171</a></td><td><span class="ct"> * Block '&lt;S6&gt;/Add2' : Unused code path elimination</span></td></tr>
+<tr name="172" id="172">
+<td><a id="l172" class='ln'>172</a></td><td><span class="ct"> * Block '&lt;S6&gt;/Constant1' : Unused code path elimination</span></td></tr>
+<tr name="173" id="173">
+<td><a id="l173" class='ln'>173</a></td><td><span class="ct"> * Block '&lt;S6&gt;/Constant2' : Unused code path elimination</span></td></tr>
+<tr name="174" id="174">
+<td><a id="l174" class='ln'>174</a></td><td><span class="ct"> * Block '&lt;S6&gt;/Math Function' : Unused code path elimination</span></td></tr>
+<tr name="175" id="175">
+<td><a id="l175" class='ln'>175</a></td><td><span class="ct"> * Block '&lt;S2&gt;/是否方波启动' : Unused code path elimination</span></td></tr>
+<tr name="176" id="176">
+<td><a id="l176" class='ln'>176</a></td><td><span class="ct"> * Block '&lt;S7&gt;/Constant20' : Unused code path elimination</span></td></tr>
+<tr name="177" id="177">
+<td><a id="l177" class='ln'>177</a></td><td><span class="ct"> * Block '&lt;S7&gt;/Constant23' : Unused code path elimination</span></td></tr>
+<tr name="178" id="178">
+<td><a id="l178" class='ln'>178</a></td><td><span class="ct"> * Block '&lt;S7&gt;/Constant24' : Unused code path elimination</span></td></tr>
+<tr name="179" id="179">
+<td><a id="l179" class='ln'>179</a></td><td><span class="ct"> * Block '&lt;S7&gt;/Constant8' : Unused code path elimination</span></td></tr>
+<tr name="180" id="180">
+<td><a id="l180" class='ln'>180</a></td><td><span class="ct"> * Block '&lt;S7&gt;/Logical Operator3' : Unused code path elimination</span></td></tr>
+<tr name="181" id="181">
+<td><a id="l181" class='ln'>181</a></td><td><span class="ct"> * Block '&lt;S7&gt;/Relational Operator1' : Unused code path elimination</span></td></tr>
+<tr name="182" id="182">
+<td><a id="l182" class='ln'>182</a></td><td><span class="ct"> * Block '&lt;S7&gt;/Relational Operator6' : Unused code path elimination</span></td></tr>
+<tr name="183" id="183">
+<td><a id="l183" class='ln'>183</a></td><td><span class="ct"> * Block '&lt;S7&gt;/Sum2' : Unused code path elimination</span></td></tr>
+<tr name="184" id="184">
+<td><a id="l184" class='ln'>184</a></td><td><span class="ct"> * Block '&lt;S7&gt;/Switch2' : Unused code path elimination</span></td></tr>
+<tr name="185" id="185">
+<td><a id="l185" class='ln'>185</a></td><td><span class="ct"> * Block '&lt;S7&gt;/UnitDelay2' : Unused code path elimination</span></td></tr>
+<tr name="186" id="186">
+<td><a id="l186" class='ln'>186</a></td><td><span class="ct"> * Block '&lt;S7&gt;/UnitDelay3' : Unused code path elimination</span></td></tr>
+<tr name="187" id="187">
+<td><a id="l187" class='ln'>187</a></td><td><span class="ct"> * Block '&lt;S9&gt;/Add' : Unused code path elimination</span></td></tr>
+<tr name="188" id="188">
+<td><a id="l188" class='ln'>188</a></td><td><span class="ct"> * Block '&lt;S9&gt;/Gain' : Unused code path elimination</span></td></tr>
+<tr name="189" id="189">
+<td><a id="l189" class='ln'>189</a></td><td><span class="ct"> * Block '&lt;S9&gt;/Gain1' : Unused code path elimination</span></td></tr>
+<tr name="190" id="190">
+<td><a id="l190" class='ln'>190</a></td><td><span class="ct"> * Block '&lt;S9&gt;/Selector' : Unused code path elimination</span></td></tr>
+<tr name="191" id="191">
+<td><a id="l191" class='ln'>191</a></td><td><span class="ct"> * Block '&lt;S9&gt;/vec_hallToPos' : Unused code path elimination</span></td></tr>
+<tr name="192" id="192">
+<td><a id="l192" class='ln'>192</a></td><td><span class="ct"> * Block '&lt;S10&gt;/Abs5' : Unused code path elimination</span></td></tr>
+<tr name="193" id="193">
+<td><a id="l193" class='ln'>193</a></td><td><span class="ct"> * Block '&lt;S10&gt;/Constant4' : Unused code path elimination</span></td></tr>
+<tr name="194" id="194">
+<td><a id="l194" class='ln'>194</a></td><td><span class="ct"> * Block '&lt;S10&gt;/Logical Operator1' : Unused code path elimination</span></td></tr>
+<tr name="195" id="195">
+<td><a id="l195" class='ln'>195</a></td><td><span class="ct"> * Block '&lt;S10&gt;/Logical Operator2' : Unused code path elimination</span></td></tr>
+<tr name="196" id="196">
+<td><a id="l196" class='ln'>196</a></td><td><span class="ct"> * Block '&lt;S10&gt;/Logical Operator3' : Unused code path elimination</span></td></tr>
+<tr name="197" id="197">
+<td><a id="l197" class='ln'>197</a></td><td><span class="ct"> * Block '&lt;S11&gt;/Abs2' : Unused code path elimination</span></td></tr>
+<tr name="198" id="198">
+<td><a id="l198" class='ln'>198</a></td><td><span class="ct"> * Block '&lt;S11&gt;/Constant4' : Unused code path elimination</span></td></tr>
+<tr name="199" id="199">
+<td><a id="l199" class='ln'>199</a></td><td><span class="ct"> * Block '&lt;S11&gt;/Divide11' : Unused code path elimination</span></td></tr>
+<tr name="200" id="200">
+<td><a id="l200" class='ln'>200</a></td><td><span class="ct"> * Block '&lt;S11&gt;/Divide13' : Unused code path elimination</span></td></tr>
+<tr name="201" id="201">
+<td><a id="l201" class='ln'>201</a></td><td><span class="ct"> * Block '&lt;S11&gt;/Divide14' : Unused code path elimination</span></td></tr>
+<tr name="202" id="202">
+<td><a id="l202" class='ln'>202</a></td><td><span class="ct"> * Block '&lt;S11&gt;/Logical Operator1' : Unused code path elimination</span></td></tr>
+<tr name="203" id="203">
+<td><a id="l203" class='ln'>203</a></td><td><span class="ct"> * Block '&lt;S11&gt;/Relational Operator4' : Unused code path elimination</span></td></tr>
+<tr name="204" id="204">
+<td><a id="l204" class='ln'>204</a></td><td><span class="ct"> * Block '&lt;S11&gt;/Sum13' : Unused code path elimination</span></td></tr>
+<tr name="205" id="205">
+<td><a id="l205" class='ln'>205</a></td><td><span class="ct"> * Block '&lt;S11&gt;/Sum7' : Unused code path elimination</span></td></tr>
+<tr name="206" id="206">
+<td><a id="l206" class='ln'>206</a></td><td><span class="ct"> * Block '&lt;S11&gt;/Switch1' : Unused code path elimination</span></td></tr>
+<tr name="207" id="207">
+<td><a id="l207" class='ln'>207</a></td><td><span class="ct"> * Block '&lt;S11&gt;/Switch2' : Unused code path elimination</span></td></tr>
+<tr name="208" id="208">
+<td><a id="l208" class='ln'>208</a></td><td><span class="ct"> * Block '&lt;S11&gt;/Switch3' : Unused code path elimination</span></td></tr>
+<tr name="209" id="209">
+<td><a id="l209" class='ln'>209</a></td><td><span class="ct"> * Block '&lt;S11&gt;/UnitDelay1' : Unused code path elimination</span></td></tr>
+<tr name="210" id="210">
+<td><a id="l210" class='ln'>210</a></td><td><span class="ct"> * Block '&lt;S11&gt;/UnitDelay2' : Unused code path elimination</span></td></tr>
+<tr name="211" id="211">
+<td><a id="l211" class='ln'>211</a></td><td><span class="ct"> * Block '&lt;S11&gt;/UnitDelay3' : Unused code path elimination</span></td></tr>
+<tr name="212" id="212">
+<td><a id="l212" class='ln'>212</a></td><td><span class="ct"> * Block '&lt;S11&gt;/UnitDelay4' : Unused code path elimination</span></td></tr>
+<tr name="213" id="213">
+<td><a id="l213" class='ln'>213</a></td><td><span class="ct"> * Block '&lt;S11&gt;/UnitDelay5' : Unused code path elimination</span></td></tr>
+<tr name="214" id="214">
+<td><a id="l214" class='ln'>214</a></td><td><span class="ct"> * Block '&lt;S11&gt;/cf_speedCoef' : Unused code path elimination</span></td></tr>
+<tr name="215" id="215">
+<td><a id="l215" class='ln'>215</a></td><td><span class="ct"> * Block '&lt;S11&gt;/dz_cntTrnsDet' : Unused code path elimination</span></td></tr>
+<tr name="216" id="216">
+<td><a id="l216" class='ln'>216</a></td><td><span class="ct"> * Block '&lt;S11&gt;/g_Ha' : Unused code path elimination</span></td></tr>
+<tr name="217" id="217">
+<td><a id="l217" class='ln'>217</a></td><td><span class="ct"> * Block '&lt;S10&gt;/Relational Operator2' : Unused code path elimination</span></td></tr>
+<tr name="218" id="218">
+<td><a id="l218" class='ln'>218</a></td><td><span class="ct"> * Block '&lt;S10&gt;/Switch2' : Unused code path elimination</span></td></tr>
+<tr name="219" id="219">
+<td><a id="l219" class='ln'>219</a></td><td><span class="ct"> * Block '&lt;S10&gt;/UnitDelay4' : Unused code path elimination</span></td></tr>
+<tr name="220" id="220">
+<td><a id="l220" class='ln'>220</a></td><td><span class="ct"> * Block '&lt;S10&gt;/b_angleMeasEna' : Unused code path elimination</span></td></tr>
+<tr name="221" id="221">
+<td><a id="l221" class='ln'>221</a></td><td><span class="ct"> * Block '&lt;S10&gt;/n_commDeacv' : Unused code path elimination</span></td></tr>
+<tr name="222" id="222">
+<td><a id="l222" class='ln'>222</a></td><td><span class="ct"> * Block '&lt;S10&gt;/z_maxCntRst' : Unused code path elimination</span></td></tr>
+<tr name="223" id="223">
+<td><a id="l223" class='ln'>223</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="224" id="224">
+<td><a id="l224" class='ln'>224</a></td><td></td></tr>
+<tr name="225" id="225">
+<td><a id="l225" class='ln'>225</a></td><td><span class="ct">/*-</span></td></tr>
+<tr name="226" id="226">
+<td><a id="l226" class='ln'>226</a></td><td><span class="ct"> * The generated code includes comments that allow you to trace directly</span></td></tr>
+<tr name="227" id="227">
+<td><a id="l227" class='ln'>227</a></td><td><span class="ct"> * back to the appropriate location in the model.  The basic format</span></td></tr>
+<tr name="228" id="228">
+<td><a id="l228" class='ln'>228</a></td><td><span class="ct"> * is &lt;system&gt;/block_name, where system is the system number (uniquely</span></td></tr>
+<tr name="229" id="229">
+<td><a id="l229" class='ln'>229</a></td><td><span class="ct"> * assigned by Simulink) and block_name is the name of the block.</span></td></tr>
+<tr name="230" id="230">
+<td><a id="l230" class='ln'>230</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="231" id="231">
+<td><a id="l231" class='ln'>231</a></td><td><span class="ct"> * Note that this particular code originates from a subsystem build,</span></td></tr>
+<tr name="232" id="232">
+<td><a id="l232" class='ln'>232</a></td><td><span class="ct"> * and has its own system numbers different from the parent model.</span></td></tr>
+<tr name="233" id="233">
+<td><a id="l233" class='ln'>233</a></td><td><span class="ct"> * Refer to the system hierarchy for this subsystem below, and use the</span></td></tr>
+<tr name="234" id="234">
+<td><a id="l234" class='ln'>234</a></td><td><span class="ct"> * MATLAB hilite_system command to trace the generated code back</span></td></tr>
+<tr name="235" id="235">
+<td><a id="l235" class='ln'>235</a></td><td><span class="ct"> * to the parent model.  For example,</span></td></tr>
+<tr name="236" id="236">
+<td><a id="l236" class='ln'>236</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="237" id="237">
+<td><a id="l237" class='ln'>237</a></td><td><span class="ct"> * hilite_system('MotorController_FOC/PMSM_Controller')    - opens subsystem MotorController_FOC/PMSM_Controller</span></td></tr>
+<tr name="238" id="238">
+<td><a id="l238" class='ln'>238</a></td><td><span class="ct"> * hilite_system('MotorController_FOC/PMSM_Controller/Kp') - opens and selects block Kp</span></td></tr>
+<tr name="239" id="239">
+<td><a id="l239" class='ln'>239</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="240" id="240">
+<td><a id="l240" class='ln'>240</a></td><td><span class="ct"> * Here is the system hierarchy for this model</span></td></tr>
+<tr name="241" id="241">
+<td><a id="l241" class='ln'>241</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="242" id="242">
+<td><a id="l242" class='ln'>242</a></td><td><span class="ct"> * '&lt;Root&gt;' : 'MotorController_FOC'</span></td></tr>
+<tr name="243" id="243">
+<td><a id="l243" class='ln'>243</a></td><td><span class="ct"> * '&lt;S1&gt;'   : 'MotorController_FOC/PMSM_Controller'</span></td></tr>
+<tr name="244" id="244">
+<td><a id="l244" class='ln'>244</a></td><td><span class="ct"> * '&lt;S2&gt;'   : 'MotorController_FOC/PMSM_Controller/Electrical_Angle_Estimation'</span></td></tr>
+<tr name="245" id="245">
+<td><a id="l245" class='ln'>245</a></td><td><span class="ct"> * '&lt;S3&gt;'   : 'MotorController_FOC/PMSM_Controller/Electrical_Speed_Estimation'</span></td></tr>
+<tr name="246" id="246">
+<td><a id="l246" class='ln'>246</a></td><td><span class="ct"> * '&lt;S4&gt;'   : 'MotorController_FOC/PMSM_Controller/Field_Weakening_Enabled'</span></td></tr>
+<tr name="247" id="247">
+<td><a id="l247" class='ln'>247</a></td><td><span class="ct"> * '&lt;S5&gt;'   : 'MotorController_FOC/PMSM_Controller/controller'</span></td></tr>
+<tr name="248" id="248">
+<td><a id="l248" class='ln'>248</a></td><td><span class="ct"> * '&lt;S6&gt;'   : 'MotorController_FOC/PMSM_Controller/Electrical_Angle_Estimation/degree_rad'</span></td></tr>
+<tr name="249" id="249">
+<td><a id="l249" class='ln'>249</a></td><td><span class="ct"> * '&lt;S7&gt;'   : 'MotorController_FOC/PMSM_Controller/Electrical_Speed_Estimation/Direction_Detection'</span></td></tr>
+<tr name="250" id="250">
+<td><a id="l250" class='ln'>250</a></td><td><span class="ct"> * '&lt;S8&gt;'   : 'MotorController_FOC/PMSM_Controller/Electrical_Speed_Estimation/Edge_Detect'</span></td></tr>
+<tr name="251" id="251">
+<td><a id="l251" class='ln'>251</a></td><td><span class="ct"> * '&lt;S9&gt;'   : 'MotorController_FOC/PMSM_Controller/Electrical_Speed_Estimation/Hall_Angle_Raw'</span></td></tr>
+<tr name="252" id="252">
+<td><a id="l252" class='ln'>252</a></td><td><span class="ct"> * '&lt;S10&gt;'  : 'MotorController_FOC/PMSM_Controller/Electrical_Speed_Estimation/Speed_Estimation'</span></td></tr>
+<tr name="253" id="253">
+<td><a id="l253" class='ln'>253</a></td><td><span class="ct"> * '&lt;S11&gt;'  : 'MotorController_FOC/PMSM_Controller/Electrical_Speed_Estimation/Speed_Estimation/Raw_Motor_Speed_Estimation'</span></td></tr>
+<tr name="254" id="254">
+<td><a id="l254" class='ln'>254</a></td><td><span class="ct"> * '&lt;S12&gt;'  : 'MotorController_FOC/PMSM_Controller/Field_Weakening_Enabled/Field_Weakening'</span></td></tr>
+<tr name="255" id="255">
+<td><a id="l255" class='ln'>255</a></td><td><span class="ct"> * '&lt;S13&gt;'  : 'MotorController_FOC/PMSM_Controller/Field_Weakening_Enabled/Field_Weakening/Saturation Dynamic'</span></td></tr>
+<tr name="256" id="256">
+<td><a id="l256" class='ln'>256</a></td><td><span class="ct"> * '&lt;S14&gt;'  : 'MotorController_FOC/PMSM_Controller/Field_Weakening_Enabled/Field_Weakening/Saturation Dynamic1'</span></td></tr>
+<tr name="257" id="257">
+<td><a id="l257" class='ln'>257</a></td><td><span class="ct"> * '&lt;S15&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/Clarke_Park_Transform_Forward'</span></td></tr>
+<tr name="258" id="258">
+<td><a id="l258" class='ln'>258</a></td><td><span class="ct"> * '&lt;S16&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC'</span></td></tr>
+<tr name="259" id="259">
+<td><a id="l259" class='ln'>259</a></td><td><span class="ct"> * '&lt;S17&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/Motor_Limitations_Enabled'</span></td></tr>
+<tr name="260" id="260">
+<td><a id="l260" class='ln'>260</a></td><td><span class="ct"> * '&lt;S18&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/Park_Transform_Inverse'</span></td></tr>
+<tr name="261" id="261">
+<td><a id="l261" class='ln'>261</a></td><td><span class="ct"> * '&lt;S19&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/SVM'</span></td></tr>
+<tr name="262" id="262">
+<td><a id="l262" class='ln'>262</a></td><td><span class="ct"> * '&lt;S20&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/Clarke_Park_Transform_Forward/Clarke'</span></td></tr>
+<tr name="263" id="263">
+<td><a id="l263" class='ln'>263</a></td><td><span class="ct"> * '&lt;S21&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/Clarke_Park_Transform_Forward/LowPassFilter'</span></td></tr>
+<tr name="264" id="264">
+<td><a id="l264" class='ln'>264</a></td><td><span class="ct"> * '&lt;S22&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/Clarke_Park_Transform_Forward/Park'</span></td></tr>
+<tr name="265" id="265">
+<td><a id="l265" class='ln'>265</a></td><td><span class="ct"> * '&lt;S23&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/Clarke_Park_Transform_Forward/Sine_Cosine_Approximation'</span></td></tr>
+<tr name="266" id="266">
+<td><a id="l266" class='ln'>266</a></td><td><span class="ct"> * '&lt;S24&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id'</span></td></tr>
+<tr name="267" id="267">
+<td><a id="l267" class='ln'>267</a></td><td><span class="ct"> * '&lt;S25&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq'</span></td></tr>
+<tr name="268" id="268">
+<td><a id="l268" class='ln'>268</a></td><td><span class="ct"> * '&lt;S26&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed'</span></td></tr>
+<tr name="269" id="269">
+<td><a id="l269" class='ln'>269</a></td><td><span class="ct"> * '&lt;S27&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Anti-windup'</span></td></tr>
+<tr name="270" id="270">
+<td><a id="l270" class='ln'>270</a></td><td><span class="ct"> * '&lt;S28&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/D Gain'</span></td></tr>
+<tr name="271" id="271">
+<td><a id="l271" class='ln'>271</a></td><td><span class="ct"> * '&lt;S29&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Filter'</span></td></tr>
+<tr name="272" id="272">
+<td><a id="l272" class='ln'>272</a></td><td><span class="ct"> * '&lt;S30&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Filter ICs'</span></td></tr>
+<tr name="273" id="273">
+<td><a id="l273" class='ln'>273</a></td><td><span class="ct"> * '&lt;S31&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/I Gain'</span></td></tr>
+<tr name="274" id="274">
+<td><a id="l274" class='ln'>274</a></td><td><span class="ct"> * '&lt;S32&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Ideal P Gain'</span></td></tr>
+<tr name="275" id="275">
+<td><a id="l275" class='ln'>275</a></td><td><span class="ct"> * '&lt;S33&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Ideal P Gain Fdbk'</span></td></tr>
+<tr name="276" id="276">
+<td><a id="l276" class='ln'>276</a></td><td><span class="ct"> * '&lt;S34&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Integrator'</span></td></tr>
+<tr name="277" id="277">
+<td><a id="l277" class='ln'>277</a></td><td><span class="ct"> * '&lt;S35&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Integrator ICs'</span></td></tr>
+<tr name="278" id="278">
+<td><a id="l278" class='ln'>278</a></td><td><span class="ct"> * '&lt;S36&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/N Copy'</span></td></tr>
+<tr name="279" id="279">
+<td><a id="l279" class='ln'>279</a></td><td><span class="ct"> * '&lt;S37&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/N Gain'</span></td></tr>
+<tr name="280" id="280">
+<td><a id="l280" class='ln'>280</a></td><td><span class="ct"> * '&lt;S38&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/P Copy'</span></td></tr>
+<tr name="281" id="281">
+<td><a id="l281" class='ln'>281</a></td><td><span class="ct"> * '&lt;S39&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Parallel P Gain'</span></td></tr>
+<tr name="282" id="282">
+<td><a id="l282" class='ln'>282</a></td><td><span class="ct"> * '&lt;S40&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Reset Signal'</span></td></tr>
+<tr name="283" id="283">
+<td><a id="l283" class='ln'>283</a></td><td><span class="ct"> * '&lt;S41&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Saturation'</span></td></tr>
+<tr name="284" id="284">
+<td><a id="l284" class='ln'>284</a></td><td><span class="ct"> * '&lt;S42&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Saturation Fdbk'</span></td></tr>
+<tr name="285" id="285">
+<td><a id="l285" class='ln'>285</a></td><td><span class="ct"> * '&lt;S43&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Sum'</span></td></tr>
+<tr name="286" id="286">
+<td><a id="l286" class='ln'>286</a></td><td><span class="ct"> * '&lt;S44&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Sum Fdbk'</span></td></tr>
+<tr name="287" id="287">
+<td><a id="l287" class='ln'>287</a></td><td><span class="ct"> * '&lt;S45&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tracking Mode'</span></td></tr>
+<tr name="288" id="288">
+<td><a id="l288" class='ln'>288</a></td><td><span class="ct"> * '&lt;S46&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tracking Mode Sum'</span></td></tr>
+<tr name="289" id="289">
+<td><a id="l289" class='ln'>289</a></td><td><span class="ct"> * '&lt;S47&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tsamp - Integral'</span></td></tr>
+<tr name="290" id="290">
+<td><a id="l290" class='ln'>290</a></td><td><span class="ct"> * '&lt;S48&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tsamp - Ngain'</span></td></tr>
+<tr name="291" id="291">
+<td><a id="l291" class='ln'>291</a></td><td><span class="ct"> * '&lt;S49&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/postSat Signal'</span></td></tr>
+<tr name="292" id="292">
+<td><a id="l292" class='ln'>292</a></td><td><span class="ct"> * '&lt;S50&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/preSat Signal'</span></td></tr>
+<tr name="293" id="293">
+<td><a id="l293" class='ln'>293</a></td><td><span class="ct"> * '&lt;S51&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Anti-windup/Disc. Clamping Parallel'</span></td></tr>
+<tr name="294" id="294">
+<td><a id="l294" class='ln'>294</a></td><td><span class="ct"> * '&lt;S52&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Anti-windup/Disc. Clamping Parallel/Dead Zone'</span></td></tr>
+<tr name="295" id="295">
+<td><a id="l295" class='ln'>295</a></td><td><span class="ct"> * '&lt;S53&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Anti-windup/Disc. Clamping Parallel/Dead Zone/Enabled'</span></td></tr>
+<tr name="296" id="296">
+<td><a id="l296" class='ln'>296</a></td><td><span class="ct"> * '&lt;S54&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/D Gain/Disabled'</span></td></tr>
+<tr name="297" id="297">
+<td><a id="l297" class='ln'>297</a></td><td><span class="ct"> * '&lt;S55&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Filter/Disabled'</span></td></tr>
+<tr name="298" id="298">
+<td><a id="l298" class='ln'>298</a></td><td><span class="ct"> * '&lt;S56&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Filter ICs/Disabled'</span></td></tr>
+<tr name="299" id="299">
+<td><a id="l299" class='ln'>299</a></td><td><span class="ct"> * '&lt;S57&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/I Gain/Internal Parameters'</span></td></tr>
+<tr name="300" id="300">
+<td><a id="l300" class='ln'>300</a></td><td><span class="ct"> * '&lt;S58&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Ideal P Gain/Passthrough'</span></td></tr>
+<tr name="301" id="301">
+<td><a id="l301" class='ln'>301</a></td><td><span class="ct"> * '&lt;S59&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Ideal P Gain Fdbk/Disabled'</span></td></tr>
+<tr name="302" id="302">
+<td><a id="l302" class='ln'>302</a></td><td><span class="ct"> * '&lt;S60&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Integrator/Discrete'</span></td></tr>
+<tr name="303" id="303">
+<td><a id="l303" class='ln'>303</a></td><td><span class="ct"> * '&lt;S61&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Integrator ICs/Internal IC'</span></td></tr>
+<tr name="304" id="304">
+<td><a id="l304" class='ln'>304</a></td><td><span class="ct"> * '&lt;S62&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/N Copy/Disabled wSignal Specification'</span></td></tr>
+<tr name="305" id="305">
+<td><a id="l305" class='ln'>305</a></td><td><span class="ct"> * '&lt;S63&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/N Gain/Disabled'</span></td></tr>
+<tr name="306" id="306">
+<td><a id="l306" class='ln'>306</a></td><td><span class="ct"> * '&lt;S64&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/P Copy/Disabled'</span></td></tr>
+<tr name="307" id="307">
+<td><a id="l307" class='ln'>307</a></td><td><span class="ct"> * '&lt;S65&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Parallel P Gain/Internal Parameters'</span></td></tr>
+<tr name="308" id="308">
+<td><a id="l308" class='ln'>308</a></td><td><span class="ct"> * '&lt;S66&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Reset Signal/Disabled'</span></td></tr>
+<tr name="309" id="309">
+<td><a id="l309" class='ln'>309</a></td><td><span class="ct"> * '&lt;S67&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Saturation/Enabled'</span></td></tr>
+<tr name="310" id="310">
+<td><a id="l310" class='ln'>310</a></td><td><span class="ct"> * '&lt;S68&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Saturation Fdbk/Disabled'</span></td></tr>
+<tr name="311" id="311">
+<td><a id="l311" class='ln'>311</a></td><td><span class="ct"> * '&lt;S69&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Sum/Sum_PI'</span></td></tr>
+<tr name="312" id="312">
+<td><a id="l312" class='ln'>312</a></td><td><span class="ct"> * '&lt;S70&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Sum Fdbk/Disabled'</span></td></tr>
+<tr name="313" id="313">
+<td><a id="l313" class='ln'>313</a></td><td><span class="ct"> * '&lt;S71&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tracking Mode/Disabled'</span></td></tr>
+<tr name="314" id="314">
+<td><a id="l314" class='ln'>314</a></td><td><span class="ct"> * '&lt;S72&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tracking Mode Sum/Passthrough'</span></td></tr>
+<tr name="315" id="315">
+<td><a id="l315" class='ln'>315</a></td><td><span class="ct"> * '&lt;S73&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tsamp - Integral/Passthrough'</span></td></tr>
+<tr name="316" id="316">
+<td><a id="l316" class='ln'>316</a></td><td><span class="ct"> * '&lt;S74&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/Tsamp - Ngain/Passthrough'</span></td></tr>
+<tr name="317" id="317">
+<td><a id="l317" class='ln'>317</a></td><td><span class="ct"> * '&lt;S75&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/postSat Signal/Forward_Path'</span></td></tr>
+<tr name="318" id="318">
+<td><a id="l318" class='ln'>318</a></td><td><span class="ct"> * '&lt;S76&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Id/preSat Signal/Forward_Path'</span></td></tr>
+<tr name="319" id="319">
+<td><a id="l319" class='ln'>319</a></td><td><span class="ct"> * '&lt;S77&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Anti-windup'</span></td></tr>
+<tr name="320" id="320">
+<td><a id="l320" class='ln'>320</a></td><td><span class="ct"> * '&lt;S78&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/D Gain'</span></td></tr>
+<tr name="321" id="321">
+<td><a id="l321" class='ln'>321</a></td><td><span class="ct"> * '&lt;S79&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Filter'</span></td></tr>
+<tr name="322" id="322">
+<td><a id="l322" class='ln'>322</a></td><td><span class="ct"> * '&lt;S80&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Filter ICs'</span></td></tr>
+<tr name="323" id="323">
+<td><a id="l323" class='ln'>323</a></td><td><span class="ct"> * '&lt;S81&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/I Gain'</span></td></tr>
+<tr name="324" id="324">
+<td><a id="l324" class='ln'>324</a></td><td><span class="ct"> * '&lt;S82&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Ideal P Gain'</span></td></tr>
+<tr name="325" id="325">
+<td><a id="l325" class='ln'>325</a></td><td><span class="ct"> * '&lt;S83&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Ideal P Gain Fdbk'</span></td></tr>
+<tr name="326" id="326">
+<td><a id="l326" class='ln'>326</a></td><td><span class="ct"> * '&lt;S84&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Integrator'</span></td></tr>
+<tr name="327" id="327">
+<td><a id="l327" class='ln'>327</a></td><td><span class="ct"> * '&lt;S85&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Integrator ICs'</span></td></tr>
+<tr name="328" id="328">
+<td><a id="l328" class='ln'>328</a></td><td><span class="ct"> * '&lt;S86&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/N Copy'</span></td></tr>
+<tr name="329" id="329">
+<td><a id="l329" class='ln'>329</a></td><td><span class="ct"> * '&lt;S87&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/N Gain'</span></td></tr>
+<tr name="330" id="330">
+<td><a id="l330" class='ln'>330</a></td><td><span class="ct"> * '&lt;S88&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/P Copy'</span></td></tr>
+<tr name="331" id="331">
+<td><a id="l331" class='ln'>331</a></td><td><span class="ct"> * '&lt;S89&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Parallel P Gain'</span></td></tr>
+<tr name="332" id="332">
+<td><a id="l332" class='ln'>332</a></td><td><span class="ct"> * '&lt;S90&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Reset Signal'</span></td></tr>
+<tr name="333" id="333">
+<td><a id="l333" class='ln'>333</a></td><td><span class="ct"> * '&lt;S91&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Saturation'</span></td></tr>
+<tr name="334" id="334">
+<td><a id="l334" class='ln'>334</a></td><td><span class="ct"> * '&lt;S92&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Saturation Fdbk'</span></td></tr>
+<tr name="335" id="335">
+<td><a id="l335" class='ln'>335</a></td><td><span class="ct"> * '&lt;S93&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Sum'</span></td></tr>
+<tr name="336" id="336">
+<td><a id="l336" class='ln'>336</a></td><td><span class="ct"> * '&lt;S94&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Sum Fdbk'</span></td></tr>
+<tr name="337" id="337">
+<td><a id="l337" class='ln'>337</a></td><td><span class="ct"> * '&lt;S95&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tracking Mode'</span></td></tr>
+<tr name="338" id="338">
+<td><a id="l338" class='ln'>338</a></td><td><span class="ct"> * '&lt;S96&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tracking Mode Sum'</span></td></tr>
+<tr name="339" id="339">
+<td><a id="l339" class='ln'>339</a></td><td><span class="ct"> * '&lt;S97&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tsamp - Integral'</span></td></tr>
+<tr name="340" id="340">
+<td><a id="l340" class='ln'>340</a></td><td><span class="ct"> * '&lt;S98&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tsamp - Ngain'</span></td></tr>
+<tr name="341" id="341">
+<td><a id="l341" class='ln'>341</a></td><td><span class="ct"> * '&lt;S99&gt;'  : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/postSat Signal'</span></td></tr>
+<tr name="342" id="342">
+<td><a id="l342" class='ln'>342</a></td><td><span class="ct"> * '&lt;S100&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/preSat Signal'</span></td></tr>
+<tr name="343" id="343">
+<td><a id="l343" class='ln'>343</a></td><td><span class="ct"> * '&lt;S101&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Anti-windup/Disc. Clamping Parallel'</span></td></tr>
+<tr name="344" id="344">
+<td><a id="l344" class='ln'>344</a></td><td><span class="ct"> * '&lt;S102&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Anti-windup/Disc. Clamping Parallel/Dead Zone'</span></td></tr>
+<tr name="345" id="345">
+<td><a id="l345" class='ln'>345</a></td><td><span class="ct"> * '&lt;S103&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Anti-windup/Disc. Clamping Parallel/Dead Zone/Enabled'</span></td></tr>
+<tr name="346" id="346">
+<td><a id="l346" class='ln'>346</a></td><td><span class="ct"> * '&lt;S104&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/D Gain/Disabled'</span></td></tr>
+<tr name="347" id="347">
+<td><a id="l347" class='ln'>347</a></td><td><span class="ct"> * '&lt;S105&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Filter/Disabled'</span></td></tr>
+<tr name="348" id="348">
+<td><a id="l348" class='ln'>348</a></td><td><span class="ct"> * '&lt;S106&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Filter ICs/Disabled'</span></td></tr>
+<tr name="349" id="349">
+<td><a id="l349" class='ln'>349</a></td><td><span class="ct"> * '&lt;S107&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/I Gain/Internal Parameters'</span></td></tr>
+<tr name="350" id="350">
+<td><a id="l350" class='ln'>350</a></td><td><span class="ct"> * '&lt;S108&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Ideal P Gain/Passthrough'</span></td></tr>
+<tr name="351" id="351">
+<td><a id="l351" class='ln'>351</a></td><td><span class="ct"> * '&lt;S109&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Ideal P Gain Fdbk/Disabled'</span></td></tr>
+<tr name="352" id="352">
+<td><a id="l352" class='ln'>352</a></td><td><span class="ct"> * '&lt;S110&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Integrator/Discrete'</span></td></tr>
+<tr name="353" id="353">
+<td><a id="l353" class='ln'>353</a></td><td><span class="ct"> * '&lt;S111&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Integrator ICs/Internal IC'</span></td></tr>
+<tr name="354" id="354">
+<td><a id="l354" class='ln'>354</a></td><td><span class="ct"> * '&lt;S112&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/N Copy/Disabled wSignal Specification'</span></td></tr>
+<tr name="355" id="355">
+<td><a id="l355" class='ln'>355</a></td><td><span class="ct"> * '&lt;S113&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/N Gain/Disabled'</span></td></tr>
+<tr name="356" id="356">
+<td><a id="l356" class='ln'>356</a></td><td><span class="ct"> * '&lt;S114&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/P Copy/Disabled'</span></td></tr>
+<tr name="357" id="357">
+<td><a id="l357" class='ln'>357</a></td><td><span class="ct"> * '&lt;S115&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Parallel P Gain/Internal Parameters'</span></td></tr>
+<tr name="358" id="358">
+<td><a id="l358" class='ln'>358</a></td><td><span class="ct"> * '&lt;S116&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Reset Signal/Disabled'</span></td></tr>
+<tr name="359" id="359">
+<td><a id="l359" class='ln'>359</a></td><td><span class="ct"> * '&lt;S117&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Saturation/Enabled'</span></td></tr>
+<tr name="360" id="360">
+<td><a id="l360" class='ln'>360</a></td><td><span class="ct"> * '&lt;S118&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Saturation Fdbk/Disabled'</span></td></tr>
+<tr name="361" id="361">
+<td><a id="l361" class='ln'>361</a></td><td><span class="ct"> * '&lt;S119&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Sum/Sum_PI'</span></td></tr>
+<tr name="362" id="362">
+<td><a id="l362" class='ln'>362</a></td><td><span class="ct"> * '&lt;S120&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Sum Fdbk/Disabled'</span></td></tr>
+<tr name="363" id="363">
+<td><a id="l363" class='ln'>363</a></td><td><span class="ct"> * '&lt;S121&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tracking Mode/Disabled'</span></td></tr>
+<tr name="364" id="364">
+<td><a id="l364" class='ln'>364</a></td><td><span class="ct"> * '&lt;S122&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tracking Mode Sum/Passthrough'</span></td></tr>
+<tr name="365" id="365">
+<td><a id="l365" class='ln'>365</a></td><td><span class="ct"> * '&lt;S123&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tsamp - Integral/Passthrough'</span></td></tr>
+<tr name="366" id="366">
+<td><a id="l366" class='ln'>366</a></td><td><span class="ct"> * '&lt;S124&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/Tsamp - Ngain/Passthrough'</span></td></tr>
+<tr name="367" id="367">
+<td><a id="l367" class='ln'>367</a></td><td><span class="ct"> * '&lt;S125&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/postSat Signal/Forward_Path'</span></td></tr>
+<tr name="368" id="368">
+<td><a id="l368" class='ln'>368</a></td><td><span class="ct"> * '&lt;S126&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Iq/preSat Signal/Forward_Path'</span></td></tr>
+<tr name="369" id="369">
+<td><a id="l369" class='ln'>369</a></td><td><span class="ct"> * '&lt;S127&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Anti-windup'</span></td></tr>
+<tr name="370" id="370">
+<td><a id="l370" class='ln'>370</a></td><td><span class="ct"> * '&lt;S128&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/D Gain'</span></td></tr>
+<tr name="371" id="371">
+<td><a id="l371" class='ln'>371</a></td><td><span class="ct"> * '&lt;S129&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Filter'</span></td></tr>
+<tr name="372" id="372">
+<td><a id="l372" class='ln'>372</a></td><td><span class="ct"> * '&lt;S130&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Filter ICs'</span></td></tr>
+<tr name="373" id="373">
+<td><a id="l373" class='ln'>373</a></td><td><span class="ct"> * '&lt;S131&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/I Gain'</span></td></tr>
+<tr name="374" id="374">
+<td><a id="l374" class='ln'>374</a></td><td><span class="ct"> * '&lt;S132&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Ideal P Gain'</span></td></tr>
+<tr name="375" id="375">
+<td><a id="l375" class='ln'>375</a></td><td><span class="ct"> * '&lt;S133&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Ideal P Gain Fdbk'</span></td></tr>
+<tr name="376" id="376">
+<td><a id="l376" class='ln'>376</a></td><td><span class="ct"> * '&lt;S134&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Integrator'</span></td></tr>
+<tr name="377" id="377">
+<td><a id="l377" class='ln'>377</a></td><td><span class="ct"> * '&lt;S135&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Integrator ICs'</span></td></tr>
+<tr name="378" id="378">
+<td><a id="l378" class='ln'>378</a></td><td><span class="ct"> * '&lt;S136&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/N Copy'</span></td></tr>
+<tr name="379" id="379">
+<td><a id="l379" class='ln'>379</a></td><td><span class="ct"> * '&lt;S137&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/N Gain'</span></td></tr>
+<tr name="380" id="380">
+<td><a id="l380" class='ln'>380</a></td><td><span class="ct"> * '&lt;S138&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/P Copy'</span></td></tr>
+<tr name="381" id="381">
+<td><a id="l381" class='ln'>381</a></td><td><span class="ct"> * '&lt;S139&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Parallel P Gain'</span></td></tr>
+<tr name="382" id="382">
+<td><a id="l382" class='ln'>382</a></td><td><span class="ct"> * '&lt;S140&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Reset Signal'</span></td></tr>
+<tr name="383" id="383">
+<td><a id="l383" class='ln'>383</a></td><td><span class="ct"> * '&lt;S141&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Saturation'</span></td></tr>
+<tr name="384" id="384">
+<td><a id="l384" class='ln'>384</a></td><td><span class="ct"> * '&lt;S142&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Saturation Fdbk'</span></td></tr>
+<tr name="385" id="385">
+<td><a id="l385" class='ln'>385</a></td><td><span class="ct"> * '&lt;S143&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Sum'</span></td></tr>
+<tr name="386" id="386">
+<td><a id="l386" class='ln'>386</a></td><td><span class="ct"> * '&lt;S144&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Sum Fdbk'</span></td></tr>
+<tr name="387" id="387">
+<td><a id="l387" class='ln'>387</a></td><td><span class="ct"> * '&lt;S145&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tracking Mode'</span></td></tr>
+<tr name="388" id="388">
+<td><a id="l388" class='ln'>388</a></td><td><span class="ct"> * '&lt;S146&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tracking Mode Sum'</span></td></tr>
+<tr name="389" id="389">
+<td><a id="l389" class='ln'>389</a></td><td><span class="ct"> * '&lt;S147&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tsamp - Integral'</span></td></tr>
+<tr name="390" id="390">
+<td><a id="l390" class='ln'>390</a></td><td><span class="ct"> * '&lt;S148&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tsamp - Ngain'</span></td></tr>
+<tr name="391" id="391">
+<td><a id="l391" class='ln'>391</a></td><td><span class="ct"> * '&lt;S149&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/postSat Signal'</span></td></tr>
+<tr name="392" id="392">
+<td><a id="l392" class='ln'>392</a></td><td><span class="ct"> * '&lt;S150&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/preSat Signal'</span></td></tr>
+<tr name="393" id="393">
+<td><a id="l393" class='ln'>393</a></td><td><span class="ct"> * '&lt;S151&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Anti-windup/Disc. Clamping Parallel'</span></td></tr>
+<tr name="394" id="394">
+<td><a id="l394" class='ln'>394</a></td><td><span class="ct"> * '&lt;S152&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Anti-windup/Disc. Clamping Parallel/Dead Zone'</span></td></tr>
+<tr name="395" id="395">
+<td><a id="l395" class='ln'>395</a></td><td><span class="ct"> * '&lt;S153&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Anti-windup/Disc. Clamping Parallel/Dead Zone/Enabled'</span></td></tr>
+<tr name="396" id="396">
+<td><a id="l396" class='ln'>396</a></td><td><span class="ct"> * '&lt;S154&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/D Gain/Disabled'</span></td></tr>
+<tr name="397" id="397">
+<td><a id="l397" class='ln'>397</a></td><td><span class="ct"> * '&lt;S155&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Filter/Disabled'</span></td></tr>
+<tr name="398" id="398">
+<td><a id="l398" class='ln'>398</a></td><td><span class="ct"> * '&lt;S156&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Filter ICs/Disabled'</span></td></tr>
+<tr name="399" id="399">
+<td><a id="l399" class='ln'>399</a></td><td><span class="ct"> * '&lt;S157&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/I Gain/Internal Parameters'</span></td></tr>
+<tr name="400" id="400">
+<td><a id="l400" class='ln'>400</a></td><td><span class="ct"> * '&lt;S158&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Ideal P Gain/Passthrough'</span></td></tr>
+<tr name="401" id="401">
+<td><a id="l401" class='ln'>401</a></td><td><span class="ct"> * '&lt;S159&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Ideal P Gain Fdbk/Disabled'</span></td></tr>
+<tr name="402" id="402">
+<td><a id="l402" class='ln'>402</a></td><td><span class="ct"> * '&lt;S160&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Integrator/Discrete'</span></td></tr>
+<tr name="403" id="403">
+<td><a id="l403" class='ln'>403</a></td><td><span class="ct"> * '&lt;S161&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Integrator ICs/Internal IC'</span></td></tr>
+<tr name="404" id="404">
+<td><a id="l404" class='ln'>404</a></td><td><span class="ct"> * '&lt;S162&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/N Copy/Disabled wSignal Specification'</span></td></tr>
+<tr name="405" id="405">
+<td><a id="l405" class='ln'>405</a></td><td><span class="ct"> * '&lt;S163&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/N Gain/Disabled'</span></td></tr>
+<tr name="406" id="406">
+<td><a id="l406" class='ln'>406</a></td><td><span class="ct"> * '&lt;S164&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/P Copy/Disabled'</span></td></tr>
+<tr name="407" id="407">
+<td><a id="l407" class='ln'>407</a></td><td><span class="ct"> * '&lt;S165&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Parallel P Gain/Internal Parameters'</span></td></tr>
+<tr name="408" id="408">
+<td><a id="l408" class='ln'>408</a></td><td><span class="ct"> * '&lt;S166&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Reset Signal/Disabled'</span></td></tr>
+<tr name="409" id="409">
+<td><a id="l409" class='ln'>409</a></td><td><span class="ct"> * '&lt;S167&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Saturation/Enabled'</span></td></tr>
+<tr name="410" id="410">
+<td><a id="l410" class='ln'>410</a></td><td><span class="ct"> * '&lt;S168&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Saturation Fdbk/Disabled'</span></td></tr>
+<tr name="411" id="411">
+<td><a id="l411" class='ln'>411</a></td><td><span class="ct"> * '&lt;S169&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Sum/Sum_PI'</span></td></tr>
+<tr name="412" id="412">
+<td><a id="l412" class='ln'>412</a></td><td><span class="ct"> * '&lt;S170&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Sum Fdbk/Disabled'</span></td></tr>
+<tr name="413" id="413">
+<td><a id="l413" class='ln'>413</a></td><td><span class="ct"> * '&lt;S171&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tracking Mode/Disabled'</span></td></tr>
+<tr name="414" id="414">
+<td><a id="l414" class='ln'>414</a></td><td><span class="ct"> * '&lt;S172&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tracking Mode Sum/Passthrough'</span></td></tr>
+<tr name="415" id="415">
+<td><a id="l415" class='ln'>415</a></td><td><span class="ct"> * '&lt;S173&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tsamp - Integral/Passthrough'</span></td></tr>
+<tr name="416" id="416">
+<td><a id="l416" class='ln'>416</a></td><td><span class="ct"> * '&lt;S174&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/Tsamp - Ngain/Passthrough'</span></td></tr>
+<tr name="417" id="417">
+<td><a id="l417" class='ln'>417</a></td><td><span class="ct"> * '&lt;S175&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/postSat Signal/Forward_Path'</span></td></tr>
+<tr name="418" id="418">
+<td><a id="l418" class='ln'>418</a></td><td><span class="ct"> * '&lt;S176&gt;' : 'MotorController_FOC/PMSM_Controller/controller/FOC/PI_Speed/preSat Signal/Forward_Path'</span></td></tr>
+<tr name="419" id="419">
+<td><a id="l419" class='ln'>419</a></td><td><span class="ct"> * '&lt;S177&gt;' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM'</span></td></tr>
+<tr name="420" id="420">
+<td><a id="l420" class='ln'>420</a></td><td><span class="ct"> * '&lt;S178&gt;' : 'MotorController_FOC/PMSM_Controller/controller/SVM/Sample_Control'</span></td></tr>
+<tr name="421" id="421">
+<td><a id="l421" class='ln'>421</a></td><td><span class="ct"> * '&lt;S179&gt;' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM/phase_time'</span></td></tr>
+<tr name="422" id="422">
+<td><a id="l422" class='ln'>422</a></td><td><span class="ct"> * '&lt;S180&gt;' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM/sector_select'</span></td></tr>
+<tr name="423" id="423">
+<td><a id="l423" class='ln'>423</a></td><td><span class="ct"> * '&lt;S181&gt;' : 'MotorController_FOC/PMSM_Controller/controller/SVM/Sample_Control/Shunt_Three_Sample_Point'</span></td></tr>
+<tr name="424" id="424">
+<td><a id="l424" class='ln'>424</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="425" id="425">
+<td><a id="l425" class='ln'>425</a></td><td><span class="pp">#endif</span>                                 <span class="ct">/* RTW_HEADER_PMSM_Controller_h_ */</span></td></tr>
+<tr name="426" id="426">
+<td><a id="l426" class='ln'>426</a></td><td></td></tr>
+<tr name="427" id="427">
+<td><a id="l427" class='ln'>427</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="428" id="428">
+<td><a id="l428" class='ln'>428</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="429" id="429">
+<td><a id="l429" class='ln'>429</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="430" id="430">
+<td><a id="l430" class='ln'>430</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="431" id="431">
+<td><a id="l431" class='ln'>431</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="432" id="432">
+<td><a id="l432" class='ln'>432</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

+ 878 - 0
Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_interface.html

@@ -0,0 +1,878 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" href="rtwreport.css" /><script language="JavaScript" type="text/javascript">function rtwTableShrink(o) {var t = o.nextSibling;if (t.nodeType != 1) {t = t.nextSibling;}if (t.style.display == "none") {t.style.display = "";o.innerHTML = "[-]"} else {t.style.display = "none";o.innerHTML = "[+] ... "}}</script><script language="JavaScript" type="text/javascript" src="rtwreport_utils.js"></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>
+Code Interface Report for PMSM_Controller
+</title>
+
+</head>
+<body ONLOAD="try {if (top) {if (top.rtwPageOnLoad) top.rtwPageOnLoad('rtwIdCodeInterface'); else local_onload();}} catch(err) {};">
+<h1>
+Code Interface Report for PMSM_Controller
+</h1>
+<h3>
+Table of Contents
+</h3>
+<ul>
+<li>
+<a href="#sec_Entry-Point_Functions">
+Entry-Point Functions
+</a>
+
+</li>
+<li>
+<a href="#sec_Inports">
+Inports
+</a>
+
+</li>
+<li>
+<a href="#sec_Outports">
+Outports
+</a>
+
+</li>
+<li>
+<a href="#sec_Interface_Parameters">
+Interface Parameters
+</a>
+
+</li>
+<li>
+<a href="#sec_Data_Stores">
+Data Stores
+</a>
+
+</li>
+
+</ul>
+<h3>
+<a name="sec_Entry-Point_Functions">
+Entry-Point Functions
+</a>
+
+</h3>
+<p>
+Function: <a href="PMSM_Controller_c.html#fcn_PMSM_Controller_initialize">PMSM_Controller_initialize</a>
+</p>
+<table width="100%" class="AltRow" cellspacing="0">
+<tr class="even">
+<td width="25%" align="left" valign="top">
+Prototype
+</td>
+<td width="75%" align="left" valign="top">
+<b>
+void PMSM_Controller_initialize(RT_MODEL&nbsp;*const&nbsp;rtM)
+</b>
+
+</td>
+
+</tr>
+<tr class="odd">
+<td width="25%" align="left" valign="top">
+Description
+</td>
+<td width="75%" align="left" valign="top">
+Initialization entry point of generated code
+</td>
+
+</tr>
+<tr class="even">
+<td width="25%" align="left" valign="top">
+Timing
+</td>
+<td width="75%" align="left" valign="top">
+Must be called exactly once
+</td>
+
+</tr>
+<tr class="odd">
+<td width="25%" align="left" valign="top">
+Arguments
+</td>
+<td width="75%" align="left" valign="top">
+<table class="AltRow FirstColumn" cellspacing="0">
+<tr class="heading">
+<th align="left" valign="top">
+<b>
+#
+</b>
+
+</th>
+<th align="left" valign="top">
+<b>
+Name
+</b>
+
+</th>
+<th align="left" valign="top">
+<b>
+Data Type
+</b>
+
+</th>
+<th align="left" valign="top">
+<b>
+Description
+</b>
+
+</th>
+
+</tr>
+<tr class="even">
+<td align="right" valign="top">
+1
+</td>
+<td align="left" valign="top">
+rtM
+</td>
+<td align="left" valign="top">
+RT_MODEL&nbsp;*const
+</td>
+<td align="left" valign="top">
+RTModel
+</td>
+
+</tr>
+
+</table>
+
+</td>
+
+</tr>
+<tr class="even">
+<td width="25%" align="left" valign="top">
+Return value
+</td>
+<td width="75%" align="left" valign="top">
+None
+</td>
+
+</tr>
+<tr class="odd">
+<td width="25%" align="left" valign="top">
+Header file
+</td>
+<td width="75%" align="left" valign="top">
+<a href="PMSM_Controller_h.html">PMSM_Controller.h</a>
+</td>
+
+</tr>
+
+</table>
+<p>
+Function: <a href="PMSM_Controller_c.html#fcn_PMSM_Controller_step">PMSM_Controller_step</a>
+</p>
+<table width="100%" class="AltRow" cellspacing="0">
+<tr class="even">
+<td width="25%" align="left" valign="top">
+Prototype
+</td>
+<td width="75%" align="left" valign="top">
+<b>
+void PMSM_Controller_step(RT_MODEL&nbsp;*const&nbsp;rtM, int16_T rtU_Vdc, uint16_T rtU_Ts, int16_T rtU_adc_a, int16_T rtU_adc_b, real_T rtU_rotor_angle, int16_T rtU_rotor_speed, int16_T rtU_input_target, uint16_T rtY_pwm_counts[8], uint8_T&nbsp;*rtY_sector)
+</b>
+
+</td>
+
+</tr>
+<tr class="odd">
+<td width="25%" align="left" valign="top">
+Description
+</td>
+<td width="75%" align="left" valign="top">
+Output entry point of generated code
+</td>
+
+</tr>
+<tr class="even">
+<td width="25%" align="left" valign="top">
+Timing
+</td>
+<td width="75%" align="left" valign="top">
+Must be called periodically, every 6.2e-06 seconds
+</td>
+
+</tr>
+<tr class="odd">
+<td width="25%" align="left" valign="top">
+Arguments
+</td>
+<td width="75%" align="left" valign="top">
+<span title="Click to shrink or expand table" onclick="rtwTableShrink(this)">[-]</span><table class="AltRow FirstColumn" cellspacing="0">
+<tr class="heading">
+<th align="left" valign="top">
+<b>
+#
+</b>
+
+</th>
+<th align="left" valign="top">
+<b>
+Name
+</b>
+
+</th>
+<th align="left" valign="top">
+<b>
+Data Type
+</b>
+
+</th>
+<th align="left" valign="top">
+<b>
+Scaling
+</b>
+
+</th>
+<th align="left" valign="top">
+<b>
+Description
+</b>
+
+</th>
+
+</tr>
+<tr class="even">
+<td align="right" valign="top">
+1
+</td>
+<td align="left" valign="top">
+rtM
+</td>
+<td align="left" valign="top">
+RT_MODEL&nbsp;*const
+</td>
+<td align="left" valign="top">
+&#160;
+</td>
+<td align="left" valign="top">
+RTModel
+</td>
+
+</tr>
+<tr class="odd">
+<td align="right" valign="top">
+2
+</td>
+<td align="left" valign="top">
+rtU_Vdc
+</td>
+<td align="left" valign="top">
+int16_T
+</td>
+<td align="left" valign="top">
+<span title="  DataTypeMode: Fixed-point: binary point scaling
+    Signedness: Signed
+    WordLength: 16
+FractionLength: 4
+">sfix16_En4</span>
+</td>
+<td align="left" valign="top">
+&lt;S4&gt;/Vdc
+</td>
+
+</tr>
+<tr class="even">
+<td align="right" valign="top">
+3
+</td>
+<td align="left" valign="top">
+rtU_Ts
+</td>
+<td align="left" valign="top">
+uint16_T
+</td>
+<td align="left" valign="top">
+&#160;
+</td>
+<td align="left" valign="top">
+&lt;S4&gt;/Ts
+</td>
+
+</tr>
+<tr class="odd">
+<td align="right" valign="top">
+4
+</td>
+<td align="left" valign="top">
+rtU_adc_a
+</td>
+<td align="left" valign="top">
+int16_T
+</td>
+<td align="left" valign="top">
+&#160;
+</td>
+<td align="left" valign="top">
+&lt;S4&gt;/adc_a
+</td>
+
+</tr>
+<tr class="even">
+<td align="right" valign="top">
+5
+</td>
+<td align="left" valign="top">
+rtU_adc_b
+</td>
+<td align="left" valign="top">
+int16_T
+</td>
+<td align="left" valign="top">
+&#160;
+</td>
+<td align="left" valign="top">
+&lt;S4&gt;/adc_b
+</td>
+
+</tr>
+<tr class="odd">
+<td align="right" valign="top">
+6
+</td>
+<td align="left" valign="top">
+rtU_rotor_angle
+</td>
+<td align="left" valign="top">
+real_T
+</td>
+<td align="left" valign="top">
+&#160;
+</td>
+<td align="left" valign="top">
+&lt;S4&gt;/rotor_angle
+</td>
+
+</tr>
+<tr class="even">
+<td align="right" valign="top">
+7
+</td>
+<td align="left" valign="top">
+rtU_rotor_speed
+</td>
+<td align="left" valign="top">
+int16_T
+</td>
+<td align="left" valign="top">
+&#160;
+</td>
+<td align="left" valign="top">
+&lt;S4&gt;/rotor_speed
+</td>
+
+</tr>
+<tr class="odd">
+<td align="right" valign="top">
+8
+</td>
+<td align="left" valign="top">
+rtU_input_target
+</td>
+<td align="left" valign="top">
+int16_T
+</td>
+<td align="left" valign="top">
+&#160;
+</td>
+<td align="left" valign="top">
+&lt;S4&gt;/input_target
+</td>
+
+</tr>
+<tr class="even">
+<td align="right" valign="top">
+9
+</td>
+<td align="left" valign="top">
+rtY_pwm_counts
+</td>
+<td align="left" valign="top">
+uint16_T
+</td>
+<td align="left" valign="top">
+&#160;
+</td>
+<td align="left" valign="top">
+&lt;S4&gt;/pwm_counts
+</td>
+
+</tr>
+<tr class="odd">
+<td align="right" valign="top">
+10
+</td>
+<td align="left" valign="top">
+rtY_sector
+</td>
+<td align="left" valign="top">
+uint8_T&nbsp;*
+</td>
+<td align="left" valign="top">
+&#160;
+</td>
+<td align="left" valign="top">
+&lt;S4&gt;/sector
+</td>
+
+</tr>
+
+</table>
+
+</td>
+
+</tr>
+<tr class="even">
+<td width="25%" align="left" valign="top">
+Return value
+</td>
+<td width="75%" align="left" valign="top">
+None
+</td>
+
+</tr>
+<tr class="odd">
+<td width="25%" align="left" valign="top">
+Header file
+</td>
+<td width="75%" align="left" valign="top">
+<a href="PMSM_Controller_h.html">PMSM_Controller.h</a>
+</td>
+
+</tr>
+
+</table>
+<h3>
+<a name="sec_Inports">
+Inports
+</a>
+
+</h3>
+<span title="Click to shrink or expand table" onclick="rtwTableShrink(this)">[-]</span><table width="100%" class="AltRow FirstColumn" cellspacing="0">
+<tr class="heading">
+<th width="38%" align="left" valign="top">
+<b>
+Block Name
+</b>
+
+</th>
+<th width="23%" align="left" valign="top">
+<b>
+Code Identifier
+</b>
+
+</th>
+<th width="19%" align="left" valign="top">
+<b>
+Data Type
+</b>
+
+</th>
+<th width="9%" align="left" valign="top">
+<b>
+Scaling
+</b>
+
+</th>
+<th width="9%" align="right" valign="top">
+<b>
+Dimension
+</b>
+
+</th>
+
+</tr>
+<tr class="even">
+<td width="38%" align="left" valign="top">
+&lt;S4&gt;/Vdc
+</td>
+<td width="23%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="19%" align="left" valign="top">
+int16_T
+</td>
+<td width="9%" align="left" valign="top">
+<span title="  DataTypeMode: Fixed-point: binary point scaling
+    Signedness: Signed
+    WordLength: 16
+FractionLength: 4
+">sfix16_En4</span>
+</td>
+<td width="9%" align="right" valign="top">
+1
+</td>
+
+</tr>
+<tr class="odd">
+<td width="38%" align="left" valign="top">
+&lt;S4&gt;/Ts
+</td>
+<td width="23%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="19%" align="left" valign="top">
+uint16_T
+</td>
+<td width="9%" align="left" valign="top">
+&#160;
+</td>
+<td width="9%" align="right" valign="top">
+1
+</td>
+
+</tr>
+<tr class="even">
+<td width="38%" align="left" valign="top">
+&lt;S4&gt;/adc_a
+</td>
+<td width="23%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="19%" align="left" valign="top">
+int16_T
+</td>
+<td width="9%" align="left" valign="top">
+&#160;
+</td>
+<td width="9%" align="right" valign="top">
+1
+</td>
+
+</tr>
+<tr class="odd">
+<td width="38%" align="left" valign="top">
+&lt;S4&gt;/adc_b
+</td>
+<td width="23%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="19%" align="left" valign="top">
+int16_T
+</td>
+<td width="9%" align="left" valign="top">
+&#160;
+</td>
+<td width="9%" align="right" valign="top">
+1
+</td>
+
+</tr>
+<tr class="even">
+<td width="38%" align="left" valign="top">
+&lt;S4&gt;/rotor_angle
+</td>
+<td width="23%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="19%" align="left" valign="top">
+real_T
+</td>
+<td width="9%" align="left" valign="top">
+&#160;
+</td>
+<td width="9%" align="right" valign="top">
+1
+</td>
+
+</tr>
+<tr class="odd">
+<td width="38%" align="left" valign="top">
+&lt;S4&gt;/rotor_speed
+</td>
+<td width="23%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="19%" align="left" valign="top">
+int16_T
+</td>
+<td width="9%" align="left" valign="top">
+&#160;
+</td>
+<td width="9%" align="right" valign="top">
+1
+</td>
+
+</tr>
+<tr class="even">
+<td width="38%" align="left" valign="top">
+&lt;S4&gt;/input_target
+</td>
+<td width="23%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="19%" align="left" valign="top">
+int16_T
+</td>
+<td width="9%" align="left" valign="top">
+&#160;
+</td>
+<td width="9%" align="right" valign="top">
+1
+</td>
+
+</tr>
+<tr class="odd">
+<td width="38%" align="left" valign="top">
+&lt;S4&gt;/hall_a
+</td>
+<td width="23%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="19%" align="left" valign="top">
+uint8_T
+</td>
+<td width="9%" align="left" valign="top">
+&#160;
+</td>
+<td width="9%" align="right" valign="top">
+1
+</td>
+
+</tr>
+<tr class="even">
+<td width="38%" align="left" valign="top">
+&lt;S4&gt;/hall_b
+</td>
+<td width="23%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="19%" align="left" valign="top">
+uint8_T
+</td>
+<td width="9%" align="left" valign="top">
+&#160;
+</td>
+<td width="9%" align="right" valign="top">
+1
+</td>
+
+</tr>
+<tr class="odd">
+<td width="38%" align="left" valign="top">
+&lt;S4&gt;/hall_c
+</td>
+<td width="23%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="19%" align="left" valign="top">
+uint8_T
+</td>
+<td width="9%" align="left" valign="top">
+&#160;
+</td>
+<td width="9%" align="right" valign="top">
+1
+</td>
+
+</tr>
+<tr class="even">
+<td width="38%" align="left" valign="top">
+&lt;S4&gt;/hw_count
+</td>
+<td width="23%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="19%" align="left" valign="top">
+uint32_T
+</td>
+<td width="9%" align="left" valign="top">
+&#160;
+</td>
+<td width="9%" align="right" valign="top">
+1
+</td>
+
+</tr>
+<tr class="odd">
+<td width="38%" align="left" valign="top">
+&lt;S4&gt;/b_motor_enable
+</td>
+<td width="23%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="19%" align="left" valign="top">
+boolean_T
+</td>
+<td width="9%" align="left" valign="top">
+&#160;
+</td>
+<td width="9%" align="right" valign="top">
+1
+</td>
+
+</tr>
+<tr class="even">
+<td width="38%" align="left" valign="top">
+&lt;S4&gt;/b_cruise_enable
+</td>
+<td width="23%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="19%" align="left" valign="top">
+boolean_T
+</td>
+<td width="9%" align="left" valign="top">
+&#160;
+</td>
+<td width="9%" align="right" valign="top">
+1
+</td>
+
+</tr>
+<tr class="odd">
+<td width="38%" align="left" valign="top">
+&lt;S4&gt;/n_ctrl_type
+</td>
+<td width="23%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="19%" align="left" valign="top">
+uint8_T
+</td>
+<td width="9%" align="left" valign="top">
+&#160;
+</td>
+<td width="9%" align="right" valign="top">
+1
+</td>
+
+</tr>
+
+</table>
+<h3>
+<a name="sec_Outports">
+Outports
+</a>
+
+</h3>
+<table width="100%" class="AltRow FirstColumn" cellspacing="0">
+<tr class="heading">
+<th width="42%" align="left" valign="top">
+<b>
+Block Name
+</b>
+
+</th>
+<th width="26%" align="left" valign="top">
+<b>
+Code Identifier
+</b>
+
+</th>
+<th width="21%" align="left" valign="top">
+<b>
+Data Type
+</b>
+
+</th>
+<th width="10%" align="right" valign="top">
+<b>
+Dimension
+</b>
+
+</th>
+
+</tr>
+<tr class="even">
+<td width="42%" align="left" valign="top">
+&lt;S4&gt;/pwm_counts
+</td>
+<td width="26%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="21%" align="left" valign="top">
+uint16_T
+</td>
+<td width="10%" align="right" valign="top">
+[8]
+</td>
+
+</tr>
+<tr class="odd">
+<td width="42%" align="left" valign="top">
+&lt;S4&gt;/sector
+</td>
+<td width="26%" align="left" valign="top">
+<i>
+Defined externally
+</i>
+
+</td>
+<td width="21%" align="left" valign="top">
+uint8_T
+</td>
+<td width="10%" align="right" valign="top">
+1
+</td>
+
+</tr>
+
+</table>
+<h3>
+<a name="sec_Interface_Parameters">
+Interface Parameters
+</a>
+
+</h3>
+<p>
+No interface/tunable parameters in model.
+</p>
+<h3>
+<a name="sec_Data_Stores">
+Data Stores
+</a>
+
+</h3>
+<p>
+No data stores in the model; note that this report lists only data stores with non-auto storage class and global data stores
+</p>
+
+</body>
+
+</html>

+ 18 - 0
Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_metrics.html

@@ -0,0 +1,18 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" href="rtwreport.css" /><title>
+Static Code Metrics Report
+</title>
+
+</head>
+<body onload="try {if (top) {if (top.rtwPageOnLoad) top.rtwPageOnLoad('rtwIdCodeMetrics'); else local_onload();}} catch(err) {};">
+<h1>
+Static Code Metrics Report
+</h1>
+<div>
+
+</div>
+<img src="hilite_warning.png" />Static Code Metrics report is not generated. On the <b>Configuration Parameters &gt; Code Generation &gt; Report</b> pane, select <b>Generate static code metrics</b>.  On the model diagram window, select <b>Code &gt; C/C++ Code &gt; Code Generation Report &gt; Open Model Report</b> or rebuild the model.
+</body>
+
+</html>

+ 182 - 0
Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_private_h.html

@@ -0,0 +1,182 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: PMSM_Controller_private.h</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="pp">#ifndef</span> <a id="18c9" class="tk">RTW_HEADER_PMSM_Controller_private_h_</a></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td><span class="pp">#define</span> <a id="19c9" class="tk">RTW_HEADER_PMSM_Controller_private_h_</a></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td><span class="pp">#include "rtwtypes.h"</span></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="pp">#ifndef</span> <a id="21c9" class="tk">UCHAR_MAX</a></td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td><span class="pp">#include &lt;limits.h&gt;</span></td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td><span class="pp">#endif</span></td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td></td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td><span class="pp">#if</span> ( <a id="25c7" class="tk">UCHAR_MAX</a> <a id="25c17" class="tk">!=</a> (0xFFU) ) <a id="25c30" class="tk">||</a> ( <a id="25c35" class="tk">SCHAR_MAX</a> <a id="25c45" class="tk">!=</a> (0x7F) )</td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td><span class="pp">#error</span> <a id="26c8" class="tk">Code</a> <a id="26c13" class="tk">was</a> <a id="26c17" class="tk">generated</a> <span class="kw">for</span> <a id="26c31" class="tk">compiler</a> <a id="26c40" class="tk">with</a> <a id="26c45" class="tk">different</a> <a id="26c55" class="tk">sized</a> <a id="26c61" class="tk">uchar</a><a id="26c66" class="tk">/</a><span class="kw">char</span>. \</td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td><a id="27c73" class="tk">Consider</a> <a id="27c82" class="tk">adjusting</a> <a id="27c92" class="tk">Test</a> <a id="27c97" class="tk">hardware</a> <a id="27c106" class="tk">word</a> <a id="27c111" class="tk">size</a> <a id="27c116" class="tk">settings</a> <a id="27c125" class="tk">on</a> <a id="27c128" class="tk">the</a> \</td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td><a id="28c132" class="tk">Hardware</a> <a id="28c141" class="tk">Implementation</a> <a id="28c156" class="tk">pane</a> <a id="28c161" class="tk">to</a> <a id="28c164" class="tk">match</a> <a id="28c170" class="tk">your</a> <a id="28c175" class="tk">compiler</a> <a id="28c184" class="tk">word</a> <a id="28c189" class="tk">sizes</a> <a id="28c195" class="tk">as</a> \</td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td><a id="29c198" class="tk">defined</a> <a id="29c206" class="tk">in</a> <a id="29c209" class="tk">limits</a>.<a id="29c216" class="tk">h</a> <a id="29c218" class="tk">of</a> <a id="29c221" class="tk">the</a> <a id="29c225" class="tk">compiler</a>. <a id="29c235" class="tk">Alternatively</a>, <a id="29c250" class="tk">you</a> <a id="29c254" class="tk">can</a> \</td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td><a id="30c258" class="tk">select</a> <a id="30c265" class="tk">the</a> <a id="30c269" class="tk">Test</a> <a id="30c274" class="tk">hardware</a> <a id="30c283" class="tk">is</a> <a id="30c286" class="tk">the</a> <a id="30c290" class="tk">same</a> <a id="30c295" class="tk">as</a> <a id="30c298" class="tk">production</a> <a id="30c309" class="tk">hardware</a> <a id="30c318" class="tk">option</a> <a id="30c325" class="tk">and</a> \</td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td><a id="31c329" class="tk">select</a> <a id="31c336" class="tk">the</a> <a id="31c340" class="tk">Enable</a> <a id="31c347" class="tk">portable</a> <a id="31c356" class="tk">word</a> <a id="31c361" class="tk">sizes</a> <a id="31c367" class="tk">option</a> <a id="31c374" class="tk">on</a> <a id="31c377" class="tk">the</a> <a id="31c381" class="tk">Code</a> <a id="31c386" class="tk">Generation</a> <a id="31c397" class="tk">&gt;</a> \</td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td><a id="32c399" class="tk">Verification</a> <a id="32c412" class="tk">pane</a> <span class="kw">for</span> <a id="32c421" class="tk">ERT</a> <a id="32c425" class="tk">based</a> <a id="32c431" class="tk">targets</a>, <a id="32c440" class="tk">which</a> <a id="32c446" class="tk">will</a> <a id="32c451" class="tk">disable</a> <a id="32c459" class="tk">the</a> \</td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td><a id="33c463" class="tk">preprocessor</a> <a id="33c476" class="tk">word</a> <a id="33c481" class="tk">size</a> <a id="33c486" class="tk">checks</a>.</td></tr>
+<tr name="34" id="34">
+<td><a id="l34" class='ln'>34</a></td><td><span class="pp">#endif</span></td></tr>
+<tr name="35" id="35">
+<td><a id="l35" class='ln'>35</a></td><td></td></tr>
+<tr name="36" id="36">
+<td><a id="l36" class='ln'>36</a></td><td><span class="pp">#if</span> ( <a id="36c7" class="tk">USHRT_MAX</a> <a id="36c17" class="tk">!=</a> (0xFFFFU) ) <a id="36c32" class="tk">||</a> ( <a id="36c37" class="tk">SHRT_MAX</a> <a id="36c46" class="tk">!=</a> (0x7FFF) )</td></tr>
+<tr name="37" id="37">
+<td><a id="l37" class='ln'>37</a></td><td><span class="pp">#error</span> <a id="37c8" class="tk">Code</a> <a id="37c13" class="tk">was</a> <a id="37c17" class="tk">generated</a> <span class="kw">for</span> <a id="37c31" class="tk">compiler</a> <a id="37c40" class="tk">with</a> <a id="37c45" class="tk">different</a> <a id="37c55" class="tk">sized</a> <a id="37c61" class="tk">ushort</a><a id="37c67" class="tk">/</a><span class="kw">short</span>. \</td></tr>
+<tr name="38" id="38">
+<td><a id="l38" class='ln'>38</a></td><td><a id="38c75" class="tk">Consider</a> <a id="38c84" class="tk">adjusting</a> <a id="38c94" class="tk">Test</a> <a id="38c99" class="tk">hardware</a> <a id="38c108" class="tk">word</a> <a id="38c113" class="tk">size</a> <a id="38c118" class="tk">settings</a> <a id="38c127" class="tk">on</a> <a id="38c130" class="tk">the</a> \</td></tr>
+<tr name="39" id="39">
+<td><a id="l39" class='ln'>39</a></td><td><a id="39c134" class="tk">Hardware</a> <a id="39c143" class="tk">Implementation</a> <a id="39c158" class="tk">pane</a> <a id="39c163" class="tk">to</a> <a id="39c166" class="tk">match</a> <a id="39c172" class="tk">your</a> <a id="39c177" class="tk">compiler</a> <a id="39c186" class="tk">word</a> <a id="39c191" class="tk">sizes</a> <a id="39c197" class="tk">as</a> \</td></tr>
+<tr name="40" id="40">
+<td><a id="l40" class='ln'>40</a></td><td><a id="40c200" class="tk">defined</a> <a id="40c208" class="tk">in</a> <a id="40c211" class="tk">limits</a>.<a id="40c218" class="tk">h</a> <a id="40c220" class="tk">of</a> <a id="40c223" class="tk">the</a> <a id="40c227" class="tk">compiler</a>. <a id="40c237" class="tk">Alternatively</a>, <a id="40c252" class="tk">you</a> <a id="40c256" class="tk">can</a> \</td></tr>
+<tr name="41" id="41">
+<td><a id="l41" class='ln'>41</a></td><td><a id="41c260" class="tk">select</a> <a id="41c267" class="tk">the</a> <a id="41c271" class="tk">Test</a> <a id="41c276" class="tk">hardware</a> <a id="41c285" class="tk">is</a> <a id="41c288" class="tk">the</a> <a id="41c292" class="tk">same</a> <a id="41c297" class="tk">as</a> <a id="41c300" class="tk">production</a> <a id="41c311" class="tk">hardware</a> <a id="41c320" class="tk">option</a> <a id="41c327" class="tk">and</a> \</td></tr>
+<tr name="42" id="42">
+<td><a id="l42" class='ln'>42</a></td><td><a id="42c331" class="tk">select</a> <a id="42c338" class="tk">the</a> <a id="42c342" class="tk">Enable</a> <a id="42c349" class="tk">portable</a> <a id="42c358" class="tk">word</a> <a id="42c363" class="tk">sizes</a> <a id="42c369" class="tk">option</a> <a id="42c376" class="tk">on</a> <a id="42c379" class="tk">the</a> <a id="42c383" class="tk">Code</a> <a id="42c388" class="tk">Generation</a> <a id="42c399" class="tk">&gt;</a> \</td></tr>
+<tr name="43" id="43">
+<td><a id="l43" class='ln'>43</a></td><td><a id="43c401" class="tk">Verification</a> <a id="43c414" class="tk">pane</a> <span class="kw">for</span> <a id="43c423" class="tk">ERT</a> <a id="43c427" class="tk">based</a> <a id="43c433" class="tk">targets</a>, <a id="43c442" class="tk">which</a> <a id="43c448" class="tk">will</a> <a id="43c453" class="tk">disable</a> <a id="43c461" class="tk">the</a> \</td></tr>
+<tr name="44" id="44">
+<td><a id="l44" class='ln'>44</a></td><td><a id="44c465" class="tk">preprocessor</a> <a id="44c478" class="tk">word</a> <a id="44c483" class="tk">size</a> <a id="44c488" class="tk">checks</a>.</td></tr>
+<tr name="45" id="45">
+<td><a id="l45" class='ln'>45</a></td><td><span class="pp">#endif</span></td></tr>
+<tr name="46" id="46">
+<td><a id="l46" class='ln'>46</a></td><td></td></tr>
+<tr name="47" id="47">
+<td><a id="l47" class='ln'>47</a></td><td><span class="pp">#if</span> ( <a id="47c7" class="tk">UINT_MAX</a> <a id="47c16" class="tk">!=</a> (0xFFFFFFFFU) ) <a id="47c35" class="tk">||</a> ( <a id="47c40" class="tk">INT_MAX</a> <a id="47c48" class="tk">!=</a> (0x7FFFFFFF) )</td></tr>
+<tr name="48" id="48">
+<td><a id="l48" class='ln'>48</a></td><td><span class="pp">#error</span> <a id="48c8" class="tk">Code</a> <a id="48c13" class="tk">was</a> <a id="48c17" class="tk">generated</a> <span class="kw">for</span> <a id="48c31" class="tk">compiler</a> <a id="48c40" class="tk">with</a> <a id="48c45" class="tk">different</a> <a id="48c55" class="tk">sized</a> <a id="48c61" class="tk">uint</a><a id="48c65" class="tk">/</a><span class="kw">int</span>. \</td></tr>
+<tr name="49" id="49">
+<td><a id="l49" class='ln'>49</a></td><td><a id="49c71" class="tk">Consider</a> <a id="49c80" class="tk">adjusting</a> <a id="49c90" class="tk">Test</a> <a id="49c95" class="tk">hardware</a> <a id="49c104" class="tk">word</a> <a id="49c109" class="tk">size</a> <a id="49c114" class="tk">settings</a> <a id="49c123" class="tk">on</a> <a id="49c126" class="tk">the</a> \</td></tr>
+<tr name="50" id="50">
+<td><a id="l50" class='ln'>50</a></td><td><a id="50c130" class="tk">Hardware</a> <a id="50c139" class="tk">Implementation</a> <a id="50c154" class="tk">pane</a> <a id="50c159" class="tk">to</a> <a id="50c162" class="tk">match</a> <a id="50c168" class="tk">your</a> <a id="50c173" class="tk">compiler</a> <a id="50c182" class="tk">word</a> <a id="50c187" class="tk">sizes</a> <a id="50c193" class="tk">as</a> \</td></tr>
+<tr name="51" id="51">
+<td><a id="l51" class='ln'>51</a></td><td><a id="51c196" class="tk">defined</a> <a id="51c204" class="tk">in</a> <a id="51c207" class="tk">limits</a>.<a id="51c214" class="tk">h</a> <a id="51c216" class="tk">of</a> <a id="51c219" class="tk">the</a> <a id="51c223" class="tk">compiler</a>. <a id="51c233" class="tk">Alternatively</a>, <a id="51c248" class="tk">you</a> <a id="51c252" class="tk">can</a> \</td></tr>
+<tr name="52" id="52">
+<td><a id="l52" class='ln'>52</a></td><td><a id="52c256" class="tk">select</a> <a id="52c263" class="tk">the</a> <a id="52c267" class="tk">Test</a> <a id="52c272" class="tk">hardware</a> <a id="52c281" class="tk">is</a> <a id="52c284" class="tk">the</a> <a id="52c288" class="tk">same</a> <a id="52c293" class="tk">as</a> <a id="52c296" class="tk">production</a> <a id="52c307" class="tk">hardware</a> <a id="52c316" class="tk">option</a> <a id="52c323" class="tk">and</a> \</td></tr>
+<tr name="53" id="53">
+<td><a id="l53" class='ln'>53</a></td><td><a id="53c327" class="tk">select</a> <a id="53c334" class="tk">the</a> <a id="53c338" class="tk">Enable</a> <a id="53c345" class="tk">portable</a> <a id="53c354" class="tk">word</a> <a id="53c359" class="tk">sizes</a> <a id="53c365" class="tk">option</a> <a id="53c372" class="tk">on</a> <a id="53c375" class="tk">the</a> <a id="53c379" class="tk">Code</a> <a id="53c384" class="tk">Generation</a> <a id="53c395" class="tk">&gt;</a> \</td></tr>
+<tr name="54" id="54">
+<td><a id="l54" class='ln'>54</a></td><td><a id="54c397" class="tk">Verification</a> <a id="54c410" class="tk">pane</a> <span class="kw">for</span> <a id="54c419" class="tk">ERT</a> <a id="54c423" class="tk">based</a> <a id="54c429" class="tk">targets</a>, <a id="54c438" class="tk">which</a> <a id="54c444" class="tk">will</a> <a id="54c449" class="tk">disable</a> <a id="54c457" class="tk">the</a> \</td></tr>
+<tr name="55" id="55">
+<td><a id="l55" class='ln'>55</a></td><td><a id="55c461" class="tk">preprocessor</a> <a id="55c474" class="tk">word</a> <a id="55c479" class="tk">size</a> <a id="55c484" class="tk">checks</a>.</td></tr>
+<tr name="56" id="56">
+<td><a id="l56" class='ln'>56</a></td><td><span class="pp">#endif</span></td></tr>
+<tr name="57" id="57">
+<td><a id="l57" class='ln'>57</a></td><td></td></tr>
+<tr name="58" id="58">
+<td><a id="l58" class='ln'>58</a></td><td><span class="pp">#if</span> ( <a id="58c7" class="tk">ULONG_MAX</a> <a id="58c17" class="tk">!=</a> (0xFFFFFFFFU) ) <a id="58c36" class="tk">||</a> ( <a id="58c41" class="tk">LONG_MAX</a> <a id="58c50" class="tk">!=</a> (0x7FFFFFFF) )</td></tr>
+<tr name="59" id="59">
+<td><a id="l59" class='ln'>59</a></td><td><span class="pp">#error</span> <a id="59c8" class="tk">Code</a> <a id="59c13" class="tk">was</a> <a id="59c17" class="tk">generated</a> <span class="kw">for</span> <a id="59c31" class="tk">compiler</a> <a id="59c40" class="tk">with</a> <a id="59c45" class="tk">different</a> <a id="59c55" class="tk">sized</a> <a id="59c61" class="tk">ulong</a><a id="59c66" class="tk">/</a><span class="kw">long</span>. \</td></tr>
+<tr name="60" id="60">
+<td><a id="l60" class='ln'>60</a></td><td><a id="60c73" class="tk">Consider</a> <a id="60c82" class="tk">adjusting</a> <a id="60c92" class="tk">Test</a> <a id="60c97" class="tk">hardware</a> <a id="60c106" class="tk">word</a> <a id="60c111" class="tk">size</a> <a id="60c116" class="tk">settings</a> <a id="60c125" class="tk">on</a> <a id="60c128" class="tk">the</a> \</td></tr>
+<tr name="61" id="61">
+<td><a id="l61" class='ln'>61</a></td><td><a id="61c132" class="tk">Hardware</a> <a id="61c141" class="tk">Implementation</a> <a id="61c156" class="tk">pane</a> <a id="61c161" class="tk">to</a> <a id="61c164" class="tk">match</a> <a id="61c170" class="tk">your</a> <a id="61c175" class="tk">compiler</a> <a id="61c184" class="tk">word</a> <a id="61c189" class="tk">sizes</a> <a id="61c195" class="tk">as</a> \</td></tr>
+<tr name="62" id="62">
+<td><a id="l62" class='ln'>62</a></td><td><a id="62c198" class="tk">defined</a> <a id="62c206" class="tk">in</a> <a id="62c209" class="tk">limits</a>.<a id="62c216" class="tk">h</a> <a id="62c218" class="tk">of</a> <a id="62c221" class="tk">the</a> <a id="62c225" class="tk">compiler</a>. <a id="62c235" class="tk">Alternatively</a>, <a id="62c250" class="tk">you</a> <a id="62c254" class="tk">can</a> \</td></tr>
+<tr name="63" id="63">
+<td><a id="l63" class='ln'>63</a></td><td><a id="63c258" class="tk">select</a> <a id="63c265" class="tk">the</a> <a id="63c269" class="tk">Test</a> <a id="63c274" class="tk">hardware</a> <a id="63c283" class="tk">is</a> <a id="63c286" class="tk">the</a> <a id="63c290" class="tk">same</a> <a id="63c295" class="tk">as</a> <a id="63c298" class="tk">production</a> <a id="63c309" class="tk">hardware</a> <a id="63c318" class="tk">option</a> <a id="63c325" class="tk">and</a> \</td></tr>
+<tr name="64" id="64">
+<td><a id="l64" class='ln'>64</a></td><td><a id="64c329" class="tk">select</a> <a id="64c336" class="tk">the</a> <a id="64c340" class="tk">Enable</a> <a id="64c347" class="tk">portable</a> <a id="64c356" class="tk">word</a> <a id="64c361" class="tk">sizes</a> <a id="64c367" class="tk">option</a> <a id="64c374" class="tk">on</a> <a id="64c377" class="tk">the</a> <a id="64c381" class="tk">Code</a> <a id="64c386" class="tk">Generation</a> <a id="64c397" class="tk">&gt;</a> \</td></tr>
+<tr name="65" id="65">
+<td><a id="l65" class='ln'>65</a></td><td><a id="65c399" class="tk">Verification</a> <a id="65c412" class="tk">pane</a> <span class="kw">for</span> <a id="65c421" class="tk">ERT</a> <a id="65c425" class="tk">based</a> <a id="65c431" class="tk">targets</a>, <a id="65c440" class="tk">which</a> <a id="65c446" class="tk">will</a> <a id="65c451" class="tk">disable</a> <a id="65c459" class="tk">the</a> \</td></tr>
+<tr name="66" id="66">
+<td><a id="l66" class='ln'>66</a></td><td><a id="66c463" class="tk">preprocessor</a> <a id="66c476" class="tk">word</a> <a id="66c481" class="tk">size</a> <a id="66c486" class="tk">checks</a>.</td></tr>
+<tr name="67" id="67">
+<td><a id="l67" class='ln'>67</a></td><td><span class="pp">#endif</span></td></tr>
+<tr name="68" id="68">
+<td><a id="l68" class='ln'>68</a></td><td></td></tr>
+<tr name="69" id="69">
+<td><a id="l69" class='ln'>69</a></td><td><span class="ct">/* Skipping ulong_long/long_long check: insufficient preprocessor integer range. */</span></td></tr>
+<tr name="70" id="70">
+<td><a id="l70" class='ln'>70</a></td><td><span class="kw">extern</span> <a id="70c8" class="tk">real_T</a> <a id="70c15" class="tk">rt_modd_snf</a>(<a id="70c27" class="tk">real_T</a> <a id="70c34" class="tk">u0</a>, <a id="70c38" class="tk">real_T</a> <a id="70c45" class="tk">u1</a>);</td></tr>
+<tr name="71" id="71">
+<td><a id="l71" class='ln'>71</a></td><td><span class="kw">extern</span> <a id="71c8" class="tk">real_T</a> <a id="71c15" class="tk">rt_roundd_snf</a>(<a id="71c29" class="tk">real_T</a> <a id="71c36" class="tk">u</a>);</td></tr>
+<tr name="72" id="72">
+<td><a id="l72" class='ln'>72</a></td><td><span class="kw">extern</span> <a id="72c8" class="tk">uint16_T</a> <a id="72c17" class="tk">plook_u16u16_evencka</a>(<a id="72c38" class="tk">uint16_T</a> <a id="72c47" class="tk">u</a>, <a id="72c50" class="tk">uint16_T</a> <a id="72c59" class="tk">bp0</a>, <a id="72c64" class="tk">uint16_T</a> <a id="72c73" class="tk">bpSpace</a>,</td></tr>
+<tr name="73" id="73">
+<td><a id="l73" class='ln'>73</a></td><td>  <a id="73c3" class="tk">uint32_T</a> <a id="73c12" class="tk">maxIndex</a>);</td></tr>
+<tr name="74" id="74">
+<td><a id="l74" class='ln'>74</a></td><td><span class="kw">extern</span> <a id="74c8" class="tk">int32_T</a> <a id="74c16" class="tk">div_nde_s32_floor</a>(<a id="74c34" class="tk">int32_T</a> <a id="74c42" class="tk">numerator</a>, <a id="74c53" class="tk">int32_T</a> <a id="74c61" class="tk">denominator</a>);</td></tr>
+<tr name="75" id="75">
+<td><a id="l75" class='ln'>75</a></td><td></td></tr>
+<tr name="76" id="76">
+<td><a id="l76" class='ln'>76</a></td><td><span class="pp">#endif</span>                               <span class="ct">/* RTW_HEADER_PMSM_Controller_private_h_ */</span></td></tr>
+<tr name="77" id="77">
+<td><a id="l77" class='ln'>77</a></td><td></td></tr>
+<tr name="78" id="78">
+<td><a id="l78" class='ln'>78</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="79" id="79">
+<td><a id="l79" class='ln'>79</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="80" id="80">
+<td><a id="l80" class='ln'>80</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="81" id="81">
+<td><a id="l81" class='ln'>81</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="82" id="82">
+<td><a id="l82" class='ln'>82</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="83" id="83">
+<td><a id="l83" class='ln'>83</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

+ 1191 - 0
Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_reducedblocks.html

@@ -0,0 +1,1191 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" href="rtwreport.css" /><title>
+Eliminated blocks in PMSM_Controller
+</title>
+
+</head>
+<body onload="try {if (top) {if (top.rtwPageOnLoad) top.rtwPageOnLoad('rtwIdReducedBlocks'); else local_onload();}} catch(err) {};">
+<h1>
+Eliminated blocks in PMSM_Controller
+</h1>
+<div>
+
+</div>
+<div>
+
+</div>
+List of blocks eliminated as a result of block reduction optimization.<table class="AltRow FirstColumn" cellspacing="0">
+<tr class="heading">
+<th align="left" valign="top">
+<b>
+Block
+</b>
+
+</th>
+<th align="left" valign="top">
+<b>
+Description
+</b>
+
+</th>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S1&gt;/Abs1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S2&gt;/Scope
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S7&gt;/Scope
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S3&gt;/Scope
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S10&gt;/Relational Operator9
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S10&gt;/Scope1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S10&gt;/Scope2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S10&gt;/n_stdStillDet
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S12&gt;/Abs5
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S12&gt;/Divide1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S12&gt;/Divide14
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S12&gt;/Divide2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S12&gt;/Divide3
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S13&gt;/Data Type Duplicate
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S13&gt;/Data Type Propagation
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S13&gt;/LowerRelop1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S13&gt;/Switch
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S13&gt;/Switch2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S13&gt;/UpperRelop
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S14&gt;/Data Type Duplicate
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S14&gt;/Data Type Propagation
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S14&gt;/LowerRelop1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S14&gt;/Switch
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S14&gt;/Switch2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S14&gt;/UpperRelop
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S12&gt;/Sum1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S12&gt;/Sum2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S12&gt;/Sum3
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S12&gt;/Sum4
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S12&gt;/id_fieldWeakMax
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S12&gt;/n_fieldWeakAuthHi
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S12&gt;/n_fieldWeakAuthLo
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S12&gt;/r_fieldWeakHi
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S12&gt;/r_fieldWeakLo
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S1&gt;/Scope
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S1&gt;/Scope1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S5&gt;/Gain6
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S17&gt;/Abs5
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S17&gt;/Constant
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S17&gt;/Constant1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S17&gt;/Divide1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S17&gt;/Divide4
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S17&gt;/Gain1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S17&gt;/Gain3
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S17&gt;/Gain4
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S17&gt;/Gain5
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S17&gt;/Vd_max1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S17&gt;/Vq_max_M1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S17&gt;/Vq_max_XA
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S17&gt;/i_max
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S17&gt;/iq_maxSca_M1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S17&gt;/iq_maxSca_XA
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S17&gt;/n_max1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S178&gt;/Scope
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S5&gt;/Scope1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S5&gt;/Scope12
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S5&gt;/UnitDelay4
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S2&gt;/Signal Conversion2
+</td>
+<td align="left" valign="top">
+Eliminate redundant signal conversion block
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S1&gt;/hall_motor_angel_choice
+</td>
+<td align="left" valign="top">
+Eliminated due to constant selection input
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S1&gt;/hall_motor_speed_choice
+</td>
+<td align="left" valign="top">
+Eliminated due to constant selection input
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S2&gt;/AND
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S2&gt;/Constant1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S2&gt;/Constant16
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S2&gt;/Constant2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S2&gt;/Divide1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S2&gt;/Divide2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S2&gt;/Divide3
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S2&gt;/MinMax
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S2&gt;/MinMax1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S2&gt;/NOT
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S2&gt;/Relational Operator7
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S2&gt;/Sum1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S2&gt;/Sum3
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S2&gt;/Switch2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S2&gt;/Switch3
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S2&gt;/a_elecAngle1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S6&gt;/Add2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S6&gt;/Constant1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S6&gt;/Constant2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S6&gt;/Math Function
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S2&gt;/是否方波启动
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S7&gt;/Constant20
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S7&gt;/Constant23
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S7&gt;/Constant24
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S7&gt;/Constant8
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S7&gt;/Logical Operator3
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S7&gt;/Relational Operator1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S7&gt;/Relational Operator6
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S7&gt;/Sum2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S7&gt;/Switch2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S7&gt;/UnitDelay2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S7&gt;/UnitDelay3
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S9&gt;/Add
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S9&gt;/Gain
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S9&gt;/Gain1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S9&gt;/Selector
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S9&gt;/vec_hallToPos
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S10&gt;/Abs5
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S10&gt;/Constant4
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S10&gt;/Logical Operator1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S10&gt;/Logical Operator2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S10&gt;/Logical Operator3
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S11&gt;/Abs2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S11&gt;/Constant4
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S11&gt;/Divide11
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S11&gt;/Divide13
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S11&gt;/Divide14
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S11&gt;/Logical Operator1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S11&gt;/Relational Operator4
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S11&gt;/Sum13
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S11&gt;/Sum7
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S11&gt;/Switch1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S11&gt;/Switch2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S11&gt;/Switch3
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S11&gt;/UnitDelay1
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S11&gt;/UnitDelay2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S11&gt;/UnitDelay3
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S11&gt;/UnitDelay4
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S11&gt;/UnitDelay5
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S11&gt;/cf_speedCoef
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S11&gt;/dz_cntTrnsDet
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S11&gt;/g_Ha
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S10&gt;/Relational Operator2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S10&gt;/Switch2
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S10&gt;/UnitDelay4
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S10&gt;/b_angleMeasEna
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S10&gt;/n_commDeacv
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S10&gt;/z_maxCntRst
+</td>
+<td align="left" valign="top">
+Unused code path elimination
+</td>
+
+</tr>
+
+</table>
+
+</body>
+
+</html>

+ 18 - 0
Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_replacements.html

@@ -0,0 +1,18 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" href="rtwreport.css" /><title>
+Code replacements in PMSM_Controller
+</title>
+
+</head>
+<body onload="try {if (top) {if (top.rtwPageOnLoad) top.rtwPageOnLoad('rtwIdCodeReplacements'); else local_onload();}} catch(err) {};">
+<h1>
+Code replacements in PMSM_Controller
+</h1>
+<div>
+
+</div>
+<img src="hilite_warning.png" />Code replacements report not generated. Select <a href="matlab:configset.highlightParameter('MotorController_FOC', 'GenerateCodeReplacementReport')">'Summarize which blocks triggered code replacements'</a>.
+</body>
+
+</html>

+ 249 - 0
Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_subsystems.html

@@ -0,0 +1,249 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" href="rtwreport.css" /><script language="JavaScript" type="text/javascript" src="rtwshrink.js"></script><title>
+Non-virtual subsystems in PMSM_Controller
+</title>
+
+</head>
+<body onload="try {if (top) {if (top.rtwPageOnLoad) top.rtwPageOnLoad('rtwIdSubsystem'); else local_onload();}} catch(err) {};">
+<h1>
+Non-virtual subsystems in PMSM_Controller
+</h1>
+<div>
+
+</div>
+<div>
+
+</div>
+<h3 name="sec_Code_Mapping" id="sec_code_mapping">
+1. Code Mapping <span title="Click to shrink or expand section" style="cursor:pointer;font-weight:normal;" id="rtwIdSubsystem_table_001_control" onclick ="if (rtwTableShrink) rtwTableShrink(window.document, this, 'rtwIdSubsystem_table_001', false)"><span class="shrink-button">[<u>hide</u>]</span></span>
+</h3>
+<table width="100%" name="rtwIdSubsystem_table_001" id="rtwIdSubsystem_table_001" border="0">
+<tr>
+<td align="left" valign="top">
+<p>
+The following table: <br /><ul>
+<li>
+provides a mapping from the non-virtual subsystems in the model to functions or reusable functions in the generated code and
+</li>
+<li>
+notes exceptions that caused some non-virtual subsystems to not reuse code even though they were assigned a function packaging setting ('Function packaging' entry on the Subsystem Block Dialog) of 'Auto' or 'Reusable function'.
+</li>
+
+</ul>
+
+</p>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<table class="AltRow FirstColumn" cellspacing="0">
+<tr class="heading">
+<th align="left" valign="top">
+<b>
+Subsystem
+</b>
+
+</th>
+<th align="left" valign="top">
+<b>
+Reuse Setting
+</b>
+
+</th>
+<th align="left" valign="top">
+<b>
+Reuse Outcome
+</b>
+
+</th>
+<th align="left" valign="top">
+<b>
+Outcome Diagnostic
+</b>
+
+</th>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S181&gt;
+</td>
+<td align="left" valign="top">
+Reusable Function
+</td>
+<td align="left" valign="top">
+<A HREF="Shunt_Three_Sample_Point_c.html#fcn_Shunt_Three_Sample_Point" TARGET="rtwreport_document_frame">Reusable Function(S181)</A>
+</td>
+<td align="left" valign="top">
+<FONT COLOR="green">normal</FONT>
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S2&gt;
+</td>
+<td align="left" valign="top">
+Auto
+</td>
+<td align="left" valign="top">
+Inline
+</td>
+<td align="left" valign="top">
+<FONT COLOR="green">normal</FONT>
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S7&gt;
+</td>
+<td align="left" valign="top">
+Auto
+</td>
+<td align="left" valign="top">
+Inline
+</td>
+<td align="left" valign="top">
+<FONT COLOR="green">normal</FONT>
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S11&gt;
+</td>
+<td align="left" valign="top">
+Auto
+</td>
+<td align="left" valign="top">
+Inline
+</td>
+<td align="left" valign="top">
+<FONT COLOR="green">normal</FONT>
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S3&gt;
+</td>
+<td align="left" valign="top">
+Auto
+</td>
+<td align="left" valign="top">
+Inline
+</td>
+<td align="left" valign="top">
+<FONT COLOR="green">normal</FONT>
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S12&gt;
+</td>
+<td align="left" valign="top">
+Auto
+</td>
+<td align="left" valign="top">
+Inline
+</td>
+<td align="left" valign="top">
+<FONT COLOR="green">normal</FONT>
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S179&gt;
+</td>
+<td align="left" valign="top">
+Auto
+</td>
+<td align="left" valign="top">
+Inline
+</td>
+<td align="left" valign="top">
+<FONT COLOR="green">normal</FONT>
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+&lt;S180&gt;
+</td>
+<td align="left" valign="top">
+Auto
+</td>
+<td align="left" valign="top">
+Inline
+</td>
+<td align="left" valign="top">
+<FONT COLOR="green">normal</FONT>
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+&lt;S5&gt;
+</td>
+<td align="left" valign="top">
+Auto
+</td>
+<td align="left" valign="top">
+Inline
+</td>
+<td align="left" valign="top">
+<FONT COLOR="green">normal</FONT>
+</td>
+
+</tr>
+
+</table>
+
+</td>
+
+</tr>
+
+</table>
+<h3 name="sec_Code_Reuse_Exceptions" id="sec_reuse_exception">
+2. Code Reuse Exceptions <span title="Click to shrink or expand section" style="cursor:pointer;font-weight:normal;" id="rtwIdSubsystem_table_002_control" onclick ="if (rtwTableShrink) rtwTableShrink(window.document, this, 'rtwIdSubsystem_table_002', false)"><span class="shrink-button">[<u>hide</u>]</span></span>
+</h3>
+<table width="100%" name="rtwIdSubsystem_table_002" id="rtwIdSubsystem_table_002" border="0">
+<tr>
+<td align="left" valign="top">
+<p>
+The following section provides details on each exception that caused a non-virtual subsystem with a function packaging setting of<br /><ul>
+<li>
+'Auto' to become an inlined code segment,
+</li>
+<li>
+'Auto' to become a non-reusable function without arguments, or
+</li>
+<li>
+'Reusable function' to become a non-reusable function without arguments.
+</li>
+
+</ul>
+<b>Note:</b>This section does not report graphically identical non-virtual subsystems marked as 'Auto' that were not reused due to differences in their functional properties (such as dimensions, datatypes, work vectors, parameters, etc.).  You may identify reasons for non-reuse in such cases by inspecting the differences in the functional attributes of the subsystems in the model or in the inlined generated code.
+</p>
+
+</td>
+
+</tr>
+<tr>
+<td align="left" valign="top">
+<br /><b>No reuse exception in model</b>
+</td>
+
+</tr>
+
+</table>
+
+</body>
+
+</html>

+ 177 - 0
Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_survey.html

@@ -0,0 +1,177 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" href="rtwreport.css" /><title>
+Code Generation Report for 'PMSM_Controller'
+</title>
+
+</head>
+<body onload="try {if (top) {if (top.rtwPageOnLoad) top.rtwPageOnLoad('rtwIdSummaryPage'); else local_onload();}} catch(err) {};">
+<h1>
+Code Generation Report for 'PMSM_Controller'
+</h1>
+<div>
+
+</div>
+<div>
+
+</div>
+<h3 name="sec_Model_Information" id="sec_model_info">
+Model Information
+</h3>
+<table width="100%" border="0">
+<tr>
+<td align="left" valign="top">
+<p>
+<table class="AltRow" cellspacing="0">
+<tr class="even">
+<td align="left" valign="top">
+Author
+</td>
+<td align="left" valign="top">
+kevin
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+Model Version
+</td>
+<td align="left" valign="top">
+1.885
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+Tasking Mode
+</td>
+<td align="left" valign="top">
+SingleTasking
+</td>
+
+</tr>
+
+</table>
+<br /><a href="../../slprj/ert/PMSM_Controller/tmwinternal/binfo.mat?PMSM_Controller" id="linkToCS" style="display:none">
+Configuration settings at time of code generation
+</a>
+<span style="" id="linkToCS_disabled" title="Link to configuration set is only available in MATLAB browser">
+Configuration settings at time of code generation
+</span>
+
+</p>
+
+</td>
+
+</tr>
+
+</table>
+<h3 name="sec_Code_Information" id="sec_code_info">
+Code Information
+</h3>
+<table width="100%" border="0">
+<tr>
+<td align="left" valign="top">
+<p>
+<table class="AltRow" cellspacing="0">
+<tr class="even">
+<td align="left" valign="top">
+System Target File
+</td>
+<td align="left" valign="top">
+ert.tlc
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+Hardware Device Type
+</td>
+<td align="left" valign="top">
+ARM Compatible->ARM Cortex-M
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+Simulink Coder Version
+</td>
+<td align="left" valign="top">
+9.4 (R2020b) 29-Jul-2020
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+Timestamp of Generated Source Code
+</td>
+<td align="left" valign="top">
+Sat Jan  8 15:44:11 2022
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+<span id="sourceLocationTitle">Location of Generated Source Code</span>
+</td>
+<td align="left" valign="top">
+<span id="sourceLocation" style="display:none"><script>document.write(top.getCodeLocation())</script></span>
+</td>
+
+</tr>
+<tr class="odd">
+<td align="left" valign="top">
+Type of Build
+</td>
+<td align="left" valign="top">
+Subsystem
+</td>
+
+</tr>
+<tr class="even">
+<td align="left" valign="top">
+Objectives Specified
+</td>
+<td align="left" valign="top">
+<span style="color:black">Execution efficiency, RAM efficiency</span>
+</td>
+
+</tr>
+
+</table>
+
+</p>
+
+</td>
+
+</tr>
+
+</table>
+<h3 name="sec_Additional_Information" id="sec_additional_info">
+Additional Information
+</h3>
+<table width="100%" border="0">
+<tr>
+<td align="left" valign="top">
+<table class="AltRow" cellspacing="0">
+<tr class="even">
+<td align="left" valign="top">
+Code Generation Advisor
+</td>
+<td align="left" valign="top">
+Not run
+</td>
+
+</tr>
+
+</table>
+
+</td>
+
+</tr>
+
+</table>
+
+</body>
+
+</html>

+ 7 - 0
Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_trace.html

@@ -0,0 +1,7 @@
+<HTML><HEAD><TITLE>Traceability Report for PMSM_Controller</TITLE>
+<LINK rel="stylesheet" type="text/css" href="rtwreport.css" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+</HEAD><BODY ONLOAD="try {if (top) {if (top.rtwPageOnLoad) top.rtwPageOnLoad('rtwIdTraceability'); else local_onload();}} catch(err) {};">
+<H1>Traceability Report for PMSM_Controller</H1>
+<P><IMG src="hilite_warning.png" />Traceability report is not generated. On the <b>Configuration Parameters &gt; Code Generation &gt; Comments</b> pane, select the <b>Include comments</b> parameter. On the <b>Configuration Parameters dialog box</b>, enter search keyword "GenerateTraceReport" and select the <b>Traceability Report Contents</b> parameters. Then, rebuild the model.</P>
+</BODY></HTML>

+ 82 - 0
Simulink/PMSM_Controller_ert_rtw/html/PMSM_Controller_types_h.html

@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: PMSM_Controller_types.h</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="pp">#ifndef</span> <a id="18c9" class="tk">RTW_HEADER_PMSM_Controller_types_h_</a></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td><span class="pp">#define</span> <a id="19c9" class="tk">RTW_HEADER_PMSM_Controller_types_h_</a></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="ct">/* Model Code Variants */</span></td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td></td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td><span class="ct">/* Forward declaration for rtModel */</span></td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td><span class="kw">typedef</span> <span class="kw">struct</span> <a id="24c16" class="tk">tag_RTM</a> <a id="24c24" class="tk">RT_MODEL</a>;</td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td></td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td><span class="pp">#endif</span>                                 <span class="ct">/* RTW_HEADER_PMSM_Controller_types_h_ */</span></td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td></td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

+ 360 - 0
Simulink/PMSM_Controller_ert_rtw/html/Shunt_Three_Sample_Point_c.html

@@ -0,0 +1,360 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: Shunt_Three_Sample_Point.c</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="pp">#include "Shunt_Three_Sample_Point.h"</span></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td><span class="ct">/* Include model header file for global data */</span></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="pp">#include "PMSM_Controller.h"</span></td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td><span class="pp">#include "PMSM_Controller_private.h"</span></td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td></td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td><span class="ct">/* Output and update for atomic system: '&lt;S178&gt;/Shunt_Three_Sample_Point' */</span></td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td><span class="kw">void</span> <a id="25c6" class="tk">Shunt_Three_Sample_Point</a>(<a id="25c31" class="tk">uint16_T</a> <a id="25c40" class="tk">rtu_low</a>, <a id="25c49" class="tk">uint16_T</a> <a id="25c58" class="tk">rtu_midle</a>, <a id="25c69" class="tk">uint8_T</a></td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td>  <a id="26c3" class="tk">rtu_i_sector</a>, <a id="26c17" class="tk">uint16_T</a> <a id="26c26" class="tk">rtu_half_pwm_count</a>, <a id="26c46" class="tk">uint16_T</a> <a id="26c55" class="tk">rtu_t_adc</a>, <a id="26c66" class="tk">uint16_T</a></td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td>  <a id="27c3" class="tk">rtu_t_dead</a>, <a id="27c15" class="tk">uint16_T</a> <a id="27c24" class="tk">rtu_t_samp_before</a>, <a id="27c43" class="tk">uint16_T</a> <a id="27c52" class="tk">*</a><a id="27c53" class="tk">rty_o_samp_p1</a>, <a id="27c68" class="tk">uint16_T</a></td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td>  <a id="28c3" class="tk">*</a><a id="28c4" class="tk">rty_o_samp_p2</a>, <a id="28c19" class="tk">uint8_T</a> <a id="28c27" class="tk">*</a><a id="28c28" class="tk">rty_o_sector</a>)</td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td><span class="br">{</span></td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td>  <a id="30c3" class="tk">uint32_T</a> <a id="30c12" class="tk">qY</a>;</td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td>  <a id="31c3" class="tk">uint32_T</a> <a id="31c12" class="tk">qY_0</a>;</td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td>  <a id="32c3" class="tk">uint32_T</a> <a id="32c12" class="tk">tmp</a>;</td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td>  <a id="33c3" class="tk">uint32_T</a> <a id="33c12" class="tk">tmp_0</a>;</td></tr>
+<tr name="34" id="34">
+<td><a id="l34" class='ln'>34</a></td><td>  <a id="34c3" class="tk">uint16_T</a> <a id="34c12" class="tk">qY_1</a>;</td></tr>
+<tr name="35" id="35">
+<td><a id="l35" class='ln'>35</a></td><td>  <a id="35c3" class="tk">*</a><a id="35c4" class="tk">rty_o_sector</a> = <a id="35c19" class="tk">rtu_i_sector</a>;</td></tr>
+<tr name="36" id="36">
+<td><a id="l36" class='ln'>36</a></td><td>  <a id="36c3" class="tk">tmp_0</a> = <a id="36c11" class="tk">rtu_half_pwm_count</a> <a id="36c30" class="tk">+</a> 1U;</td></tr>
+<tr name="37" id="37">
+<td><a id="l37" class='ln'>37</a></td><td>  <span class="kw">if</span> (<a id="37c7" class="tk">rtu_half_pwm_count</a> <a id="37c26" class="tk">+</a> 1U <a id="37c31" class="tk">&gt;</a> 65535U) <span class="br">{</span></td></tr>
+<tr name="38" id="38">
+<td><a id="l38" class='ln'>38</a></td><td>    <a id="38c5" class="tk">tmp_0</a> = 65535U;</td></tr>
+<tr name="39" id="39">
+<td><a id="l39" class='ln'>39</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="40" id="40">
+<td><a id="l40" class='ln'>40</a></td><td></td></tr>
+<tr name="41" id="41">
+<td><a id="l41" class='ln'>41</a></td><td>  <a id="41c3" class="tk">*</a><a id="41c4" class="tk">rty_o_samp_p1</a> = (<a id="41c21" class="tk">uint16_T</a>)<a id="41c30" class="tk">tmp_0</a>;</td></tr>
+<tr name="42" id="42">
+<td><a id="l42" class='ln'>42</a></td><td>  <a id="42c3" class="tk">tmp_0</a> = <a id="42c11" class="tk">rtu_half_pwm_count</a> <a id="42c30" class="tk">+</a> 1U;</td></tr>
+<tr name="43" id="43">
+<td><a id="l43" class='ln'>43</a></td><td>  <span class="kw">if</span> (<a id="43c7" class="tk">rtu_half_pwm_count</a> <a id="43c26" class="tk">+</a> 1U <a id="43c31" class="tk">&gt;</a> 65535U) <span class="br">{</span></td></tr>
+<tr name="44" id="44">
+<td><a id="l44" class='ln'>44</a></td><td>    <a id="44c5" class="tk">tmp_0</a> = 65535U;</td></tr>
+<tr name="45" id="45">
+<td><a id="l45" class='ln'>45</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="46" id="46">
+<td><a id="l46" class='ln'>46</a></td><td></td></tr>
+<tr name="47" id="47">
+<td><a id="l47" class='ln'>47</a></td><td>  <a id="47c3" class="tk">*</a><a id="47c4" class="tk">rty_o_samp_p2</a> = (<a id="47c21" class="tk">uint16_T</a>)<a id="47c30" class="tk">tmp_0</a>;</td></tr>
+<tr name="48" id="48">
+<td><a id="l48" class='ln'>48</a></td><td>  <a id="48c3" class="tk">tmp_0</a> = (<a id="48c12" class="tk">uint32_T</a>)<a id="48c21" class="tk">rtu_t_adc</a> <a id="48c31" class="tk">+</a> <a id="48c33" class="tk">rtu_t_dead</a>;</td></tr>
+<tr name="49" id="49">
+<td><a id="l49" class='ln'>49</a></td><td>  <a id="49c3" class="tk">tmp</a> = <a id="49c9" class="tk">tmp_0</a>;</td></tr>
+<tr name="50" id="50">
+<td><a id="l50" class='ln'>50</a></td><td>  <span class="kw">if</span> (<a id="50c7" class="tk">tmp_0</a> <a id="50c13" class="tk">&gt;</a> 65535U) <span class="br">{</span></td></tr>
+<tr name="51" id="51">
+<td><a id="l51" class='ln'>51</a></td><td>    <a id="51c5" class="tk">tmp</a> = 65535U;</td></tr>
+<tr name="52" id="52">
+<td><a id="l52" class='ln'>52</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="53" id="53">
+<td><a id="l53" class='ln'>53</a></td><td></td></tr>
+<tr name="54" id="54">
+<td><a id="l54" class='ln'>54</a></td><td>  <a id="54c3" class="tk">tmp</a> <a id="54c7" class="tk">+=</a> <a id="54c10" class="tk">rtu_t_samp_before</a>;</td></tr>
+<tr name="55" id="55">
+<td><a id="l55" class='ln'>55</a></td><td>  <span class="kw">if</span> (<a id="55c7" class="tk">tmp</a> <a id="55c11" class="tk">&gt;</a> 65535U) <span class="br">{</span></td></tr>
+<tr name="56" id="56">
+<td><a id="l56" class='ln'>56</a></td><td>    <a id="56c5" class="tk">tmp</a> = 65535U;</td></tr>
+<tr name="57" id="57">
+<td><a id="l57" class='ln'>57</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="58" id="58">
+<td><a id="l58" class='ln'>58</a></td><td></td></tr>
+<tr name="59" id="59">
+<td><a id="l59" class='ln'>59</a></td><td>  <a id="59c3" class="tk">qY_0</a> = (<a id="59c11" class="tk">uint32_T</a>)<a id="59c20" class="tk">rtu_half_pwm_count</a> <a id="59c39" class="tk">-</a> <span class="ct">/*MW:OvSatOk*/</span> <a id="59c56" class="tk">rtu_low</a>;</td></tr>
+<tr name="60" id="60">
+<td><a id="l60" class='ln'>60</a></td><td>  <span class="kw">if</span> (<a id="60c7" class="tk">qY_0</a> <a id="60c12" class="tk">&gt;</a> <a id="60c14" class="tk">rtu_half_pwm_count</a>) <span class="br">{</span></td></tr>
+<tr name="61" id="61">
+<td><a id="l61" class='ln'>61</a></td><td>    <a id="61c5" class="tk">qY_0</a> = 0U;</td></tr>
+<tr name="62" id="62">
+<td><a id="l62" class='ln'>62</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="63" id="63">
+<td><a id="l63" class='ln'>63</a></td><td></td></tr>
+<tr name="64" id="64">
+<td><a id="l64" class='ln'>64</a></td><td>  <a id="64c3" class="tk">qY</a> = (<a id="64c9" class="tk">uint32_T</a>)<a id="64c18" class="tk">rtu_half_pwm_count</a> <a id="64c37" class="tk">-</a> <span class="ct">/*MW:OvSatOk*/</span> <a id="64c54" class="tk">rtu_midle</a>;</td></tr>
+<tr name="65" id="65">
+<td><a id="l65" class='ln'>65</a></td><td>  <span class="kw">if</span> (<a id="65c7" class="tk">qY</a> <a id="65c10" class="tk">&gt;</a> <a id="65c12" class="tk">rtu_half_pwm_count</a>) <span class="br">{</span></td></tr>
+<tr name="66" id="66">
+<td><a id="l66" class='ln'>66</a></td><td>    <a id="66c5" class="tk">qY</a> = 0U;</td></tr>
+<tr name="67" id="67">
+<td><a id="l67" class='ln'>67</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="68" id="68">
+<td><a id="l68" class='ln'>68</a></td><td></td></tr>
+<tr name="69" id="69">
+<td><a id="l69" class='ln'>69</a></td><td>  <span class="kw">if</span> ((<a id="69c8" class="tk">uint16_T</a>)<a id="69c17" class="tk">qY_0</a> <a id="69c22" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="70" id="70">
+<td><a id="l70" class='ln'>70</a></td><td>    <a id="70c5" class="tk">qY_1</a> = <a id="70c12" class="tk">MAX_uint16_T</a>;</td></tr>
+<tr name="71" id="71">
+<td><a id="l71" class='ln'>71</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="72" id="72">
+<td><a id="l72" class='ln'>72</a></td><td>    <a id="72c5" class="tk">qY_1</a> = (<a id="72c13" class="tk">uint16_T</a>)((<a id="72c24" class="tk">uint16_T</a>)<a id="72c33" class="tk">qY_0</a> <a id="72c38" class="tk">&lt;&lt;</a> 1);</td></tr>
+<tr name="73" id="73">
+<td><a id="l73" class='ln'>73</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="74" id="74">
+<td><a id="l74" class='ln'>74</a></td><td></td></tr>
+<tr name="75" id="75">
+<td><a id="l75" class='ln'>75</a></td><td>  <span class="kw">if</span> (<a id="75c7" class="tk">qY_1</a> <a id="75c12" class="tk">&gt;=</a> (<a id="75c16" class="tk">uint16_T</a>)<a id="75c25" class="tk">tmp</a>) <span class="br">{</span></td></tr>
+<tr name="76" id="76">
+<td><a id="l76" class='ln'>76</a></td><td>    <span class="kw">if</span> (<a id="76c9" class="tk">tmp_0</a> <a id="76c15" class="tk">&gt;</a> 65535U) <span class="br">{</span></td></tr>
+<tr name="77" id="77">
+<td><a id="l77" class='ln'>77</a></td><td>      <a id="77c7" class="tk">tmp_0</a> = 65535U;</td></tr>
+<tr name="78" id="78">
+<td><a id="l78" class='ln'>78</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="79" id="79">
+<td><a id="l79" class='ln'>79</a></td><td></td></tr>
+<tr name="80" id="80">
+<td><a id="l80" class='ln'>80</a></td><td>    <span class="kw">if</span> ((<a id="80c10" class="tk">uint16_T</a>)<a id="80c19" class="tk">qY_0</a> <a id="80c24" class="tk">&gt;=</a> (<a id="80c28" class="tk">int32_T</a>)<a id="80c36" class="tk">tmp_0</a>) <span class="br">{</span></td></tr>
+<tr name="81" id="81">
+<td><a id="l81" class='ln'>81</a></td><td>      <a id="81c7" class="tk">qY_0</a> = <a id="81c14" class="tk">rtu_half_pwm_count</a> <a id="81c33" class="tk">-</a> <span class="ct">/*MW:OvSatOk*/</span> 1U;</td></tr>
+<tr name="82" id="82">
+<td><a id="l82" class='ln'>82</a></td><td>      <span class="kw">if</span> (<a id="82c11" class="tk">rtu_half_pwm_count</a> <a id="82c30" class="tk">-</a> 1U <a id="82c35" class="tk">&gt;</a> <a id="82c37" class="tk">rtu_half_pwm_count</a>) <span class="br">{</span></td></tr>
+<tr name="83" id="83">
+<td><a id="l83" class='ln'>83</a></td><td>        <a id="83c9" class="tk">qY_0</a> = 0U;</td></tr>
+<tr name="84" id="84">
+<td><a id="l84" class='ln'>84</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="85" id="85">
+<td><a id="l85" class='ln'>85</a></td><td></td></tr>
+<tr name="86" id="86">
+<td><a id="l86" class='ln'>86</a></td><td>      <a id="86c7" class="tk">*</a><a id="86c8" class="tk">rty_o_samp_p1</a> = (<a id="86c25" class="tk">uint16_T</a>)<a id="86c34" class="tk">qY_0</a>;</td></tr>
+<tr name="87" id="87">
+<td><a id="l87" class='ln'>87</a></td><td>      <a id="87c7" class="tk">*</a><a id="87c8" class="tk">rty_o_sector</a> = 1U;</td></tr>
+<tr name="88" id="88">
+<td><a id="l88" class='ln'>88</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="89" id="89">
+<td><a id="l89" class='ln'>89</a></td><td>      <a id="89c7" class="tk">tmp_0</a> = (<a id="89c16" class="tk">uint32_T</a>)<a id="89c25" class="tk">rtu_low</a> <a id="89c33" class="tk">+</a> <a id="89c35" class="tk">rtu_t_samp_before</a>;</td></tr>
+<tr name="90" id="90">
+<td><a id="l90" class='ln'>90</a></td><td>      <span class="kw">if</span> (<a id="90c11" class="tk">tmp_0</a> <a id="90c17" class="tk">&gt;</a> 65535U) <span class="br">{</span></td></tr>
+<tr name="91" id="91">
+<td><a id="l91" class='ln'>91</a></td><td>        <a id="91c9" class="tk">tmp_0</a> = 65535U;</td></tr>
+<tr name="92" id="92">
+<td><a id="l92" class='ln'>92</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="93" id="93">
+<td><a id="l93" class='ln'>93</a></td><td></td></tr>
+<tr name="94" id="94">
+<td><a id="l94" class='ln'>94</a></td><td>      <span class="kw">if</span> ((<a id="94c12" class="tk">uint16_T</a>)<a id="94c21" class="tk">tmp_0</a> <a id="94c27" class="tk">&gt;=</a> <a id="94c30" class="tk">rtu_half_pwm_count</a>) <span class="br">{</span></td></tr>
+<tr name="95" id="95">
+<td><a id="l95" class='ln'>95</a></td><td>        <span class="kw">if</span> (<a id="95c13" class="tk">rtu_half_pwm_count</a> <a id="95c32" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="96" id="96">
+<td><a id="l96" class='ln'>96</a></td><td>          <a id="96c11" class="tk">qY_1</a> = <a id="96c18" class="tk">MAX_uint16_T</a>;</td></tr>
+<tr name="97" id="97">
+<td><a id="l97" class='ln'>97</a></td><td>        <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="98" id="98">
+<td><a id="l98" class='ln'>98</a></td><td>          <a id="98c11" class="tk">qY_1</a> = (<a id="98c19" class="tk">uint16_T</a>)(<a id="98c29" class="tk">rtu_half_pwm_count</a> <a id="98c48" class="tk">&lt;&lt;</a> 1);</td></tr>
+<tr name="99" id="99">
+<td><a id="l99" class='ln'>99</a></td><td>        <span class="br">}</span></td></tr>
+<tr name="100" id="100">
+<td><a id="l100" class='ln'>100</a></td><td></td></tr>
+<tr name="101" id="101">
+<td><a id="l101" class='ln'>101</a></td><td>        <a id="101c9" class="tk">qY_0</a> = (<a id="101c17" class="tk">uint32_T</a>)<a id="101c26" class="tk">qY_1</a> <a id="101c31" class="tk">-</a> <span class="ct">/*MW:OvSatOk*/</span> (<a id="101c49" class="tk">uint16_T</a>)<a id="101c58" class="tk">tmp_0</a>;</td></tr>
+<tr name="102" id="102">
+<td><a id="l102" class='ln'>102</a></td><td>        <span class="kw">if</span> (<a id="102c13" class="tk">qY_0</a> <a id="102c18" class="tk">&gt;</a> <a id="102c20" class="tk">qY_1</a>) <span class="br">{</span></td></tr>
+<tr name="103" id="103">
+<td><a id="l103" class='ln'>103</a></td><td>          <a id="103c11" class="tk">qY_0</a> = 0U;</td></tr>
+<tr name="104" id="104">
+<td><a id="l104" class='ln'>104</a></td><td>        <span class="br">}</span></td></tr>
+<tr name="105" id="105">
+<td><a id="l105" class='ln'>105</a></td><td></td></tr>
+<tr name="106" id="106">
+<td><a id="l106" class='ln'>106</a></td><td>        <a id="106c9" class="tk">qY</a> = <a id="106c14" class="tk">qY_0</a> <a id="106c19" class="tk">-</a> <span class="ct">/*MW:OvSatOk*/</span> 1U;</td></tr>
+<tr name="107" id="107">
+<td><a id="l107" class='ln'>107</a></td><td>        <span class="kw">if</span> (<a id="107c13" class="tk">qY_0</a> <a id="107c18" class="tk">-</a> 1U <a id="107c23" class="tk">&gt;</a> <a id="107c25" class="tk">qY_0</a>) <span class="br">{</span></td></tr>
+<tr name="108" id="108">
+<td><a id="l108" class='ln'>108</a></td><td>          <a id="108c11" class="tk">qY</a> = 0U;</td></tr>
+<tr name="109" id="109">
+<td><a id="l109" class='ln'>109</a></td><td>        <span class="br">}</span></td></tr>
+<tr name="110" id="110">
+<td><a id="l110" class='ln'>110</a></td><td></td></tr>
+<tr name="111" id="111">
+<td><a id="l111" class='ln'>111</a></td><td>        <a id="111c9" class="tk">*</a><a id="111c10" class="tk">rty_o_samp_p2</a> = (<a id="111c27" class="tk">uint16_T</a>)<a id="111c36" class="tk">qY</a>;</td></tr>
+<tr name="112" id="112">
+<td><a id="l112" class='ln'>112</a></td><td>      <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="113" id="113">
+<td><a id="l113" class='ln'>113</a></td><td>        <a id="113c9" class="tk">*</a><a id="113c10" class="tk">rty_o_samp_p1</a> = (<a id="113c27" class="tk">uint16_T</a>)<a id="113c36" class="tk">tmp_0</a>;</td></tr>
+<tr name="114" id="114">
+<td><a id="l114" class='ln'>114</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="115" id="115">
+<td><a id="l115" class='ln'>115</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="116" id="116">
+<td><a id="l116" class='ln'>116</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="117" id="117">
+<td><a id="l117" class='ln'>117</a></td><td>    <span class="kw">if</span> ((<a id="117c10" class="tk">uint16_T</a>)<a id="117c19" class="tk">qY</a> <a id="117c22" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="118" id="118">
+<td><a id="l118" class='ln'>118</a></td><td>      <a id="118c7" class="tk">qY_1</a> = <a id="118c14" class="tk">MAX_uint16_T</a>;</td></tr>
+<tr name="119" id="119">
+<td><a id="l119" class='ln'>119</a></td><td>    <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="120" id="120">
+<td><a id="l120" class='ln'>120</a></td><td>      <a id="120c7" class="tk">qY_1</a> = (<a id="120c15" class="tk">uint16_T</a>)((<a id="120c26" class="tk">uint16_T</a>)<a id="120c35" class="tk">qY</a> <a id="120c38" class="tk">&lt;&lt;</a> 1);</td></tr>
+<tr name="121" id="121">
+<td><a id="l121" class='ln'>121</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="122" id="122">
+<td><a id="l122" class='ln'>122</a></td><td></td></tr>
+<tr name="123" id="123">
+<td><a id="l123" class='ln'>123</a></td><td>    <span class="kw">if</span> (<a id="123c9" class="tk">qY_1</a> <a id="123c14" class="tk">&gt;=</a> (<a id="123c18" class="tk">uint16_T</a>)<a id="123c27" class="tk">tmp</a>) <span class="br">{</span></td></tr>
+<tr name="124" id="124">
+<td><a id="l124" class='ln'>124</a></td><td>      <span class="kw">if</span> (<a id="124c11" class="tk">tmp_0</a> <a id="124c17" class="tk">&gt;</a> 65535U) <span class="br">{</span></td></tr>
+<tr name="125" id="125">
+<td><a id="l125" class='ln'>125</a></td><td>        <a id="125c9" class="tk">tmp_0</a> = 65535U;</td></tr>
+<tr name="126" id="126">
+<td><a id="l126" class='ln'>126</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="127" id="127">
+<td><a id="l127" class='ln'>127</a></td><td></td></tr>
+<tr name="128" id="128">
+<td><a id="l128" class='ln'>128</a></td><td>      <span class="kw">if</span> ((<a id="128c12" class="tk">uint16_T</a>)<a id="128c21" class="tk">qY</a> <a id="128c24" class="tk">&gt;=</a> (<a id="128c28" class="tk">int32_T</a>)<a id="128c36" class="tk">tmp_0</a>) <span class="br">{</span></td></tr>
+<tr name="129" id="129">
+<td><a id="l129" class='ln'>129</a></td><td>        <a id="129c9" class="tk">qY_0</a> = <a id="129c16" class="tk">rtu_half_pwm_count</a> <a id="129c35" class="tk">-</a> <span class="ct">/*MW:OvSatOk*/</span> 1U;</td></tr>
+<tr name="130" id="130">
+<td><a id="l130" class='ln'>130</a></td><td>        <span class="kw">if</span> (<a id="130c13" class="tk">rtu_half_pwm_count</a> <a id="130c32" class="tk">-</a> 1U <a id="130c37" class="tk">&gt;</a> <a id="130c39" class="tk">rtu_half_pwm_count</a>) <span class="br">{</span></td></tr>
+<tr name="131" id="131">
+<td><a id="l131" class='ln'>131</a></td><td>          <a id="131c11" class="tk">qY_0</a> = 0U;</td></tr>
+<tr name="132" id="132">
+<td><a id="l132" class='ln'>132</a></td><td>        <span class="br">}</span></td></tr>
+<tr name="133" id="133">
+<td><a id="l133" class='ln'>133</a></td><td></td></tr>
+<tr name="134" id="134">
+<td><a id="l134" class='ln'>134</a></td><td>        <a id="134c9" class="tk">*</a><a id="134c10" class="tk">rty_o_samp_p1</a> = (<a id="134c27" class="tk">uint16_T</a>)<a id="134c36" class="tk">qY_0</a>;</td></tr>
+<tr name="135" id="135">
+<td><a id="l135" class='ln'>135</a></td><td>      <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="136" id="136">
+<td><a id="l136" class='ln'>136</a></td><td>        <a id="136c9" class="tk">tmp_0</a> = (<a id="136c18" class="tk">uint32_T</a>)<a id="136c27" class="tk">rtu_midle</a> <a id="136c37" class="tk">+</a> <a id="136c39" class="tk">rtu_t_samp_before</a>;</td></tr>
+<tr name="137" id="137">
+<td><a id="l137" class='ln'>137</a></td><td>        <span class="kw">if</span> (<a id="137c13" class="tk">tmp_0</a> <a id="137c19" class="tk">&gt;</a> 65535U) <span class="br">{</span></td></tr>
+<tr name="138" id="138">
+<td><a id="l138" class='ln'>138</a></td><td>          <a id="138c11" class="tk">tmp_0</a> = 65535U;</td></tr>
+<tr name="139" id="139">
+<td><a id="l139" class='ln'>139</a></td><td>        <span class="br">}</span></td></tr>
+<tr name="140" id="140">
+<td><a id="l140" class='ln'>140</a></td><td></td></tr>
+<tr name="141" id="141">
+<td><a id="l141" class='ln'>141</a></td><td>        <span class="kw">if</span> ((<a id="141c14" class="tk">uint16_T</a>)<a id="141c23" class="tk">tmp_0</a> <a id="141c29" class="tk">&gt;=</a> <a id="141c32" class="tk">rtu_half_pwm_count</a>) <span class="br">{</span></td></tr>
+<tr name="142" id="142">
+<td><a id="l142" class='ln'>142</a></td><td>          <span class="kw">if</span> (<a id="142c15" class="tk">rtu_half_pwm_count</a> <a id="142c34" class="tk">&gt;</a> 32767) <span class="br">{</span></td></tr>
+<tr name="143" id="143">
+<td><a id="l143" class='ln'>143</a></td><td>            <a id="143c13" class="tk">qY_1</a> = <a id="143c20" class="tk">MAX_uint16_T</a>;</td></tr>
+<tr name="144" id="144">
+<td><a id="l144" class='ln'>144</a></td><td>          <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="145" id="145">
+<td><a id="l145" class='ln'>145</a></td><td>            <a id="145c13" class="tk">qY_1</a> = (<a id="145c21" class="tk">uint16_T</a>)(<a id="145c31" class="tk">rtu_half_pwm_count</a> <a id="145c50" class="tk">&lt;&lt;</a> 1);</td></tr>
+<tr name="146" id="146">
+<td><a id="l146" class='ln'>146</a></td><td>          <span class="br">}</span></td></tr>
+<tr name="147" id="147">
+<td><a id="l147" class='ln'>147</a></td><td></td></tr>
+<tr name="148" id="148">
+<td><a id="l148" class='ln'>148</a></td><td>          <a id="148c11" class="tk">qY_0</a> = (<a id="148c19" class="tk">uint32_T</a>)<a id="148c28" class="tk">qY_1</a> <a id="148c33" class="tk">-</a> <span class="ct">/*MW:OvSatOk*/</span> (<a id="148c51" class="tk">uint16_T</a>)<a id="148c60" class="tk">tmp_0</a>;</td></tr>
+<tr name="149" id="149">
+<td><a id="l149" class='ln'>149</a></td><td>          <span class="kw">if</span> (<a id="149c15" class="tk">qY_0</a> <a id="149c20" class="tk">&gt;</a> <a id="149c22" class="tk">qY_1</a>) <span class="br">{</span></td></tr>
+<tr name="150" id="150">
+<td><a id="l150" class='ln'>150</a></td><td>            <a id="150c13" class="tk">qY_0</a> = 0U;</td></tr>
+<tr name="151" id="151">
+<td><a id="l151" class='ln'>151</a></td><td>          <span class="br">}</span></td></tr>
+<tr name="152" id="152">
+<td><a id="l152" class='ln'>152</a></td><td></td></tr>
+<tr name="153" id="153">
+<td><a id="l153" class='ln'>153</a></td><td>          <a id="153c11" class="tk">qY</a> = <a id="153c16" class="tk">qY_0</a> <a id="153c21" class="tk">-</a> <span class="ct">/*MW:OvSatOk*/</span> 1U;</td></tr>
+<tr name="154" id="154">
+<td><a id="l154" class='ln'>154</a></td><td>          <span class="kw">if</span> (<a id="154c15" class="tk">qY_0</a> <a id="154c20" class="tk">-</a> 1U <a id="154c25" class="tk">&gt;</a> <a id="154c27" class="tk">qY_0</a>) <span class="br">{</span></td></tr>
+<tr name="155" id="155">
+<td><a id="l155" class='ln'>155</a></td><td>            <a id="155c13" class="tk">qY</a> = 0U;</td></tr>
+<tr name="156" id="156">
+<td><a id="l156" class='ln'>156</a></td><td>          <span class="br">}</span></td></tr>
+<tr name="157" id="157">
+<td><a id="l157" class='ln'>157</a></td><td></td></tr>
+<tr name="158" id="158">
+<td><a id="l158" class='ln'>158</a></td><td>          <a id="158c11" class="tk">*</a><a id="158c12" class="tk">rty_o_samp_p2</a> = (<a id="158c29" class="tk">uint16_T</a>)<a id="158c38" class="tk">qY</a>;</td></tr>
+<tr name="159" id="159">
+<td><a id="l159" class='ln'>159</a></td><td>        <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="160" id="160">
+<td><a id="l160" class='ln'>160</a></td><td>          <a id="160c11" class="tk">*</a><a id="160c12" class="tk">rty_o_samp_p1</a> = (<a id="160c29" class="tk">uint16_T</a>)<a id="160c38" class="tk">tmp_0</a>;</td></tr>
+<tr name="161" id="161">
+<td><a id="l161" class='ln'>161</a></td><td>        <span class="br">}</span></td></tr>
+<tr name="162" id="162">
+<td><a id="l162" class='ln'>162</a></td><td>      <span class="br">}</span></td></tr>
+<tr name="163" id="163">
+<td><a id="l163" class='ln'>163</a></td><td>    <span class="br">}</span></td></tr>
+<tr name="164" id="164">
+<td><a id="l164" class='ln'>164</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="165" id="165">
+<td><a id="l165" class='ln'>165</a></td><td><span class="br">}</span></td></tr>
+<tr name="166" id="166">
+<td><a id="l166" class='ln'>166</a></td><td></td></tr>
+<tr name="167" id="167">
+<td><a id="l167" class='ln'>167</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="168" id="168">
+<td><a id="l168" class='ln'>168</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="169" id="169">
+<td><a id="l169" class='ln'>169</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="170" id="170">
+<td><a id="l170" class='ln'>170</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="171" id="171">
+<td><a id="l171" class='ln'>171</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="172" id="172">
+<td><a id="l172" class='ln'>172</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

+ 94 - 0
Simulink/PMSM_Controller_ert_rtw/html/Shunt_Three_Sample_Point_h.html

@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: Shunt_Three_Sample_Point.h</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="pp">#ifndef</span> <a id="18c9" class="tk">RTW_HEADER_Shunt_Three_Sample_Point_h_</a></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td><span class="pp">#define</span> <a id="19c9" class="tk">RTW_HEADER_Shunt_Three_Sample_Point_h_</a></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td><span class="pp">#ifndef</span> <a id="20c9" class="tk">PMSM_Controller_COMMON_INCLUDES_</a></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="pp">#define</span> <a id="21c9" class="tk">PMSM_Controller_COMMON_INCLUDES_</a></td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td><span class="pp">#include "rtwtypes.h"</span></td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td><span class="pp">#endif</span>                                 <span class="ct">/* PMSM_Controller_COMMON_INCLUDES_ */</span></td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td></td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td><span class="pp">#include "PMSM_Controller_types.h"</span></td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td></td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td><span class="kw">extern</span> <span class="kw">void</span> <a id="27c13" class="tk">Shunt_Three_Sample_Point</a>(<a id="27c38" class="tk">uint16_T</a> <a id="27c47" class="tk">rtu_low</a>, <a id="27c56" class="tk">uint16_T</a> <a id="27c65" class="tk">rtu_midle</a>,</td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td>  <a id="28c3" class="tk">uint8_T</a> <a id="28c11" class="tk">rtu_i_sector</a>, <a id="28c25" class="tk">uint16_T</a> <a id="28c34" class="tk">rtu_half_pwm_count</a>, <a id="28c54" class="tk">uint16_T</a> <a id="28c63" class="tk">rtu_t_adc</a>,</td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td>  <a id="29c3" class="tk">uint16_T</a> <a id="29c12" class="tk">rtu_t_dead</a>, <a id="29c24" class="tk">uint16_T</a> <a id="29c33" class="tk">rtu_t_samp_before</a>, <a id="29c52" class="tk">uint16_T</a> <a id="29c61" class="tk">*</a><a id="29c62" class="tk">rty_o_samp_p1</a>,</td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td>  <a id="30c3" class="tk">uint16_T</a> <a id="30c12" class="tk">*</a><a id="30c13" class="tk">rty_o_samp_p2</a>, <a id="30c28" class="tk">uint8_T</a> <a id="30c36" class="tk">*</a><a id="30c37" class="tk">rty_o_sector</a>);</td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td></td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td><span class="pp">#endif</span>                              <span class="ct">/* RTW_HEADER_Shunt_Three_Sample_Point_h_ */</span></td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td></td></tr>
+<tr name="34" id="34">
+<td><a id="l34" class='ln'>34</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="35" id="35">
+<td><a id="l35" class='ln'>35</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="36" id="36">
+<td><a id="l36" class='ln'>36</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="37" id="37">
+<td><a id="l37" class='ln'>37</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="38" id="38">
+<td><a id="l38" class='ln'>38</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="39" id="39">
+<td><a id="l39" class='ln'>39</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

+ 184 - 0
Simulink/PMSM_Controller_ert_rtw/html/css/coder_app.css

@@ -0,0 +1,184 @@
+/* Copyright 2013-2018 The MathWorks, Inc. */
+pre#code {    
+    font-family: Consolas, Courier;
+    font-size: small;
+}
+
+.ct { 
+    font-style: italic; 
+    color: #117755 
+} /* comment */
+.pp { 
+    font-weight:bold;   
+    color: #992211 
+} /* preprocessor */
+.kw, .br { 
+    font-weight:bold;   
+    color: #112266
+} /* keyword or brace */
+.dt { 
+    font-weight:bold;   
+    color: #112266 
+} /* data type */
+.tk { 
+    font-style: normal;   
+    color: #112266
+} /* regular token */
+pre#code a.req {
+    text-decoration: none;
+    color: #112266
+}
+pre#code a.req_active {
+    cursor: pointer;  
+    text-decoration: underline;
+}
+pre#code a.req_active:hover { 
+    cursor: pointer;  
+    color: blue; 
+    text-decoration: underline
+}
+pre#code a.blk {
+    text-decoration: none;
+}
+pre#code a.blk_active {
+    cursor: pointer;  
+    text-decoration: underline;
+}
+pre#code a.blk_active:hover { 
+    cursor: pointer;  
+    color: blue; 
+    text-decoration: underline
+}
+a.hilite { 
+    font-style: normal;   
+    color: black;
+    background-color: rgba(150, 12, 116, 0.1);
+} /* highlight token */
+tr.hilite { 
+    font-style: normal;   
+    color: black;
+    background-color: rgba(150, 12, 116, 0.1);
+} /* highlight row */
+a.hiliteToken, tr.hiliteToken, td.hiliteToken {
+    background-color: #ffff99;
+}
+.hiliteCurrentLine, tr.hiliteCurrentLine > td {
+    font-style: normal;   
+    color: black;   
+    background-color: rgba(150, 12, 116, 0.1);
+    box-shadow:  inset 0 1px 0 0 rgba(150, 12, 116, 0.25), inset 0 -1px 0 0 rgba(150, 12, 116, 0.25);
+}
+span.hiliteTotalLine {
+    font-style: normal;   
+    color: #aff;
+} 
+a.tk {
+    text-decoration: none;
+}
+a.tk:hover {
+    text-decoration: none;
+}
+a.active {
+    text-decoration: underline;
+}
+a.active:hover { 
+    cursor: pointer;  
+    color: blue; 
+    text-decoration: underline
+} /* hyperlink */
+table.code {
+    border: 0px    
+}
+table.code td {
+    vertical-align: top;
+}
+table.code td.highlightedCurrent {
+    background-color: rgba(150, 12, 116, 0.1);
+}
+table.code > tr:first {
+    text-align: right;
+} /* hyperlink */
+
+ul.popup_attrib_list {	
+    list-style-type:none; 
+    display: block;		
+    margin: 0;
+    padding: 0;	
+}
+ul.popup_attrib_list li {
+    list-style-type:none; 
+    display: inline;
+    margin: 0 18px 0 0;
+    padding: 0;	
+}
+.highlighted {
+    background-color:yellow;
+}
+a:class1 {
+    color: -webkit-link;
+    text-decoration: underline;
+    cursor: hand;
+}
+.scroll
+{
+    height:80px;
+    overflow:scroll;
+    overflow-x:hidden;
+}
+div#popup_window {
+    position: absolute;
+    background-color: rgb(203,203,255);
+    border: solid 3px #ECECEC;		
+    border-radius: 5px;
+    /* shadow box around the window*/
+    -moz-box-shadow: 0 3px 3px rgba(0,0,0,0.4), inset 0 1px #FFF;
+    -webkit-box-shadow: 0 3px 3px rgba(0,0,0,0.4), inset 0 1px #FFF;
+    box-shadow: 0 3px 3px rgba(0,0,0,0.4), inset 0 1px #FFF;	
+    padding: 2px;
+}
+div#popup_window a {
+    text-decoration: none;
+    color: green;
+}
+div#popup_window a:hover {
+    cursor: pointer;
+    text-decoration: underline;
+    color: blue;
+}
+div#popup_window tr.selected {
+    background-color: #ffff99;
+}
+div#token_usage_nav {
+    border-bottom: 1px solid gray;
+}
+table#token_usage_details {
+    cellpadding: 100px;
+    table-layout:fixed;
+    border: 0px;		
+}
+.token_usage_details_tabrow {
+    width: 40px;
+}
+table#token_usage_details td {
+    padding-right: 5em;	
+    padding-left: 1em;	
+}
+.token_usage_details_tabrow:hover {
+    background-color: gray;
+}
+.nav_table td.hidden {
+    display: none;
+}
+table#codeTbl tr td {
+    color: #112266
+}
+table#codeTbl tr td {
+    padding-left: 10px;
+}
+table#codeTbl tr td:first-child {
+    font-style: italic; 
+    color: #888888;
+    text-align: right;
+    padding-left:0px;
+}
+

+ 133 - 0
Simulink/PMSM_Controller_ert_rtw/html/define.js

@@ -0,0 +1,133 @@
+function CodeDefine() { 
+this.def = new Array();
+this.def["ert_main.c:rtM_"] = {file: "ert_main_c.html",line:23,type:"var"};
+this.def["ert_main.c:rtMPtr"] = {file: "ert_main_c.html",line:24,type:"var"};
+this.def["ert_main.c:rtDW"] = {file: "ert_main_c.html",line:25,type:"var"};
+this.def["ert_main.c:rtU_Vdc"] = {file: "ert_main_c.html",line:28,type:"var"};
+this.def["ert_main.c:rtU_Ts"] = {file: "ert_main_c.html",line:31,type:"var"};
+this.def["ert_main.c:rtU_adc_a"] = {file: "ert_main_c.html",line:34,type:"var"};
+this.def["ert_main.c:rtU_adc_b"] = {file: "ert_main_c.html",line:37,type:"var"};
+this.def["ert_main.c:rtU_rotor_angle"] = {file: "ert_main_c.html",line:40,type:"var"};
+this.def["ert_main.c:rtU_rotor_speed"] = {file: "ert_main_c.html",line:43,type:"var"};
+this.def["ert_main.c:rtU_input_target"] = {file: "ert_main_c.html",line:46,type:"var"};
+this.def["ert_main.c:rtU_hall_a"] = {file: "ert_main_c.html",line:49,type:"var"};
+this.def["ert_main.c:rtU_hall_b"] = {file: "ert_main_c.html",line:52,type:"var"};
+this.def["ert_main.c:rtU_hall_c"] = {file: "ert_main_c.html",line:55,type:"var"};
+this.def["ert_main.c:rtU_hw_count"] = {file: "ert_main_c.html",line:58,type:"var"};
+this.def["ert_main.c:rtU_b_motor_enable"] = {file: "ert_main_c.html",line:61,type:"var"};
+this.def["ert_main.c:rtU_b_cruise_enable"] = {file: "ert_main_c.html",line:64,type:"var"};
+this.def["ert_main.c:rtU_n_ctrl_type"] = {file: "ert_main_c.html",line:67,type:"var"};
+this.def["ert_main.c:rtY_pwm_counts"] = {file: "ert_main_c.html",line:70,type:"var"};
+this.def["ert_main.c:rtY_sector"] = {file: "ert_main_c.html",line:73,type:"var"};
+this.def["rt_OneStep"] = {file: "ert_main_c.html",line:87,type:"fcn"};
+this.def["main"] = {file: "ert_main_c.html",line:126,type:"fcn"};
+this.def["plook_u16u16_evencka"] = {file: "PMSM_Controller_c.html",line:22,type:"fcn"};
+this.def["div_nde_s32_floor"] = {file: "PMSM_Controller_c.html",line:47,type:"fcn"};
+this.def["PMSM_Controller.c:rate_scheduler"] = {file: "PMSM_Controller_c.html",line:58,type:"fcn"};
+this.def["rt_modd_snf"] = {file: "PMSM_Controller_c.html",line:70,type:"fcn"};
+this.def["rt_roundd_snf"] = {file: "PMSM_Controller_c.html",line:108,type:"fcn"};
+this.def["PMSM_Controller_step"] = {file: "PMSM_Controller_c.html",line:127,type:"fcn"};
+this.def["PMSM_Controller_initialize"] = {file: "PMSM_Controller_c.html",line:1025,type:"fcn"};
+this.def["DW"] = {file: "PMSM_Controller_h.html",line:50,type:"type"};
+this.def["ConstP"] = {file: "PMSM_Controller_h.html",line:63,type:"type"};
+this.def["RT_MODEL"] = {file: "PMSM_Controller_types_h.html",line:24,type:"type"};
+this.def["Shunt_Three_Sample_Point"] = {file: "Shunt_Three_Sample_Point_c.html",line:25,type:"fcn"};
+this.def["rtConstP"] = {file: "PMSM_Controller_data_c.html",line:22,type:"var"};
+this.def["rtGetInf"] = {file: "rtGetInf_c.html",line:29,type:"fcn"};
+this.def["rtGetInfF"] = {file: "rtGetInf_c.html",line:53,type:"fcn"};
+this.def["rtGetMinusInf"] = {file: "rtGetInf_c.html",line:64,type:"fcn"};
+this.def["rtGetMinusInfF"] = {file: "rtGetInf_c.html",line:88,type:"fcn"};
+this.def["rtGetNaN"] = {file: "rtGetNaN_c.html",line:29,type:"fcn"};
+this.def["rtGetNaNF"] = {file: "rtGetNaN_c.html",line:53,type:"fcn"};
+this.def["rtInf"] = {file: "rt_nonfinite_c.html",line:28,type:"var"};
+this.def["rtMinusInf"] = {file: "rt_nonfinite_c.html",line:29,type:"var"};
+this.def["rtNaN"] = {file: "rt_nonfinite_c.html",line:30,type:"var"};
+this.def["rtInfF"] = {file: "rt_nonfinite_c.html",line:31,type:"var"};
+this.def["rtMinusInfF"] = {file: "rt_nonfinite_c.html",line:32,type:"var"};
+this.def["rtNaNF"] = {file: "rt_nonfinite_c.html",line:33,type:"var"};
+this.def["rt_InitInfAndNaN"] = {file: "rt_nonfinite_c.html",line:39,type:"fcn"};
+this.def["rtIsInf"] = {file: "rt_nonfinite_c.html",line:51,type:"fcn"};
+this.def["rtIsInfF"] = {file: "rt_nonfinite_c.html",line:57,type:"fcn"};
+this.def["rtIsNaN"] = {file: "rt_nonfinite_c.html",line:63,type:"fcn"};
+this.def["rtIsNaNF"] = {file: "rt_nonfinite_c.html",line:85,type:"fcn"};
+this.def["BigEndianIEEEDouble"] = {file: "rt_nonfinite_h.html",line:39,type:"type"};
+this.def["LittleEndianIEEEDouble"] = {file: "rt_nonfinite_h.html",line:46,type:"type"};
+this.def["IEEESingle"] = {file: "rt_nonfinite_h.html",line:53,type:"type"};
+this.def["int8_T"] = {file: "rtwtypes_h.html",line:49,type:"type"};
+this.def["uint8_T"] = {file: "rtwtypes_h.html",line:50,type:"type"};
+this.def["int16_T"] = {file: "rtwtypes_h.html",line:51,type:"type"};
+this.def["uint16_T"] = {file: "rtwtypes_h.html",line:52,type:"type"};
+this.def["int32_T"] = {file: "rtwtypes_h.html",line:53,type:"type"};
+this.def["uint32_T"] = {file: "rtwtypes_h.html",line:54,type:"type"};
+this.def["int64_T"] = {file: "rtwtypes_h.html",line:55,type:"type"};
+this.def["uint64_T"] = {file: "rtwtypes_h.html",line:56,type:"type"};
+this.def["real32_T"] = {file: "rtwtypes_h.html",line:57,type:"type"};
+this.def["real64_T"] = {file: "rtwtypes_h.html",line:58,type:"type"};
+this.def["real_T"] = {file: "rtwtypes_h.html",line:64,type:"type"};
+this.def["time_T"] = {file: "rtwtypes_h.html",line:65,type:"type"};
+this.def["boolean_T"] = {file: "rtwtypes_h.html",line:66,type:"type"};
+this.def["int_T"] = {file: "rtwtypes_h.html",line:67,type:"type"};
+this.def["uint_T"] = {file: "rtwtypes_h.html",line:68,type:"type"};
+this.def["ulong_T"] = {file: "rtwtypes_h.html",line:69,type:"type"};
+this.def["ulonglong_T"] = {file: "rtwtypes_h.html",line:70,type:"type"};
+this.def["char_T"] = {file: "rtwtypes_h.html",line:71,type:"type"};
+this.def["uchar_T"] = {file: "rtwtypes_h.html",line:72,type:"type"};
+this.def["byte_T"] = {file: "rtwtypes_h.html",line:73,type:"type"};
+this.def["pointer_T"] = {file: "rtwtypes_h.html",line:94,type:"type"};
+}
+CodeDefine.instance = new CodeDefine();
+var testHarnessInfo = {OwnerFileName: "", HarnessOwner: "", HarnessName: "", IsTestHarness: "0"};
+var relPathToBuildDir = "../ert_main.c";
+var fileSep = "\\";
+var isPC = true;
+function Html2SrcLink() {
+	this.html2SrcPath = new Array;
+	this.html2Root = new Array;
+	this.html2SrcPath["ert_main_c.html"] = "../ert_main.c";
+	this.html2Root["ert_main_c.html"] = "ert_main_c.html";
+	this.html2SrcPath["PMSM_Controller_c.html"] = "../PMSM_Controller.c";
+	this.html2Root["PMSM_Controller_c.html"] = "PMSM_Controller_c.html";
+	this.html2SrcPath["PMSM_Controller_h.html"] = "../PMSM_Controller.h";
+	this.html2Root["PMSM_Controller_h.html"] = "PMSM_Controller_h.html";
+	this.html2SrcPath["PMSM_Controller_private_h.html"] = "../PMSM_Controller_private.h";
+	this.html2Root["PMSM_Controller_private_h.html"] = "PMSM_Controller_private_h.html";
+	this.html2SrcPath["PMSM_Controller_types_h.html"] = "../PMSM_Controller_types.h";
+	this.html2Root["PMSM_Controller_types_h.html"] = "PMSM_Controller_types_h.html";
+	this.html2SrcPath["Shunt_Three_Sample_Point_c.html"] = "../Shunt_Three_Sample_Point.c";
+	this.html2Root["Shunt_Three_Sample_Point_c.html"] = "Shunt_Three_Sample_Point_c.html";
+	this.html2SrcPath["Shunt_Three_Sample_Point_h.html"] = "../Shunt_Three_Sample_Point.h";
+	this.html2Root["Shunt_Three_Sample_Point_h.html"] = "Shunt_Three_Sample_Point_h.html";
+	this.html2SrcPath["PMSM_Controller_data_c.html"] = "../PMSM_Controller_data.c";
+	this.html2Root["PMSM_Controller_data_c.html"] = "PMSM_Controller_data_c.html";
+	this.html2SrcPath["rtGetInf_c.html"] = "../rtGetInf.c";
+	this.html2Root["rtGetInf_c.html"] = "rtGetInf_c.html";
+	this.html2SrcPath["rtGetInf_h.html"] = "../rtGetInf.h";
+	this.html2Root["rtGetInf_h.html"] = "rtGetInf_h.html";
+	this.html2SrcPath["rtGetNaN_c.html"] = "../rtGetNaN.c";
+	this.html2Root["rtGetNaN_c.html"] = "rtGetNaN_c.html";
+	this.html2SrcPath["rtGetNaN_h.html"] = "../rtGetNaN.h";
+	this.html2Root["rtGetNaN_h.html"] = "rtGetNaN_h.html";
+	this.html2SrcPath["rt_defines_h.html"] = "../rt_defines.h";
+	this.html2Root["rt_defines_h.html"] = "rt_defines_h.html";
+	this.html2SrcPath["rt_nonfinite_c.html"] = "../rt_nonfinite.c";
+	this.html2Root["rt_nonfinite_c.html"] = "rt_nonfinite_c.html";
+	this.html2SrcPath["rt_nonfinite_h.html"] = "../rt_nonfinite.h";
+	this.html2Root["rt_nonfinite_h.html"] = "rt_nonfinite_h.html";
+	this.html2SrcPath["rtwtypes_h.html"] = "../rtwtypes.h";
+	this.html2Root["rtwtypes_h.html"] = "rtwtypes_h.html";
+	this.getLink2Src = function (htmlFileName) {
+		 if (this.html2SrcPath[htmlFileName])
+			 return this.html2SrcPath[htmlFileName];
+		 else
+			 return null;
+	}
+	this.getLinkFromRoot = function (htmlFileName) {
+		 if (this.html2Root[htmlFileName])
+			 return this.html2Root[htmlFileName];
+		 else
+			 return null;
+	}
+}
+Html2SrcLink.instance = new Html2SrcLink();
+var fileList = [
+"ert_main_c.html","PMSM_Controller_c.html","PMSM_Controller_h.html","PMSM_Controller_private_h.html","PMSM_Controller_types_h.html","Shunt_Three_Sample_Point_c.html","Shunt_Three_Sample_Point_h.html","PMSM_Controller_data_c.html","rtGetInf_c.html","rtGetInf_h.html","rtGetNaN_c.html","rtGetNaN_h.html","rt_defines_h.html","rt_nonfinite_c.html","rt_nonfinite_h.html","rtwtypes_h.html"];

+ 342 - 0
Simulink/PMSM_Controller_ert_rtw/html/ert_main_c.html

@@ -0,0 +1,342 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: ert_main.c</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="pp">#include &lt;stddef.h&gt;</span></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td><span class="pp">#include &lt;stdio.h&gt;</span>              <span class="ct">/* This ert_main.c example uses printf/fflush */</span></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td><span class="pp">#include "PMSM_Controller.h"</span>           <span class="ct">/* Model's header file */</span></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="pp">#include "rtwtypes.h"</span></td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td></td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td><span class="kw">static</span> <a id="23c8" class="tk">RT_MODEL</a> <a id="23c17" class="tk">rtM_</a>;</td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td><span class="kw">static</span> <a id="24c8" class="tk">RT_MODEL</a> <a id="24c17" class="tk">*</a><span class="kw">const</span> <a id="24c24" class="tk">rtMPtr</a> = <a id="24c33" class="tk">&amp;</a><a id="24c34" class="tk">rtM_</a>; <span class="ct">/* Real-time model */</span></td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td><span class="kw">static</span> <a id="25c8" class="tk">DW</a> <a id="25c11" class="tk">rtDW</a>;                        <span class="ct">/* Observable states */</span></td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td></td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td><span class="ct">/* '&lt;Root&gt;/Vdc' */</span></td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td><span class="kw">static</span> <a id="28c8" class="tk">int16_T</a> <a id="28c16" class="tk">rtU_Vdc</a>;</td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td></td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td><span class="ct">/* '&lt;Root&gt;/Ts' */</span></td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td><span class="kw">static</span> <a id="31c8" class="tk">uint16_T</a> <a id="31c17" class="tk">rtU_Ts</a>;</td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td></td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td><span class="ct">/* '&lt;Root&gt;/adc_a' */</span></td></tr>
+<tr name="34" id="34">
+<td><a id="l34" class='ln'>34</a></td><td><span class="kw">static</span> <a id="34c8" class="tk">int16_T</a> <a id="34c16" class="tk">rtU_adc_a</a>;</td></tr>
+<tr name="35" id="35">
+<td><a id="l35" class='ln'>35</a></td><td></td></tr>
+<tr name="36" id="36">
+<td><a id="l36" class='ln'>36</a></td><td><span class="ct">/* '&lt;Root&gt;/adc_b' */</span></td></tr>
+<tr name="37" id="37">
+<td><a id="l37" class='ln'>37</a></td><td><span class="kw">static</span> <a id="37c8" class="tk">int16_T</a> <a id="37c16" class="tk">rtU_adc_b</a>;</td></tr>
+<tr name="38" id="38">
+<td><a id="l38" class='ln'>38</a></td><td></td></tr>
+<tr name="39" id="39">
+<td><a id="l39" class='ln'>39</a></td><td><span class="ct">/* '&lt;Root&gt;/rotor_angle' */</span></td></tr>
+<tr name="40" id="40">
+<td><a id="l40" class='ln'>40</a></td><td><span class="kw">static</span> <a id="40c8" class="tk">real_T</a> <a id="40c15" class="tk">rtU_rotor_angle</a>;</td></tr>
+<tr name="41" id="41">
+<td><a id="l41" class='ln'>41</a></td><td></td></tr>
+<tr name="42" id="42">
+<td><a id="l42" class='ln'>42</a></td><td><span class="ct">/* '&lt;Root&gt;/rotor_speed' */</span></td></tr>
+<tr name="43" id="43">
+<td><a id="l43" class='ln'>43</a></td><td><span class="kw">static</span> <a id="43c8" class="tk">int16_T</a> <a id="43c16" class="tk">rtU_rotor_speed</a>;</td></tr>
+<tr name="44" id="44">
+<td><a id="l44" class='ln'>44</a></td><td></td></tr>
+<tr name="45" id="45">
+<td><a id="l45" class='ln'>45</a></td><td><span class="ct">/* '&lt;Root&gt;/input_target' */</span></td></tr>
+<tr name="46" id="46">
+<td><a id="l46" class='ln'>46</a></td><td><span class="kw">static</span> <a id="46c8" class="tk">int16_T</a> <a id="46c16" class="tk">rtU_input_target</a>;</td></tr>
+<tr name="47" id="47">
+<td><a id="l47" class='ln'>47</a></td><td></td></tr>
+<tr name="48" id="48">
+<td><a id="l48" class='ln'>48</a></td><td><span class="ct">/* '&lt;Root&gt;/hall_a' */</span></td></tr>
+<tr name="49" id="49">
+<td><a id="l49" class='ln'>49</a></td><td><span class="kw">static</span> <a id="49c8" class="tk">uint8_T</a> <a id="49c16" class="tk">rtU_hall_a</a>;</td></tr>
+<tr name="50" id="50">
+<td><a id="l50" class='ln'>50</a></td><td></td></tr>
+<tr name="51" id="51">
+<td><a id="l51" class='ln'>51</a></td><td><span class="ct">/* '&lt;Root&gt;/hall_b' */</span></td></tr>
+<tr name="52" id="52">
+<td><a id="l52" class='ln'>52</a></td><td><span class="kw">static</span> <a id="52c8" class="tk">uint8_T</a> <a id="52c16" class="tk">rtU_hall_b</a>;</td></tr>
+<tr name="53" id="53">
+<td><a id="l53" class='ln'>53</a></td><td></td></tr>
+<tr name="54" id="54">
+<td><a id="l54" class='ln'>54</a></td><td><span class="ct">/* '&lt;Root&gt;/hall_c' */</span></td></tr>
+<tr name="55" id="55">
+<td><a id="l55" class='ln'>55</a></td><td><span class="kw">static</span> <a id="55c8" class="tk">uint8_T</a> <a id="55c16" class="tk">rtU_hall_c</a>;</td></tr>
+<tr name="56" id="56">
+<td><a id="l56" class='ln'>56</a></td><td></td></tr>
+<tr name="57" id="57">
+<td><a id="l57" class='ln'>57</a></td><td><span class="ct">/* '&lt;Root&gt;/hw_count' */</span></td></tr>
+<tr name="58" id="58">
+<td><a id="l58" class='ln'>58</a></td><td><span class="kw">static</span> <a id="58c8" class="tk">uint32_T</a> <a id="58c17" class="tk">rtU_hw_count</a>;</td></tr>
+<tr name="59" id="59">
+<td><a id="l59" class='ln'>59</a></td><td></td></tr>
+<tr name="60" id="60">
+<td><a id="l60" class='ln'>60</a></td><td><span class="ct">/* '&lt;Root&gt;/b_motor_enable' */</span></td></tr>
+<tr name="61" id="61">
+<td><a id="l61" class='ln'>61</a></td><td><span class="kw">static</span> <a id="61c8" class="tk">boolean_T</a> <a id="61c18" class="tk">rtU_b_motor_enable</a>;</td></tr>
+<tr name="62" id="62">
+<td><a id="l62" class='ln'>62</a></td><td></td></tr>
+<tr name="63" id="63">
+<td><a id="l63" class='ln'>63</a></td><td><span class="ct">/* '&lt;Root&gt;/b_cruise_enable' */</span></td></tr>
+<tr name="64" id="64">
+<td><a id="l64" class='ln'>64</a></td><td><span class="kw">static</span> <a id="64c8" class="tk">boolean_T</a> <a id="64c18" class="tk">rtU_b_cruise_enable</a>;</td></tr>
+<tr name="65" id="65">
+<td><a id="l65" class='ln'>65</a></td><td></td></tr>
+<tr name="66" id="66">
+<td><a id="l66" class='ln'>66</a></td><td><span class="ct">/* '&lt;Root&gt;/n_ctrl_type' */</span></td></tr>
+<tr name="67" id="67">
+<td><a id="l67" class='ln'>67</a></td><td><span class="kw">static</span> <a id="67c8" class="tk">uint8_T</a> <a id="67c16" class="tk">rtU_n_ctrl_type</a>;</td></tr>
+<tr name="68" id="68">
+<td><a id="l68" class='ln'>68</a></td><td></td></tr>
+<tr name="69" id="69">
+<td><a id="l69" class='ln'>69</a></td><td><span class="ct">/* '&lt;Root&gt;/pwm_counts' */</span></td></tr>
+<tr name="70" id="70">
+<td><a id="l70" class='ln'>70</a></td><td><span class="kw">static</span> <a id="70c8" class="tk">uint16_T</a> <a id="70c17" class="tk">rtY_pwm_counts</a>[8];</td></tr>
+<tr name="71" id="71">
+<td><a id="l71" class='ln'>71</a></td><td></td></tr>
+<tr name="72" id="72">
+<td><a id="l72" class='ln'>72</a></td><td><span class="ct">/* '&lt;Root&gt;/sector' */</span></td></tr>
+<tr name="73" id="73">
+<td><a id="l73" class='ln'>73</a></td><td><span class="kw">static</span> <a id="73c8" class="tk">uint8_T</a> <a id="73c16" class="tk">rtY_sector</a>;</td></tr>
+<tr name="74" id="74">
+<td><a id="l74" class='ln'>74</a></td><td></td></tr>
+<tr name="75" id="75">
+<td><a id="l75" class='ln'>75</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="76" id="76">
+<td><a id="l76" class='ln'>76</a></td><td><span class="ct"> * Associating rt_OneStep with a real-time clock or interrupt service routine</span></td></tr>
+<tr name="77" id="77">
+<td><a id="l77" class='ln'>77</a></td><td><span class="ct"> * is what makes the generated code "real-time".  The function rt_OneStep is</span></td></tr>
+<tr name="78" id="78">
+<td><a id="l78" class='ln'>78</a></td><td><span class="ct"> * always associated with the base rate of the model.  Subrates are managed</span></td></tr>
+<tr name="79" id="79">
+<td><a id="l79" class='ln'>79</a></td><td><span class="ct"> * by the base rate from inside the generated code.  Enabling/disabling</span></td></tr>
+<tr name="80" id="80">
+<td><a id="l80" class='ln'>80</a></td><td><span class="ct"> * interrupts and floating point context switches are target specific.  This</span></td></tr>
+<tr name="81" id="81">
+<td><a id="l81" class='ln'>81</a></td><td><span class="ct"> * example code indicates where these should take place relative to executing</span></td></tr>
+<tr name="82" id="82">
+<td><a id="l82" class='ln'>82</a></td><td><span class="ct"> * the generated code step function.  Overrun behavior should be tailored to</span></td></tr>
+<tr name="83" id="83">
+<td><a id="l83" class='ln'>83</a></td><td><span class="ct"> * your application needs.  This example simply sets an error status in the</span></td></tr>
+<tr name="84" id="84">
+<td><a id="l84" class='ln'>84</a></td><td><span class="ct"> * real-time model and returns from rt_OneStep.</span></td></tr>
+<tr name="85" id="85">
+<td><a id="l85" class='ln'>85</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="86" id="86">
+<td><a id="l86" class='ln'>86</a></td><td><span class="kw">void</span> <a id="86c6" class="tk">rt_OneStep</a>(<a id="86c17" class="tk">RT_MODEL</a> <a id="86c26" class="tk">*</a><span class="kw">const</span> <a id="86c33" class="tk">rtM</a>);</td></tr>
+<tr name="87" id="87">
+<td><a id="l87" class='ln'>87</a></td><td><span class="kw">void</span> <a id="87c6" class="tk">rt_OneStep</a>(<a id="87c17" class="tk">RT_MODEL</a> <a id="87c26" class="tk">*</a><span class="kw">const</span> <a id="87c33" class="tk">rtM</a>)</td></tr>
+<tr name="88" id="88">
+<td><a id="l88" class='ln'>88</a></td><td><span class="br">{</span></td></tr>
+<tr name="89" id="89">
+<td><a id="l89" class='ln'>89</a></td><td>  <span class="kw">static</span> <a id="89c10" class="tk">boolean_T</a> <a id="89c20" class="tk">OverrunFlag</a> = false;</td></tr>
+<tr name="90" id="90">
+<td><a id="l90" class='ln'>90</a></td><td></td></tr>
+<tr name="91" id="91">
+<td><a id="l91" class='ln'>91</a></td><td>  <span class="ct">/* Disable interrupts here */</span></td></tr>
+<tr name="92" id="92">
+<td><a id="l92" class='ln'>92</a></td><td></td></tr>
+<tr name="93" id="93">
+<td><a id="l93" class='ln'>93</a></td><td>  <span class="ct">/* Check for overrun */</span></td></tr>
+<tr name="94" id="94">
+<td><a id="l94" class='ln'>94</a></td><td>  <span class="kw">if</span> (<a id="94c7" class="tk">OverrunFlag</a>) <span class="br">{</span></td></tr>
+<tr name="95" id="95">
+<td><a id="l95" class='ln'>95</a></td><td>    <a id="95c5" class="tk">rtmSetErrorStatus</a>(<a id="95c23" class="tk">rtM</a>, "Overrun");</td></tr>
+<tr name="96" id="96">
+<td><a id="l96" class='ln'>96</a></td><td>    <span class="kw">return</span>;</td></tr>
+<tr name="97" id="97">
+<td><a id="l97" class='ln'>97</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="98" id="98">
+<td><a id="l98" class='ln'>98</a></td><td></td></tr>
+<tr name="99" id="99">
+<td><a id="l99" class='ln'>99</a></td><td>  <a id="99c3" class="tk">OverrunFlag</a> = true;</td></tr>
+<tr name="100" id="100">
+<td><a id="l100" class='ln'>100</a></td><td></td></tr>
+<tr name="101" id="101">
+<td><a id="l101" class='ln'>101</a></td><td>  <span class="ct">/* Save FPU context here (if necessary) */</span></td></tr>
+<tr name="102" id="102">
+<td><a id="l102" class='ln'>102</a></td><td>  <span class="ct">/* Re-enable timer or interrupt here */</span></td></tr>
+<tr name="103" id="103">
+<td><a id="l103" class='ln'>103</a></td><td>  <span class="ct">/* Set model inputs here */</span></td></tr>
+<tr name="104" id="104">
+<td><a id="l104" class='ln'>104</a></td><td></td></tr>
+<tr name="105" id="105">
+<td><a id="l105" class='ln'>105</a></td><td>  <span class="ct">/* Step the model for base rate */</span></td></tr>
+<tr name="106" id="106">
+<td><a id="l106" class='ln'>106</a></td><td>  <a id="106c3" class="tk">PMSM_Controller_step</a>(<a id="106c24" class="tk">rtM</a>, <a id="106c29" class="tk">rtU_Vdc</a>, <a id="106c38" class="tk">rtU_Ts</a>, <a id="106c46" class="tk">rtU_adc_a</a>, <a id="106c57" class="tk">rtU_adc_b</a>,</td></tr>
+<tr name="107" id="107">
+<td><a id="l107" class='ln'>107</a></td><td>                       <a id="107c24" class="tk">rtU_rotor_angle</a>, <a id="107c41" class="tk">rtU_rotor_speed</a>, <a id="107c58" class="tk">rtU_input_target</a>,</td></tr>
+<tr name="108" id="108">
+<td><a id="l108" class='ln'>108</a></td><td>                       <a id="108c24" class="tk">rtY_pwm_counts</a>, <a id="108c40" class="tk">&amp;</a><a id="108c41" class="tk">rtY_sector</a>);</td></tr>
+<tr name="109" id="109">
+<td><a id="l109" class='ln'>109</a></td><td></td></tr>
+<tr name="110" id="110">
+<td><a id="l110" class='ln'>110</a></td><td>  <span class="ct">/* Get model outputs here */</span></td></tr>
+<tr name="111" id="111">
+<td><a id="l111" class='ln'>111</a></td><td></td></tr>
+<tr name="112" id="112">
+<td><a id="l112" class='ln'>112</a></td><td>  <span class="ct">/* Indicate task complete */</span></td></tr>
+<tr name="113" id="113">
+<td><a id="l113" class='ln'>113</a></td><td>  <a id="113c3" class="tk">OverrunFlag</a> = false;</td></tr>
+<tr name="114" id="114">
+<td><a id="l114" class='ln'>114</a></td><td></td></tr>
+<tr name="115" id="115">
+<td><a id="l115" class='ln'>115</a></td><td>  <span class="ct">/* Disable interrupts here */</span></td></tr>
+<tr name="116" id="116">
+<td><a id="l116" class='ln'>116</a></td><td>  <span class="ct">/* Restore FPU context here (if necessary) */</span></td></tr>
+<tr name="117" id="117">
+<td><a id="l117" class='ln'>117</a></td><td>  <span class="ct">/* Enable interrupts here */</span></td></tr>
+<tr name="118" id="118">
+<td><a id="l118" class='ln'>118</a></td><td><span class="br">}</span></td></tr>
+<tr name="119" id="119">
+<td><a id="l119" class='ln'>119</a></td><td></td></tr>
+<tr name="120" id="120">
+<td><a id="l120" class='ln'>120</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="121" id="121">
+<td><a id="l121" class='ln'>121</a></td><td><span class="ct"> * The example "main" function illustrates what is required by your</span></td></tr>
+<tr name="122" id="122">
+<td><a id="l122" class='ln'>122</a></td><td><span class="ct"> * application code to initialize, execute, and terminate the generated code.</span></td></tr>
+<tr name="123" id="123">
+<td><a id="l123" class='ln'>123</a></td><td><span class="ct"> * Attaching rt_OneStep to a real-time clock is target specific.  This example</span></td></tr>
+<tr name="124" id="124">
+<td><a id="l124" class='ln'>124</a></td><td><span class="ct"> * illustrates how you do this relative to initializing the model.</span></td></tr>
+<tr name="125" id="125">
+<td><a id="l125" class='ln'>125</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="126" id="126">
+<td><a id="l126" class='ln'>126</a></td><td><a id="126c1" class="tk">int_T</a> <a id="126c7" class="tk">main</a>(<a id="126c12" class="tk">int_T</a> <a id="126c18" class="tk">argc</a>, <span class="kw">const</span> <span class="kw">char</span> <a id="126c35" class="tk">*</a><a id="126c36" class="tk">argv</a>[])</td></tr>
+<tr name="127" id="127">
+<td><a id="l127" class='ln'>127</a></td><td><span class="br">{</span></td></tr>
+<tr name="128" id="128">
+<td><a id="l128" class='ln'>128</a></td><td>  <a id="128c3" class="tk">RT_MODEL</a> <a id="128c12" class="tk">*</a><span class="kw">const</span> <a id="128c19" class="tk">rtM</a> = <a id="128c25" class="tk">rtMPtr</a>;</td></tr>
+<tr name="129" id="129">
+<td><a id="l129" class='ln'>129</a></td><td></td></tr>
+<tr name="130" id="130">
+<td><a id="l130" class='ln'>130</a></td><td>  <span class="ct">/* Unused arguments */</span></td></tr>
+<tr name="131" id="131">
+<td><a id="l131" class='ln'>131</a></td><td>  (<span class="kw">void</span>)(<a id="131c10" class="tk">argc</a>);</td></tr>
+<tr name="132" id="132">
+<td><a id="l132" class='ln'>132</a></td><td>  (<span class="kw">void</span>)(<a id="132c10" class="tk">argv</a>);</td></tr>
+<tr name="133" id="133">
+<td><a id="l133" class='ln'>133</a></td><td></td></tr>
+<tr name="134" id="134">
+<td><a id="l134" class='ln'>134</a></td><td>  <span class="ct">/* Pack model data into RTM */</span></td></tr>
+<tr name="135" id="135">
+<td><a id="l135" class='ln'>135</a></td><td>  <a id="135c3" class="tk">rtM</a>-&gt;<a id="135c8" class="tk">dwork</a> = <a id="135c16" class="tk">&amp;</a><a id="135c17" class="tk">rtDW</a>;</td></tr>
+<tr name="136" id="136">
+<td><a id="l136" class='ln'>136</a></td><td></td></tr>
+<tr name="137" id="137">
+<td><a id="l137" class='ln'>137</a></td><td>  <span class="ct">/* Initialize model */</span></td></tr>
+<tr name="138" id="138">
+<td><a id="l138" class='ln'>138</a></td><td>  <a id="138c3" class="tk">PMSM_Controller_initialize</a>(<a id="138c30" class="tk">rtM</a>);</td></tr>
+<tr name="139" id="139">
+<td><a id="l139" class='ln'>139</a></td><td></td></tr>
+<tr name="140" id="140">
+<td><a id="l140" class='ln'>140</a></td><td>  <span class="ct">/* Attach rt_OneStep to a timer or interrupt service routine with</span></td></tr>
+<tr name="141" id="141">
+<td><a id="l141" class='ln'>141</a></td><td><span class="ct">   * period 6.2E-6 seconds (the model's base sample time) here.  The</span></td></tr>
+<tr name="142" id="142">
+<td><a id="l142" class='ln'>142</a></td><td><span class="ct">   * call syntax for rt_OneStep is</span></td></tr>
+<tr name="143" id="143">
+<td><a id="l143" class='ln'>143</a></td><td><span class="ct">   *</span></td></tr>
+<tr name="144" id="144">
+<td><a id="l144" class='ln'>144</a></td><td><span class="ct">   *  rt_OneStep(rtM);</span></td></tr>
+<tr name="145" id="145">
+<td><a id="l145" class='ln'>145</a></td><td><span class="ct">   */</span></td></tr>
+<tr name="146" id="146">
+<td><a id="l146" class='ln'>146</a></td><td>  <a id="146c3" class="tk">printf</a>("Warning: The simulation will run forever. "</td></tr>
+<tr name="147" id="147">
+<td><a id="l147" class='ln'>147</a></td><td>         "Generated ERT main won't simulate model step behavior. "</td></tr>
+<tr name="148" id="148">
+<td><a id="l148" class='ln'>148</a></td><td>         "To change this behavior select the 'MAT-file logging' option.\n");</td></tr>
+<tr name="149" id="149">
+<td><a id="l149" class='ln'>149</a></td><td>  <a id="149c3" class="tk">fflush</a>((<a id="149c11" class="tk">NULL</a>));</td></tr>
+<tr name="150" id="150">
+<td><a id="l150" class='ln'>150</a></td><td>  <span class="kw">while</span> (<a id="150c10" class="tk">rtmGetErrorStatus</a>(<a id="150c28" class="tk">rtM</a>) <a id="150c33" class="tk">==</a> (<a id="150c37" class="tk">NULL</a>)) <span class="br">{</span></td></tr>
+<tr name="151" id="151">
+<td><a id="l151" class='ln'>151</a></td><td>    <span class="ct">/*  Perform other application tasks here */</span></td></tr>
+<tr name="152" id="152">
+<td><a id="l152" class='ln'>152</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="153" id="153">
+<td><a id="l153" class='ln'>153</a></td><td></td></tr>
+<tr name="154" id="154">
+<td><a id="l154" class='ln'>154</a></td><td>  <span class="ct">/* Disable rt_OneStep() here */</span></td></tr>
+<tr name="155" id="155">
+<td><a id="l155" class='ln'>155</a></td><td>  <span class="kw">return</span> 0;</td></tr>
+<tr name="156" id="156">
+<td><a id="l156" class='ln'>156</a></td><td><span class="br">}</span></td></tr>
+<tr name="157" id="157">
+<td><a id="l157" class='ln'>157</a></td><td></td></tr>
+<tr name="158" id="158">
+<td><a id="l158" class='ln'>158</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="159" id="159">
+<td><a id="l159" class='ln'>159</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="160" id="160">
+<td><a id="l160" class='ln'>160</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="161" id="161">
+<td><a id="l161" class='ln'>161</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="162" id="162">
+<td><a id="l162" class='ln'>162</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="163" id="163">
+<td><a id="l163" class='ln'>163</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

BIN
Simulink/PMSM_Controller_ert_rtw/html/hilite_warning.png


+ 33 - 0
Simulink/PMSM_Controller_ert_rtw/html/inspect.html

@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <link rel="stylesheet" type="text/css" href="rtwreport.css" />    
+ <link rel="stylesheet" type="text/css" href="css/coder_app.css" />    
+ <style type="text/css">
+   div#popup_window {
+       position: relative;
+       background-color: ghostwhite;
+       border-radius: 0px;
+       -moz-box-shadow: none;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+   }
+   div#popup_window a {
+       text-decoration: underline;
+       color: blue;
+   }
+   div#token_usage_nav {
+       border-bottom: none;
+   }
+ </style>
+</head>
+<body class="inspect_body">
+<table width="100%">
+  <col style="width: 95%;"><col style="width: 5%">
+  <tr><td><div id="popup_window"></div></td>
+    <td align="right"><div><a onclick="top.closeInspectWindow();" class="closeButton">x</a></div></td>
+  </tr>
+</table></body></html>
+
+<!-- LocalWords:  ghostwhite
+-->

+ 525 - 0
Simulink/PMSM_Controller_ert_rtw/html/js/coder_app.js

@@ -0,0 +1,525 @@
+/* Copyright 2013-2018 The MathWorks, Inc. */
+function queryByClassName(className, elem) {
+    if (!elem) elem = document.body;
+    if (typeof elem.querySelectorAll === "function") {
+        return elem.querySelectorAll("."+className);
+    } else {
+        return elem.getElementsByClass(className);
+    }
+}
+
+function nav_token_usage_details(direction) {
+    var els = queryByClassName("token_usage_details_tabrow");
+    var selectedIdx = 0;
+    var selectedClassName = "selected";
+    for (selectedIdx; selectedIdx < els.length; selectedIdx++) {
+        if (els[selectedIdx].classList.contains(selectedClassName)) {
+            break;
+        }
+    }
+    var nextIdx = selectedIdx;
+    if (direction === -1 && selectedIdx > 0) {
+        nextIdx = selectedIdx-1;                
+    } else if (direction === 1 && selectedIdx < els.length - 1) {
+        nextIdx = selectedIdx + 1;
+    }   
+    if (nextIdx !== selectedIdx) {
+        els[selectedIdx].classList.remove(selectedClassName);
+        els[nextIdx].classList.add(selectedClassName);
+        els[nextIdx].scrollIntoView(alignWithTop=false);
+    }
+    return false;
+}
+
+function tabrowClicked(event) { 
+}
+
+function popupOnload() {
+    var els = queryByClassName("token_usage_details_tabrow");   
+    for (var i=0; i<els.length; i++) {
+        els[i].onclick= tabrowClicked;
+    }
+};
+
+function tokenOnRightclick(event) {
+    var filename = location.pathname.split(/\//);
+    filename = filename[filename.length-1];
+    top.inspectToken(filename, location.pathname, event);
+    top.hiliteClickedToken(event.currentTarget);
+    return false;
+}
+
+function tokenOnclick(event) {
+    tokenOnRightclick(event);
+    if (event.currentTarget.href.length !== 0 && event.currentTarget.href.protocol !== "matlab:") {
+        top.tokenLinkOnClick(event);
+        return true;
+    }
+    return false;
+};
+
+function tokenOnMouseOver(event) {    
+    var filename = location.pathname.split(/\//);
+    filename = filename[filename.length-1];
+    createPopup(filename, event);
+};
+function tokenOnMouseOut(event) {
+    destroyPopup(event.currentTarget);
+};
+
+function blkLinkOnClick(event) {
+    top.hiliteClickedToken(event.currentTarget);
+    return true;
+}
+function clearTokenLink(id) {    
+    var codeElement = document.getElementById(id);
+    var els = queryByClassName("tk", codeElement);
+    var elem; 
+    if (top.CodeDefine && top.CodeDefine.instance)  {
+        for (var i=0; i<els.length; i++) {
+            var re = new RegExp('active', 'g');
+            els[i].className = els[i].className.replace(re, '');
+            re = new RegExp('traceable_token', 'g');
+            els[i].className = els[i].className.replace(re, '');            
+        }
+    }
+}
+function updateTokenLink(id) {
+    var codeElement = document.getElementById(id);
+    var filename = location.pathname.split(/\//);
+    filename = filename[filename.length-1];  
+    var srcFilename;
+    if (top.RTW_TraceInfo) {
+        srcFilename = top.RTW_TraceInfo.toSrcFileName(filename);
+    }
+    var els = queryByClassName("tk", codeElement);
+    var elem; 
+    var hasTraceFlag = null;
+    if (top.TraceInfoFlag && top.TraceInfoFlag.instance)
+        hasTraceFlag =  top.TraceInfoFlag.instance.traceFlag;
+    else 
+        hasTraceFlag = false;
+    var defObj;
+    var traceObj;
+    var codeDef = (top.CodeDefine &&  top.CodeDefine.instance) ? top.CodeDefine.instance : null;
+    var aLink = top.document.createElement("a");
+    if (hasTraceFlag || (top.CodeDefine && top.CodeDefine.instance))  {
+        for (var i=0; i<els.length; i++) {
+            defObj = null;
+            if (codeDef) {
+                if (codeDef.def.hasOwnProperty(srcFilename + ":" + els[i].text)) {
+                    defObj = codeDef.def[srcFilename + ":" + els[i].text];
+                } else if (codeDef.def.hasOwnProperty(els[i].text)) {
+                    defObj = codeDef.def[els[i].text];
+                }
+            } 
+            traceObj = hasTraceFlag && hasTraceFlag[srcFilename+":"+els[i].id];
+            if (traceObj || defObj) {
+                els[i].onclick= tokenOnclick;
+                els[i].oncontextmenu= tokenOnRightclick;
+                els[i].onmouseover = tokenOnMouseOver;    
+                els[i].onmouseout = tokenOnMouseOut;
+                els[i].className += " active";
+                els[i].target = "rtwreport_document_frame";
+                if (traceObj && top.reportModel) {    
+                    if (top.testHarnessInfo && top.testHarnessInfo.IsTestHarness==="1") {
+                        els[i].href = "matlab:rtw.report.code2model('" + top.reportModel 
+                            + "','" + location.pathname + "','" + els[i].id 
+                            + "','" + top.testHarnessInfo.HarnessName 
+                            + "','" + top.testHarnessInfo.HarnessOwner
+                            + "','" + top.testHarnessInfo.OwnerFileName + "')";
+                    } else {
+                        els[i].href = "matlab:rtw.report.code2model(\'" + top.reportModel 
+                            + "\',\'" + location.pathname + "\',\'" + els[i].id + "')";
+                    }
+                } else {
+                    aLink.href = defObj.file;
+                    els[i].href = aLink.pathname + "#" + defObj.line;
+                }
+            }
+        }
+    }
+}
+// remove the code table; insert back
+function updateToken(codeElement) {
+    var filename = location.pathname.split(/\//);
+    filename = filename[filename.length-1];  
+    var srcFilename;
+    if (top.RTW_TraceInfo) {
+        srcFilename = top.RTW_TraceInfo.toSrcFileName(filename);
+    }
+    // update block path link in comments
+    els = queryByClassName("blk", codeElement);
+    var lineSid = null;
+    if (top.RTW_rtwnameSIDMap && top.RTW_rtwnameSIDMap.instance) {
+        for (var i=0; i<els.length; i++) {
+            lineSid = top.RTW_rtwnameSIDMap.instance.getSID(els[i].text);
+            if (lineSid) {
+                if (top.testHarnessInfo && top.testHarnessInfo.IsTestHarness==="1") {
+                    els[i].href = "matlab:coder.internal.code2model('" + lineSid.sid + "','" +
+                        top.testHarnessInfo.HarnessName+ "','" +
+                        top.testHarnessInfo.HarnessOwner+ "','" + 
+                        top.testHarnessInfo.OwnerFileName + "');";
+                } else {
+                    els[i].href = "matlab:coder.internal.code2model('" + lineSid.sid + "');";
+                }
+                els[i].id = "blkLink_" + i;
+                els[i].onclick = blkLinkOnClick;
+                els[i].className += " blk_active";
+            }
+        }
+    }   
+    // update lib block path link in comments
+    els = queryByClassName("libblk", codeElement);
+    var lineSid = null;    
+    for (var i=0; i<els.length; i++) {
+        lineSid = els[i].text;
+        if (lineSid) {
+            if (top.testHarnessInfo && top.testHarnessInfo.IsTestHarness==="1") {
+                els[i].href = "matlab:coder.internal.code2model('" + lineSid + "','" +
+                    top.testHarnessInfo.HarnessName+ "','" +
+                    top.testHarnessInfo.HarnessOwner+ "','" + 
+                    top.testHarnessInfo.OwnerFileName + "');";
+            } else {
+                els[i].href = "matlab:coder.internal.code2model('" + lineSid + "');";
+            }
+            els[i].id = "blkLink_" + i;
+            els[i].onclick = blkLinkOnClick;
+            els[i].className += " blk_active";
+        }
+    }
+    // update requirement link in comments
+    els = queryByClassName("req", codeElement);
+    var req_block;
+    if (top.RTW_rtwnameSIDMap && top.RTW_rtwnameSIDMap.instance) {
+        for (var i=0; i<els.length; i++) {
+            lineSid = top.RTW_rtwnameSIDMap.instance.getSID(els[i].getAttribute("blockpath"));
+            if (lineSid) {
+                req_block = lineSid.sid;
+            } else {
+                req_block = els[i].getAttribute("blockpath");
+            }
+            var req_id = els[i].getAttribute("req_id");
+            els[i].href = "matlab:rtw.report.code2req('" + req_block + "'," + req_id + ");";
+            els[i].id = "req_" + i;
+            els[i].onclick = top.reqOnClick;
+            els[i].className += " req_active";
+        }
+    }
+    
+    // add link to source file
+    if (top.Html2SrcLink && top.Html2SrcLink.instance) {
+        filename = top.rtwGetFileName(location.href);
+        var link2Src = top.Html2SrcLink.instance.getLink2Src(filename);
+        var link = document.createElement("h4");
+        link.innerHTML = "File: <a href=\"" + link2Src + 
+            "\" target = \"rtwreport_document_frame\" id=\"linkToText_plain\">" + 
+            top.rtwGetFileName(link2Src) + "</a>";
+        var bodyNode = document.body;
+        bodyNode.insertBefore(link, bodyNode.firstElementChild);
+    }
+    top.updateHyperlinks();
+    // update fileSelector frame
+    if (top.fileSelector) {
+        var o = top.fileSelector.document.getElementById('fileSelector');
+        if (o) {
+            o.value = filename;
+        }
+    }
+   //  add links to line numbers
+    var hasLineFlag = null;
+    if (top.TraceInfoLineFlag && top.TraceInfoLineFlag.instance) {
+        hasLineFlag =  true;
+    } else {
+        hasLineFlag = false;
+    }
+
+    if(hasLineFlag) {
+        var lines = queryByClassName("ln", codeElement);
+        var lineTraceFlag = top.TraceInfoLineFlag.instance.lineTraceFlag;
+        var lineNo = null;
+        for (var i=0; i<lines.length; i++) {
+            lineNo = lines[i].id.substring(1)
+            if(lineTraceFlag[srcFilename+":"+ lineNo]) {
+                lines[i].className += " active";
+                if (top.testHarnessInfo && top.testHarnessInfo.IsTestHarness==="1") {
+                    lines[i].href = "matlab:rtw.report.code2model('" + top.reportModel 
+                        + "','" + srcFilename
+                        + "','" + lineNo
+                        + "','" + top.testHarnessInfo.HarnessName 
+                        + "','" + top.testHarnessInfo.HarnessOwner
+                        + "','" + top.testHarnessInfo.OwnerFileName + "')";
+                } else {
+                    lines[i].href = "matlab:rtw.report.code2model('" + top.reportModel 
+                        + "','" + srcFilename + "','" + lineNo + "')";
+                }
+            }
+        }
+    }
+}
+function getInsertFunction(element) {
+    var parentNode = element.parentNode;
+    var nextSibling = element.nextSibling;
+    parentNode.removeChild(element);
+    var spinner = document.createElement("img");
+    spinner.src = "spinner.gif";
+    parentNode.appendChild(spinner);
+    return function() {
+        if (spinner) {
+            parentNode.removeChild(spinner);
+        }
+        if (nextSibling) {
+            parentNode.insertBefore(element, nextSibling);
+        } else {
+            parentNode.appendChild(element);
+        }
+    };
+}
+
+var hovered_line = '';
+var lineOnMouseIn = function (id) {
+    if (hovered_line !== id) {
+        hovered_line = id;      
+        updateTokenLink(id);            
+    }
+}
+var lineOnMouseOut = function (id) {    
+    clearTokenLink(id);
+    hovered_line = '';
+}
+function registerDelayedOnMouseOver(elm, onMouseIn, onMouseOut) {
+    var delay = function (elem, onMouseIn, onMouseOut) {                
+        var timeout = null;
+        elem.onmouseover = function(e) {                                
+            timeout = setTimeout(onMouseIn, 200, e.currentTarget.id);
+        };
+        elem.onmouseout = function(e) {                 
+            clearTimeout(timeout);
+            if (hovered_line !== '') {
+                onMouseOut(e.currentTarget.id);
+            }
+        }               
+    };
+    delay(elm, onMouseIn, onMouseOut);
+}
+
+// Returns true if obj has all the fields in criteria and obj's values (as strings)
+// are present in criteria's values
+function matchCriteria(obj, criteria) {
+    for (var prop in criteria) {
+        if (!obj.hasOwnProperty(prop) || String(obj[prop]).toUpperCase().indexOf(String(criteria[prop]).toUpperCase()) === -1) {
+            return false;
+        }
+    }
+    return true;
+}
+
+function findParent(node, criteria) {
+    if (!node) {
+        return null;
+    }
+    else if (matchCriteria(node, criteria)) {
+        return node;
+    }
+    else {
+        return findParent(node.parentNode, criteria);
+    }
+}
+
+function getLastTableCellContents(trNode) {
+    for (var i = trNode.childNodes.length - 1; i >= 0; --i) {
+        var childNode = trNode.childNodes[i];
+        if (childNode.tagName.toUpperCase() === "TD") {
+            return childNode.childNodes;
+        }
+    }
+    return null;
+}
+
+// see g1225075
+function fixBoxStyleFnHeaderLineWidths() {
+    // Match strings like "/**********/" which is the top line of
+    // a box-style function comment header
+    var reBoxHeader = /\/\*+\//;
+
+    // Match strings like "'     */" which is the contents of the text
+    // element originally generated in the report to pad the width of
+    // the line.
+    var rePadding = /'\s*\*\//;
+
+    // All block identifier elements in the report page
+    blkLineElts = queryByClassName("blk");
+    for (var i = 0; i < blkLineElts.length; ++i) {
+        var origPadding = blkLineElts[i].nextSibling;
+        if (origPadding.textContent.match(rePadding)) {
+            var spanElt = findParent(blkLineElts[i], { tagName: "span", className: "ct" });
+            if (!spanElt) {
+                continue;
+            }
+
+            // The numbered line in the report containing block identifier "i"
+            var tableRowElt = findParent(spanElt, { tagName: "tr" });
+            if (!tableRowElt) {
+                continue;
+            }
+
+            // Loop backward through table rows (i.e., report lines) looking
+            // for the "/***************/" start of the header. When found save
+            // its pixel width. Not actually the width of the <tr> itself but
+            // the span inside its last <td>. This is will determine the real
+            // padding that is needed for proper alignment regardless of font
+            // or CKJ characters.
+            var targetWidth = 0;
+            var sanity = Number.MAX_VALUE;
+            var node = tableRowElt.previousSibling;
+            while (node && (sanity-- > 0)) {
+                var lastCellContents = getLastTableCellContents(node);
+                if (lastCellContents) {
+                    if (lastCellContents.length === 0) {
+                        break;
+                    }
+                    if (lastCellContents[0].textContent.match(reBoxHeader)) {
+                        targetWidth = lastCellContents[0].offsetWidth;
+                        break;
+                    }
+                }
+                node = node.previousSibling;
+            }
+
+            // If applying a new padding (i.e., targetWidth > 0), replace
+            // the original padding "'   */' (a single text element) with
+            // two text elements and a span in between. The span will be the
+            // new pixel-accurate padding.
+            if (targetWidth > 0) {
+                var singleQuoteNode = document.createTextNode("'");
+                var spacerNode = document.createElement('span');
+                origPadding.textContent = "*/";
+                origPadding.parentNode.insertBefore(spacerNode, origPadding);
+                origPadding.parentNode.insertBefore(singleQuoteNode, spacerNode);
+
+                var padWidth = targetWidth - spanElt.offsetWidth;
+                spacerNode.style.display = 'inline-block';
+                spacerNode.style.width = String(padWidth) + "px";
+                spacerNode.style.height = '1em'; // cursor won't work w/o some height
+                spacerNode.style.cursor = 'text';
+            }
+        }
+    }
+}
+
+// the onload function for source file
+function srcFileOnload() {
+    var codeElement = document.getElementById("codeTbl");
+    var insertFunction = getInsertFunction(codeElement);                
+    try {
+        var els = codeElement.getElementsByTagName("tr");
+        for (var i = 0; i < els.length; i++) {                          
+            registerDelayedOnMouseOver(els[i], lineOnMouseIn, lineOnMouseOut);
+        }
+        updateToken(codeElement);
+    } catch (err) {};
+    insertFunction();
+    // add code to model hyperlinks for all tokens
+    var filename = location.pathname.split(/\//);
+    filename = filename[filename.length-1];
+    // highlight the filename in the TOC frame
+    if (top.rtwreport_contents_frame && top.hiliteByFileName(top.rtwreport_document_frame.document.location.href)) {
+        // remove the highlights in the TOC frame if filename is hilite successfully
+        top.removeHiliteTOC(top.rtwreport_contents_frame);
+    }
+
+    // annotate code with code coverage data
+    if (typeof rtwannotate === 'function') {
+        rtwannotate(filename.replace(/.html$/,"_cov.xml"));
+    }
+
+    fixBoxStyleFnHeaderLineWidths();
+
+    // highlight token and row 
+    if (top.RTW_TraceInfo.instance && top.RTW_TraceArgs.instance) {
+        var i;
+        // find the highlight file name
+        var fileIdx = top.RTW_TraceArgs.instance.getFileIdx(filename);
+        var ids=[], rows=[];
+        if (typeof fileIdx !== "undefined") {
+            ids = top.RTW_TraceArgs.instance.getIDs(fileIdx);
+            rows = top.RTW_TraceArgs.instance.getRows(fileIdx);
+            // highlight rows in file
+            for (i=0; i<rows.length;i++) {
+                elem = top.rtwreport_document_frame.document.getElementById(rows[i]);
+                if (elem) elem.className += " hilite";
+            }
+            // highlight tokens in file
+            if (top.GlobalConfig.hiliteToken) {
+                for (i=0; i<ids.length;i++) {
+                    elem = top.rtwreport_document_frame.document.getElementById(ids[i]);
+                    if (elem) elem.className += " hilite";              
+                }
+            }
+        } // end of if current file has highlighted lines
+
+        // if the loaded file is not currFile, call setInitLocation
+        var currFileIdx = top.RTW_TraceInfo.instance.getCurrFileIdx();
+        var myFileIdx = top.RTW_TraceInfo.instance.getFileIdx(filename);
+        // update navigation status if the file is loaded first time
+        if (currFileIdx !== myFileIdx && document.location.hash === "") {
+            if (rows.length > 0) 
+                top.RTW_TraceInfo.instance.setInitLocation(filename,rows[0]);
+            else {
+                top.toggleNavSideBar("off");                            
+                return;
+            }
+        }
+
+        // display navigation side bar
+        if (top.rtwreport_nav_frame) top.rtwreport_nav_frame.location.reload();
+        if (rows.length>0) {
+            top.toggleNavSideBar("on");
+            top.toggleNavToolBar("on");
+        } else {
+            top.toggleNavSideBar("off");
+        }
+    }
+    top.scrollToLineBasedOnHash(document.location.hash);
+    function getHash() {
+        var loc;
+        var aHash="";
+        var topDocObj = top.window.document;    
+        // get the hash value from location.
+        loc = topDocObj.location;
+        loc = loc.search || loc.hash;
+        aHash = loc.substring(1);
+        aHash = decodeURI(aHash);
+        return aHash;   
+    }
+}
+
+function createPopup(filename, evt) {
+    var anchorObj = evt.currentTarget;
+    if (anchorObj.children.length > 0)
+        return;
+    var filename = location.pathname.split(/\//);
+    filename = filename[filename.length-1];
+    var windowObj = top.getInspectWindow();
+    var propObj = top.getInspectData(filename, anchorObj);
+    var navObj = top.getInspectLink(filename, location.pathname, anchorObj);
+    if (propObj) { 
+        windowObj.appendChild(propObj);
+        windowObj.style.left = "0px";
+        if (anchorObj.parentElement.nodeName === "TD" && 
+            anchorObj.parentElement.parentElement.nodeName === "TR") {
+            anchorObj.parentElement.parentElement.lastChild.insertBefore(windowObj,
+                                                                         anchorObj.parentElement.parentElement.lastChild.lastChild.nextSibling);
+            var left = Math.min(evt.clientX , window.innerWidth - windowObj.scrollWidth - 30);
+            left = Math.max(0, left);
+            windowObj.style.left = "" + left + "px";
+        }
+    }
+};
+
+function destroyPopup(anchorObj) {
+    var popWindow = document.getElementById("popup_window");
+    if (popWindow) {
+        popWindow.parentElement.removeChild(popWindow);
+    }
+};

+ 14 - 0
Simulink/PMSM_Controller_ert_rtw/html/nav.html

@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+</head>
+    <style>
+        * {
+            margin: 0;
+            padding: 0
+        }
+    </style>
+    <body onresize="top.drawNavSideBar();" onload="top.drawNavSideBar();top.load_metrics();">
+      <canvas id="canvas" title="navigate to highlighted lines"></canvas>
+    </body>
+</html>

+ 69 - 0
Simulink/PMSM_Controller_ert_rtw/html/navToolbar.html

@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <link rel="stylesheet" type="text/css" href="rtwreport.css" />
+    <link rel="stylesheet" type="text/css" href="css/coder_app.css" />
+  <script>
+    function NavOnloadFcn() {
+        var node = document.getElementById("rtwIdTraceBlock");
+        var td1 = document.getElementById("td1");
+        if (node && top.RTW_TraceArgs.instance) {
+            var sid = top.RTW_TraceArgs.instance.getBlock();
+            if (sid) {
+                if (top.RTW_TraceArgs.instance.getNumBlocks() === 1) {
+                    var block = sid;
+                    if (top.RTW_rtwnameSIDMap && top.RTW_rtwnameSIDMap.instance && top.RTW_rtwnameSIDMap.instance.getRtwname(sid)) {
+                        block = top.RTW_rtwnameSIDMap.instance.getRtwname(sid).rtwname;
+                    }
+                    if (block) {
+                        node.textContent = "'" + block + "'";
+                    }
+                    td1.className = "";
+                } else {
+                    td1.innerHTML = "<b>Highlight code for selected blocks:</b>";
+                }
+            } else {
+                td1.className = "hidden";
+            }
+         }
+        if (top.RTW_TraceInfo && top.RTW_TraceInfo.instance) {
+           top.RTW_TraceInfo.instance.updateNavState();
+        }        
+   }
+   function resize_text() {
+        var node = document.getElementById("rtwIdTraceBlock");        
+        if (node) {
+            node.style.maxWidth = "" + (window.innerWidth - 450) + "px";
+        }
+        top.resize_NavToolbar_frame();
+   }
+  </script>
+  </head>
+  <body class="nav_toolbar" onload="NavOnloadFcn(); resize_text();" onresize="resize_text();">
+    <table class="nav_table" id="rtwIdTracePanel">
+      <col style="width: 90%;">
+      <col style="width: 150px;">
+      <col style="width: 150px;">
+      <tr>
+        <td title="Navigation control for highlighted code" id="td1">
+          <b>Highlight code for block:</b>
+          <div id="rtwIdTraceBlock" style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap"></div>
+        </td>
+        <td style="white-space:nowrap">
+	  <INPUT class="button" TYPE="button" VALUE="<<" style="width: 45px; height: 2em" ID="rtwIdButtonFirst" ONCLICK="if (top.rtwGoFirst) top.rtwGoFirst();" title="goto the first highlighted line" />
+	  <INPUT class="button" TYPE="button" VALUE="<" style="width: 45px; height: 2em" ID="rtwIdButtonPrev" ONCLICK="if (top.rtwGoPrev) top.rtwGoPrev();" disabled="disabled" title="goto the previous highlighted line"/>        
+	  <span id="rtwIdTraceNumber"></span>
+	  <INPUT class="button" TYPE="button" VALUE=">" style="width: 45px; height: 2em" ID="rtwIdButtonNext" ONCLICK="if (top.rtwGoNext) top.rtwGoNext();" disabled="disabled" title="goto the next highlighted line"/>
+	  <INPUT class="button" TYPE="button" VALUE=">>" style="width: 45px; height: 2em" ID="rtwIdButtonLast" ONCLICK="if (top.rtwGoLast) top.rtwGoLast();" title="goto the last highlighted line" />
+        </td>
+        <td>
+          <INPUT class="button" TYPE="button" VALUE="Remove Highlights" style="width: 150px; height: 2em" ID="rtwIdButtonRemove" ONCLICK="if (top.removeInCodeTraceHighlight()) top.removeInCodeTraceHighlight()" title="remove highlighted lines"/>
+        </td>
+      </tr>
+    </table>
+  </body>
+</html>
+</table>
+
+<!-- LocalWords:  Onload px ONCLICK
+-->

+ 216 - 0
Simulink/PMSM_Controller_ert_rtw/html/rtGetInf_c.html

@@ -0,0 +1,216 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: rtGetInf.c</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td><span class="ct"> * Abstract:</span></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td><span class="ct"> *      Function to initialize non-finite, Inf</span></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td><span class="pp">#include "rtGetInf.h"</span></td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td><span class="pp">#define</span> <a id="23c9" class="tk">NumBitsPerChar</a>                 8U</td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td></td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td><span class="ct"> * Initialize rtInf needed by the generated code.</span></td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td><span class="ct"> * Inf is initialized as non-signaling. Assumes IEEE.</span></td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td><a id="29c1" class="tk">real_T</a> <a id="29c8" class="tk">rtGetInf</a>(<span class="kw">void</span>)</td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td><span class="br">{</span></td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td>  <a id="31c3" class="tk">size_t</a> <a id="31c10" class="tk">bitsPerReal</a> = <span class="kw">sizeof</span>(<a id="31c31" class="tk">real_T</a>) <a id="31c39" class="tk">*</a> (<a id="31c42" class="tk">NumBitsPerChar</a>);</td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td>  <a id="32c3" class="tk">real_T</a> <a id="32c10" class="tk">inf</a> = 0.0;</td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td>  <span class="kw">if</span> (<a id="33c7" class="tk">bitsPerReal</a> <a id="33c19" class="tk">==</a> 32U) <span class="br">{</span></td></tr>
+<tr name="34" id="34">
+<td><a id="l34" class='ln'>34</a></td><td>    <a id="34c5" class="tk">inf</a> = <a id="34c11" class="tk">rtGetInfF</a>();</td></tr>
+<tr name="35" id="35">
+<td><a id="l35" class='ln'>35</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="36" id="36">
+<td><a id="l36" class='ln'>36</a></td><td>    <span class="kw">union</span> <span class="br">{</span></td></tr>
+<tr name="37" id="37">
+<td><a id="l37" class='ln'>37</a></td><td>      <a id="37c7" class="tk">LittleEndianIEEEDouble</a> <a id="37c30" class="tk">bitVal</a>;</td></tr>
+<tr name="38" id="38">
+<td><a id="l38" class='ln'>38</a></td><td>      <a id="38c7" class="tk">real_T</a> <a id="38c14" class="tk">fltVal</a>;</td></tr>
+<tr name="39" id="39">
+<td><a id="l39" class='ln'>39</a></td><td>    <span class="br">}</span> <a id="39c7" class="tk">tmpVal</a>;</td></tr>
+<tr name="40" id="40">
+<td><a id="l40" class='ln'>40</a></td><td></td></tr>
+<tr name="41" id="41">
+<td><a id="l41" class='ln'>41</a></td><td>    <a id="41c5" class="tk">tmpVal</a>.<a id="41c12" class="tk">bitVal</a>.<a id="41c19" class="tk">words</a>.<a id="41c25" class="tk">wordH</a> = 0x7FF00000U;</td></tr>
+<tr name="42" id="42">
+<td><a id="l42" class='ln'>42</a></td><td>    <a id="42c5" class="tk">tmpVal</a>.<a id="42c12" class="tk">bitVal</a>.<a id="42c19" class="tk">words</a>.<a id="42c25" class="tk">wordL</a> = 0x00000000U;</td></tr>
+<tr name="43" id="43">
+<td><a id="l43" class='ln'>43</a></td><td>    <a id="43c5" class="tk">inf</a> = <a id="43c11" class="tk">tmpVal</a>.<a id="43c18" class="tk">fltVal</a>;</td></tr>
+<tr name="44" id="44">
+<td><a id="l44" class='ln'>44</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="45" id="45">
+<td><a id="l45" class='ln'>45</a></td><td></td></tr>
+<tr name="46" id="46">
+<td><a id="l46" class='ln'>46</a></td><td>  <span class="kw">return</span> <a id="46c10" class="tk">inf</a>;</td></tr>
+<tr name="47" id="47">
+<td><a id="l47" class='ln'>47</a></td><td><span class="br">}</span></td></tr>
+<tr name="48" id="48">
+<td><a id="l48" class='ln'>48</a></td><td></td></tr>
+<tr name="49" id="49">
+<td><a id="l49" class='ln'>49</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="50" id="50">
+<td><a id="l50" class='ln'>50</a></td><td><span class="ct"> * Initialize rtInfF needed by the generated code.</span></td></tr>
+<tr name="51" id="51">
+<td><a id="l51" class='ln'>51</a></td><td><span class="ct"> * Inf is initialized as non-signaling. Assumes IEEE.</span></td></tr>
+<tr name="52" id="52">
+<td><a id="l52" class='ln'>52</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="53" id="53">
+<td><a id="l53" class='ln'>53</a></td><td><a id="53c1" class="tk">real32_T</a> <a id="53c10" class="tk">rtGetInfF</a>(<span class="kw">void</span>)</td></tr>
+<tr name="54" id="54">
+<td><a id="l54" class='ln'>54</a></td><td><span class="br">{</span></td></tr>
+<tr name="55" id="55">
+<td><a id="l55" class='ln'>55</a></td><td>  <a id="55c3" class="tk">IEEESingle</a> <a id="55c14" class="tk">infF</a>;</td></tr>
+<tr name="56" id="56">
+<td><a id="l56" class='ln'>56</a></td><td>  <a id="56c3" class="tk">infF</a>.<a id="56c8" class="tk">wordL</a>.<a id="56c14" class="tk">wordLuint</a> = 0x7F800000U;</td></tr>
+<tr name="57" id="57">
+<td><a id="l57" class='ln'>57</a></td><td>  <span class="kw">return</span> <a id="57c10" class="tk">infF</a>.<a id="57c15" class="tk">wordL</a>.<a id="57c21" class="tk">wordLreal</a>;</td></tr>
+<tr name="58" id="58">
+<td><a id="l58" class='ln'>58</a></td><td><span class="br">}</span></td></tr>
+<tr name="59" id="59">
+<td><a id="l59" class='ln'>59</a></td><td></td></tr>
+<tr name="60" id="60">
+<td><a id="l60" class='ln'>60</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="61" id="61">
+<td><a id="l61" class='ln'>61</a></td><td><span class="ct"> * Initialize rtMinusInf needed by the generated code.</span></td></tr>
+<tr name="62" id="62">
+<td><a id="l62" class='ln'>62</a></td><td><span class="ct"> * Inf is initialized as non-signaling. Assumes IEEE.</span></td></tr>
+<tr name="63" id="63">
+<td><a id="l63" class='ln'>63</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="64" id="64">
+<td><a id="l64" class='ln'>64</a></td><td><a id="64c1" class="tk">real_T</a> <a id="64c8" class="tk">rtGetMinusInf</a>(<span class="kw">void</span>)</td></tr>
+<tr name="65" id="65">
+<td><a id="l65" class='ln'>65</a></td><td><span class="br">{</span></td></tr>
+<tr name="66" id="66">
+<td><a id="l66" class='ln'>66</a></td><td>  <a id="66c3" class="tk">size_t</a> <a id="66c10" class="tk">bitsPerReal</a> = <span class="kw">sizeof</span>(<a id="66c31" class="tk">real_T</a>) <a id="66c39" class="tk">*</a> (<a id="66c42" class="tk">NumBitsPerChar</a>);</td></tr>
+<tr name="67" id="67">
+<td><a id="l67" class='ln'>67</a></td><td>  <a id="67c3" class="tk">real_T</a> <a id="67c10" class="tk">minf</a> = 0.0;</td></tr>
+<tr name="68" id="68">
+<td><a id="l68" class='ln'>68</a></td><td>  <span class="kw">if</span> (<a id="68c7" class="tk">bitsPerReal</a> <a id="68c19" class="tk">==</a> 32U) <span class="br">{</span></td></tr>
+<tr name="69" id="69">
+<td><a id="l69" class='ln'>69</a></td><td>    <a id="69c5" class="tk">minf</a> = <a id="69c12" class="tk">rtGetMinusInfF</a>();</td></tr>
+<tr name="70" id="70">
+<td><a id="l70" class='ln'>70</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="71" id="71">
+<td><a id="l71" class='ln'>71</a></td><td>    <span class="kw">union</span> <span class="br">{</span></td></tr>
+<tr name="72" id="72">
+<td><a id="l72" class='ln'>72</a></td><td>      <a id="72c7" class="tk">LittleEndianIEEEDouble</a> <a id="72c30" class="tk">bitVal</a>;</td></tr>
+<tr name="73" id="73">
+<td><a id="l73" class='ln'>73</a></td><td>      <a id="73c7" class="tk">real_T</a> <a id="73c14" class="tk">fltVal</a>;</td></tr>
+<tr name="74" id="74">
+<td><a id="l74" class='ln'>74</a></td><td>    <span class="br">}</span> <a id="74c7" class="tk">tmpVal</a>;</td></tr>
+<tr name="75" id="75">
+<td><a id="l75" class='ln'>75</a></td><td></td></tr>
+<tr name="76" id="76">
+<td><a id="l76" class='ln'>76</a></td><td>    <a id="76c5" class="tk">tmpVal</a>.<a id="76c12" class="tk">bitVal</a>.<a id="76c19" class="tk">words</a>.<a id="76c25" class="tk">wordH</a> = 0xFFF00000U;</td></tr>
+<tr name="77" id="77">
+<td><a id="l77" class='ln'>77</a></td><td>    <a id="77c5" class="tk">tmpVal</a>.<a id="77c12" class="tk">bitVal</a>.<a id="77c19" class="tk">words</a>.<a id="77c25" class="tk">wordL</a> = 0x00000000U;</td></tr>
+<tr name="78" id="78">
+<td><a id="l78" class='ln'>78</a></td><td>    <a id="78c5" class="tk">minf</a> = <a id="78c12" class="tk">tmpVal</a>.<a id="78c19" class="tk">fltVal</a>;</td></tr>
+<tr name="79" id="79">
+<td><a id="l79" class='ln'>79</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="80" id="80">
+<td><a id="l80" class='ln'>80</a></td><td></td></tr>
+<tr name="81" id="81">
+<td><a id="l81" class='ln'>81</a></td><td>  <span class="kw">return</span> <a id="81c10" class="tk">minf</a>;</td></tr>
+<tr name="82" id="82">
+<td><a id="l82" class='ln'>82</a></td><td><span class="br">}</span></td></tr>
+<tr name="83" id="83">
+<td><a id="l83" class='ln'>83</a></td><td></td></tr>
+<tr name="84" id="84">
+<td><a id="l84" class='ln'>84</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="85" id="85">
+<td><a id="l85" class='ln'>85</a></td><td><span class="ct"> * Initialize rtMinusInfF needed by the generated code.</span></td></tr>
+<tr name="86" id="86">
+<td><a id="l86" class='ln'>86</a></td><td><span class="ct"> * Inf is initialized as non-signaling. Assumes IEEE.</span></td></tr>
+<tr name="87" id="87">
+<td><a id="l87" class='ln'>87</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="88" id="88">
+<td><a id="l88" class='ln'>88</a></td><td><a id="88c1" class="tk">real32_T</a> <a id="88c10" class="tk">rtGetMinusInfF</a>(<span class="kw">void</span>)</td></tr>
+<tr name="89" id="89">
+<td><a id="l89" class='ln'>89</a></td><td><span class="br">{</span></td></tr>
+<tr name="90" id="90">
+<td><a id="l90" class='ln'>90</a></td><td>  <a id="90c3" class="tk">IEEESingle</a> <a id="90c14" class="tk">minfF</a>;</td></tr>
+<tr name="91" id="91">
+<td><a id="l91" class='ln'>91</a></td><td>  <a id="91c3" class="tk">minfF</a>.<a id="91c9" class="tk">wordL</a>.<a id="91c15" class="tk">wordLuint</a> = 0xFF800000U;</td></tr>
+<tr name="92" id="92">
+<td><a id="l92" class='ln'>92</a></td><td>  <span class="kw">return</span> <a id="92c10" class="tk">minfF</a>.<a id="92c16" class="tk">wordL</a>.<a id="92c22" class="tk">wordLreal</a>;</td></tr>
+<tr name="93" id="93">
+<td><a id="l93" class='ln'>93</a></td><td><span class="br">}</span></td></tr>
+<tr name="94" id="94">
+<td><a id="l94" class='ln'>94</a></td><td></td></tr>
+<tr name="95" id="95">
+<td><a id="l95" class='ln'>95</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="96" id="96">
+<td><a id="l96" class='ln'>96</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="97" id="97">
+<td><a id="l97" class='ln'>97</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="98" id="98">
+<td><a id="l98" class='ln'>98</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="99" id="99">
+<td><a id="l99" class='ln'>99</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="100" id="100">
+<td><a id="l100" class='ln'>100</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

+ 88 - 0
Simulink/PMSM_Controller_ert_rtw/html/rtGetInf_h.html

@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: rtGetInf.h</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="pp">#ifndef</span> <a id="18c9" class="tk">RTW_HEADER_rtGetInf_h_</a></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td><span class="pp">#define</span> <a id="19c9" class="tk">RTW_HEADER_rtGetInf_h_</a></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td><span class="pp">#include &lt;stddef.h&gt;</span></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="pp">#include "rtwtypes.h"</span></td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td><span class="pp">#include "rt_nonfinite.h"</span></td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td></td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td><span class="kw">extern</span> <a id="24c8" class="tk">real_T</a> <a id="24c15" class="tk">rtGetInf</a>(<span class="kw">void</span>);</td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td><span class="kw">extern</span> <a id="25c8" class="tk">real32_T</a> <a id="25c17" class="tk">rtGetInfF</a>(<span class="kw">void</span>);</td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td><span class="kw">extern</span> <a id="26c8" class="tk">real_T</a> <a id="26c15" class="tk">rtGetMinusInf</a>(<span class="kw">void</span>);</td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td><span class="kw">extern</span> <a id="27c8" class="tk">real32_T</a> <a id="27c17" class="tk">rtGetMinusInfF</a>(<span class="kw">void</span>);</td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td></td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td><span class="pp">#endif</span>                                 <span class="ct">/* RTW_HEADER_rtGetInf_h_ */</span></td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td></td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="34" id="34">
+<td><a id="l34" class='ln'>34</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="35" id="35">
+<td><a id="l35" class='ln'>35</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="36" id="36">
+<td><a id="l36" class='ln'>36</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

+ 148 - 0
Simulink/PMSM_Controller_ert_rtw/html/rtGetNaN_c.html

@@ -0,0 +1,148 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: rtGetNaN.c</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td><span class="ct"> * Abstract:</span></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td><span class="ct"> *      Function to initialize non-finite, NaN</span></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td><span class="pp">#include "rtGetNaN.h"</span></td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td><span class="pp">#define</span> <a id="23c9" class="tk">NumBitsPerChar</a>                 8U</td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td></td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td><span class="ct"> * Initialize rtNaN needed by the generated code.</span></td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td><span class="ct"> * NaN is initialized as non-signaling. Assumes IEEE.</span></td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td><a id="29c1" class="tk">real_T</a> <a id="29c8" class="tk">rtGetNaN</a>(<span class="kw">void</span>)</td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td><span class="br">{</span></td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td>  <a id="31c3" class="tk">size_t</a> <a id="31c10" class="tk">bitsPerReal</a> = <span class="kw">sizeof</span>(<a id="31c31" class="tk">real_T</a>) <a id="31c39" class="tk">*</a> (<a id="31c42" class="tk">NumBitsPerChar</a>);</td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td>  <a id="32c3" class="tk">real_T</a> <a id="32c10" class="tk">nan</a> = 0.0;</td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td>  <span class="kw">if</span> (<a id="33c7" class="tk">bitsPerReal</a> <a id="33c19" class="tk">==</a> 32U) <span class="br">{</span></td></tr>
+<tr name="34" id="34">
+<td><a id="l34" class='ln'>34</a></td><td>    <a id="34c5" class="tk">nan</a> = <a id="34c11" class="tk">rtGetNaNF</a>();</td></tr>
+<tr name="35" id="35">
+<td><a id="l35" class='ln'>35</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="36" id="36">
+<td><a id="l36" class='ln'>36</a></td><td>    <span class="kw">union</span> <span class="br">{</span></td></tr>
+<tr name="37" id="37">
+<td><a id="l37" class='ln'>37</a></td><td>      <a id="37c7" class="tk">LittleEndianIEEEDouble</a> <a id="37c30" class="tk">bitVal</a>;</td></tr>
+<tr name="38" id="38">
+<td><a id="l38" class='ln'>38</a></td><td>      <a id="38c7" class="tk">real_T</a> <a id="38c14" class="tk">fltVal</a>;</td></tr>
+<tr name="39" id="39">
+<td><a id="l39" class='ln'>39</a></td><td>    <span class="br">}</span> <a id="39c7" class="tk">tmpVal</a>;</td></tr>
+<tr name="40" id="40">
+<td><a id="l40" class='ln'>40</a></td><td></td></tr>
+<tr name="41" id="41">
+<td><a id="l41" class='ln'>41</a></td><td>    <a id="41c5" class="tk">tmpVal</a>.<a id="41c12" class="tk">bitVal</a>.<a id="41c19" class="tk">words</a>.<a id="41c25" class="tk">wordH</a> = 0xFFF80000U;</td></tr>
+<tr name="42" id="42">
+<td><a id="l42" class='ln'>42</a></td><td>    <a id="42c5" class="tk">tmpVal</a>.<a id="42c12" class="tk">bitVal</a>.<a id="42c19" class="tk">words</a>.<a id="42c25" class="tk">wordL</a> = 0x00000000U;</td></tr>
+<tr name="43" id="43">
+<td><a id="l43" class='ln'>43</a></td><td>    <a id="43c5" class="tk">nan</a> = <a id="43c11" class="tk">tmpVal</a>.<a id="43c18" class="tk">fltVal</a>;</td></tr>
+<tr name="44" id="44">
+<td><a id="l44" class='ln'>44</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="45" id="45">
+<td><a id="l45" class='ln'>45</a></td><td></td></tr>
+<tr name="46" id="46">
+<td><a id="l46" class='ln'>46</a></td><td>  <span class="kw">return</span> <a id="46c10" class="tk">nan</a>;</td></tr>
+<tr name="47" id="47">
+<td><a id="l47" class='ln'>47</a></td><td><span class="br">}</span></td></tr>
+<tr name="48" id="48">
+<td><a id="l48" class='ln'>48</a></td><td></td></tr>
+<tr name="49" id="49">
+<td><a id="l49" class='ln'>49</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="50" id="50">
+<td><a id="l50" class='ln'>50</a></td><td><span class="ct"> * Initialize rtNaNF needed by the generated code.</span></td></tr>
+<tr name="51" id="51">
+<td><a id="l51" class='ln'>51</a></td><td><span class="ct"> * NaN is initialized as non-signaling. Assumes IEEE.</span></td></tr>
+<tr name="52" id="52">
+<td><a id="l52" class='ln'>52</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="53" id="53">
+<td><a id="l53" class='ln'>53</a></td><td><a id="53c1" class="tk">real32_T</a> <a id="53c10" class="tk">rtGetNaNF</a>(<span class="kw">void</span>)</td></tr>
+<tr name="54" id="54">
+<td><a id="l54" class='ln'>54</a></td><td><span class="br">{</span></td></tr>
+<tr name="55" id="55">
+<td><a id="l55" class='ln'>55</a></td><td>  <a id="55c3" class="tk">IEEESingle</a> <a id="55c14" class="tk">nanF</a> = <span class="br">{</span> <span class="br">{</span> 0 <span class="br">}</span> <span class="br">}</span>;</td></tr>
+<tr name="56" id="56">
+<td><a id="l56" class='ln'>56</a></td><td></td></tr>
+<tr name="57" id="57">
+<td><a id="l57" class='ln'>57</a></td><td>  <a id="57c3" class="tk">nanF</a>.<a id="57c8" class="tk">wordL</a>.<a id="57c14" class="tk">wordLuint</a> = 0xFFC00000U;</td></tr>
+<tr name="58" id="58">
+<td><a id="l58" class='ln'>58</a></td><td>  <span class="kw">return</span> <a id="58c10" class="tk">nanF</a>.<a id="58c15" class="tk">wordL</a>.<a id="58c21" class="tk">wordLreal</a>;</td></tr>
+<tr name="59" id="59">
+<td><a id="l59" class='ln'>59</a></td><td><span class="br">}</span></td></tr>
+<tr name="60" id="60">
+<td><a id="l60" class='ln'>60</a></td><td></td></tr>
+<tr name="61" id="61">
+<td><a id="l61" class='ln'>61</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="62" id="62">
+<td><a id="l62" class='ln'>62</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="63" id="63">
+<td><a id="l63" class='ln'>63</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="64" id="64">
+<td><a id="l64" class='ln'>64</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="65" id="65">
+<td><a id="l65" class='ln'>65</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="66" id="66">
+<td><a id="l66" class='ln'>66</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

+ 84 - 0
Simulink/PMSM_Controller_ert_rtw/html/rtGetNaN_h.html

@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: rtGetNaN.h</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="pp">#ifndef</span> <a id="18c9" class="tk">RTW_HEADER_rtGetNaN_h_</a></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td><span class="pp">#define</span> <a id="19c9" class="tk">RTW_HEADER_rtGetNaN_h_</a></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td><span class="pp">#include &lt;stddef.h&gt;</span></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="pp">#include "rtwtypes.h"</span></td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td><span class="pp">#include "rt_nonfinite.h"</span></td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td></td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td><span class="kw">extern</span> <a id="24c8" class="tk">real_T</a> <a id="24c15" class="tk">rtGetNaN</a>(<span class="kw">void</span>);</td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td><span class="kw">extern</span> <a id="25c8" class="tk">real32_T</a> <a id="25c17" class="tk">rtGetNaNF</a>(<span class="kw">void</span>);</td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td></td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td><span class="pp">#endif</span>                                 <span class="ct">/* RTW_HEADER_rtGetNaN_h_ */</span></td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td></td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="34" id="34">
+<td><a id="l34" class='ln'>34</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

+ 130 - 0
Simulink/PMSM_Controller_ert_rtw/html/rt_defines_h.html

@@ -0,0 +1,130 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: rt_defines.h</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="pp">#ifndef</span> <a id="18c9" class="tk">RTW_HEADER_rt_defines_h_</a></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td><span class="pp">#define</span> <a id="19c9" class="tk">RTW_HEADER_rt_defines_h_</a></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="ct">/*===========*</span></td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td><span class="ct"> * Constants *</span></td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td><span class="ct"> *===========*/</span></td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td><span class="pp">#define</span> <a id="24c9" class="tk">RT_PI</a>                          3.14159265358979323846</td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td><span class="pp">#define</span> <a id="25c9" class="tk">RT_PIF</a>                         3.1415927F</td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td><span class="pp">#define</span> <a id="26c9" class="tk">RT_LN_10</a>                       2.30258509299404568402</td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td><span class="pp">#define</span> <a id="27c9" class="tk">RT_LN_10F</a>                      2.3025851F</td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td><span class="pp">#define</span> <a id="28c9" class="tk">RT_LOG10E</a>                      0.43429448190325182765</td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td><span class="pp">#define</span> <a id="29c9" class="tk">RT_LOG10EF</a>                     0.43429449F</td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td><span class="pp">#define</span> <a id="30c9" class="tk">RT_E</a>                           2.7182818284590452354</td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td><span class="pp">#define</span> <a id="31c9" class="tk">RT_EF</a>                          2.7182817F</td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td></td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="34" id="34">
+<td><a id="l34" class='ln'>34</a></td><td><span class="ct"> * UNUSED_PARAMETER(x)</span></td></tr>
+<tr name="35" id="35">
+<td><a id="l35" class='ln'>35</a></td><td><span class="ct"> *   Used to specify that a function parameter (argument) is required but not</span></td></tr>
+<tr name="36" id="36">
+<td><a id="l36" class='ln'>36</a></td><td><span class="ct"> *   accessed by the function body.</span></td></tr>
+<tr name="37" id="37">
+<td><a id="l37" class='ln'>37</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="38" id="38">
+<td><a id="l38" class='ln'>38</a></td><td><span class="pp">#ifndef</span> <a id="38c9" class="tk">UNUSED_PARAMETER</a></td></tr>
+<tr name="39" id="39">
+<td><a id="l39" class='ln'>39</a></td><td><span class="pp">#if</span> <a id="39c5" class="tk">defined</a>(<a id="39c13" class="tk">__LCC__</a>)</td></tr>
+<tr name="40" id="40">
+<td><a id="l40" class='ln'>40</a></td><td><span class="pp">#define</span> <a id="40c9" class="tk">UNUSED_PARAMETER</a>(<a id="40c26" class="tk">x</a>)                                      <span class="ct">/* do nothing */</span></td></tr>
+<tr name="41" id="41">
+<td><a id="l41" class='ln'>41</a></td><td><span class="pp">#else</span></td></tr>
+<tr name="42" id="42">
+<td><a id="l42" class='ln'>42</a></td><td></td></tr>
+<tr name="43" id="43">
+<td><a id="l43" class='ln'>43</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="44" id="44">
+<td><a id="l44" class='ln'>44</a></td><td><span class="ct"> * This is the semi-ANSI standard way of indicating that an</span></td></tr>
+<tr name="45" id="45">
+<td><a id="l45" class='ln'>45</a></td><td><span class="ct"> * unused function parameter is required.</span></td></tr>
+<tr name="46" id="46">
+<td><a id="l46" class='ln'>46</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="47" id="47">
+<td><a id="l47" class='ln'>47</a></td><td><span class="pp">#define</span> <a id="47c9" class="tk">UNUSED_PARAMETER</a>(<a id="47c26" class="tk">x</a>)            (<span class="kw">void</span>) (<a id="47c48" class="tk">x</a>)</td></tr>
+<tr name="48" id="48">
+<td><a id="l48" class='ln'>48</a></td><td><span class="pp">#endif</span></td></tr>
+<tr name="49" id="49">
+<td><a id="l49" class='ln'>49</a></td><td><span class="pp">#endif</span></td></tr>
+<tr name="50" id="50">
+<td><a id="l50" class='ln'>50</a></td><td><span class="pp">#endif</span>                                 <span class="ct">/* RTW_HEADER_rt_defines_h_ */</span></td></tr>
+<tr name="51" id="51">
+<td><a id="l51" class='ln'>51</a></td><td></td></tr>
+<tr name="52" id="52">
+<td><a id="l52" class='ln'>52</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="53" id="53">
+<td><a id="l53" class='ln'>53</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="54" id="54">
+<td><a id="l54" class='ln'>54</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="55" id="55">
+<td><a id="l55" class='ln'>55</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="56" id="56">
+<td><a id="l56" class='ln'>56</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="57" id="57">
+<td><a id="l57" class='ln'>57</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

+ 212 - 0
Simulink/PMSM_Controller_ert_rtw/html/rt_nonfinite_c.html

@@ -0,0 +1,212 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: rt_nonfinite.c</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td><span class="ct"> * Abstract:</span></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td><span class="ct"> *      Function to initialize non-finites,</span></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="ct"> *      (Inf, NaN and -Inf).</span></td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td><span class="pp">#include "rt_nonfinite.h"</span></td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td><span class="pp">#include "rtGetNaN.h"</span></td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td><span class="pp">#include "rtGetInf.h"</span></td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td><span class="pp">#define</span> <a id="26c9" class="tk">NumBitsPerChar</a>                 8U</td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td></td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td><a id="28c1" class="tk">real_T</a> <a id="28c8" class="tk">rtInf</a>;</td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td><a id="29c1" class="tk">real_T</a> <a id="29c8" class="tk">rtMinusInf</a>;</td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td><a id="30c1" class="tk">real_T</a> <a id="30c8" class="tk">rtNaN</a>;</td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td><a id="31c1" class="tk">real32_T</a> <a id="31c10" class="tk">rtInfF</a>;</td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td><a id="32c1" class="tk">real32_T</a> <a id="32c10" class="tk">rtMinusInfF</a>;</td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td><a id="33c1" class="tk">real32_T</a> <a id="33c10" class="tk">rtNaNF</a>;</td></tr>
+<tr name="34" id="34">
+<td><a id="l34" class='ln'>34</a></td><td></td></tr>
+<tr name="35" id="35">
+<td><a id="l35" class='ln'>35</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="36" id="36">
+<td><a id="l36" class='ln'>36</a></td><td><span class="ct"> * Initialize the rtInf, rtMinusInf, and rtNaN needed by the</span></td></tr>
+<tr name="37" id="37">
+<td><a id="l37" class='ln'>37</a></td><td><span class="ct"> * generated code. NaN is initialized as non-signaling. Assumes IEEE.</span></td></tr>
+<tr name="38" id="38">
+<td><a id="l38" class='ln'>38</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="39" id="39">
+<td><a id="l39" class='ln'>39</a></td><td><span class="kw">void</span> <a id="39c6" class="tk">rt_InitInfAndNaN</a>(<a id="39c23" class="tk">size_t</a> <a id="39c30" class="tk">realSize</a>)</td></tr>
+<tr name="40" id="40">
+<td><a id="l40" class='ln'>40</a></td><td><span class="br">{</span></td></tr>
+<tr name="41" id="41">
+<td><a id="l41" class='ln'>41</a></td><td>  (<span class="kw">void</span>) (<a id="41c11" class="tk">realSize</a>);</td></tr>
+<tr name="42" id="42">
+<td><a id="l42" class='ln'>42</a></td><td>  <a id="42c3" class="tk">rtNaN</a> = <a id="42c11" class="tk">rtGetNaN</a>();</td></tr>
+<tr name="43" id="43">
+<td><a id="l43" class='ln'>43</a></td><td>  <a id="43c3" class="tk">rtNaNF</a> = <a id="43c12" class="tk">rtGetNaNF</a>();</td></tr>
+<tr name="44" id="44">
+<td><a id="l44" class='ln'>44</a></td><td>  <a id="44c3" class="tk">rtInf</a> = <a id="44c11" class="tk">rtGetInf</a>();</td></tr>
+<tr name="45" id="45">
+<td><a id="l45" class='ln'>45</a></td><td>  <a id="45c3" class="tk">rtInfF</a> = <a id="45c12" class="tk">rtGetInfF</a>();</td></tr>
+<tr name="46" id="46">
+<td><a id="l46" class='ln'>46</a></td><td>  <a id="46c3" class="tk">rtMinusInf</a> = <a id="46c16" class="tk">rtGetMinusInf</a>();</td></tr>
+<tr name="47" id="47">
+<td><a id="l47" class='ln'>47</a></td><td>  <a id="47c3" class="tk">rtMinusInfF</a> = <a id="47c17" class="tk">rtGetMinusInfF</a>();</td></tr>
+<tr name="48" id="48">
+<td><a id="l48" class='ln'>48</a></td><td><span class="br">}</span></td></tr>
+<tr name="49" id="49">
+<td><a id="l49" class='ln'>49</a></td><td></td></tr>
+<tr name="50" id="50">
+<td><a id="l50" class='ln'>50</a></td><td><span class="ct">/* Test if value is infinite */</span></td></tr>
+<tr name="51" id="51">
+<td><a id="l51" class='ln'>51</a></td><td><a id="51c1" class="tk">boolean_T</a> <a id="51c11" class="tk">rtIsInf</a>(<a id="51c19" class="tk">real_T</a> <a id="51c26" class="tk">value</a>)</td></tr>
+<tr name="52" id="52">
+<td><a id="l52" class='ln'>52</a></td><td><span class="br">{</span></td></tr>
+<tr name="53" id="53">
+<td><a id="l53" class='ln'>53</a></td><td>  <span class="kw">return</span> (<a id="53c11" class="tk">boolean_T</a>)((<a id="53c23" class="tk">value</a><a id="53c28" class="tk">==</a><a id="53c30" class="tk">rtInf</a> <a id="53c36" class="tk">||</a> <a id="53c39" class="tk">value</a><a id="53c44" class="tk">==</a><a id="53c46" class="tk">rtMinusInf</a>) <a id="53c58" class="tk">?</a> 1U <a id="53c63" class="tk">:</a> 0U);</td></tr>
+<tr name="54" id="54">
+<td><a id="l54" class='ln'>54</a></td><td><span class="br">}</span></td></tr>
+<tr name="55" id="55">
+<td><a id="l55" class='ln'>55</a></td><td></td></tr>
+<tr name="56" id="56">
+<td><a id="l56" class='ln'>56</a></td><td><span class="ct">/* Test if single-precision value is infinite */</span></td></tr>
+<tr name="57" id="57">
+<td><a id="l57" class='ln'>57</a></td><td><a id="57c1" class="tk">boolean_T</a> <a id="57c11" class="tk">rtIsInfF</a>(<a id="57c20" class="tk">real32_T</a> <a id="57c29" class="tk">value</a>)</td></tr>
+<tr name="58" id="58">
+<td><a id="l58" class='ln'>58</a></td><td><span class="br">{</span></td></tr>
+<tr name="59" id="59">
+<td><a id="l59" class='ln'>59</a></td><td>  <span class="kw">return</span> (<a id="59c11" class="tk">boolean_T</a>)(((<a id="59c24" class="tk">value</a>)<a id="59c30" class="tk">==</a><a id="59c32" class="tk">rtInfF</a> <a id="59c39" class="tk">||</a> (<a id="59c43" class="tk">value</a>)<a id="59c49" class="tk">==</a><a id="59c51" class="tk">rtMinusInfF</a>) <a id="59c64" class="tk">?</a> 1U <a id="59c69" class="tk">:</a> 0U);</td></tr>
+<tr name="60" id="60">
+<td><a id="l60" class='ln'>60</a></td><td><span class="br">}</span></td></tr>
+<tr name="61" id="61">
+<td><a id="l61" class='ln'>61</a></td><td></td></tr>
+<tr name="62" id="62">
+<td><a id="l62" class='ln'>62</a></td><td><span class="ct">/* Test if value is not a number */</span></td></tr>
+<tr name="63" id="63">
+<td><a id="l63" class='ln'>63</a></td><td><a id="63c1" class="tk">boolean_T</a> <a id="63c11" class="tk">rtIsNaN</a>(<a id="63c19" class="tk">real_T</a> <a id="63c26" class="tk">value</a>)</td></tr>
+<tr name="64" id="64">
+<td><a id="l64" class='ln'>64</a></td><td><span class="br">{</span></td></tr>
+<tr name="65" id="65">
+<td><a id="l65" class='ln'>65</a></td><td>  <a id="65c3" class="tk">boolean_T</a> <a id="65c13" class="tk">result</a> = (<a id="65c23" class="tk">boolean_T</a>) 0;</td></tr>
+<tr name="66" id="66">
+<td><a id="l66" class='ln'>66</a></td><td>  <a id="66c3" class="tk">size_t</a> <a id="66c10" class="tk">bitsPerReal</a> = <span class="kw">sizeof</span>(<a id="66c31" class="tk">real_T</a>) <a id="66c39" class="tk">*</a> (<a id="66c42" class="tk">NumBitsPerChar</a>);</td></tr>
+<tr name="67" id="67">
+<td><a id="l67" class='ln'>67</a></td><td>  <span class="kw">if</span> (<a id="67c7" class="tk">bitsPerReal</a> <a id="67c19" class="tk">==</a> 32U) <span class="br">{</span></td></tr>
+<tr name="68" id="68">
+<td><a id="l68" class='ln'>68</a></td><td>    <a id="68c5" class="tk">result</a> = <a id="68c14" class="tk">rtIsNaNF</a>((<a id="68c24" class="tk">real32_T</a>)<a id="68c33" class="tk">value</a>);</td></tr>
+<tr name="69" id="69">
+<td><a id="l69" class='ln'>69</a></td><td>  <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr>
+<tr name="70" id="70">
+<td><a id="l70" class='ln'>70</a></td><td>    <span class="kw">union</span> <span class="br">{</span></td></tr>
+<tr name="71" id="71">
+<td><a id="l71" class='ln'>71</a></td><td>      <a id="71c7" class="tk">LittleEndianIEEEDouble</a> <a id="71c30" class="tk">bitVal</a>;</td></tr>
+<tr name="72" id="72">
+<td><a id="l72" class='ln'>72</a></td><td>      <a id="72c7" class="tk">real_T</a> <a id="72c14" class="tk">fltVal</a>;</td></tr>
+<tr name="73" id="73">
+<td><a id="l73" class='ln'>73</a></td><td>    <span class="br">}</span> <a id="73c7" class="tk">tmpVal</a>;</td></tr>
+<tr name="74" id="74">
+<td><a id="l74" class='ln'>74</a></td><td></td></tr>
+<tr name="75" id="75">
+<td><a id="l75" class='ln'>75</a></td><td>    <a id="75c5" class="tk">tmpVal</a>.<a id="75c12" class="tk">fltVal</a> = <a id="75c21" class="tk">value</a>;</td></tr>
+<tr name="76" id="76">
+<td><a id="l76" class='ln'>76</a></td><td>    <a id="76c5" class="tk">result</a> = (<a id="76c15" class="tk">boolean_T</a>)((<a id="76c27" class="tk">tmpVal</a>.<a id="76c34" class="tk">bitVal</a>.<a id="76c41" class="tk">words</a>.<a id="76c47" class="tk">wordH</a> <a id="76c53" class="tk">&amp;</a> 0x7FF00000) <a id="76c67" class="tk">==</a> 0x7FF00000 <a id="76c81" class="tk">&amp;&amp;</a></td></tr>
+<tr name="77" id="77">
+<td><a id="l77" class='ln'>77</a></td><td>                         ( (<a id="77c29" class="tk">tmpVal</a>.<a id="77c36" class="tk">bitVal</a>.<a id="77c43" class="tk">words</a>.<a id="77c49" class="tk">wordH</a> <a id="77c55" class="tk">&amp;</a> 0x000FFFFF) <a id="77c69" class="tk">!=</a> 0 <a id="77c74" class="tk">||</a></td></tr>
+<tr name="78" id="78">
+<td><a id="l78" class='ln'>78</a></td><td>                          (<a id="78c28" class="tk">tmpVal</a>.<a id="78c35" class="tk">bitVal</a>.<a id="78c42" class="tk">words</a>.<a id="78c48" class="tk">wordL</a> <a id="78c54" class="tk">!=</a> 0) ));</td></tr>
+<tr name="79" id="79">
+<td><a id="l79" class='ln'>79</a></td><td>  <span class="br">}</span></td></tr>
+<tr name="80" id="80">
+<td><a id="l80" class='ln'>80</a></td><td></td></tr>
+<tr name="81" id="81">
+<td><a id="l81" class='ln'>81</a></td><td>  <span class="kw">return</span> <a id="81c10" class="tk">result</a>;</td></tr>
+<tr name="82" id="82">
+<td><a id="l82" class='ln'>82</a></td><td><span class="br">}</span></td></tr>
+<tr name="83" id="83">
+<td><a id="l83" class='ln'>83</a></td><td></td></tr>
+<tr name="84" id="84">
+<td><a id="l84" class='ln'>84</a></td><td><span class="ct">/* Test if single-precision value is not a number */</span></td></tr>
+<tr name="85" id="85">
+<td><a id="l85" class='ln'>85</a></td><td><a id="85c1" class="tk">boolean_T</a> <a id="85c11" class="tk">rtIsNaNF</a>(<a id="85c20" class="tk">real32_T</a> <a id="85c29" class="tk">value</a>)</td></tr>
+<tr name="86" id="86">
+<td><a id="l86" class='ln'>86</a></td><td><span class="br">{</span></td></tr>
+<tr name="87" id="87">
+<td><a id="l87" class='ln'>87</a></td><td>  <a id="87c3" class="tk">IEEESingle</a> <a id="87c14" class="tk">tmp</a>;</td></tr>
+<tr name="88" id="88">
+<td><a id="l88" class='ln'>88</a></td><td>  <a id="88c3" class="tk">tmp</a>.<a id="88c7" class="tk">wordL</a>.<a id="88c13" class="tk">wordLreal</a> = <a id="88c25" class="tk">value</a>;</td></tr>
+<tr name="89" id="89">
+<td><a id="l89" class='ln'>89</a></td><td>  <span class="kw">return</span> (<a id="89c11" class="tk">boolean_T</a>)( (<a id="89c24" class="tk">tmp</a>.<a id="89c28" class="tk">wordL</a>.<a id="89c34" class="tk">wordLuint</a> <a id="89c44" class="tk">&amp;</a> 0x7F800000) <a id="89c58" class="tk">==</a> 0x7F800000 <a id="89c72" class="tk">&amp;&amp;</a></td></tr>
+<tr name="90" id="90">
+<td><a id="l90" class='ln'>90</a></td><td>                     (<a id="90c23" class="tk">tmp</a>.<a id="90c27" class="tk">wordL</a>.<a id="90c33" class="tk">wordLuint</a> <a id="90c43" class="tk">&amp;</a> 0x007FFFFF) <a id="90c57" class="tk">!=</a> 0 );</td></tr>
+<tr name="91" id="91">
+<td><a id="l91" class='ln'>91</a></td><td><span class="br">}</span></td></tr>
+<tr name="92" id="92">
+<td><a id="l92" class='ln'>92</a></td><td></td></tr>
+<tr name="93" id="93">
+<td><a id="l93" class='ln'>93</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="94" id="94">
+<td><a id="l94" class='ln'>94</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="95" id="95">
+<td><a id="l95" class='ln'>95</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="96" id="96">
+<td><a id="l96" class='ln'>96</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="97" id="97">
+<td><a id="l97" class='ln'>97</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="98" id="98">
+<td><a id="l98" class='ln'>98</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

+ 140 - 0
Simulink/PMSM_Controller_ert_rtw/html/rt_nonfinite_h.html

@@ -0,0 +1,140 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: rt_nonfinite.h</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="pp">#ifndef</span> <a id="18c9" class="tk">RTW_HEADER_rt_nonfinite_h_</a></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td><span class="pp">#define</span> <a id="19c9" class="tk">RTW_HEADER_rt_nonfinite_h_</a></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td><span class="pp">#include &lt;stddef.h&gt;</span></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="pp">#include "rtwtypes.h"</span></td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td></td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td><span class="kw">extern</span> <a id="23c8" class="tk">real_T</a> <a id="23c15" class="tk">rtInf</a>;</td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td><span class="kw">extern</span> <a id="24c8" class="tk">real_T</a> <a id="24c15" class="tk">rtMinusInf</a>;</td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td><span class="kw">extern</span> <a id="25c8" class="tk">real_T</a> <a id="25c15" class="tk">rtNaN</a>;</td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td><span class="kw">extern</span> <a id="26c8" class="tk">real32_T</a> <a id="26c17" class="tk">rtInfF</a>;</td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td><span class="kw">extern</span> <a id="27c8" class="tk">real32_T</a> <a id="27c17" class="tk">rtMinusInfF</a>;</td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td><span class="kw">extern</span> <a id="28c8" class="tk">real32_T</a> <a id="28c17" class="tk">rtNaNF</a>;</td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td><span class="kw">extern</span> <span class="kw">void</span> <a id="29c13" class="tk">rt_InitInfAndNaN</a>(<a id="29c30" class="tk">size_t</a> <a id="29c37" class="tk">realSize</a>);</td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td><span class="kw">extern</span> <a id="30c8" class="tk">boolean_T</a> <a id="30c18" class="tk">rtIsInf</a>(<a id="30c26" class="tk">real_T</a> <a id="30c33" class="tk">value</a>);</td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td><span class="kw">extern</span> <a id="31c8" class="tk">boolean_T</a> <a id="31c18" class="tk">rtIsInfF</a>(<a id="31c27" class="tk">real32_T</a> <a id="31c36" class="tk">value</a>);</td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td><span class="kw">extern</span> <a id="32c8" class="tk">boolean_T</a> <a id="32c18" class="tk">rtIsNaN</a>(<a id="32c26" class="tk">real_T</a> <a id="32c33" class="tk">value</a>);</td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td><span class="kw">extern</span> <a id="33c8" class="tk">boolean_T</a> <a id="33c18" class="tk">rtIsNaNF</a>(<a id="33c27" class="tk">real32_T</a> <a id="33c36" class="tk">value</a>);</td></tr>
+<tr name="34" id="34">
+<td><a id="l34" class='ln'>34</a></td><td><span class="kw">typedef</span> <span class="kw">struct</span> <span class="br">{</span></td></tr>
+<tr name="35" id="35">
+<td><a id="l35" class='ln'>35</a></td><td>  <span class="kw">struct</span> <span class="br">{</span></td></tr>
+<tr name="36" id="36">
+<td><a id="l36" class='ln'>36</a></td><td>    <a id="36c5" class="tk">uint32_T</a> <a id="36c14" class="tk">wordH</a>;</td></tr>
+<tr name="37" id="37">
+<td><a id="l37" class='ln'>37</a></td><td>    <a id="37c5" class="tk">uint32_T</a> <a id="37c14" class="tk">wordL</a>;</td></tr>
+<tr name="38" id="38">
+<td><a id="l38" class='ln'>38</a></td><td>  <span class="br">}</span> <a id="38c5" class="tk">words</a>;</td></tr>
+<tr name="39" id="39">
+<td><a id="l39" class='ln'>39</a></td><td><span class="br">}</span> <a id="39c3" class="tk">BigEndianIEEEDouble</a>;</td></tr>
+<tr name="40" id="40">
+<td><a id="l40" class='ln'>40</a></td><td></td></tr>
+<tr name="41" id="41">
+<td><a id="l41" class='ln'>41</a></td><td><span class="kw">typedef</span> <span class="kw">struct</span> <span class="br">{</span></td></tr>
+<tr name="42" id="42">
+<td><a id="l42" class='ln'>42</a></td><td>  <span class="kw">struct</span> <span class="br">{</span></td></tr>
+<tr name="43" id="43">
+<td><a id="l43" class='ln'>43</a></td><td>    <a id="43c5" class="tk">uint32_T</a> <a id="43c14" class="tk">wordL</a>;</td></tr>
+<tr name="44" id="44">
+<td><a id="l44" class='ln'>44</a></td><td>    <a id="44c5" class="tk">uint32_T</a> <a id="44c14" class="tk">wordH</a>;</td></tr>
+<tr name="45" id="45">
+<td><a id="l45" class='ln'>45</a></td><td>  <span class="br">}</span> <a id="45c5" class="tk">words</a>;</td></tr>
+<tr name="46" id="46">
+<td><a id="l46" class='ln'>46</a></td><td><span class="br">}</span> <a id="46c3" class="tk">LittleEndianIEEEDouble</a>;</td></tr>
+<tr name="47" id="47">
+<td><a id="l47" class='ln'>47</a></td><td></td></tr>
+<tr name="48" id="48">
+<td><a id="l48" class='ln'>48</a></td><td><span class="kw">typedef</span> <span class="kw">struct</span> <span class="br">{</span></td></tr>
+<tr name="49" id="49">
+<td><a id="l49" class='ln'>49</a></td><td>  <span class="kw">union</span> <span class="br">{</span></td></tr>
+<tr name="50" id="50">
+<td><a id="l50" class='ln'>50</a></td><td>    <a id="50c5" class="tk">real32_T</a> <a id="50c14" class="tk">wordLreal</a>;</td></tr>
+<tr name="51" id="51">
+<td><a id="l51" class='ln'>51</a></td><td>    <a id="51c5" class="tk">uint32_T</a> <a id="51c14" class="tk">wordLuint</a>;</td></tr>
+<tr name="52" id="52">
+<td><a id="l52" class='ln'>52</a></td><td>  <span class="br">}</span> <a id="52c5" class="tk">wordL</a>;</td></tr>
+<tr name="53" id="53">
+<td><a id="l53" class='ln'>53</a></td><td><span class="br">}</span> <a id="53c3" class="tk">IEEESingle</a>;</td></tr>
+<tr name="54" id="54">
+<td><a id="l54" class='ln'>54</a></td><td></td></tr>
+<tr name="55" id="55">
+<td><a id="l55" class='ln'>55</a></td><td><span class="pp">#endif</span>                                 <span class="ct">/* RTW_HEADER_rt_nonfinite_h_ */</span></td></tr>
+<tr name="56" id="56">
+<td><a id="l56" class='ln'>56</a></td><td></td></tr>
+<tr name="57" id="57">
+<td><a id="l57" class='ln'>57</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="58" id="58">
+<td><a id="l58" class='ln'>58</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="59" id="59">
+<td><a id="l59" class='ln'>59</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="60" id="60">
+<td><a id="l60" class='ln'>60</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="61" id="61">
+<td><a id="l61" class='ln'>61</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="62" id="62">
+<td><a id="l62" class='ln'>62</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

+ 2091 - 0
Simulink/PMSM_Controller_ert_rtw/html/rtwhilite.js

@@ -0,0 +1,2091 @@
+// Copyright 2006-2019 The MathWorks, Inc.
+
+// Class RTW_Hash ------------------------------------------------------------
+// Internal web browser doesn't change window.location.hash if the link points
+// to the same page.
+// RTW_Hash remembers the hash value when the page is loaded in the first time 
+// or a link is clicked.
+// removeHiliteByHash cleans the high lighted elements according to the stored 
+// hash value
+function RTW_Hash(aHash) {
+    if (aHash == null) {
+        this.fHash = "";
+    } else {
+        this.fHash = aHash;
+    };
+    
+    this.getHash = function() {
+        return this.fHash;
+    }
+
+    this.setHash = function(aHash) {
+        this.fHash = aHash;
+    }
+}
+
+RTW_Hash.instance = null;
+
+// Class RTW_TraceInfo --------------------------------------------------------
+function RTW_TraceInfo(aFileLinks) {
+    this.fFileLinks = aFileLinks;
+    this.fLines = new Array();
+    this.fTotalLines = 0; // total number of highlighted lines
+    this.fNumLines = new Array();
+    this.fFileIdxCache = new Array();
+    this.fDisablePanel = false;
+    this.fCurrFileIdx = -1;
+    this.fCurrLineIdx = -1;
+    this.fCurrCodeNode = null;
+    this.getHtmlFileName = function(aIndex) {
+        if (aIndex < this.fFileLinks.length) {
+            var href = this.fFileLinks[aIndex].href;
+            return href.substring(href.lastIndexOf('/')+1);
+        }
+    }
+    this.getSrcFileName = function(aIndex) {
+        var name = this.getHtmlFileName(aIndex);
+        if (name)
+            name = RTW_TraceInfo.toSrcFileName(name);
+        return name;
+    }
+    this.getNumFileLinks = function() {
+        return this.fFileLinks.length;
+    }
+    this.setFileLinkColor = function(aIndex, aColor) {
+        var link = this.fFileLinks[aIndex];
+        if (link && link.parentNode && link.parentNode.style)
+            link.parentNode.style.backgroundColor = aColor;
+    }
+    this.highlightFileLink = function(aIndex, aColor) {
+        for (var i = 0; i < this.fFileLinks.length; ++i) {
+            this.setFileLinkColor(i, i == aIndex ? aColor : "");
+        }
+    }
+    this.highlightCurrFileLink = function(aColor) {
+        this.highlightFileLink(this.fCurrFileIdx);
+    }
+    this.highlightLines = function(aCodeNode,aColor) {
+        this.fCurrCodeNode = aCodeNode;
+        var lines = this.fLines[this.getHtmlFileName(this.fCurrFileIdx)];
+        if (lines && aCodeNode) {
+            for (var i = 0; i < lines.length; ++i) {
+                var lineObj = aCodeNode.childNodes[lines[i]-1];
+                if (lineObj)
+                    lineObj.style.backgroundColor=aColor;
+            }
+        }
+    }
+    this.getFileIdx = function(aFile) {
+        if (this.fFileIdxCache[aFile] != null)
+            return this.fFileIdxCache[aFile];
+        for (var i = 0; i < this.fFileLinks.length; ++i) {
+            if (this.getHtmlFileName(i) == aFile) {
+                this.fFileIdxCache[aFile] = i;
+                return i;
+            }
+        }
+        return null;
+    }
+    this.getCurrFileIdx = function() { return this.fCurrFileIdx; }
+    this.setNumHighlightedLines = function(aFileIdx, aNumLines) {
+        this.fNumLines[aFileIdx] = aNumLines;
+        updateNumHighlightedLines(this.fFileLinks[aFileIdx], aNumLines);
+    }
+    this.getNumLines = function(aFileIdx) {
+        return this.fNumLines[aFileIdx] != null ? this.fNumLines[aFileIdx] : 0;
+    }
+    this.getNumLinesAll = function() {
+        var sum = 0;
+        var len = this.fNumLines.length;
+        for (var i = 0; i < len; ++i) {
+            sum += this.getNumLines(i);
+        }
+        return sum;
+    }
+    this.getPrevButton = function() {
+        var aFrame = getNavFrame();
+        if (typeof aFrame !== "undefined" && aFrame !== null)
+            return aFrame.document.getElementById("rtwIdButtonPrev");
+        else
+            return document.getElementById("rtwIdButtonPrev");
+    }
+    this.getNextButton = function() {
+        var aFrame = getNavFrame();
+        if (typeof aFrame !== "undefined" && aFrame !== null)
+            return aFrame.document.getElementById("rtwIdButtonNext");
+        else
+            return document.getElementById("rtwIdButtonNext");
+    }
+    this.getPanel = function() {
+        var aFrame = getNavFrame();
+        if (typeof aFrame !== "undefined" && aFrame !== null)
+            return aFrame.document.getElementById("rtwIdTracePanel");
+        else
+            return document.getElementById("rtwIdTracePanel");
+    }
+    this.removeHighlighting = function() {
+        for (var i = 0; i < this.fFileLinks.length; ++i) {
+            this.setFileLinkColor(i, "");
+            this.setNumHighlightedLines(i, 0);
+        }
+        // remove highlight and reset current code node
+        try {
+            if (this.fCurrCodeNode != null)
+                this.highlightLines(getCodeNode(),"");
+        } catch (e) {};
+        this.fCurrCodeNode = null;    
+        if (this.getPrevButton()) { this.getPrevButton().disabled = true; }
+        if (this.getNextButton()) { this.getNextButton().disabled = true; }
+        if (this.getPanel()) { this.getPanel().style.display = "none"; }
+        this.fCurrFileIdx = -1;
+        this.fCurrLineIdx = -1;
+    }
+    this.setCurrLineIdx = function(aLineIdx) {
+        this.fCurrLineIdx = aLineIdx;
+    }
+    this.getCurrLineIdx = function() { return this.fCurrLineIdx; }
+    this.setCurrent = function(aFileIdx, aLineIdx) {
+        this.fCurrFileIdx = aFileIdx;
+        var numLines = this.getNumLines(aFileIdx);
+        if (!numLines || aLineIdx >= numLines)
+            this.fCurrLineIdx = -1;
+        else
+            this.fCurrLineIdx = aLineIdx;
+        var allNumLines = this.getNumLinesAll();
+        if (this.getPrevButton()) {
+            this.getPrevButton().disabled = (allNumLines <= 1 || !this.hasPrev());
+        }
+        if (this.getNextButton()) {
+            this.getNextButton().disabled = (allNumLines <= 1 || !this.hasNext());
+        }
+        if (this.getPanel() && !this.fDisablePanel) {
+            this.getPanel().style.display = 'block';
+        }
+    }
+    this.setDisablePanel = function(aDisable) {
+        this.fDisablePanel = aDisable;
+    }
+    this.getPrevFileIdx = function() {
+        if (this.fCurrLineIdx > 0)
+            return this.fCurrFileIdx;
+        for (var i = this.fCurrFileIdx - 1; i >= 0; --i)
+            if (this.fNumLines[i] > 0)
+                return i;
+        return null;
+    }
+    // update the navigation bar state
+    this.updateNavState = function() {
+        if (this.getPrevButton())
+            this.getPrevButton().disabled = !this.hasPrev();
+        if (this.getNextButton())
+            this.getNextButton().disabled = !this.hasNext();
+        setTraceNumber();
+    }
+    this.hasPrev = function() {
+        return this.getPrevFileIdx() != null;
+    }
+    this.getFirstFileIdx = function() {
+        for (var i = 0; i < this.getNumFileLinks(); ++i)
+            if (this.fNumLines[i] > 0)
+                return i;
+    }
+    this.getLastFileIdx = function() {
+        for (var i = this.getNumFileLinks(); i >= 0; --i)
+            if (this.fNumLines[i] > 0)
+                return i;
+    }
+    this.goFirst = function() {
+        this.fCurrFileIdx = this.getFirstFileIdx();
+        this.fCurrLineIdx = 0;
+        this.updateNavState();
+    }
+    this.goLast = function() {
+        this.fCurrFileIdx = this.getLastFileIdx();;
+        this.fCurrLineIdx = this.getNumLines(this.fCurrFileIdx) - 1;
+        this.updateNavState();
+    }
+    this.goPrev = function() {
+        var fileIdx = this.getPrevFileIdx();
+        if (fileIdx == null)
+            return;
+        if (fileIdx == this.fCurrFileIdx)
+            --this.fCurrLineIdx;
+        else {
+            this.fCurrFileIdx = fileIdx;
+            this.fCurrLineIdx = this.getNumLines(fileIdx) - 1;
+        }
+        this.updateNavState();
+    }
+    this.getNextFileIdx = function() {
+        if (this.fCurrLineIdx < this.getNumLines(this.fCurrFileIdx) - 1 && this.getNumLines(this.fCurrFileIdx) > 0)
+            return this.fCurrFileIdx;
+        for (var i = this.fCurrFileIdx + 1; i < this.getNumFileLinks(); ++i)
+            if (this.fNumLines[i] > 0)
+                return i;
+        return null;
+    }
+    this.hasNext = function() {
+        return this.getNextFileIdx() != null;
+    }
+    this.goNext = function() {
+        var fileIdx = this.getNextFileIdx();
+        if (fileIdx == null)
+            return;
+        if (fileIdx == this.fCurrFileIdx)
+            ++this.fCurrLineIdx;
+        else {
+            this.fCurrFileIdx = fileIdx;
+            this.fCurrLineIdx = 0;
+        }
+        this.updateNavState();
+    }
+    this.setTotalLines = function(num) {
+        this.fTotalLines = num;
+    }
+    this.getTotalLines = function() { return this.fTotalLines;}
+    this.setLines = function(aFile, aLines) {
+        this.fLines[aFile] = aLines;
+        var index = this.getFileIdx(aFile);
+        if (index != null)
+            this.setNumHighlightedLines(index,aLines.length);
+    }
+    this.getLines = function(aFile) {
+        return this.fLines[aFile];
+    }
+    // get current on focus line number
+    this.getCurrLine = function() {
+        var file = this.getHtmlFileName(this.getCurrFileIdx());
+        var lines = this.fLines[file];
+        var line = null;
+        if (lines) {
+            var line = lines[this.fCurrLineIdx];
+        }
+        return line;
+    }
+    this.getHRef = function(aFileIdx, aLineIdx, offset) {
+        var file = this.getHtmlFileName(aFileIdx);
+        var lines = this.fLines[file];
+        if (lines) {
+            var line = lines[aLineIdx];
+            line = offset_line(line, offset);
+            file = file+"#"+line;
+        }
+        return file;
+    }
+    
+    this.getCurrentHRef = function(offset) {
+        return this.getHRef(this.fCurrFileIdx, this.fCurrLineIdx, offset);
+    }
+    this.setInitLocation = function(aFile, aLine) {
+        var fileIdx = this.getFileIdx(aFile);
+        var lineIdx = null;
+        if (fileIdx != null && aLine) {
+            var lines = this.getLines(aFile);
+            for (var i = 0; i < lines.length; ++i) {
+                if (lines[i] == aLine) {
+                    lineIdx = i;
+                    break;
+                } 
+            }
+        }
+        if (fileIdx == null || lineIdx == null)
+            this.setCurrent(-1,-1);
+        else
+            this.setCurrent(fileIdx,lineIdx);
+    }
+}
+
+// Static methods in RTW_TraceInfo
+
+RTW_TraceInfo.getFileLinks = function(docObj) {
+    var links;
+    if (docObj && docObj.getElementsByName)
+        links = docObj.getElementsByName("rtwIdGenFileLinks");
+    return links ? links : new Array();
+}
+
+RTW_TraceInfo.toSrcFileName = function(aHtmlFileName) {
+    aHtmlFileName = aHtmlFileName.replace(/_c.html$/,".c");
+    aHtmlFileName = aHtmlFileName.replace(/_h.html$/,".h");
+    aHtmlFileName = aHtmlFileName.replace(/_cpp.html$/,".cpp");
+    aHtmlFileName = aHtmlFileName.replace(/_hpp.html$/,".hpp");
+    aHtmlFileName = aHtmlFileName.replace(/_cc.html$/,".hpp");
+    return aHtmlFileName;
+}
+
+RTW_TraceInfo.instance = null;
+
+// Class RTW_TraceArgs --------------------------------------------------------
+// file.c:10,20,30&file.h:10,20,30[&color=value] or 
+// sid=model:1[&color=value]
+RTW_TraceArgs = function(aHash) {
+    this.fColor = null;
+    this.fFontSize = null;
+    this.fInitFile = null;
+    this.fInitLine = null;
+    this.fSID = null;
+    this.fFiles = new Array();
+    this.fLines = new Array();
+    this.fMessage = null;
+    this.fBlock = null;  
+    this.fNumBlocks = 0;
+    this.fUseExternalBrowser = true;
+    this.fInStudio = false;
+    this.fModel2CodeSrc = null;
+    this.fInCodeTrace = false;
+    this.fTraceData = null;
+    this.fFileIdx = []; // filename to fileId
+    this.fRows = []; // highlighted rows indexed by fileId
+    this.fIDs = []; // highlighted IDs indexed by fileId
+
+    this.hasSid = function() {
+        return !(this.fSID == null);
+    }
+    this.parseCommand = function(aHash) {
+        var args = new Array();
+        args = aHash.split('&');
+        for (var i = 0; i < args.length; ++i) {
+            var arg = args[i];
+            sep = arg.indexOf('=');
+            if (sep != -1) {
+                var cmd = arg.substring(0,sep);
+                var opt = arg.substring(sep+1);
+                switch (cmd.toLowerCase()) {
+                case "color":
+                    this.fColor = opt;
+                    break;
+                case "fontsize":
+                    this.fFontSize = opt;
+                    break;
+                case "initfile":
+                    this.fInitFile = RTW_TraceArgs.toHtmlFileName(opt);
+                    break;
+                case "initline":
+                    this.fInitLine = opt;
+                    break;
+                case "msg":
+                    this.fMessage = opt;
+                    break;
+                case "block":
+                    this.fBlock = unescape(opt);
+                    break;
+                case "numblocks":
+                    this.fNumBlocks = parseInt(opt);
+                    break;
+                case "sid":
+                    this.fSID = opt;
+                    // convert sid to code location
+                    break;
+                case "model2code_src":
+                    // model2code_src from model or webview
+                    this.fModel2CodeSrc = opt;
+                    break;
+                case "useexternalbrowser":
+                    this.fUseExternalBrowser = (opt=="true");
+                    break;
+                case "instudio":
+                    this.fInStudio = (opt=="true");
+                    break;
+                case "incodetrace":
+                    this.fInCodeTrace = (opt=="true");
+                    break;
+                case "tracedata":
+                    this.fTraceData = decodeURI(opt);
+                    break;
+                }
+            }
+        }    
+    }
+    this.parseUrlHash = function(aHash) {
+        var rows, sep, assignSep;
+        if (aHash) {
+            args = aHash.split('&');
+            for (var i = 0; i < args.length; ++i) {
+                var arg = args[i];
+                sep = arg.indexOf(':');
+                assignSep = arg.indexOf('=');
+                if (sep !== -1 && assignSep === -1) {
+                    var fileLines = arg.split(':');
+                    var htmlFileName = RTW_TraceArgs.toHtmlFileName(fileLines[0]);
+                    this.fFileIdx[htmlFileName] = i;
+                    this.fFiles.push(htmlFileName);
+                    if (fileLines[1]) {
+                        rows = fileLines[1].split(',');
+                        rows = uniqueRows(rows);
+                        this.fLines.push(rows);
+                        this.fRows[i] = rows;
+                    }
+                }
+            }
+            if (this.fInitFile == null && this.fFiles.length > 0) {
+                this.fInitFile = this.fFiles[0];
+                this.fInitLine = (this.fLines[0] == null ? -1 : this.fLines[0][0]);
+            }
+        }
+    }
+    this.parseUrlHash2 = function(aHash) {
+        aHash = decodeURI(aHash);    
+        var rows;
+        var ids;
+        if (aHash && aHash.length > 0 && aHash[0] === "[") {
+            var input = eval(aHash);  
+            var i;
+            var j;
+            // set highlight files from url
+            for (i=0; i<input.length;i++) {
+                rows = new Array();
+                ids = new Array();
+                this.fFileIdx[input[i].file] = i;
+                this.fFiles.push(input[i].file);
+                ids = input[i].id;
+                for (j=0; j<ids.length;j++) {
+                    // get row number
+                    if (ids[j].indexOf("c") !== -1)
+                        rows.push(Number(ids[j].substring(0,ids[j].indexOf("c")))); 
+                    else
+                        rows.push(Number(ids[j]));
+                }
+                rows = uniqueRows(rows);
+                this.fRows[i] = rows;
+                this.fIDs[i] = ids;
+            }
+        } else {
+            // reset all states
+            this.fFiles = [];
+            this.fRows = [];
+            this.fIDs = [];
+        }
+        return;
+    }
+    this.getFileIdx = function(aFileName) {
+        if (aFileName) {
+            return this.fFileIdx[aFileName];
+        } else {
+            // return the fileIdx of the current display file
+            var pathname = top.rtwreport_document_frame.location.pathname;
+            pathname = pathname.substr(pathname.lastIndexOf("/")+1);
+            // find the highlight file name
+            return this.getFileIdx(pathname);
+        }
+    }
+
+    this.getColor = function() { return this.fColor; }
+    this.getFontSize = function() { return this.fFontSize; }
+    this.getInitFile = function() { return this.fInitFile; }
+    this.getInitLine = function() { return this.fInitLine; }
+    this.getNumFiles = function() { return this.fFiles.length; }
+    this.getSID = function() { return this.fSID; }
+    this.getFile = function(aIdx) { if (isNaN(aIdx)) return this.fFiles; return this.fFiles[aIdx];}
+    this.getLines = function(aIdx) { return this.fLines[aIdx]; } 
+    this.getUseExternalBrowser = function() { return this.fUseExternalBrowser; } 
+    this.getInStudio = function() { return this.fInStudio; } 
+    this.getInCodeTrace = function() { return this.fInCodeTrace; } 
+    this.getTraceData = function() { return this.fTraceData; } 
+    this.getModel2CodeSrc = function() { return this.fModel2CodeSrc; }
+    this.setUseExternalBrowser = function(val) { this.fUseExternalBrowser = val; } 
+    this.setInCodeTrace = function(val) { this.fInCodeTrace = val; } 
+    this.setTraceData = function(val) { this.fTraceData = val; } 
+    this.setModel2CodeSrc = function(val) { this.fModel2CodeSrc = val; }
+    this.getRows = function(aIdx) { return this.fRows[aIdx];}
+    this.getIDs = function(aIdx) { return this.fIDs[aIdx]; }
+    this.getBlock = function() { return this.fBlock; }
+    this.getNumBlocks = function() { return this.fNumBlocks; }
+    // constructor
+    this.parseCommand(aHash);
+}
+
+// Static methods in RTW_TraceArgs
+
+RTW_TraceArgs.toHtmlFileName = function(aFile) {
+    f = aFile;
+    aFile = f.substring(0,f.lastIndexOf('.')) + '_' + f.substring(f.lastIndexOf('.')+1) + ".html";
+    return aFile;
+}
+
+RTW_TraceArgs.instance = null;
+
+RTW_MessageWindow = function(aWindow, aParagraph) {
+    this.fWindow    = aWindow;
+    this.fParagraph = aParagraph;
+    
+    this.print = function(msg) {
+        this.fParagraph.innerHTML = msg;
+        if (msg)
+            this.fWindow.style.display = "block";
+        else
+            this.fWindow.style.display = "none";
+    }
+    this.clear = function() {
+        this.print("");
+    }
+}
+
+// RTW_MessageWindow factory
+RTW_MessageWindowFactory = function(aDocObj) {
+    this.fDocObj = aDocObj;
+    this.fInstance = null;
+
+    this.getInstance = function() {
+        if (this.fInstance)
+            return this.fInstance;
+        if (!this.fDocObj)
+            return;
+        
+        var table     = this.fDocObj.getElementById("rtwIdMsgWindow");
+        var paragraph = this.fDocObj.getElementById("rtwIdMsg");
+        var button    = this.fDocObj.getElementById("rtwIdButtonMsg");
+
+        if (!table || !paragraph || !button)
+            return null;
+
+        obj = new RTW_MessageWindow(table,paragraph);
+        button.onclick = function() { obj.clear(); }
+        this.fInstance = obj;
+        return this.fInstance;
+    }
+}
+
+RTW_MessageWindowFactory.instance = null;
+RTW_MessageWindow.factory = function(aDocObj) {
+    if (!RTW_MessageWindowFactory.instance)
+        RTW_MessageWindowFactory.instance = new RTW_MessageWindowFactory(aDocObj);
+    return RTW_MessageWindowFactory.instance.getInstance();
+}
+
+// Callbacks and helper functions ---------------------------------------------
+
+// Helper functions
+function getCodeNode() {
+    return rtwSrcFrame().document.getElementById("RTWcode");
+}
+
+function rtwMidFrame() {
+    return top.document.getElementById('rtw_midFrame');
+}
+function rtwSrcFrame() {
+    return top.rtwreport_document_frame;
+}
+function rtwTocFrame() {
+    return top.rtwreport_contents_frame;
+}
+function rtwNavToolbarFrame() {
+    return top.rtwreport_navToolbar_frame; // return rtwTocFrame();
+}
+function rtwInspectFrame() {
+    return top.rtwreport_inspect_frame; // return rtwTocFrame();
+}
+function rtwGetFileName(url) {
+    var slashIdx = url.lastIndexOf('/');
+    var hashIdx  = url.indexOf('#', slashIdx);
+    if (hashIdx == -1)
+        return url.substring(slashIdx+1)
+    else
+        return url.substring(slashIdx+1,hashIdx);
+}
+
+// Help function to expand the file group
+function expandFileGroup(docObj, tagID) {
+    if (docObj.getElementById) {
+        var obj_table = docObj.getElementById(tagID);
+        var o;
+        while (obj_table.nodeName != "TABLE") {
+            if (obj_table.parentNode) {
+                obj_table = obj_table.parentNode;
+            } else {
+                return;
+            }
+        }
+        if (obj_table.style.display == "none") {
+            var category_table = obj_table.parentNode;
+            while (category_table.nodeName != "TABLE") {
+                if (category_table.parentNode) {
+                    category_table = category_table.parentNode;
+                } else {
+                    return;
+                }        
+            }
+            var o = category_table.id + "_button";
+            o = docObj.getElementById(o);
+            if (o && top.rtwreport_contents_frame.rtwFileListShrink) {
+                top.rtwreport_contents_frame.rtwFileListShrink(o, category_table.id,
+                                                               category_table.getAttribute('label'), 0);
+            }
+        }
+    }
+}
+// Help function to set the background color based on Element's Id in a document
+// object
+function setBGColorByElementId(docObj, tagID, bgColor) {
+    var status = false;
+    if (bgColor == "") {
+        bgColor = "TRANSPARENT";
+    }
+    
+    if (docObj.getElementById) {
+        var obj2Hilite = docObj.getElementById(tagID);
+        if (obj2Hilite && obj2Hilite.parentNode) {
+            obj2Hilite.parentNode.style.backgroundColor = bgColor;
+            status = true;
+        }
+    }
+    return status;
+}
+
+// Help function to set the background color based on Element's name in a document
+// object
+function setBGColorByElementsName(docObj, tagName, bgColor) {
+    if (bgColor == "") {
+        bgColor = "TRANSPARENT";
+    }  
+    if (docObj.getElementsByName) {
+        var objs2Hilite = docObj.getElementsByName(tagName);
+        for (var objIndex = 0; objIndex < objs2Hilite.length; ++objIndex) {     
+            if (objs2Hilite[objIndex].parentNode)
+                objs2Hilite[objIndex].parentNode.style.backgroundColor = bgColor;
+        }
+    }
+}
+
+// Help function to highlight lines in source file based on Element's name
+// Note: Name of docHiliteByElementsName would be better
+function hiliteByElementsName(winObj, tagName) {
+    var hiliteColor = "#aaffff";
+    if (winObj.document)
+        setBGColorByElementsName(winObj.document, tagName, hiliteColor);
+}
+
+// Help function to remove the highlight of lines in source file based on Element's name
+function removeHiliteByElementsName(winObj, tagName) {
+    if (winObj.document)
+        setBGColorByElementsName(winObj.document, tagName, "");
+}
+
+// Help function to set the background color based on the URL's hash
+function setBGColorByHash(docObj, bgColor) {    
+    if (docObj.location) {
+        var tagName = docObj.location.hash;
+        // Use the stored hash value if it exists because the location.hash
+        // may be wrong in internal web browser
+        if (RTW_Hash.instance)
+            tagName = RTW_Hash.instance.getHash();
+        if (tagName != null)
+            tagName = tagName.substring(1);
+        
+        var codeNode = docObj.getElementById("RTWcode");
+        if (tagName != null && tagName != "") {        
+            if (!isNaN(tagName))
+                tagName = Number(tagName) + 10;            
+            setBGColorByElementsName(docObj, tagName, bgColor);
+        }
+    }
+}
+
+// Highlight the lines in document frame based on the URL's hash
+function hiliteByHash(docObj) {       
+    var hiliteColor = "#aaffff";  
+    setBGColorByHash(docObj, hiliteColor);
+}
+
+// Remove highlight of lines in document frame based on the URL's hash
+function removeHiliteByHash(winObj) {
+    if (winObj.document)
+        setBGColorByHash(winObj.document, "");
+}
+
+// Highlight the filename Element in TOC frame based on the URL's filename
+function hiliteByFileName(aHref) {       
+    var status = false;
+    if (!top.rtwreport_contents_frame)
+        return status;
+    var hiliteColor = GlobalConfig.fileLinkHiliteColor;
+    var fileName = rtwGetFileName(aHref);    
+    if (top.rtwreport_contents_frame.document) {
+        removeHiliteFileList(top.rtwreport_contents_frame);
+        status = setBGColorByElementId(top.rtwreport_contents_frame.document, fileName, hiliteColor);
+        if (status)
+            expandFileGroup(top.rtwreport_contents_frame.document, fileName);
+    }
+    return status;
+}
+
+// Clear the highlights in the code navigation frame.
+function removeHiliteCodeNav(winObj) {    
+    removeHiliteTOC(winObj);
+    removeHiliteFileList(winObj);
+}
+// Clear the highlights in TOC frame. TOC links are named TOC_List
+function removeHiliteTOC(winObj) {    
+    removeHiliteByElementsName(winObj, "TOC_List"); 
+}
+// Clear the highlights in Generated File List. 
+// The filename links are named rtwIdGenFileLinks,
+function removeHiliteFileList(winObj) {    
+    removeHiliteByElementsName(winObj, "rtwIdGenFileLinks");
+}
+
+// Highlight TOC hyperlinks by their Ids.
+function tocHiliteById(id) {
+    hiliteColor = GlobalConfig.fileLinkHiliteColor;    
+    if (top && top.rtwreport_contents_frame && top.rtwreport_contents_frame.document) {
+        removeHiliteCodeNav(top.rtwreport_contents_frame);
+        setBGColorByElementId(top.rtwreport_contents_frame.document, id, hiliteColor);
+    }
+}
+
+// onClick function to highlight the link itself
+function tocHiliteMe(winObj, linkObj, bCleanTrace) {
+    hiliteColor = GlobalConfig.fileLinkHiliteColor;
+    // remove the trace info (previous highlighted source code and the navigate
+    // panel)
+    // Clean Trace info only when links in TOC clicked. Links of filenames won't
+    // clean trace info. 
+    if (bCleanTrace) {
+        if (RTW_TraceInfo.instance) {
+            RTW_TraceInfo.instance.setDisablePanel(true);
+            rtwRemoveHighlighting();
+        }
+        closeInspectWindow();        
+    }        
+    removeHiliteCodeNav(winObj);
+    if (linkObj.parentNode) {
+        linkObj.parentNode.style.backgroundColor= hiliteColor;
+    }
+}
+
+// onClick function to clean the currently highlighed lines in document frame
+// based on URL's hash
+// Then highlight lines in document frame based on Element's name
+// It works for links to some elements in the same page, otherwise, 
+// rtwFileOnLoad() in loading page does the job.
+function docHiliteMe(winObj, elementName) {
+    // First, remove the highlighted elements by stored hash value
+    removeHiliteByHash(winObj);
+    // Store the new hash value defined by elementName
+    if (RTW_Hash.instance) {
+        RTW_Hash.instance.setHash("#"+elementName);
+    } else {
+        RTW_Hash.instance = new RTW_Hash("#"+elementName);
+    }
+    hiliteByElementsName(winObj, elementName);
+}
+
+// Callback for generated file load callback
+function rtwFileOnLoad(docObj) {
+    if (!docObj.location || !docObj.location.href)
+        return;
+    // Save the hash value when file is loaded in the first time
+    if (!RTW_Hash.instance) {
+        RTW_Hash.instance = new RTW_Hash(docObj.location.hash);
+    } else {
+        RTW_Hash.instance.setHash(docObj.location.hash);
+    }  
+    
+    updateHyperlinks();
+    // highlight lines in source code file according to the URL hash
+    hiliteByHash(docObj);
+    // highlight the filename in the TOC frame
+    if (top.rtwreport_contents_frame) {
+        if (hiliteByFileName(docObj.location.href)) {
+            // remove the highlights in the TOC frame if filename is hilite successfully
+            removeHiliteTOC(top.rtwreport_contents_frame);
+        }
+    }
+    
+    if (!RTW_TraceInfo.instance)
+        return;
+    if (!docObj.getElementById)
+        return;
+    if (rtwSrcFrame())
+        rtwSrcFrame().focus();
+    var fileName = rtwGetFileName(docObj.location.href);
+    var fileIdx = RTW_TraceInfo.instance.getFileIdx(fileName);
+    if (fileIdx != null) {
+        if (fileIdx != RTW_TraceInfo.instance.getCurrFileIdx())
+            RTW_TraceInfo.instance.setCurrent(fileIdx,-1);
+        var codeNode = docObj.getElementById("RTWcode");
+        var hiliteColor = RTW_TraceArgs.instance.getColor();
+        if (!hiliteColor) {
+            hiliteColor = "#aaffff";
+        }
+        var fontSize = RTW_TraceArgs.instance.getFontSize();
+        if (fontSize) {
+            codeNode.style.fontSize = fontSize;
+        }
+        RTW_TraceInfo.instance.highlightLines(codeNode,hiliteColor);
+        RTW_TraceInfo.instance.highlightFileLink(fileIdx, GlobalConfig.fileLinkHiliteColor);
+    }
+}
+
+function Nav(fileIdx1, fileIdx2) {
+    var filename = top.rtwreport_document_frame.location.pathname.split(/\//);
+    filename = filename[filename.length-1];
+    var currentFileIdx = RTW_TraceInfo.instance.getFileIdx(filename);
+    if (fileIdx1 === currentFileIdx) {
+        top.rtwreport_document_frame.document.location.href = RTW_TraceInfo.instance.getCurrentHRef();
+        top.initLine = top.rtwreport_document_frame.document.location.hash.substr(1);
+        addTagToCurrentLine();
+        if (top.rtwreport_contents_frame) {            
+            if (hiliteByFileName(top.rtwreport_document_frame.location.href))
+                removeHiliteTOC(top.rtwreport_contents_frame);
+        }
+    } else {
+        var aUrl = RTW_TraceInfo.instance.getCurrentHRef();
+        if (hasWebviewFrame()) {
+            top.rtwreport_document_frame.document.location.href=aUrl;
+        } else {
+            top.rtwreport_document_frame.document.location.href=aUrl + "+newPage";
+        }
+    }
+}
+// Callback for "Prev" button
+function rtwGoPrev() {
+    if (RTW_TraceInfo.instance && top.rtwreport_document_frame) {
+        var prevfileIdx = RTW_TraceInfo.instance.getPrevFileIdx();
+        var currfileIdx = RTW_TraceInfo.instance.fCurrFileIdx;
+        rmTagToCurrentLine();
+        RTW_TraceInfo.instance.goPrev();
+        Nav(prevfileIdx, currfileIdx);
+    }
+}
+// Callback for "First" button
+function rtwGoFirst() {
+    if (RTW_TraceInfo.instance && top.rtwreport_document_frame) {
+        var prevfileIdx = RTW_TraceInfo.instance.getFirstFileIdx();
+        var currfileIdx = RTW_TraceInfo.instance.fCurrFileIdx;
+        rmTagToCurrentLine();
+        RTW_TraceInfo.instance.goFirst();
+        Nav(prevfileIdx, currfileIdx);
+    }
+}
+
+// Callback for navigation button onclick
+var navButtonStatus = (function() {
+    var isclicked = false;
+    return {
+        clicked: function () {
+            isclicked = true;
+            return false;
+        },
+        reset: function () {
+            isclicked = false;
+        },
+        isClicked: function () {
+            return isclicked;
+        }
+    };
+})();
+
+// Callback for "Next" button
+function rtwGoNext() {
+    if (RTW_TraceInfo.instance && top.rtwreport_document_frame) {
+        var nextfileIdx = RTW_TraceInfo.instance.getNextFileIdx();
+        var currfileIdx = RTW_TraceInfo.instance.fCurrFileIdx;
+        rmTagToCurrentLine();
+        RTW_TraceInfo.instance.goNext();
+        Nav(nextfileIdx, currfileIdx);
+    }
+}
+// Callback for "Last" button
+function rtwGoLast() {
+    if (RTW_TraceInfo.instance && top.rtwreport_document_frame) {
+        var nextfileIdx = RTW_TraceInfo.instance.getLastFileIdx();
+        var currfileIdx = RTW_TraceInfo.instance.fCurrFileIdx;
+        rmTagToCurrentLine();
+        RTW_TraceInfo.instance.goLast();
+        Nav(nextfileIdx, currfileIdx);
+    }
+}
+
+function addTagToCurrentLine() {
+    rmHiliteClickedToken();
+    tagCurrentLine(true);
+}
+function rmTagToCurrentLine() {
+    tagCurrentLine(false);
+}
+// tag current line by changing the bacgkround color of the line 
+function tagCurrentLine(addColor) {
+    if (RTW_TraceInfo.instance) {
+        var o = top.rtwreport_document_frame.document.getElementById(RTW_TraceInfo.instance.getCurrLine());
+        if (o) {
+            if (addColor) {
+                o.className = "hiliteCurrentLine";            
+            } else {
+                o.className = "hilite";
+            }
+        }
+    }
+}
+// Helper function for main document load callback
+function rtwMainOnLoadFcn(topDocObj,aLoc,aPanel,forceReload) {
+    var loc;
+    var aHash="";
+    var lastArgs = null;
+    var tocDocObj = top.rtwreport_contents_frame.document;
+    if (typeof forceReload === "undefined") {
+        forceReload = false;
+    }
+    // get the hash value from location.
+    if (!aLoc) {
+        loc = topDocObj.location;
+        if (loc.search || loc.hash) {
+            if (loc.search)
+                aHash = loc.search.substring(1);
+            else
+                aHash = loc.hash.substring(1);
+        }
+    } else {
+        aHash = aLoc;
+        if (RTW_TraceArgs.instance)
+            lastArgs = RTW_TraceArgs.instance;
+    }
+
+    // parse URL hash value
+    RTW_TraceArgs.instance = new RTW_TraceArgs(aHash);
+    // load metrics
+    load_metrics();
+    // hide content panel if in studio
+    if (RTW_TraceArgs.instance.getInStudio()) {
+        setupInStudio();
+    }
+    // use incode traceability
+    if (RTW_TraceArgs.instance.getInCodeTrace()) {
+        RTW_TraceArgs.instance.parseUrlHash2(RTW_TraceArgs.instance.getTraceData());
+        inCodeTraceOnload();
+        return;
+    }
+    if (lastArgs !== null) {
+        RTW_TraceArgs.instance.setUseExternalBrowser(lastArgs.getUseExternalBrowser());
+        RTW_TraceArgs.instance.setModel2CodeSrc(lastArgs.getModel2CodeSrc());
+    }    
+
+    // get highlight url using sid
+    if (RTW_TraceArgs.instance.hasSid()) {
+        aHash = getCodeLines();  
+    }
+    // parse hash to look for msg=...&block=... pattern
+    RTW_TraceArgs.instance.parseCommand(aHash);
+    // parse hash to look for file.c:10,12&file.h:10,12 
+    RTW_TraceArgs.instance.parseUrlHash(aHash);
+
+    // hide navigation buttons if not in MATLAB
+    if (RTW_TraceArgs.instance.getUseExternalBrowser() && tocDocObj.getElementById) {
+        var o = tocDocObj.getElementById("nav_buttons");
+        if (o != null) {
+            o.style.display = "none";
+        }
+    }
+
+    // hide web view frameset if model2code_src is model
+    if (RTW_TraceArgs.instance.getModel2CodeSrc() === "model") {
+        var o = top.document.getElementById('rtw_webviewMidFrame');
+        if (o) {
+            o.rows = "100%,0%";
+        }
+    }
+
+    // stop onload when it has been loaded
+    if (window.location.search.indexOf("loaded=true") > 0 
+        && top.rtwreport_document_frame.location.href !== "about:blank" && forceReload !== true) {
+        updateHyperlinks();
+        return;
+    }  
+    
+    // modify modelref links
+    update_modelref_report_link(top.rtwreport_contents_frame.document);
+    try {
+        // ignore browser security error 
+        update_modelref_report_link(top.rtwreport_document_frame.document);
+    } catch(e) {};
+
+    // redirect the page based on the url    
+    var initPage = null;
+    if (RTW_TraceArgs.instance.getNumFiles()) {
+        var fileLinks = RTW_TraceInfo.getFileLinks(tocDocObj);
+        RTW_TraceInfo.instance = new RTW_TraceInfo(fileLinks);
+        RTW_TraceInfo.instance.removeHighlighting()
+        var numFiles = RTW_TraceArgs.instance.getNumFiles();
+        var tLines = 0;
+        for (var i = 0; i < numFiles; ++i) {
+            RTW_TraceInfo.instance.setLines(RTW_TraceArgs.instance.getFile(i),RTW_TraceArgs.instance.getLines(i));
+            tLines += RTW_TraceArgs.instance.getLines(i).length;
+        }
+        RTW_TraceInfo.instance.setTotalLines(tLines);
+        if (aPanel == false) {
+            RTW_TraceInfo.instance.setDisablePanel(true);
+        }
+        var initFile = RTW_TraceArgs.instance.getInitFile();
+        RTW_TraceInfo.instance.setInitLocation(initFile,RTW_TraceArgs.instance.getInitLine());
+        if (!hasInCodeTrace()) {
+            initPage = RTW_TraceInfo.instance.getCurrentHRef();
+        } else {
+            initPage = initFile;
+        }
+    } else {
+        // catch error that document frame is in another domain
+        try {
+            var fileDocObj = top.rtwreport_document_frame.document;
+            if (fileDocObj.location && (!fileDocObj.location.href || fileDocObj.location.href == "about:blank")) {
+                var summaryPage = tocDocObj.getElementById("rtwIdSummaryPage");
+                var tracePage = tocDocObj.getElementById("rtwIdTraceability");
+                if (summaryPage) {
+                    initPage = summaryPage.href;
+                } else if (tracePage) {
+                    initPage = tracePage;
+                }
+            }
+        } catch(e) {};
+    }
+    if (RTW_TraceArgs.instance && RTW_TraceArgs.instance.fMessage) {
+        // display diagnostic message
+        var linkId = "rtwIdMsgFileLink";
+        var msgFile = tocDocObj.getElementById(linkId);
+        if (msgFile && msgFile.style) {
+            msgFile.style.display = "block";
+            // Highlight the background of msg link
+            tocHiliteById(linkId);      
+        }
+        initPage = "rtwmsg.html";
+    }
+    if (initPage) {
+        var is_same_page = false;
+        try {
+            var fileDocObj = top.rtwreport_document_frame.document;
+            is_same_page = isSamePage(fileDocObj.location.href, initPage);
+        } catch(e) {};     
+        if (document.getElementById("rtwreport_document_frame")) {
+            document.getElementById("rtwreport_document_frame").setAttribute("src", initPage);
+        } else {
+            top.rtwreport_document_frame.location.href = initPage;
+        }
+                
+        if (is_same_page) {
+            // Goto the same page won't trigger onload function.
+            // Call it manuelly to highligh new code location.
+            rtwFileOnLoad(top.rtwreport_document_frame.document);        
+        } 
+    }
+}
+
+// Compare if href1(i.e. file:///path/file1.html#222) and href2(i.e.file2.html) are same pages.
+// isSamePage return true if file1 == file2.
+function isSamePage(href1, href2) {
+    var page1 = href1.substring(href1.lastIndexOf('/')+1,href1.lastIndexOf('.html'));
+    var page2 = href2.substring(href2.lastIndexOf('/')+1,href2.lastIndexOf('.html'));
+    return (page1 == page2);
+}
+
+// Callback for main document loading
+function rtwMainOnLoad() {    
+    rtwMainOnLoadFcn(document,null,true, false);
+    var newUrl;
+    // modify history state to avoid reload from pressing back 
+    if (RTW_TraceArgs.instance && !RTW_TraceArgs.instance.getUseExternalBrowser() && 
+        typeof window.history.replaceState === "function") {
+        if (window.location.search.length > 0) {
+            if (window.location.search.indexOf("loaded=true") === -1) {
+                newUrl = document.location.pathname + window.location.search + '&loaded=true';
+            } else {
+                newUrl = document.location.pathname + window.location.search;
+            }
+        } else {
+            newUrl = document.location.pathname + window.location.search + '?loaded=true';
+        }
+        window.history.replaceState("","",newUrl);
+    }
+}
+
+// Helper function for traceability report
+function rtwMainReload(location) {
+    // remove highlight filename and lines before reloading the page
+    if (RTW_TraceInfo.instance)
+        RTW_TraceInfo.instance.removeHighlighting();  
+    rtwMainOnLoadFcn(document,location,true,true);
+}
+
+function rtwMainReloadNoPanel(location) {
+    rtwMainOnLoadFcn(document,location,false,true);
+}
+
+// Callback for hyperlink "Remove Highlighting"
+function rtwRemoveHighlighting() {
+    if (RTW_TraceInfo.instance)
+        RTW_TraceInfo.instance.removeHighlighting();
+    if (rtwSrcFrame()) {
+        rtwSrcFrame().focus();
+    }
+    if (hasInCodeTrace()) {
+        removeInCodeTraceHighlight();
+    }
+}
+
+// Display diagnostic message in document frame
+function rtwDisplayMessage() {
+    var docObj = top.rtwreport_document_frame.document;
+    var msg = docObj.getElementById(RTW_TraceArgs.instance.fMessage);
+    if (!msg) {
+        msg = docObj.getElementById("rtwMsg_notTraceable");
+    }
+    if (msg && msg.style) {
+        msg.style.display = "block"; // make message visible
+        var msgstr = msg.innerHTML;
+        // replace '%s' in message with block name
+        if (top.RTW_TraceArgs.instance) {
+            var sid = top.RTW_TraceArgs.instance.getBlock();
+            if (sid) {
+                var block = sid;
+                if (top.RTW_rtwnameSIDMap && top.RTW_rtwnameSIDMap.instance && top.RTW_rtwnameSIDMap.instance.getRtwname(sid)) {
+                    block = top.RTW_rtwnameSIDMap.instance.getRtwname(sid).rtwname;
+                    block = block.replace("<", "&lt;").replace(">", "&gt;");
+                } else {
+                    block = sid;
+                }
+                if (block) {
+                    msgstr = msgstr.replace("%s", block);
+                }
+            }
+        }
+        msg.innerHTML = msgstr;
+    }
+}
+
+function updateHyperlinks() {
+    docObj = top.rtwreport_document_frame;
+    if (docObj && docObj.document) {
+        if (RTW_TraceArgs.instance === null || !RTW_TraceArgs.instance.getUseExternalBrowser()) {
+            var plain_link =  docObj.document.getElementById("linkToText_plain");
+            if (plain_link && plain_link.href && plain_link.href.indexOf("matlab:coder.internal.editUrlTextFile") === -1 ) {
+                plain_link.href = "matlab:coder.internal.editUrlTextFile('" + str2StrVar(plain_link.href) + "')";
+            }          
+            var alink = docObj.document.getElementById("linkToCS");
+            var linkCmd = "matlab:coder.internal.viewCodeConfigsetFromReport";
+            if (alink && alink.href && alink.href.indexOf(linkCmd) === -1) {
+                alink.href = linkCmd+ "('" + str2StrVar(alink.href) + "');";
+                if(alink.style) {
+                    alink.style.display = "";
+                    hidden_link = docObj.document.getElementById("linkToCS_disabled");
+                    if (hidden_link) {
+                        hidden_link.style.display = "none";
+                    }
+                }
+            }
+        } else {
+            var alink = docObj.document.getElementById("linkToCS");
+            if (alink && alink.style) {
+                alink.style.display = "none";
+                hidden_link = docObj.document.getElementById("linkToCS_disabled");
+                if (hidden_link)
+                    hidden_link.style.display = "";
+            }
+            if (typeof docObj.document.getElementsByClassName === "function") {
+                alinks = docObj.document.getElementsByClassName("callMATLAB");
+            } else if (typeof docObj.document.getElementsByName === "function") {
+                alinks = docObj.document.getElementsByName("callMATLAB");
+            } else {
+                alinks = [];
+            }
+            alink = docObj.document.getElementById("CodeGenAdvCheck");
+            if (alink && alink.href && alink.href.indexOf("externalweb=true")===-1) {
+                alink.href = alink.href + "?externalweb=true";
+            }
+
+            if (typeof docObj.document.getElementsByName === "function") 
+                var objs = docObj.document.getElementsByName("MATLAB_link");
+            else 
+                objs = [];
+            for (var objIndex = 0; objIndex < objs.length; ++objIndex) {     
+                objs[objIndex].style.display = "none";
+            }
+        }
+    }
+    updateCode2ModelLinks(docObj.document);
+    // modify modelref links
+    update_modelref_report_link(top.rtwreport_contents_frame.document);
+    try {
+        // ignore browser security error 
+        update_modelref_report_link(top.rtwreport_document_frame.document);
+    } catch(e) {};
+}
+
+function update_modelref_report_link(docObj) {
+    if (docObj.getElementsByName) {
+        var arg = "";
+        if (RTW_TraceArgs.instance && !RTW_TraceArgs.instance.getUseExternalBrowser()) {
+            arg = "?useExternalBrowser=false";
+        }
+        if (RTW_TraceArgs && RTW_TraceArgs.instance && RTW_TraceArgs.instance.getModel2CodeSrc() != null) {
+            if (arg.length > 0)
+                arg = arg + "&model2code_src=" + RTW_TraceArgs.instance.getModel2CodeSrc();
+            else
+                arg = "?model2code_src=" + RTW_TraceArgs.instance.getModel2CodeSrc();
+        }
+        if (arg.length > 0) {
+            links = docObj.getElementsByName('external_link');
+            for (var link_idx = 0; link_idx < links.length; ++link_idx) {
+                links[link_idx].href = links[link_idx].href + arg;
+            }
+        }
+    }
+}
+
+function rtwResizeFrame(f) {
+    if (f) {
+        f.style.height = f.contentWindow.document.body.scrollHeight + "px";
+    }
+}
+
+function rtwPageOnLoad(id) {
+    // highlight toc entry
+    tocHiliteById(id);
+    // restore elements state
+    if (top && top.restoreState) {
+        if (top.rtwreport_contents_frame && top.rtwreport_contents_frame.document)
+            top.restoreState(top.rtwreport_contents_frame.document);
+        if (top.rtwreport_document_frame && top.rtwreport_document_frame.document) {
+            top.restoreState(top.rtwreport_document_frame.document);
+            rtwResizeFrame(top.rtwreport_document_frame.document.getElementById("rtwIdContentsIframe"));
+        }
+    }
+    updateHyperlinks();
+}
+
+// highlight code after changeSys
+function rtwChangeSysCallback(sid) {
+    if (sid == "" || typeof RTW_Sid2UrlHash == "undefined" || !RTW_Sid2UrlHash.instance)
+        return false;
+    urlHash = RTW_Sid2UrlHash.instance.getUrlHash(sid);
+    if (urlHash != undefined) {
+        if (RTW_TraceArgs && RTW_TraceArgs.instance && 
+            !RTW_TraceArgs.instance.getUseExternalBrowser())
+            urlHash = (urlHash == "")? "?useExternalBrowser=false" : 
+            urlHash+"&useExternalBrowser=false";
+        rtwMainReload(urlHash, true);
+        return true;
+    } else {
+        // remove highlighting from traceinfo
+        rtwRemoveHighlighting();
+        return false;
+    }
+}
+
+function emlFileOnload(docObj) {
+    var loc = docObj.location;
+    if (loc.hash) {
+        var line = loc.hash.substring(1);
+        hiliteEmlLine(docObj, line);                        
+    }   
+}
+
+function hiliteEmlLine(docObj, line) {
+    var bgColor;
+    if (top.HiliteCodeStatus)
+        bgColor = "#66CCFF";
+    else
+        bgColor = "#E8D152";
+    // unhighlight
+    if (typeof docObj.HiliteLine != "undefined") {
+        trObj = docObj.getElementById("LN_"+docObj.HiliteLine);
+        if (trObj != null) {
+            trObj.style.backgroundColor = "";                   
+        }
+    }   
+    // hilighlight
+    trObj = docObj.getElementById("LN_"+line);
+    if (trObj != null) {
+        trObj.style.backgroundColor = bgColor;
+        docObj.HiliteLine = line;
+    }
+}
+
+function emlLineOnClick(docObj,sid,line) {
+    if (top) {
+        top.HiliteCodeStatus = top.rtwChangeSysCallback(sid);        
+    }
+    hiliteEmlLine(docObj, line);
+}
+
+function updateCode2ModelLinks(docObj) {
+    var webviewFrame = top.document.getElementById('rtw_webviewMidFrame');
+    var link2model = false;
+    var isTestHarness = false;
+    if (top.testHarnessInfo && top.testHarnessInfo.IsTestHarness === "1") {
+        isTestHarness = true;
+    }
+    if (webviewFrame || isTestHarness) {
+        if (webviewFrame && RTW_TraceArgs.instance && 
+            (RTW_TraceArgs.instance.getModel2CodeSrc() !== "model" ||
+             RTW_TraceArgs.instance.getUseExternalBrowser())
+           ) {
+            hiliteCmd = "javascript:top.rtwHilite(";
+        } else {
+            hiliteCmd = "matlab:coder.internal.code2model(";
+            link2model = true;
+        }
+        var objs = docObj.getElementsByName('code2model');
+        var o = null;
+        var str = '';
+        var sid = '';
+        var pattern = "'code2model',";
+        for (var objIndex = 0; objIndex < objs.length; ++objIndex) {     
+            o = objs[objIndex];
+            str = o.href.substring(o.href.indexOf('(')+1);
+            if (str.indexOf(pattern) > -1) {
+                str = str.substring(str.indexOf(pattern) + pattern.length);
+            }
+            o.href = hiliteCmd + str;
+            if (link2model && isTestHarness) {
+                sid = str.substring(0, str.indexOf(")"));
+                o.href = hiliteCmd + sid + ",'" +
+                    top.testHarnessInfo.HarnessName+ "','" + 
+                    top.testHarnessInfo.HarnessOwner+ "','" + 
+                    top.testHarnessInfo.OwnerFileName + "');";
+            }
+        }
+    }
+}
+
+function rtwHilite(aBlock,aParentSID) {
+    if (aBlock.indexOf('-') !== -1) { 
+        // remove sid range: model:sid:2-10 => model:sid 
+        var s; 
+        s = aBlock.split(':'); 
+        if (s.length > 0) { 
+            s = s[s.length-1]; 
+            if (s.indexOf('-') != -1) { 
+                aBlock = aBlock.substring(0, aBlock.lastIndexOf(':')); 
+            } 
+        } 
+    } 
+    if (typeof aParentSID === "undefined") {
+        if (top.RTW_SidParentMap && top.RTW_SidParentMap.instance)
+            aParentSID = top.RTW_SidParentMap.instance.getParentSid(aBlock);
+        else
+            aParentSID = aBlock;
+    }
+    top.HiliteCodeStatus = true;
+    
+    // webview 2 defines an interface api, call slwebview.
+    if (top.slwebview) {
+        // webview 2.x
+        if (top.codeToWebView(aBlock, aParentSID) === -1) {
+            alert("Cannot highlight block in model Web view. It may not be exported.");
+        }
+    
+    } else {
+        // webview 1.x
+        if (hiliteBlockForRTWReport(aBlock,aParentSID) === false) {
+            if (hiliteBlockForRTWReport(aBlock, aBlock) === false) {
+                rtwHilite(aParentSID);
+            }
+        }
+    }
+}
+
+function rtwHiliteMultiple(sids, action) {
+	//For new Code Gen report
+	if (top.slwebview) {
+        // webview 2.x
+        if (top.codeToWebViewArray(sids, action) === -1) {
+            alert("Cannot highlight block(s) in model Web view. It may not be exported.");
+        }
+    }
+}
+
+function str2StrVar(str) {
+    return str.replace(/'/g,"''");
+}
+window.onload=rtwMainOnLoad;
+
+// handle incode traceability highlighting
+function inCodeTraceOnload() {  
+    var tocDocObj = top.rtwreport_contents_frame.document;
+    if (!top.RTW_TraceArgs.instance) {
+        var summaryPage = tocDocObj.getElementById("rtwIdSummaryPage");                 
+        top.rtwreport_document_frame.location.href = summaryPage.href;  
+        return;
+    }
+
+    var files = top.RTW_TraceArgs.instance.getFile();
+    if (files.length === 0) {
+        if (top.RTW_TraceArgs.instance) {
+            var block = top.RTW_TraceArgs.instance.getBlock();
+            block = block.replace("<", "&lt;").replace(">", "&gt;");
+        }
+        top.rtwreport_document_frame.document.write("<pre>No traceability information for block " + block + ".</pre>");
+        return;
+    };
+
+    var fileLinks = RTW_TraceInfo.getFileLinks(tocDocObj);
+    RTW_TraceInfo.instance = new RTW_TraceInfo(fileLinks);
+
+    // update filelist with num of highlighted lines
+    var tocDoc = top.rtwreport_contents_frame.document;
+    var tLines = 0;
+    for (var i=0; i<files.length;i++) {
+        var fileIdx = top.RTW_TraceArgs.instance.getFileIdx(files[i]);
+        if (typeof fileIdx !== "undefined") {
+            var rows = top.RTW_TraceArgs.instance.getRows(fileIdx);
+            var linkNode =  tocDoc.getElementById(files[i]);
+            updateNumHighlightedLines(linkNode, rows.length);
+            RTW_TraceInfo.instance.setLines(files[i], rows);
+            tLines += rows.length;
+        }
+    }
+    // set number of total lines
+    RTW_TraceInfo.instance.setTotalLines(tLines);
+    // update highligthed from
+    if (RTW_TraceArgs.instance.getNumBlocks() === 1) {
+        var node = tocDoc.getElementById("rtwIdTraceBlock");
+        if (node) node.textContent = RTW_TraceArgs.instance.getBlock();
+    }
+    // set the initial file and line
+    fileIdx = top.RTW_TraceArgs.instance.getFileIdx(files[0]);
+    rows = top.RTW_TraceArgs.instance.getRows(fileIdx);
+    RTW_TraceInfo.instance.setInitLocation(files[0],rows[0]);
+
+    // highlight first file
+    top.rtwreport_document_frame.location.href = files[0];
+    return;
+}
+
+function updateNumHighlightedLines(linkObj, aNumLines) {
+    var parent = linkObj.parentNode;
+    if (parent && parent.childNodes && parent.childNodes.length > 1) {
+        var spanNodes = parent.getElementsByTagName('span');
+        var len = spanNodes.length;
+        if (len > 0) {
+            if (aNumLines > 0) {
+                /* display number of matches */
+                spanNodes.item(len-1).innerHTML = "&nbsp;("+aNumLines+")";
+            } else {
+                /* clear number of matches */
+                spanNodes.item(len-1).innerHTML = "";
+            }
+        }
+    }
+}
+
+function setupInStudio() {
+    if (top.whole) {
+        var tmp = top.whole.rows.split(",");    
+        tmp[0] = "35px";
+        top.whole.rows = tmp.join();    
+    }
+    if (top.main) {
+        var tmp = top.main.cols.split(",");
+        tmp[0] = "0";
+        top.main.cols = tmp.join();
+    }
+    // add file list to source file
+    if (top.Html2SrcLink && top.Html2SrcLink.instance && top.fileSelector) {
+        var myDoc = top.fileSelector.document;
+        var fileSelector = myDoc.createElement("select");
+        fileSelector.id = "fileSelector";
+        fileSelector.onchange = top.fileSelectorOnChange;
+        var filename;
+        var filelink;
+        fileSelector.innerHTML += "<option value='" + 
+            top.rtwreport_contents_frame.document.getElementById('rtwIdSummaryPage').href +
+            "'>Summary</option>"; 
+        for (var i=0; i < top.fileList.length; i++) {
+            filename = top.fileList[i];
+            filelink = top.Html2SrcLink.instance.getLink2Src(filename);
+            fileSelector.innerHTML += "<option value='" + filename + "'>" + filelink.substring(filelink.lastIndexOf('/')+1); + "</option>";
+        }
+        var bodyNode = myDoc.body;
+        bodyNode.insertBefore(fileSelector, bodyNode.firstElementChild);
+        var textNode = myDoc.createElement("span");
+        textNode.innerHTML = "Goto: ";
+        bodyNode.insertBefore(textNode, fileSelector);
+        var myCss = myDoc.createElement("link");
+        myCss.type = "text/css";
+        myCss.rel = "stylesheet";
+        myCss.href = "rtwreport.css";
+        myDoc.getElementsByTagName("head")[0].appendChild(myCss);
+    }
+}
+
+function toggleNavSideBar(val) {
+    if (top.main) {
+        var tmp = top.main.cols.split(",");    
+
+        if (val === "on") {
+            tmp[tmp.length-1] = "15px";        
+        } else {
+            tmp[tmp.length-1] = "0";        
+        }
+        top.main.cols = tmp.join();    
+        if (top.rtwreport_nav_frame) 
+            top.rtwreport_nav_frame.location.href = "nav.html";    
+    }
+};
+
+function toggleNavToolBar(val) 
+{    
+    var midFrame = rtwMidFrame();
+    if (midFrame) {
+        var tmp1 = midFrame.rows.split(",");
+        var frameIdx = getNavToolbarFrameIdx();
+        if (val === "on") {
+            tmp1[frameIdx] = "40px";
+        } else {
+            tmp1[frameIdx] = "0";
+        }    
+        midFrame.rows = tmp1.join();
+        if (top.rtwreport_navToolbar_frame) {
+            top.rtwreport_navToolbar_frame.location.href = "navToolbar.html";
+        }
+    }
+};
+
+var GlobalConfig = {
+    navHiliteColor: "#0000ff",
+    fileLinkHiliteColor: "#ffff99",
+    navToolbarBgcolor: "ivory",
+    offset: 10,
+    hiliteToken: false
+};
+var NavSideBarState = {
+    calLineHeight: 0, 
+    overLink: false,
+    linkTarget: null,
+    lastLinkTarget: null,
+    linkTargetIdx: 0
+}
+function drawNavSideBar() {
+    var rectHeight = 1;
+    if (!top || !top.rtwreport_document_frame || !top.rtwreport_nav_frame) return;
+    
+    if (!top.RTW_TraceArgs.instance) return;
+    var fileIdx = top.RTW_TraceArgs.instance.getFileIdx();
+    if (fileIdx === undefined) return;
+    var rows = top.RTW_TraceArgs.instance.getRows(fileIdx);                
+    if (rows.length === 0) return; // no highlighted line 
+    
+    var codeTbl = top.rtwreport_document_frame.document.getElementById("codeTbl");
+    if (!codeTbl) return; // no code table
+    
+    var nRows = codeTbl.rows.length + 1;
+    var canvas = top.rtwreport_nav_frame.document.getElementById("canvas");                
+    canvas.width = top.rtwreport_nav_frame.innerWidth;
+    canvas.height = top.rtwreport_nav_frame.innerHeight-2;
+    NavSideBarState.calLineHeight = canvas.height/nRows;
+    if (canvas.getContext) {
+        var ctx = canvas.getContext("2d");
+        ctx.clearRect(0, 0, canvas.width, canvas.height);
+        // fill background 
+        ctx.fillStyle = GlobalConfig.navToolbarBgcolor;
+        ctx.fillRect(0, 0, canvas.width, canvas.height);
+        ctx.fillStyle = GlobalConfig.navHiliteColor;
+        for (var i=0;i<rows.length;i++) {
+            ctx.fillRect(0, Number(rows[i])*NavSideBarState.calLineHeight, canvas.width, rectHeight);
+        }
+        if (canvas.addEventListener) { 
+            canvas.addEventListener("mousemove", navBarOnMousemove, false);
+            canvas.addEventListener("click", navBarOnClick, false);
+        } else if (canvas.attachEvent) {
+            canvas.attachEvent("mousemove", navBarOnMousemove);
+            canvas.attachEvent("click", navBarOnClick);
+        }
+    }
+}
+
+function navBarOnMousemove(e) {
+    var y = e.clientY;
+    var tolerable_range = 5;
+    if (!top.RTW_TraceArgs.instance || !top.rtwreport_nav_frame) return;
+    var fileIdx = top.RTW_TraceArgs.instance.getFileIdx();
+    var rows = top.RTW_TraceArgs.instance.getRows(fileIdx);
+    var lineLoc,nextLineLoc;
+    top.rtwreport_nav_frame.document.body.style.cursor="";
+    NavSideBarState.overLink = false;
+    NavSideBarState.linkTarget = null;                 
+    NavSideBarState.linkTargetIdx = null;
+    for (var i=0;i<rows.length;i++) {
+        loc = rows[i]*NavSideBarState.calLineHeight;
+        // if within the tolerable range
+        if (Math.abs(y-loc) <= tolerable_range) {
+            top.rtwreport_nav_frame.document.body.style.cursor="pointer";
+            var canvas = top.rtwreport_nav_frame.document.getElementById("canvas");                
+            canvas.title = "navigate to line " + rows[i];
+            NavSideBarState.overLink = true;
+            NavSideBarState.linkTarget = rows[i];
+            NavSideBarState.linkTargetIdx = i;
+            break;
+        } 
+    }
+}
+
+function navBarOnClick(e) {
+    if (NavSideBarState.overLink && top.rtwreport_document_frame) {
+        rmTagToCurrentLine(); // remove current line tag
+        top.RTW_TraceInfo.instance.setCurrLineIdx(NavSideBarState.linkTargetIdx);
+        top.rtwreport_document_frame.document.location.href=RTW_TraceInfo.instance.getCurrentHRef();
+        top.addTagToCurrentLine(); // add current line tag
+        RTW_TraceInfo.instance.updateNavState();
+    }                
+}
+
+function removeInCodeTraceHighlight() {
+    var docObj = top.rtwreport_document_frame.document;
+    toggleNavSideBar("off");
+    toggleNavToolBar("off");
+    var nodes = docObj.getElementsByClassName("hilite");
+    // nodes is a live nodeList. Changing className modifies the list.
+    while(nodes.length) {
+        nodes[0].className = nodes[0].className.replace("hilite", "");
+    }
+    var nodes = docObj.getElementsByClassName("hiliteCurrentLine");
+    // nodes is a live nodeList. Changing className modifies the list.
+    while(nodes.length) {
+        nodes[0].className = nodes[0].className.replace("hiliteCurrentLine", "");
+    }
+    // reset RTW_TraceArgs.instance
+    RTW_TraceArgs.instance = null;
+    // remove highlight in content panel except the filelink
+    if (RTW_TraceInfo && RTW_TraceInfo.instance) {
+        var currFileIdx = RTW_TraceInfo.instance.getCurrFileIdx();
+        RTW_TraceInfo.instance.removeHighlighting();
+        RTW_TraceInfo.instance.highlightFileLink(currFileIdx);
+    }
+}
+
+function getInspectWindow() {
+    var divObj = document.createElement("div");
+    divObj.id = "popup_window";
+    return divObj;    
+}
+function getInspectData(file, anchorObj) {   
+    var metricsData = null;
+    var propObj = null;
+    var type = null;
+    var size = null;
+    var cm;
+    var srcFileName = RTW_TraceInfo.toSrcFileName(file);
+    if (top.rtwreport_nav_frame && top.rtwreport_nav_frame.CodeMetrics && 
+        top.rtwreport_nav_frame.CodeMetrics.instance && 
+        top.RTW_TraceArgs && top.RTW_TraceArgs.instance && 
+        !top.RTW_TraceArgs.instance.getUseExternalBrowser()) {
+        cm = top.rtwreport_nav_frame.CodeMetrics.instance;
+    }
+    if (cm && cm.getMetrics) {
+        metricsData = cm.getMetrics(anchorObj.text);
+        if (!metricsData) {
+            // try static token
+            metricsData =  cm.getMetrics(srcFileName + ":" + anchorObj.text);
+        }
+        if (metricsData) {            
+            type = metricsData.type;
+            if (type === "var") {
+                type = "Global Variable";
+                size = "(" + metricsData.size + " byte)";
+            } else if (type === "fcn") {
+                type = "Function";
+                if (metricsData.stackTotal === -1) {
+                    size = "(stack: " + metricsData.stack + " byte, total stack: recursion)";
+                } else {
+                    size = "(stack: " + metricsData.stack + " byte, total stack: "
+                        + metricsData.stackTotal + " byte)";
+                }
+            }            
+        }
+    }    
+    if (type === null) {
+        var defObj;
+        if (top.CodeDefine.instance.def[srcFileName + ":" + anchorObj.text]) {
+            defObj = top.CodeDefine.instance.def[srcFileName + ":" + anchorObj.text];
+        } else if (top.CodeDefine.instance.def[anchorObj.text]) {
+            defObj = top.CodeDefine.instance.def[anchorObj.text];
+        }
+        if (defObj) {
+            type = defObj.type;
+            if (type === "var") {
+                type = "Variable";
+            } else if (type === "fcn") {
+                type = "Function";
+            } else if (type === "type") {
+                type = "Type";
+            }
+            size = "";
+        }
+    }   
+    var propObj = document.createElement("div");
+    propObj.id = "token_property";
+    
+    var ulObj = document.createElement("ul");
+    ulObj.className = "popup_attrib_list";
+    if (type === null) {
+        ulObj.innerHTML = "Navigate to model";
+    } else {
+        ulObj.innerHTML = "<li>" + type + ": <var>" + anchorObj.text + "</var></li><li>"+
+            size + "</li>";
+    }
+    propObj.appendChild(ulObj);   
+    
+    return propObj;
+}
+function getInspectLink(file, pathname, anchorObj) {
+    var model = top.reportModel;
+    var tokenId = anchorObj.id;
+    var navObj = document.createElement("div");
+    navObj.id = "token_usage_nav";
+    ulObj = document.createElement("ul");
+    ulObj.id = "token_nav_links";
+    ulObj.className="popup_attrib_list";
+    var srcFileName = RTW_TraceInfo.toSrcFileName(file);
+    var defObj;
+    if (top.CodeDefine.instance.def[srcFileName + ":" + anchorObj.text]) {
+        defObj = top.CodeDefine.instance.def[srcFileName + ":" + anchorObj.text];
+    } else if (top.CodeDefine.instance.def[anchorObj.text]) {
+        defObj = top.CodeDefine.instance.def[anchorObj.text];
+    }
+    var line = anchorObj.id.substring(0,anchorObj.id.indexOf("c"));
+    // link to model
+    if (top.TraceInfoFlag && top.TraceInfoFlag.instance && 
+        top.TraceInfoFlag.instance.traceFlag[srcFileName+":"+anchorObj.id]) {
+        return null;
+    }
+    // link to def/decl
+    if (defObj) {
+        var filename = defObj.file.split(/\//);
+        filename = filename[filename.length-1];
+        ulObj.innerHTML += "<li><i>" + anchorObj.text + "</i> defined at <a target='rtwreport_document_frame' onclick=\"top.tokenLinkOnClick(event)\" href='" + defObj.file + "#" + defObj.line +
+            "'>" + RTW_TraceInfo.toSrcFileName(filename) + " line " + defObj.line + "</a></li>";
+    }
+    navObj.appendChild(ulObj);
+    return navObj;
+}
+
+var LastHiliteTokenId = null;
+function rmHiliteClickedToken() {
+    if (LastHiliteTokenId) {
+        var o = top.rtwreport_document_frame.document.getElementById(LastHiliteTokenId);
+        if (o) {
+            o.className = o.className.replace("hiliteToken", "");
+        }
+    }
+}
+function hiliteClickedToken(elem) {
+    rmHiliteClickedToken();
+    LastHiliteTokenId = elem.id;
+    elem.className += " hiliteToken";
+}
+
+var initLine = null;
+function scrollToInitLine() {
+    if (initLine) {
+        var lineElem = top.rtwreport_document_frame.document.getElementById(initLine);
+        if (lineElem) {
+            lineElem.scrollIntoView();
+        }
+    }
+}
+
+function scrollToLineBasedOnHash(hashValue) {
+    // move to the current highlight line if the hash is not empty
+    if (hashValue === "") {
+        if (top.RTW_TraceInfo.instance && top.RTW_TraceInfo.instance.getCurrLine() !== null) {
+            top.rtwreport_document_frame.document.location.href=top.RTW_TraceInfo.instance.getCurrentHRef();
+            top.initLine = top.rtwreport_document_frame.document.location.hash.substr(1);
+        }
+    } else {
+        // scroll and hilite line
+        hashValue = hashValue.substr(1);
+        if (isNaN(hashValue)) {
+            // #fcn_name
+            var pattern = "+newPage";
+            if (hashValue.indexOf(pattern) != -1) {
+                hashValue = hashValue.replace(pattern, '');
+                var lineElem = top.rtwreport_document_frame.document.getElementById(hashValue);
+                initLine = hashValue; // save initLine in case the dom is updated later by anootation
+                if (lineElem) {
+                    lineElem.scrollIntoView(); 
+                    addTagToCurrentLine();
+                }
+
+            } else {
+                var token = null;
+                pattern = ["var_", "fcn_", "type_"];
+                for (var i =0; i < pattern.length; i++) {
+                    if (hashValue.indexOf(pattern[i]) === 0) {
+                        token = hashValue.substr(pattern[i].length);
+                        break;
+                    }
+                }
+                if (token !== null && top.CodeDefine && top.CodeDefine.instance) {
+                    var addr;
+                    var filename = location.pathname.split(/\//);
+                    filename = filename[filename.length-1];  
+                    var srcFileName;
+                    if (top.RTW_TraceInfo) {
+                        srcFileName = top.RTW_TraceInfo.toSrcFileName(filename);
+                    }
+                    if (top.CodeDefine.instance.def[srcFileName + ":" + token]) {
+                        addr = top.CodeDefine.instance.def[srcFileName + ":" + token];
+                    } else {
+                        addr = top.CodeDefine.instance.def[token];
+                    }
+                    if (addr) {
+                        hilite_line(addr.line);
+                    }
+                } else { // token id like #line"c"#col
+                    if (hashValue.indexOf("c") !== -1) {
+                        hilite_line(hashValue.substr(0, hashValue.indexOf("c")), hashValue);
+                    }
+                }
+            }
+        } else { // #line
+            hilite_line(hashValue);
+        }
+    }
+    return false;
+    // hilite line number and scroll with an offset
+    function hilite_line(line, tokenId) {
+        if (isNaN(line)) return;
+        if (!tokenId) {
+            tokenId = line;
+        }
+        var elem = top.rtwreport_document_frame.document.getElementById(tokenId);               
+        hiliteClickedToken(elem);
+        initLine = offset_line(line);
+        scrollToInitLine();
+    }
+}
+
+function tokenLinkOnClick(event) {
+    var alink = event.currentTarget;
+    if (alink.pathname === top.rtwreport_document_frame.location.pathname) {
+        event.preventDefault();
+        scrollToLineBasedOnHash(alink.hash);
+    }
+    return false;
+}
+function inspectToken(file, pathname, event) {
+    var height = "70px";
+    // show inspect data
+    if (top.rtwreport_inspect_frame) { 
+        var windowObj = getInspectWindow();
+        var propObj = getInspectData(file, event.currentTarget);
+        var navObj = getInspectLink(file, pathname, event.currentTarget);
+        if (navObj === null) {
+            closeInspectWindow();
+            return false;
+        }
+        if (propObj === null) {
+            height = "50px";
+        } else {
+            windowObj.appendChild(propObj);
+        }
+        windowObj.appendChild(navObj);
+        var data = top.rtwreport_inspect_frame.document.getElementById("popup_window");
+        if (data) {
+            data.parentNode.replaceChild(windowObj.cloneNode(true), data);
+        }
+    }
+    var offsetHeight = 0;
+    var docHeight = 0;
+    if (typeof(top.rtwInspectFrame().document.body.offsetHeight) === "number") {
+        offsetHeight = top.rtwInspectFrame().document.body.offsetHeight;        
+    }
+    if (typeof(top.rtwInspectFrame().document.height) === "number") {
+        docHeight = top.rtwInspectFrame().document.height;
+    }   
+    if (offsetHeight > 0) {
+        height = ""+offsetHeight+"px";
+    } else if (docHeight > 0) {
+        height = ""+docHeight+"px";
+    }   
+    setInspectWindow(height);
+    return false;
+}
+function setInspectWindow(height) {
+    // show inspect code frame
+    var midFrame = rtwMidFrame();
+    if (midFrame) {
+        var tmp = midFrame.rows.split(",");
+        tmp[getInspectFrameIdx()] = height;    
+        midFrame.rows = tmp.join();
+    }
+}
+function closeInspectWindow() {
+    setInspectWindow(0);
+    return false;
+}
+
+// set the trace number in the navigation toolbar
+function setTraceNumber() {
+    if (RTW_TraceInfo.instance) {
+        var aFrame = rtwNavToolbarFrame();
+        if (aFrame) {
+            var node = aFrame.document.getElementById("rtwIdTraceNumber");
+            // calculate current line index over total highlighted lines
+            var currNum = RTW_TraceInfo.instance.getCurrLineIdx();
+            for (var idx=0;idx<RTW_TraceInfo.instance.getCurrFileIdx();idx++) {
+                currNum += RTW_TraceInfo.instance.getNumLines(idx);
+            }
+            if (node) {
+                node.innerHTML = String(currNum+1) + " of " + String(RTW_TraceInfo.instance.getTotalLines());
+            }
+        }
+    }
+}
+
+function offset_line(line, offset) {
+    if (offset == undefined)
+        offset = GlobalConfig.offset;
+    if (offset > 0)
+        line = (line > GlobalConfig.offset ? line - GlobalConfig.offset : 1);
+    return line;
+}
+
+function load_js(frame, file) {
+    var h = frame.document.getElementsByTagName("head")[0];
+    var o = h.getElementsByTagName('script');
+    for (var i=0;i<o.length;++i) {
+        if (o[i].getAttribute("src") === file) {
+            h.removeChild(o[i]);
+        }
+    }
+    var s = top.document.createElement("script");
+    s.type = "text/javascript";
+    s.src = file;
+    h.appendChild(s);
+}
+
+function reqOnClick(event) {
+    top.hiliteClickedToken(event.currentTarget);
+    return true;
+}
+function resize_NavToolbar_frame() {
+    resize_frame(getNavToolbarFrameIdx(), rtwNavToolbarFrame().document.height);
+}
+function resize_frame(id, height) {
+    if (height) {
+        var midFrame = top.rtwMidFrame();
+        var tmp = midFrame.rows.split(",");
+        if (tmp[id] !== "0%" && tmp[id] !== "0") {
+            tmp[id] = "" + height - 8 + "px";
+            midFrame.rows = tmp.join();
+        }
+    }
+}
+function getNavToolbarFrameIdx() {
+    return 0;
+}
+function getInspectFrameIdx() {
+    return 2;
+}
+function load_metrics() {
+    var alink = top.document.createElement("a");
+    alink.href = "metrics.js";
+    if (top.RTW_TraceArgs && top.RTW_TraceArgs.instance && !top.RTW_TraceArgs.instance.getUseExternalBrowser()) {
+        try {
+            load_js(top.rtwreport_nav_frame, alink.href);
+        } catch (err) {};
+    }
+}
+
+function getNavFrame() {
+    if (hasWebviewFrame()) {
+        return rtwTocFrame();
+    } else {
+        return rtwNavToolbarFrame();
+    }
+}
+
+function hasWebviewFrame() {
+    if (top.document.getElementById('rtw_webviewMidFrame')) {
+        return true;
+    } else {
+        return  false;
+    }
+}
+function hasInCodeTrace() {
+    return (typeof(Html2SrcLink) === "function") && !hasWebviewFrame();
+}
+function uniqueRows(rows) {
+    return rows.sort(function(a,b) {return a-b}).filter(
+        function(el,idx, arr) {
+            if (idx===arr.indexOf(el)) return true; return false;
+        }
+    );
+}
+function fileSelectorOnChange(event) {
+    var o = top.Html2SrcLink.instance.getLinkFromRoot(event.currentTarget.value)
+    if (o) {
+        top.rtwreport_document_frame.location.href = o;
+    } else {
+        top.rtwreport_document_frame.location.href = event.currentTarget.value;
+    }
+}
+function getBuildDir() {
+    var relPathToBuildDir = top.relPathToBuildDir.substr(0,top.relPathToBuildDir.lastIndexOf('/')+1);
+    var a = document.createElement('a');
+    a.href = relPathToBuildDir;
+    var ret = decodeURI(a.pathname);
+    if (top.isPC && ret[0] === "/") {
+        ret = ret.substr(1);
+    }
+    ret = ret.replace(new RegExp("/", 'g'), top.fileSep);
+    return ret;
+}
+
+function getCodeLocation() {
+    var codeLocation = getBuildDir();
+    // make build dir link in report visible by clearing 'display' style
+    docObj = top.rtwreport_document_frame;
+    var alinkTitle = docObj.document.getElementById("sourceLocationTitle");
+    if (alinkTitle && alinkTitle.style) {        
+        alinkTitle.style.display = "";
+    }    
+    var alink = docObj.document.getElementById("sourceLocation");
+    if (alink && alink.style) {        
+        alink.style.display = "";
+    }
+    return codeLocation;
+}
+// get code lines for the input SIDs
+function getCodeLines()
+{
+        var codeLocs = "";
+        var sid = RTW_TraceArgs.instance.getSID();
+        sid = sid.split(",");
+        if(sid.length == 1) {
+            codeLocs = RTW_Sid2UrlHash.instance.getUrlHash(sid[0]);     
+        }
+        else {
+            var fileLocs = [];
+            for(var i=0; i < sid.length; ++i) {
+                var locstr = RTW_Sid2UrlHash.instance.getUrlHash(sid[i]);  
+                var locs = locstr.split("&");
+                for(var j=0; j< locs.length; ++j) {
+                    locElems = locs[j].split(":");
+                    if(fileLocs[locElems[0]] == null) {
+                        fileLocs[locElems[0]] = locElems[1];
+                    } 
+                    else {
+                        fileLocs[locElems[0]] = fileLocs[locElems[0]].concat(",", locElems[1]);                        
+                    }
+                }
+            }
+    
+            // join all locations
+            Object.keys(fileLocs).forEach(function(key) {
+                if(codeLocs.length != 0) {
+                    codeLocs = codeLocs.concat("&", key, ":", fileLocs[key]);
+                } else {
+                    codeLocs = codeLocs.concat(key, ":", fileLocs[key]);
+                }
+            });
+        }
+    return codeLocs;
+}
+
+//add source to frame when _codegen_rpt openend from outisde matlab
+function loadDocFrameSource(modelName) {
+    const urlParams = new URLSearchParams(window.location.search);
+    const opendInExtBrowser = urlParams.get('useExternalBrowser');
+    if (opendInExtBrowser === null) {
+        document.getElementById('rtwreport_document_frame').src = modelName.concat('_survey.html');
+    }
+}

+ 31 - 0
Simulink/PMSM_Controller_ert_rtw/html/rtwmsg.html

@@ -0,0 +1,31 @@
+<html>
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+    <title>Block-to-Code Highlighting Message</title>
+    <link rel="stylesheet" type="text/css" href="rtwreport.css" />
+  </head>
+  <body onload="if (top.rtwDisplayMessage) top.rtwDisplayMessage();">
+    <h1>Block-to-Code Highlighting Message</h1>
+    <p id="rtwMsg_notTraceable" style="display: none">
+      <img src=hilite_warning.png vspace="3px" align="top" />For '%s', you cannot trace code from the model because there is no traceability information.
+    </p>
+    <p id="rtwMsg_virtualBlock" style="display: none">
+      <img src=hilite_warning.png vspace="3px" align="top" />'%s' is a virtual block. Code is not generated for virtual blocks.
+    </p>
+    <p id="rtwMsg_reducedBlock" style="display: none">
+      <img src=hilite_warning.png vspace="3px" align="top" />'%s' is reduced during model compilation. Code is not generated for reduced blocks.
+    </p>
+    <p id="rtwMsg_reusableFunction" style="display: none">
+      <img src=hilite_warning.png vspace="3px" align="top" />Code for '%s' is from reusable function and cannot be traced. 
+    </p>
+    <p id="rtwMsg_blockOutsideSystem" style="display: none">
+      <img src=hilite_warning.png vspace="3px" align="top" />'%s' is outside of source subsystem and cannot be traced.
+    </p>
+    <p id="rtwMsg_illegalCharacter" style="display: none">
+      <img src=hilite_warning.png vspace="3px" align="top" />'%s' contains illegal character (single quote) that disables model-to-code navigation. Remove single quote from block name and rebuild model.
+    </p>
+    <p id="rtwMsg_maskedSubSystem" style="display: none">
+      <img src=hilite_warning.png vspace="3px" align="top" />'%s' is a masked subsystem and cannot be traced at the subsystem block level. Traceability information is available for individual blocks under the mask.
+    </p>
+  </body>
+</html>

+ 257 - 0
Simulink/PMSM_Controller_ert_rtw/html/rtwreport.css

@@ -0,0 +1,257 @@
+/* Copyright 2011-2019 The MathWorks, Inc. */
+body,p,table {font-family: calibri, verdana, sans-serif;}
+button,.buton {font-family: calibri, verdana, sans-serif;}  
+button,.button {font-size: small;}
+.small_font {font-size: small;}
+h1 { font-weight: normal; color: #000066; }
+td { vertical-align: top }
+th { background-color: #eeeeee; text-align: left; }
+a:link { color: #0033cc; }
+a:visited { color: #666666; }
+input { font-family: sans-serif, verdana, calibri; }
+table {
+  background-color: #ffffff;
+  width: 100%;
+}
+
+table.toc, table.button, table.panel {
+  border-style: none;
+}
+
+/* LineNumber */
+.LN {
+    font-style: italic;
+    color: #888888;
+}
+
+/* Comment */
+.CT {
+    font-style: italic;
+    color: #117755;
+}
+
+/* PreProcessor */
+PP {
+    /* font-weight: bold; */
+    color: #992211;
+}
+
+/* Keyword */
+.KW {
+    /* font-weight: bold; */
+    color: #0000FF;
+}
+
+/* Datatype */
+.DT {
+    /* font-weight: bold; */
+    color: #112266
+}
+
+.highlighted {
+    background-color: yellow;
+}
+
+.highlightedCurrent {
+    background-color: rgba(150, 12, 116, 0.1);
+}
+
+input.search {
+    background-color: #ffffff;
+}
+
+input.failedSearch {
+    background-color: #F78181;
+}
+
+/* ensure that code2model links are comment green */
+a.code2model:link {
+    color: #117755;
+    font-style: italic;
+}
+a.code2model:visited{
+    color: #117755;
+    font-style: italic;
+}
+
+.toc td, .button td, .panel td {
+  border-style: none;
+  padding: 4px;
+}
+
+h1 { font-weight: normal; color: #000066; }
+td { vertical-align: top }
+th { background-color: #eeeeee; text-align: left; }
+a:link { color: #0033cc; }
+a:visited { color: #666666; }
+
+/******* table *******/
+/* default table style */
+table.AltRow {
+    border-collapse: collapse; border: none; border-spacing: 0pt;
+    border-top: solid #4F81BD 1.0pt; border-bottom: solid #4F81BD 1.0pt;
+}
+table.AltRow th, table.AltRow td { padding: 2pt 8pt 2pt 2pt }
+/* default alternating row style */
+table.AltRow tr.even td { background-color:#D3DFEE; border:none;}
+table.AltRow tr.odd td { background-color:#FFFFFF; border:none;}
+/* tr class="heading" */
+table.AltRow tr.heading td, table.AltRow th {
+  background-color:#FFFFFF; font-weight:bold; border:none;
+  border-bottom: solid #4F81BD 1.0pt;
+}
+/* table class="FirstColumn" */
+table.FirstColumn td:first-child { font-weight:bold }
+/* table class="TotalRow" */
+table.TotalRow tr:last-child { font-weight:bold }
+table.TotalRow tr:last-child td { border-top: solid #4F81BD 1.0pt }
+
+a.closeButton {
+	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #f9f9f9), color-stop(1, #e9e9e9) );
+	background:-moz-linear-gradient( center top, #f9f9f9 5%, #e9e9e9 100% );
+	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e9e9e9');
+	background-color:#f9f9f9;
+	-webkit-border-top-left-radius:20px;
+	-moz-border-radius-topleft:20px;
+	border-top-left-radius:20px;
+	-webkit-border-top-right-radius:20px;
+	-moz-border-radius-topright:20px;
+	border-top-right-radius:20px;
+	-webkit-border-bottom-right-radius:20px;
+	-moz-border-radius-bottomright:20px;
+	border-bottom-right-radius:20px;
+	-webkit-border-bottom-left-radius:20px;
+	-moz-border-radius-bottomleft:20px;
+	border-bottom-left-radius:20px;
+	text-indent:0;
+	border:2px solid #dcdcdc;
+	display:inline-block;
+	color:#454143;
+	font-family:Arial;
+	font-size:15px;
+	font-weight:bold;
+	font-style:normal;
+	height:20px;
+	line-height:20px;
+	width:20px;
+	text-decoration:none;
+	text-align:center;
+        cursor: pointer;
+}
+a.closeButton:hover {
+	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #e9e9e9), color-stop(1, #f9f9f9) );
+	background:-moz-linear-gradient( center top, #e9e9e9 5%, #f9f9f9 100% );
+	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e9e9e9', endColorstr='#f9f9f9');
+	background-color:#e9e9e9;
+}
+a.closeButton:active {
+	position:relative;
+	top:1px;
+}
+
+.button {
+	-moz-box-shadow:inset 0px 1px 0px 0px #ffffff;
+	-webkit-box-shadow:inset 0px 1px 0px 0px #ffffff;
+	box-shadow:inset 0px 1px 0px 0px #ffffff;
+	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #ededed), color-stop(1, #dfdfdf) );
+	background:-moz-linear-gradient( center top, #ededed 5%, #dfdfdf 100% );
+	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#dfdfdf');
+	background-color:#ededed;
+	-webkit-border-top-left-radius:5px;
+	-moz-border-radius-topleft:5px;
+	border-top-left-radius:5px;
+	-webkit-border-top-right-radius:5px;
+	-moz-border-radius-topright:5px;
+	border-top-right-radius:5px;
+	-webkit-border-bottom-right-radius:5px;
+	-moz-border-radius-bottomright:5px;
+	border-bottom-right-radius:5px;
+	-webkit-border-bottom-left-radius:5px;
+	-moz-border-radius-bottomleft:5px;
+	border-bottom-left-radius:5px;
+	text-indent:0px;
+	border:1px solid #dcdcdc;
+	display:inline-block;
+	color:black;
+	font-family:Arial;
+	font-size:12px;
+	font-weight:bold;
+	font-style:normal;
+	height:12px;
+	line-height:12px;
+	width:45px;
+	text-decoration:none;
+	text-align:center;
+	text-shadow:1px 1px 0px #ffffff;
+}
+.button:hover {
+	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #dfdfdf), color-stop(1, #ededed) );
+	background:-moz-linear-gradient( center top, #dfdfdf 5%, #ededed 100% );
+	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfdfdf', endColorstr='#ededed');
+	background-color:#dfdfdf;
+}.button:active {
+	position:relative;
+	top:1px;
+}.button:disabled {
+	color:#777777;
+}
+
+ul.nav_list {
+        list-style-type:none; 
+        display: block;		
+	margin: 0;
+	padding: 0;
+}
+ul.nav_list li {
+        list-style-type:none; 
+	display: inline;
+	margin: 0 18px 0 0;
+	padding: 0;
+}
+
+.nav_toolbar {
+    background-color: ivory;
+    margin-top: 0;
+}
+
+.inspect_body {
+    margin: 0;
+    margin-bottom: 0;
+    display: inline;
+    vertical-align:middle; 
+}
+
+table.nav_table {
+    background-color: ivory;
+    border: none;
+    width: 100%;
+    display: inline;
+    vertical-align:middle;    
+}
+
+table#rtwIdTracePanel > tr > td {
+    white-space: nowrap;
+    table-layout:fixed;
+    vertical-align:middle; 
+}
+
+table.nav_table > button {
+  height: 20px;
+}
+select#fileSelector {
+   padding: 5px;
+   font-size: 16px;
+   line-height: 1;
+   border-radius: 0;
+   height: 34px;
+}
+
+.treeTable table{
+   table-layout: fixed;
+}
+.treeTable td:first-child > span{
+   display: inline-block;
+   text-overflow: ellipsis;
+   overflow: hidden;
+   width: 100%;
+}

+ 92 - 0
Simulink/PMSM_Controller_ert_rtw/html/rtwreport_utils.js

@@ -0,0 +1,92 @@
+// Copyright 2011-2013 The MathWorks, Inc.
+
+
+function local_onload() {
+    if (typeof top.rtwreport_document_frame !== "undefined") {
+        var docObj = window.document;
+        var alink =  docObj.getElementById("linkToText_plain");
+        if (alink) {
+            alink.href = "matlab:coder.internal.editUrlTextFile('" + alink.href + "')";
+        }
+        alink = docObj.getElementById("linkToCS");
+        if (alink) {
+            alink.href = "matlab:coder.internal.viewCodeConfigsetFromReport('" + alink.href + "');";
+        }
+    }
+}
+
+var utils = (function() {
+
+    // Load via Microsoft.XMLDOM--for older versions of IE
+    function loadXML_MSXMLDOM(filename, callback, async) {
+        if (navigator.appName == "Microsoft Internet Explorer") {
+            // Internet Explorer 5/6 
+            try {
+                var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
+                xmlDoc.async = async;
+                xmlDoc.onreadystatechange = function() {
+                    if (xmlDoc.readyState == 4) {
+                        callback(xmlDoc);
+                    }
+                }
+                xmlDoc.load(filename);
+                return true;
+            } catch(e) {
+            }
+        }
+        return false;
+    }
+
+    // Load via XMLHttpRequest
+    function loadXML_XHR(filename, callback, async) {
+        if (window.XMLHttpRequest) {
+            try {
+                var xhr = new XMLHttpRequest();
+                xhr.onreadystatechange = function() {
+                    if (this.readyState == 4) {
+                        callback(this.responseXML);
+                    }
+                }
+                xhr.open("GET", filename, async);
+                xhr.send("");
+                return true;
+            } catch(e) {
+                if (navigator.appName === "Netscape" && e.code === 1012) {
+                    // file not found: ignore
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    return {
+        trimText: function(s) {
+            // In IE9, String.trim not present
+            if (s && s.trim) {
+                return s.trim();
+            }
+            else {
+                return s;
+            }
+        },
+        getText: function(elt) {
+            // In IE9, use 'text' property rather than 'textContent'
+            return elt.textContent ? elt.textContent : elt.text;
+        },
+        loadXML: function(filename, callback, options) {
+            var async = !!options && typeof(options["async"]) !== "undefined" ? options.async : true;
+            if (!loadXML_XHR(filename, callback, async)) {
+                if (!loadXML_MSXMLDOM(filename, callback, async)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    };
+})();
+
+function code2model(sid) {
+    utils.loadXML("http://localhost:31415/matlab/feval/coder.internal.code2model?arguments=[\"" + sid + "\"]", function() {});
+    //window.location.href = "matlab:coder.internal.code2model('" + sid + "')";
+}

+ 210 - 0
Simulink/PMSM_Controller_ert_rtw/html/rtwshrink.js

@@ -0,0 +1,210 @@
+// Copyright 2011-2017 The MathWorks, Inc.
+
+function RTW_STRUCT(prop, value) {
+    this.prop = prop;
+    if (typeof(value) == 'undefined') {
+        this.value = "";
+    } else {
+        this.value = value;
+    }
+}
+
+// initialize the cache when code generation report is first loaded
+function RTW_BOOK() {
+    this.length = 0;
+    this.rtw_pages = new Array();
+    this.getPage = function(file) {
+        return this.rtw_pages[file];
+    };
+    this.addPage = function(file) {
+        var page;
+        if (this.hasPage(file)) {
+            page = this.rtw_pages[file];
+        } else {
+            page = new RTW_PAGE(file);
+            this.rtw_pages[file] = page;
+        }
+        return page;
+    };
+    this.hasPage = function(file) {
+        return typeof(this.rtw_pages[file]) != 'undefined';
+    };
+    this.removePage = function(file) {
+            var tmp;
+            if (typeof(this.rtw_pages[file]) != 'undefined') {
+                tmp = this.rtw_pages[file];
+                delete this.rtw_pages[file];
+                this.length--;
+            }
+            return tmp;
+        };
+}
+
+if (!RTW_BOOK.instance) {
+    RTW_BOOK.instance = new RTW_BOOK();
+}
+
+function RTW_PAGE() {
+    this.length = 0;
+    this.items = new Array();
+    this.pagename = '';
+    if (arguments.length > 0 && typeof(arguments[1]) != 'undefined') {
+        this.pagename = arguments[1];
+    }
+
+    this.getItem = function(id) {
+        return this.items[id];
+    };
+    this.getItems = function() {
+        return this.items;
+    };
+    this.addItem = function(id, value) {
+        var tmp;
+        if (typeof(value) != 'undefined') {
+            if (typeof(this.items[id]) != 'undefined') {
+                this.length++;
+            } else {
+                tmp = this.items[id];
+            }
+            this.items[id] = value;
+            this.length++;
+        }
+        return tmp;
+    };
+    this.hasItem = function(id) {
+        return typeof(this.items[id]) != 'undefined';
+    };
+    this.removeItem = function(id) {
+        var tmp;
+        if (typeof(this.items[id]) != 'undefined') {
+            tmp = this.items[id];
+            delete this.items[id];
+            this.length--;
+        }
+        return tmp;
+    };
+}
+
+function rtwTableShrink(doc, obj, id, isSymbol) {
+    var hide, hide_text, show, show_text;
+    if (isSymbol) {
+        hide = "[-]";
+        hide_text = hide;
+        show = "[+]";
+        show_text = show;
+    } else {
+        hide = "[<u>hide</u>]";
+        hide_text  = "[hide]";
+        show = "[<u>show</u>]";
+        show_text = "[show]";
+    }
+    hide = "<span class='shrink-button'>" + hide + "</span>";
+    show = "<span class='shrink-button'>" + show + "</span>";
+    if (doc.getElementsByName) {
+        var o = doc.getElementsByName(id);
+        for (var oid = 0; oid < o.length; ++oid) {
+            if (o[oid].style.display === "none") {
+                o[oid].style.display =  "";
+            } else {
+                o[oid].style.display = "none";
+            }
+        }
+        if (o.length >= 0 && addToPage) {
+            addToPage(doc, o[0], 'display');
+        }
+    }
+
+    // IE supports innerText while other browsers support textContent
+    if (obj.textContent) {
+        var objText = obj.textContent;
+    } else {
+        var objText = obj.innerText;
+    }
+
+    if (objText.toLowerCase() === show_text.toLowerCase()) {
+        obj.innerHTML = hide;
+    } else {
+        obj.innerHTML = show;
+    }
+
+    if (addToPage) {
+        addToPage(doc, obj, 'innerHTML');
+    }
+}
+
+function rtwTableExpand(doc, controlObj, id) {
+    if (doc.getElementById) {
+        var obj = doc.getElementById(id);
+        if (obj && obj.style.display === "none") {
+            rtwTableShrink(doc, controlObj, id, false);
+        }
+    }
+}
+
+function restoreState(docObj) {
+    var filename = docObj.location.href;
+    if (RTW_BOOK.instance && RTW_BOOK.instance.hasPage(filename)) {
+        var page = RTW_BOOK.instance.getPage(filename);
+        var items = page.getItems();
+        var elem;
+        if (docObj.getElementsByName) {
+            for (var i in items) {
+                var o = docObj.getElementsByName(i);
+                for (var oid = 0; oid < o.length; ++oid) {
+                    elem = o[oid];
+                    if (items[i].prop === 'display') {
+                        if (elem.style.display === 'none') {
+                            elem.style.display = '';
+                        } else {
+                            elem.style.display = 'none';
+                        }
+                    } else if (items[i].prop === 'innerHTML') {
+                        elem.innerHTML = items[i].value;
+                    }
+                }
+            }
+        }
+    }
+}
+
+function addToPage(docObj, obj, prop) {
+    var filename = docObj.location.href;
+    if (RTW_BOOK.instance) {
+        var page;
+        if (RTW_BOOK.instance.hasPage(filename)) {
+            page = RTW_BOOK.instance.getPage(filename);
+        } else {
+            page = RTW_BOOK.instance.addPage(filename);
+        }
+        if (page.hasItem(obj.id)) {
+            page.removeItem(obj.id);
+        } else {
+            var my_struct;
+            if (prop === "display") {
+                my_struct = new RTW_STRUCT(prop, obj.style.display);
+            } else {
+                my_struct = new RTW_STRUCT(prop, obj.innerHTML);
+            }
+            page.addItem(obj.id, my_struct);
+        }
+    }
+}
+
+function rtwSwitchView(doc, obj1, obj2) {
+    if (doc.getElementsByName) {
+        var o = doc.getElementsByName(obj1);
+        for (var oid = 0; oid < o.length; ++oid) {
+            o[oid].style.display =  "none";
+        }
+        if (o.length >= 0 && addToPage) {
+            addToPage(doc, o[0], 'display');
+        }
+        var o = doc.getElementsByName(obj2);
+        for (var oid = 0; oid < o.length; ++oid) {
+            o[oid].style.display =  "";
+        }
+        if (o.length >= 0 && addToPage) {
+            addToPage(doc, o[0], 'display');
+        }
+    }
+}

+ 222 - 0
Simulink/PMSM_Controller_ert_rtw/html/rtwtypes_h.html

@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/javascript" src="./js/coder_app.js"></script>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="./rtwreport_utils.js"></script>
+<script type="text/javascript" src="./rtwannotate.js"></script>
+<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
+</head>
+<body onload="srcFileOnload();">
+<pre id="code">
+<table class="code" id="codeTbl">
+<tr name="1" id="1">
+<td><a id="l1" class='ln'>1</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="2" id="2">
+<td><a id="l2" class='ln'>2</a></td><td><span class="ct"> * File: rtwtypes.h</span></td></tr>
+<tr name="3" id="3">
+<td><a id="l3" class='ln'>3</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="4" id="4">
+<td><a id="l4" class='ln'>4</a></td><td><span class="ct"> * Code generated for Simulink model 'PMSM_Controller'.</span></td></tr>
+<tr name="5" id="5">
+<td><a id="l5" class='ln'>5</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="6" id="6">
+<td><a id="l6" class='ln'>6</a></td><td><span class="ct"> * Model version                  : 1.885</span></td></tr>
+<tr name="7" id="7">
+<td><a id="l7" class='ln'>7</a></td><td><span class="ct"> * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020</span></td></tr>
+<tr name="8" id="8">
+<td><a id="l8" class='ln'>8</a></td><td><span class="ct"> * C/C++ source code generated on : Sat Jan  8 15:44:11 2022</span></td></tr>
+<tr name="9" id="9">
+<td><a id="l9" class='ln'>9</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="10" id="10">
+<td><a id="l10" class='ln'>10</a></td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
+<tr name="11" id="11">
+<td><a id="l11" class='ln'>11</a></td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="12" id="12">
+<td><a id="l12" class='ln'>12</a></td><td><span class="ct"> * Code generation objectives:</span></td></tr>
+<tr name="13" id="13">
+<td><a id="l13" class='ln'>13</a></td><td><span class="ct"> *    1. Execution efficiency</span></td></tr>
+<tr name="14" id="14">
+<td><a id="l14" class='ln'>14</a></td><td><span class="ct"> *    2. RAM efficiency</span></td></tr>
+<tr name="15" id="15">
+<td><a id="l15" class='ln'>15</a></td><td><span class="ct"> * Validation result: Not run</span></td></tr>
+<tr name="16" id="16">
+<td><a id="l16" class='ln'>16</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="17" id="17">
+<td><a id="l17" class='ln'>17</a></td><td></td></tr>
+<tr name="18" id="18">
+<td><a id="l18" class='ln'>18</a></td><td><span class="pp">#ifndef</span> <a id="18c9" class="tk">RTWTYPES_H</a></td></tr>
+<tr name="19" id="19">
+<td><a id="l19" class='ln'>19</a></td><td><span class="pp">#define</span> <a id="19c9" class="tk">RTWTYPES_H</a></td></tr>
+<tr name="20" id="20">
+<td><a id="l20" class='ln'>20</a></td><td></td></tr>
+<tr name="21" id="21">
+<td><a id="l21" class='ln'>21</a></td><td><span class="ct">/* Logical type definitions */</span></td></tr>
+<tr name="22" id="22">
+<td><a id="l22" class='ln'>22</a></td><td><span class="pp">#if</span> (<a id="22c6" class="tk">!</a><a id="22c7" class="tk">defined</a>(<a id="22c15" class="tk">__cplusplus</a>))</td></tr>
+<tr name="23" id="23">
+<td><a id="l23" class='ln'>23</a></td><td><span class="pp">#ifndef</span> false</td></tr>
+<tr name="24" id="24">
+<td><a id="l24" class='ln'>24</a></td><td><span class="pp">#define</span> false                          (0U)</td></tr>
+<tr name="25" id="25">
+<td><a id="l25" class='ln'>25</a></td><td><span class="pp">#endif</span></td></tr>
+<tr name="26" id="26">
+<td><a id="l26" class='ln'>26</a></td><td></td></tr>
+<tr name="27" id="27">
+<td><a id="l27" class='ln'>27</a></td><td><span class="pp">#ifndef</span> true</td></tr>
+<tr name="28" id="28">
+<td><a id="l28" class='ln'>28</a></td><td><span class="pp">#define</span> true                           (1U)</td></tr>
+<tr name="29" id="29">
+<td><a id="l29" class='ln'>29</a></td><td><span class="pp">#endif</span></td></tr>
+<tr name="30" id="30">
+<td><a id="l30" class='ln'>30</a></td><td><span class="pp">#endif</span></td></tr>
+<tr name="31" id="31">
+<td><a id="l31" class='ln'>31</a></td><td></td></tr>
+<tr name="32" id="32">
+<td><a id="l32" class='ln'>32</a></td><td><span class="ct">/*=======================================================================*</span></td></tr>
+<tr name="33" id="33">
+<td><a id="l33" class='ln'>33</a></td><td><span class="ct"> * Target hardware information</span></td></tr>
+<tr name="34" id="34">
+<td><a id="l34" class='ln'>34</a></td><td><span class="ct"> *   Device type: ARM Compatible-&gt;ARM Cortex-M</span></td></tr>
+<tr name="35" id="35">
+<td><a id="l35" class='ln'>35</a></td><td><span class="ct"> *   Number of bits:     char:   8    short:   16    int:  32</span></td></tr>
+<tr name="36" id="36">
+<td><a id="l36" class='ln'>36</a></td><td><span class="ct"> *                       long:  32    long long:  64</span></td></tr>
+<tr name="37" id="37">
+<td><a id="l37" class='ln'>37</a></td><td><span class="ct"> *                       native word size:  32</span></td></tr>
+<tr name="38" id="38">
+<td><a id="l38" class='ln'>38</a></td><td><span class="ct"> *   Byte ordering: LittleEndian</span></td></tr>
+<tr name="39" id="39">
+<td><a id="l39" class='ln'>39</a></td><td><span class="ct"> *   Signed integer division rounds to: Zero</span></td></tr>
+<tr name="40" id="40">
+<td><a id="l40" class='ln'>40</a></td><td><span class="ct"> *   Shift right on a signed integer as arithmetic shift: on</span></td></tr>
+<tr name="41" id="41">
+<td><a id="l41" class='ln'>41</a></td><td><span class="ct"> *=======================================================================*/</span></td></tr>
+<tr name="42" id="42">
+<td><a id="l42" class='ln'>42</a></td><td></td></tr>
+<tr name="43" id="43">
+<td><a id="l43" class='ln'>43</a></td><td><span class="ct">/*=======================================================================*</span></td></tr>
+<tr name="44" id="44">
+<td><a id="l44" class='ln'>44</a></td><td><span class="ct"> * Fixed width word size data types:                                     *</span></td></tr>
+<tr name="45" id="45">
+<td><a id="l45" class='ln'>45</a></td><td><span class="ct"> *   int8_T, int16_T, int32_T     - signed 8, 16, or 32 bit integers     *</span></td></tr>
+<tr name="46" id="46">
+<td><a id="l46" class='ln'>46</a></td><td><span class="ct"> *   uint8_T, uint16_T, uint32_T  - unsigned 8, 16, or 32 bit integers   *</span></td></tr>
+<tr name="47" id="47">
+<td><a id="l47" class='ln'>47</a></td><td><span class="ct"> *   real32_T, real64_T           - 32 and 64 bit floating point numbers *</span></td></tr>
+<tr name="48" id="48">
+<td><a id="l48" class='ln'>48</a></td><td><span class="ct"> *=======================================================================*/</span></td></tr>
+<tr name="49" id="49">
+<td><a id="l49" class='ln'>49</a></td><td><span class="kw">typedef</span> <span class="kw">signed</span> <span class="kw">char</span> <a id="49c21" class="tk">int8_T</a>;</td></tr>
+<tr name="50" id="50">
+<td><a id="l50" class='ln'>50</a></td><td><span class="kw">typedef</span> <span class="kw">unsigned</span> <span class="kw">char</span> <a id="50c23" class="tk">uint8_T</a>;</td></tr>
+<tr name="51" id="51">
+<td><a id="l51" class='ln'>51</a></td><td><span class="kw">typedef</span> <span class="kw">short</span> <a id="51c15" class="tk">int16_T</a>;</td></tr>
+<tr name="52" id="52">
+<td><a id="l52" class='ln'>52</a></td><td><span class="kw">typedef</span> <span class="kw">unsigned</span> <span class="kw">short</span> <a id="52c24" class="tk">uint16_T</a>;</td></tr>
+<tr name="53" id="53">
+<td><a id="l53" class='ln'>53</a></td><td><span class="kw">typedef</span> <span class="kw">int</span> <a id="53c13" class="tk">int32_T</a>;</td></tr>
+<tr name="54" id="54">
+<td><a id="l54" class='ln'>54</a></td><td><span class="kw">typedef</span> <span class="kw">unsigned</span> <span class="kw">int</span> <a id="54c22" class="tk">uint32_T</a>;</td></tr>
+<tr name="55" id="55">
+<td><a id="l55" class='ln'>55</a></td><td><span class="kw">typedef</span> <span class="kw">long</span> <span class="kw">long</span> <a id="55c19" class="tk">int64_T</a>;</td></tr>
+<tr name="56" id="56">
+<td><a id="l56" class='ln'>56</a></td><td><span class="kw">typedef</span> <span class="kw">unsigned</span> <span class="kw">long</span> <span class="kw">long</span> <a id="56c28" class="tk">uint64_T</a>;</td></tr>
+<tr name="57" id="57">
+<td><a id="l57" class='ln'>57</a></td><td><span class="kw">typedef</span> <span class="kw">float</span> <a id="57c15" class="tk">real32_T</a>;</td></tr>
+<tr name="58" id="58">
+<td><a id="l58" class='ln'>58</a></td><td><span class="kw">typedef</span> <span class="kw">double</span> <a id="58c16" class="tk">real64_T</a>;</td></tr>
+<tr name="59" id="59">
+<td><a id="l59" class='ln'>59</a></td><td></td></tr>
+<tr name="60" id="60">
+<td><a id="l60" class='ln'>60</a></td><td><span class="ct">/*===========================================================================*</span></td></tr>
+<tr name="61" id="61">
+<td><a id="l61" class='ln'>61</a></td><td><span class="ct"> * Generic type definitions: boolean_T, char_T, byte_T, int_T, uint_T,       *</span></td></tr>
+<tr name="62" id="62">
+<td><a id="l62" class='ln'>62</a></td><td><span class="ct"> *                           real_T, time_T, ulong_T, ulonglong_T.           *</span></td></tr>
+<tr name="63" id="63">
+<td><a id="l63" class='ln'>63</a></td><td><span class="ct"> *===========================================================================*/</span></td></tr>
+<tr name="64" id="64">
+<td><a id="l64" class='ln'>64</a></td><td><span class="kw">typedef</span> <span class="kw">double</span> <a id="64c16" class="tk">real_T</a>;</td></tr>
+<tr name="65" id="65">
+<td><a id="l65" class='ln'>65</a></td><td><span class="kw">typedef</span> <span class="kw">double</span> <a id="65c16" class="tk">time_T</a>;</td></tr>
+<tr name="66" id="66">
+<td><a id="l66" class='ln'>66</a></td><td><span class="kw">typedef</span> <span class="kw">unsigned</span> <span class="kw">char</span> <a id="66c23" class="tk">boolean_T</a>;</td></tr>
+<tr name="67" id="67">
+<td><a id="l67" class='ln'>67</a></td><td><span class="kw">typedef</span> <span class="kw">int</span> <a id="67c13" class="tk">int_T</a>;</td></tr>
+<tr name="68" id="68">
+<td><a id="l68" class='ln'>68</a></td><td><span class="kw">typedef</span> <span class="kw">unsigned</span> <span class="kw">int</span> <a id="68c22" class="tk">uint_T</a>;</td></tr>
+<tr name="69" id="69">
+<td><a id="l69" class='ln'>69</a></td><td><span class="kw">typedef</span> <span class="kw">unsigned</span> <span class="kw">long</span> <a id="69c23" class="tk">ulong_T</a>;</td></tr>
+<tr name="70" id="70">
+<td><a id="l70" class='ln'>70</a></td><td><span class="kw">typedef</span> <span class="kw">unsigned</span> <span class="kw">long</span> <span class="kw">long</span> <a id="70c28" class="tk">ulonglong_T</a>;</td></tr>
+<tr name="71" id="71">
+<td><a id="l71" class='ln'>71</a></td><td><span class="kw">typedef</span> <span class="kw">char</span> <a id="71c14" class="tk">char_T</a>;</td></tr>
+<tr name="72" id="72">
+<td><a id="l72" class='ln'>72</a></td><td><span class="kw">typedef</span> <span class="kw">unsigned</span> <span class="kw">char</span> <a id="72c23" class="tk">uchar_T</a>;</td></tr>
+<tr name="73" id="73">
+<td><a id="l73" class='ln'>73</a></td><td><span class="kw">typedef</span> <a id="73c9" class="tk">char_T</a> <a id="73c16" class="tk">byte_T</a>;</td></tr>
+<tr name="74" id="74">
+<td><a id="l74" class='ln'>74</a></td><td></td></tr>
+<tr name="75" id="75">
+<td><a id="l75" class='ln'>75</a></td><td><span class="ct">/*=======================================================================*</span></td></tr>
+<tr name="76" id="76">
+<td><a id="l76" class='ln'>76</a></td><td><span class="ct"> * Min and Max:                                                          *</span></td></tr>
+<tr name="77" id="77">
+<td><a id="l77" class='ln'>77</a></td><td><span class="ct"> *   int8_T, int16_T, int32_T     - signed 8, 16, or 32 bit integers     *</span></td></tr>
+<tr name="78" id="78">
+<td><a id="l78" class='ln'>78</a></td><td><span class="ct"> *   uint8_T, uint16_T, uint32_T  - unsigned 8, 16, or 32 bit integers   *</span></td></tr>
+<tr name="79" id="79">
+<td><a id="l79" class='ln'>79</a></td><td><span class="ct"> *=======================================================================*/</span></td></tr>
+<tr name="80" id="80">
+<td><a id="l80" class='ln'>80</a></td><td><span class="pp">#define</span> <a id="80c9" class="tk">MAX_int8_T</a>                     ((<a id="80c42" class="tk">int8_T</a>)(127))</td></tr>
+<tr name="81" id="81">
+<td><a id="l81" class='ln'>81</a></td><td><span class="pp">#define</span> <a id="81c9" class="tk">MIN_int8_T</a>                     ((<a id="81c42" class="tk">int8_T</a>)(<a id="81c50" class="tk">-</a>128))</td></tr>
+<tr name="82" id="82">
+<td><a id="l82" class='ln'>82</a></td><td><span class="pp">#define</span> <a id="82c9" class="tk">MAX_uint8_T</a>                    ((<a id="82c42" class="tk">uint8_T</a>)(255U))</td></tr>
+<tr name="83" id="83">
+<td><a id="l83" class='ln'>83</a></td><td><span class="pp">#define</span> <a id="83c9" class="tk">MAX_int16_T</a>                    ((<a id="83c42" class="tk">int16_T</a>)(32767))</td></tr>
+<tr name="84" id="84">
+<td><a id="l84" class='ln'>84</a></td><td><span class="pp">#define</span> <a id="84c9" class="tk">MIN_int16_T</a>                    ((<a id="84c42" class="tk">int16_T</a>)(<a id="84c51" class="tk">-</a>32768))</td></tr>
+<tr name="85" id="85">
+<td><a id="l85" class='ln'>85</a></td><td><span class="pp">#define</span> <a id="85c9" class="tk">MAX_uint16_T</a>                   ((<a id="85c42" class="tk">uint16_T</a>)(65535U))</td></tr>
+<tr name="86" id="86">
+<td><a id="l86" class='ln'>86</a></td><td><span class="pp">#define</span> <a id="86c9" class="tk">MAX_int32_T</a>                    ((<a id="86c42" class="tk">int32_T</a>)(2147483647))</td></tr>
+<tr name="87" id="87">
+<td><a id="l87" class='ln'>87</a></td><td><span class="pp">#define</span> <a id="87c9" class="tk">MIN_int32_T</a>                    ((<a id="87c42" class="tk">int32_T</a>)(<a id="87c51" class="tk">-</a>2147483647<a id="87c62" class="tk">-</a>1))</td></tr>
+<tr name="88" id="88">
+<td><a id="l88" class='ln'>88</a></td><td><span class="pp">#define</span> <a id="88c9" class="tk">MAX_uint32_T</a>                   ((<a id="88c42" class="tk">uint32_T</a>)(0xFFFFFFFFU))</td></tr>
+<tr name="89" id="89">
+<td><a id="l89" class='ln'>89</a></td><td><span class="pp">#define</span> <a id="89c9" class="tk">MAX_int64_T</a>                    ((<a id="89c42" class="tk">int64_T</a>)(9223372036854775807LL))</td></tr>
+<tr name="90" id="90">
+<td><a id="l90" class='ln'>90</a></td><td><span class="pp">#define</span> <a id="90c9" class="tk">MIN_int64_T</a>                    ((<a id="90c42" class="tk">int64_T</a>)(<a id="90c51" class="tk">-</a>9223372036854775807LL<a id="90c73" class="tk">-</a>1LL))</td></tr>
+<tr name="91" id="91">
+<td><a id="l91" class='ln'>91</a></td><td><span class="pp">#define</span> <a id="91c9" class="tk">MAX_uint64_T</a>                   ((<a id="91c42" class="tk">uint64_T</a>)(0xFFFFFFFFFFFFFFFFULL))</td></tr>
+<tr name="92" id="92">
+<td><a id="l92" class='ln'>92</a></td><td></td></tr>
+<tr name="93" id="93">
+<td><a id="l93" class='ln'>93</a></td><td><span class="ct">/* Block D-Work pointer type */</span></td></tr>
+<tr name="94" id="94">
+<td><a id="l94" class='ln'>94</a></td><td><span class="kw">typedef</span> <span class="kw">void</span> <a id="94c14" class="tk">*</a> <a id="94c16" class="tk">pointer_T</a>;</td></tr>
+<tr name="95" id="95">
+<td><a id="l95" class='ln'>95</a></td><td></td></tr>
+<tr name="96" id="96">
+<td><a id="l96" class='ln'>96</a></td><td><span class="pp">#endif</span>                                 <span class="ct">/* RTWTYPES_H */</span></td></tr>
+<tr name="97" id="97">
+<td><a id="l97" class='ln'>97</a></td><td></td></tr>
+<tr name="98" id="98">
+<td><a id="l98" class='ln'>98</a></td><td><span class="ct">/*</span></td></tr>
+<tr name="99" id="99">
+<td><a id="l99" class='ln'>99</a></td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
+<tr name="100" id="100">
+<td><a id="l100" class='ln'>100</a></td><td><span class="ct"> *</span></td></tr>
+<tr name="101" id="101">
+<td><a id="l101" class='ln'>101</a></td><td><span class="ct"> * [EOF]</span></td></tr>
+<tr name="102" id="102">
+<td><a id="l102" class='ln'>102</a></td><td><span class="ct"> */</span></td></tr>
+<tr name="103" id="103">
+<td><a id="l103" class='ln'>103</a></td><td></td></tr>
+</table>
+</pre>
+</body>
+</html>

+ 559 - 0
Simulink/PMSM_Controller_ert_rtw/html/search.js

@@ -0,0 +1,559 @@
+// Copyright 2007-2012 The MathWorks, Inc.
+
+function createHighlightSpanStart(num)
+{
+    return "<span class=\"highlighted\" name=\"highlight" + num + "\">";
+}
+
+var str2pos;   // This is a map between a tag stripped string and the original string. 
+function getTagStrippedStringAndMap(aString)
+{
+    var tagStrippedString = new String();
+
+    str2pos = new Array();
+
+    var inTag = false;
+    var inScript = false;
+    
+    for (var strPos = 0; strPos < aString.length; strPos++) {
+        if (inTag && aString.charAt(strPos) == '>') {
+            inTag = false;
+            if (inScript && (strPos > 8) && (aString.slice(strPos, strPos - 8) == '/script>')) {
+                inScript = false;
+            }            
+            continue;
+        } else if (!inTag && aString.charAt(strPos) == '<') {
+            inTag = true;
+            if (!inScript && aString.slice(strPos, strPos + 7) == '<script') {
+                inScript = true;
+                strPos += 7;
+            }
+            continue;
+        }        
+        
+        if (inTag == false && inScript == false) {
+            tagStrippedString += aString.charAt(strPos);
+            str2pos.push(strPos);
+        }
+    }
+    return tagStrippedString;
+}
+
+function escapeSpecialChars(string)
+{
+    // let the browser handle the escaping rather than doing a String.replace
+    // call
+    var div = document.createElement("div");
+    var text = document.createTextNode(string);
+    div.appendChild(text);
+    var escapedString = div.innerHTML;
+    delete div;
+    return escapedString;
+}
+
+// insert highlight tags into the body. Split it up into multiple sections if necessary
+// (i.e. if there is a tag in the middle).
+function insertHighlighting(bodyText, previ, i, length, highlightStartTag, highlightEndTag)
+{
+    var newText = "";    
+    newText = bodyText.slice(previ, str2pos[i]);
+    
+    // insert start
+    newText += highlightStartTag;
+    
+    var str2posprev = str2pos[i];    
+    // deal with intermediate tags
+    for(var cnt = i; cnt < i+length; cnt++)
+    {
+        if (str2pos[cnt] > str2posprev+1) // we have jumped some text, so there must be a tag
+        {
+            // insert end tag
+            newText += highlightEndTag;
+            
+            // insert intermediate body text tags
+            newText += bodyText.slice(str2posprev+1, str2pos[cnt]);
+            
+            // insert start tag
+            newText += highlightStartTag;
+        }
+        newText += bodyText.charAt(str2pos[cnt]);
+        str2posprev=str2pos[cnt];
+    }
+    
+    // insert end
+    newText += highlightEndTag;
+    return newText;
+    
+}
+
+// check to see if the sequence at position 'i' in taglessString is actually in
+// the middle of an escape sequence. We assume escape sequences follow the pattern
+// &<sequenceText>;. We check for &nbsp;, &lt;, &gt; and &amp;
+function isInEscapedSequence(i, taglessString, searchTerm)
+{
+    var escapeSeq = /&nbsp;|&lt;|&gt;|&amp;/gi;
+    var maxEscapeSeqLength = 6;
+    var startPos = 0; 
+    var endPos = 0;
+    
+    // exit if the search term has an escape sequence inside it
+    if (escapeSeq.test(searchTerm)) {
+        return false;
+    }
+
+    // reset the escape sequence
+    escapeSeq = /&nbsp;|&lt;|&gt;|&amp;/gi;
+
+    // go back in the string until we find an ampersand or we hit maxEscapeSeqLength characters
+    tempI = i;
+    var bFound = false;
+    while (tempI >= 0 && tempI > (i-maxEscapeSeqLength)) {
+        if (taglessString.charAt(tempI) == "&") {
+            startPos = tempI;
+            bFound = true;
+            break;
+        } 
+        tempI = tempI-1;
+        
+        // if we hit a ';' in any position other than the first while searching
+        // for an ampersand, then we cannot be inside an escape sequence
+        if (tempI >= 0 && taglessString.charAt(tempI) == ";") {
+            return false;
+        }        
+    }
+    if (!bFound) {
+        return false;
+    }
+    // reset the escape sequence
+    escapeSeq = /&nbsp;|&lt;|&gt;|&amp;/gi;
+
+    var subString = taglessString.substring(startPos, startPos + maxEscapeSeqLength);
+    return escapeSeq.test(subString);
+}
+
+// Adds highlighting to bodyText around searchTerm. Case sensitivity is optional.
+// hitCount is used to a) count the number of search matches and b) Generate unique
+// name strings for each highlighting SPAN element.
+function addHighlight(bodyText, searchTerm, caseSensitive, hitCount) 
+{
+    var highlightStartTag = ""; 
+    var highlightEndTag = "</span>";
+  
+    var newText = "";
+    var i = 0;
+    var previ = 0;
+    var bodyTextUC = bodyText.toUpperCase();
+    
+    if (caseSensitive) {
+        var taglessString = getTagStrippedStringAndMap(bodyText);
+    } else {
+        var taglessString = getTagStrippedStringAndMap(bodyTextUC);
+    }
+
+    // escape the search term in case the user input '<' or '>' etc
+    searchTerm = escapeSpecialChars(searchTerm);
+
+    if (!caseSensitive) {
+        var searchTermUC = searchTerm.toUpperCase();
+    } 
+
+    // search for subsequent matches
+    while (true) {
+        if (caseSensitive) {
+            i = taglessString.indexOf(searchTerm, i);
+        } else {
+            i = taglessString.indexOf(searchTermUC, i);
+        }
+        if (i < 0) break;
+        
+        // we have a match!
+        
+        // make sure that the match is not inside an escaped sequence of text
+        // such as &nbsp;
+        if (isInEscapedSequence(i, taglessString, searchTerm)) {
+            i=i+1;
+            continue;
+        }
+        
+        // insert highlight tags that cross tag boundaries
+        highlightStartTag = createHighlightSpanStart(hitCount);
+        hitCount = hitCount+1;
+        newText += insertHighlighting(bodyText, previ, i, searchTerm.length, highlightStartTag, highlightEndTag);        
+        previ = str2pos[i+searchTerm.length-1]+1;
+        
+        i = i + searchTerm.length;
+    }
+    
+    newText += bodyText.slice(previ, bodyText.length);
+    return [newText, hitCount];
+}
+
+function removeHighlight(bodyText) 
+{
+    // We use regular expressions here rather than a straight text search because 
+    // some browsers actually insert double quotes and capitalize.  Also, each highlight
+    // name is uniquely numbered in order of discovery
+    var highlightStartTag = /<span class=[\"]*highlighted(Current)*[\"]* name=[\"]*highlight[0-9]*[\"]*>/i;
+    var highlightEndTag = /<\/span>/i;
+    
+    var newText = "";
+
+    var startPatternFirstIndex = -1;
+    var startPatternLastIndex = -1;
+    
+    var endPatternFirstIndex = -1;
+    var endPatternLastIndex = -1;
+
+    while (highlightStartTag.test(bodyText) === true) {
+        startPatternFirstIndex = bodyText.search(highlightStartTag);
+        newText += bodyText.substring(0, startPatternFirstIndex);        
+        startPatternLastIndex = bodyText.indexOf('>', startPatternFirstIndex+1);
+        
+        bodyText = bodyText.substr(startPatternLastIndex+1);
+        endPatternFirstIndex = bodyText.search(highlightEndTag);
+        newText += bodyText.substring(0, endPatternFirstIndex);
+        endPatternLastIndex = endPatternFirstIndex+7;
+        
+        bodyText = bodyText.substr(endPatternLastIndex);
+    }
+    if (startPatternFirstIndex < 0) {
+        return bodyText;
+    } else {
+        return newText+bodyText;
+    }
+}
+
+function removeHighlightInAllDocs()
+{
+    if (top) {
+        for (var i = 0; i < top.frames.length; i++) {
+            if (top.frames[i].name === "rtwreport_contents_frame" || top.frames[i].name === "rtwreport_document_frame") {
+                var currentDoc = top.frames[i].document;
+                if (typeof currentDoc.body !== "undefined" && currentDoc.body !== null)
+                    currentDoc.body.innerHTML=removeHighlight(currentDoc.body.innerHTML);
+            }
+        }
+    }
+}
+
+function findInDoc(searchStringFromSubmitBox, doc, caseSensitive, hitCount) 
+{
+    var searchBody = doc.body.innerHTML;
+    // if the document is empty, or the documents is invalid, return
+    if (!doc.body || typeof(searchBody) === "undefined") {
+        return [false, hitCount];
+    }
+        
+    // inject highlighting code into html
+    var result = addHighlight(searchBody, searchStringFromSubmitBox, caseSensitive, hitCount);
+    doc.body.innerHTML = result[0];
+
+    return [true, result[1]];
+}
+
+var currentlyHighlightedHit;
+
+function getSpansByName(name)
+{
+    var allSpans = [];
+    for (i = 0; i < top.frames.length; i++) {
+        if (top.frames[i].name === "rtwreport_contents_frame" || top.frames[i].name === "rtwreport_document_frame") {
+            var currentDoc = top.frames[i].document; 
+            var highlightedSpans = currentDoc.getElementsByName(name);
+            if (highlightedSpans && highlightedSpans.length && highlightedSpans.length > 0) {
+            for (j = 0; j < highlightedSpans.length; j++) {
+            allSpans = allSpans.concat(highlightedSpans[j]);
+            }
+            }
+        }
+    }
+    return allSpans;
+}
+
+function isVisibleElement(elementID)
+{
+    if (elementID)
+        return elementID.offsetWidth > 0 || elementID.offsetHeight > 0;
+    else 
+        return false;
+}
+
+function areAllSpansVisible(spans)
+{
+    isVisible = true;
+    for (i = 0; i < highlightedSpans.length; i++) {
+        isVisible = isVisible && isVisibleElement(highlightedSpans[i]);
+    }
+    return isVisible;
+}
+
+function getNextVisible()
+{
+    var isVisible = false;
+    var foundVisible = false;
+    while (!isVisible) {
+        currentlyHighlightedHit = currentlyHighlightedHit + 1;
+        highlightedSpans = setCurrentSearchMatchIfVisible(currentlyHighlightedHit);
+        if (highlightedSpans && highlightedSpans.length > 0) {
+            isVisible = true;
+        } else if (currentlyHighlightedHit < totalHits) {
+            continue;
+        } else {
+            // we have reached the end
+            isVisible = false;
+            currentlyHighlightedHit = 0;
+            highlightedSpans = null;
+            break;
+        }
+    }
+    
+    return highlightedSpans;    
+}
+
+function clearCurrentSearchMatch()
+{
+    // clear prior highlighting
+    spanName = "highlight" + currentlyHighlightedHit;
+    highlightedSpans = getSpansByName(spanName);
+    if (highlightedSpans && highlightedSpans.length) {
+        for (i = 0; i < highlightedSpans.length; i++) {
+            if (highlightedSpans[i]) {
+                highlightedSpans[i].setAttribute("class", "highlighted");
+            }           
+        }
+    }
+}
+
+function setCurrentSearchMatchIfVisible(hitNum){
+    currentlyHighlightedHit = hitNum;
+    var spanName = "highlight" + currentlyHighlightedHit;
+    var highlightedSpans = getSpansByName(spanName);
+    if (highlightedSpans && highlightedSpans.length) {
+        for (i = 0; i < highlightedSpans.length; i++) {
+            if (!isVisibleElement(highlightedSpans[i])) {
+                highlightedSpans = null;
+                break;
+            }
+        }
+    }
+    return highlightedSpans;
+}
+
+// this takes in an option integer 'hitNum'. If not specified, it scrolls
+// to the next hit
+function scrollToNextHit(hitNum)
+{
+    var i = 0;
+    var found = false;
+    var spanName = "";
+    var highlightedSpans;
+    var searchBox = findElement('searchTxtBox');
+    
+    clearCurrentSearchMatch();
+    
+    if (hitNum) {
+        // if a number is provided, use it
+        highlightedSpans = setCurrentSearchMatchIfVisible(hitNum);
+    } else {        
+        // start working on next element to highlight
+        highlightedSpans = getNextVisible();
+    }    
+    
+    // we found the current 
+    if (highlightedSpans && highlightedSpans.length > 0) {
+        highlightedSpans[0].scrollIntoView();
+        for (i = 0; i < highlightedSpans.length; i++) {
+            highlightedSpans[i].setAttribute("class", "highlightedCurrent");
+        }
+        searchBox.setAttribute("class", "search");
+        
+    // if highlightedSpans is invalid, then we did not find any valid, visible subsequent matches
+    // wrap to beginning or indicate no matches
+    } else {
+        // Element not found. Scroll to first visible element        
+        currentlyHighlightedHit = 0;
+        var highlightedSpans = getNextVisible(currentlyHighlightedHit);
+        if (highlightedSpans && highlightedSpans.length > 0) {
+            highlightedSpans[0].scrollIntoView();
+            for (i = 0; i < highlightedSpans.length; i++) {
+                highlightedSpans[i].setAttribute("class", "highlightedCurrent");
+            }
+            searchBox.setAttribute("class", "search");
+        } else {
+            // there aren't any matches
+            searchBox.setAttribute("class", "failedSearch");
+        }
+    }
+}
+
+// find search box
+function findElement(element)
+{
+    var i = 0;
+    for (i = 0; i < top.frames.length; i++) {
+        if (top.frames[i].name === "rtwreport_contents_frame" || top.frames[i].name === "rtwreport_document_frame") {
+            var elem = top.frames[i].document.getElementById(element);
+            if (elem) { 
+                return elem;
+            }
+        }
+    }
+}
+
+// Restore search term once form is submitted
+function initSearchBox(strInitValue)
+{
+    var txtBox = findElement('searchTxtBox');
+    if (txtBox) {
+        txtBox.value = strInitValue;
+    }
+}
+
+// Sets focus back on to the text box
+function setFocusOnTxtBox()
+{
+    var txtBox = findElement('searchTxtBox');
+    if (txtBox) {
+        txtBox.focus();
+        txtBox.select();
+    }
+    return txtBox;
+}
+
+var previousSearchString;
+var totalHits;
+function findInAllDocs(searchStringFromSubmitBox, caseSensitive)
+{
+    if (previousSearchString != searchStringFromSubmitBox) {
+        // If the search string has changed or a new page has been loaded, do a new search
+        var hitCount = 1;
+        var i = 0;        
+        var success = false;
+        previousSearchString = searchStringFromSubmitBox;
+               
+        // start by removing traceinfo highlighting
+        rtwRemoveHighlighting();
+        
+        // remove all previous search highlighting
+        removeHighlightInAllDocs();
+
+        // 1. Iterate through all frames in window and search
+        for (i = 0; i < top.frames.length; i++) {
+            var currentDoc = top.frames[i].document;    
+            
+            // if we have no search term, restore
+            if (searchStringFromSubmitBox !== "") {
+                // search and highlight in all frames
+                var srchResult = findInDoc(searchStringFromSubmitBox, currentDoc, caseSensitive, hitCount);
+                hitCount = srchResult[1];
+                totalHits = srchResult[1];
+            }
+        }
+
+        // 2. Restore search term once form is submitted and text highlighted        
+        if (searchStringFromSubmitBox != "") {
+            strInitValue = searchStringFromSubmitBox;
+        }    
+        initSearchBox(strInitValue);
+
+        // 3. Scroll to the first hit encountered
+        scrollToNextHit(1);
+        
+        // 4. Set focus back to text box and select text
+        var txtBox = setFocusOnTxtBox();
+        if (txtBox) {
+            txtBox.select();
+        }
+                
+    } else {
+        // If the search string is the same, then scroll to the next 
+        // hit if the hit is valid. Else wrap back.        
+        scrollToNextHit();
+    }
+    return false;
+}
+
+// if the search box is empty, clear highlighting
+function clearIfEmpty()
+{
+    txtBox = findElement('searchTxtBox');
+    if (txtBox.value == "") {
+        txtBox.setAttribute("class", "search");
+        removeHighlightInAllDocs();
+        previousSearchString="";
+        setFocusOnTxtBox();
+    }
+}
+
+function keyPressSwitchyard(keyPressEvent)
+{ 
+    var kc;
+    keyPressEvent = (keyPressEvent == null ? window.keyPressEvent : keyPressEvent);
+
+    // typically IE does not support this
+    if (!keyPressEvent || (typeof keyPressEvent == "undefined")) {
+        return;
+    }
+    
+    if (keyPressEvent.keyCode) {    
+        kc=keyPressEvent.keyCode;
+    } else if (keyPressEvent.which) {
+        kc=keyPressEvent.which;   
+    } else {
+        return;
+    }
+
+    // we do not care about the browser find appearing. If it does appear, then 
+    // we are running an external browser and that is okay.
+    
+    // handle Ctrl-Key combinations
+    if (keyPressEvent.ctrlKey) {
+        switch (kc) {
+            case 70: // Ctrl-F
+            { 
+              setFocusOnTxtBox();
+              break;
+            }
+            
+            default: break;
+        }
+    } 
+}
+
+function installDocumentKeyPressHandler()
+{
+    var i = 0;
+    for (i = 0; i < top.frames.length; i++) {
+        var currentDoc = top.frames[i].document;    
+        currentDoc.onkeydown = keyPressSwitchyard;
+    }    
+    top.document.onkeydown = keyPressSwitchyard;
+    
+    // This also clears search related highlighting
+    removeHighlightInAllDocs();
+    currentlyHighlightedHit = 0;
+    if (previousSearchString) initSearchBox(previousSearchString);
+    previousSearchString = "";
+}
+
+// This function is a onresize callback for the rtwreport_contents_frame
+// It is used to dynamically resize the searchbox based on the size of the frame.
+function setWidthDynamic(frameID, elementID, extraSpace, minSize)
+{
+    var frame = document.getElementById(frameID);
+    
+    // sanity check input args
+    if (frame && extraSpace > 0 && minSize > 0) {
+        var frameWidth = frame.scrollWidth;
+        var newSize = extraSpace + minSize + 40; // 40 is the extra whitespace
+        var element = findElement(elementID);
+        if (element)
+        {
+            if (frameWidth < newSize) {
+                element.style.width = minSize;
+            } else {
+                element.style.width = frameWidth - extraSpace - 40;
+            }
+        }
+    }
+}

BIN
Simulink/PMSM_Controller_ert_rtw/html/spinner.gif


+ 3 - 0
Simulink/PMSM_Controller_ert_rtw/modelsources.txt

@@ -0,0 +1,3 @@
+  PMSM_Controller.c
+Shunt_Three_Sample_Point.c
+

+ 99 - 0
Simulink/PMSM_Controller_ert_rtw/rtGetInf.c

@@ -0,0 +1,99 @@
+/*
+ * File: rtGetInf.c
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+/*
+ * Abstract:
+ *      Function to initialize non-finite, Inf
+ */
+#include "rtGetInf.h"
+#define NumBitsPerChar                 8U
+
+/*
+ * Initialize rtInf needed by the generated code.
+ * Inf is initialized as non-signaling. Assumes IEEE.
+ */
+real_T rtGetInf(void)
+{
+  size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar);
+  real_T inf = 0.0;
+  if (bitsPerReal == 32U) {
+    inf = rtGetInfF();
+  } else {
+    union {
+      LittleEndianIEEEDouble bitVal;
+      real_T fltVal;
+    } tmpVal;
+
+    tmpVal.bitVal.words.wordH = 0x7FF00000U;
+    tmpVal.bitVal.words.wordL = 0x00000000U;
+    inf = tmpVal.fltVal;
+  }
+
+  return inf;
+}
+
+/*
+ * Initialize rtInfF needed by the generated code.
+ * Inf is initialized as non-signaling. Assumes IEEE.
+ */
+real32_T rtGetInfF(void)
+{
+  IEEESingle infF;
+  infF.wordL.wordLuint = 0x7F800000U;
+  return infF.wordL.wordLreal;
+}
+
+/*
+ * Initialize rtMinusInf needed by the generated code.
+ * Inf is initialized as non-signaling. Assumes IEEE.
+ */
+real_T rtGetMinusInf(void)
+{
+  size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar);
+  real_T minf = 0.0;
+  if (bitsPerReal == 32U) {
+    minf = rtGetMinusInfF();
+  } else {
+    union {
+      LittleEndianIEEEDouble bitVal;
+      real_T fltVal;
+    } tmpVal;
+
+    tmpVal.bitVal.words.wordH = 0xFFF00000U;
+    tmpVal.bitVal.words.wordL = 0x00000000U;
+    minf = tmpVal.fltVal;
+  }
+
+  return minf;
+}
+
+/*
+ * Initialize rtMinusInfF needed by the generated code.
+ * Inf is initialized as non-signaling. Assumes IEEE.
+ */
+real32_T rtGetMinusInfF(void)
+{
+  IEEESingle minfF;
+  minfF.wordL.wordLuint = 0xFF800000U;
+  return minfF.wordL.wordLreal;
+}
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

+ 35 - 0
Simulink/PMSM_Controller_ert_rtw/rtGetInf.h

@@ -0,0 +1,35 @@
+/*
+ * File: rtGetInf.h
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+#ifndef RTW_HEADER_rtGetInf_h_
+#define RTW_HEADER_rtGetInf_h_
+#include <stddef.h>
+#include "rtwtypes.h"
+#include "rt_nonfinite.h"
+
+extern real_T rtGetInf(void);
+extern real32_T rtGetInfF(void);
+extern real_T rtGetMinusInf(void);
+extern real32_T rtGetMinusInfF(void);
+
+#endif                                 /* RTW_HEADER_rtGetInf_h_ */
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

+ 65 - 0
Simulink/PMSM_Controller_ert_rtw/rtGetNaN.c

@@ -0,0 +1,65 @@
+/*
+ * File: rtGetNaN.c
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+/*
+ * Abstract:
+ *      Function to initialize non-finite, NaN
+ */
+#include "rtGetNaN.h"
+#define NumBitsPerChar                 8U
+
+/*
+ * Initialize rtNaN needed by the generated code.
+ * NaN is initialized as non-signaling. Assumes IEEE.
+ */
+real_T rtGetNaN(void)
+{
+  size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar);
+  real_T nan = 0.0;
+  if (bitsPerReal == 32U) {
+    nan = rtGetNaNF();
+  } else {
+    union {
+      LittleEndianIEEEDouble bitVal;
+      real_T fltVal;
+    } tmpVal;
+
+    tmpVal.bitVal.words.wordH = 0xFFF80000U;
+    tmpVal.bitVal.words.wordL = 0x00000000U;
+    nan = tmpVal.fltVal;
+  }
+
+  return nan;
+}
+
+/*
+ * Initialize rtNaNF needed by the generated code.
+ * NaN is initialized as non-signaling. Assumes IEEE.
+ */
+real32_T rtGetNaNF(void)
+{
+  IEEESingle nanF = { { 0 } };
+
+  nanF.wordL.wordLuint = 0xFFC00000U;
+  return nanF.wordL.wordLreal;
+}
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

+ 33 - 0
Simulink/PMSM_Controller_ert_rtw/rtGetNaN.h

@@ -0,0 +1,33 @@
+/*
+ * File: rtGetNaN.h
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+#ifndef RTW_HEADER_rtGetNaN_h_
+#define RTW_HEADER_rtGetNaN_h_
+#include <stddef.h>
+#include "rtwtypes.h"
+#include "rt_nonfinite.h"
+
+extern real_T rtGetNaN(void);
+extern real32_T rtGetNaNF(void);
+
+#endif                                 /* RTW_HEADER_rtGetNaN_h_ */
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

+ 56 - 0
Simulink/PMSM_Controller_ert_rtw/rt_defines.h

@@ -0,0 +1,56 @@
+/*
+ * File: rt_defines.h
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+#ifndef RTW_HEADER_rt_defines_h_
+#define RTW_HEADER_rt_defines_h_
+
+/*===========*
+ * Constants *
+ *===========*/
+#define RT_PI                          3.14159265358979323846
+#define RT_PIF                         3.1415927F
+#define RT_LN_10                       2.30258509299404568402
+#define RT_LN_10F                      2.3025851F
+#define RT_LOG10E                      0.43429448190325182765
+#define RT_LOG10EF                     0.43429449F
+#define RT_E                           2.7182818284590452354
+#define RT_EF                          2.7182817F
+
+/*
+ * UNUSED_PARAMETER(x)
+ *   Used to specify that a function parameter (argument) is required but not
+ *   accessed by the function body.
+ */
+#ifndef UNUSED_PARAMETER
+#if defined(__LCC__)
+#define UNUSED_PARAMETER(x)                                      /* do nothing */
+#else
+
+/*
+ * This is the semi-ANSI standard way of indicating that an
+ * unused function parameter is required.
+ */
+#define UNUSED_PARAMETER(x)            (void) (x)
+#endif
+#endif
+#endif                                 /* RTW_HEADER_rt_defines_h_ */
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

+ 97 - 0
Simulink/PMSM_Controller_ert_rtw/rt_nonfinite.c

@@ -0,0 +1,97 @@
+/*
+ * File: rt_nonfinite.c
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+/*
+ * Abstract:
+ *      Function to initialize non-finites,
+ *      (Inf, NaN and -Inf).
+ */
+#include "rt_nonfinite.h"
+#include "rtGetNaN.h"
+#include "rtGetInf.h"
+#define NumBitsPerChar                 8U
+
+real_T rtInf;
+real_T rtMinusInf;
+real_T rtNaN;
+real32_T rtInfF;
+real32_T rtMinusInfF;
+real32_T rtNaNF;
+
+/*
+ * Initialize the rtInf, rtMinusInf, and rtNaN needed by the
+ * generated code. NaN is initialized as non-signaling. Assumes IEEE.
+ */
+void rt_InitInfAndNaN(size_t realSize)
+{
+  (void) (realSize);
+  rtNaN = rtGetNaN();
+  rtNaNF = rtGetNaNF();
+  rtInf = rtGetInf();
+  rtInfF = rtGetInfF();
+  rtMinusInf = rtGetMinusInf();
+  rtMinusInfF = rtGetMinusInfF();
+}
+
+/* Test if value is infinite */
+boolean_T rtIsInf(real_T value)
+{
+  return (boolean_T)((value==rtInf || value==rtMinusInf) ? 1U : 0U);
+}
+
+/* Test if single-precision value is infinite */
+boolean_T rtIsInfF(real32_T value)
+{
+  return (boolean_T)(((value)==rtInfF || (value)==rtMinusInfF) ? 1U : 0U);
+}
+
+/* Test if value is not a number */
+boolean_T rtIsNaN(real_T value)
+{
+  boolean_T result = (boolean_T) 0;
+  size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar);
+  if (bitsPerReal == 32U) {
+    result = rtIsNaNF((real32_T)value);
+  } else {
+    union {
+      LittleEndianIEEEDouble bitVal;
+      real_T fltVal;
+    } tmpVal;
+
+    tmpVal.fltVal = value;
+    result = (boolean_T)((tmpVal.bitVal.words.wordH & 0x7FF00000) == 0x7FF00000 &&
+                         ( (tmpVal.bitVal.words.wordH & 0x000FFFFF) != 0 ||
+                          (tmpVal.bitVal.words.wordL != 0) ));
+  }
+
+  return result;
+}
+
+/* Test if single-precision value is not a number */
+boolean_T rtIsNaNF(real32_T value)
+{
+  IEEESingle tmp;
+  tmp.wordL.wordLreal = value;
+  return (boolean_T)( (tmp.wordL.wordLuint & 0x7F800000) == 0x7F800000 &&
+                     (tmp.wordL.wordLuint & 0x007FFFFF) != 0 );
+}
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

+ 61 - 0
Simulink/PMSM_Controller_ert_rtw/rt_nonfinite.h

@@ -0,0 +1,61 @@
+/*
+ * File: rt_nonfinite.h
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+#ifndef RTW_HEADER_rt_nonfinite_h_
+#define RTW_HEADER_rt_nonfinite_h_
+#include <stddef.h>
+#include "rtwtypes.h"
+
+extern real_T rtInf;
+extern real_T rtMinusInf;
+extern real_T rtNaN;
+extern real32_T rtInfF;
+extern real32_T rtMinusInfF;
+extern real32_T rtNaNF;
+extern void rt_InitInfAndNaN(size_t realSize);
+extern boolean_T rtIsInf(real_T value);
+extern boolean_T rtIsInfF(real32_T value);
+extern boolean_T rtIsNaN(real_T value);
+extern boolean_T rtIsNaNF(real32_T value);
+typedef struct {
+  struct {
+    uint32_T wordH;
+    uint32_T wordL;
+  } words;
+} BigEndianIEEEDouble;
+
+typedef struct {
+  struct {
+    uint32_T wordL;
+    uint32_T wordH;
+  } words;
+} LittleEndianIEEEDouble;
+
+typedef struct {
+  union {
+    real32_T wordLreal;
+    uint32_T wordLuint;
+  } wordL;
+} IEEESingle;
+
+#endif                                 /* RTW_HEADER_rt_nonfinite_h_ */
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

+ 4 - 0
Simulink/PMSM_Controller_ert_rtw/rtw_proj.tmw

@@ -0,0 +1,4 @@
+Simulink Coder project for PMSM_Controller using . MATLAB root = D:\Program Files\R2020b. SimStruct date: 29-7月-2020 14:26:22
+This file is generated by Simulink Coder for use by the make utility
+to determine when to rebuild objects when the name of the current Simulink Coder project changes.
+The rtwinfomat located at: ..\slprj\ert\PMSM_Controller\tmwinternal\binfo.mat

+ 102 - 0
Simulink/PMSM_Controller_ert_rtw/rtwtypes.h

@@ -0,0 +1,102 @@
+/*
+ * File: rtwtypes.h
+ *
+ * Code generated for Simulink model 'PMSM_Controller'.
+ *
+ * Model version                  : 1.885
+ * Simulink Coder version         : 9.4 (R2020b) 29-Jul-2020
+ * C/C++ source code generated on : Sat Jan  8 15:44:11 2022
+ *
+ * Target selection: ert.tlc
+ * Embedded hardware selection: ARM Compatible->ARM Cortex-M
+ * Code generation objectives:
+ *    1. Execution efficiency
+ *    2. RAM efficiency
+ * Validation result: Not run
+ */
+
+#ifndef RTWTYPES_H
+#define RTWTYPES_H
+
+/* Logical type definitions */
+#if (!defined(__cplusplus))
+#ifndef false
+#define false                          (0U)
+#endif
+
+#ifndef true
+#define true                           (1U)
+#endif
+#endif
+
+/*=======================================================================*
+ * Target hardware information
+ *   Device type: ARM Compatible->ARM Cortex-M
+ *   Number of bits:     char:   8    short:   16    int:  32
+ *                       long:  32    long long:  64
+ *                       native word size:  32
+ *   Byte ordering: LittleEndian
+ *   Signed integer division rounds to: Zero
+ *   Shift right on a signed integer as arithmetic shift: on
+ *=======================================================================*/
+
+/*=======================================================================*
+ * Fixed width word size data types:                                     *
+ *   int8_T, int16_T, int32_T     - signed 8, 16, or 32 bit integers     *
+ *   uint8_T, uint16_T, uint32_T  - unsigned 8, 16, or 32 bit integers   *
+ *   real32_T, real64_T           - 32 and 64 bit floating point numbers *
+ *=======================================================================*/
+typedef signed char int8_T;
+typedef unsigned char uint8_T;
+typedef short int16_T;
+typedef unsigned short uint16_T;
+typedef int int32_T;
+typedef unsigned int uint32_T;
+typedef long long int64_T;
+typedef unsigned long long uint64_T;
+typedef float real32_T;
+typedef double real64_T;
+
+/*===========================================================================*
+ * Generic type definitions: boolean_T, char_T, byte_T, int_T, uint_T,       *
+ *                           real_T, time_T, ulong_T, ulonglong_T.           *
+ *===========================================================================*/
+typedef double real_T;
+typedef double time_T;
+typedef unsigned char boolean_T;
+typedef int int_T;
+typedef unsigned int uint_T;
+typedef unsigned long ulong_T;
+typedef unsigned long long ulonglong_T;
+typedef char char_T;
+typedef unsigned char uchar_T;
+typedef char_T byte_T;
+
+/*=======================================================================*
+ * Min and Max:                                                          *
+ *   int8_T, int16_T, int32_T     - signed 8, 16, or 32 bit integers     *
+ *   uint8_T, uint16_T, uint32_T  - unsigned 8, 16, or 32 bit integers   *
+ *=======================================================================*/
+#define MAX_int8_T                     ((int8_T)(127))
+#define MIN_int8_T                     ((int8_T)(-128))
+#define MAX_uint8_T                    ((uint8_T)(255U))
+#define MAX_int16_T                    ((int16_T)(32767))
+#define MIN_int16_T                    ((int16_T)(-32768))
+#define MAX_uint16_T                   ((uint16_T)(65535U))
+#define MAX_int32_T                    ((int32_T)(2147483647))
+#define MIN_int32_T                    ((int32_T)(-2147483647-1))
+#define MAX_uint32_T                   ((uint32_T)(0xFFFFFFFFU))
+#define MAX_int64_T                    ((int64_T)(9223372036854775807LL))
+#define MIN_int64_T                    ((int64_T)(-9223372036854775807LL-1LL))
+#define MAX_uint64_T                   ((uint64_T)(0xFFFFFFFFFFFFFFFFULL))
+
+/* Block D-Work pointer type */
+typedef void * pointer_T;
+
+#endif                                 /* RTWTYPES_H */
+
+/*
+ * File trailer for generated code.
+ *
+ * [EOF]
+ */

BIN
Simulink/PMSM_Controller_ert_rtw/rtwtypeschksum.mat


+ 2 - 0
Simulink/PMSM_Controller_ert_rtw/setup_msvc.bat

@@ -0,0 +1,2 @@
+set "VSCMD_START_DIR=%CD%"
+"d:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\VCVARSALL.BAT " amd64

BIN
Simulink/foc_libs.slx


+ 150 - 0
Simulink/init_model.m

@@ -0,0 +1,150 @@
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% This file is part of the hoverboard-new-firmware-hack-FOC project
+% Compared to previouse commutation method, this project implements
+% FOC (Field Oriented Control) for BLDC motors with Hall sensors.
+% The new control methods offers superior performanace
+% compared to previous method featuring:
+% >> reduced noise and vibrations
+% >> smooth torque output
+% >> improved motor efficiency -> lower energy consumption
+%
+% Author: Emanuel FERU
+% Copyright � 2019-2021 Emanuel FERU <aerdronix@gmail.com>
+%
+% This program is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program.  If not, see <http://www.gnu.org/licenses/>.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Clear workspace
+close all
+clear
+clc
+
+% Load model parameters
+Ts                  = 6.2e-6;                         % [s] Model sampling time (1 MHz)
+Ts_ctrl             = 62e-6;                         % [s] Controller sampling time (~16 kHz)
+f_ctrl              = 16e3;                         % [Hz] Controller frequency = 1/Ts_ctrl (16 kHz)
+i_pwm_count         = 4000;
+i_dead              = 10;
+i_adc               = 10;
+i_sample_before     = 10;
+i_Udc               = 560;
+i_half_pwm_count    = i_pwm_count;
+i_sample_min        = (i_dead + i_adc + i_sample_before);
+i_hall_count_max    = 1/Ts;
+
+% Current sample parameters
+n_adc_max = 4096;
+n_resistance = 0.005;
+n_ref_vol = 3.3;
+n_gain    = 17.1;
+
+%VBUS sample parameters
+
+b_start_with_commutation = 0;
+% Sine/Cosine wave look-up table
+res_elecAngle       = 1;
+a_elecAngle_XA      = 0:res_elecAngle:360;          % [deg] Electrical angle grid
+r_sin_M1            = sin((a_elecAngle_XA)*(pi/180));  
+r_cos_M1            = cos((a_elecAngle_XA)*(pi/180));
+
+% Motor parameters
+n_polePairs         = 4;                           % [-] Number of motor pole pairs
+a_elecPeriod        = 360;                          % [deg] Electrical angle period
+a_elecDeltaAngle         = 60;                           % [deg] Electrical angle between two Hall sensor changing events
+a_mechAngle         = a_elecDeltaAngle / n_polePairs;    % [deg] Mechanical angle between two Hall sensor changing events
+r_whl               = 6.5 * 2.54 * 1e-2 / 2;        % [m] Wheel radius. Diameter = 6.5 inch (1 inch = 2.54 cm): Speed[kph] = rpm*(pi/30)*r_whl*3.6
+
+f_lpf_coeff         = 0.2;
+
+%hall,  [4,6,2,3,1,5,4] [  3,2,6,4,5,1]
+vec_hallToPos       =   [7 5 1 0 3 4 2 7];  % [-] Mapping Hall signal to position
+i_hall_offset       = -30;
+
+% Speed Calculation Parameters
+cf_speedCoef        = (i_hall_count_max * a_mechAngle * (pi/180) * (30/pi));     % [-] Speed calculation coefficient (factors are due to conversions rpm <-> rad/s)
+z_maxCntRst         = i_hall_count_max;   % [-] Maximum counter value for reset (works also as time-out to detect standing still)
+n_commDeacvHi       = 30;               % [rpm] Commutation method deactivation speed high
+n_commAcvLo         = 15;               % [rpm] Commutation method activation speed low
+dz_cntTrnsDetHi     = 40;               % [-] Counter gradient High for transient behavior detection (used for speed estimation)
+dz_cntTrnsDetLo     = 20;               % [-] Counter gradient Low for steady state detection (used for speed estimation)
+n_stdStillDet       = 3;                % [rpm] Speed threshold for Stand still detection
+
+% Motor Angle Measurement (e.g. using an encoder)
+b_angleMeasEna      = 0;                % [-] Enable flag for external mechanical motor angle sensor: 0 = estimated (default), 1 = measured
+
+% Control model request
+OPEN_MODE           = 0;                % [-] Open mode
+VLT_MODE            = 1;                % [-] Voltage mode
+SPD_MODE            = 2;                % [-] Speed mode
+TRQ_MODE            = 3;                % [-] Torque mode
+z_ctrlModReq        = VLT_MODE;         % [-] Control Mode Request (default)
+
+% Cruise control
+b_cruiseCtrlEna     = 0;                % [-] Cruise control enable flag: 0 = disable (default), 1 = enable
+n_cruiseMotTgt      = 0;                % [-] Cruise control motor speed target
+
+%% F04_Field_Weakening
+b_fieldWeakEna      = 0;                % [-] Field weakening enable flag: 0 = disable (default), 1 = enable
+r_fieldWeakHi       = 1000;             % [1000, 1500] Input target High threshold for reaching maximum Field Weakening / Phase Advance
+r_fieldWeakLo       = 750;              % [ 500, 1000] Input target Low threshold for starting Field Weakening / Phase Advance
+n_fieldWeakAuthHi   = 400;              % [rpm] Motor speed High for field weakening authorization
+n_fieldWeakAuthLo   = 300;              % [rpm] Motor speed Low for field weakening authorization
+
+% FOC method
+id_fieldWeakMax     = 5;        % [A] Field weakening maximum current
+
+%% F05_Field_Oriented_Control
+z_selPhaCurMeasABC  = 0;                % [-] Select measured current phases: {iA,iB} = 0; {iB,iC} = 1; {iA,iC} = 2
+
+% Motor Limitations Calibratables
+cf_iqKiLimProt      = 60 / (f_ctrl/3);  % [-] Current limit protection integral gain (only used in VLT_MODE and SPD_MODE)
+cf_nKiLimProt       = 20 / (f_ctrl/3);  % [-] Speed limit protection integral gain (only used in VLT_MODE and TRQ_MODE)
+cf_KbLimProt        = 1000 / (f_ctrl/3);% [-] Back calculation gain for integral anti-windup
+
+% Voltage Limitations
+V_margin            = 0.95;              % [-] Voltage margin to make sure that there is a sufficiently wide pulse for a good phase current measurement
+Vd_max              = 560 * V_margin;
+Vq_max_XA           = 0:1:Vd_max;
+Vq_max_M1           = sqrt(Vd_max^2 - Vq_max_XA.^2);  % Circle limitations look-up table
+
+
+% Speed limitations
+n_max               = 1000;             % [rpm] Maximum motor speed: [-1500, 1500]
+i_sca               = 20;                           % [-] [not tunable] Scalling factor A to int16 (50 = 1/0.02)
+% Current Limitations
+i_max               = 100;               % [A] Maximum allowed motor current (continuous)
+i_max               = i_max * i_sca;
+iq_maxSca_XA        = 0:0.02:0.99;
+iq_maxSca_XA        = fixpt_evenspace_cleanup(iq_maxSca_XA, ufix(16), 2^-16);   % Make sure the data is evely spaced up to the last bit
+iq_maxSca_M1        = sqrt(1 - iq_maxSca_XA.^2);                                % Current circle limitations map
+
+%% F06_Control_Type_Management
+
+% Commutation method
+z_commutMap_M1      = [1  0 -1 -1  0  1;   % Phase A
+                       0  1  1  0 -1 -1;   % Phase B
+                      -1 -1  0  1  1  0];  % Phase C  [-] Commutation method map    
+
+% Q axis control gains
+cf_iqKp             = 0.3;              % [-] P gain
+cf_iqKi             = 100 / (f_ctrl/3); % [-] I gain
+
+% D axis control gains
+cf_idKp             = 0.9;              % [-] P gain
+cf_idKi             = 1.071;  % [-] I gain
+
+% Speed control gains
+cf_nKp              = 1.18;             % [-] P gain
+cf_nKi              = 20.4 / (f_ctrl/3);% [-] I gain