Ускорьте, совершенствуйте и протестируйте гибридную динамическую систему на хосте - компьютере при помощи системного конечного файла RSim

После того, как вы создадите модель, можно использовать быструю симуляцию (RSim) системный конечный файл, чтобы охарактеризовать поведение модели. Исполняемая программа, которая следует из процесса сборки, для выполнения нев реальном времени на вашем компьютере разработчика. Исполняемая программа высоко оптимизирована для имитационных моделей гибридных динамических систем, включая модели, которые используют решатели переменного шага и обнаружение пересечения нулем. Скорость сгенерированного кода делает системный идеал конечного файла RSim для технических заданий на строительство для пакета или симуляций Монте-Карло.

О быстрой симуляции

Используйте цель RSim, чтобы сгенерировать исполняемый файл, который запускает быстрые, автономные симуляции. Можно повторить симуляции с различными наборами данных, в интерактивном режиме или программно со скриптами, не восстанавливая модель. Это может ускорить характеристику и настройку поведения модели и тестирование генерации кода.

Используя параметры командной строки:

  • Задайте значения параметров и входные сигналы в одном или нескольких MAT-файлах, которые можно загрузить и перезагрузить в начале симуляций, не восстанавливая модель.

  • Перенаправьте данные о регистрации к одному или нескольким MAT-файлам, которые можно затем анализировать и сравнить.

  • Управляйте временем симуляции.

  • Задайте опции режима external mode.

Примечание

Чтобы запустить исполняемый файл RSim, сконфигурируйте свой компьютер, чтобы запустить MATLAB® и иметь MATLAB и доступные папки установки Simulink®. Чтобы развернуть автономный исполняемый файл хоста (т.е. без MATLAB и установленного Simulink), рассмотрите использование Основанной на хосте Разделяемой цели Библиотеки (ert_shrlib)."

Быстрое преимущество симуляции

Преимущество, которое вы получаете от быстрой симуляции, варьируется. Большие симуляции достигают улучшений скорости до 10 раз быстрее, чем стандартные симуляции Simulink. Некоторые модели не могут показать значимое улучшение скорости симуляции. Определить различие в скорости для вашей модели, время ваша стандартная симуляция Simulink и сравнить результаты с быстрой симуляцией. Кроме того, протестируйте симуляцию модели в Быстром режиме симуляции Акселератора.

Общий быстрый рабочий процесс симуляции

Как другие этапы Модельно-ориентированного проектирования, характеристики и настройки поведения модели итеративный процесс, как показано в общей схеме рабочего процесса в фигуре. Задачи в рабочем процессе:

Идентифицируйте быстрые требования симуляции

Первый шаг к подготовке быстрой симуляции должен идентифицировать ваши требования симуляции.

Вопрос...Для получения дополнительной информации смотрите...
Сколько времени вы хотите, чтобы симуляции запустились? Сконфигурируйте и создайте модель для быстрой симуляции
Есть ли требования решателя? Вы ожидаете использовать тот же решатель, для которого модель сконфигурирована для ваших быстрых симуляций?Сконфигурируйте и создайте модель для быстрой симуляции
Ваши быстрые симуляции должны разместить гибкое взаимодействие через интерфейс пользовательского кода? Или, ваши симуляции должны сохранить настройки класса памяти?Сконфигурируйте и создайте модель для быстрой симуляции
Вы будете запускать симуляции с несколькими наборами данных?Настройте быстрые входные данные симуляции
Входные данные будут состоять из глобальных параметров, сигналов или обоих?Настройте быстрые входные данные симуляции
Какие исходные блоки предоставляют входным данным модели — Из Файла, Inport, Из Рабочей области? Настройте быстрые входные данные симуляции
Будет вектор параметра модели (modelP) использоваться в качестве входных данных?Создайте MAT-файл, который включает структуру параметра модели
Каков тип данных входных параметров и сигналов?Настройте быстрые входные данные симуляции
Исходные данные будут состоять из одной переменной или нескольких переменных?Настройте быстрые входные данные симуляции
Входные данные включают настраиваемые параметры?Создайте MAT-файл, который включает структуру параметра модели
Необходимо ли получить доступ к информации о настраиваемом параметре — контрольная сумма модели и типы данных параметров, идентификаторы и сложность?Создайте MAT-файл, который включает структуру параметра модели
У вас будет потребность варьироваться время остановки симуляции для запусков симуляции?Сконфигурируйте и Создайте Модель для Быстрой Симуляции andOverride Время остановки Симуляции модели
Вы хотите установить ограничение по времени для симуляции? Рассмотрите установку ограничения по времени, если ваша модель испытывает частые нулевые пересечения и имеет небольшой размер незначительного шага.Установите ограничение по времени часов для быстрой симуляции
Необходимо ли сохранить выход каждой запущенной симуляции? Задайте новое имя выходного файла для симуляции и задайте новые имена выходного файла для с блоками файла
Вы ожидаете запускать симуляции в интерактивном режиме или в пакетном режиме?Скрипты для пакета и симуляций Монте-Карло

Сконфигурируйте Inports, чтобы обеспечить исходные данные симуляции

Можно использовать блоки Inport в качестве источника входных данных для быстрых симуляций. Для этого сконфигурируйте блоки так, чтобы они могли импортировать данные из внешних MAT-файлов. По умолчанию блок Inport наследовал установки параметров от нисходящих блоков. В большинстве случаев, чтобы импортировать данные из внешнего MAT-файла, необходимо явным образом установить следующие параметры блоков совпадать с исходными данными в MAT-файле.

  • Main> Interpolate data

  • Signal Attributes> Port dimensions

  • Signal Attributes> Data type

  • Signal Attributes> Signal type

Если вы не управляете содержимым модели, вы можете должны быть изменить данные в MAT-файле, чтобы соответствовать тому, что модель ожидает для входа. Характеристики входных данных и технические требования блока Inport, который получает данные, должны соответствовать.

