# 提供するノード

> 内蔵の OPC UA サーバーが提供するもの、そして提供するすべての一覧です。タグ、Logic 変数、警報、機器のコマンドを、書き込みを許可するまで行ごとに読み取り専用で載せます。クライアントがそれぞれをどこで見つけるか、更新したステーションで何をするかも説明します。

**提供するノード** は、Connector にある OPC UA サーバーのパネルの 4 枚目のカードです。サーバーはこの一覧だけを提供します。接続したクライアントには、ここに載せたタグ、Logic 変数、警報、機器のコマンドが見え、それ以外は見えません。カードは表題の下でこう述べています。「サーバーはこの一覧だけを提供します。各行はタグ、Logic 変数、警報、機器のコマンドのいずれかです。書き込みを許可するまで行は読み取り専用です。許可すると、クライアントの書き込みはほかの書き込みと同じ経路を通り、クライアントのセッションとともに診断ログに記録されます。」Connector の表示はカードを読み、Connector の構成はカードを変えます。

## 空の一覧 {#an-empty-list}

一覧は空から始まります。新しいステーションでも、すべての機器をまるごと提供していた版から更新したステーションでも同じです。空の間は、カードの注意書きがこう述べます。「一覧が空のため、サーバーはステーションの何も提供していません。行を追加するまで、OPC UA クライアントにはタグも変数も警報もコマンドも見えません。」サーバーは待ち受けを続け、[クライアントアクセス](connector-opcua-client-access) が許すセッションも受け付けますが、それらが見て回るアドレス空間にはステーションのものが何もありません。エージェントは `server_status` で同じことを読み、一覧が空の間は `servesNothing` が true になります。

## 表 {#the-table}

| 列 | 示すもの |
| --- | --- |
| **信号源** | 行が提供するものを選択欄の付ける名前で示します。信号源をまだ選んでいない間は「信号源はまだありません」です。 |
| **アクセス** | **読み取りのみ** または **読み書き**。機器のコマンドでは **呼び出し可** です。 |
| **ノード** | クライアントに設定するアドレスを `nsu=<namespace>;s=<identifier>` の形で示します。行が何も提供していない間は空です。 |

行は種類（タグ、変数、警報、コマンド）の順、次に名前の順に並びます。1 行もないときは、表に「まだ提供しているノードはありません。新しい行で追加してください。」と出ます。行をクリックするとその行が選ばれ、表の下にその項目が開きます。どの行を選んでいるかは、いま使っているウィンドウのものです。

| コマンド | すること | 灰色になるとき（状況） | 描かれないとき（ロール） |
| --- | --- | --- | --- |
| **新しい行** | まだ何も提供しない読み取り専用の行を追加して選び、次に信号源を選べるようにします。操作ログ帯に「OPC UA サーバーの一覧に行を追加しました。信号源を選んでください。」と出ます。 | 実行記録がステーションを押さえている、またはランタイムが止まっているとき。 | Connector の構成 がないとき。 |
| **行を削除**（危険の色） | 表で選んでいる行を、確かめずにすぐ削除します。ツールチップはその行が提供する信号源の名前を示し、操作ログ帯が削除を伝えます。信号源そのものには触れません。クライアントはそのノードを見つけられなくなります。 | 行を選んでいないとき（「削除する行を一覧で選んでください。」）、実行記録がステーションを押さえているとき、またはランタイムが止まっているとき。 | Connector の構成 がないとき。 |

## 行の項目 {#a-rows-fields}

各項目は変えた瞬間に保存され、サーバーは少しあとに新しい行を提供します。セッションは切れません。サーバーは一覧を 1 秒に 10 回読みます。

