(57)【要約】  簡素な処理により機能安全の実現を可能にする。  安全関連タスクはイベント発生回路からの外部信号による割込みで起動される。ステップＳ６０３では、既に動作している通常制御タスクを一時中断して、安全関連タスクを実行する。安全関連タスクは、処理順にタスク（１〜Ｎ）が定義されており、ステップＳ６０４ではタスク（１〜Ｎ）を処理順に実行する。ステップＳ６０４では、実行された結果に異常が検出された回数をタスク（１〜Ｎ）別にカウントしており、ステップＳ６０５では、そのカウント値がｎ回に達していれば、確実に異常が発生していると見做し、ステップＳ６０６で、そのタスクに対応したＭＩＬの点灯等の警告を行う。安全関連タスクの処理が終了した場合には、通常制御タスク処理を再開する。
2014188764.tif 000002
【特許請求の範囲】
【請求項１】
制御対象に対する制御内容を指示して前記制御対象の機能安全の確保に関する安全関連タスクと、前記制御対象の制御に関する前記機能安全を除いた通常制御タスクとを実行するプロセッサを備えた機能安全制御装置において、
前記プロセッサは、外部から入力された外部信号をトリガにして前記安全関連タスクを実行することを特徴とする機能安全制御装置。
【請求項２】
請求項１記載の機能安全制御装置であって、
前記外部信号は周期的に発生され、前記外部信号が前記プロセッサに入力された時、前記プロセッサの割り込み処理により前記安全関連タスクを実行することを特徴とする機能安全制御装置。
【請求項３】
請求項２記載の機能安全制御装置であって、
前記プロセッサの割り込み処理により前記安全関連タスクを実行した結果、所定回数の割り込み処理により所定回数の異常が検出された場合に異常を警告することを特徴とする機能安全制御装置。
【請求項４】
請求項１〜３のいずれか一項に記載の機能安全制御装置であって、
前記外部信号は前記プロセッサの外部に設けられたイベント発生回路から発生されることを特徴とする機能安全制御装置。
【請求項５】
請求項１〜３のいずれか一項に記載の機能安全制御装置であって、
前記プロセッサは、前記外部信号による前記割り込み処理により、前記通常制御タスクに優先して前記安全関連タスクを実行することを特徴とする機能安全制御装置。
【請求項６】
請求項１〜３のいずれか一項に記載の機能安全制御装置であって、
前記安全関連タスクの実行を監視する実行監視タスクを更に備え、
前記プロセッサは、前記実行監視タスクを前記通常制御タスクよりも優先して実行し、前記通常制御タスクを前記安全関連タスクよりも優先して実行することを特徴とする機能安全制御装置。
【請求項７】
請求項６記載の機能安全制御装置であって、
前記外部信号は少なくとも２つ以上の信号を持ち、
前記外部信号の１つをトリガにして前記実行監視タスクを実行し、
前記外部信号の他の１つをトリガにして前記安全関連タスクを実行することを特徴とする機能安全制御装置。
【請求項８】
請求項１〜３のいずれか一項に記載の機能安全制御装置であって、
前記外部信号が途絶したことを検出する検出部を更に備え、
前記検出部により前記外部信号が途絶したことが検出された時、前記プロセッサは前記通常制御タスク内におけるタスク管理処理によって前記安全関連タスクを実行することを特徴とする機能安全制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機能安全の確保のために車両等に搭載される機能安全制御装置に関する。
【背景技術】
【０００２】
車両は、マイクロプロセッサ等によって安全状態を常時監視し、必要な場合は適切な安全関連処理を実行することで、機能安全を確保する必要がある。【０００３】
機能安全に関する国際標準としてＩＥＣ６１５０８やＩＳＯ２６２６２等が制定されている。ＩＥＣ６１５０８は、マイクロプロセッサやＰＬＣ（Programmable Logic Controller）等のハードウェアとコンピュータプログラム（ソフトウェア）によって安全関連系を構築するための様々な技法を定めている。ＩＥＣ６１５０８で定められている技法を用いることで、コンピュータシステムを用いて安全関連系を構築することが可能となる。【０００４】
一方、近年マイクロプロセッサの処理能力向上及びハードウェアコストの低減を目的として、複数のアプリケーションを１つのマイクロプロセッサで実行することがトレンドとなっている。この場合、機能安全に関するアプリケーションプログラム（以下、安全関連アプリケーションと呼ぶ) をその他のアプリケーションプログラム(以下、通常制御アプリケーションと呼ぶ)と共に１つのマイクロプロセッサ上で動作させる。【０００５】
安全関連アプリケーション及び通常制御アプリケーションを含むソフトウェア全体に機能安全規格で定められている手法を適用すると、互いのアプリケーションが干渉しないように独立的な構成にしなければならない。【０００６】
例えば、特許文献１に開示されている技術では、１つのマイクロプロセッサ上でアプリケーションプログラムのタイムパーティションニングを行い、安全関連アプリケーションを通常制御アプリケーションから時間的に分離させている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開番号  ＷＯ２０１２／１０４９０１Ａ１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、従来の技術では、タイムパーティショニングというタスク管理によってアプリケーション処理を逐次切り換えて処理を行っているため、処理が複雑になる欠点がある。
【課題を解決するための手段】
【０００９】
請求項１に記載の機能安全制御装置は、制御対象に対する制御内容を指示して制御対象の機能安全の確保に関する安全関連タスクと、制御対象の制御に関する機能安全を除いた通常制御タスクとを実行するプロセッサを備えた機能安全制御装置において、プロセッサは、外部から入力された外部信号をトリガにして安全関連タスクを実行することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、簡素な処理により機能安全対応の実現が可能となる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係わる機能安全制御装置の回路構成図である。
【図２】モータ制御における通常制御タスクの機能ブロック図である。
【図３】モータ制御おける安全関連タスクの機能ブロック図である。
【図４】通常制御タスクの処理を示すフローチャートである。
【図５】通常制御タスクのＪＯＢテーブルを示す図である。
【図６】第１の実施の形態に係わる安全関連タスクの処理を示すフローチャートである。
【図７】第１の実施の形態に係わる外部信号が途絶した場合の通常制御タスクの処理を示すフローチャートである。
【図８】（ａ）第２の実施の形態に係わる実行監視タスクと安全関連タスクの構成、（ｂ）実行監視タスク、通常制御タスクと安全関連タスクの優先順位を示す図である。
【図９】第２の実施の形態に係わる安全関連タスクおよび実行監視タスクの処理を示すフローチャートである。
【図１０】第２の実施の形態に係わる安全関連タスクの処理を示すフローチャートである。
【図１１】第２の実施の形態に係わる実行監視タスクの処理を示すフローチャートである。
【図１２】第２の実施の形態に係わる外部信号が途絶した場合の通常制御タスクの処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
（第１の実施の形態）
図１は、第１の実施の形態に係わる機能安全制御装置１の回路構成図である。機能安全制御装置１は、プロセッサ２、ウォッチドックタイマ（ＷＤＴ）３及びイベント発生回路４より構成されている。以下、マイクロプロセッサやＰＬＣ（Programmable Logic 
Controller）を総称してプロセッサ２と称する。
【００１３】
プロセッサ２は、ＥＰ-ＲＯＭで構成される不揮発性メモリ１０、ＲＡＭで構成される実行用メモリ１１、Ｉ／Ｏモジュール１２、タイマモジュール１３、ＣＰＵ１４、割り込みコントローラ１５で構成される。
【００１４】
ＷＤＴ３は常時内部でタイマをカウントし、プロセッサ２からクリア信号が入力されたときには、そのカウンタをクリアする機能を有し、そのカウンタ値が所定値以上となった時に、タイムアップ信号を出力する機能を有している。プロセッサ２から定期的にクリア信号をＷＤＴ３に入力し、ＷＤＴ３からタイムアップ信号が出力されなければ、プロセッサ２が正常に動作していることが確認できる。プロセッサ２が正常に動作しなくなり、プロセッサ２からクリア信号がＷＤＴ３に出力されなくなった場合には、ＷＤＴ３のカウンタ値がカウントアップして、カウンタ値が所定値を超えたところで、タイムアップ信号を出力する。この信号を、例えばリセット回路等(図示せず) に接続することにより、プロセッサ２の異常動作時に、例えば外部機器５等の駆動を遮断することにより装置を安全な状態に移行させることができる。
【００１５】
イベント発生回路４は、プロセッサ２の外部に設けられ、２つの外部信号ＩＮＴ１、ＩＮＴ２をそれぞれ周期的に発生するものである。この場合の周期は、あらかじめ固定で決められていてもよく、プロセッサ２等より任意に設定されるものでもよい。このイベント発生回路４の出力をプロセッサ２の割り込みコントローラ１５の外部割込み端子に接続することにより定期的な割り込み処理が発生することになる。
【００１６】
Ｉ／Ｏモジュール１２は、センサ、アクチュエータ等の外部機器５と接続され、また、ネットワーク６を介して制御ユニット７と接続され、入力値の取り込みや出力を行う。
【００１７】
タイマモジュール１３は、所定の時刻を設定する機能を有し、設定された時刻に達すると割り込みが発生する。ＣＰＵ１４は不揮発性メモリ１０に格納されているプログラムを実行する。
【００１８】
割り込みコントローラ１５は、外部割込み端子より割り込みが発生すると、不揮発性メモリ１０に格納されたベクタテーブル１００に登録された番地にジャンプし、そこから処理を実行する。外部割込み端子少なくとも２つの端子を備え、イベント発生回路４から外部信号ＩＮＴ１、ＩＮＴ２が入力される。ベクタテーブル１００は、割り込みとそれに対処する処理とを関連づけるテーブルである。
【００１９】
ＯＳ１０１は、ＣＰＵ１４によって実行されることにより、ＣＰＵ１４、実行用メモリ１１、および不揮発性メモリ１０等のハードウェア資源を利用して、タスク管理、割り込み管理、時間管理、資源管理、およびタスク間同期等の処理を行う。
【００２０】
アプリケーションは、実行単位のタスクで構成されており、タスク管理とはそれらのタスクの実行タイミングや実行順序を管理するものである。アプリケーションには、安全関連アプリケーション、通常制御アプリケーション、実行監視アプリケーションがある。安全関連アプリケーションは、機能安全に関する国際標準としてＩＥＣ６１５０８やＩＳＯ２６２６２等が制定されている機能安全を実現する為の命令コードを含んだ安全関連タスク１０２よりなる。通常制御アプリケーションは、ある制御対象の機能を実現するための命令コードを含んだ通常制御タスク１０３よりなる。実行監視アプリケーションは、安全関連タスク１０２の実行を監視する実行監視タスク１０４よりなる。
【００２１】
安全関連タスク１０２、通常制御タスク１０３、および実行監視タスク１０４はプログラムとしてＥＰ-ＲＯＭで構成される不揮発性メモリ１０に記憶される例で説明するが、その他の媒体に記憶されていてもよく、また、ネットワーク６を介して供給されたものであってもよく、プログラム商品として提供される記録媒体に記憶されたものであってもよい。
【００２２】
安全関連タスク１０２は、異常の検出処理および、異常が発生した場合に安全状態へ移行するためのフェールセーフ処理を実行する。例えば、ある制御対象の機能を実現する為の外部機器５のエレメント（構成要素）があり、そのエレメントの故障によって安全目標を侵害する場合、そのエレメントが正常に動作しているかを監視する安全機構を構築する。
【００２３】
同一のプロセッサ２を用いて、上記の通常制御タスク１０３と安全関連タスク１０２や実行監視タスク１０４を共存させるためには、互いのアプリケーションが干渉を起こさないように、可能な限り分離独立させる必要がある。すなわち、ＣＰＵ１４、実行用メモリ１１、Ｉ／Ｏモジュール１２を含むハードウェア資源を、時間的に分離保護する必要がある。
【００２４】
本実施の形態では、時間的な分離保護は外部割込み処理を使用することで実現する。通常制御タスク１０３はＯＳ１０１のタスク管理で実行し、安全関連タスク１０２はイベント発生回路４からの外部信号ＩＮＴ１をトリガにした割込みにより起動し、実行監視タスク１０４は外部信号ＩＮＴ２をトリガにした割り込みにより起動する。そのため、たとえＯＳ１０１のタスク管理が異常となっても安全関連タスク１０２、実行監視タスク１０４を実行することができる。これにより、安全関連タスク１０２、実行監視タスク１０４に対するＣＰＵ１４の実行時間は、通常制御タスク１０３の実行時間と時間的に分離することができる。
【００２５】
次に図２及び３を用いて通常制御タスク１０３と安全関連タスク１０２について説明する。図２は、モータ制御における通常制御タスク１０３の機能ブロック図であり、モータ制御におけるレゾルバ信号を使った主機能の一例を示したものである。プロセッサ２を通常制御タスク１０３の機能ブロックとして、目標電流演算処理２０２及びＰＷＭ（Pulse Width Modulation：パルス幅変調）出力処理２０３で示している。
【００２６】
モータ２５０とモータの回転数を検出するレゾルバ２４０とモータ２５０を制御するモータ制御ユニット２００から構成されている。モータ制御ユニット２００は、レゾルバ２４０からの信号を角度に変換できるレゾルバＩＣ２０１とその信号を基に演算を行うプロセッサ及びそのＰＷＭ出力をモータに伝達するためのＰＷＭ出力バッファ２０４を備えている。プロセッサ２内ではモータトルクが指令トルク値となるように、レゾルバＩＣ２０１が出力する角度情報のほかに、バッテリの高電圧( 図示せず)情報 やモータに流れている実電流値(図示せず)情報などを基に目標電流演算処理２０２にて目標電流を算出する。
【００２７】
目標電流値はＰＷＭ出力処理２０３にてＰＷＭ信号に変換されＰＷＭ出力バッファ２０４に出力される。ＰＷＭ出力バッファでは、プロセッサ２から出力されたＰＷＭ信号を、モータ駆動できるレベルの信号に変換しモータ２５０に出力し、モータ２５０を制御する。本構成図において、レゾルバＩＣ２０１に故障が発生し、レゾルバＩＣの演算に誤差が生じると、目標電流が変化し、ＰＷＭ出力が変化することによりモータトルクが急変する恐れがある。これによって、例えば車両挙動が急変し、安全目標を侵害することがある。そこで、機能安全では、安全目標を侵害する恐れのあるエレメント（ ここではレゾルバＩＣ）に対し異常状態を検出できる安全機構を構築し、異常発生時には速やかに安全状態に移行できる構成となっていることが求められている。
【００２８】
図３は、モータ制御におけるレゾルバＩＣ２０１失陥時に対する安全機構の一例を示したものである。安全機構としてレゾルバＩＣをもう1つ追加して冗長化させる手段もあるが、ここでは、ソフトウェアにてレゾルバＩＣの機能を冗長化させた例について説明する。
【００２９】
図３では、プロセッサ２を通常制御タスク１０３の機能ブロックとして、目標電流演算処理２０２及びＰＷＭ出力処理２０３で示している。更に、プロセッサ２を安全関連タスク１０２の機能ブロックとして、角度算出処理２１１及び比較処理２１２及びフェールセーフ処理２１３を示している。
【００３０】
レゾルバ２４０の信号をプロセッサに入力し、角度算出処理２１１にてモータ角度を算出する。そのモータ角度とレゾルバＩＣ２０１から算出される角度を比較処理２１２して異常が発生した場合には、フェールセーフ処理２１３をおこない、例えば、ＰＷＭ出力バッファに信号を送り、ＰＷＭ信号を遮断する。なお、図示していないが、フェールセーフ処理として、ＰＷＭ信号遮断のほかにもＭＩＬ（Multifunction Indicator Lamp：警告灯）の点灯や、上位コントローラに対してＰＷＭ遮断信号を送る処理を追加実施してもよい。本図における、角度算出処理２１１及び比較処理２１２及びフェールセーフ処理２１３がレゾルバＩＣ２０１失陥に対する機能安全を満たすための安全機構であり、その演算処理は安全関連タスク１０２となる。それ以外の処理はモータを制御するためのものであり、通常制御タスク１０３となる。
【００３１】
次に図４を用いて通常制御タスク１０３の処理について説明する。通常制御タスク１０３は、制御の項目ごとに複数のタスクに分割され、さらに制御目的に応じた演算タイミングが決められており、これらのタスクを図５に示すようなＪＯＢテーブルに割り付けている。
【００３２】
図５ではＪＯＢテーブルとして、演算周期が１ｍｓ、２ｍｓ、１０ｍｓの例を記載しているが、これらのテーブルに各タスクを登録し、決められた周期毎にこのＪＯＢテーブルを実行することによって、決められた周期で演算を行うことができる。ＪＯＢテーブルは上位に記載されているタスクから順に実行されるため、タスク間の演算順序を考慮して登録される。更に、ＪＯＢテーブルには、安全関連タスクを実行する安全関連ＪＯＢテーブルが定められており、外部信号による割り込みが途絶したことが検出された場合に、プロセッサ２によって通常制御タスク１０３内におけるタスク管理処理によって安全関連ＪＯＢテーブルの安全関連タスクを実行する。
【００３３】
ＯＳ１０１は、各タスクが決められた演算周期で処理が実行できるようにタスク管理を行っている。その一例を図４に示す。図４に示す処理は、例えば、ＯＳ１０１がタイマモジュール１３を参照して１ｍｓごとに起動するものとする。
【００３４】
ステップS４０１では、ソフトウェア内において各ＪＯＢのタイマをカウントアップする処理を実施する。本フローでは１ｍｓ、２ｍｓ、１０ｍｓのタスク管理を行うため、それぞれのＪＯＢのタイマを、処理が呼ばれるごとにカウントアップする。
【００３５】
その後、ステップS４０２に進み、１ｍｓＪＯＢのタイマが１以上かどうかを判定する。１以上の場合には、ステップＳ４０３で１ｍｓＪＯＢのタイマを０にした後、ステップＳ４０４へ進み１ｍｓＪＯＢタスクを実行する。ここでは、先に述べたように図５の１ｍｓＪＯＢテーブルに記載されたタスクＡ、Ｂ、Ｃを順番どおりに実行する。
【００３６】
その後、ステップＳ４０５に進み、２ｍｓＪＯＢのタイマが２以上かどうかを判定し、２以上の場合には、ステップＳ４０６で２ｍｓＪＯＢのタイマを０にした後、ステップＳ４０７へ進み２ｍｓＪＯＢタスクを順に実行する。
【００３７】
その後、ステップＳ４０８に進み、１０ｍｓＪＯＢのタイマが１０以上かどうかを判定し、１０以上の場合には、ステップＳ４０９で１０ｍｓＪＯＢのタイマを０にした後、ステップＳ４１０へ進み１０ｍｓＪＯＢタスクを順に実行する。このように通常制御タスク１０３はＯＳ１０１によってタスク管理が行われ処理を実行している。
【００３８】
次に図６を用いて安全関連タスク１０２の動作フローについて説明する。安全関連タスク１０２はイベント発生回路４からの外部信号ＩＮＴ１による割込みにより起動され、この外部割込みが発生する前は、図４の処理にて通常制御タスク１０３が実行されている。
【００３９】
イベント発生回路４は、例えば２０ｍｓと決められた周期で外部信号ＩＮＴ１が発生するため、本割り込み処理は定期的に呼び出されることになる。外部割込みが発生すると、ステップＳ６０１へ進み、外部割込みの要因を判定する。外部割込みが安全関連タスク１０２起動用ではない場合には、ステップＳ６０９へ進み、外部割込み処理とＪＯＢテーブルで決められた定時タスク処理の優先順序を勘案して処理が実行される。
【００４０】
一方、ステップＳ６０１で、安全関連タスク１０２起動用の割り込みが発生したと判別された場合には、ステップＳ６０２に進み、割り込み監視用の内部カウンタをリセットする。この内部カウンタはソフトウェアによりカウントアップされ、後述するように、例えば、２０ｍｓより大きな所定値になると、外部信号ＩＮＴ１が途絶したことが検出される。詳細は図７を用いて後述する。
【００４１】
次のステップＳ６０３では、既に動作している通常制御タスク１０３を一時中断する。その後、ステップＳ６０４へ進み、安全関連タスク１０２を実行する。安全関連タスク１０２は、処理順にタスク１〜Ｎが定義されており、ステップＳ６０４ではタスク１〜Ｎのいずれかのタスクを処理順に実行する。
【００４２】
ステップＳ６０４では、実行された結果、異常が検出された回数を各タスク１〜Ｎ別にカウントしており、ステップＳ６０５では、そのカウント値がｎ回、例えば５回になったタスクがあるかを判断する。カウント値がｎ回に達していれば、確実に異常が発生していると見做し、ステップＳ６０６で、そのタスクに対応したＭＩＬの点灯等の警告を行う。なお、カウント値は警告に対する対処が終了した後にクリアされる。
【００４３】
ステップＳ６０５でカウント値がｎ回に達していない場合や、ステップＳ６０６でＭＩＬの点灯等の警告が行われた後に、ステップＳ６０７では安全関連タスク１０２の全てのタスクが終了したかどうかの判定を実施する。安全関連タスク１０２の全てのタスクが終了していなければ、ステップＳ６０４に戻り、タスク１〜Ｎのうち次の処理順のタスクを実行する。安全関連タスク１０２の処理が全て終了した場合には、ステップＳ６０８へ進み、通常制御タスク１０３処理を再開する。
【００４４】
図７は、外部信号が途絶した場合の通常制御タスクの処理を示すフローチャートである。前述の図６の安全関連タスク１０２の動作フローは、例えば２０ｍｓと決められた周期で外部信号ＩＮＴ１が発生して、定期的に呼び出されて処理されている。そして、ステップＳ６０２で、割り込み監視用の内部カウンタがリセットされている。しかし、何らかの原因により、外部信号ＩＮＴ１が途絶した場合には、ステップＳ６０２の処理が行われなくなる。
【００４５】
図７に示す処理は、通常制御タスクにおいて、例えば２０ｍｓより長い周期で繰り返し実行される。ステップＳ７０１で、割り込み監視用の内部カウンタがｋより大きいかを検出し、内部カウンタがｋより大きい、例えば７０ｍｓより大きい場合には、外部信号が途絶したことを検出する。ステップＳ７０２で、プロセッサ２は通常制御タスク１０３内におけるタスク管理処理によって安全関連タスク１０２を実行する。具体的には、通常制御タスク１０３は、図５に示す安全関連ＪＯＢテーブルに基づいて、安全関連タスクを実行する。
【００４６】
このように、安全関連タスク１０２の処理を最優先で実行する構成とすることにより、ＯＳ１０１が異常になったとしても必ず安全関連タスク１０２を実行することができるため、安全状態に移行することが可能となる。
【００４７】
また、機能安全に対応するためには、安全関連タスク１０２が正しく実行されていることを監視する必要がある。そこで従来からプロセッサ監視に用いられているＷＤＴ３を使って安全関連タスク１０２の監視を行う構成とする。即ち、安全関連タスク１０２の処理において、ＷＤＴ３用のトリガ信号を作成し、これをＷＤＴ３に対して出力する構成とする。
【００４８】
これにより、例えば外部割込み信号が異常となり、安全関連タスク１０２が実行できなくなったときには、ＷＤＴ３用のトリガ信号が出力されなくなるため、ＷＤＴ３が異常を検知し、例えばプロセッサ２をリセットして動力を遮断し安全な状態に遷移することが可能となる。
【００４９】
このような構成をとればＷＤＴ３を使って安全関連タスク１０２が正常に機能しているかの健全性監視を行うことができる。
【００５０】
また、ＷＤＴ３を使って安全関連タスク１０２と通常制御タスク１０３の両方を監視してもよい。この場合、例えば通常制御タスク１０３内でＷＤＴ３用のトリガ信号を算出し、安全関連タスク１０２ではＷＤＴ３用のトリガ信号が正常に算出された場合のみ、ＷＤＴ３用のトリガ信号をＷＤＴ３へ出力する構成とすることで、両方のタスクの監視を行うことができる。
【００５１】
（第２の実施の形態）
次に、第２の実施の形態について説明する。機能安全制御装置１の回路構成図は、図１に示す第１の実施の形態と同様であるので図示および説明を省略する。通常制御タスクの処理は図４に示すフローチャートと同様である。通常制御タスクのＪＯＢテーブルも図５と同様である。
【００５２】
第１の実施の形態では、安全関連タスク１０２は割り込み処理が最優先となっているため、安全関連タスク１０２の処理自体が重くなると、演算負荷が高くなり、本来制御対象を制御する通常制御タスク１０３が正常に動作しなくなってしまう虞もある。そこで安全関連タスク１０２の処理負荷を低減する第２の実施の形態について説明する。
【００５３】
図８（ａ）は、実行監視タスクと安全関連タスクの構成、図８（ｂ）は、実行監視タスク、通常制御タスクと安全関連タスクの優先順位を示す図である。
【００５４】
図８（ａ）に示すように、安全関連タスク１０２に加えて、それぞれの安全関連タスク１０２が実行されたか否かを監視する実行監視タスク１０４を追加する。安全関連タスク１０２は複数のタスク、例えばタスク１〜Ｎにて構成されており、実行監視タスク１０４は、それぞれの安全関連タスク１０２が実行されたか否かの判定し、安全関連タスク１０２が正常に動作していないと判断された場合にはフェールセーフ動作を行う。
【００５５】
実行監視タスク１０４の優先順位は最優先とし、安全関連タスク１０２は通常制御タスク１０３より優先度を下げる。実行監視タスク１０４は外部信号ＩＮＴ２を使って割り込み処理にて起動され、安全関連タスク１０２は外部信号ＩＮＴ１を使って割り込み処理にて起動される構成とする。
【００５６】
実行監視タスク１０４は、安全関連タスク１０２の実行を監視しているだけであるため、安全関連タスク１０２に比べて処理負荷は低い。この実行監視タスク１０４を最優先処理とすることで、割り込み処理負荷を低くすることができ、通常制御タスク１０３の動作を確保しつつ、安全関連タスク１０２が異常となった場合でも、フェールセーフ処理動作を確実に実行することが可能となる。
【００５７】
図９は、安全関連タスク１０２および実行監視タスク１０４の処理を示すフローチャートである。図９は外部割込みが発生したときに実行される処理である。外部信号ＩＮＴ１は、安全関連タスク１０２を実行する割り込み、外部信号ＩＮＴ２は実行監視タスク１０４を実行する割り込みであり、イベント発生回路４より周期的に出力される。外部割込みが発生するとＳ９０１で安全関連タスク１０２若しくは実行監視タスク１０４を起動するための外部割り込みであるか否かの判定をする。
【００５８】
外部割込みが安全関連タスク１０２若しくは実行監視タスク１０４を起動するための割り込みではない場合は、ステップＳ９１０に進み、外部割り込み処理とＪＯＢテーブルで決められた定時タスク処理の優先順序を勘案して処理が実行される。
【００５９】
一方、外部割込みが安全関連タスク１０２若しくは実行監視タスク１０４を起動するための割り込みが発生した場合には、ステップＳ９０２に進み、割り込み監視用の内部カウンタをリセットする。この内部カウンタはソフトウェアによりカウントアップされ、後述するように、例えば、２０ｍｓより大きな所定値になると、外部信号ＩＮＴ１、ＩＮＴ２が途絶したことが検出される。
【００６０】
ステップＳ９０３では、外部割り込みの要因を判定する。外部割り込みが外部信号ＩＮＴ２による実行監視タスク１０４の場合にはステップＳ９０４へ進み、既に動作している通常制御タスク１０３を一時中断し、ステップＳ９０５にて実行監視タスク１０４処理を実行する。ここでは、後述するように、安全関連タスク１０２が定期的に実行されているかの判定を行う。もしここで安全関連タスク１０２が定期的に実行されていないと判断できる場合には、例えばプロセッサリセットのフェールセーフ処理等をおこなって安全状態に移行するようにする。ステップＳ９０５の実行監視タスク１０４において、安全関連タスク１０２が定期的に実行されている場合にはステップＳ９０６へ進み、通常制御タスク１０３の処理を再開する。
【００６１】
一方、ステップＳ９０３で、外部割り込みが外部信号ＩＮＴ２による実行監視タスク１０４でない場合、すなわち外部割り込み信号が安全関連タスク１０２を起動する外部信号ＩＮＴ１である場合には、ステップＳ９０７へ進み、通常制御タスク１０３処理を優先し、通常制御タスク１０３が終了するまで安全関連タスク１０２の処理を待機させる。通常制御タスク１０３処理が終了した場合にはステップＳ９０８へ進み、後述する安全関連タスク１０２の処理を実行する。即ち安全関連タスク１０２の実行は、通常制御タスク１０３より優先順位を低くすることで、安全関連タスク１０２の割り込み負荷増加により、本来の制御が破綻することを防ぐことが出来る。
【００６２】
このとき、実行監視タスク１０４が正常に動作しているかを監視するために、ＷＤＴ３用のトリガ信号は、実行監視タスク１０４にて行う。もちろん、安全関連タスク１０２と実行監視タスク１０４の両方を監視してもよいが、トリガ出力は実行監視タスク１０４でおこなうことにより、安全機構の監視を実現することが可能となる。
【００６３】
図１０は、第２の実施の形態に係わる安全関連タスクの処理を示すフローチャートであり、図９のステップＳ９０８の詳細を示すものである。
【００６４】
ステップＳ１００１では、タスク１〜Ｎを順に指定するための変数ｉを１に設定する。次のステップＳ１００２で、タスクｉを実行する。変数ｉが１の場合はタスク１を実行する。そして、ステップＳ１００２では、実行された結果に異常が検出された回数を各タスク１〜Ｎ別にカウントする。
【００６５】
そして、ステップＳ１００３では、異常が検出された回数がｎ回、例えば５回になったタスクであるかを判断する。回数がｎ回に達していれば、確実に異常が発生していると見做し、ステップＳ１００４で、そのタスクに対応したＭＩＬの点灯等の警告を行う。なお、タスク１〜Ｎ別に記憶された回数は警告に対する対処が終了した後にクリアされる。
【００６６】
ステップＳ１００５では、ｉ番目のタスクが終了した後に、タスク番号に対応して実行フラグを１に設定する。そして、ステップＳ１００６で、変数ｉがＮになったかを判断し、ＮになっていなければステップＳ１００７で、変数ｉに１を加算してステップＳ１００２の処理に戻る。ステップＳ１００６で、変数ｉがＮになれば、安全関連タスク１０２のタスク１〜Ｎを終了する。何らかの異常が生じて、図１０に示す安全関連タスクの処理が実行されなかった場合には、実行フラグが１に設定されないタスクが存在することになる。
【００６７】
図１１は、実行監視タスク１０４の処理を示すフローチャートであり、図９のステップＳ９０５の詳細を示すものである。ステップＳ１１０１では、タスク１〜Ｎを順に指定するための変数ｉを１に設定する。次のステップＳ１１０２にてｉ番目のタスクの実行フラグが１か否かを判定する。安全関連タスク１０２のｉ番目のタスクが実行されていれば、実行フラグが１となっているが、未実行の場合には０となっているため、このフラグをみることで、安全関連タスク１０２の実行有無を判定することができる。
【００６８】
ｉ番目のタスクの実行フラグが１の場合には、正常にｉ番目のタスクが実行されているとして、ステップＳ１１０６にて、ｉ番目のタスクの未実行カウンタを０クリアして、ステップＳ１１００７へ進み、ｉ番目のタスクの実行フラグを０にする。
【００６９】
一方、ステップＳ１１０２で、ｉ番目のタスクの実行フラグが１でない場合には、ステップＳ１１０３へ進み、ｉ番目のタスクの未実行カウンタをインクリメントする。その後、ステップＳ１１０４へ進み、ｉ番目のタスクの実行カウンタが所定値となったか否かの判定を行う。例えば、タスクの未実行状態が所定期間続いた結果、図１１に示す実行監視タスク１０４の処理が複数回実行された場合に、タスクの実行カウンタが所定値以上となる。所定値以上となった場合には、ステップＳ１１０５へ進みリセットなどのフェールセーフ動作を行う。
【００７０】
安全関連タスク１０２は、通常制御タスク１０３より優先順位が低いため、通常制御タスク１０３の処理負荷が一時的に大きくなった場合には、安全関連タスク１０２がキャンセルされる場合がある。また、イベント発生回路４によって駆動されるため、駆動周期に変動が発生する虞もある。その場合も考慮して、実行カウンタの所定値を定めている。
【００７１】
一方、ステップＳ１１０４で、ｉ番目のタスクの未実行カウンタが所定値以下の場合には、ステップＳ１１０７へ進み、ｉ番目のタスクの実行フラグを０にクリアする。
そして、ステップＳ１１０８で、変数ｉがＮになったかを判断し、ＮになっていなければステップＳ１１０９で、変数ｉに１を加算してステップＳ１１０２の処理に戻る。ステップＳ１１０８で、変数ｉがＮになれば、実行監視タスク１０４を終了する。
【００７２】
図１２は、外部信号が途絶した場合の通常制御タスクの処理を示すフローチャートである。前述の図９の安全関連タスク１０２および実行監視タスク１０４の処理を示すフローチャートは、決められた周期で外部信号が発生して、定期的に呼び出されて処理されている。そして、ステップＳ９０２で、割り込み監視用の内部カウンタがリセットされている。しかし、何らかの原因により、外部信号が途絶した場合には、ステップＳ６０２の処理が行われなくなる。
【００７３】
図１２に示す処理は、通常制御タスクにおいて、例えば２０ｍｓより長い周期で繰り返し実行される。ステップＳ１２０１で、割り込み監視用の内部カウンタがｋより大きいかを検出し、内部カウンタがｋより大きい、例えば７０ｍｓより大きい場合には、外部信号が途絶したことを検出する。ステップＳ１２０２で、プロセッサ２は通常制御タスク１０３内におけるタスク管理処理によって安全関連タスク１０２を実行する。次に、ステップＳ１２０３で、プロセッサ２は通常制御タスク１０３内におけるタスク管理処理によって安全関連タスク１０２を実行する。
【００７４】
以上により、安全関連タスク１０２が期待通りのタイミングで実行されていない場合には、その異常を検知して安全状態へ遷移させることが可能となる。
【００７５】
安全関連タスク１０２は外部信号により起動されるため、外部信号が失墜した場合には、安全関連タスク１０２が動作しない。この場合には、前述したようにＷＤＴ３にてその異常を検出し、プロセッサ２をリセットする等の処理が取られる。しかし、安全関連タスク１０２は、対象エレメントの故障を監視している安全機構であり、その安全機構が失われたからといって、即リセットするのは望ましくない。好ましくは、ＭＩＬ点灯や出力制限はするものの、なるべくその機能を継続できる状態にすることである。そこで、外部信号が失墜した場合には、安全関連タスク１０２はＯＳ１０１が持っているタスク管理で実行するような構成とすればよい。但し、このときは安全機構が喪失しているため、フェールセーフ動作や、安全機構喪失の表示等をすることにより、車両の運転者が認識できる状態とする。
【００７６】
（変形例）
本発明は、以上説明した第１および第２の実施の形態を次のように変形して実施することができる。
【００７７】
（１）上述した実施の形態では、イベント発生回路４は、機能安全制御装置１内にある構成となっているが、他の機能安全制御装置、例えば制御ユニット７にあってもよい。この場合は、ワイヤー接続やＣＡＮ（Controller Area Network）通信等を使って、プロセッサ２の割り込みコントローラ１５の外部割込み端子に接続する構成とする。また、イベント発生回路４を複数個設け、複数の外部信号が割り込みコントローラ１５の外部割込み端子に接続される構成としてもよい。
【００７８】
（２）上述した実施の形態では、安全関連タスク１０２を外部信号で周期的に実行する構成としたが、外部信号で実行するものを安全関連タスク１０２に限定しなくてもよい。即ち任意の処理を外部信号で周期的に実行する構成としてもよい。例えば、プロセッサ内に主機能演算部と主機能演算部の処理を監視する監視演算部が存在した場合、この監視演算部を外部信号で周期的に実行してもよい。
【００７９】
以上説明した実施の形態によれば、次の作用効果が得られる。
（１）制御対象に対する制御内容を指示して制御対象の機能安全の確保に関する安全関連タスク１０２と、制御対象の制御に関する機能安全を除いた通常制御タスク１０３とを実行するプロセッサ２を備えた機能安全制御装置１において、プロセッサ２は、外部から入力された外部信号をトリガにして安全関連タスク１０２を実行するようにしている。したがって、通常制御タスク１０３の実行しているプロセッサ２のＯＳ１０１のタスク管理とは独立して、機能安全に関する国際標準としてＩＥＣ６１５０８やＩＳＯ２６２６２等が制定されている機能安全を実現する為の命令コードを含んだ安全関連タスク１０２を実行することができるため、通常制御タスク１０３と時間的な分離が可能となる。よって、同一のプロセッサ２内に安全関連タスク１０２と通常制御タスク１０３を配置することができ、機能安全制御装置１を簡素な処理で構成することにより低コストに提供することが可能となる。
【００８０】
（２）外部信号は周期的に発生され、外部信号がプロセッサ２に入力された時、プロセッサ２の割り込み処理により安全関連タスク１０２を実行する。安全関連タスク１０２は、決まった時間間隔で起動されるので、対象となるエレメントを周期的に監視して、異常が発生した時点から所定時間内に安全状態に移行させる処理を行うことができる。なお外部信号の周期は、異常が発生してから安全状態に移行するまでの許容時間と異常確定に必要な判断回数等によって決定する。例えば許容時間が２００ｍｓで異常確定に５回必要な場合、パルス周期は４０ｍｓで十分である。もちろん、割り込み誤差等を考慮して、周期をさらに短く設定してもよい。
【００８１】
（３）プロセッサ２は、外部信号による割り込み処理により、通常制御タスク１０３に優先して安全関連タスク１０２を実行する。プロセッサ２のタスク管理が異常となり、割り込みが入っても安全関連タスク１０２が動作せず、安全状態に移行しない場合がある。そこで本割り込みの優先順位を最優先にすることにより、プロセッサ２が異常となった場合でも安全関連タスク１０２を実行することが可能となる。
【００８２】
（４）安全関連タスク１０２の実行を監視する実行監視タスク１０４を更に備え、プロセッサ２は、実行監視タスク１０４を通常制御タスク１０３よりも優先して実行し、通常制御タスク１０３を安全関連タスク１０２よりも優先して実行する。一般に、安全関連タスク１０２の処理を最優先にすると、必ず安全関連タスク１０２を実行することが出来る反面、安全関連タスク１０２の処理が大きくなると、演算負荷が大きくなり、通常制御タスク１０３が正常に動作しなくなる。そこで、安全関連タスク１０２の実行を監視する実行監視タスク１０４を追加し、この実行監視タスク１０４を最優先とし、従来の安全関連タスク１０２の優先順位を下げることで、機能安全の機能を確保しつつ通常制御タスク１０３の処理への影響を最小限することが出来る。
【００８３】
（５）外部信号が途絶したことを検出する検出部ステップＳ７０１、Ｓ１２０１を更に備え、検出部により外部信号が途絶したことが検出された時、プロセッサ２は通常制御タスク１０３内におけるタスク管理処理によって安全関連タスク１０２を実行する。安全関連タスク１０２を外部割り込みで実行する場合、外部信号が途絶した場合、安全関連タスク１０２を実行することが出来ず、安全関連タスク１０２が対象としているエレメントが異常となった時に異常状態を検出することが出来なくなってしまう。そこで、外部信号が途絶した場合には、通常制御タスク１０３のタスク管理処理を使って安全関連タスク１０２を実行することにより、ＭＩＬ点灯や出力制限などのフェールセーフ動作を行いつつ、対象エレメントの異常監視を継続することが出来る。
【００８４】
本発明は、上記の実施の形態に限定されるものではなく、本発明の特徴を損なわない限り、本発明の技術思想の範囲内で考えられるその他の形態についても、本発明の範囲内に含まれる。
【符号の説明】
【００８５】
２・・・プロセッサ、３・・・ＷＤＴ、４・・・イベント発生回路、１４・・・ＣＰＵ、１５・・・割り込みコントローラ、１０２・・・安全関連タスク、１０３・・・通常制御タスク、１０４・・・実行監視タスク
【図１】
2014188764.tif 000003
【図２】
2014188764.tif 000004
【図３】
2014188764.tif 000005
【図４】
2014188764.tif 000006
【図５】
2014188764.tif 000007
【図６】
2014188764.tif 000008
【図７】
2014188764.tif 000009
【図８】
2014188764.tif 000010
【図９】
2014188764.tif 000011
【図１０】
2014188764.tif 000012
【図１１】
2014188764.tif 000013
【図１２】
2014188764.tif 000014
【国際調査報告】
2014188764.tif 000015
2014188764.tif 000016
2014188764.tif 000017
2014188764.tif 000018