Files
motor_params/AD_Keil_Project/README_AD_KEIL.md

4.7 KiB
Raw Blame History

Проект 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 во время разгона и выбега.