Векторное управление синхронной машиной с постоянными магнитами

В этом примере показаны базовый рабочий процесс и ключевые API для генерации кода С из алгоритма управления двигателем и для проверки его скомпилированного поведения и времени выполнения. Вы будете использовать симуляцию Processor-in-the-loop (PIL), чтобы получить доверие в том, что код С будет выполняться должным образом, когда вы интегрируете его со встроенным программным обеспечением, которое взаимодействует с оборудованием двигателя. Несмотря на то, что этот рабочий процесс использует приложение управления двигателем для определенного процессора, можно применить этот рабочий процесс практически к любому приложению или процессору.

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

Обзор

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

Вы будете использовать среду симуляции, чтобы смоделировать и проверить поведение системы управления двигателем с обратной связью. Если поведение системы управления находится в пределах спецификации, вы сгенерируете код С из моделей контроллеров. После проверки кода вы оцените его функциональное поведение и время выполнения с помощью тестирования «цикл» (PIL).

Чтобы облегчить Тестирование с процессором в контуре обратной связи, вы выберете тестовые сигналы, чтобы выполнить модели контроллеров и установить ссылку выходов. Вы рассмотрим пример реализации PIL для процессора Instruments™ F28335 Техаса, который взаимодействует с Simulink ® на хост-компьютере по последовательному соединению. Можно использовать этот пример в качестве начальной точки для создания реализации PIL для собственного процессора. Вы запустите модели контроллеров в PIL-режиме, чтобы измерить время выполнения и проверить поведение выполнения кода, выполняемого на встраиваемом процессоре, относительно выходов ссылки симуляции.

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

Примечания

  • Simscape™ Electrical требуется для системной симуляции в разделе «Проверка поведения посредством Системной симуляции». Это не требуется для других задач.

  • Реализация Instruments™ F28335 PIL в Техасе является ссылкой подходом, который можно применять практически к любому процессору. Однако, если вы хотите использовать эту реализацию напрямую, вам потребуются дополнительные файлы поддержки, компиляторы и инструменты из Instruments™ Техаса. Более подробную информацию о них можно найти в разделе «Создание реализации PIL и регистрация в Simulink ®» этого примера. Эта ссылочная реализация PIL не требует функции Texas Instrument C2000™ Embedded Target Embedded Coder ®, но C2000™ пользователям рекомендуется установить пакет Texas Instruments C2000 Support Package с помощью Add-On Explorer.

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

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

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

open_system('rtwdemo_pmsmfoc_system')
out_system = sim('rtwdemo_pmsmfoc_system')
rtwdemo_pmsmfoc_plotsignals(out_system.logsout)
out_system = 

  Simulink.SimulationOutput:
                logsout: [1x1 Simulink.SimulationData.Dataset] 

     SimulationMetadata: [1x1 Simulink.SimulationMetadata] 
           ErrorMessage: [0x0 char] 

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

Исследуйте архитектуру модели

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

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

edit('rtwdemo_pmsmfoc_data.m')

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

open_system('rtwdemo_pmsmfoc_system/Embedded Processor')

Программное обеспечение контроллера задано в отдельной модели. В рамках этой модели подсистема Mode_Scheduler использует Stateflow ®, чтобы запланировать различные режимы работы алгоритма Motor_Control.

open_system('rtwdemo_pmsmfoc')

В пределах подсистемы Motor_Control сигналы датчика преобразуются в технические модули и передаются в алгоритм регулятора ядра. Алгоритм регулятора вычисляет напряжения. Затем напряжения преобразуются в сигнал драйвера.

open_system('rtwdemo_pmsmfoc/Motor_Control')

Основной закон управления является векторным контроллером. Контроллер имеет низкую скорость внешнего контура, который управляет скоростью, и более высокую скорость внутреннего цикла, который управляет током.

open_system('rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller')

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

fprintf('High rate sample time = %f seconds\n', ctrlConst.TsHi)
fprintf('Low rate sample time  = %f seconds\n', ctrlConst.TsLo)
High rate sample time = 0.000040 seconds
Low rate sample time  = 0.005000 seconds

Заметьте, что самая высокая частота в алгоритме регулятора - 25 кГц.