Для получения дополнительной информации при корректировке этих параметров и при создании MAT-файла для использования с блоком Inport, смотрите, Создают MAT-файл для Блока Inport. Для описаний предыдущих параметров блоков см. описание блока Inport.

Сконфигурируйте и создайте модель для быстрой симуляции

После того, как вы идентифицируете свои быстрые требования симуляции, конфигурируете модель для быстрой симуляции.

  1. Установите параметр конфигурации модели System target file на rsim.tlc (Быстрая цель симуляции).

  2. Нажмите RSim Target, чтобы просмотреть панель RSim Target.

  3. Установите целевые параметры конфигурации RSim для своих быстрых требований симуляции.

    Если вы хотите... Затем...
    Сгенерируйте код, который позволяет исполняемому файлу RSim загружать параметры из MAT-файлаВыберите Enable RSim executable to load parameters from a MAT-file (значение по умолчанию).
    Позвольте цели выбрать решатель на основе решателя, уже сконфигурированного для модели

    Установите Solver selection на auto (значение по умолчанию). Генератор кода использует встроенный решатель, если решатель фиксированного шага задан на панели Solver или вызывает модуль решателя Simulink (разделяемая библиотека), если решатель переменного шага задан.

    Явным образом дайте цели команду использовать решатель фиксированного шагаУстановите Solver selection на Use fixed-step solvers. В диалоговом окне Configuration Parameters, на панели Solver, задают решатель фиксированного шага.
    Явным образом дайте цели команду использовать решатель переменного шага

    Установите Solver selection на Use Simulink solver module. В диалоговом окне Configuration Parameters, на панели Solver, задают решатель переменного шага.

    Обеспечьте классы памяти к Auto для гибкого взаимодействия через интерфейс пользовательского кодаВыберите Force storage classes to AUTO (значение по умолчанию).
    Сохраните настройки класса памяти, такие как ExportedGlobal или ImportedExtern, из-за требований к приложениюОчистите Force storage classes to AUTO.
  4. Настройте опции импорта и экспорта данных. На панели Data Import/Export, в разделе Save to Workspace, выбирают Time, States, Outputs и параметры Final States, как они применяются. По умолчанию генератор кода сохраняет результаты логгирования симуляции в файл с именем model.mat. Для получения дополнительной информации смотрите Данные моделирования Экспорта (Simulink).

  5. Если вы используете коммуникацию режима external mode, настройте интерфейс, с помощью Code Generation> панель Interface. Смотрите Симуляции Режима external mode для Настройки Параметра и Контроля сигналов для деталей.

  6. Нажмите Ctrl+B. Генератор кода создает высоко оптимизированную исполняемую программу, что можно работать компьютере разработчика с различными данными без восстановления.

    Для получения дополнительной информации о компиляторах, которые совместимы с продуктом Simulink Coder™, смотрите Выбор и Сконфигурируйте C или Make-файлы Компилятора и Шаблона C++ и Сделайте Опции.

Настройте быстрые входные данные симуляции

О быстром Setup данных моделирования

Формат и настройка входных данных для быстрой симуляции зависят от ваших требований.

Если источник входных данных...Затем...
Глобальный вектор параметра модели (modelP)Используйте rsimgetrtp функция, чтобы получить векторное содержимое и затем сохранить его в MAT-файл.
Глобальный вектор параметра модели и вы хотите отображение между вектором и настраиваемыми параметрамиВызовите rsimgetrtp функция, чтобы получить глобальную структуру параметра и затем сохранить его в MAT-файл.
Если блоком From FileСоздайте MAT-файл, который может считать блок From File.
Если блоком InportСоздайте MAT-файл, который придерживается одного из трех форматов файла данных, которые может считать блок Inport.
Если блоком From WorkspaceСоздайте переменные структуры в рабочем пространстве MATLAB.

Цель RSim требует, чтобы MAT-файлы, используемые в качестве входа для От блоков File и Inport, содержали данные. grt цель вставляет данные о MAT-файле непосредственно в сгенерированный код, который затем скомпилирован и соединен как исполняемый файл. В отличие от этого RSim позволяет вам заменять наборы данных для каждой последовательной симуляции. MAT-файл, содержащий данные о блоке From File или Inport, должен присутствовать, если блок From File или блок Inport существуют в вашей модели.

Создайте MAT-файл, который включает структуру параметра модели

Создать MAT-файл, который включает глобальную структуру параметра модели (modelP),

  1. Получите структуру путем вызова функционального rsimgetrtp.

  2. Сохраните структуру параметра в MAT-файл.

Если вы хотите запустить симуляции по различным наборам данных, рассмотрите преобразование структуры параметра к массиву ячеек и сохранению изменений параметра к одному MAT-файлу.

Получите Структуру Параметра для Модели.  Получите глобальную структуру параметра (modelP) для модели путем вызова функционального rsimgetrtp.

param_struct = rsimgetrtp('model')
АргументОписание
modelМодель, для которой вы запускаете быстрые симуляции.

rsimgetrtp функционируйте обеспечивает действие схемы обновления для заданной модели и возвращает структуру, которая содержит следующие поля.

Поле Описание
modelChecksumЧетырехэлементный вектор, который кодирует структуру модели. Генератор кода использует контрольную сумму, чтобы проверять, изменилась ли структура модели, поскольку исполняемый файл RSim был сгенерирован. Если вы удаляете или добавляете блок, и затем генерируете новый model_P вектор, новая контрольная сумма больше не совпадает с исходной контрольной суммой. Исполняемый файл RSim обнаруживает эту несовместимость в векторах параметра и выходах, чтобы не возвращать неправильные результаты симуляции. Если структура модели изменяется, необходимо регенерировать код для модели.
parametersСтруктура, которая содержит глобальные параметры модели.

Структура параметра содержит следующую информацию.

