exponenta event banner

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

Обзор

После получения информации о серверах OPC, описанной в разделе Обнаружение доступных серверов доступа к данным, можно установить соединение с сервером, создав объект OPC Client и подключив этот клиент к серверу. Эти шаги описаны в следующих разделах.

Примечание

Чтобы управлять примером кода в следующих примерах, Вы должны иметь Сервер Моделирования Matrikon™ OPC в наличии на своей местной машине. Дополнительные сведения об установке см. в разделе Установка сервера моделирования OPC DA или HDA для классических примеров OPC. Код требует только незначительных изменений для работы с другими серверами.

Создание объекта клиента DA

Создание opcda объект, вызовите opcda функция, определяющая имя хоста и идентификатор сервера. Вы получили эту информацию с помощью opcserverinfo (описана в разделе Обнаружение доступных серверов доступа к данным).

В этом примере создается opcda объект для представления соединения с сервером моделирования OPC Matrikon. opcserverinfo функция включает в себя значение по умолчанию opcda синтаксис в ObjectConstructor поле.

da = opcda('localhost', 'Matrikon.OPC.Simulation.1');

Просмотр сводки объекта-клиента

Просмотр сводки характеристик opcda введите имя переменной, назначенное объекту, в командной строке. Например, это сводка для объекта da.

da

Элементы в этом списке соответствуют нумерованным элементам в сводке объектов:

  1. Название Summary включает имя opcda клиентский объект. Имя по умолчанию для объекта клиента состоит из 'host/serverID'. Можно изменить имя объекта клиента с помощью set функция, описанная в разделе Настройка свойств объекта доступа к данным панели инструментов OPC.

  2. Server Parameters предоставьте информацию о сервере OPC, с которым связан клиент. В этом разделе указаны имя хоста, идентификатор сервера и состояние подключения. Подключение к серверу OPC осуществляется с помощью connect функция, описанная в разделе Подключение клиента к серверу DA.

  3. Object Parameters содержит информацию о группе доступа к данным OPC (dagroup) объекты, настроенные на этом клиенте. Объекты группы используются для размещения коллекций элементов. Создание объектов группы описано в разделе Создание объектов группы доступа к данным.

Подключение клиента к серверу DA

Подключение клиента к серверу осуществляется с помощью connect функция.

connect(da);

После подключения к серверу Status информация в отображении сводки клиента изменится с 'disconnected' кому 'connected'.

Если клиент не смог подключиться к серверу по какой-либо причине (например, если сервер OPC выключен), будет сгенерировано сообщение об ошибке. Сведения об устранении неполадок подключения к серверу OPC см. в разделе Устранение неполадок.

После подключения клиента к серверу можно выполнить следующие задачи:

Обзор пространства имен сервера OPC DA

Подключенный клиентский объект позволяет взаимодействовать с сервером OPC для получения информации о пространстве имен этого сервера. Пространство имен серверов обеспечивает доступ ко всем точкам данных, предоставляемым сервером OPC, путем именования каждой из точек данных элементом сервера, а затем упорядочивания этих элементов сервера в пространство имен, которое предоставляет уникальный идентификатор для каждого элемента сервера.

В этом разделе описывается использование подключенного клиентского объекта для просмотра пространства имен и поиска информации о каждом элементе сервера. Эти мероприятия описаны в следующих разделах:

Получить пространство имен сервера DA

Вы используете getnamespace для извлечения пространства имен с сервера OPC. Необходимо указать объект клиента, подключенный к интересующему серверу. Пространство имен возвращается в виде структурного массива, содержащего информацию о каждом узле в пространстве имен.

В приведенном ниже примере извлекается пространство имен сервера моделирования OPC Matrikon, установленного на локальном хосте.

da = opcda('localhost','Matrikon.OPC.Simulation.1');
connect(da);
ns = getnamespace(da)

ns = 
3x1 struct array with fields:
    Name
    FullyQualifiedID
    NodeType
    Nodes

Поля структуры описаны в следующей таблице.

Область

Описание

Name

Имя узла в виде символьного вектора.

FullyQualifiedID

Полный идентификатор элемента узла в виде символьного вектора. Полный идентификатор элемента состоит из пути к узлу, связанного с '.' персонажи. Полный код номенклатуры используется при создании объекта номенклатуры, связанного с этим узлом.

NodeType

Тип узла. NodeType может быть 'branch' (содержит другие узлы) или 'leaf' (не содержит других ветвей).

Nodes