fprintf('High rate frequency = %5.0f Hz\n', 1/ctrlConst.TsHi)
High rate frequency = 25000 Hz

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

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

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

Прототип функции задан в параметрах конфигурации модели, и входной и выходной порты передаются как аргументы. Можно просмотреть спецификацию функции для алгоритма регулятора.

mdlFcn = RTW.getFunctionSpecification('rtwdemo_pmsmfoc');
disp(mdlFcn.getPreview('init'))
disp(mdlFcn.getPreview('step'))
Controller_Init ( )
error = Controller ( motor_on, command_type, current_request, * sensors, * pwm_compare )

Посредством использования глобальной структуры в сгенерированном коде можно получить доступ к пропорциональным и интегральным составляющим векторного контроллера. Эта глобальная структура задана в файле определения данных.

disp(ctrlParams.Value)
disp(ctrlParams.CoderInfo)
                            Current_P: 10
                            Current_I: 10000
                           Velocity_P: 0.0050
                           Velocity_I: 0.0150
                           Position_P: 0.1000
                           Position_I: 0.6000
                  StartupAcceleration: 1
                       StartupCurrent: 0.2000
                   RampToStopVelocity: 20
             AdcZeroOffsetDriverUnits: 2.2523e+03
                 AdcDriverUnitsToAmps: 0.0049
    EncoderToMechanicalZeroOffsetRads: 0
                        PmsmPolePairs: 4

Simulink.CoderInfo
    StorageClass: 'ExportedGlobal'
      Identifier: ''
       Alignment: -1

Вы генерируете код С из модели следующим образом.

slbuild('rtwdemo_pmsmfoc')
### Starting build procedure for: rtwdemo_pmsmfoc
### Successful completion of build procedure for: rtwdemo_pmsmfoc

Build Summary

Top model targets built:

Model            Action                       Rebuild Reason                                    
================================================================================================
rtwdemo_pmsmfoc  Code generated and compiled  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 59.217s

Используйте сгенерированный отчет, чтобы просмотреть сгенерированный файл кода C и проверить, что были сгенерированы правильные функции шага и инициализации. Также проверьте, что структура параметра была создана как глобальная переменная.

Установите эталонное поведение для моделей контроллеров

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

Параметры конфигурации моделей контроллеров, используемой для установления поведения ссылки и тестовых окружений, изменятся, как описано ниже. Блоки и параметры, используемые для определения проекта моделей контроллеров и генерации производственного кода, не изменятся. Однако, чтобы избежать изменения любой части установленных моделей контроллеров, сохраните модель и измените ее имя на rtwdemo_pmsmfoc_local.slx.

save_system('rtwdemo_pmsmfoc','rtwdemo_pmsmfoc_local.slx')
close_system('rtwdemo_pmsmfoc_system',0);
close_system('rtwdemo_pmsmfoc',0);
omCallMethod failed on slmsgviewer.renameTab

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

in.motor_on      = out_system.logsout.getElement('motor_on').Values;
in.command_type  = out_system.logsout.getElement('command_type').Values;
in.command_value = out_system.logsout.getElement('command_value').Values;
in.sensors       = out_system.logsout.getElement('sensors').Values;
display(in)
in = 

  struct with fields:

         motor_on: [1×1 timeseries]
     command_type: [1×1 timeseries]
    command_value: [1×1 timeseries]
          sensors: [1×1 struct]

Теперь эти сигналы могут быть присоединены к портам входа и импортированы в модели контроллеров таким образом, чтобы они могли выполняться непосредственно и независимо от системной модели. Преимущество этого подхода состоит в том, что модели контроллеров можно протестировать и проверить как автономный компонент, облегчая повторное использование и интегрирование с другими моделями системы или испытательных стендов с обратной связью. Чтобы разработать или подготовить модели контроллеров к проверке, измените ее Configuration Parameters, чтобы прикрепить входные сигналы и зарегистрировать сигналы в рабочей области MATLAB ®. Эти изменения могут быть внесены графически в Параметры конфигурации диалоговом окне модели или программно, как показано ниже.

set_param('rtwdemo_pmsmfoc_local',...
    'LoadExternalInput', 'on',...
    'ExternalInput', 'in.motor_on, in.command_type, in.command_value, in.sensors',...
    'StopTime','0.06',...
    'ZeroInternalMemoryAtStartup','on',...
    'SimulationMode', 'normal')
