Используйте Motor Control Blockset, чтобы сгенерировать код для пользовательского целевого устройства

Этот пример показов, как использовать Motor Control Blockset™ с любым процессором.

Пример показывает, как симулировать и сгенерировать код из системной модели, сконфигурированной для процессора Instruments™ C2000™ F28069M Техаса. Системная модель использует реализацию Field-Oriented Control (FOC), которую можно запустить на любом процессоре. Алгоритмическая часть модели отделена от слоя драйвера с помощью образца модели, которую можно развернуть на любом устройстве.

Требуемые продукты

  • MATLAB ®

  • Simulink ®

  • MATLAB ® Coder™

  • Coder™ Simulink ®

  • Motor Control Blockset™

  • Embedded Coder ®

  • Fixed-Point Designer™ (только для последовательной связи)

Проверьте поведение алгоритма при помощи системной симуляции

В этом разделе показано, как проверить контроллер в системной симуляции с обратной связью.

Системная модель mcb_pmsm_foc_system испытательный стенд состоят из тестовых воздействий, встраиваемого процессора, силовой электроники и оборудования для двигателей. Чтобы увидеть сигналы, используйте кнопку Data Inspector на вкладке Simulation панели инструментов Simulink. Можно использовать эту модель, чтобы протестировать контроллер и исследовать его ожидаемое поведение.

Используйте эту команду, чтобы открыть модель.

open_system('mcb_pmsm_foc_system.slx');

ПРИМЕЧАНИЕ. Эта модель поддерживает только расчеты с плавающей точкой.

Запустите симуляцию и смотрите зарегистрированные ссылки скорости (Speed_Reference) и измеренные сигналы скорости двигателя (Speed_Motor) в инспекторе данных.

Архитектура модели

В этом разделе описывается архитектура модели и включены эти подразделы:

  • Спецификация данных

  • Разбиение контроллера на разделы с испытательного стенда

  • Планирование работы контроллера

Архитектура модели облегчает системную симуляцию и генерацию алгоритмического кода.

Спецификация данных

Файл определения данных создает данные, необходимые для симуляции и генерации кода. Этот файл данных автоматически запускается в коллбэк InitFcn системной тестовой модели.

edit('mcb_algorithm_workflow_data.m')

Другой файл данных, mcb_pmsm_foc_qep_f28069LaunchPad_data.m определяет параметры двигателя и инвертора.

Обновите параметры двигателя и инвертора для вашего аппаратного строения в этом файле. Например, обновляйте параметры двигателя в mcb_SetPMSMMotorParameters функций, которая вызывается из этого файла.

Разбиение контроллера на разделы с испытательного стенда

В системной тестовой модели встраиваемого процессора моделируется как комбинация периферийных устройств и программного обеспечения контроллера. Блок mcb_pmsm_foc_system/Embedded Processor/Serial Receive реализует опорные входы для симуляции.

open_system('mcb_pmsm_foc_system/Embedded Processor');

В этом примере отдельная модель включает программное обеспечение контроллера. Модель ПО контроллера содержит подсистемы Регулирование Скорости и Управление Током алгоритма FOC.

open_system('mcb_pmsm_foc.slx');

Планирование работы контроллера

Основным методом управления является векторное управление. Контроллер имеет низкоскоростной внешний контур, который управляет скоростью. Он также имеет более высокую скорость внутреннего цикла, который управляет током. Подсистема управления скоростью реализует ПИ-контроллер для скорости. Подсистема управления током преобразует сигналы АЦП (или обратную связь по току) в значения в относительных единицах и передает их в основной алгоритм регулятора. Кроме сложения, он также измеряет значения скорости и положения от импульсов квардатурного энкодера.

Значение алгоритма регулятора вычисляет напряжения. Затем напряжения преобразуются в сигнал драйвера. Внешний контур контроллера скорости выполняется после каждого образца периода времени, используемого для запуска текущего цикла управления. Можно просмотреть переменные, которые задают шаги расчета скорости и тока цикла управления с помощью следующих команд:

