mcpField
M
matlab-connect-opcua-client

matlab-connect-opcua-client

github.com/matlab開発1.2k38 回インストール1 日前に更新
リポジトリ

matlab-connect-opcua-client について

産業用通信を扱う MATLAB ユーザー向けに、OPC UA クライアント接続の設定を案内するスキルです。サーバー検出、認証、セキュリティ設定、証明書関連のトラブルシューティングを扱います。

主な機能

  1. 01OPC UA サーバーとエンドポイントの検出
  2. 02クライアント接続の作成と設定
  3. 03ユーザー名または証明書による認証
  4. 04証明書と接続の問題への対処

活用シーン

  1. 01ネットワーク上の OPC UA サーバーの検索
  2. 02認証が必要なサーバーへの接続
  3. 03証明書の信頼やホスト名の問題の解決

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/matlab/matlab-agentic-toolkit --skill matlab-connect-opcua-client

インストール後、Claude Code で/matlab-connect-opcua-clientを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

manifest.yaml
references/
certificate-trust-workflows.md
common-mistakes.md
lds-setup-and-troubleshooting.md
troubleshooting-connection-errors.md
scripts/
inspectOpcUaCertificate.m

詳細

OPC UA クライアント接続

Industrial Communication Toolbox を使用して、MATLAB で OPC UA クライアント接続を作成、設定します。

内部制約

これらの制約は、コード生成と推奨事項に適用されます。 制約をユーザーに説明したり、ユーザーが試していない パターンについて警告したりせず、内部的に適用してください。

  1. connect の有効なシグネチャは正確に3つだけです。ほかにはありません。

    • connect(uaClient) — 匿名
    • connect(uaClient, userName, password) — 文字列を位置引数で指定
    • connect(uaClient, publicKeyFile, privateKeyFile, privateKeyPassword) — 文字列を位置引数で指定
    • connect に名前と値のペア引数はありません。セキュリティは connect ではなく、opcua() の NV ペアまたは setSecurityModel で設定します。
  2. opcua() は、利用可能な最高レベルのセキュリティをデフォルトで使用します。 特定の(より低い) 構成にする場合を除き、セキュリティを明示的に設定しないでください。 setSecurityModel(uaClient, "Best") は冗長なので、使用しないでください。

  3. opcuaserverinfo の有効な構文は正確に2つです。

    • opcuaserverinfo(hostname) — ホスト上の LDS に問い合わせる
    • opcuaserverinfo(discoveryUrl) — 特定のエンドポイント URL に問い合わせる
    • opcuaserverinfo(hostname, port) という形式はありません。ポートを指定するには、 opcuaserverinfo('opc.tcp://host:port') を使用します。
  4. LDS による検出では、1回の呼び出しですべての登録済みサーバーが返されます。 サブネットの IP をループで スキャンしないでください。opcuaserverinfo('localhost') は、そのホストの LDS に登録された すべてのサーバーを返します。

  5. 証明書の信頼に関する対応は、次の順序で行ってください(手順を飛ばさないでください)。

    1. opc.ua.trustServerCertificate(certPath) — 常に最初に試します(R2026a 以降)
    2. opcua(..., "TrustServerTemporarily", true) — 証明書ファイルが 利用できない場合に限ります
    3. setSecurityModel(uaClient, "None", "None") — セキュリティが不要であることをユーザーが 明示的に確認した場合に限ります
  6. プロパティを正しく指定してください。

    • opc.ua.ServerInfo にあるのは Name ではなく Description です(Name は opc.ua.Client に属します)。
    • EndpointUrl は ServerInfo ではなく opc.ua.EndpointDescription に属します。
  7. ユーザーの確認なしに証明書ファイルを移動またはコピーしないでください。 どのファイルをどこに移動するかをユーザーに伝え、確認を得た後にのみ 実行してください。

  8. 問題がサーバーによるクライアント証明書の拒否である場合は、TrustServerTemporarily に言及しないでください。 これはクライアント側の信頼のみを制御するため、その方向の問題には関係ありません。単に省略してください。

