(57)【要約】      （修正有）【課題】コンピュータシステムを用いて構成される安全関連系の低コスト化を可能とする。【解決手段】プロセッサは、ＯＳ１００を実行することによって、安全監視プロセス２１によって異常が検知されたことに応じて、通常制御スケジューリングパターンから安全制御スケジューリングパターンに切り替えて、安全監視プロセス２１および安全制御プロセス２３をスケジューリングする。ここで、異常検知前に適用される通常制御スケジューリングパターンは、通常制御プロセス２２に実行時間を割り当てる第１のタイムパーティションと、安全監視プロセス２１にプロセッサ実行時間を割り当てる第２のタイムパーティションを含む。また、異常検知後に適用される安全制御スケジューリングパターンは、安全制御プロセス２３に実行時間を割り当てる第３のタイムパーティションと、安全監視プロセス２１に実行時間を割り当てる第４のタイムパーティションを含む。【選択図】図４
2010271759.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサを含むハードウェア資源と、
（ａ）制御対象に関する異常の発生を監視する安全監視プログラム、（ｂ）通常時における前記制御対象の制御に関連する通常制御プログラム、および（ｃ）異常時における前記制御対象の制御に関連する安全制御プログラムに対する前記少なくとも１つのプロセッサの実行時間の割り当てを制御するためのシステムプログラムと、
を備え、
前記プロセッサは、前記システムプログラムを実行することによって、前記通常制御プログラムを含む少なくとも１つのプログラムに前記実行時間を割り当てる第１のタイムパーティション、および前記安全監視プログラムを含む少なくとも１つのプログラムに前記実行時間を割り当てる第２のタイムパーティションを含む通常制御スケジューリングパターンに従って、前記安全監視プログラムおよび前記通常制御プログラムをスケジューリングし、
前記プロセッサは、前記システムプログラムを実行することによって、前記第２のタイムパーティション内で実行される前記安全監視プログラムによって異常が検知されたことに応じて、前記通常制御スケジューリングパターンから安全制御スケジューリングパターンに切り替えて、前記安全監視プログラムおよび前記安全制御プログラムをスケジューリングし、
ここで、前記安全制御スケジューリングパターンは、前記安全制御プログラムを含む少なくとも１つのプログラムに前記実行時間を割り当てる第３のタイムパーティションと、前記安全監視プログラムを含む少なくとも１つのプログラムに前記実行時間を割り当てる第４のタイムパーティションとを含む、
安全制御装置。
【請求項２】
前記安全制御プログラムは、前記通常制御プログラムから前記制御対象に関する制御情報を引き継ぎ、前記制御情報に基づいて前記制御対象の安全制御を開始する、請求項１に記載の安全制御装置。
【請求項３】
前記ハードウェア資源は、メモリ及び少なくとも１つのＩ／Ｏポートをさらに含み、
前記システムプログラムを実行する前記プロセッサは、
前記通常制御スケジューリングパターンに従ったスケジューリングを行う場合に、前記第１及び第２のタイムパーティションに対して前記メモリ内の記憶領域及び前記少なくとも１つのＩ／Ｏポートを分割して割り当て、
前記安全制御スケジューリングパターンに従ったスケジューリングを行う場合に、前記第３及び第４のタイムパーティションに対して前記メモリ内の記憶領域及び前記少なくとも１つのＩ／Ｏポートを分割して割り当てる、
請求項１又は２に記載の安全制御装置。
【請求項４】
通常時における制御対象の制御に関連する通常制御プログラムを含む少なくとも１つのプログラムにプロセッサ実行時間を割り当てる第１のタイムパーティション、および前記制御対象に関する異常の発生を監視する安全監視プログラムを含む少なくとも１つのプログラムに前記実行時間を割り当てる第２のタイムパーティションを含む通常制御スケジューリングパターンに従って、前記安全監視プログラムおよび前記通常制御プログラムを前記プロセッサに実行させるべくスケジューリングするステップと、
前記第２のタイムパーティション内で実行される前記安全監視プログラムによって異常が検知されたことに応じて、前記通常制御スケジューリングパターンから安全制御スケジューリングパターンに切り替えて、前記安全監視プログラムおよび異常時における前記制御対象の制御に関連する安全制御プログラムを前記プロセッサに実行させるべくスケジューリングするステップと、
を備え、
前記安全制御スケジューリングパターンは、前記安全制御プログラムを含む少なくとも１つのプログラムに前記実行時間を割り当てる第３のタイムパーティションと、前記安全監視プログラムを含む少なくとも１つのプログラムに前記実行時間を割り当てる第４のタイムパーティションとを含む、
制御対象の安全制御方法。
【請求項５】
前記制御対象に関する制御情報を前記通常制御プログラムから前記安全制御プログラムに引き継ぎ、前記安全制御プログラムが前記制御情報に基づいて前記制御対象の安全制御を開始するステップをさらに備える、請求項４に記載の方法。
【請求項６】
前記ハードウェア資源は、メモリ及び少なくとも１つのＩ／Ｏポートをさらに含み、
前記方法は、
前記通常制御スケジューリングパターンに従ったスケジューリングを行う場合に、前記第１及び第２のタイムパーティションに対して前記メモリ内の記憶領域及び前記少なくとも１つのＩ／Ｏポートを分割して割り当てるステップと、
前記安全制御スケジューリングパターンに従ったスケジューリングを行う場合に、前記第３及び第４のタイムパーティションに対して前記メモリ内の記憶領域及び前記少なくとも１つのＩ／Ｏポートを分割して割り当てるステップと、
をさらに備える、請求項４又は５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機能安全の確保のためにサービスロボットおよび輸送機器等に搭載される安全制御装置に関し、特に、コンピュータシステムを用いた安全制御装置に関する。
【背景技術】
【０００２】
従来の産業用ロボットの場合、人に危害を加えないようにするために、ロボットを人から隔離する対策が取られてきた。しかしながら、人との協調作業を行うことが想定されているサービスロボットの場合、ロボットの作業空間と人の活動範囲が重複している。このため、サービスロボットに関する安全確保のためには、従来の産業用ロボットで取られているのと同様の対策を行うことは難しい。したがって、サービスロボットでは、機能安全（functional safety）の確保が重要である。機能安全とは、人に何らかの危害を及ぼす可能性のあるシステムに安全機能を実装し、リスクを許容レベル以下に抑えることで機能的に達成される安全を意味する。
【０００３】
機能安全を確保するため、サービスロボットは、外界センサや自己診断装置などを有している。サービスロボットは、外界センサや自己診断装置によって安全状態を常時監視し、何らかの危険を検知した場合に適切な安全制御ロジックを実行することでリスクを軽減する（例えば特許文献１および２を参照）。例えば、特許文献１は、サービスロボットにセンサを設置し、センサによってロボットへの人の接近または接触を検出した場合に、通常モード（各関節にモータ動力を供給して駆動する動作モード）から安全モード（各関節へのモータ動力の供給を停止する動作モード）に変更することを開示している。
【０００４】
また、サービスロボットでは、一般的に、ロボットが行うタスク（作業）の複雑さ、機械的な機構の複雑さ、多機能性などの理由により、コンピュータシステム（つまり、マイクロプロセッサ等のプログラマブル電子機器及びコンピュータプログラム）が安全制御のために利用されている。
【０００５】
上述したサービスロボットのほか、運輸機器、プラント制御及び医療機器などの電気的な原理で動作するシステムを対象とした機能安全に関する国際標準としてIEC 61508が制定されている。IEC 61508では、リスクを軽減するため（機能安全の確保のため）に設けられるシステムのことを安全関連系（safety related system）と呼んでいる。IEC 61508は、プログラマブル電子機器も対象としており、マイクロプロセッサ及びPLC（Programmable Logic Controller）等のハードウェアとコンピュータプログラム（ソフトウェア）によって安全関連系を構築するための様々な技法を定めている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−８６３７９号公報
【特許文献２】特開２００８−１９１８２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
IEC 61508で定められている技法を用いることで、コンピュータシステムを用いて安全関連系を構築することが可能となる。なお、機能安全を低コストで実現するためには、ソフトウェア規模を低減することが望ましい。よって、安全関連系に含まれるコンピュータシステム上では機能安全に関するアプリケーションプログラムのみを実行することが効率的である。
【０００８】
一方で、近年、マイクロプロセッサ等のプログラマブル電子機器の処理能力が向上している。このため、マルチタスクＯＳ（Operating System）を利用し、１つのコンピュータシステム上で様々なアプリケーションプログラムを並列実行することで、パートナロボット及び自動車等の機器に搭載されている複数用途のコンピュータシステムを統合することができる。
【０００９】
本願の発明者は、コンピュータシステムの統合化によるコスト削減を図るため、機能安全の確保に関するアプリケーションプログラム（以下、安全関連アプリケーションと呼ぶ）を、その他のアプリケーションプログラム（以下、非安全関連アプリケーションと呼ぶ）と共に１つのコンピュータシステム上で動作させることについて検討を行った。この場合、安全関連アプリケーションと非安全関連アプリケーションが完全に独立していなければ、IEC 61508で定められている技法を非安全関連アプリケーションにまで適用する必要性が生じる。このため、ソフトウェア開発コストが増大するという問題がある。
【００１０】
本発明は、上述した知見に基づいてなされたものであって、コンピュータシステムを用いて構成される安全関連系の低コスト化を目的とする。
【課題を解決するための手段】
【００１１】
本発明の一態様にかかる安全制御装置は、少なくとも１つのプロセッサを含むハードウェア資源と、システムプログラムを有する。前記システムプログラムは、（ａ）制御対象に関する異常の発生を監視する安全監視プログラム、（ｂ）通常時における前記制御対象の制御に関連する通常制御プログラム、および（ｃ）異常時における前記制御対象の制御に関連する安全制御プログラムに対する前記少なくとも１つのプロセッサの実行時間の割り当てを制御する。
【００１２】
さらに、前記プロセッサは、前記システムプログラムを実行することによって、前記通常制御プログラムを含む少なくとも１つのプログラムに前記実行時間を割り当てる第１のタイムパーティション、および前記安全監視プログラムを含む少なくとも１つのプログラムに前記実行時間を割り当てる第２のタイムパーティションを含む通常制御スケジューリングパターンに従って、前記安全監視プログラムおよび前記通常制御プログラムをスケジューリングする。
【００１３】
また、前記プロセッサは、前記システムプログラムを実行することによって、前記第２のタイムパーティション内で実行される前記安全監視プログラムによって異常が検知されたことに応じて、前記通常制御スケジューリングパターンから安全制御スケジューリングパターンに切り替えて、前記安全監視プログラムおよび前記安全制御プログラムをスケジューリングする。ここで、前記安全制御スケジューリングパターンは、前記安全制御プログラムを含む少なくとも１つのプログラムに前記実行時間を割り当てる第３のタイムパーティションと、前記安全監視プログラムを含む少なくとも１つのプログラムに前記実行時間を割り当てる第４のタイムパーティションとを含む。
【００１４】
上述した本発明の一態様によれば、通常制御スケジューリングパターンに従って実行される安全監視プログラムによって異常（つまり安全でない状態）が検知されたことに応じて安全制御スケジューリングパターンに切り替え、安全制御スケジューリングパターンに従って安全制御プログラムを確実に実行できる。つまり、システムプログラムのタイム・パーティションニングによって、安全監視プログラム及び安全制御プログラムを通常制御プログラムから独立させている。このため、通常制御プログラムを安全関連系から除外することができ、コンピュータシステムを用いて構成される安全関連系の低コスト化に寄与することができる。
【発明の効果】
【００１５】
本発明によれば、コンピュータシステムを用いて構成される安全関連系の低コスト化に寄与することができる。
【図面の簡単な説明】
【００１６】
【図１】発明の実施の形態１にかかる安全制御装置の構成例を示すブロック図である。
【図２】発明の実施の形態１におけるタイム・パーティショニングの概念を説明するための図である。
【図３】発明の実施の形態１におけるリソース・パーティショニングの概念を説明するための概念図である。
【図４】図１に示したＯＳによって提供される実行環境で起動されるプロセス間の関係を示す図である。
【図５】スケジューリングパターンの具体例を示す図である。
【図６】安全監視プロセスの処理手順の具体例を示すフローチャートである。
【図７】発明の実施の形態２にかかる安全制御装置が有するＯＳによって提供されるプロセス実行環境を示す概念図である。
【発明を実施するための形態】
【００１７】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００１８】
<発明の実施の形態１>
本実施の形態にかかる安全制御装置１は、サービスロボットや運輸機器などに搭載されて機能安全確保のための安全制御を実行する。安全制御装置１は、安全関連アプリケーションと非安全関連アプリケーションを同一のコンピュータシステムで実行するよう構成される。図１は、本実施の形態にかかる安全制御装置１の構成例を示すブロック図である。以下では、図１に示す各要素について順に説明する。
【００１９】
プロセッサ１０は、プログラム（命令ストリーム）の取得、命令のデコード、命令のデコード結果に応じた演算処理を行う。なお、図１では、１つのプロセッサ１０のみを示しているが、安全制御装置１は、複数のプロセッサ１０を有するマルチプロセッサ構成であってもよい。また、プロセッサ１０は、マルチコアプロセッサでもよい。プロセッサ１０は、システムプログラムとしてのオペレーティングシステム（ＯＳ）１００を実行することによりマルチプログラミング環境を提供する。マルチプログラミング環境とは、複数のプログラムを定期的に切り替えて実行したり、あるイベントの発生に応じて実行するプログラムを切り替えたりすることによって、複数のプログラムがあたかも並列実行されているような環境を意味する。
【００２０】
マルチプログラミングは、マルチプロセス、マルチスレッド、マルチタスク等と呼ばれる場合もある。プロセス、スレッド及びタスクは、マルチプログラミング環境で並列実行されるプログラム単位を意味する。これらの用語はしばしば混同して用いられるが、一般的には、プロセスは、メモリ空間などのプログラム実行環境が独立に割り当てられ、他のプロセスとの独立性の高いプログラムモジュールである。一方、スレッドは、並列処理されるプロセスに含まれるさらに細かな並列処理単位である。マルチスレッド環境では、プロセスは複数のスレッドを含む。各スレッドはプロセスに割り当てられた資源にアクセス可能であり、スレッド間はメモリ空間を共有する。本実施の形態のプロセッサ１０が具備するマルチプログラミング環境は、マルチプロセス環境でもよいし、マルチスレッド環境でもよい。
【００２１】
実行用メモリ１１は、プロセッサ１０によるプログラム実行のために使用されるメモリである。実行用メモリ１１には、不揮発性メモリ１３からロードされたプログラム（ＯＳ１００及びアプリケーションプログラム１１０）、プロセッサ１０の入出力データ等が記憶される。なお、プロセッサ１０は、プログラム（ＯＳ１００及びアプリケーションプログラム１１０）を不揮発性メモリ１３から実行用メモリ１１にロードすることなく、これらのプログラムを不揮発性メモリ１３から直接実行してもよい。
具体的には、実行用メモリ１１は、ＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic Random Access Memory）等のランダムアクセス可能な揮発性メモリとすればよい。図１の実行用メモリ１１は、論理的な構成単位を示している。すなわち、実行用メモリ１１は、例えば、複数のＳＲＡＭデバイスの組み合わせ、複数のＤＲＡＭデバイスの組み合わせ、又はＳＲＡＭデバイスとＤＲＡＭデバイスの組み合わせでもよい。
【００２２】
Ｉ／Ｏポート１２は、外部デバイスとの間のデータ送受信に使用される。例えば、安全制御装置１がサービスロボットに搭載される場合であれば、外部デバイスは、サービスロボット周囲の障害物を計測可能な視覚センサ、サービスロボットを動作させるアクチュエータ等である。
【００２３】
不揮発性メモリ１３は、電力の供給を受けることなく、実行用メモリ１１に比べて安定的に記憶内容を維持することが可能なメモリデバイスである。例えば、不揮発性メモリ１３は、ＲＯＭ（Read Only Memory）、フラッシュメモリ、ハードディスクドライブ若しくは光ディスクドライブ、又はこれらの組み合わせである。不揮発性メモリ１３は、ＯＳ１００及びアプリケーション１０１〜１０３を格納する。なお、不揮発性メモリ１３の少なくとも一部は安全制御装置１から取り外し可能に構成されてもよい。例えば、アプリケーション１０１〜１０３が格納されたメモリを取り外し可能としてもよい。また、不揮発性メモリ１３の少なくとも一部は、安全制御装置１の外部に配置されてもよい。
【００２４】
ＯＳ１００は、プロセッサ１０によって実行されることにより、プロセッサ１０及びメモリ１１及び１３等のハードウェア資源を利用して、タスクスケジューリングを含むタスク管理、割り込み管理、時間管理、資源管理、タスク間同期およびタスク間通信機構の提供などを行う。
【００２５】
さらに、機能安全の確保に関連する安全監視アプリケーション１０１及び安全制御アプリケーション１０３の通常制御アプリケーション１０２からの独立性を高めるため、ＯＳ１００は、プロセッサ１０、実行用メモリ１１、Ｉ／Ｏポート１２を含むハードウェア資源を時間的および空間的に保護する機能を有する。
【００２６】
このうち、時間的な保護は、プロセッサ１０の実行時間という時間的な資源をパーティショニングすることにより行う。具体的に述べると、時間的な保護は、プロセッサ１０の実行時間をパーティショニングし、各パーティション（タイムパーティションと呼ぶ）にタスク（プロセス又はスレッド）を割り当てることにより行う。ＯＳ１００のスケジューリング機能（タイムパーティションスケジューラ）は、各タイムパーティションに割り当てられたタスクに対して、プロセッサ１０の実行時間を含む資源の利用を保証する。
【００２７】
図２は、タイム・パーティショニングに関する概念図である。図２の例では、予め定められた１サイクル時間を３つのタイムパーティションＴＰ１、ＴＰ２及びＴＰ３に分割する例を示している。例えば、１サイクル時間を１００Ｔｉｃｋとした場合、このうち前半の２０ＴｉｃｋがＴＰ１、中間の３０ＴｉｃｋがＴＰ２、後半の５０ＴＩｃｋがＴＰ３と規定される。
【００２８】
また、図２の例では、ＴＰ１には第１アプリケーション（ＡＰＬ１）が割り当てられている。また、ＴＰ２には第２アプリケーション（ＡＰＬ２）が割り当てられている。また、ＴＰ３には、第３及び第４アプリケーション（ＡＰＬ３及びＡＰＬ４）が割り当てられている。時間の経過に応じて、ＴＰ１〜ＴＰ３のいずれかがアクティブになり、アクティブなタイムパーティションに割り当てられているアプリケーションがプロセッサ１０で実行される。なお、各タイムパーティション内でのプロセス又はスレッドのスケジューリングには、一般的な優先度ベースのスケジューリングを適用すればよい。
【００２９】
一方、空間的な保護は、実行用メモリ１１及びＩ／Ｏポート１２を含む固定的な資源をパーティショニングし、各パーティション（リソースパーティションと呼ぶ）にタスクを割り当てることにより行う。ＯＳ１００は、予め割り当てられたリソースパーティションを超えてタスクが他のリソースにアクセスすることを禁止する。
【００３０】
図３は、リソース・パーティショニングに関する概念図である。図３の例では、２つのリソースパーティションＲＰ１及びＲＰ２を示している。ＲＰ１には、実行用メモリ１１及び不揮発性メモリ１３の一部（Ａ領域）と、Ｉ／Ｏポート１２の一部（ポートＡ）が割り当てられている。また、ＲＰ２には、実行用メモリ１１及び不揮発性メモリ１３の他の一部（Ｂ領域）と、Ｉ／Ｏポート１２の他の一部（ポートＢ）が割り当てられている。ＲＰ１からはＲＰ２に割り当てられたリソースへのアクセスが禁止され、ＲＰ２からはＲＰ１に割り当てられたリソースへのアクセスが禁止される。
【００３１】
なお、全てのリソースがいずれかのリソースパーティションに排他的に割り当てられる必要はない。つまり、複数のリソースパーティションによって共有されるリソースがあってもよい。例えば、サービスロボットの安全制御を行う場合、アクチュエータには、通常制御アプリケーション１０１及び安全制御アプリケーション１０２の双方からアクセスできる必要がある。よって、通常制御アプリケーション１０１が属するリソースパーティションと安全制御アプリケーション１０２が属するリソースパーティションによって、アクチュエータを制御するためのＩ／Ｏポートを共有するとよい。
【００３２】
図１に戻り説明を続ける。アプリケーション１０１〜１０３は、ＯＳ１００及びプロセッサ１０によって提供されるマルチプログラミング環境で実行される。このうち、安全監視アプリケーション１０１は、通常制御アプリケーション１０２の実行状況の監視、およびＩ／Ｏポート１２への入出力データの監視をプロセッサ１０に実行させるための命令コードを含む。つまり、安全管理アプリケーション１０１は、安全関連アプリケーションである。
【００３３】
また、通常制御アプリケーション１０２は、サービスロボット等の制御対象に通常の機能・動作を行わせるための制御手順をプロセッサ１０に実行させるための命令コードを含む。つまり、通常制御アプリケーション１０２は、非安全関連アプリケーションである。
【００３４】
また、安全制御アプリケーション１０３は、安全監視アプリケーション１０１によって何らかの異常が検出された場合に対応して、機能安全を確保するために定められた制御手順をプロセッサ１０に実行させるための命令コードを含む。つまり、安全制御アプリケーション１０３は、安全関連アプリケーションである。
【００３５】
続いて以下では、アプリケーション１０１〜１０３の起動により生成されるプロセス間の関係について図４を用いて説明する。図４は、ＯＳ１００によって提供されるマルチプログラミング環境で起動されるプロセス２１〜２３の関係を示す図である。
【００３６】
安全監視プロセス２１は、安全監視アプリケーション１０１の起動によって生成されるプロセスである。図４の例では、安全監視プロセス２１は、タイムパーティションＴＰ１及びリソースパーティションＲＰ１に割り当てられている。安全監視プロセス２１は、火安全関連アプリケーションである通常制御プロセス２２の実行状況の監視と、Ｉ／Ｏポート１２の入出力データを監視する。さらに、安全監視プロセス２１は、ＯＳ１００がタイムパーティションの切り替えを行う際の切り替え順序およびタイミングを規定するスケジューリングパターンの選択を行う。スケジューリングパターンについては後述する。
【００３７】
通常制御プロセス２２は、通常制御アプリケーション１０２の起動によって生成されるプロセスである。図４の例では、通常制御プロセス２２は、タイムパーティションＴＰ２及びリソースパーティションＲＰ２に割り当てられている。
【００３８】
安全制御プロセス２３は、安全制御アプリケーション１０３の起動によって生成されるプロセスである。図４の例では、安全制御プロセス２３は、タイムパーティションＴＰ３及びリソースパーティションＲＰ３に割り当てられている。
【００３９】
スケジューリングテーブル２４は、タイムパーティションの設定を定めたスケジューリングパターンを保持している。なお、スケジューリングテーブル２４は、少なくとも２つの異なるスケジューリングパターンを保持している。１つは、安全監視プロセス２１による異常検知が行われていない場合（つまり通常時）に適用されるスケジューリングパターンである。もう１つは、安全監視プロセス２１によって異常が検知された場合に適用されるスケジューリングパターンである。以下では、通常時に適用されるスケジューリングパターンを"通常制御スケジューリングパターン"と呼ぶ。また、異常検知時に適用されるスケジューリングパターンを"安全制御スケジューリングパターン"と呼ぶ。タイムパーティションの切り替え（パーティション・スケジューリング）を行うＯＳ１００は、スケジューリングテーブル２４を参照し、安全監視プロセス２１によって指定されたスケジューリングパターンに従って、パーティション・スケジューリングを行う。
【００４０】
図５（Ａ）は、通常制御スケジューリングパターンの具体例を示している。また、図５（Ｂ）は、安全制御スケジューリングパターンの具体例を示している。図５（Ａ）の通常制御スケジューリングパターンでは、通常制御プロセス２２が属するタイムパーティションＴＰ２が１サイクル時間の前半（Ｔ１）に割り当てられている。また、安全監視プロセス２１が属するタイムパーティションＴＰ１が１サイクル時間の後半（Ｔ２）に割り当てられている。図５（Ａ）のスケジューリングパターンによれば、通常制御プロセス２２と安全監視プロセス２１が繰り返しスケジューリングされる。
【００４１】
一方、図５（Ｂ）の安全制御スケジューリングパターンでは、安全制御プロセス２３が属するタイムパーティションＴＰ３が１サイクル時間の前半（Ｔ３）に割り当てられている。また、安全監視プロセス２１が属するタイムパーティションＴＰ１が１サイクル時間の後半（Ｔ４）に割り当てられている。図５（Ｂ）のスケジューリングパターンによれば、安全制御プロセス２３と安全監視プロセス２１が繰り返しスケジューリングされる。
【００４２】
安全監視プロセス２１は、通常制御プロセス２２の異常又はＩ／Ｏポート１２の入出力データの異常を検知したことに応じて、ＯＳ１００によって参照されるスケジューリングパターンを、通常制御スケジューリングパターンから安全制御スケジューリングパターンへ切り替える。
【００４３】
図６は、安全監視プロセス２１の処理手順の具体例を示すフローチャートである。ステップＳ１１〜Ｓ１３では、通常制御プロセス２２の異常、Ｉ／Ｏポート１２への出力データ異常、Ｉ／Ｏポート１２からの入力データ異常の発生を監視する。いずれかの異常が検知された場合、安全監視プロセス２１は、ＯＳ１００によって参照されるスケジューリングパターンを安全制御スケジューリングパターン（例えば図５（Ｂ））に変更する（ステップＳ１４）。
【００４４】
ステップＳ１５では、異常状態から復帰したか否かを安全監視プロセス２１が判定する。異常状態からの復帰は、通常制御プロセス２２の異常、Ｉ／Ｏポート１２への出力データ異常、Ｉ／Ｏポート１２からの入力データ異常の全てが解除されたか否かによって判定すればよい。
【００４５】
異常状態からの復帰を判定した場合（ステップＳ１５でＹＥＳ）、安全監視プロセス２１は、ＯＳ１００によって参照されるスケジューリングパターンを通常制御スケジューリングパターン（例えば図５（Ａ））に変更する（ステップＳ１６）。
【００４６】
上述したように、本実施の形態では、ＯＳ１００のタイム・パーティションニングによって、安全監視アプリケーション１０１（安全監視プロセス２１）及び安全制御アプリケーション１０３（安全制御プロセス２３）を、通常制御アプリケーション１０２（通常制御プロセス２２）から独立させている。このため、通常制御アプリケーション１０２（通常制御プロセス２２）を安全関連系から除外することが可能となる。よって、本実施の形態によれば、安全関連系を小さく構築することができ、コンピュータシステムを用いて構成される安全関連系の低コスト化に寄与することができる。
【００４７】
<発明の実施の形態２>
本実施の形態にかかる安全制御装置は、上述した安全制御装置１の変形である。本実施の形態にかかる安全制御装置の全体的な構成は、図１に示した安全制御装置１の構成と同様とすればよい。図７は、本実施の形態にかかる安全制御装置が有するＯＳによって提供されるプロセス実行環境を示す概念図である。本実施の形態では、ＯＳ１００が、通常制御プロセス２２と安全制御プロセス２３との間でデータをやり取りするためのプロセス間通信を提供する。
【００４８】
図７の例では、プロセス２２及び２３の間での通信のために共有メモリ２５が提供される。本実施の形態の安全制御プロセス２３は、制御対象（サービスロボット、輸送機器等）に関する制御情報を通常制御プロセスから共有メモリ２５を介して引き継ぐ。そして、安全制御プロセス２３は、引き継いだ制御情報に基づいて制御対象の安全制御を開始する。このように、安全制御へ切り替わった際に、安全制御プロセス２３が制御情報を引き継ぐことで、制御対象に対する安全制御を円滑に開始することができる。
【００４９】
なお、共有メモリ２５は、プロセス２２及び２３の間でデータをやり取りする方式の一例に過ぎない。例えば、共有メモリ２５に代えてメッセージキュー又はソケット等を利用してもよい。
【００５０】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【００５１】
１  安全制御装置
１０  プロセッサ
１１  実行用メモリ
１２  Ｉ／Ｏポート
１３  不揮発性メモリ
２１  安全監視プロセス
２２  通常制御プロセス
２３  安全制御プロセス
２４  スケジュールテーブル
２５  共有メモリ
１００  オペレーティングシステム
１０１  安全監視アプリケーション
１０２  通常制御アプリケーション
１０３  安全制御アプリケーション
【図１】
2010271759.tif 000003
【図２】
2010271759.tif 000004
【図３】
2010271759.tif 000005
【図４】
2010271759.tif 000006
【図５】
2010271759.tif 000007
【図６】
2010271759.tif 000008
【図７】
2010271759.tif 000009