После получения информации о серверах OPC, описанной в разделе Обнаружение доступных серверов HDA, можно установить соединение с сервером путем создания объекта клиента OPC HDA и подключения этого клиента к серверу. Эти шаги описаны далее.
Примечание
Чтобы запустить пример кода в следующих шагах, вам нужен Matrikon™ OPC Simulation Server на вашем локальном компьютере. Для получения дополнительной информации об установке см. раздел Установка OPC DA или HDA Simulation Server для OPC Classic Examples. Код требует лишь незначительных изменений для работы с другими серверами.
OPC Toolbox не использует группы при работе с серверными элементами HDA. Вместо этого сами элементы передаются в доступные функции. Эти функции доступны через объект клиента OPC HDA. В большинстве случаев функции, доступные через этот объект HDA-клиента, возвращают объект данные. Этот объект данных упрощает отображение и манипуляцию историческими данными, извлеченными с сервера 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'. Поскольку этот узел является конечным узлом, это, скорее всего, серверный элемент, которое можно контролировать, создавая объект item. Чтобы изучить узлы далее по дереву, ссылка на 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.