/* * Academic License - for use in teaching, academic research, and meeting * course requirements at degree granting institutions only. Not for * government, commercial, or other organizational use. * * File: Controller.h * * Code generated for Simulink model 'Controller'. * * Model version : 2.23 * Simulink Coder version : 25.1 (R2025a) 21-Nov-2024 * C/C++ source code generated on : Sat Jun 14 13:33:39 2025 * * 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 Controller_h_ #define Controller_h_ #ifndef Controller_COMMON_INCLUDES_ #define Controller_COMMON_INCLUDES_ #include "rtwtypes.h" #include "math.h" #endif /* Controller_COMMON_INCLUDES_ */ #include #include "MW_target_hardware_resources.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 #define Controller_M (rtM) /* Forward declaration for rtModel */ typedef struct tag_RTM RT_MODEL; /* Block signals and states (default storage) for system '' */ typedef struct { real32_T UD_DSTATE; /* '/UD' */ real32_T Integrator_DSTATE; /* '/Integrator' */ real32_T Integrator_DSTATE_n; /* '/Integrator' */ real32_T Integrator_DSTATE_h; /* '/Integrator' */ } DW; /* Constant parameters (default storage) */ typedef struct { /* Pooled Parameter (Expression: ) * Referenced by: * '/sine_table_values' * '/sine_table_values' */ real32_T pooled1[1002]; } ConstP; /* External inputs (root inport signals with default storage) */ typedef struct { real32_T Speed_ref; /* '/Speed_ref' */ real32_T Ia; /* '/Ia' */ real32_T Ib; /* '/Ib' */ real32_T Rotoranglethetamrad; /* '/theta' */ real32_T Id_ref; /* '/Id_ref' */ } ExtU; /* External outputs (root outports fed by signals with default storage) */ typedef struct { real32_T CCR1; /* '/CCR1' */ real32_T CCR2; /* '/CCR2' */ real32_T CCR3; /* '/CCR3' */ } ExtY; /* Real-time Model Data Structure */ struct tag_RTM { const char_T * volatile errorStatus; }; /* Block signals and states (default storage) */ extern DW rtDW; /* External inputs (root inport signals with default storage) */ extern ExtU rtU; /* External outputs (root outports fed by signals with default storage) */ extern ExtY rtY; /* Constant parameters (default storage) */ extern const ConstP rtConstP; /* Model entry point functions */ extern void Controller_initialize(void); extern void Controller_step(void); /* Real-time Model object */ extern RT_MODEL *const rtM; extern volatile boolean_T stopRequested; extern volatile boolean_T runModel; /*- * These blocks were eliminated from the model due to optimizations: * * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/D' : 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 Duplicate' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Duplicate1' : Unused code path elimination * Block '/D' : 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 Duplicate' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Duplicate1' : Unused code path elimination * Block '/Scope' : Unused code path elimination * Block '/Get_FractionVal' : Eliminate redundant data type conversion * Block '/Get_FractionVal' : Eliminate redundant data type conversion * Block '/Offset' : Unused code path elimination * Block '/Unary_Minus' : Unused code path elimination * Block '/Offset' : Unused code path elimination * Block '/Unary_Minus' : 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('foc/Controller') - opens subsystem foc/Controller * hilite_system('foc/Controller/Kp') - opens and selects block Kp * * Here is the system hierarchy for this model * * '' : 'foc' * '' : 'foc/Controller' * '' : 'foc/Controller/Clarke Transform' * '' : 'foc/Controller/Discrete Derivative' * '' : 'foc/Controller/Inverse Park Transform' * '' : 'foc/Controller/PID Controller' * '' : 'foc/Controller/PID Controller1' * '' : 'foc/Controller/PID Controller2' * '' : 'foc/Controller/Park Transform' * '' : 'foc/Controller/Subsystem1' * '' : 'foc/Controller/Clarke Transform/Variant' * '' : 'foc/Controller/Clarke Transform/Variant/mcb' * '' : 'foc/Controller/Clarke Transform/Variant/mcb/Clarke Transform' * '' : 'foc/Controller/Clarke Transform/Variant/mcb/Clarke Transform/Two phase input' * '' : 'foc/Controller/Clarke Transform/Variant/mcb/Clarke Transform/Two phase input/Two phase CRL wrap' * '' : 'foc/Controller/Inverse Park Transform/Variant' * '' : 'foc/Controller/Inverse Park Transform/Variant/mcb' * '' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform' * '' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine' * '' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Two inputs CRL' * '' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup' * '' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup/Interpolation' * '' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup/WrapUp' * '' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup/datatype' * '' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup/WrapUp/Compare To Zero' * '' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup/WrapUp/If Action Subsystem' * '' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup/WrapUp/If Action Subsystem1' * '' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup/datatype/datatype no change' * '' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Two inputs CRL/Switch_Axis' * '' : 'foc/Controller/PID Controller/Anti-windup' * '' : 'foc/Controller/PID Controller/D Gain' * '' : 'foc/Controller/PID Controller/External Derivative' * '' : 'foc/Controller/PID Controller/Filter' * '' : 'foc/Controller/PID Controller/Filter ICs' * '' : 'foc/Controller/PID Controller/I Gain' * '' : 'foc/Controller/PID Controller/Ideal P Gain' * '' : 'foc/Controller/PID Controller/Ideal P Gain Fdbk' * '' : 'foc/Controller/PID Controller/Integrator' * '' : 'foc/Controller/PID Controller/Integrator ICs' * '' : 'foc/Controller/PID Controller/N Copy' * '' : 'foc/Controller/PID Controller/N Gain' * '' : 'foc/Controller/PID Controller/P Copy' * '' : 'foc/Controller/PID Controller/Parallel P Gain' * '' : 'foc/Controller/PID Controller/Reset Signal' * '' : 'foc/Controller/PID Controller/Saturation' * '' : 'foc/Controller/PID Controller/Saturation Fdbk' * '' : 'foc/Controller/PID Controller/Sum' * '' : 'foc/Controller/PID Controller/Sum Fdbk' * '' : 'foc/Controller/PID Controller/Tracking Mode' * '' : 'foc/Controller/PID Controller/Tracking Mode Sum' * '' : 'foc/Controller/PID Controller/Tsamp - Integral' * '' : 'foc/Controller/PID Controller/Tsamp - Ngain' * '' : 'foc/Controller/PID Controller/postSat Signal' * '' : 'foc/Controller/PID Controller/preInt Signal' * '' : 'foc/Controller/PID Controller/preSat Signal' * '' : 'foc/Controller/PID Controller/Anti-windup/Passthrough' * '' : 'foc/Controller/PID Controller/D Gain/Disabled' * '' : 'foc/Controller/PID Controller/External Derivative/Disabled' * '' : 'foc/Controller/PID Controller/Filter/Disabled' * '' : 'foc/Controller/PID Controller/Filter ICs/Disabled' * '' : 'foc/Controller/PID Controller/I Gain/Internal Parameters' * '' : 'foc/Controller/PID Controller/Ideal P Gain/Passthrough' * '' : 'foc/Controller/PID Controller/Ideal P Gain Fdbk/Disabled' * '' : 'foc/Controller/PID Controller/Integrator/Discrete' * '' : 'foc/Controller/PID Controller/Integrator ICs/Internal IC' * '' : 'foc/Controller/PID Controller/N Copy/Disabled wSignal Specification' * '' : 'foc/Controller/PID Controller/N Gain/Disabled' * '' : 'foc/Controller/PID Controller/P Copy/Disabled' * '' : 'foc/Controller/PID Controller/Parallel P Gain/Internal Parameters' * '' : 'foc/Controller/PID Controller/Reset Signal/Disabled' * '' : 'foc/Controller/PID Controller/Saturation/Enabled' * '' : 'foc/Controller/PID Controller/Saturation Fdbk/Disabled' * '' : 'foc/Controller/PID Controller/Sum/Sum_PI' * '' : 'foc/Controller/PID Controller/Sum Fdbk/Disabled' * '' : 'foc/Controller/PID Controller/Tracking Mode/Disabled' * '' : 'foc/Controller/PID Controller/Tracking Mode Sum/Passthrough' * '' : 'foc/Controller/PID Controller/Tsamp - Integral/TsSignalSpecification' * '' : 'foc/Controller/PID Controller/Tsamp - Ngain/Passthrough' * '' : 'foc/Controller/PID Controller/postSat Signal/Forward_Path' * '' : 'foc/Controller/PID Controller/preInt Signal/Internal PreInt' * '' : 'foc/Controller/PID Controller/preSat Signal/Forward_Path' * '' : 'foc/Controller/PID Controller1/Anti-windup' * '' : 'foc/Controller/PID Controller1/D Gain' * '' : 'foc/Controller/PID Controller1/External Derivative' * '' : 'foc/Controller/PID Controller1/Filter' * '' : 'foc/Controller/PID Controller1/Filter ICs' * '' : 'foc/Controller/PID Controller1/I Gain' * '' : 'foc/Controller/PID Controller1/Ideal P Gain' * '' : 'foc/Controller/PID Controller1/Ideal P Gain Fdbk' * '' : 'foc/Controller/PID Controller1/Integrator' * '' : 'foc/Controller/PID Controller1/Integrator ICs' * '' : 'foc/Controller/PID Controller1/N Copy' * '' : 'foc/Controller/PID Controller1/N Gain' * '' : 'foc/Controller/PID Controller1/P Copy' * '' : 'foc/Controller/PID Controller1/Parallel P Gain' * '' : 'foc/Controller/PID Controller1/Reset Signal' * '' : 'foc/Controller/PID Controller1/Saturation' * '' : 'foc/Controller/PID Controller1/Saturation Fdbk' * '' : 'foc/Controller/PID Controller1/Sum' * '' : 'foc/Controller/PID Controller1/Sum Fdbk' * '' : 'foc/Controller/PID Controller1/Tracking Mode' * '' : 'foc/Controller/PID Controller1/Tracking Mode Sum' * '' : 'foc/Controller/PID Controller1/Tsamp - Integral' * '' : 'foc/Controller/PID Controller1/Tsamp - Ngain' * '' : 'foc/Controller/PID Controller1/postSat Signal' * '' : 'foc/Controller/PID Controller1/preInt Signal' * '' : 'foc/Controller/PID Controller1/preSat Signal' * '' : 'foc/Controller/PID Controller1/Anti-windup/Passthrough' * '' : 'foc/Controller/PID Controller1/D Gain/Disabled' * '' : 'foc/Controller/PID Controller1/External Derivative/Disabled' * '' : 'foc/Controller/PID Controller1/Filter/Disabled' * '' : 'foc/Controller/PID Controller1/Filter ICs/Disabled' * '' : 'foc/Controller/PID Controller1/I Gain/Internal Parameters' * '' : 'foc/Controller/PID Controller1/Ideal P Gain/Passthrough' * '' : 'foc/Controller/PID Controller1/Ideal P Gain Fdbk/Disabled' * '' : 'foc/Controller/PID Controller1/Integrator/Discrete' * '' : 'foc/Controller/PID Controller1/Integrator ICs/Internal IC' * '' : 'foc/Controller/PID Controller1/N Copy/Disabled wSignal Specification' * '' : 'foc/Controller/PID Controller1/N Gain/Disabled' * '' : 'foc/Controller/PID Controller1/P Copy/Disabled' * '' : 'foc/Controller/PID Controller1/Parallel P Gain/Internal Parameters' * '' : 'foc/Controller/PID Controller1/Reset Signal/Disabled' * '' : 'foc/Controller/PID Controller1/Saturation/Enabled' * '' : 'foc/Controller/PID Controller1/Saturation Fdbk/Disabled' * '' : 'foc/Controller/PID Controller1/Sum/Sum_PI' * '' : 'foc/Controller/PID Controller1/Sum Fdbk/Disabled' * '' : 'foc/Controller/PID Controller1/Tracking Mode/Disabled' * '' : 'foc/Controller/PID Controller1/Tracking Mode Sum/Passthrough' * '' : 'foc/Controller/PID Controller1/Tsamp - Integral/TsSignalSpecification' * '' : 'foc/Controller/PID Controller1/Tsamp - Ngain/Passthrough' * '' : 'foc/Controller/PID Controller1/postSat Signal/Forward_Path' * '' : 'foc/Controller/PID Controller1/preInt Signal/Internal PreInt' * '' : 'foc/Controller/PID Controller1/preSat Signal/Forward_Path' * '' : 'foc/Controller/PID Controller2/Anti-windup' * '' : 'foc/Controller/PID Controller2/D Gain' * '' : 'foc/Controller/PID Controller2/External Derivative' * '' : 'foc/Controller/PID Controller2/Filter' * '' : 'foc/Controller/PID Controller2/Filter ICs' * '' : 'foc/Controller/PID Controller2/I Gain' * '' : 'foc/Controller/PID Controller2/Ideal P Gain' * '' : 'foc/Controller/PID Controller2/Ideal P Gain Fdbk' * '' : 'foc/Controller/PID Controller2/Integrator' * '' : 'foc/Controller/PID Controller2/Integrator ICs' * '' : 'foc/Controller/PID Controller2/N Copy' * '' : 'foc/Controller/PID Controller2/N Gain' * '' : 'foc/Controller/PID Controller2/P Copy' * '' : 'foc/Controller/PID Controller2/Parallel P Gain' * '' : 'foc/Controller/PID Controller2/Reset Signal' * '' : 'foc/Controller/PID Controller2/Saturation' * '' : 'foc/Controller/PID Controller2/Saturation Fdbk' * '' : 'foc/Controller/PID Controller2/Sum' * '' : 'foc/Controller/PID Controller2/Sum Fdbk' * '' : 'foc/Controller/PID Controller2/Tracking Mode' * '' : 'foc/Controller/PID Controller2/Tracking Mode Sum' * '' : 'foc/Controller/PID Controller2/Tsamp - Integral' * '' : 'foc/Controller/PID Controller2/Tsamp - Ngain' * '' : 'foc/Controller/PID Controller2/postSat Signal' * '' : 'foc/Controller/PID Controller2/preInt Signal' * '' : 'foc/Controller/PID Controller2/preSat Signal' * '' : 'foc/Controller/PID Controller2/Anti-windup/Passthrough' * '' : 'foc/Controller/PID Controller2/D Gain/Disabled' * '' : 'foc/Controller/PID Controller2/External Derivative/Disabled' * '' : 'foc/Controller/PID Controller2/Filter/Disabled' * '' : 'foc/Controller/PID Controller2/Filter ICs/Disabled' * '' : 'foc/Controller/PID Controller2/I Gain/Internal Parameters' * '' : 'foc/Controller/PID Controller2/Ideal P Gain/Passthrough' * '' : 'foc/Controller/PID Controller2/Ideal P Gain Fdbk/Disabled' * '' : 'foc/Controller/PID Controller2/Integrator/Discrete' * '' : 'foc/Controller/PID Controller2/Integrator ICs/Internal IC' * '' : 'foc/Controller/PID Controller2/N Copy/Disabled wSignal Specification' * '' : 'foc/Controller/PID Controller2/N Gain/Disabled' * '' : 'foc/Controller/PID Controller2/P Copy/Disabled' * '' : 'foc/Controller/PID Controller2/Parallel P Gain/Internal Parameters' * '' : 'foc/Controller/PID Controller2/Reset Signal/Disabled' * '' : 'foc/Controller/PID Controller2/Saturation/Passthrough' * '' : 'foc/Controller/PID Controller2/Saturation Fdbk/Disabled' * '' : 'foc/Controller/PID Controller2/Sum/Sum_PI' * '' : 'foc/Controller/PID Controller2/Sum Fdbk/Disabled' * '' : 'foc/Controller/PID Controller2/Tracking Mode/Disabled' * '' : 'foc/Controller/PID Controller2/Tracking Mode Sum/Passthrough' * '' : 'foc/Controller/PID Controller2/Tsamp - Integral/TsSignalSpecification' * '' : 'foc/Controller/PID Controller2/Tsamp - Ngain/Passthrough' * '' : 'foc/Controller/PID Controller2/postSat Signal/Forward_Path' * '' : 'foc/Controller/PID Controller2/preInt Signal/Internal PreInt' * '' : 'foc/Controller/PID Controller2/preSat Signal/Forward_Path' * '' : 'foc/Controller/Park Transform/Variant' * '' : 'foc/Controller/Park Transform/Variant/mcb' * '' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform' * '' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine' * '' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Two inputs CRL' * '' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup' * '' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup' * '' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup/Interpolation' * '' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup/WrapUp' * '' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup/datatype' * '' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup/WrapUp/Compare To Zero' * '' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup/WrapUp/If Action Subsystem' * '' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup/WrapUp/If Action Subsystem1' * '' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup/datatype/datatype no change' * '' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Two inputs CRL/Switch_Axis' * '' : 'foc/Controller/Subsystem1/MATLAB Function1' * '' : 'foc/Controller/Subsystem1/MATLAB Function2' */ #endif /* Controller_h_ */ /* * File trailer for generated code. * * [EOF] */