Выполнение в реальном времени в режиме Accelerator

Simulink® Desktop Real-Time™ расширяет режим Accelerator, чтобы работать в режиме реального времени.

Алгоритм симуляции для модели Simulink режима Accelerator скомпилирован в Файл MEX S-функцию. Как и в случае с режимом normal mode, S-функция запусков в процессе Simulink. Он не синхронизируется с синхроимпульсом в реальном времени и не может быть легко использован для работы оборудования в реальном времени.

Можно синхронизировать модель режима Accelerator с часами реального времени с помощью блоков ввода-вывода Simulink Desktop Real-Time. В режиме Accelerator в реальном времени алгоритм симуляции S-функция запускается в процессе Simulink. Отдельный процесс режима ядра операционной системы запускает драйверы ввода-вывода для блоков ввода-вывода. Процесс Simulink и процесс режима ядра запускаются на хост-машине, используя интерфейс общей памяти для передачи данных о параметрах.

  • Сбор сигнала - Вы можете захватывать и отображать сигналы из вашего приложения реального времени во время его работы. Simulink извлекает данные сигнала из драйвера ввода-вывода и отображает его в том же Scope блоки, которые вы использовали для симуляции модели в нереальное время.

  • Настройка параметра - Вы можете изменить параметры в своей Диаграмме Simulink и получить новые параметры, эффект в модели Simulink в реальном времени. Эффекты затем распространяются через драйвер ввода-вывода на оборудование.

Примечание

Вы не можете запустить модель Simulink Desktop в реальном времени в быстрых режимах Accelerator.

Поскольку с часами реального времени синхронизируются только драйверы ввода-вывода, Simulink может использовать либо решатель с фиксированным шагом, либо решатель с переменным шагом. Настройка Sample Time в блоке Simulink Desktop Real-Time не изменяет размер шага симуляции. Для симуляции с фиксированным шагом необходимо задать размер шага в Fixed step size окне из диалогового окна Параметры конфигурации. Для симуляции с переменным шагом вы устанавливаете размер шага с помощью атрибута Min Step Size или Simulink определяет размер шага автоматически.

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

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

  • Комплексность Модели - Модель может быть настолько сложной, что Simulink не может идти в ногу с ядром реального времени. В этом случае количество пропущенных тактов стабильно увеличивается со временем. Когда количество пропущенных тактов превышает Maximum Missed Ticks, возникает ошибка, даже если Maximum Missed Ticks задано большое значение. Можно идентифицировать эту ситуацию по восходящей прямой линии на Scope подключение к дополнительному Missed Ticks порт.

  • Конфликт процессов - модель обычно выполняется быстрее, чем требуется, чтобы идти в ногу с ядром. Однако конфликт процессов или некоторая случайная операционная система условия препятствует выполнению модели Simulink в течение некоторого периода времени. В этом случае количество пропущенных тактов скачет до некоторого числа, затем уменьшается до нуля, когда Simulink догоняет ядро. Можно идентифицировать эту ситуацию по пилообразной форме на Scope соединяется с Missed Ticks порт.

  • Переменный-шаговый решатель - Если вы используете решатель переменного шага, количество тактов на шаг алгоритма может варьироваться во время симуляции. Если выполнение Simulink не достигает блоков Simulink Desktop Real-Time вовремя, чтобы синхронизироваться с тактом, количество пропущенных тактов перескакивает до некоторого количества. Когда Simulink догоняет ядро, количество пропущенных тактов уменьшается до нуля. Как и при споре процесса, можно идентифицировать эту ситуацию по пилообразной форме на Scope соединяется с Missed Ticks порт.

Похожие темы