Диагностируйте преобразование постоянного магнита Simscape™ синхронный двигатель к совместимой с HDL модели Simulink

В этом примере показано, как изменить модель объекта управления Simscape™, которая является непрерывным временем и содержит нелинейные элементы, чтобы сгенерировать совместимую с HDL модель Simulink™. Можно затем сгенерировать HDL-код для этой модели Simulink.

Введение

HDL Workflow Advisor Simscape преобразует модель объекта управления Simscape в совместимую с HDL модель реализации, из которой вы генерируете HDL-код. В некоторых случаях модель объекта управления Simscape не может быть совместимой для генерации модели реализации. В таких случаях вы сначала изменяете модель объекта управления Simscape и затем запускаете Советника.

Этот пример иллюстрирует, как изменить постоянный магнит синхронная модель электродвигателя для совместимости с HDL Workflow Advisor Simscape. Модель является непрерывным временем и содержит много нелинейных компонентов. Вы изменяете эту модель к переключенной линейной модели дискретного времени и затем запустите HDL Workflow Advisor Simscape.

Постоянный магнит синхронная модель электродвигателя

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

open_system('ee_pmsm_drive')

Сохраните эту модель как ee_pmsm_drive_original.slx

open_system('ee_pmsm_drive_original')
set_param('ee_pmsm_drive_original','SimulationCommand','Update')

Модель содержит Постоянный магнит синхронную машину (PMSM) и размера инвертора, который можно использовать в типичном гибридном автомобиле. Инвертор соединяется с батареей транспортного средства. Чтобы видеть, как модель работает, симулируйте модель.

sim('ee_pmsm_drive_original')
open_system('ee_pmsm_drive_original/Scope')

Эта модель является непрерывной системой времени. Чтобы использовать эту модель с HDL Workflow Advisor Simscape, преобразуйте модель в дискретную систему. Затем вы изменяете модель, чтобы использовать блоки, которые совместимы для Simscape с рабочим процессом HDL.

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

1. Сконфигурируйте опции решателя для генерации HDL-кода при помощи блока Solver Configuration. В параметрах блоков:

  • Выберите Use локальный решатель.

  • Используйте Backward Euler как тип Решателя.

  • Задайте дискретный Шаг расчета, Ts.

2. Измените настройки Solver модели. На вкладке Modeling нажмите Model Settings. На панели Решателя:

  • Установите тип выбора Решателя на Fixed-Step.

  • Установите решатель на discrete (no continuous states).

  • Установите размер Фиксированного шага (основной шаг расчета) к Ts.

  • В разделе Tasking и опциях шага расчета, очистите Обработку каждый дискретный уровень как отдельная задача.

3. Измените настройки отображения своей модели. На вкладке Debug выберите Information Overlays> Sample Time> Colors. Рассмотрите Легенду Шага расчета для блоков, которые имеют шаг расчета кроме Ts, или запуститесь в непрерывном масштабе времени. Дважды кликните блок Step и установите Шаг расчета на Ts.

4. Для более быстрой симуляции проигнорируйте параметры нулевой последовательности PMSM. Дважды кликните блок Permanent Magnet Synchronous Motor и установите Нулевую Последовательность на Exclude.

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

Вы используете двухступенчатый процесс, чтобы преобразовать модель объекта управления Simscape в совместимую с HDL модель реализации:

1. Реализуйте модель Simulink, которая заменяет нелинейную часть алгоритма Simscape при помощи эквивалентных блоков Simulink.

2. Измените эту модель, чтобы использовать блоки, которые совместимы для Simscape с рабочим процессом HDL.

Замените нелинейные блоки Simscape на эквивалентную реализацию Simulink

1. Чтобы сделать модель объекта управления Simscape Совместимой с HDL, идентифицируйте присутствие любых нелинейных компонентов или блоков в модели:

simscape.findNonlinearBlocks('ee_pmsm_drive_original')
Found network that contains nonlinear equations in the following blocks:
    'ee_pmsm_drive_original/Permanent Magnet Synchronous Motor'

The number of linear or switched linear networks in the model is 0.
The number of nonlinear networks in the model is 1.

ans =

  1x1 cell array

    {'ee_pmsm_drive_original/Permanent Magnet Synchronous Motor'}

Модель объекта управления Simscape имеет нелинейный блок, который является блоком PMSM.

2. Замените блок PMSM, блок Encoder, резистор Gmin и блок Motor & Load Inertia с блоками Simulink, которые выполняют эквивалентный алгоритм.

ee_pmsm_drive_singleSL модель иллюстрирует, как вы изменяете Электрический Интерфейсный и Постоянный магнит Синхронный Двигатель (Simulink) подсистемы. Чтобы реализовать блок Electrical Interface, вы используете Управляемые Текущие Источники.

load_system('ee_pmsm_drive_singleSL')
set_param('ee_pmsm_drive_singleSL','SimulationCommand','update')
open_system('ee_pmsm_drive_singleSL/Electrical Interface')

Интерфейс к PMSM изолируется от реализации. Чтобы реализовать PMSM при помощи блоков Simulink, вы используете Электрические уравнения и Механические уравнения. В блоках Преобразования парка Transform и парка Inverse устраните блоки Синуса и Косинуса.

open_system('ee_pmsm_drive_singleSL/Permanent Magnet Synchronous Motor (Simulink)', 'force')

