Диагностируйте проблемы преобразования Simscape DC Motor Control в HDL-совместимую модель Simulink

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

Введение

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

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

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

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

Модель управления двигателем постоянного тока является физической моделью, разработанной в 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')

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

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

Сделайте DC Модель электродвигателя 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 модель не должна содержать нелинейные элементы. Удалите блок Triction из модели.

3. Чтобы симулировать модель быстрее и уменьшить время, которое Simscape HDL Workflow Advisor занимает, чтобы извлечь уравнения пространства состояний, уменьшите время остановки этой модели. На панели инструментов Simulink, на вкладке Simulation, смените Время Остановки на 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 оставьте все задачи в настройках по умолчанию и затем запустите задачи. Щелкните ссылку в задаче Generate реализации model, чтобы открыть модель.

Симулируйте модель реализации и сгенерируйте HDL-код

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

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

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

  • На панели Diagnostics > Шаг расчета установите Multitask rate transition и Single task rate transition на error.

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

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

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 Coder генерирует код 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.

См. также

Функции

Похожие темы