Skip to main content

Архитектура платформы

Уровни системы

Архитектура Стрикс соответствует модели Purdue (ISA-95) и включает четыре функциональных уровня.

┌─────────────────────────────────────────────────────────┐
│ L3 Бизнес-системы │
│ ЛиманИСУ ТОРО │ ERP │ Odoo │ 1С │
├─────────────────────────────────────────────────────────┤
│ L2 Платформа Стрикс │
│ BaSyx AAS │ ClickHouse │ Keycloak │ Сервисы │
│ Монитор │ Диагност │ APC │ API Gateway │
├─────────────────────────────────────────────────────────┤
│ L1 Edge-контроллеры │
│ Larus-10 (IEC 61499) │ Larus-100 │ PLC │
├─────────────────────────────────────────────────────────┤
│ L0 Датчики и исполнительные механизмы │
│ Passer V (вибрация) │ Passer T (температура) │
│ Токовые датчики │ Расходомеры │ Приводы │
└─────────────────────────────────────────────────────────┘

L0 — Полевой уровень

Датчики и исполнительные механизмы, установленные непосредственно на оборудовании. Платформа поддерживает работу с датчиками серии Passer (вибрация, температура, ток), а также со сторонними устройствами по протоколам Modbus TCP, 4-20 мА (через модули ввода-вывода Larus) и BACnet/IP.

L1 — Edge-уровень

Edge-контроллеры Larus-10 и Larus-100 выполняют локальный сбор, предобработку и буферизацию данных. Контроллеры работают на базе стандарта IEC 61499 (распределённые функциональные блоки) и передают данные на платформенный уровень по MQTT. При потере связи с сервером данные буферизуются локально и досылаются после восстановления соединения.

L2 — Платформенный уровень

Ядро системы: BaSyx AAS Environment (модель данных), ClickHouse (история телеметрии), вычислительные сервисы (OEE, аварии, диагностика, APC), веб-интерфейс оператора. Все компоненты развёрнуты в Docker-контейнерах и взаимодействуют через REST API и MQTT.

L3 — Бизнес-уровень

Интеграция с системами управления техническим обслуживанием (ЛиманИСУ ТОРО), ERP, складским учётом. Данные из Стрикс доступны через REST API и могут использоваться для автоматического формирования заявок на ремонт, учёта наработки и планирования закупок запасных частей.

Модель данных AAS

В основе модели данных лежит стандарт IEC 63278 Asset Administration Shell (AAS) — цифровой паспорт оборудования, содержащий все сведения об активе: идентификацию, технические характеристики, телеметрию, историю обслуживания.

Иерархия оборудования

Стрикс использует четырёхуровневую иерархию:

Предприятие (facility)
└── Участок (area)
└── Группа оборудования (equipmentGroup)
└── Единица оборудования (equipment)

Связи «родитель — потомок» задаются через атрибут parentId в specificAssetIds каждой оболочки. Уровень area является семантически гибким: на одном предприятии это может быть технологический участок (измельчение, флотация), на другом — подзавод или производственный корпус.

IRI-идентификация

Каждый объект в системе имеет глобально уникальный идентификатор в формате IRI:

Оболочка:  https://company.com/site/aas/equipment/pump-001
Субмодель: https://company.com/site/sm/pump-001/operational-data
Актив: https://company.com/site/asset/pump-001

Пространство имён (namespace) определяет принадлежность к проекту. Все представления во фронтенде фильтруются по активному namespace, что обеспечивает мультипроектность в рамках одного экземпляра BaSyx.

Субмодели

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

СубмодельСтандартНазначение
NameplateIDTA 02006Идентификация: серийный номер, производитель, год выпуска
TechnicalDataIDTA 02003Технические характеристики: мощность, масса, габариты
OperationalDataТекущие значения телеметрии (температура, вибрация, ток)
TelemetryConfigLimanКонфигурация сбора: период, агрегация, фильтры, список параметров
OEEISO 22400-2Рассчитанные показатели эффективности (доступность, производительность, качество)
AlarmHistoryЖурнал аварийных событий с метками времени
TimeSeriesIDTA 02008Ссылки на исторические данные (ClickHouse, S3 Parquet)
InterfaceMappingIDTA 02027Маппинг источников данных (MQTT topic, OPC UA nodeId)
Субмодели уровня проекта

На оболочке предприятия (facility) размещаются проектные субмодели: ProjectInfo (метаданные проекта, контакты, ссылки на внешние системы) и StoragePolicy (политика хранения телеметрии, квоты, переопределения по группам).

Каскад конфигурации

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

StoragePolicy (предприятие) → значения по умолчанию для всего проекта
└── Overrides[].MatchEquipmentType → переопределение для группы оборудования
└── TelemetryConfig (единица) → переопределение для конкретного оборудования
└── Parameters[].Period → переопределение для отдельного параметра

Топология деплоя

Все компоненты платформы развёрнуты в Docker-контейнерах на одном или нескольких серверах. Типовая схема деплоя:

Интернет → Keycloak (OIDC) → nginx reverse proxy (:3003)

