В этом примере показано, как идентифицировать и решить проблемы с настройками периферии и планированием задач на раннем этапе разработки.
Ниже приведены типичные проблемы, связанные с периферийными устройствами MCU и планированием:
Синхронизация ADC-PWM для достижения измерения тока в середине точки периода PWM
Включите задержки датчика, чтобы получить необходимую реакцию контроллера для системы с обратным циклом
Изучение различных настроек PWM при разработке специальных алгоритмов
В этом примере показано, как использовать SoC Blockset для решения этих проблем в приложении с обратной связью управления двигателем в симуляции и проверке на оборудовании путем развертывания на TI Delfino F28379D LaunchPad.
Необходимое оборудование:
Плата на F28379D TI Delfino F2837xD LaunchPad или TI Delfino
BOOSTXL-DRV8305EVM платы драйвера мотора
Двигатель Teknic M-2310P-LN-04K PMSM
open_system('soc_pmsm_singlecpu_foc');
Откройте модель soc_pmsm_singlecpu_foc. Эта модель описывает один контроллер двигателя CPU, содержащийся в soc_pmsm_singlecpu_ref модели, для синхронной инверторной системы с постоянными магнитами. Контроллер определяет выходы объекта управления с помощью ADC Interface и активирует интерфейс PWM, который управляет инвертором. Блоки алгоритмов из Motor Control Blockset™ используются в этом примере.
Оборудование АЦП содержат выборку и удержания для определения аналоговых входов. Чтобы гарантировать полное измерение АЦП, необходимо выбрать минимальное время сбора для учета комбинированных эффектов входа схемы и конденсатора в схеме выборки и удержания.
Откройте ADC Interface блока и измените время получения по умолчанию на 100 нс. Запустите симуляцию и просмотрите результаты в Данные Моделирования Inspector и наблюдайте, есть ли искажение в текущих формах волны. Низкое время приема привело к тому, что измерения АЦП не достигли своего истинного значения. В результате контроллер реагирует, генерируя относительный коэффициент заполнения, вызывающий изменения тока, потребляемого двигателем. Эти рисунки показывают реакцию на неправильное измерение АЦП и переопределение в канале тока фазы А с током фазы А в синем цвете и током фазы B в оранжевом цвете. Имитированная обратная связь скорости показывает значительные колебания во время перехода разомкнутого контура к замкнутому циклу, который в реальном мире остановит двигатель.
Чтобы исправить эту проблему, открытые блоки ADC Interface изменяют и изменяют время сбора на большее значение, 320ns. Это значение является минимальным временем получения АЦП, рекомендованным в таблице 5-42 таблицы данных TI Delfino F28379D LaunchPad. Запустите симуляцию и просмотрите результаты в Данные Моделирования Inspector. Этот рисунок показывает точно выбранные значения АЦП и контроллер, отслеживающий эталонное значение, как ожидалось.
Проверьте результаты симуляции на соответствие оборудованию путем развертывания модели на TI Delfino F28379D LaunchPad. На вкладке System on Chip нажмите Configure, Build, & Deploy, чтобы открыть инструмент SoC Builder.
В инструменте SoC Builder, на инструменте Peripheral Configuration, установите параметр окна сбора АЦП > SOCx равным 13 ADC clock ticks
для модулей ADC B и C. Параметр тактов синхроимпульса приема АЦП должен быть установлен на значение времени симуляции, установленное в блоке ADC Interface, умноженное на тактовую частоту АЦП. Вы можете получить тактовую частоту АЦП из аппаратных настроек модели. Откройте модель soc_pmsm_singlecpu_ref. На вкладке System on Chip нажмите Hardware Settings, чтобы открыть окно Параметры Конфигурации. В разделе Аппаратная реализация > Целевые аппаратные ресурсы > ADC_x, вы можете увидеть ADC clock frequency in MHz
значение параметров. Этот рисунок показывает настройку блока интерфейса ADC для симуляции и настройки периферийного приложения для развертывания. Используйте ту же настройку в симуляции и codegen, чтобы гарантировать ожидаемое поведение.
На странице Select Build Action для мониторинга данных с оборудования выберите Build and load for External mode
. Этот рисунок показывает данные от оборудования с точно выбранными значениями АЦП и контроллера, отслеживающего эталонное значение, как ожидалось.
Драйвер BOOSTXL-DRV8305EVM двигателя имеет 3-фазный инвертор, созданный с использованием 6 степеней MOSFETS. Эта плата драйвера мотора использует шунтирующий резистор с низкой стороной для измерения токов мотора. Схема измерения тока усиливает падение напряжения через шунт. Эта настройка обеспечивает рассеивание малой степени, так как ток течет только через шунт, когда нижние переключатели включены и удалены от шума коммутации ШИМ. Этот рисунок показывает схему шунтирующего резистора с низкой стороной BOOSTXL-DRV8305EVM приводе мотора.
Для правильной операции измерение тока должно происходить во время середины точки периода PWM, когда срабатывают АЦП. В частности, счетчик PWM должен быть на максимальном значении, когда нижние переключатели активны в режиме счетчика вверх-вниз. Дискретизация тока в другом образце приводит к измеренным токам нуля.
Чтобы проанализировать этот случай, переключите модель в режим симуляции инвертора высокой точности. Измените вариант объекта, чтобы использовать подробный 3-фазный инвертор на основе MOSFET для репликации BOOSTXL-DRV8305EVM.
set_param('soc_pmsm_singlecpu_foc/Inverter and Motor/Average or Switching',... 'LabelModeActivechoice','SwitchingInverter');
Измените Output mode
параметр интерфейса PWM для Switching
и соедините 6 ШИМ к блоку Mux.
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 Interface и Mux.
h = get_param('soc_pmsm_singlecpu_foc/PWM Channel/Mux','LineHandles'); delete_line(h.Inport);
В качестве последнего шага соедините 6 выходов PWM с Mux.
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 Interface и установите режим триггера Event на End of PWM period
. Запустите симуляцию и просмотрите результаты в Данные Моделирования Inspector. На рисунке токи фазы A и фазы B примерно равны нулю тока. Это приводит к потере обратной связи и отсутствию включения в цикле управления. Выберите Enable task simulation
в блоке Task Manager для моделирования и визуализации задач в Данные Моделирования Inspector.
Чтобы устранить эту проблему, измените режим триггера события на Mid point of PWM period
, эквивалентно максимальному значению внутреннего счетчика ШИМ. Запустите симуляцию и просмотрите результаты в Данные Моделирования Inspector.
Разверните модель на TI Delfino F28379D LaunchPad с помощью инструмента SoC Builder. В инструменте SoC Builder, на инструменте Peripheral строения, установите условие события PWM равным Counter equals to period
. Используйте ту же настройку в симуляции и codegen, чтобы гарантировать ожидаемое поведение. Этот рисунок показывает настройку блока PWM Interface для симуляции и настройку инструмента строения периферийных устройств для развертывания.
Этот рисунок показывает данные от симуляции и оборудования с правильной синхронизацией ADC-PWM и контроллером, отслеживающим ссылку значение, как ожидалось.
Копирайт 2020 The MathWorks, Inc.