Добрий день, шановна Аудиторія!
У своїй практиці я часто стикаюся з ситуацією, коли при згадці мною в розмові якоїсь «машини реального часу» в очах співрозмовника проскакує мільйон асоціацій, на жаль, не мають відношення до теми розмови.
У першій статті я хочу трохи пролити світло на дану тему з настільки незвично звучить для російськомовної інженерної аудиторії назвою.
Всіх, хто цікавиться запуском алгоритмів управління та фізичних моделей у вигляді моделей Simulink в режимі жорсткого реального часу з мінімальними затратами - прошу під кат!
Увага, багато зображень!
Отже, коротке визначення:
- Машина реального часу - це комп'ютер, який призначений для виконання широкого спектру завдань в режимі реального часу.
Пояснення до короткого визначенню:
- Широкий спектр завдань тягне за собою деяку універсальність і надмірність в програмної та апаратної складової. Здебільшого такі ПК (промисловий комп'ютер, не плутати з персональним) мають багатий набір засобів введення-виведення у вигляді інтерфейсних плат і драйверів до них.
- Вимога до роботи в реальному часі виливається в те, що даний ПК повинен працювати під управлінням операційної системи реального часу. Є винятки з цього правила, режим вільного рахунки ніхто не відміняв.
Є винятки - бувають складові симулятори з декількох машин, і без плат введення виведення, і не промислового виконання, і в м'якому режимі реального часу. Але, знову ж таки, найчастіше - це IBM сумісний комп'ютер з апаратними та програмними компонентами, що дозволяють йому працювати з жорсткому реальному часі.
У російськомовній літературі і побуті часто зустрічається терміни програмно-апаратний симулятор і напівнатурні моделювання. З моєї точки зору, вони не є повними. Тому як «симуляція моделей» - не єдина функція даного пристрою.
Перелік виробників таких рішень досить великий. Я прийму до розгляду вироби від Speedgoat. з якими мені пощастило досить щільно працювати.
Нижче, на основі прикладів, я постараюся розкрити суть використання таких машин.
Команда інженерів займається розробкою електричного приводу. Є модель в Simulink. в якій підсистему Controller (система управління) розробив інженер по системах управління, а підсистему Plant (модель двигуна) - інженер відділу фізичного моделювання.
Завдання: апаратного прототипу контролера ще немає, і не ясно коли буде. Прототипу двигуна теж немає, або його страшно підключати до поки ще сирий системі управління.
Рішення: Використовувати машину реального часу для швидкого прототипування системи управління. І ще одну машину, але більш продуктивну, для запуску фізичної моделі двигуна в реальному часі. Інтерфейси між такими машинами можуть і повинні бути такими ж, як між реальним двигуном і контролером. Така зв'язка називатися HIL - Hardware-In-The-Loop. По простому - програмно-апаратна симуляція. Вона дозволяє на ранніх стадіях інтегрувати і тестувати алгоритми управління в зв'язці з моделлю об'єкта управління в реальному часі з урахуванням впливу середовища передачі даних між пристроями.
На ілюстрації нижче показано схема такого процесу. Машина реального часу для системи управління може бути в захищеному виконанні для подальшого розміщенні в польових умовах. Машина ж для фізичної моделі необхідна більш продуктивна - зображена праворуч. Перенесення алгоритму і моделі в реальний світ виробляється в один клік мишею і може бути виполемо інженером без допомоги програміста і без глибокого вникання в нюанси ОСРВ.
Все та ж команда. З'явився прототип двигуна, прототип контролера ще тільки в розробці.
Завдання: Необхідно протестувати систему управління на реальному об'єкті управління.
Рішення: Система управління вже відтестувати на моделі двигуна при роботі на ПК. Потім ще більш повно в режимі HIL. Тепер же, коли з'явився реальний прототип - його вже не так страшно запускати. Тому як більшість помилок вже виловлено та необхідно лише затверджувати роботу системи.
Можливий також випадок, коли об'єкт управління був з самого початку. Тоді швидкий перехід від моделі системи керування до працюючого залізницею можна назвати швидке прототипування або Rapid Prototyping.
Знову знайома команда. Вийшов перший зразок контролера.
Завдання: Необхідно підключити перший зразок до, можливо, многокіловатному двигуну
PLC Siemens + Speedgoat real-time machine
Фінальна стадія розробки.
Завдання: Необхідно провести 100500 тестів на реальному приводі і задокументувати результати в найкоротші терміни.
Рішення: Машина реального часу може виступати серцем випробувального стенду - генерувати тестові сценарії і вести лог необхідних параметрів. В MATLAB можна створити нелінійний сценарій тестування, який може автоматично перебудовуватися в залежності від отриманих результатів. Генератор документації же допоможе сформувати звіт в необхідному форматі автоматично.
Як видно з прикладів, одна і та ж машина може бути перевикористати в різних варіантах використання. Але все ж повністю уніфікувати дані пристрої неможливо - є якесь розподіл по функціоналу. Лінійка Speedgoat, наприклад, має такий вигляд:
Освітня версія - це незмірна радість для будь-якої лабораторії в технічному університеті.
Маючи таку в лабораторії, можна за фіксований період дипломування, наприклад, встигнути зробити набагато більш просунутий проект.
Машину реального часу від Speedgoat всередині має робот Гепард від MIT:
І дві таких же я відвіз в Набережні Челни на кафедру систем управління філії КФУ.
У мене є ще задум більш детально висвітлити такі питання.
А саме:
- Генерація коду C / C ++ / Verilog / VHDL
- Апаратне забезпечення, плати введення виведення
- Програмне оточення, ОСРВ, BIOS
- Налагодження в реальному часі (External mode)
Спасибі за прочитання!