This commit is contained in:
2026-02-23 21:13:00 +08:00
commit b38ced9428
141 changed files with 168944 additions and 0 deletions

View File

@@ -0,0 +1,361 @@
/*
* 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 <stddef.h>
#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 '<Root>' */
typedef struct {
real32_T UD_DSTATE; /* '<S3>/UD' */
real32_T Integrator_DSTATE; /* '<S115>/Integrator' */
real32_T Integrator_DSTATE_n; /* '<S167>/Integrator' */
real32_T Integrator_DSTATE_h; /* '<S63>/Integrator' */
} DW;
/* Constant parameters (default storage) */
typedef struct {
/* Pooled Parameter (Expression: )
* Referenced by:
* '<S20>/sine_table_values'
* '<S191>/sine_table_values'
*/
real32_T pooled1[1002];
} ConstP;
/* External inputs (root inport signals with default storage) */
typedef struct {
real32_T Speed_ref; /* '<Root>/Speed_ref' */
real32_T Ia; /* '<Root>/Ia' */
real32_T Ib; /* '<Root>/Ib' */
real32_T Rotoranglethetamrad; /* '<Root>/theta' */
real32_T Id_ref; /* '<Root>/Id_ref' */
} ExtU;
/* External outputs (root outports fed by signals with default storage) */
typedef struct {
real32_T CCR1; /* '<Root>/CCR1' */
real32_T CCR2; /* '<Root>/CCR2' */
real32_T CCR3; /* '<Root>/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 '<S14>/Data Type Duplicate' : Unused code path elimination
* Block '<S3>/Data Type Duplicate' : Unused code path elimination
* Block '<S4>/D' : Unused code path elimination
* Block '<S20>/Data Type Duplicate' : Unused code path elimination
* Block '<S20>/Data Type Propagation' : Unused code path elimination
* Block '<S25>/Data Type Duplicate' : Unused code path elimination
* Block '<S26>/Data Type Duplicate' : Unused code path elimination
* Block '<S19>/Data Type Duplicate' : Unused code path elimination
* Block '<S19>/Data Type Duplicate1' : Unused code path elimination
* Block '<S8>/D' : Unused code path elimination
* Block '<S191>/Data Type Duplicate' : Unused code path elimination
* Block '<S191>/Data Type Propagation' : Unused code path elimination
* Block '<S196>/Data Type Duplicate' : Unused code path elimination
* Block '<S197>/Data Type Duplicate' : Unused code path elimination
* Block '<S189>/Data Type Duplicate' : Unused code path elimination
* Block '<S189>/Data Type Duplicate1' : Unused code path elimination
* Block '<S9>/Scope' : Unused code path elimination
* Block '<S20>/Get_FractionVal' : Eliminate redundant data type conversion
* Block '<S191>/Get_FractionVal' : Eliminate redundant data type conversion
* Block '<S28>/Offset' : Unused code path elimination
* Block '<S28>/Unary_Minus' : Unused code path elimination
* Block '<S199>/Offset' : Unused code path elimination
* Block '<S199>/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 <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('foc/Controller') - opens subsystem foc/Controller
* hilite_system('foc/Controller/Kp') - opens and selects block Kp
*
* Here is the system hierarchy for this model
*
* '<Root>' : 'foc'
* '<S1>' : 'foc/Controller'
* '<S2>' : 'foc/Controller/Clarke Transform'
* '<S3>' : 'foc/Controller/Discrete Derivative'
* '<S4>' : 'foc/Controller/Inverse Park Transform'
* '<S5>' : 'foc/Controller/PID Controller'
* '<S6>' : 'foc/Controller/PID Controller1'
* '<S7>' : 'foc/Controller/PID Controller2'
* '<S8>' : 'foc/Controller/Park Transform'
* '<S9>' : 'foc/Controller/Subsystem1'
* '<S10>' : 'foc/Controller/Clarke Transform/Variant'
* '<S11>' : 'foc/Controller/Clarke Transform/Variant/mcb'
* '<S12>' : 'foc/Controller/Clarke Transform/Variant/mcb/Clarke Transform'
* '<S13>' : 'foc/Controller/Clarke Transform/Variant/mcb/Clarke Transform/Two phase input'
* '<S14>' : 'foc/Controller/Clarke Transform/Variant/mcb/Clarke Transform/Two phase input/Two phase CRL wrap'
* '<S15>' : 'foc/Controller/Inverse Park Transform/Variant'
* '<S16>' : 'foc/Controller/Inverse Park Transform/Variant/mcb'
* '<S17>' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform'
* '<S18>' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine'
* '<S19>' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Two inputs CRL'
* '<S20>' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup'
* '<S21>' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup/Interpolation'
* '<S22>' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup/WrapUp'
* '<S23>' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup/datatype'
* '<S24>' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup/WrapUp/Compare To Zero'
* '<S25>' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup/WrapUp/If Action Subsystem'
* '<S26>' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup/WrapUp/If Action Subsystem1'
* '<S27>' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Sine Cosine/Sine-Cosine Lookup/datatype/datatype no change'
* '<S28>' : 'foc/Controller/Inverse Park Transform/Variant/mcb/Inverse Park Transform/Two inputs CRL/Switch_Axis'
* '<S29>' : 'foc/Controller/PID Controller/Anti-windup'
* '<S30>' : 'foc/Controller/PID Controller/D Gain'
* '<S31>' : 'foc/Controller/PID Controller/External Derivative'
* '<S32>' : 'foc/Controller/PID Controller/Filter'
* '<S33>' : 'foc/Controller/PID Controller/Filter ICs'
* '<S34>' : 'foc/Controller/PID Controller/I Gain'
* '<S35>' : 'foc/Controller/PID Controller/Ideal P Gain'
* '<S36>' : 'foc/Controller/PID Controller/Ideal P Gain Fdbk'
* '<S37>' : 'foc/Controller/PID Controller/Integrator'
* '<S38>' : 'foc/Controller/PID Controller/Integrator ICs'
* '<S39>' : 'foc/Controller/PID Controller/N Copy'
* '<S40>' : 'foc/Controller/PID Controller/N Gain'
* '<S41>' : 'foc/Controller/PID Controller/P Copy'
* '<S42>' : 'foc/Controller/PID Controller/Parallel P Gain'
* '<S43>' : 'foc/Controller/PID Controller/Reset Signal'
* '<S44>' : 'foc/Controller/PID Controller/Saturation'
* '<S45>' : 'foc/Controller/PID Controller/Saturation Fdbk'
* '<S46>' : 'foc/Controller/PID Controller/Sum'
* '<S47>' : 'foc/Controller/PID Controller/Sum Fdbk'
* '<S48>' : 'foc/Controller/PID Controller/Tracking Mode'
* '<S49>' : 'foc/Controller/PID Controller/Tracking Mode Sum'
* '<S50>' : 'foc/Controller/PID Controller/Tsamp - Integral'
* '<S51>' : 'foc/Controller/PID Controller/Tsamp - Ngain'
* '<S52>' : 'foc/Controller/PID Controller/postSat Signal'
* '<S53>' : 'foc/Controller/PID Controller/preInt Signal'
* '<S54>' : 'foc/Controller/PID Controller/preSat Signal'
* '<S55>' : 'foc/Controller/PID Controller/Anti-windup/Passthrough'
* '<S56>' : 'foc/Controller/PID Controller/D Gain/Disabled'
* '<S57>' : 'foc/Controller/PID Controller/External Derivative/Disabled'
* '<S58>' : 'foc/Controller/PID Controller/Filter/Disabled'
* '<S59>' : 'foc/Controller/PID Controller/Filter ICs/Disabled'
* '<S60>' : 'foc/Controller/PID Controller/I Gain/Internal Parameters'
* '<S61>' : 'foc/Controller/PID Controller/Ideal P Gain/Passthrough'
* '<S62>' : 'foc/Controller/PID Controller/Ideal P Gain Fdbk/Disabled'
* '<S63>' : 'foc/Controller/PID Controller/Integrator/Discrete'
* '<S64>' : 'foc/Controller/PID Controller/Integrator ICs/Internal IC'
* '<S65>' : 'foc/Controller/PID Controller/N Copy/Disabled wSignal Specification'
* '<S66>' : 'foc/Controller/PID Controller/N Gain/Disabled'
* '<S67>' : 'foc/Controller/PID Controller/P Copy/Disabled'
* '<S68>' : 'foc/Controller/PID Controller/Parallel P Gain/Internal Parameters'
* '<S69>' : 'foc/Controller/PID Controller/Reset Signal/Disabled'
* '<S70>' : 'foc/Controller/PID Controller/Saturation/Enabled'
* '<S71>' : 'foc/Controller/PID Controller/Saturation Fdbk/Disabled'
* '<S72>' : 'foc/Controller/PID Controller/Sum/Sum_PI'
* '<S73>' : 'foc/Controller/PID Controller/Sum Fdbk/Disabled'
* '<S74>' : 'foc/Controller/PID Controller/Tracking Mode/Disabled'
* '<S75>' : 'foc/Controller/PID Controller/Tracking Mode Sum/Passthrough'
* '<S76>' : 'foc/Controller/PID Controller/Tsamp - Integral/TsSignalSpecification'
* '<S77>' : 'foc/Controller/PID Controller/Tsamp - Ngain/Passthrough'
* '<S78>' : 'foc/Controller/PID Controller/postSat Signal/Forward_Path'
* '<S79>' : 'foc/Controller/PID Controller/preInt Signal/Internal PreInt'
* '<S80>' : 'foc/Controller/PID Controller/preSat Signal/Forward_Path'
* '<S81>' : 'foc/Controller/PID Controller1/Anti-windup'
* '<S82>' : 'foc/Controller/PID Controller1/D Gain'
* '<S83>' : 'foc/Controller/PID Controller1/External Derivative'
* '<S84>' : 'foc/Controller/PID Controller1/Filter'
* '<S85>' : 'foc/Controller/PID Controller1/Filter ICs'
* '<S86>' : 'foc/Controller/PID Controller1/I Gain'
* '<S87>' : 'foc/Controller/PID Controller1/Ideal P Gain'
* '<S88>' : 'foc/Controller/PID Controller1/Ideal P Gain Fdbk'
* '<S89>' : 'foc/Controller/PID Controller1/Integrator'
* '<S90>' : 'foc/Controller/PID Controller1/Integrator ICs'
* '<S91>' : 'foc/Controller/PID Controller1/N Copy'
* '<S92>' : 'foc/Controller/PID Controller1/N Gain'
* '<S93>' : 'foc/Controller/PID Controller1/P Copy'
* '<S94>' : 'foc/Controller/PID Controller1/Parallel P Gain'
* '<S95>' : 'foc/Controller/PID Controller1/Reset Signal'
* '<S96>' : 'foc/Controller/PID Controller1/Saturation'
* '<S97>' : 'foc/Controller/PID Controller1/Saturation Fdbk'
* '<S98>' : 'foc/Controller/PID Controller1/Sum'
* '<S99>' : 'foc/Controller/PID Controller1/Sum Fdbk'
* '<S100>' : 'foc/Controller/PID Controller1/Tracking Mode'
* '<S101>' : 'foc/Controller/PID Controller1/Tracking Mode Sum'
* '<S102>' : 'foc/Controller/PID Controller1/Tsamp - Integral'
* '<S103>' : 'foc/Controller/PID Controller1/Tsamp - Ngain'
* '<S104>' : 'foc/Controller/PID Controller1/postSat Signal'
* '<S105>' : 'foc/Controller/PID Controller1/preInt Signal'
* '<S106>' : 'foc/Controller/PID Controller1/preSat Signal'
* '<S107>' : 'foc/Controller/PID Controller1/Anti-windup/Passthrough'
* '<S108>' : 'foc/Controller/PID Controller1/D Gain/Disabled'
* '<S109>' : 'foc/Controller/PID Controller1/External Derivative/Disabled'
* '<S110>' : 'foc/Controller/PID Controller1/Filter/Disabled'
* '<S111>' : 'foc/Controller/PID Controller1/Filter ICs/Disabled'
* '<S112>' : 'foc/Controller/PID Controller1/I Gain/Internal Parameters'
* '<S113>' : 'foc/Controller/PID Controller1/Ideal P Gain/Passthrough'
* '<S114>' : 'foc/Controller/PID Controller1/Ideal P Gain Fdbk/Disabled'
* '<S115>' : 'foc/Controller/PID Controller1/Integrator/Discrete'
* '<S116>' : 'foc/Controller/PID Controller1/Integrator ICs/Internal IC'
* '<S117>' : 'foc/Controller/PID Controller1/N Copy/Disabled wSignal Specification'
* '<S118>' : 'foc/Controller/PID Controller1/N Gain/Disabled'
* '<S119>' : 'foc/Controller/PID Controller1/P Copy/Disabled'
* '<S120>' : 'foc/Controller/PID Controller1/Parallel P Gain/Internal Parameters'
* '<S121>' : 'foc/Controller/PID Controller1/Reset Signal/Disabled'
* '<S122>' : 'foc/Controller/PID Controller1/Saturation/Enabled'
* '<S123>' : 'foc/Controller/PID Controller1/Saturation Fdbk/Disabled'
* '<S124>' : 'foc/Controller/PID Controller1/Sum/Sum_PI'
* '<S125>' : 'foc/Controller/PID Controller1/Sum Fdbk/Disabled'
* '<S126>' : 'foc/Controller/PID Controller1/Tracking Mode/Disabled'
* '<S127>' : 'foc/Controller/PID Controller1/Tracking Mode Sum/Passthrough'
* '<S128>' : 'foc/Controller/PID Controller1/Tsamp - Integral/TsSignalSpecification'
* '<S129>' : 'foc/Controller/PID Controller1/Tsamp - Ngain/Passthrough'
* '<S130>' : 'foc/Controller/PID Controller1/postSat Signal/Forward_Path'
* '<S131>' : 'foc/Controller/PID Controller1/preInt Signal/Internal PreInt'
* '<S132>' : 'foc/Controller/PID Controller1/preSat Signal/Forward_Path'
* '<S133>' : 'foc/Controller/PID Controller2/Anti-windup'
* '<S134>' : 'foc/Controller/PID Controller2/D Gain'
* '<S135>' : 'foc/Controller/PID Controller2/External Derivative'
* '<S136>' : 'foc/Controller/PID Controller2/Filter'
* '<S137>' : 'foc/Controller/PID Controller2/Filter ICs'
* '<S138>' : 'foc/Controller/PID Controller2/I Gain'
* '<S139>' : 'foc/Controller/PID Controller2/Ideal P Gain'
* '<S140>' : 'foc/Controller/PID Controller2/Ideal P Gain Fdbk'
* '<S141>' : 'foc/Controller/PID Controller2/Integrator'
* '<S142>' : 'foc/Controller/PID Controller2/Integrator ICs'
* '<S143>' : 'foc/Controller/PID Controller2/N Copy'
* '<S144>' : 'foc/Controller/PID Controller2/N Gain'
* '<S145>' : 'foc/Controller/PID Controller2/P Copy'
* '<S146>' : 'foc/Controller/PID Controller2/Parallel P Gain'
* '<S147>' : 'foc/Controller/PID Controller2/Reset Signal'
* '<S148>' : 'foc/Controller/PID Controller2/Saturation'
* '<S149>' : 'foc/Controller/PID Controller2/Saturation Fdbk'
* '<S150>' : 'foc/Controller/PID Controller2/Sum'
* '<S151>' : 'foc/Controller/PID Controller2/Sum Fdbk'
* '<S152>' : 'foc/Controller/PID Controller2/Tracking Mode'
* '<S153>' : 'foc/Controller/PID Controller2/Tracking Mode Sum'
* '<S154>' : 'foc/Controller/PID Controller2/Tsamp - Integral'
* '<S155>' : 'foc/Controller/PID Controller2/Tsamp - Ngain'
* '<S156>' : 'foc/Controller/PID Controller2/postSat Signal'
* '<S157>' : 'foc/Controller/PID Controller2/preInt Signal'
* '<S158>' : 'foc/Controller/PID Controller2/preSat Signal'
* '<S159>' : 'foc/Controller/PID Controller2/Anti-windup/Passthrough'
* '<S160>' : 'foc/Controller/PID Controller2/D Gain/Disabled'
* '<S161>' : 'foc/Controller/PID Controller2/External Derivative/Disabled'
* '<S162>' : 'foc/Controller/PID Controller2/Filter/Disabled'
* '<S163>' : 'foc/Controller/PID Controller2/Filter ICs/Disabled'
* '<S164>' : 'foc/Controller/PID Controller2/I Gain/Internal Parameters'
* '<S165>' : 'foc/Controller/PID Controller2/Ideal P Gain/Passthrough'
* '<S166>' : 'foc/Controller/PID Controller2/Ideal P Gain Fdbk/Disabled'
* '<S167>' : 'foc/Controller/PID Controller2/Integrator/Discrete'
* '<S168>' : 'foc/Controller/PID Controller2/Integrator ICs/Internal IC'
* '<S169>' : 'foc/Controller/PID Controller2/N Copy/Disabled wSignal Specification'
* '<S170>' : 'foc/Controller/PID Controller2/N Gain/Disabled'
* '<S171>' : 'foc/Controller/PID Controller2/P Copy/Disabled'
* '<S172>' : 'foc/Controller/PID Controller2/Parallel P Gain/Internal Parameters'
* '<S173>' : 'foc/Controller/PID Controller2/Reset Signal/Disabled'
* '<S174>' : 'foc/Controller/PID Controller2/Saturation/Passthrough'
* '<S175>' : 'foc/Controller/PID Controller2/Saturation Fdbk/Disabled'
* '<S176>' : 'foc/Controller/PID Controller2/Sum/Sum_PI'
* '<S177>' : 'foc/Controller/PID Controller2/Sum Fdbk/Disabled'
* '<S178>' : 'foc/Controller/PID Controller2/Tracking Mode/Disabled'
* '<S179>' : 'foc/Controller/PID Controller2/Tracking Mode Sum/Passthrough'
* '<S180>' : 'foc/Controller/PID Controller2/Tsamp - Integral/TsSignalSpecification'
* '<S181>' : 'foc/Controller/PID Controller2/Tsamp - Ngain/Passthrough'
* '<S182>' : 'foc/Controller/PID Controller2/postSat Signal/Forward_Path'
* '<S183>' : 'foc/Controller/PID Controller2/preInt Signal/Internal PreInt'
* '<S184>' : 'foc/Controller/PID Controller2/preSat Signal/Forward_Path'
* '<S185>' : 'foc/Controller/Park Transform/Variant'
* '<S186>' : 'foc/Controller/Park Transform/Variant/mcb'
* '<S187>' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform'
* '<S188>' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine'
* '<S189>' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Two inputs CRL'
* '<S190>' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup'
* '<S191>' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup'
* '<S192>' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup/Interpolation'
* '<S193>' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup/WrapUp'
* '<S194>' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup/datatype'
* '<S195>' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup/WrapUp/Compare To Zero'
* '<S196>' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup/WrapUp/If Action Subsystem'
* '<S197>' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup/WrapUp/If Action Subsystem1'
* '<S198>' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Sine Cosine/Sine-Cosine Lookup/Sine-Cosine Lookup/datatype/datatype no change'
* '<S199>' : 'foc/Controller/Park Transform/Variant/mcb/Park Transform/Two inputs CRL/Switch_Axis'
* '<S200>' : 'foc/Controller/Subsystem1/MATLAB Function1'
* '<S201>' : 'foc/Controller/Subsystem1/MATLAB Function2'
*/
#endif /* Controller_h_ */
/*
* File trailer for generated code.
*
* [EOF]
*/