Аналог коммита 654e0cf240 для этой ветки

#7 бля, надо чет делать с этим, слишком запарно постоянно синхронизировать две ветки...
This commit is contained in:
Razvalyaev 2025-01-19 23:14:51 +03:00
parent 334dc21e79
commit 2be534e35e
6 changed files with 56 additions and 31 deletions

View File

@ -0,0 +1,23 @@
/**************************************************************************
Description: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>.<EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 2021.11.08
**************************************************************************/
#ifndef DEF
#define DEF
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> (30 <20><><EFBFBD><EFBFBD>.)
#define SHIFT
#define SIMULINK_SEQUENCE V_PWM24_PHASE_SEQ_NORMAL_ABC
/* V_PWM24_PHASE_SEQ_NORMAL_ABC, - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V_PWM24_PHASE_SEQ_NORMAL_BCA, - <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V_PWM24_PHASE_SEQ_NORMAL_CAB, - <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V_PWM24_PHASE_SEQ_REVERS_ACB, - <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V_PWM24_PHASE_SEQ_REVERS_CBA, - <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V_PWM24_PHASE_SEQ_REVERS_BAC - <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#endif //DEF

View File

@ -1,22 +1,17 @@
/** /**
************************************************************************** **************************************************************************
* @file app_includes.h * @file app_includes.h
* @brief Заголовочный файл для оболочки МК. * @brief Заголовочный файл для подключаения заголовочных файлов программы МК.
**************************************************************************
@details
Главный заголовочный файл для матлаба. Включает дейфайны для S-Function,
объявляет базовые функции для симуляции МК и подключает базовые библиотеки:
- для симуляции "stm32fxxx_matlab_conf.h"
- для S-Function "simstruc.h"
- для потоков <process.h>
**************************************************************************/ **************************************************************************/
#ifndef _APP_INCLUDES_H_ #ifndef _APP_INCLUDES_H_
#define _APP_INCLUDES_H_ #define _APP_INCLUDES_H_
#include "app_configs.h"
// Includes // Includes
#include "DSP281x_Device.h" #include "DSP281x_Device.h"
#include "math.h"
#include "C28x_FPU_FastRTS.h"
#include "def.h"
#include "edrk_main.h" #include "edrk_main.h"
#include "vector.h" #include "vector.h"

View File

@ -1,8 +1,8 @@
/************************************************************************** /**************************************************************************
Description: Функции для приёма и выдачи параметров. Description: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
Автор: Улитовский Д.И. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>.<EFBFBD>.
Дата последнего обновления: 2021.11.08 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 2021.11.08
**************************************************************************/ **************************************************************************/
#include "app_io.h" #include "app_io.h"
@ -12,7 +12,7 @@ int Unites[UNIT_QUA_UNITS][UNIT_LEN];
int CAN_timeout[UNIT_QUA]; int CAN_timeout[UNIT_QUA];
RS_DATA_STRUCT rs_a = RS_DATA_STRUCT_DEFAULT, rs_b = RS_DATA_STRUCT_DEFAULT; RS_DATA_STRUCT rs_a = RS_DATA_STRUCT_DEFAULT, rs_b = RS_DATA_STRUCT_DEFAULT;
// Изменяет значение параметра // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void readInputParameters(const real_T* u) { void readInputParameters(const real_T* u) {
int nn = 0; int nn = 0;
@ -25,7 +25,7 @@ void readInputParameters(const real_T* u) {
iq_norm_ADC[0][6] = _IQ(u[nn++] / NORMA_ACP); iq_norm_ADC[0][6] = _IQ(u[nn++] / NORMA_ACP);
iq_norm_ADC[0][7] = _IQ(u[nn++] / NORMA_ACP); iq_norm_ADC[0][7] = _IQ(u[nn++] / NORMA_ACP);
WRotor.iqWRotorCalcBeforeRegul1 = _IQ(u[nn++] / PI2 / NORMA_FROTOR); WRotor.iqWRotorCalcBeforeRegul1 = _IQ(u[nn++] / (PI*2) / NORMA_FROTOR);
u[nn++]; u[nn++];
@ -99,7 +99,7 @@ void writeOutputParameters(real_T* xD) {
xD[nn++] = PWMPhaseC2.pwmOut.ci1B; xD[nn++] = PWMPhaseC2.pwmOut.ci1B;
xD[nn++] = PWMPhaseC2.pwmOut.ci2B; xD[nn++] = PWMPhaseC2.pwmOut.ci2B;
// Только для просмотра // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
xD[nn++] = xpwm_time.Ta0_0; xD[nn++] = xpwm_time.Ta0_0;
xD[nn++] = xpwm_time.Ta0_1; xD[nn++] = xpwm_time.Ta0_1;
xD[nn++] = xpwm_time.Ta1_0; xD[nn++] = xpwm_time.Ta1_0;

View File

@ -1,15 +1,5 @@
#include "mcu_wrapper_conf.h" #include "mcu_wrapper_conf.h"
#include "pwm_sim.h" #include "pwm_sim.h"
//#include "edrk_main.h"
//#include "vector.h"
//#include "vector_control.h"
//
//#include "xp_project.h"
//#include "xp_write_xpwm_time.h"
//#include "edrk_main.h"
//#include "vector.h"
//#include "vector_control.h"
//#include "v_rotor.h"
@ -51,7 +41,7 @@ void mcu_simulate_step(void)
} }
ramp_all_zadanie(0); // òóò âñå ïî øòàòíîìó ramp_all_zadanie(0); // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
calc_norm_ADC_0(0); calc_norm_ADC_0(0);

