JP2012247978A - 制御装置及び制御方法 - Google Patents

制御装置及び制御方法 Download PDF

Info

Publication number
JP2012247978A
JP2012247978A JP2011118953A JP2011118953A JP2012247978A JP 2012247978 A JP2012247978 A JP 2012247978A JP 2011118953 A JP2011118953 A JP 2011118953A JP 2011118953 A JP2011118953 A JP 2011118953A JP 2012247978 A JP2012247978 A JP 2012247978A
Authority
JP
Japan
Prior art keywords
control
task
execution
partition
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2011118953A
Other languages
English (en)
Other versions
JP5906584B2 (ja
Inventor
Tetsuya Taira
哲也 平
Koji Bito
浩司 尾藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toyota Motor Corp
Original Assignee
Toyota Motor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toyota Motor Corp filed Critical Toyota Motor Corp
Priority to JP2011118953A priority Critical patent/JP5906584B2/ja
Publication of JP2012247978A publication Critical patent/JP2012247978A/ja
Application granted granted Critical
Publication of JP5906584B2 publication Critical patent/JP5906584B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】プロセッサにかかる負荷を低減することができる制御装置及び制御方法を提供すること。
【解決手段】本発明にかかる制御装置は、ユーザモード及びカーネルモードのうち、カーネルモードでアクセス可能である制御対象を制御する制御タスクをユーザモードで実行するオペレーティングシステム100と、オペレーティングシステム100を実行するプロセッサ10と、を備えた制御装置である。オペレーティングシステム100は、制御タスクを実行していない期間に、カーネルモードで、制御対象から情報を取得して、取得した情報に基づいて制御対象の異常を検出する異常検出処理を実行する。
【選択図】図1

Description

本発明は、制御装置及び制御方法に関し、特に機能安全の確保のためにサービスロボットおよび輸送機器等に搭載される制御装置に関する。
サービスロボットは、外界センサや自己診断装置によって安全状態を常時監視し、何らかの危険を検知した場合に適切な安全制御ロジックを実行することで、機能安全を確保する必要がある。
上述したサービスロボットのほか、運輸機器等の電気的な原理で動作するシステムを対象とした機能安全に関する国際標準としてIEC 61508が制定されている。IEC 61508では、機能安全の確保のために設けられるシステムのことを安全関連系と呼んでいる。IEC 61508は、マイクロプロセッサ及びPLC(Programmable Logic Controller)等のハードウェアとコンピュータプログラム(ソフトウェア)によって安全関連系を構築するための様々な技法を定めている。IEC 61508で定められている技法を用いることで、コンピュータシステムを用いて安全関連系を構築することが可能となる。
一方で、近年、マイクロプロセッサ等のプログラマブル電子機器の処理能力が向上している。このため、マルチタスクOS(Operating System)を利用し、1つのコンピュータシステム上で様々なアプリケーションプログラムを並列実行することで、サービスロボット及び自動車等の機器に搭載されている複数用途のコンピュータシステムを統合することができる。
例えば特許文献1に、機能安全の確保に関するアプリケーションプログラム(以下、安全関連アプリケーションと呼ぶ)を、その他のアプリケーションプログラム(以下、非安全関連アプリケーションと呼ぶ)と共に1つのコンピュータシステム上で動作させる技術が開示されている。
IEC 61508で定められている技法を、安全関連アプリケーションおよび非安全関連アプリケーションを含むソフトウェア全体に適用すると、非安全関連アプリケーションにまで適用する必要性が生じる。このため、ソフトウェア開発コストが増大するという問題がある。
そこで、特許文献1に開示される技術では、システムプログラムのタイム・パーティションニングによって、安全関連アプリケーション(安全監視プログラム及び安全制御プログラム)を非安全関連アプリケーション(通常制御プログラム)から独立させている。このため、通常制御プログラムを安全関連系から除外することができ、コンピュータシステムを用いて構成される安全関連系の低コスト化に寄与することができる。
特開2010−271759号公報
しかしながら、本願出願人は、特許文献1に開示されるような安全制御装置に関して、本願出願人が新たに創案した安全制御装置において、以下に説明する課題を見出した。以下、図15〜17を参照して、その課題について説明する。
図15は、本願出願人によって創案された安全制御装置にかかるタイムパーティションにおけるタスクの実行状況を示す図である。図15に例示するタイムパーティションでは、最初のタイムパーティションTP1(以下、「TP1」とする)に制御タスク及び故障検出タスクが実行される。なお、図15では、最初のTP1についてのみタスクの実行状況を示し、それ以降のタイムパーティションについては、図示を省略する。
ここで、図16に示すように、一般的に、タスクは、ユーザ空間で動作し、オペレーティングシステム(OS)は、カーネル空間で動作する。つまり、タスクは、ユーザモードで動作し、OSは、カーネル空間で動作する。ここで、カーネルモード(「マスターモード」、「スーパバイザーモード」、又は「特権モード」とも言う)とは、マイクロコントローラの全てのハードウェア資源が操作可能なモードのことを言う。それに対して、ユーザモードとは、マイクロコントローラの限られたハードウェア資源のみ操作可能なモードのことを言う。なお、カーネルモード及びユーザモードとは、CPU(Central Processing Unit)(プロセッサ)の動作モードのことである。つまり、カーネルモードでは、CPUは、マイクロコントローラの全てのハードウェア資源にアクセスでき、ユーザモードでは、CPUは、アクセスできるハードウェア資源が制限される。
そのため、図15の例では、制御タスクがサービスロボットを制御するためにハードウェア資源にアクセスする場合や、故障検出タスクがサービスロボットの故障を検出するためにハードウェア資源にアクセスする場合には、ユーザモードからカーネルモードに切り替える必要がある。この切り替えは、OSに用意されたシステムコールをタスクが使用することによって行われる。つまり、タスクは、システムコールを使用することによって、OSを介して、カーネルモードでのみアクセスすることができるハードウェア資源にアクセスすることができる。
図17を参照して、図15に例示したTP1における処理手順について説明する。図17は、図15に示すTP1における処理手順を示す図である。なお、図17では、図15に示す2つの制御タスクのそれぞれを、「Task1」及び「Task2」として示す。
OSは、タスクスケジューリングにおいて、Task1を選択する(S101)。なお、S101は、カーネルモードでOSが動作する。OSは、選択したTask1を実行する(S102)。なお、S102では、ユーザモードでTask1が動作する。Task1の実行が終了した場合、OSは、タスクスケジューリングを行って、Task2を選択する(S103)。なお、S103では、カーネルモードでOSが動作する。OSは、選択したTask2を実行する(S104)。なお、S104では、ユーザモードでTask2が動作する。
Task2の実行が終了した場合、OSは、タスクスケジューリングを行って、故障検出タスクを選択する(S105)。なお、S105では、カーネルモードでOSが動作する。OSは、選択した故障検出タスクの実行を開始する(S106)。なお、S106では、ユーザモードで、故障検出タスクが動作を開始する。故障検出タスクは、システムコールを使用して、サービスロボットの情報(以下、「故障検出情報」とする)を取得する(S107)。つまり、S107では、システムコールに応じて、カーネルモードでOSが動作する。
システムコールにおける処理の終了後、ユーザモードに戻る。故障検出タスクは、取得した故障検出情報に基づいて、故障を検出する。故障検出タスクは、次の故障検出を開始する(S108)。つまり、ハードウェア資源において、S107で故障検出情報を取得した箇所とは異なる箇所からの故障検出情報の取得を開始する。なお、S108では、ユーザモードで故障検出タスクが動作する。故障検出タスクは、システムコールを使用して、故障検出情報を取得する(S109)。つまり、S109では、システムコールに応じて、カーネルモードでOSが動作する。
システムコールにおける処理の終了後、ユーザモードに戻る。故障検出タスクは、取得した故障検出情報に基づいて、故障を検出する。故障検出タスクは、次の故障検出を開始する(S110)。なお、S110では、ユーザモードで、故障検出タスクが動作を開始する。以降も、同様にして、ハードウェア資源において、故障検出対象となる箇所の全てから故障検出情報を取得するまで、S108及びS109と同様の動作が繰り返され、そのたびに、ユーザモードとカーネルモードとの間で遷移が行われる。
しかしながら、ユーザモードとカーネルモードとの間で遷移をする場合、コンテキストスイッチが発生する。具体的には、システムコール関数を呼び出し中における処理は、カーネルモードで実行されることになるため、これらの関数が呼び出された際には、ユーザモードのコンテキストを退避し、カーネルモードのコンテキストを読み出す必要がある。さらに、システムコール関数における処理が終了したときには、元のユーザモードのコンテキストを復元する必要がある。
つまり、システムコールを使用して、ユーザモードとカーネルモードとの間での切り替えを行うと、CPUに負荷がかかってしまうという問題がある。特に、ロボット制御においては、故障検出のために検査するハードウェア数も多くなってしまう。そのため、それぞれのハードウェアにアクセスするために、システムコールを多用することで、図17を参照して説明したように、ユーザモードとカーネルモードとの間での切り替えが頻繁に行われてしまい、CPUの負荷が増大してしまうという問題も発生してしまう。さらには、このように故障検出タスクがシステムコールを多用してCPU時間を多く消費することで、故障検出タスク以外の制御タスクが利用できるCPU時間も短くなってしまうという問題も発生してしまう。
本発明は、上述したような課題を解決するために、プロセッサにかかる負荷を低減することができる制御装置及び制御方法を提供することを目的とする。
本発明の第1の態様にかかる制御装置は、ユーザモード及びカーネルモードのうち、カーネルモードでアクセス可能である制御対象を制御する制御タスクをユーザモードで実行するオペレーティングシステムと、前記オペレーティングシステムを実行するプロセッサと、を備えた制御装置であって、前記オペレーティングシステムは、前記制御タスクを実行していない期間に、カーネルモードで、前記制御対象から情報を取得して、取得した情報に基づいて前記制御対象の異常を検出する異常検出処理を実行するものである。
本発明の第2の態様にかかる制御方法は、ユーザモード及びカーネルモードのうち、カーネルモードでアクセス可能である制御対象を制御する制御タスクをプロセッサによってユーザモードで実行する制御方法であって、前記プロセッサが、前記制御タスクが実行終了したときに、ユーザモードからカーネルモードに切り替えるステップと、前記プロセッサが、前記切り替え後のカーネルモードで、前記制御対象から情報を取得して、取得した情報に基づいて前記制御対象の異常を検出するステップと、を備えたものである。
上述した本発明の各態様によれば、プロセッサにかかる負荷を低減することができる制御装置及び制御方法を提供することができる。
発明の実施の形態1にかかる安全制御装置の構成例を示すブロック図である。 発明の実施の形態1にかかるタイム・パーティショニングの概念を説明するための図である。 発明の実施の形態1にかかるリソース・パーティショニングの概念を説明するための概念図である。 図1に示したOSによって提供される実行環境で起動される、パーティションスケジューラとタスクとの関係を示す図である。 スケジューリングパターンの具体例を示す図である。 スケジューリングパターンの具体例を示す図である。 発明の実施の形態1にかかるパーティション・スケジューリングにおける処理手順の具体例を示すフローチャートである。 発明の実施の形態1にかかるタイムパーティションにおけるタスクの実行状況を示す図である。 発明の実施の形態1にかかる安全監視・制御用のタイムパーティションにおける処理手順に示すフローチャートである。 発明の実施の形態2にかかるパーティション・スケジューリングにおける処理手順の具体例を示すフローチャートである。 発明の実施の形態2にかかるタイムパーティションにおけるタスクの実行状況を示す図である。 発明の実施の形態2にかかる安全監視・制御用のタイムパーティションにおける処理手順に示すフローチャートである。 発明の実施の形態3にかかるパーティション・スケジューリングにおける処理手順の具体例を示すフローチャートである。 発明の実施の形態3にかかるタイムパーティションにおけるタスクの実行状況を示す図である。 発明の実施の形態3にかかる安全監視・制御用のタイムパーティションにおける処理手順に示すフローチャートである。 本願発明の課題を説明するために、タイムパーティションにおけるタスクの実行状況の一例を示す図である。 ユーザモード及びカーネルモードを説明するための図である。 本願発明の課題を説明するために、図15に示すタイムパーティションにおける処理手順を説明するための図である。
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
<発明の実施の形態1>
本実施の形態1にかかる安全制御装置1は、サービスロボットや運輸機器等に搭載されて機能安全確保のための安全制御を実行する。安全制御装置1は、安全関連アプリケーションと非安全関連アプリケーションを同一のコンピュータシステムで実行するよう構成される。図1は、本実施の形態にかかる安全制御装置1の構成例を示すブロック図である。
プロセッサ10は、プログラム(命令ストリーム)の取得、命令のデコード、命令のデコード結果に応じた演算処理を行う。なお、図1では、1つのプロセッサ10のみを示しているが、安全制御装置1は、複数のプロセッサ10を有するマルチプロセッサ構成であってもよい。また、プロセッサ10は、マルチコアプロセッサでもよい。プロセッサ10は、システムプログラムとしてのオペレーティングシステム(OS)100を実行することによりマルチプログラミング環境を提供する。マルチプログラミング環境とは、複数のプログラムを定期的に切り替えて実行したり、あるイベントの発生に応じて実行するプログラムを切り替えたりすることによって、複数のプログラムがあたかも並列実行されているような環境を意味する。
マルチプログラミングは、マルチプロセス、マルチスレッド、マルチタスク等と呼ばれる場合もある。プロセス、スレッド及びタスクは、マルチプログラミング環境で並列実行されるプログラム単位を意味する。本実施の形態のプロセッサ10が具備するマルチプログラミング環境は、マルチプロセス環境でもよいし、マルチスレッド環境でもよい。
実行用メモリ11は、プロセッサ10によるプログラム実行のために使用されるメモリである。実行用メモリ11には、不揮発性メモリ13からロードされたプログラム(OS100及びアプリケーション101〜104等)、プロセッサ10の入出力データ等が記憶される。なお、プロセッサ10は、プログラムを不揮発性メモリ13から実行用メモリ11にロードすることなく、これらのプログラムを不揮発性メモリ13から直接実行してもよい。
具体的には、実行用メモリ11は、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)等のランダムアクセス可能な揮発性メモリとすればよい。図1の実行用メモリ11は、論理的な構成単位を示している。すなわち、実行用メモリ11は、例えば、複数のSRAMデバイスの組み合わせ、複数のDRAMデバイスの組み合わせ、又はSRAMデバイスとDRAMデバイスの組み合わせでもよい。
I/Oポート12は、外部デバイスとの間のデータ送受信に使用される。例えば、安全制御装置1がサービスロボットに搭載される場合であれば、外部デバイスは、サービスロボット周囲の障害物を計測可能な視覚センサ、サービスロボットの姿勢を検知するためのセンサ、及びサービスロボットのアクチュエータの状態を検知するためのセンタ等のサービスロボットの内外の状態を示す情報を取得する各種センサ、並びに、サービスロボットを動作させるアクチュエータ等である。
不揮発性メモリ13は、電力の供給を受けることなく、実行用メモリ11に比べて安定的に記憶内容を維持することが可能なメモリデバイスである。例えば、不揮発性メモリ13は、ROM(Read Only Memory)、フラッシュメモリ、ハードディスクドライブ若しくは光ディスクドライブ、又はこれらの組み合わせである。不揮発性メモリ13は、OS100及びアプリケーション101〜104を格納する。なお、不揮発性メモリ13の少なくとも一部は安全制御装置1から取り外し可能に構成されてもよい。例えば、アプリケーション101〜104が格納されたメモリを取り外し可能としてもよい。また、不揮発性メモリ13の少なくとも一部は、安全制御装置1の外部に配置されてもよい。
OS100は、プロセッサ10によって実行されることにより、プロセッサ10及び実行用メモリ11及び不揮発性メモリ13等のハードウェア資源を利用して、タスクスケジューリングを含むタスク管理、割り込み管理、時間管理、資源管理、タスク間同期およびタスク間通信機構の提供等を行う。
さらに、機能安全の確保に関連する安全制御アプリケーション104の通常制御アプリケーション103からの独立性を高めるため、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つのRP(RP1及びRP2)を示している。RP1には、実行用メモリ11及び不揮発性メモリ13の一部(A領域)と、I/Oポート12の一部(ポートA)が割り当てられている。また、RP2には、実行用メモリ11及び不揮発性メモリ13の他の一部(B領域)と、I/Oポート12の他の一部(ポートB)が割り当てられている。RP1からはRP2に割り当てられたリソースへのアクセスが禁止され、RP2からはRP1に割り当てられたリソースへのアクセスが禁止される。
なお、全てのリソースがいずれかのRPに排他的に割り当てられてもよく、複数のRPによって共有されるリソースがあってもよい。例えば、サービスロボットの安全制御を行う場合、アクチュエータに、通常制御アプリケーション103及び安全制御アプリケーション104の双方からアクセスできるようにしてもよい。よって、通常制御アプリケーション103が属するRPと安全制御アプリケーション104が属するRPによって、アクチュエータを制御するためのI/Oポート12を共有するようにしてもよい。なお、本実施の形態では、制御アプリケーション101、102が属するRPに、I/Oポート12の全てが割り当てられる場合について例示する。
図1に戻り説明を続ける。アプリケーション101〜104は、OS100及びプロセッサ10によって提供されるマルチプログラミング環境で実行される。このうち、制御アプリケーション101、102のそれぞれは、サービスロボット等の制御対象を制御する制御手順をプロセッサ10に実行させるための命令コードを含む。さらに、制御アプリケーション101、102のそれぞれは、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。つまり、制御アプリケーション101、102のそれぞれは、非安全関連アプリケーションである。
また、通常制御アプリケーション103は、サービスロボット等の制御対象に通常の機能・動作を行わせるための制御手順をプロセッサ10に実行させるための命令コードを含む。さらに、通常制御アプリケーション103は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。つまり、通常制御アプリケーション102は、非安全関連アプリケーションである。
また、安全制御アプリケーション104は、何らかの異常が検出された場合に対応して、機能安全を確保するために定められた制御手順をプロセッサ10に実行させるための命令コードを含む。さらに、安全制御アプリケーション104は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。つまり、安全制御アプリケーション104は、安全関連アプリケーションである。
リセット回路14は、OS100からの信号に基づき、マイクロコントローラ15のリセットを行う。パーティションスケジューラ21からリセット回路14に定期的に送信信号を送信し、リセット回路14は、パーティションスケジューラ21からの送信信号が途絶えた場合に、マイクロコントローラ15をリセットする。例えば、パーティションスケジューラ21は、後述するような、1Tickごとに動作するタイミングで、送信信号をリセット回路14に送信する。また、パーティションスケジューラ21は、OS100で異常を検知した場合、又は、アプリケーション101〜104から異常を示す結果通知を受けた場合に、リセット回路14にリセット信号を送信するようにして、それに応じて、リセット回路14がマイクロコントローラ15をリセットするようにしてもよい。このようにすることで、マイクロコントローラ15に不具合が発生した場合に、マイクロコントローラ15をリセットして復旧することができる。
続いて以下では、パーティションスケジューラ21と、アプリケーション101〜104の起動により生成されるタスクと、の関係について、図4を用いて説明する。図4は、OS100によって提供されるマルチプログラミング環境で起動される、パーティションスケジューラ21とタスク24、25、27、29との関係を示す図である。
マイクロコントローラ15は、プロセッサ10、実行用メモリ11、I/Oポート12、不揮発性メモリ13等を含む。なお、図4では、マイクロコントローラ15の外部にリセット回路14を備える構成を例示しているが、マイクロコントローラ15の内部にリセット回路14を含む構成としてもよい。
マイクロコントローラ15には、外部のクロック源(図示せず)からのクロック信号が供給され、プロセッサ10等は、このクロック信号に基づく所定のタイマー周期で動作する。本実施の形態では、所定のタイマー周期を、1Tickであるとして説明する。このため、プロセッサ10によりOS100が実行されることで、パーティションスケジューラ21が1Tickごとに動作すると共に、各TPにおいて、タスクスケジューラ23、26、28およびタスク(制御タスク24、25、通常制御タスク27、安全制御タスク29)が1Tickごとに動作する。
ここで、OS100と、OS100に含まれる、パーティションスケジューラ21及びタスクスケジューラ23、26、28のそれぞれは、カーネルモードで実行され、タスク24、25、27、29は、ユーザモードで実行される。言い換えると、OS100、パーティションスケジューラ21、及びタスクスケジューラ23、26、28は、カーネル空間で動作し、タスク24、25、27、29は、ユーザ空間で動作する。ここで、I/Oポート12には、ユーザモード及びカーネルモードのうち、カーネルモードのみでアクセス可能であるものとする。つまり、本実施の形態では、サービスロボット等の制御対象には、カーネルモードでのみアクセス可能である。
したがって、制御タスク24、25は、I/Oポート12にアクセスして、サービスロボット等の制御対象のアクチュエータを制御する場合及びセンサのセンサ値を取得する場合には、OS100に用意されたシステムコールを使用することによって、ユーザモードからカーネルモードに切り替えて、I/Oポート12にアクセスする必要がある。つまり、OS100は、制御タスク24、25がI/Oポート12にアクセスするためのインタフェースとなるシステムコールを有する。
ここで、具体的にシステムコールが使用されたときの動作について説明する。制御タスク24、25は、アクチュエータを制御する場合、アクチュエータを制御する指令値を引数として指定してシステムコール関数を呼び出す。OS100は、システムコール関数が呼び出されると、ユーザモードからカーネルモードに切り替えて、指定された指令値をI/Oポート12に対して出力する。そして、OS100は、再びカーネルモードからユーザモードに切り替える。これによって、制御タスク24、25は、システムコール関数から復帰する。
また、制御タスク24、25は、センサのセンサ値を取得する場合、システムコール関数を呼び出す。OS100は、システムコール関数が呼び出されると、ユーザモードからカーネルモードに切り替えて、I/Oポート12からセンサ値を取得する。そして、OS100は、再びカーネルモードからユーザモードに切り替えて、取得したセンサ値をシステムコール関数の戻り値とする。これによって、制御タスク24、25は、システムコール関数から復帰して、システムコール関数の戻り値をセンサ値として取得することができる。
OS100は、サービスロボット等の制御対象の異常を検知するルーチンが含まれている。OS100は、I/Oポート12を介して、サービスロボット等の制御対象が有するセンサのセンサ値を取得して、取得したセンサ値に基づいて、サービスロボット等の制御対象の異常を検知する。OS100は、サービスロボット等の制御対象の異常を検知した場合、図5A、Bを参照して後述するような、TPのスケジューリングパターンを、異常が検知された場合に適用されるスケジューリングパーティションに切り替える。
パーティションスケジューラ21は、1Tickごとに動作し、TPの切り替え(パーティション・スケジューリング)を行う。パーティションスケジューラ21は、次の1Tickの間にTP1〜TP3のいずれをアクティブにするかを選択・決定する。さらに、パーティションスケジューラ21は、選択したTPに関するタスクスケジューラの動作を開始させる。
パーティションスケジューラ21によるパーティション・スケジューリングについて具体的に述べると、パーティションスケジューラ21は、スケジューリングテーブル22を参照し、TPの設定を定めたスケジューリングパターンに従って、パーティション・スケジューリングを行う。
スケジューリングテーブル22は、TPの切り替え順序およびタイミングを規定したスケジューリングパターンを保持している。なお、スケジューリングテーブル22は、少なくとも2つの異なるスケジューリングパターンを保持している。1つは、OS100によって異常が検知されていない場合(つまり通常時)に適用されるスケジューリングパターンである。もう1つは、OS100によって異常が検知された場合に適用されるスケジューリングパターンである。以下では、通常時に適用されるスケジューリングパターンを"通常制御スケジューリングパターン"と呼ぶ。また、異常検知時に適用されるスケジューリングパターンを"安全制御スケジューリングパターン"と呼ぶ。
図5Aは、通常制御スケジューリングパターンの具体例を示している。図5Aでは、制御タスク24、25が属するTP1が1サイクル時間の前半(T1)に割り当てられている。また、通常制御タスク27が属するTP2が1サイクル時間の後半(T2)に割り当てられている。図5Aのスケジューリングパターンによれば、制御タスク24、25と通常制御タスク27が繰り返しスケジューリングされる。
図5Bは、安全制御スケジューリングパターンの具体例を示している。図5Bでは、制御タスク24、25が属するTP1が1サイクル時間の前半(T3)に割り当てられている。また、安全制御タスク29が属するTP3が1サイクル時間の後半(T4)に割り当てられている。図5Bのスケジューリングパターンによれば、制御タスク24、25と安全制御タスク29が繰り返しスケジューリングされる。
図4に戻り説明を続ける。タスクスケジューラ23、26、28は、それぞれが属するTP内でのタスクのスケジューリングを行う。各TP内でのタスクのスケジューリングには、一般的な優先度ベースのスケジューリングを適用すればよい。なお、図4では、各TP2及び3はそれぞれ1つのタスクのみを含み、TP1は2つのタスクのみを含む場合について図示しているが、1又は2以上のタスクが含まれるようにしてもよい。例えば、通常制御用のTP2内には、通常制御タスクA及び通常制御タスクBの2つのタスクが含まれていてもよい。
制御タスク24は、制御アプリケーション101の起動によって生成されるタスクであり、制御タスク25は、制御アプリケーション102の起動によって生成されるタスクである。図4の例では、制御タスク24、25は、TP1及びRP1に割り当てられている。制御タスク24、25のそれぞれは、サービスロボット等の制御対象を制御する。具体的は、制御タスク24、25のそれぞれは、アクチュエータの指令値をI/Oポート12に出力することによって、アクチュエータを制御する。この指令値は、後述するように、通常制御タスク27又は安全制御タスク29から取得する。さらに、制御タスク24、25は、タスクの実行状況を、パーティションスケジューラ21へ通知する。
通常制御タスク27は、通常制御アプリケーション103の起動によって生成されるタスクである。図4の例では、通常制御タスク27は、TP2及びRP2に割り当てられている。通常制御タスク27は、サービスロボット等の制御対象に通常の機能・動作を行わせるための制御を行う。具体的には、通常制御タスク27は、アクチュエータの制御計算をして、アクチュエータの指令値を算出する。例えば、サービスロボット等の制御対象に通常動作をさせる指令値となる。通常制御タスク27は、算出した指令値を制御タスク24、25のそれぞれに出力する。さらに、通常制御タスク27は、タスクの実行状況を、パーティションスケジューラ21へ通知する。
安全制御タスク29は、安全制御アプリケーション104の起動によって生成されるタスクである。図4の例では、安全制御タスク29は、TP3及びRP3に割り当てられている。安全制御タスク29は、何らかの異常が検出された場合に対応して、機能安全を確保するために定められた制御を行う。具体的には、安全制御タスク29は、アクチュエータの制御計算をして、アクチュエータの指令値を算出する。例えば、サービスロボット等の制御対象を安全方向に動作させる又は停止させる指令値となる。安全制御タスク29は、算出した指令値を制御タスク24、25のそれぞれに出力する。さらに、安全制御タスク29は、タスクの実行状況を、パーティションスケジューラ21へ通知する。
なお、各タスクからパーティションスケジューラ21へと結果を通知する具体的な構成としては、様々な手法を採用することができる。例えば、タスクがOS100のシステムコール(サービスコール)を呼び出し、OS100を介して、パーティションスケジューラ21に結果を通知することができる。また、例えば、タスクの実行状況に関するフラグを実行用メモリ11に格納するものとして、タスクがその実行状況に応じてフラグの値を設定し、パーティションスケジューラ21がフラグの設定値に応じてタスクの実行状況を判断することもできる。
上述したように、パーティションスケジューラ21が1Tickごとに動作し、TP1〜TP3のいずれをアクティブにするかを選択・決定する。さらに、パーティションスケジューラ21が、選択したTPに関するタスクスケジューラの動作を開始させる。そして、タスクスケジューラ23、26、28が動作を開始することでタスクのスケジューリングが行われ、プロセッサ10が、タスクスケジューラ23、26、28によりスケジューリングされた順序に従って、TP内でのタスクを実行していく。これによって、アクティブなTPに割り当てられているアプリケーションが、プロセッサ10で実行される。
続いて以下では、発明の実施の形態1にかかるパーティションスケジューラ21によるパーティション・スケジューリングについて、図6を用いて説明する。図6は、発明の実施の形態1にかかるパーティション・スケジューリングにおける処理手順の具体例を示すフローチャートである。
まず、1Tickごとに動作するパーティションスケジューラ21が、TP1のタスクスケジューラ23を動作させる(S11)。
なお、図6では、通常制御スケジューリングパターン(例えば図5A)または安全制御スケジューリングパターン(例えば図5B)に従って、スケジューリングを実行する場合を例に説明する。すなわち、TP1に続く次のTPはTP2又はTP3であり、かつ、OS100によって、サービスロボット等の制御対象に故障等の何らかの異常が検知された場合に、TP1の次に選択・決定されるTPがTP3である場合を例に説明する。つまり、最初のまだ異常が検知されていない状態では、TP1の次に選択・決定されるTPがTP2である場合を例に説明する。つまり、通常時は、通常制御スケジューリングパターンを参照してTPのスケジューリングを行い、異常の検知後は、安全制御スケジューリングパターンを参照してTPのスケジューリングを行う場合を例に説明する。つまり、後述するTPXの初期値が、TPX=TP2である場合について説明する。
S11で動作を開始したTP1のタスクスケジューラ23は、TP1内の制御タスク24、25を優先度に応じて実行する(S12)。なお、ここでは、TP1内の制御タスク24、25で実行状態又は実行可能状態となっている制御タスクがある場合に、そのうちのいずれかの制御タスクが実行される。つまり、TP1内の制御タスク24、25がいずれも実行状態及び実行可能状態のいずれの状態にもなっていない場合、制御タスクは実行されない。実行状態及び実行可能状態のいずれの状態にもなっていない場合とは、待ち状態、休止状態、強制待ち状態又は二重待ち状態等である。
ここで、制御タスク24、25は、例えば、通常制御タスク27及び安全制御タスク29のいずれからも指令値を取得していない場合、もしくは、通常制御タスク27又は安全制御タスク29からの指令値の取得に応じたアクチュエータの制御処理の実行が終了している場合には、待ち状態となっている。そして、制御タスク24、25は、例えば、通常制御タスク27又は安全制御タスク29から指令値を取得したときに、待ち状態から実行可能状態に遷移する。制御タスク24、25は、例えば、タスク間通信によって、通常制御タスク27又は安全制御タスク29から指令値を取得することで、待ち状態から起床して実行可能状態となる。
S12で制御タスク24、25のいずれかの実行が終了した場合、OS100は、TP1内に実行する制御タスク24、25がないか否かを判定する(S13)。TP1内に実行する制御タスク24、25がないか否かは、例えば、TP1内の制御タスク24、25が実行状態及び実行可能状態のいずれの状態にもなっていないか否かによって判定する。
TP1内に実行する制御タスク24、25がない場合(S13でYes)、OS100は、故障検出処理を実行する(S14)。具体的には、OS100は、I/Oポート12を介して、サービスロボット等の制御対象のセンサ値を取得する。OS100は、取得したセンサ値が、正常値の範囲内か否かを判定する。ここで、正常値は、例えば、実行用メモリ11に予め格納しておき、OS100が参照可能としておく。OS100は、センサ値が正常値の範囲内に収まっている場合、サービスロボット等の制御対象は故障していないと判定する。OS100は、センサ値が正常値の範囲内に収まっていない場合、サービスロボット等の制御対象が故障していると判定する。すなわち、この場合、サービスロボット等の制御対象の故障が検出されことになる。言い換えると、サービスロボット等の制御対象の異常が検知されたことになる。
OS100は、故障検出処理によって、サービスロボット等の制御対象の故障を検出した場合(S15でYes)、後述するTPXを、TPX=TP3とする(S16)。つまり、OS100は、パーティションスケジューラ21が参照するスケジューリングパターンを、通常制御スケジューリングパターンから安全制御スケジューリングパターンに切り替える。
一方で、1Tickが経過すると、パーティションスケジューラ21が、TPのスケジューリングを開始する(S17)。すなわち、パーティションスケジューラ21は、スケジューリングパターンに従って、次の1Tickの間にいずれのTPをアクティブにするかを選択・決定する。
パーティションスケジューラ21は、次にアクティブにするTPを変更しない(S18でNo)場合には、S11に戻り、同一のTP1についての動作を継続させる。このため、TP1の切り替えタイミングとなるまでの間、S11〜S16までの処理が繰り返される。なお、このときに、S12でTP1内に実行する制御タスク24、25がない場合(S13でYes)は、故障検出処理(S14)が継続されることになる。
パーティションスケジューラ21は、次にアクティブにするTPを変更する(S18でYes)場合には、その変更するタイムパーティションのタスクスケジューラを動作させる(S19)。ここでは、TPXのタスクスケジューラを動作させる。ここで、変数XはTPの番号を示す。すなわち、S19では、TP1を除いた、TP2又はTP3のいずれかを動作させる。そして、TPXのタスクスケジューラが、TPX内のタスクを優先度に応じて実行する(S20)。S20でも、S12と同様に、TPX内のタスクの状態に応じて、タスクが実行される。
1Tickが経過すると、パーティションスケジューラ21が、再びスケジューリングを開始する(S21)。パーティションスケジューラ21は、スケジューリングパターンに従って、次の1Tickの間にいずれのTPをアクティブにするかを選択・決定し、次にアクティブにするTPを変更しない(S22でNo)場合には、S19に戻り、TPXについての動作を継続させる。
パーティションスケジューラ21は、次にアクティブにするTPを変更する(S22でYes)場合には、次の1Tickの間にアクティブにするTPとして、TP1を選択・決定する(S23)。
図6で示した処理に関して、パーティション・スケジューリングの具体例を説明する。
まず、図5Aに例示した通常制御スケジューリングパターンに従って、S11においてスケジューリングを開始した場合を説明する。この場合、S11ではTPX=TP2として開始し、S12〜S18にかけては、TP1のままである。そして、サービスロボット等の制御対象の故障が検出されなければ、S19でTP1からTP2へと変更され、S19〜S22にかけてTP2のままである(つまり、TP2から開始する通常制御スケジューリングパターンが継続される。)。一方で、S15でサービスロボット等の制御対象の故障を検出したと判定されていた場合には、S16で、TPX=TP3となる(つまり、TP3から開始する安全制御スケジューリングパターンに切り替わる。)。
なお、上述の例では、スケジューリングパターンとして、3つのTP(安全監視・制御用のTP1、通常制御用のTP2、安全制御用のTP3)のみを組み合わせた場合を例に説明したが、TP2のような通常制御用パーティションや、TP3のような安全制御用パーティションを、それぞれ複数個存在するものとしてもよい。例えば、2つの通常制御用のTP2及びTP4と、安全監視・制御用のTP1と、2つの安全制御用のTP3及びTP5と、が存在し、これら5つのTP(TP1〜TP5)を組み合わせてスケジューリングパターンを構成してもよい。この場合、S16では、サービスロボット等の制御対象の異常状態の種類を判定し、その異常種類に応じて、安全制御用のTP3またはTP5のいずれかを選択するようにしてもよい。
上述したように、本実施の形態では、OS100は、サービスロボット等の制御対象の故障の検出に応じたスケジューリングパターンに基づいて、次にアクティブとするパーティションを選択・決定するパーティションスケジューラ21を備えている。パーティションスケジューラ21は、各TPにおいて実行されるタスクとは独立して、所定のタイマー周期で動作する。
さらに、図6で例示した処理では、OS100における故障検出結果に応じて、安全制御用のTP3を選択・決定する(S16)ものとして説明したが、本発明はこれに限定されない。例えば、TP1〜TP3のそれぞれからパーティションスケジューラ21に対して実行状況を通知する構成とし、パーティションスケジューラ21が、各TPからの結果通知に応じて、安全制御用のTP3を選択・決定するものとしてもよい。
独立に動作するパーティションスケジューラ21が、全てのTPから結果通知を受ける構成とすることで、パーティションスケジューラ21は、全てのTPに関する状況を一元的に把握することができる。このため、例えば、安全監視・制御用のTP1からの結果通知に応じて、パーティションスケジューラ21が次のパーティションを決定・選択しようとする場合には、パーティションスケジューラ21は、各TPの状況を考慮した上で、正常状態にあるTPのみから次のパーティションを決定・選択することができる。従って、従来技術と比較して、より正確なパーティション・スケジューリングを実現することができるという効果を奏する。
続いて、図7及び図8を参照して、発明の実施の形態1にかかるTP1における処理手順をより具体的に説明する。図7は、発明の実施の形態1にかかるTPにおけるタスクの実行状況を示す図である。図8は、発明の実施の形態1にかかるTP1における処理手順を示すフローチャートである。なお、図7及び図8では、制御タスク24を「Task1」として示し、制御タスク25を「Task2」として示す。また、図7では、最初のTP1についてのみタスクの実行状況を示し、それ以降のTPについては、図示を省略する。
まず、Task1及びTask2が実行可能状態となっているものとする。パーティションスケジューラ21は、TPをTP1に切り替えたときに、タスクスケジューラ23を動作させる。タスクスケジューラ23は、Task1を選択する(S31)。なお、S31では、カーネルモードでタスクスケジューラ23が動作する。そして、タスクスケジューラ23は、選択したTask1を実行する(S32)。なお、S32では、ユーザモードでTask1が動作する。S31及びS32、図6のS12に対応する。
Task1の実行が終了した場合、タスクスケジューラ23は、Task2を選択する(S33)。Task1の実行が終了した場合とは、例えば、Task1が予定されていた処理を全て実行し、スリープして待ち状態となった場合等である。そのため、タスクスケジューラ23は、残りの実行可能状態となっているTask2を選択する。なお、S33では、カーネルモードでタスクスケジューラ23が動作する。そして、タスクスケジューラ23は、選択したTask2を実行する(S34)。なお、S34では、ユーザモードでTask2が動作する。S33及びS34は、図6のS12に対応する。
TP1内の全てのTask1及びTask2の実行が終了し、TP1内に実行するタスクがなくなった場合、OS100は、TP1に故障検出処理を実行するだけの残り時間があるか否かを判定する(S35)。言い換えると、TP1の残り時間が、故障検出処理の実行時間以上であるか否かを判定する。
残り時間は、TP1に対して割り当てられる時間から、TP1に切り替わってからの経過時間を減算することで算出する。ここで、TP1に対して割り当てられる時間は、例えば、実行用メモリ11に予め格納しておき、OS100が参照可能としておく。TP1に切り替わってからの経過時間は、例えば、OS100が、TP1に切り替わってからのTickの発生回数をカウントすることで算出する。また、故障検出処理の実行時間も、例えば、実行用メモリ11に予め格納しておき、OS100が参照可能としておく。故障検出処理の実行時間は、事前に故障検出処理の時間を計測することで決定してもよく、処理内容から処理にかかる時間を推定して決定してもよい。TP1に対して割り当てられる時間及び故障検出処理の実行時間も、Tick数として用意しておくことで、単純に、TP1に対して割り当てられる時間から経過時間を減算するだけでTP1の残り時間が算出でき、TP1の残り時間と故障検出処理の実行時間とを比較するだけで、TP1の残り時間が故障検出処理の実行時間以上であるか否かを判定することができる。
TP1に故障検出処理を実行するだけの残り時間があると判定した場合(S35でYes)、OS100は、故障検出処理を実行する(S36)。TP1に故障検出処理を実行するだけの残り時間がないと判定した場合(S35でNo)、OS100は、故障検出処理は実行しない。S35及びS36は、図6のS14に対応する。
そして、TP1に割り当てられた時間が満了した場合、パーティションスケジューラ21は、TPをTP2又はTP3に切り替える(S37)。S37は、S19でYesに対応する。なお、S35〜37では、カーネルモードでOS100及びパーティションスケジューラ21が動作する。
以上に説明したように、本実施の形態1では、OS100が、TP1において、TP1に属する全ての制御タスク24、25の実行を終了して、ユーザモードからカーネルモードに切り替えたときに、カーネルモードで、故障検出処理を行うようにしている。
これによれば、ユーザモードとカーネルモードとの間での切り替えを発生させることなく、サービスロボット等の制御対象の情報を取得することができる。例えば、故障検出のために確認する必要があるハードウェア数が多かったとしても、図17のS106以降に示すように、ユーザモードとカーネルモードとの間での切り替えが多発しないようにすることができる。したがって、本実施の形態1によれば、プロセッサにかかる負荷を低減することができる。
また、本実施の形態1では、OS100が、TP1内の全ての制御タスク24、25の実行を終了したときにおけるTP1の残り期間が、故障検出処理の実行時間以上である場合に、故障検出処理を実行するようにしている。
これによれば、スケジューリングパターンによって、TP1に割り当てられている時間を超過して故障検出処理が継続実行されることによって、TP1の期間が本来TP1に割り当てられている時間を超過してしまうことを防止することができる。具体的には、本実施の形態1では、OS100が、カーネルモードで、故障検出処理を実行するようにしている。そのため、TP1に割り当てられている時間が満了するまでに、故障検出処理が終了していない場合、パーティションスケジューラ21が、TP2に切り替えても、OS100によって故障検出処理が継続して実行されてしまう。したがって、TP1で実行されるべき故障検出処理がTP2の期間を浸食して実行されてしまうことになり、実質的にTP1の期間が本来TP1に割り当てられている時間を超過する結果を招いてしまう。これに対して、本実施の形態1のように、TP1の残り期間が、故障検出処理の実行時間以上であるのみに場合に、故障検出処理を実行するようにすることで、このような事態を防止することができる。
<発明の実施の形態2>
続いて、本実施の形態2にかかる安全制御装置について説明する。本実施の形態2にかかる安全制御装置の構成は、実施の形態1にかかる安全制御装置1と同様であるため、説明を省略する。
以下、図9〜11を参照して、本実施の形態2にかかる安全制御装置1の処理手順について説明する。なお、図9及び図11では、実施の形態1と同様の処理には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
まず、発明の実施の形態2にかかるパーティションスケジューラ21によるパーティション・スケジューリングについて、図9を用いて説明する。図9は、発明の実施の形態2にかかるパーティション・スケジューリングにおける処理手順の具体例を示すフローチャートである。
本実施の形態2では、図9に示すように、実施の形態1と異なり、パーティションスケジューラ21がTPをTP1に切り替えたとき(S22でYes)に、OS100が、故障検出処理を実行する(S14)。そして、故障検出処理(S14)及びそれに付随する処理(S15、S16)の実行後に、OS100は、TP1のタスクスケジューラ23を動作させて(S11)、TP1内の制御タスク24、25の実行を開始する(S12)。
このように、本実施の形態2では、TPがTP1に切り替わったとき(S22でYes)に、故障検出処理(S14)を実行するようにしている。それに伴い、本実施の形態2では、実施の形態1のように、TP1内の制御タスク24、25の実行終了後には、TP1内に実行する制御タスクがあるか否かの判定(S13)及びその判定結果に応じての故障検出処理等(S14〜16)は行わない。
続いて、図10及び図11を参照して、発明の実施の形態2にかかるTP1における処理手順をより具体的に説明する。図10は、発明の実施の形態2にかかるTPにおけるタスクの実行状況を示す図である。図11は、発明の実施の形態2にかかるTP1における処理手順を示すフローチャートである。なお、図10及び図11では、制御タスク24を「Task1」として示し、制御タスク25を「Task2」として示す。また、図10では、最初のTP1についてのみタスクの実行状況を示し、それ以降のTPについては、図示を省略する。
本実施の形態2では、図10及び図11に示すように、実施の形態1と異なり、パーティションスケジューラ21が、TPをTP1に切り替えたときに、OS100が故障検出処理を実行するようにしている(S36)。このようにすることで、パーティションスケジューラ21がカーネルモードで実行されることを利用して、そのカーネルモードのまま、ユーザモードとカーネルモードとの間の切り替えを発生させることなく、OS100が故障検出処理を実行することができる。
ここで、OS100は、予め設定された設定時間の間、故障検出処理を実行するものとする。設定時間としては、例えば、Task1及びTask2がTP1内で実行することが必須となっている場合には、Task1及びTask2の実行に最も長く時間がかかったとしても、TP1内でTask1及びTask2の実行が終了できるような時間を設定する。設定時間は、例えば、実行用メモリ11に予め格納しておき、OS100が参照可能としておく。
また、設定時間は、安全制御装置1の利用者によって予め設定されるものとする。例えば、安全制御装置1に入力装置(図示せず)を備えるようにして、利用者が入力装置を介して、設定時間を入力して設定するようにする。入力装置は、例えば、マウス、キーボード若しくはタッチパネル等、又はこれらの組み合わせである。
そして、故障検出処理(S36)が終了したときに、OS100が、TP1のタスクスケジューラ23を動作させる。タスクスケジューラ23は、Task1を選択する(S31)。以降、S31〜S34が実行される。そして、Task2の実行(S34)が終了した後に、TP1に割り当てられた時間が満了した場合、パーティションスケジューラ21は、TPをTP2又はTP3に切り替える(S37)。
以上に説明したように、本実施の形態2では、OS100が、パーティションスケジューラ21がTP1に切り替えたとき、かつ制御タスク24,25の実行を開始する前のカーネルモードで、故障検出処理を行うようにしている。
これによれば、ユーザモードとカーネルモードとの間での切り替えを発生させることなく、サービスロボット等の制御対象の情報を取得することができる。したがって、本実施の形態2によれば、プロセッサにかかる負荷を低減することができる。
<発明の実施の形態3>
続いて、本実施の形態3にかかる安全制御装置について説明する。本実施の形態3にかかる安全制御装置の構成は、実施の形態1にかかる安全制御装置1と同様であるため、説明を省略する。
以下、図12〜14を参照して、本実施の形態3にかかる安全制御装置1の処理手順について説明する。なお、図12及び図14では、実施の形態1と同様の処理には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
まず、発明の実施の形態3にかかるパーティションスケジューラ21によるパーティション・スケジューリングについて、図12を用いて説明する。図12は、発明の実施の形態3にかかるパーティション・スケジューリングにおける処理手順の具体例を示すフローチャートである。
本実施の形態3では、図12に示すように、実施の形態1と異なり、S12で制御タスク24、25のいずれかの実行が終了した場合に、OS100は、TP1に属する制御タスク24、25が予め定めた設定数だけ実行終了したか否かを判定する(S23)。そして、TP1に属する制御タスク24、25が予め定められた設定数だけ実行終了したと判定した場合(S23でYes)に、OS100は、故障検出処理を実行する(S14)。具体的には、OS100は、制御タスクの実行を終了するごとに、実行が終了した制御タスクの数をカウントするようにする。そして、カウントした数と、予め定めた設定数とを比較して、一致した場合に、故障検出処理を実行する(S14)ようにする。
ここで、設定数は、例えば、実行用メモリ11に予め格納しておき、OS100が参照可能としておく。また、カウントした、実行終了した制御タスクの数についても、OS100が、実行用メモリ11に格納してカウントするごと更新していくようにすることで、後の判定時(S23)に参照可能としておく。なお、設定数は、実施の形態2で説明した設定時間のように、入力装置を介して、利用者によって予め設定されるようにしてもよい。さらに、上述した実施の形態2と同様に、故障検出処理の実行時間についても、利用者が予め設定するようにしてもよい。
なお、1Tickが経過したときに(S17)、パーティションスケジューラ21は、次にアクティブにするTPを変更しない(S18でNo)場合には、S11に戻り、同一のTP1についての動作を継続させるが、このときに、TP1に属する制御タスク24、25が予め定めた設定数だけ実行終了している場合(S23でYes)は、故障検出処理(S14)が継続されることになる。
続いて、図13及び図14を参照して、発明の実施の形態3にかかるTP1における処理手順をより具体的に説明する。図13は、発明の実施の形態3にかかるTPにおけるタスクの実行状況を示す図である。図14は、発明の実施の形態3にかかるTP1における処理手順を示すフローチャートである。なお、図13及び図14では、制御タスク24を「Task1」として示し、制御タスク25を「Task2」として示す。また、図13では、最初のTP1についてのみタスクの実行状況を示し、それ以降のTPについては、図示を省略する。
本実施の形態3では、図13及び図14に示すように、実施の形態1と異なり、Task1の実行(S32)が終了したときに、OS100が故障検出処理を実行するようにしている(S36)。このようにすることで、Task1の実行が終了して、タスクスケジューリングのためにカーネルモードに切り替わることを利用して、そのカーネルモードのまま、ユーザモードとカーネルモードとの間の切り替えを発生させることなく、OS100が故障検出処理を実行することができる。つまり、本実施の形態3では、設定数が"1"である場合について例示している。
そして、故障検出処理(S36)が終了したときに、OS100が、タスクスケジューラ23を動作させる。タスクスケジューラ23は、Task2を選択する(S33)。そして、Task2の実行(S34)が終了した後に、TP1に割り当てられた時間が満了した場合、パーティションスケジューラ21は、TPをTP2又はTP3に切り替える(S37)。
以上に説明したように、本実施の形態3では、OS100が、TP1において、制御タスク24の実行を終了して、次の制御タスク25の実行が開始されるまでのカーネルモードで、故障検出処理を行うようにしている。
これによれば、ユーザモードとカーネルモードとの間での切り替えを発生させることなく、サービスロボット等の制御対象の情報を取得することができる。したがって、本実施の形態2によれば、プロセッサにかかる負荷を低減することができる。
以上に説明したように、本実施の形態1〜3では、いずれも、OS100が、制御タスク24、25を実行していない期間に、カーネルモードで、制御対象から情報を取得して、取得した情報に基づいて制御対象の異常を検出する異常検出処理を実行するようにしている。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
例えば、実施の形態では、TP1において、制御タスクと、OS100による故障検出処理とを実行するようにしているが、これに限られない。例えば、制御タスク及び故障検出処理のうち、制御タスクのみを実行するTPを備えるようにしてもよく、故障検出処理のみを実行するTPを備えるようにしてもよい。
また、実施の形態1において、TP1の残り期間が、故障検出処理の実行時間以上である場合に、故障検出処理を実行するようにしているが、これに限られない。TP1における全ての制御タスクの実行が終了した時点で、故障検出処理を実行するようにしてもよい。この場合に、実施の形態2と同様に、予め設定された設定時間の間、故障検出処理を実行するようにしてもよい。ただし、好ましくは、TP1の残り期間が、故障検出処理の実行時間以上である場合に、故障検出処理を実行するようにすることで、上述したように、TP1の期間が本来TP1に割り当てられている時間を超過する事態を防止することができる。
また、本実施の形態では、タイム・パーティショニングを行うOSに適用した場合について例示したが、これに限られない。タイム・パーティショニングは行わない、マルチタスクOSに適用するようにしてもよい。
1 安全制御装置
10 プロセッサ
11 実行用メモリ
12 I/Oポート
13 不揮発性メモリ
14 リセット回路
15 マイクロコントローラ
21 パーティションスケジューラ
22 スケジューリングテーブル
23、26、28 タスクスケジューラ
24、25 制御タスク
27 通常制御タスク
28 安全制御タスク
100 オペレーティングシステム
101、102 制御アプリケーション
103 通常制御アプリケーション
104 安全制御アプリケーション

