Считывание исторических данных с узлов сервера OPC UA в определенное время
UaData = readAtTime(UaClient,NodeList,TimeVector)
UaData = readAtTime(NodeList,TimeVector)
UaData = readAtTime(UaClient,NodeList,TimeVector) считывает сохраненные исторические данные из узлов, заданных NodeList, в указанное время в TimeVector. NodeList - массив объектов узла OPC UA, который можно создать с помощью getNamespace, browseNamespace, или opcuanode. TimeVector - массив значений времени или даты MATLAB.
UaData возвращается как вектор объектов данных OPC UA. Сервер выполняет интерполяцию или экстраполяцию данных, если они не хранятся в моменты времени, указанные в TimeVector. Качество данных устанавливается соответствующим образом для интерполированных данных. Если readHistory не удалось получить историю для данного узла, этот узел не включен в возвращенный объект данных OPC UA, и выдается предупреждение. При сбое всех запрошенных узлов генерируется ошибка.
UaData = readAtTime(NodeList,TimeVector) считывает из узлов, идентифицированных NodeList. Все узлы должны быть одного и того же подключенного клиента.
Серверы OPC UA предоставляют исторические данные только с узлов типа Variable. При попытке чтения значений из Object узел, данные для этого узла не возвращаются, для этого узла установлен статус Bad:AttributeNotSupported, и узел не включен в возвращаемый UaData объект.
Извлеките 10-минутную историю за текущий день с локального сервера.
uaClnt = opcua('localhost',62550); connect(uaClnt); nodeId = '1:Quickstarts.HistoricalAccessServer.Data.Dynamic.Double.txt'; nodeList = opcuanode(2,nodeId,uaClnt); TimeVector = datetime('today'):minutes(10):datetime('now'); dataObj = readAtTime(uaClnt,nodeList,TimeVector);