ISA-18.2アラームコネクタ
ISA-18.2コネクタは、ANSI/ISA-18.2標準(プロセス産業向けアラームシステム管理)で定義されたアラーム管理ライフサイクルを実装します。Meddleペイロードを消費し、ユーザー定義のアラーム条件を評価し、アラームの状態が変化するたびに新しいペイロードを発行するプロセッサです — 優先度や現在の状態などのアラームメタデータで拡張されます。
コネクタタイプ:
Isa182- ステートフルアラームプロセッサ(条件を評価、アラームごとに状態を追跡)
アラーム管理はプロセス制御、バッチ製造、SCADA駆動プラントの基本要件であるため、コネクタはindustrial/カテゴリに配置されています。
- ✅ ISA-18.2アラーム状態マシン(normal、unacknowledged、acknowledged、return-unacknowledged)
- ✅ 任意のアラーム条件のためのMXL式言語
- ✅ アラームごとの優先度(low、medium、high、urgent)
- ✅ しきい値付近でのフラッピングを抑制するためのデッドバンドヒステリシス
- ✅ 設定可能なオン遅延とオフ遅延タイマー(ミリ秒単位)
- ✅ 状態遷移時のみペイロードを発行(ノイズを回避)
- ✅ ダウンストリームルーティング/アラート用の標準
_alarm_*メタデータキー
シンプルなしきい値アラーム
Section titled “シンプルなしきい値アラーム”{ "type": "Isa182", "config": { "alarms": [ { "name": "high_temperature", "condition": "temperature > 80", "priority": "high" } ] }}デッドバンドと遅延付き
Section titled “デッドバンドと遅延付き”{ "type": "Isa182", "config": { "alarms": [ { "name": "high_temperature", "condition": "temperature > 80", "priority": "high", "setpoint": 80, "deadband": 2.0, "delayOn": 5000, "delayOff": 10000 } ], "shelveTimeout": 3600000, "maxShelves": 25 }}複数アラーム
Section titled “複数アラーム”{ "type": "Isa182", "config": { "alarms": [ { "name": "high_pressure", "condition": "pressure > 10.0", "priority": "urgent", "delayOn": 2000 }, { "name": "low_flow", "condition": "flow_rate < 5.0", "priority": "medium", "delayOn": 10000 }, { "name": "tank_overflow", "condition": "tank_level > 95", "priority": "high", "setpoint": 95, "deadband": 1.0 } ] }}設定パラメータ
Section titled “設定パラメータ”Alarms
Section titled “Alarms”アラーム定義の必須配列。少なくとも1つのアラームが必要です。
{ "alarms": [ { "name": "high_temp", "condition": "temperature > 80", "priority": "high" } ]}アラーム: Name
Section titled “アラーム: Name”アラームの一意の識別子。発行されたペイロードで_alarm_name値として使用されます。
{ "name": "compressor_1_high_temp"}推奨される規約: <asset>_<measurement>_<condition>(例:pump_3_low_pressure)。
アラーム: Condition
Section titled “アラーム: Condition”各受信ペイロードに対して評価されるMXL式。結果がtrueの場合、アラームはアクティブと見なされます。
{ "condition": "temperature > 80 AND pressure < 5"}例:
{ "condition": "temperature > 80" }{ "condition": "vibration_rms >= 0.7" }{ "condition": "tank_level < 10 OR tank_level > 95" }{ "condition": "(motor_running == true) AND (current > 12.5)" }条件は起動時にパースされます。無効な式はランタイム前にコネクタ設定を拒否します。
アラーム: Priority
Section titled “アラーム: Priority”ダウンストリームルーティングに使用される重大度。以下のいずれかである必要があります:
lowmediumhighurgent
{ "priority": "urgent"}アラーム: SetpointとDeadband
Section titled “アラーム: SetpointとDeadband”フラッピングを抑制するためにアラームしきい値の周囲に適用されるヒステリシス。
{ "setpoint": 80, "deadband": 2.0}setpoint- 公称しきい値(情報用。deadbandと一緒に使用)deadband- ヒステリシス帯。条件が非アクティブからアクティブに遷移すると、基礎となる値がsetpoint - deadbandを下回るまでアクティブのままになります
推奨値: ノイズの多い信号で偽の遷移を避けるために動作範囲の1-5%。
アラーム: DelayOn
Section titled “アラーム: DelayOn”ミリ秒単位のオン遅延。アラームがunacknowledgedに遷移する前に、条件が連続してこの時間アクティブのままである必要があります。
{ "delayOn": 5000}推奨値:
- 高速プロセス: 500-2000ms
- 標準プロセスアラーム: 5000-15000ms
- トレンドアラーム: 30000ms以上(30秒)
アラーム: DelayOff
Section titled “アラーム: DelayOff”ミリ秒単位のオフ遅延。アラームがrtn_unacknowledgedに遷移する前に、条件が連続してこの時間非アクティブのままである必要があります。
{ "delayOff": 10000}オペレーターが確認するのに十分な期間アラームを表示するために、より長いオフ遅延が役立ちます。
Shelve TimeoutとMax Shelves
Section titled “Shelve TimeoutとMax Shelves”{ "shelveTimeout": 3600000, "maxShelves": 25}shelveTimeout- アラームがシェルブされ得るデフォルトの期間(ms)maxShelves- 同時にシェルブされるアラームの最大数
これらのパラメータはISA-18.2シェルビング制約を反映し、ダウンストリームのUI/管理ツールに転送されます。
アラーム状態マシン
Section titled “アラーム状態マシン”コネクタはISA-18.2状態マシンを実装します。各アラームは以下の状態のいずれかを保持します:
| 状態 | 意味 |
|---|---|
normal | 条件は非アクティブ。オペレーターの注意は不要 |
unacknowledged | 条件がアクティブになった。オペレーターが確認していない |
acknowledged | 条件がまだアクティブな間にオペレーターが確認した |
rtn_unacknowledged | 条件が正常に戻ったが、以前のアラームは確認されなかった |
状態遷移ごとに新しいペイロードが発行されます。
出力ペイロード
Section titled “出力ペイロード”アラームが状態を変更すると、元のペイロードがコピーされ、以下のキーで拡張されます:
{ "...original fields...": "...", "_alarm_name": "high_temperature", "_alarm_state": "unacknowledged", "_alarm_priority": "high", "_alarm_timestamp": "2026-05-20T10:14:33.123456789Z"}フィールドリファレンス:
_alarm_name- アラーム定義のnameと一致_alarm_state- 現在の状態(normal、unacknowledged、acknowledged、rtn_unacknowledged)_alarm_priority- アラーム定義の優先度_alarm_timestamp- 遷移のRFC 3339ナノ秒UTCタイムスタンプ
データフロー
Section titled “データフロー”DataPayload → Isa182 → (状態変更時) → DataPayload + _alarm_*メタデータ → (状態変更なし) → 静かに吸収例:
入力ストリーム(1Hz):
{ "temperature": 78.0 }{ "temperature": 81.0 }{ "temperature": 82.0 }{ "temperature": 79.0 }{ "temperature": 78.5 }アラームhigh_temperature: temperature > 80, delayOn: 0, delayOff: 0の場合:
- サンプル1(78.0): 条件false、状態は
normalのまま、発行なし - サンプル2(81.0): 条件true、状態 →
unacknowledged、ペイロード発行 - サンプル3(82.0): 条件はまだtrue、状態変更なし、発行なし
- サンプル4(79.0): 条件false、状態 →
rtn_unacknowledged、ペイロード発行 - サンプル5(78.5): 条件はまだfalse、状態変更なし、発行なし
一般的なユースケース
Section titled “一般的なユースケース”1. 高温プロセスアラーム
Section titled “1. 高温プロセスアラーム”{ "type": "Isa182", "config": { "alarms": [ { "name": "reactor_high_temp", "condition": "reactor_temperature > 150", "priority": "urgent", "setpoint": 150, "deadband": 5, "delayOn": 3000, "delayOff": 10000 } ] }}2. マルチ変数コンプレッサーヘルス
Section titled “2. マルチ変数コンプレッサーヘルス”{ "type": "Isa182", "config": { "alarms": [ { "name": "compressor_overload", "condition": "motor_current > 25 AND oil_pressure < 2.0", "priority": "urgent", "delayOn": 5000 }, { "name": "compressor_vibration", "condition": "vibration_rms > 0.7", "priority": "high", "setpoint": 0.7, "deadband": 0.05, "delayOn": 10000 }, { "name": "compressor_temp_drift", "condition": "discharge_temp > 95", "priority": "medium", "delayOn": 30000 } ] }}3. ヒステリシス付きタンクレベル監視
Section titled “3. ヒステリシス付きタンクレベル監視”{ "type": "Isa182", "config": { "alarms": [ { "name": "tank_low_level", "condition": "tank_level < 10", "priority": "high", "setpoint": 10, "deadband": 2, "delayOn": 5000, "delayOff": 30000 }, { "name": "tank_high_level", "condition": "tank_level > 90", "priority": "high", "setpoint": 90, "deadband": 2, "delayOn": 5000, "delayOff": 30000 } ], "shelveTimeout": 3600000, "maxShelves": 10 }}トラブルシューティング
Section titled “トラブルシューティング”アラームがトリガーされない
Section titled “アラームがトリガーされない”問題: 基礎となるデータがそれをアクティブにするはずなのに、条件がfalseと評価されているように見える
解決策:
- 条件のフィールド名がペイロードと正確に一致することを確認(大文字小文字を区別)
- データ型を確認 —
temperature > 80はtemperatureが文字列として到着する場合に失敗します。型を強制するために上流にTransformを挿入してください - 上流コネクタが実際にプロセッサにペイロードを配信していることを確認(
LogまたはConsoleライターでデータフローを確認)
一定の再トリガー(フラッピング)
Section titled “一定の再トリガー(フラッピング)”問題: ノイズの多い信号がしきい値の周りで繰り返し振動し、多くの遷移を生成する
解決策:
- 動作範囲の1-5%の
deadbandを追加 - 短時間の逸脱が無視されるように
delayOnを増やす - 入力を平滑化するために上流に
MovingAverageまたはEWMAを適用
アラームがunacknowledgedで停止
Section titled “アラームがunacknowledgedで停止”問題: アラームはアクティブではなくなったが、状態がnormalに戻らない
解決策:
- ISA-18.2は
normalに戻る前に明示的な確認を要求します。rtn_unacknowledged状態は、確認前に条件がクリアされた場合の標準的なパスです - 確認は通常HMIまたはアラートツールから駆動されます — ダウンストリームシステムでアラーム状態を更新するものを接続してください
起動時の無効なMXL式
Section titled “起動時の無効なMXL式”問題: コネクタがErrIsa182ConditionEvalで起動に失敗する
解決策:
- 条件がMXL構文でパースされることを確認 — 比較は
>、<、>=、<=、==、!=を使用 - ブール接続子は
AND、OR、NOT - 複雑なサブ式は括弧で囲む
ベストプラクティス
Section titled “ベストプラクティス”1. ノイズの多いセンサーでは積極的にデッドバンドを使用
Section titled “1. ノイズの多いセンサーでは積極的にデッドバンドを使用”小さなデッドバンド(範囲の1-2%)でも、実際のプラントでアラーム量を劇的に削減します。
2. 優先度ごとに遅延を段階的に設定
Section titled “2. 優先度ごとに遅延を段階的に設定”[ { "priority": "urgent", "delayOn": 1000 }, { "priority": "high", "delayOn": 5000 }, { "priority": "medium", "delayOn": 15000 }, { "priority": "low", "delayOn": 30000 }]緊急アラームは素早く発火する必要があります。優先度の低いアラームはより長い確認ウィンドウを許容できます。
3. アラーム名を安定して保つ
Section titled “3. アラーム名を安定して保つ”ダウンストリームアラートはしばしば_alarm_nameを中心に展開します。アラーム名をパブリックスキーマの一部として扱い、軽々しくリネームしないでください。
4. 優先度ベースのエスカレーションのためにRouterと組み合わせる
Section titled “4. 優先度ベースのエスカレーションのためにRouterと組み合わせる”_alarm_priorityで異なるアラートチャネルにルーティング(urgent → SMS、high → email、medium → ダッシュボードのみ)。
5. 過剰なアラームを避ける(ISA-18.2 §8)
Section titled “5. 過剰なアラームを避ける(ISA-18.2 §8)”標準は、平均してオペレーターあたり時間あたり≤6アラームを推奨します。その範囲内に留まるために、デッドバンド、遅延、統合アラーム条件を使用してください。
ワークフロー例
Section titled “ワークフロー例”エンドツーエンドのアラームパイプライン
Section titled “エンドツーエンドのアラームパイプライン”OpcuaReader → Isa182 → Router → ┬─ Alert(urgent → SMS) ├─ Alert(high → email) └─ InfluxDb2Writer(監査ログ)- OpcuaReader: 500msのケイデンスでPLCからプロセス変数を取得
- Isa182: 設定されたすべてのアラームを評価。状態変更時のみペイロードを発行
- Router:
_alarm_priorityでブランチ - Alert(urgent): 通知チャネル経由でSMSを送信
- Alert(high): メールを送信
- InfluxDb2Writer: コンプライアンスのためにすべてのアラーム遷移を監査
アラームトリガリングと組み合わせた予測保全
Section titled “アラームトリガリングと組み合わせた予測保全”ModbusReader → Predictive → Isa182 → Alert- ModbusReader: 振動と温度を読み取る
- Predictive: トレンドと残存有用寿命を計算
- Isa182:
vibration_rms_rul < 168(残り7日未満の有用寿命)でトリガー - Alert: 保守チームに通知
関連コネクタ
Section titled “関連コネクタ”- Trigger - 状態マシンなしのよりシンプルな条件ベースの発行
- Alert - アラームペイロードを通知チャネルに送信
- Router -
_alarm_priorityでブランチ - Predictive - プロアクティブなアラームのために予測RULと組み合わせる
- Filter - アラーム評価前に入力をフィルタリング
追加リソース
Section titled “追加リソース”- ANSI/ISA-18.2標準 - プロセス産業向けアラームシステム管理
- EEMUA 191 - アラームシステム: 設計、管理、調達のガイド
- アラーム管理ガイドライン(ISA)