Настройка клиента OPC UA на PLCnext Control:пошаговое руководство
Версия прошивки 2023.0 включает в себя долгожданный компонент OPC UA Client. Информационный центр PLCnext содержит хороший технический справочник по этой функции.
Это руководство представляет собой пошаговое руководство, показывающее, как настроить клиент OPC UA в устройстве управления PLCnext так, чтобы он обменивался данными с сервером OPC UA.
Вам понадобится:
- Устройство управления PLCnext с микропрограммой версии 2023.0 или новее, выполняющее функции клиента OPC UA. Если вам необходимо обновить встроенное ПО вашего устройства управления PLCnext, вы можете выполнить процедуру, показанную в информационном центре.
- PLCnext Engineer версии 2023.3 или новее.
- Сервер OPC UA. В этой статье в качестве сервера OPC UA используется второе устройство управления PLCnext, но вы можете использовать то же устройство управления PLCnext, которое вы используете для размещения клиента, или, альтернативно, любой сторонний сервер OPC UA, работающий (например) на ПК с Windows. Для сторонних серверов вам нужно будет выяснить, как адаптировать приведенные ниже шаги «сервера» для вашего сервера.
- UaExpert от Unified Automation, который необходим для получения информации о тегах сервера OPC UA, которые мы будем использовать в конфигурации нашего собственного клиента OPC UA.
Один из ключевых моментов, который следует помнить при настройке связи OPC UA, заключается в том, что по соображениям безопасности клиент OPC UA и сервер OPC UA должны доверять друг другу. Поэтому между клиентским и серверным устройствами необходимо обмениваться сертификатами безопасности. Эта процедура предполагает переключение между клиентским устройством и серверным устройством, что может немного сбить с толку. Если у вас есть предложения, как упростить процедуру (не отключая проверки безопасности!), смело добавляйте их в комментариях.
Процедура
Устройство сервера OPC UA
- <ли>
Откройте сайт управления через веб-интерфейс (WBM), перейдя по IP-адресу ПЛК.
<ли>Выберите Системные службы. пункт меню «Конфигурация».
<ли>Активируйте OPC UA Server. сервис, если он еще не включен.
<ли>Нажмите кнопку Применить и перезагрузить. кнопку при необходимости.
<ли>Откройте PLCnext Engineer.
<ли>Создайте новый проект PLCnext Engineer, используя шаблон для вашего устройства управления PLCnext.
<ли>Установите IP-адрес ПЛК в проекте PLCnext Engineer.
<ли>На OPC UA-сервере страница конфигурации:
- <ли>
установите DNS-имя/IP-адрес к DNS-имени или IP-адресу ПЛК, в зависимости от того, будет ли клиент OPC UA обращаться к серверу, используя DNS-имя или IP-адрес сервера. Эта информация будет включена в сертификат безопасности OPC UA Server. Многие клиенты OPC UA отклонят сертификат сервера, если эта информация в сертификате не соответствует URL-адресу сервера.
<ли>установите Видимость переменных чтобы Отмечено . Это означает, что все переменные, отмеченные атрибутом OPC, будут доступны через OPC UA Server.
Создайте переменные, которые будут доступны серверу OPC UA. Убедитесь, что OPC Для этих переменных установлен флажок. В приведенном ниже примере в основной программе созданы две переменные.
<ли>
Добавьте логику для изменения выходной переменной при получении нового входного значения. В этом примере основная программа выполнила следующий код:
Server_Data_Out := Server_Data_In + 1;
Напишите и запустите проект.
Обратите внимание, что PLCnext Engineer версии 2025.0 и более поздних версий включает функцию «просмотра», которую можно использовать для создания записей переменных в клиенте OPC UA. Если используется эта функция просмотра, то нет необходимости использовать UaExpert для получения информации о переменных сервера, и следующие три шага можно пропустить.
<ли>Используйте UaExpert для подключения к серверу OPC UA, используя имя пользователя и пароль ПЛК. Вы должны увидеть предупреждение о том, что сертификат является «Ненадежным», но других предупреждений быть не должно.
<ли>Доверяйте сертификату сервера либо навсегда, либо только на этот сеанс.
<ли>Для каждой серверной переменной запишите имя идентификатора узла. и Пространство имен для этой переменной.
<ли>
Снова откройте сайт WBM для серверного ПЛК.
<ли>Выберите Аутентификация сертификата. пункт меню «Безопасность».
<ли>Выберите Хранилища удостоверений. вкладка.
<ли>Загрузите сертификат с самозаверяющего OPC UA. [сервер] Хранилище удостоверений. Ключевую пару загружать не нужно.
ол>Клиентское устройство OPC UA
- <ли>
Откройте сайт управления через веб-интерфейс (WBM), перейдя по IP-адресу ПЛК.
<ли>Выберите Системные службы. пункт меню «Конфигурация».
<ли>Активируйте клиент OPC UA. сервис, если он еще не включен.
<ли>Нажмите кнопку Применить и перезагрузить. кнопку при необходимости.
<ли>После завершения перезагрузки снова войдите на сайт WBM и выберите Аутентификация по сертификату. пункт меню «Безопасность».
<ли>Выберите Хранилища доверенных сертификатов. вкладка.
<ли>Добавьте самозаверяющий OPC UA. сертификат [сервера] (загруженный ранее) в хранилище доверенных сертификатов с именем OPC UA Client . Теперь клиент OPC UA будет доверять сертификату безопасности, используемому сервером OPC UA, для проверки его личности. Этот шаг необходимо будет повторять каждый раз при изменении сертификата Сервера.
<ли>Выберите Хранилища удостоверений. вкладка .
<ли>Загрузите сертификат из самоподписанного клиента OPC UA. Магазин идентичности. Ключевую пару загружать не нужно.
ол>Устройство сервера OPC UA
- <ли>
Откройте сайт управления через веб-интерфейс (WBM), перейдя по IP-адресу ПЛК.
<ли>Выберите Аутентификация сертификата. пункт меню «Безопасность».
<ли>Выберите Хранилища доверенных сертификатов. вкладка.
<ли>Добавьте самоподписанный клиент OPC UA. сертификат (загруженный ранее) в хранилище доверенных сертификатов с именем OPC UA-configurable . Теперь сервер OPC UA будет доверять сертификату безопасности, используемому клиентом OPC UA, для проверки его личности. Этот шаг необходимо будет повторять каждый раз при изменении сертификата клиента.
ол>Клиентское устройство OPC UA
- <ли>
Откройте PLCnext Engineer.
<ли>Создайте новый проект PLCnext Engineer, используя шаблон для вашего устройства управления PLCnext. Если вы используете одно и то же устройство и для клиента OPC UA, и для сервера OPC UA, то будет использоваться один и тот же проект PLCnext Engineer.
<ли>Установите IP-адрес ПЛК в проекте PLCnext Engineer.
<ли>Требуется только для ПЛК с версией встроенного ПО до 2023.6: На OPC UA-сервере на странице конфигурации установите Видимость переменных чтобы Отмечено . Да, кажется странным требовать эту настройку сервера OPC UA для клиента OPC UA. Это исправлено в версиях прошивки 2023.6 и новее.
<ли>Создайте переменные, которые будут связаны с переменными на сервере OPC UA. Требуется только для ПЛК с версией встроенного ПО до 2023.6: Убедитесь, что OPC Для этих переменных установлен флажок (флажок не требуется устанавливать для ПЛК с микропрограммой версии 2023.6 или более поздней).
В приведенном ниже примере в основной программе созданы две переменные.
<ли>
На вкладке «Подключения клиента OPC UA» добавьте один сервер и две группы переменных, как показано ниже.
URL-адрес сервера, имя пользователя и пароль следует изменить в соответствии с используемым вами сервером OPC UA.
<ли>В группу переменных «Подписка» добавьте одно сопоставление переменных, как показано ниже.
При этом значение из удаленной переменной (на сервере OPC UA) автоматически переносится в локальную переменную в проекте PLCnext Engineer.
<ли>В группу переменных «Запись» добавьте одно сопоставление переменных, как показано ниже.
При этом значение из локальной переменной в проекте PLCnext Engineer автоматически переносится в удаленную переменную (на сервере OPC UA).
<ли>Напишите и запустите проект PLCnext Engineer.
<ли> В режиме отладки измените значение переменной Client_Data_out. . Значение будет записано в переменную Server_Data_In. на сервере OPC UA. Это значение будет увеличено Сервером и записано в переменную Server_Data_Out. . Значение этой переменной затем будет передано в переменную Client_Data_In. на Клиенте.
Это не работает?
Пожалуйста, ознакомьтесь с Руководством по устранению неполадок в информационном центре PLCnext (внизу страницы).
Часто задаваемые вопросы
Вопрос:Может ли клиент подключиться к серверу OPC UA, используя аутентификацию по сертификату/ключу?
О:Нет, не сейчас.
Вопрос:Как клиент OPC UA хранит пароль сервера?
О:На данный момент пароль OPC UA Server хранится в виде открытого текста в файле конфигурации клиента, но разработчики PLCnext Runtime работают над более безопасным методом хранения пароля.
Вопрос:Могу ли я получить информацию о качестве (например, код состояния, метку времени) для данных, считанных с сервера OPC UA?
О:Не сейчас, извините.
Эта статья была обновлена 24 марта 2025 г. и включает информацию о функции просмотра серверов, которая теперь доступна в PLCnext Engineer.
Приложение:Конфигурация на основе файлов
Конфигурация клиента OPC UA в PLCnext Engineer хранится на контроллере в формате XML. Для приложений, которые не используют PLCnext Engineer, можно настроить клиент OPC UA, записав конфигурацию XML непосредственно на контроллере.
Конфигурация, подготовленная в этом примере, представлена в следующих XML-файлах:
- <ли>
Любые необходимые изменения в настройках клиента OPC UA по умолчанию определены в файле /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="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.phoenixcontact.com/schema/opcuaclientmoduleconfig" xmlns="http://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 определены в файле /opt/plcnext/projects/current/Services/OpcUA/Modules/Client/Configs/ clientconnections.xml. :
<?xml version="1.0" encoding="utf-8"?>
<eUAClientConfigurationDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uax="http://opcfoundation.org/UA/2008/02/Types.xsd" xmlns="http://phoenixcontact.com/OpcUA/PLCnext/UAClientConfig/Types.xsd">
<eUAClientConfiguration>
<Name>ClientConnectionsConfiguration</Name>
<NamespaceArray>
<uax:String>http://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>http://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>
Этот файл использует пространство имен. и Идентификатор узла информация, записанная ранее (с использованием UaExpert), чтобы указать, к каким переменным сервера будет обращаться клиент.
<ли>В приведенном выше файле измените следующее в соответствии с вашим приложением:
- <ли>
Элемент uax:EndpointUrl должен включать IP-адрес (или DNS-имя) вашего сервера OPC UA.
Username и Password элементы должны содержать учетные данные, необходимые для сервера OPC UA.
ВАЖНО: В этом примере Идентификатор узла строки в UaExpert включали текст ns=6 . В приведенном выше XML-файле это значение было изменено на ns=1. , поскольку параметр «пространство имен» (ns ) — это индекс списка пространств имен на локальном клиенте . В этом примере Пространство имен имя, скопированное из UaExpert, является первым (и единственным) пространством имен в списке пространств имен в нашем clientconfig.xml. файл.
Среду выполнения PLCnext необходимо перезапустить после внесения изменений в файлы конфигурации клиента OPC UA.
Промышленные технологии
- Стопорные шайбы:типы, руководство по размерам и практическое применение
- Что такое сборка? Получите факты
- Праздник вдохновения в промышленном маркетинге
- 3 основных вопроса, которые необходимо задать перед заменой распределительного устройства
- Как менеджеры поддерживают комфортную температуру на производстве
- Все, что вам нужно знать о материале паяльной маски
- Использование информационной панели OEE для визуализации производительности производства
- Учебное пособие по проектированию печатных плат KiCAD
- Последовательности
- 4 отрасли, которые должны использовать преимущества отслеживания активов