Примеры использования машины реального времени (MATLAB, Simulink, Программно-аппаратный симулятор)

Добрый день, уважаемая Аудитория!
В своей практике я часто сталкиваюсь с ситуацией, когда при упоминании мною в разговоре некой «машины реального времени» в глазах собеседника проскакивает миллион ассоциаций, к сожалению, не имеющих отношения к теме разговора.
В первой статье я хочу немного пролить свет на данную тему со столь необычно звучащим для русскоязычной инженерной аудитории названием.

8f1cffea09c8424c9d5b5828e8fe62d3.png

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

d1ead19f7a424af28101021954afa0b3.jpg

Итак, краткое определение:

  • Машина реального времени — это компьютер, который предназначен для выполнения широкого спектра задач в режиме реального времени.


Пояснения к краткому определению:

  • Широкий спектр задач влечет за собой некоторую универсальность и избыточность в программной и аппаратной составляющей. В большинстве своем такие ПК (промышленный компьютер, не путать с персональным) имеют богатый набор средств ввода-вывода в виде интерфейсных плат и драйверов к ним.
  • Требование к работе в реальном времени выливается в то, что данный ПК должен работать под управлением операционной системы реального времени. Есть исключения из этого правила, режим свободного счета никто не отменял.


Есть исключения — бывают составные симуляторы из нескольких машин, и без плат ввода вывода, и не промышленного исполнения, и в мягком реальном времени. Но, опять же, чаще всего — это IBM совместимый компьютер с аппаратными и програмными компонентами, позволяющими ему работать с жестком реальном времени.

В русскоязычной литературе и обиходе часто встречается термины программно-аппаратный симулятор и полунатурное моделирование. С моей точки зрения, они не являются полными. Потому как «симуляция моделей» — не единая функция данного устройства.

Перечень производителей таких решений довольно обширен. Я приму к рассмотрению изделия от Speedgoat, с которыми мне посчастливилось довольно плотно работать.

Ниже, на основе примеров, я постараюсь раскрыть суть использования таких машин.

Пример №1
Команда инженеров занимается разработкой электрического привода. Есть модель в Simulink, в которой подсистему Controller (система управления) разработал инженер по системам управления, а подсистему Plant (модель двигателя) — инженер отдела физического моделирования.

Задача: Аппаратного прототипа контроллера еще нет, и не ясно когда будет. Прототипа двигателя тоже нет, или его страшно подключать к пока еще сырой системе управления.

Решение: Использовать машину реального времени для быстрого прототипирования системы управления. И еще одну машину, но более производительную, для запуска физической модели двигателя в реальном времени. Интерфейсы между такими машинами могут и должны быть такими же, как между реальным двигателем и контроллером. Такая связка называтся HIL — Hardware-In-The-Loop. По простому — программно-аппаратная симуляция. Она позволяет на ранних стадиях интегрировать и тестировать алгоритмы управления в связке с моделью объекта управления в реальном времени с учетом влияния среды передачи данных между устройствами.

На иллюстрации ниже показана схема такого процесса. Машина реального времени для системы управления может быть в защищенном исполнении для последующего размещении в полевых условиях. Машина же для физической модели необходима более производительная — изображена справа. Перенос алгоритма и модели в реальный мир производится в один клик мышью и может быть выполен инженером без помощи программиста и без глубокого вникания в нюансы ОСРВ.

139743de39aa45c6a42f21de80872d47.png

Пример №2
Все та же команда. Появился прототип двигателя, прототип контроллера еще только в разработке.

Задача: Необходимо протестировать систему управления на реальном объекте управления.

Решение: Система управления уже оттестирована на модели двигателя при работе на ПК. Потом еще более полно в режиме HIL. Теперь же, когда появился реальный прототип — его уже не так страшно запускать. Потому как большинство ошибок уже отловлено и необходимо лишь валидировать работу системы.

Возможен также случай, когда объект управления был с самого начала. Тогда быстрый переход от модели системы управления к работающей железке можно назвать Быстрым Прототипированием или Rapid Prototyping.

258c37ee9421406d955ef74f7bc7b0f4.png

Пример №3
Опять знакомая команда. Вышел первый образец контроллера.

Задача: Необходимо подключить первый образец к, возможно, многокиловатному двигателю

Решение: Из соображений безопасности не стоит горячится, а сперва прогнать пару тестов с использованием модели двигателя на машине реального времени. Это будет чистой воды Plant Simulation или Симуляция Объекта Управления.

Можно и целую модель самолета на машине реального времени запустить. В авиации такой симулятор часто нежно называют «электронная птица».

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

Ниже иллюстрация описывающая суть решения задачи и видео рабочего процесса с PLC Siemens в качестве контроллера, и машины реального времени в качестве объекта управления.

ffa875ef83184eaeb030deeef659e752.png


PLC Siemens + Speedgoat real-time machine

Пример №4
Финальная стадия разработки.

Задача: Необходимо провести 100500 тестов на реальном приводе и задокументировать результаты в кратчайшие сроки.

Решение: Машина реального времени может выступать сердцем испытательного стенда — генерировать тестовые сценарии и вести лог необходимых параметров. В MATLAB можно создать нелинейный сценарий тестирования, который может автоматически перестраиваться в зависимости от полученных результатов. Генератор документации же поможет сформировать отчет в необходимом формате автоматически.

f148813704184d358fef7562f496b92f.png

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

d657a662bdf541a88edacfb4507c8a02.png

Образовательная версия — это неизмеримая радость для любой лаборатории в техническом университете.
Имея такую в лаборатории, можно за фиксированный период дипломирования, например, успеть сделать намного более продвинутый проект.

Машину реального времени от Speedgoat внутри имеет робот Гепард от MIT:

И две таких же я отвез в Набережные Челны на кафедру систем управления филиала КФУ.

У меня есть еще задум более подробно осветить следующие вопросы.
А именно:

  • Генерация кода C/C++/Verilog/VHDL
  • Аппаратное обеспечение, платы ввода вывода
  • Программное окружение, ОСРВ, BIOS
  • Отладка в реальном времени (External mode)


Это должно вылится в следующую статью. Очень хочу выслушать в комментариях вопросы и возможные пожелания.
В августе я планирую провести технический вебинар по данной тематике. Приглашение будет размещено на сайте matlab.ru. Буду крайне рад, если в участниках будут хабраюзеры с интересными вопросами!

Спасибо за прочтение!

© Habrahabr.ru