Этот пример показывает, как разбить модель инвертора солнечной степени, которая содержит одну, большую Simscape™ сеть на несколько сетей. После разбиения сети можно запустить Simscape HDL Workflow Advisor, чтобы сгенерировать модель реализации HDL. Чтобы узнать, как вы запускаете Advisor для модели, смотрите Генерация HDL-кода для моделей Simscape с несколькими сетями.
Когда ваша модель Simscape содержит много элементов переключения, представление пространства состояний может содержать большое количество режимов. Simscape HDL Workflow Advisor моделирует модель Simscape, чтобы вычислить количество режимов, которые являются релевантными. Некоторые модели Simscape могут иметь большое количество режимов, которые релевантны. Сгенерированная модель реализации HDL для такого большого проекта может потреблять значительно большое количество ресурсов, а сгенерированная реализация HDL md может даже не синтезироваться на целевом устройстве FPGA. Чтобы уменьшить количество режимов, можно разбить сеть Simscape в модели на несколько сетей, а затем запустить Simscape HDL Workflow Advisor.
Чтобы открыть модель примера инвертора солнечной степени, запустите:
open_system('sschdlexSolarInverterSingleNetworkExample')
В данном примере модель сохранена как Solar_Power_Inverter_Single_Network_HDL. Эта модель аналогична sschdlexSolarInverterSingleNetworkExample, но имеет перестроенные подсистемы и логику для солнечной панели, помещенную в Solar_Panel подсистему.
open_system('Solar_Power_Inverter_Single_Network_HDL') set_param('Solar_Power_Inverter_Single_Network_HDL', 'SimulationCommand', 'Update')
Модель состоит из четырех частей: панели солнечных батарей, контроллера наддува, контроллера инвертора, и преобразователя наддува и полного мостового инвертора. Солнечная панель моделируется в Simulink ® с помощью интерполяционных таблиц. Усилительный контроллер и инвертор контроллера обеспечить сигналы управления для усилительного преобразователя и полного мостового преобразователя, который является H-мостом.
Чтобы увидеть усилитель и инвертор, откройте подсистему Network.
open_system('Solar_Power_Inverter_Single_Network_HDL/Network')
1. Чтобы открыть Simscape HDL Workflow Advisor для модели, введите:
sschdladvisor('Solar_Power_Inverter_Single_Network_HDL')
### Running Simscape HDL Workflow Advisor for <a href="matlab:(Solar_Power_Inverter_Single_Network_HDL)">Solar_Power_Inverter_Single_Network_HDL</a>
2. Запустите рабочий процесс для задачи Дискретизировать уравнения. Вы видите, что представление пространства состояний использует вокруг 173
режимы, что является большим количеством режимов.
Такое большое количество режимов может потреблять значительно большое количество оборудования ресурсов и может даже заставить подсистему DUT в модели реализации HDL не синтезироваться на целевом устройстве FPGA.
Чтобы увидеть потребление ресурсов:
1. Запустите задачу Генерация модели реализации. Щелкните ссылку, чтобы открыть модель реализации HDL.
Модель содержит блок HDL Subsystem, который моделирует уравнения пространства состояний для сети Simscape. Сохраните модель как Solar_Power_Inverter_Single_Network_StateSpace.slx.
open_system('Solar_Power_Inverter_Single_Network_StateSpace') set_param('Solar_Power_Inverter_Single_Network_StateSpace', 'SimulationCommand', 'Update')
2. Включите генерацию отчета об использовании ресурсов.
hdlset_param('Solar_Power_Inverter_Single_Network_StateSpace', 'ResourceReport', 'on')
3. Запуск makehdl
функция для генерации кода для блока HDL Subsystem.
makehdl('Solar_Power_Inverter_Single_Network_StateSpace/HDL Subsystem')
Если HDL- Coder™ генерирует ошибку, которая не может выделить задержки, увеличьте коэффициент избыточной дискретизации. Начните, увеличив коэффициент избыточной дискретизации до 100
, а затем сгенерируйте HDL-код. Если HDL Coder все еще не может выделить задержки, то еще больше увеличьте коэффициент избыточной дискретизации.
hdlset_param('Solar_Power_Inverter_Single_Network_StateSpace', 'Oversampling', 100)
4. При генерации HDL-кода откройте Отчет о генерации кода. Отчет об использовании ресурсов указывает большое количество умножителей, сумматоров и регистров, которые могут быть использованы на целевом устройстве FPGA.
Чтобы уменьшить количество режимов, можно разбить сеть Simscape внутри Подсистемы Сети на две сети Simscape. Чтобы разбить сеть на несколько сетей:
1. Идентифицируйте контур для разбиения сети на несколько сетей. Элемент накопления энергии, такой как конденсатор или индуктор, является хорошим кандидатом для разбиения сети. Чтобы создать модель Simscape, которая содержит несколько сетей и эффективно уменьшает количество режимов в представлении пространства состояний, выберите контур, которая создает идентичные или почти одинаковые разделы. То есть количество переключающих элементов с каждой стороны контура идентично или почти идентично.
Для инвертора солнечной степени можно выбрать конденсатор постоянного тока между инвертором H-моста и усилителем преобразователя в качестве контура для разбиения сети.
2. После разбиения сети подготовьте измененную модель Simscape для совместимости с Simscape HDL Workflow Advisor. Поместите каждую секционированную сеть в подсистему и используйте блок Solver Configuration для каждой сети.
Simscape HDL Workflow Advisor использует блок Solver Configuration, чтобы идентифицировать каждую уникальную сеть в вашей модели Simscape.
3. Чтобы симуляция сходилась при использовании нескольких сетей, в сети, содержащей усилитель конвертера, добавьте сопротивление демпфирования и управляемый источник тока параллельно конденсатору для выхода тока в сеть инвертора.
4. В сети инвертора добавьте управляемый источник напряжения к входу напряжения в сеть.
5. Чтобы разбить алгебраические циклы в системе, добавьте блоки Delay между сигнальными линиями, которые соединяют выход одной подсистемы с входом другой подсистемы. Для более высокой точности добавьте блоки преобразования типов данных, чтобы предоставить двойные типы данных в качестве входов для сетей.
Модель одной сети теперь разделена на несколько сетей. Чтобы открыть модель, содержащую несколько сетей, введите:
open_system('sschdlexSolarInverterPartitionedNetworkExample')
Чтобы узнать, как вы запускаете Simscape HDL Workflow Advisor и генерируете HDL-код для этой модели, смотрите Генерация HDL-кода для Simscape-моделей с несколькими сетями.