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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

Вопрос...Для получения дополнительной информации смотрите...
Сколько времени вы хотите, чтобы симуляции запустились? Сконфигурируйте и создайте модель для быстрой симуляции
Есть ли требования решателя? Вы ожидаете использовать тот же решатель, для которого модель сконфигурирована для ваших быстрых симуляций?Сконфигурируйте и создайте модель для быстрой симуляции
Ваши быстрые симуляции должны разместить гибкое взаимодействие через интерфейс пользовательского кода? Или, ваши симуляции должны сохранить настройки класса памяти?Сконфигурируйте и создайте модель для быстрой симуляции
Вы будете запускать симуляции с несколькими наборами данных?Настройте быстрые входные данные симуляции
Входные данные будут состоять из глобальных параметров, сигналов или обоих?Настройте быстрые входные данные симуляции
Какие исходные блоки предоставляют входным данным модели — Из Файла, Inport, Из Рабочей области? Настройте быстрые входные данные симуляции
Параметр действительно ли модели векторизует (model_P) использоваться в качестве входных данных?Создайте 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. Откройте диалоговое окно Configuration Parameters.

  2. Перейдите к панели Code Generation.

  3. На панели Code Generation нажмите Browse. Системный Браузер Конечного файла открывается.

  4. Выберите rsim.tlc (Rapid Simulation Target) и нажмите OK.

    На панели Code Generation генератор кода заполняет Make command и поля (Simulink Coder) make-файла Шаблона с настройками по умолчанию и добавляет панель RSim Target под Code Generation.

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

  6. Установите целевые параметры конфигурации 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.
  7. Настройте импорт данных и экспортируйте опции. На панели Data Import/Export, в разделе Save to Workspace, выбирают Time, States, Outputs и опции Final States, как они применяются. По умолчанию генератор кода сохраняет результаты журналирования симуляции в файл с именем model.mat. Для получения дополнительной информации смотрите Данные моделирования Экспорта (Simulink).

  8. Если вы используете коммуникацию режима external mode, настройте интерфейс, с помощью Code Generation> панель Interface. Смотрите Целевую Хостом Связь с Симуляцией Режима external mode (Simulink Coder) для деталей.

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

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

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

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

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

Если источник входных данных...Затем...
Глобальный вектор параметра модели (model_P)Используйте функцию 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-файл, который включает образцовую глобальную структуру параметра (model_P),

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

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

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

Получите Структуру Параметра для Модели.  Получите глобальную структуру параметра (model_P) для модели путем вызова функционального 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, так же, как для данных о формате массивов. Однако выборочные данные могут иметь любую размерность.

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

  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, чтобы создать новые сигналы и новые структуры параметра, а также сохранить данные и выполнить пакетные выполнения с помощью команды удара (!).

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

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

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

Используя цель 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 -port 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 была разработана, чтобы позволить вам запустить пакетные симуляции на самой быстрой скорости. Используя переменный шаг или решатели фиксированного шага с RSim, объединенным с использованием структуры данных настраиваемого параметра, устанавливаете ли вы поведение параметра По умолчанию на Tunable или на Inlined, можно создать несколько наборов параметра, чтобы запустить с файлом независимого исполняемого файла цели RSim (.exe на Windows) сгенерированный Simulink Coder использования. Каждый вызов исполняемого файла позволяет спецификации имени файла использовать для результатов.

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

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

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

open_system('rtwdemo_rsim_param_tuning');

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

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

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

Для получения дополнительной информации можно также обратиться к разделу "Rapid Simulation Target" в документации Simulink Coder.

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

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

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

  • Не поддерживает Интерпретированные блоки MATLAB function.

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

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

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

Похожие темы