Измените модель Simulink для совместимости с генерацией модели реализации HDL

1. Чтобы сохранить использование ресурсов на целевом компьютере, добавьте блоки Преобразования типа данных, чтобы преобразовать модель, чтобы использовать single типы данных.

2. Добавьте Электронные часы с Шагом расчета Ts в верхнем уровне модели. Соедините часы с блоком Display.

3. Замените блок Three-Phase Current Sensor Simscape путем питания контроллера трехфазными токами, прибывающими из модели PMSM.

Этот рисунок иллюстрирует верхний уровень модели с вышеупомянутыми изменениями.

open_system('ee_pmsm_drive_singleSL')

4. Уменьшать место области FPGA для:

  • Блок парк Transform, вы добавляете Кларка Трэнсформа и Кларка с блоками парка Angle Transform.

  • Обратный блок Park Transform, вы добавляете парк Inverse в Кларка Энгла Трэнсформа и Инверсию блоки Кларка Трэнсформа.

open_system('ee_pmsm_drive_singleSL/Permanent Magnet Synchronous Motor (Simulink)/Park Transform')

open_system('ee_pmsm_drive_singleSL/Permanent Magnet Synchronous Motor (Simulink)/Inverse Park Transform')

Запустите HDL Workflow Advisor Simscape

Чтобы открыть HDL Workflow Advisor Simscape, запустите sschdladvisor функционируйте для своей модели:

sschdladvisor('ee_pmsm_drive_singleSL')

Чтобы сгенерировать модель реализации, в HDL Workflow Advisor Simscape, оставляют настройки по умолчанию и затем запускают задачи. Чтобы открыть модель реализации, в Сгенерировать задаче модели реализации, щелкают по ссылке.

Реконфигурируйте модель реализации для генерации HDL-кода

Сохраните эту модель как gmStateSpaceHDL_ee_pmsm_drive_GenerateHDL. Реконфигурировать модель реализации с одинарной точностью для генерации HDL-кода:

1. Запустите hdlsetup функция на модели.

hdlsetup('gmStateSpaceHDL_ee_pmsm_drive_GenerateHDL')

2. Измените размер Фиксированного шага к Ts/4 потому что Количеством по умолчанию Итераций является 4.

3. Удалите Контроллер PMSM и Постоянный магнит Синхронный Двигатель (Simulink) подсистемы от Подсистемы, которая содержит исходную модель Simscape. Удалите эту Подсистему и поместите Подсистему контроллера PMSM с Подсистемой HDL в верхнем уровне модели.

model_name = 'gmStateSpaceHDL_ee_pmsm_drive_GenerateHDL';
dut_name = 'gmStateSpaceHDL_ee_pmsm_drive_GenerateHDL/HDL Subsystem';
open_system(model_name)
set_param(model_name,'SimulationCommand','Update')

4. Inisde HDL Subsytem, Подсистема Алгоритма HDL имеет Допустимое, сигнализируют. Поместите Постоянный магнит Синхронный Двигатель (Simulink) подсистема в Enabled Подсистеме и соединитесь, vs_LL входной порт к Допустимому сигнализируют.

open_system(dut_name)

5. В Постоянном магните Синхронный Двигатель (Simulink) подсистема несколько блоков Интегратора Дискретного времени имеют шаг расчета как Ts. Измените шаг расчета этих блоков к -1. Интегратор с Перенесенным состоянием (Дискретный или Непрерывный) блок не совместим для генерации HDL-кода. Замените Интегратор на Перенесенное состояние (Дискретный или Непрерывный) с этим Wrapped State DTI Подсистема.

open_system([dut_name,'/Enabled Subsystem/Permanent Magnet Synchronous Motor (Simulink)'],'force')

6. Симулируйте модель. Если симуляция отображает ошибки, которые указывают на несоответствие уровня, добавляют блоки Перехода Уровня между портами, которые разрешают это несоответствие. В Подсистеме Сигналов, чтобы предоставить выходные сигналы блоку Scope на том же уровне, блокам Перехода Уровня места.

open_system([model_name,'/Out Signals'])

Сгенерируйте HDL-код

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

hdlset_param(model_name, 'GenerateValidationModel', 'on');

Чтобы узнать больше, см. Сгенерированную Модель Модели и Валидации.

Чтобы сгенерировать HDL-код, запустите эту команду:

makehdl('gmStateSpaceHDL_ee_pmsm_drive_GenerateHDL/HDL Subsystem')

По умолчанию HDL Coder генерирует код VHDL. Чтобы сгенерировать код Verilog, запустите эту команду:

makehdl('gmStateSpaceHDL_ee_pmsm_drive_GenerateHDL/HDL Subsystem', 'TargetLanguage', 'Verilog')

Генератор кода сохраняет сгенерированный HDL-код и модель валидации в hdlsrc папка. Сгенерированный код сохранен как HDL_Subsystem_tc.vhd. Чтобы видеть информацию об использовании ресурсов вашего проекта, просмотрите Отчет Генерации кода.

Чтобы открыть модель валидации, после того, как вы сгенерируете HDL-код, открывают gm_gmStateSpaceHDL_ee_pmsm_drive_GenerateHDL_vnl.slx модель.

Смотрите также

Функции

Похожие темы