Поле Описание
dataTypeNameИмя типа данных параметров, например, double
dataTypeIDВнутренний идентификатор типа данных используется генератором кода
complexЗначение 0, если действительный; 1, если комплекс
dtTransIdxВнутренний индекс данных используется генератором кода
значенияВектор значений параметров сопоставлен с этой структурой
картаЭто поле содержит информацию об отображении, которая коррелирует 'значения' к настраиваемым параметрам модели. Эта информация об отображении, в сочетании с rsimsetrtpparam, полезно для создания последующих rtP структур, не компилируя блок-схему.

Генератор кода сообщает о настраиваемом параметре фиксированной точки согласно своей хранимой сумме. Например, sfix(16) значение параметров 1.4 с масштабированием 2^-8 имеет значение 358 как int16.

В следующем примере, rsimgetrtp возвращает структуру параметра для модели rtwdemo_rsimtf в качестве примера к param_struct.

param_struct = rsimgetrtp('rtwdemo_rsimtf')
param_struct = 

    modelChecksum: [1.7165e+009 3.0726e+009 2.6061e+009 2.3064e+009]
       parameters: [1x1 struct]

Сохраните Структуру Параметра в MAT-файл.  После того, как вы издаете приказ к rsimgetrtp, сохраните возвращаемое значение вызова функции к MAT-файлу. Используя параметр командной строки, можно затем указать что MAT-файл, как введено для быстрых симуляций.

Следующий пример сохраняет структуру параметра, возвращенную для rtwdemo_rsimtf к MAT-файлу myrsimdemo.mat.

save myrsimdemo.mat param_struct;

Для получения информации об использовании параметров командной строки, чтобы задать требуемые файлы, смотрите Запуск Быстрые Симуляции.

Преобразуйте Структуру Параметра для Выполнения Симуляций на Различных Наборах данных.  Чтобы использовать быстрые симуляции, чтобы протестировать изменения в определенных параметрах, можно преобразовать структуру параметра модели в массив ячеек. Можно затем получить доступ к определенному набору параметра при помощи оператор, чтобы задать индекс для определенного набора параметра в файле.

Преобразовывать структуру в массив ячеек:

  1. Используйте функциональный rsimgetrtp получить структуру, содержащую информацию о параметре для модели rtwdemo_rsimtf в качестве примера. Сохраните структуру в переменной param_struct.

    param_struct = rsimgetrtp('rtwdemo_rsimtf');
    

    parameters поле структуры является подструктурой, которая содержит информацию о параметре. values поле parameters подструктура содержит числовые значения параметров, которые можно настроить во время подписания кода симуляции.

  2. Используйте функциональный rsimsetrtpparam расширять структуру так, чтобы это содержало больше наборов параметра. В этом случае создайте еще два набора параметра (для в общей сложности трех наборов).

    param_struct = rsimsetrtpparam(param_struct,3);

    Функция преобразует parameters поле к массиву ячеек с тремя элементами. Каждый элемент содержит информацию для одного набора параметра. По умолчанию функция создает вторые и третьи элементы массива ячеек путем копирования первого элемента. Поэтому все наборы параметра используют те же значения параметров.

  3. Задайте новые значения для параметров во вторых и третьих наборах параметра.

    param_struct.parameters{2}.values = [-150 -5000 0 4950];
    param_struct.parameters{3}.values = [-170 -5500 0 5100];
  4. Сохраните структуру, содержащую информацию о наборе параметра к MAT-файлу.

    save rtwdemo_rsimtf.mat param_struct;

В качестве альтернативы можно изменить параметры блоков в модели и использовать rsimgetrtp создать несколько наборов параметра:

  1. Используйте функциональный rsimgetrtp получить структуру, содержащую информацию о параметре для модели rtwdemo_rsimtf в качестве примера. Сохраните структуру в переменной param_struct.

    param_struct = rsimgetrtp('rtwdemo_rsimtf');
    

  2. Используйте функциональный rsimsetrtpparam расширять структуру так, чтобы это содержало больше наборов параметра. В этом случае создайте еще два набора параметра (для в общей сложности трех наборов).

    param_struct = rsimsetrtpparam(param_struct,3);

    Функция преобразует parameters поле к массиву ячеек с тремя элементами. Каждый элемент содержит информацию для одного набора параметра. По умолчанию функция создает вторые и третьи элементы массива ячеек путем копирования первого элемента. Поэтому все наборы параметра используют те же значения параметров.

  3. Измените значения переменных рабочей области или параметров блоков. Например, измените значение переменной w от 70 к 72.

    w = 72;

  4. Используйте rimsgetrtp получить другую структуру, содержащую информацию о параметре. Сохраните структуру во временной переменной rtp_temp.

    rtp_temp = rsimgetrtp('rtwdemo_rsimtf');

  5. Присвойте значение parameters поле rtp_temp к структуре param_struct когда второй параметр устанавливается.

    param_struct.parameters{2} = rtp_temp.parameters;

  6. Измените значение переменной w от 72 к 75.

    w = 75;

  7. Используйте rimsgetrtp получить другую структуру, содержащую информацию о параметре. Затем присвойте значение parameters поле к param_struct когда третий параметр устанавливается.

    rtp_temp = rsimgetrtp('rtwdemo_rsimtf');
    param_struct.parameters{3} = rtp_temp.parameters;

  8. Сохраните структуру, содержащую информацию о наборе параметра к MAT-файлу.

    save rtwdemo_rsimtf.mat param_struct;

Для получения дополнительной информации о том, как задать каждый набор параметра, когда вы запускаете симуляции, смотрите Параметры блоков Изменения для Симуляции RSim.

Создайте MAT-файл для от блока файла

Можно использовать MAT-файл в качестве источника входных данных для блока From File. Формат данных в MAT-файле должен совпадать с форматом данных, ожидаемым тем блоком. Например, если вы используете матрицу в качестве входа для файла MAT, это не может отличаться от матричного размера для исполняемого файла.

