設備コマンド(コマンドレジストリ)
プラントパルスは タグに値を書き込むこと(制御書き込み)の上に 「この設備で何ができるか」 というもう一つの層を追加します。これが コマンドレジストリです。
オペレータは TAG_CNC01_SPEED_SP に 1200 を書かずに 「速度設定 (SET_SPEED)」 を選び
速度だけを入力します。どのタグにどの順序で書き込むか、何が真のときだけ許可するかは
管理者が事前に定義しておきます。
ここで [実行] を押すと PLC に値が 実際に書き込まれます。 試験は必ずシミュレータ 接続または停止した設備で行ってください。 自動ロールバックはありません — シーケンス途中で失敗しても その前に書き込んだ値は戻りません(監査記録を保存するための設計です)。
どこにあるか
アセット 画面(/asset/tree/index)で 設備(EQUIPMENT) ノードを選ぶと下部にタブが開きます。
| タブ | 動作 |
|---|---|
| コマンド | 定義済みコマンドを 選択して実行 する · 最近のコマンド履歴 |
| レジストリ | コマンドを 定義 する(登録・編集・削除) · アセットステートメント |
定義は レジストリ タブ内の「コマンドレジストリ」パネルにあります。タブ名が「コマンド」ではなく 「レジストリ」なので、最初は別のタブを探してしまいがちです。
閲覧できる人 · 実行できる人
アクセスが 3層 で制限されています。
| 層 | どこで | 制限するもの |
|---|---|---|
| ① URLフィルタ | security-rule.xml の /asset/*/command* | ADMIN · MANAGER 以外は URL 自体がブロックされます |
| ② 画面・コントローラ | コマンドタブの コマンド実行パネル | ADMIN / MANAGER にのみ 表示されます。 その他のロールは下部の 履歴のみ 参照します。サーバも未認証 401 · 非 ADMIN/MANAGER 403 |
| ③ コマンド別 | 定義の 許可ロール | コマンドごとに「誰が実行できるか」を個別に指定します。不許可時 REJECTED_FORBIDDEN |
②まで通っても③でブロックされる可能性があります — コマンド単位でさらに絞り込めるという意味です。
アクセス制御は「ADMIN または MANAGER」と記載されていますが、 MANAGER はユーザー登録画面で
付与できないロールです(選択肢は ADMIN·API·USER の3つのみ)。API で無理やり設定すると
そのアカウントはログイン後にアクセスできません —
ユーザー管理 参照。
つまり、この画面を使用できるのは 実質 ADMIN のみです。定義の「許可ロール」も
ADMIN と API のみ有効です。
コマンドを定義する — レジストリタブ
[コマンド登録] を押すと定義ダイアログが開きます。画面の案内の通り 「このアセットの意味コマンドを定義します。パラメータ・事前条件と順序で実行されるタグ書き込み ステップを構成してください。」
基本情報
| 項目 | 必須 | 説明 |
|---|---|---|
| コマンドタイプ | ✅ | 意味識別子 — START · STOP · SET_SPEED のような値 |
| コマンド名 | ✅ | 実行セレクトボックスに表示される名前 |
| 許可ロール | ADMIN · MANAGER · API チェックボックス。「このコマンドを実行できるロール」 | |
| 順序 | 一覧の並び順(小さいほど先) | |
| 有効化 | オフにすると実行セレクトボックスに 表示されません。 定義は残ります |
権限ゲートは fail-closed です — リクエスト元のロールが 허용 역할 リストに ない 場合は拒否します。
空にするとリストが空になるため、ADMIN でも REJECTED_FORBIDDEN を受け取ります。
パラメータ
実行時にオペレータが入力する値を表で定義します。行ごとに 名前 · タイプ · 最小 · 最大 · オプション · 必須 です。
| タイプ | 検証 |
|---|---|
| Number | 数値としてパースされ 有限値 である必要があります(NaN·Infinity は範囲に関係なく拒否)。최소/최대 がある場合はその間(境界含む) |
| Boolean | true / false (大文字小文字を無視) |
| Enum | 옵션 に記載された値のいずれか |
| String | 検証なし |
- 必須 なのに空の場合は拒否します(
REJECTED_PARAM)。 - 任意パラメータは空にするとタイプ検証をスキップし、値が入っていれば検証します。
- パラメータが全くないコマンドも可能です。
コマンドフロー — ステップシーケンス
定義ダイアログの コマンドフロー 領域は ビジュアルエディタ です。 左のパレットからノードを配置し(「クリック=末尾に追加 · ドラッグ=間に挿入」)、右のインスペクタで そのノードの値を設定します。
[시작] → [쓰기] → [지연] → [읽기 확인] → [종료]
| ノード | インスペクタ項目 | 動作 |
|---|---|---|
書き込み(write) | タグ · 値式 · 事前条件(インターロック) | そのタグに値を書き込みます |
読み戻し確認(read_back) | タグ · 演算子 · 期待値 · 安定化時間 · ポーリング間隔 · 許容誤差 | 書き込んだ値が実際に反映されたか読み戻して確認します |
遅延(delay) | 遅延 (ms) | 次のステップまで待機します |
値式 はリテラルまたはパラメータ参照です — 画面ヘルプの通り
「リテラル値または式。{param} は同じ名前のコマンドパラメータに置き換えられます。」
{speed} · 1 · SET {speed} RPM のいずれも可能です。
読み戻し確認 の空欄はデフォルト値を設定します — 安定化 2000 ms · ポーリング 200 ms · 許容誤差 0.0。PLC 値が定着するのに時間がかかるため、書き込み直後に読み戻してずれるのを この安定化ウィンドウが吸収します。
書き込みノードのタグ一覧には その設備に属するタグ のうち rw が W または RW であり
tag_type が SETPOINT または COMMAND のものだけが表示されます。読み戻し確認・事前条件の
タグ一覧に制限はありません(読み取りのため)。
変更したいタグが一覧にない場合は タグ属性タブ で 読み取り/書き込み と タグタイプ を先に修正してください。
事前条件とインターロック
各条件は タグ · 演算子 · 値 の3欄で、インターロック チェックボックスがさらに1つあります。
演算子は eq · ne · gt · gte · lt · lte です。
| インターロックなし | インターロック | |
|---|---|---|
| 実行開始前 | 検証 ✅ | 検証 ✅ |
| 各書き込みステップ直前 | 検証なし | 再検証 ✅ |
シーケンスに遅延や読み戻し確認が挟まると、開始時点と実際の書き込み時点の間に時間が生じます。 その間に安全扉が開いたら?インターロックを設定した条件のみ 書き込み直前に再確認 し、 ずれていたらその書き込みを 発行せずに 中断します。
「ドア閉 = TRUE」「非常停止 = FALSE」のような条件は 必ずインターロックで 設定してください。
条件定義が 不正でも通過させません。 タグや演算子が欠けているかパースできない場合は
黙ってスキップせず REJECTED_PRECONDITION でブロックします — 安全ゲートを無効化しない
ための fail-closed 設計です。
コマンドを実行する — コマンドタブ
- コマンド タブのコマンドセレクトボックスで選択します — 有効 な定義のみ、順序どおりに表示されます。 (「有効なコマンドがありません」が表示された場合はレジストリで有効化してください。)
- [実行] — パラメータが定義されている場合は パラメータ入力ダイアログ が先に表示されます (タイプに応じたコントロールが自動生成されます — Number は min/max、Enum はセレクト、Boolean は真/偽)。
- 確認ダイアログ — 「アセット ○○ にコマンド ○○ を実行しますか?」とパラメータ要約。 誤操作防止のため ここで対象アセット名を必ず確認してください。
- 結果がパネルに表示されます — ステップごとにタグ · 操作 · 要求値 · 実測値 · 成功 · エラー。
実行順序(固定)
정의 로드 → 에셋 확인 → 자산락 → 권한 → 파라미터 → 태그 스코프 → 사전조건
↓
종결 판정 ← 스텝 시퀀스(쓰기 직전 인터록 재검증) ←
アセットロック は同じ設備に対するコマンドを 完全に直列 にします。異なる設備の コマンドは同時に送出されます。
結果ステータスと対処
| ステータス | 意味 | 参照先 |
|---|---|---|
SUCCESS | 全ステップ成功 | — |
FAILED | いずれかのステップで失敗し そこで停止した | 結果表の「エラー」欄。 先行の書き込みは既に反映されている |
REJECTED_NOT_FOUND | 定義がない · 他の設備の定義 · 無効 | レジストリで有効化状態を確認 |
REJECTED_FORBIDDEN | 自分のロールがそのコマンドの 許可ロール にない | 定義の許可ロール |
REJECTED_PARAM | パラメータがスペックに合わない | 必須欠落 · 範囲 · Enum 値 |
REJECTED_TAG_SCOPE | ステップが指すタグが その設備に属さないか書き込み不可 になった | 定義作成後にタグを再配線するか rw を変更した場合 |
REJECTED_PRECONDITION | 事前条件不充足 — または事前条件定義自体が不正 | 条件タグの現在値 |
REJECTED_BUSY | 同じ設備で別のコマンドが実行中 (HTTP 409) | 少し待ってから再度 押してください |
FAILED は「何も起きなかった」ではないREJECTED_* は 書き込みが始まる前に ブロックされたため設備状態は変わっていません。
一方 FAILED は シーケンスに入った後に 停止したため、失敗したステップ より前の書き込みは既に
反映されています。 結果表でどこまで成功したか確認し、必要なら手動で戻してください。
REJECTED_BUSY と REJECTED_NOT_FOUND のみは履歴に発行されません(送信前競合・ルーティングエラー)。
シーケンス上限
| 項目 | 上限 |
|---|---|
| シーケンス全体 | 30,000 ms — 超過するとそのステップを実行せず FAILED(op deadline) |
| 読み戻し確認 | 安定化時間(デフォルト 2,000 ms) |
| 書き込み | エッジ HTTP タイムアウト |
読み戻し確認はポーリングで複数回読み取りますが、 書き込みは一度だけ送出されます。 再発行は部分適用 リスクがあるため意図的にブロックしています — 失敗したら人が判断して再実行してください。
履歴はどこに残るか
終了した実行は標準の asset_command として発行され、履歴テーブル(tm_asset_command)· UNS ·
タイムライン · キャッシュに一緒に格納されます。失敗・拒否は 診断ログ にも残ります
(診断)。
コマンドタブ下部の「最近のコマンド一覧」はステートメントが発行したコマンドも合わせて表示します — タイムスタンプ · ステートメント名 · キー · 値(JSON)。
よくある質問
Q. コマンド実行パネルが表示されません。
A. ロールが ADMIN(または付与不可の MANAGER)ではありません。USER·API には下部履歴のみ表示されます。
Q. セレクトボックスに「有効なコマンドがありません」と表示されます。 A. 定義がないか全て 無効 です。レジストリタブで有効化してください。
Q. 書き込みステップのタグ一覧が空です。
A. その設備に rw が W/RW かつ tag_type が SETPOINT/COMMAND のタグがありません。
タグ属性タブ で修正してください。
Q. 続けて REJECTED_BUSY が発生します。
A. 同じ設備の別のコマンドがまだ終了していません。長い遅延や読み戻し確認が入った
コマンドが実行中か最近のコマンド一覧で確認してください。
Q. 実行したのに値が変わっていないようです。 A. 結果表の 実測値 欄を確認してください。読み戻し確認ステップがある場合その欄が実際に読み戻した 値です。読み戻し確認ステップがない場合 書き込みが送出されたかどうか のみで反映有無は不明です — 重要なコマンドには読み戻し確認を追加してください。
関連画面
- ファクトリ管理 — タグの
rw·tag_type設定 - 設備 — 設備一覧とデータ参照
- 診断 — 失敗・拒否の診断ログ
- セキュリティポリシー — ロールと権限