Несмотря на солидный список поддерживаемых «из коробки» протоколов, применение классического OPC-сервера все еще сохраняет свою актуальность, даже принимая во внимание возможность разработки кастомного драйвера.

Для обеспечения связи с оборудованием при использовании сервера OPC нам так же необходимо добавлять в систему драйвер. Рассмотрим на примере драйвера OPC DA (data access, простой обмен данными). В качестве сервера OPC в данном примере используется широко известный Lectus, который по протоколу Modbus TCP будет связываться с локальным программным сервером Modbus TCP. Напоминаю, что сервер - это тот, кто отвечает на запросы. Клиент эти самые запросы генерирует.

Итого, в этой связке у нас получается по 2 клиента и по 2 сервера:

  • драйвер OPC DA является клиентом OPC для сервера Lectus;

  • Lectus является сервером OPC для драйвера и одновременно клиентом Modbus TCP для внешнего устройства, с которым мы организовываем связь;

  • сервером протокола Modbus выступает отдельная прогамма, установленная локально.

Проект уже создан, версия 3.18.

Традиционно, как и с любой коммуникацией, начинаем работу с добавления драйвера в систему. Добавляем драйвер OPC DA Client с номером 2.

Этот драйвер не запустится с первого раза, так как требует настройки в конфигурационном файле проекта, это нормально.

Далее открываем System Management и находим там драйвера OPC.

Добавляем новый сервер кнопкой "Создать":

Тут мы получаем список установленных серверов в системе. В настоящей заметке рассматривается только локальное подключение к OPC, а вопросы проброса DCOM и использование удаленных OPC-серверов остается далеко за рамками. Прошу обратить внимание, что если искомый сервер отсутствует в списке, но вы абсолютно уверены, что он установлен, то надо проанализировать - от какого пользователя запущен сервер, а от какого - WinCC OA.

Выбираем сервер Lectus, нам сразу предлагается имя внутренней точки данных для этого соединения.

Далее появляется отличная подсказка.

Начнем со второго шага, окроем конфиг-файл, добавим в него секцию opc и указанную выше строку:

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

Последний шаг - это запуск OPC DA клиента

После чего мы видим, что соединение с OPC-сервером установилось, да и сам OPC-сервер запустился автоматически. Нюансов в реализации OPC всегда множество, и я не берусь гарантировать, что все сервера должны запускаться автоматически, но с Lectus именно так.

Очень кратко настройки самого Lectus. Node - это мой локальный сервер Modbus TCP.

Последний шаг - настройка точки данных в модуле para. Заводим точки данных MyRegister типа ExampleDP_Int, добавляем и настраиваем конфиг address, как OPC Client.

Сервер Lectus мы ранее настроили в Управлении Системой. Там же настроили и группу опроса VALUE. Node.Item1 задано в сервере Lectus, для доступа ко всем тэгам текущего сервера OPC у нас есть соответствующая кнопка:

Не забываем, что адресный конфиг надо сделать активным, выставив соответствующую галочку внизу. Теперь переходим на конфиг original и смотрим значение.

Это соответствует заданному в сервере Modbus значению.

Если вернуться в адресный конфиг и изменить «права» доступа на чтение/запись, то получится и задать значение регистра хранения. На этом скрине я изменил «направление».

Теперь задаю значение 667

Это значение изменилось и в сервере Modbus

Комментарии (0)