Создать MAT-файл для блока From File:

  1. Для данных о формате массивов, в рабочей области создают матрицу, которая состоит из двух или больше строк. Первая строка должна содержать монотонно увеличивающиеся моменты времени. Другие строки содержат точки данных, которые соответствуют моменту времени в том столбце. Моменты времени и точки данных должны быть данными типа double.

    Например:

    t=[0:0.1:2*pi]';
    Ina1=[2*sin(t) 2*cos(t)];
    Ina2=sin(2*t);
    Ina3=[0.5*sin(3*t) 0.5*cos(3*t)];
    var_matrix=[t Ina1 Ina2 Ina3]';

    Для других поддерживаемых типов данных, таких как int16 или фиксированная точка, точки данных времени должны иметь тип double, так же, как для данных о формате массивов. Однако выборочные данные могут иметь любую размерность.

    Для получения дополнительной информации о подготовке входных данных см. описание блока From File.

  2. Сохраните матрицу в MAT-файл.

    Следующий пример сохраняет матричный var_matrix к MAT-файлу myrsimdemo.mat в формате Версии 7.3.

    save '-v7.3' myrsimdemo.mat var_matrix;

    Используя параметр командной строки, можно затем указать что MAT-файл, как введено для быстрых симуляций.

Создайте MAT-файл для блока Inport

Можно использовать MAT-файл в качестве источника входных данных для блока Inport.

Формат данных в MAT-файле должен придерживаться одного из трех основанных на столбце форматов, перечисленных в следующей таблице. Таблица приводит форматы в порядке от наименее гибкого до самого гибкого.

ФорматОписание
Одно время/матрица данных
  • Наименее гибкий.

  • Одна переменная.

  • Два или больше столбца. Количество столбцов должно равняться сумме размерностей всех корневых блоков Inport плюс 1. Первый столбец должен содержать монотонно увеличивающиеся моменты времени. Другие столбцы содержат точки данных, которые соответствуют моменту времени в данной строке.

  • Данные типа double.

Для примера смотрите Одно время/матрицу данных в следующей процедуре, шаге 4. Для получения дополнительной информации смотрите Массивы данных Загрузки к Входным параметрам Корневого Уровня (Simulink).

Структура сигнала-и-разовая
  • Более гибкий, чем один формат времени/матрицы данных.

  • Одна переменная.

  • Должен содержать два поля верхнего уровня: time и signals. time поле содержит вектор-столбец времен симуляции. signals поле содержит массив подструктур, каждая из которых соответствует блоку Inport. Индекс подструктуры соответствует номеру блока Inport. Каждый signals подструктура должна содержать поле под названием values. values поле должно содержать массив входных параметров для соответствующего блока Inport, где каждый вход соответствует моменту времени, заданному time поле .

  • Если time поле установлено в пустое значение, снимите флажок для блока Inport параметр Interpolate data.

  • Тип данных должен совпадать с настройками блока Inport.

Для примера смотрите структуру Сигнала-и-разовую в следующей процедуре, шаге 4. Для получения дополнительной информации об этом формате смотрите Структуры данных Загрузки к Входным параметрам Корневого Уровня (Simulink).

На структуру порта
  • Самый гибкий

  • Несколько переменных. Количество переменных должно равняться количеству блоков Inport.

  • Состоит из отдельной структуры-с-разовым или структуры-без-разового для каждого блока Inport. Каждая структура данных блока Inport имеет только один signals поле . Чтобы использовать этот формат, в текстовом поле Input, вводят имена структур как список, разделенный запятыми, in1, in2..., inN, где in1 данные для первого порта вашей модели, in2 для второго порта, и так далее.

  • Каждая переменная может иметь различный временной вектор.

  • Если time поле установлено в пустое значение, снимите флажок для блока Inport параметр Interpolate data.

  • Тип данных должен совпадать с настройками блока Inport.

  • Чтобы сохранить несколько переменных в тот же файл данных, необходимо сохранить их в порядке, ожидаемом моделью, с помощью -append опция.

Для примера смотрите На структуру порта в следующей процедуре, шаге 4. Для получения дополнительной информации смотрите Структуры данных Загрузки к Входным параметрам Корневого Уровня (Simulink).

Поддерживаемые форматы и следующая процедура проиллюстрированы в rtwdemo_rsim_i.

