Проигрывание истории

<< Click to Display Table of Contents >>

Navigation:  API MasterSCADA 4D > Подключение к исполнительной системе по JSON > HTTP API MasterPLC >

Проигрывание истории

Методы этого раздела создают краткоживущую подписку проигрывателя, добавляют в неё архивные параметры, запускают асинхронное чтение диапазона и постранично выдают готовые значения.

Состояние реализации: API содержит незавершённые части. В частности, скорость не управляет временем публикации, обратное чтение через отрицательную скорость не работает, подтверждение пакетов отсутствует, а фоновая очистка преждевременно удаляет подписки. Ограничения подробно описаны у соответствующих методов.

Общий контракт

Все методы вызываются POST-запросом с JSON-объектом в теле.

Для всех методов нужна действующая сессия. В примерах sessionId передаётся в JSON; FastCGI также сначала проверяет CGI-переменную HTTP_SESSION_ID, соответствующую HTTP-заголовку Session-Id.

Прикладной результат возвращается с HTTP-статусом 200, в том числе при ненулевом code.

В отличие от большинства новых обработчиков FastCGI, addins/mplc_database::RequestProcessor не записывает serverTime. Успешные ответы этого раздела содержат корневой code: 0, но не содержат время сервера.

Если обработчик вернул ошибку, общая инфраструктура добавляет числовой code, строковый hex и локализованное codeDescription. Ошибки JSON или сессии, перехваченные раньше в mplc_fcgi, используют errorText. Список кодов приведён в формате запросов и ответов.

Кроме CreatePlayerSubscription, методы требуют положительный существующий subscriptionId. Неизвестный идентификатор даёт OpcUa_BadSubscriptionIdInvalid.

Подписки хранятся в памяти процесса и не привязаны к создавшей их HTTP-сессии. Другая действующая сессия, знающая subscriptionId, может обратиться к ним.

Общие поля ответа:

Поле

Когда присутствует

Описание

subscriptionId

подписка создана или найдена

Идентификатор подписки проигрывателя

code

всегда

Корневой результат; 0 означает успешную обработку вызова

hex

обработчик вернул ошибку

Тот же код в шестнадцатеричном виде

codeDescription

обработчик вернул ошибочный OPC UA status

Локализованное описание кода

errorText

запрос отклонён шлюзом до вызова метода

Текст ошибки JSON, сессии или другого раннего этапа

Фактическая последовательность вызовов:

1.Получить archiveItemId через /Methods/GetArchiveItems.

2.Вызвать CreatePlayerSubscription.

3.Добавить идентификаторы через AddSubscriptionItem.

4.Вызвать RunPlayerSubscription с диапазоном времени.

5.Повторять PlayerPublishData: во время чтения возможен OpcUa_BadWaitingForInitialData; после страницы с areMoreValues: true следующий архивный запрос запускается автоматически.

6.Завершить чтение, когда у всех элементов areMoreValues равно false.

Отдельного метода удаления подписки проигрывателя нет.