Дочерние узлы. Nodes является массивом структуры с теми же полями, что и ns, представляющий узлы, содержащиеся в этой ветви пространства имен.

На приведенном выше примере показано исследование пространства имен.

ns(1)

ans = 
                Name: 'Simulation Items'
    FullyQualifiedID: 'Simulation Items'
            NodeType: 'branch'
               Nodes: [8x1 struct]

ns(3)

ans = 
                Name: 'Clients'
    FullyQualifiedID: 'Clients'
            NodeType: 'leaf'
               Nodes: []

Согласно приведенной выше информации, первый узел является узлом ветви, называемым 'Simulation Items'. Поскольку это узел ветви, скорее всего, он не является допустимым элементом сервера. Третий узел - это конечный узел (не содержащий других узлов) с полным идентификатором 'Clients'. Поскольку этот узел является конечным узлом, скорее всего, это элемент сервера, который можно контролировать путем создания объекта элемента.

Чтобы исследовать узлы дальше по дереву, необходимо сослаться на Nodes поле узла ветви. Например, первый узел, содержащийся в 'Simulation Items' узел получается следующим образом.

ns(1).Nodes(1)

ans = 
                Name: 'Bucket Brigade'
    FullyQualifiedID: 'Bucket Brigade.'
            NodeType: 'branch'
               Nodes: [14x1 struct]

Возвращенный результат показывает, что первый узел 'Simulation Items' является узлом ветви с именем 'Bucket Brigade', и содержит 14 узлов.

ns(1).Nodes(1).Nodes(9)

ans = 
                Name: 'Real8'
    FullyQualifiedID: 'Bucket Brigade.Real8'
            NodeType: 'leaf'
               Nodes: []

Девятый узел в 'Bucket Brigade' назван 'Real8' и имеет полный идентификатор 'Bucket Brigade.Real8'. При создании элементов с программным обеспечением OPC Toolbox™ используется полный идентификатор для ссылки на этот узел в пространстве имен сервера.

Вы можете использовать flatnamespace функция для выравнивания иерархического пространства имен.

Получение информации об определенном элементе сервера

Помимо публикации пространства имен для всех клиентов, сервер OPC предоставляет информацию о свойствах каждого из элементов сервера в пространстве имен. Эти свойства предоставляют информацию о формате данных, используемом сервером для хранения значения элемента сервера, описание элемента сервера и дополнительные свойства, настроенные при создании элемента сервера. Дополнительные свойства могут включать в себя информацию о диапазоне элемента сервера, максимальной скорости, с которой сервер может обновлять значение этого элемента сервера, и т.д. См. раздел Свойства элемента сервера OPC DA.

Доступ к свойству осуществляется с помощью определенного набора идентификаторов свойств. Идентификатор свойства - это просто число, определяющее конкретное свойство элемента сервера. Идентификаторы свойств подразделяются на три категории:

  • Свойства OPC (1-99), которые должен предоставить каждый сервер OPC. Свойства OPC включают значение, качество и метку времени элемента сервера. Дополнительные сведения о данных OPC см. в разделе Данные OPC: значение, качество и отметка времени.

  • Рекомендуемые свойства OPC (100-4999), которые могут быть предоставлены серверами OPC. Эти свойства включают максимальное и минимальное значения, описание элемента сервера и другие часто используемые свойства.

  • Свойства поставщика (5000 и выше), которые может определить и использовать сервер OPC. Эти свойства могут быть различными для каждого OPC-сервера и предоставлять производителям OPC-серверов пространство для определения собственных свойств.

Вы запрашиваете свойства элемента сервера с помощью serveritemprops функция, указывающая объект клиента, полный идентификатор элемента сервера, который вас интересует, и необязательный вектор идентификаторов свойств, которые вы хотите извлечь. Если идентификаторы свойств не указаны, возвращаются все свойства, определенные для этого элемента сервера.

Примечание

Полный код элемента можно получить с сервера с помощью getnamespace функции или serveritems функция, которая просто возвращает все полные идентификаторы элементов в массиве ячеек символьных векторов.

В следующем примере запрашивается свойство Item Description (ID 101) элемента сервера. 'Bucket Brigade.ArrayOfReal8' из примера в Get the DA Server Name Space (Получить пространство имен сервера DA).

p = serveritemprops(da, 'Bucket Brigade.ArrayOfReal8', 101)

p = 
             PropID: 101
    PropDescription: 'Item Description'
          PropValue: 'Bucket brigade item.'

Список идентификаторов свойств OPC Foundation см. в разделе Свойства элементов сервера OPC DA.