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