(57)【要約】実行が不要なタイムパーティションのスキップを可能とする。ＯＳ（１００）は、安全監視プログラムに実行時間を割り当てるＴＰ１、通常制御プログラムに実行時間を割り当てるＴＰ２、および安全制御プログラムに実行時間を割り当てるＴＰ３を含むスケジューリングパターンに従って、次にスケジューリングするタイムパーティションを選択・決定するパーティションスケジューラ（２１）を一部に有する。プロセッサは、ＯＳ（１００）を実行することによって、パーティションスケジューラ（２１）を周期的に動作させる。パーティションスケジューラ（２１）は、ＴＰ１乃至ＴＰ３の少なくとも１つのタイムパーティション内で実行されるプログラムからの実行結果通知に応じて、スケジューリングパターンに含まれるＴＰのうちで実行不要なプログラムを含むＴＰをスキップする。
2012104897.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサを含むハードウェア資源と、
（ａ）制御対象に関する異常の発生を監視する安全監視プログラム、（ｂ）通常時における前記制御対象の制御に関連する通常制御プログラム、および（ｃ）異常時における前記制御対象の制御に関連する安全制御プログラムに対する前記プロセッサの実行時間の割り当てを制御するためのシステムプログラムと、を備え、
前記システムプログラムは、（ｄ）前記安全監視プログラムに前記実行時間を割り当てる第１のタイムパーティション、（ｅ）前記通常制御プログラムに前記実行時間を割り当てる第２のタイムパーティション、および（ｆ）前記安全制御プログラムに前記実行時間を割り当てる第３のタイムパーティションを含むスケジューリングパターンに従って、次にスケジューリングするタイムパーティションを選択・決定するパーティションスケジューラを一部に有し、
前記プロセッサは、前記システムプログラムを実行することによって、前記パーティションスケジューラを周期的に動作させ、
前記パーティションスケジューラは、前記第１乃至第３のタイムパーティションの少なくとも１つのタイムパーティション内で実行されるプログラムからの実行結果通知に応じて、前記スケジューリングパターンに含まれるタイムパーティションのうちで実行不要なプログラムを含むタイムパーティションをスキップする
安全制御装置。
【請求項２】
前記パーティションスケジューラは、前記第１のタイムパーティション内で実行される前記安全監視プログラムによって異常が検知されたことの前記実行通知結果を受取ると、以後のスケジューリングでは、前記第３のタイムパーティション以外のタイムパーティションをスキップする
ことを特徴とする請求項１に記載の安全制御装置。
【請求項３】
前記パーティションスケジューラは、前記第１乃至第３のタイムパーティション内でプログラムの初期化処理がそれぞれ実行されて終了したことに応じて、以後のスケジューリングでは、前記第３のタイムパーティションをスキップする
ことを特徴とする請求項１又は２に記載の安全制御装置。
【請求項４】
前記ハードウェア資源のリセットを行うリセット回路を更に備え、
前記パーティションスケジューラは、前記第１乃至第３のタイムパーティションの少なくとも１つのタイムパーティション内で実行されるプログラムから緊急停止を有する異常であるとの通知に応じて、前記リセット回路にリセット指示信号を出力し、
前記リセット回路は、前記リセット指示信号を受けた場合に、前記ハードウェア資源のリセットを行う
ことを特徴とする請求項１乃至３いずれか１項に記載の安全制御装置。
【請求項５】
前記ハードウェア資源のリセットを行うリセット回路を更に備え、
前記パーティションスケジューラは、前記リセット回路に定期的に信号を送信し、前記第１乃至第３のタイムパーティションの少なくとも１つのタイムパーティション内で実行されるプログラムから緊急停止を有する異常であるとの通知に応じて、前記リセット回路への前記信号の送信を停止し、
前記リセット回路は、前記パーティションスケジューラから送信される前記信号が途絶えた場合に、前記ハードウェア資源のリセットを行う
ことを特徴とする請求項１乃至３いずれか１項に記載の安全制御装置。
【請求項６】
（ａ）制御対象に関する異常の発生を監視する安全監視プログラムにプロセッサの実行時間を割り当てる第１のタイムパーティション、（ｂ）通常時における前記制御対象の制御に関連する通常制御プログラムに前記実行時間を割り当てる第２のタイムパーティション、および（ｃ）異常時における前記制御対象の制御に関連する安全制御プログラムに前記実行時間を割り当てる第３のタイムパーティションを含むスケジューリングパターンに従って、次にスケジューリングするタイムパーティションを前記プロセッサに選択・決定させるべく周期的に動作するステップと、
前記第１乃至第３のタイムパーティションの少なくとも１つのタイムパーティション内で実行されるプログラムからの実行結果通知に応じて、前記スケジューリングパターンに含まれるタイムパーティションのうちで実行不要なプログラムを含むタイムパーティションを前記プロセッサにスキップさせるべく動作するステップと、
を備える制御対象の安全制御方法。
【請求項７】
前記第１のタイムパーティション内で実行される前記安全監視プログラムによって異常が検知されたことの前記実行通知結果を受取ると、以後のスケジューリングでは、前記第３のタイムパーティション以外のタイムパーティションを前記プロセッサにスキップさせるべく動作するステップをさらに備える
ことを特徴とする請求項６に記載の安全制御方法。
【請求項８】
前記第１乃至第３のタイムパーティション内でプログラムの初期化処理がそれぞれ実行されて終了したことに応じて、以後のスケジューリングでは、前記第３のタイムパーティションを前記プロセッサにスキップさせるべく動作するステップをさらに備える
ことを特徴とする請求項６又は７に記載の安全制御方法。
【請求項９】
前記プロセッサを含むハードウェア資源のリセットを行うリセット回路を更に備え、
前記安全制御方法は、
前記第１乃至第３のタイムパーティションの少なくとも１つのタイムパーティション内で実行されるプログラムから緊急停止を有する異常であるとの通知に応じて、前記リセット回路にリセット指示信号を出力するステップと、
前記リセット回路を用いて、前記リセット指示信号を受けた場合に、前記ハードウェア資源のリセットを行うステップと、をさらに備える
ことを特徴とする請求項６乃至８いずれか１項に記載の安全制御方法。
【請求項１０】
前記プロセッサを含むハードウェア資源のリセットを行うリセット回路を更に備え、
前記安全制御方法は、
前記リセット回路に定期的に信号を送信し、前記第１乃至第３のタイムパーティションの少なくとも１つのタイムパーティション内で実行されるプログラムから緊急停止を有する異常であるとの通知に応じて、前記リセット回路への前記信号の送信を停止するステップと、
前記リセット回路を用いて、前記パーティションスケジューラから送信される前記信号が途絶えた場合に、前記ハードウェア資源のリセットを行うステップと、をさらに備える
ことを特徴とする請求項６乃至８いずれか１項に記載の安全制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機能安全の確保のためにサービスロボットおよび輸送機器等に搭載される安全制御装置に関し、特に、コンピュータシステムを用いた安全制御装置に関する。
【背景技術】
【０００２】
サービスロボットは、外界センサや自己診断装置によって安全状態を常時監視し、何らかの危険を検知した場合に適切な安全制御ロジックを実行することで、機能安全を確保する必要がある。【０００３】
上述したサービスロボットのほか、運輸機器等の電気的な原理で動作するシステムを対象とした機能安全に関する国際標準としてIEC 61508が制定されている。IEC 61508では、機能安全の確保のために設けられるシステムのことを安全関連系と呼んでいる。IEC 61508は、マイクロプロセッサ及びPLC（Programmable Logic Controller）等のハードウェアとコンピュータプログラム（ソフトウェア）によって安全関連系を構築するための様々な技法を定めている。IEC 61508で定められている技法を用いることで、コンピュータシステムを用いて安全関連系を構築することが可能となる。【０００４】
一方で、近年、マイクロプロセッサ等のプログラマブル電子機器の処理能力が向上している。このため、マルチタスクＯＳ（Operating System）を利用し、１つのコンピュータシステム上で様々なアプリケーションプログラムを並列実行することで、サービスロボット及び自動車等の機器に搭載されている複数用途のコンピュータシステムを統合することができる。【０００５】
例えば特許文献１に、機能安全の確保に関するアプリケーションプログラム（以下、安全関連アプリケーションと呼ぶ）を、その他のアプリケーションプログラム（以下、非安全関連アプリケーションと呼ぶ）と共に１つのコンピュータシステム上で動作させる技術が開示されている。【０００６】
IEC 61508で定められている技法を、安全関連アプリケーションおよび非安全関連アプリケーションを含むソフトウェア全体に適用すると、非安全関連アプリケーションにまで適用する必要性が生じる。このため、ソフトウェア開発コストが増大するという問題がある。【０００７】
そこで、特許文献１に開示される技術では、システムプログラムのタイム・パーティションニングによって、安全関連アプリケーション（安全監視プログラム及び安全制御プログラム）を非安全関連アプリケーション（通常制御プログラム）から独立させている。このため、通常制御プログラムを安全関連系から除外することができ、コンピュータシステムを用いて構成される安全関連系の低コスト化に寄与することができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−２７１７５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に例示されるような従来の安全制御装置には、以下に説明するような問題点があった。【００１０】
まず、第１の問題点について、図１１Ａを用いて具体的に説明する。なお、図１１Ａでは、ＴＰ１は安全監視プログラムを実行するタイムパーティションであり、ＴＰ２は通常制御プログラムを実行するタイムパーティションであり、ＴＰ３は安全制御プログラムを実行するタイムパーティションである。【００１１】
従来技術に係るシステムプログラムは、予め定められた固定スケジューリングパターンに従って、タイムパーティションの切り替えを行っていた。このため、例えば、図１１Ａの上部に示す通常制御時のスケジューリングパターン（固定パターン）に従ってスケジューリングが行われていた場合に異常が発生したときには、図１１Ａの下部に示す安全制御時のスケジューリングパターン（固定パターン）へとスケジューリングパターンが切り替えられ、以後は、安全制御時のスケジューリングパターン（固定パターン）に従ってスケジューリングを行っていた。【００１２】
しかしながら、異常の種類によっては、異常発生時に即座の対応を要するものが存在する。このような異常に関して、例えば図１１Ａの下部に示す安全制御時のスケジューリングパターンに従ってスケジューリングを実行すると、異常対応のために即時の実行が求められるＴＰ３のみならず、発生した異常に関しては実行が不必要であるＴＰ１についてまでもが繰り返して実行されてしまう。このため、安全が確保されるまでの間はＴＰ３を即時かつ連続して実行させる必要があるにも関わらず、固定パターンとして含まれているＴＰ１までをも実行する必要があった。【００１３】
従って、異常発生時に、安全制御プログラムを実行するタイムパーティションのみを即時かつ連続して実行させることができず、安全制御プログラムによる処理の実行が遅れてしまい、その結果、異常発生時における安全制御が適切に行われないおそれがある、という問題点があった。【００１４】
次に、第２の問題点について、図１２及び図１３を用いて具体的に説明する。なお、図１２は、従来技術に係る通常制御時のスケジューリングパターンの具体例を示している。図１３は、従来技術に係るシステムプログラムによるタスク初期化処理に関する処理手順の具体例を示している。【００１５】
タイム・パーティションニング機能を備えるシステムプログラムにおいては、安全監視プログラム等によって生成されるタスクを実行するために、そのタスクを実行するタイムリソース（タイムパーティション）が与えられる必要がある。また、タイムパーティションが与えられてタスクを実行するためには、通常のタスク処理の実行に先立って初期化処理を行う必要がある。さらに、タスクの初期化処理のためには、少なくとも１つのタイムパーティションを必要とする。【００１６】
ここで、従来技術に係るシステムプログラムが、図１２に例示する基本的なスケジューリングパターンに従って、スケジューリングを実行していく場合を想定する。ここでは、基本的なスケジューリングパターンとして、１サイクル中に全ての種類のタイムパーティション（ここでは、ＴＰ１、ＴＰ２、ＴＰ３）を含んでいる場合を例に説明する。【００１７】
図１３に、従来技術に係るシステムプログラムによるタスク初期化処理に関する処理手順の具体例を示す。図１３では、パーティションスケジューラによってＴＰＸ（ＴＰ１〜ＴＰ３のいずれかのＴＰ）に関するタスクが動作させられ（Ｓ１１１）、全てのタイムパーティションに関するタスクの初期化処理が終了するまでの間、ＴＰＸに関するタスクの初期化処理が順次、実行されていく（Ｓ１１２〜Ｓ１１４）。そして、全てのタイムパーティションに関するタスクの初期化処理が終了した場合、パーティションスケジューラがＴＰＸに関するタスクを動作させ、以後、通常のタスク処理の実行が開始される（Ｓ１１５）。【００１８】
従って、従来技術に係るシステムプログラムが、図１３に例示した処理手順に基づいて基本的なスケジューリングパターン（例えば図１２）に従ってスケジューリングを実行する際には、まずは、最初のサイクルにおいて、全てのタイムパーティション（ＴＰ１、ＴＰ２、ＴＰ３）に関するタスクの初期化処理を、それぞれ少なくとも１つのタイムパーティションで実行し、全てのタスクについての初期化処理が終了した後に、２番目以後のサイクルに含まれるタイムパーティションにおいて、通常のタスク処理を開始することができる。【００１９】
しかし、異常が発生しない場合には、ＴＰ３に関しては通常のタスク処理が実行されることはない。このため、２番目以後のサイクルに含まれるＴＰ３は、何らタスクが実行されないことになる。すなわち、最初のサイクルにおいてＴＰ３に関するタスクの処理化処理を終了した場合に、２番目以後のサイクルに含まれるＴＰ３には、異常時以外は実行するタスクが存在しないことになる。よって、全てのタスクについての初期化処理が終了した以後、異常がほとんど発生しないような情況においても、実際には不要なＴＰ３が毎サイクルスケジューリングされることになる。【００２０】
通常制御プログラムにより生成されるタスクに関しては、安全監視プログラムにより生成されるタスク等と比較して、より長くの実行時間を確保できることが好ましいといえる。従来技術では、初期化処理が終了した以後においても不要なＴＰ３がスケジューリングされるために、結果として、通常制御プログラムにより生成されるタスクの実行時間（ＴＰ２）に対して、より長い時間を割り当てることができない、という問題点があった。【００２１】
本願の発明者は、特許文献１に開示された従来技術を鋭意検討し、上述したような問題点が以下の原因によって生じることを見出した。
まず、特許文献１に開示されたＯＳ１００では、安全監視プロセス２１が、タイムパーティションの切り替え順序およびタイミングを規定するスケジューリングパターンの選択を行い、ＯＳ１００が、スケジューリングパターンに従って、パーティション・スケジューリングを行うものである（特許文献１の段落００３６及び段落００３９、図４など参照。）。すなわち、安全監視プロセス２１によって指定された固定のスケジューリングパターンに従って、ＯＳ１００がタイムパーティションの切り替えを行う点が開示されている。【００２２】
従って、特許文献１に開示されたＯＳ１００では、パーティションの切り替えに関して、ＴＰ１での安全監視プロセス２１による選択結果に依存するものであるために、スケジューリングパターンに当初予定されていたＴＰ１をスキップすることはできないものである。また、特許文献１に開示されたＯＳ１００では、ＴＰ１での安全監視プロセス２１によって、通常制御プロセス２２の実行状況の監視と、Ｉ／Ｏポート１２の入出力データの監視と、を行うものにすぎず（特許文献１の段落００３６など参照。）、安全制御プロセス２３や安全監視プロセス２１自身の実行状況を考慮した上で、いずれのＴＰをスキップ対象とするのかについて選択・決定することができないものである。【００２３】
このように、特許文献１に開示されたＯＳ１００では、各タイムパーティションにおいて生成されるプロセスからパーティション・スケジューリング機能が独立しておらず、また、パーティション・スケジューリング機能が全てのプロセスの実行状況を把握できていないために、実行が不要なタイムパーティションを意図的にスキップすることができないという課題があった。その結果、上述した問題点を解決することができないものであった。【００２４】
本発明は、上述した知見に基づいてなされたものであって、実行が不要なタイムパーティションのスキップを可能とする安全制御装置及び安全制御方法を提供することを目的とする。
【課題を解決するための手段】
【００２５】
本発明の一態様にかかる安全制御装置は、少なくとも１つのプロセッサを含むハードウェア資源と、（ａ）制御対象に関する異常の発生を監視する安全監視プログラム、（ｂ）通常時における前記制御対象の制御に関連する通常制御プログラム、および（ｃ）異常時における前記制御対象の制御に関連する安全制御プログラムに対する前記プロセッサの実行時間の割り当てを制御するためのシステムプログラムと、を備える。前記システムプログラムは、（ｄ）前記安全監視プログラムに前記実行時間を割り当てる第１のタイムパーティション、（ｅ）前記通常制御プログラムに前記実行時間を割り当てる第２のタイムパーティション、および（ｆ）前記安全制御プログラムに前記実行時間を割り当てる第３のタイムパーティションを含むスケジューリングパターンに従って、次にスケジューリングするタイムパーティションを選択・決定するパーティションスケジューラを一部に有する。前記プロセッサは、前記システムプログラムを実行することによって、前記パーティションスケジューラを周期的に動作させる。前記パーティションスケジューラは、前記第１乃至第３のタイムパーティションの少なくとも１つのタイムパーティション内で実行されるプログラムからの実行結果通知に応じて、前記スケジューリングパターンに含まれるタイムパーティションのうちで実行不要なプログラムを含むタイムパーティションをスキップする。【００２６】
上述した本発明の一態様によれば、パーティションスケジューラは、各タイムパーティションに関する状況を一元的に把握することができ、実行が不要なタイムパーティションについてはスキップすることが可能となる。【００２７】
また、前記パーティションスケジューラは、前記第１のタイムパーティション内で実行される前記安全監視プログラムによって異常が検知されたことの前記実行通知結果を受取ると、以後のスケジューリングでは、前記第３のタイムパーティション以外のタイムパーティションをスキップするものしてもよい。これにより、異常発生時に、安全制御プログラムを実行するタイムパーティションのみを即時かつ連続して実行させることができ、異常発生時における安全制御を適切に行うことができる。【００２８】
さらにまた、前記パーティションスケジューラは、前記第１乃至第３のタイムパーティション内でプログラムの初期化処理がそれぞれ実行されて終了したことに応じて、以後のスケジューリングでは、前記第３のタイムパーティションをスキップするものしてもよい。これにより、通常制御プログラムに対して、より長い実行時間を割り当てることができる。【００２９】
また、前記ハードウェア資源のリセットを行うリセット回路を更に備え、前記パーティションスケジューラは、前記第１乃至第３のタイムパーティションの少なくとも１つのタイムパーティション内で実行されるプログラムから緊急停止を有する異常であるとの通知に応じて、前記リセット回路にリセット指示信号を出力し、前記リセット回路は、前記リセット指示信号を受けた場合に、前記ハードウェア資源のリセットを行うものしてもよい。【００３０】
さらにまた、前記ハードウェア資源のリセットを行うリセット回路を更に備え、前記パーティションスケジューラは、前記リセット回路に定期的に信号を送信し、前記第１乃至第３のタイムパーティションの少なくとも１つのタイムパーティション内で実行されるプログラムから緊急停止を有する異常であるとの通知に応じて、前記リセット回路への前記信号の送信を停止し、前記リセット回路は、前記パーティションスケジューラから送信される前記信号が途絶えた場合に、前記ハードウェア資源のリセットを行うものとしてもよい。
【発明の効果】
【００３１】
本発明によれば、実行が不要なタイムパーティションのスキップを可能とする安全制御装置及び安全制御方法を提供することができる。
【図面の簡単な説明】
【００３２】
【図１】発明の実施の形態１にかかる安全制御装置の構成例を示すブロック図である。
【図２】発明の実施の形態１におけるタイム・パーティショニングの概念を説明するための図である。
【図３】発明の実施の形態１におけるリソース・パーティショニングの概念を説明するための概念図である。
【図４】図１に示したＯＳによって提供される実行環境で起動される、パーティションスケジューラとタスクとの関係を示す図である。
【図５Ａ】スケジューリングパターンの具体例を示す図である。
【図５Ｂ】スケジューリングパターンの具体例を示す図である。
【図６】パーティションスケジューラの処理手順の具体例を示すフローチャートである。
【図７】マイクロコントローラのリセット処理手順の具体例を示すフローチャートである。
【図８】マイクロコントローラのリセット処理手順の具体例を示すフローチャートである。
【図９】パーティションスケジューラの処理手順の具体例を示すフローチャートである。
【図１０】初期化処理時における処理手順の具体例を示すフローチャートである。
【図１１Ａ】本発明の課題を説明するための図である。
【図１１Ｂ】本発明による効果を説明するための図である。
【図１２】本発明の課題を説明するための図である。
【図１３】本発明の課題を説明するための図である。
【発明を実施するための形態】
【００３３】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００３４】
＜発明の実施の形態１＞
本実施の形態にかかる安全制御装置１は、サービスロボットや運輸機器等に搭載されて機能安全確保のための安全制御を実行する。安全制御装置１は、安全関連アプリケーションと非安全関連アプリケーションを同一のコンピュータシステムで実行するよう構成される。図１は、本実施の形態にかかる安全制御装置１の構成例を示すブロック図である。
【００３５】
プロセッサ１０は、プログラム（命令ストリーム）の取得、命令のデコード、命令のデコード結果に応じた演算処理を行う。なお、図１では、１つのプロセッサ１０のみを示しているが、安全制御装置１は、複数のプロセッサ１０を有するマルチプロセッサ構成であってもよい。また、プロセッサ１０は、マルチコアプロセッサでもよい。プロセッサ１０は、システムプログラムとしてのオペレーティングシステム（ＯＳ）１００を実行することによりマルチプログラミング環境を提供する。マルチプログラミング環境とは、複数のプログラムを定期的に切り替えて実行したり、あるイベントの発生に応じて実行するプログラムを切り替えたりすることによって、複数のプログラムがあたかも並列実行されているような環境を意味する。
【００３６】
マルチプログラミングは、マルチプロセス、マルチスレッド、マルチタスク等と呼ばれる場合もある。プロセス、スレッド及びタスクは、マルチプログラミング環境で並列実行されるプログラム単位を意味する。本実施の形態のプロセッサ１０が具備するマルチプログラミング環境は、マルチプロセス環境でもよいし、マルチスレッド環境でもよい。
【００３７】
実行用メモリ１１は、プロセッサ１０によるプログラム実行のために使用されるメモリである。実行用メモリ１１には、不揮発性メモリ１３からロードされたプログラム（ＯＳ１００及びアプリケーション１０１〜１０３等）、プロセッサ１０の入出力データ等が記憶される。なお、プロセッサ１０は、プログラムを不揮発性メモリ１３から実行用メモリ１１にロードすることなく、これらのプログラムを不揮発性メモリ１３から直接実行してもよい。
【００３８】
具体的には、実行用メモリ１１は、ＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic Random Access Memory）等のランダムアクセス可能な揮発性メモリとすればよい。図１の実行用メモリ１１は、論理的な構成単位を示している。すなわち、実行用メモリ１１は、例えば、複数のＳＲＡＭデバイスの組み合わせ、複数のＤＲＡＭデバイスの組み合わせ、又はＳＲＡＭデバイスとＤＲＡＭデバイスの組み合わせでもよい。
【００３９】
Ｉ／Ｏポート１２は、外部デバイスとの間のデータ送受信に使用される。例えば、安全制御装置１がサービスロボットに搭載される場合であれば、外部デバイスは、サービスロボット周囲の障害物を計測可能な視覚センサ、サービスロボットを動作させるアクチュエータ等である。
【００４０】
不揮発性メモリ１３は、電力の供給を受けることなく、実行用メモリ１１に比べて安定的に記憶内容を維持することが可能なメモリデバイスである。例えば、不揮発性メモリ１３は、ＲＯＭ（Read Only Memory）、フラッシュメモリ、ハードディスクドライブ若しくは光ディスクドライブ、又はこれらの組み合わせである。不揮発性メモリ１３は、ＯＳ１００及びアプリケーション１０１〜１０３を格納する。なお、不揮発性メモリ１３の少なくとも一部は安全制御装置１から取り外し可能に構成されてもよい。例えば、アプリケーション１０１〜１０３が格納されたメモリを取り外し可能としてもよい。また、不揮発性メモリ１３の少なくとも一部は、安全制御装置１の外部に配置されてもよい。
【００４１】
ＯＳ１００は、プロセッサ１０によって実行されることにより、プロセッサ１０及び実行用メモリ１１及び不揮発性メモリ１３等のハードウェア資源を利用して、タスクスケジューリングを含むタスク管理、割り込み管理、時間管理、資源管理、タスク間同期およびタスク間通信機構の提供等を行う。
【００４２】
さらに、機能安全の確保に関連する安全監視アプリケーション１０１及び安全制御アプリケーション１０３の通常制御アプリケーション１０２からの独立性を高めるため、ＯＳ１００は、ハードウェア資源を、時間的および空間的に保護する機能を有する。ここで、ハードウェア資源とは、プロセッサ１０、実行用メモリ１１、Ｉ／Ｏポート１２を含む。
【００４３】
このうち、時間的な保護は、プロセッサ１０の実行時間という時間的な資源をパーティショニングすることにより行う。具体的に述べると、時間的な保護は、プロセッサ１０の実行時間をパーティショニングし、各パーティション（タイムパーティションと呼ぶ）にタスク（プロセス又はスレッド）を割り当てることにより行う。ＯＳ１００のスケジューリング機能（パーティションスケジューラ２１）は、各タイムパーティション（以下、ＴＰと略称する場合がある。）に割り当てられたタスクに対して、プロセッサ１０の実行時間を含む資源の利用を保証する。
【００４４】
図２は、タイム・パーティショニングに関する概念図である。図２の例では、予め定められた１サイクル時間を３つのＴＰ１、ＴＰ２及びＴＰ３に分割する例を示している。例えば、１サイクル時間を１００Ｔｉｃｋとした場合、このうち前半の２０ＴｉｃｋがＴＰ１、中間の３０ＴｉｃｋがＴＰ２、後半の５０ＴｉｃｋがＴＰ３と規定される。
【００４５】
また、図２の例では、第１アプリケーション（ＡＰＬ１）〜第４アプリケーション（ＡＰＬ４）が、ＴＰ１〜ＴＰ３のいずれかに割り当てられている。ＯＳ１００のスケジューリング機能（パーティションスケジューラ２１）は、時間の経過に応じて、ＴＰ１〜ＴＰ３のいずれをアクティブにするかを選択・決定する。そして、アクティブなＴＰに割り当てられているアプリケーションが、プロセッサ１０で実行される。
【００４６】
一方、空間的な保護は、実行用メモリ１１及びＩ／Ｏポート１２を含む固定的な資源をパーティショニングし、各パーティション（リソースパーティションと呼ぶ）にタスクを割り当てることにより行う。ＯＳ１００のスケジューリング機能（パーティションスケジューラ２１）は、予め割り当てられたリソースパーティション（以下、ＲＰと略称する場合がある。）を超えてタスクが他のリソースにアクセスすることを禁止する。
【００４７】
図３は、リソース・パーティショニングに関する概念図である。図３の例では、２つのＲＰ（ＲＰ１及びＲＰ２）を示している。ＲＰ１には、実行用メモリ１１及び不揮発性メモリ１３の一部（Ａ領域）と、Ｉ／Ｏポート１２の一部（ポートＡ）が割り当てられている。また、ＲＰ２には、実行用メモリ１１及び不揮発性メモリ１３の他の一部（Ｂ領域）と、Ｉ／Ｏポート１２の他の一部（ポートＢ）が割り当てられている。ＲＰ１からはＲＰ２に割り当てられたリソースへのアクセスが禁止され、ＲＰ２からはＲＰ１に割り当てられたリソースへのアクセスが禁止される。
【００４８】
なお、全てのリソースがいずれかのＲＰに排他的に割り当てられる必要はない。つまり、複数のＲＰによって共有されるリソースがあってもよい。例えば、サービスロボットの安全制御を行う場合、アクチュエータには、通常制御アプリケーション１０１及び安全制御アプリケーション１０２の双方からアクセスできる必要がある。よって、通常制御アプリケーション１０１が属するＲＰと安全制御アプリケーション１０２が属するＲＰによって、アクチュエータを制御するためのＩ／Ｏポートを共有するとよい。
【００４９】
図１に戻り説明を続ける。アプリケーション１０１〜１０３は、ＯＳ１００及びプロセッサ１０によって提供されるマルチプログラミング環境で実行される。このうち、安全監視アプリケーション１０１は、通常制御アプリケーション１０２の実行状況の監視と、安全制御アプリケーション１０３の実行状況の監視と、Ｉ／Ｏポート１２への入出力データの監視と、をプロセッサ１０に実行させるための命令コードを含む。さらに、安全監視アプリケーション１０１は、パーティションスケジューラ２１への結果通知をプロセッサ１０に実行させるための命令コードを含む。つまり、安全監視アプリケーション１０１は、安全関連アプリケーションである。
【００５０】
また、通常制御アプリケーション１０２は、サービスロボット等の制御対象に通常の機能・動作を行わせるための制御手順をプロセッサ１０に実行させるための命令コードを含む。さらに、通常制御アプリケーション１０２は、パーティションスケジューラ２１への結果通知をプロセッサ１０に実行させるための命令コードを含む。つまり、通常制御アプリケーション１０２は、非安全関連アプリケーションである。
【００５１】
また、安全制御アプリケーション１０３は、何らかの異常が検出された場合に対応して、機能安全を確保するために定められた制御手順をプロセッサ１０に実行させるための命令コードを含む。さらに、安全制御アプリケーション１０３は、パーティションスケジューラ２１への結果通知をプロセッサ１０に実行させるための命令コードを含む。つまり、安全制御アプリケーション１０３は、安全関連アプリケーションである。
【００５２】
リセット回路１４は、ＯＳ１００からの信号に基づき、マイクロコントローラ１５のリセットを行う。リセット回路１４を用いたマイクロコントローラ１５のリセット機構については後述する。
【００５３】
続いて以下では、パーティションスケジューラ２１と、アプリケーション１０１〜１０３の起動により生成されるタスクと、の関係について、図４を用いて説明する。図４は、ＯＳ１００によって提供されるマルチプログラミング環境で起動される、パーティションスケジューラ２１とタスク２４、２６、２８との関係を示す図である。
【００５４】
マイクロコントローラ１５は、プロセッサ１０、実行用メモリ１１、Ｉ／Ｏポート１２、不揮発性メモリ１３等を含む。なお、図４では、マイクロコントローラ１５の外部にリセット回路１４を備える構成を例示しているが、マイクロコントローラ１５の内部にリセット回路１４を含む構成としてもよい。
【００５５】
マイクロコントローラ１５には、外部のクロック源からのクロック信号が供給され、プロセッサ１０等は、このクロック信号に基づく所定のタイマー周期で動作する。本実施の形態では、所定のタイマー周期を、１Ｔｉｃｋであるとして説明する。このため、プロセッサ１０によりＯＳ１００が実行されることで、パーティションスケジューラ２１が１Ｔｉｃｋごとに動作すると共に、各ＴＰ内で、タスクスケジューラ２３、２５、２７およびタスク（安全監視タスク２４、通常制御タスク２６、安全制御タスク２８）が、１Ｔｉｃｋごとに動作する。
【００５６】
パーティションスケジューラ２１は、１Ｔｉｃｋごとに動作し、ＴＰの切り替え（パーティション・スケジューリング）を行う。パーティションスケジューラ２１は、次の１Ｔｉｃｋの間にＴＰ１〜ＴＰ３のいずれをアクティブにするかを選択・決定する。さらに、パーティションスケジューラ２１は、選択したＴＰに関するタスクスケジューラの動作を開始させる。
【００５７】
パーティションスケジューラ２１によるパーティション・スケジューリングについて具体的に述べると、パーティションスケジューラ２１は、スケジューリングテーブル２２を参照し、ＴＰの設定を定めたスケジューリングパターンに従って、パーティション・スケジューリングを行う。
【００５８】
スケジューリングテーブル２２は、ＴＰの切り替え順序およびタイミングを規定したスケジューリングパターンを保持している。なお、スケジューリングテーブル２２は、少なくとも２つの異なるスケジューリングパターンを保持している。１つは、安全監視タスク２４による異常検知が行われていない場合（つまり通常時）に適用されるスケジューリングパターンである。もう１つは、安全監視タスク２４によって異常が検知された場合に適用されるスケジューリングパターンである。以下では、通常時に適用されるスケジューリングパターンを"通常制御スケジューリングパターン"と呼ぶ。また、異常検知時に適用されるスケジューリングパターンを"安全制御スケジューリングパターン"と呼ぶ。
【００５９】
図５Ａは、通常制御スケジューリングパターンの具体例を示している。図５Ａでは、通常制御タスク２６が属するＴＰ２が１サイクル時間の前半（Ｔ１）に割り当てられている。また、安全監視タスク２４が属するＴＰ１が１サイクル時間の後半（Ｔ２）に割り当てられている。図５Ａのスケジューリングパターンによれば、通常制御タスク２６と安全監視タスク２４が繰り返しスケジューリングされる。
【００６０】
図５Ｂは、安全制御スケジューリングパターンの具体例を示している。図５Ｂでは、安全制御タスク２８が属するＴＰ３が１サイクル時間の前半（Ｔ３）に割り当てられている。また、安全監視タスク２４が属するＴＰ１が１サイクル時間の後半（Ｔ４）に割り当てられている。図５Ｂのスケジューリングパターンによれば、安全制御タスク２８と安全監視タスク２４が繰り返しスケジューリングされる。
【００６１】
図４に戻り説明を続ける。タスクスケジューラ２３、２５、２７は、それぞれが属するＴＰ内でのタスクのスケジューリングを行う。各ＴＰ内でのタスクのスケジューリングには、一般的な優先度ベースのスケジューリングを適用すればよい。なお、図４では、各ＴＰはそれぞれ１つのタスクのみを含むものとして図示しているが、実際には、１以上のタスクが含まれている。例えば、通常制御用のＴＰ２内には、通常制御タスクＡ及び通常制御タスクＢの２つのタスクが含まれていてもよい。
【００６２】
安全監視タスク２４は、安全監視アプリケーション１０１の起動によって生成されるタスクである。図４の例では、安全監視タスク２４は、ＴＰ１及びＲＰ１に割り当てられている。安全監視タスク２４は、非安全関連アプリケーションである通常制御タスク２６の実行状況の監視と、安全関連アプリケーションである安全制御タスク２８の実行状況の監視と、Ｉ／Ｏポート１２の入出力データを監視する。さらに、安全監視タスク２４は、タスクの実行状況結果を、パーティションスケジューラ２１へ通知する。
【００６３】
通常制御タスク２６は、通常制御アプリケーション１０２の起動によって生成されるタスクである。図４の例では、通常制御タスク２６は、ＴＰ２及びＲＰ２に割り当てられている。通常制御タスク２６は、サービスロボット等の制御対象に通常の機能・動作を行わせるための制御を行う。さらに、通常制御タスク２６は、タスクの実行状況結果を、パーティションスケジューラ２１へ通知する。
【００６４】
安全制御タスク２８は、安全制御アプリケーション１０３の起動によって生成されるタスクである。図４の例では、安全制御タスク２８は、ＴＰ３及びＲＰ３に割り当てられている。安全制御タスク２８は、何らかの異常が検出された場合に対応して、機能安全を確保するために定められた制御を行う。さらに、安全制御タスク２８は、タスクの実行状況結果を、パーティションスケジューラ２１へ通知する。なお、各タスクからパーティション２１へと結果を通知する具体的な構成としては、様々な手法を採用することができる。例えば、タスクがＯＳ１００のシステムコール（サービスコール）を呼び出し、ＯＳ１００を介して、パーティションスケジューラ２１に結果を通知することができる。また、例えば、タスクの実行状況に関するフラグを実行用メモリ１１に格納するものとして、タスクがその実行状況に応じてフラグの値を設定し、パーティションスケジューラ２１がフラグの設定値に応じてタスクの実行状況を判断することもできる。
【００６５】
上述したように、パーティションスケジューラ２１が１Ｔｉｃｋごとに動作し、ＴＰ１〜ＴＰ３のいずれをアクティブにするかを選択・決定する。さらに、パーティションスケジューラ２１が、選択したＴＰに関するタスクスケジューラの動作を開始させる。そして、タスクスケジューラ２３、２５、２７が動作を開始することでタスクのスケジューリングが行われ、プロセッサ１０が、タスクスケジューラ２３、２５、２７によりスケジューリングされた順序に従って、ＴＰ内でのタスクを実行していく。これによって、アクティブなＴＰに割り当てられているアプリケーションが、プロセッサ１０で実行される。
【００６６】
続いて以下では、パーティションスケジューラ２１によるパーティション・スケジューリングについて、図６を用いて説明する。図６は、パーティションスケジューラ２１の処理手順の具体例を示すフローチャートである。なお、図６では、通常制御スケジューリングパターン（例えば図５Ａ）または安全制御スケジューリングパターン（例えば図５Ｂ）に従って、スケジューリングを実行する場合を例に説明する。すなわち、ＴＰ２またはＴＰ３に続く次のＴＰはＴＰ１であり、かつ、ＴＰ２での異常がＴＰ１で検知された場合に、ＴＰ１からの結果を受けて次に選択・決定されるＴＰはＴＰ３である場合を例に説明する。
【００６７】
まず、１Ｔｉｃｋごとに動作するパーティションスケジューラ２１が、ＴＰＸのタスクスケジューラを動作させる（Ｓ１１）。ここで、変数ＸはＴＰの番号を示し、Ｘは１以外の値とする。すなわち、Ｓ１１では、安全監視用のＴＰ１を除いた、ＴＰ２又はＴＰ３のいずれかを動作させる。
【００６８】
Ｓ１１で動作を開始したＴＰＸのタスクスケジューラは、ＴＰＸ内のタスクを優先度に応じて実行する（Ｓ１２）。そして、１Ｔｉｃｋが経過すると、パーティションスケジューラ２１が、ＴＰのスケジューリングを開始する（Ｓ１３）。すなわち、パーティションスケジューラ２１は、スケジューリングパターンに従って、次の１Ｔｉｃｋの間にいずれのＴＰをアクティブにするかを選択・決定する。
【００６９】
パーティションスケジューラ２１は、次にアクティブにするＴＰを変更しない（Ｓ１４でＮｏ）場合には、Ｓ１１に戻り、同一のＴＰＸについての動作を継続させる。このため、ＴＰＸの切り替えタイミングとなるまでの間、Ｓ１１〜Ｓ１４までの処理が繰り返される。
【００７０】
パーティションスケジューラ２１は、次にアクティブにするＴＰを変更する（Ｓ１４でＹｅｓ）場合には、その変更するタイムパーティションのタスクスケジューラを動作させる（Ｓ１５）。ここでは、ＴＰ１のタスクスケジューラを動作させる。そして、ＴＰ１のタスクスケジューラ２３が、ＴＰ１内のタスクを優先度に応じて実行する（Ｓ１６）。
【００７１】
ＴＰ１で実行される安全監視タスク２４は、通常制御タスク２６の実行状況の監視と、Ｉ／Ｏポート１２の入出力データの監視を行い、これらが正常であるか判断する（Ｓ１７）。判断の結果、異常であると判断した（Ｓ１８でＮｏ）場合、安全監視タスク２４は、パーティションスケジューラ２１に対して、その結果を通知する（Ｓ１９）。
【００７２】
１Ｔｉｃｋが経過すると、パーティションスケジューラ２１が、再びスケジューリングを開始する（Ｓ２０）。パーティションスケジューラ２１は、スケジューリングパターンに従って、次の１Ｔｉｃｋの間にいずれのＴＰをアクティブにするかを選択・決定し、次にアクティブにするＴＰを変更しない（Ｓ２１でＮｏ）場合には、Ｓ１５に戻り、ＴＰ１についての動作を継続させる。
【００７３】
パーティションスケジューラ２１は、次にアクティブにするＴＰを変更する（Ｓ２１でＹｅｓ）場合には、さらに、Ｓ１９でのＴＰ１からの通知結果に応じて、ＴＰＸが正常であったか否かを判断する（Ｓ２２）。判断の結果、異常であった（Ｓ２２でＮｏ）場合、パーティションスケジューラ２１は、次の１Ｔｉｃｋの間にアクティブにするＴＰとして、ＴＰ３を選択・決定する（Ｓ２３）。
【００７４】
判断の結果、正常であった（Ｓ２２でＹｅｓ）場合、パーティションスケジューラ２１は、次の１Ｔｉｃｋの間にアクティブにするＴＰとして、ＴＰ１とＴＰ３以外のＴＰＸを選択・決定する（Ｓ２４）。
【００７５】
図６で示した処理に関して、パーティション・スケジューリングの具体例を説明する。
まず、図５Ａに例示した通常制御スケジューリングパターンに従って、Ｓ１１においてスケジューリングを開始した場合を説明する。この場合、Ｓ１１ではＴＰＸ＝ＴＰ２として開始し、Ｓ１２〜Ｓ１４にかけてもＴＰＸ＝ＴＰ２のままである。そして、Ｓ１５でＴＰ２からＴＰ１へと変更され、Ｓ１５〜Ｓ２１にかけてＴＰ１のままである。Ｓ１８でＴＰ２に関する実行状況（データ入出力）が正常であると判定されていた場合には、Ｓ２４では、ＴＰＸ＝ＴＰ２となる（つまり、ＴＰ２から開始する通常制御スケジューリングパターンが継続される。）。一方で、Ｓ１８でＴＰ２に関する実行状況（データ入出力）が異常であると判定されていた場合には、Ｓ２３で、ＴＰＸ＝ＴＰ３となる（つまり、ＴＰ３から開始する安全制御スケジューリングパターンに切り替わる。）。
【００７６】
また、図５Ｂに例示した安全制御スケジューリングパターンに従って、Ｓ１１においてスケジューリングを開始した場合を説明する。この場合、Ｓ１１ではＴＰＸ＝ＴＰ３として開始し、Ｓ１２〜Ｓ１４にかけてもＴＰＸ＝ＴＰ３のままである。そして、Ｓ１５でＴＰ３からＴＰ１へと変更され、Ｓ１５〜Ｓ２１にかけてＴＰ１のままである。Ｓ１８でＴＰ３に関する実行状況（データ入出力）が正常であると判定されていた場合には、Ｓ２４では、ＴＰＸ＝ＴＰ２となる（つまり、ＴＰ２から開始する通常制御スケジューリングパターンに切り替わる。）。一方で、Ｓ１８でＴＰ３に関する実行状況（データ入出力）に異常があると判定されていた場合には、Ｓ２３で、ＴＰＸ＝ＴＰ３となる（つまり、ＴＰ３から開始する安全制御スケジューリングパターンが継続される。）。
【００７７】
なお、上述の例では、スケジューリングパターンとして、３つのＴＰ（安全監視用のＴＰ１、通常制御用のＴＰ２、安全制御用のＴＰ３）のみを組み合わせた場合を例に説明したが、ＴＰ２のような通常制御用パーティションや、ＴＰ３のような安全制御用パーティションについては、それぞれ複数個存在するものとしてもよい。例えば、２つの通常制御用のＴＰ２及びＴＰ４と、安全監視用のＴＰ１と、２つの安全制御用のＴＰ３及びＴＰ５と、が存在し、これら５つのＴＰ（ＴＰ１〜ＴＰ５）を組み合わせてスケジューリングパターンを構成してもよい。この場合、Ｓ２３では、パーティションスケジューラ２１が、ＴＰＸに関する実行状況（データ入出力）の異常状態の種類を判定し、その異常種類に応じて、安全制御用のＴＰ３またはＴＰ５のいずれかを選択すればよい。また、Ｓ２４では、通常制御用のＴＰ２またはＴＰ４のいずれかを選択すればよい。
【００７８】
上述したように、本実施の形態では、ＯＳ１００は、安全監視用のＴＰ１からの通知、または、各ＴＰからの通知に応じて、次にアクティブとするパーティションを選択・決定するパーティションスケジューラ２１を備えている。パーティションスケジューラ２１は、各ＴＰ内で実行されるタスクとは独立して、所定のタイマー周期で動作する。所定のタイマー周期で独立して動作するパーティションスケジューラ２１がパーティション・スケジューリング機能を有することで、以下の効果を奏することができる。
【００７９】
まず、一般的に、通常制御タスク２６の実行時間を十分に確保するために、安全監視タスク２４の実行時間を可能な限り短縮したいという要求がある。従来技術（例えば特許文献１）では、安全監視タスク２４が、通常制御タスク２６の実行状況の監視と、Ｉ／Ｏポート１２の入出力データの監視と、に加えて、スケジューリングパターンの選択・決定についても行っていたために、この選択・決定に要する実行時間についても、安全監視タスク２４が属するＴＰ２に関して割り当てておく必要があった。
【００８０】
また、機能安全の確保を保証するためには、基本的には、安全監視タスク２４と通常制御タスク２６とが交互に実行される必要がある。このため、従来技術では、通常制御タスク２６の実行に伴って安全監視タスク２４によるスケジューリングパターンの選択・決定までもが毎回実行されることになり、複数のサイクルにわたって合計すると、多くの実行時間を、安全監視タスク２４によるスケジューリングパターンの選択・決定のために要することになってしまう。
【００８１】
これに対して、本実施の形態によれば、安全監視タスク２４自体は、スケジューリングパターンの選択・決定を実行する必要がない。また、パーティションスケジューラ２１がスケジューリングパターンの選択・決定に要する実行時間は短時間で済む。このため、従来技術と比較して、安全監視用のＴＰ１はより短時間の割り当てで済み、かつ、通常制御用のＴＰ２にはより長時間の割り当てを行うことができるという効果を奏する。
【００８２】
さらに、図６で例示した処理では、パーティションスケジューラ２１が、ＴＰ１からの結果通知に応じて、安全制御用のＴＰ３を選択・決定する（Ｓ２３）、または、通常制御用のＴＰ２を選択・決定する（Ｓ２４）ものとして説明したが、本発明はこれに限定されない。例えば、安全監視用のＴＰ１のみからパーティションスケジューラ２１に対して結果を通知する構成に代えて、ＴＰ１〜ＴＰ３のそれぞれからパーティションスケジューラ２１に対して実行状況結果を通知する構成とし、パーティションスケジューラ２１が、各ＴＰからの結果通知に応じて、安全制御用のＴＰ３を選択・決定するものとしてもよい。
【００８３】
各ＴＰとは独立に動作するパーティションスケジューラ２１が、全てのＴＰから結果通知を受ける構成を採用することで、パーティションスケジューラ２１は、全てのＴＰに関する状況を一元的に把握することができる。このため、例えば、パーティションスケジューラ２１が、各ＴＰからの結果通知に基づいて各ＴＰの状況を考慮した上で、実行が不要なＴＰについてはスキップするなどの判断を実行することができる。従って、実行が不要なタイムパーティションのみを意図的にスキップすることができるという効果を奏する。また、例えば、パーティションスケジューラ２１が、安全監視用のＴＰ１からの結果通知に基づいて各ＴＰの状況を考慮した上で、正常状態にあるＴＰのみから次のパーティションを決定・選択することができる。従って、従来技術と比較して、より正確なパーティション・スケジューリングを実現することができるという効果を奏する。
【００８４】
続いて以下では、リセット回路１４を用いたマイクロコントローラ１５のリセット機構について、図７及び図８を用いて説明する。図７及び図８は、リセット回路１４を用いたマイクロコントローラ１５のリセット処理手順の具体例を示すフローチャートである。
【００８５】
本実施の形態では、１Ｔｉｃｋごとに動作するパーティションスケジューラ２１が、マイクロコントローラ１５のリセット機能を有している。パーティションスケジューラ２１は、ＯＳ１００における異常を検出した場合に、リセット回路１４と連動して異常処置を行う。リセット回路１４は、パーティションスケジューラ２１からの信号に基づき、マイクロコントローラ１５のリセットを行う。
【００８６】
まず、図７を用いて、リセット回路１４を用いたマイクロコントローラ１５のリセット処理手順の具体例について説明する。図７に示す処理では、パーティションスケジューラ２１からリセット指示信号を受けた場合に、リセット回路１４がマイクロコントローラ１５をリセットするものである。なお、図７では、ＴＰＸは、ＴＰ１とＴＰ３以外のＴＰである。
【００８７】
まず、Ｓ３１〜Ｓ３３では、パーティションスケジューラ２１がＴＰＸの動作を開始させることで、次にアクティブにするＴＰが変更されるまでの間、ＴＰＸに関する処理が実行される。そして、パーティションスケジューラ２１がＴＰ１のタスクスケジューラ２３の動作を開始させた（Ｓ３４）後に、ＴＰ１に属する安全監視タスク２４が、ＴＰＸに関する処理（入出力）が正常であったかを判断する（Ｓ３５）。判断の結果、正常であった（Ｓ３５でＹｅｓ）場合、Ｓ３１に戻り、同一のＴＰＸについての動作が継続される。
【００８８】
判断の結果、異常であった（Ｓ３５でＮｏ）場合、ＴＰ１に属する安全監視タスク２４が、ＴＰＸでの異常がＴＰ３に属する安全制御タスク２８で対応可能な異常であるかを判断する（Ｓ３６）。ＴＰ３で対応可能な異常ではなかった（Ｓ３６でＮｏ）場合、ＴＰ１に属する安全監視タスク２４が、パーティションスケジューラ２１に対して、緊急停止を有する異常であることを通知する（Ｓ３７）。ＴＰ１に属する安全監視タスク２４からの通知を受けたパーティションスケジューラ２１が、リセット回路１４にリセット指示信号を出力し、リセット指示信号を受けたリセット回路１４がマイクロコントローラ１５のリセットを行う（Ｓ３８）。
【００８９】
ＴＰ３で対応可能な異常であった（Ｓ３６でＹｅｓ）場合、ＴＰ１に属する安全監視タスク２４は、パーティションスケジューラ２１に対して、ＴＰＸが異常であることを通知する（Ｓ３９）。ＴＰ１からの通知を受けたパーティションスケジューラ２１は、ＴＰＸからＴＰ３へと切り替える（Ｓ４０）。
【００９０】
次に、図８を用いて、リセット回路１４を用いたマイクロコントローラ１５のリセット処理手順の他の具体例について説明する。図８に示す処理では、パーティションスケジューラ２１からリセット回路１４に定期的に信号を送信し、リセット回路１４は、パーティションスケジューラ２１からの送信信号が途絶えた場合に、マイクロコントローラ１５をリセットするものである。なお、図８では、ＴＰＸは、ＴＰ１とＴＰ３以外のＴＰである。
【００９１】
図７のＳ３１〜Ｓ３５にかけての処理と比較して、図８のＳ５３では、パーティションスケジューラ２１が１Ｔｉｃｋごとに動作する点が明確化され、また、Ｓ５４及びＳ５５で、パーティションスケジューラ２１がリセット回路１４に定期的に信号を送信する点で異なっている。その他の図８に示すＳ５１〜Ｓ５７にかけての処理は、図７に示したＳ３１〜Ｓ３５にかけての処理と基本的に同一である。
【００９２】
また、図７のＳ３６〜Ｓ４０にかけての処理と比較して、図８のＳ６０では、パーティションスケジューラ２１がリセット回路１４への送信信号を停止し、Ｓ６３では、パーティションスケジューラ２１がリセット回路１４への信号を送信する点で異なっている。さらに、図８のＳ６１では、パーティションスケジューラ２１からの送信信号が途絶えたことに応じて、リセット回路１４がマイクロコントローラ１５のリセットを行う点で異なっている。その他の図８に示すＳ５８〜Ｓ６４にかけての処理については、図７に示したＳ３６〜Ｓ４０にかけての処理と基本的に同一である。
【００９３】
さらに、図８のＳ７１及びＳ７２に示すように、Ｓ５１〜Ｓ６４にかけての処理と並行して、パーティションスケジューラ２１において不具合が発生した場合、または、パーティションスケジューラ２１からリセット回路１４への信号線において不具合が発生した場合には、パーティションスケジューラ２１からリセット回路１４への送信信号が伝達されなくなる。この場合にも、パーティションスケジューラ２１からの送信信号が途絶えたことに応じて、リセット回路１４がマイクロコントローラ１５のリセットを行う（Ｓ６１）。
【００９４】
図８に示した処理によれば、パーティションスケジューラ２１からリセット回路１４へ意図的にリセット指示を行う場合に加えて、パーティションスケジューラ２１自身が何らかの原因により正常に動作しない場合、または、パーティションスケジューラ２１からリセット回路１４へ送信信号を伝達する信号線に不具合が発生した場合においても、マイクロコントローラ１５のリセットを確実に行うことができる。また同時に、ＴＰの切り替えが、１Ｔｉｃｋごとに正常に実行されているかについても保証することができる。
【００９５】
なお、図７及び図８では、パーティションスケジューラ２１は、ＴＰ１からの結果通知に応じて、リセット回路１４へのリセット指示信号の出力、または、リセット回路１４への送信信号の停止を行うものとして説明したが、ＴＰ１〜ＴＰ３のいずれかからの結果通知に応じて、リセット回路１４へのリセット指示信号の出力、または、リセット回路１４への送信信号の停止を行うものとしてもよい。
【００９６】
＜発明の実施の形態２＞
本実施の形態にかかる安全制御装置は、上述した安全制御装置１の変形である。本実施の形態にかかる安全制御装置の全体的な構成は、図１に示した安全制御装置１の構成と同様とすればよい。また、本実施の形態にかかる安全制御装置が有するＯＳによって提供されるタスク実行環境は、図４に示したタスク実行環境の構成と同様とすればよい。
【００９７】
次に、図９及び図１１Ｂを用いて、本実施の形態にかかる安全制御装置１による処理について、より詳細に説明する。図９は、本実施の形態に係るパーティションスケジューラ２１の処理手順の具体例を示すフローチャートである。なお、以下の説明では、図６で説明した処理と同一の処理内容については説明を簡略化し、異なる処理内容についてより詳細に説明する。
【００９８】
まず、１Ｔｉｃｋごとに動作するパーティションスケジューラ２１が、ＴＰＸのタスクスケジューラを動作させる（Ｓ８１）。ここで、変数ＸはＴＰの番号を示し、Ｘは１以外の値とする。なお、図９のＳ８１〜Ｓ８３にかけての処理内容は、図６のＳ１１〜Ｓ１３にかけての処理内容と同一であるため、ここではその詳細な説明を省略する。
【００９９】
なお、図９では、通常制御スケジューリングパターン（例えば図５Ａ）に従ってスケジューリングを開始した場合に、安全制御スケジューリングパターン（例えば図５Ｂ）に切り替えた場合を例に説明する。すなわち、ＴＰ２に続く次のＴＰはＴＰ１であり、かつ、ＴＰ２での異常がＴＰ１で検知された場合に、ＴＰ１からの結果を受けて次に選択・決定されるＴＰはＴＰ３である場合を例に説明する。
【０１００】
パーティションスケジューラ２１は、ＴＰ３でのタスクを現在実行中であるか判断する（Ｓ９５）。ＴＰ３でのタスクの実行中でない（Ｓ９５でＮｏ）場合、パーティションスケジューラ２１は、次にアクティブにするＴＰを変更しない（Ｓ８４でＮｏ）場合には、Ｓ８１に戻り、同一のＴＰＸについての動作を継続させる。なお、図９のＳ８５〜Ｓ９３にかけての処理内容は、図６のＳ１５〜Ｓ２３にかけての処理内容と同一であるため、ここではその詳細な説明を省略する。
【０１０１】
図９で示した処理に関して、パーティション・スケジューリングの具体例を説明する。
ここでは、図５Ａに例示した通常制御スケジューリングパターンに従って、Ｓ８１においてスケジューリングを開始した場合を説明する。この場合、Ｓ８１ではＴＰＸ＝ＴＰ２として開始し、Ｓ８２〜Ｓ８４にかけても、Ｓ９３を経てＴＰＸ＝ＴＰ３となるまでは、ＴＰＸ＝ＴＰ２のままである。そして、Ｓ８５でＴＰ２からＴＰ１へと変更され、Ｓ８５〜Ｓ９１にかけてＴＰ１のままである。Ｓ８８でＴＰ２に関する実行状況（データ入出力）が正常であると判定されていた場合には、Ｓ９４では、ＴＰＸ＝ＴＰ２となる（つまり、ＴＰ２から開始する通常制御スケジューリングパターンが継続される。）。一方で、Ｓ８８でＴＰ２に関する実行状況（データ入出力）が異常であると判定されていた場合には、Ｓ９３で、ＴＰＸ＝ＴＰ３となる（つまり、ＴＰ３から開始する安全制御スケジューリングパターンに切り替わる。）。さらに、Ｓ９３においてＴＰＸ＝ＴＰ３となった場合には、Ｓ９５及びＳ９３において、パーティションスケジューラ２１によって、ＴＰＸ＝ＴＰ３が維持される。すなわち、パーティションスケジューラ２１は、ＴＰ３を連続して選択・決定するように、パーティション・スケジューリングを実行する。
【０１０２】
なお、図９の例では、ＴＰＸとしてＴＰ３が連続して選択・決定された後に、安全制御によって安全が確保された結果、ＴＰ３からＴＰ２へと切り替える処理については特に図示されていないが、これを実現するためには、例えば、パーティションスケジューラ２１が、ＴＰ３でのタスクからの結果通知を受ける構成として、ＴＰ３での結果通知の内容に応じて、ＴＰ２への切り替えを判断するものとしてもよい。
【０１０３】
なお、図９の例では、スケジューリングパターンとして、３つのＴＰ（安全監視用のＴＰ１、通常制御用のＴＰ２、安全制御用のＴＰ３）のみを組み合わせた場合を例に説明したが、ＴＰ２のような通常制御用パーティションや、ＴＰ３のような安全制御用パーティションについては、それぞれ複数個存在するものとしてもよい。例えば、２つの通常制御用のＴＰ２及びＴＰ４と、安全監視用のＴＰ１と、２つの安全制御用のＴＰ３及びＴＰ５と、が存在し、これら５つのＴＰ（ＴＰ１〜ＴＰ５）を組み合わせてスケジューリングパターンを構成してもよい。この場合、Ｓ９５では、パーティションスケジューラ２１が、安全制御用のＴＰ３またはＴＰ５でのいずれかのタスクが現在実行中であるかを判断し、Ｓ８３では、パーティションスケジューラ２１が、ＴＰＸに関する実行状況（データ入出力）の異常状態の種類を判定し、その種類に応じて、安全制御用のＴＰ３またはＴＰ５のいずれかを選択すればよい。
【０１０４】
以上に説明した本実施の形態によれば、異常が発生した場合には、以後のスケジューリングでは、安全制御用以外のタスクを実行するためのＴＰはスキップし、安全制御用のＴＰ３でのタスクのみを実行させることができる。この結果、例えば図１１Ｂの上部に示す通常制御時のスケジューリングパターンに従ってスケジューリングが行われていた場合に異常が発生したときには、図１１Ｂの下部に示すスケジューリングパターンへと切り替えることができ、ＴＰ３のみを即時かつ連続して実行させることができる。これにより、安全制御プログラムによる処理をより迅速に開始することができる。
【０１０５】
また、パーティションスケジューラ２１が各ＴＰからの結果通知を受け、全てのＴＰの状況を考慮して切り替える構成を採用した場合には、予め定められたスケジューリングパターンがどのようなものであっても、安全制御用のＴＰ３へと切り替え、かつ、安全確保されまでの間はＴＰ３を継続させることができる。さらに、ＴＰ３の実行によって安全が確保されたことをＴＰ３からの結果通知に基づいて判断することで、タイムパーティションをＴＰ２へと切り替える（通常制御時のパターンに復帰させる）こともできる。従って、異常発生時における安全制御を適切に行うことができる。
【０１０６】
＜発明の実施の形態３＞
本実施の形態にかかる安全制御装置は、上述した安全制御装置１の変形である。本実施の形態にかかる安全制御装置の全体的な構成は、図１に示した安全制御装置１の構成と同様とすればよい。また、本実施の形態にかかる安全制御装置が有するＯＳによって提供されるタスク実行環境は、図４に示したタスク実行環境の構成と同様とすればよい。
【０１０７】
次に、図１０を用いて、本実施の形態にかかる安全制御装置１による処理について、より詳細に説明する。図１０は、本実施の形態に係るパーティションスケジューラ２１の処理手順の具体例を示すフローチャートである。図１０は、パーティションスケジューラ２１によるタスク初期化処理に関する処理手順の具体例を示している。
【０１０８】
まず、１Ｔｉｃｋごとに動作するパーティションスケジューラ２１が、ＴＰＸのタスクスケジューラを動作させる（Ｓ１０１）。ここで、変数ＸはＴＰの番号を示し、ＴＰとしては、スケジューリングパターン中に含まれる全ての種類のＴＰが対象となる。
【０１０９】
Ｓ１０１で動作を開始したＴＰＸのタスクスケジューラが、ＴＰＸ内のタスクを実行することで、タスクの初期化処理が実行される。そして、１Ｔｉｃｋが経過すると、パーティションスケジューラ２１が、ＴＰＸでのタスクの初期化処理が終了したかを判断する（Ｓ１０２）。タスクの初期化処理が終了していない（Ｓ１０２でＮｏ）場合には、Ｓ１０１へと戻り、ＴＰＸでのタスクの初期化処理が継続される。なお、例えば、パーティションスケジューラ２１は、ＴＰＸからの実行状況結果の通知に基づいて、ＴＰＸでのタスクの初期化処理が終了したかを判断すればよい。また、初期化処理を終了した場合には、タスクが、初期化処理の終了を示すようにフラグの値を設定し、パーティションスケジューラ２１が、フラグの値に応じて、終了を判断するものとしてもよい。
【０１１０】
タスクの初期化処理が終了した（Ｓ１０２でＹｅｓ）場合には、パーティションスケジューラ２１は、スケジューリングパターン中に含まれる全ての種類のＴＰに関して、タスクの初期化処理が終了したかを判断する（Ｓ１０３）。全てのＴＰに関してタスクの初期化処理が終了していない（Ｓ１０３でＮｏ）場合には、パーティションスケジューラ２１は、次のＴＰＸへと切り替え（Ｓ１０４）る。この結果、Ｓ１０１へと処理が戻り、切り替えられたＴＰＸでのタスクの初期化処理が継続される。
【０１１１】
全てのＴＰに関してタスクの初期化処理が終了した（Ｓ１０３でＹｅｓ）場合には、パーティションスケジューラ２１は、以後は、アクティブにするＴＰＸとして、ＴＰ３を除く他のＴＰを選択・決定し、その選択・決定したＴＰＸのタスクスケジューラを動作させる（Ｓ１０５）。例えば、パーティションスケジューラ２１は、ＴＰ３をスキップし、ＴＰ１及びＴＰ２のみを実行させる。なお、ＴＰ３を除いて他のＴＰのみを選択・決定する手法としては、例えば、次にアクティブにするタイムパーティションの候補がＴＰ３であった場合に、パーティションスケジューラ２１が、ＴＰ３以外のタイムパーティションを選択・決定するようにすればよい。
【０１１２】
以上に説明した本実施の形態によれば、タスクの初期化処理時においてのみ全てのＴＰに対して実行時間が付与され、通常のタスク処理の実行が開始された以後は、安全制御用のタスクを実行させるためのＴＰ３はスキップし、安全監視用のタスクを実行させるためのＴＰ１及び通常制御用のタスクを実行させるためのＴＰ２のみを実行させることができる。
【０１１３】
従って、全てのＴＰに関してタスクの初期化処理が終了した以後で、異常がほとんど発生しないような情況においては、不要なＴＰ３を実行させずに済む。このため、結果として、通常制御プログラムにより生成されるタスクの実行時間（ＴＰ２）に対してより長い時間を割り当てることができる。
【０１１４】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述した各実施の形態それぞれを実施するものとしてもよいし、複数の実施の形態を組合せて実施するものとしてもよい。例えば、タスクの初期化処理時には全てのＴＰに対して実行時間を付与し、通常のタスク処理の実行が開始された以後は、ＴＰ３をスキップすると共にＴＰ１及びＴＰ２のみを実行させる構成と、さらに、異常が発生した場合には、ＴＰ３から開始するスケジューリングパターンへと切り替えて、以後のスケジューリングでは、ＴＰ３以外のＴＰをスキップすると共にＴＰ３でのタスクのみを実行させる構成と、を組み合わせてもよい。
【符号の説明】
【０１１５】
１  安全制御装置
１０  プロセッサ
１１  実行用メモリ
１２  Ｉ／Ｏポート
１３  不揮発性メモリ
１４  リセット回路
１５  マイクロコントローラ
２１  パーティションスケジューラ
２２  スケジューリングテーブル
２３、２５、２７  タスクスケジューラ
２４  安全監視タスク
２６  通常制御タスク
２８  安全制御タスク
１００  オペレーティングシステム
１０１  安全監視アプリケーション
１０２  通常制御アプリケーション
１０３  安全制御アプリケーション
【図１】
2012104897.tif 000003
【図２】
2012104897.tif 000004
【図３】
2012104897.tif 000005
【図４】
2012104897.tif 000006
【図５Ａ】
2012104897.tif 000007
【図５Ｂ】
2012104897.tif 000008
【図６】
2012104897.tif 000009
【図７】
2012104897.tif 000010
【図８】
2012104897.tif 000011
【図９】
2012104897.tif 000012
【図１０】
2012104897.tif 000013
【図１１Ａ】
2012104897.tif 000014
【図１１Ｂ】
2012104897.tif 000015
【図１２】
2012104897.tif 000016
【図１３】
2012104897.tif 000017
【手続補正書】
【提出日】平成23年5月18日(2011.5.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサを含むハードウェア資源と、
（ａ）制御対象に関する異常の発生を監視する安全監視タスク、（ｂ）通常時における前記制御対象の制御に関連する通常制御タスク、および（ｃ）異常時における前記制御対象の制御に関連する安全制御タスクに対する前記プロセッサの実行時間の割り当てを制御するためのシステムプログラムと、を備え、
前記システムプログラムは、（ｄ）前記安全監視タスクに前記実行時間を割り当てる第１のタイムパーティション、（ｅ）前記通常制御タスクに前記実行時間を割り当てる第２のタイムパーティション、および（ｆ）前記安全制御タスクに前記実行時間を割り当てる第３のタイムパーティションを含むスケジューリングパターンに従って、次にスケジューリングするタイムパーティションを選択・決定するパーティションスケジューラと、前記第１のタイムパーティションにおいて前記安全監視タスクをスケジューリングする第１のタスクスケジューラと、前記第２のタイムパーティションにおいて前記通常制御タスクをスケジューリングする第２のタスクスケジューラと、前記第３のタイムパーティションにおいて前記安全制御タスクをスケジューリングする第３のタスクスケジューラと、を一部に有し、
前記プロセッサは、前記システムプログラムを実行することによって、前記パーティションスケジューラを周期的に動作させ、
前記パーティションスケジューラは、前記第１乃至第３のタイムパーティションの少なくとも１つのタイムパーティション内で実行されるタスクからの実行結果通知に応じて、前記スケジューリングパターンに含まれるタイムパーティションのうちで実行不要なタスクを含むタイムパーティションをスキップする
安全制御装置。
【請求項２】
前記パーティションスケジューラは、前記第１のタイムパーティション内で実行される前記安全監視タスクによって異常が検知されたことの前記実行通知結果を受取ると、以後のスケジューリングでは、前記第３のタイムパーティション以外のタイムパーティションをスキップする
ことを特徴とする請求項１に記載の安全制御装置。
【請求項３】
前記パーティションスケジューラは、前記第１乃至第３のタイムパーティション内でタスクの初期化処理がそれぞれ実行されて終了したことに応じて、以後のスケジューリングでは、前記第３のタイムパーティションをスキップする
ことを特徴とする請求項１又は２に記載の安全制御装置。
【請求項４】
前記ハードウェア資源のリセットを行うリセット回路を更に備え、
前記パーティションスケジューラは、前記第１乃至第３のタイムパーティションの少なくとも１つのタイムパーティション内で実行されるタスクから緊急停止を有する異常であるとの通知に応じて、前記リセット回路にリセット指示信号を出力し、
前記リセット回路は、前記リセット指示信号を受けた場合に、前記ハードウェア資源のリセットを行う
ことを特徴とする請求項１乃至３いずれか１項に記載の安全制御装置。
【請求項５】
前記ハードウェア資源のリセットを行うリセット回路を更に備え、
前記パーティションスケジューラは、前記リセット回路に定期的に信号を送信し、前記第１乃至第３のタイムパーティションの少なくとも１つのタイムパーティション内で実行されるタスクから緊急停止を有する異常であるとの通知に応じて、前記リセット回路への前記信号の送信を停止し、
前記リセット回路は、前記パーティションスケジューラから送信される前記信号が途絶えた場合に、前記ハードウェア資源のリセットを行う
ことを特徴とする請求項１乃至３いずれか１項に記載の安全制御装置。
【請求項６】
（ａ）制御対象に関する異常の発生を監視する安全監視タスクにプロセッサの実行時間を割り当てる第１のタイムパーティション、（ｂ）通常時における前記制御対象の制御に関連する通常制御タスクに前記実行時間を割り当てる第２のタイムパーティション、および（ｃ）異常時における前記制御対象の制御に関連する安全制御タスクに前記実行時間を割り当てる第３のタイムパーティションを含むスケジューリングパターンに従って、次にスケジューリングするタイムパーティションを前記プロセッサに選択・決定させるべく周期的に動作するステップと、
前記タイムパーティションにおいて、当該タイムパーティションで前記実行時間が割り当てられるタスクをスケジューリングするステップと、
前記第１乃至第３のタイムパーティションの少なくとも１つのタイムパーティション内で実行されるタスクからの実行結果通知に応じて、前記スケジューリングパターンに含まれるタイムパーティションのうちで実行不要なタスクを含むタイムパーティションを前記プロセッサにスキップさせるべく動作するステップと、
を備える制御対象の安全制御方法。
【請求項７】
前記第１のタイムパーティション内で実行される前記安全監視タスクによって異常が検知されたことの前記実行通知結果を受取ると、以後のスケジューリングでは、前記第３のタイムパーティション以外のタイムパーティションを前記プロセッサにスキップさせるべく動作するステップをさらに備える
ことを特徴とする請求項６に記載の安全制御方法。
【請求項８】
前記第１乃至第３のタイムパーティション内でタスクの初期化処理がそれぞれ実行されて終了したことに応じて、以後のスケジューリングでは、前記第３のタイムパーティションを前記プロセッサにスキップさせるべく動作するステップをさらに備える
ことを特徴とする請求項６又は７に記載の安全制御方法。
【請求項９】
前記プロセッサを含むハードウェア資源のリセットを行うリセット回路を更に備え、
前記安全制御方法は、
前記第１乃至第３のタイムパーティションの少なくとも１つのタイムパーティション内で実行されるタスクから緊急停止を有する異常であるとの通知に応じて、前記リセット回路にリセット指示信号を出力するステップと、
前記リセット回路を用いて、前記リセット指示信号を受けた場合に、前記ハードウェア資源のリセットを行うステップと、をさらに備える
ことを特徴とする請求項６乃至８いずれか１項に記載の安全制御方法。
【請求項１０】
前記プロセッサを含むハードウェア資源のリセットを行うリセット回路を更に備え、
前記安全制御方法は、
前記リセット回路に定期的に信号を送信し、前記第１乃至第３のタイムパーティションの少なくとも１つのタイムパーティション内で実行されるタスクから緊急停止を有する異常であるとの通知に応じて、前記リセット回路への前記信号の送信を停止するステップと、
前記リセット回路を用いて、前記パーティションスケジューラから送信される前記信号が途絶えた場合に、前記ハードウェア資源のリセットを行うステップと、をさらに備える
ことを特徴とする請求項６乃至８いずれか１項に記載の安全制御方法。
【国際調査報告】
2012104897.tif 000018
2012104897.tif 000019
2012104897.tif 000020
2012104897.tif 000021