# 機器のフォルダー

> ドライバーの下のフォルダー：作成、名前の変更、削除、機器の整理、2 階層までの制限、フォルダーのページ、そしてフォルダーが Logic のアドレスの 1 階層になる仕組み。

**フォルダー**は、「通信」欄で 1 つのドライバーの下の機器をまとめるもので、深さは 2 階層までです。バスの上では何も変わりません。定周期読み出し、Process のバインド、公開される OPC UA の名前空間は、フォルダーを一切見ません。ただしフォルダーは、Logic とダッシュボードが使う**アドレス**の 1 階層なので、機器を整理することはアドレスの変更であり、アプリケーションがすべての参照を書き換えます。フォルダーは Modbus RTU と MQTT 以外のすべてのドライバーにあります。Modbus RTU の機器は代わりにシリアル回線によって、MQTT の機器はブローカーによって整理されます。Generic serial and TCP と SCPI instruments では、フォルダーを使えるのは回線上にない機器だけで、シリアル回線上の機器は回線によって整理されます。フォルダーを見るには Connector の表示が、フォルダーのコマンドにはすべて Connector の構成が必要です。

## フォルダーを作る {#creating-a-folder}

| 操作 | どこに置かれるか |
| --- | --- |
| 欄のフッターの**新規…** > `<Driver>` > **新しいフォルダー** | ドライバー自身の階層に。機器をフォルダーに入れられる追加済みのドライバー、つまり Modbus RTU と MQTT 以外のすべてのドライバーの下に出ます。 |
| 欄のフッターの**新規…** > `<Driver>` > `<Folder>` > **新しいサブフォルダー** | そのフォルダーの中に、2 段目として。1 段目のフォルダーにだけ出ます。 |
| 開いているフォルダーのバー、またはその右クリックメニューの**新しいフォルダー** | そのフォルダーの中に、2 階層目として。2 階層目のフォルダーでは、バーでは灰色になり（「このフォルダーは、入れ子にできる深さの限界です。」）、メニューでも同じように灰色になります。 |
| 機器を右クリック > **移動先** > **新しいフォルダー** | ドライバーの階層に作られ、同じ操作でその機器がそこに移ります。 |
| 機器を右クリック > **移動先** > **ここに新しいサブフォルダー** | 1 階層目のフォルダーの中にすでにある機器にだけ出ます。サブフォルダーを作って、その機器を中に移します。 |

新しいフォルダーは「新しいフォルダー」（次は「新しいフォルダー 2」、以下同様）という名前になり、その上の枝が開き、行はすぐに名前の入力欄に変わります。名前を入力して Enter を押すと確定し、そのまま欄を離れると「新しいフォルダー」という名前が残ります。何かが中に入れられるまで、フォルダーは空のまま置かれます。作られたことが記録されるので、再読み込みしても、最後の機器が出ていっても残り、あるあいだはそのドライバーを削除できません。操作ログ帯には「フォルダー「新しいフォルダー」を作成しました。」と出ます。

## フォルダーのページ {#the-folder-page}

見出しにはフォルダーの名前が並び、空のフォルダーでは「フォルダーは一覧を整理するだけのものです。ここに機器を追加するか、ツリーから移してください。」、そうでなければ「このツリーで 機器 3 台 をまとめています。フォルダーは一覧を整理するだけのものです。中の機器を選ぶと、内容を見て編集できます。」と出ます。表は**直接**ここに整理されている機器を並べ（サブフォルダーはツリーの行であって、この表の行ではありません）、**機器**、**Endpoint**（基準 URI）、**タグ**、そして**開く**の操作が並びます。空のときは「ここに直接置かれた機器はありません。追加するか、ツリーから移してください。」と出ます。

### コマンドバー {#the-command-bar}

| コマンド | 何をするか | 灰色になるとき（状況） | 描かれないとき（ロール） |
| --- | --- | --- | --- |
| **新しいフォルダー** | ここにサブフォルダーを作り、その名前の入力欄を開きます。 | 実行がステーションを占有しているとき、ランタイムが停止しているとき、スキャンやペアリングが進行中のとき（「進行中のスキャンまたはペアリングを終えてから追加してください。」）、またはこのフォルダーがすでに 2 階層目にあるとき。 | Connector の構成がないとき。 |
| **フォルダー名を変更** | フォルダーの行を名前の入力欄に変えます。 | 実行がステーションを占有しているとき、またはランタイムが停止しているとき。 | Connector の構成がないとき。 |
| **フォルダーを削除**（危険色、右側） | フォルダーを空にして中身をドライバーの階層に戻し、フォルダー自体を引き上げます。 | 同じ状況。 | Connector の構成がないとき。 |

### ページ上 {#on-the-page}

フォルダーの表に行を足すものはその表の題の右、足す行の上にあります。

| コマンド | 場所 | 何をするか | 灰色になるとき（状況） | 描かれないとき（ロール） |
| --- | --- | --- | --- | --- |
| **新しい機器** | **機器**の題の右。 | このフォルダーの中に「新しい機器」を作り、この表で強調表示して見える位置までスクロールします。Matter の下では、代わりにドライバーのページにペアリングのフォームを開き、ペアリングした機器はこのフォルダーに入ります。 | 実行がステーションを占有しているとき、ランタイムが停止しているとき、またはスキャンやペアリングが進行中のとき（「進行中のスキャンまたはペアリングを終えてから追加してください。」）。Matter の下では、ペアリングに使えるネットワークがないときも（「先に、機器が参加するネットワークを追加してください。」）。 | Connector の構成がないとき。 |