save_system('rtwdemo_pmsmfoc_local.slx')

Теперь можно выполнить модели контроллеров и построить график сигнала, сопоставленного с выходным портом PWM Compare.

out = sim('rtwdemo_pmsmfoc_local')
controller_mode = out.logsout.getElement('controller_mode').Values;
pwm_compare_ref = out.logsout.getElement('pwm_compare').Values;
rtwdemo_pmsmfoc_plotpwmcompare(controller_mode, pwm_compare_ref)
out = 

  Simulink.SimulationOutput:
                logsout: [1x1 Simulink.SimulationData.Dataset] 

     SimulationMetadata: [1x1 Simulink.SimulationMetadata] 
           ErrorMessage: [0x0 char] 

Записанные в журнал выходы будут использоваться в качестве ссылки поведения для Тестирования с процессором в контуре обратной связи.

Заметьте, что на графике отображается информация о режиме контроллера на каждом временном шаге. Эта информация о режиме будет полезна при интерпретации информации о профилировании выполнения.

Создание реализации PIL

В этом разделе вы будете изучать и использовать пример реализации PIL. Для начала ознакомьтесь с необходимой справочной документацией от Embedded Coder ®. Затем вы скопируете пример реализации PIL в локальную директорию и зарегистрируете его в Simulink ®. Вы проанализируете подход, используемый для разработки реализации PIL, и можете исследовать связанные файлы, чтобы получить дополнительное представление. Если вы используете плату F28335 Spectrum Digital Inc. eZdsp с Code Composer v4 и последовательным соединением, вы сможете настроить эту реализацию PIL, чтобы непосредственно работать с моделями контроллеров. Если вы используете другой процессор, можно использовать эту реализацию PIL как начальная точка для создания собственной реализации.

Основные принципы создания пользовательской реализации PIL описаны в Create PIL Target Connectivity Configuration for Simulink. Вы должны ознакомиться с основной концепцией использования rtiostream API для облегчения связи между Simulink ® (сторона хоста) и встраиваемым процессором (сторона назначения) во время тестирования с процессором в контуре обратной связи. Обратите внимание, что Embedded Coder ® предоставляет драйверы на стороне хоста для реализации TCP/IP по умолчанию (для всех платформ, поддерживаемых Simulink ®), а также только версию Windows ® для последовательной связи. Создание сгенерированного кода выполняется с помощью make-файла, как описано в разделе Настройка шаблонов make-файлов. Для создания реализации PIL вам потребуется выполнить несколько задач во встроенном окружении, включая запись драйвера связи на целевой стороне, запись файла make для создания сгенерированного кода и автоматизацию загрузки и выполнения встроенного исполняемого файла.

Используя вышеописанный подход, была создана реализация PIL для платы F28335 Spectrum Digital Inc. eZdsp. Ниже приведены сводные данные целевых компонентов API возможности подключения, используемых в этой реализации.

  • Коммуникация на стороне хоста - драйвер подключения на стороне хоста настроен на использование последовательной связи.

  • Связь на стороне цели - связь на стороне цели достигается с помощью рукописной последовательной реализации функций rtiostream, а также функций доступа к таймеру.

  • Процесс сборки - для создания исполняемого приложения используется подход, основанный на make-файлах.

  • Launcher - Загрузка и выполнение исполняемого файла выполняется с помощью утилиты Debug Server Scripting (DSS) Code Composer Studio™ v4 (CCSv4).

Реализация PIL было итеративная развито в три этапа. Ниже приведено описание этих этапов и задач, выполняемых на этих этапах. Вы можете найти полезным придерживаться аналогичного подхода при разработке собственной реализации PIL

Этап 1: Создайте последовательное приложение связи с CCSv4

  • Установите CCSv4 и убедитесь, что они могут подключаться к F28335 плате eZdsp.

  • Написание встраиваемого приложения, которое отправляет и получает серийные данные.

  • Проверьте последовательную связь между хостом-компьютером и встраиваемым приложением.

  • Идентифицируйте команды и опции для компилятора, линкера и архиватора, чтобы создать приложение с помощью make-файла.

  • Загрузите и запустите приложение из командной строки Windows ® с помощью утилиты DSS.

