diff --git a/Inu/app_wrapper/app_configs.h b/Inu/app_wrapper/app_configs.h new file mode 100644 index 0000000..5a3c3a3 --- /dev/null +++ b/Inu/app_wrapper/app_configs.h @@ -0,0 +1,23 @@ +/************************************************************************** + Description: ������ ������ ������������� � �������. + + �����: ���������� �.�. + ���� ���������� ����������: 2021.11.08 +**************************************************************************/ + +#ifndef DEF +#define DEF + +// �����������������, ���� ���� ����� ����� ��������� ��� (30 ����.) +#define SHIFT + +#define SIMULINK_SEQUENCE V_PWM24_PHASE_SEQ_NORMAL_ABC +/* V_PWM24_PHASE_SEQ_NORMAL_ABC, - �������� ���, ���������� ���������� + V_PWM24_PHASE_SEQ_NORMAL_BCA, - �� ����� + V_PWM24_PHASE_SEQ_NORMAL_CAB, - �� ����� + V_PWM24_PHASE_SEQ_REVERS_ACB, - �� ����� + V_PWM24_PHASE_SEQ_REVERS_CBA, - ���� + V_PWM24_PHASE_SEQ_REVERS_BAC - ���� + */ + +#endif //DEF diff --git a/Inu/app_wrapper/app_includes.h b/Inu/app_wrapper/app_includes.h index 30f650c..69403ba 100644 --- a/Inu/app_wrapper/app_includes.h +++ b/Inu/app_wrapper/app_includes.h @@ -1,22 +1,17 @@ /** ************************************************************************** * @file app_includes.h -* @brief Заголовочный файл для оболочки МК. -************************************************************************** -@details -Главный заголовочный файл для матлаба. Включает дейфайны для S-Function, -объявляет базовые функции для симуляции МК и подключает базовые библиотеки: -- для симуляции "stm32fxxx_matlab_conf.h" -- для S-Function "simstruc.h" -- для потоков +* @brief Заголовочный файл для подключаения заголовочных файлов программы МК. **************************************************************************/ #ifndef _APP_INCLUDES_H_ #define _APP_INCLUDES_H_ +#include "app_configs.h" // Includes #include "DSP281x_Device.h" +#include "math.h" +#include "C28x_FPU_FastRTS.h" -#include "def.h" #include "edrk_main.h" #include "vector.h" diff --git a/Inu/app_wrapper/app_io.c b/Inu/app_wrapper/app_io.c index 1a12795..879549b 100644 --- a/Inu/app_wrapper/app_io.c +++ b/Inu/app_wrapper/app_io.c @@ -1,8 +1,8 @@ /************************************************************************** - Description: . + Description: ������� ��� ����� � ������ ����������. - : .. - : 2021.11.08 + �����: ���������� �.�. + ���� ���������� ����������: 2021.11.08 **************************************************************************/ #include "app_io.h" @@ -12,7 +12,7 @@ int Unites[UNIT_QUA_UNITS][UNIT_LEN]; int CAN_timeout[UNIT_QUA]; RS_DATA_STRUCT rs_a = RS_DATA_STRUCT_DEFAULT, rs_b = RS_DATA_STRUCT_DEFAULT; -// +// �������� �������� ��������� void readInputParameters(const real_T* u) { 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][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++]; @@ -99,7 +99,7 @@ void writeOutputParameters(real_T* xD) { xD[nn++] = PWMPhaseC2.pwmOut.ci1B; xD[nn++] = PWMPhaseC2.pwmOut.ci2B; - // + // ������ ��� ��������� xD[nn++] = xpwm_time.Ta0_0; xD[nn++] = xpwm_time.Ta0_1; xD[nn++] = xpwm_time.Ta1_0; diff --git a/Inu/app_wrapper/app_wrapper.c b/Inu/app_wrapper/app_wrapper.c index 4295837..19899e7 100644 --- a/Inu/app_wrapper/app_wrapper.c +++ b/Inu/app_wrapper/app_wrapper.c @@ -1,15 +1,5 @@ #include "mcu_wrapper_conf.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); // ��� ��� �� �������� calc_norm_ADC_0(0); diff --git a/Inu/xilinx_wrapper/pwm_sim.h b/Inu/xilinx_wrapper/pwm_sim.h index 9c814c5..3eaacdb 100644 --- a/Inu/xilinx_wrapper/pwm_sim.h +++ b/Inu/xilinx_wrapper/pwm_sim.h @@ -14,6 +14,23 @@ #define PWM_PERIOD (FREQ_INTERNAL_GENERATOR_XILINX_TMS / FREQ_PWM) #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 diff --git a/README.md b/README.md index b1134bb..0713dda 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ S-Function работает особым образом: на шаге `n` он - `OUT_PORT_WIDTH` - размерность выходного вектора S-Function - `OUT_PORT_NUMB` - количество выходных векторов S-Function -_Note: дефайн `RUN_APP_MAIN_FUNC_THREAD` пока выключен и поток для main() не используется)_ +_Note: дефайн `RUN_APP_MAIN_FUNC_THREAD` пока выключен и поток для main() не используется_ _Note for future: разные вектора можно использовать для разных плат_ @@ -60,11 +60,11 @@ _Note for future: разные вектора можно использоват Оболочка для программы позволяет имитировать реальный алгоритм программы. Она инициализирует её, запускает необходимые для её работы функции и связывает её с входами/выходами S-Function Ниже приведен перечень всех файлов и краткое описание зачем они нужны: -- ***app_includes.h***     - Содержит ARM дефайны для компиляции в MSVC. +- ***app_includes.h***     - включает все необходимые для симуляции заголовочные файлы программы - ***app_init.c/.h***      - инициализация программы - ***app_io.c/.h***        - запись/считывание входов/выходов S-Function в программу - ***app_wrapper.c/.h***      - вызов функций из программы и создание заглушек для ненужных функций -- ***def.h***          - дефайны для симуляции программы в симулинке (осталось от улитковского) +- ***app_configs.h***      - пользовательские конфигурации программы для симулинка Также в папке ***\app_wrapper\device_support*** находяться стандартные библиотеки для TMS, но переделанные под компилятор MSVC (удален `volatile`, добавлены заглушки для `interrupt`, `asm`, `cregister`, добавлен код для симуляции IQlib). @@ -80,8 +80,8 @@ _Note for future: разные вектора можно использоват ###### pwm_sim ***pwm_sim.c/.h*** - симуляция ШИМ Поддерживает два режимы формирования ШИМ: -- для каждого таймера отдельно (PWM_SIMULATION_MODE_REGULAR_PWM) -- через линии ТК для всей фазы разом (PWM_SIMULATION_MODE_TK_LINES). +- `PWM_SIMULATION_MODE_REGULAR_PWM` - формирование ШИМ для каждого таймера отдельно +- `PWM_SIMULATION_MODE_TK_LINES` - через линии ТК для всей фазы разом ## Инструкция