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

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

Алгоритм симуляции для модели режима normal mode Simulink в нереальном времени полностью запускается в Simulink. Модель может использовать либо решатель с фиксированным шагом, либо решатель с переменным шагом и запускается как можно быстрее, учитывая наличие конкурирующих процессов операционной системы. Однако он не синхронизируется с синхроимпульсом в реальном времени и не может легко использоваться для работы оборудования в реальном времени.

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

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

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

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

В режим normal mode в реальном времени на каждой выборке интервала 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 порт.

Похожие темы