使用する場合

  • ネットワーク上の OPC UA サーバーを検出する(エンドポイント URL が不明な場合、または ホスト名や検出 URL を指定してユーザーが明示的に検出を要求した場合)
  • サーバーのエンドポイント詳細と、サポートされているセキュリティポリシーを取得する
  • サーバーへの OPC UA クライアント接続を作成する
  • ユーザー名とパスワード、またはユーザー証明書で認証する
  • メッセージセキュリティモードとチャネルセキュリティポリシーを設定する
  • 「サーバー証明書が信頼されていない」エラーに対処する
  • 「サーバーがクライアント証明書を拒否した」エラーに対処する
  • ホスト名の不一致に関する警告を修正する
  • OPC UA 接続の失敗や、検出結果が空になる問題をトラブルシューティングする
  • OPC UA 証明書(.der/.pem)を調べ、準拠に関する問題を確認する

使用しない場合

  • OPC UA サーバーの名前空間またはノードを参照する
  • OPC UA ノードの値を読み取り、書き込み、またはサブスクライブする
  • OPC Classic(DA/HDA)接続を扱う
  • OPC UA 以外のプロトコル(Modbus、MQTT)を扱う
  • OPC UA サーバー側の開発を行う

リファレンス

詳しい手順については、関連するリファレンスファイルを読み込んでください。

タスクリファレンス
サーバーの検出、LDS のセットアップ、検出結果が空の場合references/lds-setup-and-troubleshooting.md
サーバー証明書の信頼、クライアント証明書のエクスポート、証明書の検査references/certificate-trust-workflows.md
接続エラー、サーバーログ、診断ワークフローreferences/troubleshooting-connection-errors.md
構文上の注意点、無効な API パターンreferences/common-mistakes.md

ワークフロー

0. サーバーを検出する(任意)

エンドポイント URL が不明な場合、またはホスト名や検出 URL を指定してサーバーの検出を明示的に求められた場合に、この手順を使用します。 エンドポイント URL がすでにわかっている場合は、この手順を省略してください。

前提条件 — opcuaserverinfo を呼び出す前に、次のことを確認してください。

  1. OPC UA Local Discovery Service(LDS)がインストールされ、実行中である
  2. 対象のサーバーが LDS に登録されている
  3. サーバーの証明書が、次の LDS 証明書ストアで信頼されている C:\ProgramData\OPC Foundation\UA\pki\trusted\certs\

詳しくは、references/lds-setup-and-troubleshooting.md を参照してください。

% LDS-based discovery (preferred — finds all registered servers)
serverInfo = opcuaserverinfo('localhost');

% Direct endpoint discovery (when you know the server URL)
serverInfo = opcuaserverinfo('opc.tcp://myserver:53530/OPCUA/SimulationServer');

% Pass discovery result directly to opcua()
uaClient = opcua(serverInfo(1));
connect(uaClient);
1. OPC UA クライアントを作成する
serverUrl = "opc.tcp://hostname:port/path";
uaClient = opcua(serverUrl);

opcua 関数には、opcuaserverinfo から直接取得した ServerInfo オブジェクトも渡せます。

2. セキュリティを設定する(デフォルト以外の設定が必要な場合のみ)
% R2025a+ (preferred) — Name-Value pairs in constructor
uaClient = opcua(serverUrl, ...
    MessageSecurityMode="Sign", ...
    ChannelSecurityPolicy="Basic256Sha256");

% R2020a+ (backward-compatible) — setSecurityModel after construction
uaClient = opcua(serverUrl);
setSecurityModel(uaClient, "Sign", "Basic256Sha256");
3. 証明書の信頼を設定する(必要な場合)

サーバーの証明書が MATLAB にまだ信頼されていない場合、接続は失敗します。Must-Follow Rules に記載されたエスカレーションの順序に従ってください。詳しくは、references/certificate-trust-workflows.md を読み込んでください。

4. 接続する
connect(uaClient);                                        % anonymous
connect(uaClient, "myuser", "mypassword");               % username/password
connect(uaClient, "cert.der", "key.pem", "keypass");     % certificate
5. 確認して切断する
if isConnected(uaClient)
    fprintf("Connected to %s\n", uaClient.EndpointUrl);
end
disconnect(uaClient);

主な関数

