В этом примере показано, как к:
Сконфигурируйте блок Simulink® Real-Time™ Scope, чтобы получить данные сигнала во время симуляции в реальном времени на целевом компьютере.
Используйте настройки TLCOptions, чтобы выполниться посредством перегрузок ЦП на вашем целевом компьютере.
Используйте целевой объект Simulink, чтобы проверять на переполнения и найти минимальный размер шага решателя для предотвращения переполнений.
Проверьте, что следует из симуляции, которая использует больший временной шаг, приемлемо точны.
Этот пример требует активной связи между вашим компьютером разработчика и машиной реального времени. Для получения информации о конфигурировании и соединении вашего компьютера разработчика к целевому компьютеру, смотрите Setup Simulink Real-Time и Настройку (Simulink Real-Time).
Переполнение происходит, когда целевая машина не может вычислить результаты для отдельного временного шага в симуляции, потому что задачи обработки для шага перегружают центральный процессор в целевой машине. По умолчанию, когда Ядро Simulink Real-Time обнаруживает перегрузку ЦП, оно останавливает выполнение модели на машине реального времени. Можно использовать инструменты Simulink и Simulink Real-Time, чтобы определить время выполнения задачи (TET) для шага, который вызывает переполнение так, чтобы можно было настроить шаг расчета (Ts) соответственно. Однако, потому что возможно, что больший TET происходит позже в симуляции, ваша сила модели генерируют другое переполнение, когда вы затем симулируете.
Можно направить среду Simulink Real-Time с помощью настроек TLCOptions, чтобы позволить перегрузки ЦП, таким образом, целевая машина может выполниться через переполнения. Когда ваша целевая машина выполняется к завершению, можно определить максимальное время выполнения задачи (TETmax) для целой симуляции. Можно затем использовать TETmax, чтобы определить минимальный размер шага (Tsmin), которого целевая машина требует, чтобы выполнить модель в режиме реального времени, не генерируя переполнение. Для получения информации об использовании TETmax, чтобы определить Tsmin, смотрите Оценочные Затраты на Расчет.
Инструменты, которые можно использовать, чтобы проверять на переполнения или определить максимальный TET, включают:
Simulink предназначается для объектов
Simulink Real-Time Explorer
Целевые блоки управления Simulink Real-Time
Simulink Real-Time Explorer и целевые блоки управления Simulink Real-Time позволяют вам отслеживать данные графически в течение симуляции, в то время как целевой объект только сообщает о количестве переполнений и максимальных и минимальных значений TET. Однако, потому что целевые блоки управления используют обработку ввода-вывода во время симуляции, у них есть более высокая вычислительная стоимость и, поэтому, больший TETs, чем целевые объекты. Для моделей Simscape™, которые имеют тенденцию иметь долгие времена выполнения, обычно лучше использовать целевой объект, чтобы проверять на переполнения и определить TET.
Оптимальный временной шаг для вашей симуляции является тем, который балансирует скорость с точности. Если выполняемая версия вашей модели переполняется на вашей целевой машине, можно увеличить размер временного шага решателя, чтобы дать центральному процессору достаточно времени, чтобы избежать перегрузки.
Сгенерируйте ссылку, следует из модели на вашем компьютере разработчика так, чтобы у вас был сравнительный тест для проверки точности результатов симуляции на целевом компьютере.
Открыть эталонную модель, в командной строке MATLAB®, введите:
ssc_resistive_ac_circuit
Симулируйте модель.
Чтобы видеть результаты, откройте блок Development Scope.
Ток через резистор составляет 0,3 А.
Чтобы подготовить вашу модель разработки Simscape к симуляции в реальном времени на целевом компьютере, сконфигурируйте его, чтобы создать исполняемый файл, который отслеживает TET и позволяет вам видеть результаты симуляции.
Добавьте блок Simulink Real-Time Scope в модель объекта управления Simscape.
В браузере Библиотеки Simulink перейдите к библиотеке Simulink-Real Time> Displays and Logging.
Добавьте блок Scope в модель Simscape.
Соедините осциллограф с выходным сигналом блока PS-Simulink Converter.
Сконфигурируйте блок Simulink Real-Time Scope как осциллограф хоста.
Задайте параметр Scope type как Host
.
Установите Number of samples на 100000
.
Нажмите OK.
Сконфигурируйте параметры конфигурации модели Simscape для анализа TET с помощью Simulink Real-Time.
Откройте параметры конфигурации модели.
На левой панели окна Model Parameter Configuration выберите Code Generation.
Нажмите Browse...
В Системном Браузере Конечного файла, для System Target File, выбирают slrt.tlc
.
Нажмите OK.
На левой панели окна Model Parameter Configuration выберите Code Generation> Verification.
Установите флажок Measure task execution time.
Нажмите OK.
Соедините свой компьютер разработчика с машиной реального времени, прежде чем можно будет завершить эти шаги. Для получения информации о конфигурировании и соединении вашего компьютера разработчика к целевому компьютеру, смотрите Setup Simulink Real-Time и Настройку (Simulink Real-Time).
Можно использовать целевой объект Simulink Real-Time, чтобы проверять на переполнения и определить TET после того, как вы симулируете в режиме реального времени на целевом компьютере. Целевой объект, который связывается с машиной реального времени, сообщает о состоянии приложения реального времени к компьютеру разработчика.
Запустите свое приложение реального времени на целевом компьютере.
Чтобы сгенерировать код из вашей модели, нажмите кнопку Build.
Чтобы установить режим симуляции для выполнения на целевой машине, в окне Simulink, в Моделировании выбирают External
.
Чтобы соединить ваш компьютер разработчика и целевую машину и передать ваши параметры модели целевой машине, нажмите Connect to Target button.
Чтобы выполнить ваше приложение реального времени на целевой машине, щелкните по кнопке Run.
Использовать целевой объект, чтобы распечатать состояние симуляции, на вашем компьютере разработчика, в командной строке MATLAB, введите:
tg = slrt
Target: SLRTLABTGT2 Connected = Yes Application = ssc_resistive_ac_circuit Mode = Real-Time Single-Tasking Status = stopped CPUOverload = detected ExecTime = 0.0000 SessionTime = 11.8761 StopTime = 1.000000 SampleTime = 0.000010 AvgTET = 0.000021 MinTET = 0.000021 MaxTET = 0.000021 ViewMode = 0 TimeLog = Vector(2) StateLog = Off OutputLog = Off TETLog = Vector(2) MaxLogSamples = 50000 NumLogWraps = 0 LogMode = Normal Scopes = 1 NumSignals = 3 ShowSignals = off NumParameters = 2 ShowParameters = off
В этом случае, когда время выполнения задачи (maxTET = 0.000021) превышает размер шага (SampleTime = 0.000010), Ядро Simulink Real-Time обнаруживает переполнение (CPUOverload = detected) и останавливает симуляцию.
Симуляция останавливается в самом начале выполнения даже при том, что это имеет заданное время остановки 1 секунды (ExecTime = 0, StopTime = 1.000000). Для того, чтобы определить максимальный TET для целого времени симуляции, используйте Simulink Real-Time
TLCOptions
Функция свойств, чтобы сконфигурировать приложение реального времени, чтобы продолжить выполняться после него обнаруживает переполнение. Функция позволяет вам задавать значения перегрузки целевого компьютера для Number of acceptable overloads property
программно. Приложение выполняется через количество перегрузок, которые вы задаете, но прекращает выполняться, если это обнаруживает дополнительную перегрузку.
set_param('ssc_resistive_ac_circuit',... 'TLCOptions', '-axPCMaxOverloads=200000')
Чтобы регенерировать код с новой установкой свойства, нажмите кнопку Build.
Чтобы снова соединиться с целевой машиной, нажмите Connect To Target button.
Запустите симуляцию.
Получите статистику.
tg = slrt
Target: SLRTLABTGT2 Connected = Yes Application = ssc_resistive_ac_circuit Mode = Real-Time Single-Tasking Status = stopped CPUOverload = none ExecTime = 1.0000 SessionTime = 6.3129 StopTime = 1.000000 SampleTime = 0.000010 AvgTET = 0.000016 MinTET = 0.000014 MaxTET = 0.000032 ViewMode = 0 TimeLog = Vector(50000) StateLog = Off OutputLog = Off TETLog = Vector(50000) MaxLogSamples = 50000 NumLogWraps = 2 LogMode = Normal Scopes = 1 NumSignals = 3 ShowSignals = off NumParameters = 2 ShowParameters = off
Симуляция выполняет к завершению TET имеющий 0,000032.
Настройте шаг расчета, повторно выполните симуляцию, проверяйте на переполнения и на точность результатов.
Чтобы избежать переполнений симуляции, задайте размер шага, который по крайней мере на 20% больше, чем TETmax от симуляции на вашей машине реального времени. В командной строке MATLAB, введите:
ts = 4e-5;
Удалите переопределение перегрузки.
set_param('ssc_resistive_ac_circuit', 'TLCOptions', '')
Регенерируйте код.
Свяжите с целевой машиной.
Запустите симуляцию.
Получите статистику.
tg = slrt
Target: SLRTLABTGT2 Connected = Yes Application = ssc_resistive_ac_circuit Mode = Real-Time Single-Tasking Status = stopped CPUOverload = none ExecTime = 1.0000 SessionTime = 8.7715 StopTime = 1.000000 SampleTime = 0.000040 AvgTET = 0.000016 MinTET = 0.000015 MaxTET = 0.000028 ViewMode = 0 TimeLog = Vector(25001) StateLog = Off OutputLog = Off TETLog = Vector(25001) MaxLogSamples = 50000 NumLogWraps = 0 LogMode = Normal Scopes = 1 NumSignals = 3 ShowSignals = off NumParameters = 2 ShowParameters = off
Симуляция выполняет к завершению TET имеющий 0,000028.
Чтобы видеть результаты, откройте блок Development Scope.
Ток через резистор составляет 0,3 А. Результаты совпадают со ссылочными результатами, и симуляция теперь запускается, не давая к переполнению.
Get Overload Counter | Scope | Set Overload Counter | SimulinkRealTime.target
| Параметры командной строки TLC | Task Execution Time | slrt
| xPCIsOverloaded