4.7 KiB
Проект AD для Keil
Это единая папка проекта для Keil uVision и стендовой проверки IHM08M1.
Открывать:
F:\set\workspace\setcorp\set506\AD\AD_Keil_Project\MDK-ARM\IHM08M.uvprojx
Основная Simulink-модель лежит отдельно от Keil-проекта:
F:\set\workspace\setcorp\set506\AD\Inu_im_1wnd_3lvl\inu_im_1wnd_3lvl.slx
Что внутри
| Папка или файл | Назначение |
|---|---|
Core/Inc, Core/Src |
прикладной код STM32 и добавленные модули AD |
Drivers |
STM32G4 HAL/CMSIS |
MDK-ARM |
Keil-проект, scatter-файл, результаты сборки |
IHM08M.ioc |
CubeMX-конфигурация проекта |
AD_docs |
русская документация по запуску, распиновке, структурам и Simulink |
Главные модули:
ad_project.h/.c- общий стартAD_Project_Init()и циклAD_Project_Loop();ad_board.h/.c- ADC, кнопка, board loop и удобные функции запуска тестов;ad_inverter.h/.c- управление TIM1, PWM-тесты каналов, начальное измерениеRs/Ls/Ll;ad_parameter_identification.h/.c- режимы, команды, safety limits, fault/status;simulink_interface.h/.c- структуры обмена и телеметрия;ad_debug.h- глобальная структураg_ad_debugдля Keil Watch.
Текущее состояние
Проект собирается в Keil без ошибок и предупреждений.
Распиновка IHM08M1 учтена:
PA0/PhA,PC1/PhB,PC0/PhC,PA1/BUSVдля ADC;PA8/UH,PA7/UL,PA9/VH,PB0/VL,PA10/WH,PB1/WLдля TIM1 PWM;PA6/BKINдля аппаратной аварии;PA5/LD2по умолчанию не используется из-за конфликта сPA5 - DAC.
DC-звено пересчитывается с учётом реального измерения 10.0 В -> 0.618 В на ADC и дополнительно усредняется.
Безопасность
По умолчанию физические PWM-выходы запрещены:
AD_PROJECT_POWER_TEST_ENABLE=0
Для стендового включения после проверки железа добавить в Keil C/C++ -> Define:
AD_PROJECT_POWER_TEST_ENABLE=1
Этот макрос включает AD_PARAM_ID_ENABLE_POWER_TESTS=1 и AD_INVERTER_ENABLE_OUTPUTS=1. При Stop, fault, блокировке или enable=0 TIM1 гасится аппаратным hook AD_ParamID_HardwareDisable().
Быстрый запуск
Безопасное логирование:
AD_Board_StartDataLogging();
AD_Board_StopParamTest();
PWM-тест одного канала:
AD_Board_StartParamTestWithDuty(AD_PARAM_ID_MODE_PWM_TEST_UH, 0.08f);
AD_Board_StopParamTest();
Автоизмерение текущего уровня:
AD_Board_StartParamTestWithDuty(AD_PARAM_ID_MODE_AUTO_IDENTIFICATION, 0.08f);
Результаты смотреть в g_ad_debug.motor_parameters и g_ad_debug.motor_parameters.valid_mask.
Документация
AD_docs/BUILD_AND_RUN.md- сборка, запуск и включение силовых тестов.AD_docs/HOW_TO_START_TEST_AND_WATCH.md- какие режимы запускать и что смотреть в Keil.AD_docs/PINOUT_MEASUREMENTS_TEST_CONTROL.md- распиновка, измеряемые параметры и команды.AD_docs/DATA_STRUCTURES.md- структуры данных и флаги.AD_docs/MD_DRIVER_MAP.md- карта слоя TIM1/inverter.AD_docs/ADC_CURRENT_SENSORS.md- где читаются токи и DC-звено.AD_docs/PIN_USAGE_IHM08M1_COMPARE.md- сверка пинов с IHM08M1.AD_docs/MODBUS_REGISTERS.md- карта Modbus RTU регистров для управления режимами и чтения статусов.AD_docs/SIMULINK_MODEL_RUN_HELP.md- где находится модель и как её открыть.
Ограничение текущей идентификации
Автоидентификация последовательно измеряет Rs_ohm, Ll_H, Rr_ohm, Lm_H и пересчитывает Ls_H/Lr_H. Параметры J_kg_m2 и B_Nm_s помечаются действительными только при наличии ненулевого сигнала speed_rpm во время разгона и выбега.