Alpha.Domain.Client | ||||||||||||||||||||||||||||||||
О компоненте Alpha.Domain.ClientAlpha.SDK — это глобальный проект для интеграции с Альфа платформой. Компонент Alpha.Domain.Client, являющийся его частью, имеет реализации на языках C++ и Python (планируется поддержка C и C#). Данное руководство посвящено его использованию в среде Python. Компонент обеспечивает доступ к данным, которые можно разделить по типам и категориям доступа: Типы данных
Категории доступа
Сферы применения
Ключевые концепцииДля эффективного использования Alpha.Domain.Client важно понимать несколько ключевых концепций, лежащих в его основе. Модели взаимодействияБиблиотека предоставляет две модели выполнения операций. Большинство методов для работы с теговой моделью имеют как синхронный, так и асинхронный аналог.
Каналы данных (DataPipe)DataPipe — это унифицированный механизм для получения потоковых данных от сервера. Когда вы запрашиваете набор данных (например, список свойств элемента или результат подписки на изменения), SDK возвращает объект-потомок DataPipe. Данные из канала считываются последовательно с помощью метода fetch_next(timeout). Канал может быть двух типов:
Архитектура клиентского приложенияПонимание взаимодействия компонентов Alpha.Domain.Client поможет эффективно использовать SDK. Клиентское приложение (Python) ↓ Alpha.Domain.Client ↓ TagService ↓ Unit (Пул соединений) ← → Alpha.Server Alpha.Historian
УстановкаШаг 1: Системные требования
Шаг 2: Установка Alpha.Domain.Client1 перейдите на портал технической поддержки (требуется регистрация). Портал поддержки Automiq 2 найдите раздел ComponentSet > Alpha.Domain.Client и скачайте дистрибутив Alpha.Domain.Client-1.1.2+b1.g7c096c73 (x64). 3 запустите установочный файл от имени администратора и следуйте инструкциям мастера установки. 4 по умолчанию компонент устанавливается в: C:\Program Files\Automiq\Alpha.SDK\Alpha.Domain.Client\ Шаг 3: Установка Python-пакета1 скачайте Python 3.6 или выше. При установке обязательно отметьте опцию "Add Python to PATH". Официальный сайт Python 2 в командной строке перейдите в папку с установочным пакетом: cd "C:\Program Files\Automiq\Alpha.SDK\Alpha.Domain.Client\package" 3 установите whl-пакет: python -m pip install alpha_domain_pyclient-1.1.2+b1.g7c096c73-cp36-abi3-win_amd64.whl Видеоинструкция по установкеПосмотрите пошаговый процесс установки и настройки Alpha.Domain.Client. ДокументацияПосле установки компонента Alpha.Domain.Client документация доступна по пути: C:\Program Files\Automiq\Alpha.SDK\Alpha.Domain.Client\doc\
Alpha.Domain.Client: документация Практический примерРазбор реального скрипта для диагностики и выгрузки исторических данных. Конфигурация в Alpha DevStudioВажно: скрипт может работать только с теми элементами (тегами), которые настроены в конфигурации сервера и пролиты на Alpha.Server. 1 Создание проекта в DevStudio
Alpha DevStudio: структура проекта 2 Настройка архивирования (для работы с историей)
Alpha DevStudio: окно настройки архивирования 3 Проливка конфигурации на сервер
Структура скрипта
Поток выполнения
Получение и инициализация элементовПользователь вводит имена тегов, скрипт получает объекты и инициализирует их. requested_items = runtime_node.get_items(item_names) items = [] for item in requested_items: item.init() if item.status_info.item_status == ng.ItemStatus.INITIALIZED: items.append(item) Ключевые моменты:
Чтение текущих значенийИтерация по элементам и запрос их текущего значения (VQT). for item in items: try: vqt = item.get_value() print(f"- {item.name}: {vqt.value}") data_logger.write_data(item.name, vqt.value, vqt.quality) except Exception as e: print(f"X Ошибка: {e}") Тестирование подключения (Runtime)Создание `TagService`, `Unit` и настройка `TcpEndpoint` и `ServerSettings` для подключения к Runtime серверу. service = ng.create_tag_service()
unit = service.create_unit()
endpoint = ng.TcpEndpoint(host, port)
settings = ng.ServerSettings(3000, endpoint)
test_node = unit.create_node_connection(settings, Logger())
test_node.connect()
if test_node.is_connected():
print("Подключение ... успешно!")
test_node.disconnect()
return True
else:
return FalseКлючевые моменты:
Работа с часовыми поясамиКлючевой аспект при работе с историей. Alpha.Server хранит время в UTC. Его необходимо корректно конвертировать в локальное время (MSK) и обратно. def create_alpha_datetime_with_timezone(dt): try: if dt.tzinfo is None: msk_timezone = timezone(timedelta(hours=3)) dt_with_tz = dt.replace(tzinfo=msk_timezone) else: dt_with_tz = dt utc_dt = dt_with_tz.astimezone(timezone.utc) return ng.DateTime(utc_dt.replace(tzinfo=None)) except Exception as e: print(f"Ошибка создания Alpha DateTime: {e}") return ng.DateTime(dt) Ключевые моменты:
Чтение исторических данных (DataPipe)Создание сессии чтения истории и получение данных через `DataPipe` с помощью цикла `fetch_next`. value_reader = history_node.create_value_read_session()
low_bound = ng.HistoryBound(create_alpha_datetime_with_timezone(start_dt), ng.HistoryBoundType.OUTER)
high_bound = ng.HistoryBound(create_alpha_datetime_with_timezone(end_dt), ng.HistoryBoundType.OUTER)
history_pipe = value_reader.read(low_bound, high_bound, True, 10000, item)
count = 0
while not history_pipe.is_over():
status, vqt = history_pipe.fetch_next(5000)
if status == ng.PipeFetchStatus.SUCCESS and vqt:
local_time = convert_alpha_time_to_local(vqt.timestamp)
logger.write_data(
f"HISTORY_{item.name}",
vqt.value,
vqt.quality,
"HISTORY_READ",
"SUCCESS",
local_time.strftime('%Y-%m-%d %H:%M:%S')
)
count += 1
elif status == ng.PipeFetchStatus.DATA_IS_OVER:
print("Чтение истории завершено - достигнут конец данных")
break
elif status == ng.PipeFetchStatus.TIMEOUT_EXCEEDED:
print("Превышен timeout ожидания данных")
breakКлючевые моменты:
Демонстрация работы скриптаПример подключения к альфа серверу и выгрузки данных в .csv. Важные рекомендацииБезопасность и надежность:
Рекомендуемые инструменты разработки:
|


