Alpha.HMI 2.0 — это среда разработки и исполнения человеко-машинного интерфейса (HMI/SCADA), разработанная АО «Атомик Софт» для создания мнемосхем и панелей визуализации промышленных процессов — от энергетических объектов до нефтеперерабатывающих заводов. Система поддерживает Windows и Linux, включая российские дистрибутивы, и доступна во всех редакциях платформы.
Два режима работы
Alpha.HMI построена по принципу разделения процессов разработки и исполнения проектов:
Система скриптинга
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 для обеспечения:
- Авторизации пользователей — контроль доступа к функциям
- Управления правами — гранулярные разрешения
- Аудита действий — журналирование операций
Утилита alpha.hmi.cli обеспечивает автоматизацию процессов компиляции и выгрузки метаинформации проектов.
Alpha.HMI 2.0 представляет собой мощную платформу для создания современных человеко-машинных интерфейсов с поддержкой передовых технологий визуализации и богатыми возможностями интеграции с промышленными системами.