Claims (8)

  1. ユーザモード及びカーネルモードのうち、カーネルモードでアクセス可能である制御対象を制御する制御タスクをユーザモードで実行するオペレーティングシステムと、前記オペレーティングシステムを実行するプロセッサと、を備えた制御装置であって、
    前記オペレーティングシステムは、前記制御タスクを実行していない期間に、カーネルモードで、前記制御対象から情報を取得して、取得した情報に基づいて前記制御対象の異常を検出する異常検出処理を実行する、
    制御装置。
  2. 前記オペレーティングシステムは、少なくとも1つの前記制御タスクに実行時間が割り当てられる制御タイムパーティションを含む複数のタイムパーティションをスケジューリングするパーティションスケジューラを有する、
    請求項1に記載の制御装置。
  3. 前記オペレーティングシステムは、前記制御タイムパーティションにおいて、前記制御タイムパーティションに実行時間が割り当てられる全ての制御タスクの実行を終了して、ユーザモードからカーネルモードに切り替えたときに、前記異常検出処理を実行する、
    請求項2に記載の制御装置。
  4. 前記オペレーティングシステムは、前記全ての制御タスクの実行を終了したときにおける前記制御タイムパーティションの残り期間が、前記異常検出処理の実行時間以上である場合に、前記異常検出処理を実行する、
    請求項3に記載の制御装置。
  5. 前記オペレーティングシステムは、前記パーティションスケジューラが前記制御タイムパーティションに切り替えたとき、かつ前記制御タスクの実行を開始する前に、前記異常検出処理を実行する、
    請求項2に記載の制御装置。
  6. 前記制御タイムパーティションは、複数の前記制御タスクに実行時間が割り当てられ、
    前記オペレーティングシステムは、前記制御タイムパーティションにおいて、前記制御タスクの実行を終了して、次の前記制御タスクの実行を開始するまでの期間に、前記異常検出処理を実行する、
    請求項2に記載の制御装置。
  7. 前記オペレーティングシステムは、前記制御タイムパーティションにおいて、前記制御タスクをスケジューリングするタスクスケジューラを有する、
    請求項2乃至6のいずれか1項に記載の制御装置。
  8. ユーザモード及びカーネルモードのうち、カーネルモードでアクセス可能である制御対象を制御する制御タスクをプロセッサによってユーザモードで実行する制御方法であって、
    前記プロセッサが、前記制御タスクが実行終了したときに、ユーザモードからカーネルモードに切り替えるステップと、
    前記プロセッサが、前記切り替え後のカーネルモードで、前記制御対象から情報を取得して、取得した情報に基づいて前記制御対象の異常を検出するステップと、
    を備えた制御方法。