フォルダーの行の右クリックメニューには、新しい機器、新しいフォルダー、フォルダー名を変更、フォルダーを削除が出ます。2 階層目のフォルダーでは、新しいフォルダーはバーと同じ理由を添えて灰色で残ります。

## フォルダーの名前を変える {#renaming-a-folder}

名前の変更は、サブフォルダーを含めて中のすべての機器を、機器の名前を変えるときと同じ参照の書き換えを通して整理し直し、そのあとでフォルダー自身の記録を移します。操作ログ帯には「フォルダー「Meters」の名前を「Utilities」に変えました。」「参照 4 件を更新しました。」と出ます。名前は、空のとき、`/` を含むとき（「フォルダーには名前が必要で、名前に「/」は使えません。」）、同じ階層のフォルダーがすでにその名前のとき（「ここには「Meters」という名前のフォルダーが既にあります。」：2 つのフォルダーを一緒にするのは移動であり、移動として指示する必要があります）、または同じ階層の機器がその名前の対応するアドレスの区切りをすでに持っているとき（「フォルダー名「Pump 1」はアドレスの区切り「Pump_1」になりますが、それは隣の機器「Pump-1」がすでに使っています。」）に拒否されます。フォルダーの名前は大文字と小文字を区別せずに比べられ、ツリーに出るのは最初に見た綴りです。大文字と小文字だけを変えることも本当の名前の変更です。アドレスが変わるからです。

中の機器を移せないとき（保存に失敗した未保存の編集、拒否された書き換え）、名前の変更はそこで止まり、どこまで進んだかを伝えます：「フォルダー「Meters」の名前の変更が、機器 5 台のうち 2 台で止まりました：… すでに移った機器は「Utilities」に残ります。」

## フォルダーを削除 {#removing-a-folder}

フォルダーを削除は、先に確認します。空のフォルダーでは「フォルダー「Meters」を削除しますか？」。そうでなければ「フォルダー「Meters」を削除しますか？中の機器 3 台は Simulated の下に戻ります。何も削除されず、すべての参照は新しいアドレスに自動で追従します。」。サブフォルダーを含めて中のすべての機器が、参照の書き換えを通してドライバー自身の階層に戻り、フォルダーの記録も一緒に消えます：「フォルダー「Meters」を削除しました。機器 3 台がドライバー自身の階層に戻りました。」「参照 4 件を更新しました。」フォルダーの削除が機器を削除することは決してありません。

## 機器を移す {#moving-a-device}

機器を右クリックして**移動先**を開きます。サブメニューには**新しいフォルダー**、**ここに新しいサブフォルダー**（機器が 1 階層目にあるとき）、そして区切り線のあとに**`<Driver>` の下**（機器がすでにドライバーの階層にあるときは灰色）と、そのドライバーの既存のフォルダーの経路のうち、その機器自身のもの以外がすべて並びます。移動は、まず機器の未保存の編集を保存し、そのタグの古いアドレスへのすべての参照を書き換え、「「Pump」を「Utilities/Meters」に移し、参照 4 件を更新しました。」または「「Pump」をフォルダーの外に移しました。」と伝えます。シリアル回線上の機器には、どのドライバーのものにも、移動先が一切出ません。機器を複製すると、元がどのフォルダーにあっても、複製は必ずドライバー自身の階層に置かれます。機器のページにフォルダーの欄はありません。整理はツリーのコマンドだからです。

## アドレスの中のフォルダー {#the-folder-in-the-address}

`Utilities/Meters` の下に整理された機器は、そのタグのアドレスを `Connector.<Driver>.Utilities.Meters.<Device>.<Tag>` として持ちます。フォルダーの各区切りも、ほかの区切りと同じ規則で整えられます（英字でも数字でもない文字はアンダースコアになり、先頭が数字ならその前にアンダースコアが付きます）。バス識別子 `<Driver>.<Device>:<Tag>` はそのままなので、機器を整理しても内蔵サーバー、実行中の Process のバインド、外部の OPC UA クライアントは何にも気付きません。アドレスはツリーの経路そのものなので、大文字と小文字だけが違う綴りのフォルダーに機器を移すと、2 つ目のフォルダーが開くのではなく、すでに描かれているフォルダーに入ります。2 つの識別名については [Connector](connector#wire-key-and-address-the-two-identities-of-a-tag) で説明しています。

## ツリーの中のフォルダー {#folders-in-the-tree}

フォルダーの行は、機器の台数（「機器 2 台」または「空」）と、サブフォルダーを含めてその下のすべての機器をまとめた稼働状態のドットを見せます。無効な機器は中立で、フォルダーを黄色や赤に引き下げることはありません。検索ボックスはフォルダーの名前にも一致し、一致したフォルダーはその下のすべてを見えたままにします。正常、問題あり、オフのチップの下では、中の何かが条件を満たすときにフォルダーが描かれます。空のフォルダーには、条件を満たすものが中にありません。検索ボックスが空のときは「すべて」のときだけ描かれ、検索の文字を入力しているときは、その文字が自分の名前か、上にあるフォルダーやドライバーの名前に一致すれば、どのチップの下でも描かれます。フォルダーはドライバーの下で名前順に先に並び、そのあとにドライバー自身の階層に置かれた機器が続きます。

## フォルダーがしないこと {#what-folders-do-not-do}

フォルダーは自分の設定を持ちません。説明もアイコンもなく、フォルダーごとの定周期読み出しや稼働状態の規則もありません。フォルダー自体をアドレスで指すものはなく、空のフォルダーはアドレスを公開しません。フォルダーは 2 階層より深くは入れ子にできず、ドライバー間で共有されず、Modbus RTU と MQTT の下、そしてシリアル回線上には存在しません。
