exponenta event banner

Интеграция планирования MCU и периферийных устройств в приложение управления двигателем

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

Ниже приведены типичные проблемы, связанные с периферийными устройствами MCU и планированием:

  • Синхронизация ADC-PWM для получения текущего сигнала в середине периода PWM

  • Включение задержек датчиков для достижения требуемого отклика контроллера для системы с замкнутым контуром

  • Изучение различных настроек ШИМ при разработке специальных алгоритмов

В этом примере показано, как использовать SoC Blockset для решения этих проблем в приложении с замкнутым контуром управления двигателем при моделировании и проверке оборудования путем развертывания на TI Delfino F28379D LaunchPad.

Необходимое оборудование:

  • Плата на базе TI Delfino F28379D LaunchPad или TI Delfino F2837xD

  • BOOSTXL-DRV8305EVM плата привода двигателя

  • Двигатель Teknic M-2310P-LN-04K PMSM

Структура модели

open_system('soc_pmsm_singlecpu_foc');

Откройте модель soc_pmsm_singlecpu_foc. Эта модель моделирует один контроллер двигателя ЦП, содержащийся в soc_pmsm_singlecpu_ref модели, для системы инвертора синхронного двигателя с постоянным магнитом. Контроллер распознает выходные сигналы установки с помощью интерфейса ADC (SoC Blockset) и срабатывает с помощью интерфейса PWM (SoC Blockset), который управляет инвертором. В этом примере используются блоки алгоритмов из Blockset™ управления двигателем.

Время сбора данных АЦП

Аппаратные средства АЦП содержат схему выборки и удержания для считывания аналоговых входов. Для обеспечения полного измерения АЦП необходимо выбрать минимальное время приема, чтобы учесть комбинированные эффекты входной цепи и конденсатора в схеме выборки и хранения.

Откройте блок интерфейса АЦП и измените время сбора данных по умолчанию на 100 нс. Запустите моделирование и просмотрите результаты в инспекторе данных моделирования, чтобы убедиться в искажении текущих форм сигнала. Низкое время обнаружения привело к тому, что измерения АЦП не достигли их истинного значения. В результате контроллер реагирует путем создания относительного рабочего цикла, вызывающего изменения тока, потребляемого двигателем. На этих рисунках показана реакция на неверное измерение АЦП и перетягивание в канале тока фазы А с током фазы А синим цветом и током фазы В оранжевым цветом. Моделируемая обратная связь по скорости показывает значительные колебания во время перехода от разомкнутого контура к замкнутому контуру, что в реальном мире остановит двигатель.

Чтобы устранить эту проблему, откройте блоки интерфейса ADC и измените время сбора на большее значение, 320 нс. Это значение является минимальным временем получения ADC, рекомендованным в таблице 5-42 спецификации TI Delfino F28379D LaunchPad. Запустите моделирование и просмотрите результаты в инспекторе данных моделирования. На этом рисунке показаны точно отобранные значения АЦП и контроллер, отслеживающий эталонное значение, как и ожидалось.

Проверьте результаты моделирования по аппаратным средствам, развернув модель на TI Delfino F28379D LaunchPad. На вкладке Система на кристалле щелкните Настроить, Построить и развернуть, чтобы открыть инструмент SoC Builder (SoC Blockset).

В инструменте SoC Builder на инструменте «Конфигурация периферии» задайте для параметра ADC > SOCx acquisition window cycles значение 13 ADC clock ticks для модулей ADC B и C. Параметр тактов сбора данных АЦП должен быть установлен в значение времени моделирования, установленное в блоке интерфейса АЦП, умноженное на тактовую частоту АЦП. Тактовую частоту АЦП можно получить из настроек аппаратных средств модели. Откройте модель soc_pmsm_singlecpu_ref. На вкладке System on Chip нажмите Hardware Settings, чтобы открыть окно Configuration Parameters. В разделе Hardware Implementation > Target hardware resources > ADC_x можно увидеть ADC clock frequency in MHz значение параметра. На этом рисунке показаны параметры блока интерфейса ADC для моделирования и периферийных приложений для развертывания. Используйте тот же параметр в моделировании и кодегене, чтобы обеспечить ожидаемое поведение.

