/Methods/CreateMonitoredDataItems

<< 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 не публикуются.