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

Обзор

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

Примечание

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

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

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

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

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

Просмотр Сводных данных клиентского объекта

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

da

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

  1. Область заголовка Summary включает имя opcda объект клиента. Имя по умолчанию для объекта клиента состоит из 'host/serverID'. Вы можете изменить имя объекта клиента, используя set функция, описанная в Configure Opc Toolbox Data Access Свойства.

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

  3. The Object Parameters раздел содержит информацию о группе доступа к OPC Data (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'. Поскольку этот узел является конечным узлом, это, скорее всего, серверный элемент, которое можно контролировать, создавая объект item.

Чтобы изучить узлы далее по дереву, необходимо обратиться к 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 Server».

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

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

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

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

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

Примечание

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

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

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

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

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