(57)【要約】【課題】通信データの送受信処理に要する時間の予測可能性を向上させた分散処理処理システムを提供する。【解決手段】ＭＣＵ１０は、ＣＰＵ１０１、通信Ｉ／Ｆ１０４を備え、ＣＰＵ１０１で実行されるタスクのスケジューリングを行うリアルタイムＯＳ２０を搭載している。通信Ｉ／Ｆ１０４のデータ受信によってＣＰＵ１０１に対する割り込み要求が発生すると、ＣＰＵ１０１は、割り込みハンドラを起動する。割り込みハンドラは、通信Ｉ／Ｆ１０４に到着した受信データに付与されている優先度情報に基づいて、データ受信のために待ち状態にある複数のタスクの起床順序を決定し、優先度情報によって高い優先度が与えられた受信データの受信待ちを行っているタスクＲＴＡを優先的に実行可能とする。さらに、リアルタイムＯＳ２０は、実行可能な状態にある複数のタスクの優先順位に基づいて、ＣＰＵ１０１に割り当てるタスクを決定する。【選択図】図５
2007249357.tif 000002
【特許請求の範囲】
【請求項１】
タスクを実行するＣＰＵと、
データを送受信可能な通信デバイスと、
前記通信デバイスに到着した受信データに付与されている優先度情報に基づいて、データ受信のために待ち状態にある複数のタスクの起床順序を決定し、前記優先度情報によって高い優先度が与えられた受信データの受信待ちを行っているタスクを優先的に実行可能とするイベント処理手段と、
実行可能な状態にある複数のタスクの優先順位に基づいて、前記ＣＰＵに割り当てるタスクを決定するスケジューリング手段とを備える情報処理装置。
【請求項２】
前記優先度情報が示す前記受信データの優先度は、当該受信データを処理するタスクの優先順位を反映して決定されている請求項１に記載の情報処理装置。
【請求項３】
前記イベント処理手段は、前記通信デバイスから前記ＣＰＵに対する割り込み要求に応じて起動される割り込みハンドラ・プログラムを実行することにより実現される請求項１に記載の情報処理装置。
【請求項４】
前記ＣＰＵで実行されるタスクの状態を管理するタスク管理手段を備え、
前記タスク管理手段は、前記ＣＰＵに割り当てられて実行されている第１の状態、実行可能であるが、前記ＣＰＵにおいて他のタスクが実行中であるために前記ＣＰＵに割り当てられていない第２の状態、前記通信デバイスに到着するデータの受信待ちのために停止された第３の状態、及び、前記通信デバイスに到着するデータの受信待ちを除く他の条件成立待ちのために停止された第４の状態の少なくとも４つの状態でタスクを管理し、
前記第３の状態にあるタスクが受信待ちを行っているデータが、所定の時間内に前記通信デバイスに到着しない場合には、当該タスクを前記第２の状態に遷移させることを特徴とする請求項１に記載の情報処理装置。
【請求項５】
一定周期で割り込み要求を生成するタイマと、
前記通信デバイスからのデータ送信処理を実行する送信タスクを、前記タイマが生成する割り込み要求に応じて実行可能な状態に遷移させる手段とをさらに備える請求項１又は４に記載の情報処理装置。
【請求項６】
前記通信デバイスから送信されるデータは、前記送信タスクによって、前記送信タスクがアクセス可能なユーザメモリ領域から前記通信デバイスにＤＭＡ転送され、
前記送信タスクは、前記送信タスクの生成に応じて割り当てられたユーザメモリ領域を、当該送信タスクの終了まで前記ＤＭＡ転送に継続的に使用する請求項５に記載の情報処理装置。
【請求項７】
請求項１乃至６のいずれかに記載された情報処理装置を複数備え、
複数の前記情報処理装置が備える前記通信デバイスはイーサネット（登録商標）デバイスであって、
前記複数の情報処理装置はレイヤ２スイッチを介して通信可能に接続されている分散処理システム。
【請求項８】
実行可能状態にある複数のタスクのＣＰＵへの割り当て順序をタスクの優先度に基づいてスケジューリングするリアルタイムＯＳを搭載した情報処理装置におけるタスク管理方法であって、
前記ＣＰＵが、前記情報処理装置が備える通信デバイスにデータが到着したことを示す割り込み要求に応じて割り込みハンドラを起動し、
前記割り込みハンドラが、前記通信デバイスに到着している複数の受信データに付与されている優先度情報を走査することにより、前記優先度情報によって最も高い優先度が与えられた受信データを選択し、選択した受信データの受信待ちを行っているタスクを優先的に実行可能状態に遷移させ、
前記リアルタイムＯＳが、前記割り込みハンドラによって実行可能状態とされたタスクのスケジューリング及び前記ＣＰＵへの割り当てを行うタスク管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置間での送受信処理を一定時間内に完了させるリアルタイム通信の実現に有効な情報処理装置に関する。
【背景技術】
【０００２】
リアルタイム通信とは、一定時間内に送受信処理が完了する通信を意味する。リアルタイム通信は、複数の情報処理装置、即ちコンピュータが相互に接続されて構成され、ハードリアルタイムが要求される制御システム等の分散処理システムにおいて、コンピュータ間のデータ送受信を行うために特に必要とされる。このようなハードリアルタイムが要求される分散処理システムには、例えば、センサ情報を用いて姿勢制御を行うロボットの制御システムや、ブレーキ制御等の自動車の制御システムがある。
【０００３】
上述したリアルタイム通信を実現可能な通信インタフェースとして、ＣＡＮ（Controller Area Network）、ＡＲＣＮＥＴ（登録商標）、ＦｌｅｘＲａｙ（登録商標）等が知られている。しかしながら、これらの通信インタフェースの制御システムへの適用には、特別なノウハウが要求される、また、システム開発環境のコストが高い。さらに、これらの通信インタフェースのデータ転送速度の上限は１０Ｍｂｉｔ／ｓ程度であり、高速通信に対応していない。
【０００４】
一方で、高速通信に対応した通信インタフェースに、イーサネット（登録商標）、ＵＳＢ（Universal Serial Bus）２．０、ＩＥＥＥ１３９４等のインタフェースがある。なお、本明細書では、ＩＥＥＥ８０２．３委員会によって標準化された１０ＢＡＳＥ−Ｔ、１００ＢＡＳＥ−ＴＸ、１０００ＢＡＳＥ−Ｔ等を総称してイーサネット（登録商標）と呼ぶ。これらのインタフェースは、ＰＣ向けの通信インタフェースとして広く普及していることから開発環境が充実しているという利点がある。しかしながら、リアルタイム通信機能を持っていないため、ハードリアルタイムを要求する制御システムに適用することが困難であった。
【０００５】
イーサネット（登録商標）等の高速通信インタフェースにおいてリアルタイム通信を実現するため、又はリアルタイム通信に近づけるためには、通信データの送受信処理に要する時間の予測可能性を高める必要がある。
【０００６】
ここで、通信データの送受信処理に要する時間は、データ送信側でのデータ送信処理に要する時間、送信側の通信インタフェースと受信側の通信インタフェースの間の通信ネットワークの転送時間、受信側でのデータ受信処理に要する時間を総合して定まるものである。通信データの送受信処理に要する時間の予測可能性を向上させるためには、これらの各要素の処理時間の変動を抑制する必要がある。
【０００７】
さらに、ロボット等の制御システムを構成するコンピュータ間で転送される通信データは、ハードリアルタイムが要求されるものに限らない。つまり、一定周期でのデータ送受信は必ずしも必要でないが、データ量が大きいために高い転送速度を要求する通信データも存在している。
【０００８】
このようなリアルタイム性に対する要求レベルの異なる様々な通信データが１つの通信インタフェースに到着し、通信データの到着待ちを行うタスクが複数存在している状況において、リアルタイム性の要求レベルが高いタスクの受信処理が、通信インタフェースに先に到着している他の通信データの受信処理によって待たされるようでは、リアルタイム性を要求するタスクのデータ受信処理に要する時間の予測可能性を高めることは困難である。
【０００９】
なお、特許文献１には、リアルタイム通信と非リアルタイム通信の両方を行うことが可能な環境において、リアルタイム通信によるデータ通信に遅れが生じないようにする通信装置が開示されている。具体的には、リアルタイム通信用のデータを格納するバッファと非リアルタイム通信用のデータを格納するバッファとを備えることとし、データの送信時又は受信時には、リアルタイム通信用のデータを格納するバッファから優先してデータを取り出してデータ送信又はデータ受信を行うものである。
【特許文献１】特開２００５−１９８０２３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は、上述した事情を考慮してなされたものであり、複数のコンピュータが接続された分散処理システムにおいて、通信データの送受信処理に要する時間の予測可能性を向上させることを目的とする。
【課題を解決するための手段】
【００１１】
本発明にかかる情報処理装置は、タスクを実行するＣＰＵ、データを送受信可能な通信デバイス、イベント処理手段、及びスケジューリング手段とを備える。ここで、前記イベント処理手段は、前記通信デバイスに到着した受信データに付与されている優先度情報に基づいて、データ受信のために待ち状態にある複数のタスクの起床順序を決定し、前記優先度情報によって高い優先度が与えられた受信データの受信待ちを行っているタスクを優先的に実行可能とする。さらに、前記スケジューリング手段は、実行可能な状態にある複数のタスクの優先順位に基づいて、前記ＣＰＵに割り当てるタスクを決定する。
【００１２】
このような構成により、イベント処理手段によって優先順位の高いタスクをいち早く実行可能状態に遷移させ、スケジュール手段によって当該タスクをいち早く実行状態にディスパッチすることができる。このため、１つの通信デバイスに対して複数のタスクがデータの受信待ちを行っており、当該通信デバイスに複数の受信データが到着している場合であっても、リアルタイム通信を要求するような優先順位の高いタスクを優先的に実行できる。これにより、受信データの到着から優先順位の高い受信タスクが実行されるまでの処理時間が規定でき、通信データの送受信処理に要する時間の予測可能性を向上させることが可能となる。
【００１３】
なお、前記優先度情報が示す前記受信データの優先度は、当該受信データを処理するタスクの優先順位を反映して決定されていることが望ましい。
【００１４】
また、前記イベント処理手段は、前記通信デバイスから前記ＣＰＵに対する割り込み要求に応じて起動される割り込みハンドラ・プログラムを実行することにより実現することが望ましい。このように割り込みハンドラによって実現すれば、イベント処理手段が行う機能の実装に際して、タスク・スケジューリングを行うリアルタイムＯＳの改良を特に必要としないという利点がある。
【００１５】
さらに、上述した本発明にかかる情報処理装置は、前記ＣＰＵで実行されるタスクの状態を管理するタスク管理手段を備えることが望ましい。ここで、前記タスク管理手段は、前記ＣＰＵに割り当てられて実行されている第１の状態、実行可能であるが、前記ＣＰＵにおいて他のタスクが実行中であるために前記ＣＰＵに割り当てられていない第２の状態、前記通信デバイスに到着するデータの受信待ちのために停止された第３の状態、及び、前記通信デバイスに到着するデータの受信待ちを除く他の条件成立待ちのために停止された第４の状態の少なくとも４つの状態でタスクを管理し、前記第３の状態にあるタスクが受信待ちを行っているデータが、所定の時間内に前記通信デバイスに到着しない場合には、当該タスクを前記第２の状態に遷移させることを特徴とする。
【００１６】
このように、所定の時間内に受信データが得られない場合に、受信待ちを行っているタスクを、ＣＰＵに割り当てられる状態に遷移させることにより、リアルタイム性を要求するタスクの定期的な処理を継続できる。
【００１７】
また、上述した本発明にかかる情報処理装置は、一定周期で割り込み要求を生成するタイマと、前記通信デバイスからのデータ送信処理を実行する送信タスクを、前記タイマが生成する割り込み要求に応じて実行可能な状態とする手段を備えることが望ましい。これにより、リアルタイム通信の実現に必要なデータ送信の開始時刻を制御でき、通信データの送受信処理に要する時間の予測可能性をさらに向上させることが可能となる。
【００１８】
さらに、本発明にかかる情報処理装置におけるデータ送信処理では、前記通信デバイスから送信されるデータは、前記送信タスクによって、前記送信タスクがアクセス可能なユーザメモリ領域から前記通信デバイスにＤＭＡ転送することが望ましい。このような構成により、ＣＰＵによるデータコピーを伴わずに送信データの転送を開始できるため、メモリコピーに伴う遅延を回避し、送信処理を高速に行うことができる。また、さらに、前記送信タスクは、前記送信タスクの生成に応じて割り当てられたユーザメモリ領域を、当該送信タスクの終了まで前記ＤＭＡ転送に継続的に使用することが望ましい。これにより、送信データが発生するたびにメモリ領域の確保と解放を繰り返すことによる予測不可能な遅延を排除できるため、送信処理に要する処理時間の予測可能性を向上させることができる。
【００１９】
本発明にかかる分散処理システムは、上述した本発明にかかる情報処理装置を複数備えており、複数の前記情報処理装置が備える前記通信デバイスはイーサネット（登録商標）デバイスであって、前記複数の情報処理装置はレイヤ２スイッチを介して通信可能に接続されているものである。このような構成であれば、レイヤ２スイッチと情報処理装置を繋ぐリンクは全二重で専有された状態である。このため、ＭＡＣフレーム衝突によるデータ送信待ちが発生する余地はなく、情報処理装置を繋ぐネットワークでのデータ転送時間の予測が可能となる。
【００２０】
本発明にかかるタスク管理方法は、実行可能状態にある複数のタスクのＣＰＵへの割り当て順序をタスクの優先度に基づいてスケジューリングするリアルタイムＯＳを搭載した情報処理装置におけるタスク管理方法である。具体的には、まず、前記ＣＰＵが、前記情報処理装置が備える通信デバイスにデータが到着したことを示す割り込み要求に応じて割り込みハンドラを起動する。次に、前記割り込みハンドラが、前記通信デバイスに到着している複数の受信データに付与されている優先度情報を走査することにより、前記優先度情報によって最も高い優先度が与えられた受信データを選択し、選択した受信データの受信待ちを行っているタスクを優先的に実行可能状態に遷移させる。最後に、前記リアルタイムＯＳが、前記割り込みハンドラによって実行可能状態とされたタスクのスケジューリング及び前記ＣＰＵへの割り当てを行うものである。
【００２１】
このような方法により、通信デバイスに受信データが到着してから優先順位の高い受信タスクが実行されるまでの処理時間が規定でき、通信データの送受信処理に要する時間の予測可能性を向上させることが可能となる。
【発明の効果】
【００２２】
本発明により、通信データの送受信処理に要する時間の予測可能性を向上させることが可能な情報処理装置、分散処理システム、及びタスク管理方法を提供できる。
【発明を実施するための最良の形態】
【００２３】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００２４】
発明の実施の形態１．
本実施の形態にかかる制御システム１の構成例を図１に示す。制御システム１は、複数のマイクロ・コントローラ・ユニット（ＭＣＵ）１０が相互に接続された分散制御システムである。図１では、２つのマイクロ・コントローラ・ユニット（ＭＣＵ）１０ａ及び１０ｂが、イーサネット（登録商標）、具体的には１００ＢＡＳＥ−ＴＸによって相互に接続された構成例を示している。ＭＣＵ１０ａは、カメラ１１によって入力された画像データに対する画像処理を行うコンピュータである。ＭＣＵ１１ｂは、イーサネット（登録商標）を介してＭＣＵ１０ａの画像処理結果を入力し、ＭＣＵ１０ａの画像処理結果（例えば、目標物の位置情報など）を利用して、ロボットの可動部を駆動するためのモータ１２を制御するコンピュータである。なお、図１の構成は一例であり、イーサネット（登録商標）を介して制御に必要なデータを交換するＭＣＵ１０ａ及び１０ｂは、様々な対象を制御する目的に使用可能である。以下では、ＭＣＵ１０ａ及び１０ｂのハードウェア構成、ソフトウェア構成、及びリアルタイム通信の実現に有効な処理等について説明する。なお、以下では、ＭＣＵ１０ａ及び１０ｂをまとめてＭＣＵ１０と記載している。
【００２５】
ＭＣＵ１０のハードウェア構成を図２に示す。ＣＰＵ１０１は、ＲＯＭ（Read Only Memory）１０２又は図示しないフラッシュメモリ等の不揮発性メモリに格納されたシステム・プログラム及び対象物を制御するためのアプリケーション・プログラムを実行する演算処理部である。
【００２６】
ＲＡＭ（Random Access Memory）１０３は、ＣＰＵ１０１のワーク領域として使用され、後述する通信インタフェース１０４、デジタルＩ／Ｏ１０５、アナログＩ／Ｏ１０６を介して送受信されるデータの一時保存領域としても使用される。
【００２７】
通信インタフェース１０４は、他のＭＣＵ１０との間で制御データを送受信するためのインタフェースであり、図１の構成例では１００ＢＡＳＥ−ＴＸインタフェースである。デジタルＩ／Ｏ１０５は、カメラ、圧力センサ、温度センサ等の様々なセンサから入力されるデータ、及びセンサに出力される制御信号等のデジタル信号の入出力を行うインタフェースである。一方、アナログＩ／Ｏは、Ａ／Ｄ変換処理及びＤ／Ａ変換処理を行うことによりアナログ信号の入出力を行うインタフェースである。なお、外部のセンサとのインタフェースをＭＣＵ１０間でのデータ交換を行うデータ通信インタフェース１０４に統合してもよい。
【００２８】
次に、ＣＰＵ１０１において実行されるシステム・プログラム及びアプリケーション・プログラムについて、図３を用いて説明する。本実施の形態のＭＣＵ１０が実行するシステム・プログラムはマルチタスク環境を備えるリアルタイムＯＳであり、アプリケーション・プログラムは時間制約の違い等に基づいてタスクに分割されている。図３は、ＭＣＵ１０が実行するリアルタイムＯＳ２０と、リアルタイムＯＳ２０が提供するマルチタスク環境上で並列処理される複数のタスクの構成を示している。
【００２９】
ここで、リアルタイムＯＳとは、マルチタスク環境を提供し、プリエンプティブな優先度ベースのタスク・スケジューリングを行うシステム・プログラムである。プリエンプティブとは、実行途中のタスクの処理を停止して、他のタスクにＣＰＵを割り当て可能であることを意味する。優先度ベースとは、タスクに与えられた優先度の高低によってＣＰＵで実行するタスクが決定されることを意味する。また、タスクとは、リアルタイムＯＳが提供するマルチタスク環境において並列実行されるプログラム単位である。なお、リアルタイムＯＳは、リアルタイム・カーネルとも呼ばれる場合もある。なお、リアルタイムＯＳとしては、社団法人トロン協会によって規定されたμＩＴＲＯＮ４．０仕様が、リアルタイムＯＳの標準仕様として広く普及している。
【００３０】
リアルタイムＯＳ２０は、ＣＰＵ１０１、ＲＡＭ１０３等のハードウェア資源を利用して、タスク管理、タスク間同期、割り込み管理、メモリ管理、時間管理、デバイス管理等を実行する。これらの機能は、従来のリアルタイムＯＳが標準的に備える機能であるため、各機能の概略のみを以下に示す。
【００３１】
タスク管理は、タスク状態の管理、起動可能な状態にあるタスクを実行順序を示すレディキューの管理、タスクに与えられた優先度の管理、コンテキストの保存等を行うことにより、タスクの生成、削除、起動、及び終了を行う手段を提供するものである。タスク管理によって実現される管理機構を以下ではスケジューラと呼ぶこととする。
【００３２】
タスク間同期は、セマフォやリンクリストに基づくメールボックス等を利用して、タスク間通信及びタスク間での処理の待ち合わせを行う手段を提供するものである。
【００３３】
割り込み管理は、ＣＰＵへの割込みに応じて起動される割り込みハンドラを管理するものである。具体的には、割り込みハンドラを定義し、割り込みと割り込みハンドラとを対応させる役割を担うものである。
【００３４】
時間管理は、システム時刻を管理し、時間に依存した処理を実現する。具体的には、システム時刻に基づいて、一定周期で起動されるハンドラ（周期ハンドラと呼ぶ）、指定した時刻に起動されるハンドラ（アラームハンドラと呼ぶ）等のいわゆるタイムイベントハンドラの生成、削除を行う。
【００３５】
メモリ管理は、タスク間通信等に用いられる共有メモリ領域の管理を担うものである。
【００３６】
最後に、デバイス管理は、通信インタフェース１０４の入出力制御等の各ハードウェア・デバイスを動作させるためのデバイス・ドライバ機能、及びデバイス・ドライバ管理機能を提供する。なお、デバイス・ドライバ機能は、タスク管理、タスク間同期、割り込み管理、メモリ管理、及び時間管理等のカーネル部分から独立したソフトウェアとして実現される場合もある。
【００３７】
受信タスクＲＴＡ、受信タスクＲＴＢ、送信タスクＳＴＣ、及びタスクＴＤは、上述したリアルタイムＯＳ２０のマルチタスク環境で実行されるタスク群の一例を示すものである。なお、後の説明のため、受信タスクＲＴＡ及び受信タスクＲＴＢは、通信インタフェース１０４によって受信されるデータを処理するタスクとする。さらに、受信タスクＲＴＡはリアルタイム通信を要求する時間制約が厳しいタスクであり、受信タスクＲＴＡには受信タスクＲＴＢより高い優先度が与えられているものとする。
【００３８】
また、送信タスクＳＴＣは、通信インタフェース１０５を介して他のＭＣＵ１０にデータを送信する処理を実行するタスクとする。タスクＴＤは、通信インタフェース１０４を介したデータ送受信を行わないタスクであり、受信タスクＲＴＡ、受信タスクＲＴＢ、及び送信タスクＳＴＣに比べて低い優先度がタスクＴＤに与えられているものとする。
【００３９】
割り込みハンドラＩＮＨは、ＣＰＵ１０１に接続された通信インタフェース１０４等のデバイスが要求するハードウェア割り込みに応じて起動されるプログラムである。
【００４０】
続いて以下では、通信インタフェース１０４でのリアルタイム通信の実現に有効であるＭＣＵ１０の特徴的な処理、及び制御システム１の構成について説明する。
【００４１】
＜データ受信処理＞
ＭＣＵ１０が備える通信インタフェース１０４に受信データが到着したときに行わるタスク・ディスパッチの流れを図４乃至６を用いて説明する。図４は、通信インタフェース１０４がデータを受信してから、データ受信待ちのために停止されていた受信タスクＲＴＡが起動されるまでを示すタイミング図である。
【００４２】
図４において、通信インタフェース１０４にデータが到着すると、通信インタフェース１０４からＣＰＵ１０１に対して割り込み要求が行われる（Ｓ１１）。この割り込み要求に応じてＣＰＵ１０１によって割り込みハンドラＩＮＨが起動され、割り込みハンドラＮＨによる割り込み処理が実行される（Ｓ１２）。
【００４３】
ここで、通信インタフェース１０４のデータ受信に基づいて起動された割り込みハンドラＩＮＨが行う割り込み処理（Ｓ１２）の詳細を図５のフローチャートを用いて説明する。割り込みハンドラＩＮＨが起動されると、通信インタフェース１０４の受信データが格納されたメモリ領域にアクセスし、受信データに与えられた優先度を走査する（ステップＳ２１）。ここで、受信データに与えられた優先度とは、データ送信側のＭＣＵ１０によって通信データに付加されるものであり、時間制約が厳しいタスクに引き渡されるデータほど高い優先度が与えられている。
【００４４】
通信インタフェース１０４で転送される通信データに優先度を与えるためには、まず、リアルタイム通信を要求する送信タスク及び受信タスクが他のタスクより優先的に実行されるように、スケジューラにおいて他のタスクに比べて高い優先度を与えることとする。ここでの他のタスクには、リアルタイム通信を要求しない受信タスク及び送信タスクが含まれる。その上で、送信タスクの実行時に、スケジューラがリアルタイム通信を要求するタスクに対して与える優先度を反映した優先度を転送データに付加することとすればよい。
【００４５】
通信インタフェース１０４が１００ＢＡＳＥ−ＴＸインタフェースである場合に転送されるＭＡＣフレームの構成を図６に示す。このようなＭＡＣフレームによるデータ転送を行う場合は、ＩＥＥＥ８０２．１ｐで規定されるＶＬＡＮタグを挿入し、ＶＬＡＮタグ中の３ビットのユーザ優先度フィールドを、タスクに対して与える優先度を反映した優先度を示すフィールドとして利用してもよい。また、フレーム・ヘッダではなく、ペイロード中の所定の位置に挿入することとしてもよい。
【００４６】
図５に戻り、ステップＳ２２では、最も優先度が高い受信データを判定し、当該受信データに対応する受信タスクを判定する。例えば、図３に示した受信タスクＲＴＡが受信待ちを行っているデータ、及び受信タスクＲＴＢが受信待ちを行っているデータがともに通信インタフェース１０４に到着している場合には、優先順位の高い受信タスクＲＴＡが受信待ちを行っているデータが判定され、これに対応する受信タスクＲＴＡが判定される。
【００４７】
ステップＳ２３では、ステップＳ２２で判定された受信タスクＲＴＡを起床する。具体的には、受信データの格納場所を示すアドレスを受信タスクＲＴＡに引き渡すとともに、受信タスクＲＴＡの状態を、データ受信を待っている状態からスケジューリング対象となる実行可能状態（Ｒｅａｄｙ状態）に変更する。なお、データ受信を待っている状態とは、コンテキストを保存してタスクの実行が中断された待ち状態（Ｗａｉｔｉｎｇ状態）又は後述するＣｏｍｍｕｎｉｃａｔｉｏｎ状態（以下、Ｃｏｍ状態と呼ぶ）である。
【００４８】
続いて図４に戻り、割り込みハンドラＩＮＨによる割り込み処理（Ｓ１２）に引き続く処理を説明する。割り込みハンドラＩＮＨの終了後のＳ１３では、リアルタイムＯＳ２０によるタスクのスケジューリングが行われる。なお、当該スケジューリングの要請は、割り込みハンドラＩＮＨが明示的に要請する場合と、割り込みハンドラＩＮＨの終了に応じてリアルタイムＯＳ２０が暗黙に行う場合がある。このスケジューリングによって、データ受信待ちが解除されてＲｅａｄｙ状態となった受信タスクＲＴＡがスケジューリングされる。このとき、リアルタイム通信を要求する受信タスクＲＴＡに最も高い優先度を与えておくことにより、受信タスクＲＴＡのディスパッチ処理が行われ（Ｓ１４）、受信タスクＲＴＡがＣＰＵ１０１において実行される（Ｓ１５）。
【００４９】
上述したように本実施の形態にかかるＭＣＵ１０では、対応するタスクの優先順位を反映した優先度情報をＭＣＵ１０間の通信データに付与することとし、通信データに付与された優先度を参照することによってスケジューリング対象とすべき受信タスクを選択するものである。これにより、優先度の低い受信タスクＲＴＢに対する受信データが優先度の高い受信タスクＲＴＡに対する受信データより先に通信インタフェース１０４に到着していた場合であっても、受信タスクＲＴＡを優先して実行できる。
【００５０】
通信インタフェース１０４に複数のデータが到着しているために、リアルタイム通信を要求する受信タスクＲＴＡの実行開始が遅れたのでは、受信データの到着から受信タスクＲＴＡがディスパッチされるまでの処理時間に予測不可能な変動が発生することになる。これに対して本実施の形態のＭＣＵ１０は、通信インタフェース１０４に複数のデータが到着している状況下でも、受信タスクＲＴＡを優先して実行可能である。このため、受信データの到着から受信タスクＲＴＡがディスパッチされるまでの処理時間の予測可能性を向上させることができる。
【００５１】
また、受信データに付与された優先度情報に基づいて、データ受信待ちからＲｅａｄｙ状態に遷移させるタスクを決定する処理は、割り込みハンドラＩＮＨによって実現されている。このため、本機能の実装に際して、リアルタイムＯＳ２０、具体的にはタスク・スケジューリングを行うタスク管理機能（スケジューラ）の改良を特に必要としないという利点がある。
【００５２】
なお、図４のＳ１１において通信インタフェース１０４からの割り込み要求に言及したが、ＣＰＵ１０１には通信インタフェース１０４以外にも多数のデバイスが接続されていることが通常である。このため、割り込み要因の異なる様々な割り込み要求が、ＣＰＵ１０１に対して行われることになる。このような多数の割り込み要求を調停するため、各割り込み要求には、予め割り込み要因に応じて優先度が割り当てられる。これにより、割り込み要因が異なる複数の割り込み要求が同時に発生している場合は、ＣＰＵ１０１又はＣＰＵ１０１に割り込み要因を伝達するデバイスである割り込みコントローラ（不図示）によって、優先順位の高い割り込み要因に基づく割り込み要求が優先的に処理されることになる。
【００５３】
このため、通信インタフェース１０４においてリアルタイム通信を行うためには、通信インタフェース１０４のデータ受信を要因とする割り込み要求に対して、他のデバイスが行う割り込み要求よりも高い優先度を与えることが望ましい。このように構成することによって、通信インタフェース１０４のデータ受信を要因とする割り込み要求が優先的に処理されることになり、他の割り込み要求の処理を待つことによる予測不可能な処理遅延の発生を回避できる。これにより、データ受信処理の処理時間の予測可能性を向上させることができる。
【００５４】
＜タスク管理＞
次に、リアルタイムＯＳ２０におけるタスク管理について説明する。リアルタイムＯＳ２０におけるタスク状態の遷移図を図７に示す。図７に示すタスク状態のうち、Ｒｕｎｎｉｎｇ状態３０１、Ｒｅａｄｙ状態３０２、Ｗａｉｔｉｎｇ状態３０３、及びＤｏｒｍａｎｔ状態３０５は、従来のタスク管理において定義されているタスク状態と同様である。具体的には、Ｒｕｎｎｉｎｇ状態３０１は、ＣＰＵ１０１が割り当てられてタスクを実行している状態である。Ｒｅａｄｙ状態３０２は、タスクの実行に必要な条件は整っているが、当該タスクよりも優先度が高いタスク、又は当該タスクと同一優先度で先に実行可能となったタスクがＲｕｎｎｉｎｇ状態３０１にあるために実行できない状態である。
【００５５】
Ｒｕｎｎｉｎｇ状態３０１にあるタスクが終了した場合、又はＲｕｎｎｉｎｇ状態３０１にあるタスクより優先度が高いタスクがＲｅａｄｙ状態３０２になった場合は、新たなタスクが実行状態にディスパッチされる（Ｓ３１）。なお、優先度が高いタスクにプリエンプトされたタスクは、Ｒｕｎｎｉｎｇ状態３０１からＲｅａｄｙ状態３０２に遷移する（Ｓ３２）。
【００５６】
Ｗａｉｔｎｇ状態３０３は、タスクを実行するための条件が整わず、何らかの条件成立を待っている状態である。Ｒｕｎｎｉｎｇ状態３０１にあるタスクは、何らかの条件成立を待つ場合に、Ｗａｉｔｎｇ状態３０３に遷移し（Ｓ３３）、条件が成立すればＲｅａｄｙ状態３０２に遷移する（Ｓ３４）。
【００５７】
Ｄｏｒｍａｎｔ状態３０５は、まだ一度も起動されていないタスク又は実行が終了したタスクが遷移する状態である。Ｄｏｒｍａｎｔ状態３０５から起動されたタスクは、Ｒｅａｄｙ状態に遷移する（Ｓ３７）。実行が終了したタスクは、Ｒｕｎｎｉｎｇ状態３０１又はＲｅａｄｙ状態３０２から、Ｄｏｒｍａｎｔ状態３０５に遷移する（Ｓ３８又はＳ３９）。
【００５８】
これら４つの状態に加えて、本実施の形態では、通信データの到着待ちのために待機しているタスク状態をＣｏｍ状態３０４と定義し、リアルタイム通信を要求するタスクが受信待ちとなる際に、当該タスクをＣｏｍ状態３０４に遷移させる（Ｓ３５）。Ｃｏｍ状態３０４からＲｅａｄｙ状態３０２に遷移する遷移する１つの条件は、データ受信待ちの解除である。具体的には、上述した割り込みハンドラＩＮＨによってＲｅａｄｙ状態３０２への変更が行われる。これとは別に、Ｃｏｍ状態３０４からＲｅａｄｙ状態３０２に遷移する遷移するもう１つの条件はタイムアウトである。即ち、Ｃｏｍ状態３０４に入る際にタイムアウト時間を指定し、タイムアウト時間が経過しても受信データが到着しない場合には、Ｃｏｍ状態３０４からＲｅａｄｙ状態３０２に遷移することとする。
【００５９】
リアルタイム通信を要求するタスクは、通常、ハードリアルタイムを要求する処理に関するタスクである。このため、データ受信待ちを継続し続けることは、ハードリアルタイムを要求する処理に破綻をきたすことになり好ましくない。一方で、ハードリアルタイムを要求する処理であっても、新たな受信データが得られない場合に過去の受信データを用いた代替処理を実行することにより、危機的な状況の発生を回避可能な場合がある。本実施の形態のＭＣＵ１０では、上述したＣｏｍ状態３０４を定義し、タイムアウト時間が経過しても受信データが到着しない場合に、Ｃｏｍ状態３０４からＲｅａｄｙ状態３０２に遷移する。これにより、タスクの定期的な処理を継続でき、上述したような代替処理の実行が可能となる。
【００６０】
＜データ送信処理＞
リアルタイム通信を要求する送信タスクＳＴＣによって、通信インタフェース１０４からデータを送信する処理について説明する。まず、リアルタイム通信の実現のためには、データ送信の開始時刻を制御する必要がる。これを実現するためには、当該タスクによってデータを送信するタイミングを、上述したリアルタイムＯＳ２０が備える時間管理機能を利用して決定すればよい。具体的には、システム時刻に基づいて一定周期で起動される周期ハンドラによって、通信インタフェース１０４に対するデータ送信を行うこととすればよい。
【００６１】
さらに短い周期でのリアルタイム通信を実現するためには、送信処理を高速に行うことが望ましい。そこで、本実施の形態にかかるＭＣＵ１０では、通信インタフェース１０４のＤＭＡ（Direct Memory Access）機能を利用して、送信タスクから通信インタフェース１０４に対して送信データをＤＭＡ転送することとする。通常の通信では、送信タスクが生成した送信データがユーザメモリ領域からシステムメモリ領域にコピーされた後に通信インタフェースに転送されるのに対して、本実施の形態ではＣＰＵ１０１によるデータコピーを伴わずに送信データの転送を開始できる。このため、メモリコピーに伴う遅延を回避し、送信処理を高速に行うことができる。
【００６２】
なお、上述したＤＭＡ転送を行うためには、送信データを生成するメモリ領域としてＤＭＡ転送可能な領域を確保する必要がある。しかし、一般にメモリ領域を確保する処理は処理時間の予測が困難である。このため、本実施の形態のＭＣＵ１０では、送信データが発生するたびにメモリ領域の確保と解放を繰り返すのではなく、リアルタイム通信を要求するタスクの起動時に確保したメモリ領域を、当該タスクの終了時まで繰り返し利用することとする。これにより、メモリ領域の確保と解放はそれぞれタスクの起動時と終了時に行うだけでよく、メモリ領域の確保処理による予測不可能な遅延を排除でき、送信処理に要する処理時間の予測可能性を向上させることができる。
【００６３】
＜再送機能の不使用＞
イーサネット（登録商標）の上位層（ネットワーク層及びトランスポート層）として、ＴＣＰ／ＩＰが広く使用されている。しかしながら、ＴＣＰ／ＩＰは、送信データの不到達時に再送処理を行うものであり、また、経路選択などの高度な転送制御を可能とするプロトコルであるため、処理が複雑で通信データの処理時間の予測が困難であるという問題がある。そこで、本実施の形態のＭＣＵ１０では、ＴＣＰ／ＩＰを使用しないこととした。具体的には、ネットワーク層及びトランスポート層では、通信インタフェース１０４とタスクとを対応付けるデータの受け渡しのみを行うこととし、ＭＣＵ１０間でのデータ転送は、イーサネット（登録商標）のデータリンク層が行う隣接装置間でのデータ転送制御のみを使用することとする。
【００６４】
このとき、ＭＣＵ１０間の物理的な接続は、図１に示したｐｏｉｎｔ−ｔｏ−ｐｏｉｎｔ接続のほか、ＭＡＣアドレスに基づいてスイッチングを行うレイヤ２スイッチ３０を介して２以上のＭＣＵ１０を接続する形態が使用できる。レイヤ２スイッチ３０を用いたスター接続による制御システムの構成例を図８に示す。スター接続の場合でも、１つのレイヤ２スイッチ３０とＭＣＵ１０との間の物理リンク（１００ＢＡＳＥ−ＴＸであればツイスト・ペア・ケーブル）は全二重で専有された状態である。このため、ＭＡＣフレーム衝突によるデータ送信待ちが発生する余地はなく、データ転送時間の予測が可能となる。なお、レイヤ２スイッチ３０を使用する場合は、レイヤ２スイッチ３０内部でのデータストア処理及びフォワーディング処理に伴う内部遅延が発生するが、この内部遅延時間の変動量の予測は可能である。
【００６５】
このように、送信データの再送を行わず、ＭＣＵ１０間を接続するネットワーク構成として通信データの衝突が発生しない構成を採用することにより、データ送信処理に要する時間の予測可能性を向上させることができる。
【００６６】
その他の実施の形態．
上述した発明の実施の形態１にかかるＭＣＵ１０は、データ受信処理、タスク管理、データ送信処理、及び再送機能の不使用といった特徴的な構成を有しており、これらの特徴的な構成の相乗的な効果によって、ＭＣＵ１０間でのリアルタイム通信を実現するために必要となるｅｎｄ−ｔｏ−ｅｎｄでの送受信処理に要する時間の予測可能性を向上させている。しかしながら、ＭＣＵ１０が有する特徴的な構成の全てを具備しなくても、ｅｎｄ−ｔｏ−ｅｎｄでの送受信処理に要する時間の予測可能性を向上させることは可能である。
【００６７】
例えば、通信データに付与された優先度を参照することにより、優先的に起動する受信タスクの選択を行うデータ受信処理のみを利用する場合でも、データ受信処理の処理時間の予測可能性を向上することが可能であるため、ｅｎｄ−ｔｏ−ｅｎｄでの送受信処理に要する時間の予測可能性の向上に寄与することができる。即ち、本発明にかかるＭＣＵは、発明の実施の形態１にかかるＭＣＵ１０が備える特徴的な構成の全てを備える必要はなく、これらの特徴的な構成の一部を具備するものであってもよい。
【００６８】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００６９】
【図１】発明の実施の形態１にかかる制御システムの構成図である。
【図２】発明の実施の形態１にかかるＭＣＵのハードウェア構成を示す図である。
【図３】発明の実施の形態１にかかるＭＣＵのソフトウェア構成を示す図である。
【図４】発明の実施の形態１にかかるＭＣＵにおけるデータ受信処理を説明するためのタイミング図である。
【図５】発明の実施の形態１にかかるＭＣＵにおけるデータ受信処理を説明するためのフローチャートである。
【図６】ＭＡＣフレームのフレーム形式を示す図である。
【図７】発明の実施の形態１にかかるＭＣＵのタスク管理を説明するための状態遷移図である。
【図８】発明の実施の形態１にかかる制御システムの物理的な接続構成の一例を示す図である。
【符号の説明】
【００７０】
１  制御システム
１０、１０ａ、１０ｂ  マイクロ・コントローラ・ユニット（ＭＣＵ）
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  通信インタフェース
１０５  デジタルＩ／Ｏ（ＤＩＯ）
１０６  アナログＩ／Ｏ（ＡＩＯ）
２０  リアルタイムＯＳ（ＲＴＯＳ）
３０  レイヤ２スイッチ
ＲＴＡ、ＲＴＢ  受信タスク
ＳＴＤ  送信タスク
ＩＮＨ  割り込みハンドラ
【図１】
2007249357.tif 000003
【図２】
2007249357.tif 000004
【図３】
2007249357.tif 000005
【図４】
2007249357.tif 000006
【図５】
2007249357.tif 000007
【図６】
2007249357.tif 000008
【図７】
2007249357.tif 000009
【図８】
2007249357.tif 000010