JP2011118953A 2011-05-27 2011-05-27 制御装置及び制御方法 Expired - Fee Related JP5906584B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011118953A JP5906584B2 (ja) 2011-05-27 2011-05-27 制御装置及び制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011118953A JP5906584B2 (ja) 2011-05-27 2011-05-27 制御装置及び制御方法

Publications (2)

Publication Number Publication Date
JP2012247978A true JP2012247978A (ja) 2012-12-13
JP5906584B2 JP5906584B2 (ja) 2016-04-20

Family

ID=47468368

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011118953A Expired - Fee Related JP5906584B2 (ja) 2011-05-27 2011-05-27 制御装置及び制御方法

Country Status (1)

Country Link
JP (1) JP5906584B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015025597A1 (ja) 2013-08-22 2015-02-26 日立オートモティブシステムズ株式会社 車両制御装置
JP2015067107A (ja) * 2013-09-30 2015-04-13 日立オートモティブシステムズ株式会社 車両用制御装置
JPWO2020162075A1 (ja) * 2019-02-08 2021-12-09 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 異常判定方法、異常判定装置およびプログラム

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02166530A (ja) * 1988-12-20 1990-06-27 Fujitsu Ltd 巡回診断方式
JPH1011319A (ja) * 1996-06-25 1998-01-16 Hitachi Ltd マルチプロセッサシステムの保守方法
JPH10269110A (ja) * 1997-03-26 1998-10-09 Toshiba Corp 計算機システムのハングアップ回避方法並びにこの方法を用いた計算機システム。
JP2008172896A (ja) * 2007-01-10 2008-07-24 Nsk Ltd 車両用電動機の制御装置
JP2010027062A (ja) * 2009-08-21 2010-02-04 Hitachi Ltd 分散制御システム
JP2010122752A (ja) * 2008-11-17 2010-06-03 Fujitsu Ten Ltd 制御装置
JP2010271759A (ja) * 2009-05-19 2010-12-02 Toyota Motor Corp 安全制御装置および安全制御方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02166530A (ja) * 1988-12-20 1990-06-27 Fujitsu Ltd 巡回診断方式
JPH1011319A (ja) * 1996-06-25 1998-01-16 Hitachi Ltd マルチプロセッサシステムの保守方法
JPH10269110A (ja) * 1997-03-26 1998-10-09 Toshiba Corp 計算機システムのハングアップ回避方法並びにこの方法を用いた計算機システム。
JP2008172896A (ja) * 2007-01-10 2008-07-24 Nsk Ltd 車両用電動機の制御装置
JP2010122752A (ja) * 2008-11-17 2010-06-03 Fujitsu Ten Ltd 制御装置
JP2010271759A (ja) * 2009-05-19 2010-12-02 Toyota Motor Corp 安全制御装置および安全制御方法
JP2010027062A (ja) * 2009-08-21 2010-02-04 Hitachi Ltd 分散制御システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
山崎郁太郎: "産業用システム向けソフトウェアの基礎知識 ソフトウェアに要求されるリアルタイム性と信頼性とは", INTERFACE, vol. 第33巻,第8号, JPN6015004824, 1 August 2007 (2007-08-01), JP, pages 59 - 68, ISSN: 0003002527 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015025597A1 (ja) 2013-08-22 2015-02-26 日立オートモティブシステムズ株式会社 車両制御装置
JP2015039983A (ja) * 2013-08-22 2015-03-02 日立オートモティブシステムズ株式会社 車両制御装置
CN105636832A (zh) * 2013-08-22 2016-06-01 日立汽车系统株式会社 车辆控制装置
US9610906B2 (en) 2013-08-22 2017-04-04 Hitachi Automotive Systems, Ltd. Vehicle control device
JP2015067107A (ja) * 2013-09-30 2015-04-13 日立オートモティブシステムズ株式会社 車両用制御装置
JPWO2020162075A1 (ja) * 2019-02-08 2021-12-09 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 異常判定方法、異常判定装置およびプログラム
US11843477B2 (en) 2019-02-08 2023-12-12 Panasonic Intellectual Property Corporation Of America Anomaly determination method, anomaly determination device, and recording medium
JP7512208B2 (ja) 2019-02-08 2024-07-08 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 異常判定方法、異常判定装置およびプログラム

