Чтобы выполнить симуляцию оборудования в цикле (HIL) с меньшими временными интервалами и повышенной точностью, развертывайте Simscape™ моделей объекта управления на ПЛИС на борту модулей ввода-вывода Speedgoat.
Сгенерируйте модель реализации HDL с помощью Simscape HDL Workflow Advisor. Модель реализации является Simulink® модель, которая заменяет компоненты Simscape HDL-совместимыми блоками Simulink.
Сгенерируйте HDL-код для модели реализации, а затем разверните сгенерированный код в типовых FPGA, SoCs или FPGA на борту модулей ввода-вывода Speedgoat FPGA с помощью HDL Workflow Advisor.
Используя эту возможность, можно смоделировать и развернуть сложные физические системы в Simscape, которые ранее долго моделировались при помощи блоков Simulink.
Для генерации HDL-кода можно спроектировать собственный алгоритм Simscape или выбрать из списка примера моделей, которые создаются в Simscape. Примеры моделей включают:
Усиление конвертера
Мостовой выпрямитель
Понижающий конвертер
Полуволновый выпрямитель
Три фазы выпрямителя
Два уровня конвертера идеальный
Двухуровневый преобразователь IGBT
Модель инвертора солнечной степени
Швейцарский выпрямитель
Венский выпрямитель
Все примеры снабжены префиксом sschdlex
и постфикс с Example
. Для примера, чтобы открыть модель усилителя конвертера, в MATLAB® в командной строке введите:
load_system('sschdlexBoostConverterExample') open_system('sschdlexBoostConverterExample/Simscape_system')
Следуйте этим рекомендациям при разработке алгоритма 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.
После создания модели сконфигурируйте модель для генерации HDL-кода, запустив hdlsetup
функция. hdlsetup
конфигурирует настройки решателя, такие как использование решателя с фиксированным шагом, задает начало и времена остановки симуляции и так далее. Чтобы запустить команду для своего current_model
:
hdlsetup('current_model')
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);