メインコンテンツまでスキップ

設備コマンド(コマンドレジストリ)

プラントパルスは タグに値を書き込むこと(制御書き込み)の上に 「この設備で何ができるか」 というもう一つの層を追加します。これが コマンドレジストリです。

オペレータは 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 のみです

アクセス制御は「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 は範囲に関係なく拒否)。최소/최대 がある場合はその間(境界含む)
Booleantrue / 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 設計です。

コマンドを実行する — コマンドタブ​

  1. コマンド タブのコマンドセレクトボックスで選択します — 有効 な定義のみ、順序どおりに表示されます。 (「有効なコマンドがありません」が表示された場合はレジストリで有効化してください。)
  2. [実行] — パラメータが定義されている場合は パラメータ入力ダイアログ が先に表示されます (タイプに応じたコントロールが自動生成されます — Number は min/max、Enum はセレクト、Boolean は真/偽)。
  3. 確認ダイアログ — 「アセット ○○ にコマンド ○○ を実行しますか?」とパラメータ要約。 誤操作防止のため ここで対象アセット名を必ず確認してください。
  4. 結果がパネルに表示されます — ステップごとにタグ · 操作 · 要求値 · 実測値 · 成功 · エラー。

実行順序(固定)​

정의 로드 → 에셋 확인 → 자산락 → 권한 → 파라미터 → 태그 스코프 → 사전조건
↓
종결 판정 ← 스텝 시퀀스(쓰기 직전 인터록 재검증) ←

アセットロック は同じ設備に対するコマンドを 完全に直列 にします。異なる設備の コマンドは同時に送出されます。

結果ステータスと対処​

ステータス意味参照先
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. 結果表の 実測値 欄を確認してください。読み戻し確認ステップがある場合その欄が実際に読み戻した 値です。読み戻し確認ステップがない場合 書き込みが送出されたかどうか のみで反映有無は不明です — 重要なコマンドには読み戻し確認を追加してください。

関連画面​