Also Published As

Publication number Publication date
JP5906584B2 (ja) 2016-04-20

Similar Documents

Publication Publication Date Title
JP5136695B2 (ja) 安全制御装置および安全制御方法
US8880201B2 (en) Safety controller and safety control method
EP2677377B1 (en) Safety control device and safety control method
JP5240402B2 (ja) 安全制御装置および安全制御方法
US8756606B2 (en) Safety controller and safety control method in which time partitions are scheduled according to a scheduling pattern
JP2010271759A (ja) 安全制御装置および安全制御方法
JP5621857B2 (ja) 安全制御装置および安全制御方法
JP5834935B2 (ja) 安全制御装置及び安全制御方法
JP5906584B2 (ja) 制御装置及び制御方法
JP5633501B2 (ja) 制御装置および制御方法
JP5853716B2 (ja) 情報処理装置およびタスク制御方法
JP6004057B2 (ja) 情報処理装置およびdmaコントローラの動作確認方法
JP5849731B2 (ja) 情報処理装置及びデータ格納方法
JP5803689B2 (ja) 情報処理装置およびdmaコントローラの動作確認方法
JP5699910B2 (ja) 制御装置および制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140709

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140715

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140903

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150401

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151008

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160223

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160307

R151 Written notification of patent or utility model registration

Ref document number: 5906584

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees