"少なくとも1つのプロセッサを含むハードウェア資源と、a制御対象に関する異常の発生を監視する安全監視プログラム、b通常時における前記制御対象の制御に関連する通常制御プログラム、およびc異常時における前記制御対象の制御に関連する安全制御プログラムに対する前記プロセッサの実行時間の割り当てを制御するためのシステムプログラムと、を備え、前記システムプログラムは、d前記安全監視プログラムに前記実行時間を割り当てる第1のタイムパーティション、e前記通常制御プログラムに前記実行時間を割り当てる第2のタイムパーティション、およびf前記安全制御プログラムに前記実行時間を割り当てる第3のタイムパーティションを含むスケジューリングパターンに従って、次にスケジューリングするタイムパーティションを選択決定するパーティションスケジューラを一部に有し、前記プロセッサは、前記システムプログラムを実行することによって、前記パーティションスケジューラを周期的に動作させ、前記パーティションスケジューラは、前記第1のタイムパーティション内で実行される前記安全監視プログラムまたは前記第2のタイムパーティション内で実行される前記通常制御プログラムによって異常が検知されたことに応じて起動され、前記第1のタイムパーティションまたは前記第2のタイムパーティションから、前記第3のタイムパーティションへの切り替えを行う安全制御装置。前記パーティションスケジューラは、前記第2のタイムパーティション内で実行される前記通常制御プログラムによって異常が検知されたことに応じて強制的に起動され、前記第2のタイムパーティションから前記第3のタイムパーティションへの切り替えを即座に行うことを特徴とする請求項1に記載の安全制御装置。前記通常制御プログラムは、異常を検知した場合に、前記通常制御プログラムが実行される前記第2のタイムパーティション内において実行可能時間が残されているか判断し、残されている場合には、前記パーティションスケジューラに対してタイムパーティションの切り替え希望を通知し、前記パーティションスケジューラは、前記通常制御プログラムからのタイムパーティションの切り替え希望通知を受けた場合に、次の周期で動作して、前記第2のタイムパーティションから前記第3のタイムパーティションへの切り替えを行うことを特徴とする請求項1に記載の安全制御装置。前記システムプログラムは、前記タイムパーティション内で実行されるプログラムのスケジューリングを行うタスクスケジューラと、を一部に更に有し、前記パーティションスケジューラは、前記タスクスケジューラを動作させ、前記タスクスケジューラによる前記プログラムの切り替え回数に応じて、前記タイムパーティション内での前記プログラムの実行状況を判断することを特徴とする請求項1乃至3いずれか1項に記載の安全制御装置。前記パーティションスケジューラが、前記タスクスケジューラを有し、前記パーティションスケジューラが、前記タスクスケジューラを動作させることを特徴とする請求項4に記載の安全制御装置。前記プログラムには、それぞれ優先度が設定されており、前記タイムパーティションの1サイクルが、複数の前記タイムパーティションが含まれ、かつ、複数の前記タイムパーティションのそれぞれに時間が割り当てられて構成されており、前記パーティションスケジューラは、前記プログラムの優先度と、前記プログラムが実行される前記タイムパーティション内で残されている実行可能時間と、に応じて、次に実行するプログラムを決定し、当該決定したプログラムを含むタイムパーティションに切り替えを行うことを特徴とする請求項1乃至5いずれか1項に記載の安全制御装置。前記パーティションスケジューラは、前記プログラムの優先度にしたがって、次に実行するプログラムを検索し、当該検索したプログラムが実行される前記タイムパーティション内で実行可能時間が残されている場合に、次に実行するプログラムとして決定することを特徴とする請求項6に記載の安全制御装置。前記パーティションスケジューラは、前記プログラムが実行される前記タイムパーティションのうちで、実行可能時間が残されているタイムパーティションを検索し、当該検索したタイムパーティション内で優先度に従って、次に実行するプログラムを決定することを特徴とする請求項6に記載の安全制御装置。前記安全監視プログラム、前記通常制御プログラム、および前記安全制御プログラムのうちでいずれか2つのプログラムを第1のプログラムおよび前記第2のプログラムとして、前記第1のプログラムおよび前記第2のプログラム間でのデータ通信のために用いられ、複数の共有部分に分割されて構成される共有メモリを更に備え、前記プロセッサは、前記システムプログラムを実行することによって、前記タイムパーティションを選択決定させ、前記タイムパーティション内で実行される前記第1のプログラムが前記共有メモリのいずれかの共有部分にアクセスしている場合には、前記タイムパーティション内で実行される前記第2のプログラムのアクセス先を、前記第1のプログラムがアクセスしてない共有部分であって、かつ、最新の更新データが記憶されている共有部分とすることを特徴とする請求項1乃至8いずれか1項に記載の安全制御装置。前記プロセッサは、前記システムプログラムを実行することによって、前記タイムパーティションを選択決定させ、前記タイムパーティション内で実行される前記第1のプログラムが前記共有メモリのいずれかの共有部分にアクセスする際に規定の回数以上アクセスしていた場合には、異常であると判断することを特徴とする請求項9に記載の安全制御装置。a制御対象に関する異常の発生を監視する安全監視プログラムにプロセッサの実行時間を割り当てる第1のタイムパーティション、e通常時における前記制御対象の制御に関連する通常制御プログラムに前記実行時間を割り当てる第2のタイムパーティション、およびf異常時における前記制御対象の制御に関連する安全制御プログラムに前記実行時間を割り当てる第3のタイムパーティションを含むスケジューリングパターンに従って、次にスケジューリングするタイムパーティションを前記プロセッサに選択決定させるべく周期的に動作するステップと、前記第1のタイムパーティション内で実行される前記安全監視プログラムまたは前記第2のタイムパーティション内で実行される前記通常制御プログラムによって異常が検知されたことに応じて、前記第1のタイムパーティションまたは前記第2のタイムパーティションから、前記第3のタイムパーティションへの切り替えを前記プロセッサに行わせるべく動作するステップと、を備える制御対象の安全制御方法。前記安全制御方法は、前記プログラムの切り替え回数に応じて、前記タイムパーティション内での前記プログラムの実行状況を前記プロセッサに判断させるべく動作するステップを、更に備えることを特徴とする請求項11に記載の安全制御方法。前記安全制御方法は、前記プログラムが実行される前記タイムパーティションのうちで、実行可能時間が残されているタイムパーティションを検索し、当該検索したタイムパーティション内で優先度に従って、次に実行するプログラムを前記プロセッサに決定させるべく動作するステップを、更に備えることを特徴とする請求項11又は12いずれか1項に記載の安全制御方法。前記安全制御方法は、前記安全監視プログラム、前記通常制御プログラム、および前記安全制御プログラムのうちでいずれか2つのプログラムを第1のプログラムおよび前記第2のプログラムとして、前記第1のプログラムおよび前記第2のプログラム間でのデータ通信のために用いられ、複数の共有部分に分割されて構成される共有メモリへのアクセスを前記プロセッサに実行させるべく動作するステップを更に備え、前記共有メモリへのアクセスを前記プロセッサに実行させるべく動作するステップでは、前記タイムパーティション内で実行される前記第1のプログラムが前記共有メモリのいずれかの共有部分にアクセスしている場合には、前記タイムパーティション内で実行される前記第2のプログラムのアクセス先を、前記第1のプログラムがアクセスしてない共有部分であって、かつ、最新の更新データが記憶されている共有部分とすることを特徴とする請求項11乃至13いずれか1項に記載の安全制御方法。しかしながら、特許文献1に例示されるような従来の安全制御装置には、以下に説明するような問題点があった。まず、第1の問題点について説明する。タイムパーティショニング機能を備える従来技術では、安全監視プログラムを実行するタイムパーティションにおいて異常が検出されて安全制御プログラムに切り替えて実行しようとする場合には、安全監視プログラムが実行されているタイムパーティションのタイムリソースが終了するまでの間は、タイムパーティションを変更することができないものであった。また、仮に、通常制御プログラム自らが異常を検出可能な構成を採用し、通常制御プログラムの実行中に自ら異常を検出したとしても、従来技術では、通常制御プログラムの実行に関する異常を安全監視プログラムによって検出し、安全監視プログラムからの通知に応じてタイムパーティションを切り替えるまでの間は、安全制御プログラムの実行による異常処置を行うことができないものであった。このように、従来技術では、異常発生時における異常処置の実行が遅れて、さらなる異常を生じさせかねない、という問題点があった。次に、第2の問題点について説明する。タイムパーティショニング機能を備える従来技術では、時間制約を重視するために、パーティションスケジューリングをまずは実施し、次いで、タスクスケジューリングを実施する、という順序でスケジューリングを行っていた。このため、タスクの優先度の設計に柔軟性が欠如し、タイムパーティションに配置されるタスクに関して、例えば、優先度の高いタスクのみが集まったタイムパーティションや、優先度が低いタスクのみが集まったタイムパーティションなどがスケジューリングされてしまう可能性がある。しかしながら、タイムパーティションおよびタスクのスケジューリングに関しては、優先度のみならず、その周期性にも依存するものであるために、従来技術では、このようなスケジューリングに関する問題を解決することができないものであった。また、このようなスケジューリングの問題を解決するために、スケジューリングに際して、1つのタイムパーティションには1つのタスクまでを配置する、という制約を課した場合には、タイムパーティション切り替え回数のみが不要に増加してしまい、システム全体の効率性が低下してしまうという問題がある。図17を用いて、第2の問題点をより具体的に説明する。図17は、従来技術に係るタイムスケジューリング及びタスクスケジューリングの具体例を示している。図17では、タイムパーティションのスケジューリングが、優先度に基づいてQoSスロットに設定されている。QoSスロットに設定されているタイムパーティションを動作させ、そのタイムパーティションに関する割り当て時間QoSスロットの処理時間の処理が実行されることで、QoSスロットが進められる。QoSスロットに設定されているタイムパーティションが変更された場合には、タイムパーティションが切り替えられる。従来技術によるスケジューリングによれば、スケジューリングの結果、TP2Bに含まれるタスクが、TP1に含まれるタスクの実行結果を必要とするため、TP2に関するタスクを、TP2Aに含まれるタスクと、TP2Bに含まれるタスクとに分離して配置される。しかし、本来であれば、TP2Aに含まれるタスクと、TP2Bに含まれるタスクとは関連性が深いものであるために、可能であるならば同じタイムパーティション内に配置することが好ましい。また、TP1に含まれるタスクはセンサ等の入出力を扱うタスクであり、TP1に含まれるタスクは優先度および周期性ともに高いため、可能であるならば、より高周期で実行可能とすることが好ましい。また、他の例を用いてより具体的に説明する。タイムパーティション及びタスクスケジューリングに関して、それぞれの優先度及び周期性を考慮して、タイムパーティションの理想の順序がTP2A1、TP1、TP2A2、TP1、TP2B1、TP1、TP2B2、であるとし、これらタイムパーティションのそれぞれに所望のタスクが配置される場合を考える。従来技術では、上述した理想的な実行順序を実現するためには、以下の2つのスケジューリング手法を採用することが考えられる。まず、一つ目として、TP2A1のタスクのみを実行可能なタイムパーティション時間を確保し、TP1のタスクを実行可能なタイムパーティション時間を確保し、TP2A2のみを実行可能なタイムパーティション時間を確保し、とするようなスケジューリング手法が考えられる。しかし、この手法では、各タイムパーティションに対して効率よく時間を割り当てることが困難であり、システム全体としての効率を下げてしまう。また、二つ目として、TP2A内の2つのタスクをそれぞれ別々のタイムパーティションに分離しTP2A1内のタスクとTP2A2内のタスクとに分離する、TP2B内の2つのタスクをそれぞれ別々のタイムパーティションに分離しTP2b1内のタスクとTP2B2内のタスクとに分離する、とするようなスケジューリング手法が考えられる。しかし、この手法では、関連性の大きなタスクを分離することになるため、必要以上のメモリ領域を使用したり、分離したタスク間での通信を必要としたりする。このため、システムの複雑性、肥大化を招く、という問題がある。従って、各タイムパーティションに割り当てられた時間を考慮した上で、タスクの優先度及び周期性を満たすことのできるスケジューリング手法が求められていた。次に、第3の問題点について説明する。タイムパーティショニング機能を備える従来技術では、複数のタイムパーティション内のタスクが協調して処理を行う場合には、パーティションスケジューラが、タイムリソースに関する実行時間を保証している。しかし、複数のタイムパーティション内のタスクに関して、それらタスク間で共有化しなければならないデータを、どのようにして共有化するかが問題となる。一般的には、データの共有化には共有メモリが利用されることが多いが、共有メモリへのアクセス中にタイムパーティション切り替えが発生してロックしてしまった場合や、共有メモリへのアクセス中にタイムパーティションの切り替えが発生して、さらに、実行対象外のタイムパーティションへと変更されてしまった場合などには、いずれのタスクも共有メモリにアクセスすることができなくなり、システムが動作不能になるおそれがある。図23及び図24を用いて、第3の問題点をより具体的に説明する。図23は、本発明に関連する技術による、パーティションスケジューラの処理手順の具体例を示すフローチャートである。なお、図23では、TP1がデータを共有メモリに書き込んだ場合に、その書き込まれたデータを、TP2およびTP3が利用する場合を例に説明する。まず、TP2において、TP2内の通常制御タスク26が、共有メモリへのアクセスを行っているS181。1Tick経過後S182にパーティションスケジューラが動作し、パーティションスケジューラが、タイムパーティションのスケジューリングを行うS183。スケジューリングにより、TP2からTP1へとタイムパーティションが切り替えられ、TP1において安全監視タスク24の実行が開始されるS184。TP1内で実行される安全監視タスク24は、TP2内で通常制御タスク26が実行することで得られたデータを利用するため、TP2内の通常制御タスク26が、共有メモリにアクセス中であるか判断するS185。共有メモリにアクセス中でなかったS185でNo場合には、安全監視タスク24は、共有メモリへとアクセスし、処理を実行するS186。共有メモリにアクセス中であったS185でYes場合には、安全監視タスク24は、共有メモリへとアクセスすることができず、処理の実行が不可能となるS187。図24に示すように、いずれかのタスクが共有メモリにアクセスしている場合には、他のタスクは共有メモリへアクセスすることができず、処理を続行することができない。このため、場合によっては、通常制御タスク26が属するTP2から、安全制御タスク28が属するTP3へと切り替え処理が実行されないおそれがあり、安全制御を実行できないことが考えられる。従って、複数のタイムパーティションに関して、それらタイムパーティション内のタスク間で共有化しなければならない場合に、上述したような問題を回避可能な技術が求められている。本発明は、上述した知見に基づいてなされたものであって、以下の課題を解決することができる安全制御装置及び安全制御方法を提供することを目的とする。すなわち、第1の課題は、異常発生時に、より迅速に安全制御を実行可能とすることである。また、第2の課題は、各タイムパーティションに割り当てられた時間を考慮した上で、タスクの優先度及び周期性を満たすことのできるスケジューリングを実現可能とすることである。また、第3の課題は、タイムパーティション間でのデータの共有化による失敗を回避可能とすることである。本発明の一態様にかかる安全制御装置は、少なくとも1つのプロセッサを含むハードウェア資源と、a制御対象に関する異常の発生を監視する安全監視プログラム、b通常時における前記制御対象の制御に関連する通常制御プログラム、およびc異常時における前記制御対象の制御に関連する安全制御プログラムに対する前記プロセッサの実行時間の割り当てを制御するためのシステムプログラムと、を備える。前記システムプログラムは、d前記安全監視プログラムに前記実行時間を割り当てる第1のタイムパーティション、e前記通常制御プログラムに前記実行時間を割り当てる第2のタイムパーティション、およびf前記安全制御プログラムに前記実行時間を割り当てる第3のタイムパーティションを含むスケジューリングパターンに従って、次にスケジューリングするタイムパーティションを選択決定するパーティションスケジューラを一部に有する。前記プロセッサは、前記システムプログラムを実行することによって、前記パーティションスケジューラを周期的に動作させる。前記パーティションスケジューラは、前記第1のタイムパーティション内で実行される前記安全監視プログラムまたは前記第2のタイムパーティション内で実行される前記通常制御プログラムによって異常が検知されたことに応じて起動され、前記第1のタイムパーティションまたは前記第2のタイムパーティションから、前記第3のタイムパーティションへの切り替えを行う。上述した本発明の一態様によれば、異常発生時に、より迅速に安全制御を実行することができる。また、前記パーティションスケジューラは、前記第2のタイムパーティション内で実行される前記通常制御プログラムによって異常が検知されたことに応じて強制的に起動され、前記第2のタイムパーティションから前記第3のタイムパーティションへの切り替えを即座に行うようにしてもよい。さらにまた、前記通常制御プログラムは、異常を検知した場合に、前記通常制御プログラムが実行される前記第2のタイムパーティション内において実行可能時間が残されているか判断し、残されている場合には、前記パーティションスケジューラに対してタイムパーティションの切り替え希望を通知し、前記パーティションスケジューラは、前記通常制御プログラムからのタイムパーティションの切り替え希望通知を受けた場合に、次の周期で動作して、前記第2のタイムパーティションから前記第3のタイムパーティションへの切り替えを行うようにしてもよい。また、前記システムプログラムは、前記タイムパーティション内で実行されるプログラムのスケジューリングを行うタスクスケジューラと、を一部に更に有し、前記パーティションスケジューラは、前記タスクスケジューラを動作させ、前記タスクスケジューラによる前記プログラムの切り替え回数に応じて、前記タイムパーティション内での前記プログラムの実行状況を判断するようにしてもよい。さらにまた、前記パーティションスケジューラが、前記タスクスケジューラを有し、前記パーティションスケジューラが、前記タスクスケジューラを動作させるようにしてもよい。また、前記プログラムには、それぞれ優先度が設定されており、前記タイムパーティションの1サイクルが、複数の前記タイムパーティションが含まれ、かつ、複数の前記タイムパーティションのそれぞれに時間が割り当てられて構成されており、前記パーティションスケジューラは、前記プログラムの優先度と、前記プログラムが実行される前記タイムパーティション内で残されている実行可能時間と、に応じて、次に実行するプログラムを決定し、当該決定したプログラムを含むタイムパーティションに切り替えを行うようにしてもよい。これにより、各タイムパーティションに割り当てられた時間を考慮した上で、タスクの優先度及び周期性を満たすことのできるスケジューリングを実現することができる。さらにまた、前記パーティションスケジューラは、前記プログラムの優先度にしたがって、次に実行するプログラムを検索し、当該検索したプログラムが実行される前記タイムパーティション内で実行可能時間が残されている場合に、次に実行するプログラムとして決定するようにしてもよい。また、前記パーティションスケジューラは、前記プログラムが実行される前記タイムパーティションのうちで、実行可能時間が残されているタイムパーティションを検索し、当該検索したタイムパーティション内で優先度に従って、次に実行するプログラムを決定するようにしてもよい。さらにまた、前記安全監視プログラム、前記通常制御プログラム、および前記安全制御プログラムのうちでいずれか2つのプログラムを第1のプログラムおよび前記第2のプログラムとして、前記第1のプログラムおよび前記第2のプログラム間でのデータ通信のために用いられ、複数の共有部分に分割されて構成される共有メモリを更に備え、前記プロセッサは、前記システムプログラムを実行することによって、前記タイムパーティションを選択決定させ、前記タイムパーティション内で実行される前記第1のプログラムが前記共有メモリのいずれかの共有部分にアクセスしている場合には、前記タイムパーティション内で実行される前記第2のプログラムのアクセス先を、前記第1のプログラムがアクセスしてない共有部分であって、かつ、最新の更新データが記憶されている共有部分とするようにしてもよい。これにより、タイムパーティション間でのデータの共有化による失敗を回避可能とすることができる。また、前記プロセッサは、前記システムプログラムを実行することによって、前記タイムパーティションを選択決定させ、前記タイムパーティション内で実行される前記第1のプログラムが前記共有メモリのいずれかの共有部分にアクセスする際に規定の回数以上アクセスしていた場合には、異常であると判断するようにしてもよい。本発明によれば、上述した課題を解決可能な安全制御装置及び安全制御方法を提供することができる。以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。<発明の実施の形態1>本実施の形態にかかる安全制御装置1は、サービスロボットや運輸機器等に搭載されて機能安全確保のための安全制御を実行する。安全制御装置1は、安全関連アプリケーションと非安全関連アプリケーションを同一のコンピュータシステムで実行するよう構成される。図1は、本実施の形態にかかる安全制御装置1の構成例を示すブロック図である。プロセッサ10は、プログラム命令ストリームの取得、命令のデコード、命令のデコード結果に応じた演算処理を行う。なお、図1では、1つのプロセッサ10のみを示しているが、安全制御装置1は、複数のプロセッサ10を有するマルチプロセッサ構成であってもよい。また、プロセッサ10は、マルチコアプロセッサでもよい。プロセッサ10は、システムプログラムとしてのオペレーティングシステムOS100を実行することによりマルチプログラミング環境を提供する。マルチプログラミング環境とは、複数のプログラムを定期的に切り替えて実行したり、あるイベントの発生に応じて実行するプログラムを切り替えたりすることによって、複数のプログラムがあたかも並列実行されているような環境を意味する。マルチプログラミングは、マルチプロセス、マルチスレッド、マルチタスク等と呼ばれる場合もある。プロセス、スレッド及びタスクは、マルチプログラミング環境で並列実行されるプログラム単位を意味する。本実施の形態のプロセッサ10が具備するマルチプログラミング環境は、マルチプロセス環境でもよいし、マルチスレッド環境でもよい。実行用メモリ11は、プロセッサ10によるプログラム実行のために使用されるメモリである。実行用メモリ11には、不揮発性メモリ13からロードされたプログラムOS100及びアプリケーション101~103等、プロセッサ10の入出力データ等が記憶される。なお、プロセッサ10は、プログラムを不揮発性メモリ13から実行用メモリ11にロードすることなく、これらのプログラムを不揮発性メモリ13から直接実行してもよい。具体的には、実行用メモリ11は、SRAMStaticRandomAccessMemory、DRAMDynamicRandomAccessMemory等のランダムアクセス可能な揮発性メモリとすればよい。図1の実行用メモリ11は、論理的な構成単位を示している。すなわち、実行用メモリ11は、例えば、複数のSRAMデバイスの組み合わせ、複数のDRAMデバイスの組み合わせ、又はSRAMデバイスとDRAMデバイスの組み合わせでもよい。I/Oポート12は、外部デバイスとの間のデータ送受信に使用される。例えば、安全制御装置1がサービスロボットに搭載される場合であれば、外部デバイスは、サービスロボット周囲の障害物を計測可能な視覚センサ、サービスロボットを動作させるアクチュエータ等である。不揮発性メモリ13は、電力の供給を受けることなく、実行用メモリ11に比べて安定的に記憶内容を維持することが可能なメモリデバイスである。例えば、不揮発性メモリ13は、ROMReadOnlyMemory、フラッシュメモリ、ハードディスクドライブ若しくは光ディスクドライブ、又はこれらの組み合わせである。不揮発性メモリ13は、OS100及びアプリケーション101~103を格納する。なお、不揮発性メモリ13の少なくとも一部は安全制御装置1から取り外し可能に構成されてもよい。例えば、アプリケーション101~103が格納されたメモリを取り外し可能としてもよい。また、不揮発性メモリ13の少なくとも一部は、安全制御装置1の外部に配置されてもよい。OS100は、プロセッサ10によって実行されることにより、プロセッサ10及び実行用メモリ11及び不揮発性メモリ13等のハードウェア資源を利用して、タスクスケジューリングを含むタスク管理、割り込み管理、時間管理、資源管理、タスク間同期およびタスク間通信機構の提供等を行う。さらに、機能安全の確保に関連する安全監視アプリケーション101及び安全制御アプリケーション103の通常制御アプリケーション102からの独立性を高めるため、OS100は、ハードウェア資源を、時間的および空間的に保護する機能を有する。ここで、ハードウェア資源とは、プロセッサ10、実行用メモリ11、I/Oポート12を含む。このうち、時間的な保護は、プロセッサ10の実行時間という時間的な資源をパーティショニングすることにより行う。具体的に述べると、時間的な保護は、プロセッサ10の実行時間をパーティショニングし、各パーティションタイムパーティションと呼ぶにタスクプロセス又はスレッドを割り当てることにより行う。OS100のスケジューリング機能パーティションスケジューラ21は、各タイムパーティション以下、TPと略称する場合がある。に割り当てられたタスクに対して、プロセッサ10の実行時間を含む資源の利用を保証する。図2は、タイムパーティショニングに関する概念図である。図2の例では、予め定められた1サイクル時間を3つのTP1、TP2及びTP3に分割する例を示している。例えば、1サイクル時間を100Tickとした場合、このうち前半の20TickがTP1、中間の30TickがTP2、後半の50TickがTP3と規定される。また、図2の例では、第1アプリケーションAPL1~第4アプリケーションAPL4が、TP1~TP3のいずれかに割り当てられている。OS100のスケジューリング機能パーティションスケジューラ21は、時間の経過に応じて、TP1~TP3のいずれをアクティブにするかを選択決定する。そして、アクティブなTPに割り当てられているアプリケーションが、プロセッサ10で実行される。一方、空間的な保護は、実行用メモリ11及びI/Oポート12を含む固定的な資源をパーティショニングし、各パーティションリソースパーティションと呼ぶにタスクを割り当てることにより行う。OS100のスケジューリング機能パーティションスケジューラ21は、予め割り当てられたリソースパーティション以下、RPと略称する場合がある。を超えてタスクが他のリソースにアクセスすることを禁止する。図3は、リソースパーティショニングに関する概念図である。図3の例では、2つのRPRP1及びRP2を示している。RP1には、実行用メモリ11及び不揮発性メモリ13の一部A領域と、I/Oポート12の一部ポートAが割り当てられている。また、RP2には、実行用メモリ11及び不揮発性メモリ13の他の一部B領域と、I/Oポート12の他の一部ポートBが割り当てられている。RP1からはRP2に割り当てられたリソースへのアクセスが禁止され、RP2からはRP1に割り当てられたリソースへのアクセスが禁止される。なお、全てのリソースがいずれかのRPに排他的に割り当てられる必要はない。つまり、複数のRPによって共有されるリソースがあってもよい。例えば、サービスロボットの安全制御を行う場合、アクチュエータには、通常制御アプリケーション101及び安全制御アプリケーション102の双方からアクセスできる必要がある。よって、通常制御アプリケーション101が属するRPと安全制御アプリケーション102が属するRPによって、アクチュエータを制御するためのI/Oポートを共有するとよい。図1に戻り説明を続ける。アプリケーション101~103は、OS100及びプロセッサ10によって提供されるマルチプログラミング環境で実行される。このうち、安全監視アプリケーション101は、通常制御アプリケーション102の実行状況の監視と、安全制御アプリケーション103の実行状況の監視と、I/Oポート12への入出力データの監視と、をプロセッサ10に実行させるための命令コードを含む。さらに、安全監視アプリケーション101は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。つまり、安全監視アプリケーション101は、安全関連アプリケーションである。また、通常制御アプリケーション102は、サービスロボット等の制御対象に通常の機能動作を行わせるための制御手順をプロセッサ10に実行させるための命令コードを含む。さらに、通常制御アプリケーション102は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。つまり、通常制御アプリケーション102は、非安全関連アプリケーションである。また、安全制御アプリケーション103は、何らかの異常が検出された場合に対応して、機能安全を確保するために定められた制御手順をプロセッサ10に実行させるための命令コードを含む。さらに、安全制御アプリケーション103は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。つまり、安全制御アプリケーション103は、安全関連アプリケーションである。リセット回路14は、OS100からの信号に基づき、マイクロコントローラ15のリセットを行う。リセット回路14を用いたマイクロコントローラ15のリセット機構については後述する。続いて以下では、パーティションスケジューラ21と、アプリケーション101~103の起動により生成されるタスクと、の関係について、図4を用いて説明する。図4は、OS100によって提供されるマルチプログラミング環境で起動される、パーティションスケジューラ21とタスク24、26、28との関係を示す図である。マイクロコントローラ15は、プロセッサ10、実行用メモリ11、I/Oポート12、不揮発性メモリ13等を含む。なお、図4では、マイクロコントローラ15の外部にリセット回路14を備える構成を例示しているが、マイクロコントローラ15の内部にリセット回路14を含む構成としてもよい。マイクロコントローラ15には、外部のクロック源からのクロック信号が供給され、プロセッサ10等は、このクロック信号に基づく所定のタイマー周期で動作する。本実施の形態では、所定のタイマー周期を、1Tickであるとして説明する。このため、プロセッサ10によりOS100が実行されることで、パーティションスケジューラ21が1Tickごとに動作すると共に、各TP内で、タスクスケジューラ23、25、27およびタスク安全監視タスク24、通常制御タスク26、安全制御タスク28が、1Tickごとに動作する。パーティションスケジューラ21は、1Tickごとに動作し、TPの切り替えパーティションスケジューリングを行う。パーティションスケジューラ21は、次の1Tickの間にTP1~TP3のいずれをアクティブにするかを選択決定する。さらに、パーティションスケジューラ21は、選択したTPに関するタスクスケジューラの動作を開始させる。パーティションスケジューラ21によるパーティションスケジューリングについて具体的に述べると、パーティションスケジューラ21は、スケジューリングテーブル22を参照し、TPの設定を定めたスケジューリングパターンに従って、パーティションスケジューリングを行う。スケジューリングテーブル22は、TPの切り替え順序およびタイミングを規定したスケジューリングパターンを保持している。なお、スケジューリングテーブル22は、少なくとも2つの異なるスケジューリングパターンを保持している。1つは、安全監視タスク24による異常検知が行われていない場合つまり通常時に適用されるスケジューリングパターンである。もう1つは、安全監視タスク24によって異常が検知された場合に適用されるスケジューリングパターンである。以下では、通常時に適用されるスケジューリングパターンを通常制御スケジューリングパターンと呼ぶ。また、異常検知時に適用されるスケジューリングパターンを安全制御スケジューリングパターンと呼ぶ。図5Aは、通常制御スケジューリングパターンの具体例を示している。図5Aでは、通常制御タスク26が属するTP2が1サイクル時間の前半T1に割り当てられている。また、安全監視タスク24が属するTP1が1サイクル時間の後半T2に割り当てられている。図5Aのスケジューリングパターンによれば、通常制御タスク26と安全監視タスク24が繰り返しスケジューリングされる。図5Bは、安全制御スケジューリングパターンの具体例を示している。図5Bでは、安全制御タスク28が属するTP3が1サイクル時間の前半T3に割り当てられている。また、安全監視タスク24が属するTP1が1サイクル時間の後半T4に割り当てられている。図5Bのスケジューリングパターンによれば、安全制御タスク28と安全監視タスク24が繰り返しスケジューリングされる。図4に戻り説明を続ける。タスクスケジューラ23、25、27は、それぞれが属するTP内でのタスクのスケジューリングを行う。各TP内でのタスクのスケジューリングには、一般的な優先度ベースのスケジューリングを適用すればよい。なお、図4では、各TPはそれぞれ1つのタスクのみを含むものとして図示しているが、実際には、1以上のタスクが含まれている。例えば、通常制御用のTP2内には、通常制御タスクA及び通常制御タスクBの2つのタスクが含まれていてもよい。安全監視タスク24は、安全監視アプリケーション101の起動によって生成されるタスクである。図4の例では、安全監視タスク24は、TP1及びRP1に割り当てられている。安全監視タスク24は、非安全関連アプリケーションである通常制御タスク26の実行状況の監視と、安全関連アプリケーションである安全制御タスク28の実行状況の監視と、I/Oポート12の入出力データを監視する。さらに、安全監視タスク24は、タスクの実行状況を、パーティションスケジューラ21へ通知する。通常制御タスク26は、通常制御アプリケーション102の起動によって生成されるタスクである。図4の例では、通常制御タスク26は、TP2及びRP2に割り当てられている。通常制御タスク26は、サービスロボット等の制御対象に通常の機能動作を行わせるための制御を行う。さらに、通常制御タスク26は、タスクの実行状況を、パーティションスケジューラ21へ通知する。安全制御タスク28は、安全制御アプリケーション103の起動によって生成されるタスクである。図4の例では、安全制御タスク28は、TP3及びRP3に割り当てられている。安全制御タスク28は、何らかの異常が検出された場合に対応して、機能安全を確保するために定められた制御を行う。さらに、安全制御タスク28は、タスクの実行状況を、パーティションスケジューラ21へ通知する。なお、各タスクからパーティション21へと結果を通知する具体的な構成としては、様々な手法を採用することができる。例えば、タスクがOS100のシステムコールサービスコールを呼び出し、OS100を介して、パーティションスケジューラ21に結果を通知することができる。また、例えば、タスクの実行状況に関するフラグを実行用メモリ11に格納するものとして、タスクがその実行状況に応じてフラグの値を設定し、パーティションスケジューラ21がフラグの設定値に応じてタスクの実行状況を判断することもできる。上述したように、パーティションスケジューラ21が1Tickごとに動作し、TP1~TP3のいずれをアクティブにするかを選択決定する。さらに、パーティションスケジューラ21が、選択したTPに関するタスクスケジューラの動作を開始させる。そして、タスクスケジューラ23、25、27が動作を開始することでタスクのスケジューリングが行われ、プロセッサ10が、タスクスケジューラ23、25、27によりスケジューリングされた順序に従って、TP内でのタスクを実行していく。これによって、アクティブなTPに割り当てられているアプリケーションが、プロセッサ10で実行される。続いて以下では、パーティションスケジューラ21によるパーティションスケジューリングについて、図6を用いて説明する。図6は、パーティションスケジューラ21の処理手順の具体例を示すフローチャートである。なお、図6では、通常制御スケジューリングパターン例えば図5Aまたは安全制御スケジューリングパターン例えば図5Bに従って、スケジューリングを実行する場合を例に説明する。すなわち、TP2またはTP3に続く次のTPはTP1であり、かつ、TP2での異常がTP1で検知された場合に、TP1からの結果を受けて次に選択決定されるTPはTP3である場合を例に説明する。まず、1Tickごとに動作するパーティションスケジューラ21が、TPXのタスクスケジューラを動作させるS11。ここで、変数XはTPの番号を示し、Xは1以外の値とする。すなわち、S11では、安全監視用のTP1を除いた、TP2又はTP3のいずれかを動作させる。S11で動作を開始したTPXのタスクスケジューラは、TPX内のタスクを優先度に応じて実行するS12。そして、1Tickが経過すると、パーティションスケジューラ21が、TPのスケジューリングを開始するS13。すなわち、パーティションスケジューラ21は、スケジューリングパターンに従って、次の1Tickの間にいずれのTPをアクティブにするかを選択決定する。パーティションスケジューラ21は、次にアクティブにするTPを変更しないS14でNo場合には、S11に戻り、同一のTPXについての動作を継続させる。このため、TPXの切り替えタイミングとなるまでの間、S11~S14までの処理が繰り返される。パーティションスケジューラ21は、次にアクティブにするTPを変更するS14でYes場合には、その変更するタイムパーティションのタスクスケジューラを動作させるS15。ここでは、TP1のタスクスケジューラを動作させる。そして、TP1のタスクスケジューラ23が、TP1内のタスクを優先度に応じて実行するS16。TP1で実行される安全監視タスク24は、通常制御タスク26の実行状況の監視と、I/Oポート12の入出力データの監視を行い、これらが正常であるか判断するS17。判断の結果、異常であると判断したS18でNo場合、安全監視タスク24は、パーティションスケジューラ21に対して、その結果を通知するS19。1Tickが経過すると、パーティションスケジューラ21が、再びスケジューリングを開始するS20。パーティションスケジューラ21は、スケジューリングパターンに従って、次の1Tickの間にいずれのTPをアクティブにするかを選択決定し、次にアクティブにするTPを変更しないS21でNo場合には、S15に戻り、TP1についての動作を継続させる。パーティションスケジューラ21は、次にアクティブにするTPを変更するS21でYes場合には、さらに、S19でのTP1からの通知結果に応じて、TPXが正常であったか否かを判断するS22。判断の結果、異常であったS22でNo場合、パーティションスケジューラ21は、次の1Tickの間にアクティブにするTPとして、TP3を選択決定するS23。判断の結果、正常であったS22でYes場合、パーティションスケジューラ21は、次の1Tickの間にアクティブにするTPとして、TP1とTP3以外のTPXを選択決定するS24。図6で示した処理に関して、パーティションスケジューリングの具体例を説明する。まず、図5Aに例示した通常制御スケジューリングパターンに従って、S11においてスケジューリングを開始した場合を説明する。この場合、S11ではTPX=TP2として開始し、S12~S14にかけてもTPX=TP2のままである。そして、S15でTP2からTP1へと変更され、S15~S21にかけてTP1のままである。S18でTP2に関する実行状況データ入出力が正常であると判定されていた場合には、S24では、TPX=TP2となるつまり、TP2から開始する通常制御スケジューリングパターンが継続される。。一方で、S18でTP2に関する実行状況データ入出力が異常であると判定されていた場合には、S23で、TPX=TP3となるつまり、TP3から開始する安全制御スケジューリングパターンに切り替わる。。また、図5Bに例示した安全制御スケジューリングパターンに従って、S11においてスケジューリングを開始した場合を説明する。この場合、S11ではTPX=TP3として開始し、S12~S14にかけてもTPX=TP3のままである。そして、S15でTP3からTP1へと変更され、S15~S21にかけてTP1のままである。S18でTP3に関する実行状況データ入出力が正常であると判定されていた場合には、S24では、TPX=TP2となるつまり、TP2から開始する通常制御スケジューリングパターンに切り替わる。。一方で、S18でTP3に関する実行状況データ入出力に異常があると判定されていた場合には、S23で、TPX=TP3となるつまり、TP3から開始する安全制御スケジューリングパターンが継続される。。なお、上述の例では、スケジューリングパターンとして、3つのTP安全監視用のTP1、通常制御用のTP2、安全制御用のTP3のみを組み合わせた場合を例に説明したが、TP2のような通常制御用パーティションや、TP3のような安全制御用パーティションについては、それぞれ複数個存在するものとしてもよい。例えば、2つの通常制御用のTP2及びTP4と、安全監視用のTP1と、2つの安全制御用のTP3及びTP5と、が存在し、これら5つのTPTP1~TP5を組み合わせてスケジューリングパターンを構成してもよい。この場合、S23では、パーティションスケジューラ21が、TPXに関する実行状況データ入出力の異常状態の種類を判定し、その異常種類に応じて、安全制御用のTP3またはTP5のいずれかを選択すればよい。また、S24では、通常制御用のTP2またはTP4のいずれかを選択すればよい。上述したように、本実施の形態では、OS100は、安全監視用のTP1からの通知、または、各TPからの通知に応じて、次にアクティブとするパーティションを選択決定するパーティションスケジューラ21を備えている。パーティションスケジューラ21は、各TP内で実行されるタスクとは独立して、所定のタイマー周期で動作する。所定のタイマー周期で独立して動作するパーティションスケジューラ21がパーティションスケジューリング機能を有することで、以下の効果を奏することができる。まず、一般的に、通常制御タスク26の実行時間を十分に確保するために、安全監視タスク24の実行時間を可能な限り短縮したいという要求がある。従来技術例えば特許文献1では、安全監視タスク24が、通常制御タスク26の実行状況の監視と、I/Oポート12の入出力データの監視と、に加えて、スケジューリングパターンの選択決定についても行っていたために、この選択決定に要する実行時間についても、安全監視タスク24が属するTP2に関して割り当てておく必要があった。また、機能安全の確保を保証するためには、基本的には、安全監視タスク24と通常制御タスク26とが交互に実行される必要がある。このため、従来技術では、通常制御タスク26の実行に伴って安全監視タスク24によるスケジューリングパターンの選択決定までもが毎回実行されることになり、複数のサイクルにわたって合計すると、多くの実行時間を、安全監視タスク24によるスケジューリングパターンの選択決定のために要することになってしまう。これに対して、本実施の形態によれば、安全監視タスク24自体は、スケジューリングパターンの選択決定を実行する必要がない。また、パーティションスケジューラ21がスケジューリングパターンの選択決定に要する実行時間は短時間で済む。このため、従来技術と比較して、安全監視用のTP1はより短時間の割り当てで済み、かつ、通常制御用のTP2にはより長時間の割り当てを行うことができるという効果を奏する。さらに、図6で例示した処理では、パーティションスケジューラ21が、TP1からの結果通知に応じて、安全制御用のTP3を選択決定するS23、または、通常制御用のTP2を選択決定するS24ものとして説明したが、本発明はこれに限定されない。例えば、安全監視用のTP1のみからパーティションスケジューラ21に対して結果を通知する構成に代えて、TP1~TP3のそれぞれからパーティションスケジューラ21に対して実行状況結果を通知する構成とし、パーティションスケジューラ21が、各TPからの結果通知に応じて、安全制御用のTP3を選択決定するものとしてもよい。各TPとは独立に動作するパーティションスケジューラ21が、全てのTPから結果通知を受ける構成を採用することで、パーティションスケジューラ21は、全てのTPに関する状況を一元的に把握することができる。このため、例えば、パーティションスケジューラ21が、各TPからの結果通知に基づいて各TPの状況を考慮した上で、実行が不要なTPについてはスキップするなどの判断を実行することができる。従って、実行が不要なタイムパーティションのみを意図的にスキップすることができるという効果を奏する。また、例えば、パーティションスケジューラ21が、安全監視用のTP1からの結果通知に基づいて各TPの状況を考慮した上で、正常状態にあるTPのみから次のパーティションを決定選択することができる。従って、従来技術と比較して、より正確なパーティションスケジューリングを実現することができるという効果を奏する。続いて以下では、リセット回路14を用いたマイクロコントローラ15のリセット機構について、図7及び図8を用いて説明する。図7及び図8は、リセット回路14を用いたマイクロコントローラ15のリセット処理手順の具体例を示すフローチャートである。本実施の形態では、1Tickごとに動作するパーティションスケジューラ21が、マイクロコントローラ15のリセット機能を有している。パーティションスケジューラ21は、OS100における異常を検出した場合に、リセット回路14と連動して異常処置を行う。リセット回路14は、パーティションスケジューラ21からの信号に基づき、マイクロコントローラ15のリセットを行う。まず、図7を用いて、リセット回路14を用いたマイクロコントローラ15のリセット処理手順の具体例について説明する。図7に示す処理では、パーティションスケジューラ21からリセット指示信号を受けた場合に、リセット回路14がマイクロコントローラ15をリセットするものである。なお、図7では、TPXは、TP1とTP3以外のTPである。まず、S31~S33では、パーティションスケジューラ21がTPXの動作を開始させることで、次にアクティブにするTPが変更されるまでの間、TPXに関する処理が実行される。そして、パーティションスケジューラ21がTP1のタスクスケジューラ23の動作を開始させたS34後に、TP1に属する安全監視タスク24が、TPXに関する処理入出力が正常であったかを判断するS35。判断の結果、正常であったS35でYes場合、S31に戻り、同一のTPXについての動作が継続される。判断の結果、異常であったS35でNo場合、TP1に属する安全監視タスク24が、TPXでの異常がTP3に属する安全制御タスク28で対応可能な異常であるかを判断するS36。TP3で対応可能な異常ではなかったS36でNo場合、TP1に属する安全監視タスク24が、パーティションスケジューラ21に対して、緊急停止を有する異常であることを通知するS37。TP1に属する安全監視タスク24からの通知を受けたパーティションスケジューラ21が、リセット回路14にリセット指示信号を出力し、リセット指示信号を受けたリセット回路14がマイクロコントローラ15のリセットを行うS38。TP3で対応可能な異常であったS36でYes場合、TP1に属する安全監視タスク24は、パーティションスケジューラ21に対して、TPXが異常であることを通知するS39。TP1からの通知を受けたパーティションスケジューラ21は、TPXからTP3へと切り替えるS40。次に、図8を用いて、リセット回路14を用いたマイクロコントローラ15のリセット処理手順の他の具体例について説明する。図8に示す処理では、パーティションスケジューラ21からリセット回路14に定期的に信号を送信し、リセット回路14は、パーティションスケジューラ21からの送信信号が途絶えた場合に、マイクロコントローラ15をリセットするものである。なお、図8では、TPXは、TP1とTP3以外のTPである。図7のS31~S35にかけての処理と比較して、図8のS53では、パーティションスケジューラ21が1Tickごとに動作する点が明確化され、また、S54及びS55で、パーティションスケジューラ21がリセット回路14に定期的に信号を送信する点で異なっている。その他の図8に示すS51~S57にかけての処理は、図7に示したS31~S35にかけての処理と基本的に同一である。また、図7のS36~S40にかけての処理と比較して、図8のS60では、パーティションスケジューラ21がリセット回路14への送信信号を停止し、S63では、パーティションスケジューラ21がリセット回路14への信号を送信する点で異なっている。さらに、図8のS61では、パーティションスケジューラ21からの送信信号が途絶えたことに応じて、リセット回路14がマイクロコントローラ15のリセットを行う点で異なっている。その他の図8に示すS58~S64にかけての処理については、図7に示したS36~S40にかけての処理と基本的に同一である。さらに、図8のS71及びS72に示すように、S51~S64にかけての処理と並行して、パーティションスケジューラ21において不具合が発生した場合、または、パーティションスケジューラ21からリセット回路14への信号線において不具合が発生した場合には、パーティションスケジューラ21からリセット回路14への送信信号が伝達されなくなる。この場合にも、パーティションスケジューラ21からの送信信号が途絶えたことに応じて、リセット回路14がマイクロコントローラ15のリセットを行うS61。図8に示した処理によれば、パーティションスケジューラ21からリセット回路14へ意図的にリセット指示を行う場合に加えて、パーティションスケジューラ21自身が何らかの原因により正常に動作しない場合、または、パーティションスケジューラ21からリセット回路14へ送信信号を伝達する信号線に不具合が発生した場合においても、マイクロコントローラ15のリセットを確実に行うことができる。また同時に、TPの切り替えが、1Tickごとに正常に実行されているかについても保証することができる。なお、図7及び図8では、パーティションスケジューラ21は、TP1からの結果通知に応じて、リセット回路14へのリセット指示信号の出力、または、リセット回路14への送信信号の停止を行うものとして説明したが、TP1~TP3のいずれかからの結果通知に応じて、リセット回路14へのリセット指示信号の出力、または、リセット回路14への送信信号の停止を行うものとしてもよい。<発明の実施の形態2>本実施の形態にかかる安全制御装置は、上述した安全制御装置1の変形である。本実施の形態にかかる安全制御装置の全体的な構成は、図1に示した安全制御装置1の構成と同様とすればよい。また、本実施の形態にかかる安全制御装置が有するOSによって提供されるタスク実行環境は、図4に示したタスク実行環境の構成と同様とすればよい。本実施の形態では、通常制御タスク26の実行中に緊急処置が必要な異常が発生した場合に、通常制御タスク26が異常発生に応じて即座にパーティションスケジューラ21を強制起動させ、パーティションスケジューラ21が、安全制御タスク28が実行されるタイムパーティションへと、タイムパーティションの切り替えを行うことを特徴とする。なお、緊急処置が必要な異常としては、例えば、サービスロボットや運輸機器等の転倒を招きかねない異常や、故障発熱により火災を招きかねない異常などが含まれる。次に、図9及び図10を用いて、本実施の形態にかかる安全制御装置1による処理について、より詳細に説明する。なお、図9及び図10では、通常制御タスク26が実行されるタイムパーティションは、複数個存在するものとしてもよい。図9は、パーティションスケジューラの処理手順の具体例を示すフローチャートである。まず、TP2内で通常制御タスク26の実行中に異常が発生S81した場合、通常制御タスク26は、異常発生に応じて、パーティションスケジューラ21を即座に呼び出すS82。具体的には、通常制御タスク26は、緊急を要する異常発生を検知した場合、パーティションスケジューラ21に対して起動指示を行う。パーティションスケジューラ21は、通常制御タスク26からの呼び出しに応じて、強制起動されるS82。なお、通常制御タスク26がパーティションスケジューラ21を強制起動させる構成としては、例えば、OS100のシステムコールを利用すればよい。パーティションスケジューラ21は、通常制御タスク26が実行されていたTP2から、安全制御タスク28が実行されるTP3へと、タイムパーティションを切り替えるS84。タイムパーティションがTP3へと切り替えられたことによって、TP3に属する安全制御タスク28が実行される。このため、TP2にもともと割り当てられていたタイムリソースのうちで残りのタイムリソースが、安全制御タスク28の実行に利用されることになる。安全制御タスク28による処理が終了した場合には、パーティションスケジューラ21は、スケジューリングパターンに従って、パーティションスケジューリングを新たに開始するS85。ここで、安全制御タスク28による処理が終了した場合には、例えば、安全制御タスク28が処理終了の旨をパーティションスケジューラ21に対して通知することで、パーティションスケジューラ21は、安全制御タスク28による処理が終了したかを判断することができる。また、パーティションスケジューラ21は、安全制御タスク28による処理が終了した場合には、スケジューリングパターンに従って、新たなタイムパーティションに切り替えるものとしてもよいし、S84でTP3に切り替えられるより前に実行していたTP2に関して、TP2の後続に予定されていたタイムパーティションに戻るように、タイムパーティションを切り替えるようにしてもよい。図10は、異常発生時におけるタイムパーティション切り替えの具体例を示す図である。なお、図10では、通常制御用の2つのタイムパーティションTP2A及びTP2Bが存在する場合を例に説明する。まず、図10の上図に示すように、TP2Aにおいて異常が発生した場合、実行中の通常制御タスク26は、パーティションスケジューラ21を即座に呼び出す。すると、図10の下図に示すように、通常制御タスク26からの呼び出しに応じて、パーティションスケジューラ21が強制的に起動され、パーティションスケジューラ21が、安全制御タスク28を実行するTP3へと切り替えを行う。そして、パーティションスケジューラ21は、安全制御タスク28が実行されて終了した場合には、TP2Bへと切り替えるように、タイムスケジューリングを行う。このようにして、本実施の形態によれば、異常発生時おいて、即座に異常処置を行うことができる。<発明の実施の形態3>本実施の形態は、上述した実施の形態2に係る安全制御装置1の変形である。このため、上述した実施の形態2と同様の構成については説明を省略し、以下では、実施の形態2と異なる構成を中心として説明する。上述した実施の形態2によれば、通常制御タスク26を実行中のタイムパーティション内の途中で、安全制御タスク28を実行するタイムパーティションへと強制的に切り替えるため、異常発生に対する反射性は高いものの、以後のスケジューリングにおけるタイムパーティションの切り替えタイミングにずれが生じてしまう可能性がある。例えば図10の下図に示したように、パーティションTP2の途中でTP3へと切り替えた結果、TP2Bにおいて通常制御タスク26が実行する制御のタイミングが、もともと予定したタイミングとずれてしまう可能性がある。その結果、装置による制御が不安定になる可能性があるつまり、反射と不安定はトレードオフの関係である。。そこで、本実施の形態では、通常制御タスク26の実行中に緊急処置が必要な異常が発生した場合に、異常発生に応じて即座にパーティションスケジューラ21を強制起動させることに代えて、同一のタイムパーティション内で安全制御タスク28を実行できる程度にタイムリソースが残っているかを確認した上で、1Tick経過した次のタイミングで、パーティションスケジューラ21によって、安全制御タスク28が実行されるタイムパーティションへと切り替えることを特徴とする。次に、図11及び図12を用いて、本実施の形態にかかる安全制御装置1による処理について、より詳細に説明する。なお、図11及び図12では、通常制御タスク26が実行されるタイムパーティションは、複数個存在するものとしてもよい。図11は、パーティションスケジューラの処理手順の具体例を示すフローチャートである。なお、図11では、通常制御スケジューリングパターン例えば図5Aに従って、パーティションスケジューリングを実行している場合に、TP2において異常が発生した場合を例に説明する。まず、TP2内で通常制御タスク26の実行中に異常が発生S91した場合、通常制御タスク26は、TP2に割り当てられていたタイムリソースのうちで残りのタイムリソースを取得し、安全制御タスク28の実行に利用可能な程度、タイムリソースが残っているか判断するS92。タイムリソースが残っているかを判断する構成としては、例えば、タイムパーティションに割り当てられた総Tick数と、各タスクの実行に要する実行Tick数と、パーティションの開始時からの経過Tick数と、に基づいて、残りのタイムリソースを判定する手法を採用することができる。具体的に述べると、タイムパーティションに割り当てられた総Tick数と、各タスクの実行に要する実行Tick数と、を示す情報を、実行用メモリ11に予め記憶する。また、パーティションスケジューラ21は、パーティションの開始時からの経過Tick数をカウントする。そして、各タスクは、パーティションスケジューラ21に総Tick数と経過Tick数を問い合わせ、総Tick数から経過Tick数を減算することで、同一のタイムパーティション内における残りのTick数を計算することができる。そして、この減算して求めたTick数が、実行Tick数を上回っているか否かにより、タイムリソースが残っているか否かを判断することができる。本実施の形態では、通常制御タスク26は、TP2における残りのタイムリソースとして、1Tick以上が残されているかを判断する。TP3で利用可能なタイムリソースが残っていたS92でYes場合、通常制御タスク28は、1Tick経過後の次のタイミングでタイムパーティションの切り替えを行うように、パーティションスケジューラ21に対して切り替え希望を通知するS93。パーティションスケジューラ21は、1Tick経過後に起動しS94、通常制御タスク26からの切り替え希望に応じて、通常制御タスク26が実行されていたTP2から、安全制御タスク28が実行されるTP3へと、タイムパーティションを切り替えるS95。タイムパーティションがTP3へと切り替えられたことによって、TP3に属する安全制御タスク28が実行される。安全制御タスク28による処理が終了した場合には、パーティションスケジューラ21は、スケジューリングパターンに従って、パーティションスケジューリングを新たに開始するS96。なお、TP3で利用可能なタイムリソースが残っていなかったS92でNo場合、通常制御タスク28によるパーティションスケジューラ21へのパーティションの切り替え希望の通知は行われず、TP2の後続のTP1へと切り替わるタイミングとなるまでの間、TP2内での通常制御タスク28の実行が継続される。図12は、異常発生時におけるタイムパーティション切り替えの具体例を示す図である。なお、図12では、通常制御用の2つのタイムパーティションTP2A及びTP2Bが存在する場合を例に説明する。まず、図12の上図に示すように、TP2Aにおいて異常が発生した場合、実行中の通常制御タスク26は、TP2Aの残りのタイムリソースを考慮した上で、パーティションスケジューラ21に対してタイムパーティションの切り替えを依頼する。すると、図12の下図に示すように、次の1Tickで起動したパーティションスケジューラ21は、通常制御タスク26からの依頼に応じて、安全制御タスク28を実行するTP3へと切り替えを行う。そして、パーティションスケジューラ21は、安全制御タスク28が実行されて終了した場合には、TP2Aへと切り替えるように、タイムスケジューリングを行う。このようにして、TP2Bに関してタイムパーティションの開始タイミングを変更せずに済むため、TP2Bにおいて実行される通常制御タスク26に関して、制御周期がずれることで不安定になることを回避することできる。このようにして、本実施の形態によれば、異常発生時おいて、迅速に異常処置を行うことができる。また、本実施の形態によれば、異常発生時おいて、TP2からTP3への切り替えをTickのタイミングで行うため、実施の形態2と比較して反射性は低下するものの、安定性を維持することができる。<発明の実施の形態4>本実施の形態にかかる安全制御装置は、上述した安全制御装置1の変形である。本実施の形態にかかる安全制御装置の全体的な構成は、図1に示した安全制御装置1の構成と同様とすればよい。また、本実施の形態にかかる安全制御装置が有するOSによって提供されるタスク実行環境は、図4に示したタスク実行環境の構成と同様とすればよい。実施の形態1では、パーティションスケジューラ21と、各タイムパーティションにおけるタスクスケジューラ23、25、27と、がOS100に備えられており、パーティションスケジューラ21が、タイムパーティションおよびリソースパーティションの管理を実行することができる。しかし、パーティションスケジューラ21は、各パーティションにおいて、タスクスケジューラによるタスクの切り替えが正常に実施されているのかについては把握していない。また、複数の安全監視タスク24が存在するような場合には、いずれかの安全監視タスク24が実行されずに監視漏れが発生することも考えられる。従って、パーティションスケジューラ21は、タイムパーティション内でのタスクの切り替え回数を把握可能とし、また、安全監視タスク24に関する監視漏れの防止を可能とすることが求められる。本実施の形態では、各タイムパーティションにおいて、タスクスケジューラが、タスクの切り替え回数を保存する。そして、パーティションスケジューラ21が、パーティションを切り替える際に、タスクスケジューラにより保存されたタスクの切り替え回数を参照し、その切り替え回数が規定回数であるか否かに応じて、各タイムパーティションでのタスクの実行状況を判断する。これにより、パーティションスケジューラ21が、タイムパーティションおよびリソースパーティションの管理を行い、各タイムパーティションにおけるタスクスケジューラ23、25、27が、タスクの実行を行い、さらに、パーティションスケジューラ21が、タスクスケジューラによるタスクの切り替えが正常に実施されているのかを把握することができる。なお、本実施の形態は、例えば、タスクの切り替えタイミングが高速であるサービスロボット等や、タスクの数が多いサービスロボット等に関して、そのようなサービスロボット等に搭載される安全制御装置1に適用すると好適である。次に、図13を用いて、本実施の形態にかかる安全制御装置1による処理について、より詳細に説明する。なお、図13では、通常制御タスク26が実行されるタイムパーティションは、複数個存在するものとしてもよい。図13は、パーティションスケジューラの処理手順の具体例を示すフローチャートである。なお、図13では、通常制御スケジューリングパターン例えば図5Aに従って、パーティションスケジューリングを実行している場合を例に説明する。また、TPXは、TP1又はTP2のいずれかであるとする。まず、パーティションスケジューラ21が、TPXのタスクスケジューラを動作させるS101。タスクスケジューラは、優先度に応じてタスクを実行するS102。タスクスケジューラは、実行したタスクに関して、タスクを何度切り替えたかを示す切り替え回数をカウントし、実行用メモリ11に保存するS103。パーティションスケジューラ21は、パーティション切り替えを実施しようとする際に、S103で保存されたタスクの切り替え回数を確認するS104。パーティションスケジューラ21は、タスクの切り替え回数が、規定回数であったかを判断するS105。規定回数であったS105でYes場合には、パーティションスケジューラ21は、パーティションを切り替えずに、S101へと戻り処理を続ける。なお、タスクの切り替え回数についての規定回数は、ユーザによって適当な値が予め設定されている。タスクの切り替え回数が規定回数でなかったS105でNo場合には、パーティションスケジューラ21は、タスクが実行されていたタイムパーティションが、安全監視タスク24が実行されるTP2であったかを判断するS106。TP2でなかったS106でNo場合、パーティションスケジューラ21は、タイムパーティションをTP3に切り替えるS107。TP2であったS106でYes場合、パーティションスケジューラ21は、マイクロコントローラ15の動作を停止させるように、リセット回路14を動作させるS108。なお、図13では、TPXは、TP1又はTP2のいずれかである場合を例に説明したが、TPXがTP3であり、かつ、TP3においてタスクの切り替え回数が規定回数でない場合においても、パーティションスケジューラ21が、マイクロコントローラ15の動作を停止させるように、リセット回路14を動作させるものとしてもよい。以上に説明した本実施の形態によれば、パーティションスケジューラ21は、タイムパーティション内でのタスクの切り替え回数を把握することができるため、切り替え回数に応じた適切なパーティションの切り替えを実施することができる。さらに、安全監視タスク24に関する監視漏れを防止することもできる。<発明の実施の形態5>本実施の形態にかかる安全制御装置は、上述した安全制御装置1の変形である。本実施の形態にかかる安全制御装置の全体的な構成は、図1に示した安全制御装置1の構成と同様とすればよい。また、本実施の形態にかかる安全制御装置が有するOSによって提供されるタスク実行環境は、図4に示したタスク実行環境の構成と同様とすればよい。本実施の形態では、タイムパーティションの1サイクルが、複数のタイムパーティションを含み、かつ、複数のタイムパーティションのそれぞれに時間が割り当てられて構成されている。パーティションスケジューラ21は、タイムパーティションおよびタスクをスケジューリングする際に、まずは、優先度に従ってタスクを検索し、そのタスクが実行されるタイムパーティションに関して残されたタイムリソースを考慮した上で、次に実行するタスクを決定することを特徴とする。次に、図14を用いて、本実施の形態にかかる安全制御装置1による処理について、より詳細に説明する。図14は、パーティションスケジューラの処理手順の具体例を示すフローチャートである。なお、図14では、Ttx、pyとは、タイムパーティションtx内で実行されるタスクpyを意味する。また、図14では、TP1におけるタスク3が実行中S111であるとして、以後のサイクルに含まれるタイムパーティション及びタスクをスケジューリングする場合を例に説明する。また、図14では、パーティションスケジューラ21が起動中の処理を示している。まず、1Tickが終了S112した場合に、パーティションスケジューラ21は、制御周期が終了したかを判断するS113。具体定期には、パーティションスケジューラ21は、1サイクル中に含まれる全てのタイムパーティションに関して、それぞれ割り当てられたタイムリソースを全て使い果たしたかを判断する。例えば、1サイクル中にTP1とTP2の2つのタイムパーティションが含まれ、TP1には10Tickが、TP2には20Tickが割り当てられていた場合に、TP1の実行に関して10Tickが終了し、かつ、TP2の実行に関して20Tickが終了したかを判断する。制御周期が終了していたS113でYes場合、パーティションスケジューラ21は、全てのタイムパーティションに対して、タイムリソースを再付与するS114。パーティションスケジューラS115は、以後の1サイクルについてのスケジューリングを行うため、以後の1サイクルに含まれる全てのタスクを検索したか判断するS115。全てのタスクを検索していないS115でNo場合、パーティションスケジューラ21は、探索されたタスクが、現在の候補タスクよりも優先度が高いタスクであるかを判断するS117。図14では、検索されたタスクをTtx,pyとして、現在の候補タスクTt3,p1よりも優先度が高いタスクであるかを判断する。検索されたタスクTtx,pyの優先度が現在の候補タスクよりも優先度が高かったS118でYes場合、パーティションスケジューラ21は、検索されたタスクTtx,pyが実行されるタイムパーティションに関して、タイムリソースが余っているかを判断するS118。タスクTtx,pyのタイムパーティションに関してタイムリソースが余っていたS118でYes場合には、パーティションスケジューラ21は、次に実行するタスクの候補を、Ttx,pyとして決定するS119。このようにして、S115~S119における処理によって、最も優先度が高く、かつ、そのタスクの属するタイムパーティションにおいてタイムリソースが余っている場合に、そのタスクが、次に実行するタスクとして決定される。全てのタスクを検索したS115でYes場合、パーティションスケジューラ21は、S119で決定されたタスクが実行されるようにするために、そのタスクが含まれるタイムパーティションへと、タイムパーティションの切り替えを行うS116。そして、S111では、S119で決定されたタスクが実行中であるとして、以後の処理を繰り返す。次に、図15A、Bを用いて、従来技術にかかるスケジューリング手法による結果図15Aと、本実施の形態にかかるスケジューリング手法による結果図15Bと、の違いについて説明する。なお、図15A、Bでは、2種類のタイムパーティションTP1及びTP2を含み、TP2の前半部分がTP2Aであり、後半部分がTP2Bである場合を例に説明する。また、TP2A、TP1、TP2Bにそれぞれ含まれるタスクをTask1、Task2、Task3とし、これらタスクのうちで、Task1の優先度が最も高く、Task2の優先度が次に高く、Task3の優先度が最も低いものとする。図15Aに示すように、従来技術にかかるスケジューリング手法によると、各タイムパーティションに対して固定された時間を割り当てるとともに、優先度に従って各タスクを配置するものである。このため、スケジューリングの結果、例えば、TP2AにおいてTask1が実行されて終了した場合においても、後続のTP1を直後に開始することができないつまり、次に優先度の高いTask2を、Task1の実行終了直後に開始することができない。。これに対して、図15Bに示すように、本実施の形態にかかるスケジューリング手法によると、それぞれ固定された時間が割り当てられたタイムパーティションに対してタスクを配置することに代えて、まずは、優先度に従ってタスクを検索し、そのタスクが実行されるタイムパーティションに関して残されたタイムリソースを考慮した上で、次に実行するタスクを決定する。このため、1サイクル全体に占める各タイムパーティションに割り当てられた実行時間の比率を維持したままで、優先度に従ってタスクを配置すると共に後続のタスクを直後に実行することができる。従って、各タイムパーティションに割り当てられた時間を考慮した上で、タスクの優先度及び周期性を満たすことのできるスケジューリングを実現することができる。<発明の実施の形態6>本実施の形態は、上述した実施の形態5に係る安全制御装置1の変形である。このため、上述した実施の形態5と同様の構成については説明を省略し、以下では、実施の形態2と異なる構成を中心として説明する。上述した実施の形態5では、タスクの探索に際して、まずは優先度を基準として探索を行うものであった。ここで、タスクの個数はタイムパーティションの個数よりも多いタスク数>タイムパーティション数ため、本実施の形態では、タイムパーティションの個数を基準としてタスクの探索を行うことを特徴とする。これにより、より効率的なタスクの探索が可能となる。本実施の形態では、タイムパーティションおよびタスクをスケジューリングする際に、まずは、タイムリソースが残されているタイムパーティションを検索し、その検索されたタイムパーティション内のタスクの優先度に従って、次に実行するタスクを決定することを特徴とする。次に、図16を用いて、本実施の形態にかかる安全制御装置1による処理について、具体的に説明する。図16は、パーティションスケジューラの処理手順の具体例を示すフローチャートである。なお、図16に示すS131~S134、及びS138における処理は、図14に示したS111~S114、及びS116における処理と同様である。このため、以下では、図14に示した処理と異なる処理図16のS135~S137を中心に説明する。また、図16では、パーティションスケジューラ21が起動中の処理を示している。パーティションスケジューラS115は、以後の1サイクルについてのスケジューリングを行うため、以後の1サイクルに含まれる全てのタイムパーティションに関して、タイムリソースの余っているタイムパーティションの一覧を検索するS115。パーティションスケジューラS115は、タイムリソースが余っているタイムパーティションのうちで、それらタイムパーティションに含まれるタスクについて、最も優先度が高いタスクを検索するS136。パーティションスケジューラ21は、S136で検索したタスクを、次に実行するタスクの候補を、Ttx,pyとして決定するS137。このようにして、S135~S137における処理によって、タイムリソースが余っているタイムパーティションに属するタスクであり、かつ、最も優先度が高いタスクが検索され、次に実行するタスクとして決定される。<発明の実施の形態7>本実施の形態にかかる安全制御装置は、上述した安全制御装置1の変形である。本実施の形態にかかる安全制御装置の全体的な構成は、図1に示した安全制御装置1の構成と同様とすればよい。図18は、本実施の形態にかかる安全制御装置が有するOSによって提供されるタスク実行環境を示す概念図である。本実施の形態では、OS100が、安全監視タスク24、通常制御タスク26、安全制御タスク28の相互間でデータをやり取りするためのタスク間通信を提供する。図18の例では、安全監視タスク24、通常制御タスク26、安全制御タスク28間でのデータ通信のために共有メモリ29が提供される。例えば、本実施の形態の安全監視タスク24は、制御対象サービスロボット、輸送機器等に関する制御情報を通常制御タスク26、から共有メモリ29を介して引き継ぐ。そして、安全制御タスク28は、引き継いだ制御情報に基づいて制御対象の安全制御を開始する。このように、安全制御へ切り替わった際に、安全制御タスク28が制御情報を引き継ぐことで、制御対象に対する安全制御を円滑に開始することができる。本実施の形態では、共有化メモリ29を、複数のパーティション間共有メモリに分割する。ここでは、共有化メモリ29を、データ共有を要するタイムパーティションの個数のパーティション間共有メモリに分割する。各タイムパーティション内のタスクがパーティション間共有メモリにアクセスする際には、アクセス先を互いに異ならせ、かつ、データ書き込みの対象とするパーティション間共有メモリと、データ読み出しの対象とするパーティション間共有メモリと、をアクセスの都度、それぞれ変更する。そして、タスクがデータを読み出す場合には、更新済みの最新のデータを有するパーティション間共有メモリから、データの読み出しを行うことを特徴とする。図19乃至図21を用いて、本実施の形態にかかる安全制御装置1による処理について、具体的に説明する。図19A、Bは、パーティション間共有メモリへのアクセスの具体例を示す図である。なお、図では、3つのタイムパーティションTP1、TP2、TP3に対応して、3つのパーティション間共有メモリA、B、Cを有する場合を例に説明する。パーティション間共有メモリAは、時間t-2に既に更新済みであり、パーティション間共有メモリBは、時間t-1に既に更新済みであり、パーティション間共有メモリCは、現在更新中であり、時間tに更新される。図19Aに示すように、TP2内の通常制御タスク26が、パーティション間共有メモリCに対して、データの書き込みを行っている。一方で、TP1内の安全監視タスク24は、誰もアクセスしておらず、かつ、更新済みの最新のデータが記憶されているパーティション間共有メモリBに対してアクセス中である。この場合において、TP3内の安全制御タスク28は、パーティション間共有メモリAに対して、アクセスすることが可能である。そして、図19Bに示すように、TP1内の安全監視タスク24のアクセスが時間通りに終了した場合には、TP3内の安全制御タスク28は、誰もアクセスしておらず、かつ、更新済みの最新のデータが記憶されているパーティション間共有メモリBに対して、アクセスを開始することができる、図20は、パーティション間共有メモリへのアクセスの処理手順の具体例を示すフローチャートである。なお、図20では、タスクスケジューリングパターンとして、TP2の後続のタイムパーティションがTP1である場合を例に説明する。まず、TP2内の通常制御タスク26の実行中S141に、OS100が、いずれのパーティション内のタスクからもアクセスがされていないパーティション間共有メモリを検索するS142。TP2内の通常制御タスク26は、OS100によって指定されるパーティション間共有メモリへアクセスし、データの更新を行うS143。なお、TP2内の通常制御タスク26による更新が完了していない場合であっても、後続のタイムパーティション内のタスクは、異なるパーティション間共有メモリへとアクセスするため、S143でのデータ更新は、必ずしも完了していなくともよい。1Tickの経過後S144、パーティションスケジューラ21が起動して、スケジューリングを開始するS145。タイムパーティションがTP1へと切り替えられ、TP1内の安全監視タスク24が実行を開始するS146。OS100は、いずれのタイムパーティション内のタスクからもアクセスがされておらず、かつ、更新済みのパーティション間共有メモリのうちで最新のデータが記憶されているパーティション間共有メモリを検索するS147。TP1内の安全監視タスク24は、OS100によって指定されるパーティション間共有メモリへアクセスするS148。なお、S148では、TP1がパーティション間共有メモリへのアクセスしている際に、TP1から他のタイムパーティションへの切り替えが発生してもよい。図21は、パーティション間共有メモリへのアクセスが行われる際に、データの書き込みが行われる場合の処理手順の具体例を示すフローチャートである。まず、タイムパーティション内のタスクが、パーティション間共有メモリへのアクセスを開始するS151。OS100は、いずれのタイムパーティション内のタスクからもアクセスがされておらず、かつ、更新済みのパーティション間共有メモリのうちで最新のデータが記憶されているパーティション間共有メモリを検索するS152。タイムパーティション内のタスクは、S152で検索されたパーティション間共有メモリへアクセスするS153。パーティション間共有メモリへアクセス中のタスクが、パーティション間共有メモリへの書き込みを実行している場合には、OS100は、現在アクセス中のパーティション間共有メモリに最新のデータが記憶されていることを示すために、パーティション間共有メモリの更新に関する情報を保存するS154。以上に説明した本実施の形態によれば、いずれかのタイムパーティション内のタスクが共有メモリ29にアクセスしている場合においても、タイムパーティション間でのデータの共有化による失敗を回避することができる。<発明の実施の形態8>本実施の形態にかかる安全制御装置は、上述した実施の形態7に係る安全制御装置1の変形である。このため、上述した実施の形態7と同様の構成については説明を省略し、以下では、実施の形態7と異なる構成を中心として説明する。上述した実施の形態7によれば、いずれかのタイムパーティション内のタスクが共有メモリ29にアクセスしている場合においても、タイムパーティション間でのデータの共有化による失敗を回避することが可能であるものの、共有化が必要なデータに関して、正確に抜けなく共有化できているかについては、必ずしも保証することができない。このため、例えば、サービスロボット等の制御を、最新のセンサデータを利用して実現したい場合には、古いデータを利用したまま、制御を続けているおそれがある。上述した実施の形態7によれば、データ更新の対象となるパーティション間共有メモリは、基本的には、アクセスされるごとに異なる。このため、タイムパーティション内のタスクからパーティション間共有メモリへのアクセスが、本来アクセスすべきでないタイムパーティション内のタスクによって行われていた場合には、パーティション間共有メモリに記憶されたデータは、最新のデータでない可能性が高い。そこで、本実施の形態では、実施の形態7で説明した処理に加えて、タイムパーティション内のタスクによりパーティション間共有メモリへのアクセスが行われる際に、本来アクセスすべきでないタスクからのアクセスが行われていた場合には、異常と判断して、対応する処理を行う、ことを特徴とする。次に、図22を用いて、本実施の形態にかかる安全制御装置1による処理について、具体的に説明する。図22は、パーティション間共有メモリへのアクセスの処理手順の具体例を示すフローチャートである。なお、図22では、タスクスケジューリングパターンとして、TP2の後続のタイムパーティションがTP1である場合を例に説明する。図20のS141~S143にかけての処理と比較して、図22の処理では、S163及びS164において異なっている。すなわち、OS100は、TP2内の通常制御タスク26によりパーティション間共有メモリへのアクセスが行われる際に、本来アクセスすべきタスクからのアクセスであるかを判断しS163、本来アクセスすべきタスクからのアクセスでなかったS163でNo場合には、共有メモリ29に対してアクセス異常が発生したことを保存するS164。S163での判断としては、例えば、同じパーティション間共有メモリに、規定の回数以上のアクセスが連続して行われた場合に、本来アクセスすべきタスクからのアクセスではないと判断することができる。規定の回数は、ユーザによって適当な値が予め設定されている。なお、その他の図22に示すS161~S165にかけての処理は、図20に示したS141~S143にかけての処理と基本的に同一である。図20のS144~S148にかけての処理と比較して、図22の処理では、S168及びS172において異なっている。すなわち、OS100は、共有メモリ29へのアクセスに異常があったかを、S164において保存された異常発生の有無に応じて判断しS168、異常があったS168でYes場合には、タイムパーティションの切り替えを実行させるように、または、マイクロコントローラ15のリセットを行うように、パーティションスケジューラ21に対して指示する。なお、その他の図22に示すS168~S172にかけての処理は、図20に示したS144~S148にかけての処理と基本的に同一である。以上に説明した本実施の形態によれば、いずれかのタイムパーティション内のタスクが共有メモリ29にアクセスしている場合においても、タイムパーティション間でのデータの共有化に関して、データを正確に抜けなく共有化できることを保証することができる。<発明の実施の形態9>本実施の形態にかかる安全制御装置は、上述した安全制御装置1の変形である。本実施の形態にかかる安全制御装置の全体的な構成は、図1に示した安全制御装置1の構成と同様とすればよい。本実施の形態にかかる安全制御装置が有するOSによって提供されるタスク実行環境は、図4に示したタスク実行環境の構成と基本的には同様であるが、パーティションスケジューラ21がタスクスケジューラの機能を備える点において異なる。このため、上述した実施の形態と同様の構成については説明を省略し、以下では、異なる構成を中心として説明する。本実施の形態では、各タイムパーティション内にタスクスケジューラ23、25、27が存在する構成に代えて、パーティションスケジューラ21が、各タイムパーティション内におけるタスクのタスクスケジューラをも実行することを特徴とする。タイムパーティショニング機能を備える従来技術では、一般的に、aパーティションスケジューラによる処理時間や、タスクスケジューラによる処理時間と比較して、タスクによる実行時間が、十分に長く例えば、1msec、また、bタイムパーティションごとに異なるスケジューリング方法を必要とするために、タイムパーティションごとにタスクスケジューラを必要とする、などの事情を有している。しかし、本実施の形態に係る安全制御装置1は、サービスロボット等における制御用途を想定するものであるために、タスクによる実行時間は非常に短く例えば、30usec、また、タイムパーティションごとにタスクスケジューリングを変更する必要もない、という事情がある。このため、本実施の形態では、パーティションスケジューラ21が、タイムパーティションのスケジューリングに加えて、タイムパーティション内のタスクのスケジューリングについても実施する。本実施の形態では、パーティションスケジューラ21が、タイムパーティション内のタスクのスケジューリングについても実施する。このため、例えば、図6に示した処理手順において、S12及びS16における処理を、タスクスケジューラが実行することに代えて、パーティションスケジューラ21が実行するようにすればよい。図25A、Bを用いて、本実施の形態による効果を説明する。図25A、Bは、1つのタイムパーティション内に占める、各処理の比率を示す図である。図25Aは、従来技術に係る比率を示しており、タスクスケジューラによる処理時間を、パーティションスケジューラ21による処理とは独立して必要とするものであった。図25Bは、本実施の形態に係る比率を示しており、タスクスケジューラによる処理時間はパーティションスケジューラ21による処理時間に含まれ、また、タスクの処理可能時間も短いものとなっている。以上に説明した本実施の形態によれば、タスクスケジューラをパーティションスケジューラ21に集約したことで、システム全体としての効率性を向上させることができる。また、本実施の形態は、サービスロボット等に搭載される比較的小さな制御周期のモータ制御ECUや、比較的処理の単純なサービスロボット等に適用すると好適である。さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述した各実施の形態それぞれを実施するものとしてもよいし、複数の実施の形態を組合せて実施するものとしてもよい。例えば、緊急停止を有する異常が発生した場合には、実施の形態2又は実施の形態3にかかるいずれかの技術を適用し、その他の異常に関しては、実施の形態4にかかる技術を用いて異常発生を判断するものとしてもよい。また、例えば、タイムパーティションおよびタスクに関するスケジューリングを実行する場合には、実施の形態5又は実施の形態6にかかるいずれかの技術を適用し、スケジューリングされた後のタスクの実行中における異常発生時には、実施の形態2乃至4に係るいずれかの技術を適用するものとしてもよい。また、例えば、共有メモリ29を用いてタスク間でデータ通信を行う場合には、実施の形態7又は実施の形態8にかかるいずれかの技術を適用するものとして、他の実施の形態1乃至6のいずれかと組合せて適用してもよい。"