# 校正

> タグの校正の段階、2 点調整の補助の手順、適用が何をして何を拒否するか、そしてタグの校正の権限だけで何ができるか。

**校正**は、数値のタグの[値の変換経路](connector-value-pipeline)の 2 つ目の線形の段階です。`calibrated = scaled × Angular + Linear` を、スケーリングのあと、無効な読み値、上下限、小数桁の前に当てます。基準器に対して測った値と直した値の差を、スケーリングの範囲の計算に触れずに記録できるようにするために存在し、**Connector の構成**なしに**タグの校正**を持つロールが編集できる唯一の段階でもあります。スケーリングと校正の段階には、どちらも 2 つの基準点から組を計算する **2 点法**の補助が付きます。

## 段階 {#the-stage}

[タグ](connector-tags#the-conversion-card)のページの「値の変換」のカードで、この段階は**校正**と読め、そのチェックボックス（既定はオフ）、**傾き（×）**（既定は 1）、**切片（+）**（既定は 0）、見出しの中の **2 点法**のボタン、そして右側にその時点の結果が並びます。段階が効いているあいだは `= 値`、迂回されているあいだは `→ 値` です。機器のグリッドは同じ組を**校正 ×**と**校正 +**として、結果を**校正後**として見せ、編集できるのは Connector の構成だけです。

傾きが 0 なら、入力したその場で拒否されます：「校正の係数が 0 だと、すべての読み値が 0 になります。掛ける係数を入力してください（1 なら値は変わりません）。」

### 段階の編集がどう保存されるか {#how-a-stage-edit-is-saved}

スケーリングと校正の編集は、機器のまとめての自動保存には乗りません。確定するたびに（チェックボックスでも、どちらの入力欄でも）すぐに、その段階だけを対象として書き込まれます。そのタグのその段階だけが保存済みの機器に写されるので、校正だけのロールの編集が構成の下書きを一緒に運ぶことはなく、同時に走っている機器全体の自動保存が調整を上書きすることもありません。拒否された、または失敗した確定は、その段階をデータベースから読み直すので、退けられた値がページに残ることはありません。理由は操作ログ帯に出ます（「段階の編集を保存できませんでした：…」）。

### どの段階を誰が編集できるか {#who-may-edit-which-stage}

| 段階 | 手入力の項目とチェックボックス | 2 点調整の適用 | 拒否されたときの文言 |
| --- | --- | --- | --- |
| **スケール** | Connector の構成 | Connector の構成 | 「スケールの段階を編集するには「Connector の構成」の権限が必要です。」／「スケールの調整を適用するには「Connector の構成」の権限が必要です。」 |
| **校正** | タグの校正または Connector の構成 | タグの校正または Connector の構成 | 「校正の段階を編集するには「タグの校正」または「Connector の構成」の権限が必要です。」／「校正の調整を適用するには「タグの校正」または「Connector の構成」の権限が必要です。」 |

権限に加えて、どちらの段階も、実行がステーションを占有しているあいだ（「この段階を編集する前に、進行中の Process の操作を終えてください。」／「この調整を適用する前に、進行中の Process の操作を終えてください。」）と、ランタイムが停止しているあいだ（「ランタイム停止中」）は拒否します。権限は、項目が描かれたときだけでなく、編集を確定するときにもう一度読まれます。

## 2 点調整の補助 {#the-two-point-assistant}

段階の見出しにある **2 点法**を押すと、その段階の下に**2 点調整**のまとまりが開きます。開いているあいだ、タグを編集することは決してありません。調整を適用を押すまで何も変わりません。最初の行は、取り込みが何を読むかを伝えます：「取り込みは、校正、上下限、小数桁の前にある、いまのスケールの出力を使います。」または「取り込みは、上下限と小数桁の前にある、いまの校正の出力を使います。」その段階を適用することが決してできないロールには、ボタンは描かれません。

### 手順 1：2 つの基準点 {#step-1-two-reference-points}

**点 1** と **点 2** の 2 つのまとまりがあり、それぞれに**期待値**（その基準でその段階が出すべき値）と**読み値**（今そこでその段階が出している値）が入ります。どちらも有限の数値で入力してください。それ以外は「有限の数値を入力してください。」と示されます。作業中は空のままでも構いません。順序は問いませんが、2 つの期待値は異なる必要があり、2 つの読み値は区別できる必要があります。

### 手順 2：読み取りを取り込むか入力する {#step-2-capture-or-type-the-reading}

**取り込む**は、その点の読み値を今この瞬間の段階の出力で埋め、時刻を打ちます（「取り込み 14:02:33」）。そのあとボタンは**取り込み直す**になります。直近の読み取りが通信として正常でないとき（「通信が正常な、現在の読み値が必要です。」）、またはその段階が有限の値を持たないとき（「選んだ段階に、有限の現在値がありません。」）、取り込みは拒否されます。読み値を手で入力すると、その点の取り込みの時刻は消えます。

どちらの読み値も、それが取られた時点の段階の係数に結び付いています。もしその係数が途中で変わったら（誰かが項目を編集した、別のウィンドウが調整を適用した）、次の取り込みか手入力の読み値から新しい組が始まります。もう一方の点の読み値と、両方の時刻が消え、下書きは「最初の読み取りのあとで、段階の設定が変わりました。2 つの読み値を取り込み直すか、入力し直してください。」と伝えます。

### 手順 3：判定と予告を読む {#step-3-read-the-verdict-and-the-preview}

4 つの値がそろうと、補助はタグの使い捨ての複製の上で下書きを評価するので、予告は本番の計算をそのまま走らせます。安全な調整になれない下書きは、点の隣で理由を伝えます。

| 文言 | 原因 |
| --- | --- |
| 両方の点に期待値と読み値を入力してください。 | どこかの項目が空です。 |
| 2 点調整の調整には数値のタグが必要です。 | タグが数値ではありません。 |
| 点の値はすべて有限の数値である必要があります。 | 値が無限大か数値ではありません。 |
| 期待値は互いに異なる必要があります。 | 期待値が等しいと直線が決まりません。 |
| 読み値が等しいか、安全に区別するには近すぎます。 | 読み値の差が浮動小数点で 8 段階以下しかありません。 |
| 点どうしの差が大きすぎて、安全に計算できません。 | 点の引き算があふれました。 |
| 選んだ段階の現在の係数が正しくありません。 | その段階の今の傾きか切片が有限ではありません。 |
| この点の調整では、係数が対応できる範囲の外になります。 | 調整そのものが有限ではありません。 |
| 調整を現在の段階と合成すると、対応できる範囲を超えます。 | 合成した組が有限ではありません。 |
| 得られる段階は安全に逆算できません。 | 合成した傾きが 0 か、割るには小さすぎ、書き込みができなくなります。 |
| 候補をタグの変換経路で評価できませんでした。 | 予告が有限の値を出せませんでした。 |

正しい下書きでは**調整のプレビュー**の表が出ます。基準点ごとに 1 行と、**現在値**の読み取りの 1 行があり、調整の**調整前**と**調整後**の段階の出力、**期待値**、そしてスケーリングのときだけ、以降のすべての段階を通ったあとの値である**最終値**が並びます。タグに読み取りがないあいだ、現在値の行はダッシュを見せます。表の数値はどれも、「値の変換」のカードが段階を書くのと同じく、ステーションの数値の形式（[言語と形式](settings-localization)）で書きます。値が持つ桁数を最大 6 桁まで見せ、Float のタグでは float が保持している値を見せます（239.050003 ではなく 239.05）。取り込んだ読み値は同じ桁のまま、位取りの記号を付けずに読み値の欄へ入るので、欄は見せている数値をそのまま読み戻せます。

補助が計算するもの：傾き `(Expected2 − Expected1) ÷ (Read2 − Read1)` と切片 `Expected1 − slope × Read1` の調整を、その段階の今の出力の上に当て、それを段階の今の組と合成して、置き換わる候補の傾きと切片にします。オフの段階は、この計算では恒等の組 (1, 0) として扱われ、適用はその段階をオンにします。

### 手順 4：適用するか取りやめる {#step-4-apply-or-cancel}

**調整を適用**が押せるのは、すべての項目が正しく、取り込みのエラーがなく、予告が正しく、ロールとステーションがそれを許すときだけです。そうでないときは、理由がボタンの上に書かれます。押すと候補の組がその段階だけに書き込まれ、段階が有効になり、「「Temperature」に校正の 2 点調整を適用しました。」（またはスケールについて同じ文言）と伝え、補助が閉じます。次のときは拒否され、やり直せるように下書きは開いたまま残ります。予告のあとで段階が変わったとき（「プレビューのあとで段階の設定が変わりました。2 点を見直してからやり直してください。何も適用していません。」）、保存済みの機器がこの下書きの外で変わったとき（「保存されている段階の設定が、この下書きの外で変わりました。読み込み直してからやり直してください。何も適用していません。」）、タグかその機器がもう存在しないとき、そしてステーションが変更を拒否しているときです。実行中は「適用しています…」と出ます。どの拒否も「何も適用されていません」と伝え、前の係数はそのまま残ります。

**キャンセル**は補助を閉じ、下書きを捨てます。別のタグを選んでも閉じます。下書きは、その補助が開いているあいだだけ生きています。

## タグの校正だけで何ができるか {#what-calibrate-tags-allows-on-its-own}

タグの校正を持ち、Connector の構成を持たないロールには、Connector の全体が読み取り専用で見え、校正のためにひとつだけ穴が開いています。

- タグのページでは、校正の段階のチェックボックス、その傾きと切片、そして適用を含む 2 点調整の補助が生きています。ほかの項目はすべて不活性で、「全般」のカードの上には「Connector を変更するには「Connector の構成」の権限が必要です。」という注記が付き、スケーリングの項目はスケーリングの文言をツールチップとして持ちます。
- 機器のグリッドの校正 × と校正 + のセルは、このロールでは編集できません。校正はタグのページを通ります。
- 作成、有効化、無効化、削除、書き込み、機器検出、差し替えのコマンドは、ひとつも描かれません。

タグの校正は Connector の構成の一部です。構成を持つロールは、ここにあるものをすべて持っています。権限の一覧は[権限](users-permissions)にあります。
