Настройка OPC UA Client на PLCnext Control: Пошаговое руководство
Версия прошивки 2023.0 включает долгожданный компонент OPC UA Client. PLCnext Info Center содержит хорошую техническую справку по этой функции.
Это руководство — пошаговое руководство, показывающее, как настроить OPC UA Client в устройстве PLCnext Control для обмена данными с OPC UA Server.
Вам понадобятся:
- Устройство PLCnext Control с версией прошивки 2023.0 или выше для работы в качестве OPC UA Client. Если вам нужно обновить прошивку на устройстве PLCnext Control, вы можете следовать процедуре, показанной в Info Center.
- PLCnext Engineer версии 2023.3 или выше.
- OPC UA Server. В этой статье в качестве OPC UA Server используется второе устройство PLCnext Control, но вы можете использовать то же устройство PLCnext Control, что и для хостинга Client, или любой сторонний OPC UA Server, работающий (например) на Windows PC. Для сторонних серверов вам нужно будет самостоятельно адаптировать шаги «server» ниже для вашего сервера.
- UaExpert от Unified Automation, необходимый для получения информации о тегах OPC UA Server, которые мы будем использовать в конфигурации нашего OPC UA Client.
Одним из ключевых моментов, которые нужно помнить при настройке OPC UA-коммуникаций, является то, что по соображениям безопасности OPC UA Client и OPC UA Server должны доверять друг другу. Поэтому сертификаты безопасности должны обмениваться между Client и Server устройствами. Эта процедура включает переключение между Client и Server устройствами, что может быть немного запутанным. Если у вас есть предложения, как упростить процедуру (не отключая проверки безопасности!), пожалуйста, добавьте их в комментариях.
Процедура
Устройство OPC UA Server
Откройте веб-интерфейс управления (WBM), перейдя по IP-адресу ПЛК.
Выберите пункт System Services (Системные службы) из меню Configuration (Конфигурация).
Активируйте сервис OPC UA Server, если он еще не включен.
Нажмите кнопку Apply and reboot (Применить и перезагрузить) при необходимости.
Откройте PLCnext Engineer.
Создайте новый проект PLCnext Engineer, используя шаблон для вашего устройства PLCnext Control.
Установите IP-адрес ПЛК в проекте PLCnext Engineer.
На странице конфигурации OPC UA Server:
установите DNS name / IP address (DNS-имя / IP-адрес) на DNS-имя или IP-адрес ПЛК, в зависимости от того, будет ли OPC UA Client обращаться к серверу по DNS-имени или IP-адресу сервера. Эта информация будет включена в сертификат безопасности OPC UA Server. Многие OPC UA Clients будут отклонять сертификат сервера, если эта информация в сертификате не совпадает с URL сервера.
установите Visibility of variables (Видимость переменных) на Marked (Помеченные). Это означает, что все переменные, помеченные атрибутом OPC, будут доступны через OPC UA Server.
Создайте переменные, которые будут выставлены OPC UA Server. Убедитесь, что флажок OPC установлен для этих переменных. В примере ниже создано две переменные в программе Main.
Добавьте логику для изменения выходной переменной Output при получении нового входного значения Input. В этом примере программа Main выполняет следующий код:
Server_Data_Out := Server_Data_In + 1;Запишите и запустите проект.
Обратите внимание, что PLCnext Engineer версии 2025.0 и выше включает функцию «browse» (обзор), которую можно использовать для создания записей переменных в OPC UA Client. Если используется эта функция обзора, то не нужно использовать UaExpert для получения информации о серверных переменных, и следующие три шага можно пропустить.
Используйте UaExpert для подключения к OPC UA Server с использованием имени пользователя и пароля ПЛК. Вы должны увидеть предупреждение, что сертификат «Untrusted» (Недоверенный), но других предупреждений быть не должно.
Доверьте сертификату сервера, либо постоянно, либо только для этой сессии.
Для каждой серверной переменной запишите имя Node ID и Namespace (Пространство имен) для этой переменной.
Откройте WBM-сайт для Server PLC снова.
Выберите пункт Certificate Authentication (Аутентификация сертификатов) из меню Security (Безопасность).
Выберите вкладку Trust Stores (Хранилища доверия).
Скачайте сертификат из OPC UA-self-signed [server] Identity Store (Хранилище идентичности). Key Pair (Пара ключей) скачивать не нужно.
Устройство OPC UA Client
Откройте веб-интерфейс управления (WBM), перейдя по IP-адресу ПЛК.
Выберите пункт System Services из меню Configuration.
Активируйте сервис OPC UA Client, если он еще не включен.
Нажмите кнопку Apply and reboot при необходимости.
Когда перезагрузка завершена, снова войдите в WBM и выберите пункт Certificate Authentication из меню Security.
Выберите вкладку Trust Stores.
Добавьте сертификат OPC UA-self-signed [server] (скачанный ранее) в Trust Store с именем OPC UA Client. Теперь OPC UA Client будет доверять сертификату безопасности, используемому OPC UA Server для проверки своей идентичности. Этот шаг нужно повторять каждый раз, когда меняется сертификат сервера.
Выберите вкладку Identity Stores (Хранилища идентичности).
Скачайте сертификат из OPC UA Client self-signed Identity Store. Key Pair не нужно скачивать.
Устройство OPC UA Server (продолжение)
Откройте веб-интерфейс управления (WBM), перейдя по IP-адресу ПЛК.
Выберите пункт Certificate Authentication из меню Security.
Выберите вкладку Trust Stores.
Добавьте сертификат OPC UA Client self-signed (скачанный ранее) в Trust Store с именем OPC UA-configurable. Теперь OPC UA Server будет доверять сертификату безопасности, используемому OPC UA Client для проверки своей идентичности. Этот шаг нужно повторять каждый раз, когда меняется сертификат клиента.
Устройство OPC UA Client (продолжение)
Откройте PLCnext Engineer.
Создайте новый проект PLCnext Engineer, используя шаблон для вашего устройства PLCnext Control. Если вы используете то же устройство и для OPC UA Client, и для OPC UA Server, то будет использоваться тот же проект PLCnext Engineer.
Установите IP-адрес ПЛК в проекте PLCnext Engineer.
Только для ПЛК с версией прошивки до 2023.6: На странице конфигурации OPC UA Server установите Visibility of variables на Marked. Да, кажется странно требовать эту настройку OPC UA Server для OPC UA Client. Это исправлено в версиях прошивки 2023.6 и выше.
Создайте переменные, которые будут подключены к переменным в OPC UA Server. Только для ПЛК с версией прошивки до 2023.6: Убедитесь, что флажок OPC установлен для этих переменных (флажок не обязателен для ПЛК с версией прошивки 2023.6 или выше).
В примере ниже создано две переменные в программе Main.
На вкладке OPC UA Client Connections добавьте один Server и две Variable Groups (Группы переменных), как показано ниже.
URL сервера, имя пользователя и пароль должны быть изменены в соответствии с используемым OPC UA Server.
В группе переменных «Subscribe» добавьте одно сопоставление переменной, как показано ниже.
Это автоматически передает значение из удаленной переменной (на OPC UA Server) в локальную переменную в проекте PLCnext Engineer.
В группе переменных «Write» добавьте одно сопоставление переменной, как показано ниже.
Это автоматически передает значение из локальной переменной в проекте PLCnext Engineer в удаленную переменную (на OPC UA Server).
Запишите и запустите проект PLCnext Engineer.
В режиме отладки измените значение переменной
Client_Data_out. Значение будет записано в переменнуюServer_Data_Inна OPC UA Server. Это значение будет увеличено Server и записано в переменнуюServer_Data_Out. Значение этой переменной затем будет передано в переменнуюClient_Data_Inна Client.
Не работает?
Пожалуйста, проверьте Руководство по устранению неполадок в PLCnext Info Center (внизу страницы).
Часто задаваемые вопросы
Q: Может ли клиент подключиться к OPC UA Server с использованием аутентификации Certificate/Key?
A: Нет, пока нет.
Q: Как OPC UA Client хранит пароль сервера?
A: На данный момент пароль OPC UA Server хранится в открытом виде в файле конфигурации клиента, но разработчики PLCnext Runtime работают над более безопасным методом хранения паролей.
Q: Можно ли получить информацию о качестве (например, Status Code, Timestamp) для данных, прочитанных с OPC UA Server?
A: Пока нет, извините.
Эта статья обновлена 24.03.2025 для включения информации о функции Server Browse, теперь доступной в PLCnext Engineer.
Приложение: Файловая конфигурация
Конфигурация OPC UA Client в PLCnext Engineer хранится на контроллере в XML-формате. Для приложений, не использующих PLCnext Engineer, возможно настроить OPC UA Client, записывая XML-конфигурацию непосредственно на контроллере.
Конфигурация, подготовленная в этом примере, представлена в следующих XML-файлах:
Любые необходимые изменения настроек OPC UA Client по умолчанию определены в файле
/opt/plcnext/projects/current/Services/OpcUA/Modules/Client/client.module.config:<?xml version="1.0" encoding="utf-8" standalone="yes"?> <OpcUAClientModuleConfigurationDocument schemaVersion="1.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.phoenixcontact.com/schema/opcuaclientmoduleconfig" xmlns="https://www.phoenixcontact.com/schema/opcuaclientmoduleconfig"> <Application> <CertificateStore> <SelfSignedIdentityStoreName>OPC UA Client self-signed</SelfSignedIdentityStoreName> <GivenIdentityStoreName>OPC UA Client</GivenIdentityStoreName> <TrustStoreName>OPC UA Client</TrustStoreName> </CertificateStore> <SessionSecurity> <ApplicationAuthentication>false</ApplicationAuthentication> <ApplicationUriCheck>true</ApplicationUriCheck> <CertificateHostnameCheck>true</CertificateHostnameCheck> <CertificateTimeCheck>true</CertificateTimeCheck> <CertificateIssuerTimeCheck>true</CertificateIssuerTimeCheck> <PasswordEncryptionCheck>true</PasswordEncryptionCheck> </SessionSecurity> <Timeouts> <SessionTimeout>1200000</SessionTimeout> <ConnectTimeout>5000</ConnectTimeout> <WatchdogTimeout>5000</WatchdogTimeout> <CallTimeout>10000</CallTimeout> </Timeouts> </Application> </OpcUAClientModuleConfigurationDocument>OPC UA Client connections определяются в файле
/opt/plcnext/projects/current/Services/OpcUA/Modules/Client/Configs/ clientconnections.xml:<?xml version="1.0" encoding="utf-8"?> <eUAClientConfigurationDocument xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:uax="https://opcfoundation.org/UA/2008/02/Types.xsd" xmlns="https://phoenixcontact.com/OpcUA/PLCnext/UAClientConfig/Types.xsd"> <eUAClientConfiguration> <Name>ClientConnectionsConfiguration</Name> <NamespaceArray> <uax:String>https://phoenixcontact.com/OpcUA/PLCnext/GlobalDataSpace/</uax:String> </NamespaceArray> <ServerConnections> <eUAClientServerConnection> <EncodingMask>3</EncodingMask> <Endpoint> <uax:EndpointUrl>opc.tcp://192.168.1.10:4840</uax:EndpointUrl> <uax:SecurityMode>Sign_2</uax:SecurityMode> <uax:SecurityPolicyUri>https://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</uax:SecurityPolicyUri> </Endpoint> <UserTokenType>UserName_1</UserTokenType> <UserName>admin</UserName> <Password>xxxxxxxx</Password> </eUAClientServerConnection> </ServerConnections> <VariableGroups> <eUAClientVariableGroup> <GroupType>Write_1</GroupType> <CycleTime>100</CycleTime> <NodeMappings> <eUAClientNodeMapping> <LocalVariable> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Client_Data_Out</uax:Identifier> </LocalVariable> <RemoteVariableDescriptor> <EncodingMask>2</EncodingMask> <ServerIndex>1</ServerIndex> <NodeId> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Server_Data_In</uax:Identifier> </NodeId> </RemoteVariableDescriptor> </eUAClientNodeMapping> </NodeMappings> </eUAClientVariableGroup> <eUAClientVariableGroup><GroupType>Subscribe_0</GroupType> <CycleTime>100</CycleTime> <NodeMappings> <eUAClientNodeMapping> <LocalVariable> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Client_Data_In</uax:Identifier> </LocalVariable> <RemoteVariableDescriptor> <EncodingMask>2</EncodingMask> <ServerIndex>1</ServerIndex> <NodeId> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Server_Data_Out</uax:Identifier> </NodeId> </RemoteVariableDescriptor> </eUAClientNodeMapping> </NodeMappings> </eUAClientVariableGroup> </VariableGroups> </eUAClientConfiguration> </eUAClientConfigurationDocument>
Этот файл использует информацию Namespace и Node ID, записанную ранее (с использованием UaExpert), чтобы указать, к каким серверным переменным будет обращаться клиент.
В приведенном выше файле измените следующее в соответствии с вашим приложением:
Элемент
uax:EndpointUrlдолжен включать IP-адрес (или DNS-имя) вашего OPC UA сервера.Элементы
UsernameиPasswordдолжны содержать учетные данные, необходимые для OPC UA сервера.
ВАЖНО: В этом примере строки Node ID в UaExpert включали текст
ns=6. В приведенном выше XML-файле это изменено наns=1, потому что параметр «namespace» (ns) является индексом в список пространств имен на локальном клиенте. В этом примере Namespace имя, скопированное из UaExpert, является первым (и единственным) пространством имен в списке пространств имен в нашем файлеclientconfig.xml.
PLCnext Runtime должен быть перезапущен после внесения изменений в файлы конфигурации OPC UA Client.
Промышленные технологии
- Как робототехника трансформирует производство: ключевые выгоды и влияние на отрасль
- Профессиональные уроки по электротехнике и электронике: тестирование и расчёты
- Избегайте распространенных ошибок в терминологии кибербезопасности
- Четыре проверенные стратегии упрощения сложности глобальной пищевой цепочки поставок
- Монтаж двойного трехклавишного комбинированного выключателя: Полное руководство по установке
- Термоэлектричество: понимание термопар и эффекта Зеебека
- AMS1117: распиновка, схема подключения и полное руководство для начинающих
- Использование фазовых диаграмм для точного прогнозирования кривых парового давления
- Литье титана в оболочках: ключевые техники, преимущества и экспертные идеи
- Параллельные vs последовательные электрические сигналы: как дифференциальное напряжение и модуляция повышаю…