На странице Select Build Action (Выбор действия построения) для мониторинга данных с оборудования выберите Build and load for External mode. На этом рисунке показаны данные от аппаратных средств с точно отобранными значениями АЦП и контроллер, отслеживающий эталонное значение, как и ожидалось.

Синхронизация ADC-PWM

Привод BOOSTXL-DRV8305EVM двигателя имеет 3-фазный инвертор, построенный с использованием 6 силовых МОП. Эта плата привода двигателя использует шунтирующий резистор низкой стороны для измерения токов двигателя. Схема измерения тока усиливает падение напряжения на шунте. Эта настройка обеспечивает малое рассеяние мощности, поскольку ток протекает через шунт только тогда, когда нижние выключатели включены и удалены от шумов коммутации ШИМ. На этом рисунке показана схема шунтирующего резистора низкой стороны в BOOSTXL-DRV8305EVM приводе двигателя.

Для правильной работы измерение тока должно происходить в середине периода ШИМ при срабатывании АЦП. В частности, счетчик ШИМ должен иметь максимальное значение, когда нижние переключатели активны в режиме счетчика «вверх-вниз». Выборка тока в другом экземпляре приводит к измеренным токам, равным нулю.

Для анализа этого случая переключите модель в режим моделирования инвертора высокой точности. Измените вариант установки, чтобы использовать подробный трехфазный инвертор на основе MOSFET для репликации BOOSTXL-DRV8305EVM.

set_param('soc_pmsm_singlecpu_foc/Inverter and Motor/Average or Switching',...
'LabelModeActivechoice','SwitchingInverter');

Изменить Output mode параметр интерфейса PWM (блок SoC) для Switching и подключите 6 модулей PWM к блоку мультиплексора.

set_param('soc_pmsm_singlecpu_foc/PWM Channel/PWM Interface', 'OutSigMode', 'Switching');
set_param('soc_pmsm_singlecpu_foc/PWM Channel/PWM Interface1', 'OutSigMode','Switching');
set_param('soc_pmsm_singlecpu_foc/PWM Channel/PWM Interface2', 'OutSigMode', 'Switching');

Удаление существующего соединения между блоком интерфейса PWM и мультиплексором.

h = get_param('soc_pmsm_singlecpu_foc/PWM Channel/Mux','LineHandles');
delete_line(h.Inport);

В качестве последнего шага подключите 6 выходов PWM к мультиплексору.

set_param('soc_pmsm_singlecpu_foc/PWM Channel/Mux','Inputs','6');
add_line('soc_pmsm_singlecpu_foc/PWM Channel', ...
{'PWM Interface/1', 'PWM Interface/2', 'PWM Interface1/1',...
'PWM Interface1/2', 'PWM Interface2/1', 'PWM Interface2/2'}, ...
{'Mux/1','Mux/2','Mux/3','Mux/4','Mux/5','Mux/6'}, 'autorouting', 'smart');

Откройте блоки интерфейса PWM и установите режим триггера события в значение End of PWM period. Запустите моделирование и просмотрите результаты в инспекторе данных моделирования. На чертеже токи фазы А и фазы В приблизительно равны нулю. Это приводит к потере обратной связи и отсутствию срабатывания в контуре управления. Выбрать Enable task simulation в блоке Диспетчера задач для моделирования и визуализации задач в Инспекторе данных моделирования.

Чтобы устранить эту проблему, измените режим триггера события на Mid point of PWM period, что эквивалентно максимальному значению внутреннего счетчика ШИМ. Запустите моделирование и просмотрите результаты в инспекторе данных моделирования.

Разверните модель на TI Delfino F28379D LaunchPad с помощью инструмента SoC Builder (SoC Blockset). В инструменте SoC Builder на инструменте конфигурирования периферийных устройств задайте условие события PWM равным Counter equals to period. Используйте тот же параметр в моделировании и кодегене, чтобы обеспечить ожидаемое поведение. На этом рисунке показана настройка блока интерфейса PWM для моделирования и настройка инструмента настройки периферийных устройств для развертывания.

На этом рисунке показаны данные от моделирования и аппаратных средств с правильной синхронизацией ADC-PWM и контроллер, отслеживающий эталонное значение, как и ожидалось.

См. также

Авторское право 2020-2021 The MathWorks, Inc.