# 運転

> 使われているユニット。ユニットごとに 1 つのノードと、そのユニットを動かす操作パネルとダッシュボード、実行とは何か、開始から完了までの一生、そして停止中に何が拒まれるかです。

**運転**は、Process のページのワークスペースの欄にあるモデルの 4 つのグループの最後で、[定義](process-definition)、[可視化](process-visualization)、[段取り](process-setup)のあとに来ます。ほかの 3 つは工程を宣言し、この 1 つは使われているユニットを、ユニットごとに 1 つのノードとして抱え、そのユニットの下には、それを操作する面を抱えます。ここでは何も設定しません。ユニットはモデル自身のページで宣言し、そこで終わらせます（[ユニット](process-units)）。その操作パネルとダッシュボードは可視化の下で並べ、それが実行するものは段取りの下で組み立てます。

この枝は、モデルを見てよいすべてのロール（モデルの閲覧、手順の実行、Process の管理）に対して描かれます。レシピと判定の編集だけを持つロールには、各モデルが段取りのグループに減って見えるので、運転は描かれません。見守るのはツリーとともに自由にできますが、用意、開始、実行の操舵には**手順の実行**が要り、それを持たないロールには操作パネルが自分の面の上でそう言います。

## 運転のページ {#the-operate-page}

このグループを選ぶと、ユニットごとに 1 枚のカードの壁が開きます。見出しは「このモデルを実行するステーションです。1 つ開くと、手順を用意し、開始し、記録と判定を伴う実行を見られます。」です。カードを押すと、そのユニットが開きます。どのカードも、ユニットの実時間の状態を、次の優先の順で解決して持ちます。