Создать MAT-файл для блока Inport:

  1. Выберите один из предыдущих форматов файла данных.

  2. Обновите настройки параметров блоков Inport и технические требования, чтобы совпадать с техническими требованиями данных, которые будут предоставлены MAT-файлом.

    По умолчанию блок Inport наследовал установки параметров от нисходящих блоков. Чтобы импортировать данные из внешнего MAT-файла, явным образом установите следующие параметры, чтобы совпадать с исходными данными в MAT-файле.

    • Main> Interpolate data

    • Signal Attributes> Port dimensions

    • Signal Attributes> Data type

    • Signal Attributes> Signal type

    Если вы принимаете решение использовать формат структуры в переменных рабочей области и time поле пусто, очистите параметры блоков Interpolate data или измените параметр так, чтобы это было установлено в непустое значение. Интерполяция требует данных времени.

    Для описаний предыдущих параметров блоков см. описание блока Inport.

  3. Создайте исполняемую программу RSim для модели. Процесс сборки создает и вычисляет структурную контрольную сумму для модели и встраивает ее в сгенерированный исполняемый файл. Цель RSim использует контрольную сумму, чтобы проверить, что данные, передаваемые в модель, сопоставимы с тем, что ожидает исполняемый файл модели.

  4. Создайте MAT-файл, который обеспечивает исходные данные для быстрых симуляций. Можно создать MAT-файл из переменной рабочей области. Используя технические требования в предыдущей таблице сравнения формата, создайте переменные рабочей области для своих симуляций.

    Пример каждого формата следует:

    Одно время/матрица данных

    t=[0:0.1:2*pi]';
    Ina1=[2*sin(t) 2*cos(t)];
    Ina2=sin(2*t);
    Ina3=[0.5*sin(3*t) 0.5*cos(3*t)];
    var_matrix=[t Ina1 Ina2 Ina3];

    Структура сигнала-и-разовая

    t=[0:0.1:2*pi]';
    var_single_struct.time=t;
    var_single_struct.signals(1).values(:,1)=2*sin(t);
    var_single_struct.signals(1).values(:,2)=2*cos(t);
    var_single_struct.signals(2).values=sin(2*t);
    var_single_struct.signals(3).values(:,1)=0.5*sin(3*t);
    var_single_struct.signals(3).values(:,2)=0.5*cos(3*t);
    v=[var_single_struct.signals(1).values...
    var_single_struct.signals(2).values...
    var_single_struct.signals(3).values];

    На структуру порта

    t=[0:0.1:2*pi]';
    Inb1.time=t;
    Inb1.signals.values(:,1)=2*sin(t);
    Inb1.signals.values(:,2)=2*cos(t);
    t=[0:0.2:2*pi]';
    Inb2.time=t;
    Inb2.signals.values(:,1)=sin(2*t);
    t=[0:0.1:2*pi]';
    Inb3.time=t;
    Inb3.signals.values(:,1)=0.5*sin(3*t);
    Inb3.signals.values(:,2)=0.5*cos(3*t);
  5. Сохраните переменные рабочей области в MAT-файл.

    Одно время/матрица данных

    Следующий пример сохраняет переменную var_matrix рабочей области к MAT-файлу rsim_i_matrix.mat.

    save rsim_i_matrix.mat var_matrix;

    Структура сигнала-и-разовая

    Следующий пример сохраняет переменную var_single_struct структуры рабочей области к MAT-файлу rsim_i_single_struct.mat.

    save rsim_i_single_struct.mat var_single_struct;

    На структуру порта

    Чтобы заказать данные при сохранении переменных на структуру порта в один MAT-файл, используйте save -append команды опция. Обязательно добавьте данные в порядке, что модель ожидает его.

    Следующий пример сохраняет переменные Inb1 рабочей области, Inb2, и Inb3 к MAT-файлу rsim_i_multi_struct.mat.

    save rsim_i_multi_struct.mat Inb1;
    save rsim_i_multi_struct.mat Inb2 -append;
    save rsim_i_multi_struct.mat Inb3 -append;

    save команда не сохраняет порядок, в котором вы задаете свои переменные рабочей области в командной строке при сохранении данных к MAT-файлу. Например, если вы задаете переменные v1, v2, и v3, в том порядке порядком переменных в MAT-файле мог быть v2 v1 v3.

    Используя параметр командной строки, можно затем задать MAT-файлы, как введено для быстрых симуляций.

Скрипты для пакета и симуляций Монте-Карло

Цель RSim для пакетных симуляций, по которым параметры и входные сигналы варьируются для нескольких симуляций. Новые имена выходного файла позволяют вам запускать новые симуляции, не перезаписывая предшествующие результаты симуляции. Можно настроить ряд симуляций, чтобы запуститься путем создания .bat файл для использования на платформе Microsoft® Windows®.

Создайте файл для платформы Windows с текстовым редактором и выполните ее путем ввода имени файла, например, mybatch, где именем текстового файла является mybatch.bat.

rtwdemo_rsimtf -f rtwdemo_rsimtf.mat=run1.mat -o results1.mat -tf 10.0
rtwdemo_rsimtf -f rtwdemo_rsimtf.mat=run2.mat -o results2.mat -tf 10.0
rtwdemo_rsimtf -f rtwdemo_rsimtf.mat=run3.mat -o results3.mat -tf 10.0
rtwdemo_rsimtf -f rtwdemo_rsimtf.mat=run4.mat -o results4.mat -tf 10.0

В этом случае обработайте запуск симуляций в пакетном режиме с помощью четырех наборов входных данных в файлах run1.mat, run2.mat, и так далее. Исполняемый файл RSim сохраняет данные к файлам, заданным с -o опция.

Имена переменных, содержащие результаты симуляции в каждом из файлов, идентичны. Поэтому загружая последовательные наборы данных, не переименовывая данные, если это находится в результатах рабочего пространства MATLAB в перезаписи предшествующей переменной рабочей области с новыми данными. Чтобы постараться не перезаписывать, можно скопировать результат в новую переменную MATLAB прежде, чем загрузить следующий набор данных.

Можно также записать скрипты MATLAB, чтобы создать новые сигналы и новые структуры параметра, а также сохранить данные и выполнить пакетные запуски с помощью команды удара (!).

Для получения дополнительной информации на рабочих симуляциях и доступных параметрах командной строки, смотрите Запуск Быстрые Симуляции. Для примера быстрого сценария пакетной обработки симуляции смотрите Симуляции Пакета Запуска в качестве примера, Не Перекомпилировав Сгенерированный код.

Запустите быстрые симуляции

Быстрые симуляции

Используя цель RSim, можно создать модель однажды и запустить несколько симуляций, чтобы изучить эффекты различных установок параметров и входных сигналов. Можно запустить симуляцию непосредственно из командной строки операционной системы, перенаправить команду из командной строки MATLAB при помощи символа удара (!) или выполнить команды из скрипта.

Из командной строки операционной системы использовать

rtwdemo_rsimtf

Из командной строки MATLAB использовать

!rtwdemo_rsimtf

В следующей таблице перечислены способы, которыми можно использовать целевые параметры командной строки RSim, чтобы управлять симуляцией.

К...Использование...
Считайте входные данные для блока From File из MAT-файла кроме MAT-файла, используемого в предыдущей симуляции

model - f oldfilename.mat=newfilename.mat

