Запуск с Simscape Оборудования в цикле

Чтобы выполнить симуляцию оборудования в цикле (HIL) с меньшими временными интервалами и повышенной точностью, развертывайте Simscape™ моделей объекта управления на ПЛИС на борту модулей ввода-вывода Speedgoat.

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

  • Сгенерируйте HDL-код для модели реализации, а затем разверните сгенерированный код в типовых FPGA, SoCs или FPGA на борту модулей ввода-вывода Speedgoat FPGA с помощью HDL Workflow Advisor.

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

Модели примера Simscape для генерации HDL-кода

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

  • Усиление конвертера

  • Мостовой выпрямитель

  • Понижающий конвертер

  • Полуволновый выпрямитель

  • Три фазы выпрямителя

  • Два уровня конвертера идеальный

  • Двухуровневый преобразователь IGBT

  • Модель инвертора солнечной степени

  • Швейцарский выпрямитель

  • Венский выпрямитель

Все примеры снабжены префиксом sschdlex и постфикс с Example. Для примера, чтобы открыть модель усилителя конвертера, в MATLAB® в командной строке введите:

load_system('sschdlexBoostConverterExample')
open_system('sschdlexBoostConverterExample/Simscape_system')

Инструкции по моделированию Simscape для совместимости HDL

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

Используйте линейные и коммутируемые линейные блоки

Создайте модель Simscape с помощью линейных и коммутируемых линейных блоков. Линейные блоки являются блоками, которые заданы линейным отношением, таким как резисторы. Коммутируемые линейные блоки являются блоками, такими как диоды и переключатели. Эти блоки также заданы линейной зависимостью, такой как V = IR, где R может переключаться между двумя или более значениями в зависимости от состояния диодов или переключателей.

Нелинейные блоки не поддерживаются. Чтобы убедиться, что модель Simscape не содержит нелинейных блоков, используйте simscape.findNonlinearBlocks (Simscape) функция. Укажите путь к модели Simscape в качестве аргумента к этой функции.

simscape.findNonlinearBlocks('current_model')

Кроме того, чтобы убедиться, что модель не содержит нелинейных блоков, запустите линейную задачу Check switched of the Simscape HDL Workflow Advisor.

Задайте решатель Эйлера Назад с Дискретным Шагом расчета

Настройте опции решателя для генерации HDL-кода с помощью блока Solver Configuration (Simscape).

В Параметры блоков окне этого блока:

  • Выберите Использовать локальный решатель.

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

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

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

Запуск функции hdlsetup

После создания модели сконфигурируйте модель для генерации HDL-кода, запустив hdlsetup функция. hdlsetup конфигурирует настройки решателя, такие как использование решателя с фиксированным шагом, задает начало и времена остановки симуляции и так далее. Чтобы запустить команду для своего current_model:

hdlsetup('current_model')

Ограничения для генерации HDL-кода из моделей Simscape

HDL Coder™ не поддерживает генерацию кода из сетей Simscape, которые содержат:

  • События

  • Режимные графики

  • Задержки

  • Параметры среды выполнения

  • Периодические источники

  • Блоки Simscape Multibody™

  • Блоки Simscape Electrical™ специализированных степеней

  • Нелинейные и изменяющиеся во времени блоки Simscape. Изменяющиеся во времени блоки включают блоки, такие как Переменный Индуктор и Переменный Конденсатор.

  • Нескалярные состояния или входы в сеть. Разделите нескалярные входы на скалярные входы и уменьшите второй операнд оператора двоеточия на единицу для ошибки, вызванной нескалярными состояниями. Для примера:

    % Suppose this code generates an error
    tmp1 = u(1:4); 
    
    % Fix the error by reducing second operand by 1
    tmp1 = u(1:3);

См. также

|

Похожие темы