Этап 2: Реализуйте и тестируйте встроенный последовательный rtiostream и запустите автоматизацию с MATLAB ®

  • Расширьте последовательное приложение, чтобы реализовать функции rtiostream API для повторения данных. Напишите rtIOStreamOpen, чтобы выполнить общую инициализацию платы, включая настройку последовательного порта.

  • Проверьте отправку и получение последовательных данных с помощью встраиваемого процессора от MATLAB ® с помощью функции rtiostream_wrapper.

  • Загрузите и запустите приложение из MATLAB ® с помощью системной команды для вызова утилиты DSS.

Этап 3: Реализуйте и протестируйте строение подключения с Simulink ®

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

  • Создайте make-файл спецификации инструмента (target_tools.mk), который задает команды и опции для компилятора, линкера и архиватора. Этот make-файл включен в шаблон make-файла (target_tools.mk).

  • Создайте шаблон make-файла (ec_target.tmf), который включает в себя target_tools.mk.

  • Определите параметры, которые могут быть зависимыми от установки, и сохраните их как настройки MATLAB ®.

  • Создайте файл индивидуальной настройки Simulink ®, который определяет, когда реализация PIL действительна

Файлы, связанные с этой реализацией PIL, включены в Embedded Coder ®, но не указаны в пути MATLAB ®. Чтобы исследовать эти файлы, можно скопировать их в локальную директорию. Вы можете зарегистрировать эту реализацию PIL, добавив эту директорию к пути MATLAB ® и обновив индивидуальные настройки Simulink ®.

%copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','examplePilF28335'),'examplePilF28335','f')
addpath(genpath(fullfile(matlabroot,'toolbox','rtw','rtwdemos','examplePilF28335')))
sl_refresh_customizations

Настройки MATLAB ® используются для задания информации о пути и номера последовательного COM-порта хоста. Если эта реализация PIL используется непосредственно, необходимо задать эти настройки в соответствии с вашими строениями.

Обратите внимание, что TI_F28xxx_SysSWDir Выбор указывает на директорию, предоставленную Техасскими Instruments™ в их C2000™ Experimenter Kit Application Software (sprc675.zip). Эти файлы не включены в Embedded Coder ®.

setpref('examplePilF28335','examplePilF28335Dir', fullfile(matlabroot,'toolbox','rtw','rtwdemos','examplePilF28335'));
setpref('examplePilF28335','CCSRootDir',          'C:\Program Files\Texas Instruments\ccsv4');
setpref('examplePilF28335','TI_F28xxx_SysSWDir',  'C:\Program Files\Texas Instruments\TI_F28xxx_SysSW');
setpref('examplePilF28335','targetConfigFile',    fullfile(matlabroot,'toolbox','rtw','rtwdemos','examplePilF28335','f28335_ezdsp.ccxml'));
setpref('examplePilF28335','baudRate',            115200);
setpref('examplePilF28335','cpuClockRateMHz',     150);
setpref('examplePilF28335','boardConfigPLL',      10);
setpref('examplePilF28335','COMPort',             'COM4');

Теперь реализация PIL готова к использованию.

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

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

Когда вы начнете симуляцию в PIL-режиме, Simulink ® проверит, действительны ли какие-либо зарегистрированные реализации PIL. Файл индивидуальной настройки определяет, какие параметры конфигурации соответствуют допустимой реализации PIL. Изучить файл индивидуальной настройки для этой реализации можно путем вызова следующей команды.

edit(fullfile(matlabroot,'toolbox','rtw','rtwdemos','examplePilF28335','sl_customization.m'));

Заметьте, что этот файл задает настройку для аппаратного устройства и файла make-файла шаблона, которые необходимы для использования этой реализации PIL. Можно изменить параметры конфигурации в моделях контроллеров, чтобы соответствовать этим настройкам. Эти изменения могут быть внесены графически в Параметры конфигурации диалоговом окне модели или программно, как показано ниже.

set_param('rtwdemo_pmsmfoc_local',...
       'ProdHWDeviceType', 'Texas Instruments->C2000',...
       'TemplateMakefile', 'ec_target.tmf',...
       'GenCodeOnly', 'off',...
       'SimulationMode', 'processor-in-the-loop (pil)')

