Real-Time in Matlab
Доброго времени суток всем откликнувшимся.
Передо мной соит сделующая задача, необходимо из Matlab выдавать сигнал на отладочную плату STM32 Nucleo-144 под ядром F767zi выполнять мат. обработку на плате и выводить результаты обратно в матлабе. Получилось выполнить данные манипуляции в Matlab script после чего начал искать информацию, необходимую для запуска сие чудо в реальном времени.
Насколько я понял в Matlab обработку в Real-Time можно выполнить только в Simulink? Но не понял можно ли использовать для Simulink Real-Tame устройства которые будут связываться по UART, так как на оф. сайте они обычно ссылаются машины реального времени. Для того чтобы просто совершать обмен в реальном времени по UART что можно использовать? Также рассматриваю вариант создания приложения через матлаб для совершения обмена с платой, такой вариант является Real-Time? или он тртебует постоянного перезапуска как обычный Simulink?
Если кто-то стаклкивался с похожими задачами, через что вы реализовывали, чем пользовались?
Ответы
Для запуска алгоритма в реальном времени нужна операционная система реального времени. Декстопные версии операционок такими не являются. Т.е. на обычном компьютере настоящее реальное время получить нельзя, и поэтому можно взять из стандартных библиотек любой блок, реализующий последовательный интерфейс, и работать с платой через него. Если у вас уже есть код, который работает с UART, то можно просто продолжить работать с ним, добавив в него таймеров.
Если все же реальное время для вас очень важно, и вы хотите к нему хоть как-то приблизиться, то посмотрите в сторону Simulink Desktop Real-Time. С его помощью на Win и Mac можно получить мягкое реальное время с низким sample rate (с низкой частотой). Частоту работы можно повысить, если удастся отключить сторонние тяжелые процессы в вашей операционке, либо использованием более мощного процессора. Для UART подойдут блоки Stream Input и Output.