From efef0a49841951576218b850f9cf971cfe8bb29d Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Fri, 12 Dec 2025 15:22:35 -0600 Subject: [PATCH 01/80] Add indexme file for the Autogen --- .../control-with-amdc/autogen/index.md | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 source/getting-started/control-with-amdc/autogen/index.md diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md new file mode 100644 index 00000000..e4c3ae34 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -0,0 +1,60 @@ +# Current Sensor Calibration + +## Background + +Motor drives typically require current sensors to provide feedback to the control system. This document describes a method to calibrate the current sensors to a linear model during commissioning of a motor drive. The calibration is characterized by two parameters, a gain and an offset, that describe how the sensed current appears as a voltage to the AMDC. + +Current sensors are transducers which produce an output signal (either current or voltage) proportional to the primary current flowing through the sensor. There are different types of current sensors relying on different physical phenomenons such as shunt resistors and hall-effect. For the purpose of this document, the specific type of sensor does not matter---just that the output signal is linear with the primary current, and that it is measured as a voltage by the control system. The current sensor needs to be calibrated against an appropriate reference before it can be used in the control system. This reference is a known, trusted current sensor, such as a precision digital multimeter (preferred), hall-effect current clamp, or the setpoint of a DC power supply. While the manufacturer datasheet provides nominal parameters, calibration of the current sensor is necessary to get accurate measurements to account for any deviation due to process variation. + +## Calibration Method + +A method is now provided to calibrate the current sensors in a motor drive. An example of the assumed system for a three phase motor is shown in the figure below. + +![Current Sensor Configuration](resources/current_sensor_drawing.svg) + +Typically, each phase has a current sensor associated with it that needs to be calibrated. This method assumes that the signal measured by the AMDC for each sensor is a voltage that must be converted into a current value. + +1. Connect the reference curent sensor (i.e. precision digital multimeter) to the phase U cable of the motor. +1. Set up your AMDC system to enable you to log the raw reading of the drive's current sensor attached to phase U (presumably, by sampling an ADC channel). It is recommended to use the AMDC's logging functionality so that data can be collected over a period of time (e.g. 100 ms) and post-processed to find the average value. +1. Record the drive's sensor reading when there is no current flowing through phase U. _Hint:_ remember to calculate this value as the average over a period of time. +1. Cause a "small" curent to flow through phase U (i.e., apply a voltage across phase U). The value of current is left to the discretion of the user based on the system nominal ratings. +1. Record the drive's sensor reading as well as the reference sensor's reading of the current flowing through the phase U cable. +1. Progressively increase the phase U current and record the readings. Do this over the full range of rated current, both positive and negative. +1. Tabulate the measurements as shown in this example [`exp_data.csv` file](./resources/exp_data.csv). +1. Fit a linear expression of the form $\text{Reading [V]} = \text{Gain [V/A]} \times \text{Current [A]} + \text{Offset [V]}$ to the obtained measurements. This [example Jupyter notebook](./resources/current_sensor_calibration.ipynb) is provided to illustrate the process. +1. Repeat the exercise for the remaining phases of the system. + +An example of the results are shown in the plot below. The obtained gain and offset can be used directly in the control code to convert the sensor reading into the actual current measurement. + +![Example Results](resources/fit.svg) + +```{tip} +Be sure to conduct the calibration process over the full range of current data (both positive and negative current) to account for any variation in the current sensor reading due to directionality of current. +``` +## Use of Calibration Data + +The below codeblock can be utilized by the user to convert between raw measurements from the sensor and the actual currents. + +```C +#define INV_GAIN (1.0/0.621) // Inverse of gain obtained from curve fit (1/0.621) +double offset = 4.739; // [V], offset from curve fit. This is a variable so that the drive can remeasure and adjust the offset at startup + +double current_measurement; // Actual current measurement, to be used in control algorithm + +current_measurement = (sensor_reading - offset)*INV_GAIN; // sensor_reading is the raw measurement and needs to be obtained by the user +``` + +```{tip} +In AMDC firmware versions 1.4.1 and above, the amds driver has a built in function `amds_convert_voltage()` to streamline this process. Default offset and gain values for each different sensor card are also included. +``` + +## Recalculate Offset At Startup +The offset value of the current sensors can drift over time. It is recommended that drive developers include code in their control logic to automatically re-zero the current sensor at startup, as follows: + +1. Prior to enabling the PWM, when it is known that there is no current flowing in the motor, record approximately 100 ms of sensor data on each phase. +2. For each phase, calculate the average of this data and use it as the new `offset` value in the code block above. +3. Proceed with starting-up the drive. + +## Conclusion + +The current sensor calibration method presented in this article should be viewed as a best-practice for motor drive development. Readers are welcome to directly use the provided code and Jupyter notebook in their motor drives. From 52120e3006516f9dc2853aeac682e9670fce1d7c Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Fri, 12 Dec 2025 15:32:44 -0600 Subject: [PATCH 02/80] Save the setup matlab file and simulink model --- .../control-with-amdc/autogen/simulink/setup.m | 0 .../autogen/simulink/setupModel.slx | Bin 0 -> 73127 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 source/getting-started/control-with-amdc/autogen/simulink/setup.m create mode 100644 source/getting-started/control-with-amdc/autogen/simulink/setupModel.slx diff --git a/source/getting-started/control-with-amdc/autogen/simulink/setup.m b/source/getting-started/control-with-amdc/autogen/simulink/setup.m new file mode 100644 index 00000000..e69de29b diff --git a/source/getting-started/control-with-amdc/autogen/simulink/setupModel.slx b/source/getting-started/control-with-amdc/autogen/simulink/setupModel.slx new file mode 100644 index 0000000000000000000000000000000000000000..d2ddd5ae29028c42cb7f95f94246e56d4f873741 GIT binary patch literal 73127 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 bQfQ{5r%w#ygeJs8__;bP#E%DXWQczN54ArB literal 0 HcmV?d00001 From 37cda4ad706cc5234448ca8b80687bfc8f9c4e16 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Fri, 12 Dec 2025 15:40:35 -0600 Subject: [PATCH 03/80] Update the matlab code --- .../control-with-amdc/autogen/simulink/setup.asv | 4 ++++ .../control-with-amdc/autogen/simulink/setup.m | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 source/getting-started/control-with-amdc/autogen/simulink/setup.asv diff --git a/source/getting-started/control-with-amdc/autogen/simulink/setup.asv b/source/getting-started/control-with-amdc/autogen/simulink/setup.asv new file mode 100644 index 00000000..68a1dd0e --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/simulink/setup.asv @@ -0,0 +1,4 @@ + + +Ts = 1/(10e3); %Hz +Tsim = diff --git a/source/getting-started/control-with-amdc/autogen/simulink/setup.m b/source/getting-started/control-with-amdc/autogen/simulink/setup.m index e69de29b..d4e95298 100644 --- a/source/getting-started/control-with-amdc/autogen/simulink/setup.m +++ b/source/getting-started/control-with-amdc/autogen/simulink/setup.m @@ -0,0 +1,4 @@ +clear; clc; + +Ts = 1/(10e3); % sec +Tsim = Ts/10; % sec \ No newline at end of file From 8be0727bc148a8cb22606a9671a5f89a60028f9e Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Fri, 12 Dec 2025 15:53:41 -0600 Subject: [PATCH 04/80] Add gitignore and update the simulink --- .../autogen/simulink/.gitignore | 5 +++++ .../autogen/simulink/integrator.slx | Bin 0 -> 72569 bytes 2 files changed, 5 insertions(+) create mode 100644 source/getting-started/control-with-amdc/autogen/simulink/.gitignore create mode 100644 source/getting-started/control-with-amdc/autogen/simulink/integrator.slx diff --git a/source/getting-started/control-with-amdc/autogen/simulink/.gitignore b/source/getting-started/control-with-amdc/autogen/simulink/.gitignore new file mode 100644 index 00000000..dc3e33f2 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/simulink/.gitignore @@ -0,0 +1,5 @@ +# ignore MATLAB files + +**/slprj +*.autosave +*.slxc \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/simulink/integrator.slx b/source/getting-started/control-with-amdc/autogen/simulink/integrator.slx new file mode 100644 index 0000000000000000000000000000000000000000..0a4f10658fe8328bd7759a05a917b3202338bb7a GIT binary patch literal 72569 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 Date: Fri, 12 Dec 2025 16:02:05 -0600 Subject: [PATCH 05/80] Add auatogen code --- .../autogen/simulink/autogen/integrator.c | 65 +++++++ .../autogen/simulink/autogen/integrator.h | 98 +++++++++++ .../simulink/autogen/integrator_private.h | 30 ++++ .../simulink/autogen/integrator_types.h | 32 ++++ .../autogen/simulink/autogen/rtmodel.h | 34 ++++ .../autogen/simulink/autogen/rtwtypes.h | 160 ++++++++++++++++++ .../autogen/simulink/setup.m | 11 +- 7 files changed, 429 insertions(+), 1 deletion(-) create mode 100644 source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator.c create mode 100644 source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator.h create mode 100644 source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator_private.h create mode 100644 source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator_types.h create mode 100644 source/getting-started/control-with-amdc/autogen/simulink/autogen/rtmodel.h create mode 100644 source/getting-started/control-with-amdc/autogen/simulink/autogen/rtwtypes.h diff --git a/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator.c b/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator.c new file mode 100644 index 00000000..95f41992 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator.c @@ -0,0 +1,65 @@ +/* + * 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: integrator.c + * + * Code generated for Simulink model 'integrator'. + * + * Model version : 1.2 + * Simulink Coder version : 25.2 (R2025b) 28-Jul-2025 + * C/C++ source code generated on : Fri Dec 12 15:58:48 2025 + * + * Target selection: ert.tlc + * Embedded hardware selection: Intel->x86-64 (Windows64) + * Code generation objectives: Unspecified + * Validation result: Not run + */ + +#include "integrator.h" + +/* Block states (default storage) */ +DW_integrator_T integrator_DW; + +/* External inputs (root inport signals with default storage) */ +ExtU_integrator_T integrator_U; + +/* External outputs (root outports fed by signals with default storage) */ +ExtY_integrator_T integrator_Y; + +/* Real-time model */ +static RT_MODEL_integrator_T integrator_M_; +RT_MODEL_integrator_T *const integrator_M = &integrator_M_; + +/* Model step function */ +void integrator_step(void) +{ + /* Outport: '/Out1' incorporates: + * DiscreteIntegrator: '/Discrete-Time Integrator' + */ + integrator_Y.Out1 = integrator_DW.DiscreteTimeIntegrator_DSTATE; + + /* Update for DiscreteIntegrator: '/Discrete-Time Integrator' incorporates: + * Inport: '/In1' + */ + integrator_DW.DiscreteTimeIntegrator_DSTATE += 0.0001 * integrator_U.In1; +} + +/* Model initialize function */ +void integrator_initialize(void) +{ + /* (no initialization code required) */ +} + +/* Model terminate function */ +void integrator_terminate(void) +{ + /* (no terminate code required) */ +} + +/* + * File trailer for generated code. + * + * [EOF] + */ diff --git a/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator.h b/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator.h new file mode 100644 index 00000000..e48642c4 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator.h @@ -0,0 +1,98 @@ +/* + * 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: integrator.h + * + * Code generated for Simulink model 'integrator'. + * + * Model version : 1.2 + * Simulink Coder version : 25.2 (R2025b) 28-Jul-2025 + * C/C++ source code generated on : Fri Dec 12 15:58:48 2025 + * + * Target selection: ert.tlc + * Embedded hardware selection: Intel->x86-64 (Windows64) + * Code generation objectives: Unspecified + * Validation result: Not run + */ + +#ifndef integrator_h_ +#define integrator_h_ +#ifndef integrator_COMMON_INCLUDES_ +#define integrator_COMMON_INCLUDES_ +#include "rtwtypes.h" +#include "math.h" +#endif /* integrator_COMMON_INCLUDES_ */ + +#include "integrator_types.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 states (default storage) for system '' */ +typedef struct { + real_T DiscreteTimeIntegrator_DSTATE;/* '/Discrete-Time Integrator' */ +} DW_integrator_T; + +/* External inputs (root inport signals with default storage) */ +typedef struct { + real_T In1; /* '/In1' */ +} ExtU_integrator_T; + +/* External outputs (root outports fed by signals with default storage) */ +typedef struct { + real_T Out1; /* '/Out1' */ +} ExtY_integrator_T; + +/* Real-time Model Data Structure */ +struct tag_RTM_integrator_T { + const char_T * volatile errorStatus; +}; + +/* Block states (default storage) */ +extern DW_integrator_T integrator_DW; + +/* External inputs (root inport signals with default storage) */ +extern ExtU_integrator_T integrator_U; + +/* External outputs (root outports fed by signals with default storage) */ +extern ExtY_integrator_T integrator_Y; + +/* Model entry point functions */ +extern void integrator_initialize(void); +extern void integrator_step(void); +extern void integrator_terminate(void); + +/* Real-time Model object */ +extern RT_MODEL_integrator_T *const integrator_M; + +/*- + * 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. + * + * Use the MATLAB hilite_system command to trace the generated code back + * to the model. For example, + * + * hilite_system('') - opens system 3 + * hilite_system('/Kp') - opens and selects block Kp which resides in S3 + * + * Here is the system hierarchy for this model + * + * '' : 'integrator' + */ +#endif /* integrator_h_ */ + +/* + * File trailer for generated code. + * + * [EOF] + */ diff --git a/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator_private.h b/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator_private.h new file mode 100644 index 00000000..836e1446 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator_private.h @@ -0,0 +1,30 @@ +/* + * 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: integrator_private.h + * + * Code generated for Simulink model 'integrator'. + * + * Model version : 1.2 + * Simulink Coder version : 25.2 (R2025b) 28-Jul-2025 + * C/C++ source code generated on : Fri Dec 12 15:58:48 2025 + * + * Target selection: ert.tlc + * Embedded hardware selection: Intel->x86-64 (Windows64) + * Code generation objectives: Unspecified + * Validation result: Not run + */ + +#ifndef integrator_private_h_ +#define integrator_private_h_ +#include "rtwtypes.h" +#include "integrator_types.h" +#endif /* integrator_private_h_ */ + +/* + * File trailer for generated code. + * + * [EOF] + */ diff --git a/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator_types.h b/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator_types.h new file mode 100644 index 00000000..6e991e41 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator_types.h @@ -0,0 +1,32 @@ +/* + * 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: integrator_types.h + * + * Code generated for Simulink model 'integrator'. + * + * Model version : 1.2 + * Simulink Coder version : 25.2 (R2025b) 28-Jul-2025 + * C/C++ source code generated on : Fri Dec 12 15:58:48 2025 + * + * Target selection: ert.tlc + * Embedded hardware selection: Intel->x86-64 (Windows64) + * Code generation objectives: Unspecified + * Validation result: Not run + */ + +#ifndef integrator_types_h_ +#define integrator_types_h_ + +/* Forward declaration for rtModel */ +typedef struct tag_RTM_integrator_T RT_MODEL_integrator_T; + +#endif /* integrator_types_h_ */ + +/* + * File trailer for generated code. + * + * [EOF] + */ diff --git a/source/getting-started/control-with-amdc/autogen/simulink/autogen/rtmodel.h b/source/getting-started/control-with-amdc/autogen/simulink/autogen/rtmodel.h new file mode 100644 index 00000000..17e57eab --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/simulink/autogen/rtmodel.h @@ -0,0 +1,34 @@ +/* + * 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: rtmodel.h + * + * Code generated for Simulink model 'integrator'. + * + * Model version : 1.2 + * Simulink Coder version : 25.2 (R2025b) 28-Jul-2025 + * C/C++ source code generated on : Fri Dec 12 15:58:48 2025 + * + * Target selection: ert.tlc + * Embedded hardware selection: Intel->x86-64 (Windows64) + * Code generation objectives: Unspecified + * Validation result: Not run + */ + +#ifndef rtmodel_h_ +#define rtmodel_h_ +#include "integrator.h" + +/* Macros generated for backwards compatibility */ +#ifndef rtmGetStopRequested +#define rtmGetStopRequested(rtm) ((void*) 0) +#endif +#endif /* rtmodel_h_ */ + +/* + * File trailer for generated code. + * + * [EOF] + */ diff --git a/source/getting-started/control-with-amdc/autogen/simulink/autogen/rtwtypes.h b/source/getting-started/control-with-amdc/autogen/simulink/autogen/rtwtypes.h new file mode 100644 index 00000000..e074d42d --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/simulink/autogen/rtwtypes.h @@ -0,0 +1,160 @@ +/* + * 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: rtwtypes.h + * + * Code generated for Simulink model 'integrator'. + * + * Model version : 1.2 + * Simulink Coder version : 25.2 (R2025b) 28-Jul-2025 + * C/C++ source code generated on : Fri Dec 12 15:58:48 2025 + * + * Target selection: ert.tlc + * Embedded hardware selection: Intel->x86-64 (Windows64) + * Code generation objectives: Unspecified + * 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: Intel->x86-64 (Windows64) + * Number of bits: char: 8 short: 16 int: 32 + * long: 32 + * native word size: 64 + * 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 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. * + *===========================================================================*/ +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 char char_T; +typedef unsigned char uchar_T; +typedef char_T byte_T; + +/*===========================================================================* + * Complex number type definitions * + *===========================================================================*/ +#define CREAL_T + +typedef struct { + real32_T re; + real32_T im; +} creal32_T; + +typedef struct { + real64_T re; + real64_T im; +} creal64_T; + +typedef struct { + real_T re; + real_T im; +} creal_T; + +#define CINT8_T + +typedef struct { + int8_T re; + int8_T im; +} cint8_T; + +#define CUINT8_T + +typedef struct { + uint8_T re; + uint8_T im; +} cuint8_T; + +#define CINT16_T + +typedef struct { + int16_T re; + int16_T im; +} cint16_T; + +#define CUINT16_T + +typedef struct { + uint16_T re; + uint16_T im; +} cuint16_T; + +#define CINT32_T + +typedef struct { + int32_T re; + int32_T im; +} cint32_T; + +#define CUINT32_T + +typedef struct { + uint32_T re; + uint32_T im; +} cuint32_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)) + +/* Block D-Work pointer type */ +typedef void * pointer_T; + +#endif /* RTWTYPES_H */ + +/* + * File trailer for generated code. + * + * [EOF] + */ diff --git a/source/getting-started/control-with-amdc/autogen/simulink/setup.m b/source/getting-started/control-with-amdc/autogen/simulink/setup.m index d4e95298..2c935adc 100644 --- a/source/getting-started/control-with-amdc/autogen/simulink/setup.m +++ b/source/getting-started/control-with-amdc/autogen/simulink/setup.m @@ -1,4 +1,13 @@ clear; clc; Ts = 1/(10e3); % sec -Tsim = Ts/10; % sec \ No newline at end of file +Tsim = Ts/10; % sec + +%% Autogen code for the controller +model='integrator'; % Name of the controller to be built +slbuild(model); % Generates the autogen code +oldFolder = cd('C:integrator_ert_rtw\'); +command = 'for /r %i in (*.c, *.h) do copy /y %i ..\autogen'; +[status, cmdout] = system(command); +cd(oldFolder); + From 06372353e99ea596ca7bd0b8c494eae3c0657662 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Fri, 12 Dec 2025 16:03:11 -0600 Subject: [PATCH 06/80] Update the simulink --- .../autogen/simulink/integrator.slx | Bin 72569 -> 71977 bytes .../autogen/simulink/setup_model.slx | Bin 0 -> 82752 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 source/getting-started/control-with-amdc/autogen/simulink/setup_model.slx diff --git a/source/getting-started/control-with-amdc/autogen/simulink/integrator.slx b/source/getting-started/control-with-amdc/autogen/simulink/integrator.slx index 0a4f10658fe8328bd7759a05a917b3202338bb7a..76a54d7db2e0bbf2f807af556623674ebad37e17 100644 GIT binary patch delta 3556 zcmbVP4QvzF9rtrWN}R+?AtZ5<5+_+1CAs)MeLiqZ$>;JhFik|2A_niil51^W@HvF6 z)x46nDqB0+oXQDpmD2JmE1ObUghbI6X___yXzblN{zyqF zouk~{`~Tnl-|zqRd-rAzgU{(9??>kZA5sx){j(lrq z>?vXY<%4~THcWuATf7}4ERUZ6*(^a`}^Ree`@-% zR_t;YyC+z6vSi&`rB`!`_kD2UuOsJP>b~{*KUW?(G8GQ;yIW7xKEL=E+d6x$bT2wR z)qCsOQ`4gtR=m1r@2S0mTmQ0S@A;1U{RcMw=gdv}^)R*O_St=%ZJyiIl=E@_#+N`qc})*KVGv8N0k`C_H5%)T5PnZulAIEE`^{wo zkEklro3s2LOJJ$}o(#OCO@BskZ+Ha?ayP?s>^)F_(pQ;qlN_j1wBFH(Fc?)M%6B9&5Q`2=e$QNCB1lbv z;#36PXgR1oq3P!+cReK#1R;n#Mu{?u(F7x5P~cgN!6{b6X;ws+Sy%L>^k#jOelTw4 z!LNt`Kpv_%KMysH7-PK!qgIJS5V|u}aGAhmnXHgE2*oSlF_L zS?eRG1vR8b;{l8yNg5|e&hN1#*)c$~2BFp*QiUh9*<@tKbFC?&6p1OaB1Ho&A*gAJ z5R_05L`7&-G$AU*B)k#FaRS97YpTPFe-b!a%nV9rM3lA%(6r28?n?G7LxR7 zZ$*5qDyHiWax#rG6optp6fl}0d5rV&9EN*w5t0NU@eE(m zNxS&v8$=e}&a*#M-ED*T0)P@Ou@pl=w)z>C1f7@5XVwfroZL_{OTJ* z5$d|EklkeALSaw|iBTzH!h>JAC{s0Q7RTL5*kT*a3W7-+<`$ohyP51HK?dq%nPwG^C?$2~RF9Uk6+8UcE^`<}WzyE)U0npyy5C0Q+rUA{l$yBb*=**2na%jv1zh@=f4M%>qI3o@Xzgq*YB-E~xX;{)mu($ZW2-E25XJ^) zRY|EEgPj8r^wrlVY3RE~iNv%f9Azn}3#~A(R}F2GqWa%jxnjcGXnxI8oO$zcOk!Ev zr@-E)>BQ<%Jt*WR9_mmI>%G;J?~jAs3mgrb<(cc~XmH(Tka^&p#X-0EMc7pPs1gy? z5v?;KtNNP$Dx+=*=&np39nkT?J$s;-z3Hpmb;hbvu)^-jGX_e*YJ1^AW1hXpLjDM7YVm+_1xG-aKs>nE920HCmo#wq#=R8G5 zb2+kp?rWC7*jWy$jmQ#EVV^2~xvIQA*bVHMBXi2hd`a7Eu8dvu^mXHSIcTWL?1(m7 z<(vt7IHSM?I_!n5dW3TsVHYU2a%(*80;Tr64r7lC)K|?-Znl99Yt2-*$G`tFNOG_DOLnj0pXp;^M1xgd3WC{T$ZPMM7Eya&C z)6R4?+TGjz_y52D+yCF&`^lliCr1(^S7r7>Vbfglz2uBLm$qL?B8V#^iorCkzC=Zp zs5F!Y)w-&KFOSVln!D%CbG@)TrD%BjOHWz8LCJq}^@+Ug>JNYU=`q=w7hb79e){&- zGe>*wDMya%xqIgE$Jw)<|G5H=J$U~qi-qS;HvA*w2TT7(Z%Lf}>Wk@fiX!xl79Jj?N3^Mb?WV{xyyPQkLDJv<#!ysaHw|Qp^CH0XESQ%>^5IZ zy7B#+-{KY>+u$f}?@!qB;ZJ=la?VA{n)kgvaNyO@&hv%aj^6!s;8EvM+28@?wM$^{ zKzh}-mOt$2?X#Y7Ejnx}R5_&kcP`l27JOkz=W2KO(TUXd)s0JfkAeQnWhp;;qLtqI zyXHw~?9oZj=(2~l8)Ls%dH7oK#}}6EJOA!855_j%IkIEd@W91ACxy?l9`xRfZq1k;oAph!vV{xoJQWos*J3c z^)o?^_m+3EgFX)vWCQRmi(aPJl;N1r>2af{s7RLeFXSw$jG`zFw5?D;Yww&$PKWFG z(UmFW%Slq}!>z~Xr4huuG~sbNxgU0!(*-7jRKQzSg=Gcjb@5@dw~tphNL6B~v#Q#e zLAG9P4ghD68)DU}Mh_DR)T=$bn{zTAb%Um^+&WFXm3K1mo<*S$fgwByU5$uUSB09d zL$kRcy$!kMq5XU~!1_h2(6>r0n>q?dT=LxIT!3?UX0i^MmlU&k=YW+DaPSn9nb6Ai z!H)z*_6p7w?2p0ayuk{sx}ge!9)-fha_;`%%yZ40C&>Dz>PPdrlHJ$ZcR@&Z+s( zGpdBWW~r=cozKJjSwGE;d%(EVX;TKj)Pd2jU|lIqE-uLX15qX}2i4N(0Di_Q^8UjX zpsiNsbTSSH>xvxxtW!^A2?KzE*aKg=>42 zN}h4qnIYC}h^dRpV)_!A)&(KCDmzu9)zw6Iwz7s4RVb0XEM4#PljLMo@+I80=0I@Exo(X!c^<)0D-eOH@_WB8JKeU0KEFiw3S4 zEr8oE$|?;gIvV*wAMa(o!6>~dOhdhT!t=68BA9UDy)-fhzGIaqR-;^iADzuCpMg1J zYgd!D*6QbdtUtKk><#!3WZo|(1YT1-jlT(5)pX&)FOKn;!dZ=e7Ue!v9a{j;{WE1Y zN*n_dWZ>HCdGM37$*N`#k4_1%J4RS62&kBjIoR3pY>_A9M2Jll%$PHk+Ul6Z{Fzgy zLL1XBhikeMb5WkeBQY8}7Vo&0OS!Ofms}F1RW}2z6WdZ7O@P`CwvY9*UMK59$;k#{ zV2Y;E8<$i~7X4y!W56?~kUKn1Zj8&Q8ykz(hWOyu`ov?x-p_}TP4UPIL?>#aP0$}= zqrH+D7T80MFBPxC=MXkv@p{%9I22%_OOvehF`mGQ4CS~)`?xmfaNXsmO`s_ZmfPrNU@!wSpebN7gB}|)jNo;Lv0e%| zMg5g{JcI!aw}$_xg)}xAw4q9CMpa`cuwq!40oo0kkpnh52uxkT0WbrV$RSV-n!2z< zK5Q5q7vVT{}ZjNKT~dhDsgjj0m_jhF$X08!Tl5Ky}~j^(4Cg)mcS-2nEm!;KAv z@$&|R0+l#Z>%zESg9k<6xP#_vfLr9>BvQB>OlHF3rft{|LK?<~oo-C&0I-YHwP7j| z@HVtHh*~6v0M00nwqhA(z&Wl5Z3P94HAo-AfbC=A!~o-?eT*$0WM~YCK|?PV1w}7F zly2O&Y!Le>e&}|rv7N)q0p1!E1*k+l9>M_zfEfJa*DK)nGjPYnlvFG04{(7X>jFMs z03Q5torx%K{?yIf6b( zRO6%3Mx`3bR|~zFLed7gdZdq3B__W*S8q5bH6HVl#{aP zr;D&nPG(7*CBkcR(kOXcD%_WoW{IR6w|P*NmMWY^vhZe_EG2I5{`mAfS(

i0VPRGUP}}X nD9N&d_~o1+l#{gP&LV|>rIR_?)|RAMcqR+|aBp=MiJtxqvh1W2 diff --git a/source/getting-started/control-with-amdc/autogen/simulink/setup_model.slx b/source/getting-started/control-with-amdc/autogen/simulink/setup_model.slx new file mode 100644 index 0000000000000000000000000000000000000000..67e8f6cad7c1713925a1d163343a4428345120c1 GIT binary patch literal 82752 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 Date: Fri, 19 Dec 2025 15:29:54 -0600 Subject: [PATCH 07/80] Update the images --- .../images/autogen-model-susbsystem.svg | 172 ++++++++++++++++++ .../autogen/images/autogen-model.svg | 139 ++++++++++++++ .../images/discrete-time-integrator.svg | 1 + .../autogen/images/integrator-model.svg | 64 +++++++ .../autogen/images/rate-transition-back.svg | 1 + .../autogen/images/rate-transition-front.svg | 1 + .../autogen/images/step-block.svg | 1 + 7 files changed, 379 insertions(+) create mode 100644 source/getting-started/control-with-amdc/autogen/images/autogen-model-susbsystem.svg create mode 100644 source/getting-started/control-with-amdc/autogen/images/autogen-model.svg create mode 100644 source/getting-started/control-with-amdc/autogen/images/discrete-time-integrator.svg create mode 100644 source/getting-started/control-with-amdc/autogen/images/integrator-model.svg create mode 100644 source/getting-started/control-with-amdc/autogen/images/rate-transition-back.svg create mode 100644 source/getting-started/control-with-amdc/autogen/images/rate-transition-front.svg create mode 100644 source/getting-started/control-with-amdc/autogen/images/step-block.svg diff --git a/source/getting-started/control-with-amdc/autogen/images/autogen-model-susbsystem.svg b/source/getting-started/control-with-amdc/autogen/images/autogen-model-susbsystem.svg new file mode 100644 index 00000000..55df3a8e --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/autogen-model-susbsystem.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/autogen-model.svg b/source/getting-started/control-with-amdc/autogen/images/autogen-model.svg new file mode 100644 index 00000000..e71d87cb --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/autogen-model.svg @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/discrete-time-integrator.svg b/source/getting-started/control-with-amdc/autogen/images/discrete-time-integrator.svg new file mode 100644 index 00000000..eca6bc1c --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/discrete-time-integrator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/integrator-model.svg b/source/getting-started/control-with-amdc/autogen/images/integrator-model.svg new file mode 100644 index 00000000..6de4fc27 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/integrator-model.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/rate-transition-back.svg b/source/getting-started/control-with-amdc/autogen/images/rate-transition-back.svg new file mode 100644 index 00000000..2722a318 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/rate-transition-back.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/rate-transition-front.svg b/source/getting-started/control-with-amdc/autogen/images/rate-transition-front.svg new file mode 100644 index 00000000..a15ef559 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/rate-transition-front.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/step-block.svg b/source/getting-started/control-with-amdc/autogen/images/step-block.svg new file mode 100644 index 00000000..8ac03e02 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/step-block.svg @@ -0,0 +1 @@ + \ No newline at end of file From c8b9457fd6be5bdda6e46412b606f179566f004a Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Fri, 19 Dec 2025 16:10:56 -0600 Subject: [PATCH 08/80] Update the images --- .../control-with-amdc/autogen/images/check-atomic-unit.svg | 1 + .../control-with-amdc/autogen/images/custom-template-uncheck.svg | 1 + .../control-with-amdc/autogen/images/generate-code-only.svg | 1 + .../control-with-amdc/autogen/images/reference-model-setting.svg | 1 + .../control-with-amdc/autogen/images/reference-model-solver.svg | 1 + .../control-with-amdc/autogen/images/rename-integrator.svg | 1 + .../control-with-amdc/autogen/images/set-none-optimization.svg | 1 + .../control-with-amdc/autogen/images/step-setting.svg | 1 + .../control-with-amdc/autogen/images/system-target-file.svg | 1 + 9 files changed, 9 insertions(+) create mode 100644 source/getting-started/control-with-amdc/autogen/images/check-atomic-unit.svg create mode 100644 source/getting-started/control-with-amdc/autogen/images/custom-template-uncheck.svg create mode 100644 source/getting-started/control-with-amdc/autogen/images/generate-code-only.svg create mode 100644 source/getting-started/control-with-amdc/autogen/images/reference-model-setting.svg create mode 100644 source/getting-started/control-with-amdc/autogen/images/reference-model-solver.svg create mode 100644 source/getting-started/control-with-amdc/autogen/images/rename-integrator.svg create mode 100644 source/getting-started/control-with-amdc/autogen/images/set-none-optimization.svg create mode 100644 source/getting-started/control-with-amdc/autogen/images/step-setting.svg create mode 100644 source/getting-started/control-with-amdc/autogen/images/system-target-file.svg diff --git a/source/getting-started/control-with-amdc/autogen/images/check-atomic-unit.svg b/source/getting-started/control-with-amdc/autogen/images/check-atomic-unit.svg new file mode 100644 index 00000000..451f9dde --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/check-atomic-unit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/custom-template-uncheck.svg b/source/getting-started/control-with-amdc/autogen/images/custom-template-uncheck.svg new file mode 100644 index 00000000..e12a7585 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/custom-template-uncheck.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/generate-code-only.svg b/source/getting-started/control-with-amdc/autogen/images/generate-code-only.svg new file mode 100644 index 00000000..082c23a0 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/generate-code-only.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/reference-model-setting.svg b/source/getting-started/control-with-amdc/autogen/images/reference-model-setting.svg new file mode 100644 index 00000000..ee4d044f --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/reference-model-setting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/reference-model-solver.svg b/source/getting-started/control-with-amdc/autogen/images/reference-model-solver.svg new file mode 100644 index 00000000..058b3d2a --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/reference-model-solver.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/rename-integrator.svg b/source/getting-started/control-with-amdc/autogen/images/rename-integrator.svg new file mode 100644 index 00000000..f4442392 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/rename-integrator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/set-none-optimization.svg b/source/getting-started/control-with-amdc/autogen/images/set-none-optimization.svg new file mode 100644 index 00000000..f5b987f8 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/set-none-optimization.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/step-setting.svg b/source/getting-started/control-with-amdc/autogen/images/step-setting.svg new file mode 100644 index 00000000..b4c39bd5 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/step-setting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/system-target-file.svg b/source/getting-started/control-with-amdc/autogen/images/system-target-file.svg new file mode 100644 index 00000000..2070a2c9 --- /dev/null +++ b/source/getting-started/control-with-amdc/autogen/images/system-target-file.svg @@ -0,0 +1 @@ + \ No newline at end of file From 983a023644bda518fb5459b53f13b41718fa4e05 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Fri, 19 Dec 2025 17:24:47 -0600 Subject: [PATCH 09/80] Revise index.md for Simulink code generation guide Updated the document to focus on Simulink automatic code generation for AMDC, including calibration methods, procedures, and integration with AMDC. --- .../control-with-amdc/autogen/index.md | 104 +++++++++++------- 1 file changed, 64 insertions(+), 40 deletions(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index e4c3ae34..27e586ad 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -1,60 +1,84 @@ -# Current Sensor Calibration +# Simulink Automatic Code Generation for AMDC -## Background +- This article explains how to implement the Simulink automatic code generation (autogen) by demonstrating an example using a simple integrator. -Motor drives typically require current sensors to provide feedback to the control system. This document describes a method to calibrate the current sensors to a linear model during commissioning of a motor drive. The calibration is characterized by two parameters, a gain and an offset, that describe how the sensed current appears as a voltage to the AMDC. +## Example of Model Configuration -Current sensors are transducers which produce an output signal (either current or voltage) proportional to the primary current flowing through the sensor. There are different types of current sensors relying on different physical phenomenons such as shunt resistors and hall-effect. For the purpose of this document, the specific type of sensor does not matter---just that the output signal is linear with the primary current, and that it is measured as a voltage by the control system. The current sensor needs to be calibrated against an appropriate reference before it can be used in the control system. This reference is a known, trusted current sensor, such as a precision digital multimeter (preferred), hall-effect current clamp, or the setpoint of a DC power supply. While the manufacturer datasheet provides nominal parameters, calibration of the current sensor is necessary to get accurate measurements to account for any deviation due to process variation. +- A simple discrete-time integrator ($\frac{K T_{\mathrm{s}}}{z - 1}$) will be used for creating the Simulink automatic code generation. -## Calibration Method +

