После создания модели можно использовать целевой файл системы быстрой симуляции (RSim), чтобы охарактеризовать поведение модели. Исполняемая программа, которая является результатом процесса сборки, предназначена для выполнения в нереальном времени на вашем компьютере разработчика. Исполняемая программа высоко оптимизирована для симуляции моделей гибридных динамических систем, включая модели, которые используют решатели с переменным шагом и обнаружение пересечения нулем. Скорость сгенерированного кода делает целевой файл системы RSim идеальным для создания программ для пакетных симуляций или симуляций Монте-Карло.
Используйте цель RSim, чтобы сгенерировать исполняемый файл, который запускается быстро, автономные симуляции. Можно повторить симуляции с различными наборами данных, интерактивно или программно со скриптами, не перестраивая модель. Это может ускорить характеристику и настройку поведения модели и проверки генерации кода.
Использование опций командной строки:
Задайте значения параметров и входные сигналы в одном или нескольких MAT-файлах, которые можно загрузить и перезагрузить в начале симуляций, не перестраивая модель.
Перенаправьте данные логгирования в один или несколько MAT-файлов, которые можно затем проанализировать и сравнить.
Управляйте временем симуляции.
Задайте опции режима external mode.
Примечание
Чтобы запустить исполняемый файл RSim, сконфигурируйте компьютер, чтобы запустить MATLAB® и иметь MATLAB и Simulink® папки установки доступны. Чтобы развернуть отдельный исполняемый файл узла (т.е. без установленных MATLAB и Simulink), рассмотрите использование целевого устройства общей библиотеки на основе хоста (ert_shrlib). "
Преимущество, которое вы получаете от быстрой симуляции, варьируется. Большие симуляции достигают улучшения скорости до 10 раз быстрее, чем стандартные симуляции Simulink. Некоторые модели могут не показать заметного улучшения скорости симуляции. Чтобы определить разность оборотов для вашей модели, проведите стандартную симуляцию Simulink и сравните результаты с быстрой симуляцией. В сложение протестируйте симуляцию модели в режиме симуляции Rapid Accelerator.
Как и другие этапы Модельно-ориентированного проектирования, характеристика и настройка поведения модели являются итеративным процессом, как показано на общей схеме рабочего процесса на рисунке. Задачи в рабочем процессе:
Сконфигурируйте блоки Inport, которые обеспечивают входные исходные данные для быстрых симуляций.
Сконфигурируйте модель для быстрой симуляции.
Первый шаг к настройке быстрой симуляции - идентифицировать ваши требования к симуляции.
Вопрос... | Для получения дополнительной информации смотрите... |
---|---|
Как долго вы хотите, чтобы симуляции выполнялись? | Сконфигурируйте и создайте модель для быстрой симуляции |
Есть ли требования к решателю? Вы ожидаете использовать тот же решатель, для которого модель сконфигурирована для ваших быстрых симуляций? | Сконфигурируйте и создайте модель для быстрой симуляции |
Необходимы ли быстрые симуляции для гибкого пользовательского интерфейса кода? Или ваши симуляции должны сохранить настройки класса памяти? | Сконфигурируйте и создайте модель для быстрой симуляции |
Будете ли вы запускать симуляции с несколькими наборами данных? | Настройка входных данных быстрой симуляции |
Будут ли входные данные состоять из глобальных параметров, сигналов или обоих? | Настройка входных данных быстрой симуляции |
Какой тип исходных блоков предоставляет входные данные модели - From File, Inport, From Workspace? | Настройка входных данных быстрой симуляции |
Будет ли вектор параметра модели ( ) использоваться в качестве входных данных? | Создайте 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 блоков.
После того, как вы идентифицируете свои требования к быстрой симуляции, сконфигурируйте модель для быстрой симуляции.
Установите System target file параметра конфигурации модели в rsim.tlc
(Цель быстрой симуляции).
Щелкните RSim Target, чтобы просмотреть панель RSim Target.
Установите параметры целевой конфигурации RSim для ваших требований быстрой симуляции.
Если вы хотите... | Тогда... |
---|---|
Сгенерируйте код, который позволяет исполняемому файлу RSim загружать параметры из MAT-файла | Выберите Enable RSim executable to load parameters from a MAT-file (по умолчанию). |
Пусть цель выбирает решатель на основе решателя, уже настроенного для модели | Установите Solver selection значение |
Явное указание цели использовать решатель с фиксированным шагом | Установите Solver selection значение Use fixed-step solvers . В диалоговом окне Параметры конфигурации на панели Solver задайте решатель с фиксированным шагом. |
Явное указание цели использовать решатель с переменным шагом | Установите Solver selection значение |
Принудительное преобразование классов памяти в Auto для гибкого интерфейса пользовательского кода | Выберите Force storage classes to AUTO (по умолчанию). |
Сохраните настройки класса памяти, такие как ExportedGlobal или ImportedExtern , в связи с требованиями приложения | Очистить Force storage classes to AUTO. |
Настройте опции импорта и экспорта данных. На разделе <reservedrangesplaceholder6> pane, in the <reservedrangesplaceholder5> выберите Time, States, Outputs, и Final States параметры, как они применяются. По умолчанию генератор кода сохраняет
логгирования симуляции результаты
. Для получения дополнительной информации смотрите Экспорт данных моделирования.в файл с именем model
.mat
Если вы используете коммуникацию во режиме external mode, настройте интерфейс с помощью панели Code Generation > Interface. Смотрите Симуляции Режима external mode для Настройки Параметров и Контроля сигналов для получения дополнительной информации.
Нажмите Ctrl+B. Генератор кода создает высоко оптимизированную исполняемую программу, которую можно запускать на компьютер разработчика с различными данными, не перестраивая.
Дополнительные сведения о компиляторах, совместимых с продуктом Simulink Coder™, см. в разделах Выбор и настройка компилятора C или C++ и Шаблоны make-файлов и Параметры создания.
Формат и настройка входных данных для быстрой симуляции зависит от ваших требований.
Если источник Входных данных... | Тогда... |
---|---|
Вектор глобального параметра модели ( ) | Используйте 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-файл, который включает в себя структуру глобального параметра модели (
),model
_P
Получите структуру путем вызова функции rsimgetrtp
.
Сохраните структуру параметра в MAT-файл.
Если вы хотите запустить симуляции над различными наборами данных, рассмотрите преобразование структуры параметра в массив ячеек и сохранение изменений параметра в один MAT-файл.
Получите структуру параметра для модели. Получите глобальную структуру параметра (
) для модели вызовом функции model
_Prsimgetrtp
.
param_struct = rsimgetrtp('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;
Для получения информации об использовании опций командной строки для задания необходимых файлов смотрите Запуск быстрых симуляций.
Преобразуйте структуру параметра для выполнения симуляций на различных наборах данных. Чтобы использовать быстрые симуляции для тестирования изменений определенных параметров, можно преобразовать структуру параметра модели в массив ячеек. Затем можно получить доступ к определенному набору параметров с помощью оператора @, чтобы задать индекс для определенного набора параметров в файле.
Чтобы преобразовать структуру в массив ячеек:
Используйте функцию rsimgetrtp
чтобы получить структуру, содержащую информацию о параметрах для модели примера rtwdemo_rsimtf
. Сохраните структуру в переменной param_struct
.
param_struct = rsimgetrtp('rtwdemo_rsimtf');
The parameters
поле структуры является подструктурой, которая содержит информацию о параметре. The values
поле parameters
подструктура содержит числовые значения параметров, которые можно настроить во время выполнения кода симуляции.
Используйте функцию rsimsetrtpparam
развернуть структуру так, чтобы она содержала больше наборов параметров. В этом случае создайте еще два набора параметров (для в общей сложности трех наборов).
param_struct = rsimsetrtpparam(param_struct,3);
Функция преобразует parameters
поле в массив ячеек с тремя элементами. Каждый элемент содержит информацию для одного набора параметров. По умолчанию функция создает второй и третий элементы массива ячеек, копируя первый элемент. Поэтому во всех наборах параметров используются одинаковые значения параметров.
Задайте новые значения для параметров во втором и третьем наборах параметров.
param_struct.parameters{2}.values = [-150 -5000 0 4950]; param_struct.parameters{3}.values = [-170 -5500 0 5100];
Сохраните структуру, содержащую информацию о наборе параметров, в MAT-файл.
save rtwdemo_rsimtf.mat param_struct;
Кроме того, можно изменить параметры блоков в модели и использовать rsimgetrtp
чтобы создать несколько наборов параметров:
Используйте функцию rsimgetrtp
чтобы получить структуру, содержащую информацию о параметрах для модели примера rtwdemo_rsimtf
. Сохраните структуру в переменной param_struct
.
param_struct = rsimgetrtp('rtwdemo_rsimtf');
Используйте функцию rsimsetrtpparam
развернуть структуру так, чтобы она содержала больше наборов параметров. В этом случае создайте еще два набора параметров (для в общей сложности трех наборов).
param_struct = rsimsetrtpparam(param_struct,3);
Функция преобразует parameters
поле в массив ячеек с тремя элементами. Каждый элемент содержит информацию для одного набора параметров. По умолчанию функция создает второй и третий элементы массива ячеек, копируя первый элемент. Поэтому во всех наборах параметров используются одинаковые значения параметров.
Измените значения параметров блоков или переменных рабочей области. Для примера измените значение переменной w
от 70
на 72
.
w = 72;
Использовать rimsgetrtp
для получения другой структуры, содержащей информацию о параметре. Сохраните структуру во временной переменной rtp_temp
.
rtp_temp = rsimgetrtp('rtwdemo_rsimtf');
Присвойте значение parameters
область rtp_temp
в структуру param_struct
как второй набор параметров.
param_struct.parameters{2} = rtp_temp.parameters;
Измените значение переменной w
от 72
на 75
.
w = 75;
Использовать rimsgetrtp
для получения другой структуры, содержащей информацию о параметре. Затем присвойте значение parameters
поле к param_struct
как третий набор параметров.
rtp_temp = rsimgetrtp('rtwdemo_rsimtf');
param_struct.parameters{3} = rtp_temp.parameters;
Сохраните структуру, содержащую информацию о наборе параметров, в MAT-файл.
save rtwdemo_rsimtf.mat param_struct;
Для получения дополнительной информации о том, как задать каждый набор параметров при запуске симуляций, смотрите Изменить параметры блоков для RSim Simulation.
Можно использовать MAT-файл в качестве источника входных данных для блока From File. Формат данных в MAT-файле должен совпадать с форматом данных, ожидаемым этим блоком. Например, если вы используете матрицу как вход для файла MAT, это не может отличаться от размера матрицы для исполняемого файла.
Чтобы создать MAT-файл для блока From File:
Для данных формата массива в рабочей области создайте матрицу, которая состоит из двух или более строк. Первая строка должна содержать монотонно увеличивающиеся временные точки. Другие строки содержат точки данных, которые соответствуют времени, указанному в этом столбце. Время и точки данных должны быть данными типа 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.
Сохраните матрицу в MAT-файл.
Следующий пример сохраняет матрицу var_matrix
в MAT-файл myrsimdemo.mat
в формате версии 7.3.
save '-v7.3' myrsimdemo.mat var_matrix;
Используя опцию командной строки, можно затем задать этот MAT-файл как вход для быстрых симуляций.
Можно использовать MAT-файл в качестве источника входных данных для блока Inport.
Формат данных в MAT-файле должен соответствовать одному из трех форматов на основе столбцов, перечисленных в следующей таблице. В таблице перечислены форматы в порядок от наименее гибких до наиболее гибких.
Формат | Описание |
---|---|
Единая матрица времени/данных |
Для получения примера смотрите Одну матрицу времени/данных в следующей процедуре, шаг 4. Для получения дополнительной информации смотрите Загрузку массивов данных на входы корневого уровня. |
Структура сигнала и времени |
Для получения примера смотрите структуру Signal-and-time в следующей процедуре, шаг 4. Для получения дополнительной информации об этом формате смотрите Загрузка структур данных на входы корневого уровня. |
Структура в относительных портах |
Для получения примера смотрите структуру Per-port в следующей процедуре, шаг 4. Для получения дополнительной информации смотрите Загрузка структур данных на входы корневого уровня. |
Поддерживаемые форматы и следующая процедура проиллюстрированы на rtwdemo_rsim_i
.
Чтобы создать MAT-файл для блока Inport:
Выберите один из предыдущих форматов файлов данных.
Обновите настройки и спецификации Inport параметров блоков, чтобы соответствовать спецификациям данных, которые будут предоставлены MAT-файлом.
По умолчанию блок Inport наследует настройки параметров от нисходящих блоков. Чтобы импортировать данные из внешнего MAT-файла, явно установите следующие параметры, чтобы соответствовать исходным данным в MAT-файле.
Main> Interpolate data
Signal Attributes> Port dimensions
Signal Attributes> Data type
Signal Attributes> Signal type
Если вы принимаете решение использовать формат структуры для переменных рабочей области и time
поле пустое, очистите блочный параметр Interpolate data или измените параметр так, чтобы он был установлен на непустое значение. Для интерполяции требуются временные данные.
Для описания предыдущих параметров блоков смотрите описание Inport блоков.
Создайте исполняемую программу RSim для модели. Процесс сборки создает и вычисляет структурную контрольную сумму для модели и встраивает ее в сгенерированный исполняемый файл. Цель RSim использует контрольную сумму, чтобы убедиться, что передаваемые в модель данные соответствуют ожидаемому исполняемым файлам модели.
Создайте 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);
Сохраните переменные рабочей области в 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-файла, используемого для предыдущей симуляции |
|
Печать сводных данных опций для исполняемых целевых объектов RSim |
|
Считайте входные данные для блока Inport из MAT-файла |
|
Тайм-аут после n тактовое время секунд, где n является положительным целым значением |
|
Запись данных логгирования MAT-файлов в файловые
|
|
Считайте вектор параметра из файловой
|
|
Переопределите порт TCP по умолчанию (17725) для режима external mode |
|
Запись данных логгирования MAT-файлов в MAT-файл, отличный от MAT-файла, используемого для предыдущей симуляции |
|
Запустите симуляцию до значения времени достигается |
|
Запуск в подробном режиме |
|
Подождите, пока двигатель Simulink запустит модель в режиме external mode |
|
В следующих разделах используются 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
опция.
Для примера:
Создайте исполняемый файл RSim для модели примера rtwdemo_rsimtf
.
Измените параметры в модели и сохраните структуру параметра.
param_struct = rsimgetrtp('rtwdemo_rsimtf'); save myrsimdata.mat param_struct
Запустите исполняемый файл с новым набором параметров.
!rtwdemo_rsimtf -p myrsimdata.mat
** Starting model 'rtwdemo_rsimtf' @ Tue Dec 27 12:30:16 2005 ** created rtwdemo_rsimtf.mat **
Загрузите переменные рабочей области и постройте график результатов симуляции путем ввода следующих команд:
load myrsimdata.mat
plot(rt_yout)
Если входной источник данных вашей модели является блоком From File, можно передать блок с входными данными во время симуляции из одного MAT-файла или можно изменить MAT-файл с одной симуляции на следующую. Каждый MAT-файл должен соответствовать формату, описанному в разделе «Создание MAT-файла для блока из файла».
Чтобы изменить MAT-файл после начальной симуляции, вы задаете исполняемый файл с -f
опция и
параметр, как показано в следующем примере.oldfile
.mat = newfile
.mat
Установите некоторые параметры в рабочем пространстве MATLAB. Для примера:
w = 100; theta = 0.5;
Создайте исполняемый файл RSim для модели примера rtwdemo_rsimtf
.
Запустите исполняемый файл.
!rtwdemo_rsimtf
Исполняемый файл RSim запускает набор симуляций и создает выходные MAT-файлы, содержащие определенный результат симуляции.
Загрузите переменные рабочей области и постройте график результатов симуляции путем ввода следующих команд:
load rtwdemo_rsimtf.mat
plot(rt_yout)
Полученный график показывает результаты симуляции на основе входных данных по умолчанию.
Создайте новый файл данных, newfrom.mat
, которая включает следующие данные:
t=[0:.001:1]; u=sin(100*t.*t); tu=[t;u]; save newfrom.mat tu;
Запустите быструю симуляцию с новыми данными при помощи -f
опция замены исходного файла, rsim_tfdata.mat
, с newfrom.mat
.
!rtwdemo_rsimtf -f rsim_tfdata.mat=newfrom.mat
Загрузите данные и постройте график новых результатов путем ввода следующих команд:
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, можно передать блок с входными данными во время симуляции из одного MAT-файла или можно изменить MAT-файл с одной симуляции на следующую. Каждый MAT-файл должен соответствовать одному из трех форматов, описанных в разделе «Создание MAT-файла для блока Inport».
Чтобы задать MAT-файл после симуляции, вы задаете исполняемый файл с -i
Опция и имя MAT-файла, который содержит входные данные. Для примера:
Откройте модель rtwdemo_rsim_i
.
Проверьте параметры параметров блоков Inport. Следующие настройки параметров блок data и спецификации, которые вы задаете для переменных рабочей области, должны совпадать с настройками в MAT-файле, как указано в Настройте входные порты для предоставления исходных данных симуляции:
Main> Interpolate data
Signal Attributes> Port dimensions
Signal Attributes> Data type
Signal Attributes> Signal type
Создайте модель.
Настройте входные сигналы. Для примера:
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])
Подготовьте 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];
Сохраните переменную рабочей области var_single_struct
в MAT-файл rsim_i_single_struct
.
save rsim_i_single_struct.mat var_single_struct;
Запустите быструю симуляцию с входными данными при помощи -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
Загрузите и постройте график результатов.
load rtwdemo_rsim_i.mat
plot(rt_tout, rt_yout);
Как описано в разделе Создание 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)
Если вы преобразовали структуру параметра в массив ячеек для выполнения симуляций на различных наборах данных, как описано в Преобразуйте структуру параметра для выполнения симуляций на различных наборах данных, необходимо добавить @
суффикс к спецификации MAT-файлов. n
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. В таких случаях необходимо перегенерировать код для модели.