Когда вы развертываете один или несколько параметров, вы изменяете их значения между выполнениями моделирования, и сравниваете и анализируете данные выходного сигнала от каждого выполнения. Используйте параметр, развертывающийся, чтобы настроить параметры управления, оценить неизвестные параметры модели и протестировать робастность алгоритма управления путем учета неуверенности в реальной системе.
Можно развернуть блочные значения параметров или значения переменных рабочей области, которые вы используете, чтобы установить значения параметров. Используйте Редактор Данных модели (Представление> Редактор Данных модели) вкладка Parameters, Инспектор свойств (Представление> Инспектор свойств), командная строка или скрипты, чтобы изменить значения параметров между выполнениями моделирования.
Если вы хотите неоднократно изменить значение блочного параметра, рассмотрите создание переменной в рабочей области. Можно использовать Образцовый Проводник или программируемые команды, чтобы изменить значение переменной вместо того, чтобы определить местоположение или идентифицировать блок в модели. Кроме того, несколько функций и продуктов, которые упрощают параметрическую оптимизацию, оценку и развертку, требуют, чтобы вы установили блочные значения параметров путем создания переменных рабочей области.
Чтобы изучить, как управлять значениями параметров во время итеративного процесса создания модели, смотрите Мелодию и Эксперимент с Блочными Значениями параметров.
Для основной информации о доступе и установке блочных значений параметров, когда вы разрабатываете модель, смотрите Блочные Значения параметров Набора. Для основной информации о программно моделировании модели, такой как при помощи скрипта, смотрите Моделирования Выполнения Программно.
Этот пример показывает, как изменить блочное значение параметров между несколькими программируемыми выполнениями моделирования. Используйте этот метод, чтобы определить оптимальное значение параметров путем сравнения данных выходного сигнала каждого выполнения.
Модель в качестве примера sldemo_absbrake
использует блок Constant, чтобы задать заданное значение промаха для антиблокировочной тормозной системы. Моделируйте модель с двумя различными заданными значениями промаха, 0.24 и 0.25, и сравните выходную скорость колеса каждого запущенного моделирования.
Чтобы сохранить заданное значение, создайте переменную в базовом рабочем пространстве. Этот метод позволяет вам присвоить понятное имя к значению.
Откройте модель в качестве примера.
open_system('sldemo_absbrake');
В модели выберите View> Model Data Editor.
В Редакторе Данных модели выберите вкладку Signals.
Установите представление Change выпадающий список на Instrumentation
. Столбец Данных логов показывает, что сигналы yout
(который является виртуальной шиной) и slp
сконфигурированы для журналирования. Когда вы моделируете модель, можно собрать и позже осмотреть значения этих сигналов при помощи Моделирования Data Inspector.
В Редакторе Данных модели выберите вкладку Parameters. Установите представление Change на Design
.
В модели блок Constant выбор, маркировал Desired relative slip
. Редактор Данных модели подсвечивает строку, которая соответствует параметру Постоянного значения блока.
Используйте Столбец значений, чтобы установить значение параметров на relSlip
.
В то время как редактирование значения, следующего за relSlip
, кликает по кнопке действий (с тремя вертикальными точками) и выбирает Create.
В диалоговом окне Create New Data, установленном Значении к 0.2
и нажимают Create. Переменная, значением которой является 0.2
, появляется в базовом рабочем пространстве. Модель теперь получает относительное заданное значение промаха от этой переменной.
Также можно использовать эти команды в командной строке, чтобы создать переменную и сконфигурировать блок:
relSlip = 0.2; set_param('sldemo_absbrake/Desired relative slip','Value','relSlip')
В командной строке создайте массив, чтобы сохранить два значения экспериментирования для относительного заданного значения промаха, 0.24
и 0.25
.
relSlip_vals = [0.24 0.25];
Создайте объект Simulink.SimulationInput
для каждого моделирования, которое вы хотите запустить (в этом случае, два). Храните объекты в переменной единого массива, simIn
. Используйте метод setVariable
каждого объекта идентифицировать каждое из двух значений экспериментирования.
for i = 1:length(relSlip_vals) simIn(i) = Simulink.SimulationInput('sldemo_absbrake'); simIn(i) = setVariable(simIn(i),'relSlip',relSlip_vals(i)); end
Используйте функцию sim
, чтобы моделировать модель. Опционально, сохраните вывод в переменной под названием simOutputs
.
simOutputs = sim(simIn);
[11-Jul-2018 17:23:31] Running simulations... [11-Jul-2018 17:23:32] Completed 1 of 2 simulation runs [11-Jul-2018 17:23:33] Completed 2 of 2 simulation runs
Образцовые потоки регистрируемые сигналы, yout
и slp
, к Моделированию Data Inspector. Можно просмотреть данные сигнала в Моделировании Data Inspector.
Сравните выходные данные двух последних выполнений моделирования.
runIDs = Simulink.sdi.getAllRunIDs(); runResult = Simulink.sdi.compareRuns(runIDs(end-1), runIDs(end));
Постройте график различия между значениями сигнала Ww
(который является элементом виртуального сигнала шины yout
) путем указывания, что результат индексирует 1
.
signalResult = getResultByIndex(runResult,1); plot(signalResult.Diff);
Simulink.SimulationInput
Когда вы пишете скрипт, чтобы запустить много моделирований, создать массив объектов Simulink.SimulationInput
(один объект для каждого моделирования, которое вы хотите запустить). Используйте setVariable
и методы setBlockParameter
каждого объекта идентифицировать значения параметров, чтобы использовать для соответствующего запущенного моделирования. С этим методом вы избегаете необходимости использовать функцию set_param
, чтобы изменить блочные значения параметров и команды присвоения, чтобы изменить значения переменных рабочей области между выполнениями моделирования.
Для получения дополнительной информации об использовании Simulink.SimulationInput
возражает, чтобы запустить несколько моделирований, видеть sim
.
При использовании нескалярные переменные, переменные структуры, или Simulink.Parameter
возражает, чтобы установить блочные значения параметров, использовать метод setVariable
каждого объекта Simulink.SimulationInput
. Обратитесь к примерам в таблице.
Сценарий | Пример |
---|---|
Переменная MATLAB®, myArray , значение которого является массивом. Вы хотите установить третий элемент в массиве (принимающий индексацию на основе одну). | setVariable(simIn,'myArray(3)',15.23) |
Переменная MATLAB, myStruct , который имеет поле под названием field1 . | setVariable(simIn,'myStruct.field1',15.23) |
Объект параметра, myParam , свойство Value которого является скаляром. | setVariable(simIn,'myParam.Value',15.23) |
Объект параметра, myArrayParam , свойство Value которого является массивом. Вы хотите установить третий элемент в массиве. | setVariable(simIn,'myArrayParam.Value(3)',15.23) |
Объект параметра, myStructParam , свойство Value которого является структурой. Структура имеет поле под названием field1 . | setVariable(simIn,'myStructParam.Value.field1',15.23) |
При использовании рабочее пространство модели, чтобы сохранить переменные, когда вы используете метод setVariable
объекта Simulink.SimulationInput
изменить значение переменных, используйте аргумент пары Workspace
, чтобы идентифицировать содержание модели:
setVariable(simIn,'myVar',15.23,'Workspace','myModel')
Каждое моделирование, запущенное во время развертки параметра, производит выходные параметры, такие как значения сигналов от блоков Выходного порта и от регистрируемых сигналов.
Можно получить эти выходные параметры в переменных и объектах для более позднего анализа. Для получения дополнительной информации смотрите, Экспортируют Данные Моделирования.
Чтобы визуализировать выходные данные моделирования, таким образом, можно сравнить эффект каждого значения параметров, смотрите, Решают, Как Визуализировать Данные Моделирования.
Выполнять много моделирований, что каждое использование различные значения параметров, можно использовать ускоренные режимы моделирования. Для больших моделей ускоренные моделирования занимают меньше времени, чтобы выполниться, чем нормальные моделирования. Если у вас также есть Параллельные вычисления Toolbox™, можно использовать несколько ядер процессора, чтобы одновременно выполнить моделирования. Используйте аргументы функций parsim
и sim
.
Чтобы улучшить скорость симуляции вашей модели при помощи ускоренных моделирований и других методов, смотрите Производительность. Для примеров и большей информации, смотрите Выполнение Несколько Моделирований.
Если у вас есть Simulink® Test™, можно подтвердить, что модель все еще удовлетворяет требования, когда вы используете различные значения параметров. Переопределения параметра и тестовые итерации позволяют вам установить различные значения параметров для каждого теста. Для получения дополнительной информации смотрите Переопределения Параметра (Тест Simulink) и Комбинации Выполнения Тестов Используя Итерации (Тест Simulink).
Если у вас есть Дизайн Simulink Optimization™, можно оценить значения параметра модели так, чтобы моделирование, выходные параметры тесно соответствуют данным, которые вы измеряете в реальном мире. Используйте этот метод, чтобы оценить реальные значения параметров в модели объекта управления, которая представляет динамику реальной системы, когда вы не можете непосредственно измерить значения. Эта оценка улучшает точность модели объекта управления. Для получения дополнительной информации смотрите Оценочные Параметры от Результатов измерений (Simulink Design Optimization).
Если вы имеете Контроль Simulink Design™, можно использовать Тюнер ПИДа, чтобы настроить параметры блока PID Controller. Для получения дополнительной информации смотрите, что Контроллер ПИДа Настраивает Simulink (Simulink Control Design).
Если у вас есть Simulink Design Optimization, можно оптимизировать значения параметров управления так, чтобы моделирование, выходные параметры удовлетворяют требования ответа, которые вы задаете. Для получения дополнительной информации смотрите Оптимизацию Дизайна, чтобы Удовлетворить Требования Ответа Шага (графический интерфейс пользователя) (Simulink Design Optimization).