+ Integrator model +

-A method is now provided to calibrate the current sensors in a motor drive. An example of the assumed system for a three phase motor is shown in the figure below. +## Procedure -![Current Sensor Configuration](resources/current_sensor_drawing.svg) +### Pre-Requisites -Typically, each phase has a current sensor associated with it that needs to be calibrated. This method assumes that the signal measured by the AMDC for each sensor is a voltage that must be converted into a current value. +- User needs to install the dedicated MATLAB/Simulink toolbox/features - Embedded coder. -1. Connect the reference curent sensor (i.e. precision digital multimeter) to the phase U cable of the motor. -1. Set up your AMDC system to enable you to log the raw reading of the drive's current sensor attached to phase U (presumably, by sampling an ADC channel). It is recommended to use the AMDC's logging functionality so that data can be collected over a period of time (e.g. 100 ms) and post-processed to find the average value. -1. Record the drive's sensor reading when there is no current flowing through phase U. _Hint:_ remember to calculate this value as the average over a period of time. -1. Cause a "small" curent to flow through phase U (i.e., apply a voltage across phase U). The value of current is left to the discretion of the user based on the system nominal ratings. -1. Record the drive's sensor reading as well as the reference sensor's reading of the current flowing through the phase U cable. -1. Progressively increase the phase U current and record the readings. Do this over the full range of rated current, both positive and negative. -1. Tabulate the measurements as shown in this example [`exp_data.csv` file](./resources/exp_data.csv). -1. Fit a linear expression of the form $\text{Reading [V]} = \text{Gain [V/A]} \times \text{Current [A]} + \text{Offset [V]}$ to the obtained measurements. This [example Jupyter notebook](./resources/current_sensor_calibration.ipynb) is provided to illustrate the process. -1. Repeat the exercise for the remaining phases of the system. +### File Organization -An example of the results are shown in the plot below. The obtained gain and offset can be used directly in the control code to convert the sensor reading into the actual current measurement. +- Provide a preferred file organization so that the AMDC can access the generated C-code -![Example Results](resources/fit.svg) +### Create a Setup Model -```{tip} -Be sure to conduct the calibration process over the full range of current data (both positive and negative current) to account for any variation in the current sensor reading due to directionality of current. -``` -## Use of Calibration Data +- Save a new .m file as setup.m. +- Open a blank model of Simulink. +- Add a Discrete-time integrator +- Let us make a continuous time transfer function as a Plant (= 1). +- Add rate transition block before the integrator. +- In the rate transition, put T_{\mathrm{s}} as a sampling time. -The below codeblock can be utilized by the user to convert between raw measurements from the sensor and the actual currents. +- Make a (discrete time) integrator +- Provide a process of how to create a reference model (see [this](https://github.com/Severson-Group/AMDC-Examples/blob/develop/docs/autogen/Autogen.md#creating-a-referenced-model)) -```C -#define INV_GAIN (1.0/0.621) // Inverse of gain obtained from curve fit (1/0.621) -double offset = 4.739; // [V], offset from curve fit. This is a variable so that the drive can remeasure and adjust the offset at startup +### Model Setting -double current_measurement; // Actual current measurement, to be used in control algorithm +- Press Model Settings and go to Solver. In the Solver Selection, press Fixed-step. Set Fixed-step size as Tsim. -current_measurement = (sensor_reading - offset)*INV_GAIN; // sensor_reading is the raw measurement and needs to be obtained by the user -``` +

+ Integrator model +

-```{tip} -In AMDC firmware versions 1.4.1 and above, the amds driver has a built in function `amds_convert_voltage()` to streamline this process. Default offset and gain values for each different sensor card are also included. -``` +- In the Model Settings, go to Code Generation and click Browse for the System target file. Select ert.tlc Embedded coder. -## Recalculate Offset At Startup -The offset value of the current sensors can drift over time. It is recommended that drive developers include code in their control logic to automatically re-zero the current sensor at startup, as follows: +

+ Integrator model +

+ Integrator model +

+ Integrator model +

+ Integrator model +

