/* * File: PMSM_Controller.h * * Code generated for Simulink model 'PMSM_Controller'. * * Model version : 1.1245 * Simulink Coder version : 9.4 (R2020b) 29-Jul-2020 * C/C++ source code generated on : Thu Apr 7 15:23:34 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_ #ifndef PMSM_Controller_COMMON_INCLUDES_ #define PMSM_Controller_COMMON_INCLUDES_ #include "rtwtypes.h" #include "zero_crossing_types.h" #endif /* PMSM_Controller_COMMON_INCLUDES_ */ /* Model Code Variants */ /* 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 /* Forward declaration for rtModel */ typedef struct tag_RTM RT_MODEL; /* Block signals and states (default storage) for system '/Counter' */ typedef struct { uint16_T UnitDelay_DSTATE; /* '/UnitDelay' */ } DW_Counter; /* Block signals and states (default storage) for system '/either_edge' */ typedef struct { boolean_T UnitDelay_DSTATE; /* '/UnitDelay' */ } DW_either_edge; /* Block signals and states (default storage) for system '/Debounce_Filter' */ typedef struct { DW_either_edge either_edge_j; /* '/either_edge' */ DW_Counter Counter_d; /* '/Counter' */ DW_Counter Counter_f; /* '/Counter' */ boolean_T UnitDelay_DSTATE; /* '/UnitDelay' */ } DW_Debounce_Filter; /* Block signals and states (default storage) for system '/Low_Pass_Filter' */ typedef struct { int16_T UnitDelay1_DSTATE[2]; /* '/UnitDelay1' */ } DW_Low_Pass_Filter; /* Block signals and states (default storage) for system '/PI_iq' */ typedef struct { int32_T UnitDelay_DSTATE; /* '/UnitDelay' */ int32_T ResettableDelay_DSTATE; /* '/Resettable Delay' */ uint8_T icLoad; /* '/Resettable Delay' */ } DW_PI_backCalc_fixdt; /* Zero-crossing (trigger) state for system '/PI_iq' */ typedef struct { ZCSigState ResettableDelay_Reset_ZCE_p;/* '/Resettable Delay' */ } ZCE_PI_backCalc_fixdt; /* Block signals and states (default storage) for system '/pi_speed' */ typedef struct { int32_T UnitDelay_DSTATE; /* '/UnitDelay' */ int32_T ResettableDelay_DSTATE; /* '/Resettable Delay' */ uint8_T icLoad; /* '/Resettable Delay' */ } DW_pi_speed; /* Zero-crossing (trigger) state for system '/pi_speed' */ typedef struct { ZCSigState ResettableDelay_Reset_ZCE;/* '/Resettable Delay' */ } ZCE_pi_speed; /* Block signals and states (default storage) for system '' */ typedef struct { DW_pi_speed pi_speed_g; /* '/pi_speed' */ DW_PI_backCalc_fixdt PI_id; /* '/PI_id' */ DW_PI_backCalc_fixdt PI_iq; /* '/PI_iq' */ DW_Low_Pass_Filter Low_Pass_Filter_d;/* '/Low_Pass_Filter' */ DW_either_edge either_edge_f; /* '/either_edge' */ DW_Debounce_Filter Debounce_Filter_i;/* '/Debounce_Filter' */ uint32_T z_counterRawPrev; /* '/z_counterRawPrev' */ uint32_T UnitDelay1_DSTATE; /* '/UnitDelay1' */ uint32_T UnitDelay3_DSTATE; /* '/UnitDelay3' */ uint32_T UnitDelay2_DSTATE; /* '/UnitDelay2' */ uint32_T UnitDelay3_DSTATE_l; /* '/UnitDelay3' */ uint32_T UnitDelay5_DSTATE; /* '/UnitDelay5' */ int16_T Merge[2]; /* '/Merge' */ int16_T Divide; /* '/Divide' */ int16_T Merge_b; /* '/Merge' */ int16_T Switch2; /* '/Switch2' */ int16_T Switch2_d; /* '/Switch2' */ int16_T Divide1; /* '/Divide1' */ int16_T Switch; /* '/Switch' */ int16_T Switch1; /* '/Switch1' */ int16_T Divide3; /* '/Divide3' */ int16_T Divide11; /* '/Divide11' */ int16_T UnitDelay2_DSTATE_p; /* '/UnitDelay2' */ int16_T UnitDelay1_DSTATE_f; /* '/UnitDelay1' */ int16_T UnitDelay_DSTATE; /* '/Unit Delay' */ int16_T UnitDelay_DSTATE_d; /* '/UnitDelay' */ int16_T UnitDelay4_DSTATE; /* '/UnitDelay4' */ uint16_T UnitDelay2_DSTATE_f; /* '/UnitDelay2' */ uint16_T UnitDelay3_DSTATE_lh; /* '/UnitDelay3' */ uint16_T UnitDelay5_DSTATE_f; /* '/UnitDelay5' */ int8_T Switch2_i; /* '/Switch2' */ int8_T UnitDelay2_DSTATE_j; /* '/UnitDelay2' */ uint8_T Delay_DSTATE; /* '/Delay' */ uint8_T Delay1_DSTATE; /* '/Delay1' */ uint8_T Delay2_DSTATE; /* '/Delay2' */ uint8_T UnitDelay_DSTATE_j; /* '/UnitDelay' */ uint8_T UnitDelay_DSTATE_b; /* '/Unit Delay' */ uint8_T is_active_c5_PMSM_Controller;/* '/Control_Mode_Manager' */ uint8_T is_c5_PMSM_Controller; /* '/Control_Mode_Manager' */ uint8_T is_ACTIVE; /* '/Control_Mode_Manager' */ boolean_T Compare; /* '/Compare' */ boolean_T UnitDelay1_DSTATE_i; /* '/UnitDelay1' */ boolean_T n_SpeedCtrl_Mode; /* '/n_SpeedCtrl' */ boolean_T n_commDeacv_Mode; /* '/n_commDeacv' */ } DW; /* Zero-crossing (trigger) state */ typedef struct { ZCE_pi_speed pi_speed_g; /* '/pi_speed' */ ZCE_PI_backCalc_fixdt PI_id; /* '/PI_id' */ ZCE_PI_backCalc_fixdt PI_iq; /* '/PI_iq' */ } PrevZCX; /* Invariant block signals for system '/PI_iq' */ typedef struct { const int32_T DataTypeConversion2; /* '/Data Type Conversion2' */ } ConstB_PI_backCalc_fixdt; /* Invariant block signals for system '/pi_speed' */ typedef struct { const int32_T DataTypeConversion2; /* '/Data Type Conversion2' */ } ConstB_pi_speed; /* Invariant block signals (default storage) */ typedef struct { ConstB_pi_speed pi_speed_g; /* '/pi_speed' */ ConstB_PI_backCalc_fixdt PI_id; /* '/PI_id' */ ConstB_PI_backCalc_fixdt PI_iq; /* '/PI_iq' */ } ConstB; /* Constant parameters (default storage) */ typedef struct { /* Computed Parameter: r_cos_M1_Table * Referenced by: '/r_cos_M1' */ int16_T r_cos_M1_Table[1441]; /* Computed Parameter: r_sin_M1_Table * Referenced by: '/r_sin_M1' */ int16_T r_sin_M1_Table[1441]; /* Computed Parameter: Vq_max_M1_Table * Referenced by: '/Vq_max_M1' */ int16_T Vq_max_M1_Table[46]; /* Computed Parameter: iq_maxSca_M1_Table * Referenced by: '/iq_maxSca_M1' */ uint16_T iq_maxSca_M1_Table[50]; /* Computed Parameter: vec_hallToPos_Value * Referenced by: '/vec_hallToPos' */ int8_T vec_hallToPos_Value[8]; } ConstP; /* External inputs (root inport signals with default storage) */ typedef struct { int16_T adc_a; /* '/adc_a' */ int16_T adc_b; /* '/adc_b' */ int16_T open_theta; /* '/open_theta' */ int16_T rotor_speed; /* '/rotor_speed' */ int16_T input_target; /* '/input_target' */ uint8_T hall_a; /* '/hall_a' */ uint8_T hall_b; /* '/hall_b' */ uint8_T hall_c; /* '/hall_c' */ uint32_T hw_count; /* '/hw_count' */ boolean_T b_motEna; /* '/b_motEna' */ boolean_T b_cruiseEna; /* '/b_cruiseEna' */ uint8_T n_ctrlModReq; /* '/n_ctrlModReq' */ int16_T i_dc_limit; /* '/i_dc_limit' */ int16_T speed_limit; /* '/speed_limit' */ int16_T vbus_voltage; /* '/vbus_voltage' */ boolean_T b_hall_calibrate; /* '/b_hall_calibrate' */ int16_T vd_open_target; /* '/vd_open_target' */ int16_T vq_open_target; /* '/vq_open_target' */ } ExtU; /* External outputs (root outports fed by signals with default storage) */ typedef struct { uint16_T PWM[3]; /* '/PWM' */ uint8_T sector; /* '/sector' */ uint8_T n_MotError; /* '/n_MotError' */ int16_T VqPrev; /* '/VqPrev' */ int16_T VdPrev; /* '/VdPrev' */ int16_T iq; /* '/iq' */ int16_T id; /* '/id' */ int16_T angle; /* '/angle' */ int16_T rpm; /* '/rpm' */ int16_T hall_angle; /* '/hall_angle' */ uint8_T hall_state; /* '/hall_state' */ uint8_T running_mode; /* '/running_mode' */ } ExtY; /* Real-time Model Data Structure */ struct tag_RTM { const char_T * volatile errorStatus; PrevZCX *prevZCSigState; ExtU *inputs; ExtY *outputs; DW *dwork; }; extern const ConstB rtConstB; /* constant block i/o */ /* 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); /*- * These blocks were eliminated from the model due to optimizations: * * Block '/Scope' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Logical Operator4' : Unused code path elimination * Block '/Abs2' : Unused code path elimination * Block '/Add' : Unused code path elimination * Block '/Compare' : Unused code path elimination * Block '/Constant' : Unused code path elimination * Block '/Sum7' : Unused code path elimination * Block '/UnitDelay4' : Unused code path elimination * Block '/UnitDelay6' : Unused code path elimination * Block '/UnitDelay7' : Unused code path elimination * Block '/UnitDelay8' : Unused code path elimination * Block '/dz_cntTrnsDet' : Unused code path elimination * Block '/Scope1' : Unused code path elimination * Block '/Scope2' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Propagation' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Propagation' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Propagation' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Scope1' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Scope1' : Unused code path elimination * Block '/Scope2' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Scope1' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Scope1' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Propagation' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Propagation' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Propagation' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Propagation' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Propagation' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Scope12' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Propagation' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Scope2' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Propagation' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Propagation' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Manual Switch' : Eliminated due to constant selection input * Block '/hall_motor_speed_choice' : Eliminated due to constant selection input * Block '/Data Type Conversion' : Eliminate redundant data type conversion * Block '/Data Type Conversion' : Eliminate redundant data type conversion * Block '/Data Type Conversion' : Eliminate redundant data type conversion * Block '/Manual Switch' : Eliminated due to constant selection input * Block '/Constant' : Unused code path elimination * Block '/Divide14' : Unused code path elimination * Block '/smooth' : Unused code path elimination * Block '/Constant' : 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 /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 * * '' : 'MotorController_FOC' * '' : 'MotorController_FOC/PMSM_Controller' * '' : 'MotorController_FOC/PMSM_Controller/1ms_Scheduler' * '' : 'MotorController_FOC/PMSM_Controller/Angle_Speed_Estimation' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager' * '' : 'MotorController_FOC/PMSM_Controller/Diagnostics' * '' : 'MotorController_FOC/PMSM_Controller/controller' * '' : 'MotorController_FOC/PMSM_Controller/1ms_Scheduler/counter' * '' : 'MotorController_FOC/PMSM_Controller/Angle_Speed_Estimation/Direction_Detection' * '' : 'MotorController_FOC/PMSM_Controller/Angle_Speed_Estimation/Edge_Detect' * '' : 'MotorController_FOC/PMSM_Controller/Angle_Speed_Estimation/Electrical_Angle_Estimation' * '' : 'MotorController_FOC/PMSM_Controller/Angle_Speed_Estimation/Hall_Angle_Raw' * '' : 'MotorController_FOC/PMSM_Controller/Angle_Speed_Estimation/Speed_Estimation' * '' : 'MotorController_FOC/PMSM_Controller/Angle_Speed_Estimation/Electrical_Angle_Estimation/degree_rad' * '' : 'MotorController_FOC/PMSM_Controller/Angle_Speed_Estimation/Electrical_Angle_Estimation/degree_rad/If Action Subsystem' * '' : 'MotorController_FOC/PMSM_Controller/Angle_Speed_Estimation/Electrical_Angle_Estimation/degree_rad/If Action Subsystem1' * '' : 'MotorController_FOC/PMSM_Controller/Angle_Speed_Estimation/Electrical_Angle_Estimation/degree_rad/If Action Subsystem2' * '' : 'MotorController_FOC/PMSM_Controller/Angle_Speed_Estimation/Speed_Estimation/Raw_Motor_Speed_Estimation' * '' : 'MotorController_FOC/PMSM_Controller/Angle_Speed_Estimation/Speed_Estimation/Subsystem' * '' : 'MotorController_FOC/PMSM_Controller/Angle_Speed_Estimation/Speed_Estimation/Raw_Motor_Speed_Estimation/Compare To Constant' * '' : 'MotorController_FOC/PMSM_Controller/Angle_Speed_Estimation/Speed_Estimation/Subsystem/Compare To Constant' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager/Control_Mode_Manager' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager/Field_Weakening_Enabled' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager/Mode_Transition_Calculation' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager/Subsystem' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager/target_scale' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager/Field_Weakening_Enabled/Field_Weakening' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager/Field_Weakening_Enabled/Field_Weakening/Saturation Dynamic' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager/Field_Weakening_Enabled/Field_Weakening/Saturation Dynamic1' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager/target_scale/If Action Subsystem' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager/target_scale/open_mode' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager/target_scale/torque_mode' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager/target_scale/open_mode/Rate_Control' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager/target_scale/open_mode/Rate_Control/Saturation Dynamic' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager/target_scale/open_mode/Rate_Control/Subsystem' * '' : 'MotorController_FOC/PMSM_Controller/Control_Mode_Manager/target_scale/open_mode/Rate_Control/delayUnit' * '' : 'MotorController_FOC/PMSM_Controller/Diagnostics/Diagnostics_Enabled' * '' : 'MotorController_FOC/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter' * '' : 'MotorController_FOC/PMSM_Controller/Diagnostics/Diagnostics_Enabled/either_edge' * '' : 'MotorController_FOC/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/Default' * '' : 'MotorController_FOC/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/Dequalification' * '' : 'MotorController_FOC/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/Qualification' * '' : 'MotorController_FOC/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/either_edge' * '' : 'MotorController_FOC/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/Dequalification/Counter' * '' : 'MotorController_FOC/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/Dequalification/Counter/rst_Delay' * '' : 'MotorController_FOC/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/Qualification/Counter' * '' : 'MotorController_FOC/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/Qualification/Counter/rst_Delay' * '' : 'MotorController_FOC/PMSM_Controller/controller/Clarke_Park_Transform_Forward' * '' : 'MotorController_FOC/PMSM_Controller/controller/Motor_Limitations_Enabled' * '' : 'MotorController_FOC/PMSM_Controller/controller/PID_Controller' * '' : 'MotorController_FOC/PMSM_Controller/controller/Park_Transform_Inverse' * '' : 'MotorController_FOC/PMSM_Controller/controller/SVM' * '' : 'MotorController_FOC/PMSM_Controller/controller/Speed_Controller' * '' : 'MotorController_FOC/PMSM_Controller/controller/current_sample' * '' : 'MotorController_FOC/PMSM_Controller/controller/pid_schdule' * '' : 'MotorController_FOC/PMSM_Controller/controller/Clarke_Park_Transform_Forward/Clarke' * '' : 'MotorController_FOC/PMSM_Controller/controller/Clarke_Park_Transform_Forward/Low_Pass_Filter' * '' : 'MotorController_FOC/PMSM_Controller/controller/Clarke_Park_Transform_Forward/Park' * '' : 'MotorController_FOC/PMSM_Controller/controller/Clarke_Park_Transform_Forward/Sine_Cosine_Approximation' * '' : 'MotorController_FOC/PMSM_Controller/controller/PID_Controller/id_ctrl' * '' : 'MotorController_FOC/PMSM_Controller/controller/PID_Controller/iq_ctrl' * '' : 'MotorController_FOC/PMSM_Controller/controller/PID_Controller/id_ctrl/PI_id' * '' : 'MotorController_FOC/PMSM_Controller/controller/PID_Controller/id_ctrl/Saturation Dynamic1' * '' : 'MotorController_FOC/PMSM_Controller/controller/PID_Controller/id_ctrl/PI_id/Integrator1' * '' : 'MotorController_FOC/PMSM_Controller/controller/PID_Controller/id_ctrl/PI_id/Saturation Dynamic1' * '' : 'MotorController_FOC/PMSM_Controller/controller/PID_Controller/iq_ctrl/PI_iq' * '' : 'MotorController_FOC/PMSM_Controller/controller/PID_Controller/iq_ctrl/Saturation Dynamic2' * '' : 'MotorController_FOC/PMSM_Controller/controller/PID_Controller/iq_ctrl/PI_iq/Integrator1' * '' : 'MotorController_FOC/PMSM_Controller/controller/PID_Controller/iq_ctrl/PI_iq/Saturation Dynamic1' * '' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM' * '' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM/Saturation Dynamic1' * '' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM/Subsystem' * '' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM/sector_select' * '' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM/Subsystem/sector1' * '' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM/Subsystem/sector2' * '' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM/Subsystem/sector3' * '' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM/Subsystem/sector4' * '' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM/Subsystem/sector5' * '' : 'MotorController_FOC/PMSM_Controller/controller/SVM/SVPWM/Subsystem/sector6' * '' : 'MotorController_FOC/PMSM_Controller/controller/Speed_Controller/speed_mode' * '' : 'MotorController_FOC/PMSM_Controller/controller/Speed_Controller/torque_mode' * '' : 'MotorController_FOC/PMSM_Controller/controller/Speed_Controller/speed_mode/Saturation Dynamic3' * '' : 'MotorController_FOC/PMSM_Controller/controller/Speed_Controller/speed_mode/pi_speed' * '' : 'MotorController_FOC/PMSM_Controller/controller/Speed_Controller/speed_mode/pi_speed/Integrator' * '' : 'MotorController_FOC/PMSM_Controller/controller/Speed_Controller/speed_mode/pi_speed/Saturation Dynamic1' * '' : 'MotorController_FOC/PMSM_Controller/controller/Speed_Controller/torque_mode/Saturation Dynamic' */ #endif /* RTW_HEADER_PMSM_Controller_h_ */ /* * File trailer for generated code. * * [EOF] */