|
<< Click to Display Table of Contents >> Navigation: API MasterSCADA 4D > Подключение к исполнительной системе по JSON > HTTP API MasterPLC > Получение данных > /Methods/CreateMonitoredDataItems |
Добавляет один или несколько параметров в существующую подписку. Клиент сопоставляет ответы и последующие значения по собственному clientHandle; сервер дополнительно назначает каждому параметру monitoredItemId.
HTTP: POST /Methods/CreateMonitoredDataItems
{
"sessionId": 123456789,
"subscriptionId": 1,
"items": [
{
"clientHandle": 101,
"taskId": 0,
"itemId": 28012,
"path": "",
"timestampsToReturn": "Source",
"queueSize": 1,
"withScaleParams": false,
"withScaleActive": false
}
]
}
Поле |
Тип |
Обязательное |
По умолчанию |
Описание |
|---|---|---|---|---|
sessionId |
integer |
условно |
— |
Нужен, если сессия не передана заголовком Session-Id |
subscriptionId |
integer |
да |
— |
Идентификатор подписки |
items |
array |
да |
— |
Массив добавляемых параметров |
items[].clientHandle |
integer |
рекомендуется |
0 |
Идентификатор параметра на стороне клиента; возвращается в PublishData |
items[].itemId |
integer |
условно |
0 |
Идентификатор узла из VMInfo; для полного Lua-пути задаётся 0 |
items[].path |
string |
условно |
"" |
Путь внутри составного параметра; при itemId: 0 — полный путь в проекте по UTF8 именам |
items[].taskId |
integer |
условно |
0 |
Индекс Lua-задачи; для известного itemId обычно определяется сервером |
items[].timestampsToReturn |
string |
нет |
"" |
Значение "Source" без учёта регистра включает поле sourceTime; остальные значения эквивалентны Neither |
items[].queueSize |
integer |
нет |
1 |
Режим накопления изменений; фактическая семантика описана ниже |
items[].withScaleParams |
boolean |
нет |
false |
Подписаться также на активные числовые пороги Hi, HiHi, Lo, LoLo |
items[].withScaleActive |
boolean |
нет |
false |
Вместе с порогами подписаться на ActiveHiHi, ActiveHi, ActiveLo, ActiveLoLo |
items[].type |
string |
нет |
"" |
Устаревшее поле: текущая реализация читает его, но не использует |
items[].typeHash |
integer |
нет |
— |
Устаревшее поле: текущая реализация его не читает |
Для адресации по полному пути используется path с UTF-8 именами и itemId == 0:
{
"clientHandle": 102,
"taskId": 0,
"itemId": 0,
"path": "Объекты.Шкала.ActiveHiHi",
"queueSize": 1
}
{
"subscriptionId": 1,
"items": [
{
"clientHandle": 101,
"statusCode": 0,
"monitoredItemId": 1
}
],
"serverTime": 1710000000123,
"code": 0
}
Поле |
Тип |
Описание |
|---|---|---|
subscriptionId |
integer |
Идентификатор подписки |
items |
array |
Результаты добавления в порядке элементов запроса |
items[].clientHandle |
integer |
Идентификатор клиента; может отсутствовать, если проверка прав завершилась до создания элемента |
items[].statusCode |
integer |
Результат добавления конкретного параметра |
items[].monitoredItemId |
integer |
Серверный идентификатор элемента; присутствует только при statusCode: 0 |
serverTime |
integer |
Время сервера, Unix time в миллисекундах |
code |
integer |
Общий результат метода; ошибки отдельных элементов не обязаны менять его с 0 |
•Если items не является массивом, метод возвращает общую ошибку OpcUa_BadRequestTypeInvalid.
•Неизвестный адрес параметра даёт OpcUa_BadNodeIdUnknown в items[].statusCode.
•Недостаток прав на чтение даёт код отказа в items[].statusCode.
•Сессия типа securityUnit не может создавать контролируемые элементы и получает OpcUa_BadUserAccessDenied.
•При queueSize: 1 в ещё не отправленном пакете хранится последнее значение параметра. В текущей реализации любое другое значение, включая 0 и числа больше 1, включает накопление всех изменений; числовой предел queueSize пока не применяется.
•withScaleActive имеет эффект только для элемента DataItemWithScale, созданного при withScaleParams: true и наличии шкалы у параметра.
•Из порогов Hi, HiHi, Lo, LoLo подключаются только включённые соответствующими флагами Use*; сами значения Use* в PublishData не публикуются.