Распечатайте сводные данные опций для исполняемых целей RSimexecutable filename H
Считайте входные данные для блока Inport из MAT-файла model - i filename.mat
Испытайте таймаут после n синхронизируйте секунды времени, где n положительное целочисленное значение model - L n
Запишите данные о регистрации MAT-файла, чтобы зарегистрировать filename.mat model - o filename.mat
Считайте вектор параметра из файла filename.mat model - p filename.mat
Замените порт TCP по умолчанию (17725) для режима external mode model - порт TCPport
Запишите данные о регистрации MAT-файла в MAT-файл кроме MAT-файла, используемого в предыдущей симуляции model - t oldfilename.mat=newfilename.mat
Запустите симуляцию до временной стоимости stoptime достигнут model - tf stoptime
Запуститесь в многословном режиме model V
Ожидайте механизма Simulink, чтобы запустить модель в режиме external mode model W

Следующие разделы используют rtwdemo_rsimtf модель в качестве примера в примерах, чтобы проиллюстрировать некоторые из этих параметров командной строки. В каждом случае пример принимает, что вы уже сделали следующее:

  • Созданный или измененный на рабочую папку.

  • Открытый модель в качестве примера.

  • Скопированный файл данных matlabroot/toolbox/rtw/rtwdemos/rsimdemos/rsim_tfdata.mat к вашей рабочей папке. Можно выполнить эту операцию с помощью команды:

    copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos',...
    'rsimdemos','rsim_tfdata.mat'),pwd);

Требования для выполнения быстрых симуляций

Следующие требования применяются и к зафиксированным и переменным исполняемым файлам шага.

  • Необходимо запустить исполняемый файл RSim на компьютере, сконфигурированном, чтобы запустить MATLAB. Кроме того, RSim.exe файл должен смочь получить доступ к MATLAB и папкам установки Simulink на этой машине. Чтобы получить тот доступ, ваша переменная окружения PATH должна включать / интервал и / интервал/($ARCH), где ($ARCH) представляет вашу архитектуру операционной системы. Например, для персонального компьютера, работающего на платформе Windows, ($ARCH), “win64”, тогда как для машины Linux, ($ARCH) “glnxa64”.

  • На платформах GNU® Linux®, чтобы запустить исполняемый файл RSim, задают переменную окружения LD_LIBRARY_PATH, чтобы обеспечить путь к папке установки MATLAB, можно следующим образом:

    % setenv LD_LIBRARY_PATH /matlab/sys/os/glnx64:$LD_LIBRARY_PATH

  • На платформе OS X Apple Macintosh, чтобы запустить RSim предназначаются для исполняемых файлов, необходимо задать переменную окружения DYLD_LIBRARY_PATH включать папки bin/mac и sys/os/mac под папкой установки MATLAB. Например, если ваша установка MATLAB находится под /MATLAB, добавьте /MATLAB/bin/mac и /MATLAB/sys/os/mac к определению для DYLD_LIBRARY_PATH.

Установите ограничение по времени часов для быстрой симуляции

Если модель испытывает частые нулевые пересечения, и размер незначительного шага модели мал, рассмотрите установку ограничения по времени для быстрой симуляции. Чтобы установить ограничение по времени, задайте -L опция с положительным целочисленным значением. Аварийные прекращения работы симуляции после выполнения для заданной суммы показывают время (не время симуляции). Например,

  !rtwdemo_rsimtf -L 20

На основе ваших часов, после исполняемых запусков в течение 20 секунд, завершает работу программа. Вы видите сообщение, похожее на одно из следующего:

  • На платформе Microsoft Windows,

    Exiting program, time limit exceeded
    Logging available data ...
  • На платформе Open Group UNIX®,

    ** Received SIGALRM (Alarm) signal @ Fri Jul 25 15:43:23 2003
    ** Exiting model  'vdp' @ Fri Jul 25 15:43:23 2003

Вы ничего не должны делать к своей модели или к ее настройке, чтобы использовать эту опцию.

Замените время остановки симуляции модели

По умолчанию быстрая симуляция запускается, пока время симуляции не достигает, время задало диалоговое окно Configuration Parameters на панели Solver. Можно заменить время остановки симуляции модели при помощи -tf опция. Например, следующие запуски симуляции до времени достигают 6,0 секунд.

!rtwdemo_rsimtf -tf 6.0

RSim предназначаются для остановок и логарифмических выходных данных, использующих правила регистрации данных MAT-файла.

Если модель включает блок From File, конец симуляции отрегулирован установкой времени остановки, заданной в диалоговом окне Configuration Parameters на панели Solver, или с целевой опцией RSim -tf. Значения во временном векторе блока проигнорированы. Однако, если время симуляции превышает конечные точки времени и матрицы сигнала (если итоговое время больше итоговой временной стоимости матрицы данных), данные сигнала экстраполируется к итоговой временной стоимости.

Считайте вектор параметра в быструю симуляцию

Чтобы считать вектор параметра модели в быструю симуляцию, необходимо сначала создать MAT-файл, который включает структуру параметра как описано в, Создают MAT-файл, Который Включает Структуру Параметра модели. Можно затем задать MAT-файл в командной строке с -p опция.

Например:

  1. Создайте исполняемый файл RSim для модели rtwdemo_rsimtf в качестве примера.

  2. Измените параметры в своей модели и сохраните структуру параметра.

    param_struct = rsimgetrtp('rtwdemo_rsimtf');
    save myrsimdata.mat param_struct
  3. Запустите исполняемый файл с новым набором параметра.

    !rtwdemo_rsimtf -p myrsimdata.mat
    
    ** Starting model 'rtwdemo_rsimtf' @ Tue Dec 27 12:30:16 2005 
    ** created rtwdemo_rsimtf.mat **
  4. Загрузите переменные рабочей области и постройте результаты симуляции путем ввода следующих команд:

    load myrsimdata.mat
    plot(rt_yout)

Задайте новый файл данных сигнала для от блока файла

Если источник входных данных вашей модели является блоком From File, можно питать блок входными данными в процессе моделирования из одного MAT-файла, или можно изменить MAT-файл от одной симуляции до следующего. Каждый MAT-файл должен придерживаться формата, описанного в, Создают MAT-файл для От Блока Файла.