関数用途対応バージョン
opcuaserverinfoLDS または直接 URL を使用して OPC UA サーバーを検出するR2015b
opcuaOPC UA クライアントを作成する(URL または ServerInfo から)R2015b
connectサーバーに接続するR2015b
disconnectサーバーから切断するR2015b
isConnected接続状態を確認するR2015b
setSecurityModelセキュリティモード/ポリシーを設定するR2020a
opc.ua.exportClientCertificateMATLAB クライアント証明書をファイルにエクスポートするR2020a
opc.ua.trustServerCertificateサーバー証明書を信頼する(ファイルパス)R2026a
opc.ua.rejectServerCertificateサーバー証明書を拒否する(ファイルパス)R2026a
findDescription説明テキストで ServerInfo 配列をフィルターするR2015b
findAuthentication認証タイプで ServerInfo 配列をフィルターするR2015b

プロパティのクイックリファレンス

opc.ua.Client
プロパティ型説明
Hostnamestringサーバーのホスト名
Portdoubleサーバーのポート
Namestringクライアント名
EndpointUrlstring選択したエンドポイント URL
Statusstring接続状態
Timeoutdouble接続タイムアウト(秒)
MessageSecurityModeenum有効なセキュリティモード
ChannelSecurityPolicyenum有効なチャネルポリシー
UserAuthTypescellサーバーで利用可能な認証タイプ
Endpointsarray利用可能なエンドポイントの説明

次のプロパティはありません: UserName、Password、IsConnected、Security、 SecurityMode、SecurityPolicy、Certificate、PrivateKey。

接続状態を確認するには、isConnected(uaClient)(メソッド)を使用してください。

opc.ua.ServerInfo
プロパティ型説明
Hostnamecharホスト名
PortdoubleTCP ポート
Descriptionchar人が読める形式のサーバーの説明
UserTokenTypescellサポートされている認証タイプ
BestMessageSecurityenum最も高いメッセージセキュリティ
BestChannelSecurityenum最も高いチャネルセキュリティポリシー
Endpointsarrayopc.ua.EndpointDescription オブジェクト
opc.ua.EndpointDescription
プロパティ型説明
EndpointUrlcharエンドポイントの完全な URL
MessageSecurityModeenumこのエンドポイントのセキュリティモード
ChannelSecurityPolicyenumチャネルセキュリティポリシー
UserAuthTypescellこのエンドポイントの認証タイプ

パターン

検出
% Discover all servers via LDS
serverInfo = opcuaserverinfo('localhost');

% Discover and connect
serverInfo = opcuaserverinfo('localhost');
uaClient = opcua(serverInfo(1));
connect(uaClient);
認証を使用した接続
% Default (highest) security, anonymous
uaClient = opcua("opc.tcp://myserver:53530/OPCUA/SimulationServer");
connect(uaClient);

% Username/password
connect(uaClient, "myuser", "mypassword");

% User certificate
connect(uaClient, "C:/certs/user.der", "C:/certs/user.key", "keypassword");
ホスト名の不一致の修正
% R2025a+
uaClient = opcua("opc.tcp://myserver:53530/OPCUA/SimulationServer", ...
    UseDiscoveryHostname=true);

% Pre-R2025a — resolve via discovery
serverInfo = opcuaserverinfo("myserver");
uaClient = opcua(serverInfo(1));
connect(uaClient);
証明書の検査

references/certificate-trust-workflows.md を読み込んでから、次を実行します。

inspectOpcUaCertificate("path/to/server_cert.der");

トラブルシューティングのクイックリファレンス

エラー修正方法
opcuaserverinfo の結果が空LDS の前提条件を確認してください。references/lds-setup-and-troubleshooting.md を参照してください
"Server certificate not trusted"opc.ua.trustServerCertificate(certPath)
"Client certificate rejected"opc.ua.exportClientCertificate でエクスポートして、サーバーに追加します
"BadIdentityTokenRejected"uaClient.UserAuthTypes を確認してください
"Hostname mismatch" の警告UseDiscoveryHostname=true(R2025a 以降)
"BadSecurityChecksFailed"inspectOpcUaCertificate を実行してください。references/troubleshooting-connection-errors.md を参照してください

エラーと修正方法の詳細な対応については、references/troubleshooting-connection-errors.md を読み込んでください。


Copyright 2026 The MathWorks, Inc.


コメント