Qt разработка для встроенных систем с HMI

Процесс разработки встроенного ПО для HMI становится понятным и быстрым благодаря использованию Qt. Мы готовы поделиться своим опытом применения фреймворка.
Технический директор
Андрей Соловьев
Человеко-машинный интерфейс (HMI) — это общий термин для инженерных решений, обеспечивающих взаимодействие между людьми и машинами, компьютерными системами или приложениями. С помощью фреймворка Qt разработчики могут легко и быстро создавать ПО для HMI, отвечающее самым высоким требованиям. Именно поэтому многие известные компании выбирают Qt для своих проектов.

Платформы для HMI разработки

HMI решения находят свое применение в различных областях: медицине, промышленности, автомобилестроении и повседневной жизни.

Запуск, остановка, мониторинг производственных процессов и оборудования могут осуществляться удаленно, что снижает количество ошибок и сокращает время, необходимое для принятия решений.
Операторы используют HMI для управления производственными линиями.
Человеко-машинные интерфейсы для управления производственной линией
При всем разнообразии форм основная цель всех HMI — обеспечить эффективную связь между людьми и машинами понятным и доступным способом.

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

КЕДР Solutions может стать вашим надежным партнером в HMI разработке, благодаря солидному опыту и знаниям нашей команды специалистов. Обратитесь к нам со своей идеей, и мы создадим решение, отвечающее вашим требованиям.

Чем сложнее задачи, стоящие перед HMI, тем сложнее его структура. Сложные пользовательские интерфейсы становятся неотъемлемой частью производственного оборудования.

Краеугольным камнем дизайна HMI является портативность и простота использования.

Кроссплатформенные фреймворки и наборы GUI инструментов позволяют разработчикам создавать интуитивно понятные пользовательские интерфейсы для программного обеспечения любой сложности.

Многие кроссплатформенные фреймворки, такие как .Net, GTK, Xamarin, JUCE и Flutter, имеют инструменты, которые можно успешно использовать для разработки ПО для HMI.
Кроссплатформенные GUI фреймворки, которые могут применяться для разработки программного обеспечения для HMI.
Кроссплатформенные инструменты для создания пользовательских интерфейсов
Некоторые фреймворки предназначены для создания приложений в определенной области. Например, существуют специализированные наборы инструментов для автомобильного производства.

Так, Kanzi, программная среда для автомобильной промышленности, предлагает инструменты проектирования и разработки HMI для создания передовых многоэкранных пользовательских интерфейсов с поддержкой нескольких ОС.

Siemens предлагает широкий спектр HMI продуктов SIMATIC, от конфигурационного ПО до систем SCADA и программного обеспечения для визуализации процессов.

SIMATIC WinCC предлагает различные варианты программного обеспечения в зависимости от сложности продукта: Basic, Comfort и Advanced. WinCC-Advanced доступен как среда исполнения с возможностью дополнительных опций.

Фреймворк Qt для создания HMI приложений

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

В нашей предыдущей статье мы рассказали о преимуществах фреймворка Qt и C++ для создания кроссплатформенных приложений для встраиваемых систем. HMI тесно связаны со встроенными системами, и Qt активно используется для разработки программного обеспечения HMI.

Преимущества Qt
Преимущества Qt для HMI разработки
Qt имеет есть неоспоримые преимущества для разработки HMI для встраиваемых систем:

  • Варианты лицензирования

Доступны как открытые, так и коммерческие лицензии. Чтобы получить все юридические и функциональные преимущества фреймворка для создания устройств, вам потребуется коммерческая лицензия от The Qt Company.

Но если проект соответствует условиям лицензий LGPL v3 и LGPL v2.1, SDK можно создавать с открытым исходным кодом.

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

  • Высокоэффективная разработка пользовательского интерфейса

Qt — один из лучших и проверенных временем наборов инструментов для создания кроссплатформенных пользовательских интерфейсов. У Qt почти нет неудобных или недоработанных инструментов по сравнению с другими графическими платформами.

  • Кроссплатформенные возможности

Фреймворк поддерживает различные десктопные, мобильные и встроенные платформы.

  • Быстрое и простое прототипирование

Qt позволяет инженерам быстро превращать идеи в интерактивные прототипы. Структура кода легко встраивается в логику программы.

  • Подробная документация и большое сообщество

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

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

  • Обратная связь

The Qt Company ведет постоянный диалог с пользователями, улучшая доступность и удобство фреймворка. В феврале 2022 года компания упростила и оптимизировала коммерческое лицензирование, сделав систему еще более удобной для бизнеса.

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

  • Разработка трехмерного UI

Qt 3D Studio предлагает систему разработки 3D пользовательского интерфейса, востребованную как разработчиками ПО, так и графическими дизайнерами. Qt разработчики могут использовать архитектуру с открытым исходным кодом. Платформа содержит готовые UI библиотеки и позволяет дизайнерам создавать встроенные системы с 2D и 3D пользовательскими интерфейсами.

