После получения информации о серверах OPC, как описано в разделе Обнаружение доступных серверов HDA, можно установить соединение с сервером, создав объект клиента OPC HDA и подключив этот клиент к серверу. Эти шаги описаны ниже.
Примечание
Чтобы управлять примером кода в следующих шагах, Вам нужен Сервер Моделирования Matrikon™ OPC на Вашей местной машине. Дополнительные сведения об установке см. в разделе Установка сервера моделирования OPC DA или HDA для классических примеров OPC. Код требует только незначительных изменений для работы с другими серверами.
OPC Toolbox не использует группы при работе с элементами сервера HDA. Вместо этого сами элементы передаются доступным функциям. Эти функции доступны через объект клиента OPC HDA. В большинстве случаев функции, доступные через этот объект клиента HDA, возвращают объект opc.hda.Data. Эти объекты данных упрощают отображение и обработку исторических данных, полученных с сервера HDA.
Чтобы создать объект клиента OPC HDA, вызовите opchda , указывая имя хоста и идентификатор сервера. Вы получили эту информацию с помощью opchdaserverinfo функция (описана в разделе Обнаружение доступных серверов HDA). В этом примере создается объект клиента OPC HDA для представления соединения с сервером моделирования OPC Matrikon:
hdaClient = opchda('localhost','Matrikon.OPC.Simulation.1');Чтобы просмотреть сводку характеристик созданного объекта клиента OPC HDA, введите в командной строке имя переменной, назначенное объекту. Например, это сводка для hdaClient объект:
hdaClient =
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)
MethodsИспользуйте connect для подключения клиента к серверу:
connect(hdaClient);
disconnected кому connected. Если клиенту не удалось подключиться к серверу (например, если сервер OPC выключен), появляется сообщение об ошибке. Сведения об устранении неполадок подключений к серверу OPC см. в разделе Устранение неполадок. После подключения клиента к серверу можно запросить список доступных агрегированных типов с помощью hdaClient.Aggregates функция, а также доступные атрибуты элемента с hdaClient.ItemAttributes. При подключении можно просмотреть пространство имен сервера OPC для получения информации о доступных элементах сервера. Дополнительные сведения о просмотре пространства имен серверов см. в следующем разделе. Функции HDA можно просмотреть с помощью methods(hdaClient). Подключенный клиентский объект позволяет взаимодействовать с сервером OPC для получения информации о пространстве имен этого сервера. Пространство имен серверов обеспечивает доступ ко всем точкам данных, предоставляемым сервером OPC, путем именования каждой точки данных элементом сервера, а затем упорядочивания этих элементов сервера в пространство имен, которое предоставляет уникальный идентификатор для каждого элемента сервера.
В следующем разделе описывается, как получить пространство имен серверов или частичное пространство имен серверов с помощью getnamespace и serveritems функции.
Используйте getnamespace для извлечения пространства имен с сервера OPC HDA. Необходимо указать объект клиента, подключенный к интересующему серверу. Пространство имен возвращается в виде структурного массива, содержащего информацию о каждом узле в пространстве имен.
В этом примере извлекается пространство имен сервера моделирования OPC Matrikon, установленного на локальном хосте:
hdaClient = opchda('localhost','Matrikon.OPC.Simulation.1');
connect(hdaClient);
ns = getnamespace(hdaClient)
ns =
3x1 struct array with fields:
Name
FullyQualifiedID
NodeType
NodesВ этой таблице описываются поля структуры:
Область | Описание |
|---|---|
| Имя узла в виде символьного вектора. |
| Полный идентификатор элемента узла в виде символьного вектора. Полный идентификатор элемента состоит из пути к узлу, связанного с |
| Тип узла. |
| Дочерние узлы. |
Из предыдущего выше исследование пространства имен показывает:
ns(1)
Name: 'Simulation Items'
FullyQualifiedID: 'Simulation Items'
NodeType: 'branch'
Nodes: [8x1 struct]
ns(3)
Name: 'Clients'
FullyQualifiedID: 'Clients'
NodeType: 'leaf'
Nodes: []Из этой информации первый узел является узлом ветви, называемым 'Simulation Items'. Поскольку это узел ветви, скорее всего, он не является допустимым элементом сервера. Третий узел - это конечный узел (не содержащий других узлов) с полным идентификатором 'Clients'. Поскольку этот узел является конечным узлом, скорее всего, это элемент сервера, который можно контролировать путем создания объекта элемента. Чтобы проверить узлы дальше вниз по дереву, обратитесь к Nodes поле узла ветви. Например, первый узел, содержащийся в 'Simulation Items' узел получается следующим образом:
ns(1).Nodes(1)
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.