# 自動化

> 誰もボタンを押さずにユニットを動かすもの。モデルの外部停止とすべてのユニットが従う信号、各ユニットの停止インターロック、そして手順を選び、実行の一生を動かし、結果を返す PLC 向けの自動化です。

**自動化**の画面（Process > モデル > 定義 > 自動化）は、誰もボタンを押さずにモデルのユニットを動かすものを、すべて抱えます。上にはモデル自身の宣言です。**外部停止**、つまりモデルのすべての手順に、各ユニットで観測される停止に従わせる 1 つのスイッチと、試験台の全体が従う既定の信号です。その下にはユニットが並び、選ばれているユニットには 2 枚のカードが付きます。その**インターロック**（どの信号を観測するかと、その実時間の状態）と、その**自動化**（手順を選び、開始、停止、一時停止、再開、中止を動かし、メタデータをスナップショットし、結果を返す PLC 向けの接点）です。見出しには「このモデルのユニットを、ひとりでに開始、一時停止、停止させるものです。従う停止信号と、PLC がユニットを動かす信号です。」と出ます。

読むにはモデルの閲覧が要ります。どの編集にも Process の管理と、施錠されていないステーションが要り、インターロックの項目にはさらに自分の門があります（下を参照）。この画面は、どの定義の画面も共有する形をまとっています（[定義](process-definition#the-one-shape-of-the-five-screens)を参照）。

2 つの主題は、性質が違います。インターロックは、実行を終わらせ、アプリを再起動してもユニットにラッチを掛け続け、誰かが再投入するまでその信号源への書き込みを塞ぐ、切れ目のない見張りです。自動の中止は、進行中の実行を終わらせる 1 回きりの指令です。この 2 つが画面を共有するのは、どちらも現場の信号を選ぶことで設定するからです。

## モデルの定義：外部停止 {#model-definition-the-external-stop}

見出しには「モデルの宣言です。すべてのユニットに使われます。1 つのスイッチが、試験台の全体で停止を観測するかどうかを決め、1 つの信号が、ユニットの従う既定になります。」と出ます。この表は今のところ 1 行です。

| 列 | 何を見せるか |
| --- | --- |
| **宣言** | 外部停止です。 |
| **観測** | **有効**または**オフ**です。 |
| **既定の信号** | 「タグ · Simulated · Press · EStop · True で作動」、「信号を選んでいません」（注意の色になるのは有効なときだけ）、または保存された信号源が消えているときは「信号がもうありません · 偽で作動」です。 |

表の下には、この画面の全体を貫く原則が立ちます。「観測だけです。このソフトウェアによる観測は、認証された安全機能ではなく、機械の非常停止回路、安全リレー、安全 PLC の代わりにはなりません。」

### 宣言の設定の欄 {#the-settings-column-for-the-declaration}

その行を選ぶと**外部停止**のカードが開きます（「自動化 · 外部停止」）。「このモデルのすべての手順が、各ユニットで観測する外部停止に従うようにします。」そのピルは、有効な間は充足を数え（「3 台のうち 2 台に信号あり」）、オフの間はユニットを数えます（「ユニット 3 台」）。

| 項目 | 何であるか | 値 / 既定 | 効果 |
| --- | --- | --- | --- |
| **このモデルで有効にする** | 1 つのスイッチです。 | 入 / 切。既定は切です。 | 切のときは、どのユニットでも何も観測されず、どの実行も塞がれず、ユニットごとの項目は畳まれます。入のときは、どのユニットも、そこで効いている信号を通して観測されます。 |
| **ブール値の信号源** | 「このモデルのすべてのユニットが観測する信号です。ユニットに自分の信号を与えた場合は、そちらを見ます。」 | **（なし）**、続いて有効な機器のすべてのブール値のタグを「タグ · ドライバー · 機器 · タグ」として、続いてすべてのブール値の変数を「変数 · 名前」（フォルダーに入っている変数は「変数 · フォルダー / 名前」となり、同じ名前の変数も見分けられます）として。既定は（なし）です。ステーションがもう差し出さない保存済みの信号源は、「見つからないタグ」または「見つからない変数」に識別情報を続けた形で一覧に残るので、この欄がバインドなしと読めることはありません。 | モデルの上に書かれます。従っているすべてのユニットが、すぐそれを見ます。 |
| **作動の極性** | どちらの読み値が停止かです。 | **真で作動**、**偽で作動**。既定は True で作動です。 | もう一方の値が、安全側の読み値です。 |

スイッチも既定も、スイッチが切のままでも書き込めるので、試験台は構える前に準備できます。項目の下で、カードは読み取り専用である理由をそのとき言います。モデルのどれかのユニットが実行の操作に占められているか、作動のラッチを抱えている間は「この設定を変える前に、実行中の操作を終え、掛かっているユニットをすべて再投入してください。」、権限がなければ「モデルの保護を変えるには「Process の管理」の権限が必要です。」です。保存も同じように「ユニットが処理中かラッチが掛かっている間は、インターロックを無効にできません。」と拒み、処理中またはラッチの掛かったユニットが観測している信号を動かす変更も「ユニット「*名前*」が処理中かラッチが掛かっている間は、インターロックの信号源も極性も変えられません。」と拒みます。保存された信号がタグと変数を同時に指していたり、識別子が空だったりすると、それを持つ行が拒みます。モデルの既定は「モデル「*名前*」の既定のインターロック信号源が、タグと変数の両方を指しているか、識別子が空です。」、ユニット自身のものは「ユニット「*名前*」のインターロック信号源が、タグと変数の両方を指しているか、識別子が空です。」です。

## ユニットごと：ユニットの一覧 {#per-unit-the-units-list}

| 列 | 何を見せるか |
| --- | --- |
| **ユニット** | ユニットの名前です。 |
| **インターロックの信号** | 効いている信号と、それがどこから来たかです。「タグ · … · True で作動 · モデルから」または「· このユニットから」、モデルが観測している間に注意の色で「モデルは信号を指定していません」または「信号を選んでいません」、そうでなければ「このモデルではオフ」です。 |
| **自動化** | **有効**または**オフ**です。 |

見出しのいちばん端の**ユニットの管理**は、モデルのページを開きます。

## 選ばれているユニットのインターロックのカード {#the-interlock-card-of-the-picked-unit}

このカードのピルは、実時間の状態を言います。**無効**（モデルのスイッチが切）、**取得不可**、**正常**、**作動**、**再投入待ち**です。

| 項目 | 何であるか | 値 / 既定 | 効果 |
| --- | --- | --- | --- |
| **このユニットの停止信号の出どころ** | 2 つの答えを書き下したものです。 | **モデルの既定に従う**（「モデルから読みます。ここで変えるには、このユニットに自分の信号を与えてください。」）または**自分の信号を持つ**（「この信号を見るのは、このユニットだけです。モデルの既定は、もう届きません。」）。既定は従うです。 | 切り離しは、今効いている信号から始まります。一度も自分のものを名指していないユニットはモデルのものを取り、持っていたユニットはそれをそのまま取り戻します。もう一度従っても、何も消えません。 |
| **ブール値の信号源**、**作動の極性** | モデルが使うのと同じ選択欄です。 | 上と同じです。 | ユニットが従っている間（モデルが保存している答えを見せます。その複製ではありません）と、ユニットが処理中かラッチが掛かっている間は使えません。 |

項目の下には、**信号源**（解決した名前、または「未設定」）、**現在の値**（真、偽、または「未読み取り」）、**品質**（良好または取得不可）が出ます。状態が正常でない間は、通知バーがその状態と理由を伝えます（はじめは「信号源の最初の正しい読み値を待っています。」）。モデルのスイッチが切の間、カードは「これは、上の定義で宣言したモデルの「外部停止」と一緒に入ります。」と読め、選択と 2 つの項目を**信号と極性**の開閉部に畳みます。モデルが構える前に、そこで準備できます。カードの終わりには、どちらかが当てはまるとき「このユニットに実行の操作があるか、作動が掛かっている間は、信号源と極性は変えられません。」または「この保護を変えるには「Process の管理」の権限が必要です。」が出ます。

### インターロックの状態 {#the-interlock-states}

| 状態 | 意味 |
| --- | --- |
| **取得不可** | 正しい読み値がまだインターロックを構えていないか、効いている信号が何も名指していません。新しい実行と再開は拒まれます。保存された実行は、失敗ではなく休止として付きます。 |
| **正常** | 信号源が正しく、安全側の値を伝えています。 |
| **作動** | 停止の条件が発生しているか、構えたあとに信号源の品質が失われました。 |
| **再投入待ち** | 信号源はまた正しく安全ですが、保存されたラッチには、まだ手動の再投入が要ります。 |

作動は、そのユニットの動いている実行を、ふつうの終了処理を通して、不合格の総合判定とともに中止として終わらせ、終了の理由に `StopInterlock` を記録します。ラッチはアプリケーションの再起動をまたいで掛かり続け、そのユニットでの新しい実行をすべて塞ぎ、そのユニットの書き込める信号源に書き込みの塞ぎを重ねます。複数のユニットが共有する信号源は、そのすべてがインターロックされている間だけ塞がれるので、1 つの手元の停止が、健全な隣のユニットを立ち往生させることはありません。どの遷移も、名前、値、品質、極性、時刻、実行者とともに記録簿に書かれ、[イベント > インターロック](events-interlocks)に現れます。

**再投入**はこの画面にはありません。ユニットの操作パネルのインターロックの通知バーと、InterlockStatus のダッシュボードのコンポーネントに立ち、状態が再投入待ちで、読み値が正しく安全なときだけ出ます。手順の実行が要り、ラッチを外し、中止された実行を再び始めることは決してなく、操作員とともに記録されます。

## 選ばれているユニットの自動化のカード {#the-automation-card-of-the-picked-unit}

「PLC のタグや Logic の変数に手順を選ばせ、このユニットの実行を動かします。手動、ダッシュボード、MCP からの操作はそのまま残ります。」ピルは**無効**、**準備完了**、**準備できていません**、**進行中**と読めます。Process の管理がないとき、カードは「自動化を編集するには「Process の管理」の権限が必要です。」と読め、どの操作部も読み取り専用になります。

スイッチはカードの上に立ちます。**このユニットで自動化を有効にする**（「公開された値を観測して手順を選び、実行を動かします。」）です。その下に 5 つの折りたためる節が立ちます。スイッチを入れると**手順**が開き、切ると 5 つとも畳まれます。それ以外のときは、離れたときのままです。どの信号源の一覧も、**（なし）**、続いてステーションのタグを「タグ · ドライバー · 機器 · タグ」、変数を「変数 · 名前」（フォルダーに入っている変数は「変数 · フォルダー / 名前」）として差し出し、その項目が使えるものに絞ります。ステーションがもう差し出さない保存済みの信号源は、「見つからないタグ」または「見つからない変数」に識別情報を続けた形で一覧に残ります。

### 手順 {#procedure}

| 項目 | 何であるか | 値 / 既定 | 効果 |
| --- | --- | --- | --- |
| **手順の選び方** | 自動の開始が使う手順を、どう解決するかです。 | **固定の手順**、**数値による選択**。既定は固定の手順です。 | |
| **固定の手順** | 「このユニットの自動の開始は、どれもこの手順を使います。」 | **（なし）**、モデルの手順を名前で、または削除されたものには「見つからない手順」に識別情報を続けたもの。既定は（なし）です。 | |
| **選択の信号源（整数のタグまたは変数）** | 「PLC が整数のコードを書き、下の対応表がそれを変わらない識別子で手順に結び付けます。名前を変えても、対応表は壊れません。」 | 読める整数のタグまたは変数。既定は（なし）です。 | |
| コードの対応表 | 選択コードごとに 1 行です。コード、それが選ぶ手順、**選択コードを削除**。そのあとに追加の行（コード、手順、**追加**）が来ます。 | 整数のコードで、ユニットの中で重複しません。 | 操作ログ帯での拒みです。「選択コードは整数でなければなりません。」、「その選択コードに対応する手順を選んでください。」、「選択コード 7 は既に設定されています。」、「手順を選ぶか、その選択の行を削除してください。」対応していないコードや読めないコードは、選択が正しくないとして開始を拒みます。 |

### 指令の信号 {#command-signals}

「実行の指令ごとに 1 つずつ置ける、任意のブール値の信号源です。信号がオフからオンに変わったときに、1 度だけ動きます。」指令ごとに 1 つの選択欄です。**開始**、**停止**、**一時停止**、**再開**、**中止**で、それぞれ読めるブール値のタグか変数、または（なし）を取ります。信号は、正しい低の状態が一度見えてから構えるので、起動時に高のまま張り付いた信号が発することはありません。

### メタデータの取得元 {#metadata-sources}

「自動の開始が、それぞれのメタデータの値をどこから取るかです。開始が受け付けられた時点で、実行記録に固定します。」この節は、選択が解決しうるすべての手順を並べます（固定の手順、または対応表のすべてをコードの順に）。1 つも選ばれていない間は「先に固定または対応付けた手順を選ぶと、そのメタデータの項目が並びます。」と読めます。手順ごとに、それが尋ねる項目 1 つにつき 1 つの選択欄が立ちます（必須の項目には「必須」の印が付きます。何も尋ねない手順は「この手順はメタデータを尋ねません。」と読めます）。

| 項目の種類 | 選択肢 |
| --- | --- |
| 文字 | **（なし）**、**固定値**（選択欄の下に文字の欄が出ます）、そして画像、アイコン、色の変数を除く、読めるどのタグや変数でも。 |
| 数値 | **（なし）**、**固定値**、読める整数または小数のどのタグや変数でも。 |
| 連番 | **（なし）**または**自動採番**。これが唯一の信号源です。 |

値は開始時に検証されます。正しくない値は、メタデータが正しくないとして開始を拒みます。

### PLC への返し {#plc-returns}

「自動化の状態を PLC に返す、任意の書き込めるタグです。」返しは書き込めるタグにだけバインドし、変数には決してバインドしません。

| 返し | 期待する型 | 意味 |
| --- | --- | --- |
| **準備完了** | ブール | 「今すぐ開始を受け付けられます」 |
| **進行中** | ブール | 「ユニットに動いている実行があります」 |
| **選択済みコード** | 整数。数値の選択の方式のときにだけ差し出されます | 「観測した選択を返します」。その方式で作った対応付けは、ユニットが固定の手順へ移っても保たれますが、その方式が効いている間は書かれず、診断にも並びません。方式とともに戻ります。 |
| **指令の結果** | 整数 | 「変わらない結果 0 から 7」。下の決まった取り決めです |

| コード | 意味 |
| --- | --- |
| 0 | 待機または再投入 |
| 1 | 受け付け |
| 2 | ユニットが準備できていません |
| 3 | 選択が不正 |
| 4 | メタデータが不正 |
| 5 | 指令が合いません |
| 6 | 指令が競合 |
| 7 | 内部の失敗 |

「決まった契約なので、PLC のロジックがメッセージの文面に依存することはありません。」

### 実時間の状態と診断 {#live-state--diagnosis}

描き直すたびに実時間で読みます。**状態**（無効、有効、または「有効 · 監視中」）、**指令の待ち受け**（「指令の信号なし」、「待ち受け中」、または「有効なオフ待ち」）、**準備完了**（はいまたはいいえ。「準備完了でない理由」と理由が付きます）、**進行中の実行**、**選択**（選択の方式のときは、コードとその品質）、**決まった手順**、**最後の指令**（指令、その結果のコード、その時刻）、そして**理由**（最後の診断）です。その下に 3 つの区画があります。**指令の信号**（信号源ごとに、その値と品質、構え済みか待機中か）、**メタデータの事前確認**（項目ごとに、その信号源、値、品質、正しいか、正しくなければその理由）、**返しの書き込み**（タグごとに、それが持つ名前、最後に書いた時刻、健全か失敗かと誤りの内容。選択の方式が決して書かない返しは並びません）です。失敗し続ける返しは、失敗し始めたときに 1 回、続いている間は要約として、また書けたときにもう 1 回記録簿に書かれます。ループのたびに書かれるのではありません。ループは返しを渡したら先へ進むので、遅い機器がこれを足止めすることはありません。健全か失敗かは機器が答えたときに記録され、それは頼んだ巡回のあとになることもあります。最後に渡したものの答えがまだ返っていない返しは、そのまま置かれ、もう一度送られることはありません。ですから遅い機器 1 台が受け取る書き込みは 1 つで、100 にはなりません。

このカードのどの編集も自動で保存され、ステーションが拒めば元に戻ります。理由は操作ログ帯に出ます。自動化が開始した実行は、実行者として**自動化**を記録します。

## この画面がしないこと {#what-this-screen-does-not-do}

- インターロックは、Connector か Logic がすでに公開している値をソフトウェアで観測するものです。デバウンスも、評価も、安全の格付けもありません。機械の安全回路の代わりになることは決してありません。
- 自動化は、ほかの制御を取り上げません。手動、ダッシュボード、指令のポイント、MCP の指令は、その横で動き続けます。
- ここでユニットを再投入するものはありません。再投入は、ユニットの操作パネルと InterlockStatus のコンポーネントにあります。
- ここで手順を手で用意することも、メタデータを手で埋めることもしません。それは[運転](process-operate)の下のユニットの操作パネルです。