Фреймворк Qt поддерживает декларативный язык QML, основанный на JavaScript. QML обеспечивает отличный пользовательский интерфейс с богатой графикой.

QML позволяет дизайнерам и разработчикам создавать, развертывать и дополнять графические интерфейсы с помощью простого синтаксиса на основе JSON формата и преобразовывать дизайн в HMI.

Элементы пользовательского интерфейса, написанные на QML, интегрируются с логикой, написанной на JavaScript и C++. QML помогает специалистам реализовать проект и сразу протестировать его на целевом оборудовании.

Вот почему разработка HMI с использованием Qt обеспечивает значительные преимущества с точки зрения времени выхода на рынок.

Но есть и ложка дегтя. При рассмотрении вопроса об использовании Qt для создания HMI приложений для панелей промышленной или бытовой автоматизации команда должна учитывать производительность процессора.

Пользовательский интерфейс библиотеки Qt требует производительности около 100 DMIPS (Dhrystone MIPS). Выбранный микропроцессор должен иметь достаточную вычислительную мощность для управления экраном с высоким разрешением и быстрой обработки графики.

Qt для HMI разработки в автомобилестроении

В автомобильной промышленности укрепляется тренд на унификацию и консолидацию. Индустрия автомобильного ПО следует этим тенденциям. HMI инструменты должны быть кроссплатформенными и совместимыми с мультибрендовыми продуктами.

Qt успешно используется для создания автомобильных HMI-решений.

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

Qt упрощает процесс создания HMI для команды разработчиков за счет простоты и скорости создания приложений с богатым графическим интерфейсом, интернационализацией и кроссплатформенной поддержкой.

Такие гиганты автомобилестроения, как Mercedes-Benz, Hyundai, Citroen, DS, Opel и Peugeot объявили об использовании платформы Qt для создания автомобильных человеко-машинных интерфейсов.
Qt служит для создания ПО для систем IVI.
Одной из областей применения Qt является разработка автомобильных информационно-развлекательных систем.
Qt является технологическим партнером Hyundai Motor Group по созданию ПО для HMI для всех автомобилей Hyundai, Kia и Genesis.

Фреймворк Qt был выбран компанией Hyundai для разработки ПО для автомобильной информационно-развлекательной (IVI) системы.

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

Используя единую кодовую базу, Qt позволяет автомобилестроительной компании создавать сложные технологические решения для удовлетворения требований в различных областях, таких как IVI и кластер/HUD. Hyundai Motor Group использует Qt Design Studio для ускорения процесса разработки HMI от прототипа до развертывания.

Роль ПО в автомобильной промышленности будет только возрастать. Предлагая современные масштабируемые кроссплатформенные решения, фреймворк Qt становится лидером в HMI разработке в сегменте ПО для автомобильных систем.

Платформа разработки программного обеспечения Qt используется такими крупными транснациональными компаниями, как LG Electronics, Bosch и Rockwell Automation.

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

Инструменты Qt для встраиваемых систем с HMI

Qt предлагает библиотеки Qt widgets и Qt Quick для создания пользовательского интерфейса.

У Qt widgets достаточно много элементов, косвенно зависящих от платформы, на которой запускается приложение. Qt Quick лишен этого недостатка.

Qt Quick — это библиотека, позволяющая создавать пользовательские интерфейсы с использованием языка QML. QML предоставляет очень удобный способ разработки пользовательских интерфейсов для сенсорных дисплеев.

Qt Quick поставляется с поддержкой жестов, а Qt Widgets — нет. Qt Quick позволяет быстро разрабатывать приложения для мобильных устройств, при этом логика по-прежнему может быть написана с использованием собственного кода для достижения максимальной производительности.
Снимок экрана библиотеки Qt Quick
Скриншот Qt Quick модуля
Благодаря модулю Qt SDK разработчикам приложений доступны API для мультимедиа, Интернета, навигации и т.д. Эти API служат для упрощения и ускорения разработки человеко-машинных интерфейсов.

Qt SDK объединяет программные компоненты и модули Qt, обеспечивая плавный процесс разработки приложений для встраиваемых систем.

Нужно выбрать необходимые модули для создания пользовательского Qt SDK и подключить их к кроссплатформенной среде Qt Creator, которая автоматически его идентифицирует. Для начала работы с Qt SDK необходим один установочный пакет.

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

Qt Designer, один из инструментов Qt Creator, используется для создания макета дизайна интерфейса. Код C++, сгенерированный Qt Designer, интегрируется в приложение.

Наш опыт Qt разработки для HMI

Мы увлечены своим делом и используем новейшие подходы и решения для достижения результата с наименьшими затратами.

КЕДР Solutions давно выбрала Qt для разработки ПО. Мы накопили достаточно опыта, чтобы поделиться своим мнением о возможностях этого фреймворка, в том числе в области разработки приложений HMI.

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