Можно задать сбор информации о профилировании выполнения во время тестирования с процессором в контуре обратной связи путем регистрации выходных значений симуляции как переменной pilOut и логгирование информации профилирования выполнения как переменной executionProfile. Эти изменения могут быть внесены графически в Параметры конфигурации диалоговом окне модели или программно, как показано ниже.

set_param('rtwdemo_pmsmfoc_local',...
    'CodeExecutionProfiling', 'on',...
    'CodeExecutionProfileVariable','executionProfile',...
    'CodeProfilingSaveOptions','AllData');
save_system('rtwdemo_pmsmfoc_local.slx')

Модели контроллеров теперь готовы к запуску в PIL-режиме.

Тестовое поведение и время выполнения сгенерированного кода

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

Можно запустить модель и построить график результатов PIL симуляции. Когда вы запускаете модель в первый раз, Embedded Coder ® сгенерирует код для алгоритма, свяжет код алгоритма с кодом последовательного интерфейса связи, создаст встраиваемое приложение, загрузит приложение на плату и начнет симуляцию on-target. Обратите внимание, что во время последующих PIL симуляций код регенерируется только в случае изменения модели. Из-за накладных расходов, связанных с интерфейсом последовательной связи, PIL симуляция может работать медленнее, чем модель в режим normal mode.

Команды MATLAB ® ниже намеренно комментируются, так как они требуют подключения к оборудованию и использования встраиваемых инструментов разработки, описанных ранее. Если у вас установлены оборудование подключенные и встроенные инструменты разработки, раскомментируйте и выполните эти линии, чтобы запустить модель, постройте график результатов и проверьте, что поведение численно эквивалентно симуляции, выполняемой в режим normal mode. В противном случае продолжите просмотр этого раздела, чтобы узнать об опциях анализа выполнения PIL.

% UNCOMMENT THE BELOW LINES TO RUN THE SIMULATION AND PLOT THE RESULTS
% if exist('slprj','dir'), rmdir('slprj','s'); end
% out = sim('rtwdemo_pmsmfoc_local')
% pwm_compare_pil = out.logsout.getElement('pwm_compare').Values;
% rtwdemo_pmsmfoc_plotpwmcompare_pil(controller_mode, pwm_compare_pil, executionProfile)

Верхний график является выходом контроллера PWM Compare. Обратите внимание, что выходы в режиме PIL выглядят так же, как выходы симуляции в режиме normal mode, показанном в разделе «Установить эталонное поведение для моделей контроллеров». Можно вычесть выходы симуляции режима normal mode из выхода моделирования PIL-режима, чтобы убедиться, что они численно эквивалентны:

% UNCOMMENT THE BELOW LINE TO VERIFY NUMERICAL EQUIVALENCE OF THE OUTPUTS
% pilErrorWithRespectToReference = sum(abs(pwm_compare_pil.Data - pwm_compare_pil.Data))
pilErrorWithRespectToReference =
   0     0     0

Нижний график является количеством времени, потраченным на выполнение моделей контроллеров на каждом временном шаге симуляции. Состояние «Stand By» требует наименьшего времени. Небольшие периодические всплески во времени выполнения происходят, потому что контроллер является многоскоростным и однозадачным. Периодические всплески соответствуют времени, необходимому для запуска как базовой скорости, так и кода скорости 5 миллисекунд в одной задаче.

Поскольку контроллер должен быть выполнен со скоростью 25 кГц на встраиваемом процессоре, алгоритм должен завершить его выполнение за 40 микросекунд (минус дополнительные требования к запасу по другому коду, который также может выполняться в конечном приложении). Результаты профилирования показывают, что алгоритм будет выполнен в течение времени, отведенного для этого строения встроенного окружения.

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

close_system('rtwdemo_pmsmfoc_local',0);
close_system('power_utile',0);

Настройки MATLAB ®, используемые в этой реализации PIL, сохраняются между сеансами MATLAB ®. Если необходимо удалить эти настройки, выполните следующие команды.

rmpref('examplePilF28335');
rmexamplePilF28335hooks();

Заключение

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

Похожие темы