Проверяйте на переполнения целевого компьютера

В этом примере показано, как к:

  • Сконфигурируйте блок 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.

Оптимальный временной шаг для вашей симуляции является тем, который балансирует скорость с точности. Если выполняемая версия вашей модели переполняется на вашей целевой машине, можно увеличить размер временного шага решателя, чтобы дать центральному процессору достаточно времени, чтобы избежать перегрузки.

Сгенерируйте ссылочные результаты

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

  1. Открыть образец модели, в командной строке MATLAB®, введите:

    ssc_resistive_ac_circuit

  2. Симулируйте модель.

  3. Чтобы видеть результаты, откройте блок Development Scope.

    Ток через резистор составляет 0,3 А.

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

Чтобы подготовить вашу модель разработки Simscape к симуляции в реальном времени на целевом компьютере, сконфигурируйте его, чтобы создать исполняемый файл, который отслеживает TET и позволяет вам видеть результаты симуляции.

  1. Добавьте блок Simulink Real-Time Scope в модель объекта управления Simscape.

    1. В браузере Библиотеки Simulink перейдите к библиотеке Simulink-Real Time> Displays and Logging.

    2. Добавьте блок Scope в модель Simscape.

    3. Соедините осциллограф с выходным сигналом блока PS-Simulink Converter.

  2. Сконфигурируйте блок Simulink Real-Time Scope как осциллограф хоста.

    1. Задайте параметр Scope type как Host.

    2. Установите Number of samples на 100000.

    3. Нажмите OK.

  3. Сконфигурируйте параметры конфигурации модели Simscape для анализа TET с помощью Simulink Real-Time.

    1. Откройте параметры конфигурации модели.

    2. На левой панели окна Model Parameter Configuration выберите Code Generation.

    3. Нажмите Browse...

    4. В Системном Браузере Конечного файла, для System Target File, выбирают slrt.tlc.

    5. Нажмите OK.

    6. На левой панели окна Model Parameter Configuration выберите Code Generation> Verification.

    7. Установите флажок Measure task execution time.

    8. Нажмите OK.

Оцените время выполнения задачи

Соедините свой компьютер разработчика с машиной реального времени, прежде чем можно будет завершить эти шаги. Для получения информации о конфигурировании и соединении вашего компьютера разработчика к целевому компьютеру, смотрите Setup Simulink Real-Time и Настройку (Simulink Real-Time).

Можно использовать целевой объект Simulink Real-Time, чтобы проверять на переполнения и определить TET после того, как вы симулируете в режиме реального времени на целевом компьютере. Целевой объект, который связывается с машиной реального времени, сообщает о состоянии приложения реального времени к компьютеру разработчика.

  1. Запустите свое приложение реального времени на целевом компьютере.

    1. Чтобы сгенерировать код из вашей модели, нажмите кнопку Build.

    2. Чтобы установить режим симуляции для выполнения на целевой машине, в окне Simulink, в Моделировании выбирают External.

    3. Чтобы соединить ваш компьютер разработчика и целевую машину и передать ваши параметры модели целевой машине, нажмите Connect to Target button.

    4. Чтобы выполнить ваше приложение реального времени на целевой машине, щелкните по кнопке Run.

  2. Использовать целевой объект, чтобы распечатать состояние симуляции, на вашем компьютере разработчика, в командной строке 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) и останавливает симуляцию.

  3. Симуляция останавливается в самом начале выполнения даже при том, что это имеет заданное время остановки 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')

  4. Чтобы регенерировать код с новой установкой свойства, нажмите кнопку Build.

  5. Чтобы снова соединиться с целевой машиной, нажмите Connect To Target button.

  6. Запустите симуляцию.

  7. Получите статистику.

    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.

Настройте размер шага на основе максимального времени выполнения задачи

Настройте шаг расчета, повторно выполните симуляцию, проверяйте на переполнения и на точность результатов.

  1. Чтобы избежать переполнений симуляции, задайте размер шага, который по крайней мере на 20% больше, чем TETmax от симуляции на вашей машине реального времени. В командной строке MATLAB введите:

    ts = 4e-5;

  2. Удалите переопределение перегрузки.

    set_param('ssc_resistive_ac_circuit', 'TLCOptions', '')

  3. Регенерируйте код.

  4. Свяжите с целевой машиной.

  5. Запустите симуляцию.

  6. Получите статистику.

    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.

  7. Чтобы видеть результаты, откройте блок Development Scope.

    Ток через резистор составляет 0,3 А. Результаты совпадают со ссылочными результатами, и симуляция теперь запускается, не давая к переполнению.

Смотрите также

| | | | | | |

Связанные примеры

Больше о