
適用開始が迫る欧州サイバーレジリエンス法(CRA)・欧州機械規則の関係性と機能安全の進め方について、全5回の記事で解説します。本記事は2回目の投稿となりますので、過去記事もあわせてお読みください。
<過去記事はこちら>
機能安全への対応
本章では、安全要求に基づいて機能安全をどのように設計・実装していくかについて解説します。特に、安全機能の構成、要求事項、システム設計および診断機能の考え方について、実務的な観点から整理します。
安全機能の構成(機能安全)
安全機能の中で電気・電子・プログラマブル電子(E/E/PE)を使用する場合、機能安全規格への適合が必要となります。安全機能の設計では、まず対象製品および要求される安全度を明確にし、それに応じてアーキテクチャを選定します。例えば、IEC 61508ではHFT(ハードウェアフォールトトレランス)、ISO 13849-1ではカテゴリー(Category)で構成が示されており、それぞれの安全度(SILやPL)に応じて適切な構成を選択します。
機能安全の基本は、「安全機能が故障しても危険にならないこと」です。そのため、故障は可能な限り検出する必要があります。特にMCUやFPGAなどのプログラマブル電子は、故障モードを定義することが困難であるため、安全機能が失われる故障(危険側故障)を診断機能によって検出し、安全状態へ移行させる設計が必要となります。
また、診断機能は安全機能に影響を及ぼさないように実装する必要があります。これらの構成は、システムブロック図として明確に表現することが重要です。
最終的には、安全機能ごとのアーキテクチャ、検出されない危険側故障の故障率、診断率などに基づいて、SIL(IEC 61508)またはPL(ISO 13849-1)が決定されます。
機能安全の具体例

図1
図1にて安全機能の具体例を示します。従来は、産業用ロボットの安全確保のために、物理的な柵を設置し、人とロボットの接触を防止していました。これに対し、機能安全を用いることで、
- ロボットの動作領域を監視し、設定された領域から出た場合、停止させる
- 人が危険領域に侵入しようとした場合に停止させる
といった制御によって、安全を確保することが可能となります。このような安全機能は、以下の構成で考えます。

- 入力(Input):センサー(例:エンコーダー)
- 処理(Logic):MCU
- 出力(Output):アクチュエータ制御(例:STO)
機能安全の要求事項
機能安全においては、いくつかの重要な設計要求があります。まず、「安全機能が故障しても危険にならないこと」が基本要件です。さらに、安全機能は非安全機能の影響を受けないように設計する必要があります。この要求はハードウェアだけでなくソフトウェアにも適用されます。例えば、
- 非安全機能のソフトウェアが安全機能に影響を与えないこと
- マルチコアMCUの場合では、安全関連データが非安全機能から保護されること
が求められます。一方で、パラメータ設定については非安全機能からの入力を許容することもありますが、その場合でもISO 13849-1の要求に適合する必要があります。
また、パラメータ設定は安全状態で実施し、設定後には再起動などにより安全機能の正常性(診断機能により異常がないこと)を確認した上で運用する必要があります。
システムブロック図の作成と分析
安全機能の設計では、システムブロック図の作成とその分析が重要な工程となります。まず、安全要求に基づいて安全機能の構成を検討し、要求される安全度に応じてアーキテクチャを決定します。その上で、機能レベルでのシステムブロック図(システムブロック図-1[健徳1.1])を作成します。この際、電源系も含めて構成を明確にする必要があります。
次に、このブロック図に対してSystem FMEAやFMEDAを実施し、危険側故障を特定します。その結果に基づき、各故障を検出するための診断機能を割り当てます。
診断機能を追加したものがシステムブロック図-2となります。この図は、機能安全の設計開発全体を通じて使用する重要な成果物です。
なお、各機能ブロックや診断機能には、トレーサビリティ確保のために識別番号を付与することが望まれます。

※システムブロック図-1 :緑-機能レベルでのシステムブロック図
※システムブロック図-2:紫-診断機能を追加したシステムブロック図
例えば産業用ロボットの領域監視では、PL=d、カテゴリー3の構成とし、MCUにはウォッチドッグタイマ(WDT)、出力にはSTOフィードバックなどの診断機能を追加します。WDTはMCUを介さずに安全出力を制御するように設計し、STOのフィードバックはクロス監視とすることで安全度を向上させます。
診断機能
診断機能は、機能安全における中核的な要素です。
IEC 61508-2のAnnex Aに記載されている診断機能を使用する場合、規格で定義された診断率を適用することが可能です。一方、規格にない独自の診断機能を使用する場合は、その内容および診断率を算出し、設計書に明記する必要があります。また、第三者認証を受ける場合は、認証機関への説明と合意が必要となります。
特にMCUやFPGAは故障率が高いため、診断率90%以上の診断機能を選定することが望まれます。これにより、最終的な安全機能の故障率(PFHdやMTTFd)や診断カバレッジ(SFFやDCavg)の要求を満たしやすくなります。
診断機能を設計する際は、以下の点に注意が必要です。
- 安全機能に影響を与えないように実装する
- 診断機能自体が故障しても危険にならないようにする
- 複数の危険側故障を効率よく検出できる構成とする
また、MCUベンダーが提供する診断ライブラリは有効に活用することが推奨されます。
さらに、System FMEAやFMEDAで割り当てた診断機能については、トレーサビリティ確保のため識別番号を付与し、安全要求仕様書(SRS)に記載することが望まれます。
まとめ
本章では、機能安全への対応として以下のポイントを整理しました。
- 安全機能はILO(Input・Logic・Output)で構成する
- 安全度に応じたアーキテクチャ選定が必要
- 危険側故障を特定し、診断機能で検出して安全状態へ移行させる
- システムブロック図とSystem FMEAまたはFMEDAが設計の中核となる
機能安全の設計は、単なる回路設計ではなく、リスクに基づいた体系的なシステム設計です。特に初期段階での構成検討と診断設計が、最終的な安全性能および認証取得の可否に大きく影響します。
次章では、これらを具体的な仕様として定義する「安全要求仕様書(SRS)」について解説します。
本記事の筆者
セイフティ・クリエイト株式会社
高山 哲哉 氏
産業用ロボットの機能安全認証経験をもとに、産業製品を中心に第三者認証取得支援を行っております。メーカー様と一緒に規格要求を製品に落とし込み、その過程で規格要求の内容等を理解頂き、第三者認証審査に備えてまいります。
C/C++testは、静的解析、単体テスト、カバレッジの計測、実行時メモリエラー検出、効率的な運用や規格順守を補助する機能などを搭載したC言語/C++言語対応のオールインワンテストツールです。MISRA、AUTOSAR、CERT、CWEなどで定められた規約に基づくコーディングの支援や、単体テストやアプリケーション実行時に自動的にカバレッジを計測するなど、さまざまな要件に対応しています。
C/C++test CTは、セーフティクリティカルな開発でのGoogleTestの活用をサポートします。単体テストにおけるカバレッジ計測やテスト要件のトレーサビリティ確保などの機能により、効率的な機能安全対応を可能にします。ツール認証済みのGoogleTestをパッケージとして含み、機能安全規格におけるツールの妥当性検証が不要です。さらに、MCPサーバーを用いたAI連携機能を搭載し、AIエージェントと連携したスムーズなツール利用も実現します。