Чтобы изменить MAT-файл после начальной симуляции, вы задаете исполняемый файл с -f опция и oldfile.mat=newfile.mat параметр, как показано в следующем примере.

  1. Установите некоторые параметры в рабочем пространстве MATLAB. Например:

    w = 100;
    theta = 0.5;
  2. Создайте исполняемый файл RSim для модели rtwdemo_rsimtf в качестве примера.

  3. Запустите исполняемый файл.

    !rtwdemo_rsimtf

    Исполняемый файл RSim запускает набор симуляций и создает выходные MAT-файлы, содержащие определенный результат симуляции.

  4. Загрузите переменные рабочей области и постройте результаты симуляции путем ввода следующих команд:

    load rtwdemo_rsimtf.mat
    plot(rt_yout)

    Получившийся график показывает результаты симуляции на основе входных данных по умолчанию.

  5. Создайте новый файл данных, newfrom.mat, это включает следующие данные:

    t=[0:.001:1];
    u=sin(100*t.*t);
    tu=[t;u];
    save newfrom.mat tu;
  6. Запустите быструю симуляцию с новыми данными при помощи -f опция, чтобы заменить исходный файл, rsim_tfdata.mat, с newfrom.mat.

    !rtwdemo_rsimtf -f rsim_tfdata.mat=newfrom.mat
  7. Загрузите данные и постройте новые результаты путем ввода следующих команд:

    load rtwdemo_rsimtf.mat
    plot(rt_yout)

    Следующий рисунок показывает получившийся график.

Из Файла блоки требуют входных данных типа double. Если необходимо импортировать данные сигнала типа данных кроме double, используйте блок Inport (см., Создают MAT-файл для Блока Inport), или блок From Workspace с данными, заданными как структура.

Данные о рабочей области должны быть в формате:

variable.time
variable.signals.values

Если у вас есть больше чем один сигнал, используйте следующий формат:

variable.time
variable.signals(1).values
variable.signals(2).values

Задайте файл данных сигнала для блока Inport

Если источник входных данных вашей модели является блоком Inport, можно питать блок входными данными в процессе моделирования из одного MAT-файла, или можно изменить MAT-файл от одной симуляции до следующего. Каждый MAT-файл должен придерживаться одного из этих трех форматов, описанных в, Создают MAT-файл для Блока Inport.

Чтобы задать MAT-файл после симуляции, вы задаете исполняемый файл с -i опция и имя MAT-файла, который содержит входные данные. Например:

  1. Откройте модель rtwdemo_rsim_i.

  2. Проверяйте настройки параметров блоков Inport. Следующие установки параметров данных о блоке Inport и технические требования, которые вы задаете для переменных рабочей области, должны совпадать с настройками в MAT-файле, как обозначено в Конфигурируют Inports, чтобы Обеспечить Исходные данные Симуляции:

    • Main> Interpolate data

    • Signal Attributes> Port dimensions

    • Signal Attributes> Data type

    • Signal Attributes> Signal type

  3. Создайте модель.

  4. Настройте входные сигналы. Например:

    t=[0:0.01:2*pi]';
    s1=[2*sin(t) 2*cos(t)];
    s2=sin(2*t);
    s3=[0.5*sin(3*t) 0.5*cos(3*t)];
    plot(t, [s1 s2 s3])

  5. Подготовьтесь MAT-файл при помощи одних из трех доступных форматов файлов, описанных в, Создают MAT-файл для Блока Inport. Следующий пример задает структуру сигнала-и-разовую в рабочей области и называет ее var_single_struct.

    t=[0:0.1:2*pi]';
    var_single_struct.time=t;
    var_single_struct.signals(1).values(:,1)=2*sin(t);
    var_single_struct.signals(1).values(:,2)=2*cos(t);
    var_single_struct.signals(2).values=sin(2*t);
    var_single_struct.signals(3).values(:,1)=0.5*sin(3*t);
    var_single_struct.signals(3).values(:,2)=0.5*cos(3*t);
    v=[var_single_struct.signals(1).values...
    var_single_struct.signals(2).values...
    var_single_struct.signals(3).values];
  6. Сохраните переменную var_single_struct рабочей области к MAT-файлу rsim_i_single_struct.

    save rsim_i_single_struct.mat var_single_struct;
  7. Запустите быструю симуляцию с входными данными при помощи -i опция. Загрузите и постройте результаты.

    !rtwdemo_rsim_i -i rsim_i_single_struct.mat
    
    ** Starting model 'rtwdemo_rsim_i' @ Tue Aug 19 10:26:53 2014 
     *** rsim_i_single_struct.mat is successfully loaded! *** 
    ** created rtwdemo_rsim_i.mat ** 
     
    ** Execution time = 0.02024185130718954s
  8. Загрузите и постройте результаты.

    load rtwdemo_rsim_i.mat
    plot(rt_tout, rt_yout);

Измените параметры блоков для симуляции RSim

Как описано в Создают MAT-файл, Который Включает Структуру Параметра модели, после того, как вы изменяете один или несколько параметров в Диаграмме Simulink, можно извлечь вектор параметра, model_P, для целой модели. Можно затем сохранить вектор параметра, наряду с контрольной суммой модели, к MAT-файлу. Этот MAT-файл может быть считан непосредственно автономным исполняемым файлом RSim, позволив вам заменить целый вектор параметра или отдельные значения параметров, для рабочих исследований изменений значений параметров, представляющих коэффициенты, новые данные для входных сигналов, и так далее.

RSim может считать MAT-файл и заменить целый model_P структура каждый раз, когда вы изменяете один или несколько параметров, не перекомпилировав целую модель.

Например, примите, что вы изменили один или несколько параметров в своей модели, сгенерировал новый model_P вектор и сохраненный model_P к новому MAT-файлу под названием mymatfile.mat. Запускать тот же rtwdemo_rsimtf модель и использование эти новые значения параметров, используйте -p опция, как показано в следующем примере:

