|
<< 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.
Отдельного метода удаления подписки проигрывателя нет.