|
<< Click to Display Table of Contents >> Navigation: API MasterSCADA 4D > Подключение к исполнительной системе по JSON > HTTP API MasterPLC > Получение данных > /Methods/PublishData |
Возвращает один накопленный пакет изменений. Клиент подтверждает принятый пакет полем ackSequenceNumber и повторяет запрос, пока hasMore не станет равным false.
HTTP: POST /Methods/PublishData
{
"sessionId": 123456789,
"subscriptionId": 1,
"ackSequenceNumber": 0
}
Поле |
Тип |
Обязательное |
По умолчанию |
Описание |
|---|---|---|---|---|
sessionId |
integer |
условно |
— |
Нужен, если сессия не передана заголовком Session-Id |
subscriptionId |
integer |
да |
— |
Идентификатор подписки |
ackSequenceNumber |
integer |
нет |
0 |
Последний полностью обработанный клиентом sequenceNumber; для первого запроса можно оставить 0 |
{
"subscriptionId": 1,
"sequenceNumber": 1,
"recs": [
{
"clientHandle": 101,
"value": 23.5,
"sourceTime": 1710000000000
}
],
"hasMore": false,
"serverTime": 1710000000123,
"code": 0
}
Если новых пакетов нет, поля sequenceNumber и recs отсутствуют:
{
"subscriptionId": 1,
"hasMore": false,
"serverTime": 1710000000123,
"code": 0
}
Поле |
Тип |
Условие |
Описание |
|---|---|---|---|
subscriptionId |
integer |
всегда |
Идентификатор подписки |
sequenceNumber |
integer |
есть пакет |
Номер возвращаемого пакета |
recs |
array |
есть пакет |
Изменения параметров в пакете |
recs[].clientHandle |
integer |
всегда в записи |
Идентификатор, переданный при создании элемента |
recs[].value |
any JSON |
всегда в записи |
Текущее значение параметра; может быть скаляром, массивом или объектом |
recs[].sourceTime |
integer |
запрошен Source |
Время значения, Unix time в миллисекундах |
recs[].statusCode |
integer |
код не равен 0 |
Код качества или ошибки значения |
recs[].type |
integer |
тип не равен 0 |
Вид дополнительного значения шкалы |
hasMore |
boolean |
всегда |
true, если после текущего пакета в очереди есть ещё один |
serverTime |
integer |
всегда |
Время сервера, Unix time в миллисекундах |
code |
integer |
всегда |
Общий результат публикации |
Значения recs[].type:
Значение |
Смысл |
|---|---|
отсутствует |
Основное значение параметра (tData = 0) |
1 |
Hi |
2 |
HiHi |
3 |
Lo |
4 |
LoLo |
9 |
ActiveHiHi |
10 |
ActiveHi |
11 |
ActiveLo |
12 |
ActiveLoLo |
•Перед формированием ответа сервер удаляет из очереди пакеты с номером не больше ackSequenceNumber, затем возвращает первый оставшийся пакет.
•Если не подтвердить полученный sequenceNumber, следующий вызов может вернуть тот же пакет повторно.
•Один вызов возвращает не более одного пакета. Если есть следующий пакет, hasMore равен true.
•Если источник не передал собственное время значения, сервер подставляет текущее время в sourceTime.
•Сессия типа securityUnit не может читать подписку и получает OpcUa_BadUserAccessDenied.
•В текущей C++-реализации ключ sequenceNumber записывается в ответ дважды с одинаковым значением: сначала DataSubscription::PublishData, затем DataPacket::Write. В примере выше показан нормализованный объект с одним ключом; клиент не должен зависеть от наличия дубликата.