View File

@ -14,6 +14,23 @@
#define PWM_PERIOD (FREQ_INTERNAL_GENERATOR_XILINX_TMS / FREQ_PWM) #define PWM_PERIOD (FREQ_INTERNAL_GENERATOR_XILINX_TMS / FREQ_PWM)
#define PWM_TICK_STEP (FREQ_INTERNAL_GENERATOR_XILINX_TMS * hmcu.sSimSampleTime) #define PWM_TICK_STEP (FREQ_INTERNAL_GENERATOR_XILINX_TMS * hmcu.sSimSampleTime)
/* ОТ УЛИТКОВСКОГО (не используется) */
// период ШИМ, c
#define T_PWM 2220e-6 //F_PWM = 450 Гц
//#define T_PWM 6000e-6 //F_PWM = 166.7 Гц
// период вызова основной программы, с
#define TY (T_PWM*0.5)
// "мертвое время", с
#define DT 30e-6
//#define DT 60e-6
// Time-Base Period Register, ед. счётчика таймера
#define T1_PRD (FTBCLK*T_PWM*0.5)
// максимальное значение амплитуды напряжения управления устанавливаем так,
// чтобы минимальная ширина импульса была 10 мкс, ед. счётчика таймера
#define Y_LIM (T1_PRD - (DT + 10e-6)*FTBCLK)
// Для моделирования ШИМ // Для моделирования ШИМ
/** /**
* @brief 3lvl PWM One Phase Simulation handle * @brief 3lvl PWM One Phase Simulation handle

View File

@ -52,7 +52,7 @@ S-Function работает особым образом: на шаге `n` он
- `OUT_PORT_WIDTH` - размерность выходного вектора S-Function - `OUT_PORT_WIDTH` - размерность выходного вектора S-Function
- `OUT_PORT_NUMB` - количество выходных векторов S-Function - `OUT_PORT_NUMB` - количество выходных векторов S-Function
_Note: дефайн `RUN_APP_MAIN_FUNC_THREAD` пока выключен и поток для main() не используется)_ _Note: дефайн `RUN_APP_MAIN_FUNC_THREAD` пока выключен и поток для main() не используется_
_Note for future: разные вектора можно использовать для разных плат_ _Note for future: разные вектора можно использовать для разных плат_
@ -60,11 +60,11 @@ _Note for future: разные вектора можно использоват
Оболочка для программы позволяет имитировать реальный алгоритм программы. Она инициализирует её, запускает необходимые для её работы функции и связывает её с входами/выходами S-Function Оболочка для программы позволяет имитировать реальный алгоритм программы. Она инициализирует её, запускает необходимые для её работы функции и связывает её с входами/выходами S-Function
Ниже приведен перечень всех файлов и краткое описание зачем они нужны: Ниже приведен перечень всех файлов и краткое описание зачем они нужны:
- ***app_includes.h*** &emsp;&emsp;&emsp; - Содержит ARM дефайны для компиляции в MSVC. - ***app_includes.h*** &emsp;&emsp;&emsp; - включает все необходимые для симуляции заголовочные файлы программы
- ***app_init.c/.h*** &emsp;&emsp;&emsp;&emsp; - инициализация программы - ***app_init.c/.h*** &emsp;&emsp;&emsp;&emsp; - инициализация программы
- ***app_io.c/.h*** &nbsp;&ensp;&emsp;&emsp;&emsp;&emsp; - запись/считывание входов/выходов S-Function в программу - ***app_io.c/.h*** &nbsp;&ensp;&emsp;&emsp;&emsp;&emsp; - запись/считывание входов/выходов S-Function в программу
- ***app_wrapper.c/.h*** &nbsp;&nbsp;&ensp;&emsp; - вызов функций из программы и создание заглушек для ненужных функций - ***app_wrapper.c/.h*** &nbsp;&nbsp;&ensp;&emsp; - вызов функций из программы и создание заглушек для ненужных функций
- ***def.h*** &ensp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp; - дефайны для симуляции программы в симулинке (осталось от улитковского) - ***app_configs.h*** &ensp;&emsp;&emsp;&emsp; - пользовательские конфигурации программы для симулинка
Также в папке ***\app_wrapper\device_support*** находяться стандартные библиотеки для TMS, но переделанные под компилятор MSVC (удален `volatile`, добавлены заглушки для `interrupt`, `asm`, `cregister`, добавлен код для симуляции IQlib). Также в папке ***\app_wrapper\device_support*** находяться стандартные библиотеки для TMS, но переделанные под компилятор MSVC (удален `volatile`, добавлены заглушки для `interrupt`, `asm`, `cregister`, добавлен код для симуляции IQlib).
@ -80,8 +80,8 @@ _Note for future: разные вектора можно использоват
###### pwm_sim ###### pwm_sim
***pwm_sim.c/.h*** - симуляция ШИМ ***pwm_sim.c/.h*** - симуляция ШИМ
Поддерживает два режимы формирования ШИМ: Поддерживает два режимы формирования ШИМ:
- для каждого таймера отдельно (PWM_SIMULATION_MODE_REGULAR_PWM) - `PWM_SIMULATION_MODE_REGULAR_PWM` - формирование ШИМ для каждого таймера отдельно
- через линии ТК для всей фазы разом (PWM_SIMULATION_MODE_TK_LINES). - `PWM_SIMULATION_MODE_TK_LINES` - через линии ТК для всей фазы разом
## Инструкция ## Инструкция