Мы занимаемся созданием встроенного программного обеспечения Qt, в том числе комплексных систем автоматизации, поддерживающих HMI.

Приведем в качестве примера Qt разработки полнофункционального человеко-машинного интерфейса нашу масштабную работу по внедрению системы управления аккумуляторами (BMS) для сложного промышленного решения.

Мы начали крупный проект по разработке ПО для BMS с разработки полноэкранного приложения для цветной сенсорной панели с разрешением экрана 1920x1080 для отображения состояния BMS.

BMS имеет многоуровневую структуру, состоящую из ячеек (аккумуляторов), объединенных в модули. Модули, в свою очередь, объединяются в аккумуляторные цепи.

Для каждого уровня предусмотрены экраны (главный экран, экран аккумуляторных цепей и экран модуля) для отображения соответствующей информации.

Есть также экраны для отображения системных извещений, параметров управления (экран управления), версий прошивки и компонентов системы (экран «О программе»).

Вторая задача состояла в реализации сенсорного приложения для тестирования готового модуля BMS. Приложение должно работать на специально подготовленном компьютере. Результаты теста выгружаются в отдельный JSON-файл.

На экране настроек задаются предельные значения, например, максимальное и минимальное напряжение элемента и т.п.
HMI приложение для BMS
Экран HMI системы управления аккумуляторами
Используя Qt Creator и работая с C++ и QML, наши Qt разработчики создали интуитивно понятные приложения с настраиваемыми интерфейсами. Приложения HMI были написаны с нуля.

Мы использовали подробную документацию базы данных Qt и легко настроили необходимые компоненты – кнопки, выпадающие меню, поля ввода, флажки и т. д.

Дополнительные кнопки и другие недостающие компоненты были созданы с нуля.

Помощь Qt сообщества позволила решить небольшие сложности, возникшие при разработке приложений.

Например, в длинном списке параметров, которые можно редактировать и сохранять, при прокрутке вновь введенные данные сбрасывались на сохраненные в модели C++. Настройка кэширования виджета (ListView) позволила решить проблему.

Как и у любого универсального инструмента, у Qt есть свои слабые места по сравнению с узконаправленными нативными фреймворками.

Хотя Qt предоставляет гибкие возможности для создания анимации в несколько строчек кода, при GUI разработке в Qt возникают определенные трудности.

Сложная анимация, постоянно присутствующая на экране, может потреблять много ресурсов процессора. Говоря о Raspberry Pi, потребление может достигать 100%. HMI экран просто перегреется.

Оптимизация анимации в Qt непрозрачна. Она основана на Open GL библиотеке без оптимизации на шейдерах, так как не все видеокарты их поддерживают.

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

Для того чтобы сделать анимацию без шейдеров, нужно задействовать гораздо больше ресурсов.

Сложная нативная анимация будет визуально выглядеть лучше, чем Qt анимация, и потреблять меньше ресурсов.

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

В то же время Qt дает гибкость в выборе стиля и вариантов, а также исключает необходимость большой работы по переделке внутри системы.

В одном из наших проектов реализация HMI части состояла, кроме всего прочего, в создании таблицы с индивидуальным визуальным оформлением и функционалом.

Для создания таблиц фреймворк Qt предлагает только общие компоненты, которые реализуют функционал на простейшем уровне — массив текста со стандартным шрифтом, набором столбцов и строк фиксированного размера без выравнивания.

Для пользовательского оформления необходимо вручную достраивать элементы таблицы.

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

Для построения таблицы с заданными параметрами мы использовали следующие классы:

  • Классы-контроллеры, позволяющие по заданной модели отображать таблицу в нужном виде. Был реализован класс-контроллер для построения таблицы с ее стилистикой. Компонент Qt обращается к данной модели за получением команд и конфигурации для таблицы.
  • Классы-контроллеры, позволяющие фильтровать данные с возможностью сортировки таблицы в реальном времени.
  • Классы-контроллеры, с помощью которых указывались параметры столбцов и строк, их участие в сортировке/поиске в таблице.
  • Классы-контроллеры, которые позволили таблице подстраиваться под экран HMI.

Огромным преимуществом Qt является то, что он дает возможность написать удобный код, который может быть использован где угодно.

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

Заключение

Человеко-машинные интерфейсы бывают разными — от небольших панелей с базовыми функциями до сложных сред с мультимедийными и сетевыми возможностями.

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

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

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

Различные GUI инструменты могут помочь в создании программного обеспечения HMI.

Многолетний и успешный опыт использования Qt позволяет КЕДР Solutions считать этот фреймворк наиболее удобным набором инструментов для разработки HMI приложений.

Мы используем фреймворк Qt для создания многофункциональных и удобных человеко-машинных интерфейсов разного уровня сложности. Наша экспертная помощь в разработке встроенных приложений всегда в вашем распоряжении.
Другие статьи