Этот пример показывает, как преобразовать модель, которая является нелинейной из-за переменного резистора в коммутируемую линейную модель, делая ее совместимой с Simscape в HDL Workflow.
Simscape в HDL Workflow поддерживает преобразование линейных моделей с коммутацией Simscape в функционально эквивалентные модели Simulink, которые совместимы для генерации HDL-кода. Из-за особенностей уравнений, которые являются результатом переменных резисторов, такие блоки, как Piecewise-Constant Resistor, могут привести к нелинейному поведению и должны быть заменены эквивалентными коммутируемыми линейными компонентами. В частности, Piecewise-Constant Resistor содержит события, которые не поддерживаются Simscape HDL Workflow Advisor.
Откройте модель Simscape™. В командной строке MATLAB ® введите:
nonlinearModel = 'sschdlexVariableResistorExample'; load_system(nonlinearModel) open_system([nonlinearModel,'/Simscape Subsystem'])
Эта модель является RLC-схемой с кусочно-постоянным резистором, действующим в качестве резистора или 'load'. Для кусочно-постоянного резистора отношение между напряжением V и током I является V = I * R, где R является числовым значением, представленным в порте физического сигнала R.
Чтобы гарантировать положительное значение сопротивления, любое значение ниже 1e-6 заменяется на 1e-6. Этот резистор является кусочно-постоянным, потому что сопротивление изменяется только тогда, когда входное значение отличается от сопротивления тока больше, чем заданный допуск. Таким образом, постоянно изменяющийся вход будет преобразован в дискретный набор сопротивлений.
В этой модели сигнал, поступающий в Кусочно-Постоянный Резистор, является шаговой функцией, которая изменяется с 2 до 3 при t = 0,1, таким образом изменяя сопротивление нагрузки с 2 до 3.
Чтобы открыть Simscape HDL Workflow Advisor в командной строке, введите: sschdladvisor (нелинейная модель)
Запустите рабочий процесс к задаче Get state-space parameters. Эта задача терпит неудачу из-за наличия кусочно-постоянного резистора.
Чтобы преобразовать эту модель в эквивалентную коммутируемую линейную модель, замените Piecewise-Constant Resistor набором переключателей и резисторов для каждого желаемого значения. Чтобы открыть переключенную линейную версию в командной строке MATLAB ®, введите:
switchedLinearModel = 'sschdlexVariableResistorSwitchedLinearExample';
load_system(switchedLinearModel)
open_system(switchedLinearModel)
Переменный резистор был заменен на резистор и переключатель для каждого желаемого сопротивления. Для воссоздания поведения сопротивления нагрузки, которое изменяется от 2 до 3 при t = 0,1 используются два резистора, один с сопротивлением 2, а другой с сопротивлением 3. При закрытии и открытии переключателей сопротивление нагрузки переключается с 2 на 3.
Выключатели должны быть включены и отключены, чтобы обеспечить правильное сопротивление нагрузки. Чтобы просмотреть сигналы управления для переключателей в командной строке MATLAB ®, введите:
open_system([switchedLinearModel,'/Input'])
Чтобы достичь правильного сопротивления, создайте две шаговые функции. Один, чтобы открыть переключатель последовательно с 2 резистором при t = 0,1, а другой, чтобы закрыть переключатель последовательно с 3 резистором одновременно.
Теперь, когда резистор переменной был заменен на коммутируемые линейные компоненты, запустите Simscape HDL Workflow Advisor и увидите, что все задачи выполняются до своего завершения.
Путем изменения кусочно-линейного резистора переменной на количество заданных резисторов, которые включают и отключают модель, было изменено на форму, которая совместима с рабочим процессом Simscape на HDL.