| 状態 | 意味 |
| --- | --- |
| 停止信号が作動、再投入待ち、停止信号を取得できません | そのユニットの[インターロック](process-automation)が正常ではありません。モデルが外部停止を観測しているときにだけ出て、下のすべてに優先します。 |
| 設定値が機器に届くのを待っています | 実行がそのユニットを持っており、そのレシピがあるセグメントの設定値を渡し終えて、機器がそれを受け取るのを待っています。そのセグメント自身の時間はまだ数え始めていないので、これは下のすべてに優先します。データログはその下で、これまでどおり記録を続けます。これが出るのは、待つように決めたセグメントのときだけです。[レシピ](process-recipes#what-a-run-does-with-it)を参照してください。 |
| 記録中、一時停止中、保存中、準備中、終了処理中 | 実行がそのユニットを持っています。サンプルを取っている、設定値のところで一時停止している、スナップショットを書いている、実行が存在する前に予約されている、または最終の状態のあとにファイルを閉じている、のいずれかです。 |
| 待機 · 手順 | 何もそのユニットを持っておらず、その手順が次の開始のために用意されています。 |
| 待機 · 用意した手順がありません | 何もそのユニットを持っておらず、何も用意されていません。 |

ユニットのないモデルは「まだユニットがありません。モデルのページの「ユニット」の表で追加してください。」と読めます。グループのツリーの行は、自分のユニットを数えます。

詳細のバーは、2 つのまとめての引き金を載せ、手順の実行を持つロールにだけ描かれます。ここでは何も作られず何も削除されないので、このバーにはほかに何も立ちません。

| 指令 | 何をするか | 灰色になるとき（状況） | 描かれないとき（ロール） |
| --- | --- | --- | --- |
| すべて開始 | 手順が用意されていて今動けるすべてのユニットを開始します。ほかは黙って飛ばします。開始したどの実行も、この画面でサインインしている操作員を実行者として記録します。 | 今どのユニットも開始を受け付けないとき、またはまとめての指令がすでに送られている最中のとき。 | 手順の実行がないとき。 |
| すべて停止 | 今動いているすべてのユニットを停止します。すでに停止しているユニットは停止したままです。 | 今どのユニットも停止を受け付けないとき、またはまとめての指令がすでに送られている最中のとき。 | 手順の実行がないとき。 |

まとめての指令は引き金であって、そろえられた操作ではありません。どのユニットも自分で動き、1 台の拒みは記録されるだけで、ほかを巻き戻すことは決してなく、操作ログ帯が件数を伝えます（「3 台のユニットを開始しました」、「停止できたユニットはありません。」）。

## ユニット {#the-unit}

ユニット自身のページは、そのユニットの名前を出し、実行がそれを持っているかどうかを言い、その面のそれぞれへ開きます。見出しには、実行がそのユニットを持っている間、その状態のピル（記録中、一時停止中、保存中、準備中、終了処理中。待つように決めたレシピのセグメントが、まだ設定値を渡され終えていない間は「設定値が機器に届くのを待っています」。ユニットが空いている間は何もありません）が付きます。実行が待っている間は、見出しの行が「未到達: Furnace, Pump 1」、つまり機器がまだ設定値を受け取っていないチャネルに入れ替わるので、セグメントの時計がなぜ動き出していないのかをページ自身が言います。1 枚のカード**操作面**が、モデルが定義する操作パネルとダッシュボードを、このユニットのために描いたタイルとして並べます。このページにはバーの操作も右クリックのメニューもありません。入口であって、編集する場所ではないからです。

ユニットの下では、ツリーがモデルの操作パネルごとに 1 つのノード、続いてダッシュボードごとに 1 つのノードを抱えます。どちらも、View のページが使うのと同じ舞台のバーの下に開きます。名前は「Model · Unit · Surface」で、名前の横に実行の状態のピルが付き、後ろ側に 2 つのウィンドウの操作が付きます。**拡大表示**はその面にウィンドウの全体を渡し、**全画面**（F11）は画面の全体を取り、Esc がどちらからも出ます。

- **操作パネル**のノードは、その操作パネルが並べたカードを、このユニットのために描きます。実行のカード、メタデータのカード、実行の状態、コメント、発生記録、チャネルのグラフ、生産性の記録、単発の指令、そしてその操作パネルがカードとして埋め込むどのダッシュボードもです。その面をカードごとに述べるのが[実行記録とコメント](process-runs)です。
- **ダッシュボード**のノードは、モデルの 1 つの定義を、すべての抽象的なチャネルをこのユニットのバインドした信号源で答えさせて動かします。ダッシュボードを見せるだけで、決して編集しません。編集は、可視化の下のモデル自身の行の操作です（[モデルのダッシュボード][model-dashboards]）。何も置かれていないダッシュボードは、空の舞台を描く代わりにそう言います。その指令のコンポーネントは、ここでは手順の実行だけを求めます。これはステーション自身のダッシュボードではなく、Process の正式な面だからです。

[model-dashboards]: process-dashboards

**View に表示**の印が付いた操作パネルやダッシュボードは、View のページにも、モデルのユニットごとに 1 項目として、同じ名前で現れます。どちらから見ても、描かれるものは同じです。

## 実行とは何か {#what-a-run-is}

実行とは、1 つのユニットの上での 1 つの手順の 1 回の実施です。名前は「手順 · ユニット」で、アプリのデータの根の `acquisitions` フォルダーの下の、それ自身の SQLite ファイルに記録され、履歴の索引の 1 行がそれを指します。それが、終わっていない実行を再起動のあとに見つけて再開できるようにしているものです。手順の方式が実行の枠組みです。**即時**は値を当て、1 行を記録し、一度判定して、自分で終わります。**時間指定**は手順の時間範囲を走り、必要ならサイクルとして繰り返し、最後の時間範囲が閉じたときに終わります。**制御あり**は開始時に値を当て、誰かが止めるまで記録します。

1 台のユニットに、一度に 1 つの実行だけです。開始は何を解決するよりも先にユニットを予約するので、準備中のユニットは、記録しているふりをせずに「処理中」になります。予約は実行中、一時停止中、保存中、そしてファイルの最後の閉じまで続きます。どれか 1 つのユニットが占められている間、ステーションのどの構成の面も読み取り専用になります（「ユニットが実行中の間は構成がロックされます。」）。運転そのものは生きたままです。操作することは、設定することではないからです。

## 一生 {#the-lifecycle}

| 状態 | 意味 | 入るきっかけ | 出るきっかけ |
| --- | --- | --- | --- |
| 準備中 | ユニットが予約され、実行が検証され、形になっている最中です。保存される状態ではありません。`Procedure.Status` のポイントがこれを読ませる一方で、`Busy` はすでに真です。 | 開始 | 実行が形になる（実行中）、または拒まれる（また待機） |
| 実行中 | サンプルを取っており、時間指定の実行では時間範囲の時計も動いています。 | 開始、再開 | 一時停止、停止、中止、時間範囲の終わり、失敗、インターロック |
| 一時停止中 | 時間範囲の時計が最後の設定値で凍り、データログは記録を続けます。時間指定の実行だけです。 | 一時停止 | 再開、停止、中止、インターロック |
| 保存中 | サンプルの取得は止まり、終了処理の区画が動き、凍結されたスナップショットが書かれている最中です。 | 停止、中止、時間範囲の終わり、インターロック、即時の実行の完了 | スナップショットが書かれること |
| 完了 | きれいに終わりました。総合判定は判定のものです。 | 停止、時間範囲の終わり、即時の実行のあとの保存中 | 最終です |
| 中止 | 早く終わりました。判定が何と判定していても、総合判定は不合格です。 | 中止のあとの保存中、レシピの失敗時の方針を中止にしてあるとき、インターロック、またはランタイムの停止 | 最終です |
| 失敗 | 回復できない誤りで終わりました。総合判定はありません。 | 実行中または終了中の失敗。異常終了が残した保存中の指し先は、次の起動で失敗として戻ります | 最終です |

アプリケーションが閉じたときに実行中か一時停止中だった実行は、終わりません。次の起動で再開し、時間のプロファイルは保存された区間とサイクルのところで一時停止しています。

どの実行も、誰が開始したか（開始を押した画面でサインインしている操作員、誰もいなければステーション、ユニットの自動化、またはエージェント）と、誰が終わらせたか（停止か中止について、同じ種類）を記録します。自分で走り切った時間範囲、インターロックの作動、失敗は、誰も名指さずに終わります。一時停止と再開は、誰も残しません。

## 何が拒まれ、なぜか {#what-is-refused-and-why}

- **ランタイム停止中**：ステーションのランタイムが停止している間、開始、一時停止、再開、停止、中止、単発の指令、用意、コメントはすべてその理由で拒まれ、実行のカードはそれをボタンの下に書きます。ランタイムが止まった時点でまだ開いている実行は、中止として終わります。
- **インターロック**：ユニットのインターロックが作動、再投入待ち、取得不可のいずれかである間、そのユニットで新しい開始、再開、スナップショット、判定、レシピの適用は受け付けられません（「ユニット「X」はインターロックで止められています: 理由」）。停止と中止は引き続き使えます。
- **何も用意されていない**：開始には用意した手順が要ります（「手順が用意されていません。先に選んでください。」）。
- **別の実行が押さえている信号源**：同じ信号源に書き込む 2 台のユニットは一緒に動けません。2 つ目の開始は、チャネルと押さえているユニットを添えて拒まれます。

このグループのページは次のとおりです。

| ページ | 扱う範囲 |
| --- | --- |
| [実行記録とコメント](process-runs) | ユニットの操作パネルです。用意、開始と開始が検証すること、一生の指令、実時間のカード、コメント、単発の指令、実行記録ファイル、そして同じ一生へ届く自動化とエージェントの道です。 |
| [ユニットのアドレス空間](process-addresses) | ユニットが `Process.<Model>.<Unit>` の下に公開するすべてのポイント、その型と意味、そしてどのポイントが書き込める指令かです。 |
