exponenta event banner

Поиск и обзор серверов доступа к историческим данным OPC

В этом примере показано, как использовать Toolbox™ OPC для поиска в сети серверов доступа к историческим данным OPC и использовать функции OPC Toolbox для запроса пространства имен серверов для элементов сервера и их свойств.

ПРЕДВАРИТЕЛЬНЫЕ УСЛОВИЯ:

Шаг 1. Поиск серверов OPC HDA в сети

Вы используете 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

Шаг 2: Создание клиентского объекта и подключение к серверу

Используйте 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);

Шаг 3: Получение пространства имен сервера

Извлеките пространство имен сервера.

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]

Шаг 4: Поиск элементов в пространстве имен

Используйте 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'

Шаг 5: Запрос атрибутов элемента сервера

Проверьте текущее нормальное максимальное значение найденного десятого элемента.

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

Предупреждение указывает на то, что элемент еще не сохранен в базе данных историков, но возвращены предварительно настроенные атрибуты элемента.

Шаг 6: Очистка объектов панели инструментов OPC

Отключите клиент от сервера и удалите объекты OPC Toolbox из памяти, если они больше не нужны. Удаление объекта клиента также приводит к удалению объектов группы и элемента.

disconnect(hdaObj)
delete(hdaObj)