!rtwdemo_rsimtf -p mymatfile.mat
load rtwdemo_rsimtf 
plot(rt_yout)

Если вы преобразовали структуру параметра в массив ячеек для рабочих симуляций на различных наборах данных, как описано в Преобразовании Структура Параметра для Выполнения Симуляций на Различных Наборах данных, необходимо добавить @n снабдите суффиксом к спецификации MAT-файла. n элемент массива ячеек, который содержит определенный вход, который вы хотите использовать в симуляции.

Следующий пример преобразует param_struct к массиву ячеек, значениям параметров изменений, сохраняет изменения в MAT-файле mymatfile.mat, и затем запускает исполняемый файл с помощью значений параметров во втором элементе массива ячеек, как введено.

param_struct = rsimgetrtp('rtwdemo_rsimtf');
param_struct = rsimsetrtpparam(param_struct,2);
param_struct.parameters{1}
ans = 

       dataTypeName: 'double'
         dataTypeId: 0
            complex: 0
         dtTransIdx: 0
             values: [-140 -4900 0 4900]
                map: []
    structParamInfo: []
param_struct.parameters{2}.values=[-150 -5000 0 4950];
save mymatfile.mat param_struct;
!rtwdemo_rsimtf -p mymatfile.mat@2 -o rsim2.mat

Задайте новое имя выходного файла для симуляции

Если вы задали один или несколько параметров Save to WorkspaceTime, States, Outputs, или Final States — в диалоговом окне Configuration Parameters, на панели Data Import/Export, значение по умолчанию должно сохранить результаты логгирования симуляции в файл model.mat. Например, модель rtwdemo_rsimtf в качестве примера обычно сохраняет данные к rtwdemo_rsimtf.mat, можно следующим образом:

!rtwdemo_rsimtf
created rtwdemo_rsimtf.mat

Можно задать новое имя выходного файла для регистрации данных при помощи -o опция, когда вы запускаете исполняемый файл.

!rtwdemo_rsimtf -o rsim1.mat

В этом случае набор параметров, обеспеченных во время генерации кода, включая параметры данных о блоке From File, запущен.

Задайте новые имена выходного файла для с блоками файла

Почти таким же способом, когда можно задать новое системное имя выходного файла, можно также обеспечить новые имена выходного файла для данных, сохраненных от одного или нескольких До блоков Файла. Для этого задайте исходное имя файла во время генерации кода с новым именем, как показано в следующем примере:

!rtwdemo_rsimtf -t rtwdemo_rsimtf_data.mat=mynewrsimdata.mat

В этом случае примите, что исходная модель записала данные к выходному файлу rtwdemo_rsimtf_data.mat. Определение нового имени файла обеспечивает RSim, чтобы записать в файл mynewrsimdata.mat. С этим методом можно постараться не перезаписывать существующую запущенную симуляцию.

Настройки параметров в интерактивном режиме во время быстрой симуляции

Системный конечный файл RSim был спроектирован, чтобы позволить вам запустить пакетные симуляции на самой быстрой скорости. Используя переменный шаг или решатели фиксированного шага с тем системным конечным файлом и структурой данных настраиваемого параметра, устанавливаете ли вы поведение параметра По умолчанию на Tunable или к Inlined, можно создать несколько наборов параметра. Можно запустить наборы данных со сгенерированной исполняемой программой (.exe на Windows). Каждый вызов исполняемой программы позволяет спецификации имени файла использовать в результатах.

В данном примере поведение параметра По умолчанию установлено в Inlined. Модель объявляет переменные рабочей области как настраиваемые параметры. Использовать системный конечный файл RSim с набором поведения параметра По умолчанию к Tunable, и явным образом не объявляя настраиваемые параметры, смотрите Симуляции Пакета Запуска, Не Перекомпилировав Сгенерированный код.

Открытая модель в качестве примера

Откройте модель rtwdemo_rsim_param_tuning в качестве примера.

open_system('rtwdemo_rsim_param_tuning');

Эта модель использует цель RSim и rsimgetrtp функция, чтобы позволить не оперативному исполняемому файлу, который будет передан новые данные без потребности перекомпилировать модель Simulink. Эта функция позволяет вам получать карту настраиваемых параметров, объявленных в модели и сохранять его в MAT-файле. Можно затем создать собственный графический интерфейс пользователя MATLAB или автономный графический интерфейс пользователя (независимый от MATLAB), чтобы считать и записать MAT-файл и повторно выполнить исполняемый файл, чтобы произвести новые выходные файлы.

В модели дважды кликните кнопки последовательно, чтобы запустить пример.

Рассмотреть код раньше создавало графический интерфейс MATLAB и автономный графический интерфейс, дважды кликало кнопку программ MATLAB Представления.

Для получения дополнительной информации смотрите, Ускоряют, Совершенствовали, и Тестовая Гибридная Динамическая система на Хосте - компьютере при помощи Системного Конечного файла RSim.

Быстрые целевые ограничения симуляции

Цель RSim имеет нижеследующие ограничения:

  • Не поддерживает алгебраические циклы.

  • Не поддерживает блоки Interpreted MATLAB Function.

  • Не поддерживает невстроенные S-функции языка MATLAB или Фортрана.

  • Если сборка RSim включает модели, на которые ссылаются (при помощи блоков Model), настройте эти модели, чтобы использовать решатели фиксированного шага, чтобы сгенерировать код для них. Топ-модель, однако, может использовать решатель переменного шага, пока блоки в моделях, на которые ссылаются, дискретны.

  • В определенных случаях, изменяя параметры блоков может привести к структурным изменениям к вашей модели, которые изменяют контрольную сумму модели. Пример такого изменения изменяет количество задержек симуляции DSP. В таких случаях необходимо регенерировать код для модели.

Похожие темы