OPC UA
ほかのメーカーのサーバーに向かう OPC UA のクライアント。証明書で守られた信頼、ノード ID によるアドレス指定、アドレス空間の機器検出。
OPC UA のドライバーは、ほかのメーカーの OPC UA サーバー、つまり PLC、ゲートウェイ、ヒストリアン、ほかの SCADA システムに opc.tcp で向かうクライアントです。このステーション自身のアドレス空間を公開する内蔵の OPC UA サーバー(設定で説明します)の、出ていく側の相手役にあたります。2 つはステーションのアプリケーションの身元を共有しますが、相手を信頼するかどうかはそれぞれ別に決めます。
機器
| 項目 | 意味 | 既定 |
|---|---|---|
| ホスト | サーバーの DNS 名、IPv4、IPv6 のアドレス。 | 空のときは localhost |
| ポート | エンドポイントの TCP のポート。 | 4840(0 を設定すると 4840 に戻ります) |
| リソースのパス | ホストとポートのあとに一部のサーバーが求めるエンドポイントの経路で、opc.tcp://host:port/path になります。サーバーがルートで答えるときは空のままにします。 |
空 |
| セッションのセキュリティ | オフなら、セッションは署名され暗号化され、それより安全な方法を持たない現場設備は拒否されます。セキュリティなしのセッションを許可するにすると、安全なエンドポイントを公開しない現場設備でも、平文のままセッションを開きます。 | オフ |
| ユーザー名 / パスワード | セッションのユーザーの身元です。ユーザー名が空なら匿名のセッションになります。パスワードは、ユーザーごとの Windows の DPAPI で保存時に保護され、入力した機械と Windows アカウントでのみ読めます。 | 匿名 |
| 読み出し周期(ms) | 上書きしないタグに対する既定の読み出しの速さ。 | 1000 |
セキュリティと証明書
接続は、サーバーのエンドポイントの一覧から始まります。クライアントはサーバーが公開しているうちで最も安全なエンドポイントを選び、このステーション自身の証明書、つまり内蔵サーバーが使うのと同じ OPC UA のアプリケーションの身元で、アプリケーションを認証します。多くのサーバーは、セッションを受け入れる前に相手側でその証明書を信頼しておくよう求めます。その手続きは現場設備の側で行います。
セキュリティなしのエンドポイントより良いものを公開しない現場設備は拒否され、機器がその理由を伝えます。そのセッションは測定値も資格情報も平文で運び、現場設備の身元を何も証明しないので、その機器でそう頼んだところでだけ開きます。接続のカードのセッションのセキュリティ、セキュリティなしのセッションを許可するです。この選択はその機器のものであり、その機器のアドレスに ?security=none として乗り、読み取りのセッションにも機器検出の巡回にも同じように効きます。オンにしても、セキュリティを備えた現場設備が格下げされることはありません。公開されているうちで最も安全なエンドポイントが選ばれるままです。
反対の方向では、信頼は閉じた側に倒れ、明示的です。現場設備の証明書は、セッションが開く前に確かめられます。
- このステーションが一度も承認していない証明書は拒否され、確認のために記録され、機器のパネルには何の承認を待っているかを名指しする知らせが出ます。その機器は「オフライン」なのではなく、判断を待っています。
- 証明書は設定 → 現場設備へのアクセスで確認します。ここは証明書の信頼のうち、出ていく側の半分です。記録された証明書は、承認する(新しいセッションが開けるようになります)か遮断する(繰り返し尋ねずに拒否します)まで、承認待ちに置かれます。これは現場設備の一覧です。同じページのクライアントアクセスは逆向き、つまりこのステーション自身のサーバーへ入ってくる接続を誰に許すかです。
- 承認済みの行にある承認を取り下げるは、その証明書で動いているセッションを閉じ、確認の一覧に戻すので、次の接続でもう一度尋ねられます。
- 証明書をまったく出さない現場設備は、誰が応答したのかを何も証明しません。承認すべきものがないので、そのセッションはアドレスを日誌に書いたうえで拒否されます。同じセキュリティなしのセッションを許可するのもとでだけ接続でき、そのときはその選択が承認の代わりになります。
機器のサーバーを承認しても、その証明書がこのステーション自身のサーバーへ入ってくることを認めたことにはなりません。2 つの方向は、意図して別々の保管場所を持ちます。
セッションの振る舞い
タグは読みに行きます。読み取りのたびに、そのノードの現在の値をサーバーに尋ねます。サーバー自身の判断は、どのサンプルにも付いてきます。Bad や Uncertain の印が付いた値は拒否され、そのタグは品質が悪いものとして読まれるので、疑わしい取得元がきれいな読み取りに化けることはありません。サーバー上にもう存在しないノードは、機器全体を失敗させるのではなく、値なしとして読まれます。
セッションはキープアライブで見張られます。キープアライブを 3 回取り逃がすと、クライアントは自動の再接続を始めて先に進みます。最初の接続はアプリの背後の再試行の繰り返しが受け持つので、届かないサーバーがあっても起動時の損はありません。
タグのアドレス指定
タグはノード ID でアドレスを取ります。自由記述で入力し、そのまま送られます。受け付ける形は、OPC UA の標準の書き方です。
| 例 | 意味 |
|---|---|
ns=2;s=Temperature |
名前空間の番号 2 の文字列の識別子 |
i=2258 |
名前空間 0 の数値の識別子(ここではサーバーの CurrentTime) |
ns=3;i=1042 |
名前空間の番号 3 の数値の識別子 |
nsu=urn:vendor:app;s=Line1.Speed |
名前空間を番号ではなく URI で名指しする展開した形。再起動をまたいで番号が変わっても壊れません |
タグはノードの Value 属性を読み書きします。
値の型
| 出る型 |
|---|
| Boolean、Byte、Int16、Int32、Int64、Float、Double、String |
値はスカラーだけです。配列、構造体、そのほかの複雑な値は、紛らわしい数値に押しつぶされるのではなく、読めないものとして拒否され、そのタグは品質が悪いものとして読まれます。そういうタグは自分だけが失敗します。その機器のほかのタグは読み取りを続け、そのために再接続が起こることもありません。空の文字列は値であって、失敗ではありません。出る型に入らない型(符号なしの各幅、DateTime、Guid、ByteString)は、このドライバーでは使えません。
そのため、サーバーをスキャンして出るチャネルは、サーバーが持っているものより少なくなります。値の並びを宣言しているノードと、出る型に入らない型のノードが外れるからです。ただし黙って落とされるわけではありません。スキャンはそれを数え、締めくくりの文言が、何件、どの型が外れたかを伝えます。たとえば「チャネル 5 件が外れました:UInt32 の型が 3 件、値 1 つではなく値の並びを持つものが 2 件。」といった具合で、短い一覧が、中身の乏しいコントローラーではなく短い一覧として読めるようになります。
書き込み
書き込めるタグは、OPC UA の Write サービスでノードの Value 属性に書き込みます。判断はサーバーの応答です。拒否された書き込みは失敗として表に出て、保持している値は受け入れられたときにだけ進みます。ほかと同じで、書き込みの入力欄は工業値を取り、生値が送られる前に値の変換経路が逆にたどられます。
機器検出
機器検出のコマンドは、その横の入力欄で対象を取ります。opc.tcp://plc-host:4840 のような OPC UA サーバーのアドレスです。スキャンは 2 段階で、進み具合の行が今どちらが動いているかを名指しします。
- エンドポイント:対象の標準の機器検出のサービスに問い合わせ、公開されているすべての機器検出の URL が候補のエンドポイントになります。独自のポートやサーバーの経路は、候補の接続の項目にそのまま入ります。
- チャネル:各候補のアドレス空間を Objects のフォルダーから下へ巡り、読めるすべての変数を、その型とアクセスとともに候補のタグとして並べます。サーバーの診断の領域は飛ばします。
巡回は匿名でサインインします(同じく最も安全なエンドポイントを選び、セキュリティなしのセッションを同じように拒み、同じ現場設備の証明書の関門を通ります)。匿名のセッションを拒むサーバー、安全なエンドポイントを公開しないサーバー、何らかの理由で失敗した巡回でも、そのエンドポイントはタグ 0 件で追加できます。追加してから機器に資格情報とセッションのセキュリティを設定し、タグを手で設定してください。候補を追加するまで何も保存されず、取りやめてもすでにそろっていた候補は残ります。
知っておきたい限界
- 読み取りは Value 属性の定期的な問い合わせです。このドライバーが相手のサーバー上にサブスクリプションを作ることはありません。
- 値はスカラーだけです。タグが配列の要素や構造体のメンバーを指すことはできません。
- 承認の関門は証明書ごとに効きます。証明書を入れ替えた現場設備は確認の一覧に戻り、新しい判断を待ちます。