Изменения

Перейти к навигации Перейти к поиску

Архитектура: снапшоты, состояния, события

6028 байт добавлено, 04:20, 1 апреля 2020
:'''Индикатор''' - логический объект данных для оборудования. Как правило, связан со структурной единицей (канал, шпиндель, ось и т.д.). Определяет способ хранения данных, а так же способ использование данных в аналитиках.
 
 
Как правило, администратору системы не приходится вручную настраивать снапшоты, состояния, события и индикаторы. Эта настройка происходит полностью автоматически, при добавлении драйвера. Но в некоторых случаях может потребоваться ручное конфигурирование, например, при добавлении чтения данных, которые не учитывает стандартная конфигурация драйвера. Кроме того, понимание концепции снапшотов, состояний и событий поможет при отладке системы и поисков причин неисправностей.
= Снапшоты =
Этот снапшот содержит 4 элемента данных (opMode, machFunc, trialRunActive, singleBlockActive). Так же для снапшота определяется частота чтения и таймаут чтения.
 
Текущее значение данных снапшота можно увидеть в узле [[File:data.png]]:
 
 
[[File:Sinumerik_machineModeSnapshot_data.png]]
= Cостояния =
 
В отличие от снапшотов, которые могут содержать любую информацию, специфичную для реализации конкретных драйверов, состояния содержат структурированные данные, которые может интерпретировать система. Основная функция состояний - привести данные к стандартному формату, структуре и составу.
 
На уровне DPA сервера определены глобальные типы состояний. Они задают "контракт" или "сигнатуру", которую должны обеспечивать состояния, определенные для каждого конкретного драйвера. Например, если на уровне DPA сервера определен тип состояния "Управляющая программа", и в нем содержатся два элемента данных ("Main program" и "Status"), то каждое состояние каждого драйвера, которое возвращает данные по управляющим программам, обязано следовать этим требованиям.
 
 
[[File:stateRelations.png]]
 
 
Для доступа к типам состояний DPA сервера:
 
[[File:SystemMenu.png]] => [[File:MonitoringMenu.png]] => DPAhost \ DPAserver \ Состояния
 
Для доступа к состояниям, сконфигурированным для конкретного драйвера:
 
[[File:SystemMenu.png]] => [[File:MonitoringMenu.png]] => DPAhost \ DPAserver \ Драйвера \ <Драйвер> \ States
 
 
Пример настройки типа состояния "Управляющая программа":
 
 
[[File:ncProgramServerState.png]]
 
 
Пример настройки состояния "NC program" для 1-го канала драйвера:
 
 
[[File:ncProgramDriverState.png]]
 
 
Обратите внимание, поле "Состояние" ссылается на тип состояния "Управляющая программа". Класс устройства и номер устройства определяют привязку к 1-му каналу. Состояние активно.
 
Состояния могут использовать один из двух механизмов формирования данных:
# '''Simple''' - это копирование данных из снапшота или другого состояния.
# '''Script''' - выполнение скрипта для формирования данных состояния.
 
Момент срабатывания состояния определяют триггеры. Возможны следующие варианты:
# Триггер '''Snapshot''' - состояние будет вычисляться при изменении данных в указанном снапшоте.
# Триггер '''State''' - состояние будет вычисляться при изменении данных в указанном состоянии.
# Триггер '''Timer''' - состояние будет вычисляться по таймеру.
 
Если состояние не активно, то срабатывание триггеров не будет приводить к его вычислению.
 
Как и для снапшотов, текущее значение данных состояния можно увидеть в узле [[File:data.png]].
 
= Cобытия =
 
События определяют: когда, какие данные и по какому транспорту должны быть отправлены.
 
Для доступа к событиям, сконфигурированным для конкретного драйвера:
 
[[File:SystemMenu.png]] => [[File:MonitoringMenu.png]] => DPAhost \ DPAserver \ Драйвера \ <Драйвер> \ Events
 
Событие может быть активно, тогда по нему происходит отправка данных. Либо не активно.
 
Так же, как и для состояний, для событий задаются триггеры.
 
Данные для отправки определяются привязкой события. Привязка может быть трех видов:
# '''Snapshot''' - событие отправит данные указанного снапшота.
# '''State''' - событие отправит данные указанного состояния. Это стандартный и рекомендуемый вариант.
# '''Script''' - событие отправит данные, сформированные скриптом.

Навигация