(57)【要約】【課題】ハードリアルタイム制御系の実行の遅れを防ぐことができるリアルタイム分散制御システムを提供する。【解決手段】リアルタイム分散制御システム１は、受信側コンピュータ５０ｂは、メッセージ４０を受信する受信コンポーネント２０と、システムが起動すると、受信コンポーネント２０の動作周期を取得し、取得した動作周期と関連付けた監視条件を送信レート監視条件設定部３３に送信する動作周期取得部３２と、を有し、送信側コンピュータ５０ａは、メッセージ４０を送信する送信コンポーネント１０と、監視条件を送信レート監視条件記憶部３５に設定する送信レート監視条件設定部３３と、送信レート監視条件記憶部３５に記憶された監視条件に基づいて、送信コンポーネント１０からの送信レートを監視し、メッセージの送信レートが監視条件を満たさない場合に、メッセージ４０の送信間隔を抑制する送信レート監視部３０と、を有する。【選択図】図１
2011124751.tif 000002
【特許請求の範囲】
【請求項１】
第１のコンピュータと、第２のコンピュータと、を含んでなるシステムにおいて、前記第２のコンピュータが前記第１のコンピュータからのメッセージを受信してリアルタイムで制御されるリアルタイム分散制御システムであって、
前記第２のコンピュータは、
前記メッセージを受信する受信コンポーネントと、
前記システムが起動すると、前記受信コンポーネントの動作周期を取得し、取得した動作周期と関連付けた監視条件を前記第１のコンピュータに送信する動作周期取得部と、を有し、
前記第１のコンピュータは、
前記メッセージを送信する送信コンポーネントと、
前記監視条件を送信レート監視条件記憶部に設定する送信レート設定部と、
前記送信レート監視条件記憶部に記憶された前記監視条件に基づいて、前記送信コンポーネントからの送信レートを監視し、メッセージの送信レートが前記監視条件を満たさない場合に、前記メッセージの送信間隔を抑制する送信レート監視部と、を有する
ことを特徴とするリアルタイム分散制御システム。
【請求項２】
前記動作周期取得部は、取得した動作周期と等しい値を許容最小送信間隔として、送信レート設定部へ送信し、
送信レート設定部は、受信した前記許容最小送信間隔を前記監視条件として前記送信レート監視条件記憶部に設定する
ことを特徴とする請求項１に記載のリアルタイム分散制御システム。
【請求項３】
前記送信レート監視部は、前記メッセージの送信間隔が前記許容最小送信間隔より小さいことを検出した場合に、前記送信コンポーネントを一時停止させて、前記送信コンポーネントからの前記メッセージの送信を遅延させる
ことを特徴とする請求項２に記載のリアルタイム分散制御システム。
【請求項４】
前記送信レート監視部は、前記メッセージの送信間隔が前記許容最小送信間隔より小さいことを検出した場合に、前記メッセージを破棄する
ことを特徴とする請求項２に記載のリアルタイム分散制御システム。
【請求項５】
前記送信コンポーネントは、
前記送信コンポーネントが通常の動作周期で動作する通常モードと、該動作周期を遅くする回復モードとを切り替えができる動作モード設定部を有し、
前記前記送信レート監視部から、前記メッセージの送信レートが前記監視条件を満たさない旨の指令を受信すると、
前記動作モード設定部は、前記通常モードから前記回復モードに切り替える
ことを特徴とする請求項１に記載のリアルタイム分散制御システム。
【請求項６】
前記受信コンポーネントは、許容受信間隔周期を記憶する許容受信間隔記憶部を有し、
前記動作周期取得部は、前記許容受信間隔周期が前記取得した動作周期より大きければ、前記許容受信間隔周期を前記監視条件とする
ことを特徴とする請求項１に記載のリアルタイム分散制御システム。
【請求項７】
前記第１のコンピュータは、
前記送信コンポーネントからの前記メッセージの送信を監視する第１のミドルウェアを有し、前記第１のミドルウェアに前記送信レート設定部と、送信レート監視部と、を備え、
前記第２のコンピュータは、前記受信コンポーネントの動作状態を監視する第２のミドルウェアを有し、前記第２のミドルウェアに前記動作周期取得部を備える
ことを特徴とする請求項１に記載のリアルタイム分散制御システム。
【請求項８】
第１のコンピュータと、第２のコンピュータと、を含んでなるシステムにおいて、
前記第２のコンピュータは、前記メッセージを受信する受信コンポーネントと、
前記受信コンポーネントの動作周期を取得する動作周期取得部と、を有し、
前記第１のコンピュータは、前記メッセージを送信する送信コンポーネントと、
監視条件を送信レート監視条件記憶部に設定する送信レート設定部と、前記送信レート監視条件記憶部に記憶された前記監視条件に基づいて、前記送信コンポーネントからの送信レートを監視する送信レート監視部と、を有し、
前記第２のコンピュータが前記第１のコンピュータからのメッセージを受信してリアルタイムで制御されるリアルタイム分散制御方法であって、
前記動作周期取得部は、
前記システムが起動すると、前記受信コンポーネントから取得した動作周期と関連付けた前記監視条件を前記送信レート設定部に送信し、
前記送信レート設定部は、受信した前記監視条件を送信レート監視条件記憶部に設定し、
前記送信レート監視部は、前記メッセージの送信レートが前記監視条件を満たさない場合に、前記メッセージの送信間隔を抑制する
ことを特徴とするリアルタイム分散制御方法。
【請求項９】
前記動作周期取得部は、取得した動作周期と等しい値を許容最小送信間隔として、送信レート設定部へ送信し、
送信レート設定部は、受信した前記許容最小送信間隔を前記監視条件として前記送信レート監視条件記憶部に設定する
ことを特徴とする請求項８に記載のリアルタイム分散制御方法。
【請求項１０】
前記送信レート監視部は、前記メッセージの送信間隔が前記許容最小送信間隔より小さいことを検出した場合に、前記送信コンポーネントを一時停止させて、前記送信コンポーネントからの前記メッセージの送信を遅延させる
ことを特徴とする請求項９に記載のリアルタイム分散制御方法。
【請求項１１】
第１のコンピュータと、第２のコンピュータと、を搭載したロボットにおいて、前記第２のコンピュータが前記第１のコンピュータからのメッセージを受信して制御されるロボットであって、
前記第２のコンピュータは、
前記メッセージを受信する受信コンポーネントと、
前記ロボットが起動すると、前記受信コンポーネントの動作周期を取得し、取得した動作周期と関連付けた前記監視条件を前記第１のコンピュータに送信する動作周期取得部と、を有し
前記第１のコンピュータは、
前記メッセージを送信する送信コンポーネントと、
前記監視条件を送信レート監視条件記憶部に設定する送信レート設定部と、
前記送信レート監視条件記憶部に記憶された前記監視条件に基づいて、前記送信コンポーネントからの送信レートを監視し、メッセージの送信レートが前記監視条件を満たさない場合に、前記メッセージの送信間隔を抑制する送信レート監視部と、を有する
ことを特徴とするロボット。
【請求項１２】
前記動作周期取得部は、取得した動作周期と等しい値を許容最小送信間隔として、送信レート設定部へ送信し、
送信レート設定部は、受信した前記許容最小送信間隔を前記監視条件として前記送信レート監視条件記憶部に設定する
ことを特徴とする請求項１１に記載のロボット。
【請求項１３】
前記送信レート監視部は、前記メッセージの送信間隔が前記許容最小送信間隔より小さいことを検出した場合に、前記送信コンポーネントを一時停止させて、前記送信コンポーネントからの前記メッセージの送信を遅延させる
ことを特徴とする請求項１２に記載のロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードリアルタイム制御系の実行の遅れを防ぐことができるリアルタイム分散制御システム、リアルタイム分散制御方法、およびロボットに関する。
【背景技術】
【０００２】
ロボット・メカトロニクス機器等の制御システムは、物理的な機械装置を駆動制御するため、リアルタイム処理が必要になる。また、制御装置をコンパクトに実装するため、複数の小型コンピュータを用いた分散制御方式が用いられることが多い。
【０００３】
このようなリアルタイム分散制御システムのソフトウェアの開発効率を高めるための技術として、非特許文献１には、メッセージ駆動方式のコンポーネント指向ソフトウェアフレームワークが掲載されている。この技術では、ソフトウェアを機能単位にソフトウェアコンポーネントとして開発し、コンポーネントを組み合わせて制御システムのアプリケーションソフトを開発する。
【０００４】
コンポーネントはポートと呼ばれる仮想的な入出力部を持ち、ポート間を接続してメッセージを送受信することによって、コンポーネントを連携動作させる。この機構は、共通基本ソフトウェアであるミドルウェアにより実現されており、コンポーネント間のメッセージ通信はミドルウェアが仲介して実行する。メッセージを送信する側と受信する側のコンポーネントが異なるコンピュータの上で実行されている場合には、コンピュータ間の通信回線を通じてメッセージを送信する。送信側と受信側が同じコンピュータの上で実行されている場合には、ソフトウェアによる仮想通信路によって、メッセージを送信する。コンポーネント指向ソフトウェアフレームワークを用いると、コンポーネントを容易に組み合わせたり組み替えたりできるので、コンポーネントの再利用性が高く、開発効率が高まる。
【０００５】
リアルタイム分散制御システムは、ハードリアルタイム部とソフトリアルタイム部に分かれる。ハードリアルタイム部は、処理の遅れが許されず、締め切り時刻までに必ず処理を完了することが求められる部分であり、通常は一定周期で実行される。例えば、サーボ制御がこれに該当する。このような処理は、「制御系」と呼ばれることがあるが、ソフトリアルタイムも含めた全体を示す「制御システム」と区別するため、ここでは「ハードリアルタイム制御系」と呼ぶ。ソフトリアルタイム部は、処理が若干遅れても大きな問題が生じない部分であり、例えば、人とのインターフェースに関する部分や、大局的な行動計画・判断を行う処理がこれに該当する。このような処理は「情報系」とも呼ばれる。
【０００６】
ロボットの制御システムでは、ソフトリアルタイムの情報系が行動を決定し、動作指示をハードリアルタイム制御系に伝えて、ハードリアルタイム制御系が機械装置を制御してロボットを動作させる。このような、情報系とハードリアルタイム制御系が混在しているシステムでは、情報系がハードリアルタイム制御系に大量の動作指示メッセージを送ると、ハードリアルタイム制御系の処理が遅れる恐れがある。そのため、情報系からハードリアルタイム制御系に送信するメッセージの量が過大にならないように対策する必要がある。
【０００７】
従来は、送信メッセージの量を考慮してソフトウェアを設計することによって対処していたが、プログラムの誤りによって過剰なメッセージを発生する可能性は残る。また、メッセージを送信するコンポーネントを外部から購入し、内部の設計情報が入手できない場合には、メッセージの最大量が分からないという問題がある。
【０００８】
また、システムの信頼性を高めるには、メッセージの量を監視・制限する機構をミドルウェア中に設けるのが望ましい。ロボット・メカトロニクス機器のリアルタイム制御に関するものではないが、メッセージ量の制御に関する関連技術の一例として、特許文献１において、メッセージに基づく処理量を監視し、同一の通信機器宛のメッセージに基づく処理量が所定の基準値を超えた場合に送信レートを制限してメッセージを送信することを特徴とする通信システムが開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００１−３３９４６５号公報
【非特許文献】
【００１０】
【非特許文献１】人間共生ロボット “EMIEW 2” のコンポーネント指向ソフトウェア構造、日本機械学会ロボティクス・メカトロニクス講演会'08、2P1-I04
【発明の概要】
【発明が解決しようとする課題】
【００１１】
特許文献１の例では、メッセージの送信を制限するかどうかを「基準値」によって判断するとしているが、どのように設定するかは明確にされていない。もし、システム開発者が人手で決める必要があるとき、ロボット制御システムの場合、多種類のコンポーネントが用いられ、許容できるメッセージ量も多様である。このため、人手で設定すると誤りが生じる恐れがある。また、コンポーネントの組合せの構成が変わると、許容できるメッセージ量が変わるので、再度設定が必要になり、手間が大きいという問題がある。
【００１２】
本発明は、前記の課題を解決するための発明であって、ハードリアルタイム制御系の実行の遅れを防ぐことができるリアルタイム分散制御システム、リアルタイム分散制御方法、およびロボットを提供することを目的とする。
【課題を解決するための手段】
【００１３】
前記目的を達成するため、本発明のリアルタイム分散制御システムは、第１のコンピュータ（例えば、送信側コンピュータ５０ａ）と、第２のコンピュータ（例えば、受信側コンピュータ５０ｂ）と、を含んでなるシステムにおいて、第２のコンピュータが第１のコンピュータからのメッセージを受信してリアルタイムで制御される。
第２のコンピュータは、メッセージを受信する受信コンポーネントと、システムが起動すると、受信コンポーネントの動作周期を取得し、取得した動作周期と関連付けた監視条件を第１のコンピュータに送信する動作周期取得部と、を有し、
第１のコンピュータは、メッセージを送信する送信コンポーネントと、監視条件を送信レート監視条件記憶部に設定する送信レート設定部（例えば、送信レート監視条件設定部３３）と、送信レート監視条件記憶部に記憶された監視条件に基づいて、送信コンポーネントからの送信レートを監視し、メッセージの送信レートが監視条件を満たさない場合に、メッセージの送信間隔を抑制する送信レート監視部と、を有することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、ハードリアルタイム制御系の実行の遅れを防ぐことができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態のリアルタイム分散制御システムの一例を示す構成図である。
【図２】リアルタイム分散制御システムのハードウェアの一例を示す構成図である。
【図３】リアルタイム分散制御システムのソフトウェアの階層構造の一例を示す構成図である。
【図４】リアルタイム分散制御システムの初期設定動作を示すシーケンス図である。
【図５】受信コンポーネントの動作タイミングを示すシーケンス図である。
【図６】送信レート監視部を備えない比較例における動作タイミング一例を示すシーケンス図である。
【図７】本実施形態のリアルタイム分散制御システムにおける監視制御動作のタイミングの一例を示すシーケンス図である。
【図８】本実施形態のリアルタイム分散制御システムにおけるその他の監視制御動作のタイミングの一例を示すシーケンス図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図１は、本実施形態のリアルタイム分散制御システムの一例を示す構成図である。図１は、システムの構成を模式的に示したものであり、箱は機能を、箱を結ぶ線はデータまたは動作指示の伝達を示している。実際の機能は、コンピュータのハードウェアとそこに搭載されたソフトウェアにより実現される。本発明は、制御システムの基盤的な機能に関するものであり、本実施形態の構成を用いて、さまざまな制御システムを構成することができる。ここでは、一例として２個のコンポーネントを含む最小限のシステムの例を示す。
【００１７】
本実施形態のリアルタイム分散制御システム１は、送信ポート１１を備える送信コンポーネント１０と、受信ポート２１を備える受信コンポーネント２０を有する。送信ポート１１と受信ポート２１の間は、送信レート監視部３０とコンポーネント間通信送信部３７とコンポーネント間通信受信部３８を経由して接続されている。送信コンポーネント１０は、送信ポート１１からメッセージ４０を送信し、メッセージ４０は、送信レート監視部３０とコンポーネント間通信送信部３７とコンポーネント間通信受信部３８を経由して、受信コンポーネント２０の受信ポート２１に送られる。
【００１８】
ここで、送信コンポーネント１０は、ソフトリアルタイムの情報系のソフトウェアであり、受信コンポーネント２０は、ハードリアルタイム制御系のソフトウェアである。送信コンポーネント１０は、受信コンポーネント２０に動作指示を伝えるメッセージ４０を送信するが、その間隔は不定である。受信コンポーネント２０は、周期的に制御動作を行うのに加えて、送信コンポーネント１０から動作指示のメッセージを受信したらそれに対応するための動作設定処理を行う。
【００１９】
より具体的な例で説明すると、例えば、送信コンポーネント１０は、移動ロボットの大局的な移動計画を行い、目的地の座標を生成して、動作指示メッセージとして送信する。受信コンポーネント２０は、周期的に移動機構の制御を行うとともに、送信コンポーネント１０から受信した目的地の座標に従って，目的地に向けて移動ロボットを移動させるように、移動機構の制御の目標値を設定する。
【００２０】
送信レート監視部３０は、送信ポート１１から送られてくるメッセージ４０の時間間隔を監視し、送信レート監視条件記憶部３５に設定されている許容最小送信間隔Ｔｍと比較し、メッセージ時間間隔（メッセージ送信間隔）がＴｍよりも短い場合、すなわちメッセージ４０の送信レートが条件を超過している場合には、送信コンポーネント１０を一時停止させてメッセージ４０の時間間隔を拡大する。ここで、許容最小送信間隔Ｔｍは、受信コンポーネント２０のハードリアルタイム性を損なわずにメッセージを送信できる最小の時間間隔である。
【００２１】
動作周期取得部３２は、受信コンポーネント２０からハードリアルタイム制御系の制御周期を取得し、それに基づいて許容最小送信間隔Ｔｍを決定し、それを送信レート監視条件設定部３３（送信レート設定部）に伝達する。送信レート監視条件設定部３３は、受け取った許容最小送信間隔Ｔｍを送信レート監視条件記憶部３５に書き込む。
【００２２】
なお、送信コンポーネント１０には、動作モード設定部１２を設けてもよいし、また、受信コンポーネント２０には、許容最小受信間隔記憶部３６（許容受信間隔記憶部）を設けてもよいが、説明は後述する。
【００２３】
図２は、リアルタイム分散制御システムのハードウェアの一例を示す構成図である。また、図３は、リアルタイム分散制御システムのソフトウェアの階層構造の一例を示す構成図である。本実施形態のリアルタイム分散制御システムは、図２に示すハードウェアと、その上で動作する図３に示すソフトウェアにより実現される。ここでは、一例として、２つの制御用のコンピュータを備える例を示す。
【００２４】
図２に示すように、コンピュータ５０ａ（第１のコンピュータ）、コンピュータ５０ｂ（第２のコンピュータ）は、それぞれ、処理装置（ＣＰＵ：Central Processing Unit）５１を備えている。処理装置５１には、プログラムとデータを格納するメモリ５２と、入出力回路５３と、通信回路５４が接続されている。コンピュータ５０ａとコンピュータ５０ｂは、通信回路５４とコンピュータ間通信路５５により接続されている。なお、図２に示す実施形態では、コンピュータ５０ａとコンピュータ５０ｂには、処理装置５１をそれぞれ有しており、異なる処理装置である。メモリ５２、入出力回路５３、通信回路５４も同様である。なお、コンピュータ５０ａとコンピュータ５０ｂは、処理装置５１と処理装置５２を一つの集積回路に搭載したマルチコアＣＰＵを用いて構成することもできる。その場合は、通信回路５４およびコンピュータ間通信路５５は、２つ処理装置（コア）間のデータ交換のためのコア間通信回路となる。また、メモリ５２と入出力回路５３は、一部または全部を共有することがある。
【００２５】
図３（ａ）にコンピュータ５０ａのソフトウェアの階層構造の構成を示し、図３（ｂ）には、コンピュータ５０ｂのソフトウェアの階層構造の構成を示す。図３に示すように、２つのコンピュータ５０ａ、５０ｂでは、それぞれ基本ソフトウェアとして、オペレーティングシステム（ＯＳ：Operating System）６１ａ，６１ｂが動作しており、その上でミドルウェア６２ａ（第１のミドルウェア）、ミドルウェア６２ｂ（第２のミドルウェア）が動作している。さらにその上で、アプリケーションソフトウェアであるソフトウェアコンポーネントが動作しており、ここでは送信コンポーネント１０および受信コンポーネント２０が動作している。
【００２６】
ここで、コンピュータ５０ａ，５０ｂの上で、それぞれ送信コンポーネント１０、受信コンポーネント２０が動作するので、以下、コンピュータ５０ａ，５０ｂをそれぞれ送信側コンピュータ、受信側コンピュータとも称する。なお、ミドルウェア６２ａ、６２ｂの上では、さらに複数のソフトウェアコンポーネントを実行させることもできる。
【００２７】
送信レート監視部３０は、送信コンポーネント１０と同じく、送信側コンピュータ５０ａに搭載されており、送信側コンピュータ５０ａの上のミドルウェア６２ａに含まれている。また、コンポーネント間通信送信部３７と送信レート監視条件設定部３３も、送信側コンピュータ５０ａの上のミドルウェア６２ａに含まれている。また、コンポーネント間通信受信部３８と動作周期取得部３２は、受信側コンピュータ５０ｂに搭載されており、受信側コンピュータ５０ｂの上のミドルウェア６２ｂに含まれている。
【００２８】
コンポーネント間通信送信部３７は、コンポーネント間通信受信部３８にメッセージ４０（図１参照）を送信する。また、動作周期取得部３２は、送信レート監視条件設定部３３に許容最小送信間隔Ｔｍ（図１参照）を送る。送信側コンピュータ５０ａと受信側コンピュータ５０ｂとの間のデータ伝達は、物理的には、コンピュータ間通信路５５を用いた通信により行う。送信レート監視部３０と送信コンポーネント１０を同じ送信側コンピュータ５０ａに搭載しているので、コンピュータ間通信路５５でメッセージ４０を送信する前に、送信レートを監視して過剰なメッセージ送信が抑制される。このため、コンピュータ間通信路５５の負荷が低減され、他のメッセージの遅れが防止される。また、受信側コンピュータ５０ｂの負荷が低減され、そこに搭載されている、ハードリアルタイム性が要求される受信コンポーネント２０の動作の遅れが防止される。
【００２９】
なお、図１に示したリアルタイム分散制御システムの例では、コンポーネントが２個の最小構成の例を示したが、より多くのコンポーネントを含むシステム場合であっても、本発明を適用できる。また、一つのコンポーネントに複数の送信ポート１１や受信ポート２１を設けてもよい。その場合、メッセージ４０を送信する送信ポート１１・受信ポート２１の各々のペアに対して送信レート監視部３０を設けるとよい。
【００３０】
また、図２、図３に示したハードウェア構成、ソフトウェア構成の例では、コンピュータが２個の例を示したが、３個以上のコンピュータを用いることもある。また、上記の例では、送信コンポーネント１０と受信コンポーネント２０を異なるコンピュータの上のソフトウェアで実現しているが、送信コンポーネント１０と受信コンポーネント２０を同一のコンピュータに搭載することもある。その場合は、コンピュータ間通信路５５の代わりにソフトウェアによる仮想的に通信路が使用される。
【００３１】
以下、本実施形態のリアルタイム分散制御システムの動作を説明する。動作には、初期設定動作（図４参照）と、監視制御動作（図５〜図７参照）の２段階がある。
【００３２】
まず、初期設定動作について、適宜図１を参照して説明する。
図４は、リアルタイム分散制御システムの初期設定動作を示すシーケンス図である。システムに電源が投入されて起動すると、動作周期取得部３２が、受信コンポーネント２０に動作周期を問い合わせると（８１）、受信コンポーネント２０は、動作周期について回答し（８２）、受信コンポーネント２０の動作周期を取得する。動作周期取得部３２は、取得した動作周期と等しい値を許容最小送信間隔Ｔｍとして、送信レート監視条件設定部３３へ送信する（８３）。送信レート監視条件設定部３３は、受け取った許容最小送信間隔Ｔｍを送信レート監視部３０に伝達し（８４）、送信レート監視条件記憶部３５に書き込む（設定する）。
【００３３】
なお、動作周期の「周期」は、期間（時間）であるため、単位は通常、秒（記号：ｓ）であり、一般的には、量記号はＴで表す。また、許容最小送信間隔Ｔｍも、単位は通常、秒（記号：ｓ）である。よって、動作周期と許容最小送信間隔Ｔｍとは、同一の次元として表現される。
【００３４】
ここで、動作周期に基づいて許容最小送信間隔Ｔｍを決める理由を説明する。
図５は、受信コンポーネントの動作タイミングを示すシーケンス図である。図５により、ハードリアルタイム制御系である受信コンポーネント２０の動作タイミングを説明する。受信コンポーネント２０は、一定の時間間隔である動作周期Ｔ１で発生するタイマトリガ７１により起動されて、周期的に制御処理７２を行う。動作周期Ｔ１で遅れなく処理を行うためには、制御処理７２にかかる処理時間Ｔ２は、動作周期Ｔ１よりも短い必要がある。つまり、制御処理の７２の終了時刻が次のトリガの時刻よりも遅れないことが、このシステムのハードリアルタイム性のための締め切り条件である。
【００３５】
処理の空き時間をＴ３とすると、これらの時間には、Ｔ１＝Ｔ２＋Ｔ３の関係がある。送信コンポーネント１０から送られてくる動作指示のメッセージ送信７３に対する動作設定処理７４の処理時間をＴ４とすると、もし、処理時間Ｔ４が受信コンポーネント２０の処理の空き時間Ｔ３よりも大きいと、制御処理７２の完了は、次のトリガに必ず遅れる状態になる。
【００３６】
前記状態では、動作指示を一切受け付けられなくなってしまうので、このような場合は、より速いコンピュータを使用するなどの方法によって、処理時間Ｔ２とＴ４を短縮して、処理時間Ｔ４が空き時間Ｔ３よりも小さくなるように再設計が行われる。このため、通常、処理時間Ｔ４は空き時間Ｔ３以下であることが保証されており、ハードリアルタイム動作を乱さずに、動作周期Ｔ１の間に動作設定処理７４を最低限１回は実行できる。
【００３７】
許容最小送信間隔Ｔｍ（図１参照）を動作周期Ｔ１と等しく設定すれば、受信コンポーネント２０に到着するメッセージ送信７３のメッセージ時間間隔Ｔ５が動作周期Ｔ１以上になるので、動作周期Ｔ１の間の動作設定処理７４の実行回数が１回以下になり、ハードリアルタイム性が維持できる。
【００３８】
初期設定動作が完了すると、継続的な監視制御動作に入るが、ここで、本実施形態の監視制御動作の説明に先立ち、比較対象（従来技術）として、送信レート監視部３０がなく、送信コンポーネント１０の送信ポート１１から、受信コンポーネント２０の受信ポート２１へ直接接続されている場合の動作と、その場合の課題を説明する。
【００３９】
図６は、送信レート監視部を備えない比較例における動作タイミングの一例を示すシーケンス図である。この場合、送信コンポーネント１０から送信されたメッセージ送信７３ａ〜７３ｅは、送信間隔のチェックなしに、即座に受信コンポーネント２０に送られる。また、受信コンポーネント２０は、一定の時間間隔の動作周期Ｔ１で制御処理を行うためのタイマトリガ７１ａ〜７１fを受けている。受信コンポーネント２０は、メッセージおよびトリガの先着順により、動作指示に対する動作設定処理７４ａ〜７４ｅと制御処理７２ａ〜７２fを行っている。なお、図６において、受信コンポーネント２０は、メッセージ送信７３ｅと、タイマトリガ７１ｄとほぼ同時に受信しているとみえるが、ここでは、メッセージ送信７３ｅが先着している。
【００４０】
図６に示す例では、メッセージ送信７３ａ〜７３ｅのうち、メッセージ送信７３ａ，７３ｂ，７３ｃについては、送信コンポーネント１０が許容最小送信間隔Ｔｍ（＝Ｔ１）以上の間隔を空けてメッセージを送信している。一方、メッセージ送信７３ｃの次のメッセージ送信７３ｄ，７３ｅについては、短い（Ｔｍ未満）の時間間隔で連続してメッセージを送信している。この例では、メッセージ送信７３ｃを含めると、短期間に３個のメッセージ送信をしている。このような事態は、例えば、ロボットに搭載されているセンサが、急に多くの物体や人を検知し、送信コンポーネント１０に搭載されている移動計画を行うソフトウェアが、行き先を急に連続して変更した場合に生じることがある。
【００４１】
この場合、メッセージ送信７３ａ，７３ｂ，７３ｃには十分な間隔があるため、それに対応する動作設定処理７４ａ，７４ｂ，７４ｃを行っても、制御処理７２ａ，７２ｂ，７２ｃの完了が次のトリガよりも遅れることはない。
【００４２】
一方、メッセージ送信７３ｃの次のメッセージ送信７３ｄ，７３ｅは、短い時間間隔で連続的に送信されているので、制御処理７２ｃと７２ｄの間に、動作設定処理７４ｃ，７４ｄ，７４ｅが実行され、結果として、制御処理７２ｄの完了が次のトリガ７１ｅよりも遅れる。
【００４３】
つまり、締め切り時刻を守れず、ハードリアルタイム性が満たされなくなる。このように、送信コンポーネント１０がメッセージを集中して生成し、それがそのまま受信コンポーネント２０へ送信されると、制御処理の実行タイミングが乱れることがある。その結果、制御される機械装置が異常な振動を起こすなどの問題が生じる恐れがある。
【００４４】
そこで、本実施形態のリアルタイム分散制御システムでは、メッセージ送信レートを監視して、送信レートを抑制する機能を備えている。本実施形態の監視制御動作について、図７を参照して説明する。
【００４５】
図７は、本実施形態のリアルタイム分散制御システムにおける監視制御動作のタイミングの一例を示すシーケンス図である。最初に概要を説明すると、送信コンポーネント１０から送信されるメッセージ４０（図１参照）は、まず、送信レート監視部３０に渡される。送信レート監視部３０は、メッセージ４０を受け取った時刻と、１回前にメッセージ４０を送信した時刻の差分であるメッセージ時間間隔Ｔ５を計測し、許容最小送信間隔Ｔｍ（図１参照）と比較する。メッセージ時間間隔Ｔ５が許容最小送信間隔Ｔｍよりも大きい場合には、即座にメッセージ４０を受信コンポーネント２０へ送る。一方、メッセージ時間間隔Ｔ５が許容最小送信間隔Ｔｍよりも短い場合には、送信コンポーネント１０を一時停止させ、前回のメッセージ送信からＴｍの時間が経過する時刻まで待つ。その後、メッセージ４０を受信コンポーネント２０に送信し、送信コンポーネント１０の動作を再開させる。
【００４６】
前記の動作を、図７を参照して詳細に説明する。この例でも、図６に示した比較例と同様に、送信コンポーネント１０は、メッセージ送信７３ａ，７３ｂ，７３ｃについては、許容最小送信間隔Ｔｍ以上の時間を空けて送信し、メッセージ送信７３ｃの次のメッセージ送信７３ｄ，７３ｅについては、連続して送信している。
【００４７】
送信レート監視部３０は、メッセージ送信７３ａ，７３ｂ，７３ｃに対しては、メッセージ時間間隔Ｔ５ｂ，Ｔ５ｃが許容最小送信間隔Ｔｍよりも大きいため、そのまま受信コンポーネント２０へ転送する（メッセージ送信７５ａ，７５ｂ，７５ｃ）。ここまでの動作タイミングは、図６の比較例と同様である。
【００４８】
一方、メッセージ送信７３ｄに対しては、受信コンポーネント２０への１回前のメッセージ送信７５ｃから、メッセージ送信７３ｄまでのメッセージ時間間隔Ｔ５ｄが許容最小送信間隔Ｔｍよりも短いので、送信レート監視部３０は、メッセージ間隔を拡大するために、送信コンポーネント１０を一時停止させ、送信コンポーネント１０に通知し（通知送信７６ｄ）、送信レート監視部３０は、前回のメッセージ送信７５ｃからＴｍの時間が経過するまで待つ。
【００４９】
メッセージ送信７５ｃからＴｍ経過後、送信レート監視部３０は、受信コンポーネント２０にメッセージを送信する（メッセージ送信７５ｄ）とともに、送信コンポーネント１０の動作を再開させる通知をする（通知送信７７ｄ）。なお、メッセージ送信７３ｄと、メッセージ送信７５ｄとは、同じ内容のメッセージである。
【００５０】
送信コンポーネント１０は、動作再開の通知を受理すると動作を再開し、次のメッセージをすぐに送信するので（メッセージ送信７３ｅ）、送信レート監視部３０は、メッセージ送信７３ｄの時と同様に、送信コンポーネント１０を一時停止させるため、送信コンポーネント１０に通知し（通知送信７６ｅ）、送信レート監視部３０は、前回のメッセージ送信７５ｄからＴｍの時間が経過するまで待つ。その後、送信レート監視部３０は、受信コンポーネント２０へメッセージを送信し（メッセージ送信７５ｅ）、送信コンポーネント１０に動作を再開させる通知をし（通知送信７７ｅ）、送信コンポーネント１０の動作を再開させる。なお、メッセージ送信７３ｅと、メッセージ送信７５ｅとは、同じ内容のメッセージである。
【００５１】
前記により、送信コンポーネント１０が連続してメッセージを送信しようとした場合でも、送信レート監視部３０が、送信コンポーネント１０を一時停止させてメッセージの間隔を広げ、受信コンポーネント２０へのメッセージ送信間隔が、許容最小送信間隔Ｔｍ以上になるように制御される。これによって、動作設定処理７４ｃ，７４ｄ，７４ｅを行っても、制御処理７２ｄ，７２ｅの完了が次のトリガよりも遅れることは無く、ハードリアルタイム性が維持できる。
【００５２】
なお、送信コンポーネント１０を一時停止させるには、ＯＳの機能を用いて、送信コンポーネント１０のソフトウェアを実行しているタスク（実行スレッド）を停止させればよい。あるいは、送信コンポーネント１０と送信レート監視部３０のソフトウェアが同じタスクで実行されている場合は、送信レート監視部３０がメッセージ送信可能になる時刻まで一時停止すれば、送信コンポーネント１０も停止する。
【００５３】
前記のように、本実施形態のリアルタイム分散制御システムでは、送信コンポーネント１０から受信コンポーネント２０へのメッセージ送信の間隔が、許容最小送信間隔Ｔｍよりも短くならないように自動的に制御されるので、送信コンポーネント１０のプログラムに、メッセージ送信レートを管理する特別な処理を加えなくても、受信コンポーネント２０の制御動作の遅れが防止されて、ハードリアルタイム性が維持でき、かつ、開発者の負担が低減される。
【００５４】
また、前記の構成では、送信レート監視部３０がメッセージ送信７３を抑制した場合でも、送信コンポーネント１０が送信したメッセージ４０は失われず、全てが受信コンポーネント２０へ送信されるので、時間は遅れるが、全ての動作指示を完了できるという利点がある。また、もし送信コンポーネント１０に設計の誤りがあって、異常に大量のメッセージを生成したとしても、自動的にメッセージ送信レートが抑制されて、受信コンポーネント２０のハードリアルタイム性が維持でき、機械装置の異常な動作が防止される。
【００５５】
前記のメッセージが失われないという特徴は、特に、ロボット・メカトロニクス機器等の制御システムにおいては、大きな効果を持つ。例えば、本実施形態では、送信コンポーネントが１０がロボットの移動計画を行い、目的地の座標を生成して、動作指示メッセージとして受信コンポーネント２０に送り、受信コンポーネント２０が、受信したメッセージに従ってロボットを走行させる制御を行っている。
【００５６】
ここで、例えば多数の障害物が発見されたために、送信コンポーネント１０が通常より多くの目標座標を生成して、速いレートで動作指示メッセージを送信し、そのままでは、受信コンポーネント２０のリアルタイム性が維持できなくなる事態が発生したとする。この時に、もしメッセージ送信間隔を広げるために、送信コンポーネント１０のメッセージを間引いたとすると、ロボットの走行経路が、送信コンポーネント１０が計画した経路とは異なり、一部をショートカットした経路を走行することになる。ここでもし、ショートカット経路の途中に障害物があれば、ロボットが障害物に衝突する恐れがある。一方、メッセージを間引かずに、送信コンポーネント１０を一時停止させることで、メッセージ送信間隔を広げると、ロボットの走行のタイミングは遅れるが、計画通りの経路を走行するので安全性が確保される。
【００５７】
このように、ロボット・メカトロニクス機器等の制御システムにおいては、メッセージ到着の時間の遅延は許されても、メッセージの欠落が許されないことが多くあるが、本実施形態では、全てのメッセージが送信されるので安全性確保が容易になるという効果がある。
【００５８】
なお、送信レート監視部３０が作動して、送信コンポーネント１０の処理が遅らせられた場合に、そのまま動作を継続する代わりに、機械の運動速度を下げるなど、回復処理（回復モード）を行う必要がある場合もある。そのために、図１に示すように、送信コンポーネント１０に動作モード設定部１２を設けて、通常モードと回復モードの選択・切り替えができるようにし、送信レート監視部３０が送信コンポーネント１０を一時停止させたときに、動作モード設定部１２により、動作モードを通常モードから回復モードに切り替えるようにしてもよい。この場合、送信コンポーネント１０は、動作モード（通常モードまたは回復モード）に応じて、処理内容を切り替えるようにプログラムしておく。
【００５９】
具体的には、送信コンポーネント１０は、送信コンポーネント１０が通常の動作周期で動作する通常モードと、該動作周期を遅くする回復モードとを切り替えができる動作モード設定部１２を有しており、送信レート監視部３０から、メッセージ４０の送信レートが監視条件を満たさない旨の指令を受信すると、動作モード設定部１２は、前記通常モードから前記回復モードに切り替えるようにするとよい。
【００６０】
許容最小送信間隔Ｔｍは、システムが起動する時に、初期設定動作により、受信コンポーネント２０の動作周期に基づいて自動設定されるので、送信レート監視部３０の監視条件を個別に設定する必要がなく、開発者の負担が低減される。また、送信コンポーネント１０と受信コンポーネント２０の組合せが変わり、監視条件が変化した場合でも、設定やプログラムの変更を行う必要はなく、許容最小送信間隔Ｔｍが適切な値に自動設定される。
【００６１】
また、許容最小送信間隔Ｔｍは、送信レート監視条件設定部３３により、システムが起動するときに１回だけ設定されるので、コンピュータ間通信路５５に対する負荷が小さい。
【００６２】
なお、前記の実施形態では、送信レート監視条件設定部３３が、許容最小送信間隔Ｔｍを受信コンポーネント２０の動作周期Ｔ１と等しい値に設定しているが、その代わりに、動作周期Ｔ１に一定の倍率をかけて許容最小送信間隔Ｔｍを設定してもよい。それにより、処理の効率と、リアルタイム性に対する確実性のバランスを調整することが可能になる。
【００６３】
また、前記の実施形態では、動作周期取得部３２が、受信コンポーネント２０の動作周期Ｔ１に基づいて、許容最小送信間隔Ｔｍを決定しているが、その代わりに、図１に示すように、受信コンポーネント２０に許容最小受信間隔記憶部３６を設けて、事前に許容できる最小のメッセージ受信間隔を手動設定しておき、動作周期取得部３２は、許容最小受信間隔記憶部３６に設定された値を許容最小送信間隔Ｔｍに決定するようにしてもよい。このようにすれば、設定の手間は増えるが、より柔軟に送信レートの監視条件を設定できる。なお、この場合、設定誤りを防止するため、許容最小受信間隔Ｔｍを設定する開発ツールにおいて、受信コンポーネント２０の動作周期Ｔ１よりも短い値を設定する場合には、警告を発生するようにするとよい。
【００６４】
また、送信レート監視条件設定部３３により、初期設定動作時に受信側コンピュータ５０ｂから送信側コンピュータ５０ａに許容最小送信間隔Ｔｍを転送する代わりに、送信レート監視条件記憶部３５にあらかじめ許容最小送信間隔Ｔｍを設定しておくこともできる。その場合、受信コンポーネント２０が入れ替わり、システム構成が変化した場合に、送信レート監視部３０の監視条件が自動的に変更されなくなり、再設定する必要が生じるが、動作周期取得部３２および送信レート監視条件設定部３３が不要になるため、ミドルウェアのサイズが小さくなる。
【００６５】
また、前記の実施形態では、メッセージ送信間隔に基づいて送信レートの監視を行っているが、その代わりに、一定時間の監視周期内のメッセージ送信数に基づいて、送信レートの監視を行うようにしてもよい。その場合は、送信レート監視部３０は、監視周期の間のメッセージ数を数え、許容される最大メッセージ数を超えた場合は、次の監視周期の開始時刻まで送信コンポーネント１０を停止させる。この方法では、監視・制御の方法が複雑になるが、たとえばメッセージを連続２個まで送信することを許可するなど、より柔軟なメッセージ送信レート制御が可能になる。
【００６６】
<変形例>
図７に示した実施形態では、メッセージ送信間隔が許容最小送信間隔Ｔｍよりも短い場合は、送信コンポーネント１０を一時停止させることによって、メッセージ送信間隔を拡大し、メッセージ送信を抑制している。換言すると、メッセージを間引かない実施形態を説明した。図８に示す変形例では、その代わりに、メッセージを受信コンポーネント２０へ送信せずに廃棄（間引く）することによって、メッセージ送信を抑制することもできる。
【００６７】
図８は、本実施形態のリアルタイム分散制御システムにおけるその他の監視制御動作のタイミングの一例を示すシーケンス図である。この場合は、メッセージ送信７３ｄ，７３ｅに対する、メッセージ時間間隔Ｔ５ｄ，Ｔ５ｅが許容最小送信間隔Ｔｍ（図１参照）よりも短いので、送信レート監視部３０は、メッセージを受信コンポーネント２０へ送らずに破棄する。これによって、メッセージ送信７３ｄ，７３ｅに対する動作設定処理は実行されず、制御処理７２ｄ，７２ｅの完了が次のトリガよりも遅れることはなく、ハードリアルタイム性が維持できる。
【００６８】
この場合は、送信コンポーネント１０が停止されないので、送信コンポーネント１０の動作が速くなり、処理の効率が高まる。ただし、この方法を使用する場合は、一部のメッセージが受信コンポーネント２０へ届かなくても、動作の継続に大きな支障がないようにシステムを設計する必要がある。例えば、送信コンポーネント１０が、人工衛星からの電波を基に絶対位置を検出する機能を有しており、車輪の回転数により検出した位置を補正するために、受信コンポーネント２０に絶対位置を送信している場合には、一部のメッセージが届かなくても支障がないので、上記の方法を使用できる。
【００６９】
本実施形態のリアルタイム分散制御システムは、ハードリアルタイム制御系の実行の遅れを防ぐために、メッセージ送信レートを監視制御する機能をミドルウェアに組み込み、信頼性の高いリアルタイム分散制御を行っている。また、メッセージ送信レート監視条件を、動作周期取得部３２が取得した値に基づいて自動設定することによって、開発者の負担を低減し、かつ、構成変更に容易に対応可能にすることができる。
【符号の説明】
【００７０】
１    リアルタイム分散制御システム
１０    送信コンポーネント
１２    動作モード設定部
２０    受信コンポーネント
３０    送信レート監視部
３２    動作周期取得部
３３    送信レート監視条件設定部（送信レート設定部）
３５    送信レート監視条件記憶部
３６    許容最小受信間隔記憶部（許容受信間隔記憶部）
４０    メッセージ
５０ａ    送信側コンピュータ（第１のコンピュータ）
５０ｂ    受信側コンピュータ（第２のコンピュータ）
５４    通信回路
５５    コンピュータ間通信路
６１ａ，６１ｂ    オペレーティングシステム（ＯＳ）
６２ａ    ミドルウェア（第１のミドルウェア）
６２ｂ    ミドルウェア（第２のミドルウェア）
７１    タイマトリガ
７２    制御処理
７３    メッセージ送信
７４    動作設定処理
７５    メッセージ送信
７６    通知送信
Ｔ１    動作周期
Ｔ２    制御処理の処理時間
Ｔ３    空き時間
Ｔ４    動作設定処理の処理時間
Ｔ５    メッセージ時間間隔
Ｔｍ    許容最小送信間隔（監視条件）
【図１】
2011124751.tif 000003
【図２】
2011124751.tif 000004
【図３】
2011124751.tif 000005
【図４】
2011124751.tif 000006
【図５】
2011124751.tif 000007
【図６】
2011124751.tif 000008
【図７】
2011124751.tif 000009
【図８】
2011124751.tif 000010