仮想タグの運用
概要
仮想タグは、他のタグの値を用いて計算して作成されるタグです。仮想タグとは何か、また作成方法については、ユーザーガイドの 仮想タグ を参照してください。本ページでは、管理者が把握しておくべき事項 — 計算がどこで実行され、いつデプロイされ、失敗がどこに記録され、何が性能を左右するか — についてのみ記述します。
1つの計算 = 1つのCEP文
タグの 計算 タブに入力した EQL は、CEP に 1つの文 としてデプロイされます。
| 項目 | 値 |
|---|---|
| 文ID | CALCULATION_ + タグ ID (例: CALCULATION_TAG_V_FILTER_DP) |
| 有効/無効値 | タグの use_calculation — 計算タブの 適用有無 |
| 結果の出力先 | 結果行がそのタグのデータポイントとなり、収集値と同じパイプラインに入ります — 保存・アラーム・他の計算が一般タグと同様に読み取ります |
| 結果処理 | 文が結果を出力すると、非同期ワーカーがポイントに変換してパイプラインに投入します |
計算結果は、CEP に 再投入することが許可された唯一のCEP結果 です。その他のCEP結果は、CEP入口で受け付けられません。そのため、仮想タグをソースとして読み込む仮想タグ(連鎖)が可能となります。ただし、計算が自分自身を読み込むかどうかは保存時に検査されません。 循環を構成すると、文が自身の出力を再度読み込むことになります。
デプロイのタイミング
| タイミング | 動作 | 失敗時 |
|---|---|---|
計算タブ保存 · V5 PATCH /api/v5/tag/{tag_id}/calculation | 文を コンパイルした後 に保存し、旧文を降ろして新文を上げます | コンパイルに失敗した場合は保存しません。保存はされたがデプロイできなかった場合は 応答が失敗 となります — デプロイされていない文を成功とは知らせません |
| サーバー起動 | use_calculation が有効なすべてのタグを 同時に4つずつ デプロイします | 当該タグをスキップして他のデプロイを継続します。そのタグの診断に «計算タグ配置失敗» が点灯します — 以下参照 |
| タグ削除 | そのタグの計算文を降ろし、そのタグのアラーム設定を削除します | あるステップで失敗しても、次のステップおよびDB削除は継続されます |
| 接続削除 | その接続の全タグ(仮想タグを含む)の計算・集計・アラームを降ろした後、タグと共に削除します | — |
保存が拒否される場合 — 422
計算タブの保存時に文がコンパイルできない場合、HTTP 422 で拒否され、原因が画面に表示されます。
| 場所 | 内容 |
|---|---|
| EQLエディタ直下の案内ボックス | タイトル «EQLを読み込めません», 位置チップ «N行 M列», 原因文とヒント、折りたたみ形式の エンジン原文表示。カーソルが該当箇所に移動します(位置情報がない場合はチップなしで文のみ)。トースト通知は別途表示されません |
サーバーの文 (V5応答の detail) | «EQLコンパイル失敗 (N行 M列): …» — 位置情報がない場合は «EQLコンパイル失敗: …» |
| V5応答の拡張欄 | reason = eql.compile, cause · compiler_message = 整理されたコンパイラの文, engine_message = エンジンの元の文, line · col = 1から数えた位置 |
CEPが起動しておらず検査できない場合は HTTP 503 となり、トーストに «CEPエンジンに接続できず、EQLを検証できませんでした。» と表示されます — 文自体の誤りではないため、エディタには表示しません。
サーバーログには、拒否は Tag calculation refused: tag_id=[…] として、CEPに接続できず保存できなかった場合は Tag calculation not saved - CEP could not check the EQL として記録されます。
同一の形式 が、EQLを受け取る他の入口にも同様に適用されます。
| 入口 | 適用箇所 |
|---|---|
| コンソール | タグ計算タブ · アセットステートメント追加/修正 · プラグインステートメント · アラーム設定保存 · [EQL実行] 検査 · クエリ実行 |
| V5 | タグ計算式 · アセットステートメント · アラーム設定 · クエリコンパイル/実行 |
検証されていないEQLはDBに保存しないのが原則です。CEPを再起動している間に計算タブの保存が失敗するのは正常な動作であり、CEPが起動した後に再度保存してください。
失敗は診断に記録される
計算に失敗した場合、診断に2種類で記録されます。
| コード | 名前 · 種類 · 重要度 | メッセージ | タイミング |
|---|---|---|---|
diagnostic.tag.calculation_deploy_failed | 計算タグ配置失敗 · 状態 · ERROR | タグ {target} の計算を適用できませんでした({operation}): {error} | 保存された計算式を起動時や再配置時にエンジンに上げられなかったとき。タグごとに1つ点灯し、修正して配置されれば自動的に解消します |
diagnostic.tag.calculation_listener_failing | 状態 · ERROR | タグ {target} の計算が失敗しています。 | 文が出力した結果をポイントに変換する際に失敗したとき。次の結果が成功すれば解消します |
計算タグ配置失敗 の {error} にはエンジンが拒否した文が、診断引数 line · col にはその位置が格納されます。
診断画面の詳細パネルには «修正画面を開く» リンクがあり、そのタグの設定フォームへ直接移動できます — 計算タブで修正して保存すれば再配置され、診断が解消されます。diagnostic.infra.component_unreachable(cep) が同時に点灯している場合は、まずCEPを復旧させてください。
保存されたEQLが配置されなければ動作しないため、同様の診断が 対象ごとに1つずつ EQLを使用する他の箇所にも存在します。
| コード | 名前 | 対象 | «修正画面を開く» が開く場所 |
|---|---|---|---|
diagnostic.tag.calculation_deploy_failed | 計算タグ配置失敗 | タグ | タグ設定フォーム |
diagnostic.tag.alarm_deploy_failed | タグアラーム配置失敗 | アラーム設定 ID (タグは tag_id) | アラーム設定フォーム |
diagnostic.asset.statement_deploy_failed | 設備ステートメント配置失敗 | asset_id/statement_name | 当該アセットのステートメントタブ |
結果行に timestamp · value · quality · error_code のいずれかが欠けているか、value が空である場合は、エラーではなく警告ログ を残してその結果を破棄します。仮想タグに値が生成されないにもかかわらず診断に異常がない場合は、サーバーログで Calculated point validation failed を探してください。
性能
| 項目 | 理由 |
|---|---|
| 仮想タグ数 = CEP文数 | 仮想タグ1つにつき、文が1つ追加で動作します。同じ値を複数の仮想タグで個別に計算させないようにしてください |
| ソースごとのウィンドウサイズは小さく | 2つ以上のソースを組み合わせると、ウィンドウ内の値同士で組み合わせが生成されます。win:length(1) は最新値1つずつのため組み合わせは1つのみですが、時間ウィンドウを大きく設定すると組み合わせが倍増します |
OUTPUT LAST EVERY n | ソースのいずれ側に値が届いても再計算されるため、ソースが多く高速であるほど結果の頻度が高くなります。この節は 間隔ごとに最後の1つのみ を出力する割合制限です — 結果がそのまま保存されるポイントとなるため、保存量も同時に削減されます |
| 起動時間 | 起動時、計算文を同時に4つずつデプロイします。仮想タグが多い場合、起動後にすべての計算が動作するまで時間がかかります |
限界
| 項目 | 内容 |
|---|---|
| ソースタグ数の上限 | 製品に定められた上限はありません |
| 連鎖 (仮想タグの仮想タグ) | 可能 |
| 循環 · 自己参照検査 | なし — 保存時に検知されません |
| 計算式の長さ | V5 API で入力する場合、4,000文字まで |
| 構文 | 起動したCEPバックエンドが受理する文のみデプロイされます — CEP — バックエンド |
設定キー
仮想タグ計算専用の設定キーは ありません。 計算文がどのエンジンで動作するかは、CEPの cep.backend によって決定されます(CEP — バックエンド)。
関連文書
- 仮想タグ — ユーザーガイド: 作成 · 例 · アラーム
- 診断 — 計算失敗が記録される場所
- 性能チューニング
- CEP — 限界と拒否トークン