| 項目 | すること | 値と既定 |
| --- | --- | --- |
| **信号源** | 行が提供するものです。一覧は「（なし）」で始まり、続いて有効な機器の有効なタグがドライバー、機器、タグ自身の名前で並びます（「タグ · Simulated · Oven · Temperature」）。次に値を持つ Logic 変数がフォルダーと名前で並び（「変数 · Oven / Setpoint」）、次に警報が同じように並び（「警報 · Oven / High temperature」）、最後に有効な機器のコマンドが並びます。機器のページで宣言したコマンドと、充電器のようにプロトコルが決めているコマンドです（「コマンド · OCPP · Charger · Reset」）。信号源は一覧に 1 度しか載せられません。行は信号源を識別子で持つので、名前を変えても行は同じ信号源のままで、サーバーは新しい名前で提供します。一覧に出なくなった信号源は選ばれたまま名前で示され、無効なタグやコマンドは除外の理由も示されます。もう存在しない信号源だけが見つからないものとして識別子で示されます。タグの [「使っている場所」](connector-tags#the-used-by-card) カードには、そのタグを提供する行が並びます。 | 新しい行では「（なし）」。 |
| **アクセス** | クライアントがその行に書き込めるかどうかです。信号源が書き込みを受けない場合、**読み書き** は一覧に残ったまま灰色になり、ツールチップに「この信号源は書き込みを受けません。受けるのは書き込みアクセスのあるタグか内部値の変数だけです。」と出ます。警報を選ぶと、行は読み取り専用に戻ります。コマンドの行では、このフィールドに選択欄はなく、**呼び出し可** が固定値として表示されます。コマンドは呼び出すものであり、読み書きするものではないためです。 | **読み取りのみ** または **読み書き**。コマンドでは固定で **呼び出し可**。新しい行では読み取りのみ。 |

項目の下の 1 行が、その行がクライアントに何をするかを述べます。

| カードの表示 | 出るとき |
| --- | --- |
| 「この行はまだ何も提供していません。信号源を選んでください。」 | 信号源を選んでいないとき。 |
| 「この行の信号源はもうないため、サーバーはこの行で何も提供しません。」 | タグ、変数、警報、コマンドのいずれかが削除されたとき。 |
| 「クライアントはこのノードを読めますが、書き込めません。」 | 読み取り専用のタグか変数。 |
| 「クライアントはこのノードを読み書きできます。書き込みはクライアントのセッションとともに診断ログに記録されます。」 | 読み書きとしたタグか変数。 |
| 「クライアントは警報の Active、Acked、State、Priority、Message を読むだけで、書き込むことはありません。」 | 警報。 |
| 「一覧にある間、クライアントはこのコマンドを機器のメソッドとして呼び出せます。」 | 機器のコマンド。 |

その下で、**クライアントが見つける場所** のあとにノードが続きます。

## 行が受け付けないこと {#what-a-row-refuses}

一覧の決まりが拒んだ変更は保存されません。理由が行の項目の上に赤で出て、変更は直せるように画面に残り、行はそれまで提供していたものを提供し続けます。

| カードの表示 | 出るとき |
| --- | --- |
| 「この信号源はすでに一覧にあります。クライアントはその行が提供するノードで見つけます。」 | その信号源がすでに別の行にあるとき。 |
| 「この信号源には書き込めません。書き込みアクセスのあるタグか内部値の変数を選ぶか、行を読み取り専用のままにしてください。」 | 読み取り専用のタグ、書き込まないドライバーのタグ、式の変数、警報、コマンド、もう存在しない信号源に読み書きを求めたとき。 |
| 「書き込みを受ける行には、書き込み先のタグまたは変数が必要です。」 | 信号源のない行に読み書きを求めたとき。これを求められるのはエージェントだけです。 |
| 「一覧のこの行はもうありません。読み込み直してからやり直してください。」 | 編集している間に、ほかのウィンドウやエージェントがその行を削除したとき。 |

実行記録がステーションを押さえている間やランタイムが止まっている間は、ページのほかの変更と同じように拒まれ、理由が操作ログ帯に出て、何も保存されません。

## クライアントが信号源を見つける場所 {#where-a-client-finds-each-source}

| 信号源 | ある場所 | クライアントが読むもの |
| --- | --- | --- |
| タグ | これまでと同じ場所です。機器の名前空間 `http://opcfoundation.org/UA/<driver>.<device>/` に、タグ自身の名前であります。一覧ができる前に設定したクライアントも、同じアドレスで見つけます。アドレス空間をたどるクライアントは、Objects の下の `Devices` フォルダーにある、機器の名前のオブジェクトの中で見つけます。 | 機器が答えた値を、Connector が読むとおり品質と時刻つきで読みます。 |
| Logic 変数 | Objects の下の `Logic` フォルダーにあり、Logic 自身のフォルダーの中に、サーバーの名前空間 `http://opcfoundation.org/UA/EdgeTranslator/` の Logic アドレス（`Variables.Oven.Setpoint`）であります。 | ステーション共通の変換で型を決めた値です。Boolean、整数は Int64、小数は Double、テキストは String、日時は DateTime です。有効な値のない変数は BadDataUnavailable になります。 |
| 警報 | Objects の下の `Alarms` フォルダーにあり、Logic 自身のフォルダーの中に、Logic アドレス（`Alarms.Oven.HighTemperature`）の 1 つのオブジェクトとしてあります。 | 読み取り専用の 5 つのメンバーです。Active と Acked（Boolean）、State（Int32：0 が正常、1 が発生中・未確認、2 が発生中・確認済み、3 が復帰・未確認）、Priority と Message（String）です。品質が悪い間に警報が状態を保っているとき、Active、Acked、State は UncertainLastUsableValue になります。 |
| コマンド | 機器のタグの隣にある、機器のメソッドです。 | コマンドが宣言する値で呼び出され、機器が答えた内容を返します。 |

一覧がその機器の何を提供していても、どの機器も自分の名前空間を持ち続けます。ほかの機器のタグが一覧に入ったり出たりしても、クライアントが名前空間を見つける番号は動きません。一覧が何も載せていない機器には、ノードがありません。

## 書き込み {#writing}

クライアントの書き込みがステーションに届くのは、読み書きとした行だけです。書き込みが届いた瞬間に一覧をもう一度確かめるので、いま読み取り専用にした行に書き込まれることはありません。タグへの書き込みは、外からのほかの書き込みと同じように機器の配送待ち行列に入り、答えは機器を待ちます。内部値の変数への書き込みは Logic の書き込みの漏斗を通り、変数の型に変換されます。信号源のロックが当たります。実行中の Process が押さえている信号源は拒まれます。書き込みはすべて、クライアントのアプリケーションとセッションとともに診断ログに記録されます。式の変数と警報は書き込みを受けず、サーバーは BadNotWritable を返します。コマンドは書き込むのではなく呼び出すもので、クライアントが呼び出せるのは一覧にあるコマンドだけです。

## 更新したステーション {#an-updated-station}

一覧のない版から更新したステーションは、すべての機器のすべてのタグを提供していました。そのステーションの一覧は空から始まるので、更新後は一覧を組み立てるまで OPC UA サーバーは何も提供しません。クライアントが読むタグごとに行を追加し、クライアントが書き込むものを読み書きにし、クライアントが呼び出すコマンドを追加してください。更新前に設定したクライアントは、どのタグもこれまでのアドレスで見つけるので、クライアント側を変える必要はありません。

## エージェントで {#with-an-agent}

```text
server_list_upsert(source: "Connector.Simulated.Oven.Temperature")
server_list_upsert(source: "Variables.Oven.Setpoint", access: "ReadAndWrite")
server_list_upsert(source: "Alarms.Oven.HighTemperature")
server_status()
```

エージェントが作る行は、`access` がほかを指定しない限り読み取り専用です。`server_list_delete` は識別子で行を削除します。ツールは [ツールを範囲ごとに](agent-tools#connector--configure) で説明しています。

## 一覧がしないこと {#what-the-list-does-not-do}

一覧はサーバーをオンにしません（それはコマンドバーの有効化がします）。どのクライアントが接続できるかも決めません（それは [クライアントアクセス](connector-opcua-client-access) が決めます）。外から警報を確認することもしません。確認はオペレーターのコマンドのままです。提供するのは上の値で、OPC UA のアラームとコンディションのイベントは提供しません。画像、アイコン、色を持つ変数は一覧に出ず、機器の記述にある定数は提供しません。