Date: Sun, 21 Dec 2025 01:17:22 -0600 Subject: [PATCH 10/80] Revise Simulink model setup and C-code generation steps Updated the steps for creating and configuring a Simulink model, including detailed instructions for setting up a reference model and generating C-code. --- .../control-with-amdc/autogen/index.md | 86 ++++++++++--------- 1 file changed, 45 insertions(+), 41 deletions(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index 27e586ad..f12b48ae 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -20,58 +20,62 @@ - Provide a preferred file organization so that the AMDC can access the generated C-code -### Create a Setup Model +### 1. Create a Setup Model -- Save a new .m file as setup.m. -- Open a blank model of Simulink. -- Add a Discrete-time integrator -- Let us make a continuous time transfer function as a Plant (= 1). -- Add rate transition block before the integrator. -- In the rate transition, put T_{\mathrm{s}} as a sampling time. - -- Make a (discrete time) integrator -- Provide a process of how to create a reference model (see [this](https://github.com/Severson-Group/AMDC-Examples/blob/develop/docs/autogen/Autogen.md#creating-a-referenced-model)) - -### Model Setting - -- Press Model Settings and go to Solver. In the Solver Selection, press Fixed-step. Set Fixed-step size as Tsim. +1. Save a new .m file as setup.m and define Ts = 1/(10e3), Tsim = Ts/10. +2. Open a blank model of Simulink. +3. Add a Step function with the default setting. +4. Add a Discrete-time integrator ($\frac{K T_{\mathrm{s}}}{z - 1}$) with the default setting. +5. Add a rate transition block before the integrator. In the rate transition, put $T_{\mathrm{s}}$ as a sampling time. +6. Add a rate transition block after the integrator. In the rate transition, set the sampling time to -1. +7. Add a continuous-time transfer function as a Plant (= 1). +8. Add a Sum function and connect each block as shown below.

- Integrator model +

-- In the Model Settings, go to Code Generation and click Browse for the System target file. Select ert.tlc Embedded coder. +### 2. Model Setting -

- Integrator model -

- Integrator model -

- Integrator model -

- Integrator model -

+

-- Provide a process of how to generate C-code using Autogen feature, i.e., run `slbuild(modelName.slx)` command. +2. Right-click on the subsystem. Select Block parameters (Subsystem), check 'Treat as atomic unit', and click OK. +3. Right-click on the subsystem and select Subsystem & Model Reference. Select Convert and click Reference Model. +4. In the Input Parameters section, define the New model name as integrator. +5. Click Apply and Convert +6. Rename the reference model to be integrator. + +### 4. Reference Model Setting + +1. Double-click the integrator subsystem and click Model Settings. Click Model Settings in the Reference Model section. +2. Click Solver and in the Solver details, put Ts. +3. Save the Simulink file. + +### 5. Generate C-code + +1. Open the setup.m. +2. Copy and paste the following code. +```m +%% Autogen code for the controller +model='integrator'; % Name of the controller to be built +slbuild(model); % Generates the autogen code +oldFolder = cd('C:integrator_ert_rtw\'); +command = 'for /r %i in (*.c, *.h) do copy /y %i ..\autogen'; +[status, cmdout] = system(command); +cd(oldFolder); +``` ### Integration with AMDC From 29777723a35de3132a6bba4a4ab66dd985384701 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Sun, 21 Dec 2025 01:17:36 -0600 Subject: [PATCH 11/80] Update image width in autogen index markdown --- source/getting-started/control-with-amdc/autogen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index f12b48ae..bbc56f97 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -32,7 +32,7 @@ 8. Add a Sum function and connect each block as shown below.

- +

### 2. Model Setting From 0c425e7991a732dc9448a9f6eb27611365618f33 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Sun, 21 Dec 2025 01:23:09 -0600 Subject: [PATCH 12/80] Update image width for integrator model in index.md --- source/getting-started/control-with-amdc/autogen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index bbc56f97..6173a6bc 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -7,7 +7,7 @@ - A simple discrete-time integrator ($\frac{K T_{\mathrm{s}}}{z - 1}$) will be used for creating the Simulink automatic code generation.

- Integrator model + Integrator model

## Procedure From 620303f690124604d27248a1e02d729a105522ac Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Sun, 21 Dec 2025 01:23:25 -0600 Subject: [PATCH 13/80] Update index.md --- source/getting-started/control-with-amdc/autogen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index 6173a6bc..5bb240be 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -7,7 +7,7 @@ - A simple discrete-time integrator ($\frac{K T_{\mathrm{s}}}{z - 1}$) will be used for creating the Simulink automatic code generation.

- Integrator model + Integrator model

## Procedure From 23000c99530569c1050e161cabaf642e8724a8c8 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 14:41:50 -0600 Subject: [PATCH 14/80] Rename files --- .../autogen/simulink/setup.m | 10 ++++++---- .../autogen/simulink/setupModel.slx | Bin 73127 -> 82752 bytes .../autogen/simulink/setup_model.slx | Bin 82752 -> 0 bytes 3 files changed, 6 insertions(+), 4 deletions(-) delete mode 100644 source/getting-started/control-with-amdc/autogen/simulink/setup_model.slx diff --git a/source/getting-started/control-with-amdc/autogen/simulink/setup.m b/source/getting-started/control-with-amdc/autogen/simulink/setup.m index 2c935adc..7bc763a7 100644 --- a/source/getting-started/control-with-amdc/autogen/simulink/setup.m +++ b/source/getting-started/control-with-amdc/autogen/simulink/setup.m @@ -1,12 +1,14 @@ clear; clc; -Ts = 1/(10e3); % sec -Tsim = Ts/10; % sec +fs = 10e3; % sampling frequency (Hz) +Ts = 1/fs; % sampling time (sec) +Tsim = Ts/10; % simulation time (s) %% Autogen code for the controller -model='integrator'; % Name of the controller to be built -slbuild(model); % Generates the autogen code +model='integrator'; % name of the controller to be built +slbuild(model); % generates the autogen code oldFolder = cd('C:integrator_ert_rtw\'); +% Copy only .c and .h files in autogen folder command = 'for /r %i in (*.c, *.h) do copy /y %i ..\autogen'; [status, cmdout] = system(command); cd(oldFolder); diff --git a/source/getting-started/control-with-amdc/autogen/simulink/setupModel.slx b/source/getting-started/control-with-amdc/autogen/simulink/setupModel.slx index d2ddd5ae29028c42cb7f95f94246e56d4f873741..67e8f6cad7c1713925a1d163343a4428345120c1 100644 GIT binary patch delta 22022 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 delta 13400 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 Date: Fri, 26 Dec 2025 14:47:36 -0600 Subject: [PATCH 15/80] Update m code in the article --- source/getting-started/control-with-amdc/autogen/index.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index 5bb240be..1779b93d 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -69,9 +69,10 @@ 2. Copy and paste the following code. ```m %% Autogen code for the controller -model='integrator'; % Name of the controller to be built -slbuild(model); % Generates the autogen code +model='integrator'; % name of the controller to be built +slbuild(model); % generates the autogen code oldFolder = cd('C:integrator_ert_rtw\'); +% Copy only .c and .h files in autogen folder command = 'for /r %i in (*.c, *.h) do copy /y %i ..\autogen'; [status, cmdout] = system(command); cd(oldFolder); From 59594eea70c3fede4cbcbd310ba4fffc4d9dc3b5 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 14:54:48 -0600 Subject: [PATCH 16/80] Rename images and update document --- ...system.svg => autogen-model-subsystem.svg} | 0 .../control-with-amdc/autogen/index.md | 26 ++++++++++++------- 2 files changed, 16 insertions(+), 10 deletions(-) rename source/getting-started/control-with-amdc/autogen/images/{autogen-model-susbsystem.svg => autogen-model-subsystem.svg} (100%) diff --git a/source/getting-started/control-with-amdc/autogen/images/autogen-model-susbsystem.svg b/source/getting-started/control-with-amdc/autogen/images/autogen-model-subsystem.svg similarity index 100% rename from source/getting-started/control-with-amdc/autogen/images/autogen-model-susbsystem.svg rename to source/getting-started/control-with-amdc/autogen/images/autogen-model-subsystem.svg diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index 1779b93d..99542052 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -6,9 +6,11 @@ - A simple discrete-time integrator ($\frac{K T_{\mathrm{s}}}{z - 1}$) will be used for creating the Simulink automatic code generation. -

- Integrator model -

+```{image} images/integrator-model.svg +:alt: Integrator model +:width: 400px +:align: center +``` ## Procedure @@ -31,9 +33,11 @@ 7. Add a continuous-time transfer function as a Plant (= 1). 8. Add a Sum function and connect each block as shown below. -

- -

+```{image} images/autogen-model.svg +:alt: Autogen model +:width: 400px +:align: center +``` ### 2. Model Setting @@ -47,9 +51,11 @@ 1. Select the discrete-time integrator, and right-click. Select Create Subsystem from Selection. -

- -

+```{image} images/autogen-model-subsystem.svg +:alt: Autogen model subsystem +:width: 400px +:align: center +``` 2. Right-click on the subsystem. Select Block parameters (Subsystem), check 'Treat as atomic unit', and click OK. 3. Right-click on the subsystem and select Subsystem & Model Reference. Select Convert and click Reference Model. @@ -67,7 +73,7 @@ 1. Open the setup.m. 2. Copy and paste the following code. -```m +```MATLAB %% Autogen code for the controller model='integrator'; % name of the controller to be built slbuild(model); % generates the autogen code From 44262566e2a529659e96dd30c0dd5e6ce68e67f0 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 14:56:57 -0600 Subject: [PATCH 17/80] Update readme --- source/getting-started/control-with-amdc/autogen/index.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index 99542052..c82655db 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -35,7 +35,7 @@ ```{image} images/autogen-model.svg :alt: Autogen model -:width: 400px +:width: 600px :align: center ``` @@ -53,7 +53,7 @@ ```{image} images/autogen-model-subsystem.svg :alt: Autogen model subsystem -:width: 400px +:width: 600px :align: center ``` @@ -88,7 +88,9 @@ cd(oldFolder); - Provide an example C-code to call the Autogen files within SDK, i.e., we need a following code: -https://github.com/Severson-Group/ARL-eturbo/blob/1ae4479c934d486e06f233d98f9384fda36a545d/Embedded/My-C-Code/usr/bm_4dof/task_bm_4dof.c#L649 +```c +controller_4DOF_step(); +``` ## Results From f5abcd81f856f518c8e9cc4ded4e81b76b08de1f Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 14:58:49 -0600 Subject: [PATCH 18/80] Update bullet points --- .../control-with-amdc/autogen/index.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index c82655db..a9d76be1 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -1,10 +1,10 @@ # Simulink Automatic Code Generation for AMDC -- This article explains how to implement the Simulink automatic code generation (autogen) by demonstrating an example using a simple integrator. +This article explains how to implement the Simulink automatic code generation (autogen) by demonstrating an example using a simple integrator. ## Example of Model Configuration -- A simple discrete-time integrator ($\frac{K T_{\mathrm{s}}}{z - 1}$) will be used for creating the Simulink automatic code generation. +A simple discrete-time integrator ($\frac{K T_{\mathrm{s}}}{z - 1}$) will be used for creating the Simulink automatic code generation. ```{image} images/integrator-model.svg :alt: Integrator model @@ -16,13 +16,13 @@ ### Pre-Requisites -- User needs to install the dedicated MATLAB/Simulink toolbox/features - Embedded coder. +User needs to install the dedicated MATLAB/Simulink toolbox/features - Embedded coder. ### File Organization -- Provide a preferred file organization so that the AMDC can access the generated C-code +Provide a preferred file organization so that the AMDC can access the generated C-code -### 1. Create a Setup Model +### Create a Setup Model 1. Save a new .m file as setup.m and define Ts = 1/(10e3), Tsim = Ts/10. 2. Open a blank model of Simulink. @@ -39,7 +39,7 @@ :align: center ``` -### 2. Model Setting +### Model Setting 1. Press Model Settings and go to Solver. In the Solver Selection, press Fixed-step. Set Fixed-step size as Tsim. 2. In the Model Settings, go to Code Generation and click Browse for the System target file. Select ert.tlc Embedded coder. @@ -47,7 +47,7 @@ 4. In the Code Generation, go to Optimization and choose None for the Leverage target hardware instruction set extensions in the Target specific optimizations. 5. In the Code Generation, go to Templates and uncheck Generate an example main program in the Custom templates section. Then, click Apply and OK. -### 3. Create a Reference Model +### Create a Reference Model 1. Select the discrete-time integrator, and right-click. Select Create Subsystem from Selection. @@ -63,13 +63,13 @@ 5. Click Apply and Convert 6. Rename the reference model to be integrator. -### 4. Reference Model Setting +### Reference Model Setting 1. Double-click the integrator subsystem and click Model Settings. Click Model Settings in the Reference Model section. 2. Click Solver and in the Solver details, put Ts. 3. Save the Simulink file. -### 5. Generate C-code +### Generate C-code 1. Open the setup.m. 2. Copy and paste the following code. From af99cffe24e6b95f49321d7ab524e57e1c7bf160 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 15:02:06 -0600 Subject: [PATCH 19/80] Update size of figure --- source/getting-started/control-with-amdc/autogen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index a9d76be1..44f9a6d9 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -8,7 +8,7 @@ A simple discrete-time integrator ($\frac{K T_{\mathrm{s}}}{z - 1}$) will be use ```{image} images/integrator-model.svg :alt: Integrator model -:width: 400px +:width: 300px :align: center ``` From b5670f8993d245266acd37eba242809b5e22311e Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 15:06:44 -0600 Subject: [PATCH 20/80] Add overview of Autogen --- source/getting-started/control-with-amdc/autogen/index.md | 8 ++++++-- .../control-with-amdc/autogen/simulink/setup.m | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index 44f9a6d9..de3f326c 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -1,6 +1,10 @@ # Simulink Automatic Code Generation for AMDC -This article explains how to implement the Simulink automatic code generation (autogen) by demonstrating an example using a simple integrator. +This article explains how to implement the Simulink automatic code generation (Autogen) by demonstrating an example using a simple integrator. + +## Simulink Autogen Code + +Autogen is the process of converting a user Simulink model for a controller into equivalent C code for an embedded system (such as the AMDC). The Autogen feature in Simulink can be used to conveniently convert complex controller implementations into C-code for implementing it on the AMDC. ## Example of Model Configuration @@ -76,7 +80,7 @@ Provide a preferred file organization so that the AMDC can access the generated ```MATLAB %% Autogen code for the controller model='integrator'; % name of the controller to be built -slbuild(model); % generates the autogen code +slbuild(model); % generates the Autogen code oldFolder = cd('C:integrator_ert_rtw\'); % Copy only .c and .h files in autogen folder command = 'for /r %i in (*.c, *.h) do copy /y %i ..\autogen'; diff --git a/source/getting-started/control-with-amdc/autogen/simulink/setup.m b/source/getting-started/control-with-amdc/autogen/simulink/setup.m index 7bc763a7..a98dd334 100644 --- a/source/getting-started/control-with-amdc/autogen/simulink/setup.m +++ b/source/getting-started/control-with-amdc/autogen/simulink/setup.m @@ -6,7 +6,7 @@ %% Autogen code for the controller model='integrator'; % name of the controller to be built -slbuild(model); % generates the autogen code +slbuild(model); % generates the Autogen code oldFolder = cd('C:integrator_ert_rtw\'); % Copy only .c and .h files in autogen folder command = 'for /r %i in (*.c, *.h) do copy /y %i ..\autogen'; From 6b48e2bf6b46498288bed3b00bee115f309f9855 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 15:19:36 -0600 Subject: [PATCH 21/80] Update README --- .../control-with-amdc/autogen/index.md | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index de3f326c..f8647119 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -4,11 +4,7 @@ This article explains how to implement the Simulink automatic code generation (A ## Simulink Autogen Code -Autogen is the process of converting a user Simulink model for a controller into equivalent C code for an embedded system (such as the AMDC). The Autogen feature in Simulink can be used to conveniently convert complex controller implementations into C-code for implementing it on the AMDC. - -## Example of Model Configuration - -A simple discrete-time integrator ($\frac{K T_{\mathrm{s}}}{z - 1}$) will be used for creating the Simulink automatic code generation. +Autogen is the process of converting a user Simulink model for a controller into equivalent C code for an embedded system (such as the AMDC). The Autogen feature in Simulink can be used to conveniently convert complex controller implementations into C-code for implementing it on the AMDC. This article presents a step-by-step process of using Autogen to convert a simle integrator (as shown in the figure below) into C code. ```{image} images/integrator-model.svg :alt: Integrator model @@ -20,11 +16,24 @@ A simple discrete-time integrator ($\frac{K T_{\mathrm{s}}}{z - 1}$) will be use ### Pre-Requisites -User needs to install the dedicated MATLAB/Simulink toolbox/features - Embedded coder. +User needs to install at least the following dedicated MATLAB/Simulink toolboxes/features: + +- Simulink +- Embedded coder +- Simulink coders ### File Organization -Provide a preferred file organization so that the AMDC can access the generated C-code +This article assumes that the uses has completed this tutorial, where you set up your repository. To follow this Autogen tutorial, create a new `simulink` folder in your repository and organize the files as shown below: + +```markdown +my-AMDC-workspace/ <= master repo + AMDC-Firmware/ <= AMDC-Firmware as library + ... + my-AMDC-private-C-code/ <= Your private user C code + ... + simulink/ <= Now create this folder +``` ### Create a Setup Model From 16ed4ffa5b95934c5d3f8d7fb475ad9ce2f58d29 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 15:41:07 -0600 Subject: [PATCH 22/80] Update readme --- .../control-with-amdc/autogen/index.md | 77 ++++++++++++------- 1 file changed, 48 insertions(+), 29 deletions(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index f8647119..1602c5dd 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -35,16 +35,26 @@ my-AMDC-workspace/ <= master repo simulink/ <= Now create this folder ``` -### Create a Setup Model +### Create a Simulink Model -1. Save a new .m file as setup.m and define Ts = 1/(10e3), Tsim = Ts/10. -2. Open a blank model of Simulink. -3. Add a Step function with the default setting. -4. Add a Discrete-time integrator ($\frac{K T_{\mathrm{s}}}{z - 1}$) with the default setting. -5. Add a rate transition block before the integrator. In the rate transition, put $T_{\mathrm{s}}$ as a sampling time. -6. Add a rate transition block after the integrator. In the rate transition, set the sampling time to -1. -7. Add a continuous-time transfer function as a Plant (= 1). -8. Add a Sum function and connect each block as shown below. +1. In `simulink` folder, create a new MATLAB file (e.g., `setup.m`). +2. In `setup.m`, define `fs = 10e3`, `Ts = 1/fs`, `Tsim = Ts/10`. + +User can copy-paste the following MATLAB code: + +```MATLAB +fs = 10e3; % sampling frequency (Hz) +Ts = 1/fs; % sampling time (sec) +Tsim = Ts/10; % simulation time (s) +``` + +3. Open a blank model of Simulink. +4. Add a Step block with the default setting. +5. Add a Discrete-time integrator block with the default setting. +6. Add a rate transition block before the integrator. In the rate transition, put `Ts` as a sampling time. +7. Add a rate transition block after the integrator. In the rate transition, set the sampling time to `-1`. +8. Add a continuous-time transfer block as a Plant (= 1). +9. Add a Sum function and connect each block as shown below. ```{image} images/autogen-model.svg :alt: Autogen model @@ -54,15 +64,28 @@ my-AMDC-workspace/ <= master repo ### Model Setting -1. Press Model Settings and go to Solver. In the Solver Selection, press Fixed-step. Set Fixed-step size as Tsim. -2. In the Model Settings, go to Code Generation and click Browse for the System target file. Select ert.tlc Embedded coder. -3. In the Model Settings, go to Model Settings and click Code Generation. In the Build process section, check Generate code only. -4. In the Code Generation, go to Optimization and choose None for the Leverage target hardware instruction set extensions in the Target specific optimizations. -5. In the Code Generation, go to Templates and uncheck Generate an example main program in the Custom templates section. Then, click Apply and OK. - -### Create a Reference Model - -1. Select the discrete-time integrator, and right-click. Select Create Subsystem from Selection. +1. In `Modeling` tab, press `Model Settings` in `TOP MODEL` section. + - Under the `Solver`tree, in the `Solver Selection`, press `Fixed-step` + - Set `Fixed-step-size` as `Tsim`. +2. Go to `Code Generation`. + - Click `Browse` for the `System target file`. + - Select `ert.tlc Embedded coder`. + - In the `Build process` section, check `Generate code only`. +3. Go to `Optimization` under `Code Generation`. + - Choose `None` for the `Leverage target hardware instruction set extensions` in the `Target specific optimizations`. +4. Go to `Templates` under `Code Generation`. + - Uncheck `Generate an example main program` in the `Custom templates` section. +5. Click `Apply` and `OK`. + +### Create a Referenced Model + +1. Select the discrete-time integrator, and right-click. +2. Select `Create Subsystem from Selection`. +3. Right-click on the subsystem created. Select `Block parameters (Subsystem)`, check `Treat as atomic unit`, and click `OK`. +4. Right-click on the subsystem and select `Subsystem & Model Reference`. Select `Convert` and click `Referenced Model ...`. +5. In the `Input Parameters` section, define the `New model name` as `integrator`. +6. Click `Apply` and `Convert`. +7. Rename the referenced model block to be `integrator`. The expected Simulink model is shown below: ```{image} images/autogen-model-subsystem.svg :alt: Autogen model subsystem @@ -70,22 +93,18 @@ my-AMDC-workspace/ <= master repo :align: center ``` -2. Right-click on the subsystem. Select Block parameters (Subsystem), check 'Treat as atomic unit', and click OK. -3. Right-click on the subsystem and select Subsystem & Model Reference. Select Convert and click Reference Model. -4. In the Input Parameters section, define the New model name as integrator. -5. Click Apply and Convert -6. Rename the reference model to be integrator. +### Referenced Model Setting -### Reference Model Setting - -1. Double-click the integrator subsystem and click Model Settings. Click Model Settings in the Reference Model section. -2. Click Solver and in the Solver details, put Ts. +1. Double-click the `integrator` referenced model and click `Model Settings` under `Modeling` tab. +2. Click `Model Settings` in the `REFERENCED MODEL` section. + - Set `Fixed-step-size` as `Ts`. 3. Save the Simulink file. ### Generate C-code -1. Open the setup.m. -2. Copy and paste the following code. +1. Open the `setup.m`. +2. Copy and paste the following code. + ```MATLAB %% Autogen code for the controller model='integrator'; % name of the controller to be built From 2fa6045ec64aa2fbdc099a0b63e170011efc9d32 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 15:44:07 -0600 Subject: [PATCH 23/80] Update README --- source/getting-started/control-with-amdc/autogen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index 1602c5dd..7c1e6231 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -24,7 +24,7 @@ User needs to install at least the following dedicated MATLAB/Simulink toolboxes ### File Organization -This article assumes that the uses has completed this tutorial, where you set up your repository. To follow this Autogen tutorial, create a new `simulink` folder in your repository and organize the files as shown below: +This article assumes that the uses has completed the [Blink tutorial](../../tutorials/blink/index.md), where you set up your repository. To follow this Autogen tutorial, create a new `simulink` folder in your repository and organize the files as shown below: ```markdown my-AMDC-workspace/ <= master repo From 798529bb56ac24c42ad93b4dc0a2b29024344c2d Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 15:47:13 -0600 Subject: [PATCH 24/80] Update readme --- .../control-with-amdc/autogen/index.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index 7c1e6231..d5b65c05 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -49,12 +49,12 @@ Tsim = Ts/10; % simulation time (s) ``` 3. Open a blank model of Simulink. -4. Add a Step block with the default setting. -5. Add a Discrete-time integrator block with the default setting. -6. Add a rate transition block before the integrator. In the rate transition, put `Ts` as a sampling time. -7. Add a rate transition block after the integrator. In the rate transition, set the sampling time to `-1`. -8. Add a continuous-time transfer block as a Plant (= 1). -9. Add a Sum function and connect each block as shown below. +4. Add a `Step` block with the default setting. +5. Add a `Discrete-Time Integrator` block with the default setting. +6. Add a `Rate Transition` block before the integrator. In this block, put `Ts` as a sampling time. +7. Add a `Rate Transition` block after the integrator. In this block, set the sampling time to `-1`. +8. Add a continuous-time `Transfer Fcn` block as a Plant (= 1). +9. Add a `Sum` function and connect each block as shown below. ```{image} images/autogen-model.svg :alt: Autogen model From 213c3577c37791e2ef09284246bcd208abf81a19 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 15:49:31 -0600 Subject: [PATCH 25/80] Update indent --- .../control-with-amdc/autogen/index.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index d5b65c05..55b50c07 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -65,16 +65,16 @@ Tsim = Ts/10; % simulation time (s) ### Model Setting 1. In `Modeling` tab, press `Model Settings` in `TOP MODEL` section. - - Under the `Solver`tree, in the `Solver Selection`, press `Fixed-step` - - Set `Fixed-step-size` as `Tsim`. + 1. Under the `Solver`tree, in the `Solver Selection`, press `Fixed-step` + 2. Set `Fixed-step-size` as `Tsim`. 2. Go to `Code Generation`. - - Click `Browse` for the `System target file`. - - Select `ert.tlc Embedded coder`. - - In the `Build process` section, check `Generate code only`. + 1. Click `Browse` for the `System target file`. + 2. Select `ert.tlc Embedded coder`. + 3. In the `Build process` section, check `Generate code only`. 3. Go to `Optimization` under `Code Generation`. - - Choose `None` for the `Leverage target hardware instruction set extensions` in the `Target specific optimizations`. + 1. Choose `None` for the `Leverage target hardware instruction set extensions` in the `Target specific optimizations`. 4. Go to `Templates` under `Code Generation`. - - Uncheck `Generate an example main program` in the `Custom templates` section. + 1. Uncheck `Generate an example main program` in the `Custom templates` section. 5. Click `Apply` and `OK`. ### Create a Referenced Model @@ -97,7 +97,7 @@ Tsim = Ts/10; % simulation time (s) 1. Double-click the `integrator` referenced model and click `Model Settings` under `Modeling` tab. 2. Click `Model Settings` in the `REFERENCED MODEL` section. - - Set `Fixed-step-size` as `Ts`. + 1. Set `Fixed-step-size` as `Ts`. 3. Save the Simulink file. ### Generate C-code From 4afe97644eeb485f082c9e1a01edd5ceb9556dda Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 15:50:27 -0600 Subject: [PATCH 26/80] Add period --- source/getting-started/control-with-amdc/autogen/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index 55b50c07..5acb524e 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -65,10 +65,10 @@ Tsim = Ts/10; % simulation time (s) ### Model Setting 1. In `Modeling` tab, press `Model Settings` in `TOP MODEL` section. - 1. Under the `Solver`tree, in the `Solver Selection`, press `Fixed-step` + 1. Under the `Solver`tree, in the `Solver Selection`, press `Fixed-step`. 2. Set `Fixed-step-size` as `Tsim`. 2. Go to `Code Generation`. - 1. Click `Browse` for the `System target file`. + 1. Click `Browse` for the `System target file`. 2. Select `ert.tlc Embedded coder`. 3. In the `Build process` section, check `Generate code only`. 3. Go to `Optimization` under `Code Generation`. @@ -126,4 +126,4 @@ controller_4DOF_step(); ## Results -- After running the AMDC, show the input and output value through logging feature +- After running the AMDC, show the input and output value through logging feature. From a2e57245bc9c27ac27c858c67eca9315bcf3c74f Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 15:53:09 -0600 Subject: [PATCH 27/80] Update readme --- source/getting-started/control-with-amdc/autogen/index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index 5acb524e..77ddb0a4 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -48,7 +48,7 @@ Ts = 1/fs; % sampling time (sec) Tsim = Ts/10; % simulation time (s) ``` -3. Open a blank model of Simulink. +3. Open a blank model of Simulink, and save as `setupModel.slx` in `simulink` folder. 4. Add a `Step` block with the default setting. 5. Add a `Discrete-Time Integrator` block with the default setting. 6. Add a `Rate Transition` block before the integrator. In this block, put `Ts` as a sampling time. @@ -100,6 +100,8 @@ Tsim = Ts/10; % simulation time (s) 1. Set `Fixed-step-size` as `Ts`. 3. Save the Simulink file. +The example of Simulink file along with the referenced model is stored [here](./simulink/). + ### Generate C-code 1. Open the `setup.m`. From cd8ac9eb89aea833e628bbca26fb4eb9930d4231 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 15:55:46 -0600 Subject: [PATCH 28/80] Update readme --- source/getting-started/control-with-amdc/autogen/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index 77ddb0a4..82840547 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -118,6 +118,8 @@ command = 'for /r %i in (*.c, *.h) do copy /y %i ..\autogen'; cd(oldFolder); ``` +3. Run the `setup.m`, and Autogen code are created in `simulink/autogen` folder. + ### Integration with AMDC - Provide an example C-code to call the Autogen files within SDK, i.e., we need a following code: From 142ebd093416dafd27c24c7cfcdb66920dd0d8f5 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 16:07:35 -0600 Subject: [PATCH 29/80] Update REAMDE --- .../control-with-amdc/autogen/index.md | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index 82840547..ee4974fe 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -124,8 +124,43 @@ cd(oldFolder); - Provide an example C-code to call the Autogen files within SDK, i.e., we need a following code: +`task_controller.c`: + ```c -controller_4DOF_step(); +// ... + +int task_controller_clear(void) +{ + // ... + + // Clear state struct for Simulink controller + memset(((void *) &integrator_DW_DW), 0, sizeof(DW_integrator_T)); + + // ... +} + +int task_controller_init(void) +{ + // ... + + // Initialize autogen step + integrator_initialize(); + + // ... +} + +void task_controller_callback(void *arg) +{ + // ... + + // Update controller input parameters + integrator_U.STEP = STEP; + + // Call Autogen code + integrator_step(); + + // ... +} ``` ## Results From a6f53a99f1fef8922d3115e33b5e2868fe64a24b Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 16:10:47 -0600 Subject: [PATCH 30/80] Update article --- source/getting-started/control-with-amdc/autogen/index.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index ee4974fe..9b0a4bb0 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -122,7 +122,7 @@ cd(oldFolder); ### Integration with AMDC -- Provide an example C-code to call the Autogen files within SDK, i.e., we need a following code: +Now, the user needs to update the user C code to incorporate the Autogen code generated from Simulink. To do this, update `task_controller.c` as follows: `task_controller.c`: @@ -143,7 +143,7 @@ int task_controller_init(void) { // ... - // Initialize autogen step + // Initialize Autogen step integrator_initialize(); // ... @@ -165,4 +165,6 @@ void task_controller_callback(void *arg) ## Results +THIS SECTION WILL BE UPDATED! + - After running the AMDC, show the input and output value through logging feature. From f1a9485827c0d4a1d7f52afd9782a94531be99b5 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 26 Dec 2025 16:14:05 -0600 Subject: [PATCH 31/80] Remove not used picture --- .../control-with-amdc/autogen/images/check-atomic-unit.svg | 1 - .../control-with-amdc/autogen/images/custom-template-uncheck.svg | 1 - .../autogen/images/discrete-time-integrator.svg | 1 - .../control-with-amdc/autogen/images/generate-code-only.svg | 1 - .../control-with-amdc/autogen/images/rate-transition-back.svg | 1 - .../control-with-amdc/autogen/images/rate-transition-front.svg | 1 - .../control-with-amdc/autogen/images/reference-model-setting.svg | 1 - .../control-with-amdc/autogen/images/reference-model-solver.svg | 1 - .../control-with-amdc/autogen/images/rename-integrator.svg | 1 - .../control-with-amdc/autogen/images/set-none-optimization.svg | 1 - .../control-with-amdc/autogen/images/step-block.svg | 1 - .../control-with-amdc/autogen/images/step-setting.svg | 1 - .../control-with-amdc/autogen/images/system-target-file.svg | 1 - 13 files changed, 13 deletions(-) delete mode 100644 source/getting-started/control-with-amdc/autogen/images/check-atomic-unit.svg delete mode 100644 source/getting-started/control-with-amdc/autogen/images/custom-template-uncheck.svg delete mode 100644 source/getting-started/control-with-amdc/autogen/images/discrete-time-integrator.svg delete mode 100644 source/getting-started/control-with-amdc/autogen/images/generate-code-only.svg delete mode 100644 source/getting-started/control-with-amdc/autogen/images/rate-transition-back.svg delete mode 100644 source/getting-started/control-with-amdc/autogen/images/rate-transition-front.svg delete mode 100644 source/getting-started/control-with-amdc/autogen/images/reference-model-setting.svg delete mode 100644 source/getting-started/control-with-amdc/autogen/images/reference-model-solver.svg delete mode 100644 source/getting-started/control-with-amdc/autogen/images/rename-integrator.svg delete mode 100644 source/getting-started/control-with-amdc/autogen/images/set-none-optimization.svg delete mode 100644 source/getting-started/control-with-amdc/autogen/images/step-block.svg delete mode 100644 source/getting-started/control-with-amdc/autogen/images/step-setting.svg delete mode 100644 source/getting-started/control-with-amdc/autogen/images/system-target-file.svg diff --git a/source/getting-started/control-with-amdc/autogen/images/check-atomic-unit.svg b/source/getting-started/control-with-amdc/autogen/images/check-atomic-unit.svg deleted file mode 100644 index 451f9dde..00000000 --- a/source/getting-started/control-with-amdc/autogen/images/check-atomic-unit.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/custom-template-uncheck.svg b/source/getting-started/control-with-amdc/autogen/images/custom-template-uncheck.svg deleted file mode 100644 index e12a7585..00000000 --- a/source/getting-started/control-with-amdc/autogen/images/custom-template-uncheck.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/discrete-time-integrator.svg b/source/getting-started/control-with-amdc/autogen/images/discrete-time-integrator.svg deleted file mode 100644 index eca6bc1c..00000000 --- a/source/getting-started/control-with-amdc/autogen/images/discrete-time-integrator.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/generate-code-only.svg b/source/getting-started/control-with-amdc/autogen/images/generate-code-only.svg deleted file mode 100644 index 082c23a0..00000000 --- a/source/getting-started/control-with-amdc/autogen/images/generate-code-only.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/rate-transition-back.svg b/source/getting-started/control-with-amdc/autogen/images/rate-transition-back.svg deleted file mode 100644 index 2722a318..00000000 --- a/source/getting-started/control-with-amdc/autogen/images/rate-transition-back.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/rate-transition-front.svg b/source/getting-started/control-with-amdc/autogen/images/rate-transition-front.svg deleted file mode 100644 index a15ef559..00000000 --- a/source/getting-started/control-with-amdc/autogen/images/rate-transition-front.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/reference-model-setting.svg b/source/getting-started/control-with-amdc/autogen/images/reference-model-setting.svg deleted file mode 100644 index ee4d044f..00000000 --- a/source/getting-started/control-with-amdc/autogen/images/reference-model-setting.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/reference-model-solver.svg b/source/getting-started/control-with-amdc/autogen/images/reference-model-solver.svg deleted file mode 100644 index 058b3d2a..00000000 --- a/source/getting-started/control-with-amdc/autogen/images/reference-model-solver.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/rename-integrator.svg b/source/getting-started/control-with-amdc/autogen/images/rename-integrator.svg deleted file mode 100644 index f4442392..00000000 --- a/source/getting-started/control-with-amdc/autogen/images/rename-integrator.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/set-none-optimization.svg b/source/getting-started/control-with-amdc/autogen/images/set-none-optimization.svg deleted file mode 100644 index f5b987f8..00000000 --- a/source/getting-started/control-with-amdc/autogen/images/set-none-optimization.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/step-block.svg b/source/getting-started/control-with-amdc/autogen/images/step-block.svg deleted file mode 100644 index 8ac03e02..00000000 --- a/source/getting-started/control-with-amdc/autogen/images/step-block.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/step-setting.svg b/source/getting-started/control-with-amdc/autogen/images/step-setting.svg deleted file mode 100644 index b4c39bd5..00000000 --- a/source/getting-started/control-with-amdc/autogen/images/step-setting.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/autogen/images/system-target-file.svg b/source/getting-started/control-with-amdc/autogen/images/system-target-file.svg deleted file mode 100644 index 2070a2c9..00000000 --- a/source/getting-started/control-with-amdc/autogen/images/system-target-file.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file From 0a2d06cf49ea603857241818a976d5b099c03ddd Mon Sep 17 00:00:00 2001 From: "AD\\sung0058" Date: Thu, 19 Mar 2026 13:56:51 -0500 Subject: [PATCH 32/80] Add autogen for AMDC article in control with AMDC folder --- .../control-with-amdc/auto-gen/index.md | 262 +++++++++++ .../auto-gen/resources/autogenExample.svg | 424 ++++++++++++++++++ 2 files changed, 686 insertions(+) create mode 100644 source/getting-started/control-with-amdc/auto-gen/index.md create mode 100644 source/getting-started/control-with-amdc/auto-gen/resources/autogenExample.svg diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md new file mode 100644 index 00000000..aea2d67e --- /dev/null +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -0,0 +1,262 @@ +# Control with AMDC Using Simulink Autogen + +## Background + +Modern motor drive systems rely on real-time embedded controllers such as the AMDC to execute control algorithms. Traditionally, these control algorithms are implemented manually in C/C++, which can be time-consuming and error-prone—especially for complex systems. + +Simulink provides a graphical environment for modeling, simulating, and validating control systems. Using Simulink’s **Automatic Code Generation (Autogen)** capability, control algorithms designed in a block-diagram form can be directly converted into C code suitable for embedded deployment. + +This workflow offers several key advantages: + +- Rapid prototyping of control algorithms +- Built-in simulation and validation before deployment +- Reduced implementation errors compared to manual coding +- Clear visualization of control logic + +In this workflow, Simulink is used to design the controller, and the generated code is integrated into the AMDC firmware to execute in real time. + +--- + +## Autogen Control Workflow + +The overall workflow consists of three major steps: + +1. **Design controller in Simulink** +2. **Generate C code using Autogen** +3. **Integrate generated code into AMDC** + +### Simulink Model Structure + +To properly generate code for AMDC, the Simulink model should be organized into three subsystems: + +1. **Input/Output (I/O)** + Handles signal inputs, outputs, and visualization (e.g., scopes). + → *Not included in generated code* + +2. **Plant** + Represents the physical system (e.g., motor, load). + → *Used only for simulation* + +3. **Controller** + Contains the control logic to be deployed on AMDC + → *This is the only part converted into C code* + +``` +Simulink Model +├── I/O (simulation only) +├── Plant (simulation only) +└── Controller (code generated → AMDC) +``` + +The controller must be implemented using **discrete-time blocks**, since the AMDC operates in discrete time. + +--- + +## Generated Code and Execution Model + +After code generation, Simulink produces C code that represents the controller as a **black-box function**. + +### Key Characteristics + +- The controller is executed through a single function: + +```c +modelName_step(); +``` + +- Inputs and outputs are passed using structs: + +```c +modelName_U // Inputs +modelName_Y // Outputs +``` + +### Control Execution in AMDC + +The AMDC should call the generated controller at a fixed time interval: + +```c +void control_task_callback(void) +{ + // 1. Populate inputs (e.g., sensor readings) + modelName_U.current = measured_current; + modelName_U.voltage = measured_voltage; + + // 2. Run controller + modelName_step(); + + // 3. Use outputs (e.g., PWM duty cycles) + set_pwm_duty(modelName_Y.duty); +} +``` + +Key points: + +- AMDC follows: input → step → output +- Runs at a fixed timestep + +--- + +## Development Environment Setup + +To use Simulink Autogen with AMDC, the following environment is required: + +### Required Software + +- MATLAB (latest version recommended) +- Simulink +- Simulink Coder +- Embedded Coder + +Additional toolboxes may be required depending on the control design. + +--- + +### Required Simulink Configuration + +The following settings must be applied before generating code: + +1. **Solver Configuration** + - Set to **Fixed-step** + +2. **Code Generation Target** + - Set to `ert.tlc` (Embedded Coder target) + +3. **Controller Subsystem** + - Must be: + - Atomic subsystem + - Converted to **Referenced Model** + +--- + +### Code Generation + +Code is generated using: + +```matlab +slbuild('modelName') +``` + +After generation: + +- A folder `modelName_ert_rtw` is created +- Key files: + - `modelName.c` + - `modelName.h` + +--- + +### Important Notes + +- Only the controller is converted to code +- Generated code should be reviewed if necessary +- Do not delete any generated files +- Folder paths should not contain whitespace + +--- + +## Integration with AMDC + +To integrate the generated code into AMDC: + +### 1. Add Generated Code to Project + +- Include the autogen folder in: + - Include paths + - Source paths + +--- + +### 2. Create Control Task + +A dedicated control task should: + +- Initialize the controller: + +```c +modelName_initialize(); +``` + +- Execute periodically: + +```c +modelName_step(); +``` + +--- + +### 3. Data Flow Mapping + +The AMDC is responsible for: + +| Step | Description | +|------|------------| +| Input | Read sensor data and populate `modelName_U` | +| Execute | Call `modelName_step()` | +| Output | Route `modelName_Y` to actuators (e.g., PWM) | + +--- + +## Important Considerations + +### 1. Discrete-Time Design + +All controller blocks must operate in discrete time. + +### 2. Fixed Execution Rate + +The AMDC must call the controller at a consistent timestep. + +### 3. Separation of Concerns + +- Simulation (Plant, I/O) ≠ Embedded code (Controller) +- Only controller logic runs on hardware + +### 4. Code Structure Awareness + +- Controller is treated as a black box +- Only inputs/outputs are accessible + +### 5. Debugging Strategy + +- Validate behavior in Simulink first +- Then verify integration on AMDC + +--- + +## Example + +### Objective + +- Read analog input (0–9V) +- Convert to PWM duty (0–0.9) +- Apply saturation limits + +### Workflow + +1. Build controller in Simulink +2. Generate code using `slbuild` +3. Integrate into AMDC control task + +After generation, the following files are used: + +``` +exampleController.c +exampleController.h +``` + +These contain the full implementation of the controller logic. + +--- + +## Conclusion + +Using Simulink Autogen with the AMDC provides a powerful and efficient workflow for control development. + +Key benefits include: + +- Faster development cycles +- Improved reliability through simulation +- Simplified integration with embedded systems + +This approach allows developers to focus on control design while leveraging automatic tools for code generation and deployment. \ No newline at end of file diff --git a/source/getting-started/control-with-amdc/auto-gen/resources/autogenExample.svg b/source/getting-started/control-with-amdc/auto-gen/resources/autogenExample.svg new file mode 100644 index 00000000..769a9ce8 --- /dev/null +++ b/source/getting-started/control-with-amdc/auto-gen/resources/autogenExample.svg @@ -0,0 +1,424 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + AMDC + + + + + + + Controller(DSP) + PWM Peripheral + ADC Peripheral + AnalogInput + PWM Output + 0-9V + 0-0.9 Duty Cycle + + From 18ed30ff60d15692ea779a1cd5e05a06e426ee13 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Thu, 19 Mar 2026 15:19:29 -0500 Subject: [PATCH 33/80] Enhance clarity and structure of AMDC control documentation Refine the introduction and workflow sections for clarity and conciseness. Improve the structure and language for better readability. --- .../control-with-amdc/auto-gen/index.md | 257 ++++++------------ 1 file changed, 89 insertions(+), 168 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index aea2d67e..e3adfad9 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -2,261 +2,182 @@ ## Background -Modern motor drive systems rely on real-time embedded controllers such as the AMDC to execute control algorithms. Traditionally, these control algorithms are implemented manually in C/C++, which can be time-consuming and error-prone—especially for complex systems. +Modern motor drive systems rely on embedded controllers to execute control algorithms in real time. Traditionally, these algorithms are implemented manually in C/C++, which is time-consuming and prone to implementation errors, especially for complex control systems. -Simulink provides a graphical environment for modeling, simulating, and validating control systems. Using Simulink’s **Automatic Code Generation (Autogen)** capability, control algorithms designed in a block-diagram form can be directly converted into C code suitable for embedded deployment. +However, Simulink provides a MATLAB-based graphical environment for modeling and simulating control systems. It is extensively used to model, simulate, and analyze complex dynamical systems, including motor drives. The GUI and block diagram environment in Simulink make it user-friendly and easy to validate system performance and controller performance. -This workflow offers several key advantages: +The process of converting a user Simulink model for a controller to equivalent C-code for an embedded system (such as the AMDC) is called Automatic Code Generation (Autogen). By using Autogen capability, control algorithms developed in a block-diagram form can be automatically converted into C code for execution on embedded platforms. This enables developers to design, simulate, and validate control strategies before deploying them to hardware. As a result, it improves development efficiency, reduces implementation errors, and provides a more intuitive framework for control system design. -- Rapid prototyping of control algorithms -- Built-in simulation and validation before deployment -- Reduced implementation errors compared to manual coding -- Clear visualization of control logic -In this workflow, Simulink is used to design the controller, and the generated code is integrated into the AMDC firmware to execute in real time. +## Control Approach with Simulink and AMDC ---- +The Simulink + AMDC workflow separates control development into two domains: -## Autogen Control Workflow +- **Design domain (Simulink):** + The control algorithm is developed and validated using a graphical model. -The overall workflow consists of three major steps: +- **Execution domain (AMDC):** + The generated C code is executed in real time on the embedded controller. -1. **Design controller in Simulink** -2. **Generate C code using Autogen** -3. **Integrate generated code into AMDC** +In this workflow, the Simulink model represents the control logic, while the AMDC is responsible for executing this logic at a fixed time interval using real sensor data. -### Simulink Model Structure +The Simulink model is typically structured into three subsystems: -To properly generate code for AMDC, the Simulink model should be organized into three subsystems: +1. **Input/Output (I/O):** Used for simulation and visualization only +2. **Plant:** Represents the physical system (used for simulation) +3. **Controller:** Contains the control logic to be deployed -1. **Input/Output (I/O)** - Handles signal inputs, outputs, and visualization (e.g., scopes). - → *Not included in generated code* +Only the **controller subsystem** is converted into embedded C code. -2. **Plant** - Represents the physical system (e.g., motor, load). - → *Used only for simulation* - -3. **Controller** - Contains the control logic to be deployed on AMDC - → *This is the only part converted into C code* - -``` -Simulink Model -├── I/O (simulation only) -├── Plant (simulation only) -└── Controller (code generated → AMDC) -``` - -The controller must be implemented using **discrete-time blocks**, since the AMDC operates in discrete time. - ---- ## Generated Code and Execution Model -After code generation, Simulink produces C code that represents the controller as a **black-box function**. +Simulink Autogen produces C code that represents the controller as a callable function. This generated code should be treated as a **black-box implementation** of the Simulink controller. -### Key Characteristics - -- The controller is executed through a single function: +The generated code has the following structure: +- A function that executes the control algorithm: + ```c modelName_step(); ``` -- Inputs and outputs are passed using structs: +- Input and output data structures: ```c -modelName_U // Inputs -modelName_Y // Outputs +modelName_U // Inputs to controller +modelName_Y // Outputs from controller ``` -### Control Execution in AMDC +Within the AMDC, the control task is responsible for executing the controller at a fixed time interval. The execution sequence is: + +1. **Populate inputs** using sampled sensor data +2. **Call the controller step function** +3. **Route outputs** to actuators (e.g., PWM duty cycles) -The AMDC should call the generated controller at a fixed time interval: +A conceptual example is shown below: ```c void control_task_callback(void) { - // 1. Populate inputs (e.g., sensor readings) + // Populate inputs modelName_U.current = measured_current; modelName_U.voltage = measured_voltage; - // 2. Run controller + // Execute controller modelName_step(); - // 3. Use outputs (e.g., PWM duty cycles) + // Apply outputs set_pwm_duty(modelName_Y.duty); } ``` -Key points: - -- AMDC follows: input → step → output -- Runs at a fixed timestep - ---- - -## Development Environment Setup - -To use Simulink Autogen with AMDC, the following environment is required: - -### Required Software - -- MATLAB (latest version recommended) -- Simulink -- Simulink Coder -- Embedded Coder - -Additional toolboxes may be required depending on the control design. - ---- +This fixed-time execution model is fundamental to digital control implementation on the AMDC. -### Required Simulink Configuration -The following settings must be applied before generating code: +## Development Environment and Workflow -1. **Solver Configuration** - - Set to **Fixed-step** +To develop control code using Simulink Autogen, the following software components are required: -2. **Code Generation Target** - - Set to `ert.tlc` (Embedded Coder target) +- MATLAB +- Simulink +- Simulink Coder +- Embedded Coder -3. **Controller Subsystem** - - Must be: - - Atomic subsystem - - Converted to **Referenced Model** +Additional toolboxes may be required depending on the specific control design. ---- +### Recommended Workflow -### Code Generation +The recommended workflow for developing control code is: -Code is generated using: +1. Develop and validate the control algorithm in Simulink +2. Isolate the controller subsystem +3. Generate C code using Simulink Autogen +4. Integrate generated code into the AMDC project +5. Execute and validate on hardware -```matlab -slbuild('modelName') -``` - -After generation: - -- A folder `modelName_ert_rtw` is created -- Key files: - - `modelName.c` - - `modelName.h` - ---- - -### Important Notes - -- Only the controller is converted to code -- Generated code should be reviewed if necessary -- Do not delete any generated files -- Folder paths should not contain whitespace - ---- - -## Integration with AMDC +The generated code (typically located in a folder such as `modelName_ert_rtw`) should be added to the AMDC project as both: -To integrate the generated code into AMDC: +- Include path +- Source files -### 1. Add Generated Code to Project -- Include the autogen folder in: - - Include paths - - Source paths +## Important Considerations for Simulink Models ---- +For successful development and integration of control code, the following considerations must be observed: -### 2. Create Control Task +### 1. Discrete-Time Implementation -A dedicated control task should: +All blocks within the controller must be discrete-time, since the AMDC executes control logic at fixed sampling intervals. -- Initialize the controller: -```c -modelName_initialize(); -``` +### 2. Fixed-Step Solver -- Execute periodically: - -```c -modelName_step(); -``` +The Simulink model must use a fixed-step solver to ensure compatibility with real-time execution. ---- -### 3. Data Flow Mapping +### 3. Consistent Sample Time -The AMDC is responsible for: +The entire controller subsystem should operate at a single, well-defined sample time prior to: -| Step | Description | -|------|------------| -| Input | Read sensor data and populate `modelName_U` | -| Execute | Call `modelName_step()` | -| Output | Route `modelName_Y` to actuators (e.g., PWM) | +- Converting to an atomic subsystem +- Creating a referenced model ---- -## Important Considerations +### 4. Code Generation Settings -### 1. Discrete-Time Design +- The code generation target should be set to **Embedded Coder (`ert.tlc`)** +- The build configuration should enable **"Generate Code Only"** -All controller blocks must operate in discrete time. -### 2. Fixed Execution Rate +### 5. Referenced Model Usage -The AMDC must call the controller at a consistent timestep. +The controller subsystem should be: -### 3. Separation of Concerns +- Converted to an **atomic subsystem** +- Then converted to a **referenced model** -- Simulation (Plant, I/O) ≠ Embedded code (Controller) -- Only controller logic runs on hardware +Any updates to model settings should be performed after opening the referenced model as the top model. -### 4. Code Structure Awareness -- Controller is treated as a black box -- Only inputs/outputs are accessible +### 6. AMDC Integration Details -### 5. Debugging Strategy +- All generated source files should be included in the project +- The autogenerated folder must be added to compiler include paths +- The file `ert_main.c` should be excluded from the build -- Validate behavior in Simulink first -- Then verify integration on AMDC ---- +### 7. File and Path Constraints -## Example +- File paths must not contain whitespace +- Generated files should not be modified unless necessary -### Objective -- Read analog input (0–9V) -- Convert to PWM duty (0–0.9) -- Apply saturation limits +## Example Model -### Workflow +An example Simulink model is provided to demonstrate this workflow. The model includes: -1. Build controller in Simulink -2. Generate code using `slbuild` -3. Integrate into AMDC control task +- A fully configured controller subsystem +- Proper solver and code generation settings +- A referenced model ready for code generation -After generation, the following files are used: +The example can be used directly to: -``` -exampleController.c -exampleController.h -``` +1. Generate code using Simulink Autogen +2. Integrate the generated files into an AMDC project +3. Execute the control loop on hardware -These contain the full implementation of the controller logic. +This example serves as a reference implementation for developing custom control algorithms using the Simulink + AMDC workflow. ---- ## Conclusion -Using Simulink Autogen with the AMDC provides a powerful and efficient workflow for control development. +The Simulink Autogen workflow provides a structured and efficient approach for implementing control algorithms on the AMDC. -Key benefits include: +By separating control design from embedded implementation, this approach enables: -- Faster development cycles +- Rapid development and iteration - Improved reliability through simulation -- Simplified integration with embedded systems +- Clear mapping between design and execution -This approach allows developers to focus on control design while leveraging automatic tools for code generation and deployment. \ No newline at end of file +This methodology is recommended for developing advanced control systems on the AMDC platform. From a51478430b28dbd7690769623bd3813b31e12f98 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Thu, 19 Mar 2026 16:10:33 -0500 Subject: [PATCH 34/80] Revise documentation for Simulink and AMDC integration Updated the documentation to clarify the workflow and integration details for Simulink models with AMDC, including code generation and organization. --- .../control-with-amdc/auto-gen/index.md | 83 +++++++++---------- 1 file changed, 38 insertions(+), 45 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index e3adfad9..240fdb5f 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -19,9 +19,7 @@ The Simulink + AMDC workflow separates control development into two domains: - **Execution domain (AMDC):** The generated C code is executed in real time on the embedded controller. -In this workflow, the Simulink model represents the control logic, while the AMDC is responsible for executing this logic at a fixed time interval using real sensor data. - -The Simulink model is typically structured into three subsystems: +In this workflow, the Simulink model represents the control logic, while the AMDC is responsible for executing this logic at a fixed time interval using real sensor data. The Simulink model is typically structured into three subsystems: 1. **Input/Output (I/O):** Used for simulation and visualization only 2. **Plant:** Represents the physical system (used for simulation) @@ -32,9 +30,7 @@ Only the **controller subsystem** is converted into embedded C code. ## Generated Code and Execution Model -Simulink Autogen produces C code that represents the controller as a callable function. This generated code should be treated as a **black-box implementation** of the Simulink controller. - -The generated code has the following structure: +Simulink Autogen produces C code that represents the controller as a callable function. This generated code should be treated as a black-box implementation of the Simulink controller. The generated code has the following structure: - A function that executes the control algorithm: @@ -96,61 +92,58 @@ The recommended workflow for developing control code is: 4. Integrate generated code into the AMDC project 5. Execute and validate on hardware -The generated code (typically located in a folder such as `modelName_ert_rtw`) should be added to the AMDC project as both: - -- Include path -- Source files - - -## Important Considerations for Simulink Models - -For successful development and integration of control code, the following considerations must be observed: - -### 1. Discrete-Time Implementation - -All blocks within the controller must be discrete-time, since the AMDC executes control logic at fixed sampling intervals. +### Repository Organization and Integration -### 2. Fixed-Step Solver - -The Simulink model must use a fixed-step solver to ensure compatibility with real-time execution. - - -### 3. Consistent Sample Time - -The entire controller subsystem should operate at a single, well-defined sample time prior to: - -- Converting to an atomic subsystem -- Creating a referenced model +After code generation, Simulink creates a folder (typically named `modelName_ert_rtw`) that contains all generated source and header files. This folder must be incorporated into the AMDC project. A recommended approach is to place the generated folder within the application directory in the AMDC repository. For example: +``` +apps/ +└── my_app/ + ├── src/ + ├── include/ + └── autogen/ + └── modelName_ert_rtw/ +``` -### 4. Code Generation Settings +In this structure: -- The code generation target should be set to **Embedded Coder (`ert.tlc`)** -- The build configuration should enable **"Generate Code Only"** +- The `modelName_ert_rtw` folder contains all autogenerated `.c` and `.h` files +- The folder is kept separate from hand-written code for clarity and maintainability +The autogenerated code should then be integrated into the AMDC project as follows: -### 5. Referenced Model Usage +- Add the `modelName_ert_rtw` directory to the compiler **include paths** +- Add all generated `.c` files to the project **source files** -The controller subsystem should be: +Once added, the autogen folder should appear as part of the project within the SDK environment. -- Converted to an **atomic subsystem** -- Then converted to a **referenced model** -Any updates to model settings should be performed after opening the referenced model as the top model. +### Integration Notes +- Do not delete any generated files, as some auxiliary files may be required during compilation. +- Generated source (`*.c`) and header (`*.h`) files must be included in the AMDC project. +- The path to the folder containing the MATLAB script and the Simulink model should not contain any whitespace. If the folder or any parent directory contains whitespace in its name, the code generation process may result in a build error -### 6. AMDC Integration Details +This organization ensures that the autogenerated controller code is correctly compiled and integrated within the AMDC firmware. -- All generated source files should be included in the project -- The autogenerated folder must be added to compiler include paths -- The file `ert_main.c` should be excluded from the build +## Important Considerations for Simulink Models -### 7. File and Path Constraints +For successful development and integration of control code, the following considerations must be observed: -- File paths must not contain whitespace -- Generated files should not be modified unless necessary +1. **Discrete-Time Implementation**: All blocks within the controller must be discrete-time, since the AMDC executes control logic at fixed sampling intervals. +2. **Fixed-Step Solver**: The Simulink model must use a fixed-step solver to ensure compatibility with real-time execution. +3. **Consistent Sample Time**: The entire controller subsystem should operate at a single, well-defined sample time prior to converting to an atomic subsystem and creating a referenced model. +4. **Code Generation Settings**: The code generation target should be set to **Embedded Coder (`ert.tlc`)** . The build configuration should enable **"Generate Code Only"** +5. **Referenced Model Usage**: The controller subsystem should be converted to an **atomic subsystem**, then converted to a **referenced model**. Any updates to model settings should be performed after opening the referenced model as the top model. +6. **AMDC Integration Details** + + - All generated source files should be included in the project + - The autogenerated folder must be added to compiler include paths + - The file `ert_main.c` should be excluded from the build + +7. **File and Path Constraints**: File paths must not contain whitespace, and generated files should not be modified unless necessary ## Example Model From 413ce16b5fce7ef582d248fde700941791b15569 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Thu, 19 Mar 2026 16:16:18 -0500 Subject: [PATCH 35/80] Expand documentation on Simulink Autogen workflow This update enhances the documentation by providing a detailed explanation of the Simulink Autogen workflow and its integration with the AMDC. It includes sections on the example model, system-level representation, generated code structure, and the role of the example as a reference implementation. --- .../control-with-amdc/auto-gen/index.md | 80 ++++++++++++++++--- 1 file changed, 71 insertions(+), 9 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index 240fdb5f..0ad7d425 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -148,19 +148,81 @@ For successful development and integration of control code, the following consid ## Example Model -An example Simulink model is provided to demonstrate this workflow. The model includes: +A simple example is provided to demonstrate the Simulink Autogen workflow and its integration with the AMDC. This example illustrates how a control algorithm developed in Simulink is translated into embedded code and executed within the AMDC control framework. -- A fully configured controller subsystem -- Proper solver and code generation settings -- A referenced model ready for code generation +### Example Objective -The example can be used directly to: +The example implements a simple control function with the following behavior: -1. Generate code using Simulink Autogen -2. Integrate the generated files into an AMDC project -3. Execute the control loop on hardware +1. Read an analog input in the range of **0–9 V** +2. Map the input to a PWM duty ratio in the range of **0–0.9** +3. Apply saturation limits: + - Output is limited to **0.9** if the input exceeds 9 V + - Output is limited to **0** if the input is below 0 V -This example serves as a reference implementation for developing custom control algorithms using the Simulink + AMDC workflow. +--- + +### System-Level Representation + +The functional behavior of this example can be understood using the following system diagram: + +![Autogen Example Block Diagram](./resources/autogenExample.svg) + +In this structure: + +- The **ADC peripheral** samples the analog input +- The **controller (generated from Simulink)** computes the control output +- The **PWM peripheral** applies the resulting duty ratio + +This reflects the execution model described earlier, where the AMDC samples inputs, executes the controller, and applies outputs at a fixed time interval. + +--- + +### Simulink Model + +The complete Simulink model used in this example is provided below: + +- Simulink model: [`autogenExample.slx`](./resources/autogenExample.slx) +- Initialization script: [`autogenExampleInit.m`](./resources/autogenExampleInit.m) + +The Simulink model follows the recommended structure: + +- A **controller subsystem** containing the control logic +- The controller is configured as a **referenced model** for code generation +- Proper solver and code generation settings are already applied + +Within the model, the block `exampleController` represents the controller subsystem that is converted into C code using Simulink Autogen. + +--- + +### Generated Code Structure + +After running the initialization script (`autogenExampleInit.m`), Simulink generates code for the controller subsystem. + +This results in a folder: + +``` +exampleController_ert_rtw/ +``` + +This folder contains multiple generated files. The most relevant files are: + +- `exampleController.c` — implementation of the control logic +- `exampleController.h` — interface definitions (inputs, outputs, function declarations) + +These files define the controller as a callable function with input and output structures, consistent with the execution model described earlier. + +--- + +### Role of the Example + +This example serves as a reference implementation for the Simulink + AMDC workflow. It demonstrates: + +- How control logic is expressed in Simulink +- How this logic is converted into embedded C code +- How the generated controller integrates into the AMDC execution framework + +Users can use this example as a starting point for developing more advanced control algorithms by modifying the controller subsystem in the provided Simulink model. ## Conclusion From 9a8d0501d8b0856973a348b6921b2ba20f06ed21 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Thu, 19 Mar 2026 16:35:33 -0500 Subject: [PATCH 36/80] Clarify example model and Simulink integration details Revised the example model section to clarify the Simulink Autogen workflow and its integration with the AMDC. Updated descriptions for the Simulink model structure and generated code structure. --- .../control-with-amdc/auto-gen/index.md | 43 ++----------------- 1 file changed, 3 insertions(+), 40 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index 0ad7d425..194b3da5 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -148,11 +148,7 @@ For successful development and integration of control code, the following consid ## Example Model -A simple example is provided to demonstrate the Simulink Autogen workflow and its integration with the AMDC. This example illustrates how a control algorithm developed in Simulink is translated into embedded code and executed within the AMDC control framework. - -### Example Objective - -The example implements a simple control function with the following behavior: +A simple example is provided to illustrate the Simulink Autogen workflow and its integration with the AMDC. This example serves as a reference for how a Simulink-based controller is translated into embedded code and executed within the AMDC framework. The example implements a simple control function with the following behavior: 1. Read an analog input in the range of **0–9 V** 2. Map the input to a PWM duty ratio in the range of **0–0.9** @@ -160,10 +156,6 @@ The example implements a simple control function with the following behavior: - Output is limited to **0.9** if the input exceeds 9 V - Output is limited to **0** if the input is below 0 V ---- - -### System-Level Representation - The functional behavior of this example can be understood using the following system diagram: ![Autogen Example Block Diagram](./resources/autogenExample.svg) @@ -176,8 +168,6 @@ In this structure: This reflects the execution model described earlier, where the AMDC samples inputs, executes the controller, and applies outputs at a fixed time interval. ---- - ### Simulink Model The complete Simulink model used in this example is provided below: @@ -185,45 +175,18 @@ The complete Simulink model used in this example is provided below: - Simulink model: [`autogenExample.slx`](./resources/autogenExample.slx) - Initialization script: [`autogenExampleInit.m`](./resources/autogenExampleInit.m) -The Simulink model follows the recommended structure: +The Simulink model follows the recommended structure, with the controller implemented as a referenced model and appropriate solver and code generation settings already configured. Within the model, the block `exampleController` represents the controller subsystem that is converted into C code using Simulink Autogen, which can be done by running the script `autogenExampleInit.m`. -- A **controller subsystem** containing the control logic -- The controller is configured as a **referenced model** for code generation -- Proper solver and code generation settings are already applied - -Within the model, the block `exampleController` represents the controller subsystem that is converted into C code using Simulink Autogen. - ---- ### Generated Code Structure -After running the initialization script (`autogenExampleInit.m`), Simulink generates code for the controller subsystem. - -This results in a folder: - -``` -exampleController_ert_rtw/ -``` - -This folder contains multiple generated files. The most relevant files are: +After running the initialization script (`autogenExampleInit.m`), Simulink generates code for the controller subsystem, resulting in a folder named `exampleController_ert_rtw`. Among the generated files, the most relevant are: - `exampleController.c` — implementation of the control logic - `exampleController.h` — interface definitions (inputs, outputs, function declarations) These files define the controller as a callable function with input and output structures, consistent with the execution model described earlier. ---- - -### Role of the Example - -This example serves as a reference implementation for the Simulink + AMDC workflow. It demonstrates: - -- How control logic is expressed in Simulink -- How this logic is converted into embedded C code -- How the generated controller integrates into the AMDC execution framework - -Users can use this example as a starting point for developing more advanced control algorithms by modifying the controller subsystem in the provided Simulink model. - ## Conclusion From dbcb2e8e7e9c577cae8966e2c2e1a49f7a80e90b Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Thu, 19 Mar 2026 16:39:07 -0500 Subject: [PATCH 37/80] Update AMDC integration details in index.md --- source/getting-started/control-with-amdc/auto-gen/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index 194b3da5..d97aed24 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -140,8 +140,7 @@ For successful development and integration of control code, the following consid 6. **AMDC Integration Details** - All generated source files should be included in the project - - The autogenerated folder must be added to compiler include paths - - The file `ert_main.c` should be excluded from the build + - The autogenerated folder must be added to the compiler include paths 7. **File and Path Constraints**: File paths must not contain whitespace, and generated files should not be modified unless necessary From 2d49b3e9774678662fa18d0c93a0f6f85d0b7615 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Thu, 19 Mar 2026 16:45:13 -0500 Subject: [PATCH 38/80] Update index.md for Autogen and path constraints Clarified the Autogen capability description and added details about file path constraints. --- source/getting-started/control-with-amdc/auto-gen/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index d97aed24..c1624a3a 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -6,7 +6,7 @@ Modern motor drive systems rely on embedded controllers to execute control algor However, Simulink provides a MATLAB-based graphical environment for modeling and simulating control systems. It is extensively used to model, simulate, and analyze complex dynamical systems, including motor drives. The GUI and block diagram environment in Simulink make it user-friendly and easy to validate system performance and controller performance. -The process of converting a user Simulink model for a controller to equivalent C-code for an embedded system (such as the AMDC) is called Automatic Code Generation (Autogen). By using Autogen capability, control algorithms developed in a block-diagram form can be automatically converted into C code for execution on embedded platforms. This enables developers to design, simulate, and validate control strategies before deploying them to hardware. As a result, it improves development efficiency, reduces implementation errors, and provides a more intuitive framework for control system design. +The process of converting a user Simulink model for a controller to equivalent C-code for an embedded system (such as the AMDC) is called Automatic Code Generation (Autogen). By using the Autogen capability, control algorithms developed in a block-diagram form can be automatically converted into C code for execution on embedded platforms. This enables developers to design, simulate, and validate control strategies before deploying them to hardware. As a result, it improves development efficiency, reduces implementation errors, and provides a more intuitive framework for control system design. ## Control Approach with Simulink and AMDC @@ -134,7 +134,7 @@ For successful development and integration of control code, the following consid 1. **Discrete-Time Implementation**: All blocks within the controller must be discrete-time, since the AMDC executes control logic at fixed sampling intervals. 2. **Fixed-Step Solver**: The Simulink model must use a fixed-step solver to ensure compatibility with real-time execution. -3. **Consistent Sample Time**: The entire controller subsystem should operate at a single, well-defined sample time prior to converting to an atomic subsystem and creating a referenced model. +3. **Consistent Sample Time**: The entire controller subsystem should operate at a single, well-defined sample time before converting to an atomic subsystem and creating a referenced model. 4. **Code Generation Settings**: The code generation target should be set to **Embedded Coder (`ert.tlc`)** . The build configuration should enable **"Generate Code Only"** 5. **Referenced Model Usage**: The controller subsystem should be converted to an **atomic subsystem**, then converted to a **referenced model**. Any updates to model settings should be performed after opening the referenced model as the top model. 6. **AMDC Integration Details** @@ -142,7 +142,7 @@ For successful development and integration of control code, the following consid - All generated source files should be included in the project - The autogenerated folder must be added to the compiler include paths -7. **File and Path Constraints**: File paths must not contain whitespace, and generated files should not be modified unless necessary +7. **File and Path Constraints**: File paths must not contain whitespace. If the folder or any top-level folder has white spaces in the name, it will result in a build error. ## Example Model From d0cfc3a878a6a9d0af98cab73c3d031656bd5d4a Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Thu, 19 Mar 2026 16:47:50 -0500 Subject: [PATCH 39/80] Fix minor grammatical issues in index.md --- source/getting-started/control-with-amdc/auto-gen/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index c1624a3a..9bfcbc72 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -125,7 +125,7 @@ Once added, the autogen folder should appear as part of the project within the S - Generated source (`*.c`) and header (`*.h`) files must be included in the AMDC project. - The path to the folder containing the MATLAB script and the Simulink model should not contain any whitespace. If the folder or any parent directory contains whitespace in its name, the code generation process may result in a build error -This organization ensures that the autogenerated controller code is correctly compiled and integrated within the AMDC firmware. +This organization ensures that the autogenerated controller code is correctly compiled and integrated into the AMDC firmware. ## Important Considerations for Simulink Models @@ -135,7 +135,7 @@ For successful development and integration of control code, the following consid 1. **Discrete-Time Implementation**: All blocks within the controller must be discrete-time, since the AMDC executes control logic at fixed sampling intervals. 2. **Fixed-Step Solver**: The Simulink model must use a fixed-step solver to ensure compatibility with real-time execution. 3. **Consistent Sample Time**: The entire controller subsystem should operate at a single, well-defined sample time before converting to an atomic subsystem and creating a referenced model. -4. **Code Generation Settings**: The code generation target should be set to **Embedded Coder (`ert.tlc`)** . The build configuration should enable **"Generate Code Only"** +4. **Code Generation Settings**: The code generation target should be set to **Embedded Coder (`ert.tlc`)**. The build configuration should enable **"Generate Code Only"**. 5. **Referenced Model Usage**: The controller subsystem should be converted to an **atomic subsystem**, then converted to a **referenced model**. Any updates to model settings should be performed after opening the referenced model as the top model. 6. **AMDC Integration Details** @@ -174,7 +174,7 @@ The complete Simulink model used in this example is provided below: - Simulink model: [`autogenExample.slx`](./resources/autogenExample.slx) - Initialization script: [`autogenExampleInit.m`](./resources/autogenExampleInit.m) -The Simulink model follows the recommended structure, with the controller implemented as a referenced model and appropriate solver and code generation settings already configured. Within the model, the block `exampleController` represents the controller subsystem that is converted into C code using Simulink Autogen, which can be done by running the script `autogenExampleInit.m`. +The Simulink model follows the recommended structure, with the controller implemented as a referenced model and appropriate solver and code generation settings already configured. Within the model, the block `exampleController` represents the controller subsystem that is converted into C code using Simulink Autogen, by running the script `autogenExampleInit.m`. ### Generated Code Structure From 2622d53ea4039b8a30397ff074e206c91d6cca4d Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Thu, 19 Mar 2026 16:50:37 -0500 Subject: [PATCH 40/80] Fix formatting and punctuation in index.md --- .../control-with-amdc/auto-gen/index.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index 9bfcbc72..09e90932 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -47,9 +47,9 @@ modelName_Y // Outputs from controller Within the AMDC, the control task is responsible for executing the controller at a fixed time interval. The execution sequence is: -1. **Populate inputs** using sampled sensor data -2. **Call the controller step function** -3. **Route outputs** to actuators (e.g., PWM duty cycles) +1. Populate inputs using sampled sensor data +2. Call the controller step function +3. Route outputs to actuators (e.g., PWM duty cycles) A conceptual example is shown below: @@ -108,13 +108,13 @@ apps/ In this structure: -- The `modelName_ert_rtw` folder contains all autogenerated `.c` and `.h` files -- The folder is kept separate from hand-written code for clarity and maintainability +- The `modelName_ert_rtw` folder contains all autogenerated `.c` and `.h` files. +- The folder is kept separate from hand-written code for clarity and maintainability. The autogenerated code should then be integrated into the AMDC project as follows: -- Add the `modelName_ert_rtw` directory to the compiler **include paths** -- Add all generated `.c` files to the project **source files** +- Add the `modelName_ert_rtw` directory to the compiler include paths. +- Add all generated `.c` files to the project source files. Once added, the autogen folder should appear as part of the project within the SDK environment. @@ -135,12 +135,12 @@ For successful development and integration of control code, the following consid 1. **Discrete-Time Implementation**: All blocks within the controller must be discrete-time, since the AMDC executes control logic at fixed sampling intervals. 2. **Fixed-Step Solver**: The Simulink model must use a fixed-step solver to ensure compatibility with real-time execution. 3. **Consistent Sample Time**: The entire controller subsystem should operate at a single, well-defined sample time before converting to an atomic subsystem and creating a referenced model. -4. **Code Generation Settings**: The code generation target should be set to **Embedded Coder (`ert.tlc`)**. The build configuration should enable **"Generate Code Only"**. -5. **Referenced Model Usage**: The controller subsystem should be converted to an **atomic subsystem**, then converted to a **referenced model**. Any updates to model settings should be performed after opening the referenced model as the top model. +4. **Code Generation Settings**: The code generation target should be set to Embedded Coder (`ert.tlc`). The build configuration should enable "Generate Code Only". +5. **Referenced Model Usage**: The controller subsystem should be converted to an atomic subsystem, then converted to a referenced model. Any updates to model settings should be performed after opening the referenced model as the top model. 6. **AMDC Integration Details** - - All generated source files should be included in the project - - The autogenerated folder must be added to the compiler include paths + - All generated source files should be included in the project. + - The autogenerated folder must be added to the compiler include paths. 7. **File and Path Constraints**: File paths must not contain whitespace. If the folder or any top-level folder has white spaces in the name, it will result in a build error. @@ -149,11 +149,11 @@ For successful development and integration of control code, the following consid A simple example is provided to illustrate the Simulink Autogen workflow and its integration with the AMDC. This example serves as a reference for how a Simulink-based controller is translated into embedded code and executed within the AMDC framework. The example implements a simple control function with the following behavior: -1. Read an analog input in the range of **0–9 V** -2. Map the input to a PWM duty ratio in the range of **0–0.9** +1. Read an analog input in the range of 0–9 V. +2. Map the input to a PWM duty ratio in the range of 0–0.9. 3. Apply saturation limits: - - Output is limited to **0.9** if the input exceeds 9 V - - Output is limited to **0** if the input is below 0 V + - Output is limited to 0.9 if the input exceeds 9 V. + - Output is limited to 0 if the input is below 0 V. The functional behavior of this example can be understood using the following system diagram: @@ -161,9 +161,9 @@ The functional behavior of this example can be understood using the following sy In this structure: -- The **ADC peripheral** samples the analog input -- The **controller (generated from Simulink)** computes the control output -- The **PWM peripheral** applies the resulting duty ratio +- The ADC peripheral samples the analog input. +- The controller (generated from Simulink) computes the control output. +- The PWM peripheral applies the resulting duty ratio. This reflects the execution model described earlier, where the AMDC samples inputs, executes the controller, and applies outputs at a fixed time interval. From a311d0a1b1227ca64752521cda71127a5100ee56 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Thu, 19 Mar 2026 16:54:32 -0500 Subject: [PATCH 41/80] Change image format for autogen example diagram Updated image syntax for autogen example block diagram. --- source/getting-started/control-with-amdc/auto-gen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index 09e90932..448848ae 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -157,7 +157,7 @@ A simple example is provided to illustrate the Simulink Autogen workflow and its The functional behavior of this example can be understood using the following system diagram: -![Autogen Example Block Diagram](./resources/autogenExample.svg) + In this structure: From 92bc771565d504e9774fd10980b4b0ad2744503c Mon Sep 17 00:00:00 2001 From: "AD\\sung0058" Date: Thu, 19 Mar 2026 16:58:53 -0500 Subject: [PATCH 42/80] Add the example code and simulink file --- .../auto-gen/resources/autogenExample.slx | Bin 0 -> 29430 bytes .../auto-gen/resources/autogenExampleInit.m | 17 +++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 source/getting-started/control-with-amdc/auto-gen/resources/autogenExample.slx create mode 100644 source/getting-started/control-with-amdc/auto-gen/resources/autogenExampleInit.m diff --git a/source/getting-started/control-with-amdc/auto-gen/resources/autogenExample.slx b/source/getting-started/control-with-amdc/auto-gen/resources/autogenExample.slx new file mode 100644 index 0000000000000000000000000000000000000000..c78c89f9334606ee8ebb5ee3aab93ed9b754257a GIT binary patch literal 29430 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 literal 0 HcmV?d00001 diff --git a/source/getting-started/control-with-amdc/auto-gen/resources/autogenExampleInit.m b/source/getting-started/control-with-amdc/auto-gen/resources/autogenExampleInit.m new file mode 100644 index 00000000..7bab4676 --- /dev/null +++ b/source/getting-started/control-with-amdc/auto-gen/resources/autogenExampleInit.m @@ -0,0 +1,17 @@ +clear all; +close all; +clc; + +%% Simulink model properties for an example case +V_i = 3; % This is a voltage at analog input +V_g = 1/10; % This is the gain to scale the analog input by and set PWM duty ratio +V_hi = 0.9; % Upper limit of PWM duty cycle +V_low = 0; % Lower limit of PWM duty cycle + +%% Simulation time +T_end = 10; % Simulation end time +T_step = 1e-6; % Simulation time step + +%% Autogen code for the controller +model='exampleController'; % Name of the controller to be built +slbuild(model); % Generates the autogen code From ae76806559da56cdeb92bf553a3fd643b69ef720 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Thu, 19 Mar 2026 16:59:43 -0500 Subject: [PATCH 43/80] Refine conclusion in index.md Removed redundant lines in the conclusion section. --- source/getting-started/control-with-amdc/auto-gen/index.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index 448848ae..83a7e656 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -189,9 +189,7 @@ These files define the controller as a callable function with input and output s ## Conclusion -The Simulink Autogen workflow provides a structured and efficient approach for implementing control algorithms on the AMDC. - -By separating control design from embedded implementation, this approach enables: +The Simulink Autogen workflow provides a structured and efficient approach for implementing control algorithms on the AMDC. By separating control design from embedded implementation, this approach enables: - Rapid development and iteration - Improved reliability through simulation From eadd04ce79a3c5006de01c953a73580aa6ad0b3c Mon Sep 17 00:00:00 2001 From: "AD\\sung0058" Date: Thu, 19 Mar 2026 17:04:22 -0500 Subject: [PATCH 44/80] Change the name of the file --- .../resources/{autogenExample.svg => autogen-example.svg} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename source/getting-started/control-with-amdc/auto-gen/resources/{autogenExample.svg => autogen-example.svg} (100%) diff --git a/source/getting-started/control-with-amdc/auto-gen/resources/autogenExample.svg b/source/getting-started/control-with-amdc/auto-gen/resources/autogen-example.svg similarity index 100% rename from source/getting-started/control-with-amdc/auto-gen/resources/autogenExample.svg rename to source/getting-started/control-with-amdc/auto-gen/resources/autogen-example.svg From 3e16a9c55debeb1059d37a7c309dd2adab4c71e3 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Thu, 19 Mar 2026 17:04:44 -0500 Subject: [PATCH 45/80] Fix image reference in auto-gen documentation --- source/getting-started/control-with-amdc/auto-gen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index 83a7e656..80227415 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -157,7 +157,7 @@ A simple example is provided to illustrate the Simulink Autogen workflow and its The functional behavior of this example can be understood using the following system diagram: - + In this structure: From 9b069f23369a4fbbc0e63de290435a59420649f0 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Fri, 20 Mar 2026 15:50:01 -0500 Subject: [PATCH 46/80] Refine documentation on Simulink Autogen code structure Clarified the structure of generated code and execution model for Simulink Autogen. Removed redundant information and improved readability. --- .../control-with-amdc/auto-gen/index.md | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index 80227415..c7eecced 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -30,28 +30,13 @@ Only the **controller subsystem** is converted into embedded C code. ## Generated Code and Execution Model -Simulink Autogen produces C code that represents the controller as a callable function. This generated code should be treated as a black-box implementation of the Simulink controller. The generated code has the following structure: - -- A function that executes the control algorithm: - -```c -modelName_step(); -``` - -- Input and output data structures: - -```c -modelName_U // Inputs to controller -modelName_Y // Outputs from controller -``` - -Within the AMDC, the control task is responsible for executing the controller at a fixed time interval. The execution sequence is: +Simulink Autogen produces C code that represents the controller as a callable function. This generated code should be treated as a black-box implementation of the Simulink controller. Within the AMDC, the control task is responsible for executing the controller at a fixed time interval. This fixed-time execution model is fundamental to digital control implementation on the AMDC. The execution sequence is: 1. Populate inputs using sampled sensor data 2. Call the controller step function 3. Route outputs to actuators (e.g., PWM duty cycles) -A conceptual example is shown below: +The generated code has the following structure: ```c void control_task_callback(void) @@ -68,8 +53,18 @@ void control_task_callback(void) } ``` -This fixed-time execution model is fundamental to digital control implementation on the AMDC. +- A function that executes the control algorithm: + +```c +modelName_step(); +``` + +- Input and output data structures: +```c +modelName_U // Inputs to controller +modelName_Y // Outputs from controller +``` ## Development Environment and Workflow From 9ebd0ac6a7e4315db3abd090f5ae0ac3f74cbd7d Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Fri, 20 Mar 2026 15:50:48 -0500 Subject: [PATCH 47/80] Add control algorithm function to documentation Updated the documentation to include the control algorithm function in the appropriate section. --- .../control-with-amdc/auto-gen/index.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index c7eecced..0ef521c4 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -53,12 +53,6 @@ void control_task_callback(void) } ``` -- A function that executes the control algorithm: - -```c -modelName_step(); -``` - - Input and output data structures: ```c @@ -66,6 +60,13 @@ modelName_U // Inputs to controller modelName_Y // Outputs from controller ``` +- A function that executes the control algorithm: + +```c +modelName_step(); +``` + + ## Development Environment and Workflow To develop control code using Simulink Autogen, the following software components are required: From 5f2501fe863bf28da5a7f93297fe67024f168694 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Mon, 23 Mar 2026 06:20:13 -0500 Subject: [PATCH 48/80] Fix spacing --- .../control-with-amdc/auto-gen/index.md | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index 0ef521c4..692b8fd8 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -8,7 +8,6 @@ However, Simulink provides a MATLAB-based graphical environment for modeling and The process of converting a user Simulink model for a controller to equivalent C-code for an embedded system (such as the AMDC) is called Automatic Code Generation (Autogen). By using the Autogen capability, control algorithms developed in a block-diagram form can be automatically converted into C code for execution on embedded platforms. This enables developers to design, simulate, and validate control strategies before deploying them to hardware. As a result, it improves development efficiency, reduces implementation errors, and provides a more intuitive framework for control system design. - ## Control Approach with Simulink and AMDC The Simulink + AMDC workflow separates control development into two domains: @@ -27,7 +26,6 @@ In this workflow, the Simulink model represents the control logic, while the AMD Only the **controller subsystem** is converted into embedded C code. - ## Generated Code and Execution Model Simulink Autogen produces C code that represents the controller as a callable function. This generated code should be treated as a black-box implementation of the Simulink controller. Within the AMDC, the control task is responsible for executing the controller at a fixed time interval. This fixed-time execution model is fundamental to digital control implementation on the AMDC. The execution sequence is: @@ -66,7 +64,6 @@ modelName_Y // Outputs from controller modelName_step(); ``` - ## Development Environment and Workflow To develop control code using Simulink Autogen, the following software components are required: @@ -88,7 +85,6 @@ The recommended workflow for developing control code is: 4. Integrate generated code into the AMDC project 5. Execute and validate on hardware - ### Repository Organization and Integration After code generation, Simulink creates a folder (typically named `modelName_ert_rtw`) that contains all generated source and header files. This folder must be incorporated into the AMDC project. A recommended approach is to place the generated folder within the application directory in the AMDC repository. For example: @@ -114,7 +110,6 @@ The autogenerated code should then be integrated into the AMDC project as follow Once added, the autogen folder should appear as part of the project within the SDK environment. - ### Integration Notes - Do not delete any generated files, as some auxiliary files may be required during compilation. @@ -123,7 +118,6 @@ Once added, the autogen folder should appear as part of the project within the S This organization ensures that the autogenerated controller code is correctly compiled and integrated into the AMDC firmware. - ## Important Considerations for Simulink Models For successful development and integration of control code, the following considerations must be observed: @@ -134,13 +128,12 @@ For successful development and integration of control code, the following consid 4. **Code Generation Settings**: The code generation target should be set to Embedded Coder (`ert.tlc`). The build configuration should enable "Generate Code Only". 5. **Referenced Model Usage**: The controller subsystem should be converted to an atomic subsystem, then converted to a referenced model. Any updates to model settings should be performed after opening the referenced model as the top model. 6. **AMDC Integration Details** - + - All generated source files should be included in the project. - The autogenerated folder must be added to the compiler include paths. 7. **File and Path Constraints**: File paths must not contain whitespace. If the folder or any top-level folder has white spaces in the name, it will result in a build error. - ## Example Model A simple example is provided to illustrate the Simulink Autogen workflow and its integration with the AMDC. This example serves as a reference for how a Simulink-based controller is translated into embedded code and executed within the AMDC framework. The example implements a simple control function with the following behavior: @@ -172,7 +165,6 @@ The complete Simulink model used in this example is provided below: The Simulink model follows the recommended structure, with the controller implemented as a referenced model and appropriate solver and code generation settings already configured. Within the model, the block `exampleController` represents the controller subsystem that is converted into C code using Simulink Autogen, by running the script `autogenExampleInit.m`. - ### Generated Code Structure After running the initialization script (`autogenExampleInit.m`), Simulink generates code for the controller subsystem, resulting in a folder named `exampleController_ert_rtw`. Among the generated files, the most relevant are: @@ -182,7 +174,6 @@ After running the initialization script (`autogenExampleInit.m`), Simulink gener These files define the controller as a callable function with input and output structures, consistent with the execution model described earlier. - ## Conclusion The Simulink Autogen workflow provides a structured and efficient approach for implementing control algorithms on the AMDC. By separating control design from embedded implementation, this approach enables: From 380dc8135ddfd1772a866bc76804a717153e37dc Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Mon, 23 Mar 2026 07:06:51 -0500 Subject: [PATCH 49/80] Update source/getting-started/control-with-amdc/auto-gen/index.md Co-authored-by: Takahiro <114006024+noguchi-takahiro@users.noreply.github.com> --- source/getting-started/control-with-amdc/auto-gen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index 692b8fd8..51b275b6 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -80,7 +80,7 @@ Additional toolboxes may be required depending on the specific control design. The recommended workflow for developing control code is: 1. Develop and validate the control algorithm in Simulink -2. Isolate the controller subsystem +2. Convert the controller to an atomic subsystem and then to a referenced model 3. Generate C code using Simulink Autogen 4. Integrate generated code into the AMDC project 5. Execute and validate on hardware From 257320fc10b639347035e103b1e950f389da5b2a Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Mon, 23 Mar 2026 07:07:22 -0500 Subject: [PATCH 50/80] Update source/getting-started/control-with-amdc/auto-gen/index.md Co-authored-by: Takahiro <114006024+noguchi-takahiro@users.noreply.github.com> --- source/getting-started/control-with-amdc/auto-gen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index 51b275b6..1c487d68 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -87,7 +87,7 @@ The recommended workflow for developing control code is: ### Repository Organization and Integration -After code generation, Simulink creates a folder (typically named `modelName_ert_rtw`) that contains all generated source and header files. This folder must be incorporated into the AMDC project. A recommended approach is to place the generated folder within the application directory in the AMDC repository. For example: +After code generation, Simulink creates a folder (typically named `modelName_ert_rtw`) that contains all generated source and header files. To keep them separate from hand-written code for clarity and maintainability, all autogenerated `.c` and `.h` files generated files should be placed within the application directory in the AMDC repository. For example: ``` apps/ From cf3f57ec96c5bd43056cef0904d83e28b77402f1 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Mon, 23 Mar 2026 07:07:59 -0500 Subject: [PATCH 51/80] Update source/getting-started/control-with-amdc/auto-gen/index.md Co-authored-by: Takahiro <114006024+noguchi-takahiro@users.noreply.github.com> --- .../getting-started/control-with-amdc/auto-gen/index.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index 1c487d68..bc464287 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -98,15 +98,6 @@ apps/ └── modelName_ert_rtw/ ``` -In this structure: - -- The `modelName_ert_rtw` folder contains all autogenerated `.c` and `.h` files. -- The folder is kept separate from hand-written code for clarity and maintainability. - -The autogenerated code should then be integrated into the AMDC project as follows: - -- Add the `modelName_ert_rtw` directory to the compiler include paths. -- Add all generated `.c` files to the project source files. Once added, the autogen folder should appear as part of the project within the SDK environment. From 48e38a01c77058c7ef0b1706a2aa45a2b45f9750 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Mon, 23 Mar 2026 07:08:23 -0500 Subject: [PATCH 52/80] Update source/getting-started/control-with-amdc/auto-gen/index.md Co-authored-by: Takahiro <114006024+noguchi-takahiro@users.noreply.github.com> --- .../getting-started/control-with-amdc/auto-gen/index.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index bc464287..8dbae36c 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -40,16 +40,15 @@ The generated code has the following structure: void control_task_callback(void) { // Populate inputs - modelName_U.current = measured_current; - modelName_U.voltage = measured_voltage; + modelName_U.current = measured_current; // Inputs to controller + modelName_U.voltage = measured_voltage; // Inputs to controller // Execute controller - modelName_step(); + modelName_step(); // A function that executes the control algorithm // Apply outputs - set_pwm_duty(modelName_Y.duty); + set_pwm_duty(modelName_Y.duty); // Outputs from controller } -``` - Input and output data structures: From bc2db1820b020c1dfc42044533fbc9a52d7c69e6 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Mon, 23 Mar 2026 07:08:34 -0500 Subject: [PATCH 53/80] Update source/getting-started/control-with-amdc/auto-gen/index.md Co-authored-by: Takahiro <114006024+noguchi-takahiro@users.noreply.github.com> --- .../control-with-amdc/auto-gen/index.md | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index 8dbae36c..299d17ca 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -50,18 +50,6 @@ void control_task_callback(void) set_pwm_duty(modelName_Y.duty); // Outputs from controller } -- Input and output data structures: - -```c -modelName_U // Inputs to controller -modelName_Y // Outputs from controller -``` - -- A function that executes the control algorithm: - -```c -modelName_step(); -``` ## Development Environment and Workflow From d05c1a0afe1d534ce083b4e3c6420184f05b7e93 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Mon, 23 Mar 2026 07:10:48 -0500 Subject: [PATCH 54/80] Update index.md with development environment details Add section on development environment and workflow requirements. --- source/getting-started/control-with-amdc/auto-gen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index 299d17ca..509f98a4 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -49,7 +49,7 @@ void control_task_callback(void) // Apply outputs set_pwm_duty(modelName_Y.duty); // Outputs from controller } - +``` ## Development Environment and Workflow From be7c52bc98a5ac4c9980b13d559052fc26259f7e Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Mon, 23 Mar 2026 07:11:56 -0500 Subject: [PATCH 55/80] Revise folder structure for autogenerated files Updated directory structure for autogenerated files in AMDC repository. --- .../control-with-amdc/auto-gen/index.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index 509f98a4..c882bc79 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -77,12 +77,14 @@ The recommended workflow for developing control code is: After code generation, Simulink creates a folder (typically named `modelName_ert_rtw`) that contains all generated source and header files. To keep them separate from hand-written code for clarity and maintainability, all autogenerated `.c` and `.h` files generated files should be placed within the application directory in the AMDC repository. For example: ``` -apps/ -└── my_app/ - ├── src/ - ├── include/ - └── autogen/ - └── modelName_ert_rtw/ +control/ +|-- my_c_code/ +| |-- usr/ +| |-- my_app/ +| |-- autogen/ +| |-- modelName.c +| |-- modelName.h +| |-- ... ``` From 57125f5bf0b51f214ad05543d563fc48bad32b81 Mon Sep 17 00:00:00 2001 From: Daehoon Sung Date: Mon, 23 Mar 2026 07:17:23 -0500 Subject: [PATCH 56/80] Refactor integration notes and file constraints section Removed integration notes and consolidated file constraints for clarity. --- .../control-with-amdc/auto-gen/index.md | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/auto-gen/index.md index c882bc79..fe2f32bb 100644 --- a/source/getting-started/control-with-amdc/auto-gen/index.md +++ b/source/getting-started/control-with-amdc/auto-gen/index.md @@ -90,14 +90,6 @@ control/ Once added, the autogen folder should appear as part of the project within the SDK environment. -### Integration Notes - -- Do not delete any generated files, as some auxiliary files may be required during compilation. -- Generated source (`*.c`) and header (`*.h`) files must be included in the AMDC project. -- The path to the folder containing the MATLAB script and the Simulink model should not contain any whitespace. If the folder or any parent directory contains whitespace in its name, the code generation process may result in a build error - -This organization ensures that the autogenerated controller code is correctly compiled and integrated into the AMDC firmware. - ## Important Considerations for Simulink Models For successful development and integration of control code, the following considerations must be observed: @@ -107,12 +99,15 @@ For successful development and integration of control code, the following consid 3. **Consistent Sample Time**: The entire controller subsystem should operate at a single, well-defined sample time before converting to an atomic subsystem and creating a referenced model. 4. **Code Generation Settings**: The code generation target should be set to Embedded Coder (`ert.tlc`). The build configuration should enable "Generate Code Only". 5. **Referenced Model Usage**: The controller subsystem should be converted to an atomic subsystem, then converted to a referenced model. Any updates to model settings should be performed after opening the referenced model as the top model. -6. **AMDC Integration Details** - - - All generated source files should be included in the project. - - The autogenerated folder must be added to the compiler include paths. +6. **AMDC Integration Details** + - All generated source (`*.c`) and header (`*.h`) files must be included in the AMDC project. + - The autogenerated folder must be added to the compiler include paths. + - Do not delete any generated files, as some auxiliary files may be required during compilation. +7. **File and Path Constraints** + - File paths must not contain whitespace. + - The path to the folder containing the MATLAB script and the Simulink model, as well as any parent directory, must not include whitespace. Otherwise, it will result in a build error. -7. **File and Path Constraints**: File paths must not contain whitespace. If the folder or any top-level folder has white spaces in the name, it will result in a build error. +This organization ensures that the autogenerated controller code is correctly compiled and integrated into the AMDC firmware. ## Example Model From 7761e4e6cc85f2de21d20b4d219238b1985556d2 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 10 Apr 2026 09:30:16 -0500 Subject: [PATCH 57/80] Move autogen article to tutorial folder --- .../autogen/images/autogen-model-subsystem.svg | 0 .../autogen/images/autogen-model.svg | 0 .../autogen/images/integrator-model.svg | 0 .../autogen/index.md | 0 .../autogen/simulink/.gitignore | 0 .../autogen/simulink/autogen/integrator.c | 0 .../autogen/simulink/autogen/integrator.h | 0 .../autogen/simulink/autogen/integrator_private.h | 0 .../autogen/simulink/autogen/integrator_types.h | 0 .../autogen/simulink/autogen/rtmodel.h | 0 .../autogen/simulink/autogen/rtwtypes.h | 0 .../autogen/simulink/integrator.slx | Bin .../autogen/simulink/setup.asv | 0 .../autogen/simulink/setup.m | 0 .../autogen/simulink/setupModel.slx | Bin 15 files changed, 0 insertions(+), 0 deletions(-) rename source/getting-started/{control-with-amdc => tutorials}/autogen/images/autogen-model-subsystem.svg (100%) rename source/getting-started/{control-with-amdc => tutorials}/autogen/images/autogen-model.svg (100%) rename source/getting-started/{control-with-amdc => tutorials}/autogen/images/integrator-model.svg (100%) rename source/getting-started/{control-with-amdc => tutorials}/autogen/index.md (100%) rename source/getting-started/{control-with-amdc => tutorials}/autogen/simulink/.gitignore (100%) rename source/getting-started/{control-with-amdc => tutorials}/autogen/simulink/autogen/integrator.c (100%) rename source/getting-started/{control-with-amdc => tutorials}/autogen/simulink/autogen/integrator.h (100%) rename source/getting-started/{control-with-amdc => tutorials}/autogen/simulink/autogen/integrator_private.h (100%) rename source/getting-started/{control-with-amdc => tutorials}/autogen/simulink/autogen/integrator_types.h (100%) rename source/getting-started/{control-with-amdc => tutorials}/autogen/simulink/autogen/rtmodel.h (100%) rename source/getting-started/{control-with-amdc => tutorials}/autogen/simulink/autogen/rtwtypes.h (100%) rename source/getting-started/{control-with-amdc => tutorials}/autogen/simulink/integrator.slx (100%) rename source/getting-started/{control-with-amdc => tutorials}/autogen/simulink/setup.asv (100%) rename source/getting-started/{control-with-amdc => tutorials}/autogen/simulink/setup.m (100%) rename source/getting-started/{control-with-amdc => tutorials}/autogen/simulink/setupModel.slx (100%) diff --git a/source/getting-started/control-with-amdc/autogen/images/autogen-model-subsystem.svg b/source/getting-started/tutorials/autogen/images/autogen-model-subsystem.svg similarity index 100% rename from source/getting-started/control-with-amdc/autogen/images/autogen-model-subsystem.svg rename to source/getting-started/tutorials/autogen/images/autogen-model-subsystem.svg diff --git a/source/getting-started/control-with-amdc/autogen/images/autogen-model.svg b/source/getting-started/tutorials/autogen/images/autogen-model.svg similarity index 100% rename from source/getting-started/control-with-amdc/autogen/images/autogen-model.svg rename to source/getting-started/tutorials/autogen/images/autogen-model.svg diff --git a/source/getting-started/control-with-amdc/autogen/images/integrator-model.svg b/source/getting-started/tutorials/autogen/images/integrator-model.svg similarity index 100% rename from source/getting-started/control-with-amdc/autogen/images/integrator-model.svg rename to source/getting-started/tutorials/autogen/images/integrator-model.svg diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/tutorials/autogen/index.md similarity index 100% rename from source/getting-started/control-with-amdc/autogen/index.md rename to source/getting-started/tutorials/autogen/index.md diff --git a/source/getting-started/control-with-amdc/autogen/simulink/.gitignore b/source/getting-started/tutorials/autogen/simulink/.gitignore similarity index 100% rename from source/getting-started/control-with-amdc/autogen/simulink/.gitignore rename to source/getting-started/tutorials/autogen/simulink/.gitignore diff --git a/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator.c b/source/getting-started/tutorials/autogen/simulink/autogen/integrator.c similarity index 100% rename from source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator.c rename to source/getting-started/tutorials/autogen/simulink/autogen/integrator.c diff --git a/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator.h b/source/getting-started/tutorials/autogen/simulink/autogen/integrator.h similarity index 100% rename from source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator.h rename to source/getting-started/tutorials/autogen/simulink/autogen/integrator.h diff --git a/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator_private.h b/source/getting-started/tutorials/autogen/simulink/autogen/integrator_private.h similarity index 100% rename from source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator_private.h rename to source/getting-started/tutorials/autogen/simulink/autogen/integrator_private.h diff --git a/source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator_types.h b/source/getting-started/tutorials/autogen/simulink/autogen/integrator_types.h similarity index 100% rename from source/getting-started/control-with-amdc/autogen/simulink/autogen/integrator_types.h rename to source/getting-started/tutorials/autogen/simulink/autogen/integrator_types.h diff --git a/source/getting-started/control-with-amdc/autogen/simulink/autogen/rtmodel.h b/source/getting-started/tutorials/autogen/simulink/autogen/rtmodel.h similarity index 100% rename from source/getting-started/control-with-amdc/autogen/simulink/autogen/rtmodel.h rename to source/getting-started/tutorials/autogen/simulink/autogen/rtmodel.h diff --git a/source/getting-started/control-with-amdc/autogen/simulink/autogen/rtwtypes.h b/source/getting-started/tutorials/autogen/simulink/autogen/rtwtypes.h similarity index 100% rename from source/getting-started/control-with-amdc/autogen/simulink/autogen/rtwtypes.h rename to source/getting-started/tutorials/autogen/simulink/autogen/rtwtypes.h diff --git a/source/getting-started/control-with-amdc/autogen/simulink/integrator.slx b/source/getting-started/tutorials/autogen/simulink/integrator.slx similarity index 100% rename from source/getting-started/control-with-amdc/autogen/simulink/integrator.slx rename to source/getting-started/tutorials/autogen/simulink/integrator.slx diff --git a/source/getting-started/control-with-amdc/autogen/simulink/setup.asv b/source/getting-started/tutorials/autogen/simulink/setup.asv similarity index 100% rename from source/getting-started/control-with-amdc/autogen/simulink/setup.asv rename to source/getting-started/tutorials/autogen/simulink/setup.asv diff --git a/source/getting-started/control-with-amdc/autogen/simulink/setup.m b/source/getting-started/tutorials/autogen/simulink/setup.m similarity index 100% rename from source/getting-started/control-with-amdc/autogen/simulink/setup.m rename to source/getting-started/tutorials/autogen/simulink/setup.m diff --git a/source/getting-started/control-with-amdc/autogen/simulink/setupModel.slx b/source/getting-started/tutorials/autogen/simulink/setupModel.slx similarity index 100% rename from source/getting-started/control-with-amdc/autogen/simulink/setupModel.slx rename to source/getting-started/tutorials/autogen/simulink/setupModel.slx From 44db7bbd44355e3605f526f27720e5cd9709703f Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 10 Apr 2026 09:35:54 -0500 Subject: [PATCH 58/80] Rename folder --- .../{auto-gen => autogen}/index.md | 0 .../resources/autogen-example.svg | 0 .../resources/autogenExample.slx | Bin .../resources/autogenExampleInit.m | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename source/getting-started/control-with-amdc/{auto-gen => autogen}/index.md (100%) rename source/getting-started/control-with-amdc/{auto-gen => autogen}/resources/autogen-example.svg (100%) rename source/getting-started/control-with-amdc/{auto-gen => autogen}/resources/autogenExample.slx (100%) rename source/getting-started/control-with-amdc/{auto-gen => autogen}/resources/autogenExampleInit.m (100%) diff --git a/source/getting-started/control-with-amdc/auto-gen/index.md b/source/getting-started/control-with-amdc/autogen/index.md similarity index 100% rename from source/getting-started/control-with-amdc/auto-gen/index.md rename to source/getting-started/control-with-amdc/autogen/index.md diff --git a/source/getting-started/control-with-amdc/auto-gen/resources/autogen-example.svg b/source/getting-started/control-with-amdc/autogen/resources/autogen-example.svg similarity index 100% rename from source/getting-started/control-with-amdc/auto-gen/resources/autogen-example.svg rename to source/getting-started/control-with-amdc/autogen/resources/autogen-example.svg diff --git a/source/getting-started/control-with-amdc/auto-gen/resources/autogenExample.slx b/source/getting-started/control-with-amdc/autogen/resources/autogenExample.slx similarity index 100% rename from source/getting-started/control-with-amdc/auto-gen/resources/autogenExample.slx rename to source/getting-started/control-with-amdc/autogen/resources/autogenExample.slx diff --git a/source/getting-started/control-with-amdc/auto-gen/resources/autogenExampleInit.m b/source/getting-started/control-with-amdc/autogen/resources/autogenExampleInit.m similarity index 100% rename from source/getting-started/control-with-amdc/auto-gen/resources/autogenExampleInit.m rename to source/getting-started/control-with-amdc/autogen/resources/autogenExampleInit.m From 5172b6d6df0d0973eb8bd90af662e09af9d28361 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 10 Apr 2026 12:21:13 -0500 Subject: [PATCH 59/80] Update index --- .../tutorials/autogen/index.md | 73 +++++++++++++------ 1 file changed, 51 insertions(+), 22 deletions(-) diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index 9b0a4bb0..e9e79804 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -1,41 +1,38 @@ -# Simulink Automatic Code Generation for AMDC +# Tutorial: Autogen -This article explains how to implement the Simulink automatic code generation (Autogen) by demonstrating an example using a simple integrator. - -## Simulink Autogen Code - -Autogen is the process of converting a user Simulink model for a controller into equivalent C code for an embedded system (such as the AMDC). The Autogen feature in Simulink can be used to conveniently convert complex controller implementations into C-code for implementing it on the AMDC. This article presents a step-by-step process of using Autogen to convert a simle integrator (as shown in the figure below) into C code. - -```{image} images/integrator-model.svg -:alt: Integrator model -:width: 300px -:align: center -``` +- **Goal:** Generate Autogen code based on Simulink model. +- **Complexity:** 3 / 5 +- **Estimated Time:** 40 min -## Procedure +This tutorial goes over: -### Pre-Requisites +- How to organize your repository to effectively implement the Simulink Autogen codebase +- Creation a Simulink simulation model used to generate Autogen code +- Control implementation using the AMDC hardware -User needs to install at least the following dedicated MATLAB/Simulink toolboxes/features: +## Tutorial Requirements -- Simulink -- Embedded coder -- Simulink coders +1. Working AMDC hardware +2. Completion of the ["Voltage Source Inverter" tutorial](../vsi/) +3. Read ["Control with AMDC Using Simulink Autogen" article](../../control-with-amdc/autogen) and install MATLAB toolboxes required for Autogen code -### File Organization +## Step 1: File Organization -This article assumes that the uses has completed the [Blink tutorial](../../tutorials/blink/index.md), where you set up your repository. To follow this Autogen tutorial, create a new `simulink` folder in your repository and organize the files as shown below: +The first step is to organize your repository. Create a new `modeling/simulink` folder in your repository and organize the files as shown below: ```markdown my-AMDC-workspace/ <= master repo + modeling/ + simulink/ <= Now create this folder AMDC-Firmware/ <= AMDC-Firmware as library ... my-AMDC-private-C-code/ <= Your private user C code ... - simulink/ <= Now create this folder ``` -### Create a Simulink Model +## Step 2: Create a Simulink Model + +Now that you create a Simulink model used to generate Autogen code. 1. In `simulink` folder, create a new MATLAB file (e.g., `setup.m`). 2. In `setup.m`, define `fs = 10e3`, `Ts = 1/fs`, `Tsim = Ts/10`. @@ -62,6 +59,38 @@ Tsim = Ts/10; % simulation time (s) :align: center ``` + + + +The first step is building baseline firmware for the AMDC. +The default code provided in the `AMDC-Firmware` GitHub repository will be used for this. +This tutorial will not modify any code: only build, compile, and load it. + + + +This article explains how to implement the Simulink automatic code generation (Autogen) by demonstrating an example using a simple integrator. + +## Simulink Autogen Code + +Autogen is the process of converting a user Simulink model for a controller into equivalent C code for an embedded system (such as the AMDC). The Autogen feature in Simulink can be used to conveniently convert complex controller implementations into C-code for implementing it on the AMDC. This article presents a step-by-step process of using Autogen to convert a simle integrator (as shown in the figure below) into C code. + +```{image} images/integrator-model.svg +:alt: Integrator model +:width: 300px +:align: center +``` + +## Procedure + +### Pre-Requisites + +User needs to install at least the following dedicated MATLAB/Simulink toolboxes/features: + +- Simulink +- Embedded coder +- Simulink coders + + ### Model Setting 1. In `Modeling` tab, press `Model Settings` in `TOP MODEL` section. From 118af07b32155b830f7f73316c6c40856acb9297 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 10 Apr 2026 14:12:42 -0500 Subject: [PATCH 60/80] Update index --- .../control-with-amdc/autogen/index.md | 89 +---------------- .../tutorials/autogen/index.md | 96 ++++++++++--------- 2 files changed, 54 insertions(+), 131 deletions(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index fe2f32bb..4b352ca0 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -26,39 +26,14 @@ In this workflow, the Simulink model represents the control logic, while the AMD Only the **controller subsystem** is converted into embedded C code. -## Generated Code and Execution Model - -Simulink Autogen produces C code that represents the controller as a callable function. This generated code should be treated as a black-box implementation of the Simulink controller. Within the AMDC, the control task is responsible for executing the controller at a fixed time interval. This fixed-time execution model is fundamental to digital control implementation on the AMDC. The execution sequence is: - -1. Populate inputs using sampled sensor data -2. Call the controller step function -3. Route outputs to actuators (e.g., PWM duty cycles) - -The generated code has the following structure: - -```c -void control_task_callback(void) -{ - // Populate inputs - modelName_U.current = measured_current; // Inputs to controller - modelName_U.voltage = measured_voltage; // Inputs to controller - - // Execute controller - modelName_step(); // A function that executes the control algorithm - - // Apply outputs - set_pwm_duty(modelName_Y.duty); // Outputs from controller -} -``` - ## Development Environment and Workflow To develop control code using Simulink Autogen, the following software components are required: -- MATLAB -- Simulink -- Simulink Coder -- Embedded Coder +- [MATLAB](https://www.mathworks.com/help/matlab/index.html) +- [Simulink](https://www.mathworks.com/help/simulink/index.html) +- [Simulink Coder](https://www.mathworks.com/help/rtw/index.html) +- [Embedded Coder](https://www.mathworks.com/help/ecoder/index.html) Additional toolboxes may be required depending on the specific control design. @@ -72,24 +47,6 @@ The recommended workflow for developing control code is: 4. Integrate generated code into the AMDC project 5. Execute and validate on hardware -### Repository Organization and Integration - -After code generation, Simulink creates a folder (typically named `modelName_ert_rtw`) that contains all generated source and header files. To keep them separate from hand-written code for clarity and maintainability, all autogenerated `.c` and `.h` files generated files should be placed within the application directory in the AMDC repository. For example: - -``` -control/ -|-- my_c_code/ -| |-- usr/ -| |-- my_app/ -| |-- autogen/ -| |-- modelName.c -| |-- modelName.h -| |-- ... -``` - - -Once added, the autogen folder should appear as part of the project within the SDK environment. - ## Important Considerations for Simulink Models For successful development and integration of control code, the following considerations must be observed: @@ -111,43 +68,7 @@ This organization ensures that the autogenerated controller code is correctly co ## Example Model -A simple example is provided to illustrate the Simulink Autogen workflow and its integration with the AMDC. This example serves as a reference for how a Simulink-based controller is translated into embedded code and executed within the AMDC framework. The example implements a simple control function with the following behavior: - -1. Read an analog input in the range of 0–9 V. -2. Map the input to a PWM duty ratio in the range of 0–0.9. -3. Apply saturation limits: - - Output is limited to 0.9 if the input exceeds 9 V. - - Output is limited to 0 if the input is below 0 V. - -The functional behavior of this example can be understood using the following system diagram: - - - -In this structure: - -- The ADC peripheral samples the analog input. -- The controller (generated from Simulink) computes the control output. -- The PWM peripheral applies the resulting duty ratio. - -This reflects the execution model described earlier, where the AMDC samples inputs, executes the controller, and applies outputs at a fixed time interval. - -### Simulink Model - -The complete Simulink model used in this example is provided below: - -- Simulink model: [`autogenExample.slx`](./resources/autogenExample.slx) -- Initialization script: [`autogenExampleInit.m`](./resources/autogenExampleInit.m) - -The Simulink model follows the recommended structure, with the controller implemented as a referenced model and appropriate solver and code generation settings already configured. Within the model, the block `exampleController` represents the controller subsystem that is converted into C code using Simulink Autogen, by running the script `autogenExampleInit.m`. - -### Generated Code Structure - -After running the initialization script (`autogenExampleInit.m`), Simulink generates code for the controller subsystem, resulting in a folder named `exampleController_ert_rtw`. Among the generated files, the most relevant are: - -- `exampleController.c` — implementation of the control logic -- `exampleController.h` — interface definitions (inputs, outputs, function declarations) - -These files define the controller as a callable function with input and output structures, consistent with the execution model described earlier. +An example tutorial, [Tutorial: Autogen](../../tutorials/autogen/), is provided to demonstrate the Simulink Autogen workflow for control implementation and its integration with the AMDC. ## Conclusion diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index e9e79804..7f1a23ab 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -6,7 +6,7 @@ This tutorial goes over: -- How to organize your repository to effectively implement the Simulink Autogen codebase +- Organization of your repository to implement the Simulink Autogen codebase - Creation a Simulink simulation model used to generate Autogen code - Control implementation using the AMDC hardware @@ -14,23 +14,26 @@ This tutorial goes over: 1. Working AMDC hardware 2. Completion of the ["Voltage Source Inverter" tutorial](../vsi/) -3. Read ["Control with AMDC Using Simulink Autogen" article](../../control-with-amdc/autogen) and install MATLAB toolboxes required for Autogen code +3. Read ["Control with AMDC Using Simulink Autogen" article](../../control-with-amdc/autogen/index.md) and install MATLAB toolboxes required for generating C-code -## Step 1: File Organization +## File Organization The first step is to organize your repository. Create a new `modeling/simulink` folder in your repository and organize the files as shown below: ```markdown -my-AMDC-workspace/ <= master repo - modeling/ - simulink/ <= Now create this folder - AMDC-Firmware/ <= AMDC-Firmware as library - ... - my-AMDC-private-C-code/ <= Your private user C code - ... +my-AMDC-workspace/ <= master repo +|-- modeling/ +| |-- simulink/ <= Now create this folder +| |-- cmd_ctrl.h +|-- control/ + |-- AMDC-Firmware/ <= AMDC-Firmware as library + |-- my-AMDC-private-C-code/ <= Your private user C code + |-- usr/ + | -- controller/ <= Your private user app + | -- autogen/ <= Autogen code ``` -## Step 2: Create a Simulink Model +## Create a Simulink Model Now that you create a Simulink model used to generate Autogen code. @@ -45,6 +48,8 @@ Ts = 1/fs; % sampling time (sec) Tsim = Ts/10; % simulation time (s) ``` +**Need to update the following step to create a duty cycle** + 3. Open a blank model of Simulink, and save as `setupModel.slx` in `simulink` folder. 4. Add a `Step` block with the default setting. 5. Add a `Discrete-Time Integrator` block with the default setting. @@ -59,38 +64,6 @@ Tsim = Ts/10; % simulation time (s) :align: center ``` - - - -The first step is building baseline firmware for the AMDC. -The default code provided in the `AMDC-Firmware` GitHub repository will be used for this. -This tutorial will not modify any code: only build, compile, and load it. - - - -This article explains how to implement the Simulink automatic code generation (Autogen) by demonstrating an example using a simple integrator. - -## Simulink Autogen Code - -Autogen is the process of converting a user Simulink model for a controller into equivalent C code for an embedded system (such as the AMDC). The Autogen feature in Simulink can be used to conveniently convert complex controller implementations into C-code for implementing it on the AMDC. This article presents a step-by-step process of using Autogen to convert a simle integrator (as shown in the figure below) into C code. - -```{image} images/integrator-model.svg -:alt: Integrator model -:width: 300px -:align: center -``` - -## Procedure - -### Pre-Requisites - -User needs to install at least the following dedicated MATLAB/Simulink toolboxes/features: - -- Simulink -- Embedded coder -- Simulink coders - - ### Model Setting 1. In `Modeling` tab, press `Model Settings` in `TOP MODEL` section. @@ -147,11 +120,23 @@ command = 'for /r %i in (*.c, *.h) do copy /y %i ..\autogen'; cd(oldFolder); ``` -3. Run the `setup.m`, and Autogen code are created in `simulink/autogen` folder. +3. Run the `setup.m`, and all autogenerated `.c` and `.h` files generated files should be placed within `autogen` folder. Among these generated files, the most relevant are: + +- `integrator.c` — implementation of the control logic +- `integrator.h` — interface definitions (inputs, outputs, function declarations) + +These files define the controller as a callable function with input and output structures, consistent with the execution model described earlier. +4. Now the autogen folder should appear as part of the project within the SDK environment. If not refresh the project. ### Integration with AMDC -Now, the user needs to update the user C code to incorporate the Autogen code generated from Simulink. To do this, update `task_controller.c` as follows: +Now, the user needs to update the user C code to incorporate the autogen code generated from Simulink. Specifically, this requires modifying `task_controller_clear`, `task_controller_init`, and `task_controller_callback` functions. Within the callback function, the control task executes your developed code at a fixed sampling interval, where you need to include following: + +1. Populate inputs (e.g., sampled sensor data) +2. Call the controller step function +3. Route outputs to actuators (e.g., PWM duty cycles) + +The functions that need to be updated for this example are shown below: `task_controller.c`: @@ -182,18 +167,35 @@ void task_controller_callback(void *arg) { // ... + // Populate inputs + modelName_U.current = measured_current; // Inputs to controller + modelName_U.voltage = measured_voltage; // Inputs to controller + // Update controller input parameters integrator_U.STEP = STEP; // Call Autogen code integrator_step(); + // Apply outputs + set_pwm_duty(modelName_Y.duty); // Outputs from controller + // ... } ``` -## Results +## Running the AMDC -THIS SECTION WILL BE UPDATED! +THIS SECTION WILL BE UPDATED! We want to show the expected result after running the AMDC, logging the duty ratio values. - After running the AMDC, show the input and output value through logging feature. + +## Conclusion + +**Congratulations!** + +**But we need to update the following!** + +You have now built a new user app and created control code for the voltage source inverter. +These techniques can be extended for many more control problems. +Simply modify the control task callback and the command handler to implement new control algorithms. From 09fea6b4a72a49e3fb1cc85576a5bc6379fb30f6 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 10 Apr 2026 15:32:51 -0500 Subject: [PATCH 61/80] Update README --- .../control-with-amdc/autogen/index.md | 11 ----------- .../tutorials/autogen/index.md | 19 +++++++++++++++---- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index 4b352ca0..8649da6f 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -26,17 +26,6 @@ In this workflow, the Simulink model represents the control logic, while the AMD Only the **controller subsystem** is converted into embedded C code. -## Development Environment and Workflow - -To develop control code using Simulink Autogen, the following software components are required: - -- [MATLAB](https://www.mathworks.com/help/matlab/index.html) -- [Simulink](https://www.mathworks.com/help/simulink/index.html) -- [Simulink Coder](https://www.mathworks.com/help/rtw/index.html) -- [Embedded Coder](https://www.mathworks.com/help/ecoder/index.html) - -Additional toolboxes may be required depending on the specific control design. - ### Recommended Workflow The recommended workflow for developing control code is: diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index 7f1a23ab..fa709226 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -6,15 +6,15 @@ This tutorial goes over: -- Organization of your repository to implement the Simulink Autogen codebase -- Creation a Simulink simulation model used to generate Autogen code +- Organization of your repository to store the Simulink Autogen codebase +- Creation a Simulink simulation model to generate Autogen code - Control implementation using the AMDC hardware ## Tutorial Requirements 1. Working AMDC hardware 2. Completion of the ["Voltage Source Inverter" tutorial](../vsi/) -3. Read ["Control with AMDC Using Simulink Autogen" article](../../control-with-amdc/autogen/index.md) and install MATLAB toolboxes required for generating C-code +3. Read ["Control with AMDC Using Simulink Autogen" article](../../control-with-amdc/autogen/index.md) to understand an overview of Autogen ## File Organization @@ -26,13 +26,24 @@ my-AMDC-workspace/ <= master repo | |-- simulink/ <= Now create this folder | |-- cmd_ctrl.h |-- control/ - |-- AMDC-Firmware/ <= AMDC-Firmware as library + |-- AMDC-Firmware/ <= AMDC-Firmware as submodule |-- my-AMDC-private-C-code/ <= Your private user C code |-- usr/ | -- controller/ <= Your private user app | -- autogen/ <= Autogen code ``` +## Install Required MATLAB/Simulink Toolbox + +To develop control code using Simulink Autogen, the following software components are required: + +- [MATLAB](https://www.mathworks.com/help/matlab/index.html) +- [Simulink](https://www.mathworks.com/help/simulink/index.html) +- [Simulink Coder](https://www.mathworks.com/help/rtw/index.html) +- [Embedded Coder](https://www.mathworks.com/help/ecoder/index.html) + +Additional toolboxes may be required depending on the specific control design. + ## Create a Simulink Model Now that you create a Simulink model used to generate Autogen code. From c704c0349d0c4203d6123b0c0b6fb99e5f46b8cb Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Fri, 10 Apr 2026 15:37:58 -0500 Subject: [PATCH 62/80] Update index --- source/getting-started/tutorials/autogen/index.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index fa709226..dc007bf2 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -37,8 +37,6 @@ my-AMDC-workspace/ <= master repo To develop control code using Simulink Autogen, the following software components are required: -- [MATLAB](https://www.mathworks.com/help/matlab/index.html) -- [Simulink](https://www.mathworks.com/help/simulink/index.html) - [Simulink Coder](https://www.mathworks.com/help/rtw/index.html) - [Embedded Coder](https://www.mathworks.com/help/ecoder/index.html) From 1119a87aebd6d9fe8d9804acfc60cb3e00b96dbb Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Sat, 11 Apr 2026 07:00:03 -0500 Subject: [PATCH 63/80] Remove integrator and add duty ratio block --- .../tutorials/autogen/index.md | 68 +++++++++++++----- .../tutorials/autogen/simulink/integrator.slx | Bin 71977 -> 0 bytes .../tutorials/autogen/simulink/setup.m | 19 ++--- .../tutorials/autogen/simulink/setupModel.slx | Bin 82752 -> 92454 bytes 4 files changed, 60 insertions(+), 27 deletions(-) delete mode 100644 source/getting-started/tutorials/autogen/simulink/integrator.slx diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index dc007bf2..76d1318b 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -13,18 +13,17 @@ This tutorial goes over: ## Tutorial Requirements 1. Working AMDC hardware -2. Completion of the ["Voltage Source Inverter" tutorial](../vsi/) +2. Completion of the ["Voltage Source Inverter" tutorial](../vsi/index.md) 3. Read ["Control with AMDC Using Simulink Autogen" article](../../control-with-amdc/autogen/index.md) to understand an overview of Autogen ## File Organization -The first step is to organize your repository. Create a new `modeling/simulink` folder in your repository and organize the files as shown below: +The first step is to organize your repository. Create a new `modeling/simulink` folder in your repository as shown below: ```markdown my-AMDC-workspace/ <= master repo |-- modeling/ | |-- simulink/ <= Now create this folder -| |-- cmd_ctrl.h |-- control/ |-- AMDC-Firmware/ <= AMDC-Firmware as submodule |-- my-AMDC-private-C-code/ <= Your private user C code @@ -44,28 +43,36 @@ Additional toolboxes may be required depending on the specific control design. ## Create a Simulink Model -Now that you create a Simulink model used to generate Autogen code. +Now that you create a Simulink model that will be used to generate Autogen code. In this example, you will replace the C code in the VSI app developed in the ["Voltage Source Inverter" tutorial](../vsi/index.md) with Autogen code to calculate the duty ratios. -1. In `simulink` folder, create a new MATLAB file (e.g., `setup.m`). -2. In `setup.m`, define `fs = 10e3`, `Ts = 1/fs`, `Tsim = Ts/10`. - -User can copy-paste the following MATLAB code: +1. In `simulink` folder, create a new MATLAB file named `setup.m`. +2. In `setup.m`, copy-paste the following MATLAB code: ```MATLAB fs = 10e3; % sampling frequency (Hz) Ts = 1/fs; % sampling time (sec) Tsim = Ts/10; % simulation time (s) + +omega = 377.0; % (rad/s) +Do = 0.8; % (--) ``` -**Need to update the following step to create a duty cycle** +3. Open a blank model of Simulink, and save it as `setupModel.slx` in the `simulink` folder. +4. Add a `Constant` block and set its value to `omega`. +5. Add an `Integrator` block and connect it to the `Constant` block. +6. Add a `Constant` block and set its value to `Do`. +7. Add two `Rate Transition` blocks and connect them to the `Integrator` and `Constant` blocks created above. In each `Rate Transition` block, set the sampling time `Ts`. +8. Create Simulink blocks to implement the following duty ratio calculation developed [here](../vsi/index.md/#c-code-controller): + +```c +// Calculate desired duty ratios +double duty_a = 0.5 + Do/2.0 * cos(theta); +double duty_b = 0.5 + Do/2.0 * cos(theta - 2.0*M_PI/3.0); +double duty_c = 0.5 + Do/2.0 * cos(theta - 4.0*M_PI/3.0); +``` -3. Open a blank model of Simulink, and save as `setupModel.slx` in `simulink` folder. -4. Add a `Step` block with the default setting. -5. Add a `Discrete-Time Integrator` block with the default setting. -6. Add a `Rate Transition` block before the integrator. In this block, put `Ts` as a sampling time. -7. Add a `Rate Transition` block after the integrator. In this block, set the sampling time to `-1`. -8. Add a continuous-time `Transfer Fcn` block as a Plant (= 1). -9. Add a `Sum` function and connect each block as shown below. +9. Add a `Rate Transition` block after the duty ratio calculations. In these blocks, set the sampling time to `-1`. +10. The expected block diagram is shown below: ```{image} images/autogen-model.svg :alt: Autogen model @@ -118,6 +125,8 @@ The example of Simulink file along with the referenced model is stored [here](./ 1. Open the `setup.m`. 2. Copy and paste the following code. +Need to update this!! + ```MATLAB %% Autogen code for the controller model='integrator'; % name of the controller to be built @@ -139,7 +148,7 @@ These files define the controller as a callable function with input and output s ### Integration with AMDC -Now, the user needs to update the user C code to incorporate the autogen code generated from Simulink. Specifically, this requires modifying `task_controller_clear`, `task_controller_init`, and `task_controller_callback` functions. Within the callback function, the control task executes your developed code at a fixed sampling interval, where you need to include following: +Now, the user needs to update the user C code developed in the ["Voltage Source Inverter" tutorial](../vsi/) to incorporate the autogen code generated from Simulink. Specifically, this requires modifying `task_controller_clear`, `task_controller_init`, and `task_controller_callback` functions. Within the callback function, the control task executes the developed code at a fixed sampling interval, and the following items need to be included: 1. Populate inputs (e.g., sampled sensor data) 2. Call the controller step function @@ -172,6 +181,11 @@ int task_controller_init(void) // ... } +double Ts = 1.0 / (double) TASK_CONTROLLER_UPDATES_PER_SEC; +double theta = 0.0; // [rad] +double omega = 377.0; // [rad/s] +double Do = 0.8; // [--] + void task_controller_callback(void *arg) { // ... @@ -180,11 +194,27 @@ void task_controller_callback(void *arg) modelName_U.current = measured_current; // Inputs to controller modelName_U.voltage = measured_voltage; // Inputs to controller + // Update theta + theta += (Ts * omega); + + // Wrap to 2*pi + theta = fmod(theta, 2.0 * M_PI); + + // Calculate desired duty ratios + double duty_a = 0.5 + Do/2.0 * cos(theta); + double duty_b = 0.5 + Do/2.0 * cos(theta - 2.0*M_PI/3.0); + double duty_c = 0.5 + Do/2.0 * cos(theta - 4.0*M_PI/3.0); + + // Update PWM peripheral in FPGA + pwm_set_duty(0, duty_a); // Set HB1 duty ratio (INV1, PWM1 and PWM2) + pwm_set_duty(1, duty_b); // Set HB2 duty ratio (INV1, PWM3 and PWM4) + pwm_set_duty(2, duty_c); // Set HB3 duty ratio (INV1, PWM5 and PWM6) + // Update controller input parameters - integrator_U.STEP = STEP; + generateDuty.STEP = STEP; // Call Autogen code - integrator_step(); + generateDuty_step(); // Apply outputs set_pwm_duty(modelName_Y.duty); // Outputs from controller diff --git a/source/getting-started/tutorials/autogen/simulink/integrator.slx b/source/getting-started/tutorials/autogen/simulink/integrator.slx deleted file mode 100644 index 76a54d7db2e0bbf2f807af556623674ebad37e17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71977 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 diff --git a/source/getting-started/tutorials/autogen/simulink/setup.m b/source/getting-started/tutorials/autogen/simulink/setup.m index a98dd334..5b651491 100644 --- a/source/getting-started/tutorials/autogen/simulink/setup.m +++ b/source/getting-started/tutorials/autogen/simulink/setup.m @@ -4,12 +4,15 @@ Ts = 1/fs; % sampling time (sec) Tsim = Ts/10; % simulation time (s) -%% Autogen code for the controller -model='integrator'; % name of the controller to be built -slbuild(model); % generates the Autogen code -oldFolder = cd('C:integrator_ert_rtw\'); -% Copy only .c and .h files in autogen folder -command = 'for /r %i in (*.c, *.h) do copy /y %i ..\autogen'; -[status, cmdout] = system(command); -cd(oldFolder); +omega = 377.0; % (rad/s) +Do = 0.8; % (--) + +% %% Autogen code for the controller +% model='integrator'; % name of the controller to be built +% slbuild(model); % generates the Autogen code +% oldFolder = cd('C:integrator_ert_rtw\'); +% % Copy only .c and .h files in autogen folder +% command = 'for /r %i in (*.c, *.h) do copy /y %i ..\autogen'; +% [status, cmdout] = system(command); +% cd(oldFolder); diff --git a/source/getting-started/tutorials/autogen/simulink/setupModel.slx b/source/getting-started/tutorials/autogen/simulink/setupModel.slx index 67e8f6cad7c1713925a1d163343a4428345120c1..668d0c600ee81e3c5ed232d5507aa4440aaf08b7 100644 GIT binary patch delta 22197 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 From 5a64baf357fe319cefbe582b4cd59ba00974806e Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Sat, 11 Apr 2026 07:03:04 -0500 Subject: [PATCH 64/80] Add image, check out this commit to edit the image --- .../autogen/images/autogen-model.svg | 140 +----------------- .../tutorials/autogen/simulink/setupModel.slx | Bin 92454 -> 92869 bytes 2 files changed, 1 insertion(+), 139 deletions(-) diff --git a/source/getting-started/tutorials/autogen/images/autogen-model.svg b/source/getting-started/tutorials/autogen/images/autogen-model.svg index e71d87cb..b7a35047 100644 --- a/source/getting-started/tutorials/autogen/images/autogen-model.svg +++ b/source/getting-started/tutorials/autogen/images/autogen-model.svg @@ -1,139 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file +InputCalculate Duty Ratio Outputcos+−coscos+−xxxomegathetaDoduty_aduty_bduty_c diff --git a/source/getting-started/tutorials/autogen/simulink/setupModel.slx b/source/getting-started/tutorials/autogen/simulink/setupModel.slx index 668d0c600ee81e3c5ed232d5507aa4440aaf08b7..d03ccd2fb14f2b8990266b783184c34d68305dd3 100644 GIT binary patch delta 2179 zcma)7c~q0f7XOBw0D>kUdjosraWOBfU0+)=&v3jdDEh^2Fy8wb()FB8BA^+h3 zeQ`_Slej?w=H~n|rXc?O%}lMseh)S4JWe0RvM0fs1uyoDxM?hT>Q|bV=kUGcr0~m0 zE2Z9{^cPx_6z5*(HbVw?wzLD z*T>VAF14$#z@EjF;-M7vq`yf>N6j?&L?Of6DTza{7s@=+x$M@v=P-Ip4Yip93P z_HT@i`J0w&J(%sXQN9@#JK}4-V(wHL87};ek&r0sZJwG9ZP!lg?(08&qs+r!V~u+4 zx|9$gtslT`@@~|t%qbj5SyrZ=Y1h z-w|dFN)`|8scqigmNPP(-@BMS10s3!qAT>O;t@jk5nmJZ=vdBUjk(?Uct(OQ@!$N! zp0E1SeX@LG$g_Sk8Rj79+1Y)`$9|xQa;%I?)W^af4TzTC`VWuVF$Zts8>-2Ytj2%XINC&f=Yh>OPa&`z+;Fas{$DDT8x0e^iR;Z%t zICg@n;0AY{5X>cE!?U2?mQ2ApdjdT}=c=@6Q+;ssJhPB3S~Rzkp&7POkAxeF--yEl z$0e`ggCY9UeaEfgBB!2&U4}vDHq77>UBZIZ15?y!J$?sOrW`h+4~j!KF$25$(H^f3 zrtGY|s=2qYz&Vr{kQ~975%w&usE9@7ksaqf-CM3c&4|`J8j*AAkbB8d?^2H|H;{lF zIS7cm)|dLc-s|qGtlnk$1o0vE^bPSX2g~fJQ1^S>BKmZ>Pg?R1zd6UZoL%@<0+->! z5-`ir*0Q+&y6(5ZcE(=_Y=>W7eNKuT!b^K2-@DE@OXe-zNhd2C870hZX4*$h)s9z` zy3BMIB(>#xGvt$AQKRN*$vvOpM@=;#|S5OUn&SfbSZyghy& zj7TOOSQao*;=kB)L1D4Zeposymbb<7v;9D!K!L*8!{zM}#tAH4XcP(wX0Zr35{<*d zk$Er;M}s%RI2u*4-neG_C@L%;FGmGy<88W3#vvn8v5UWFE)a(a#0t{8!<)pgv|x5x*i^eg5hD z1JMu^*fzufbXBBS3+N&9OrVMQ1OY=EC)f!OQ=Ld;;$|9wM0BEVcEA!zFrGl5k|-n^ zjY1<6VNwJ#&IE=?MG&x{|Gg6m6e5j)r~FB%4p=fw{>((7wXF>XK{}d$^fM%$1HLr* zyos#_@=>CYyBrYpr`m_WT)vDf}YkV5HG}m z4?KV?lE4R^O6mKN-F$#X`uKnh7K;SH?gKj!yZ{&|y~&c!W|@2dL3Rs(G1!LW3cxnt zg$xM5c4bRnfSCFM3&c4Z*eNUj3n1@&!FnV^u>x^OZ8UIn|9@hCy2bl+mVfYC|F*EQ7$U_D&LiB_{V~swf59z5vP&rqTJ?MXnTV9v| delta 1798 zcma)-c~sNK7RNIQ5kb*Zpg?dThyfA^*%Ls4mlOd*fEL*a3K$j*2}p{d#gvB@S%akT z14LXZi=c>-G)MuT1T0i!31ur4gXj~A6cspb6&u>V_PzI4=bSk+=bk(FJLi1oex_>} zS*=Ez_;CEb!Q4)p)NBkDi4t~4MvFyh*?OR+7xYp=XT% z2D8(J!3?#h!q_6Am@gFX+nbiiPv#L)69kIl{!b=|s5=X3`uPpsb`ZN}C|i{=U`C+& z&maU<3j2$a?Y1Xc(?|6_HDp=H|7|ljvGDS0>(^Kl=}4n)p4YLU=f3VeW=^xkDcml} zWV*Rz%8s9?pLZnqIZcA?BUFFYbKhxy)ZY0|x+W@AL6{=JAPe`In}@SP`XSjqdON%u zNww*_`=Y6Ek}poHaNg*$g+wolG~md_AE(qOUt^xwFF)Zu-kIr-ys5x%Gr8>f10g>p z_hL3GR9$+gE|=!H^BdpEq?Bb(mx%`Y#?GX?uX#5#64_nx=N zoH?-=5!7n(URlq3@rzC)FP+%p`uz}PX-8((>x?y+DMkIe*`$=5mF<46!ll`fmYZFl z6>6j(EfpR1)8r=X-Nwo~C=bB8=^SIG?~++9<{wyFdG+qJ)tqs8S;<+@xr}NJdlOV& zb(>ROGOgha7k-bgYLbeQl`WX=TX|4!*_syO)1;sGI6n@GKXM8il|0P#XyREbf&R;* zJ@t-SXI~*?TW#@@As$CXG+Lv1`!1*O*co9?t$gC7%~KZY?C7TQCOVUeVZTNf+pne-5q%Wc_iXfdhi@R|mr)-g5?_R<^CJdDYn{0`-sZhKG?a^-+tR8jS4hm!J2+!<_L zaxb87Uvx>Rd9%mH3j0eA7;%l)l~ZRD40Jya4oeugW@9^`uTDvjhjqPp&R2$u4|YEI zQnw26hTSV%xmNL@4*1RTd9$qYo9i^tjkx;*Q-s$RV(Xqtzl_&YyyaAn9NkmJ}dQ$Czo!(kyYl<2ufsY-Lnxa)g&x?wkbNAJiF%aXU@wl2qcCxbb3pKjZd(3qp zp?^@AQ|c`~J~}&NzS>dHEj~cYRJeI0(knn9lqv8w5}vQh!sv^Imw5Eg&U;>-_6jVi z9WUnO^~JTakB)q>j{2|ml{WdIx$qASg{l3jyLYF0O*{g2A8YhMpT&^9{d7W0!+)}5 zi{|({*{2u7pR`iZWHCJJBGSCq-TmbCX96yAgp>GjqPidl#|~S-=Ug`o^ZU^Naesv)+_;Nw5qSsv%GA|f6eFSIg>C2CluGd@P7cbT5 z3oB=GOys)tKXRKdFFhLUsdU=BL8YplVjcgdYoPD7d;Zav=OXmn1SofIZgW=0n4v#5 z>u`ZX6*?Z_7m4XkGitc-Mq33G@w^QfSDI=A-h zKOj{{#K_RM9SrQf`8M^Y`P3Uwi|#%HwO3{`=lyz1^Iu^9;o4d)q%g3h4-`!y_O+op zT>YDkO~_OC03bFEWpBQtM|=CqC`wDRD5d?!zz2zyQJCX>imy$=<-5CXO;Q-c7*K<`gPL(K<(yZQeE`45z9 zm*bErAME?DzJ@aRAPSy=likKyL+fJz>i5S9VPb$W{5W3Lj^6^E*M?<*_NaA#)!6}k z9s~Bk9SBfH3^12v6AYjLZ5E^x3()Yb4!=bq=UCtfu+XQmfDPX)fUU2|tzUly4`+KZTv%gfdy8);m4(x_wq_X`|GiX7ZjKFe$EK+I+Im81p z;ynjIuHFCxos0)KxW*g09uHUujt_uxeZZDgDb(ga?bKRo`ajj%eWBumz;c5T%m~(k Mguw!%wXlQz3Y@{+-2eap From 9b9258a4134ac6136759cb3505a2d5352ef210a5 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Sat, 11 Apr 2026 07:15:08 -0500 Subject: [PATCH 65/80] Create subsystem, check out this to update image 2 --- .../images/autogen-model-subsystem.svg | 173 +----------------- .../tutorials/autogen/index.md | 8 +- .../autogen/simulink/generateDuty.slx | Bin 0 -> 92809 bytes .../tutorials/autogen/simulink/setupModel.slx | Bin 92869 -> 92672 bytes 4 files changed, 5 insertions(+), 176 deletions(-) create mode 100644 source/getting-started/tutorials/autogen/simulink/generateDuty.slx diff --git a/source/getting-started/tutorials/autogen/images/autogen-model-subsystem.svg b/source/getting-started/tutorials/autogen/images/autogen-model-subsystem.svg index 55df3a8e..905803ee 100644 --- a/source/getting-started/tutorials/autogen/images/autogen-model-subsystem.svg +++ b/source/getting-started/tutorials/autogen/images/autogen-model-subsystem.svg @@ -1,172 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file +InputOutputgenerateDutyDothetaduty_aduty_bduty_cgenerateDutyomegathetaDoduty_aduty_bduty_c diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index 76d1318b..606f528b 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -83,7 +83,7 @@ double duty_c = 0.5 + Do/2.0 * cos(theta - 4.0*M_PI/3.0); ### Model Setting 1. In `Modeling` tab, press `Model Settings` in `TOP MODEL` section. - 1. Under the `Solver`tree, in the `Solver Selection`, press `Fixed-step`. + 1. Under the `Solver` tree, in the `Solver Selection`, press `Fixed-step`. 2. Set `Fixed-step-size` as `Tsim`. 2. Go to `Code Generation`. 1. Click `Browse` for the `System target file`. @@ -97,13 +97,13 @@ double duty_c = 0.5 + Do/2.0 * cos(theta - 4.0*M_PI/3.0); ### Create a Referenced Model -1. Select the discrete-time integrator, and right-click. +1. Select the duty ratio calculation blocks, and right-click. 2. Select `Create Subsystem from Selection`. 3. Right-click on the subsystem created. Select `Block parameters (Subsystem)`, check `Treat as atomic unit`, and click `OK`. 4. Right-click on the subsystem and select `Subsystem & Model Reference`. Select `Convert` and click `Referenced Model ...`. -5. In the `Input Parameters` section, define the `New model name` as `integrator`. +5. In the `Input Parameters` section, define the `New model name` as `generateDuty`. 6. Click `Apply` and `Convert`. -7. Rename the referenced model block to be `integrator`. The expected Simulink model is shown below: +7. Rename the referenced model block to be `generateDuty`. The expected Simulink model is shown below: ```{image} images/autogen-model-subsystem.svg :alt: Autogen model subsystem diff --git a/source/getting-started/tutorials/autogen/simulink/generateDuty.slx b/source/getting-started/tutorials/autogen/simulink/generateDuty.slx new file mode 100644 index 0000000000000000000000000000000000000000..76aae9675ca1210c0695cfb3fb8e7860196131f6 GIT binary patch literal 92809 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⛏l}X4k}~iOpG$4RBed1gNq>LV0@~@g;JM zCmI;JDq00K%a-(E($cmFjQilB$l;7^OIy}3i}_^WpB^~t7THQY!UlD)S+~bCfJfM% z9yse3;RZ#_ky-tA3fp0U&@D=o*JN*vI4OMIbZa~^gnJrTfjkojqX;=K(&`e&=oiu8 z&<8!7&2(a4(|H*RYVnL>t9uA1i*dVBM2ZtT_`<2i)pBPi-?AI0RxZ4xbWdziA`Qr> zr!%gRiE4?Zi)N-3*3>d9fW)ay##%1J1XZqE!{NM?bYxej3QuapxTi57z`1gC9*osj z;%KEofkBG&Im{Lt%Wl-n`w~3@_Fc9~(1tG1y)$sSbjt}cSINdUZ#At|DFy_>ZJB7~ zvfhaqnt^<4yD-JGs#@cwaJ>OcJ?q_a||#22Mq^6*)(_!R0b*`WRQ61$CTV>*CpCe4j-Mg zgKUy%n30W4=?Wv}u(| zVXsCrum{KYVa&KrazN_r=Aa0LzqLU*rp`o<y88HWzLuO)BTt#Xn0a9aFi^?f@Nl7G12`9BEV&rI zA*0I4C|M`{%A^@d#qi1Kub0XWn7dGjc((Ck_w|~@)Oj)*L2dMOPbA(gMGA~bxdsko zXb@F*I+FmQrgnLLCzcpnJq06xZUS)7ahP10!{3x0hb5lJ^}84gu|w;Hm>a!f45~vD z)j4p9QhAQuZEKEdPDRlW(oXF%jj1CzfRIg@Y6#)r{edu!M>PXG?9|kzvG!t@(h$Q2 zw^j~VulLOY1-GC^go27}iFutd?Oa8Ow}d-7aIv9PfjbbxcWX39af+=RO0g3-EGs~k z2-pcbIb)!5E#{GKh{B;yKJJ=1IJMS1D0aIab@{>~jm@H6Kw;LQFdu%?CKg8p)Ov56 zF@k59(9QAy9NMy7d&)3~+k@4L`bu;&n99hVs>{lq4Nazq$^tTyR*GbmzNzU3%)B@40xd9fz`WTY z9u5YfoFbo5XtDtDs%N=P%gc%~w4zpCX9}z{u7A9=4l2p~?pV!6Obqc-U6o&>JFl^~i zRZ~NA7SI%;?6m0|Yn(I6v2}t+>*mR%(q80qgjQ&`LUY=OfmUg^f`f5HdlvAZ-8^?x z+P$UO&~An1v=0NV(ryJ;XwL#3w43IzN_u%Vlv`jq;m)us-4i8U5? zw_?|dx-%0wbXG=JDirBrWj-kT94LT0bU0MN(~hcshwNiRXL$SAMN{Your%P-5-O3# zM$#EORubF8Ui5(~&dh__+|uE0Xm)qD*9}WKjxoRL=9!_HHqdbQZXsxIoZ0#!3zVO5vIB&R6OLKXufS}fNcISQ7-O){%-7YWix zVPu#lrn8d5bjU;{cv!~51_xFu2MVfJn%bRLCh8ea5UAR#R5zSu;3)*bdnPM-657$idp>N9`cPmcUjiB0)og+=iO_VxvPZ@Lc2G`<2;LNa&ePZ_^GQA-Wjs!4= zld%koM}}x6NZxLzG@K?pFO5~QQ^+hZlRrE#<^QDYK!<0US{qGy5F>~^WBGs&z8CE$ zje$Cz(9w*m3Xs($7DhxaD1U<1F;lmP1?7{BB>>S(Lwu~Mww>!7<$@v;Mm1lrpgkT+ z(Ul$CEG^Jfl>#QFmMyn*Q%eT9D=c*sRV@v?2nc9qvH&$3ns#WL|CGRFY}#f&&K9 zX$iJOXI3*cj^mVk##6jd)!Q2n<_3v#eV3&BI!L+m>@#jt_;Dk!T?o}X#W$sBO7WC} zf&#G|H+FXDaWOoI%(C+n*=?j568StP?J%VpVaFxBdS(ivC&vbGgCFJETGOR+#m+Xx zrt=3moi(@sJsQi8N{izTL2(?<&+pGgVGN|udZE@Zd5%yR8LuO`e@OqBga{e=4tr5x z$W+RW6ayKDWT*(?yMlPaI!KItZc2kBx~Jvw!zh?O!}0VK<7Ve)LI!AGWm9Br8yTch zY(w-$*$30-rhtiK6vaqQeUsnBSVsk;l$m3X9)#Tu1#K2&M`%8%GtzJkz>>?_y8%P7 zBi>Y7Z}mYto9O@L>9Uq!ndXAeArse}gG=4V+zwUDJ}o{+%-W5h=fhzVucb_&{< z+0oQ!doYjSdFnI9CBafqtSgdPO&F-63l&)=m8NA{LS`qNXjH*FwNwK2k#JY_n->lT zNE)n~v0wowqOAU~N$NKk|Vn0X9-)f^57 z1S8pDOe}I@6-BeBM?Zi(+Jb}IO++UnAiE2P8Y31{IFZ@24A_|*V(!hXZRE#QxC89a6?eeEyug1l^9)8{u49og{wfQ(K*5Np8q+#! z^tOAt_|HMElg_C;<$AoK*Lb{=%E1GLoQr@UZ$ZIeG*USozuXW|NE}2i<@OQD@-n6_zYeODtCC^P4i}yn+C=({HN>#Tq z9A&ikHFQPyhBs#H+v6wPdgMdfx?J>f>-*M|kotP5#71+&6f920W5=^fv%DFWZ}X<| zugG8?ZDd^QJD;J||2Wob--<@@Qg4 z@0z!?Y|JvF>T6oN z{=KqME*HJ_)~h}&uq?MHnTtxt63c;@I#+xM84sBDb)NoACc_e+jG%0)FG=frG|2x} zR{2V^KMmg#YM3TM|Cvv-5Gt*HGf)GTCfTI`SRi!%GnNnRyI)rUHq&c=J*%UzX(E|B1%_vMXGguVhBnoE^eZi@q>+z8r7B9|<+Qvc4mizo z!yin?;CCj%NtjWoRNvIX!epRVj!Kk<)Qc>aCCLIPTvMkwIFAkIx=SyX!MfqO2TPo`=D)RY(lsv6QP*x1hRK|2+5K zs=l|(ywN|Sn>i+roMMm_@TZB!jP$En4-H9fHEBDVNW6#ao4hLhR!uV?EeT|r_3x`F z@Jw-Ik)PtOD2ItR#a&i{e-`O>9@c&^8?8EltGMZoN;=z?Gq9m{TAtC;*BE30$@sW6 zD%n+9x{4OtKIw|=YjO7^u2--tSEMQ}T^Dpf#+srqOX0675nOIFQ>N?CH6{=9w8{Ub zJY8W=2kIA)CbCpE`4g((8`A+~6cV@btYblOC}e>qPz!Dz3boXOZ@RRhFhk@r5_&#m zL0d443{|9a7)7MSuu^2`Vow|7T{mvoNxT67K{s4xtc~7q;xq?m4?~V=5z=7Pa2}k9 zIGhbGX%@BD4Un$E#<&zDADiyjSPrgdn(lcPInpINX>-zB;lojmQ`|V&786rH6?M=H z;_+xb922_xA5{dHzxEVDwrIDahMm;s$;M|oK+sfs0EfZAzmAlv0tN z9-T#4%vJzR=8T(yiww61GyyR@!k?&BH$2#%PRdvb;FF@#Gm5EH)1ow$G^JxR+%pwHs5ZKD7d**VERyL@2{gJrx`NcXUyS!z5Tx%{30%IUSL92T((3TFf0pG9 zW7Dk-u{LLn5~V}$poCeat3eWVaJG85*jFlg-d+_K`GkZC6|BkiTF6C2rv)vdQjw!RLTCQo39N*^iki;UCfpa?o3I#~WmS0MMs*XSOxO6=An-B{+(eas}nXU3k z{>4=O4|#R?UsG%V$Z*g0ak?u4Q3&LM6Dti+tP+ZUvJ3`fYi2NY68Fmrx5dKHwe#v*b?;faL?4ObJ&l#xh^Us*=UocP|@z0#?ZyKnhX9n@Ao=kr!Ka&Y(^?ZMuzq;Q) zqscD~RL}FzSmIycua5a=bozsSzlT3sTSz}D9GWkqzdL)XXZq^~{Bvek*ZXT5{0;tU zkAG%^f5B|D3+m<%5MGZz!0;E-=V_v+abQGn)zoHcHh%dU@T;c7-%3VGl%<1h8sby9!&s9o@9$X^>Lx+DG>^NF4z>SuQk@r^w1cNhr(75G#d^#*ist?J*Hr+d*8zBCeoBBfsYVd66wpN+3}HcZP@;-0 zGpZ%t$;E5-b-C!}&fvjcW9REoac@qtkpJ67E*o;EWU%c3h=W|?HoUcEJ=`$oZtrsK zVZgRs(&bu+$OMwJQe9-@B^TKtxO3T0`&|J9YkuW&?PNgkP0Ho!LUwktuz-G>TmE|K zledxs=$p|l*F*#0+J0R>IEHRqptU3zmJo)B5*4->-y5tOw-%TV2G&Ci7)u5%7%jmX zTa>py@$||d(7m{g%e9{YrEkdP(#9T%GjwGWS-ZF^#Ewm0?so5e8-So4$czH8VW|#L zbYOT?JFfkB%`HH+6|X}LG;KcK0hN|!XGh*A&9^tK2QG4c9&W(-_z4a;5$~395)ADm zj93Z9L9Q+Dp1)}-B1!auwCa8~EYl50JKS$LRR}4~3E2+KbOvhFO-xy+&y2(zip=!s`BjHo7<+tX7H<3<|U;u$pk|IG7B}mR7K}A$Ra*`|{IcEW(Ovnf-N&~GRP0pc3l4LUq zNX8}y$ytG>$^5&VxijzkefNIYTmTUTal-?4rKaNqtyHgX%XXia%e+ zDax;H3GY8jL9zen)5DnzrXC({7p-l5J-oS<#H2)@7V1$;$tZ~EU@^Z5V^;o(pI?cgOaJ^z{LilnDJ!vO_F5m3l@k4HOIca;-CtXN z*_(>JMRWO}oFuwCDLKJoauVZp zHSOG=8;i;Q*T&)!e{ami#DtwbaF6lV4#dSJ|K5SLG`8&^2R4yz{?DC@OaHxd39-L6 z&&S?8$d08vc#=^<4B8|nhc-e&0&S?6=&#L<4>}zB^_@7n^sn!vu&oEf4*t3LSG#|0 zB7ybdVTKc;!G^(!iP9cCt?6;y&Q;IO-p}~n2Zek5krqGAtr%d2TJI+gN%$EzxIso z?t+uGtA_)((!cH$EBKU6TF2TOzV@~AKIiS==Vs^bi>~d%eas-x6WXBf>+R(3zsY>y zcD~mC?DDU}{W|CWWB1yAzW>qwufqtivPO?V_t!CgEwMqDIHOC%xs`q`vHf2j_Rj{K z_wzaD16SJ5_W#wN_V(!EX#Q$|$DbeF|2jH+{ErU(cZXiF_O*39AE@Ht83+SR4aU}W zJAEeycWc-G`HKE|NSl9J@E;xWpH4P(ck)%e;pzQ94;m+TM>}sPU-U%j|2oXSEVBFS zWdB<9A07Sg6aHTv9QpTy|L>0USJz&!bG1hM7S8`a>)gMOa_ks3`0)NC|6@NFKRCoj ziG9Mg2mAX025bb~L2M2O$8SPng2%9L7?`k&NB3YyIUfD9ppJX4$?}#sokk5ahWw|VRXOI^1iWgq>1&C;l<#WT5O5O#joi6X8O#0hFisB z)=oj?>9YA`wIrLkFJ*Wt_0c9()v%%;uA0=}G(2@Z+aE^=sF*FDjwoU@)9I(9N>TB$ z&Ht|Cin!fAEnFLjk=2amHyRFXR;(|zHYYvKE^SivFqwDlIXp(GvY)0T;MsxwJ9e=v zSv2nWsR-7Ry?OnbuX9$$+P>iB+3DZE&mK7+dPmtvoA6cNHfPpy|5?}HRW&1DhrjD) z)ISyO{a7S}&526K`uOKSroxoTHH-0(l^?Gyx#LbD(>$k~uFl4^`kuek(IQtXKNN&7 z|0G`Cp&EU~UaC9Ntt9$P9Sv8_(nxExUxVxkfw6Gm=`L#E!c}>xpMx z_dQrDG39-=yD@0v>e{EOiB(Id2mT5@8UuF;d#2OhR%9T1p3;R<{1>9x2cYIS#md3b zViTbqN*aUD--~NiC@5-Gu-2lNkbOlI6#I%Wn{7sV6cooO)GnMexbb3sAn>NX;m)U@ zylNT&j!$2msJfMW?9O{`O72&G{Bi3JEft>tO$3d21Z|`^{cz!D?g-gGUVR?^#GuQc z>iR0;R_ZIhSN<6pLTbGeTuf-s@Zf$XHO=l&QuDs7^Xlf8BSWSKy5s{z1d1;7{oP5km zhMJ-w<0jSi==f;^xg~CkZ~3ZDrF-o@&MAsv0f%=|3!T8YTC>^iugrwQXMIzt~>Hc&RJRtcBLSe>JhMtI}|mc94PMP2E*N z7T7@VxD@ek zM`^pR#n+agGKyiRe63YgKC7r`45fsK5W`{*A2;!^)9Qv`C$xISccdRw^ng zLpWPCz3Un3-tvjj>6tjmSe`DA*0VzeyIOQJGC$5sV3xOk)^lx;h*l@n-oAZX!Kv&s z@$k-_JH9iWIqmMI&qqCFWAJ$Vq?fNOdqYD*`^47-Dc5dM%9?u>=E517nK^nHFQ~?x zt;{tpMRDpc0>CUdUSZ7O__iHJ=rkNDE2Dd{s5!v z*RS&(8(#eUAWFOQq~=jpXD-d%-ontk8ygFKbk40WYsp8QZ`thKSkGVc4U={qOn&|P zs-l?tofleJJLG;uLf(7j55Z`Gix)0OpI3Rm(u@p!vrt)B^=G88m1U$^MKK~pK=k~SaqB~^#kKjyG2@6#yZGuZTZBTYM4O-+Q# zT#kOsshF9B^kzL}c-Tr#D4V&`Yn50#%IoJfAph!Wj4j(-5n{`0F!^16W0b6HQ0mM~ zy=M=f;`WtQAFUUHMgBM`Rhkto4*4AYaINTcqScM}KD!_GV-?H82js4lI)Br<(LI#L zYL)mizPY=Fk4N@{&rk_}$JX~gv0(z79&gj7M{MJ>6ESLc_cFwNwD~!!qphiF2qTdB z$aDg~rF4R(KT=h5!D=+l%)LE$QRrJbe+LsMOKwMw6PrvZ3@w3d{Ve(*mxZdzweP+1 z+eD|8+_tvfnoZsi#$v7Lm7ftUC0_5z5s{G{ql}*#tOJ}sF6GECP3oFJa5C7+OFPVx z8Zfj@xIZA3eqku8ZpoQJkvlb&l8VabUPVku!}y#iLax4Xi>UoO#YIo~M105Gz4fpo zl8#S!a;)k?O^a;8qRjM_4EN79GoBf`V6q)=Q^fB^8~P9b5D|)S{iBS9m7El0)Fk%4&+U zPSiQiH%Qp$&!72xtV3ry`8i}gkG0f)isB+1JaKVqXLFIbyF;#9Ua*C$d$LP`j!p9N ziHi?)>O!{_iru%`QdGhf%6YYSHk&5jh0%tzvMti?+o$8`xKPY<`!+`Ioq0oTtp^NN zU9qaP8w)+mksqT^G_{02TFTw3^?9SMxITtu6Gg7w;=D18A-&Wo@?bCxJ-v~q=Sz0_aGtcqtt6+uvI64!t)$(ptaurZLXq0F^8rI4<Wj^?C{&WrnNUK2nlz^@6RyZN;)FznQTlZ!x`lo6_^HX z{jB$cv~f8aLT%Q4x}&*j*i%8HkLECi1C@Rq5-kd8(94c6e9)5{?k#97~h?o^4iWK+eh5BUCHNGU*lR^=L9SlT%P#Nbn2r0TIuHkLv*@Pq|V^Ng?n0fg`6yWkUI91 zW_y>h)qKu1Uc2z?#6kkpM14nK42+duA_xs-6n~aY(xVm ze9~K?f2%0@N=*=nM-4_ud#v$J4bx9(;dB~His13q5wdegntILAVYq45;eL(ZAG{XH10NDh*h) ztl3&>#Mk!|JB$m>a}<%_)oi^Cb?2T}8Jx(Lmm;~}C+O!#R>LZPH(JKHF8tsd7RKn@iA>@CsQcVxtn9eeHtK68$BYojb0;JQb zj|=^RM4xQ<{JFKrw!X96!%9_EHMR-EKdQdbMBQA^osh9cC27H8{Pw8DvBH$JCTQnR zKgKQ7FdAki4vqpi*BqFg_~AmGl=Jw~<`xzfmQx8|<7Ri}rZ1()E%2#1PV=jRaTMG;%xX)Sbhty6UVdE`2@`@#s-358CrH z16AdaD@YBe2~%yCxMBy~agfAf9^PCV2}c*Mz4{V5`uNO3EA-FEtUVKYPCoZ3&bHl9 zZ0+-PF0fV!Umug44&DvXP7++dK=hr{vnK?6-|8oNhS9R-dLg5q@P_dhAF*Z3 zbmeWn3Ix1-=aV=z)ekz}m(7QTuy-T2fY7-WFc}Lp{@VGS=7rn4 zt9>4FoM&K+h{WGJbcl*G5T5Awic5$yb8%T^ z?iC%`ikEhaA6=YX`#CCq<41D(oM-^yFE8N60xN*lhx{`E}>>M-eIOIQlvIJ@l1evG#b3NH_5@d4d}&2qSGN}PLqd_ zmQn)0e&$pdt7Yp{TbdM7>(R`PZ=Cj>*teRVp3bd^K*;EQW!D(U6%ZxyHq1+w-A=gs zdD(q&0z^f8A0z@XF|l>`#k^TFz83({(G>V?XL}QkTvyakO76OW);NzHTIo5KYMXFf?5U-g+~SR{ZW? zWuX|ny5gLYI25{RD6`5o#jh9hyq?BUTG`^lNing>I_&$A)_5qlx`@689eadAI&jViw~eAGc9UrLLiy8(-81q&>5FazgJ0Z4mDjvEAG}Oa0rLmEBt(C+m|pFclo8onFvBJW(k@W@W! z^T5sC@5S2Z{N}oKheF7SA_-JnKJtm771u7R@o6uX%D#K|&U*__l0%(_vm8nT^MezJ@VyW^uHrs7PI1UGMt!bi`OYWixU>d7-O( zD4&=ezR>8ki?hntEuAs+3v6Uz-C~R7rrik;n0jR~*_SL2e6PjBB-jXj8QQiyv6(4&qg>p@7#WY39Jgzc>>-zYb$c#zCowxzPW&jDYmJ4OC?}m&w z#8z0!NJ<)@0OQGVm6i7l%6!t&h>^_D&0-cI({vcv`0{5oO@0G@#6)rt;7$Q~c~ixp z6~2!wu?pb>g?~gG%+-~ssxJO$qibXo*WTeHd`W()471@lO#{_6|I7>Bl}$u3S65hYP48xdBQpO?41;hev@G5$MxK}dV3TprW|PWuX+v0NV`c35RnCP zu}AMmK9_FsH7G&9JbQK+a=0O&D~PLK{i>2DtIA_v5y<$EDnZMJIq!L?neLnr zIv$w?wrZ3DTPz2dS&tH)Jh^5ul$J2(A1=PLu^SP*=~CsV>*=ZUTwzbxNXOa5o?-|5 z5YuE!(xQwVn{JSRQGPZr{zhu|-S6BdPBb-Og_UniW<2{hw*{Q2(*Iu&zdaSgiroU+=~?8PKGa zLX?$%ppQjQrmN7DzJbzW$_Wq1P>__R6AJqC7i(|){C+<1+u&<2+uO81#$*c8llg5S z*9!mi_%U>IS@ZUy-^jbLz`;73k2JukK!`5kiQf}rLiDZZMSQ9(!t*){-y15qYEGYM z-R^u*?%>kb?3Qa(8c)CNb(x@rXm;fqE&CO#8(0%`StZp&ApB1z8hsa8_7zzPQn02U zHaEYuY)d{+b!qpxxaRJ21x=CK9h6_eC+y_oWf zOgaNH^R6(Lb7wU;oZ~aujCUKjJK9`3&kz=?BQ85`xo2*$%8YJCO6UCfJHjrZ&t0Vx z@>yyl6SYIBzN6U&YBijVO9VuYnIFOkqFe^U*P_z*i&sxJU*mRVQq)rTS+Xsm>88n| zNT^kop4N26q}8|Q5)P8<>uSzAgxkHlCw2pKPn~YMRl22ALL0QRG~Vd9{8fgv!s4vg zJt)5M!3%9rWU6nM78vENE)Hp{S*!d$73#e5d9PH^*xibSB$;J5xx{93eQBg2!Dn*P zRFLK4hYw87c(*H89;Vk#PFC&)ubNv~rG{I++M4ekgi4wXD$hfQ4#7U(zkA1YGKBJQdFG8FXm)X#F;D*LZ&unSWlI(~eajRKGY+|fiy z6{ebV%IfA;hSm#(6h>Z=YT*D~i=oo+!q;;&JEEAFBajc+q+Opu4LpG*BGVZ-8o|zc zuinny9xU@S%gD%DA6wBy%LcYXxydxY$u|fWrr-o03td6RNoN`M@7KM2`48b-^A*$n zv(~QNFOL(q`r%5mIN|4emVH_VaKW6SI=#8ZgoX9R=EO5n*6)6+S#CaqudgZMKHl^Z zaHyOEF4V83MW~^=Z`sW(rlR)b15O}+oH|ZH>8Bm-3$>Z^m*|rlw@a0zZo zYs&}-Mv{l~vao4oW)nr&{0%>}lwz*J6;E6ZB9=tl& zHu65atJtB1wpaTc@$-NNW!eoOwJ&)UdCm0BZ!w?P_G72Y>c=RLE~MZllYkgQc`BIC zMy96mFyR3>K%l!`-bb1%ZV?a@)1984hN=3hZyt}ab=bWLHLHBcMhSompZ-PKa0V_T zgkV|ISsM~u0HOctCf^kkn|E99*yUHM+~=fp2C7zdn}|bem2#@*88~iP1}$`yzk{*GO`Oaf%G)65naF;OI`o`yA0W z=b@im@jp6kXL<`F2?++rD4~RWo?x=K=UqA3`D~rgk8N{6O0sn*zgfu(ZV^3Zfh?jKI%b^|x6ym+LK)(v8 zEl|CdWekWRgU!`>5}eBP{iE)meGq7w1(}Xt!V7ncJ`~$0u#v z$$FQ1V*5&=o4~yoOVY>GwRz&UTxh`F&9O=Rw+~r(p-v?m8yodhCu;6i%o=k5GF-Xq zQrx59x22sZA8Xq;SQ9*3F^SjD(n?$!aIm+}q@?r??T5*sNwf$^G`=gSJcR7l#0i>w zU#|fb0a_icw7t@Ce$logQ`32{x`Iv8F*)|Mac;okAZx#H!q-edJp$t5OLxfQWr2-* z{HA-=Mn-y;%R2P+yxkZNAqPiFiOZR-FLgq;>RJ@)$a4c0jCfAMH)G2b2mA}Y?2xq? zHu>B1YtNSkRTew4qAo^p3IP?P9xH&78z|KSaVPu9lixw(0LCWd$J@O#Lv?k+bz9z0 z-YK@&PI!x973%*>a;%U9+U?}2Q_dg{$vt-SMSM#NYd4$?^RE^e3=*G9^wbyxJSle} zYDI$xMzxo|6Dm$g&*8J6C^em)2dQWVD($C1BJyq=; zL$qv3h~C*~UxS@2c}3Dh!Q3-OD_#uM9zGtP4-$$fr$=+(KulM>;$w0R85z_ETKh4V zav}75Qh7iH&;)k&_5u!+cVa+63`A` zo$J9ay2NyeJTx&eK^3oS*RDNHN_hU9AJ-T=d*y2dis}50)(PsLTez4^6`GwNIvk_{ z@ix6K>h2ljVT+P5Y#1+Qdmkmhpcf0wEA-F^G3fbDl2n6`hDdd#9J7u zn*&S)@9z1C?87MlvNalZmZFi^*o>8x74|;5O1E2RIhT{;6wzSYYVjz(OA&YN$_M^{ zH!aTwu`8voLS2^y!h*{Z+$(cpO!b1?k91mTKSVC(Wa)R6m@ry&6+Xh_MNQrwKknTB zI>os&zfg78BHwuMSxPt7i_O!ePJz7qc2fgHYei>bt(%zXNc;1qF~p{BFYa_+cZ-l9 zh{aore4Q* zuS;i<{w8}`UzHW&_V_uiVz8gFxob6mFTao|cPQ~1Ja=k#Zq#edca@qs^vu&!Q!{&f zQn8OqTk}X|LQw4>1z=9YyQ2B_jL1{k_!qW640ZR|BrXQ-$Un;yZBESfUy!^2W3eVU zv|aJUqTboFx5`3yYeIL{SzAVN7K7%-WfiI2)|M>4PyGl+%R4jz=jTT&+xZpF_m#Ws zY^_($m-S^Q(ydjvRGQCM3;^79CXNVjm1QC;2Vo;fzTW_n-(2d2DAw@>%ZrM6Laoz( zVieWn_lxVP4hs|B6)`a}JXHe=#nKdKt$&~5TZU}MG?GQD$i!OnIeK)lUYd{ZGNhm< z>FhpVXwMK7`1n3&%T4hq0E}shlj^1-7Ep z-Ouj9{1DE*=~+rWXYdtXZG0!xML_PH-v05PAr~^F^SAuz^*5owfBG04qH4IaI^Sp2 zihE2OqSPQv*c&v7CpxZVw<)dPjaPIi+abT*_0_Bw4pqM8^mcP`W`4K1<57tF%1*OT zJ8j5!?6q(<>WjW#%0$%|pG~(X0 zB7c8)}01&OCwIO4a)x*sPR6OsstfZCmV+zyTN5QEVkE7stJX` z)q;x)3lQZiJaG7of4*hV^vSx-V*+l0HM=0eskK9C&!Yx1(hq|MAU&<{jqLsl{XK-c zNoN5J`nwJV%?dr@QXb@0wSpFWBUl01DqE+V_u$UKDZ4i)3kpU07vfhwMtR?<)b+;Kw;9Qpd1Ua(v>?&cYfK29kbZM}Jp+ zef^M)jUz{nbef3Xd+zcXL!r|QlZnfl+`j&ECrbH@@6?mY)v+%i7qbeRPu=~NoIes1 zykA2ZTli#{HbH)MsZm6u0pWb}eUa-jE4Pr4W=cv*t^36s;MADI$iSWo01BG@R?q?6 zb#s6{Mr@^3<7!jo;nKRYL?ttlNfCL(a<_X-6qj!1UZKjM@Z;9b)-oW+sE;;Z$n{)% zcFjXbUGbvUcfOB~`Y2B9ln>S+b)d_T0DCia&w_Tw6*7n{3u!3t%)Dw8)=!XjL$yIE z$JRH*ujh{Ff4|Mi!67ugDE~oQkrXpowpq6z_hcccAEg?2ra__X0Cu<3u92ms4AjQd z=wHSQUs4w$5X39v(>pz0n!;!63k3B+y_T z`^wyUs{@OhU&y5?@2sgGrUlJly;)&_H7@lJVqjAQbpix-33xs*fuea;XVKK=2>zK_`&G4xxItGW5(At9E?8B25HgCk+5?TjnD$8AC=!1O&c z@{=LfR1K*gqMsvX792G!()$Rc6wsA&p#+1RXpn=l;G!@EalsJK2MAsoL~;h*I<4DH zt`BlWNyw%@VMjC3Y@*nEydhUFBVv*ajJZYV`grBY{iA5Hg(guL8bKprtYg0N%$%Hs z08>x$@Jy{tcQ|*yOaWdr8-e4@;vlYdOm_lO-sk(C=~R=gjm^H5L)N;E*M6S%u)p48 z*K*~jO|bXrwzD3+B{>jQfLP5y#S-wXDJ_-(I*6l(w zDTDBes)2dIal5Pfcy@r&^QbiXy-I{WjGi0TWn>0h)4)Sv%@W_B*yYB60l)Sm-S%ZKYZu;`t zxyQ5BFbjb5qS^O(r!F_xZB0X@#sFv;U0{1qGf+zz$oC}+wVUqfh)W7teQrg*7?P3C z#rTeGQvZ8e|G@5~7vUDE-=}3f$Q39msCu-Cj>N)5J-t_TZT&ZFS97l~4EAo5hpgH) z$uxOgGy9hs;}O=I5j6^VkXth~6DIaArA9n_*!ku*RVfg!P%OXv&2&nUG}G0A(%jHq z@aIfaXhN~N0)qQkWgS#GY!dblZES5xK<+!iNPl%zaAPVhis{gy)Wy18OGvKjT3W)> z<(M~7YowA=bQzSd29VWBaP>BjO1Y2iX=V(h>cT8S!qdC&M|7@TOCIWyKz6suv|X8K zH(u=#sB`wz%37{IE)c6#Ko+Un5+5RZR+zKNd8Y%DZ&%y{WUe9>3$vyK^x|#H>uPr6U@2YtWMk3U!;W zSgpFr&c!{=o81+6&kyuXNL^*BWd*4bhWre}TE*+`8)0GL{5)e@qfs>amc6XFi(5*q zHBQJ5GStR}?4;Oh#yefBGn4e1kpS2e#sHwk-*85CQ(YVTBR;stIbD$K1F>r_wJ!m zD1LT+=kw5{Ixdr%mc?2u5=X*yt0eDPtTEyVm8QvXN!6VD|{U4 ztRj>1`(Aq$b8>D!$jj7!iWeSef;O>*!zO@3#t6f>f zTy!(amzPrlnW`xu$UTa#zn?Z1|OFJ>ORaaxJ^%1#5NM7}1-kp1+ZL;({p4e`pf+&wY9 z&Vd>vV8r470N{%2vrlTR?(;p1nmOSERjenQvJl%)WsT1st~DjfT&;J z8GiRdHdJqyjT~btS)nIkm5{cwB2kOD>!rjba0c1v-N{uo#_|~E=s^<08Wvw%<)4h4 z?S#Ol3ljopNB+F7T=0eFUMlBQzkFGz_|#V>7PibM!@qC)56cMcOsSBj{n8vhcsV%@ zRF)D~4by@&6SWkD!aGtv=sy7aq9JHDh0e?OXl1F@I?X^KL^|a;0?k7Vt6KIE9o()P;j;A{JC@IP$wqotIUui zD1$-YAMi4g%|<7)KWwMu!suW&d?fgZDf=W1~vM)GBPrj0>fxS_eStB7@$7- zAblKjD3pLCV+bnj`9&aJ@9Okm>g9tD1HJJBGmnSKsmOy@LxU;%3pVd#t34u zqo&=gXmL6{6|rRN-R(Qq;ui3-Zsnazkp0qcik^#yxytgdjh|{2aS5%k|C*4&YMGca zHm2{aBeM7^VtZqyqoYMBLjqZqh{$EiFxz{eU7|&?U`n7(T|-+RU_4}*via^A{(E}u z{aj}qSmXH~vvs*RkA&0ukXCjB`*aGnzWc}}Y7Hn&`M3BVJa~|XmagOW-MSo`kLs)| zy@LkNW?R;&ZNLk#6teISLH^@0Nc~nYs0_h5bf19>!O#8#n{}yU+j*IO&%3}?! zd=lwQRgI(-81^j$z=rBX$B(m?O?>E~=h(7nj0??APM))!Rlsg)_+ERth-ipTjt{?m zv8y$5aD+{K#ebl?ygbU(;0E-Zn{>iNwX`wlEa#YC?LM)uiB=q5D3F;LUt8SjSqx$^ z?5S`GcVFnUDs}GcOg$OdndQLcH`}iH_T1Z08TIO8AwjFUgoPUK10~Ml6Jl!ZrHKS| z5Kg}TT4Mn{{O-I))?P%P3GyBaslYI$XgJbOEk&~t0K)3i7{!+#6>p5sg{*I|*#$19 z^tnpQu|H<_`8l8rW28asP8|#+NS(LOpFh9St|2lm?+(QP#Lj3Ks2+9OnSd;U%fK5D zi@NF}m?NzYFiOls*^{h=7r6@kp=&q!xN%? zsC@u5wDS;eN#>k6Iw^NhdQWStYsO2e!7pkA&HvV~atEr&%u8G$D3FaF za3@cb#$hOI&sy!agG%UaK&@aLI&P6?kdq1}Sj+PA#*#^ENfV5=x~na3tW@uXyKFHc zQB!Zl$h*vAcHu;-kj=;QD0lrv(fkTjMU1jPwoLX zw8nAwgo&1E@QYoPrcR_5RIhOMSlZy-39xc+En=+q-TENru~>OFU{L%5PP(E~B(7fY z^UE{$^R|`cV?KMKv-3S!Ik)xqiK{^@9ej)c~k>iA5|D0cD*RKYVjI+Fv?3BpOLCuPP(g+LASFJ);D`Q z)Tu+mkl|F>&5=Qz~{hpLk-$F-m^*Bkc+xt)|bX-pqxXU4aiR5g}UuZD{NA*`t~Nhk-dFf zX!m*=k5k{bM7A?K$3Nm9cG=;|TfeI|c4m7~84@goh@ti^FS5#!iI&cI!Z!ghYow&u z1t=I;zWz+J_I%l5vh=DT455lWNChoJqM|@`i3?B6NxPbQ%hu1UQ265XG}N_0!8hD- zxn=r@t;??Hssb_!dJBHu)Z8EZv3_y%TuP}&M8+*c%^G%gHEK5eVhzWf>V@sDGuPc$ zjmsOWk3Ber{0K(*AFw}a?=j^B@kFHh#~rJOjh^8ZUCv*n_;^9ziDqJFf3djFVXf{@ zk&1rZ9Xo`JrVXi8cD|{0;%n%#+t;<0)4kiHmekaStq*K@SNg|xr@D(qBO)U7n&SN` zT|OxL*(IFz9s68lE)l?!6Bub9FK-tgx^0Kl*|!8MMj1C)sSzAPQ&2Sy7%0Bu$KNuV zX7Gc9TUS??hF-WPsCk`)2INE7=$P2&vrv>sn4Iz0|;Nb~9xp zYdC@86!GA}7hTqo{yu8O-MJu|1$o+qKD&a@`!O{KNR0$d)TU({<$zeRZC>l41T&bT z)K4$9_WC4|w&yDnfH2yV`}XjiIH9syOw)VSOnEb~!eks`5{Ubw(p!DL(^SL?<|A!CjtwCG;9DvqfpM ziKuy2EYYlMaSj=RlhVRJG>mK%F)Y?dm>GUMMAB?3$JeLj8MV=c1hE~RI0W)X;@aAc zuklhEP&+g&dl|=R?4{?_v$;W6(8roLgW=D$D9A-^2*59O`)G1hplQ#n%=M?AgwFXH zne40$x*5BnLMvkcXC$|~>LwK?ZghO7@qrV_kwjUq^Pu=OFaH!Yjsub+qqAF9>M^}; z@kLTB&}k5!EP!ITw;m`6`vhY)@r9fZ5ZTEWT2=OLJp}9P*7`D(MnB9I{cw#L`Ave< zd-r6!EVI2b5sa`RKX}D%qFzy*1}YUm?)@YmL6cV(z?y>UDojU@&LXoDOrJx(ZuSS! zs^*k>u9k&`a5hMTxTXRDcX_gf2yBgH@T%)0b~!y%-}wAl$KEK@)hLoDa?JaS^%sNq z)B4s|3>!P5PimA{zuyC;=A}?Evy@}te~9CO>yN?}!VY{8*Re6Qc^P0Gn1JaG053Gjv*+ zY6CqJc{HYJaQ5tKJoQ_gW!g2hEUhf{Xa_&BtpN!#SyUN_H+l~Fv2~Q;fGPn$N%kRX zC?0AW;!K(TEdik!XS;WYx6K5nP-ocMMWh z%!bR}J$rJUIx;PHUopbnG9pGH881bB8ntm{L!pYvx87`JwV0aUjNOZDy{lTR%>!tq z(GdK+52E&G=h7ffxRc=tl%g5xaMKUD31wEFKhFWw7Hj!_`^l#4m>>Iq)eV4eg{XVV zz~#UgSRdOa{aA!6r&7)J-wA&J>|Ek^w0M8@7cjd8EGp$%Uc_QXVe~dUNKZ$2AmyrOX(z?SDE4l`4H)>h{_x32PcIsnFvS)%ZEfN& z#uu=ay0$j?;U_IkO_IVc=(3&Qe+O4MzZ&XqbC4m&wh@6iB5YOOp(aJL>d}~cn=>h})e1C;L_%ZQ? zl`{f#hegr*AyE4|dLNvzWuPixpr=q5MR6+rx_QE^+8^Ye3G@yYkJ|Oj%7Dc}m>o_tNM{aeO@n(}N<4;? z3QUSGLjSdbGH@KqJs=FHfu%O~^(`3$KE&LusBgYvffnvdfxeUaQU=?>2P zc3Fj62lx3Vv%fSgfQw}e_f5?CS3xBMvpol|7@Ug&oz~>r=T(aHf~dj3IpK)}fJY3> z0XpChJZaZ*8Uggpdp*uf3tzUQXKW zgmJZkz*WkF3s`}N^FFNkTwJx(g&5c6YzTMmC`1_+m>R;DT|j-MOE@(1DJYnOlxS>j z{sQ7kAu1DqSu_Ydg(uaZ(9-+IXQqa}M=4q0eq2CGfcv*1Nx;s}f{(xudJOnT{$wg9 zOc-K!%lq12*$cH>iP?Ta73%18^p>Igt3Rt-8i9>*cFxT*4k-gxDJ(oZIOrQhV!$Tw zgWg==>FJ5jFm8#9i<^*>IQB*VMucEgK7rzxR#K0Z9 z=@^<_h6B8c*|j(JB^OJ0G#~!$vQ4LbG4&r`F<Rjt3U+XiU@0&k9jePzX`tSv_?teR4 z$lsqV{@FA4zdz9A?-NAOb3tGK%^99|^{{pM-=5~*k2m?Z(}c79yH)7X{%#}HF$+Q5 z%`2GL{p{3AX$lw$3WahuO$-<2z(0ND8;Corg;CfaA0K5j_&Z zGXL_Dm4F8#h)W2A=Kl9fR1TM7g5kv7Fvb+`(f70Q3G~7JG{zjp%^PBlP)bVu`GLy_ z^N3Ff9;P5H3kmh_7d&f0NJ>&z^j}}%vS=gE@cySOiyLE1ac502tT-t>3>)r;G3E&F zh9QQn9Ny_r;)2aF0_D!8n1hrUIovr@41alsInehs|2)zNS8*Lmneq|` z&eRSgL%G0-!`i_P9v#EJ72w4ku*dxV=c5~N$L%r9lo7|VwWm37$*>q}B=kGnxBp)+ zu@ku4_82wFGd$@3qu2++bT~s;4fmS^hK*9-WT}IAR#F?jHMaT@DxlN?Sj4!6nK;1gGwZ;b%v~3fo=^3iS8LzwM&?4lc?O zqe{sifxQ-W1h?pj5ug&jh{0M%G2%p=Fo!w*2|%dr=wDxZFJW-XS1`wMVNRIe+5eso zFyjBcmELN&A}0(V$KUe-)?okF9Z`H&$KWEhFdS&(f5)A0h90Q8f>U5E;9Ex8- z_nc-W6_b%6ZuPald;PUnfByQ{T8c~k??$0L9z|S2`tMPsWr#aUDkdvN9ERinJ~eS!2JPb?w!_Y+G<{(53riDTh3r{G49p15>Q`q#uH1TV;l6Xzu=1x76U?O3eD zq-4R9h@(4Ba-rAB7SA5vD=G_49^We_f&M{WL3@0wxCH1yR9uX>_%g&USkS!`E9Z`{ zNr)bIL%b#-g+4>Zie5RHDQkpu{cBH-4}a~4#Q$ogn9s=`Z?hEWQdaVK%wv%O+93Xa zi;RYw2h!V%Qz=kDh&Xk*e~$duCW*=XZ-*voz65cxM6ZYv4<(5z0fv_TZ$qn~OHOhB zCP6eBztmO&O?{dReS*^A-0{g@dUo8kxHPd-^lM5-+T%;V)Z_S)gyivD(N|70pl4~B z$`NN*;pijgQ*asd6$VBUV5DxJJ5Q)3QN)vC#FLKU|!+6=)B7X0E^6i%9|P|F^aH z&+#P0iGB0_eZROkxLy7N7*^`vTK(TE2>c(IvGA{FlKtm1{nzz^OQ1_%F#cnbf3828 zgPu%A`hV{3uPOg&Y5%n|$Fd-Pyntu^o)B?w#ec0Jnw_4UQR<(a|J50B{Yb?B62}r+ z4zvSR6D)rH%y|d;vj5_cBP30OcZzHuxf*QDS65Lkuh=;(zLo z6tOLOk6xTa;!hP2|D^)5pgaEPbL8kFS~9dYIVIZp>{+xoEgSmvSyps0?Th1YbGl#O zC+KC+W{ldj;^H!3Lej+lBqYJsN?swFbXtrOHT)#{15*$>^1LA0m6;xVhmuH2qbXU$ z(V9#;=Okr_Mw8f1nkW(Cz~TJWto#F$Dx5@8^3QweNW?hNt7qxYtKM<3MY`Paw!3g0 z>Fs~P@Q$~mJJ1Au;J}z^WhDQ84lzj}GynM9X8!*4Trev&rrs*$9uxb!TWJH7Q5w&#>08ZRqZinSb4@3sEVAWy z$TEF%jp`O%vE!R*leWqbhYW!$x(}%u(PexkruSE@V(+@_uyd8u>hao)I$nCc4p|y~ z3tx3Nh3S6xd%-OeC*I=WeBLDE5<$pI$-89^S}N02$6mC?HnTGiD@ zKDRR)Px;11DVU2IA`yB7$CjP_6Oc=ab$!l_Yn6@PAKpLn1QGG-@wJ2}nn|j)A25ay z8*oFnx9$G(B^q6;VQqUGlcFOR;y<{w3UWTRF~8P(FHUzZMJo{5w5{M?nYNW0E|V-| z;X$`|pS#>`K^b-V0@gj(s7~fb8mI@@ngSjk_c zCn*uIQQp;&ntB^k8aBi1fymDn$mZe>nXWVMmtVPbhLqZj5~uWD2?is67+{!Ed-!>@ zJ&yoHt^k9PE5M(7O_IT27hoFKuNwO$E{*wH8E+o8tZqLPtcAt1#MjrFEwkih#*7QL z6RI3dr3Jh++Ux94u~L1D@vhm@n8HHAc5MMcBYmUtFWlR)31uhKAD#T|%N4Bhe(Uq| zTTJ9l4at#VG?QPp1G~cRyxLCmYMKiWqz-GQx(I{mr}_KWfe2k6RbI-c4lhsTy9Gz5 z@+Cql^bV&ZS!MGd@6p5{g+7O+U{kJ@oHmK&*M$)D;R8-4#{E2Y_V%bcx>Q5Q(VD2@ zrn<*D?YyN$%I*fe_`YP}46FNN*+mvr_g_2Iew_4>IjsAUMsXwGF(W(Qx)Jr7F6@!( zL@grYhH}31p49^0P;+T-1?msu2+rPGDp`fR`BbvXf)ALB%*%WG>|#FS`=0K$sM7FO zKsI`q?+^0kjOY(0Xe~Cz_x#zt>e?}{U+3+u1gRhw29dt5ypM1b$wCDK&lHEhe9^9S zhn_EEp^6+WIDag1fl~o-?J0Ql{Mi}F&H4E-1w?oYHy4)^!AnFgsIc2>K1J~8IwX}) zbcz&yuu7-G*XEin3)-kNTRz;ec5RT}`lkw#h{Bo?Y?`c0c;a`NxN+ zQ>dxun9a$sb>b&BF3zHGQ`*g{;A6x@Pfm((@B2`9{Ql0poP`k=AJ?xxR6{mNi(kf` zMXxB+vVDbau1_Fx{Z|@tOa!nHa@c-h)-`m?C`O82Bki(XSCV3ZpkhXo(^Ok!t>UZ;79`@{nM+0tv0&V$hd@o5?AH2KcBai{LoD6Uqg4&%KoHhKoB zTRD1{=NC$pjl!st`m2^qG_@77fS9UXFVt62dD+`1l55-IwtKKW(VwPz*<6qzNg1*x zCEwS1&LWNLQg-iO9)qxX1{plVO$QDGB^-r3Iu^W~cSGYPozqfN+rhf#Z!X|+od%pJ zsn~cUK7Mb_Vax3;Pn)g^JY zj?{><0?s|PX_sJ>BiUb!Fq`X48c0@@kBPN23JfglOjgXe@jN~c zx!|+AiRNSxDtcMsez(wY9TH6#EGhv__^!Ok z4n7L1H!a@R##zg&fDP@{Q!etIprte>(SS4@j7x&Y60t1>CAFF@FW7NgHV~R?X>_Ol z(c^^z$8w&sY|B`%glPwRg!L|LZ)Xy=JK~j|GOV(YhDhAe36(y5E z@7Gu?7e4%n8SjM)Dz68>MCcW&w%wf;3%@Aylk(%I#ZsVVsA zX!e`Fsp&G#BSFdxU%z6SYf|7-8#m!Mr9T$1(p=|p(Ihz71UdZ~USzqQ#QMTz$YsmQ zwP^4+pi6u*HKn>Ky1a+9WEa#`AeD#bXb+`_52jns4-_3?SFO!oo7WE8^yH?IkT`vg zzZ0u=bmZ&SKK6-@yNTMVBhtCz=$jI9x!;_L3BUVoid$1l&j{Fmy?P-7{Uybq$T2nK|Fry}iP`ii$$Gs%qDf%&%W*i8HL8 zP|{Y9WbbuI5i&rb;!&HFv5}FHK1;hMV|AN@6^?p@EX??4BS>FgXA|FNGZ9#B1!T$q zT(qmS=e=|Z;n0=b1LYZ&MrTs9$>G<#l=Ur!$*5RmK0NQ@y{)9IY!kY%l;t~d7@3dD zEe7`WU}|@-(qUUkXzyNadZfBmbSGDmiJ@V1)lr!$#TJMDTrpd0R9qTOTwwY}h4Eg(Ri z!}lB<+S?=iovkJ}s~rjgZu(N4Tv!2q!*!FeQsL0GYLzi6E-r48r5T%u(*l+m$V2U* zmkeuLXI1;i-uHzL`*y=v<;L;EB451Ze4(<#;jn{`PnB-sAA==Wx1ObH8UYVPSo6gM zFrE_BBs-ziCM$TqdSrTLrenveM(yh3iNJjp&1m3C{%ATnTqxsj&AMxAE8*BC9xo5+ zc9tzJy4Vf5tgUZ$n8(H1p(DFKZl4TmPGiF^8CEG;vdP;VU<-GR60{DCGYjh^+76nz zIp+KeuLsO`0BNndB#*m(Sqbv@D!Qq6MgeNy)`MO$V!K$H7$UeYf8m}v<>jz|Kv6Mp ze@WWJ&&*_HW?rXa5422Mun>$(yn@|0NI9tWfo09j%)|%)>vZg;N) z{}7gR?EM;Bc{5sDiCVCtx*uI{{Z*`}t!=B8D>1uwFEcr4%UtcojoJMKDcATg0dg1}eZc%nuFxk>P<1C@DtvFk zs9_J`qg7$!**Yv^sD+~8TCW^VPR`LvCYe&VF*$_q81kc>G&?X9-b?|@Fn!S)Bu&t# zXG~x=`nPVq;sVBe5E`!cEs>W#rE%%TGyNRhq>8&ADP?Qr-PjLyH@)f-uY~2;*;`b) zjrju0_pvVvHe>xdQS}I)ld>`FT!R1h?s45*a==FGzk#G(=RjxK@u;I^%@Ld`4V>qqj{nD*yE1!~6!muWssvJme{)r>!mMZTa-+QwwZx zP!u6LbFAK1Ku%6q`M`Jssqf#ow=77sq88O|B^aCF`u+ppK@8u$Gpk7zOWl9qoLYjY zH&s5`FYio}-#*%o)9sy0fvoSRj<`xC=_#&s_VUv?XPY?U9p#`Vzb*}6f+SssC5kMo zg(sw_!yr}5YB!U5pQULJned=f2_5zVrU*RVvCKl;dy)ieLnjOjRqsbxIzz+G*!&Xo z<)Z@E5h=&_zw;IIQt|qZGR#v@v%btsY+j0viI3+`=rEnH+awI&bRN5TnmN*UPF@P@ zZ!{yC5Sz@c(~QFXsx*q37ge9!Gz;x$7N7ZP|UgH@HR9A8W#;e z81qo=!Cjr9Ki6xMabqk?)@vL$gTe8c*j(1VF2MO+fYF3JM%fNEWP#?0Qm(?C9 zFxmF@{}^p^<}wdYzHZV{qhqmkqlHeqM9;g&6zhqW6tEa&t1#=|;F2U@P4YkV<Qbr?5f&Qq>3@6Vq!4x_T^DIcyZ3ns~80;@gVqO8-RI;mY1J zBH*)qd7fr$`1Z!;@|b1x+V9@R#>UC|k>TN8iIAI-#@csw2okBs!S z6N=9K`ST~|^WV2C!q3mbU|z8@vDZ*m1)=KsCdob_74m8A4}%_K;>`&b6S9!6j6 z76|F@HwISiBCZTO&XtqedOwlfyvpVEIa=EF#?sTURF|{!v2P!domN1Qz}|MexJ(l? zq@+yw4Kp2GrmWX&O~V8jwBwa%^UQ%M(XyW5;3xrSsyBcUb*&Ecq|jdb$jFg_O*l6xb*F4r-A&1 z>;yM{lhmW1wwdh&KE8;LoWK?Nug^O6=NibiKYsLR;}eTJub7x&1f$5-?a){jV8SIF zd#}^-XnXi$)nBk0T)+N%`yLs8-Auc(agOfTK)RYUKwh3na>(9{NTqx`s67r}T)%9n zum2LL_+^c@&!1mnvDo0fC255JOzhg~>Z(U&?CBOa{-~%+>Q2+2qoOlODX8y%eRD^) zox661l}X>)Uoe;1+Y^_-<1ycChqI_EuPvW^o)eY)_ww;Dghk^nirWaO<-+^?gfle;W2ql=++yR zvuDq`4WZRPUa@OCzq1p&tn+h!$GCBqK*DG;Ehh?zLh~s{fyTf~WT;OR6e9v^kpVfn zAKToj7urQIPBU$KlHT)*%u4&F)o$g2GOW}Zh9KVH;**jxEiEktp}Ix6{qs0M^YlB- zPx9Qx>cXEri#c{9xfWfew;D`7ez%<7G9SVV54k-h1t_F1VWj~d&3Py&Cuh;FyaTn+@_g!%)$%#<(FI?3DRB7CTR^n z*4KMRYqR7v#Zlfn`zn4rGf1$#ib+aIso0~S-%%U$Q-ez&&X3^Y6LfjQqx%~UL`R+r zTMAiMACpIC=H~KJF-zQxrlW;u(d$36^h;bCriE-)oYdS_R#i$0O$%?OrKyIY>Yklj z-QLD{uMT(p_~FqJFR8^SZ1wWv-Bk~}hXFf#HrXOgfAr>?q&WWgHUf4!_`t2Z<^kHf zLlVK=`c*}J=e_L4-9I8C`dq8WX7OU0UnV_1gMSkfHo#fec}#w<{Q!X(wcjnh5Be^< zC0Kh1&;GHwX;SGl(0SNvHhd}N6YZp_gleFg%ltntPG=Y_!{piZ$l?NMA*Ok&r| z9lA_Ws2*yvJ!oe~ma1r>xW2O^HjZX{^Z|DK)xnG2UQcBkpd+5U;{;(~0{rxWk&<%x zn)>qP8P|!XvA&s`buvr?AD+?<6q<{7Br941rs3_DV!&3v??e#ha*b|^65E-8hIw6SDT)C%LPD;7>S*xZ-EbU$iV-7ycBzT-Ub7WW1N=uN=u7I< zHJK?OFl3Xfz;OrBXUlXIm6Vj&cf^}yR*5uj=;Z|X4Q=f^Jla@m@{6DR_O222{pscK zilmqrI*r~uqnrxQnYP4t?mIh&dnYd7MfxZWSb zX>0>+MWaQOY@VLVsYDI<68dr?cc1i&tjk%Qn{RDxbs8$m0`?R1f^4RezP~(LTemZt zfc)|8s^Y;$pGDcdr{HSrt5>-NB~2E@*@x2$NZkE!5&+hf;ZoZ$0ZqQRfwKjhyCdb2 z_`EsqJt1E@M>bz};Rmtoim3S~EN)P@SC?YWjpxkt!-u_-Vh;T8yY?LT_*yAXp4{+e z@(22sq?}?{?6fd(#6K3ep2RG_Wj;_~7OZy}1S%i64}R|M0;7o%#ur>cUykexJv}G+ z;I3a(R~F;P7`~Ex&DaL_5pyO{T??D(sR{jPI<}yS&(c?iY93_lZY>o!_CeWs(9vP2 zbtmd@-(RDb(Izm;i%iEr(tX?tthHf?>tEnt$Ku_Rg5AjARRVplYL||`1&(U|vU`Mk z$V$?(T-b87iu-Uy9su$MhX;ELdn;I6r1D`dv!v7f{?0mTYsi6~mNp}Vl)~x5A7?=* z*7*JVce?X_tIwgO@qiVgAbD+Kl9Gx55HpK0y^t`LeL%78{GoXpAB)RgIJ`rX|7m8& z#>r#qx%6z{!S@Ieq7Bs@0aOHL(7k%Zu6!tbGzS=q2LJU65Zo*N{Pq}FSpGLb7-0mE z2TdUKT)4H&%*<=mCZiLv9roxkHzU)y1qj0SWhg{VywdncyA7zQ&{h+gp z&)JNZTu`oCs=AXbtR5W`6;&L1dZJ&Q<3PRniK1Y=;`W{Q6%`V|`4L0xJ9q93gGDto zG?cLaa=s%;-V6YUcnL?ty=zZ;me%gZYF@fPam{<7l16M>XXoH><-~o6=q>=) zBxGq?$TX$&^BXA$XFKt>JD~=9TT7K7qPT`Z820!uP_8WpxaaDOG+=Fk56sQY6)R}w z4heP~#tM`)h&jBjuJ-N38Rh7jj8wT+KA5^8gs3y_{irIJ61wIIc=HX?VUsmfvZpQ|5z+l^W^OJg zH8oz&S9qHO3nB4t!C z@kWqE5tF8_Zg143o-C34GY=kI=0*f^{C4tWbV^FfNHtz_C$u&O`ZKPStBqq*3cPg{ zx_Z?=uD+SZc@V!Fa^Tf8(dZmm+?4%zq*|cW@fG8}_1O-$Jh0Hq9x~q3pU(pBRM}xD z>m}CPxj{9II!`Y}Y52_@Ro#U8l_twmr%pMI);uUa9IkTADUE#QrRGSs`vXlw$H zs;AdOMe5f5u9>3JUmahv9X??ENcqdo84~;U&t>g?gcO>Vl?;{U+`cII+{P{T5>^p%sVVOc=v4M&Mbvf zU$)EP%ZPlv6nMO-Z5e~ep(YhGT`+T|V4>Ac9$?LK!#I*tA3nU$`13BbjMD%Tv$?9If`mj+R9rf!2+q z@<@9PD=!_h&BdYW(a>5hfOanw*>D)Ry|;=UESWI+h8zOwjasV2-2)D0VW9v-6*G&D zPr}05+uIAY$z$pW!;8Q;uqm@IMK@83d(Ae8)z3CIcvLZtr(Puu{r&eEWPO6Ps|gNT zM#Lm1gIME5Za|kCk?Xav9=g_u+U}2568))B!?2j9p1ZZ7naa#k01VR%Lt> zAU(tlB6HXk#M&CUs?Us8*kx?7ea&gQcu?UpMiZUcE`qh9VzIht!@;qn_{J_PFndh?E<7^AEO4KXsut-{ytF)0Z*%o( z2#D7`G^n81r8j(Irdvi2&0e(+Rvpyo=)FkDeO>PG`EF^h#uN`>Fsr`l`Oh0+FIWvr z*c&VCmzeEFmI$MHD;Glkic0+FocV-w_tRIj`DWG01YAK$QoV0YLua&yPtBL4xyFZW)1C4h{Ykz` z^LVjmn{!vcLP{ua|0N65vJGR4_Nc-KCqIo_8Z7bc@J2m@W#%E-SFBQB)-t{S2byB)ojGf9anUN}tHM&r#of7KL52u*C!w~B;tpZ$ zTsRIfQvFhy02&V;zPOYWn6RNxmsvq4S`P1%(6g<>K9+c7*B3QVA) zZ1<+a8++R^f%&bpm-XgbMfKwRg5DajQkNJ`Fa;QM!eH$8iAl|_Q70k4bC-;@ftj~x zL{(-+teeW9V`5_ZX1ms$v8YWakWgWe(<2Wr{t&``n7DU2n9tcvqTyP*@-9gJ!PrHS z1Q$KbLr*6{f1aHGT4wv+=JqxuvbMj*YZWRt{i1gSpnH(1LeH_*l(*6VRGjnq^Ua(f zSgyiwg=2=4>#$$lZ*-4TN=~F_WUPJ+6)IFTU#B&bTfc2fC2scl39_33GmFk3l=b#%Bcs`=!<;J zkgp{vjBY-Z(YpJ!I6(96!0KC6I%S=r#DfZe9&Ha87jTna(-4)9NfeFw9UdD->mCsambbx3+9CO!>HDymKW%4FLpHS4(amV&X# z_zWh1^fY=~(JdRZ2_>=lk*iZFo(7Uf>pz-lftcSS1cPJ`h_qv)Jv+%v=)bsCYef?V zoKqi6C7amWKLHWeDFCWpa;d4QL5|(2SEDmuy?T|{A`*(So3dMtf?^+XR%2fxhq*_% zyTL^Bjq^Am=*Vz$a%pL|I>v46npJPtyT|o_4|bwro<3BZDYBI21?c?=4Rk#?_|T%J zdlM4~htyI@$!b7`NWe4@khzdSEWe5OkllcU-;X4a4#>&TQWedDvaP#&GSmTvo}4Ui zzbDT-0VE(jJ$+4Zdwt!g#JbU{Ns)x@b4#31ltuZhm*PhE0kiZn9PFxqu&{1{X;4O` zvl*eZg$G1S=^Uny9RQ)Ct`lEDgk&IteQ1SN`z3RMHc>bT#DPHULY@JInWre z%~>)9E&f2=yLT^3ChYKi1)kY^ii$9v;aofetJ#YXq8L1?xq7g-uTwqlol|wNU(iChO~dvxVq-(1 z$oimk7UU==9Hm$!?x%vH1r-iR!KOJ(*)%gal0*4>o0x$%5IFDspLg^yQR@Go01${e z@7C%iEs=vhd@`a+QE~#=&`_WiP0c=9a5)+BOTQ@zk~=q}oA#FFUB~K7NXdWWeRJ@F zP2PL)t0=;&L$WsR7r`q>RvfVSwe;EoG3$qQ87X#1jyL?B&<@h0ALpExwihgAaS8Si6;)LZ;1=LPi~#G{{d08+Fr82Z$%qYe z!kfSy&#?zBY-+=wxB<_D(-LVkzMb&(>v^5{wP*HCrXKQoLsiI^BqXE~TdV4l_M;j3 zCgr*zVf|y9+c#1(dgW0Ysq9eT@3UY0H9+S*#Rz5RpFa{RgZ6xgSP1YLM6{PwY*}K> zmLx}C@a>xb<(TfmpetmBK;hA{KMy<78mh}5^8|0a1{ROdCoFEBpW-=;zhU1sK--FIR>d@zcatMseB+aQ6)0Xw(>DoO_4+#xk7u|`NG=nM@F$>Qkb zjS5VKgsgtXm6eH|9((ceZeN9?n*6jmgYbbB1@&T27)Pg3#*JF#n8o2rt&0~gQl38D z2jbg85Wxa1R0EhVuDZH<(Wjo3TD@5M=k&A}G(&LM7cY=h&C6?*^ZtBrY0UQS;Y%)% z)VJV(8dNS`Ommya7694w#vP?Nn=|tA4Z%Nu+#w?)qep!mqYu7Su8X5tOj$nwgunNu zBwKiYRmEX2&Q%w)^0ibIWK?{Hd?-~@n|W87_B2XyPyhI-IaY5|@RT+O0KzMc2U}3P zoX59^fQ3wZ`0!!ib|<&v(IIKP)RHU0$9&*gwYd9uJD^59OBcK_cJ1T1N*r~!kzQy) zz_#<|_lR2Mla;O`rd`TM4IosaV`k0=ev$v;#j5}cudS^af?&DO)VbIhM@ss5qXeQ~ zdgEp;kMd5baxu@DY;LIwvdn;Pj1^^Oo_NlotOgS4R$6flOIxmS>L79fg%#Cq*aM$x z*GuB!Mk^xw`j%4e=#-QaROp8Oblvma-GTvTRLdE}P<|FQheG<{oiy16!6TQ@7i@~z zceclh2$Gaa+=k469OUo2boPWCf8+MJWwCSd&cqDQV~UA9lY%DWFo>G1zsl7zD<{Vp zSB!|x1pHRso#u!+E+a!j;J@^v0FI(&{kpRIUF*(J8HeY=C`1o33OMTk9iMsxAQ_k? z?!VmM-{;Z*L@AgvfA80jweRmkCDhb8M9{9!S+)x;s+aZi+>nIDO5kb$qN=gKo4W5Z zUSWc$_cee}s3#!ppT4YE?>I4j;N)+2dXq3_q{R@#rBO@LXtEH;>^DWVJGqBsM(v%c z9yE*N?<%1B++w2&DzyaY&t6;_sn!EDG`e~6b1iZvMZ_pz^&=kjb22BQAxYdJ8e#M% zf{tz$;};OnJ~Cn%?fKryF!VQm5fS&Stk{m{hR|^J$}OIe)!&6It3WZrig8tEakU#D z$OcPnQk;iCCIQq8QDAfmd+S^U8l~N%s5#{FCoe7cd?(}J6&ALpVm=|DBy7F9njvH@^e}=a$fA${oF8*k+ddMFlcExiV9WT3X9vZsY)16jL0J&4B z!+&vcs2nvJiYE-MqXr5Xt)`Vgrg!p%p~3Z#5XphU*A6^!8hUzt;$7N?plCvKv;|~* zvM#42PQK6A%m%cR|22y`nUp;nRYiV&{;msk>g@j4qZi0Ol2PDr(|KLffj=sSTx2<9 z(7Gv6fSxU`t7|k3Iw<18iygIBK;I5(YlmOIFH9l#ILpDoq4Rpp9n?*A|8bV4wWUQ1 zq=pAdZCgxobV(I==aoT*6rqQCN_ltj>zw9Ti&vK@M_{lpAZzyK4T{>G39sjpV}OFY zv3uGUBehR^JyoHg1a(0AAlfhng=~_(%LTjJSmiI9v+&e?z@o;R< z_b0-0coiWMHr@{-?p-ejP!Eh(K+)XbRHU-QwDoSfnoU66i5Meb#p1IBr* zwCRW9YpJB6HCw}ngyBj|dPZcvV;_U8cso2+?W%Z7+Wv)Z1L4pxy_fRjY003>tjN-) z2->#|jKVR={9w@N?a!l?2oBtNji-VgK2uSzg{Eh?8`obf(5!+GaUscf+}9rq`{qdR zFn$9DdnrP~27{5FnTNs7KLpYBTNu#dXG7%h_lFH^E8GXku9c zAhxv)m-jF>(XSm%u3ZZ(b(VpYvgnlIuo}jY7nB!4;t143TvC7WW&Kr$eIKCQxipCR z5x|2IYeg17X@#xsN(CJwV@8)!0QRe7g=>IGDGvUy>{@EZwfjH|gxAiq?pl6vCcg?E@C}GJeparPDscpjU5(>PU+(6#Z9776YZ%&m# zzvHEYu0DW0BmqjU9Y(|9@4T|u_d?&cO5x;|dld%5{_q3T6RF5SCDi;0dkyBhvB*?^O&$LVD zYQ~m9BU>Ol1Pl{myaZ$^1EIh`0IuvnNc=D%E61k0T|_x$W%{Pt>IYiA+Tzr6$J-!y zD;4CsK&_#O!wz8JHvoI?gzwE_FQf*z2gV4}%+GSPJR$%I;slKKFc!jsVENN?mYggt zOg?~77IofvfLe3}#eBST)|9-K#GLTgOby$OZ_wjvr>WqdcdLc;ct%kgmEZ1d+-Bmgn8UiPsgDkTP&R48bcdp7XP93D(80S{LC+uOAO zs?c58H9L!_^L@XyG{UU`6dBD07!*(jLjW^iRzy`?Q&k0cDGw~)!p>aE_N~U`@2;yL zZF>x6K!NL@Xr{O(J?j1Y_nHGO7@J}r1Ic1WI%6$B``Pe}FpJy2VwQ3#1jZF))`uM@ z-^<#SA@l$M>)2FoV-KM=hJjEByT678E|I%_tQg!>U{<2P^YbUFPC`c1_ESAz=;s6O zUjgn&pIC1&6C4~&7%0HBL)Gf3q%)(32lbopDBStDGQ->&N=pE;N(VwyJeR_eW9iP8 zR*Yz$ySUs|D03$nq*z+fmkZP)7ziWPB>Sbeo=u~i=MdZ;>9jb7lGBz+cdfl`I5prTZyBIy48T(J5% zph9cL+?wf2(1J3v@|NTCpnZeqOxvJ9ws0y+4p`_!Oo1ozIkk9S+wYcLQ7 z^XZwtHqd?pm&H?(_q#unnxt2ViHieLnjEmK_lW}2o2Av{iV-<_i+6q(hm@K?=Kr)x zOcIvb`W;v(tIYV`zCPsEqB)Rs9k1ChJrCielrGTPv_?)yGN4Q4kd)NbAg=;4hqYb~ z$mt&jK{eB8&Ha8~1m}CerQk zk|G!`A&ZSCz`XGR(9Z`zCa7q6P`4bzhu-KnLQ5i@R>`d!e}3=VZBhONLZwex#T>Ol z*85c;kjPygD-o*r7Zj2Ao?rC-&>$p!aRLH!8I0v3J8=TkFBhu~cV^*lQ2?6^lGQ$Yvr4jSl>rHeR|3QdnZZG7k{g;sl6?$RFJe7tBcM# zG-^a`ZQW!$A*WCM)x{hz3uYC5t0Sl%?@B?ynhxqW!G7dt0c{ZA=hw7_K0Px4q{4ck zWs!wsk}Ud&1r;189He)ep&_q+8KnYPDXZj`zTRF5+fTm%Vj?s&)DbuVO%08nSE9BO zzROl1=63AO)ZpIr*V$h0N|5khlR*S5!4x-*Yua~R`?4SR)sB{n-CaYpv>bhR&PHv* z5Xb=&Fw?goq>}E?xB{T)jiNotc7dI_S83r@2@1BV0EcZ{Zr@=w*9&TG6FUbE=dRuX zcut_A7+|k~LZ-|uwqb_6!!oIFyZVh%bM%{w105LvS*kFZm)qMlMIM*18X9#0OJ?0e zqg-eRvWS32xmP|E0~83bkAb)nkTc8HfdbNRZGK(y0eecwh&;^T2)>oIP~0BWI$VsX zr#p8p{mq*zjr(iu@p8y~1|f^g>FIm^AY^o_ZlCm+mOGJ{7+Cxj`HGikmPVsDTSu8N zmm)nMXSv+_W3n1mlb@adQZYGNyj2{7g?*c(dvk$DEgYBW&YyYdkQy(qaMVi&<+S@Q zeoX_FEA>Hp7~%wWcIKvblze8tI0kL>K;9qebvAxZb%7EW_WnLS<=l4RdTkKsH4ay~ z7TkEgrmUVE?P=}aAd0=UDQH=B3mDPCTm#z8Z;x#y1ALaHv#MN22*B)_fifCk2qnE{ zwLytFub`kd&}&fK1Yri8VzF4LQx2r`cX3#25mPoEW=VqE()dBaa*gfppCVHVIf6eQ zHCw5nCuU3`MH`Sv19h(KYzlt*)f2(>eO^b!FTraM+l;}vLJ8IQ{DKhyKK!%0w%@&f zcAwqZ-EsOh@!tFAx3ilxr#sB&=8CZQyH@rjez@PM`ySo^sW)0>0p)aK>PY4QR*51o z=wO3Tu#UtbXl7Z{T_&2!so52B0d<-Ss)j%a67zyX`S2*R5^(a8TpGlL-PbpcrPVuM z#6|Fc;MNBVkfg-^KS7ab3}f|UkJ(QwVT9T_$l74)Q|ufMHxwjvOOSz0IoPUt)H7lP zz#A#|;r!yUdQjM`%E!kS{`_fQQ{&!1rlW18>xAh}thmTJQ za1v(#^fPU;nWMGR<-;F6@k&7;qzTXhs|^yyov*|8yHa*RqJjQ7lX&IVkw6IOWoXsv z)>bFe??}Ec-2T(aqx7vWFZ%k|ou~#WvIsFTu{A+opQpnhBuSjx-2hQjF0j?#aZWZRZ{ue5(Tr`zpv;=Deh4HofK9zz@kUAzNG(%vJZpb(Iek(pcF*znd#Q8EhJqc**LTZhIp z{JmAp%Y3_bC8McN+}QNnec8`ZYZ{CUCf5LGHVD}6bwN-@*G5Y)Ffj1n>g4dB{!U?L z#uiRZU0l*?l+wEMZRdUaQQOYj*WSC&wid^8IuUY^lj<}NcMjm0mK#^xz{?1AOONwZ zsfXCi-SG7nfDwC9={})>B%D}y?Qod&_N^0$uFC@h11nrdN&tY>pi$nh07?2~yqLis zz+TJ3;RFj4b5m|;oCpo)ADAR)vo&X|7otr1w6E!BI zZ|bu=`r5&~gnAE{wQiV?Zk8({ty696h`na@P!001k}Su7l75 zU`8ursTzrzK`edR3TkEp!*++-l>%ue}7@OpRii*=&gp7b~ z76fR82Hw7w`wviE-u`iHMw>XG3aG3nMkZ00S_BjobwIw#1ibT->$6lRJVGw*do?&) zSLo0#iZ|edTw4~|X=^hV7yJz}d301%+IS* z?eVzZ)N`>CT9`t}7^Cq?z-a!IK@Ujcz;C&rSOi32+Qn62G%L9N zJbGUx{KJPXDtZ`LDl2EV!9`%AMWSQM)ejv&WVH)&;oOMd4%y^=?gNZR3^?ONY?5;h zV$G@s=6ky8s&B)1Z2@MA!H(lw0sJ>Dkeu5Cci)T#rKhPC6%}GdR4|37Uh}!#E>a1g zKK-F*2s(t1p6~q33s1gF&H1Ia2&l+UQ!^ao3qXZB{B0j`vHEi4QwHf_-&n&&(USmM zkbi`$kj+g^boX(mvH}2@9T*e@3POa1%*Ak^SUNVmT%O*P4v-~s3ErmbbHW?meC!xd zCd^@DlM`vq3N;4Nf4c#Yl7T@&%n9QL7R7GNstb_vwr#kLPshYe~PIeGzg&pgwR z2~|!*>EIPG5Zc4YZ|k#y|H~_Quakhc=zdZj(%6M?qaV54(=I>n)Or5ImxAYK$_bA; z;Be9Mn%@!cDYJqEDl)+PcNs7YhdNvvvw0I9aZ0D|{k$|B29vISssZPKqwSv1V%}=P zuh3Yq`E<&H3&al?2qWqUXTz{+!N;p_Yr~V_H0=h#C?i@JjQBYZuJ<^?nW}ko;U7pb z)|zlijDtCxuKJ`QTnCO8iloN8HGyBcEG{E1EFHt6xy&@(mPW($6qGB@OO;c$x zDKS}DDOm|o88HNA(hz`Kc0^@25x4_sN!&5LhhH%;H6f^iJ9MfV7XT)?^ z!fC6s%;9HAFahRp{_1a*aLSXE|N8qNmVLI=@^+~e$F&FIM(yYg?w}Mp}B!R(L{``|8zrNB1FkW_Wb&{JxXq`(O zn3s0&GnfTC(1oEeIKhJ9w1-QRTopM!_OXX^u>SLH&42Gp;|lTJ&1)pe?r0S!7R(t3 zI6p}+3JoFIFy_SLo!>E`4sbqJ;x02&z+l7=)4z8BTMxsuIl$FOu18|d-iND_YG}bR zS~uV&| nri;1a2){`(sfR&1!sS^1LuCH#P6h)^w Date: Sat, 11 Apr 2026 07:27:41 -0500 Subject: [PATCH 66/80] Update function --- .../tutorials/autogen/index.md | 22 +++++++++---------- .../tutorials/autogen/simulink/setup.m | 16 +++++++------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index 606f528b..30326239 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -18,7 +18,7 @@ This tutorial goes over: ## File Organization -The first step is to organize your repository. Create a new `modeling/simulink` folder in your repository as shown below: +The first step is to organize your repository. Create a new `modeling/simulink` folder and an `autogen` folder in your repository, as shown below: ```markdown my-AMDC-workspace/ <= master repo @@ -29,7 +29,7 @@ my-AMDC-workspace/ <= master repo |-- my-AMDC-private-C-code/ <= Your private user C code |-- usr/ | -- controller/ <= Your private user app - | -- autogen/ <= Autogen code + | -- autogen/ <= Now create this folder ``` ## Install Required MATLAB/Simulink Toolbox @@ -113,12 +113,12 @@ double duty_c = 0.5 + Do/2.0 * cos(theta - 4.0*M_PI/3.0); ### Referenced Model Setting -1. Double-click the `integrator` referenced model and click `Model Settings` under `Modeling` tab. +1. Double-click the `generateDuty` referenced model and click `Model Settings` under `Modeling` tab. 2. Click `Model Settings` in the `REFERENCED MODEL` section. - 1. Set `Fixed-step-size` as `Ts`. + 1. Under the `Solver` tree, set `Fixed-step-size` as `Ts`. 3. Save the Simulink file. -The example of Simulink file along with the referenced model is stored [here](./simulink/). +The example of Simulink file along with the referenced model is stored [here](./simulink/). Note that this Simulink model was created using MATLAB R2024b. ### Generate C-code @@ -129,19 +129,19 @@ Need to update this!! ```MATLAB %% Autogen code for the controller -model='integrator'; % name of the controller to be built +model='generateDuty'; % name of the controller to be built slbuild(model); % generates the Autogen code -oldFolder = cd('C:integrator_ert_rtw\'); +oldFolder = cd('C:generateDuty_ert_rtw\'); % Copy only .c and .h files in autogen folder -command = 'for /r %i in (*.c, *.h) do copy /y %i ..\autogen'; +command = 'for /r %i in (*.c, *.h) do copy /y %i ..\..\..\control\my-AMDC-private-C-code\usr\controller\autogen'; [status, cmdout] = system(command); cd(oldFolder); ``` -3. Run the `setup.m`, and all autogenerated `.c` and `.h` files generated files should be placed within `autogen` folder. Among these generated files, the most relevant are: +3. Run the `setup.m`. All autogenerated `.c` and `.h` files should be placed within `autogen` folder. Among these generated files, the most relevant are: -- `integrator.c` — implementation of the control logic -- `integrator.h` — interface definitions (inputs, outputs, function declarations) +- `generateDuty.c` — implementation of the control logic +- `generateDuty.h` — interface definitions (inputs, outputs, function declarations) These files define the controller as a callable function with input and output structures, consistent with the execution model described earlier. 4. Now the autogen folder should appear as part of the project within the SDK environment. If not refresh the project. diff --git a/source/getting-started/tutorials/autogen/simulink/setup.m b/source/getting-started/tutorials/autogen/simulink/setup.m index 5b651491..5ccdefc7 100644 --- a/source/getting-started/tutorials/autogen/simulink/setup.m +++ b/source/getting-started/tutorials/autogen/simulink/setup.m @@ -7,12 +7,12 @@ omega = 377.0; % (rad/s) Do = 0.8; % (--) -% %% Autogen code for the controller -% model='integrator'; % name of the controller to be built -% slbuild(model); % generates the Autogen code -% oldFolder = cd('C:integrator_ert_rtw\'); -% % Copy only .c and .h files in autogen folder -% command = 'for /r %i in (*.c, *.h) do copy /y %i ..\autogen'; -% [status, cmdout] = system(command); -% cd(oldFolder); +%% Autogen code for the controller +model='generateDuty'; % name of the controller to be built +slbuild(model); % generates the Autogen code +oldFolder = cd('C:generateDuty_ert_rtw\'); +% Copy only .c and .h files in autogen folder +command = 'for /r %i in (*.c, *.h) do copy /y %i ..\..\..\control\my-AMDC-private-C-code\usr\controller\autogen'; +[status, cmdout] = system(command); +cd(oldFolder); From 053638753ce1e557f3ee9d80f6320d5dbe1e4366 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Sat, 11 Apr 2026 07:53:21 -0500 Subject: [PATCH 67/80] Update index --- .../tutorials/autogen/index.md | 56 +++++++++---------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index 30326239..5880c0e5 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -138,21 +138,21 @@ command = 'for /r %i in (*.c, *.h) do copy /y %i ..\..\..\control\my-AMDC-privat cd(oldFolder); ``` -3. Run the `setup.m`. All autogenerated `.c` and `.h` files should be placed within `autogen` folder. Among these generated files, the most relevant are: +3. Run the `setup.m` to generate C code. All autogenerated `.c` and `.h` files should be placed within `autogen` folder. Among these generated files, the most relevant are: -- `generateDuty.c` — implementation of the control logic +- `generateDuty.c` — implementation of the control logic - `generateDuty.h` — interface definitions (inputs, outputs, function declarations) These files define the controller as a callable function with input and output structures, consistent with the execution model described earlier. -4. Now the autogen folder should appear as part of the project within the SDK environment. If not refresh the project. +4. Open the SDK, and make sure that the `autogen` folder appears as part under the `Project Explorer`. If it does not, refresh the project. ### Integration with AMDC Now, the user needs to update the user C code developed in the ["Voltage Source Inverter" tutorial](../vsi/) to incorporate the autogen code generated from Simulink. Specifically, this requires modifying `task_controller_clear`, `task_controller_init`, and `task_controller_callback` functions. Within the callback function, the control task executes the developed code at a fixed sampling interval, and the following items need to be included: -1. Populate inputs (e.g., sampled sensor data) +1. Populate inputs, such as constant values or sampled sensor data. The input variables are defined with `_U` suffix (e.g., `generateDuty_U`). 2. Call the controller step function -3. Route outputs to actuators (e.g., PWM duty cycles) +3. Route outputs to actuators, such as PWM duty cycles. The output variables are defined with `_Y` suffix (e.g., `generateDuty_Y`). The functions that need to be updated for this example are shown below: @@ -166,7 +166,7 @@ int task_controller_clear(void) // ... // Clear state struct for Simulink controller - memset(((void *) &integrator_DW_DW), 0, sizeof(DW_integrator_T)); + memset(((void *) &generateDuty_DW_DW), 0, sizeof(DW_generateDuty_T)); // ... } @@ -176,7 +176,7 @@ int task_controller_init(void) // ... // Initialize Autogen step - integrator_initialize(); + generateDuty_initialize(); // ... } @@ -190,51 +190,45 @@ void task_controller_callback(void *arg) { // ... - // Populate inputs - modelName_U.current = measured_current; // Inputs to controller - modelName_U.voltage = measured_voltage; // Inputs to controller - // Update theta theta += (Ts * omega); // Wrap to 2*pi theta = fmod(theta, 2.0 * M_PI); + // Populate inputs + generateDuty_U.Do = Do; // Inputs to controller as a constant value + generateDuty_U.theta = theta; // Inputs to controller as feedback + + // Call Autogen code + generateDuty_step(); + // Calculate desired duty ratios - double duty_a = 0.5 + Do/2.0 * cos(theta); - double duty_b = 0.5 + Do/2.0 * cos(theta - 2.0*M_PI/3.0); - double duty_c = 0.5 + Do/2.0 * cos(theta - 4.0*M_PI/3.0); + double duty_a = generateDuty_Y.duty_a; // Outputs from controller + double duty_b = generateDuty_Y.duty_b; // Outputs from controller + double duty_c = generateDuty_Y.duty_c; // Outputs from controller // Update PWM peripheral in FPGA pwm_set_duty(0, duty_a); // Set HB1 duty ratio (INV1, PWM1 and PWM2) pwm_set_duty(1, duty_b); // Set HB2 duty ratio (INV1, PWM3 and PWM4) pwm_set_duty(2, duty_c); // Set HB3 duty ratio (INV1, PWM5 and PWM6) - // Update controller input parameters - generateDuty.STEP = STEP; - - // Call Autogen code - generateDuty_step(); - - // Apply outputs - set_pwm_duty(modelName_Y.duty); // Outputs from controller - // ... } ``` -## Running the AMDC +```{note} +In this example, the input `theta` is generated within the code. However, this can be obtained from sensor measurements, such as encoder readings. +``` -THIS SECTION WILL BE UPDATED! We want to show the expected result after running the AMDC, logging the duty ratio values. -- After running the AMDC, show the input and output value through logging feature. + +## Running the AMDC + +We are now ready to run the new control code with autogen! Try running the control task by typing `ctrl init`. You should obtain the same results as in the ["Voltage Source Inverter" tutorial](../vsi/index.md) tutorial. ## Conclusion **Congratulations!** -**But we need to update the following!** - -You have now built a new user app and created control code for the voltage source inverter. -These techniques can be extended for many more control problems. -Simply modify the control task callback and the command handler to implement new control algorithms. +You have now built an updated user app with autogen code for the voltage source inverter. These techniques can be extended for many other control problems, e.g., current regulation, motion control, or even more advanced controller. By modifying the Simulink model and continuously generating C code, you can effectively develop new control algorithms. From b5fc409c5102622a82bf4df33fddd5faece556f8 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Sat, 11 Apr 2026 07:55:13 -0500 Subject: [PATCH 68/80] Export model as r2024b --- .../autogen/simulink/generateDuty.slx | Bin 92809 -> 34014 bytes .../tutorials/autogen/simulink/setupModel.slx | Bin 92672 -> 33642 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/source/getting-started/tutorials/autogen/simulink/generateDuty.slx b/source/getting-started/tutorials/autogen/simulink/generateDuty.slx index 76aae9675ca1210c0695cfb3fb8e7860196131f6..d68c0e65af81d0483a5efde5fa97e8552443be1e 100644 GIT binary patch delta 32102 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⛏l}X4k}~iOpG$4RBed1gNq>LV0@~@g;JM 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 literal 92672 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 From f513bf5ee1679587408b3d8651b8776dee87bd5c Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Sat, 11 Apr 2026 08:00:59 -0500 Subject: [PATCH 69/80] Update REAMDE --- source/getting-started/tutorials/autogen/index.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index 5880c0e5..90e09655 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -125,8 +125,6 @@ The example of Simulink file along with the referenced model is stored [here](./ 1. Open the `setup.m`. 2. Copy and paste the following code. -Need to update this!! - ```MATLAB %% Autogen code for the controller model='generateDuty'; % name of the controller to be built @@ -221,8 +219,6 @@ void task_controller_callback(void *arg) In this example, the input `theta` is generated within the code. However, this can be obtained from sensor measurements, such as encoder readings. ``` - - ## Running the AMDC We are now ready to run the new control code with autogen! Try running the control task by typing `ctrl init`. You should obtain the same results as in the ["Voltage Source Inverter" tutorial](../vsi/index.md) tutorial. From a6607e93fc721e4a3a3d9e44e3b0c26fea785672 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Sat, 11 Apr 2026 08:01:55 -0500 Subject: [PATCH 70/80] Update readme --- source/getting-started/tutorials/autogen/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index 90e09655..edfbac12 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -142,6 +142,7 @@ cd(oldFolder); - `generateDuty.h` — interface definitions (inputs, outputs, function declarations) These files define the controller as a callable function with input and output structures, consistent with the execution model described earlier. + 4. Open the SDK, and make sure that the `autogen` folder appears as part under the `Project Explorer`. If it does not, refresh the project. ### Integration with AMDC From 1dad987043bdf6cadf0f71bbba78f52676c37747 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Sat, 11 Apr 2026 08:02:41 -0500 Subject: [PATCH 71/80] Update readme --- source/getting-started/tutorials/autogen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index edfbac12..0345e14c 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -143,7 +143,7 @@ cd(oldFolder); These files define the controller as a callable function with input and output structures, consistent with the execution model described earlier. -4. Open the SDK, and make sure that the `autogen` folder appears as part under the `Project Explorer`. If it does not, refresh the project. +4. Open the SDK, and make sure that the `autogen` folder appears under the `Project Explorer`. If it does not, refresh the project. ### Integration with AMDC From 70b2e6ffc7eba1c6606a2e8042af9ce80bf01afa Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Sat, 11 Apr 2026 08:03:48 -0500 Subject: [PATCH 72/80] Update README --- source/getting-started/tutorials/autogen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index 0345e14c..7870bf0c 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -147,7 +147,7 @@ These files define the controller as a callable function with input and output s ### Integration with AMDC -Now, the user needs to update the user C code developed in the ["Voltage Source Inverter" tutorial](../vsi/) to incorporate the autogen code generated from Simulink. Specifically, this requires modifying `task_controller_clear`, `task_controller_init`, and `task_controller_callback` functions. Within the callback function, the control task executes the developed code at a fixed sampling interval, and the following items need to be included: +Now, the user needs to update the user C code developed in the ["Voltage Source Inverter" tutorial](../vsi/index.md) to incorporate the autogen code generated from Simulink. Specifically, this requires modifying `task_controller_clear`, `task_controller_init`, and `task_controller_callback` functions. Within the callback function, the control task executes the developed code at a fixed sampling interval, and the following items need to be included: 1. Populate inputs, such as constant values or sampled sensor data. The input variables are defined with `_U` suffix (e.g., `generateDuty_U`). 2. Call the controller step function From 8a7415024a81b8bdec864a3d2032a105c7b03c5f Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Sat, 11 Apr 2026 08:06:13 -0500 Subject: [PATCH 73/80] Update index --- source/getting-started/tutorials/autogen/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index 7870bf0c..8bc1e3a0 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -147,7 +147,7 @@ These files define the controller as a callable function with input and output s ### Integration with AMDC -Now, the user needs to update the user C code developed in the ["Voltage Source Inverter" tutorial](../vsi/index.md) to incorporate the autogen code generated from Simulink. Specifically, this requires modifying `task_controller_clear`, `task_controller_init`, and `task_controller_callback` functions. Within the callback function, the control task executes the developed code at a fixed sampling interval, and the following items need to be included: +Now, the user needs to update the user C code developed in the ["Voltage Source Inverter" tutorial](../vsi/index.md) to incorporate the Autogen code generated from Simulink. Specifically, this requires modifying `task_controller_clear`, `task_controller_init`, and `task_controller_callback` functions. Within the callback function, the control task executes the developed code at a fixed sampling interval, and the following items need to be included: 1. Populate inputs, such as constant values or sampled sensor data. The input variables are defined with `_U` suffix (e.g., `generateDuty_U`). 2. Call the controller step function @@ -222,10 +222,10 @@ In this example, the input `theta` is generated within the code. However, this c ## Running the AMDC -We are now ready to run the new control code with autogen! Try running the control task by typing `ctrl init`. You should obtain the same results as in the ["Voltage Source Inverter" tutorial](../vsi/index.md) tutorial. +We are now ready to run the new control code with Autogen! Try running the control task by typing `ctrl init`. You should obtain the same results as in the ["Voltage Source Inverter" tutorial](../vsi/index.md) tutorial. ## Conclusion **Congratulations!** -You have now built an updated user app with autogen code for the voltage source inverter. These techniques can be extended for many other control problems, e.g., current regulation, motion control, or even more advanced controller. By modifying the Simulink model and continuously generating C code, you can effectively develop new control algorithms. +You have now built an updated user app with Autogen code for the voltage source inverter. These techniques can be extended for many other control problems, e.g., current regulation, motion control, or even more advanced controller. By modifying the Simulink model and continuously generating C code, you can effectively develop new control algorithms. From c2f5c9b4186e006b25af2a7af35890259d9d95f7 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Sat, 11 Apr 2026 08:11:12 -0500 Subject: [PATCH 74/80] Update index --- source/getting-started/tutorials/autogen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index 8bc1e3a0..c7405671 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -145,7 +145,7 @@ These files define the controller as a callable function with input and output s 4. Open the SDK, and make sure that the `autogen` folder appears under the `Project Explorer`. If it does not, refresh the project. -### Integration with AMDC +## Integration with AMDC Now, the user needs to update the user C code developed in the ["Voltage Source Inverter" tutorial](../vsi/index.md) to incorporate the Autogen code generated from Simulink. Specifically, this requires modifying `task_controller_clear`, `task_controller_init`, and `task_controller_callback` functions. Within the callback function, the control task executes the developed code at a fixed sampling interval, and the following items need to be included: From 6b34a95055b41c783285e9f3f1cdbe5040b02f6e Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Sat, 11 Apr 2026 08:15:07 -0500 Subject: [PATCH 75/80] Fix link --- source/getting-started/control-with-amdc/autogen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/control-with-amdc/autogen/index.md b/source/getting-started/control-with-amdc/autogen/index.md index 8649da6f..c4300e21 100644 --- a/source/getting-started/control-with-amdc/autogen/index.md +++ b/source/getting-started/control-with-amdc/autogen/index.md @@ -57,7 +57,7 @@ This organization ensures that the autogenerated controller code is correctly co ## Example Model -An example tutorial, [Tutorial: Autogen](../../tutorials/autogen/), is provided to demonstrate the Simulink Autogen workflow for control implementation and its integration with the AMDC. +An example tutorial, [Tutorial: Autogen](../../tutorials/autogen/index.md), is provided to demonstrate the Simulink Autogen workflow for control implementation and its integration with the AMDC. ## Conclusion From 93e6f4d3c952adc3869e741ff3c3b98df220dcda Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Sat, 11 Apr 2026 10:42:32 -0500 Subject: [PATCH 76/80] Update index --- source/getting-started/tutorials/autogen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index c7405671..2fc283ef 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -222,7 +222,7 @@ In this example, the input `theta` is generated within the code. However, this c ## Running the AMDC -We are now ready to run the new control code with Autogen! Try running the control task by typing `ctrl init`. You should obtain the same results as in the ["Voltage Source Inverter" tutorial](../vsi/index.md) tutorial. +We are now ready to run the new control code with Autogen! Try running the control task by typing `ctrl init`. You should obtain the same results as in the ["Voltage Source Inverter" tutorial](../vsi/index.md). ## Conclusion From 95b07539dbc752b8a37b1531e816c3bc2cf5d15e Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Mon, 13 Apr 2026 09:17:48 -0500 Subject: [PATCH 77/80] Updte model --- .../autogen/simulink/generateDuty.slx | Bin 34014 -> 95335 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/source/getting-started/tutorials/autogen/simulink/generateDuty.slx b/source/getting-started/tutorials/autogen/simulink/generateDuty.slx index d68c0e65af81d0483a5efde5fa97e8552443be1e..a6fae8f78cf0c0a0bd7fe59a9858aa844e294452 100644 GIT binary patch literal 95335 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 PZo+@`SD^zFHRAsPzsmYW delta 32145 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 T5z#@=L8`vq5U_#&sQiBb;ZJF` From 53f89f5be383ab00b6dd285cd7cca1d94803620d Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Mon, 13 Apr 2026 09:19:17 -0500 Subject: [PATCH 78/80] Update model --- .../autogen/simulink/generateDuty.slx | Bin 95335 -> 36051 bytes .../tutorials/autogen/simulink/setupModel.slx | Bin 33642 -> 34151 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/source/getting-started/tutorials/autogen/simulink/generateDuty.slx b/source/getting-started/tutorials/autogen/simulink/generateDuty.slx index a6fae8f78cf0c0a0bd7fe59a9858aa844e294452..e8bd7a12e65287a00fd346cf14771ddeeb4d92c1 100644 GIT binary patch delta 34155 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 YBg1ry5=KQn5e5;4^}sF~UpvTr0LkseO#lD@ literal 95335 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 PZo+@`SD^zFHRAsPzsmYW diff --git a/source/getting-started/tutorials/autogen/simulink/setupModel.slx b/source/getting-started/tutorials/autogen/simulink/setupModel.slx index bc3c71b78e1b9f412da20393d4269876f5ca0274..5623215d27535de2cb690437bf1b3dcdbeea882b 100644 GIT binary patch delta 14539 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�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 bgpWWW`2SyL{}YGd1LTgNgSrd+KTH1?Ls`?i From 84042488da0aa8881d987a32006f959c866fddb9 Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Mon, 13 Apr 2026 09:19:32 -0500 Subject: [PATCH 79/80] Update image --- .../getting-started/tutorials/autogen/images/autogen-model.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/tutorials/autogen/images/autogen-model.svg b/source/getting-started/tutorials/autogen/images/autogen-model.svg index b7a35047..7de58e79 100644 --- a/source/getting-started/tutorials/autogen/images/autogen-model.svg +++ b/source/getting-started/tutorials/autogen/images/autogen-model.svg @@ -1 +1 @@ -InputCalculate Duty Ratio Outputcos+−coscos+−xxxomegathetaDoduty_aduty_bduty_c +InputCalculate Duty Ratio Outputcos+−coscos+−xxx++++++omegathetaDoduty_aduty_bduty_c From 02759fc3ef62cbd60f79ecb1f6c4c9a8004b32cb Mon Sep 17 00:00:00 2001 From: Takahiro Noguchi Date: Mon, 13 Apr 2026 09:22:51 -0500 Subject: [PATCH 80/80] Update index --- source/getting-started/tutorials/autogen/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/tutorials/autogen/index.md b/source/getting-started/tutorials/autogen/index.md index 2fc283ef..3d116820 100644 --- a/source/getting-started/tutorials/autogen/index.md +++ b/source/getting-started/tutorials/autogen/index.md @@ -59,7 +59,7 @@ Do = 0.8; % (--) 3. Open a blank model of Simulink, and save it as `setupModel.slx` in the `simulink` folder. 4. Add a `Constant` block and set its value to `omega`. -5. Add an `Integrator` block and connect it to the `Constant` block. +5. Add an `Integrator` block and connect it to the `Constant` block. Rename the output signal of this integrator to be `theta`. 6. Add a `Constant` block and set its value to `Do`. 7. Add two `Rate Transition` blocks and connect them to the `Integrator` and `Constant` blocks created above. In each `Rate Transition` block, set the sampling time `Ts`. 8. Create Simulink blocks to implement the following duty ratio calculation developed [here](../vsi/index.md/#c-code-controller):