信頼性ブロック図(RBD)
Schematex の RBD エンジンを使って、IEC 61078 準拠の信頼性ブロック図をテキスト DSL から生成し、システム信頼性・ビルンバウム重要度・SPOFを自動計算する方法を解説します。
信頼性ブロック図について
信頼性ブロック図(RBD) はシステムの成功ロジックを表します。各コンポーネントが入力ノードから出力ノードへのパス上のブロックとして配置され、動作しているブロックの連続したパスが 2 つのノードをつないでいる限り、システムは動作します。直列接続では全コンポーネントが動作する必要があり、並列接続では冗長性を提供します(いずれか 1 つで十分);k-of-n グループでは n 個のメンバーのうち少なくとも k 個が動作すれば成功します。これは RAMS(信頼性・可用性・保守性・安全性)エンジニアリングの標準ツールで、IEC 61078:2016 および MIL-HDBK-338B で定義されています。
Schematex の差別化ポイントは、エンジンが答えを計算することです。絵を描くだけでなく、各ブロックの信頼性からシステム全体の信頼性(直列なら ∏、並列なら 1−∏(1−Rᵢ)、k-of-n なら完全列挙)を求め、各ブロックのビルンバウム信頼性重要度(どのブロックを改善すると最も効果的か)を導出し、単独の故障がシステム故障につながる単一故障点を赤色でフラグします。これは faulttree がカットセットに、pert がスケジューリングに対して取るアプローチと同じです。RBD はフォルトツリーの故障空間に対する成功空間の双対です。
1. はじめての図
すべてのドキュメントは rbd キーワード(エイリアス reliability)で始まり、オプションのタイトル、そして block リーフを囲む入れ子の成功ロジックグループが続きます。
rbd "Two redundant pumps"
parallel {
block A "Pump A" R=0.9
block B "Pump B" R=0.9
}エンジンは分割ノードと結合ノード間の並列レール上に 2 台のポンプを描き、システム信頼性 1 − (1−0.9)(1−0.9) = 0.99 を計算して見出しとして表示します。外側のグループなしのトップレベルブロックリストは直列チェーンとして扱われます。
2. ブロック
block は成功パス上の 1 つのコンポーネントです。
block ID "Label" R=0.99ID— 短い識別子(ラベルがない場合に表示されます)。"Label"— オプションの表示名(CJK クォート使用可)。- 信頼性は
R=0.99(信頼性 / 可用性)、p=0.01(故障確率、→ R = 1−p)、またはパーセンテージR=99%で指定します。信頼性のないブロックはシステム値がシンボリック(n/a)になります。
3. 成功ロジックグループ
グループは自由に入れ子にできるため、冗長チェーン、投票バンク、スタンバイペアをモデル化できます。
| グループ | 成功条件 | 信頼性 |
|---|---|---|
series { … } | すべての子が動作 | ∏ Rᵢ |
parallel { … } | いずれかの子が動作 | 1 − ∏(1 − Rᵢ) |
kofn k/n { … } | n 個中 k 個以上が動作 | 完全状態列挙 |
series {
block CTRL "Controller" R=0.995
parallel {
series { block P1 "Path 1 sensor" R=0.97
block A1 "Path 1 actuator" R=0.98 }
series { block P2 "Path 2 sensor" R=0.97
block A2 "Path 2 actuator" R=0.98 }
}
}4. 計算された信頼性、重要度、SPOF
パース後、エンジンは以下を計算します。
- システム信頼性 — 再帰的な直列 / 並列 / k-of-n 縮約による見出し値。
- ビルンバウム重要度
Iᴮ(i) = R_sys(Rᵢ=1) − R_sys(Rᵢ=0):すべてのブロックに対して計算され、最も重要度の高いブロック(改善対象)がアクセントで強調されます。 - クリティカリティ重要度
I_C(i) = Iᴮ(i)·(1−Rᵢ)/(1−R_sys)— ブロック i が故障しており、かつシステムが故障している場合のクリティカル確率。 - 単一故障点 —
R_sys(Rᵢ=0) = 0となるブロック(単独の故障がシステム故障を引き起こす)は赤い境界線で描画されます。直列の非冗長ブロックは常に SPOF です。
5. 時間依存信頼性 — R(t)
静的な R= はエントリーポイントです;実際には信頼性はミッション時間の関数です。mission: <t> を設定してブロックに定数の代わりに故障分布を指定すると、エンジンが R(t) を評価して同様に集約します。mission とレートで一貫した時間単位を使用してください。
| ブロック属性 | モデル | R(t) |
|---|---|---|
rate=0.0001 | 指数分布(定常ハザード λ) | e^(−λt) |
mtbf=10000 | 指数分布(λ = 1/MTBF) | e^(−t/MTBF) |
weibull=2,10000 | ワイブル分布(β 形状、η スケール) | e^(−(t/η)^β) |
rbd "Pump station — 1-year mission"
mission: 8760 # 時間
parallel {
block A "Pump A" mtbf=10000
block B "Pump B" weibull=1.5,12000
}見出しは R(t=8760) = … になります。分布はあるが mission: がないブロックは警告を出し、定数 R=(あれば)にフォールバックします。
6. バリデーション
パーサーはエラーではなく非致命的な警告を報告します。
k > nのkofn k/n閾値はnにクランプされます(k < 1は1にクランプ);0..1範囲外の信頼性はクランプされます;- 重複したブロック ID はフラグが立てられます。
7. テーマ
theme: default は共有のリスク・信頼性パレット(ニュートラルなブロック、青い信頼性数値、赤い単一故障点境界線)を使用します。theme: monochrome は白黒の印刷バージョン(SPOF は境界線の太さで区別);theme: dark は Catppuccin ダークバリアントです。
Found this useful?
Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.