fprintf('Current loop sample time = %f seconds\n', Ts)
fprintf('Speed loop sample time  = %f seconds\n', Ts_speed)

Сгенерируйте код С для интеграции контроллера во встраиваемое приложение

В этом разделе показано, как сгенерировать и визуально проверить функцию кода С для контроллера.

Сгенерированный код состоит из трех сгенерированных глобальных функций:

  • void Controller_Init (void): Эта функция должна вызываться для выполнения стандартных программ инициализации.

  • void Current_Controller (void): Эта функция реализует токовый контроллер и должна вызываться из задачи, выполняемой в 50e-6 секунд.

  • void Speed_Controller (void): Эта функция реализует контроллер скорости и должна вызываться из задачи, выполняемой в 500e-6 секунд.

Чтобы задать прототип функции, смотрите Сконфигурируйте генерацию кода C для функций точки входа модели.

Входы в алгоритм управления FOC:

  • ExternalInputs_mcb_pmsm_foc: Это структура с ссылкой скорости и сигналом для включения двигателя.

  • SensorSigs: Это массив с${I_a}$ счетчиками АЦП${I_b}$, счетчиками АЦП, счетчиками положения квадратурного энкодера и квадратурным энкодером индекса защелкой.

Выходы алгоритма управления FOC:

  • PWM Duty: Это массив с коэффициентами заполнения PWM для трех фаз и сигналом для включения PWM.

  • DebugSignals: Это массив сигналов, которые можно записать во время выполнения алгоритма управления.

Параметры для алгоритма управления FOC:

  • PI_params: Это структура, которая содержит PI-коэффициенты усиления Kp_i, Ki_i, Kp_speed и Ki_speed.

  • IsOffset, IbOffset: Это переменные datastore, которые содержат смещения калибровки АЦП.

Аппаратное периферийное интегрирование

  • Аппаратные периферийные устройства интегрированы с алгоритмом управления подсистемы mcb_pmsm_foc_system/Embedded Processor.

  • Прерывание АЦП используется для планирования сгенерированного кода. Прерывание срабатывает на 50e-6 секундах.

  • Подсистема mcb_pmsm_foc_system/Embedded Processor/Hardware Init находит смещения калибровки АЦП и предоставляет их алгоритму управления.

  • Подсистема mcb_pmsm_foc_system/Embedded Processor/Sensor Блоков драйверов реализует периферийные устройства ADC и квадратурного энкодера.

  • Подсистема mcb_pmsm_foc_system/Embedded Processor/Serial Receive имеет последовательные блоки для приема входов от модели хоста, когда сгенерированный код выполняется на целевом устройстве.

  • Подсистема mcb_pmsm_foc_system/Embedded периферийные устройства драйвера процессора/инвертора имеет периферийные устройства PWM и блок Serial Transmit для отправки данных в хост-компьютер. Все эти периферийные устройства используются из пакета поддержки Instruments™ C2000™ Техаса.

Если вы используете пользовательский процессор, можно реализовать логику драйвера с помощью пользовательского кода. Можно интегрировать сгенерированный код для алгоритма управления с собственным кодом драйвера в предпочитаемой среде Integrated Среда Разработки (IDE).

Тестовое поведение сгенерированного кода

Для получения дополнительной информации о необходимых аппаратных соединениях см. раздел «Аппаратные подключения».

  • Создайте и загрузите исполняемый файл в цель для модели mcb_pmsm_foc_system.

  • Откройте mcb_host_model_f28069m модели хоста, используя ссылку модели хоста, доступную в модели mcb_pmsm_foc_system.

  • Обновите имя COM-порта для целевого устройства в блоке Host Serial Setup модели хоста.

  • Щелкните Запуском на вкладке Симуляции, чтобы запустить модель хоста.

  • Смените положение переключателя Motor Start/Stop на On, чтобы начать вращать двигатель.

  • Измените Задающую скорость и отслеживайте эффекты в возможности окне.

Для просмотра документации необходимо авторизоваться на сайте