В этом примере показано, как использовать Toolbox™ OPC для поиска в сети серверов доступа к историческим данным OPC и использовать функции OPC Toolbox для запроса пространства имен серверов для элементов сервера и их свойств.
ПРЕДВАРИТЕЛЬНЫЕ УСЛОВИЯ:
Вы используете opchdaserverinfo функция для запроса хосту в сети доступных серверов доступа к историческим данным OPC. В этом примере используется локальный хост.
hostInfo = opchdaserverinfo('localhost')
hostInfo =
OPC HDA Server Information object:
Host: localhost
ServerID: Matrikon.OPC.Simulation.1
Description: MatrikonOPC Server for Simulation and Testing
HDASpecification: HDA1
Найдите запись информации о сервере с описанием, начинающимся с Matrikon.
hIndex = findDescription(hostInfo,'Matrikon')
hostInfo(hIndex)
hIndex =
1
ans =
OPC HDA Server Information object:
Host: localhost
ServerID: Matrikon.OPC.Simulation.1
Description: MatrikonOPC Server for Simulation and Testing
HDASpecification: HDA1
Используйте ServerInfo возвращен на предыдущем шаге для создания клиентского объекта.
hdaObj = opchda(hostInfo(hIndex));
Можно также указать имя хоста и идентификатор сервера напрямую.
hdaObj = opchda('localhost','Matrikon.OPC.Simulation.1')
hdaObj =
OPC HDA Client localhost/Matrikon.OPC.Simulation.1:
Host: localhost
ServerID: Matrikon.OPC.Simulation.1
Timeout: 10 seconds
Status: disconnected
Aggregates: -- (client is disconnected)
ItemAttributes: -- (client is disconnected)
Подключите клиент к серверу.
connect(hdaObj);
Извлеките пространство имен сервера.
ns = getNameSpace(hdaObj)
ns =
4×1 struct array with fields:
Name
FullyQualifiedID
NodeType
Nodes
Каждый элемент структуры является узлом в пространстве имен сервера.
ns(1)
ans =
Name: 'Simulation Items'
FullyQualifiedID: 'Simulation Items¥'
NodeType: 'branch'
Nodes: [8×1 struct]
Используйте serveritems функция для поиска всех элементов в пространстве имен, содержащем строку Real.
realItems = serveritems(ns,'*Real*')
realItems =
'Bucket Brigade.ArrayOfReal8'
'Bucket Brigade.Real4'
'Bucket Brigade.Real8'
'Random.ArrayOfReal8'
'Random.Real4'
'Random.Real8'
'Read Error.ArrayOfReal8'
'Read Error.Real4'
'Read Error.Real8'
'Saw-toothed Waves.Real4'
'Saw-toothed Waves.Real8'
'Square Waves.Real4'
'Square Waves.Real8'
'Triangle Waves.Real4'
'Triangle Waves.Real8'
'Write Error.ArrayOfReal8'
'Write Error.Real4'
'Write Error.Real8'
'Write Only.ArrayOfReal8'
'Write Only.Real4'
'Write Only.Real8'
Проверьте текущее нормальное максимальное значение найденного десятого элемента.
maxVal = readItemAttributes(hdaObj,realItems{10},hdaObj.ItemAttributes.NORMAL_MAXIMUM,now,now)
Warning: Saw-toothed Waves.Real4: No history available for attribute.
maxVal =
ItemID: 'Saw-toothed Waves.Real4'
AttributeID: 11
Timestamp: 7.3643e+05
Value: 100
Предупреждение указывает на то, что элемент еще не сохранен в базе данных историков, но возвращены предварительно настроенные атрибуты элемента.
Отключите клиент от сервера и удалите объекты OPC Toolbox из памяти, если они больше не нужны. Удаление объекта клиента также приводит к удалению объектов группы и элемента.
disconnect(hdaObj) delete(hdaObj)