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

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

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

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

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

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

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

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

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

Примечание

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

Преимущество быстрого симуляции

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

Рабочий процесс General Rapid Симуляции

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

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

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

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

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

Можно использовать блоки 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. В диалоговом окне Параметры конфигурации на панели Solver задайте решатель с фиксированным шагом.
    Явное указание цели использовать решатель с переменным шагом

    Установите Solver selection значение Use Simulink solver module. В диалоговом окне Параметры конфигурации на панели Solver задайте решатель с переменной.

    Принудительное преобразование классов памяти в Auto для гибкого интерфейса пользовательского кодаВыберите Force storage classes to AUTO (по умолчанию).
    Сохраните настройки класса памяти, такие как ExportedGlobal или ImportedExtern, в связи с требованиями приложенияОчистить Force storage classes to AUTO.
  4. Настройте опции импорта и экспорта данных. На разделе <reservedrangesplaceholder6> pane, in the <reservedrangesplaceholder5> выберите Time, States, Outputs, и Final States параметры, как они применяются. По умолчанию генератор кода сохраняет результаты логгирования симуляции в файл с именем model.mat. Для получения дополнительной информации смотрите Экспорт данных моделирования.

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

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

    Дополнительные сведения о компиляторах, совместимых с продуктом Simulink Coder™, см. в разделах Выбор и настройка компилятора C или C++ и Шаблоны make-файлов и Параметры создания.

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

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

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

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

Цель RSim требует, чтобы MAT-файлы, используемые в качестве входов для блоков From File и Inport, содержали данные. The grt target вставляет данные 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, если real; 1, если комплексный
dtTransIdxВнутренний индекс данных, используемый генератором кода
значенияВектор значений параметров, сопоставленных с этой структурой
картаЭто поле содержит информацию отображения, которая коррелирует 'values' с настраиваемыми параметрами модели. Эта информация о отображении, в сочетании с 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');
    

    The parameters поле структуры является подструктурой, которая содержит информацию о параметре. The 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 Simulation.

Создайте 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. Для получения дополнительной информации смотрите Загрузку массивов данных на входы корневого уровня.

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

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

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

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

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

Для получения примера смотрите структуру Signal-and-time в следующей процедуре, шаг 4. Для получения дополнительной информации об этом формате смотрите Загрузка структур данных на входы корневого уровня.

Структура в относительных портах
  • Наиболее гибкий

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

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

  • Каждая переменная может иметь другой временной вектор.

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

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

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

Для получения примера смотрите структуру Per-port в следующей процедуре, шаг 4. Для получения дополнительной информации смотрите Загрузка структур данных на входы корневого уровня.

Поддерживаемые форматы и следующая процедура проиллюстрированы на 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;

    The save команда не сохраняет порядок, в котором вы задаете переменные рабочей области в командной строке при сохранении данных в MAT-файле. Для примера, если вы задаете переменные v1, v2, и v3в этом порядке можно было бы v2 v1 v3 порядок переменных в MAT-файле.

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

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

Запуск быстрых симуляций

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

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

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

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 должна включать/bin и/bin/( $ 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

  • На платформе Apple Macintosh OS X для запуска целевых исполняемых файлов 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 ...
  • On The 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 Файла, конец симуляции регулируется настройкой времени остановки, заданной в диалоговом окне Параметров конфигурации, на панели 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)

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

Блоки From File требуют входных данных типа 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. Следующие настройки параметров блок data и спецификации, которые вы задаете для переменных рабочей области, должны совпадать с настройками в MAT-файле, как указано в Настройте входные порты для предоставления исходных данных симуляции:

    • 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 Workspace - Time, 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.

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

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

!rtwdemo_rsimtf -t rtwdemo_rsimtf_data.mat=mynewrsimdata.mat

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

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

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

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

Откройте модель примера

Откройте пример модели rtwdemo_rsim_param_tuning.

open_system('rtwdemo_rsim_param_tuning');

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

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

Чтобы просмотреть код, используемый для создания графического интерфейса MATLAB и автономного графического интерфейса, дважды кликните кнопку View MATLAB programs.

Для получения дополнительной информации смотрите Accelerate, Refine, and Test Hybrid Dynamic System on Хост-компьютер при помощи RSim System Target File.

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

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

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

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

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

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

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

Похожие темы