Несмотря на солидный список поддерживаемых «из коробки» протоколов, применение классического 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  АСУ ТП