exponenta event banner

Устранение неполадок при преобразовании управления электродвигателем постоянного тока Simscape в модель Simulink, совместимую с HDL

В этом примере показано, как изменить модель Simscape™ завода для создания модели Simulink ®, совместимой с HDL, с использованием Coder™ HDL. Затем на основе этой модели Simulink генерируется код HDL.

Введение

Модель завода Simscape преобразуется в HDL-совместимую модель Simulink с помощью Simscape HDL Workflow Advisor. Для запуска помощника выполните команду sschdladvisor для модели.

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

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

Модель управления двигателем постоянного тока

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

open_system('ee_dc_motor_control')

Заключите двигатель постоянного тока и блок трения в подсистему и сохраните модель как ee_dc_motor_control_original.

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

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

sim('ee_dc_motor_control_original')
open_system('ee_dc_motor_control_original/Scope')

Сделать модель двигателя постоянного тока HDL-совместимой

Чтобы преобразовать модель в модель, совместимую с Simscape HDL Workflow Advisor:

1. Обнаружение присутствия нелинейных компонентов или блоков в модели. Для проверки наличия нелинейных блоков в модели завода Simscape введите:

simscape.findNonlinearBlocks('ee_dc_motor_control_original')
Found network that contains nonlinear equations in the following blocks:
    {'ee_dc_motor_control_original/DC Motor/Friction'}

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_dc_motor_control_original/DC Motor/Friction'}

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

2. Для совместимости HDL модель не должна содержать нелинейных элементов. Удалите блок трения из модели.

3. Чтобы быстрее моделировать модель и сократить время, необходимое консультанту Simscape HDL Workflow Advisor для извлечения уравнений состояния и пространства, сократите время остановки этой модели. На панели инструментов Simulink на вкладке «Моделирование» измените значение параметра «Время остановки» на 1.

Сохранение изменений в новой модели как ee_dc_motor_control_modified.

open_system('ee_dc_motor_control_modified')
set_param('ee_dc_motor_control_original','SimulationCommand','Update')

Для просмотра результатов моделирования измененной модели выполните следующие команды:

sim('ee_dc_motor_control_modified')
open_system('ee_dc_motor_control_modified/Scope')

Запуск Simscape HDL Workflow Advisor и проверка результатов моделирования

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

sschdladvisor('ee_dc_motor_control_modified')
### Running Simscape HDL Workflow Advisor for <a href="matlab:(ee_dc_motor_control_modified)">ee_dc_motor_control_modified</a>
Updating Model Advisor cache...
Model Advisor cache updated. For new customizations, to update the cache, use the Advisor.Manager.refresh_customizations method.

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

Моделирование модели внедрения и создание кода HDL

Перед созданием кода HDL из модели необходимо изменить время выборки и указать определенные настройки, которые делают модель совместимой для создания кода HDL. Время выборки модифицированной модели установки равно Ts, а количество итераций решателя для вычисления режимов равно 3. Поэтому необходимо изменить время образца модели. Чтобы задать параметры, совместимые с HDL, выполните следующие действия.

  1. В диалоговом окне «Параметры конфигурации»:

  • На панели решателя установите для параметра Фиксированный размер шага (время основной выборки) значение Ts/3 и выберите Рассматривать каждую дискретную скорость как отдельную задачу.

  • На панели «Диагностика» > «Пример времени» задайте для параметров «Многозадачный переход скорости» и «Переход скорости одной задачи» значение error.

  1. Добавьте блок Rate Transition в модель Simscape, размещенный внутри Subsystem в модели внедрения, как показано на рисунке ниже.

Чтобы смоделировать модель, выполните эту команду, а затем откройте блок «Область», чтобы увидеть результаты:

sim('gmStateSpaceHDL_ee_dc_motor_control_modifie')

Видно, что выходные данные, сгенерированные измененной моделью завода Simscape, соответствуют выходным данным, сгенерированным моделью внедрения.

Создание кода HDL и модели проверки

Перед созданием кода HDL рекомендуется включить создание модели проверки. Модель проверки сравнивает выходные данные созданной модели после генерации кода и измененной модели завода Simscape. Дополнительные сведения см. в разделах Сгенерированная модель и модель проверки.

Чтобы сохранить настройки создания модели проверки в модели Simulink, выполните следующую команду:

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

Чтобы создать код HDL, выполните следующую команду:

makehdl('gmStateSpaceHDL_ee_dc_motor_control_modified/HDL Subsystem')

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

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

Созданный код HDL и модель проверки сохраняются в hdlsrc каталог. Созданный код сохраняется как HDL_Subsystem_tc.vhd. Можно также проверить результаты моделирования, запустив модель проверки. gm_gmStateSpaceHDL_ee_dc_motor_control_modifie_vnl.slx.

См. также

Функции

Связанные темы