以下、図面を参照しながら、好適な実施の形態について説明する。以下の実施の形態に示す具体的な数値などは、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、それに限定されるものではない。また、以下の記載及び図面では、説明の明確化のため、当業者にとって自明な事項などについては、適宜、省略及び簡略化がなされている。
<実施の形態1>
まず、図1を参照して、実施の形態1に係るモジュール制御システム1の構成について説明する。図1に示すように、モジュール制御システム1は、インターフェイスボード2と、外部計算機3と、複数のモジュール4とを有する。
インターフェイスボード2は、通信経路90を介して外部計算機3と接続されている。また、インターフェイスボード2は、バス91〜93を介して複数のモジュール4と接続される。バス91〜93のそれぞれには、少なくも1つのモジュール4が接続されている。厳密には、バス91〜93は、インターフェイスボード2及び複数のモジュール4を相互に接続することで、それらの内部の信号線が接続されて形成される。なお、本実施の形態1では、インターフェイスボード2とモジュール4とを接続するバス91〜93の数が3つである例について説明するが、バスの数はこれに限られない。
インターフェイスボード2は、外部計算機3から通信経路90を介して命令を受信する。インターフェイスボード2は、受信した命令を、バス91〜93のそれぞれに振り分ける。言い換えると、インターフェイスボード2は、受信した命令を、その命令の実行対象となるモジュール4が接続されたバスに送信する。
外部計算機3は、モジュール4が実行する命令を生成する。外部計算機3は、生成した命令を、通信経路90を介してインターフェイスボード2に送信する。外部計算機3は、典型的には、例えば、PC(Personal Computer)である。
複数のモジュール4のそれぞれは、インターフェイスボード2から受信した命令を実行する。ここで、複数のモジュール4は、相互に接続されることで、1つの動作するガジェットを構成することができる。ガジェットは、例えば、生活家電などの電子機器であってもよく、自動車などの輸送機器であってもよい。複数のモジュール4のそれぞれが命令を実行することで、ガジェットの動作が実現される。
複数のモジュール4のそれぞれは、例えば、図1に示すように、マイコン40と、センサ41と、モータ42とを有する。なお、モジュール4は、センサ41及びモータ42のいずれか1つを有するようにしてもよい。マイコン40は、インターフェイスボード2から受信した命令を実行する。例えば、マイコン40は、受信した命令がセンサ値取得命令である場合、センサ41からセンサ値を取得してインターフェイスボード2に送信する処理を実行する。インターフェイスボード2は、モジュール4から受信したセンサ値を外部計算機3に送信する。マイコン40は、受信した命令がモータ駆動命令である場合、モータ42を駆動する処理を実行する。このモータ駆動命令は、例えば、外部計算機3がモジュール4から取得したセンサ値に基づいて生成する。すなわち、厳密には、本実施の形態1における命令の実行とは、モジュール4が命令に応じた処理を実行することである。言い換えると、本実施の形態における命令は、モジュール4に処理を指示する情報とも言える。
例えば、複数のモジュール4によって構成されるガジェットが移動する輸送機器である場合、上述したようにセンサ41によって生成されたセンサ値に基づいてモータ42を駆動することで、その移動を実現する。なお、モジュール4の構成は、これに限られない。モジュール4は、センサ41以外の情報取得手段を有するようにしてもよく、モータ42以外の動作実現手段を有するようにしてもよい。
ここで、モジュール4と、他のモジュール4又はインターフェイスボード2との接続には、任意の接続方法を採用してよい。接続方法は、例えば、ケーブル又は接続部品を介して間接的に接続する方法であってもよく、ケーブル等を介さずに直接接続する方法であってもよい。また、複数のモジュール4の接続において、それらの接続方法のうち、2つ以上が混在してもよい。
本実施の形態1では、このように、外部計算機3がインターフェイスボード2を介して複数のモジュール4を制御する構成とすることにより、外部計算機3がより多くのモジュール4を制御可能としている。すなわち、外部計算機3と複数のモジュール4とを、複数のバス91〜93によってモジュール4を接続可能なインターフェイスボード2を介して接続することで、直接単一のバスによって接続する場合よりも多くのモジュール4の接続を可能としている。
一方で、このような構成とした場合、バス91に接続されるモジュール4群と、バス92に接続されるモジュール4群と、バス93に接続されるモジュール4群とで独立して並列的に命令が実行される。そのため、それらの独立性に対する考慮がなされていないと、実行順序を守るべき命令が、接続されたバスの異なるモジュール4群に送信された場合に、後で実行すべき命令が先に実行されてしまうことがあるという問題がある。なお、これらのモジュール4群は、命令実行部として機能する。
本実施の形態1では、このように独立したモジュール4群のそれぞれに異なるバス91〜93を介して命令を送信して実行させるにあたり、以下に説明する機能により、複数のモジュール4で実行される命令の順序性を保証している。
外部計算機3は、ダミー命令生成機能30を有する。ダミー命令生成機能30は、ダミー命令を生成し、インターフェイスボード2に対して順次送信される複数の命令において、実行順序を守るべき命令の間に挿入する。すなわち、複数の命令において、第1の命令と、第1の命令の後に実行されるべき第2の命令とが存在する場合には、第1の命令と第2の命令との間にダミー命令が挿入される。これにより、第1の命令、ダミー命令、第2の命令の順に、外部計算機3からインターフェイスボード2に送信される。
ここで、例えば、第1の命令は、センサ値取得命令が該当し、第2の命令は、そのセンサ値取得命令によって取得されたセンサ値に基づいて生成されるモータ駆動命令が該当する。なお、実行順序を守るべき命令の種類は、本実施の形態で例示するセンサ値取得命令及びモータ駆動命令のみに限られない。他の種類の命令について、以降に説明するように順序性を保証するようにしてもよい。
インターフェイスボード2は、送信制御機能20と、ダミー命令検出機能21と、複数のバス用命令バッファ22a〜22cと、タイミング調整機能23とを有する。以下、バス用命令バッファ22a〜22cは、特にいずれかに限定しない場合には、単に「バス用命令バッファ22」と呼ぶ。
送信制御機能20は、外部計算機3から受信した命令を、バス用命令バッファ22a〜22cに振り分ける又は分配する。言い換えると、送信制御機能20は、外部計算機3から受信した命令を、バス用命令バッファ22a〜22cに格納する。より具体的には、送信制御機能20は、受信した命令がダミー命令である場合、そのダミー命令を全てのバス用命令バッファ22a〜22cに出力する。一方、送信制御機能20は、受信した命令がダミー命令でない場合、その命令をバス用命令バッファ22a〜22cのいずれか1つに出力する。より詳細には、送信制御機能20は、その命令を実行するモジュール4が接続されるバスに対応するバス用命令バッファ22にその命令を出力する。ここで、送信制御機能20は、受信した命令がダミー命令であるか否かを、ダミー命令検出機能21の検出結果によって認識する。
ダミー命令検出機能21は、外部計算機3から受信した命令がダミー命令であるか否かを判断する。すなわち、ダミー命令検出機能21は、送信制御機能20に入力された命令がダミー命令であるか否かを判断する。そして、ダミー命令検出機能21は、外部計算機3から受信した命令がダミー命令であると判定した場合、ダミー命令の検出を送信制御機能20に通知する。
より具体的には、送信制御機能20及びダミー命令検出機能21は、例えば、次に説明する回路で実現される。ダミー命令検出機能21は、送信制御機能20に入力された命令がダミー命令である場合は、送信制御機能20が有するブロードキャスト端子にブロードキャスト指示信号を出力する。ブロードキャスト指示信号は、上述のダミー命令の検出結果を示す信号に相当する。一方、ダミー命令検出機能21は、送信制御機能20に入力された命令がダミー命令でない場合は、送信制御機能20が有するブロードキャスト端子にブロードキャスト指示信号は出力しない。送信制御機能20は、ダミー命令検出機能21からブロードキャスト指示信号が入力されている場合、入力された命令を全てのバス用命令バッファ22a〜22cに分配する。一方、送信制御機能20は、ダミー命令検出機能21からブロードキャスト指示信号が入力されていない場合、入力された命令をバス用命令バッファ22a〜22cのいずれか1つに振り分ける。
このような動作により、第1の命令と、第1の命令の後に実行されるべき第2の命令とが存在する場合、第1の命令の後にダミー命令が全てのバス用命令バッファ22a〜22cに格納され、ダミー命令の後に第2の命令がバス用命令バッファ22a〜22cのいずれか1つに格納される。送信制御機能20及びダミー命令検出機能21は、命令制御部として機能する。
バス用命令バッファ22a〜22cのそれぞれは、複数の命令を格納可能である。バス用命令バッファ22a〜22cのそれぞれは、送信制御機能20から入力された命令を格納する。バス用命令バッファ22a〜22cのそれぞれは、命令を先入れ先出し(FIFO:First In First Out)で格納する。よって、バス用命令バッファ22a〜22cのそれぞれに格納された命令は、格納された順番で順次取り出され、バス91〜93のそれぞれに送信される。
ここで、バス用命令バッファ22aは、バス91に接続されており、バス用命令バッファ22bは、バス92に接続されており、バス用命令バッファ22cは、バス93に接続されている。よって、バス用命令バッファ22aに格納された命令は、バス91を介してモジュール4に出力される。バス用命令バッファ22bに格納された命令は、バス92を介してモジュール4に出力される。バス用命令バッファ22cに格納された命令は、バス93を介してモジュール4に出力される。
ここで、タイミング調整機能23が、ダミー命令を利用して、バス用命令バッファ22a〜22cのそれぞれからモジュール4への命令の出力を制御することで、命令の順序性を保証する。タイミング調整機能23は、出力制御部として機能する。
タイミング調整機能23は、バス用命令バッファ22a〜22cのそれぞれから出力される命令を監視し、ダミー命令を出力するバス用命令バッファ22を検出した場合、そのバス用命令バッファ22の動作を停止させる。言い換えると、タイミング調整機能23は、そのバス用命令バッファ22からモジュール4に対する命令の出力を停止させる。その後も、タイミング調整機能23は、新たにダミー命令を出力するバス用命令バッファ22を検出する毎に、そのバス用命令バッファ22の動作を停止させていく。そして、タイミング調整機能23は、全てのバス用命令バッファ22a〜22cが出力する命令がダミー命令となった場合、停止させていたバス用命令バッファ22の動作を再開させる。すなわち、タイミング調整機能23は、停止させていたバス用命令バッファ22からモジュール4に対する命令の出力を再開させる。
これにより、全てのバス用命令バッファ22a〜22cからの出力にダミー命令が揃うまで、ダミー命令以降の命令のモジュール4に対する出力が停止される。そのため、第1の命令と、第1の命令の後に実行されるべき第2の命令とが存在する場合、少なくとも第1の命令が出力されて、第1の命令の後のダミー命令が出力されるまでは、ダミー命令の後の第2の命令が出力されることはない。すなわち、第1の命令と第2の命令の順序性が保証される。
より具体的には、バス用命令バッファ22a〜22c及びタイミング調整機能23は、例えば、次に説明する回路で実現される。タイミング調整機能23は、全てのバス用命令バッファ22a〜22cからダミー命令が出力されるまで、ダミー命令を出力するバス用命令バッファ22の停止信号入力端子に対して停止信号を出力する。バス用命令バッファ22は、タイミング調整機能23から停止信号が入力されると、その動作を停止する。より詳細には、バス用命令バッファ22は、タイミング調整機能23からの停止信号に応じて、モジュール4に対する命令の出力動作を停止する。これにより、例えば、バス用命令バッファ22からモジュール4に対するバスにおけるデータ(命令)の転送シーケンスが中断される。なお、この転送シーケンスは、バス91〜93における通信規格に準ずる。すなわち、バス用命令バッファ22からモジュール4に対するダミー命令の送信が中断される。これにより、モジュール4によるダミー命令の受信は完了せず、ダミー命令はバス用命令バッファ22内に留まり続ける。そのため、そのダミー命令の後に続く命令も送信されずに、バス用命令バッファ22内に留まる。このように、バス用命令バッファ22からモジュール4に対する命令の送信が抑止される。この命令の送信抑止は、タイミング調整機能23からバス用命令バッファ22に対して停止信号が入力されている間継続される。
なお、バス用命令バッファ22からモジュール4に対する命令の送信を抑止する方法の1つとして、バス用命令バッファ22の動作を停止させることで、バス用命令バッファ22がモジュール4に対する命令の転送シーケンスを中断する方法を説明したが、この方法に限られず、他の方法を利用するようにしてもよい。例えば、タイミング調整機能23がバス用命令バッファ22から出力される命令を一旦取得し、取得した命令がダミー命令である場合は命令の送信を抑止し、そうでない場合はモジュール4に対して命令を送信するようにしてもよい。
タイミング調整機能23は、全てのバス用命令バッファ22a〜22cからのダミー命令の出力を検出すると、停止信号の出力を止める。動作を停止していたバス用命令バッファ22は、タイミング調整機能23から停止信号が入力されなくなると、その動作を再開する。より詳細には、バス用命令バッファ22は、タイミング調整機能23からの停止信号の解除に応じて、モジュール4に対する命令の出力動作を再開する。ここで、後述するように、このときにダミー命令は破棄される。そのため、ダミー命令の次の命令について、バス用命令バッファ22からモジュール4に対する命令の転送シーケンスが開始される。すなわち、全てのバス用命令バッファ22a〜22cからモジュール4に対する命令の送信が再開される。
続いて、図2を参照して、実施の形態1に係るインターフェイスボード2及び外部計算機3の構成について説明する。
まず、インターフェイスボード2について説明する。図2は、インターフェイスボード2が備える、送信制御機能20及びタイミング調整機能23の構成をより詳細に示している。図2に示すように、送信制御機能20は、命令振分部201と、命令分配部202と、インバータ209とを有する。タイミング調整機能23は、ダミー命令検出部231a〜231cと、AND回路232とを有する。以下、ダミー命令検出部231a〜231cは、特にいずれかに限定しない場合には、単に「ダミー命令検出部231」と呼ぶ。
送信制御機能20に入力された命令は、命令振分部201と命令分配部202の両方に入力される。命令振分部201は、入力された命令を宛先に応じて、バス用命令バッファ22a〜22cのいずれか1つに振り分ける。命令分配部202は、入力された命令をバス用命令バッファ22a〜22cの全てに分配する。
ここで、命令振分部201と命令分配部202は、ダミー命令検出機能21から送信制御機能20にブロードキャスト指示信号が入力されているか否かによって相補的に動作する。送信制御機能20にブロードキャスト指示信号が入力されていない場合、命令振分部201は動作して、命令分配部202は動作を停止する。一方、送信制御機能20にブロードキャスト指示信号が入力されている場合、命令振分部201は動作を停止して、命令分配部202は動作する。これにより、上述の送信制御機能20の動作が実現される。
より具体的には、命令振分部201及び命令分配部202は、例えば、次に説明するように動作する。ダミー命令検出機能21は、ハイレベルとローレベルのいずれかに切り替えられる信号を命令振分部201及び命令分配部202に出力する。ダミー命令検出機能21は、命令振分部201及び命令分配部202に対してダミー命令が入力されている場合、ハイレベルの信号を出力する。一方、ダミー命令検出機能21は、命令振分部201及び命令分配部202に対してダミー命令が入力されてない場合、ローレベルの信号を出力する。この信号は、命令分配部202にはそのまま入力され、命令振分部201にはインバータ209を介して反転された信号が入力される。命令振分部201と命令分配部202は、ハイレベルの信号が入力されている場合に動作し、ローレベルの信号が入力されている場合にはその動作を停止する。すなわち、ハイレベルの信号は、ブロードキャスト指示信号に相当する。
ダミー命令検出部231a〜231cのそれぞれは、バス用命令バッファ22a〜22cのそれぞれから出力される命令を監視して、ダミー命令の出力を検出する。ダミー命令検出部231aは、バス用命令バッファ22aを監視する。ダミー命令検出部231bは、バス用命令バッファ22bを監視する。ダミー命令検出部231cは、バス用命令バッファ22cを監視する。
ダミー命令検出部231aは、バス用命令バッファ22aからダミー命令が出力されている場合、バス用命令バッファ22a及びAND回路232に対して停止信号を出力する。ダミー命令検出部231bは、バス用命令バッファ22bからダミー命令が出力されている場合、バス用命令バッファ22b及びAND回路232に対して停止信号を出力する。ダミー命令検出部231cは、バス用命令バッファ22cからダミー命令が出力されている場合、バス用命令バッファ22c及びAND回路232に対して停止信号を出力する。
AND回路232は、ダミー命令検出部231a〜231cのそれぞれから入力される信号の論理積演算により生成された信号を、ダミー命令検出部231a〜231cのそれぞれに出力する。AND回路232は、ダミー命令検出部231a〜231cの全てから停止信号が入力されている場合、ダミー命令検出部231a〜231cのそれぞれに対してクリア信号を出力する。一方、AND回路232は、ダミー命令検出部231a〜231cの少なくとも1つから停止信号が入力されていない場合、ダミー命令検出部231a〜231cのそれぞれに対してクリア信号を出力しない。
より具体的には、ダミー命令検出部231a〜231c及びAND回路232は、例えば、次に説明するように動作する。ダミー命令検出部231a〜231cのそれぞれは、ハイレベルとローレベルのいずれかに切り替えられる信号を、バス用命令バッファ22a〜22cのそれぞれ及びAND回路232に出力する。ダミー命令検出部231a〜231cのそれぞれは、バス用命令バッファ22a〜22cのそれぞれからダミー命令が出力されている場合、ハイレベルの信号を出力する。一方、ダミー命令検出部231a〜231cのそれぞれは、バス用命令バッファ22a〜22cのそれぞれからダミー命令が出力されていない場合、ローレベルの信号を出力する。バス用命令バッファ22a〜22cのそれぞれは、ハイレベルの信号が入力されている場合に動作し、ローレベルの信号が入力されている場合にはその動作を停止する。すなわち、ハイレベルの信号は、停止信号に相当する。
AND回路232は、ダミー命令検出部231a〜231cの全てからハイレベルの信号が入力されている場合、ダミー命令検出部231a〜231cのそれぞれに対してハイレベルの信号を出力する。AND回路232は、ダミー命令検出部231a〜231cの少なくとも1つからローレベルの信号が入力されている場合、ダミー命令検出部231a〜231cのそれぞれに対してローレベルの信号を出力する。ダミー命令検出部231a〜231cのそれぞれは、AND回路232からハイレベルの信号が入力された場合、バス用命令バッファ22a〜22c及びAND回路232に対して出力する信号をハイレベルからローレベルに切り替える。一方、ダミー命令検出部231a〜231cのそれぞれは、AND回路232からローレベルの信号が入力されている場合、バス用命令バッファ22a〜22c及びAND回路232に対して出力する信号のレベルは切り替えない。すなわち、AND回路232が出力するハイレベルの信号は、クリア信号に相当する。
続いて、外部計算機3について説明する。図2では、外部計算機3の構成をより詳細に示している。図2に示すように、外部計算機3は、ダミー命令生成機能30の他に、命令生成部31と、実行順序判断部32とを有する。
命令生成部31は、複数のモジュール4が実行する複数の命令を生成する。実行順序判断部32は、命令生成部31が生成した複数の命令において、実行順序を守るべき命令が存在するか否かを判断する。ダミー命令生成機能30は、ダミー命令を生成して、実行順序判断部32が検出した実行順序を守るべき命令の間に挿入する。これにより、外部計算機3が生成した複数の命令において、第1の命令と、第1の命令の後に実行されるべき第2の命令とが存在する場合、第1の命令、ダミー命令、第2の命令の順に命令が送信される。
続いて、図3を参照して、実施の形態1に係る外部計算機3のソフトウェア構成及びハードウェア構成について説明する。図3に示すように、外部計算機3は、CPU(Central Processing Unit)300と、メモリ301と、ハードディスク302と、通信コントローラ303とを有する。
CPU300は、外部計算機3を統括的に制御する。CPU300は、ハードディスク302に格納されたインタプリタ310をメモリ301にロードして実行することで、ハードディスク302に格納されたソースプログラム311を解釈して実行可能プログラムを生成する。CPU300は、生成した実行可能プログラムを実行することにより、命令を生成してインターフェイスボード2に送信する。言い換えると、インタプリタ310と、ソースプログラム311を解釈することにより生成される実行可能プログラムは、CPU300に対してダミー命令生成機能30、命令生成部31、及び実行順序判断部32としての各種処理を実行させるためのコードを含む。
メモリ301は、CPU300が利用する情報が一時的に格納される。この情報には、上述したように、ハードディスク302からロードされるインタプリタ310及びソースプログラム311等も含まれる。メモリ301は、例えばDRAM(Dynamic Random Access Memory)及びSRAM(Static Random Access Memory)等の揮発性の記憶装置である。
ハードディスク302には、上述の通り、インタプリタ310及びソースプログラム311等の各種情報が格納されている。なお、ハードディスク302のような不揮発性の記憶装置であれば、ハードディスク302に代えて、例えばフラッシュメモリ等の他の記憶装置を利用してもよい。メモリ301及びハードディスク302は、外部計算機3が利用する情報が格納される記憶部として機能する。なお、記憶部として機能する記憶装置の数及び組み合わせも、上述の例に限られない。
通信コントローラ303は、CPU300から出力された情報を、インターフェイスボード2に対して送信可能な形式に変換して送信する。変換後の形式は、外部計算機3とインターフェイスボード2との間の通信規格に準ずる。また、通信コントローラ303は、インターファイスボード2からの情報を受信し、外部計算機3内で処理可能な形式に変換してCPU300に出力する。
インタプリタ310は、ダミー命令を生成する機能を有する。ソースプログラム(ソースコード、原子プログラム)311は、複数のモジュール4を制御するコードが記述されている。CPU300は、インタプリタ310によってソースプログラム311を逐次解釈(逐次コンパイルとも称する)して生成した実行可能プログラム(ロードモジュール、機械語プログラム、オブジェクトコード)を実行することで、複数のモジュール4で実行される命令を生成し、インターフェイスボード2を介して複数のモジュール4に対して順次送信する。このときに、CPU300は、実行順序を守るべき命令を生成して送信する場合、それらの命令の間でダミー命令を生成して送信する。すなわち、インタプリタ310は、実行順序を守るべき命令を生成して送信するコードが実行される場合に、それらのコードの間にダミー命令を生成して送信するコードを追加してCPU300に実行させる。これにより、外部計算機3は、実行順序を守るべき命令の間にダミー命令を挿入して、それらの命令をインターフェイスボード2に送信することができる。
なお、複数のモジュール4を制御する方式は、上述したようにインタプリタ310によってソースプログラム311を逐次解釈することで生成した実行可能プログラムを実行する例に限られない。ハードディスク302においてインタプリタ310に代えてコンパイラが格納されるようにし、CPU300がそのコンパイラによってソースプログラム311を一括解釈(一括コンパイルとも称する)することで生成した実行可能プログラムを実行するようにしてもよい。この場合、コンパイラは、実行順序を守るべき命令を生成して送信するコードの間に、ダミー命令を生成して送信するコードを追加して実行可能プログラムを生成する処理をCPU300に実行させる。もしくは、実行可能なプログラム自体に実行順序を守るべき命令判断機能およびダミー命令生成機能を持たせ、命令の順序をチェックしながらダミー命令を生成する処理をCPU300に実行させることができる。これにより、CPU300が、この実行可能プログラムを実行すると、実行順序を守るべき命令の間にダミー命令が挿入され、それらの命令がインターフェイスボード2に送信される。
このように、インタプリタ310に限らず、コンパイラによってもダミー命令の挿入を実現することが可能である。
続いて、図4を参照して、実施の形態1に係る命令の実行順序について説明する。図4では、外部計算機3の命令生成部31が命令A〜Fの順に命令を生成する例について説明する。
ここで、命令C、命令D、命令Fは、実行順序を守るべき命令であるものとする。すなわち、命令Dは、命令Cの実行後に実行する必要があり、命令Fは、命令Dの実行後に実行する必要があるものとする。なお、図4では、バス91〜93において1つの命令の送信が完了する時間を、1単位時間(=1.0)として示している。
この場合、ダミー命令生成機能30は、命令Cと命令Dの間にダミー命令Aを挿入し、命令Dと命令Fの間にダミー命令Bを挿入する。よって、外部計算機3は、図4に「通信経路90のデータ」として示すように、命令A、命令B、命令C、ダミー命令A、命令D、命令E、ダミー命令B、命令Fの順に、命令を順次1つずつ、通信経路90を介してインターフェイスボード2に対して送信する。
なお、通信経路90の通信速度は、バス91〜93の通信速度よりも高速であることが望ましい。例えば、図4に示すように、バス91〜93で1つの命令を送信する時間内で、通信経路90で複数の命令(命令A〜F及びダミー命令A、B)を送信することができる。図4では、バス91〜93で1つの命令を送信する時間内で、通信経路90で少なくとも8つの命令を送信することができる例について示しているが、命令数の関係はこれに限られない。通信経路90と複数のバス91〜93との間にこのような関係があることにより、バス91〜93において命令が枯渇することなく、モジュール4に対して連続的に命令を送信することが可能となる。
また、命令A、命令B、及び命令Cは、バス91に接続されるモジュール4によって実行される命令であり、命令Dは、バス92に接続されるモジュール4によって実行される命令であり、命令E及び命令Fは、バス93に接続されるモジュール4によって実行される命令であるものとする。
この場合、図4に「バスのデータ」として示すように、バス用命令バッファ22a〜22cのそれぞれは、バス91〜93のそれぞれに対して命令を送信する。すなわち、バス用命令バッファ22aは、命令A、命令B、命令C、ダミー命令A、ダミー命令Bの順番に命令が格納され、その順番で命令を送信する。バス用命令バッファ22bは、ダミー命令A、命令D、ダミー命令Bの順番に命令が格納され、その順番で命令を送信する。バス用命令バッファ22cは、ダミー命令A、命令E、ダミー命令B、命令Fの順番で命令が格納され、その順番で命令を送信する。以下、この場合における時間の経過に応じたバス91〜93の状態について説明する。
(時間1)
バス用命令バッファ22aに格納された命令Aは、バス91に送信される。バス91に接続されるモジュール4は、バス用命令バッファ22aから送信された命令Aを受信して実行する。ここで、バス用命令バッファ22aから送信される命令はダミー命令Aではないが、バス用命令バッファ22b、22cから送信される命令はダミー命令Aである。よって、タイミング調整機能23は、ダミー命令Aを送信するバス用命令バッファ22b、22cの動作を停止させる。これにより、バス用命令バッファ22b、22cから送信されるダミー命令Aのモジュール4による受信が完了することはない。
(時間2)
バス用命令バッファ22aに格納された命令Bは、バス91に送信される。バス91に接続されるモジュール4は、バス用命令バッファ22aから送信された命令Bを受信して実行する。ここで、バス用命令バッファ22aから送信される命令はダミー命令Aではないが、バス用命令バッファ22b、22cから送信される命令はダミー命令Aである。よって、タイミング調整機能23は、ダミー命令Aを送信するバス用命令バッファ22b、22cの動作を引き続き停止させる。
(時間3)
バス用命令バッファ22aに格納された命令Cは、バス91に送信される。バス91に接続されるモジュール4は、バス用命令バッファ22aから送信された命令Cを受信して実行する。ここで、バス用命令バッファ22aから送信される命令はダミー命令Aではないが、バス用命令バッファ22b、22cから送信される命令はダミー命令Aである。よって、タイミング調整機能23は、ダミー命令Aを送信するバス用命令バッファ22b、22cの動作を引き続き停止させる。
(時間4)
バス用命令バッファ22aに格納されたダミー命令Aも、バス91に送信される。よって、バス用命令バッファ22a〜22cの全てから送信される命令がダミー命令Aとなる。そのため、タイミング調整機能23は、バス用命令バッファ22b、22cの動作を再開させる。なお、このときに、バス用命令バッファ22a〜22cは、後述するように、ダミー命令Aを破棄する。
(時間5)
バス用命令バッファ22aに格納されたダミー命令Bは、バス91に送信される。一方、動作を再開したバス用命令バッファ22bに格納された命令Dは、バス92に送信される。バス92に接続されるモジュール4は、バス用命令バッファ22bから送信された命令Dを受信して実行する。動作を再開したバス用命令バッファ22cに格納された命令Eも、バス93に送信される。バス93に接続されるモジュール4は、バス用命令バッファ22cから送信された命令Eを受信して実行する。このように、命令Cが送信されるまで、命令Cの後に実行すべき命令Dの送信が保留される。よって、命令C、Dの実行順序を保証することができる。ここで、バス用命令バッファ22b、22cから送信される命令はダミー命令Bではないが、バス用命令バッファ22aから送信される命令はダミー命令Bである。よって、タイミング調整機能23は、ダミー命令Bを送信するバス用命令バッファ22aの動作を停止させる。
(時間6)
バス用命令バッファ22bに格納されたダミー命令Bも、バス92に送信される。バス用命令バッファ22cに格納されたダミー命令Bも、バス93に送信される。よって、バス用命令バッファ22a〜22cの全てから送信される命令がダミー命令Bとなる。そのため、タイミング調整機能23は、バス用命令バッファ22aの動作を再開させる。
(時間7)
バス用命令バッファ22cに格納された命令Fは、バス93に送信される。バス93に接続されるモジュール4は、バス用命令バッファ22cから送信された命令Fを受信して実行する。このように、命令Dが送信されるまで、命令Dの後に実行すべき命令Fの送信が保留される。よって、命令D、Fの実行順序を保証することができる。
上述した本実施の形態1に係るモジュール制御システム1によれば、ここで例示したように、独立して並列的に命令を実行するモジュール4群の間においても、命令実行の順序性を保証することができる。
続いて、図5を参照して、実施の形態1に係るモジュール制御システム1の動作について説明する。
外部計算機3のCPU300は、ユーザからの入力に応じてソースプログラム311を作成する(S1)。このソースプログラム311には、複数のモジュール4を制御するためのコードが記述される。例えば、このソースプログラム311には、センサ値取得命令及びモータ駆動命令を生成してモジュール4に対して送信するコードが記述される。上述のユーザからの入力は、外部計算機3が有する入力装置(図示せず)操作することによって実施される。入力装置は、例えば、キーボード及びマウス等である。
外部計算機3のCPU300は、インタプリタ310を実行することで、ソースプログラム311を逐次解釈して実行可能プログラムを生成し、実行する(S2)。これにより、外部計算機3によって各種命令が生成されてインターフェイスボード2を介して順次複数のモジュール4に送信される。複数のモジュール4のそれぞれが受信した命令を実行することで、複数のモジュール4が構成するガジェットの動作が実現される(S3)。
続いて、図6を参照して、実施の形態1に係る外部計算機3の動作について説明する。外部計算機3は、インタプリタ310を実行することで、ソースプログラム311を逐次解釈して実行可能プログラムを実行する際に、以下のステップS11〜S14の処理を繰り返し実行する。
実行順序判断部32は、解釈対象のi行目のコードで生成される命令と、i−1行目以前(i−1行目を含む)のコードで生成される命令との間で順序に制約があるか否かを判断する(S11)(iは、任意の正整数)。実行順序判断部32は、例えば、ソースコード311を解析し、i−1行目以前のコードで生成される命令がセンサ値取得命令であり、i行目のコードで生成される命令がそのセンサ値取得命令によって取得したセンサ値に基づくモータ駆動命令である場合、両者の順序に制約があると判断する。
ここで、命令の順序の制約を調査する範囲は、例えば、以下の(1)〜(4)の方法のうち、任意の方法を採用するようにしてよい。
(1)直前にダミー命令を生成した行までを調査
この方法の場合、実行順序判断部32は、i−1行目から直前にダミー命令を生成した行までを順番に遡って調査する。
(2)予め定めた行数だけ調査
この方法の場合、実行順序判断部32は、i−1行目から予め定めた行数を遡った行までを調査する。
(3)順序の制約がある命令を検出するまで調査
この方法の場合、実行順序判断部32は、i−1行目から順番に遡っていき、順序の制約がある命令を生成するコードが検出された行で調査を終了する。
(4)i−1行目以前の全てを調査
この方法の場合、実行順序判断部32は、i−1行目からソースプログラム311の最初の行までを順番に遡って調査する。
ダミー命令生成機能30は、実行順序判断部32によってi行目の命令とi−1行目以前の命令との間で順序に制約があると判断された場合(S11:Yes)、ダミー命令を生成する(S12)。ソースプログラム311から生成される実行可能プログラムにおいて、i行目に対応するコードと、i−1行目以前で順序に制約があると判断された行に対応するコードとの間に、ダミー命令を送信するコードが挿入される。
一方、ダミー命令生成機能30は、実行順序判断部32によってi行目の命令とi−1行目以前の命令との間で順序に制約がないと判断された場合(S11:No)、ダミー命令は生成しない。
命令生成部31は、ソースプログラム311のi行目にモジュール4に対して命令を送信する処理が記述されている場合、ソースプログラム311のi行目の記述から命令を生成する(S13)。
命令生成部31は、生成した命令に対して、その命令の送信対象となるバスを示す対象バス情報を追加する(S14)。ここで、命令の送信対象となるバスは、モジュール4と、そのモジュール4が接続されるバスとを示す対応データに基づいて判断する。この対応データは、例えば、ハードディスク302に予め格納されている。ソースプログラム311の記述において、命令を生成するコードには、その命令の送信先となるモジュール4が示されている。そのため、命令生成部31は、対応データに基づいて、命令の送信先のモジュール4から、その命令の送信先となるバスを示す対象バス情報を生成して、その命令に追加する。インターフェイスボード2の送信制御機能20(命令振分部201)は、外部計算機3から命令を受信した場合に、その命令に追加された対象バス情報が示すバスに対応するバス用命令バッファ22に、その命令を振り分ける。これにより、送信制御機能20(命令振分部201)が命令を、その送信先に対応するバス用命令バッファ22に正しく振り分けることができる。
このように、i行目の命令とi−1行目以前の命令との間で順序に制約があると判断された場合には、ステップS12でダミー命令生成機能30がダミー命令を生成して送信してから、ステップS13で命令生成部31が命令を生成して送信する。一方、i行目の命令とi−1行目以前の命令との間で順序に制約がないと判断された場合には、ダミー命令は送信されず、ステップS13で命令生成部31のみが命令を生成して送信する。
これによれば、例えば、センサ値取得命令と、そのセンサ値取得命令と順序に制約があるモータ駆動命令とが別々のバスに送信される場合であっても、センサ値取得命令とモータ駆動命令の間にダミー命令を挿入して送信することができる。したがって、インターフェイスボード2におけるダミー命令を利用した制御によって、図4を参照して説明したように、センサ値取得命令をモータ駆動命令が追い越して実行されないようにできる。よって、例えば、1周期前のセンサ値に基づいてモータを駆動するといった誤動作を回避することができる。
続いて、図7を参照して、実施の形態1に係るインターフェイスボード2の送信制御機能20及びダミー命令検出機能21の動作について説明する。
ダミー命令検出機能21は、外部計算機3から受信した命令がダミー命令であるか否かを判断する(S21)。送信制御機能20は、外部計算機3から受信した命令がダミー命令でないと判断された場合(S21:No)、命令振分部201によって、その命令に含まれる対象バス情報が示すバスにその命令を振り分ける(S22)。一方、送信制御機能20は、外部計算機3から受信した命令がダミー命令であると判断された場合(S21:Yes)、命令分配部202によって、その命令を全てのバス91〜93に分配する(S23)。
続いて、図8を参照して、実施の形態1に係るインターフェイスボード2のタイミング調整機能23の動作について説明する。
タイミング調整機能23のダミー命令検出部231a〜231cは、それぞれに対応するバス用命令バッファ22a〜22cから出力される命令がダミー命令であるか否かを判断する(S31)。ダミー命令検出部231a〜231cは、バス用命令バッファ22a〜22cから出力される命令がダミー命令でないと判断した場合(S31:No)、そのバス用命令バッファ22a〜22cからバスへの命令の出力を許容する(S32)。
一方、ダミー命令検出部231a〜231cは、そのダミー命令検出部231に対応するバス用命令バッファ22a〜22cから出力される命令がダミー命令であると判断した場合(S31:Yes)、そのバス用命令バッファ22a〜22cからバスへの命令の出力を停止する(S33)。タイミング調整機能23は、全てのバス用命令バッファ22a〜22cからダミー命令が出力されているか否かを判断する(S34)。すなわち、ダミー命令検出部231は、クリア信号が入力されたか否かを判定する。
タイミング調整機能23は、全てのバス用命令バッファ22a〜22cからダミー命令が出力されていると判断した場合(S34:Yes)、それらのバス用命令バッファ22a〜22cのダミー命令を破棄させる(S35)。このダミー命令の破棄は、バス用命令バッファ22a〜22cのそれぞれが、ダミー命令検出部231a〜231cのそれぞれからの停止命令の出力が解除されたタイミングで出力している命令を破棄することで実施する。これにより、バス用命令バッファ22a〜22cから出力される命令がダミー命令でなくなるため(S31:No)、バス用命令バッファ22a〜22cから命令が出力される(S32)。一方、タイミング調整機能23は、全てのバス用命令バッファ22a〜22cからダミー命令が出力されていないと判断した場合(S34:No)、それらのバス用命令バッファ22a〜22cのダミー命令の破棄は実施しない。
ここで、以上の説明では、ダミー命令に関する動作を明確化するために言及しなかったが、当然に、各モジュール4から命令を受信することも可能である。より具体的には、インターフェイスボード2は、図9に示すように、送信制御機能20、ダミー命令検出機能21、バス用命令バッファ22a〜22c、及びタイミング調整機能23を有する送信機能200の他に、受信機能220を有する。受信機能220は、受信制御機能221と、受信バス用命令バッファ222a〜222cとを有する。
受信バス用命令バッファ222a〜222cのそれぞれは、複数の命令を格納可能である。受信バス用命令バッファ222a〜222cのそれぞれは、モジュール4からバス91〜93のそれぞれを介して受信した命令を格納する。受信バス用命令バッファ222a〜222cのそれぞれは、命令を先入れ先出し(FIFO)で格納する。よって、受信バス用命令バッファ222a〜222cのそれぞれは、格納された順番で順次命令を受信制御機能221に出力する。
受信制御機能221は、受信バス用命令バッファ222a〜222cのそれぞれから入力された命令を、外部計算機3に対して通信経路90を介して到着順に1つずつ順次送信する。すなわち、図4で示される通信経路90及びバス91〜93を占有する命令と同様に、モジュール4から外部計算機3に向けて送信される命令によって通信経路90及びバス91〜93が占有される場合もあり得る。
なお、このモジュール4から外部計算機3に送信される命令は、モジュール4が外部計算機3に対して処理を指示する命令そのものに限られず、外部計算機3からの命令に応じてモジュール4が応答する情報も含まれる。この情報は、例えば、モジュール4がセンサ値取得命令に応じて外部計算機3に対して送信するセンサ値である。
以上に説明したように、本実施の形態1に係るモジュール制御システム1は、バス91〜93(モジュール4群)のそれぞれに命令を先入れ先出しで出力するバス用命令バッファ22a〜22cと、順次入力される命令をバス用命令バッファ22a〜22cのいずれかに振り分ける送信制御機能20と、バス用命令バッファ22a〜22cからの命令の出力を制御するタイミング調整機能23を有する。
ここで、送信制御機能20は、入力された命令が、実行順序を守るべき命令の間に挿入されるダミー命令である場合には、入力された命令をバス用命令バッファ22a〜22cの全てに分配する。そして、タイミング調整機能23は、バス用命令バッファ22a〜22cの全てにおいて出力する命令がダミー命令となるまで、出力する命令がダミー命令となっているバス用命令バッファ22からバス(モジュール4群)への命令の出力を抑止する。
これによれば、ダミー命令よりも前の命令が出力されて、バス用命令バッファ22a〜22cの出力にダミー命令が揃うまで、ダミー命令よりも後の命令がモジュール4に出力されて実行されることはない。よって、実行順序を守るべき命令の実行順序を保証することができる。
例えば、本実施の形態1によるダミー命令による制御を実施せずに、図4に示す命令A〜命令Fを送信すると、図10に示すように命令A〜命令Fが送信される。すなわち、インターフェイスボード2は、外部計算機3から通信経路90を介して受信した各命令A〜命令Fを、即時各バス91〜93に振り分けて送信する。
したがって、(時間1)では、バス91に命令Aが送信され、バス92に命令Dが送信され、バス93に命令Eが送信される。(時間2)では、バス91に命令Bが送信され、バス93に命令Fが送信される。(時間3)では、バス91に命令Cが送信される。このように、命令Cの後に実行されるべき命令Dが、命令Cよりも先にモジュール4に送信されて実行されてしまう。これに対して、本実施の形態1によれば、同様の命令A〜命令Fを送信する場合においても、図4に示すように命令の順序性を保証することができる。
(実施の形態1の変形例1)
モジュール制御システム1は、図1、2に示すように、外部計算機3とインターフェイスボード2とを直接接続する形態に限られず、図11に示すように、外部計算機3とインターフェイスボード2とを処理装置5を介して接続するようにしてもよい。外部計算機3は、通信経路90を介して処理装置5と接続される。処理装置5は、通信経路95を介してインターフェイスボード2と接続される。
処理装置5は、例えば、マイコンボードである。処理装置5は、命令メモリ50を有する。命令メモリ50は、外部計算機3から受信した命令が一時的に格納される。命令メモリ50は、例えばDRAM及びSRAM等の揮発性の記憶装置である。そして、処理装置5は、外部計算機3から受信した命令を命令メモリ50に一時的に蓄積してからインターフェイスボード2に対して順次送信するようにしてもよい。よって、命令メモリ50も、命令を先入れ先出し(FIFO)で命令を格納する。
(実施の形態1の変形例2)
また、処理装置5の利用方法は、このように外部計算機3から送信された命令を中継するのみに限られず、図12に示すように、外部計算機3がコンパイラによってソースプログラム311を一括解釈することで生成した実行可能プログラムを処理装置5で実行することで、命令をインターフェイスボード2に対して送信するようにしてもよい。
この変形例では、外部計算機3は、プログラム生成部320を有する。外部計算機3のCPU300が、上述のコンパイラの機能を担務することでプログラム生成部320として機能する。また、プログラム生成部320は、実行順序判断部32を有する。プログラム生成部320は、実行順序判断部32によって実行順序を守るべき命令が検出された場合、その実行順序を守るべき命令を生成して送信するコードの間に、ダミー命令を生成して送信するコードを追加して実行可能プログラムを生成する。外部計算機3は、生成した実行可能プログラムを処理装置5に送信する。
また、この変形例では、処理装置5は、プログラム実行部321を有する。処理装置5のCPU(図示せず)が、外部計算機3から受信した実行可能プログラムを実行することで、プログラム実行部321として機能する。また、プログラム実行部321は、ダミー命令生成機能30と、命令生成部31とを有する。処理装置5のCPUが実行可能プログラムを実行することで、順次命令を生成してインターフェイスボード2に送信することになる。また、この際には、ダミー命令が生成されて、実行順序を守るべき命令の間に挿入される。すなわち、処理装置5のCPUは、実行可能プログラムを実行することで、命令生成機能30及び命令生成部31として機能することになる。
なお、処理装置5は、実行可能プログラムを受信に応じて即時実行せずに、処理装置5の記憶装置に格納しておいて任意のタイミングで実行するようにしてもよい。これによれば、複数のモジュール4に対して、外部計算機3を接続せずに、処理装置5とインターフェイスボード2のみを接続をすることで制御することができる。そのため、複数のモジュール4で構成されるガジェットの動作範囲の制限を無くすことができる。例えば、外部計算機3とインターフェイスボード2とがケーブルによって接続されたままの状態では、ケーブルの長さによってガジェットの動作範囲に制約ができてしまう。これに対して、処理装置5(例えばマイコンボード)及びインターフェイスボード2のみがガジェットに接続された状態であれば、処理装置5及びインターフェイスボード2は、外部計算機3(例えばPC)と比較して小型であるため、処理装置5及びインターフェイスボード2をガジェットに搭載したまま動作範囲に制約なく動作させることが可能となる。
<実施の形態2>
続いて、実施の形態2について説明する。以下、実施の形態1と同様の内容については適宜省略して説明する。図13を参照して、実施の形態2に係るモジュール制御システム1に係るインターフェイスボード2及び外部計算機3の構成について説明する。本実施の形態2に係るインターフェイスボード2は、実施の形態1に係るインターフェイスボード2と比較して、さらにオーバーフロー検出部24を有する。
オーバーフロー検出部24は、バス用命令バッファ22a〜22cのそれぞれのオーバーフローを検出する。オーバーフロー検出部24は、バス用命令バッファ22a〜22cの少なくとも1つでオーバーフローを検出した場合、オーバーフローの検出を通知する通知信号を外部計算機3に対して送信する。
外部計算機3のダミー命令生成機能30及び命令生成部31は、インターフェイスボード2からの通知信号に応じて、命令の生成・送信を停止する。また、外部計算機3は、インターフェイスボード2をリセットする等して、インターフェイスボード2を復旧させてから命令の送信を再開するようにしてもよい。
以上に説明したように、本実施の形態2では、オーバーフロー検出部24は、バス用命令バッファ22がオーバーフローになったことを検出し、命令の入力元となる外部計算機3に通知する。これによれば、外部計算機3が通知に応じて、インターフェイスボード2のバス用命令バッファ22a〜22cがオーバーフローした状態での動作の継続を抑止することができる。そのため、異常発生時に動作が継続されてしまうことを防止することができる。
(実施の形態2の変形例1)
上記説明では、インターフェイスボード2がバス用命令バッファ22a〜22cのオーバーフローを検出するオーバーフロー検出部24を有する例について説明したが、これに限られない。インターフェイスボード2は、オーバーフロー検出部24に代えて、バス用命令バッファ22a〜22cのバッファフル(バス用命令バッファ22が一杯になったこと)を検出するバッファフル検出部を有してもよい。
この変形例1では、バッファフル検出部は、バス用命令バッファ22a〜22cの少なくとも1つがバッファフルになったことを検出した場合、バッファフルの検出を通知する通知信号を外部計算機3に対して送信する。外部計算機3のダミー命令生成機能30及び命令生成部31は、インターフェイスボード2からの通知信号に応じて、命令の生成・送信を停止する。また、バッファフル検出部は、バス用命令バッファ22a〜22cのバッファフルが解消した場合、外部計算機3に対する通信信号の送信を解除してもよい。この場合、外部計算機3のダミー命令生成機能30及び命令生成部31は、インターフェイスボード2からの通知信号の送信解除に応じて、命令の生成・送信を再開してもよい。
本変形例によれば、インターフェイスボード2のバス用命令バッファ22a〜22cのオーバーフローを防止することができる。そのため、異常発生時に制御が継続されてしまうことを防止することができる。
(実施の形態2の変形例2)
また、本実施の形態2においても、図14に示すように、モジュール制御システム1は、図11で示した例と同様に外部計算機3とインターフェイスボード2と、を処理装置5を介して接続するようにしてもよい。
この場合、オーバーフロー検出部24は、通知信号を処理装置5に対して送信する。処理装置5は、インターフェイスボード2からの通知信号に応じて、命令メモリ50に蓄積された命令の送信を停止する。なお、変形例1と同様、オーバーフロー検出部24に代えて、バッファフル検出部を有するようにしてもよい。
また、図12で示した例と同様に、外部計算機3がコンパイラによってソースプログラム311を一括解釈することで生成した実行可能プログラムを処理装置5で実行することで、命令をインターフェイスボード2に対して送信するようにしてもよい。この場合、実行可能プログラムにインターフェイスボード2からの通知信号に応じて命令の送信を停止する処理を含めておくことで、処理装置5のCPUが、通知信号に応じて命令の送信を停止するようにしてもよい。また、実行可能プログラムに異常時処理を含めておき、処理装置5のCPUが、この実行可能プログラムの実行時に通知信号を受信した場合、異常時処理としてインターフェイスボード2をリセットする等して、インターフェイスボード2を復旧させてから命令の送信を再開するようにしてもよい。
<実施の形態3>
続いて、実施の形態3について説明する。以下、これまでの実施の形態1、2と同様の内容については適宜省略して説明する。
ここで、命令の実行順序を守りたいケースとして、主に以下の2つがある。
(1)単純に命令の順序を守りたい場合
例えば、上述したように、第1の命令でセンサ値を取得し、第2の命令で取得したセンサ値に基づいてモータを駆動したい場合である。
(2)制御周期毎に命令を分けたい場合
例えば、モータ制御では、制御理論に基づいてセンサ値のサンプリングタイミングと、モータへの指令タイミングは、一定周期毎のタイミングが定められる。モータの制御量は、サンプリング及び指令の周期の関数で表され、周期が期待値と異なれば設計通りに動作しない。
実施の形態1、2では、(1)は実現できていたが、(2)は実現できていなかった。そこで、本実施の形態3では、(1)、(2)を両立できるモジュール制御システム1について説明する。
図15を参照して、本実施の形態3に係るインターフェイスボード及び外部計算機の構成について説明する。本実施の形態3に係るインターフェイスボード2は、実施の形態1に係るインターフェイスボード2と比較して、さらにタイマー25を有する点が異なる。
タイマー25は、一定周期の時間が経過したことを周期的に通知する通知信号をAND回路232に出力する回路である。よって、本実施の形態3に係るAND回路232は、ダミー命令検出部231a〜231cの全てから停止信号が入力されており、かつタイマー25から通知信号が入力されている場合に、ダミー命令検出部231a〜231cの全てに対してクリア信号を出力する。一方、ダミー命令検出部231a〜231cのそれぞれからの停止信号及びタイマー25からの停止信号のうち、少なくとも1つが入力されていない場合には、ダミー命令検出部231a〜231cに対してクリア信号を出力しない。
より具体的には、タイマー25は、一定周期の時間が経過する毎に、一定時間ハイレベルとなるパルス信号をAND回路232に出力する。したがって、このパルス信号(ハイレベルの信号)は、通知信号に相当する。
AND回路232は、ダミー命令検出部231a〜231c及びタイマー25の全てからハイレベルの信号が入力されている場合、ダミー命令検出部231a〜231cの全てに対してハイレベルの信号を出力する。一方、AND回路232は、ダミー命令検出部231a〜231c及びタイマー25の少なくとも1つからローレベルの信号が入力されている場合、ダミー命令検出部231a〜231cの全てに対してローレベルの信号を出力する。なお、入力される信号がハイレベルかローレベルかによるバス用命令バッファ22a〜22c及びダミー命令検出部231a〜231cの動作は、実施の形態1で説明した通りである。
続いて、図16を参照して、実施の形態3に係る命令の実行順序について説明する。図16では、実施の形態1における図4に示す例と同様に、外部計算機3の命令生成部31が命令A〜Fの順に命令を生成する例について説明する。なお、タイマー25が通知信号を出力する周期は、5単位時間毎であり、「時間5」と「時間10」であるものとする。この場合、「時間1」〜「時間3」におけるバス91〜93の状態については、図4と同様であるため、説明を省略する。
(時間4)
バス用命令バッファ22a〜22cの全てから送信される命令がダミー命令となる。しかしながら、タイマー25からタイミング調整機能23に対しては、一定周期Aの時間の経過は通知されていない。よって、タイミング調整機能23は、ダミー命令Aを送信するバス用命令バッファ22a〜22cの動作を停止させる。
(時間5)
タイマー25は、タイミング調整機能23に対して一定周期のタイマー通知を行う。よって、バス用命令バッファ22a〜22cの全てから送信される命令がダミー命令Aとなり、かつタイマー25からタイマー通知が行われたため、タイミング調整機能23は、バス用命令バッファ22a〜22cの動作を再開させる。このとき、バス用命令バッファ22a〜22cは、ダミー命令Aを破棄する。
これにより、バス用命令バッファ22aに格納されたダミー命令Bは、バス91に送信される。バス用命令バッファ22bは、バス92に命令Dを送信する。バス用命令バッファ22cも、バス93に命令Eを送信する。
(時間6)〜(時間9)
バス用命令バッファ22bに格納されたダミー命令Bは、バス92に送信される。バス用命令バッファ22cに格納されたダミー命令Bは、バス93に送信される。バス用命令バッファ22a〜22cの全てから送信される命令がダミー命令Bとなるが、タイマー25からタイミング調整機能23に対しては、タイマー通知は行われていない。タイミング調整機能23は、ダミー命令Bを送信するバス用命令バッファ22a〜22cの動作を停止させる。
(時間10)
タイマー25は、タイミング調整機能23に対して一定周期の時間の経過を通知する。よって、バス用命令バッファ22a〜22cの全てから送信される命令がダミー命令Bとなり、かつタイマー25からタイマー通知が行われたため、タイミング調整機能23は、バス用命令バッファ22a〜22cの動作を再開させる。このとき、バス用命令バッファ22a〜22cは、ダミー命令Bを破棄する。これにより、バス用命令バッファ22cは、バス93に命令Fを送信する。バス93に接続されるモジュール4は、バス用命令バッファ22cから送信された命令Fを受信して実行する。
上述した本実施の形態3に係るモジュール制御システム1によれば、タイマー25の周期を制御周期とすることで、制御周期毎にモジュール4を制御することが可能である。また、本実施の形態3に係るモジュール制御システム1によれば、制御周期毎に実行する命令を分けることも可能である。例えば、ダミー命令Aからダミー命令Bまでの命令は、時間5〜時間9までの期間で実行し、ダミー命令B以降の命令は、時間10〜の期間で実行することができる。すなわち、命令D、Eがセンサ値取得命令であり、命令Fがモータ駆動命令である場合には、時間5〜時間9までの期間でセンサ値取得命令を実行し、時間10〜の期間でモータ駆動命令を実行するといったように、命令を制御周期毎に分けて実行することができる。
続いて、図17を参照して、実施の形態3に係るインターフェイスボード2のタイミング調整機能23の動作について説明する。本実施の形態3に係るタイミング調整機能23の動作は、図8に示す実施の形態1に係るタイミング調整機能23の動作と比較して、ステップS36が追加されている点が異なる。
すなわち、タイミング調整機能23は、全てのバス用命令バッファ22a〜22cからダミー命令が出力されており、かつタイマー25の出力が1(ハイレベル)であるか否かを判断する(S34、36)。タイミング調整機能23は、全てバス用命令バッファ22a〜22cからダミー命令が出力されており、かつタイマー25の出力が1(ハイレベル)であると判断した場合に(S34:Yes、S36:Yes)、バス用命令バッファ22a〜22cのダミー命令を破棄する(S35)。これにより、バス用命令バッファ22a〜22cからバス91〜93への命令の出力が再開される(S32)。
一方、タイミング調整機能23は、全てのバス用命令バッファ22a〜22cからダミー命令が出力されていない、又は、タイマー25の出力が1(ハイレベル)でないと判断した場合は(S34:No又はS36:No)、バス用命令バッファ22a〜22cのダミー命令を破棄しない。
以上に説明したように、本実施の形態3では、タイミング調整機能23は、バス用命令バッファ22a〜22cの全てにおいて出力する命令がダミー命令となり、かつタイマー25から通知信号が出力されるまで、出力する命令がダミー命令となっているバス用命令バッファ22からの命令の出力を抑止する。これによれば、タイマー25の周期毎のタイミングで、ダミー命令に続く命令を実行することができる。よって、所定の制御周期でモジュール4の制御を実施することができる。また、ダミー命令間の命令が、タイマー25の周期毎に分かれて実行されることになる。すなわち、制御周期毎に命令を分けて実行することもできる。
(実施の形態3の変形例)
本実施の形態3においても、図11示す例と同様に、外部計算機3とインターフェイスボード2とを処理装置5を介して接続するようにしてもよい。また、本実施の形態3においても、図12に示す例と同様に、外部計算機3がコンパイラによってソースプログラム311を一括解釈することで生成した実行可能プログラムを処理装置5で実行することで、命令をインターフェイスボード2に対して送信するようにしてもよい。
<実施の形態4>
続いて、実施の形態4について説明する。以下、これまでの実施の形態1〜3と同様の内容については適宜省略して説明する。本実施の形態4では、実施の形態2で課題となったオーバーフローの問題と、実施の形態3で課題となった制御周期の問題を同時に解決する構成について説明する。
図18を参照して、実施の形態4に係るインターフェイスボード2及び外部計算機3の構成について説明する。本実施の形態4に係る外部計算機3は、実施の形態3に係る外部計算機3と比較して、さらにダミー命令検出部33を有する。
ダミー命令検出部33は、タイミング調整機能23で検出されるダミー命令のN個先のダミー命令を検出する(Nは、予め定めた正整数)。すなわち、ダミー命令検出部33は、インターフェイスボード2に対して送信される最初のダミー命令の送信からN個目のダミー命令(最初のダミー命令を含まない)を検出する。言い換えると、ダミー命令検出部33は、命令の送信開始からN+1個目に送信されるダミー命令を検出する。
ダミー命令検出部33は、N個先のダミー命令を検出した場合、ダミー命令生成機能30、命令生成部31、及び実行順序判断部32の動作を停止させる。言い換えると、ダミー命令生成機能30及び命令生成部31は、命令の生成・送信を停止する。
また、本実施の形態4に係るAND回路232は、実施の形態3に係るAND回路232と比較して、ダミー命令検出部231a〜231cに加えて、さらに外部計算機3のダミー命令検出部33に対してもクリア信号を送信する。
ダミー命令検出部33は、AND回路232からのクリア信号の受信に応じて、ダミー命令生成機能30、命令生成部31、及び実行順序判断部32の動作を再開させる。言い換えると、ダミー命令生成機能30及び命令生成部31は、命令の生成・送信を再開する。
これによれば、タイミング調整機能23においてx番目のダミー命令の出力を待ち合わせているときには、外部計算機3ではx+N番目のダミー命令以降の命令の送信が抑止される。よって、バス用命令バッファ22a〜22cには、x番目のダミー命令からx+N番目のダミー命令までの間に送信される命令しか格納されないことになる。そのため、バス用命令バッファ22a〜22cに格納される命令数を抑制し、バス用命令バッファ22a〜22cのオーバーフローを防止することができる。
なお、2回目以降は、ダミー命令検出部33は、ダミー命令生成機能30、命令生成部31、及び実行順序判断部32の動作を再開させてから、次にインターフェイスボード2に対して送信されるダミー命令(1つのダミー命令)を検出した場合に、ダミー命令生成機能30、命令生成部31、及び実行順序判断部32の動作を停止させるようにすればよい。最初に、N+1目のダミー命令までの命令を送信しているため、後は、ダミー命令1つずつで命令の送信停止と送信再開とを繰り返すことで、バス用命令バッファ22a〜22cにx番目のダミー命令からx+N番目のダミー命令までの間に送信される命令が格納された状態を維持することができる。
続いて、図19を参照して、実施の形態4に係る命令の実行順序について説明する。図19では、実施の形態3における図16の例と同様に、外部計算機3の命令生成部31が命令A〜Fの順に命令を生成する例について説明する。なお、ここでは、説明を簡略化するために、Nの数を1としている。
図19に示すように、バス91〜93の状態については、実施の形態3における図16に示す例と同様であるが、通信経路90の状態が異なる。図16に示すように2番目(N+1番目)のダミー命令Bが検出された場合、外部計算機3は、命令の生成・送信を停止する。そのため、通信経路90では、ダミー命令Bの送信が完了しないままとなる。この状態は、上述したように、全てのバス91〜93に対してダミー命令Aが送信され、かつタイマー25からパルス信号が出力される「時間5」まで継続される。
これによれば、バス91に対してダミー命令Aが送信されるまで、バス92、93に対する命令の送信が停止されることになるが、バス92、93に対応するバス用命令バッファ22b、22cには、ダミー命令Aとダミー命令Bの間に生成された命令のみしか格納されることはない。よって、バス用命令バッファ22b、22cのオーバーフローを防止することができる。
以上に説明したように、本実施の形態4では、ダミー命令検出部33は、所定数のダミー命令のインターフェイスボード2に対する入力に応じて、インターフェイスボード2に対する命令の入力を中断する。タイミング調整機能23は、バス用命令バッファ22a〜22cの全てにおいて出力する命令がダミー命令であり、かつタイマー25から通知信号が出力された場合に、外部計算機3に対してクリア信号を出力する。そして、ダミー命令検出部33は、タイミング調整機能23からの通知信号の出力に応じて、中断していた命令の入力を再開する。
これによれば、バス用命令バッファ22a〜22cに格納される命令数は、最初のダミー命令から所定数のダミー命令の間の命令のみに限られる。よって、バス用命令バッファ22a〜22cに格納される命令数を抑制し、バス用命令バッファ22a〜22cのオーバーフローを防止することができる。
(実施の形態4の変形例)
本実施の形態4においても、図20に示すように、モジュール制御システム1は、図11に示す例と同様に外部計算機3とインターフェイスボード2とを処理装置5を介して接続するようにしてもよい。
この場合、図20に示すように、外部計算機3に代えて処理装置5がダミー命令検出部33を有するようにしてもよい。処理装置5は、ダミー命令検出部33によってN個先のダミー命令が検出された場合、命令メモリ50に蓄積された命令の送信を停止する。また、処理装置5は、ダミー命令検出部33によるクリア信号の受信に応じて、命令メモリ50に蓄積された命令の送信を再開する。
また、本実施の形態4においても、図12に示すように、外部計算機3がコンパイラによってソースプログラム311を一括解釈することで生成した実行可能プログラムを処理装置5で実行することで、命令をインターフェイスボード2に対して送信するようにしてもよい。この場合、実行可能プログラムにN個先のダミー命令の送信を検出した場合に命令の送信を停止する処理を含めておくことで、処理装置5のCPUが、N個先のダミー命令の送信に応じて命令の送信を停止する。また、実行可能プログラムにインターフェイスボード2からのクリア信号に応じて命令の送信を再開する処理を含めておくことで、処理装置5のCPUが、クリア信号に応じて命令の送信を再開する。また、本実施の形態4の変形例として、インターフェイスボード2がタイマー25を有さない形態(実施の形態1において、さらにダミー命令検出部33を有する形態)で実施することもできる。
<実施の形態5>
続いて、実施の形態5について説明する。以下、これまでの実施の形態1〜4と同様の内容については適宜省略して説明する。
上述したように、命令の実行タイミングを守りたいケースとして、(1)単純に命令の順序を守りたい場合、(2)制御周期毎に命令を分けたい場合が存在する。実際のガジェット(モジュール4)の動作を考慮すると、(1)と(2)を混在させたい場合が多い。すなわち、あるタイミングにおいては(1)を実現させ、他のタイミングでは、さらに(2)も実現させたいという場合が多い。そこで、本実施の形態5では、(1)と(2)を混在させた制御を実現する方法について説明する。
図21に示すように、本実施の形態5に係るインターフェイスボード2は、本実施の形態4に係るインターフェイスボード2と比較して、ダミー命令検出機能21に代えて、順序命令検出部211と、周期命令検出部212と、OR回路213とを有する点が異なる。
順序命令検出部211は、送信制御機能20に入力された命令が順序命令である場合、OR回路213にブロードキャスト指示信号を出力する。周期命令検出部212は、送信制御機能20に入力された命令が周期命令である場合、OR回路213にブロードキャスト指示信号を出力する。
OR回路213は、順序命令検出部211及び周期命令検出部212のそれぞれから入力される信号の論理和演算により生成された信号を、送信制御機能20が有するブロードキャスト端子に出力する。言い換えると、OR回路213は、順序命令検出部211及び周期命令検出部212の少なくとも1つからブロードキャスト指示信号が入力されている場合、ブロードキャスト指示信号を送信制御機能20に出力する。一方、OR回路213は、順序命令検出部211及び周期命令検出部212のいずれからもブロードキャスト指示信号が入力されていない場合、ブロードキャスト指示信号を出力しない。
より具体的には、順序命令検出部211及び周期命令検出部212は、例えば、次に説明する回路として実現される。順序命令検出部211及び周期命令検出部212のそれぞれは、ハイレベルとローレベルのいずれかに切り替えられる信号を送信制御機能20に出力する。順序命令検出部211は、送信制御機能20に対して順序命令が入力されている場合、ハイレベルの信号を出力する。一方、順序命令検出部211は、送信制御機能20に対して順序命令が入力されてない場合、ローレベルの信号を出力する。周期命令検出部212は、送信制御機能20に対して周期命令が入力されている場合、ハイレベルの信号を出力する。一方、周期命令検出部212は、送信制御機能20に対して周期命令が入力されてない場合、ローレベルの信号を出力する。すなわち、ハイレベルの信号は、ブロードキャスト指示信号に相当する。
したがって、OR回路213は、順序命令検出部211及び周期命令検出部212の少なくとも1つからハイレベルの信号が入力されている場合、ハイレベルの信号を送信制御機能20に出力する。一方、OR回路213は、順序命令検出部211及び周期命令検出部212の両方からローレベルの信号が入力されている場合、ローレベルの信号を送信制御機能20に出力する。
このように、本実施の形態5では、ダミー命令として、順序命令と周期命令が存在する。順序命令は、実施の形態1、2で説明したように、(1)単純に命令の順序を守りたい場合におけるダミー命令として機能する。周期命令は、実施の形態3、4で説明したように、(2)制御周期毎に命令を分けたい場合におけるダミー命令として機能する。
また、図21に示すように、本実施の形態5に係るインターフェイスボード2は、本実施の形態4に係るインターフェイスボード2と比較して、ダミー命令検出部231a〜231cに代えて、ダミー命令判断部233a〜233cを有する点が異なる。また、本実施の形態5に係るインターフェイスボード2は、本実施の形態4に係るインターフェイスボード2と比較して、AND回路232に代えて、AND回路234、235と、OR回路236と、選択回路237とを有する点が異なる。ダミー命令判断部233a〜233cのそれぞれは、順序命令検出部2331と、周期命令検出部2332と、OR回路2333とを有する。
ダミー命令判断部233a〜233cのそれぞれは、バス用命令バッファ22a〜22cのそれぞれから出力される命令を監視して、ダミー命令(順序命令及び周期命令)の出力を検出する。ダミー命令判断部233aは、バス用命令バッファ22aを監視し、ダミー命令判断部233bは、バス用命令バッファ22bを監視し、ダミー命令判断部233cは、バス用命令バッファ22cを監視する。
ダミー命令判断部233aは、バス用命令バッファ22aから順序命令又は周期命令が出力されている場合、バス用命令バッファ22aに対して停止信号を出力する。ダミー命令判断部233bは、バス用命令バッファ22bから順序命令又は周期命令が出力されている場合、バス用命令バッファ22bに対して停止信号を出力する。ダミー命令判断部233cは、バス用命令バッファ22cから順序命令又は周期命令が出力されている場合、バス用命令バッファ22cに対して停止信号を出力する。また、ダミー命令判断部233a〜233cのそれぞれは、バス用命令バッファ22a〜22cのそれぞれから順序命令が出力されている場合、AND回路234に停止信号を出力する。ダミー命令判断部233a〜233cのそれぞれは、バス用命令バッファ22a〜22cのそれぞれから周期命令が出力されている場合、OR回路236に停止信号を出力する。
より詳細には、ダミー命令判断部233a〜233cのそれぞれにおいて、対応するバス用命令バッファ22から順序命令が出力されている場合、順序命令検出部2331は、停止信号をOR回路2333に出力する。また、対応するバス用命令バッファ22から周期命令が出力されている場合、周期命令検出部2332は、OR回路2333及びOR回路236に対して停止信号を出力する。
OR回路2333は、順序命令検出部2331及び周期命令検出部2332のそれぞれから入力される信号の論理和演算により生成された信号を、対応するバス用命令バッファ22及びAND回路234に対して出力する。言い換えると、OR回路2333は、順序命令検出部2331及び周期命令検出部2332の少なくとも1つから停止信号が入力されている場合、OR回路2333及びOR回路236に対して停止信号を出力する。一方、OR回路2333は、順序命令検出部2331及び周期命令検出部2332の両方から停止信号が入力されていない場合、停止信号を出力しない。
より具体的には、順序命令検出部2331、周期命令検出部2332、及びOR回路2333は、例えば、次に説明する回路として実現される。順序命令検出部2331及び周期命令検出部2332のそれぞれは、ハイレベルとローレベルのいずれかに切り替えられる信号を送信制御機能20に出力する。順序命令検出部2331は、対応するバス用命令バッファ22から順序命令が出力されている場合、ハイレベルの信号を出力する。一方、順序命令検出部2331は、対応するバス用命令バッファ22から順序命令が出力されていない場合、ローレベルの信号を出力する。周期命令検出部2332は、対応するバス用命令バッファ22から順序命令が出力されている場合、ハイレベルの信号を出力する。一方、周期命令検出部212は、対応するバス用命令バッファ22から順序命令が出力されていない場合、ローレベルの信号を出力する。すなわち、ハイレベルの信号は、停止信号に相当する。
したがって、OR回路2333は、順序命令検出部2331及び周期命令検出部2332の少なくとも1つからハイレベルの信号が入力されている場合、対応するバス用命令バッファ及びAND回路234に対してハイレベルの信号を出力する。一方、OR回路2333は、順序命令検出部2331及び周期命令検出部2332の両方からローレベルの信号が入力されている場合、対応するバス用命令バッファ及びAND回路234に対してローレベルの信号を出力する。
AND回路234は、ダミー命令判断部233a〜233cのそれぞれから入力される信号の論理積演算により生成された信号を、AND回路235及び選択回路237に対して出力する。AND回路234は、ダミー命令判断部233a〜233cの全てから停止信号が入力されている場合、AND回路235に対して停止信号を出力する。この停止信号は、クリア信号として機能する。一方、AND回路232は、ダミー命令判断部233a〜233cの少なくとも1つから停止信号が入力されていない場合、AND回路235及び選択回路237に対してクリア信号を出力しない。
AND回路235は、AND回路234及びタイマー25のそれぞれから入力される信号の論理積演算により生成された信号を、選択回路237に対して出力する。AND回路235は、AND回路234から停止信号が入力されており、かつタイマー25から通知信号が入力されている場合、選択回路237に対してクリア信号を出力する。一方、AND回路235は、AND回路234からのクリア信号と、タイマー25からの通知信号の少なくとも1つが入力されていない場合、選択回路237に対してクリア信号を出力しない。
OR回路236は、ダミー命令判断部233a〜233cのそれぞれから入力される信号の論理積演算により生成された信号を、選択回路237の信号選択端子に対して出力する。OR回路236は、ダミー命令判断部233a〜233cの少なくとも1つから停止信号が入力されている場合、AND回路235のクリア信号を選択する選択信号を選択回路237に出力する。一方、OR回路236は、ダミー命令判断部233a〜233cのいずれからも停止信号が入力されていない場合、AND回路234のクリア信号を選択する選択信号を選択回路237に出力する。
選択回路237は、OR回路236からAND回路234のクリア信号を選択する選択信号が入力されている場合、AND回路234から入力されるクリア信号を選択してダミー命令判断部233a〜233cに出力する。一方、選択回路237は、OR回路236からAND回路235のクリア信号を選択する選択信号が入力されている場合、AND回路235から入力されるクリア信号を選択してダミー命令判断部233a〜233cに出力する。
より具体的には、AND回路234、235、OR回路236、及び選択回路237は、次に説明するように動作する。AND回路234は、ダミー命令判断部233a〜233cの全てからハイレベルの信号が入力されている場合、AND回路235及び選択回路237に対してハイレベルの信号を出力する。一方、AND回路234は、ダミー命令判断部233a〜233cの少なくとも1つからローレベルの信号が入力されている場合、AND回路235及び選択回路237に対してローレベルの信号を出力する。
AND回路235は、AND回路234及びタイマー25の全てからハイレベルの信号が入力されている場合、AND回路235及び選択回路237に対してハイレベルの信号を出力する。一方、AND回路234は、AND回路234及びタイマー25の少なくとも1つからローレベルの信号が入力されている場合、AND回路235及び選択回路237に対してローレベルの信号を出力する。
OR回路236は、ダミー命令判断部233a〜233cの少なくとも1つからハイレベルの信号が入力されている場合、選択回路237に対してハイレベルの信号を出力する。一方、OR回路236は、ダミー命令判断部233a〜233cの全てからローレベルの信号が入力されている場合、選択回路237に対してローレベルの信号を出力する。
選択回路237は、OR回路236からハイレベルの信号が入力されている場合、AND回路235から入力されている信号を、ダミー命令判断部233a〜233cのそれぞれに対して出力する。一方、選択回路237は、OR回路236からローレベルの信号が入力されている場合、AND回路234から入力されている信号を、ダミー命令判断部233a〜233cのそれぞれに対して出力する。
したがって、OR回路236から出力されるハイレベルの信号は、AND回路235のクリア信号を選択する選択信号に相当する。OR回路236から出力されるローレベルの信号は、AND回路234のクリア信号を選択する選択信号に相当する。AND回路234、235及び選択回路237から出力されるハイレベルの信号は、クリア信号に相当する。
このような構成によれば、バス用命令バッファ22から順序命令及び周期命令のいずれが出力された場合であっても、そのバス用命令バッファ22からの命令の出力を停止させることができる。その後に、全てのバス用命令バッファ22a〜22cからの出力が順序命令又は周期命令となった場合には、停止させたバス用命令バッファ22からの命令の出力を再開することができる。このとき、ダミー命令が周期命令である場合には、タイマー25から一定周期の経過が通知されたときに限り、バス用命令バッファ22からの命令の出力を再開させることができる。一方、ダミー命令が順序命令である場合には、タイマー25から一定周期の経過が通知されたか否かに限られず、バス用命令バッファ22からの命令の出力を再開させることができる。
よって、外部計算機3によって単純に命令の順序を守りたい命令の間に順序命令を挿入することで、命令の実行順序を保証することができる。そして、外部計算機3によって所定の制御周期毎に分けて実行させたい命令の間に周期命令を挿入することで、命令の実行順序の保証に加えて、それらの命令の所定の制御周期で分けての実行も可能となる。
また、図21に示すように、本実施の形態5に係る外部計算機3は、本実施の形態4に係る外部計算機3と比較して、ダミー命令検出部33に代えて、周期命令検出部34を有する点が異なる。
周期命令検出部34は、タイミング調整機能23で検出される周期命令のN個先の周期命令を検出する(Nは、予め定めた正整数)。すなわち、周期命令検出部34は、実施の形態4に係るダミー命令検出部33と同様に動作するが、ダミー命令として、順序命令及び周期命令のうち、周期命令のみを検出する点がダミー命令検出部33とは異なる。
ここで、AND回路235は、外部計算機3の周期命令検出部34に対しても信号を出力している。よって、実施の形態4に係るダミー命令検出部33は、AND回路232からのクリア信号に応じてダミー命令生成機能30、命令生成部31、及び実行順序判断部32の動作を再開させていたが、周期命令検出部34は、AND回路235からのクリア信号に応じてダミー命令生成機能30、命令生成部31、及び実行順序判断部32の動作を再開させる。
これによれば、実施の形態4と同様に、バス用命令バッファ22a〜22cに格納される命令数を抑制し、バス用命令バッファ22a〜22cのオーバーフローを防止することができる。
続いて、図22を参照して、実施の形態5に係る命令の実行順序について説明する。図22では、外部計算機3の命令生成部31が命令A〜Gの順に命令を生成する例について説明する。ここで、命令E、命令Fは、実行順序を守るべき命令であるものとする。また、命令C、命令D、命令Gは、一定周期毎に分けて実行したい命令であるものとする。なお、ここでは、説明を簡略化するために、実施の形態4における図19に示す例と同様に、Nの数を1としている。また、タイマー25が通知信号を出力する周期も、実施の形態4における図19に示す例と同様に、5単位時間毎であり、「時間5」と「時間10」であるものとする。
この場合、ダミー命令生成機能30は、命令Cと命令Dの間に周期命令を挿入し、命令Eと命令Fの間に順序命令を挿入し、命令Dと命令Gの間に周期命令を挿入する。よって、外部計算機3は、図22に「通信経路90のデータ」として示すように、命令A、命令B、命令C、周期命令A、命令D、命令E、順序命令、命令F、周期命令Bの順に、命令を順次1つずつ通信経路90を介してインターフェイスボード2に対して送信する。この場合、「時間1」〜「時間4」における状態については、ダミー命令が周期命令になること以外は、図19に示す例と同様であるため、説明を省略する。
(時間5)
タイマー25は、タイミング調整機能23に対して一定周期のタイマー通知を行う。よって、バス用命令バッファ22a〜22cの全てから送信される命令が周期命令となり、かつタイマー25からタイマー通知が行われたため、タイミング調整機能23は、バス用命令バッファ22a〜22cの動作を再開させる。
これにより、バス用命令バッファ22aに格納された順序命令は、バス91に送信される。バス用命令バッファ22bに格納された命令Dは、バス92に送信される。バス用命令バッファ22cも、バス93に命令Eを送信する。
(時間6)
バス用命令バッファ22bに格納された順序命令は、バス92に送信される。バス用命令バッファ22cに格納された順序命令は、バス93に送信される。よって、バス用命令バッファ22a〜22cの全てから送信される命令が順序命令となる。そのため、タイミング調整機能23は、タイマー25からタイマー通知は行われていないが、バス用命令バッファ22b、22cの動作を再開させる。
(時間7)
バス用命令バッファ22aに格納された周期命令は、バス91に送信される。一方、動作を再開したバス用命令バッファ22bに格納された周期命令は、バス92に送信される。バス用命令バッファ22cも、バス93に命令Fを送信する。
(時間8)〜(時間9)
バス用命令バッファ22cに格納された周期命令は、バス93に送信される。バス用命令バッファ22a〜22cの全てから送信される命令が周期命令となるが、タイマー25からタイミング調整機能23に対しては、タイマー通知は行われていない。タイミング調整機能23のダミー命令判断部233a〜233cは、周期命令を送信するバス用命令バッファ22a〜22cの動作を停止させる。
(時間10)
タイマー25は、タイミング調整機能23に対してタイマー通知を行う。よって、バス用命令バッファ22a〜22cの全てから送信される命令が周期命令となり、かつタイマー25からタイマー通知が行われたため、タイミング調整機能23は、バス用命令バッファ22a〜22cの動作を再開させる。これにより、バス用命令バッファ22bは、バス92に命令Gを送信する。
上述した本実施の形態5に係るモジュール制御システム1によれば、ここで例示したように、(1)単純に命令の順序を守りたい場合と、(2)制御周期毎に命令を分けたい場合とを混在させて実施することが可能である。例えば、命令Dがセンサ値取得命令であり、命令Gがモータ駆動命令である場合、制御周期毎に実行する命令を、センサ値取得命令とモータ駆動命令とに分けることができる。また、命令Eと命令Fのように、順序性のみを考慮して実行することも可能である。
続いて、図23を参照して、実施の形態5に係るインターフェイスボード2のタイミング調整機能23の動作について説明する。本実施の形態5に係るタイミング調整機能23の動作は、図17に示す実施の形態3に係るタイミング調整機能23の動作と比較して、ステップS33の後に、ステップS34〜S35に代えて、ステップS36〜S40が実行される点が異なる。
すなわち、タイミング調整機能23は、全てのバス用命令バッファ22a〜22cから順序命令が出力されているか否かを判断する(S37)。タイミング調整機能23は、全てのバス用命令バッファ22a〜22cから順序命令が出力されていると判断した場合(S37:Yes)、バス用命令バッファ22a〜22cの順序命令を破棄する(S41)。これにより、バス用命令バッファ22a〜22cからバス91〜93への命令の出力が再開される(S32)。一方、タイミング調整機能23は、全てのバス用命令バッファ22a〜22cから順序命令が出力されていないと判断した場合(S37:No)、バス用命令バッファ22a〜22cの順序命令を破棄しない。
また、タイミング調整機能23は、全てのバス用命令バッファ22a〜22cから周期命令が出力されており、かつタイマー25の出力が1(ハイレベル)であるか否かを判断する(S38、39)。タイミング調整機能23は、全てのバス用命令バッファ22a〜22cから周期命令が出力されており、かつタイマー25の出力が1(ハイレベル)であると判断した場合に(S38:Yes、S39:Yes)、バス用命令バッファ22a〜22cの周期命令を破棄する(S40)。これにより、バス用命令バッファ22a〜22cからバス91〜93への命令の出力が再開される(S32)。一方、タイミング調整機能23は、全てのバス用命令バッファ22a〜22cから周期命令が出力されていない、又は、タイマー25の出力が1(ハイレベル)でないと判断した場合は(S38:No又はS39:No)、バス用命令バッファ22a〜22cの周期命令を破棄しない。
以上に説明したように、本実施の形態5では、タイミング調整機能23は、ダミー命令が順序命令である場合、タイマー25からの通知信号の出力に関わらず、バス用命令バッファ22a〜22cの全てにおいて出力する命令が順序命令となるまで、出力する命令が順序命令となっているバス用命令バッファ22aからの命令の出力を抑止する。また、タイミング調整機能23は、ダミー命令が周期命令である場合は、バス用命令バッファ22a〜22cの全てにおいて出力する命令が周期命令となり、かつタイマーから通知信号が出力されるまで、出力する命令が周期命令となっているバス用命令バッファ22aからの命令の出力を抑止する。
これによれば、ダミー命令が順序命令である場合には、実施の形態1、2で説明したように(1)単純に命令の順序を守りたい場合における制御を実施することができ、ダミー命令が周期命令である場合は、実施の形態3、4で説明したように、(2)制御周期毎に命令を分けたい場合における制御を実施することができる。よって、(1)単純に命令の順序を守りたい場合の制御と、(2)制御周期毎に命令を分けたい場合の制御とを混在させることができる。
(実施の形態5の変形例)
本実施の形態5においても、図11に示す例と同様に、モジュール制御システム1は、外部計算機3とインターフェイスボード2と、を処理装置5を介して接続するようにしてもよい。
この場合、図20に示す例と同様に、外部計算機3に代えて処理装置5が周期命令検出部34を有するようにしてもよい。処理装置5は、周期命令検出部34によってN個先のダミー命令が検出された場合、命令メモリ50に蓄積された命令の送信を停止する。また、処理装置5は、周期命令検出部34によるクリア信号の受信に応じて、命令メモリ50に蓄積された命令の送信を再開する。
また、本実施の形態5においても、図12に示すように、外部計算機3がコンパイラによってソースプログラム311を一括解釈することで生成した実行可能プログラムを処理装置5で実行することで、命令をインターフェイスボード2に対して送信するようにしてもよい。この場合、実行可能プログラムにN個先の周期命令の送信を検出した場合に命令の送信を停止する処理を含めておくことで、処理装置5のCPUが、N個先の周期命令の送信に応じて命令の送信を停止するようにする。また、実行可能プログラムにインターフェイスボード2からのクリア信号に応じて命令の送信を再開する処理を含めておくことで、処理装置5のCPUが、クリア信号に応じて命令の送信を再開するようにする。
<実施の形態6>
続いて、実施の形態6について説明する。以下、これまでの実施の形態1〜5と同様の内容については適宜省略して説明する。
実施の形態5では、ダミー命令として、順序命令と周期命令を用意した。順序命令と周期命令は、通常は、送信制御機能20を介して外部計算機3から送信されてきた順に、全てのバス用命令バッファ22a〜22cに分配されるため、バス用命令バッファ22a〜22cから同時期に出力されるダミー命令にとして順序命令と周期命令が混在することはない。しかしながら、電源雑音などにより処理ミスが生じてしまうと、バス用命令バッファ22a〜22cから同時期に出力されるダミー命令にとして順序命令と周期命令が混在した状態となる可能性がある。この場合、実施の形態5では、バス用命令バッファ22a〜22cからの命令の出力停止が解除されることはなく、フリーズ状態となってしまうという問題がある。そこで、本実施の形態6では、このフリーズ状態を回避する方法について説明する。
図24に示すように、本実施の形態6に係るインターフェイスボード2は、実施の形態5に係るインターフェイスボード2と比較して、さらに、OR回路238と、AND回路239とを有する点が異なる。
本実施の形態6では、ダミー命令判断部233a〜233cのそれぞれの順序命令検出部2331は、さらに、OR回路238にも信号を出力する。また、OR回路236は、さらに、AND回路239にも信号を出力する。
すなわち、ダミー命令判断部233は、対応するバス用命令バッファ22から出力される命令が順序命令及び周期命令のいずれの命令であるかを判断する。ダミー命令判断部233は、命令が順序命令である場合には、OR回路238に対して停止信号を出力し、命令が周期命令である場合には、OR回路236に対して停止信号を出力する。
OR回路238は、ダミー命令判断部233a〜233cのそれぞれの順序命令検出部2331から入力される信号の論理和演算により生成された信号を、AND回路239に対して出力する。OR回路238は、ダミー命令判断部233a〜233cの少なくとも1つから通知信号が入力されている場合、AND回路239に対して通知信号を出力する。一方、OR回路238は、ダミー命令判断部233a〜233cのいずれからも通知信号が入力されていない場合、AND回路239に対して通知信号を出力しない。
AND回路239は、OR回路236及びOR回路238のそれぞれから入力される信号の論理積演算により生成された信号を、外部計算機3に対して送信する。AND回路239は、OR回路236及びOR回路238の全てから通知信号が入力されている場合、外部計算機3に対して通知信号を出力する。一方、AND回路239は、OR回路236及びOR回路238の少なくとも1つから通知信号が入力されていない場合、外部計算機3に対して通知信号を出力しない。すなわち、AND回路239は、ダミー命令判断部233a〜233cのそれぞれにおけるダミー命令が順序命令であるか周期命令であるかの判断結果に不一致がある場合に通知信号を外部計算機3に送信する。
より具体的には、OR回路238及びAND回路239は、次に説明するように動作する。OR回路238は、ダミー命令判断部233a〜233cの少なくとも1つからハイレベルの信号が入力されている場合、AND回路239に対してハイレベルの信号を出力する。一方、OR回路238は、ダミー命令判断部233a〜233cの全てからローレベルの信号が入力されている場合、AND回路239に対してローレベルの信号を出力する。
AND回路235は、OR回路236及びOR回路238の全てからハイレベルの信号が入力されている場合、外部計算機3に対してハイレベルの信号を出力する。一方、AND回路235は、OR回路236及びOR回路238の少なくとも1つからローレベルの信号が入力されている場合、外部計算機3に対してローレベルの信号を出力する。したがって、ハイレベルの信号は、通知信号として機能する。
このAND回路239からの通知信号は、外部計算機3に対して異常を通知する信号として機能する。このように、本実施の形態6では、ダミー命令判断部233a〜233cによる判断結果が不一致である場合に命令の外部計算機3に対して異常を通知する。
これによれば、外部計算機3は、インターフェイスボード2のAND回路239からの通知信号に応じて、インターフェイスボード2をリセットする等することができる。そのため、ダミー命令判断部233a〜233cの全てにおいて順序命令又は周期命令のいずれかが揃うことを合わせる構成において、インターフェイスボード2のフリーズ状態を解消することができる。
(実施の形態6の変形例)
本実施の形態6においても、実施の形態5と同様に、外部計算機3とインターフェイスボード2とを処理装置5を介して接続するようにしてもよく、外部計算機3に代えて処理装置5が周期命令検出部34を有するようにしてもよく、外部計算機3がコンパイラによってソースプログラム311を一括解釈することで生成した実行可能プログラムを処理装置5で実行するようにしてもよい。
<実施の形態7>
続いて、実施の形態7について説明する。以下、実施の形態1と同様の内容については適宜省略して説明する。図25を参照して、実施の形態7に係るモジュール制御システム1に係るインターフェイスボード2及び外部計算機3の構成について説明する。本実施の形態7に係るインターフェイスボード2は、実施の形態1に係るインターフェイスボード2と比較して、さらにエラー信号検出部26と、命令発行情報収集部27とを有する。
エラー信号検出部26は、バス91〜93を監視する。エラー信号検出部26は、バス91〜93においてエラー発生を検出した場合に、エラーの発生を通知する通知信号を命令発行情報収集部27に出力する。例えば、エラー信号検出部26は、バス91〜93の通信規格においてエラーパケットが定義されている場合には、そのエラーパケットを検出したときにエラーが発生したと判断する。また、バス91〜93の通信規格においてエラーパケットが定義されていない場合には、例えば、モジュール4が通信に関する異常を検出したときにユーザ定義のエラーパケットを送信することで、そのエラーパケットを検出したときにエラーが発生したと判断するようにしてもよい。
命令発行情報収集部27は、エラー信号検出部26からの通知信号に応じて、バス用命令バッファ22a〜22cのそれぞれに格納されている命令に関する情報を収集する。この情報の収集は、バス用命令バッファ22a〜22cの全てに対して実施してもよく、エラー信号検出部26によって異常が検出されたバスに対応するバス用命令バッファ22に対してのみ実施するようにしてもよい。そして、命令発行情報収集部27は、エラーの発生を通知する通知情報を外部計算機3に対して送信する。この通知情報には、収集した情報が含まれる。この情報は、例えば、バス用命令バッファ22a〜22cのそれぞれに格納されている命令の種類及び数などを示す情報である。
このように、本実施の形態7では、エラー信号検出部26は、バス用命令バッファ22a〜22cとモジュール4群との間のバス91〜93の異常を検出する。そして、命令発行情報収集部27は、エラー信号検出部26によって異常が検出された場合に、バス用命令バッファ22a〜22cに格納された命令に関する情報を収集する。
これによれば、外部計算機3は、どのような命令の送信状況でエラーが発生したのかを把握することができる。よって、例えば、外部計算機3は、インターフェイスボード2のバス用命令バッファ22a〜22cをリセットし、エラーが発生した命令から命令を再送する等の復旧処理を実行することが可能となる。
(実施の形態7の変形例)
また、本実施の形態7においても、図11と同様に、モジュール制御システム1は、外部計算機3とインターフェイスボード2とを処理装置5を介して接続するようにしてもよい。
この場合、命令発行情報収集部27は、処理装置5(図示せず)にも通知情報を送信する。処理装置5は、命令発行情報収集部27からの通知信号に応じて、命令メモリ50に蓄積された命令の送信を停止する。そして、外部計算機3は、インターフェイスボード2のバス用命令バッファ22a〜22c及び処理装置5の命令メモリ50をリセットし、エラーが発生した命令から命令を再送する等の復旧処理を実行すればよい。
また、図12と同様に、外部計算機3がコンパイラによってソースプログラム311を一括解釈することで生成した実行可能プログラムを処理装置5で実行することで、命令をインターフェイスボード2に対して送信するようにしてもよい。この場合、実行可能プログラムにインターフェイスボード2からの通知信号に応じて命令の送信を停止する処理を含めておくことで、処理装置5のCPUが、通知信号に応じて命令の送信を停止するようにしてもよい。また、実行可能プログラムに異常時処理を含めておき、処理装置5のCPUが、この実行可能プログラムの実行時に通知信号を受信した場合、異常時処理としてインターフェイスボード2のバス用命令バッファ22a〜22cをリセットし、エラーが発生した命令から命令を再送する等の復旧を行うようにしてもよい。
<実施の形態8>
続いて、実施の形態8について説明する。以下、実施の形態1と同様の内容については適宜省略して説明する。
図26を参照して、実施の形態8に係るモジュール制御システム1に係るインターフェイスボード2及び外部計算機3の構成について説明する。図26に示すように、本実施の形態8に係るインターフェイスボード2は、実施の形態1に係るインターフェイスボード2と比較して、トリガ命令検出機能28と、OR回路214とをさらに有する点が異なる。また、本実施の形態8に係る送信制御機能20は、実施の形態1に係る送信制御機能20と比較して、ダミー命令生成部203をさらに有する点が異なる。
トリガ命令検出機能28は、送信制御機能20に入力された命令がトリガ命令である場合は、ダミー命令生成部203及びOR回路214に対してブロードキャスト指示信号を出力し、入力された命令がトリガ命令でない場合は、ブロードキャスト指示信号を出力しない。
OR回路214は、ダミー命令検出機能21及びトリガ命令検出機能28のそれぞれから入力された信号の論理和演算により生成された信号を、命令振分部201及び命令分配部202に出力する。すなわち、本実施の形態8では、実施の形態1と比較して、ダミー命令検出機能21から出力される信号は、命令振分部201及び命令分配部202ではなく、OR回路214に入力される。
OR回路214は、ダミー命令検出機能21及びトリガ命令検出機能28の少なくとも1つからブロードキャスト信号が入力されている場合、命令振分部201及び命令分配部202に対してブロードキャスト信号を出力する。一方、OR回路214は、ダミー命令検出機能21及びトリガ命令検出機能28のいずれからもブロードキャスト指示信号が入力されていない場合、命令振分部201及び命令分配部202に対してブロードキャスト指示信号を出力しない。
ダミー命令生成部203は、トリガ命令検出機能28からブロードキャスト指示信号が入力された場合、ダミー命令を生成して命令振分部201及び命令分配部202に対して出力する。すなわち、トリガ命令検出機能28からダミー命令生成部203に対するブロードキャスト指示信号は、ダミー命令生成指示信号として機能する。なお、この場合、命令分配部202は、ダミー命令生成部203から入力されたダミー命令をバス用命令バッファ22a〜22cに対して分配した後に、外部計算機3から入力されたトリガ命令をバッファ22a〜22cに対して分配する。
より具体的には、例えば、次に説明する回路で実現されるダミー命令検出機能21及びトリガ命令検出機能28のそれぞれは、ハイレベルとローレベルのいずれかに切り替えられる信号をOR回路214に対して出力する。トリガ命令検出機能28は、送信制御機能20に入力された命令がトリガ命令である場合は、OR回路214に対してハイレベルの信号を出力する。一方、トリガ命令検出機能28は、送信制御機能20に入力された命令がトリガ命令でない場合は、OR回路214に対してローレベルの信号を出力する。
OR回路214は、ダミー命令検出機能21及びトリガ命令検出機能28の少なくとも1つから入力される信号がハイレベルの信号である場合、命令振分部201及び命令分配部202に対してハイレベルの信号を出力する。一方、OR回路214は、ダミー命令検出機能21及びトリガ命令検出機能28の両方から入力される信号がローレベルの信号である場合、命令振分部201及び命令分配部202に対してローレベルの信号を出力する。なお、実施の形態1で説明したように、この信号は、命令分配部202にはそのまま入力され、命令振分部201にはインバータ209によって反転された信号が入力される。ダミー命令生成部203は、トリガ命令検出機能28からハイレベルの信号が入力された場合に、ダミー命令を生成する。すなわち、ハイレベルの信号は、ブロードキャスト指示信号に相当する。
このような構成によれば、外部計算機3からトリガ命令が送信された場合、バス用命令バッファ22a〜22cの全てに対して、ダミー命令を格納するとともに、そのダミー命令の次にトリガ命令を格納することができる。これまでの実施の形態1〜7においても説明したように、バス用命令バッファ22a〜22cからの出力は、ダミー命令で待ち合わせを行うことで、命令の順序性を保証している。よって、ダミー命令の次の命令は、バス91〜93のそれぞれに同時に送信され、命令の実行タイミングを合わせることができる。よって、本実施の形態8では、外部計算機3の命令生成部31がモジュール4での実行タイミングを合わせたい命令をトリガ命令として送信することで、その命令の実行タイミングを合わせることを可能としている。
続いて、図27を参照して、実施の形態8に係る命令の実行順序について説明する。図27では、外部計算機3の命令生成部31が命令A〜C、トリガ命令、命令D〜Fの順に命令を生成する例について説明する。ここで、命令D、命令Fは、実行順序を守るべき命令であるものとする。
この場合、外部計算機3のダミー命令生成機能30は、命令Dと命令Fの間にダミー命令を挿入する。よって、外部計算機3は、図4に「通信経路90のデータ」として示すように、命令A、命令B、命令C、トリガ命令、命令D、命令E、ダミー命令、命令Fの順に、命令を順次1つずつ通信経路90を介してインターフェイスボード2に対して送信する。
また、この場合、ダミー命令生成部203は、命令Cとトリガ命令の前にダミー命令を挿入する。したがって、「時間1」〜「時間4」におけるバス91〜93の状態については、図4に示す例と同様となるため、説明を省略する。
(時間5)
「時間4」でバス用命令バッファ22b、22cの動作が再開されるため、全てのバス用命令バッファ22a〜22cのそれぞれは、ダミー命令の次に格納されたトリガ命令を、バス91〜93のそれぞれに送信する。そのため、バス91〜93のそれぞれに接続されるモジュール4でトリガ命令が同時に実行される。
「時間6」以降の動作については、図4に示す例の「時間5」以降と同様の動作となるため、説明を省略する。このように、本実施の形態8では、実行順序を守るべき命令の追い越しを抑止するために行われるダミー命令の待ち合わせを利用して、トリガ命令を同時に実行することを可能としている。
続いて、図28を参照して、実施の形態8に係るインターフェイスボード2の送信制御機能20、ダミー命令検出機能21、及びトリガ命令検出機能28の動作について説明する。実施の形態8に係るインターフェイスボード2の動作は、図1に示す実施の形態1に係るインターフェイスボード2の動作と比較して、さらに、ステップS24〜S26を有する点が異なる。
すなわち、トリガ命令検出機能28は、外部計算機3から受信した命令がトリガ命令であるか否かを判断する(S24)。ダミー命令生成部203は、外部計算機3から受信した命令がトリガ命令であると判断された場合(S24:Yes)、ダミー命令を生成してトリガ命令の前に挿入する(S25)。送信制御機能20は、命令分配部202によって、そのダミー命令とトリガ命令を全てのバスに分配する(S26)。
外部計算機3から受信した命令がトリガ命令でなくダミー命令である場合は(S24:No、S21:Yes)、ステップS23が実行される。外部計算機3から受信した命令がトリガ命令及びダミー命令のいずれでもない場合は(S24:No、S21:No)、ステップS22の処理が実行される。
以上に説明したように、本実施の形態8では、送信制御機能20は、入力された命令がトリガ命令である場合には、トリガ命令の前にダミー命令を挿入して、トリガ命令と共にバス用命令バッファ22a〜22cの全てに分配する。
これによれば、バス用命令バッファ22a〜22cの全てにおいてダミー命令の出力が揃う仕組みを利用して、全てのバス91〜93に対してトリガ命令を同時に送信することで、トリガ命令を同時に実行することができる。
(実施の形態8の変形例1)
本実施の形態8においても、図11示す例と同様に、外部計算機3とインターフェイスボード2とを処理装置5を介して接続するようにしてもよい。また、本実施の形態3においても、図12に示す例と同様に、外部計算機3がコンパイラによってソースプログラム311を一括解釈することで生成した実行可能プログラムを処理装置5で実行することで、命令をインターフェイスボード2に対して送信するようにしてもよい。
(実施の形態8の変形例2)
以上の説明では、トリガ命令の実行タイミングを揃えるためのダミー命令を送信制御機能20において生成して挿入するようにしていたが、これに限られない。外部計算機3において、ダミー命令生成機能30がダミー命令を生成して、トリガ命令の前に挿入するようにしてもよい。これによれば、送信制御機能20においてダミー命令生成部203は不要となる。
<実施の形態9>
続いて、実施の形態9として、モジュール制御システム1のより具体的な第1の構成例について説明する。
図29〜図31に示すように、実施の形態9に係るモジュール制御システム1は、インターフェイスボード2と、外部計算機3と、複数のモジュール4と、処理装置5と、サーバー6とを有する。
図29に示すように、サーバー6は、コミュニティー提供部61と、オンラインショップ提供部62と、記憶部63とを有する。サーバー6は、インターネットを介して外部計算機3と接続される。
コミュニティー提供部61は、外部計算機3に対してインターネットコミュニティーサービスを提供する。オンラインショップ提供部62は、外部計算機3に対してオンラインショップサービスを提供する。
記憶部63は、モジュールデータ601及び設計データ602等が格納される。すなわち、記憶部63は、これらのデータ601、602を格納可能な記憶装置を含む。記憶装置は、例えば、メモリ及びハードディスク等である。モジュールデータ601は、モジュール4のデータである。モジュールデータ601は、例えば、モジュール4の形状、重さ、及び物理特性などを示す。モジュールデータ601は、モジュール4の種類だけ用意される。設計データ602は、複数のモジュール4によって構築されるガジェットの仮想モデルを示すデータである。
これにより、外部計算機3のユーザは、コミュニティー提供部61によって提供されるコミュニティーを利用することで、例えば、サーバー6において他のユーザとの間で、自身が作成した設計データ602を共有することができる。また、外部計算機3のユーザは、オンラインショップ提供部62によって提供されるオンラインショップから設計データ602、設計データを作成するためのソフトウェア、及びモジュール4等を購入することができる。
図29に示すように、外部計算機3は、設計機能330と、USB(Universal Serial Bus)通信機能337とを有する。設計機能330は、記憶機能331と、GUI(Graphical User Interface)ベースのモジュール組立て機能332と、表示機能333と、物理シミュレーション機能334と、プログラミング環境335と、制御設計ツール336とを有する。外部計算機3は、これらの機能331〜336を連携させた設計機能330を有することで、ユーザが快適にガジェット及びそれを動作させるプログラムを設計できる環境を提供している。
記憶機能331は、サーバー3から取得したモジュールデータ601及び設計データ602等が格納される。記憶機能331は、これらのデータ601、602を格納可能な記憶装置を含む。記憶装置は、例えば、メモリ及びハードディスク等である。
モジュール組立て機能332は、ユーザがGUIベースで仮想的にモジュール4を組み立ててガジェットの仮想モデルを作成する機能を提供する。このようにして作成された仮想モデルを示す設計データ602が記憶機能331に格納される。ユーザは、外部計算機3の入力装置を操作することによって仮想モデルを作成することができる。
表示機能333は、モジュール4及びガジェットの仮想モデルを3次元コンピュータグラフィックスで表示する。より具体的には、表示機能333は、外部計算機3のCPUが、外部計算機3が有する表示装置に対して、それらの画像を表示することによって実現される。
物理シミュレーション機能334は、設計データ602が示す仮想モデルによって、ガジェットの動作シミュレーションを実施する機能を提供する。物理シミュレーション機能334は、ガジェットを構成するモジュール4のモジュールデータ601を利用することで、モジュール4の形状などを考慮した動作シミュレーションを実施することが可能である。
プログラミング環境335は、上述のソースプログラム311を作成するための環境をユーザに対して提供するものである。プログラミング環境335は、例えば、統合開発環境である。ユーザは、プログラミング環境335を利用して、外部計算機3の入力装置を操作することによってソースプログラム311を作成する。
制御設計ツール336は、複数のモジュール4を制御するソースプログラム311の自動生成ツールである。例えば、制御設計ツール336は、設計データ602に基づいて、ソースプログラム311を自動生成するツールであってもよい。
USB通信機能337は、インターフェイスボード2との間で、USB通信規格による通信を実現する機能である。すなわち、本実施の形態9では、外部計算機3とインターフェイスボード2とを接続する通信経路90がUSBバスである例について説明する。
図30に示すように、処理装置5は、処理機能51と、USB通信機能52と、SPI通信機能53と、電圧変換部54と、アナログ入出力部55と、デジタル入出力部56とを有する。
処理機能51は、処理装置5を統括的に制御する。処理機能51は、CPU及びメモリ等(図示せず)を有し、CPUがメモリに格納されたプログラムを実行することで、処理装置5としての機能を実現する。例えば、処理機能51は、USB通信機能52を介して外部計算機3から命令を受信する。処理機能51は、受信した命令を、SPI(Serial Peripheral Interface)通信機能53を介してインターフェイスボード2に送信する。この場合、処理機能51が有するメモリは、命令メモリ50として機能する。また、処理機能51は、メモリに格納された実行可能プログラムをCPUによって実行することで、プログラム実行部301としても機能することができる。
USB通信機能52は、外部計算機3との間で、USB通信規格による通信を実現する機能である。SPI通信機能53は、インターフェイスボード2との間で、SPI通信規格による通信を実現する機能である。すなわち、本実施の形態9では、処理装置5とインターフェイスボード2とを接続する通信経路95がSPIバスである例について説明する。
電圧変換部54は、バッテリ80から供給される電圧をインターフェイスボード2に対して供給可能な電圧に変換する。Vdd出力部541は、電圧変換部54によって変換された電圧を、電源電圧としてインターフェイスボード2に対して供給する。Gnd出力部542は、グランド電圧をインターフェイスボード2に対して供給する。
アナログ入出力部55は、アナログ入出力部55のコネクタに接続される装置から任意のアナログ信号の入力を受ける。アナログ入出力部55は、入力されたアナログ信号を処理機能51及びインターフェイスボード2に出力する。デジタル入出力部56は、デジタル入出力部56のコネクタに接続される装置から任意のデジタル信号の入力を受ける。デジタル入出力部56は、入力されたデジタル信号を処理機能51及びインターフェイスボード2に出力する。
これによれば、インターフェイスボード2に対して外部の装置からのアナログ信号及びデジタル信号を処理装置5のコネクタを介して供給することが可能となる。そのため、例えば、インターフェイスボード2上に処理装置5を重ねて配置したとしても、インターフェイスボード2への外部の装置からのアナログ信号及びデジタル信号の供給が阻害されることはない。
図30に示すように、インターフェイスボード2は、送信機能200と、受信機能220と、SPI通信機能290と、複数のI2C通信機能291a〜291dと、コネクタ292a〜292hを有する。
送信機能200及び受信機能220については、これまでの実施の形態1〜8で説明した通りである。SPI通信機能290は、処理装置5との間で、SPI通信規格による通信を実現する機能である。I2C通信機能291a〜291dのそれぞれは、モジュール4との間で、コネクタ292a〜292hを介したI2C通信規格による通信を実現する機能である。図30では、4つのコネクタ292a〜292dのそれぞれに対してモジュール4が接続される例について説明する。4つのコネクタ292a〜292dのそれぞれに対して複数のモジュール4が接続されることで、インターフェイスボード2及び複数のモジュール4の内部の信号線が接続されてバス91〜94が形成される。コネクタ292a〜292hは、典型的には、4ピンのコネクタである。この場合、バス91〜94のそれぞれは、2本の信号線と、1本の電源電圧線と、1本のグランド電圧線とを含む。電源電圧線には、Vdd出力部541から出力された電源電圧が供給される。グランド電圧線には、Gnd出力部542から出力されたグランド電圧が供給される。
上述したように、送信機能200は、送信制御機能20を介して処理装置5から受信した命令をバス91〜94に振り分け又は分配して送信することが可能である。送信機能200、受信機能220、SPI通信機能290、I2C通信機能291a〜291dは、例えば、マイコン2000によって実現される。
図31に示すように、モジュール4は、マイコン40と、コネクタ48とを有する。上述したように、インターフェイスボード2のコネクタ292a〜292dと、複数のモジュール4のコネクタ48とが接続されることで、バス91〜94が形成される。マイコン40は、インターフェイスボード2からコネクタ48を介して供給される電源電圧及びグランド電圧によって動作する。また、マイコン40は、インターフェイスボード2からコネクタ48を介して供給される信号によって命令を受信し、実行する。
ここで、モジュール4は、様々な態様をとることができる。例えば、図31に示すように、センサ41、AC(Alternating Current)モータ43、DC(Direct Current)モータ44、アナログ入出力モジュール45、デジタル入出力モジュール46、通信規格対応モジュール47のうち、いずれか1つ以上を有するようにしてよい。センサ41については、実施の形態1で説明した通りである。
ACモータ43は、AC電源81から供給される交流電流によって駆動される。DCモータ44は、バッテリ80から供給される直流電流によって駆動される。このように、モジュール4内において、バス91〜94を介して供給される電力では電力不足となる装置が存在する場合には、バッテリ80及びAC電源81からその装置に対して直接電力を供給するようにしてもよい。また、図31に示すように、複数のモジュール4は、ACモータ43を有するモジュール4と、DCモータ44を有するモジュール4とを混在させる例に限られない。ACモータ43を有するモジュール4と、DCモータ44を有するモジュール4のうち、いずれか1つのみを利用してもよい。また、図31に示すように、AC電源81からの交流電流をAC/DC変換器82によって直流電流に変換してモジュール4内の装置(図31の例ではアナログ入出力モジュール45)に供給するようにしてもよい。
アナログ入出力モジュール45は、外部の装置に対してアナログ信号による入出力を行う。デジタル入出力モジュール46は、外部の装置に対してデジタル信号による入出力を行う。このように、モジュール4は、外部の装置と接続し、その外部の装置との間で任意の信号を送受信することで動作するものであってもよい。
通信規格対応モジュール47は、外部の装置と任意の通信規格による通信によって情報を送受信する。なお、この通信は、有線であってもよく、無線であってもよい。このように、モジュール4は、外部の装置と情報を送受信することで動作するものであってもよい。
続いて、実施の形態9に係るモジュール制御システム1の動作例について説明する。図32を参照して、実施の形態9に係るモジュール制御システム1の動作について説明する。なお、ここでは、制御周期(例えば10msec)毎の期間を「制御期間」として示している。
図32に示すように、第1の制御期間で、処理装置5からSPI通信によってインターフェイスボード2に対して、周期命令、センサ値取得命令A〜F、及びモータ駆動命令A〜Gが送信されるものとする。
上述したように、タイミング調整機能23によって各バス91〜94に対する命令が周期命令となるまで待ち合わせが行われる。そのため、周期命令に続くセンサ値取得命令A〜F及びモータ駆動命令A〜Gが、各バス91〜94において周期命令がそろったタイミングから一斉に送信され、モジュール4で実行される。
この際、センサ値取得命令A〜Fによって取得されたセンサ値A〜Fのそれぞれは、随時、モジュール4からSPI通信によって処理装置5に送信される。さらに、このセンサ値は、処理装置5から外部計算機3に送信される。外部計算機3は、モジュール4から送信されたセンサ値A〜Fに基づいて、次の第2の制御周期におけるモータ駆動命令A〜Iにおける指令値を計算する。
図32に示すように、第2の制御期間で、処理装置5からSPI通信によってインターフェイスボード2に対して、周期命令、センサ値取得命令A〜E、及びモータ駆動命令A〜Iが送信されるものとする。
上述と同様に、タイミング調整機能23によって各バス91〜94に対する命令が周期命令となるまで待ち合わせが行われる。そのため、周期命令に続くセンサ値取得命令A〜E及びモータ駆動命令A〜Iが、各バス91〜94において周期命令がそろったタイミングから一斉に送信され、モジュール4で実行される。
このように、周期命令を利用した制御では、前述したとおり、制御周期毎に命令を分けることができる。そして、それらの命令を繰り返し実行することでガジェット(モジュール4)を制御することができる。これは、例えば、図32に示すようなセンサ値に基づくモータ制御に好適である。モータ制御では、センサ値の取得と、そのセンサ値によるモータの駆動とが繰り返される。それに対して、周期命令を利用した制御によれば、制御周期毎に、センサ値の取得と、モータの駆動とを繰り返すことができ、好適なモータ制御を実現することができる。また、ここで説明したように、制御期間において、モータ駆動命令と、その次の制御期間におけるモータ駆動命令の生成に利用するためのセンサ値を取得するセンサ値取得命令を同時に実行することで、各制御周期でモータ駆動を連続的に実施することができる。
このように、これまでの実施の形態1〜8で説明した内容は、実施の形態9に係るモジュール制御システム1のように開発環境が組み込まれた統合的なシステムにおいても阻害なく実施することが可能である。
<実施の形態10>
続いて、実施の形態10について説明する。実施の形態10として、モジュール制御システム1のより具体的な第2の構成例について説明する。図33〜図35を参照して、実施の形態10に係るモジュール制御システム1の構成について説明する。図33では、サーバー6を図示していないが、当然に、実施の形態10に係るモジュール制御システム1においても、サーバー6を有するようにしてもよい。
図33に示すように、実施の形態10に係る外部計算機3は、実施の形態9に係る外部計算機3と比較して、接続モジュール一覧表示機能340をさらに有するという点が異なる。接続モジュール一覧表示機能340は、インターフェイスボード2に接続される複数のモジュール4の一覧を表示機能333によって表示する。
図33に示すように、実施の形態10に係る処理装置5は、実施の形態9に係る処理装置5と比較して、I2C通信機能57と、割り込み機能58と、Vdd出力機能543とをさらに有するという点が異なる。
I2C通信機能57は、インターフェイスボード2との間で、I2C通信規格による通信を実現する機能である。すなわち、本実施の形態10では、SPI通信規格による通信経路95とは別に命令を送信する通信経路を有している。
割り込み機能58は、インターフェイスボード2からの割り込み信号を受信する機能である。
Vdd出力部543は、電圧変換部54によって変換された電圧を、電源電圧としてインターフェイスボード2に対して供給する。本実施の形態10に係る電圧変換部54は、バッテリ80から供給される電圧を変換し、第1の電圧と、第1電圧とは異なる第2の電圧とを生成する。そして、Vdd出力部541は、第1の電圧をインターフェイスボード2に対して供給し、Vdd出力部542は、第2の電圧をインターフェイスボード2に対して供給する。
接続モジュール一覧取得機能510は、インターフェイスボード2に接続される複数のモジュール4の一覧を取得し、その複数のモジュール4の一覧を示す一覧情報を外部計算機3に対して送信する。これにより、外部計算機3の接続モジュール一覧表示機能340は、処理装置5から受信した一覧情報に基づいて、複数のモジュール4の一覧を表示することができる。これによれば、ユーザは、ガジェットを構成する複数のモジュール4を容易に確認することができる。
なお、接続モジュール一覧取得機能510は、複数のモジュール4のそれぞれに対して、モジュール情報返信命令を送信することで、複数のモジュール4の一覧を取得する。複数のモジュール4のそれぞれは、処理装置5からのモジュール情報返信命令に応じて、自身を特定する情報を処理装置5に対して返信する。この情報は、例えば、各モジュール4に対して一意に割り当てられたモジュールIDである。この場合、複数のモジュール4の一覧として、複数のモジュール4のモジュールIDの一覧が取得される。
このモジュール4の一覧の取得は、例えば、上述の実行可能プログラムにモジュール情報返信命令を送信する処理を含めておき、処理機能51がその実行可能プログラムを実行することで実現する。
図34に示すように、本実施の形態10に係るインターフェイスボード2は、実施の形態9に係るインターフェイスボード2と比較して、さらに、複数の割込み検出部250a〜250dと、OR回路251と、停止命令機能260と、複数のエラー検出部261a〜261dと、複数の過電流検出部262a〜262dと、過電流検出部263と、選択回路293、294と、振分回路295と、複数の電圧変換部296a〜296dとを有する。また、本実施の形態10に係るインターフェイスボード2は、実施の形態9に係るインターフェイスボード2と比較して、I2C通信機能291dに代えて、RS485通信機能297を有する。
複数の割込み検出部250a〜250dのそれぞれは、バス91〜94のそれぞれに送信される割り込みパケットを検出する。複数の割込み検出部250a〜250dのそれぞれは、割り込みパケットを検出した場合、OR回路251に対して割り込み信号を出力する。OR回路251は、複数の割込み検出部250a〜250dのそれぞれからの論理和演算により生成された信号を処理装置5の割り込み機能58に対して送信する。すなわち、OR回路251は、複数の割込み検出部250a〜250dの少なくとも1つから割り込み信号が入力されている場合、処理装置5の割り込み機能58に対して割り込み信号を送信する。例えば、モジュール4は、緊急に対処が必要な事象を検出した場合、割り込みパケットを送信する。これによれば、処理機能51は、その割り込みパケットに基づく割り込み信号を割り込み機能58を介して受信したときに、その事象に対して迅速に対処することができる。
停止命令機能260は、エラー検出部261a〜261dによってエラーが検出された場合、及び、過電流検出部262a〜262d、263によって過電流が検出された場合、処理装置5に対して停止命令を送信する。処理装置5は、インターフェイスボード2の停止命令機能260からの停止命令に応じて、異常時処理を実施する。異常時処理は、例えば、インターフェイスボード2をリセットする又はガジェット(複数のモジュール4)を停止させる等である。これによれば、ガジェットの誤動作を防止することができる。
複数のエラー検出部261a〜261dのそれぞれは、バス91〜94のそれぞれに送信されるエラーパケットを、上述のエラーとして検出する。複数の過電流検出部262a〜262dのそれぞれは、バス91〜94のそれぞれに対して電圧変換部296a〜296dのそれぞれから供給される信号の過電流を、上述のエラーとして検出する。過電流検出部263は、バス91〜94のそれぞれに対してVdd出力部541、543から選択回路293を介して電源電圧とともに供給される電流の過電流を、上述のエラーとして検出する。
選択部293は、Vdd出力部541から供給される電圧と、Vdd出力部543から供給される電圧のいずれか1つを選択して、電源電圧としてバス91〜94のそれぞれに供給する。ここで、どちらの電圧が選択されるかは、処理装置5の処理機能51が選択部293に対して入力する信号によって切り替えられる。処理機能51は、使用されるモジュール4の動作電圧に応じて、適切な電圧を選択する。
選択部294は、処理装置5のI2C通信機能57から送信された命令と、インターフェイスボード2のI2C通信機能291aから送信された命令のいずれかを選択してバス91に対して送信する。ここで、どちらの命令が選択されるかは、処理装置5の処理機能51が選択部294に対して入力する信号によって切り替えられる。これによれば、モジュール4の動作をデバッグしたい場合に、送信機能200を経由せず、直接任意の命令をI2C通信機能57経由でモジュール4に対して送信することができる。
振分部295は、送信機能200から送信された命令を、I2C通信機能291c及びRS485通信機能297のいずれか1つに振り分ける。これによれば、複数のモジュール4において異なる通信規格のモジュール4を混在させることが可能となる。例えば、I2C通信に対応したモジュール4だけでなく、RS485通信に対応したモジュール4も利用したい場合、コネクタ292cの先ではなく、コネクタ292dの先にそのモジュール4を接続する。これによれば、コネクタ292a、292bに接続されたI2C通信に対応したモジュール4と、コネクタ292dに接続されたRS485通信に対応したモジュール4とから構成されるガジェットを制御することができる。なお、全てI2C通信に対応したモジュール4でガジェット構成する場合には、コネクタ292dの先ではなく、コネクタ292cの先にモジュール4を接続すればよい。ここで、振分部295がI2C通信機能291c及びRS485通信機能297のどちらに命令を振り分けるかは、処理装置5の処理機能51が振分部295に対して入力する信号によって切り替えられる。
電圧変換部296a〜296dのそれぞれは、選択部293から入力される電圧を、バス91〜94のそれぞれの信号に利用可能な電圧に変換する。
RS485通信機能292は、モジュール4との間でRS485通信規格による通信を実現する機能である。RS485通信機能297は、コネクタ292dに接続されたバス94に対する通信を実現する。
図35に示すように、モジュール4は、マイコン40と、モータ42と、コネクタ48と、エラー検知部49とを有する。コネクタ48及びモータ42については、これまでの実施の形態1〜9で説明した通りである。
マイコン40は、処理機能400と、記憶装置410とを有する。処理機能400は、動作制御部401と、エラー対応制御部402、403とを有する。
動作制御部401は、モータ42の異常が検出されていない通常状態におけるモータ42の制御を実行する。エラー対応制御部402、403は、モータ42の異常が検出された異常状態におけるモータ42の制御を実行する。
ここで、記憶装置410は、異常状態において、エラー対応制御部402及びエラー対応制御部403のいずれによる制御を実行するか否かを示す選択情報が予め格納される。処理機能400は、異常状態では、記憶装置410に格納された選択情報に応じて、エラー対応制御部402及びエラー対応制御部403のいずれによる制御を実施するかを決定し、決定した制御を実施する。これによれば、例えば、モジュール4が利用されるガジェットに応じて、異常状態において、エラー対応制御部402及びエラー対応制御部403のいずれによる制御を実行するかを変更することができる。
エラー検知部49は、上述のモータ42の異常を検出する。エラー検知部49は、モータ42の異常を検出した場合、処理機能400に通知する。
続いて、モジュール制御システム1のより具体的な第2の動作例について説明する。図36を参照して、実施の形態10に係るモジュール制御システム1の動作について説明する。なお、ここでは、制御周期(例えば10msec)毎の期間を「制御期間」として示している。
図36に示すように、図32を参照して実施の形態9で説明した例と同様に、第1の制御期間で、処理装置5からSPI通信によってインターフェイスボード2に対して、周期命令、センサ値取得命令A〜F、及びモータ駆動命令A〜Gが送信されるものとする。
上述したように、タイミング調整機能23によって各バス91〜94に対する命令が周期命令となるまで待ち合わせが行われる。そのため、周期命令に続くセンサ値取得命令A〜F及びモータ駆動命令A〜Gが、各バス91〜94において周期命令がそろったタイミングから一斉に送信が開始される。
この際に、センサ値取得命令A〜F及びモータ駆動命令A〜Gの送信途中で異常が検出され、停止命令機能260が停止命令を処理装置5に対して送信したものとする。この場合、処理装置5は、この異常に応じた制御を実行する。例えば、図36に示すように、モータ42を停止させるモータ駆動命令をモジュールに対して送信するようにしてもよい。
そして、処理装置5は、インターフェイスボード2をリセットする等して復旧した後に、第2の制御期間から、通常通り、センサ値取得命令及びモータ駆動命令の送信を再開してよい。
このように、周期命令を利用した制御では、これまでにも説明したように、制御周期毎に命令を分けることができる。そして、それらの命令を繰り返し実行することでガジェット(モジュール4)を制御することができる。本実施の形態10では、この際に異常が発生した場合であっても、停止命令機能260によって異常を検出し、処理装置5に通知することができる。よって、上述したように、処理装置5は、インターフェイスボード2の停止命令機能260からの通知に応じて、異常状態を復旧し、制御を再開することができる。
このように、これまでの実施の形態1〜8で説明した内容は、実施の形態10に係るモジュール制御システム1のように各種異常検出機能が組み込まれたシステムにおいても阻害なく実施することが可能である。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
上述の実施の形態1〜10では、全てのバス用命令バッファ22においてダミー命令がそろった場合には、ダミー命令を破棄していたが、これに限られない。全てのバス用命令バッファ22においてダミー命令がそろった場合においても、ダミー命令を破棄せずに、モジュール4に対して送信するようにしてもよい。この場合、ダミー命令は、モジュール4の制御に影響を与えない命令とすればよい。例えば、この命令は、モジュール4が命令を受信しても何も処理を実行しない命令などとすればよい。しかしながら、好ましくは、上述したようにダミー命令を破棄することで、無駄な命令の送信を無くすことができる。
また、上述の実施の形態1〜10において、実行順序を守るべき命令が存在した場合であっても、それらの命令が同一のバスに対して送信される命令である場合には、それらの命令の間にダミー命令を挿入しないようにしてもよい。同一のバスに対して送信される命令では、命令の追い越しが発生することはないからである。例えば、実行順序判断部32は、対応データに基づいて、i行目の命令とi−1行目以前の命令の送信対象がいずれも同一のバスであると判断した場合には、それらの命令を順序に制約があると判断しないようにしてもよい。
上述の実施の形態1〜8では、送信制御機能20、ダミー命令検出機能21、及びタイミング調整機能23の具体例として回路で構成される例について説明したが、これに限られない。それらの機能のうち、少なくとも一部は、インターフェイスボード2のマイコン2000が有するCPUによって、その少なくとも一部の機能を実行させるプログラムを実行することで実現してもよい。すなわち、実施の形態1〜8も、実施の形態9において説明したように、送信機能200及び受信機能220をマイコン2000によって実現するようにしてもよい。
また、上述の実施の形態1〜10では、インターフェイスボード2とモジュール4との間の通信経路における接続方式がバス接続である例について説明したが、これに限られない。例えば、インターフェイスボード2とモジュール4との間の通信経路における接続方式は、ピアツーピア接続であってもよい。また、この場合、通信経路は、有線であってもよく、無線であってもよい。
この場合であっても、以下の2つの条件を満たすのであれば、図10を参照して説明した課題が生じるからである。
条件1:(インターフェイスボード2とモジュール4の間の通信経路数 × その通信経路の速度) < 外部計算機3とインターフェイスボード2との間の通信経路の速度
条件2:インターフェイスボード2とモジュール4の間の通信経路の間で、送信される命令数に偏りがある
しかしながら、ピアツーピア接続の場合は1つの通信経路を介して1つのモジュール4のみが接続されるが、バス接続の場合は1つの通信経路を介して複数のモジュール4が接続される。そのため、バス接続の場合は、条件1だけでも上述の課題が顕在化する。したがって、実施の形態1〜10では、上述したようにインターフェイスボード2とモジュール4の間の通信経路における接続方式をバス接続とすると効果的である。