Alpha.HMI 2.0 — это среда разработки и исполнения человеко-машинного интерфейса (HMI/SCADA), разработанная АО «Атомик Софт» для создания мнемосхем и панелей визуализации промышленных процессов — от энергетических объектов до нефтеперерабатывающих заводов. Система поддерживает Windows и Linux, включая российские дистрибутивы, и доступна во всех редакциях платформы.

Два режима работы

Alpha.HMI построена по принципу разделения процессов разработки и исполнения проектов:

🛠️ Designer (Дизайнер)
Интегрированная среда разработки (IDE) для создания мнемосхем, настройки компонентов и программирования логики управления.
🖥️ Visualizer (Визуализатор)
Среда исполнения проектов для отображения данных в реальном времени и обеспечения взаимодействия оператора с системой. Исторические данные для графиков поставляет Alpha.Historian.

Система скриптинга

Alpha.HMI поддерживает два языка программирования для создания интерактивной логики:

Alpha.Om

Специализированный язык для промышленной автоматизации с поддержкой относительной адресации объектов:

  • me/this — ссылка на текущий объект
  • parent — обращение к родительскому элементу
  • here — ссылка на текущую форму
// Пример скрипта Alpha.Om для управления насосом
procedure OnPumpStart() {
  // Проверка условий запуска
  if (me.signals.PressureOK.Value && !parent.MaintenanceMode.Value) {
    me.commands.StartPump.Execute();
    here.statusIndicator.SetText("Насос запущен");
    here.statusIndicator.SetColor("#1de9b6");
  } else {
    here.alarmPanel.ShowMessage("Запуск невозможен: проверьте условия");
  }
}

JavaScript

Стандартный JavaScript для сложной бизнес-логики и интеграции с внешними системами. Поддерживается вызов пользовательских функций с аргументами и обращение к внешним функциям из DLL/SO.

Гибкость программирования

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

Экранные формы и навигация

Система форм Alpha.HMI обеспечивает структурированную организацию интерфейса:

Структура проекта

  • Папки — группировка форм по функциональному назначению
  • Главная форма — точка входа в приложение
  • Размеры форм — ручная настройка или автоподбор

Фреймы

Фреймы — это формы внутри форм с поддержкой масштабирования (подробнее в статье о фреймах и постерах Alpha.HMI). Они позволяют создавать модульную архитектуру интерфейса и переиспользовать компоненты.

Навигация

  • Открытие по UUID — уникальная идентификация форм
  • Межоконное взаимодействие — SendToAll(), SendMessageByID()
// Пример навигации между формами
function openTankForm(tankId) {
  var formUUID = "tank-detail-" + tankId;
  here.NavigateToForm(formUUID, {
    tankId: tankId,
    mode: "monitoring"
  });
}

Графические компоненты

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

Примитивы

Прямоугольник
Базовая геометрическая фигура
Эллипс
Круги и овалы
Линия
Прямые соединения
Кривая
Сложные траектории

UI-элементы

Кнопка
Элементы управления
Флажок
Логические значения
Ползунок
Аналоговые значения
Список
Выбор из вариантов
Прогресс-бар
Отображение процентов
Гистограмма
Индикаторы уровней

Эффекты и анимация

  • Градиенты — линейные и радиальные переходы цветов
  • Мигание — привлечение внимания к критическим элементам
  • Звуковые уведомления — аудиосигналы событий
  • Таймеры — периодическое выполнение действий

Типизация и ООП

Alpha.HMI поддерживает концепции объектно-ориентированного программирования:

Пользовательские типы

Создание собственных типов компонентов (аналог классов) с возможностью создания экземпляров с индивидуальными свойствами.

Параметры инициализации

Передача начальных значений при создании экземпляров объектов.

Глобальные объекты

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

Типы данных

Поддерживаются типы: bool, int1-int8, uint1-uint8, float, double, string, timestamp, variant с возможностью создания массивов.

Источники данных

Alpha.HMI поддерживает различные способы подключения к источникам данных:

OPC DA (только Windows)

  • Источник OPC — подключение к OPC-серверу
  • Элемент OPC <T> — типизированные элементы данных

TCP (кроссплатформенно)

  • Источник AP — подключение к AccessPoint (порт 4388, история 4950)
  • Элемент AP <T> — типизированные элементы
  • Учётные данные AP — авторизация с хэшированием паролей
  • Запрос алармов — оперативные и исторические тревоги (20+ полей)
  • Браузер источника AP — навигация по дереву сигналов

SQL-источники

Подключение к реляционным БД через ODBC:

  • PostgreSQL — открытая СУБД
  • MySQL — популярная СУБД
  • MS SQL Server — корпоративная СУБД Microsoft
  • Oracle — промышленная СУБД
// Пример SQL-запроса
SELECT 
  equipment_id,
  temperature,
  pressure,
  timestamp
FROM sensor_data 
WHERE timestamp > NOW() - INTERVAL '1 hour'
ORDER BY timestamp DESC;

Графики и тренды

Встроенная библиотека alpha.hmi.charts обеспечивает мощные возможности визуализации данных:

  • Поле графика — настраиваемая область отображения
  • Оси координат — автомасштабирование и ручная настройка
  • Линии данных — множественные ряды с индивидуальным стилем
  • Реперные линии — установка границ и уставок
  • Оперативные данные — отображение в реальном времени
  • Исторические данные — анализ трендов

Таблицы и деревья

Библиотека alpha.hmi.tables

  • Модель данных — структурированное представление
  • Столбцы — настраиваемые колонки с типизацией
  • Декораторы — форматирование отображения
  • Итераторы — навигация по данным

Компонент «Дерево»

  • Источник данных — привязка к внешним источникам
  • Колонки — многоколоночные деревья
  • Заполнение — из источника, скриптом, автогенерация

Интеграция и расширения

WebViewer

Развёртывание проектов как веб-приложений с поддержкой:

  • IIS, Apache, Nginx — популярные веб-серверы
  • WebSocket — двусторонняя связь в реальном времени
  • SSL — защищённые соединения
  • Восстановление сессий — при разрыве соединения

Встраиваемые компоненты

  • Alpha.HMI.Alarms — система тревог (кроссплатформенная: Windows, Linux, веб)
  • alpha.hmi.charts — встроенные графики трендов в Alpha.HMI
  • .NET библиотеки — интеграция с .NET-компонентами
  • Qt-плагины — собственные расширения (CMake + Qt 5.15.2)

Безопасность и управление

Alpha.HMI интегрируется с подсистемой Alpha.Security для обеспечения:

  • Авторизации пользователей — контроль доступа к функциям
  • Управления правами — гранулярные разрешения
  • Аудита действий — журналирование операций
CLI и автоматизация

Утилита alpha.hmi.cli обеспечивает автоматизацию процессов компиляции и выгрузки метаинформации проектов.

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