┌──────────┴──────────────┐
│ Strix UI (SPA) │
│ │
│ /basyx-api/ → BaSyx │ AAS Environment (:8081)
│ /ch-api/ → ClickHouse │ ClickHouse HTTP (:8123)
│ /ws/mqtt → Mosquitto │ WebSocket (:9001)
│ /auth/ → Keycloak │ Keycloak (:8180)
│ /s3-api/ → MinIO │ S3 API (:9011)
└─────────────────────────┘

Вычислительные сервисы (Docker Compose):
┌──────────┬──────────┬──────────┬──────────┐
│ OEE │ Energy │ Alarms │ Runtime │
│ MTBF │ Monitor │ Emulator │ DataQual │
│ APC-Sim │ APC-Ctrl │ tel-writ │ ret-clean│
└──────────┴──────────┴──────────┴──────────┘
│ │ │
▼ ▼ ▼
BaSyx REST ClickHouse Mosquitto
(:8081) (:9000) (:1883)

Инфраструктура (standalone-контейнеры):
┌────────────────┬────────────────┬────────────────┐
│ BaSyx AAS Env │ MongoDB 7 │ Mosquitto │
│ AAS Registry │ ClickHouse │ MinIO │
│ AAS Discovery │ │ Keycloak │
└────────────────┴────────────────┴────────────────┘
Разделение инфраструктуры и сервисов

Инфраструктурные контейнеры (BaSyx, MongoDB, ClickHouse, Mosquitto) управляются отдельно от прикладных сервисов. Это позволяет обновлять вычислительные сервисы без остановки хранилища данных.

Поток данных

Описание потока

  1. Сбор данных. Датчики Passer передают аналоговые сигналы на edge-контроллеры Larus. Контроллеры оцифровывают, фильтруют и публикуют данные в MQTT-брокер.

  2. Запись в BaSyx. Сервис data-bridge подписывается на MQTT-топики и обновляет значения в субмодели OperationalData соответствующего оборудования. Маппинг «топик — свойство» задаётся через субмодель InterfaceMapping (IDTA 02027).

  3. Запись в ClickHouse. Параллельно сервис telemetry-writer буферизует сообщения и записывает их в таблицу telemetry_raw. Материализованные представления автоматически агрегируют данные в telemetry_1min и telemetry_1hour.

  4. Вычислительные сервисы. Каждый сервис (OEE, Alarms, Energy, Runtime, MTBF) периодически читает данные из BaSyx, выполняет расчёт и записывает результат обратно в BaSyx. Сервисы не имеют собственных баз данных — BaSyx является единственным источником истины.

  5. Визуализация. Веб-интерфейс отображает текущие значения из BaSyx (через REST API) и исторические графики из ClickHouse (через HTTP-интерфейс).

  6. Управление. Модуль APC читает текущее состояние процесса из BaSyx, рассчитывает оптимальные уставки и передаёт их на edge-контроллеры через MQTT.

Сервисная архитектура

Все вычислительные сервисы следуют единому архитектурному паттерну:

  • Без собственной базы данных — BaSyx AAS является единственным хранилищем состояния
  • Конфигурация в субмоделях — параметры расчёта хранятся в SMC (SubmodelElementCollection), а не в переменных окружения
  • Одна оболочка = все субмодели — результат сервиса записывается в ту же оболочку, что и входные данные
  • Идемпотентность — сервис можно перезапустить в любой момент без потери консистентности
  • Upsert-паттерн — POST для создания, PUT при конфликте (409), PATCH не поддерживается
СервисВходная субмодельВыходная субмодельПериод
oeeOperationalData + OperationalModesOEE60 с
energyOperationalDataEnergyConsumption60 с
alarmsOperationalDataAlarmHistory30 с
runtimeOEE (CurrentMode)Runtime60 с
mtbfRuntime + AlarmHistoryMTBF300 с
monitorвсе сервисыSystemHealth30 с
data-qualityOperationalDataDataQuality60 с
telemetry-writerTelemetryConfig + MQTTClickHouse5 с (flush)
retention-cleanupStoragePolicyClickHouse DELETE3600 с
emulatorEmulationConfigMQTT1 с

Подробнее о каждом сервисе: Каталог сервисов

Безопасность

Аутентификация и авторизация

Платформа использует Keycloak в качестве провайдера идентификации (IdP) с протоколом OpenID Connect (OIDC).

Ролевая модель (realm roles):

РольПрава
platform-adminПолный доступ ко всем проектам и настройкам платформы
project-editorРедактирование оборудования, субмоделей и конфигурации в рамках назначенных проектов
project-viewerПросмотр данных мониторинга и отчётов без возможности изменения

Защита API

  • Веб-интерфейс: OIDC-токены Keycloak, проверяемые на уровне API Gateway (FastAPI)
  • Межсервисное взаимодействие: заголовок X-API-Key для аутентификации вычислительных сервисов при обращении к BaSyx REST API
  • Внешний доступ: Authentik reverse proxy на входе, TLS-терминация, rate limiting
Соответствие 187-ФЗ

Архитектура предусматривает сегментацию сети между уровнями L0-L1 (полевая сеть) и L2-L3 (корпоративная сеть). Edge-контроллеры Larus работают в изолированном сегменте и инициируют исходящие соединения к MQTT-брокеру. Входящие соединения из корпоративной сети на полевой уровень запрещены.

Далее