# Ignition

Теги и история Ignition прямо в чате

Теги и история Ignition через модуль WebDev и шлюз, только чтение

## Как агент работает с Ignition

Шлюз ставится службой на компьютер в сети объекта и обращается к гейтвею Ignition по HTTP. Значения и история читаются через четыре ресурса WebDev, которые импортируются в один проект: about, tags, values и history. В подключении указывается адрес их папки, логин и пароль учётки, провайдер тегов и, при желании, папка, с которой начинать.

Gateway REST API в Ignition 8.3 настраивает гейтвей, но не отдаёт ни значений тегов, ни истории, а сервер OPC UA в Ignition не поддерживает HistoryRead. Поэтому ресурсы вызывают system.tag.readBlocking и system.historian.queryRawPoints в 8.3 или system.tag.queryTagHistory в 8.1. История читается окнами по 15 минут, так что SQL Historian не перечитывает весь период на каждой странице.

Каждый ресурс отвечает только на GET, и ни один не пишет теги, а учётке подключения права записи не дают. Шлюз не ходит через прокси и не следует переадресациям, чтобы не унести учётку на другой хост. Массивы, DataSet и Document не объявляются: значения, которое переносит шлюз, у них нет.

Шлюз читает архив каждого тега вперёд от места, где остановился, с запасом в минуту, поэтому событие, которое store-and-forward Ignition записал с опозданием, тоже дойдёт. После простоя шлюз дочитывает пропущенное, но не дальше недели назад. Теги без истории читаются по текущему значению с периодом опроса, по умолчанию 10 секунд.

## Сценарии интеграции

### Что сейчас на линии
Агент найдёт теги провайдера по имени или описанию и покажет текущие значения с единицами, временем и качеством.

### Тренд за смену
Агент прочитает историю тега из историана Ignition за смену или неделю и назовёт минимум, максимум, среднее и выходы за диапазон.

### Теги с плохим качеством
Агент найдёт теги с качеством bad или uncertain и покажет код качества Ignition и время, с которого он стоит.

### Сравнение линий
Агент сравнит одинаковые теги разных папок или линий за период и покажет, где значения расходятся.

### Сообщение о пороге
В задаче «По событию» агент сообщит, когда значение тега выйдет за порог и продержится заданное время, и когда вернётся в норму.

### Связь с объектом
Агент скажет, когда шлюз пропал со связи и когда вернулся. Историю за перерыв шлюз дочитает из архива Ignition.

## Как подключить

**Перед подключением**

- Ignition 8.1 или 8.3 с модулем WebDev
- Ресурсы шлюза, импортированные в один проект Ignition
- Учётка источника пользователей без права записи тегов
- Доступ с компьютера шлюза к веб-порту гейтвея (по умолчанию 8088)

### Проверьте модуль WebDev
Шлюз читает Ignition через ресурсы модуля WebDev. Убедитесь, что модуль установлен на гейтвее Ignition 8.1 или 8.3.

### Импортируйте ресурсы в проект
В Designer добавьте библиотеку проекта equipment_gateway и в WebDev папку equipment-gateway с ресурсами about, tags, values, history, у каждого только doGet.

### Заведите учётку без права записи
Включите для ресурсов аутентификацию по источнику пользователей и заведите учётку без права записи тегов. Её логин и пароль впишите в подключение.

### Включите историю нужных тегов
История читается у тегов с включённой History Enabled. Остальные теги шлюз читает по текущему значению.

### Откройте веб-порт гейтвея
Компьютеру шлюза нужен доступ к веб-порту Ignition, по умолчанию 8088. Адрес папки: http://хост:8088/system/webdev/Project/equipment-gateway.

## Частые вопросы

### Как подключить Ignition?
Импортируйте в проект библиотеку equipment_gateway и папку WebDev equipment-gateway с ресурсами about, tags, values и history, включите для неё аутентификацию. Поставьте шлюз в сети объекта, заведите его на вкладке «Шлюзы» и укажите адрес папки вида http://10.0.12.5:8088/system/webdev/Project/equipment-gateway, логин и пароль.

### Что агент видит в Ignition?
Атомарные теги выбранного провайдера и папки с типом, единицами, диапазоном и описанием, их текущие значения с качеством и историю тегов, у которых она включена. Версию Ignition шлюз читает из ресурса about.

### Меняет ли агент значения тегов?
Нет. Ресурсы отвечают только на GET и вызывают только функции чтения тегов и истории, а шлюз не умеет отправлять другие запросы. Учётке подключения права записи тегов не дают.

### Почему у части тегов нет истории?
Шлюз читает архив только у тегов с включённой History Enabled. Остальные он читает по текущему значению, и их история копится из этих опросов. Если историан отклонил запрос истории тега, этот тег тоже переходит на чтение текущего значения.
