PLCnext Control での OPC UA クライアントの構成:ステップバイステップ ガイド
ファームウェア バージョン 2023.0 には、待望の OPC UA クライアント コンポーネントが含まれています。 PLCnext 情報センターには、この機能に関する優れた技術リファレンスが含まれています。
このチュートリアルは、OPC UA サーバーとデータを交換できるように、PLCnext コントロール デバイスで OPC UA クライアントを設定する方法を示すステップバイステップのガイドです。
必要なものは次のとおりです。
- ファームウェア バージョン 2023.0 以降を実行し、OPC UA クライアントとして機能する PLCnext Control デバイス。 PLCnext コントロール デバイスのファームウェアをアップグレードする必要がある場合は、情報センターに示されている手順に従ってください。
- PLCnext Engineer バージョン 2023.3 以降
- OPC UA サーバー。この記事では、2 番目の PLCnext Control デバイスを OPC UA サーバーとして使用しますが、クライアントのホストに使用しているのと同じ PLCnext Control デバイスを使用することも、代わりに (たとえば) Windows PC 上で実行されているサードパーティの OPC UA サーバーを使用することもできます。サードパーティのサーバーの場合は、以下の「サーバー」の手順をサーバーに適応させる方法を理解する必要があります。
- Unified Automation の UaExpert。独自の OPC UA クライアントの構成で使用する OPC UA サーバー タグに関する情報を取得するために必要です。
OPC UA 通信を構成するときに覚えておくべき重要なポイントの 1 つは、セキュリティ上の理由から、OPC UA クライアントと OPC UA サーバーが相互に信頼する必要があるということです。したがって、クライアント デバイスとサーバー デバイスの間でセキュリティ証明書を交換する必要があります。この手順では、クライアント デバイスとサーバー デバイスの間を移動する必要があるため、少し混乱する可能性があります。 (セキュリティ チェックを無効にせずに) 手順を簡略化する方法についての提案がある場合は、お気軽にコメントに追加してください。
手順
OPC UA サーバー デバイス
<オル>PLC の IP アドレスを参照して、Web Based Management (WBM) サイトを開きます。
[システム サービス] を選択します。 [設定] メニューから項目を選択します。
OPC UA サーバーをアクティブ化します。 サービスがまだ有効になっていない場合。
適用して再起動を押します。 必要に応じて、 ボタンをクリックします。
PLCnext エンジニアを開きます。
PLCnext コントロール デバイスのテンプレートを使用して、新しい PLCnext エンジニア プロジェクトを作成します。
PLCnext Engineer プロジェクトで PLC の IP アドレスを設定します。
OPC UA サーバー上 設定ページ:
-
DNS 名 / IP アドレスを設定します。 OPC UA クライアントがサーバーに DNS 名またはサーバーの IP アドレスのどちらを使用してアクセスするかに応じて、PLC の DNS 名または IP アドレスに設定されます。この情報は、OPC UA サーバーのセキュリティ証明書に含まれます。多くの OPC UA クライアントは、証明書内のこの情報がサーバー URL と一致しない場合、サーバー証明書を拒否します。
-
変数の可視性を設定します マーク付きに 。これは、OPC 属性でマークされたすべての変数が OPC UA サーバーを通じてアクセスできることを意味します。
OPC UA サーバーによって公開される変数を作成します。 OPC を確認してください。 これらの変数のチェックボックスがオンになっています。以下の例では、Main プログラムに 2 つの変数が作成されています。
新しい入力値を受け取ったときに出力変数を変更するロジックを追加します。この例では、Main プログラムは次のコードを実行しました。
Server_Data_Out := Server_Data_In + 1;
プロジェクトを作成して開始します。
PLCnext Engineer バージョン 2025.0 以降には、OPC UA クライアントで変数エントリを作成するために使用できる「参照」機能が含まれていることに注意してください。その参照機能を使用する場合、サーバー変数に関する情報を取得するために UaExpert を使用する必要はなく、次の 3 つの手順をスキップできます。
UaExpert を使用して、PLC ユーザー名とパスワードを使用して OPC UA サーバーに接続します。証明書が「信頼できない」という警告が表示されますが、その他の警告は表示されません。
サーバー証明書を永続的に、またはこのセッションに対してのみ信頼します。
サーバー変数ごとにノード ID の名前を書き留めます。 と名前空間
サーバー PLC の WBM サイトを再度開きます。
証明書認証を選択します。 [セキュリティ] メニューの項目。
アイデンティティ ストアを選択します。 タブ。
OPC UA 自己署名から証明書をダウンロードします。 [サーバー] アイデンティティ ストア。キー ペアをダウンロードする必要はありません。
OPC UA クライアント デバイス
<オル>PLC の IP アドレスを参照して、Web Based Management (WBM) サイトを開きます。
[システム サービス] を選択します。 [設定] メニューから項目を選択します。
OPC UA クライアントをアクティブ化します。 サービスがまだ有効になっていない場合。
適用して再起動を押します。 必要に応じて、 ボタンをクリックします。
再起動が完了したら、WBM サイトに再度ログインし、証明書認証を選択します。 [セキュリティ] メニューの項目。
トラスト ストアを選択します。 タブ。
OPC UA 自己署名を追加します。 [サーバー] 証明書 (以前にダウンロードした) を OPC UA クライアント という名前のトラスト ストアに追加します。 。これで、OPC UA クライアントは、OPC UA サーバーが自身の身元を確認するために使用するセキュリティ証明書を信頼するようになります。この手順は、サーバー証明書が変更されるたびに繰り返す必要があります。
アイデンティティ ストアを選択します。 タブ .
OPC UA クライアントの自己署名から証明書をダウンロードします。 アイデンティティ ストア。キー ペアをダウンロードする必要はありません。
OPC UA サーバー デバイス
<オル>PLC の IP アドレスを参照して、Web Based Management (WBM) サイトを開きます。
証明書認証を選択します。 [セキュリティ] メニューの項目。
トラスト ストアを選択します。 タブ。
自己署名 OPC UA クライアントを追加します。 証明書 (以前にダウンロードした) を OPC UA 構成可能 という名前のトラスト ストアに追加します。 。これで、OPC UA サーバーは、OPC UA クライアントが自身の身元を確認するために使用するセキュリティ証明書を信頼するようになります。この手順は、クライアント証明書が変更されるたびに繰り返す必要があります。
OPC UA クライアント デバイス
<オル>PLCnext エンジニアを開きます。
PLCnext コントロール デバイスのテンプレートを使用して、新しい PLCnext Engineer プロジェクトを作成します。 OPC UA クライアントと OPC UA サーバーの両方に同じデバイスを使用している場合は、同じ PLCnext Engineer プロジェクトが使用されます。
PLCnext Engineer プロジェクトで PLC の IP アドレスを設定します。
2023.6 より前のファームウェア バージョンを実行している PLC にのみ必要です: OPC UA サーバー上 設定ページで変数の可視性を設定します。 マーク付きに 。はい、OPC UA クライアントにこの OPC UA サーバー設定を要求するのは奇妙に思えます。この問題はファームウェア バージョン 2023.6 以降で修正されています。
OPC UA サーバーの変数に接続される変数を作成します。 2023.6 より前のファームウェア バージョンを実行している PLC にのみ必要です: OPC を確認してください。 これらの変数のチェック ボックスはオンになっています (ファームウェア バージョン 2023.6 以降を実行している PLC の場合、チェック ボックスをオンにする必要はありません)。
以下の例では、Main プログラムに 2 つの変数が作成されています。
[OPC UA クライアント接続] タブで、以下に示すように、1 つのサーバーと 2 つの変数グループを追加します。
サーバー URL、ユーザー名、パスワードは、使用している OPC UA サーバーに合わせて変更する必要があります。
「Subscribe」変数グループに、以下に示すように 1 つの変数マッピングを追加します。
これにより、(OPC UA サーバー上の) リモート変数から PLCnext Engineer プロジェクトのローカル変数に値が自動的に転送されます。
「書き込み」変数グループに、以下に示すように 1 つの変数マッピングを追加します。
これにより、値が PLCnext Engineer プロジェクトのローカル変数から (OPC UA サーバー上の) リモート変数に自動的に転送されます。
PLCnext Engineer プロジェクトを作成して開始します。
デバッグ モードで、変数 Client_Data_out の値を変更します。 。値は変数 Server_Data_In に書き込まれます。 OPC UA サーバー上。この値はサーバーによってインクリメントされ、変数 Server_Data_Out に書き込まれます。 。その変数の値は変数 Client_Data_In に転送されます。 クライアント上で。
うまくいかないのですが?
PLCnext インフォ センター (ページの下部) でトラブルシューティング ガイドを確認してください。
よくある質問
Q:クライアントは証明書/キー認証を使用して OPC UA サーバーに接続できますか?
A:いいえ、現時点ではありません。
Q:OPC UA クライアントはサーバーのパスワードをどのように保存しますか?
A:現時点では、OPC UA サーバーのパスワードはクライアント構成ファイルにクリア テキストとして保存されていますが、PLCnext ランタイムの開発者は、より安全なパスワード保存方法の開発に取り組んでいます。
Q:OPC UA サーバーから読み取られたデータの品質情報 (ステータス コード、タイムスタンプなど) を取得できますか?
A:現時点ではありません。
この記事は 2025 年 3 月 24 日に更新され、PLCnext Engineer で利用できるようになったサーバー ブラウズ機能に関する情報が含まれています。
付録:ファイルベースの構成
PLCnext Engineer の OPC UA クライアント設定は、XML 形式でコントローラに保存されます。 PLCnext Engineer を使用しないアプリケーションの場合、XML 設定をコントローラに直接記述することで OPC UA クライアントを設定できます。
この例で準備された構成は、次の 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>
このファイルは名前空間を使用します。 およびノード ID 以前に記録した情報 (UaExpert を使用) を使用して、クライアントがアクセスするサーバー変数を指定します。
上記のファイルで、アプリケーションに合わせて以下を変更します。
-
要素
uax:EndpointUrlOPC UA サーバーの IP アドレス (または DNS 名) を含める必要があります。 -
UsernameとPassword要素には、OPC UA サーバーに必要な認証情報が含まれている必要があります。
重要: この例では、ノード ID UaExpert の文字列にはテキスト ns=6 が含まれていました 。上記の XML ファイルでは、これは ns=1 に変更されています。 、「名前空間」パラメータ (ns) があるためです。 ) はローカル クライアント上の名前空間のリストへのインデックスです。 。この例では、名前空間 UaExpert からコピーされた名前は、clientconfig.xml の名前空間リストの最初 (そして唯一) の名前空間です。 ファイル。
OPC UA クライアント設定ファイルに変更を加えた後は、PLCnext ランタイムを再起動する必要があります。
産業技術