(57)【要約】  本発明に係る命令実行制御システム（１）は、命令を実行する複数の命令実行部のそれぞれに命令を先入れ先出しで出力する複数の命令記憶部（２２）と、順次入力される命令を複数の命令記憶部（２２）のいずれかに振り分ける命令制御部（２０）と、複数の命令記憶部からの命令の出力を制御する出力制御部（２３）とを有する。命令制御部（２０）は、入力された命令が、実行順序を守るべき命令の間に挿入されるダミー命令である場合には、入力された命令を複数の命令記憶部（２２）の全てに分配する。出力制御部（２３）は、複数の命令記憶部（２２）の全てにおいて出力する命令がダミー命令となるまで、出力する命令がダミー命令となっている命令記憶部（２２）から命令実行部への命令の出力を抑止する。
2016075721.tif 000002
【特許請求の範囲】
【請求項１】
命令を実行する複数の命令実行部のそれぞれに前記命令を先入れ先出しで出力する複数の命令記憶部と、
順次入力される命令を前記複数の命令記憶部のいずれかに振り分ける命令制御部と、
前記複数の命令記憶部からの前記命令の出力を制御する出力制御部と、を備え、
前記命令制御部は、入力された命令が、実行順序を守るべき命令の間に挿入されるダミー命令である場合には、前記入力された命令を前記複数の命令記憶部の全てに分配し、
前記出力制御部は、前記複数の命令記憶部の全てにおいて出力する命令が前記ダミー命令となるまで、出力する命令が前記ダミー命令となっている命令記憶部から前記命令実行部への命令の出力を抑止する、
命令実行制御システム。
【請求項２】
前記命令実行制御システムは、さらに、前記命令記憶部がオーバーフロー又は一杯になったこと検出し、前記命令の入力元に通知する検出部を備えた
請求項１に記載の命令実行制御システム。
【請求項３】
前記命令実行制御システムは、さらに、一定周期毎に通知信号を出力するタイマーを備え、
前記出力制御部は、前記複数の命令記憶部の全てにおいて出力する命令が前記ダミー命令となっているときに前記タイマーから前記通知信号が出力されるまで、前記出力する命令がダミー命令となっている命令記憶部からの命令の出力を抑止する、
請求項１に記載の命令実行制御システム。
【請求項４】
前記命令実行制御システムは、さらに、
前記複数の命令記憶部と、前記命令制御部と、前記出力制御部と、前記タイマーとを有するインターフェイス装置と、
前記インターフェイス装置に対して前記命令を入力する外部装置と、を備え、
前記外部装置は、所定数のダミー命令の前記インターフェイス装置に対する入力に応じて、前記インターフェイス装置に対する前記命令の入力を中断するダミー命令検出部を有し、
前記出力制御部は、前記複数の命令記憶部の全てにおいて出力する命令が前記ダミー命令となり、かつ前記タイマーから前記通知信号が出力された場合に、前記ダミー命令検出部に対して通知信号を出力し、
前記ダミー命令検出部は、前記出力制御部からの通知信号の出力に応じて、前記中断していた命令の入力を再開する、
請求項３に記載の命令実行制御システム。
【請求項５】
前記命令実行制御システムは、前記ダミー命令として、順序命令及び周期命令が入力され、
前記出力制御部は、
前記ダミー命令が前記順序命令である場合、前記タイマーからの通知信号の出力に関わらず、前記複数の命令記憶部の全てにおいて出力する命令が前記順序命令となるまで、出力する命令が前記順序命令となっている命令記憶部からの命令の出力を抑止し、
前記ダミー命令が前記周期命令である場合は、前記複数の命令記憶部の全てにおいて出力する命令が前記周期命令となっているときに前記タイマーから前記通知信号が出力されるまで、出力する命令が前記周期命令となっている命令記憶部からの命令の出力を抑止する、
請求項３に記載の命令実行制御システム。
【請求項６】
前記命令実行制御システムは、さらに、
前記複数の命令記憶部と、前記命令制御部と、前記出力制御部と、前記タイマーとを有するインターフェイス装置と、
前記インターフェイス装置に対して前記命令を入力する外部装置と、を備え、
前記外部装置は、所定数の周期命令の前記インターフェイス装置に対する入力に応じて、前記インターフェイス装置に対する前記命令の入力を中断する周期命令検出部を有し、
前記出力制御部は、前記複数の命令記憶部の全てにおいて出力する命令が前記周期命令となり、かつ前記タイマーから前記通知信号が出力された場合に、前記周期命令検出部に対して通知信号を出力し、
前記周期命令検出部は、前記出力制御部からの通知信号の出力に応じて、前記中断していた命令の入力を再開する、
請求項５に記載の命令実行制御システム。
【請求項７】
前記出力制御部は、
前記複数の命令記憶部のそれぞれから出力される命令が、前記順序命令及び前記周期命令のいずれの命令であるかを判断する複数のダミー命令判断部と、
前記複数のダミー命令判断部による判断結果が不一致である場合に前記命令の入力元に異常を通知する通知部と、を有する、
請求項５に記載の命令実行制御システム。
【請求項８】
前記命令実行制御システムは、さらに、
前記命令記憶部と前記命令実行部との間において前記命令が伝送される通信経路の異常を検出する異常検出部と、
前記異常検出部によって異常が検出された場合に、前記命令記憶部に格納された命令に関する情報を収集する情報収集部と、を備えた
請求項１に記載の命令実行制御システム。
【請求項９】
前記命令制御部は、さらに、前記入力された命令がトリガ命令である場合には、前記トリガ命令の前に前記ダミー命令を挿入して前記複数の命令記憶部の全てに分配するとともに、前記入力されたトリガ命令を前記複数の命令記憶部の全てに分配する、
請求項１に記載の命令実行制御システム。
【請求項１０】
前記命令記憶部は、前記出力制御部による前記命令の出力の抑止が解除された場合に、前記ダミー命令を破棄する、
請求項１に記載の命令実行制御システム。
【請求項１１】
前記命令実行制御システムは、さらに、
前記複数の命令記憶部と、前記命令制御部と、前記出力制御部とを有するインターフェイス装置と、
前記インターフェイス装置に対して前記命令を入力する外部装置と、を備え、
前記インターフェイス装置は、
前記命令を生成する命令生成部と、
前記命令生成部によって生成された命令において、実行順序を守るべき命令が存在するか否かを判断する実行順序判断部と、
前記実行順序判断部によって実行順序を守るべきと判断された命令の間に前記ダミー命令を生成して挿入するダミー命令生成部と、を有する、
請求項１に記載の命令実行制御システム。
【請求項１２】
順次入力される命令を複数の命令記憶部のいずれかに振り分ける命令制御ステップと、
前記複数の命令記憶部のそれぞれに格納された命令を、前記命令を実行する複数の命令実行部のそれぞれに先入れ先出しで出力する命令出力ステップと、を備え、
前記命令制御ステップでは、入力された命令が、実行順序を守るべき命令の間に挿入されるダミー命令である場合には、前記入力された命令を前記複数の命令記憶部の全てに分配し、
前記命令出力ステップでは、前記複数の命令記憶部の全てにおいて出力する命令が前記ダミー命令となるまで、出力する命令が前記ダミー命令となっている命令記憶部から前記命令実行部への命令の出力を抑止する、
命令実行制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令実行制御システム及び命令実行制御方法に関し、特に並列的に命令を実行する技術に関する。
【背景技術】
【０００２】
特許文献１には、メモリアクセスにおける命令の追い越し機能を備えたシステムにおいて、命令の実行順序を保障するための技術が開示されている。この技術では、命令実行制御装置は、命令発行装置から発行された命令がバリア命令である場合、記憶部に登録されている命令のバリア前フラグを１に設定する。一方、命令実行制御装置は、命令発行装置から発行された命令がバリア命令でない場合、その命令を記憶部に登録し、その登録した命令と、バリア前フラグが１である命令とが順序保障制御を行う対象となる命令種別の組み合わせであるか否かを判定する。【０００３】
命令実行制御装置は、それらの命令が順序保障制御を行う対象となる命令種別の組み合わせである場合、そのバリア前フラグが１である命令の追い越し禁止フラグを１に設定する。命令実行制御装置は、命令を実行すると、その命令のバリア前フラグと追い越し禁止フラグをクリアする。そして、命令実行制御装置は、追い越し禁止フラグがクリアされるまで、後から登録された命令の実行を保留する。これにより、命令の実行順序を保障している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１５３８５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示の技術は、複数の命令実行部が独立して並列的に命令を実行するシステムにおいて命令の実行順序を保証する技術を開示したものではない。【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、命令実行制御システムは、入力された命令が、実行順序を守るべき命令の間に挿入されるダミー命令である場合には、入力された命令を複数の命令記憶部の全てに分配し、複数の命令記憶部の全てにおいて出力する命令がダミー命令となるまで、出力する命令がダミー命令となっている命令記憶部から命令実行部への命令の出力を抑止するものである。
【発明の効果】
【０００８】
前記一実施の形態によれば、命令の実行順序を保証することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係るモジュール制御システムの構成図である。
【図２】実施の形態１に係るインターフェイスボード及び外部計算機の構成図である。
【図３】実施の形態１に係る外部計算機３のソフトウェア構成及びハードウェア構成を示す図である。
【図４】実施の形態１に係る命令の実行順序を示す図である。
【図５】実施の形態１に係るモジュール制御システムの動作を示すフローチャートである。
【図６】実施の形態１に係る外部計算機の動作を示すフローチャートである。
【図７】実施の形態１に係るインターフェイスボード（送信制御機能及びダミー命令検出機能）の動作を示すフローチャートである。
【図８】実施の形態１に係るインターフェイスボード（タイミング調整機能）の動作を示すフローチャートである。
【図９】実施の形態１に係るインターフェイスボードの受信機能を明示した構成図である。
【図１０】命令の実行順序が守れない例を示す図である。
【図１１】実施の形態１に係るモジュール制御システムの変形例１の構成図である。
【図１２】実施の形態１に係るモジュール制御システムの変形例２の構成図である。
【図１３】実施の形態２に係るインターフェイスボード及び外部計算機の構成図である。
【図１４】実施の形態２に係るモジュール制御システムの変形例の構成図である。
【図１５】実施の形態３に係るインターフェイスボード及び外部計算機の構成図である。
【図１６】実施の形態３に係る命令の実行順序を示す図である。
【図１７】実施の形態３に係るインターフェイスボード（タイミング調整機能）の動作を示すフローチャートである。
【図１８】実施の形態４に係るインターフェイスボード及び外部計算機の構成図である。
【図１９】実施の形態４に係る命令の実行順序を示す図である。
【図２０】実施の形態４に係るモジュール制御システムの変形例の構成図である。
【図２１】実施の形態５に係るインターフェイスボード及び外部計算機の構成図である。
【図２２】実施の形態５に係る命令の実行順序を示す図である。
【図２３】実施の形態５に係るインターフェイスボード（タイミング調整機能）の動作を示すフローチャートである。
【図２４】実施の形態６に係るインターフェイスボード及び外部計算機の構成図である。
【図２５】実施の形態７に係るインターフェイスボード及び外部計算機の構成図である。
【図２６】実施の形態８に係るインターフェイスボード及び外部計算機の構成図である。
【図２７】実施の形態８に係る命令の実行順序を示す図である。
【図２８】実施の形態８に係るインターフェイスボード（送信制御機能及びダミー命令検出機能）の動作を示すフローチャートである。
【図２９】実施の形態９に係るモジュール制御システムの構成図である。
【図３０】実施の形態９に係るモジュール制御システムの構成図である。
【図３１】実施の形態９に係るモジュール制御システムの構成図である。
【図３２】実施の形態９に係る命令の実行順序を示す図である。
【図３３】実施の形態１０に係るモジュール制御システムの構成図である。
【図３４】実施の形態１０に係るモジュール制御システムの構成図である。
【図３５】実施の形態１０に係るモジュール制御システムの構成図である。
【図３６】実施の形態１０に係る命令の実行順序を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら、好適な実施の形態について説明する。以下の実施の形態に示す具体的な数値などは、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、それに限定されるものではない。また、以下の記載及び図面では、説明の明確化のため、当業者にとって自明な事項などについては、適宜、省略及び簡略化がなされている。
【００１１】
＜実施の形態１＞
まず、図１を参照して、実施の形態１に係るモジュール制御システム１の構成について説明する。図１に示すように、モジュール制御システム１は、インターフェイスボード２と、外部計算機３と、複数のモジュール４とを有する。
【００１２】
インターフェイスボード２は、通信経路９０を介して外部計算機３と接続されている。また、インターフェイスボード２は、バス９１〜９３を介して複数のモジュール４と接続される。バス９１〜９３のそれぞれには、少なくも１つのモジュール４が接続されている。厳密には、バス９１〜９３は、インターフェイスボード２及び複数のモジュール４を相互に接続することで、それらの内部の信号線が接続されて形成される。なお、本実施の形態１では、インターフェイスボード２とモジュール４とを接続するバス９１〜９３の数が３つである例について説明するが、バスの数はこれに限られない。
【００１３】
インターフェイスボード２は、外部計算機３から通信経路９０を介して命令を受信する。インターフェイスボード２は、受信した命令を、バス９１〜９３のそれぞれに振り分ける。言い換えると、インターフェイスボード２は、受信した命令を、その命令の実行対象となるモジュール４が接続されたバスに送信する。
【００１４】
外部計算機３は、モジュール４が実行する命令を生成する。外部計算機３は、生成した命令を、通信経路９０を介してインターフェイスボード２に送信する。外部計算機３は、典型的には、例えば、ＰＣ（Personal Computer）である。
【００１５】
複数のモジュール４のそれぞれは、インターフェイスボード２から受信した命令を実行する。ここで、複数のモジュール４は、相互に接続されることで、１つの動作するガジェットを構成することができる。ガジェットは、例えば、生活家電などの電子機器であってもよく、自動車などの輸送機器であってもよい。複数のモジュール４のそれぞれが命令を実行することで、ガジェットの動作が実現される。
【００１６】
複数のモジュール４のそれぞれは、例えば、図１に示すように、マイコン４０と、センサ４１と、モータ４２とを有する。なお、モジュール４は、センサ４１及びモータ４２のいずれか１つを有するようにしてもよい。マイコン４０は、インターフェイスボード２から受信した命令を実行する。例えば、マイコン４０は、受信した命令がセンサ値取得命令である場合、センサ４１からセンサ値を取得してインターフェイスボード２に送信する処理を実行する。インターフェイスボード２は、モジュール４から受信したセンサ値を外部計算機３に送信する。マイコン４０は、受信した命令がモータ駆動命令である場合、モータ４２を駆動する処理を実行する。このモータ駆動命令は、例えば、外部計算機３がモジュール４から取得したセンサ値に基づいて生成する。すなわち、厳密には、本実施の形態１における命令の実行とは、モジュール４が命令に応じた処理を実行することである。言い換えると、本実施の形態における命令は、モジュール４に処理を指示する情報とも言える。
【００１７】
例えば、複数のモジュール４によって構成されるガジェットが移動する輸送機器である場合、上述したようにセンサ４１によって生成されたセンサ値に基づいてモータ４２を駆動することで、その移動を実現する。なお、モジュール４の構成は、これに限られない。モジュール４は、センサ４１以外の情報取得手段を有するようにしてもよく、モータ４２以外の動作実現手段を有するようにしてもよい。
【００１８】
ここで、モジュール４と、他のモジュール４又はインターフェイスボード２との接続には、任意の接続方法を採用してよい。接続方法は、例えば、ケーブル又は接続部品を介して間接的に接続する方法であってもよく、ケーブル等を介さずに直接接続する方法であってもよい。また、複数のモジュール４の接続において、それらの接続方法のうち、２つ以上が混在してもよい。
【００１９】
本実施の形態１では、このように、外部計算機３がインターフェイスボード２を介して複数のモジュール４を制御する構成とすることにより、外部計算機３がより多くのモジュール４を制御可能としている。すなわち、外部計算機３と複数のモジュール４とを、複数のバス９１〜９３によってモジュール４を接続可能なインターフェイスボード２を介して接続することで、直接単一のバスによって接続する場合よりも多くのモジュール４の接続を可能としている。
【００２０】
一方で、このような構成とした場合、バス９１に接続されるモジュール４群と、バス９２に接続されるモジュール４群と、バス９３に接続されるモジュール４群とで独立して並列的に命令が実行される。そのため、それらの独立性に対する考慮がなされていないと、実行順序を守るべき命令が、接続されたバスの異なるモジュール４群に送信された場合に、後で実行すべき命令が先に実行されてしまうことがあるという問題がある。なお、これらのモジュール４群は、命令実行部として機能する。
【００２１】
本実施の形態１では、このように独立したモジュール４群のそれぞれに異なるバス９１〜９３を介して命令を送信して実行させるにあたり、以下に説明する機能により、複数のモジュール４で実行される命令の順序性を保証している。
【００２２】
外部計算機３は、ダミー命令生成機能３０を有する。ダミー命令生成機能３０は、ダミー命令を生成し、インターフェイスボード２に対して順次送信される複数の命令において、実行順序を守るべき命令の間に挿入する。すなわち、複数の命令において、第１の命令と、第１の命令の後に実行されるべき第２の命令とが存在する場合には、第１の命令と第２の命令との間にダミー命令が挿入される。これにより、第１の命令、ダミー命令、第２の命令の順に、外部計算機３からインターフェイスボード２に送信される。
【００２３】
ここで、例えば、第１の命令は、センサ値取得命令が該当し、第２の命令は、そのセンサ値取得命令によって取得されたセンサ値に基づいて生成されるモータ駆動命令が該当する。なお、実行順序を守るべき命令の種類は、本実施の形態で例示するセンサ値取得命令及びモータ駆動命令のみに限られない。他の種類の命令について、以降に説明するように順序性を保証するようにしてもよい。
【００２４】
インターフェイスボード２は、送信制御機能２０と、ダミー命令検出機能２１と、複数のバス用命令バッファ２２ａ〜２２ｃと、タイミング調整機能２３とを有する。以下、バス用命令バッファ２２ａ〜２２ｃは、特にいずれかに限定しない場合には、単に「バス用命令バッファ２２」と呼ぶ。
【００２５】
送信制御機能２０は、外部計算機３から受信した命令を、バス用命令バッファ２２ａ〜２２ｃに振り分ける又は分配する。言い換えると、送信制御機能２０は、外部計算機３から受信した命令を、バス用命令バッファ２２ａ〜２２ｃに格納する。より具体的には、送信制御機能２０は、受信した命令がダミー命令である場合、そのダミー命令を全てのバス用命令バッファ２２ａ〜２２ｃに出力する。一方、送信制御機能２０は、受信した命令がダミー命令でない場合、その命令をバス用命令バッファ２２ａ〜２２ｃのいずれか１つに出力する。より詳細には、送信制御機能２０は、その命令を実行するモジュール４が接続されるバスに対応するバス用命令バッファ２２にその命令を出力する。ここで、送信制御機能２０は、受信した命令がダミー命令であるか否かを、ダミー命令検出機能２１の検出結果によって認識する。
【００２６】
ダミー命令検出機能２１は、外部計算機３から受信した命令がダミー命令であるか否かを判断する。すなわち、ダミー命令検出機能２１は、送信制御機能２０に入力された命令がダミー命令であるか否かを判断する。そして、ダミー命令検出機能２１は、外部計算機３から受信した命令がダミー命令であると判定した場合、ダミー命令の検出を送信制御機能２０に通知する。
【００２７】
より具体的には、送信制御機能２０及びダミー命令検出機能２１は、例えば、次に説明する回路で実現される。ダミー命令検出機能２１は、送信制御機能２０に入力された命令がダミー命令である場合は、送信制御機能２０が有するブロードキャスト端子にブロードキャスト指示信号を出力する。ブロードキャスト指示信号は、上述のダミー命令の検出結果を示す信号に相当する。一方、ダミー命令検出機能２１は、送信制御機能２０に入力された命令がダミー命令でない場合は、送信制御機能２０が有するブロードキャスト端子にブロードキャスト指示信号は出力しない。送信制御機能２０は、ダミー命令検出機能２１からブロードキャスト指示信号が入力されている場合、入力された命令を全てのバス用命令バッファ２２ａ〜２２ｃに分配する。一方、送信制御機能２０は、ダミー命令検出機能２１からブロードキャスト指示信号が入力されていない場合、入力された命令をバス用命令バッファ２２ａ〜２２ｃのいずれか１つに振り分ける。
【００２８】
このような動作により、第１の命令と、第１の命令の後に実行されるべき第２の命令とが存在する場合、第１の命令の後にダミー命令が全てのバス用命令バッファ２２ａ〜２２ｃに格納され、ダミー命令の後に第２の命令がバス用命令バッファ２２ａ〜２２ｃのいずれか１つに格納される。送信制御機能２０及びダミー命令検出機能２１は、命令制御部として機能する。
【００２９】
バス用命令バッファ２２ａ〜２２ｃのそれぞれは、複数の命令を格納可能である。バス用命令バッファ２２ａ〜２２ｃのそれぞれは、送信制御機能２０から入力された命令を格納する。バス用命令バッファ２２ａ〜２２ｃのそれぞれは、命令を先入れ先出し（ＦＩＦＯ：First In First Out）で格納する。よって、バス用命令バッファ２２ａ〜２２ｃのそれぞれに格納された命令は、格納された順番で順次取り出され、バス９１〜９３のそれぞれに送信される。
【００３０】
ここで、バス用命令バッファ２２ａは、バス９１に接続されており、バス用命令バッファ２２ｂは、バス９２に接続されており、バス用命令バッファ２２ｃは、バス９３に接続されている。よって、バス用命令バッファ２２ａに格納された命令は、バス９１を介してモジュール４に出力される。バス用命令バッファ２２ｂに格納された命令は、バス９２を介してモジュール４に出力される。バス用命令バッファ２２ｃに格納された命令は、バス９３を介してモジュール４に出力される。
【００３１】
ここで、タイミング調整機能２３が、ダミー命令を利用して、バス用命令バッファ２２ａ〜２２ｃのそれぞれからモジュール４への命令の出力を制御することで、命令の順序性を保証する。タイミング調整機能２３は、出力制御部として機能する。
【００３２】
タイミング調整機能２３は、バス用命令バッファ２２ａ〜２２ｃのそれぞれから出力される命令を監視し、ダミー命令を出力するバス用命令バッファ２２を検出した場合、そのバス用命令バッファ２２の動作を停止させる。言い換えると、タイミング調整機能２３は、そのバス用命令バッファ２２からモジュール４に対する命令の出力を停止させる。その後も、タイミング調整機能２３は、新たにダミー命令を出力するバス用命令バッファ２２を検出する毎に、そのバス用命令バッファ２２の動作を停止させていく。そして、タイミング調整機能２３は、全てのバス用命令バッファ２２ａ〜２２ｃが出力する命令がダミー命令となった場合、停止させていたバス用命令バッファ２２の動作を再開させる。すなわち、タイミング調整機能２３は、停止させていたバス用命令バッファ２２からモジュール４に対する命令の出力を再開させる。
【００３３】
これにより、全てのバス用命令バッファ２２ａ〜２２ｃからの出力にダミー命令が揃うまで、ダミー命令以降の命令のモジュール４に対する出力が停止される。そのため、第１の命令と、第１の命令の後に実行されるべき第２の命令とが存在する場合、少なくとも第１の命令が出力されて、第１の命令の後のダミー命令が出力されるまでは、ダミー命令の後の第２の命令が出力されることはない。すなわち、第１の命令と第２の命令の順序性が保証される。
【００３４】
より具体的には、バス用命令バッファ２２ａ〜２２ｃ及びタイミング調整機能２３は、例えば、次に説明する回路で実現される。タイミング調整機能２３は、全てのバス用命令バッファ２２ａ〜２２ｃからダミー命令が出力されるまで、ダミー命令を出力するバス用命令バッファ２２の停止信号入力端子に対して停止信号を出力する。バス用命令バッファ２２は、タイミング調整機能２３から停止信号が入力されると、その動作を停止する。より詳細には、バス用命令バッファ２２は、タイミング調整機能２３からの停止信号に応じて、モジュール４に対する命令の出力動作を停止する。これにより、例えば、バス用命令バッファ２２からモジュール４に対するバスにおけるデータ（命令）の転送シーケンスが中断される。なお、この転送シーケンスは、バス９１〜９３における通信規格に準ずる。すなわち、バス用命令バッファ２２からモジュール４に対するダミー命令の送信が中断される。これにより、モジュール４によるダミー命令の受信は完了せず、ダミー命令はバス用命令バッファ２２内に留まり続ける。そのため、そのダミー命令の後に続く命令も送信されずに、バス用命令バッファ２２内に留まる。このように、バス用命令バッファ２２からモジュール４に対する命令の送信が抑止される。この命令の送信抑止は、タイミング調整機能２３からバス用命令バッファ２２に対して停止信号が入力されている間継続される。
【００３５】
なお、バス用命令バッファ２２からモジュール４に対する命令の送信を抑止する方法の１つとして、バス用命令バッファ２２の動作を停止させることで、バス用命令バッファ２２がモジュール４に対する命令の転送シーケンスを中断する方法を説明したが、この方法に限られず、他の方法を利用するようにしてもよい。例えば、タイミング調整機能２３がバス用命令バッファ２２から出力される命令を一旦取得し、取得した命令がダミー命令である場合は命令の送信を抑止し、そうでない場合はモジュール４に対して命令を送信するようにしてもよい。
【００３６】
タイミング調整機能２３は、全てのバス用命令バッファ２２ａ〜２２ｃからのダミー命令の出力を検出すると、停止信号の出力を止める。動作を停止していたバス用命令バッファ２２は、タイミング調整機能２３から停止信号が入力されなくなると、その動作を再開する。より詳細には、バス用命令バッファ２２は、タイミング調整機能２３からの停止信号の解除に応じて、モジュール４に対する命令の出力動作を再開する。ここで、後述するように、このときにダミー命令は破棄される。そのため、ダミー命令の次の命令について、バス用命令バッファ２２からモジュール４に対する命令の転送シーケンスが開始される。すなわち、全てのバス用命令バッファ２２ａ〜２２ｃからモジュール４に対する命令の送信が再開される。
【００３７】
続いて、図２を参照して、実施の形態１に係るインターフェイスボード２及び外部計算機３の構成について説明する。
【００３８】
まず、インターフェイスボード２について説明する。図２は、インターフェイスボード２が備える、送信制御機能２０及びタイミング調整機能２３の構成をより詳細に示している。図２に示すように、送信制御機能２０は、命令振分部２０１と、命令分配部２０２と、インバータ２０９とを有する。タイミング調整機能２３は、ダミー命令検出部２３１ａ〜２３１ｃと、ＡＮＤ回路２３２とを有する。以下、ダミー命令検出部２３１ａ〜２３１ｃは、特にいずれかに限定しない場合には、単に「ダミー命令検出部２３１」と呼ぶ。
【００３９】
送信制御機能２０に入力された命令は、命令振分部２０１と命令分配部２０２の両方に入力される。命令振分部２０１は、入力された命令を宛先に応じて、バス用命令バッファ２２ａ〜２２ｃのいずれか１つに振り分ける。命令分配部２０２は、入力された命令をバス用命令バッファ２２ａ〜２２ｃの全てに分配する。
【００４０】
ここで、命令振分部２０１と命令分配部２０２は、ダミー命令検出機能２１から送信制御機能２０にブロードキャスト指示信号が入力されているか否かによって相補的に動作する。送信制御機能２０にブロードキャスト指示信号が入力されていない場合、命令振分部２０１は動作して、命令分配部２０２は動作を停止する。一方、送信制御機能２０にブロードキャスト指示信号が入力されている場合、命令振分部２０１は動作を停止して、命令分配部２０２は動作する。これにより、上述の送信制御機能２０の動作が実現される。
【００４１】
より具体的には、命令振分部２０１及び命令分配部２０２は、例えば、次に説明するように動作する。ダミー命令検出機能２１は、ハイレベルとローレベルのいずれかに切り替えられる信号を命令振分部２０１及び命令分配部２０２に出力する。ダミー命令検出機能２１は、命令振分部２０１及び命令分配部２０２に対してダミー命令が入力されている場合、ハイレベルの信号を出力する。一方、ダミー命令検出機能２１は、命令振分部２０１及び命令分配部２０２に対してダミー命令が入力されてない場合、ローレベルの信号を出力する。この信号は、命令分配部２０２にはそのまま入力され、命令振分部２０１にはインバータ２０９を介して反転された信号が入力される。命令振分部２０１と命令分配部２０２は、ハイレベルの信号が入力されている場合に動作し、ローレベルの信号が入力されている場合にはその動作を停止する。すなわち、ハイレベルの信号は、ブロードキャスト指示信号に相当する。
【００４２】
ダミー命令検出部２３１ａ〜２３１ｃのそれぞれは、バス用命令バッファ２２ａ〜２２ｃのそれぞれから出力される命令を監視して、ダミー命令の出力を検出する。ダミー命令検出部２３１ａは、バス用命令バッファ２２ａを監視する。ダミー命令検出部２３１ｂは、バス用命令バッファ２２ｂを監視する。ダミー命令検出部２３１ｃは、バス用命令バッファ２２ｃを監視する。
【００４３】
ダミー命令検出部２３１ａは、バス用命令バッファ２２ａからダミー命令が出力されている場合、バス用命令バッファ２２ａ及びＡＮＤ回路２３２に対して停止信号を出力する。ダミー命令検出部２３１ｂは、バス用命令バッファ２２ｂからダミー命令が出力されている場合、バス用命令バッファ２２ｂ及びＡＮＤ回路２３２に対して停止信号を出力する。ダミー命令検出部２３１ｃは、バス用命令バッファ２２ｃからダミー命令が出力されている場合、バス用命令バッファ２２ｃ及びＡＮＤ回路２３２に対して停止信号を出力する。
【００４４】
ＡＮＤ回路２３２は、ダミー命令検出部２３１ａ〜２３１ｃのそれぞれから入力される信号の論理積演算により生成された信号を、ダミー命令検出部２３１ａ〜２３１ｃのそれぞれに出力する。ＡＮＤ回路２３２は、ダミー命令検出部２３１ａ〜２３１ｃの全てから停止信号が入力されている場合、ダミー命令検出部２３１ａ〜２３１ｃのそれぞれに対してクリア信号を出力する。一方、ＡＮＤ回路２３２は、ダミー命令検出部２３１ａ〜２３１ｃの少なくとも１つから停止信号が入力されていない場合、ダミー命令検出部２３１ａ〜２３１ｃのそれぞれに対してクリア信号を出力しない。
【００４５】
より具体的には、ダミー命令検出部２３１ａ〜２３１ｃ及びＡＮＤ回路２３２は、例えば、次に説明するように動作する。ダミー命令検出部２３１ａ〜２３１ｃのそれぞれは、ハイレベルとローレベルのいずれかに切り替えられる信号を、バス用命令バッファ２２ａ〜２２ｃのそれぞれ及びＡＮＤ回路２３２に出力する。ダミー命令検出部２３１ａ〜２３１ｃのそれぞれは、バス用命令バッファ２２ａ〜２２ｃのそれぞれからダミー命令が出力されている場合、ハイレベルの信号を出力する。一方、ダミー命令検出部２３１ａ〜２３１ｃのそれぞれは、バス用命令バッファ２２ａ〜２２ｃのそれぞれからダミー命令が出力されていない場合、ローレベルの信号を出力する。バス用命令バッファ２２ａ〜２２ｃのそれぞれは、ハイレベルの信号が入力されている場合に動作し、ローレベルの信号が入力されている場合にはその動作を停止する。すなわち、ハイレベルの信号は、停止信号に相当する。
【００４６】
ＡＮＤ回路２３２は、ダミー命令検出部２３１ａ〜２３１ｃの全てからハイレベルの信号が入力されている場合、ダミー命令検出部２３１ａ〜２３１ｃのそれぞれに対してハイレベルの信号を出力する。ＡＮＤ回路２３２は、ダミー命令検出部２３１ａ〜２３１ｃの少なくとも１つからローレベルの信号が入力されている場合、ダミー命令検出部２３１ａ〜２３１ｃのそれぞれに対してローレベルの信号を出力する。ダミー命令検出部２３１ａ〜２３１ｃのそれぞれは、ＡＮＤ回路２３２からハイレベルの信号が入力された場合、バス用命令バッファ２２ａ〜２２ｃ及びＡＮＤ回路２３２に対して出力する信号をハイレベルからローレベルに切り替える。一方、ダミー命令検出部２３１ａ〜２３１ｃのそれぞれは、ＡＮＤ回路２３２からローレベルの信号が入力されている場合、バス用命令バッファ２２ａ〜２２ｃ及びＡＮＤ回路２３２に対して出力する信号のレベルは切り替えない。すなわち、ＡＮＤ回路２３２が出力するハイレベルの信号は、クリア信号に相当する。
【００４７】
続いて、外部計算機３について説明する。図２では、外部計算機３の構成をより詳細に示している。図２に示すように、外部計算機３は、ダミー命令生成機能３０の他に、命令生成部３１と、実行順序判断部３２とを有する。
【００４８】
命令生成部３１は、複数のモジュール４が実行する複数の命令を生成する。実行順序判断部３２は、命令生成部３１が生成した複数の命令において、実行順序を守るべき命令が存在するか否かを判断する。ダミー命令生成機能３０は、ダミー命令を生成して、実行順序判断部３２が検出した実行順序を守るべき命令の間に挿入する。これにより、外部計算機３が生成した複数の命令において、第１の命令と、第１の命令の後に実行されるべき第２の命令とが存在する場合、第１の命令、ダミー命令、第２の命令の順に命令が送信される。
【００４９】
続いて、図３を参照して、実施の形態１に係る外部計算機３のソフトウェア構成及びハードウェア構成について説明する。図３に示すように、外部計算機３は、ＣＰＵ（Central Processing Unit）３００と、メモリ３０１と、ハードディスク３０２と、通信コントローラ３０３とを有する。
【００５０】
ＣＰＵ３００は、外部計算機３を統括的に制御する。ＣＰＵ３００は、ハードディスク３０２に格納されたインタプリタ３１０をメモリ３０１にロードして実行することで、ハードディスク３０２に格納されたソースプログラム３１１を解釈して実行可能プログラムを生成する。ＣＰＵ３００は、生成した実行可能プログラムを実行することにより、命令を生成してインターフェイスボード２に送信する。言い換えると、インタプリタ３１０と、ソースプログラム３１１を解釈することにより生成される実行可能プログラムは、ＣＰＵ３００に対してダミー命令生成機能３０、命令生成部３１、及び実行順序判断部３２としての各種処理を実行させるためのコードを含む。
【００５１】
メモリ３０１は、ＣＰＵ３００が利用する情報が一時的に格納される。この情報には、上述したように、ハードディスク３０２からロードされるインタプリタ３１０及びソースプログラム３１１等も含まれる。メモリ３０１は、例えばＤＲＡＭ（Dynamic Random Access Memory）及びＳＲＡＭ（Static Random Access Memory）等の揮発性の記憶装置である。
【００５２】
ハードディスク３０２には、上述の通り、インタプリタ３１０及びソースプログラム３１１等の各種情報が格納されている。なお、ハードディスク３０２のような不揮発性の記憶装置であれば、ハードディスク３０２に代えて、例えばフラッシュメモリ等の他の記憶装置を利用してもよい。メモリ３０１及びハードディスク３０２は、外部計算機３が利用する情報が格納される記憶部として機能する。なお、記憶部として機能する記憶装置の数及び組み合わせも、上述の例に限られない。
【００５３】
通信コントローラ３０３は、ＣＰＵ３００から出力された情報を、インターフェイスボード２に対して送信可能な形式に変換して送信する。変換後の形式は、外部計算機３とインターフェイスボード２との間の通信規格に準ずる。また、通信コントローラ３０３は、インターファイスボード２からの情報を受信し、外部計算機３内で処理可能な形式に変換してＣＰＵ３００に出力する。
【００５４】
インタプリタ３１０は、ダミー命令を生成する機能を有する。ソースプログラム（ソースコード、原子プログラム）３１１は、複数のモジュール４を制御するコードが記述されている。ＣＰＵ３００は、インタプリタ３１０によってソースプログラム３１１を逐次解釈（逐次コンパイルとも称する）して生成した実行可能プログラム（ロードモジュール、機械語プログラム、オブジェクトコード）を実行することで、複数のモジュール４で実行される命令を生成し、インターフェイスボード２を介して複数のモジュール４に対して順次送信する。このときに、ＣＰＵ３００は、実行順序を守るべき命令を生成して送信する場合、それらの命令の間でダミー命令を生成して送信する。すなわち、インタプリタ３１０は、実行順序を守るべき命令を生成して送信するコードが実行される場合に、それらのコードの間にダミー命令を生成して送信するコードを追加してＣＰＵ３００に実行させる。これにより、外部計算機３は、実行順序を守るべき命令の間にダミー命令を挿入して、それらの命令をインターフェイスボード２に送信することができる。
【００５５】
なお、複数のモジュール４を制御する方式は、上述したようにインタプリタ３１０によってソースプログラム３１１を逐次解釈することで生成した実行可能プログラムを実行する例に限られない。ハードディスク３０２においてインタプリタ３１０に代えてコンパイラが格納されるようにし、ＣＰＵ３００がそのコンパイラによってソースプログラム３１１を一括解釈（一括コンパイルとも称する）することで生成した実行可能プログラムを実行するようにしてもよい。この場合、コンパイラは、実行順序を守るべき命令を生成して送信するコードの間に、ダミー命令を生成して送信するコードを追加して実行可能プログラムを生成する処理をＣＰＵ３００に実行させる。もしくは、実行可能なプログラム自体に実行順序を守るべき命令判断機能およびダミー命令生成機能を持たせ、命令の順序をチェックしながらダミー命令を生成する処理をＣＰＵ３００に実行させることができる。これにより、ＣＰＵ３００が、この実行可能プログラムを実行すると、実行順序を守るべき命令の間にダミー命令が挿入され、それらの命令がインターフェイスボード２に送信される。
【００５６】
このように、インタプリタ３１０に限らず、コンパイラによってもダミー命令の挿入を実現することが可能である。
【００５７】
続いて、図４を参照して、実施の形態１に係る命令の実行順序について説明する。図４では、外部計算機３の命令生成部３１が命令Ａ〜Ｆの順に命令を生成する例について説明する。
【００５８】
ここで、命令Ｃ、命令Ｄ、命令Ｆは、実行順序を守るべき命令であるものとする。すなわち、命令Ｄは、命令Ｃの実行後に実行する必要があり、命令Ｆは、命令Ｄの実行後に実行する必要があるものとする。なお、図４では、バス９１〜９３において１つの命令の送信が完了する時間を、１単位時間（＝１．０）として示している。
【００５９】
この場合、ダミー命令生成機能３０は、命令Ｃと命令Ｄの間にダミー命令Ａを挿入し、命令Ｄと命令Ｆの間にダミー命令Ｂを挿入する。よって、外部計算機３は、図４に「通信経路９０のデータ」として示すように、命令Ａ、命令Ｂ、命令Ｃ、ダミー命令Ａ、命令Ｄ、命令Ｅ、ダミー命令Ｂ、命令Ｆの順に、命令を順次１つずつ、通信経路９０を介してインターフェイスボード２に対して送信する。
【００６０】
なお、通信経路９０の通信速度は、バス９１〜９３の通信速度よりも高速であることが望ましい。例えば、図４に示すように、バス９１〜９３で１つの命令を送信する時間内で、通信経路９０で複数の命令（命令Ａ〜Ｆ及びダミー命令Ａ、Ｂ）を送信することができる。図４では、バス９１〜９３で１つの命令を送信する時間内で、通信経路９０で少なくとも８つの命令を送信することができる例について示しているが、命令数の関係はこれに限られない。通信経路９０と複数のバス９１〜９３との間にこのような関係があることにより、バス９１〜９３において命令が枯渇することなく、モジュール４に対して連続的に命令を送信することが可能となる。
【００６１】
また、命令Ａ、命令Ｂ、及び命令Ｃは、バス９１に接続されるモジュール４によって実行される命令であり、命令Ｄは、バス９２に接続されるモジュール４によって実行される命令であり、命令Ｅ及び命令Ｆは、バス９３に接続されるモジュール４によって実行される命令であるものとする。
【００６２】
この場合、図４に「バスのデータ」として示すように、バス用命令バッファ２２ａ〜２２ｃのそれぞれは、バス９１〜９３のそれぞれに対して命令を送信する。すなわち、バス用命令バッファ２２ａは、命令Ａ、命令Ｂ、命令Ｃ、ダミー命令Ａ、ダミー命令Ｂの順番に命令が格納され、その順番で命令を送信する。バス用命令バッファ２２ｂは、ダミー命令Ａ、命令Ｄ、ダミー命令Ｂの順番に命令が格納され、その順番で命令を送信する。バス用命令バッファ２２ｃは、ダミー命令Ａ、命令Ｅ、ダミー命令Ｂ、命令Ｆの順番で命令が格納され、その順番で命令を送信する。以下、この場合における時間の経過に応じたバス９１〜９３の状態について説明する。
【００６３】
（時間１）
バス用命令バッファ２２ａに格納された命令Ａは、バス９１に送信される。バス９１に接続されるモジュール４は、バス用命令バッファ２２ａから送信された命令Ａを受信して実行する。ここで、バス用命令バッファ２２ａから送信される命令はダミー命令Ａではないが、バス用命令バッファ２２ｂ、２２ｃから送信される命令はダミー命令Ａである。よって、タイミング調整機能２３は、ダミー命令Ａを送信するバス用命令バッファ２２ｂ、２２ｃの動作を停止させる。これにより、バス用命令バッファ２２ｂ、２２ｃから送信されるダミー命令Ａのモジュール４による受信が完了することはない。
【００６４】
（時間２）
バス用命令バッファ２２ａに格納された命令Ｂは、バス９１に送信される。バス９１に接続されるモジュール４は、バス用命令バッファ２２ａから送信された命令Ｂを受信して実行する。ここで、バス用命令バッファ２２ａから送信される命令はダミー命令Ａではないが、バス用命令バッファ２２ｂ、２２ｃから送信される命令はダミー命令Ａである。よって、タイミング調整機能２３は、ダミー命令Ａを送信するバス用命令バッファ２２ｂ、２２ｃの動作を引き続き停止させる。
【００６５】
（時間３）
バス用命令バッファ２２ａに格納された命令Ｃは、バス９１に送信される。バス９１に接続されるモジュール４は、バス用命令バッファ２２ａから送信された命令Ｃを受信して実行する。ここで、バス用命令バッファ２２ａから送信される命令はダミー命令Ａではないが、バス用命令バッファ２２ｂ、２２ｃから送信される命令はダミー命令Ａである。よって、タイミング調整機能２３は、ダミー命令Ａを送信するバス用命令バッファ２２ｂ、２２ｃの動作を引き続き停止させる。
【００６６】
（時間４）
バス用命令バッファ２２ａに格納されたダミー命令Ａも、バス９１に送信される。よって、バス用命令バッファ２２ａ〜２２ｃの全てから送信される命令がダミー命令Ａとなる。そのため、タイミング調整機能２３は、バス用命令バッファ２２ｂ、２２ｃの動作を再開させる。なお、このときに、バス用命令バッファ２２ａ〜２２ｃは、後述するように、ダミー命令Ａを破棄する。
【００６７】
（時間５）
バス用命令バッファ２２ａに格納されたダミー命令Ｂは、バス９１に送信される。一方、動作を再開したバス用命令バッファ２２ｂに格納された命令Ｄは、バス９２に送信される。バス９２に接続されるモジュール４は、バス用命令バッファ２２ｂから送信された命令Ｄを受信して実行する。動作を再開したバス用命令バッファ２２ｃに格納された命令Ｅも、バス９３に送信される。バス９３に接続されるモジュール４は、バス用命令バッファ２２ｃから送信された命令Ｅを受信して実行する。このように、命令Ｃが送信されるまで、命令Ｃの後に実行すべき命令Ｄの送信が保留される。よって、命令Ｃ、Ｄの実行順序を保証することができる。ここで、バス用命令バッファ２２ｂ、２２ｃから送信される命令はダミー命令Ｂではないが、バス用命令バッファ２２ａから送信される命令はダミー命令Ｂである。よって、タイミング調整機能２３は、ダミー命令Ｂを送信するバス用命令バッファ２２ａの動作を停止させる。
【００６８】
（時間６）
バス用命令バッファ２２ｂに格納されたダミー命令Ｂも、バス９２に送信される。バス用命令バッファ２２ｃに格納されたダミー命令Ｂも、バス９３に送信される。よって、バス用命令バッファ２２ａ〜２２ｃの全てから送信される命令がダミー命令Ｂとなる。そのため、タイミング調整機能２３は、バス用命令バッファ２２ａの動作を再開させる。
【００６９】
（時間７）
バス用命令バッファ２２ｃに格納された命令Ｆは、バス９３に送信される。バス９３に接続されるモジュール４は、バス用命令バッファ２２ｃから送信された命令Ｆを受信して実行する。このように、命令Ｄが送信されるまで、命令Ｄの後に実行すべき命令Ｆの送信が保留される。よって、命令Ｄ、Ｆの実行順序を保証することができる。
【００７０】
上述した本実施の形態１に係るモジュール制御システム１によれば、ここで例示したように、独立して並列的に命令を実行するモジュール４群の間においても、命令実行の順序性を保証することができる。
【００７１】
続いて、図５を参照して、実施の形態１に係るモジュール制御システム１の動作について説明する。
【００７２】
外部計算機３のＣＰＵ３００は、ユーザからの入力に応じてソースプログラム３１１を作成する（Ｓ１）。このソースプログラム３１１には、複数のモジュール４を制御するためのコードが記述される。例えば、このソースプログラム３１１には、センサ値取得命令及びモータ駆動命令を生成してモジュール４に対して送信するコードが記述される。上述のユーザからの入力は、外部計算機３が有する入力装置（図示せず）操作することによって実施される。入力装置は、例えば、キーボード及びマウス等である。
【００７３】
外部計算機３のＣＰＵ３００は、インタプリタ３１０を実行することで、ソースプログラム３１１を逐次解釈して実行可能プログラムを生成し、実行する（Ｓ２）。これにより、外部計算機３によって各種命令が生成されてインターフェイスボード２を介して順次複数のモジュール４に送信される。複数のモジュール４のそれぞれが受信した命令を実行することで、複数のモジュール４が構成するガジェットの動作が実現される（Ｓ３）。
【００７４】
続いて、図６を参照して、実施の形態１に係る外部計算機３の動作について説明する。外部計算機３は、インタプリタ３１０を実行することで、ソースプログラム３１１を逐次解釈して実行可能プログラムを実行する際に、以下のステップＳ１１〜Ｓ１４の処理を繰り返し実行する。
【００７５】
実行順序判断部３２は、解釈対象のｉ行目のコードで生成される命令と、ｉ−１行目以前（ｉ−１行目を含む）のコードで生成される命令との間で順序に制約があるか否かを判断する（Ｓ１１）（ｉは、任意の正整数）。実行順序判断部３２は、例えば、ソースコード３１１を解析し、ｉ−１行目以前のコードで生成される命令がセンサ値取得命令であり、ｉ行目のコードで生成される命令がそのセンサ値取得命令によって取得したセンサ値に基づくモータ駆動命令である場合、両者の順序に制約があると判断する。
【００７６】
ここで、命令の順序の制約を調査する範囲は、例えば、以下の（１）〜（４）の方法のうち、任意の方法を採用するようにしてよい。
【００７７】
（１）直前にダミー命令を生成した行までを調査
この方法の場合、実行順序判断部３２は、ｉ−１行目から直前にダミー命令を生成した行までを順番に遡って調査する。
【００７８】
（２）予め定めた行数だけ調査
この方法の場合、実行順序判断部３２は、ｉ−１行目から予め定めた行数を遡った行までを調査する。
【００７９】
（３）順序の制約がある命令を検出するまで調査
この方法の場合、実行順序判断部３２は、ｉ−１行目から順番に遡っていき、順序の制約がある命令を生成するコードが検出された行で調査を終了する。
【００８０】
（４）ｉ−１行目以前の全てを調査
この方法の場合、実行順序判断部３２は、ｉ−１行目からソースプログラム３１１の最初の行までを順番に遡って調査する。
【００８１】
ダミー命令生成機能３０は、実行順序判断部３２によってｉ行目の命令とｉ−１行目以前の命令との間で順序に制約があると判断された場合（Ｓ１１：Ｙｅｓ）、ダミー命令を生成する（Ｓ１２）。ソースプログラム３１１から生成される実行可能プログラムにおいて、ｉ行目に対応するコードと、ｉ−１行目以前で順序に制約があると判断された行に対応するコードとの間に、ダミー命令を送信するコードが挿入される。
【００８２】
一方、ダミー命令生成機能３０は、実行順序判断部３２によってｉ行目の命令とｉ−１行目以前の命令との間で順序に制約がないと判断された場合（Ｓ１１：Ｎｏ）、ダミー命令は生成しない。
【００８３】
命令生成部３１は、ソースプログラム３１１のｉ行目にモジュール４に対して命令を送信する処理が記述されている場合、ソースプログラム３１１のｉ行目の記述から命令を生成する（Ｓ１３）。
【００８４】
命令生成部３１は、生成した命令に対して、その命令の送信対象となるバスを示す対象バス情報を追加する（Ｓ１４）。ここで、命令の送信対象となるバスは、モジュール４と、そのモジュール４が接続されるバスとを示す対応データに基づいて判断する。この対応データは、例えば、ハードディスク３０２に予め格納されている。ソースプログラム３１１の記述において、命令を生成するコードには、その命令の送信先となるモジュール４が示されている。そのため、命令生成部３１は、対応データに基づいて、命令の送信先のモジュール４から、その命令の送信先となるバスを示す対象バス情報を生成して、その命令に追加する。インターフェイスボード２の送信制御機能２０（命令振分部２０１）は、外部計算機３から命令を受信した場合に、その命令に追加された対象バス情報が示すバスに対応するバス用命令バッファ２２に、その命令を振り分ける。これにより、送信制御機能２０（命令振分部２０１）が命令を、その送信先に対応するバス用命令バッファ２２に正しく振り分けることができる。
【００８５】
このように、ｉ行目の命令とｉ−１行目以前の命令との間で順序に制約があると判断された場合には、ステップＳ１２でダミー命令生成機能３０がダミー命令を生成して送信してから、ステップＳ１３で命令生成部３１が命令を生成して送信する。一方、ｉ行目の命令とｉ−１行目以前の命令との間で順序に制約がないと判断された場合には、ダミー命令は送信されず、ステップＳ１３で命令生成部３１のみが命令を生成して送信する。
【００８６】
これによれば、例えば、センサ値取得命令と、そのセンサ値取得命令と順序に制約があるモータ駆動命令とが別々のバスに送信される場合であっても、センサ値取得命令とモータ駆動命令の間にダミー命令を挿入して送信することができる。したがって、インターフェイスボード２におけるダミー命令を利用した制御によって、図４を参照して説明したように、センサ値取得命令をモータ駆動命令が追い越して実行されないようにできる。よって、例えば、１周期前のセンサ値に基づいてモータを駆動するといった誤動作を回避することができる。
【００８７】
続いて、図７を参照して、実施の形態１に係るインターフェイスボード２の送信制御機能２０及びダミー命令検出機能２１の動作について説明する。
【００８８】
ダミー命令検出機能２１は、外部計算機３から受信した命令がダミー命令であるか否かを判断する（Ｓ２１）。送信制御機能２０は、外部計算機３から受信した命令がダミー命令でないと判断された場合（Ｓ２１：Ｎｏ）、命令振分部２０１によって、その命令に含まれる対象バス情報が示すバスにその命令を振り分ける（Ｓ２２）。一方、送信制御機能２０は、外部計算機３から受信した命令がダミー命令であると判断された場合（Ｓ２１：Ｙｅｓ）、命令分配部２０２によって、その命令を全てのバス９１〜９３に分配する（Ｓ２３）。
【００８９】
続いて、図８を参照して、実施の形態１に係るインターフェイスボード２のタイミング調整機能２３の動作について説明する。
【００９０】
タイミング調整機能２３のダミー命令検出部２３１ａ〜２３１ｃは、それぞれに対応するバス用命令バッファ２２ａ〜２２ｃから出力される命令がダミー命令であるか否かを判断する（Ｓ３１）。ダミー命令検出部２３１ａ〜２３１ｃは、バス用命令バッファ２２ａ〜２２ｃから出力される命令がダミー命令でないと判断した場合（Ｓ３１：Ｎｏ）、そのバス用命令バッファ２２ａ〜２２ｃからバスへの命令の出力を許容する（Ｓ３２）。
【００９１】
一方、ダミー命令検出部２３１ａ〜２３１ｃは、そのダミー命令検出部２３１に対応するバス用命令バッファ２２ａ〜２２ｃから出力される命令がダミー命令であると判断した場合（Ｓ３１：Ｙｅｓ）、そのバス用命令バッファ２２ａ〜２２ｃからバスへの命令の出力を停止する（Ｓ３３）。タイミング調整機能２３は、全てのバス用命令バッファ２２ａ〜２２ｃからダミー命令が出力されているか否かを判断する（Ｓ３４）。すなわち、ダミー命令検出部２３１は、クリア信号が入力されたか否かを判定する。
【００９２】
タイミング調整機能２３は、全てのバス用命令バッファ２２ａ〜２２ｃからダミー命令が出力されていると判断した場合（Ｓ３４：Ｙｅｓ）、それらのバス用命令バッファ２２ａ〜２２ｃのダミー命令を破棄させる（Ｓ３５）。このダミー命令の破棄は、バス用命令バッファ２２ａ〜２２ｃのそれぞれが、ダミー命令検出部２３１ａ〜２３１ｃのそれぞれからの停止命令の出力が解除されたタイミングで出力している命令を破棄することで実施する。これにより、バス用命令バッファ２２ａ〜２２ｃから出力される命令がダミー命令でなくなるため（Ｓ３１：Ｎｏ）、バス用命令バッファ２２ａ〜２２ｃから命令が出力される（Ｓ３２）。一方、タイミング調整機能２３は、全てのバス用命令バッファ２２ａ〜２２ｃからダミー命令が出力されていないと判断した場合（Ｓ３４：Ｎｏ）、それらのバス用命令バッファ２２ａ〜２２ｃのダミー命令の破棄は実施しない。
【００９３】
ここで、以上の説明では、ダミー命令に関する動作を明確化するために言及しなかったが、当然に、各モジュール４から命令を受信することも可能である。より具体的には、インターフェイスボード２は、図９に示すように、送信制御機能２０、ダミー命令検出機能２１、バス用命令バッファ２２ａ〜２２ｃ、及びタイミング調整機能２３を有する送信機能２００の他に、受信機能２２０を有する。受信機能２２０は、受信制御機能２２１と、受信バス用命令バッファ２２２ａ〜２２２ｃとを有する。
【００９４】
受信バス用命令バッファ２２２ａ〜２２２ｃのそれぞれは、複数の命令を格納可能である。受信バス用命令バッファ２２２ａ〜２２２ｃのそれぞれは、モジュール４からバス９１〜９３のそれぞれを介して受信した命令を格納する。受信バス用命令バッファ２２２ａ〜２２２ｃのそれぞれは、命令を先入れ先出し（ＦＩＦＯ）で格納する。よって、受信バス用命令バッファ２２２ａ〜２２２ｃのそれぞれは、格納された順番で順次命令を受信制御機能２２１に出力する。
【００９５】
受信制御機能２２１は、受信バス用命令バッファ２２２ａ〜２２２ｃのそれぞれから入力された命令を、外部計算機３に対して通信経路９０を介して到着順に１つずつ順次送信する。すなわち、図４で示される通信経路９０及びバス９１〜９３を占有する命令と同様に、モジュール４から外部計算機３に向けて送信される命令によって通信経路９０及びバス９１〜９３が占有される場合もあり得る。
【００９６】
なお、このモジュール４から外部計算機３に送信される命令は、モジュール４が外部計算機３に対して処理を指示する命令そのものに限られず、外部計算機３からの命令に応じてモジュール４が応答する情報も含まれる。この情報は、例えば、モジュール４がセンサ値取得命令に応じて外部計算機３に対して送信するセンサ値である。
【００９７】
以上に説明したように、本実施の形態１に係るモジュール制御システム１は、バス９１〜９３（モジュール４群）のそれぞれに命令を先入れ先出しで出力するバス用命令バッファ２２ａ〜２２ｃと、順次入力される命令をバス用命令バッファ２２ａ〜２２ｃのいずれかに振り分ける送信制御機能２０と、バス用命令バッファ２２ａ〜２２ｃからの命令の出力を制御するタイミング調整機能２３を有する。
【００９８】
ここで、送信制御機能２０は、入力された命令が、実行順序を守るべき命令の間に挿入されるダミー命令である場合には、入力された命令をバス用命令バッファ２２ａ〜２２ｃの全てに分配する。そして、タイミング調整機能２３は、バス用命令バッファ２２ａ〜２２ｃの全てにおいて出力する命令がダミー命令となるまで、出力する命令がダミー命令となっているバス用命令バッファ２２からバス（モジュール４群）への命令の出力を抑止する。
【００９９】
これによれば、ダミー命令よりも前の命令が出力されて、バス用命令バッファ２２ａ〜２２ｃの出力にダミー命令が揃うまで、ダミー命令よりも後の命令がモジュール４に出力されて実行されることはない。よって、実行順序を守るべき命令の実行順序を保証することができる。
【０１００】
例えば、本実施の形態１によるダミー命令による制御を実施せずに、図４に示す命令Ａ〜命令Ｆを送信すると、図１０に示すように命令Ａ〜命令Ｆが送信される。すなわち、インターフェイスボード２は、外部計算機３から通信経路９０を介して受信した各命令Ａ〜命令Ｆを、即時各バス９１〜９３に振り分けて送信する。
【０１０１】
したがって、（時間１）では、バス９１に命令Ａが送信され、バス９２に命令Ｄが送信され、バス９３に命令Ｅが送信される。（時間２）では、バス９１に命令Ｂが送信され、バス９３に命令Ｆが送信される。（時間３）では、バス９１に命令Ｃが送信される。このように、命令Ｃの後に実行されるべき命令Ｄが、命令Ｃよりも先にモジュール４に送信されて実行されてしまう。これに対して、本実施の形態１によれば、同様の命令Ａ〜命令Ｆを送信する場合においても、図４に示すように命令の順序性を保証することができる。
【０１０２】
（実施の形態１の変形例１）
モジュール制御システム１は、図１、２に示すように、外部計算機３とインターフェイスボード２とを直接接続する形態に限られず、図１１に示すように、外部計算機３とインターフェイスボード２とを処理装置５を介して接続するようにしてもよい。外部計算機３は、通信経路９０を介して処理装置５と接続される。処理装置５は、通信経路９５を介してインターフェイスボード２と接続される。
【０１０３】
処理装置５は、例えば、マイコンボードである。処理装置５は、命令メモリ５０を有する。命令メモリ５０は、外部計算機３から受信した命令が一時的に格納される。命令メモリ５０は、例えばＤＲＡＭ及びＳＲＡＭ等の揮発性の記憶装置である。そして、処理装置５は、外部計算機３から受信した命令を命令メモリ５０に一時的に蓄積してからインターフェイスボード２に対して順次送信するようにしてもよい。よって、命令メモリ５０も、命令を先入れ先出し（ＦＩＦＯ）で命令を格納する。
【０１０４】
（実施の形態１の変形例２）
また、処理装置５の利用方法は、このように外部計算機３から送信された命令を中継するのみに限られず、図１２に示すように、外部計算機３がコンパイラによってソースプログラム３１１を一括解釈することで生成した実行可能プログラムを処理装置５で実行することで、命令をインターフェイスボード２に対して送信するようにしてもよい。
【０１０５】
この変形例では、外部計算機３は、プログラム生成部３２０を有する。外部計算機３のＣＰＵ３００が、上述のコンパイラの機能を担務することでプログラム生成部３２０として機能する。また、プログラム生成部３２０は、実行順序判断部３２を有する。プログラム生成部３２０は、実行順序判断部３２によって実行順序を守るべき命令が検出された場合、その実行順序を守るべき命令を生成して送信するコードの間に、ダミー命令を生成して送信するコードを追加して実行可能プログラムを生成する。外部計算機３は、生成した実行可能プログラムを処理装置５に送信する。
【０１０６】
また、この変形例では、処理装置５は、プログラム実行部３２１を有する。処理装置５のＣＰＵ（図示せず）が、外部計算機３から受信した実行可能プログラムを実行することで、プログラム実行部３２１として機能する。また、プログラム実行部３２１は、ダミー命令生成機能３０と、命令生成部３１とを有する。処理装置５のＣＰＵが実行可能プログラムを実行することで、順次命令を生成してインターフェイスボード２に送信することになる。また、この際には、ダミー命令が生成されて、実行順序を守るべき命令の間に挿入される。すなわち、処理装置５のＣＰＵは、実行可能プログラムを実行することで、命令生成機能３０及び命令生成部３１として機能することになる。
【０１０７】
なお、処理装置５は、実行可能プログラムを受信に応じて即時実行せずに、処理装置５の記憶装置に格納しておいて任意のタイミングで実行するようにしてもよい。これによれば、複数のモジュール４に対して、外部計算機３を接続せずに、処理装置５とインターフェイスボード２のみを接続をすることで制御することができる。そのため、複数のモジュール４で構成されるガジェットの動作範囲の制限を無くすことができる。例えば、外部計算機３とインターフェイスボード２とがケーブルによって接続されたままの状態では、ケーブルの長さによってガジェットの動作範囲に制約ができてしまう。これに対して、処理装置５（例えばマイコンボード）及びインターフェイスボード２のみがガジェットに接続された状態であれば、処理装置５及びインターフェイスボード２は、外部計算機３（例えばＰＣ）と比較して小型であるため、処理装置５及びインターフェイスボード２をガジェットに搭載したまま動作範囲に制約なく動作させることが可能となる。
【０１０８】
＜実施の形態２＞
続いて、実施の形態２について説明する。以下、実施の形態１と同様の内容については適宜省略して説明する。図１３を参照して、実施の形態２に係るモジュール制御システム１に係るインターフェイスボード２及び外部計算機３の構成について説明する。本実施の形態２に係るインターフェイスボード２は、実施の形態１に係るインターフェイスボード２と比較して、さらにオーバーフロー検出部２４を有する。
【０１０９】
オーバーフロー検出部２４は、バス用命令バッファ２２ａ〜２２ｃのそれぞれのオーバーフローを検出する。オーバーフロー検出部２４は、バス用命令バッファ２２ａ〜２２ｃの少なくとも１つでオーバーフローを検出した場合、オーバーフローの検出を通知する通知信号を外部計算機３に対して送信する。
【０１１０】
外部計算機３のダミー命令生成機能３０及び命令生成部３１は、インターフェイスボード２からの通知信号に応じて、命令の生成・送信を停止する。また、外部計算機３は、インターフェイスボード２をリセットする等して、インターフェイスボード２を復旧させてから命令の送信を再開するようにしてもよい。
【０１１１】
以上に説明したように、本実施の形態２では、オーバーフロー検出部２４は、バス用命令バッファ２２がオーバーフローになったことを検出し、命令の入力元となる外部計算機３に通知する。これによれば、外部計算機３が通知に応じて、インターフェイスボード２のバス用命令バッファ２２ａ〜２２ｃがオーバーフローした状態での動作の継続を抑止することができる。そのため、異常発生時に動作が継続されてしまうことを防止することができる。
【０１１２】
（実施の形態２の変形例１）
上記説明では、インターフェイスボード２がバス用命令バッファ２２ａ〜２２ｃのオーバーフローを検出するオーバーフロー検出部２４を有する例について説明したが、これに限られない。インターフェイスボード２は、オーバーフロー検出部２４に代えて、バス用命令バッファ２２ａ〜２２ｃのバッファフル（バス用命令バッファ２２が一杯になったこと）を検出するバッファフル検出部を有してもよい。
【０１１３】
この変形例１では、バッファフル検出部は、バス用命令バッファ２２ａ〜２２ｃの少なくとも１つがバッファフルになったことを検出した場合、バッファフルの検出を通知する通知信号を外部計算機３に対して送信する。外部計算機３のダミー命令生成機能３０及び命令生成部３１は、インターフェイスボード２からの通知信号に応じて、命令の生成・送信を停止する。また、バッファフル検出部は、バス用命令バッファ２２ａ〜２２ｃのバッファフルが解消した場合、外部計算機３に対する通信信号の送信を解除してもよい。この場合、外部計算機３のダミー命令生成機能３０及び命令生成部３１は、インターフェイスボード２からの通知信号の送信解除に応じて、命令の生成・送信を再開してもよい。
【０１１４】
本変形例によれば、インターフェイスボード２のバス用命令バッファ２２ａ〜２２ｃのオーバーフローを防止することができる。そのため、異常発生時に制御が継続されてしまうことを防止することができる。
【０１１５】
（実施の形態２の変形例２）
また、本実施の形態２においても、図１４に示すように、モジュール制御システム１は、図１１で示した例と同様に外部計算機３とインターフェイスボード２と、を処理装置５を介して接続するようにしてもよい。
【０１１６】
この場合、オーバーフロー検出部２４は、通知信号を処理装置５に対して送信する。処理装置５は、インターフェイスボード２からの通知信号に応じて、命令メモリ５０に蓄積された命令の送信を停止する。なお、変形例１と同様、オーバーフロー検出部２４に代えて、バッファフル検出部を有するようにしてもよい。
【０１１７】
また、図１２で示した例と同様に、外部計算機３がコンパイラによってソースプログラム３１１を一括解釈することで生成した実行可能プログラムを処理装置５で実行することで、命令をインターフェイスボード２に対して送信するようにしてもよい。この場合、実行可能プログラムにインターフェイスボード２からの通知信号に応じて命令の送信を停止する処理を含めておくことで、処理装置５のＣＰＵが、通知信号に応じて命令の送信を停止するようにしてもよい。また、実行可能プログラムに異常時処理を含めておき、処理装置５のＣＰＵが、この実行可能プログラムの実行時に通知信号を受信した場合、異常時処理としてインターフェイスボード２をリセットする等して、インターフェイスボード２を復旧させてから命令の送信を再開するようにしてもよい。
【０１１８】
＜実施の形態３＞
続いて、実施の形態３について説明する。以下、これまでの実施の形態１、２と同様の内容については適宜省略して説明する。
【０１１９】
ここで、命令の実行順序を守りたいケースとして、主に以下の２つがある。
（１）単純に命令の順序を守りたい場合
例えば、上述したように、第１の命令でセンサ値を取得し、第２の命令で取得したセンサ値に基づいてモータを駆動したい場合である。
（２）制御周期毎に命令を分けたい場合
例えば、モータ制御では、制御理論に基づいてセンサ値のサンプリングタイミングと、モータへの指令タイミングは、一定周期毎のタイミングが定められる。モータの制御量は、サンプリング及び指令の周期の関数で表され、周期が期待値と異なれば設計通りに動作しない。
【０１２０】
実施の形態１、２では、（１）は実現できていたが、（２）は実現できていなかった。そこで、本実施の形態３では、（１）、（２）を両立できるモジュール制御システム１について説明する。
【０１２１】
図１５を参照して、本実施の形態３に係るインターフェイスボード及び外部計算機の構成について説明する。本実施の形態３に係るインターフェイスボード２は、実施の形態１に係るインターフェイスボード２と比較して、さらにタイマー２５を有する点が異なる。
【０１２２】
タイマー２５は、一定周期の時間が経過したことを周期的に通知する通知信号をＡＮＤ回路２３２に出力する回路である。よって、本実施の形態３に係るＡＮＤ回路２３２は、ダミー命令検出部２３１ａ〜２３１ｃの全てから停止信号が入力されており、かつタイマー２５から通知信号が入力されている場合に、ダミー命令検出部２３１ａ〜２３１ｃの全てに対してクリア信号を出力する。一方、ダミー命令検出部２３１ａ〜２３１ｃのそれぞれからの停止信号及びタイマー２５からの停止信号のうち、少なくとも１つが入力されていない場合には、ダミー命令検出部２３１ａ〜２３１ｃに対してクリア信号を出力しない。
【０１２３】
より具体的には、タイマー２５は、一定周期の時間が経過する毎に、一定時間ハイレベルとなるパルス信号をＡＮＤ回路２３２に出力する。したがって、このパルス信号（ハイレベルの信号）は、通知信号に相当する。
【０１２４】
ＡＮＤ回路２３２は、ダミー命令検出部２３１ａ〜２３１ｃ及びタイマー２５の全てからハイレベルの信号が入力されている場合、ダミー命令検出部２３１ａ〜２３１ｃの全てに対してハイレベルの信号を出力する。一方、ＡＮＤ回路２３２は、ダミー命令検出部２３１ａ〜２３１ｃ及びタイマー２５の少なくとも１つからローレベルの信号が入力されている場合、ダミー命令検出部２３１ａ〜２３１ｃの全てに対してローレベルの信号を出力する。なお、入力される信号がハイレベルかローレベルかによるバス用命令バッファ２２ａ〜２２ｃ及びダミー命令検出部２３１ａ〜２３１ｃの動作は、実施の形態１で説明した通りである。
【０１２５】
続いて、図１６を参照して、実施の形態３に係る命令の実行順序について説明する。図１６では、実施の形態１における図４に示す例と同様に、外部計算機３の命令生成部３１が命令Ａ〜Ｆの順に命令を生成する例について説明する。なお、タイマー２５が通知信号を出力する周期は、５単位時間毎であり、「時間５」と「時間１０」であるものとする。この場合、「時間１」〜「時間３」におけるバス９１〜９３の状態については、図４と同様であるため、説明を省略する。
【０１２６】
（時間４）
バス用命令バッファ２２ａ〜２２ｃの全てから送信される命令がダミー命令となる。しかしながら、タイマー２５からタイミング調整機能２３に対しては、一定周期Ａの時間の経過は通知されていない。よって、タイミング調整機能２３は、ダミー命令Ａを送信するバス用命令バッファ２２ａ〜２２ｃの動作を停止させる。
【０１２７】
（時間５）
タイマー２５は、タイミング調整機能２３に対して一定周期のタイマー通知を行う。よって、バス用命令バッファ２２ａ〜２２ｃの全てから送信される命令がダミー命令Ａとなり、かつタイマー２５からタイマー通知が行われたため、タイミング調整機能２３は、バス用命令バッファ２２ａ〜２２ｃの動作を再開させる。このとき、バス用命令バッファ２２ａ〜２２ｃは、ダミー命令Ａを破棄する。
【０１２８】
これにより、バス用命令バッファ２２ａに格納されたダミー命令Ｂは、バス９１に送信される。バス用命令バッファ２２ｂは、バス９２に命令Ｄを送信する。バス用命令バッファ２２ｃも、バス９３に命令Ｅを送信する。
【０１２９】
（時間６）〜（時間９）
バス用命令バッファ２２ｂに格納されたダミー命令Ｂは、バス９２に送信される。バス用命令バッファ２２ｃに格納されたダミー命令Ｂは、バス９３に送信される。バス用命令バッファ２２ａ〜２２ｃの全てから送信される命令がダミー命令Ｂとなるが、タイマー２５からタイミング調整機能２３に対しては、タイマー通知は行われていない。タイミング調整機能２３は、ダミー命令Ｂを送信するバス用命令バッファ２２ａ〜２２ｃの動作を停止させる。
【０１３０】
（時間１０）
タイマー２５は、タイミング調整機能２３に対して一定周期の時間の経過を通知する。よって、バス用命令バッファ２２ａ〜２２ｃの全てから送信される命令がダミー命令Ｂとなり、かつタイマー２５からタイマー通知が行われたため、タイミング調整機能２３は、バス用命令バッファ２２ａ〜２２ｃの動作を再開させる。このとき、バス用命令バッファ２２ａ〜２２ｃは、ダミー命令Ｂを破棄する。これにより、バス用命令バッファ２２ｃは、バス９３に命令Ｆを送信する。バス９３に接続されるモジュール４は、バス用命令バッファ２２ｃから送信された命令Ｆを受信して実行する。
【０１３１】
上述した本実施の形態３に係るモジュール制御システム１によれば、タイマー２５の周期を制御周期とすることで、制御周期毎にモジュール４を制御することが可能である。また、本実施の形態３に係るモジュール制御システム１によれば、制御周期毎に実行する命令を分けることも可能である。例えば、ダミー命令Ａからダミー命令Ｂまでの命令は、時間５〜時間９までの期間で実行し、ダミー命令Ｂ以降の命令は、時間１０〜の期間で実行することができる。すなわち、命令Ｄ、Ｅがセンサ値取得命令であり、命令Ｆがモータ駆動命令である場合には、時間５〜時間９までの期間でセンサ値取得命令を実行し、時間１０〜の期間でモータ駆動命令を実行するといったように、命令を制御周期毎に分けて実行することができる。
【０１３２】
続いて、図１７を参照して、実施の形態３に係るインターフェイスボード２のタイミング調整機能２３の動作について説明する。本実施の形態３に係るタイミング調整機能２３の動作は、図８に示す実施の形態１に係るタイミング調整機能２３の動作と比較して、ステップＳ３６が追加されている点が異なる。
【０１３３】
すなわち、タイミング調整機能２３は、全てのバス用命令バッファ２２ａ〜２２ｃからダミー命令が出力されており、かつタイマー２５の出力が１（ハイレベル）であるか否かを判断する（Ｓ３４、３６）。タイミング調整機能２３は、全てバス用命令バッファ２２ａ〜２２ｃからダミー命令が出力されており、かつタイマー２５の出力が１（ハイレベル）であると判断した場合に（Ｓ３４：Ｙｅｓ、Ｓ３６：Ｙｅｓ）、バス用命令バッファ２２ａ〜２２ｃのダミー命令を破棄する（Ｓ３５）。これにより、バス用命令バッファ２２ａ〜２２ｃからバス９１〜９３への命令の出力が再開される（Ｓ３２）。
【０１３４】
一方、タイミング調整機能２３は、全てのバス用命令バッファ２２ａ〜２２ｃからダミー命令が出力されていない、又は、タイマー２５の出力が１（ハイレベル）でないと判断した場合は（Ｓ３４：Ｎｏ又はＳ３６：Ｎｏ）、バス用命令バッファ２２ａ〜２２ｃのダミー命令を破棄しない。
【０１３５】
以上に説明したように、本実施の形態３では、タイミング調整機能２３は、バス用命令バッファ２２ａ〜２２ｃの全てにおいて出力する命令がダミー命令となり、かつタイマー２５から通知信号が出力されるまで、出力する命令がダミー命令となっているバス用命令バッファ２２からの命令の出力を抑止する。これによれば、タイマー２５の周期毎のタイミングで、ダミー命令に続く命令を実行することができる。よって、所定の制御周期でモジュール４の制御を実施することができる。また、ダミー命令間の命令が、タイマー２５の周期毎に分かれて実行されることになる。すなわち、制御周期毎に命令を分けて実行することもできる。
【０１３６】
（実施の形態３の変形例）
本実施の形態３においても、図１１示す例と同様に、外部計算機３とインターフェイスボード２とを処理装置５を介して接続するようにしてもよい。また、本実施の形態３においても、図１２に示す例と同様に、外部計算機３がコンパイラによってソースプログラム３１１を一括解釈することで生成した実行可能プログラムを処理装置５で実行することで、命令をインターフェイスボード２に対して送信するようにしてもよい。
【０１３７】
＜実施の形態４＞
続いて、実施の形態４について説明する。以下、これまでの実施の形態１〜３と同様の内容については適宜省略して説明する。本実施の形態４では、実施の形態２で課題となったオーバーフローの問題と、実施の形態３で課題となった制御周期の問題を同時に解決する構成について説明する。
【０１３８】
図１８を参照して、実施の形態４に係るインターフェイスボード２及び外部計算機３の構成について説明する。本実施の形態４に係る外部計算機３は、実施の形態３に係る外部計算機３と比較して、さらにダミー命令検出部３３を有する。
【０１３９】
ダミー命令検出部３３は、タイミング調整機能２３で検出されるダミー命令のＮ個先のダミー命令を検出する（Ｎは、予め定めた正整数）。すなわち、ダミー命令検出部３３は、インターフェイスボード２に対して送信される最初のダミー命令の送信からＮ個目のダミー命令（最初のダミー命令を含まない）を検出する。言い換えると、ダミー命令検出部３３は、命令の送信開始からＮ＋１個目に送信されるダミー命令を検出する。
【０１４０】
ダミー命令検出部３３は、Ｎ個先のダミー命令を検出した場合、ダミー命令生成機能３０、命令生成部３１、及び実行順序判断部３２の動作を停止させる。言い換えると、ダミー命令生成機能３０及び命令生成部３１は、命令の生成・送信を停止する。
【０１４１】
また、本実施の形態４に係るＡＮＤ回路２３２は、実施の形態３に係るＡＮＤ回路２３２と比較して、ダミー命令検出部２３１ａ〜２３１ｃに加えて、さらに外部計算機３のダミー命令検出部３３に対してもクリア信号を送信する。
【０１４２】
ダミー命令検出部３３は、ＡＮＤ回路２３２からのクリア信号の受信に応じて、ダミー命令生成機能３０、命令生成部３１、及び実行順序判断部３２の動作を再開させる。言い換えると、ダミー命令生成機能３０及び命令生成部３１は、命令の生成・送信を再開する。
【０１４３】
これによれば、タイミング調整機能２３においてｘ番目のダミー命令の出力を待ち合わせているときには、外部計算機３ではｘ＋Ｎ番目のダミー命令以降の命令の送信が抑止される。よって、バス用命令バッファ２２ａ〜２２ｃには、ｘ番目のダミー命令からｘ＋Ｎ番目のダミー命令までの間に送信される命令しか格納されないことになる。そのため、バス用命令バッファ２２ａ〜２２ｃに格納される命令数を抑制し、バス用命令バッファ２２ａ〜２２ｃのオーバーフローを防止することができる。
【０１４４】
なお、２回目以降は、ダミー命令検出部３３は、ダミー命令生成機能３０、命令生成部３１、及び実行順序判断部３２の動作を再開させてから、次にインターフェイスボード２に対して送信されるダミー命令（１つのダミー命令）を検出した場合に、ダミー命令生成機能３０、命令生成部３１、及び実行順序判断部３２の動作を停止させるようにすればよい。最初に、Ｎ＋１目のダミー命令までの命令を送信しているため、後は、ダミー命令１つずつで命令の送信停止と送信再開とを繰り返すことで、バス用命令バッファ２２ａ〜２２ｃにｘ番目のダミー命令からｘ＋Ｎ番目のダミー命令までの間に送信される命令が格納された状態を維持することができる。
【０１４５】
続いて、図１９を参照して、実施の形態４に係る命令の実行順序について説明する。図１９では、実施の形態３における図１６の例と同様に、外部計算機３の命令生成部３１が命令Ａ〜Ｆの順に命令を生成する例について説明する。なお、ここでは、説明を簡略化するために、Ｎの数を１としている。
【０１４６】
図１９に示すように、バス９１〜９３の状態については、実施の形態３における図１６に示す例と同様であるが、通信経路９０の状態が異なる。図１６に示すように２番目（Ｎ＋１番目）のダミー命令Ｂが検出された場合、外部計算機３は、命令の生成・送信を停止する。そのため、通信経路９０では、ダミー命令Ｂの送信が完了しないままとなる。この状態は、上述したように、全てのバス９１〜９３に対してダミー命令Ａが送信され、かつタイマー２５からパルス信号が出力される「時間５」まで継続される。
【０１４７】
これによれば、バス９１に対してダミー命令Ａが送信されるまで、バス９２、９３に対する命令の送信が停止されることになるが、バス９２、９３に対応するバス用命令バッファ２２ｂ、２２ｃには、ダミー命令Ａとダミー命令Ｂの間に生成された命令のみしか格納されることはない。よって、バス用命令バッファ２２ｂ、２２ｃのオーバーフローを防止することができる。
【０１４８】
以上に説明したように、本実施の形態４では、ダミー命令検出部３３は、所定数のダミー命令のインターフェイスボード２に対する入力に応じて、インターフェイスボード２に対する命令の入力を中断する。タイミング調整機能２３は、バス用命令バッファ２２ａ〜２２ｃの全てにおいて出力する命令がダミー命令であり、かつタイマー２５から通知信号が出力された場合に、外部計算機３に対してクリア信号を出力する。そして、ダミー命令検出部３３は、タイミング調整機能２３からの通知信号の出力に応じて、中断していた命令の入力を再開する。
【０１４９】
これによれば、バス用命令バッファ２２ａ〜２２ｃに格納される命令数は、最初のダミー命令から所定数のダミー命令の間の命令のみに限られる。よって、バス用命令バッファ２２ａ〜２２ｃに格納される命令数を抑制し、バス用命令バッファ２２ａ〜２２ｃのオーバーフローを防止することができる。
【０１５０】
（実施の形態４の変形例）
本実施の形態４においても、図２０に示すように、モジュール制御システム１は、図１１に示す例と同様に外部計算機３とインターフェイスボード２とを処理装置５を介して接続するようにしてもよい。
【０１５１】
この場合、図２０に示すように、外部計算機３に代えて処理装置５がダミー命令検出部３３を有するようにしてもよい。処理装置５は、ダミー命令検出部３３によってＮ個先のダミー命令が検出された場合、命令メモリ５０に蓄積された命令の送信を停止する。また、処理装置５は、ダミー命令検出部３３によるクリア信号の受信に応じて、命令メモリ５０に蓄積された命令の送信を再開する。
【０１５２】
また、本実施の形態４においても、図１２に示すように、外部計算機３がコンパイラによってソースプログラム３１１を一括解釈することで生成した実行可能プログラムを処理装置５で実行することで、命令をインターフェイスボード２に対して送信するようにしてもよい。この場合、実行可能プログラムにＮ個先のダミー命令の送信を検出した場合に命令の送信を停止する処理を含めておくことで、処理装置５のＣＰＵが、Ｎ個先のダミー命令の送信に応じて命令の送信を停止する。また、実行可能プログラムにインターフェイスボード２からのクリア信号に応じて命令の送信を再開する処理を含めておくことで、処理装置５のＣＰＵが、クリア信号に応じて命令の送信を再開する。また、本実施の形態４の変形例として、インターフェイスボード２がタイマー２５を有さない形態（実施の形態１において、さらにダミー命令検出部３３を有する形態）で実施することもできる。
【０１５３】
＜実施の形態５＞
続いて、実施の形態５について説明する。以下、これまでの実施の形態１〜４と同様の内容については適宜省略して説明する。
【０１５４】
上述したように、命令の実行タイミングを守りたいケースとして、（１）単純に命令の順序を守りたい場合、（２）制御周期毎に命令を分けたい場合が存在する。実際のガジェット（モジュール４）の動作を考慮すると、（１）と（２）を混在させたい場合が多い。すなわち、あるタイミングにおいては（１）を実現させ、他のタイミングでは、さらに（２）も実現させたいという場合が多い。そこで、本実施の形態５では、（１）と（２）を混在させた制御を実現する方法について説明する。
【０１５５】
図２１に示すように、本実施の形態５に係るインターフェイスボード２は、本実施の形態４に係るインターフェイスボード２と比較して、ダミー命令検出機能２１に代えて、順序命令検出部２１１と、周期命令検出部２１２と、ＯＲ回路２１３とを有する点が異なる。
【０１５６】
順序命令検出部２１１は、送信制御機能２０に入力された命令が順序命令である場合、ＯＲ回路２１３にブロードキャスト指示信号を出力する。周期命令検出部２１２は、送信制御機能２０に入力された命令が周期命令である場合、ＯＲ回路２１３にブロードキャスト指示信号を出力する。
【０１５７】
ＯＲ回路２１３は、順序命令検出部２１１及び周期命令検出部２１２のそれぞれから入力される信号の論理和演算により生成された信号を、送信制御機能２０が有するブロードキャスト端子に出力する。言い換えると、ＯＲ回路２１３は、順序命令検出部２１１及び周期命令検出部２１２の少なくとも１つからブロードキャスト指示信号が入力されている場合、ブロードキャスト指示信号を送信制御機能２０に出力する。一方、ＯＲ回路２１３は、順序命令検出部２１１及び周期命令検出部２１２のいずれからもブロードキャスト指示信号が入力されていない場合、ブロードキャスト指示信号を出力しない。
【０１５８】
より具体的には、順序命令検出部２１１及び周期命令検出部２１２は、例えば、次に説明する回路として実現される。順序命令検出部２１１及び周期命令検出部２１２のそれぞれは、ハイレベルとローレベルのいずれかに切り替えられる信号を送信制御機能２０に出力する。順序命令検出部２１１は、送信制御機能２０に対して順序命令が入力されている場合、ハイレベルの信号を出力する。一方、順序命令検出部２１１は、送信制御機能２０に対して順序命令が入力されてない場合、ローレベルの信号を出力する。周期命令検出部２１２は、送信制御機能２０に対して周期命令が入力されている場合、ハイレベルの信号を出力する。一方、周期命令検出部２１２は、送信制御機能２０に対して周期命令が入力されてない場合、ローレベルの信号を出力する。すなわち、ハイレベルの信号は、ブロードキャスト指示信号に相当する。
【０１５９】
したがって、ＯＲ回路２１３は、順序命令検出部２１１及び周期命令検出部２１２の少なくとも１つからハイレベルの信号が入力されている場合、ハイレベルの信号を送信制御機能２０に出力する。一方、ＯＲ回路２１３は、順序命令検出部２１１及び周期命令検出部２１２の両方からローレベルの信号が入力されている場合、ローレベルの信号を送信制御機能２０に出力する。
【０１６０】
このように、本実施の形態５では、ダミー命令として、順序命令と周期命令が存在する。順序命令は、実施の形態１、２で説明したように、（１）単純に命令の順序を守りたい場合におけるダミー命令として機能する。周期命令は、実施の形態３、４で説明したように、（２）制御周期毎に命令を分けたい場合におけるダミー命令として機能する。
【０１６１】
また、図２１に示すように、本実施の形態５に係るインターフェイスボード２は、本実施の形態４に係るインターフェイスボード２と比較して、ダミー命令検出部２３１ａ〜２３１ｃに代えて、ダミー命令判断部２３３ａ〜２３３ｃを有する点が異なる。また、本実施の形態５に係るインターフェイスボード２は、本実施の形態４に係るインターフェイスボード２と比較して、ＡＮＤ回路２３２に代えて、ＡＮＤ回路２３４、２３５と、ＯＲ回路２３６と、選択回路２３７とを有する点が異なる。ダミー命令判断部２３３ａ〜２３３ｃのそれぞれは、順序命令検出部２３３１と、周期命令検出部２３３２と、ＯＲ回路２３３３とを有する。
【０１６２】
ダミー命令判断部２３３ａ〜２３３ｃのそれぞれは、バス用命令バッファ２２ａ〜２２ｃのそれぞれから出力される命令を監視して、ダミー命令（順序命令及び周期命令）の出力を検出する。ダミー命令判断部２３３ａは、バス用命令バッファ２２ａを監視し、ダミー命令判断部２３３ｂは、バス用命令バッファ２２ｂを監視し、ダミー命令判断部２３３ｃは、バス用命令バッファ２２ｃを監視する。
【０１６３】
ダミー命令判断部２３３ａは、バス用命令バッファ２２ａから順序命令又は周期命令が出力されている場合、バス用命令バッファ２２ａに対して停止信号を出力する。ダミー命令判断部２３３ｂは、バス用命令バッファ２２ｂから順序命令又は周期命令が出力されている場合、バス用命令バッファ２２ｂに対して停止信号を出力する。ダミー命令判断部２３３ｃは、バス用命令バッファ２２ｃから順序命令又は周期命令が出力されている場合、バス用命令バッファ２２ｃに対して停止信号を出力する。また、ダミー命令判断部２３３ａ〜２３３ｃのそれぞれは、バス用命令バッファ２２ａ〜２２ｃのそれぞれから順序命令が出力されている場合、ＡＮＤ回路２３４に停止信号を出力する。ダミー命令判断部２３３ａ〜２３３ｃのそれぞれは、バス用命令バッファ２２ａ〜２２ｃのそれぞれから周期命令が出力されている場合、ＯＲ回路２３６に停止信号を出力する。
【０１６４】
より詳細には、ダミー命令判断部２３３ａ〜２３３ｃのそれぞれにおいて、対応するバス用命令バッファ２２から順序命令が出力されている場合、順序命令検出部２３３１は、停止信号をＯＲ回路２３３３に出力する。また、対応するバス用命令バッファ２２から周期命令が出力されている場合、周期命令検出部２３３２は、ＯＲ回路２３３３及びＯＲ回路２３６に対して停止信号を出力する。
【０１６５】
ＯＲ回路２３３３は、順序命令検出部２３３１及び周期命令検出部２３３２のそれぞれから入力される信号の論理和演算により生成された信号を、対応するバス用命令バッファ２２及びＡＮＤ回路２３４に対して出力する。言い換えると、ＯＲ回路２３３３は、順序命令検出部２３３１及び周期命令検出部２３３２の少なくとも１つから停止信号が入力されている場合、ＯＲ回路２３３３及びＯＲ回路２３６に対して停止信号を出力する。一方、ＯＲ回路２３３３は、順序命令検出部２３３１及び周期命令検出部２３３２の両方から停止信号が入力されていない場合、停止信号を出力しない。
【０１６６】
より具体的には、順序命令検出部２３３１、周期命令検出部２３３２、及びＯＲ回路２３３３は、例えば、次に説明する回路として実現される。順序命令検出部２３３１及び周期命令検出部２３３２のそれぞれは、ハイレベルとローレベルのいずれかに切り替えられる信号を送信制御機能２０に出力する。順序命令検出部２３３１は、対応するバス用命令バッファ２２から順序命令が出力されている場合、ハイレベルの信号を出力する。一方、順序命令検出部２３３１は、対応するバス用命令バッファ２２から順序命令が出力されていない場合、ローレベルの信号を出力する。周期命令検出部２３３２は、対応するバス用命令バッファ２２から順序命令が出力されている場合、ハイレベルの信号を出力する。一方、周期命令検出部２１２は、対応するバス用命令バッファ２２から順序命令が出力されていない場合、ローレベルの信号を出力する。すなわち、ハイレベルの信号は、停止信号に相当する。
【０１６７】
したがって、ＯＲ回路２３３３は、順序命令検出部２３３１及び周期命令検出部２３３２の少なくとも１つからハイレベルの信号が入力されている場合、対応するバス用命令バッファ及びＡＮＤ回路２３４に対してハイレベルの信号を出力する。一方、ＯＲ回路２３３３は、順序命令検出部２３３１及び周期命令検出部２３３２の両方からローレベルの信号が入力されている場合、対応するバス用命令バッファ及びＡＮＤ回路２３４に対してローレベルの信号を出力する。
【０１６８】
ＡＮＤ回路２３４は、ダミー命令判断部２３３ａ〜２３３ｃのそれぞれから入力される信号の論理積演算により生成された信号を、ＡＮＤ回路２３５及び選択回路２３７に対して出力する。ＡＮＤ回路２３４は、ダミー命令判断部２３３ａ〜２３３ｃの全てから停止信号が入力されている場合、ＡＮＤ回路２３５に対して停止信号を出力する。この停止信号は、クリア信号として機能する。一方、ＡＮＤ回路２３２は、ダミー命令判断部２３３ａ〜２３３ｃの少なくとも１つから停止信号が入力されていない場合、ＡＮＤ回路２３５及び選択回路２３７に対してクリア信号を出力しない。
【０１６９】
ＡＮＤ回路２３５は、ＡＮＤ回路２３４及びタイマー２５のそれぞれから入力される信号の論理積演算により生成された信号を、選択回路２３７に対して出力する。ＡＮＤ回路２３５は、ＡＮＤ回路２３４から停止信号が入力されており、かつタイマー２５から通知信号が入力されている場合、選択回路２３７に対してクリア信号を出力する。一方、ＡＮＤ回路２３５は、ＡＮＤ回路２３４からのクリア信号と、タイマー２５からの通知信号の少なくとも１つが入力されていない場合、選択回路２３７に対してクリア信号を出力しない。
【０１７０】
ＯＲ回路２３６は、ダミー命令判断部２３３ａ〜２３３ｃのそれぞれから入力される信号の論理積演算により生成された信号を、選択回路２３７の信号選択端子に対して出力する。ＯＲ回路２３６は、ダミー命令判断部２３３ａ〜２３３ｃの少なくとも１つから停止信号が入力されている場合、ＡＮＤ回路２３５のクリア信号を選択する選択信号を選択回路２３７に出力する。一方、ＯＲ回路２３６は、ダミー命令判断部２３３a〜２３３ｃのいずれからも停止信号が入力されていない場合、ＡＮＤ回路２３４のクリア信号を選択する選択信号を選択回路２３７に出力する。
【０１７１】
選択回路２３７は、ＯＲ回路２３６からＡＮＤ回路２３４のクリア信号を選択する選択信号が入力されている場合、ＡＮＤ回路２３４から入力されるクリア信号を選択してダミー命令判断部２３３ａ〜２３３ｃに出力する。一方、選択回路２３７は、ＯＲ回路２３６からＡＮＤ回路２３５のクリア信号を選択する選択信号が入力されている場合、ＡＮＤ回路２３５から入力されるクリア信号を選択してダミー命令判断部２３３ａ〜２３３ｃに出力する。
【０１７２】
より具体的には、ＡＮＤ回路２３４、２３５、ＯＲ回路２３６、及び選択回路２３７は、次に説明するように動作する。ＡＮＤ回路２３４は、ダミー命令判断部２３３ａ〜２３３ｃの全てからハイレベルの信号が入力されている場合、ＡＮＤ回路２３５及び選択回路２３７に対してハイレベルの信号を出力する。一方、ＡＮＤ回路２３４は、ダミー命令判断部２３３ａ〜２３３ｃの少なくとも１つからローレベルの信号が入力されている場合、ＡＮＤ回路２３５及び選択回路２３７に対してローレベルの信号を出力する。
【０１７３】
ＡＮＤ回路２３５は、ＡＮＤ回路２３４及びタイマー２５の全てからハイレベルの信号が入力されている場合、ＡＮＤ回路２３５及び選択回路２３７に対してハイレベルの信号を出力する。一方、ＡＮＤ回路２３４は、ＡＮＤ回路２３４及びタイマー２５の少なくとも１つからローレベルの信号が入力されている場合、ＡＮＤ回路２３５及び選択回路２３７に対してローレベルの信号を出力する。
【０１７４】
ＯＲ回路２３６は、ダミー命令判断部２３３ａ〜２３３ｃの少なくとも１つからハイレベルの信号が入力されている場合、選択回路２３７に対してハイレベルの信号を出力する。一方、ＯＲ回路２３６は、ダミー命令判断部２３３ａ〜２３３ｃの全てからローレベルの信号が入力されている場合、選択回路２３７に対してローレベルの信号を出力する。
【０１７５】
選択回路２３７は、ＯＲ回路２３６からハイレベルの信号が入力されている場合、ＡＮＤ回路２３５から入力されている信号を、ダミー命令判断部２３３ａ〜２３３ｃのそれぞれに対して出力する。一方、選択回路２３７は、ＯＲ回路２３６からローレベルの信号が入力されている場合、ＡＮＤ回路２３４から入力されている信号を、ダミー命令判断部２３３ａ〜２３３ｃのそれぞれに対して出力する。
【０１７６】
したがって、ＯＲ回路２３６から出力されるハイレベルの信号は、ＡＮＤ回路２３５のクリア信号を選択する選択信号に相当する。ＯＲ回路２３６から出力されるローレベルの信号は、ＡＮＤ回路２３４のクリア信号を選択する選択信号に相当する。ＡＮＤ回路２３４、２３５及び選択回路２３７から出力されるハイレベルの信号は、クリア信号に相当する。
【０１７７】
このような構成によれば、バス用命令バッファ２２から順序命令及び周期命令のいずれが出力された場合であっても、そのバス用命令バッファ２２からの命令の出力を停止させることができる。その後に、全てのバス用命令バッファ２２ａ〜２２ｃからの出力が順序命令又は周期命令となった場合には、停止させたバス用命令バッファ２２からの命令の出力を再開することができる。このとき、ダミー命令が周期命令である場合には、タイマー２５から一定周期の経過が通知されたときに限り、バス用命令バッファ２２からの命令の出力を再開させることができる。一方、ダミー命令が順序命令である場合には、タイマー２５から一定周期の経過が通知されたか否かに限られず、バス用命令バッファ２２からの命令の出力を再開させることができる。
【０１７８】
よって、外部計算機３によって単純に命令の順序を守りたい命令の間に順序命令を挿入することで、命令の実行順序を保証することができる。そして、外部計算機３によって所定の制御周期毎に分けて実行させたい命令の間に周期命令を挿入することで、命令の実行順序の保証に加えて、それらの命令の所定の制御周期で分けての実行も可能となる。
【０１７９】
また、図２１に示すように、本実施の形態５に係る外部計算機３は、本実施の形態４に係る外部計算機３と比較して、ダミー命令検出部３３に代えて、周期命令検出部３４を有する点が異なる。
【０１８０】
周期命令検出部３４は、タイミング調整機能２３で検出される周期命令のＮ個先の周期命令を検出する（Ｎは、予め定めた正整数）。すなわち、周期命令検出部３４は、実施の形態４に係るダミー命令検出部３３と同様に動作するが、ダミー命令として、順序命令及び周期命令のうち、周期命令のみを検出する点がダミー命令検出部３３とは異なる。
【０１８１】
ここで、ＡＮＤ回路２３５は、外部計算機３の周期命令検出部３４に対しても信号を出力している。よって、実施の形態４に係るダミー命令検出部３３は、ＡＮＤ回路２３２からのクリア信号に応じてダミー命令生成機能３０、命令生成部３１、及び実行順序判断部３２の動作を再開させていたが、周期命令検出部３４は、ＡＮＤ回路２３５からのクリア信号に応じてダミー命令生成機能３０、命令生成部３１、及び実行順序判断部３２の動作を再開させる。
【０１８２】
これによれば、実施の形態４と同様に、バス用命令バッファ２２ａ〜２２ｃに格納される命令数を抑制し、バス用命令バッファ２２ａ〜２２ｃのオーバーフローを防止することができる。
【０１８３】
続いて、図２２を参照して、実施の形態５に係る命令の実行順序について説明する。図２２では、外部計算機３の命令生成部３１が命令Ａ〜Ｇの順に命令を生成する例について説明する。ここで、命令Ｅ、命令Ｆは、実行順序を守るべき命令であるものとする。また、命令Ｃ、命令Ｄ、命令Ｇは、一定周期毎に分けて実行したい命令であるものとする。なお、ここでは、説明を簡略化するために、実施の形態４における図１９に示す例と同様に、Ｎの数を１としている。また、タイマー２５が通知信号を出力する周期も、実施の形態４における図１９に示す例と同様に、５単位時間毎であり、「時間５」と「時間１０」であるものとする。
【０１８４】
この場合、ダミー命令生成機能３０は、命令Ｃと命令Ｄの間に周期命令を挿入し、命令Ｅと命令Ｆの間に順序命令を挿入し、命令Ｄと命令Ｇの間に周期命令を挿入する。よって、外部計算機３は、図２２に「通信経路９０のデータ」として示すように、命令Ａ、命令Ｂ、命令Ｃ、周期命令Ａ、命令Ｄ、命令Ｅ、順序命令、命令Ｆ、周期命令Ｂの順に、命令を順次１つずつ通信経路９０を介してインターフェイスボード２に対して送信する。この場合、「時間１」〜「時間４」における状態については、ダミー命令が周期命令になること以外は、図１９に示す例と同様であるため、説明を省略する。
【０１８５】
（時間５）
タイマー２５は、タイミング調整機能２３に対して一定周期のタイマー通知を行う。よって、バス用命令バッファ２２ａ〜２２ｃの全てから送信される命令が周期命令となり、かつタイマー２５からタイマー通知が行われたため、タイミング調整機能２３は、バス用命令バッファ２２ａ〜２２ｃの動作を再開させる。
【０１８６】
これにより、バス用命令バッファ２２ａに格納された順序命令は、バス９１に送信される。バス用命令バッファ２２ｂに格納された命令Ｄは、バス９２に送信される。バス用命令バッファ２２ｃも、バス９３に命令Ｅを送信する。
【０１８７】
（時間６）
バス用命令バッファ２２ｂに格納された順序命令は、バス９２に送信される。バス用命令バッファ２２ｃに格納された順序命令は、バス９３に送信される。よって、バス用命令バッファ２２ａ〜２２ｃの全てから送信される命令が順序命令となる。そのため、タイミング調整機能２３は、タイマー２５からタイマー通知は行われていないが、バス用命令バッファ２２ｂ、２２ｃの動作を再開させる。
【０１８８】
（時間７）
バス用命令バッファ２２ａに格納された周期命令は、バス９１に送信される。一方、動作を再開したバス用命令バッファ２２ｂに格納された周期命令は、バス９２に送信される。バス用命令バッファ２２ｃも、バス９３に命令Ｆを送信する。
【０１８９】
（時間８）〜（時間９）
バス用命令バッファ２２ｃに格納された周期命令は、バス９３に送信される。バス用命令バッファ２２ａ〜２２ｃの全てから送信される命令が周期命令となるが、タイマー２５からタイミング調整機能２３に対しては、タイマー通知は行われていない。タイミング調整機能２３のダミー命令判断部２３３ａ〜２３３ｃは、周期命令を送信するバス用命令バッファ２２ａ〜２２ｃの動作を停止させる。
【０１９０】
（時間１０）
タイマー２５は、タイミング調整機能２３に対してタイマー通知を行う。よって、バス用命令バッファ２２ａ〜２２ｃの全てから送信される命令が周期命令となり、かつタイマー２５からタイマー通知が行われたため、タイミング調整機能２３は、バス用命令バッファ２２ａ〜２２ｃの動作を再開させる。これにより、バス用命令バッファ２２ｂは、バス９２に命令Ｇを送信する。
【０１９１】
上述した本実施の形態５に係るモジュール制御システム１によれば、ここで例示したように、（１）単純に命令の順序を守りたい場合と、（２）制御周期毎に命令を分けたい場合とを混在させて実施することが可能である。例えば、命令Ｄがセンサ値取得命令であり、命令Ｇがモータ駆動命令である場合、制御周期毎に実行する命令を、センサ値取得命令とモータ駆動命令とに分けることができる。また、命令Ｅと命令Ｆのように、順序性のみを考慮して実行することも可能である。
【０１９２】
続いて、図２３を参照して、実施の形態５に係るインターフェイスボード２のタイミング調整機能２３の動作について説明する。本実施の形態５に係るタイミング調整機能２３の動作は、図１７に示す実施の形態３に係るタイミング調整機能２３の動作と比較して、ステップＳ３３の後に、ステップＳ３４〜Ｓ３５に代えて、ステップＳ３６〜Ｓ４０が実行される点が異なる。
【０１９３】
すなわち、タイミング調整機能２３は、全てのバス用命令バッファ２２ａ〜２２ｃから順序命令が出力されているか否かを判断する（Ｓ３７）。タイミング調整機能２３は、全てのバス用命令バッファ２２ａ〜２２ｃから順序命令が出力されていると判断した場合（Ｓ３７：Ｙｅｓ）、バス用命令バッファ２２ａ〜２２ｃの順序命令を破棄する（Ｓ４１）。これにより、バス用命令バッファ２２ａ〜２２ｃからバス９１〜９３への命令の出力が再開される（Ｓ３２）。一方、タイミング調整機能２３は、全てのバス用命令バッファ２２ａ〜２２ｃから順序命令が出力されていないと判断した場合（Ｓ３７：Ｎｏ）、バス用命令バッファ２２ａ〜２２ｃの順序命令を破棄しない。
【０１９４】
また、タイミング調整機能２３は、全てのバス用命令バッファ２２ａ〜２２ｃから周期命令が出力されており、かつタイマー２５の出力が１（ハイレベル）であるか否かを判断する（Ｓ３８、３９）。タイミング調整機能２３は、全てのバス用命令バッファ２２ａ〜２２ｃから周期命令が出力されており、かつタイマー２５の出力が１（ハイレベル）であると判断した場合に（Ｓ３８：Ｙｅｓ、Ｓ３９：Ｙｅｓ）、バス用命令バッファ２２ａ〜２２ｃの周期命令を破棄する（Ｓ４０）。これにより、バス用命令バッファ２２ａ〜２２ｃからバス９１〜９３への命令の出力が再開される（Ｓ３２）。一方、タイミング調整機能２３は、全てのバス用命令バッファ２２ａ〜２２ｃから周期命令が出力されていない、又は、タイマー２５の出力が１（ハイレベル）でないと判断した場合は（Ｓ３８：Ｎｏ又はＳ３９：Ｎｏ）、バス用命令バッファ２２ａ〜２２ｃの周期命令を破棄しない。
【０１９５】
以上に説明したように、本実施の形態５では、タイミング調整機能２３は、ダミー命令が順序命令である場合、タイマー２５からの通知信号の出力に関わらず、バス用命令バッファ２２ａ〜２２ｃの全てにおいて出力する命令が順序命令となるまで、出力する命令が順序命令となっているバス用命令バッファ２２ａからの命令の出力を抑止する。また、タイミング調整機能２３は、ダミー命令が周期命令である場合は、バス用命令バッファ２２ａ〜２２ｃの全てにおいて出力する命令が周期命令となり、かつタイマーから通知信号が出力されるまで、出力する命令が周期命令となっているバス用命令バッファ２２ａからの命令の出力を抑止する。
【０１９６】
これによれば、ダミー命令が順序命令である場合には、実施の形態１、２で説明したように（１）単純に命令の順序を守りたい場合における制御を実施することができ、ダミー命令が周期命令である場合は、実施の形態３、４で説明したように、（２）制御周期毎に命令を分けたい場合における制御を実施することができる。よって、（１）単純に命令の順序を守りたい場合の制御と、（２）制御周期毎に命令を分けたい場合の制御とを混在させることができる。
【０１９７】
（実施の形態５の変形例）
本実施の形態５においても、図１１に示す例と同様に、モジュール制御システム１は、外部計算機３とインターフェイスボード２と、を処理装置５を介して接続するようにしてもよい。
【０１９８】
この場合、図２０に示す例と同様に、外部計算機３に代えて処理装置５が周期命令検出部３４を有するようにしてもよい。処理装置５は、周期命令検出部３４によってＮ個先のダミー命令が検出された場合、命令メモリ５０に蓄積された命令の送信を停止する。また、処理装置５は、周期命令検出部３４によるクリア信号の受信に応じて、命令メモリ５０に蓄積された命令の送信を再開する。
【０１９９】
また、本実施の形態５においても、図１２に示すように、外部計算機３がコンパイラによってソースプログラム３１１を一括解釈することで生成した実行可能プログラムを処理装置５で実行することで、命令をインターフェイスボード２に対して送信するようにしてもよい。この場合、実行可能プログラムにＮ個先の周期命令の送信を検出した場合に命令の送信を停止する処理を含めておくことで、処理装置５のＣＰＵが、Ｎ個先の周期命令の送信に応じて命令の送信を停止するようにする。また、実行可能プログラムにインターフェイスボード２からのクリア信号に応じて命令の送信を再開する処理を含めておくことで、処理装置５のＣＰＵが、クリア信号に応じて命令の送信を再開するようにする。
【０２００】
＜実施の形態６＞
続いて、実施の形態６について説明する。以下、これまでの実施の形態１〜５と同様の内容については適宜省略して説明する。
【０２０１】
実施の形態５では、ダミー命令として、順序命令と周期命令を用意した。順序命令と周期命令は、通常は、送信制御機能２０を介して外部計算機３から送信されてきた順に、全てのバス用命令バッファ２２ａ〜２２ｃに分配されるため、バス用命令バッファ２２ａ〜２２ｃから同時期に出力されるダミー命令にとして順序命令と周期命令が混在することはない。しかしながら、電源雑音などにより処理ミスが生じてしまうと、バス用命令バッファ２２ａ〜２２ｃから同時期に出力されるダミー命令にとして順序命令と周期命令が混在した状態となる可能性がある。この場合、実施の形態５では、バス用命令バッファ２２ａ〜２２ｃからの命令の出力停止が解除されることはなく、フリーズ状態となってしまうという問題がある。そこで、本実施の形態６では、このフリーズ状態を回避する方法について説明する。
【０２０２】
図２４に示すように、本実施の形態６に係るインターフェイスボード２は、実施の形態５に係るインターフェイスボード２と比較して、さらに、ＯＲ回路２３８と、ＡＮＤ回路２３９とを有する点が異なる。
【０２０３】
本実施の形態６では、ダミー命令判断部２３３ａ〜２３３ｃのそれぞれの順序命令検出部２３３１は、さらに、ＯＲ回路２３８にも信号を出力する。また、ＯＲ回路２３６は、さらに、ＡＮＤ回路２３９にも信号を出力する。
【０２０４】
すなわち、ダミー命令判断部２３３は、対応するバス用命令バッファ２２から出力される命令が順序命令及び周期命令のいずれの命令であるかを判断する。ダミー命令判断部２３３は、命令が順序命令である場合には、ＯＲ回路２３８に対して停止信号を出力し、命令が周期命令である場合には、ＯＲ回路２３６に対して停止信号を出力する。
【０２０５】
ＯＲ回路２３８は、ダミー命令判断部２３３ａ〜２３３ｃのそれぞれの順序命令検出部２３３１から入力される信号の論理和演算により生成された信号を、ＡＮＤ回路２３９に対して出力する。ＯＲ回路２３８は、ダミー命令判断部２３３ａ〜２３３ｃの少なくとも１つから通知信号が入力されている場合、ＡＮＤ回路２３９に対して通知信号を出力する。一方、ＯＲ回路２３８は、ダミー命令判断部２３３a〜２３３ｃのいずれからも通知信号が入力されていない場合、ＡＮＤ回路２３９に対して通知信号を出力しない。
【０２０６】
ＡＮＤ回路２３９は、ＯＲ回路２３６及びＯＲ回路２３８のそれぞれから入力される信号の論理積演算により生成された信号を、外部計算機３に対して送信する。ＡＮＤ回路２３９は、ＯＲ回路２３６及びＯＲ回路２３８の全てから通知信号が入力されている場合、外部計算機３に対して通知信号を出力する。一方、ＡＮＤ回路２３９は、ＯＲ回路２３６及びＯＲ回路２３８の少なくとも１つから通知信号が入力されていない場合、外部計算機３に対して通知信号を出力しない。すなわち、ＡＮＤ回路２３９は、ダミー命令判断部２３３ａ〜２３３ｃのそれぞれにおけるダミー命令が順序命令であるか周期命令であるかの判断結果に不一致がある場合に通知信号を外部計算機３に送信する。
【０２０７】
より具体的には、ＯＲ回路２３８及びＡＮＤ回路２３９は、次に説明するように動作する。ＯＲ回路２３８は、ダミー命令判断部２３３ａ〜２３３ｃの少なくとも１つからハイレベルの信号が入力されている場合、ＡＮＤ回路２３９に対してハイレベルの信号を出力する。一方、ＯＲ回路２３８は、ダミー命令判断部２３３ａ〜２３３ｃの全てからローレベルの信号が入力されている場合、ＡＮＤ回路２３９に対してローレベルの信号を出力する。
【０２０８】
ＡＮＤ回路２３５は、ＯＲ回路２３６及びＯＲ回路２３８の全てからハイレベルの信号が入力されている場合、外部計算機３に対してハイレベルの信号を出力する。一方、ＡＮＤ回路２３５は、ＯＲ回路２３６及びＯＲ回路２３８の少なくとも１つからローレベルの信号が入力されている場合、外部計算機３に対してローレベルの信号を出力する。したがって、ハイレベルの信号は、通知信号として機能する。
【０２０９】
このＡＮＤ回路２３９からの通知信号は、外部計算機３に対して異常を通知する信号として機能する。このように、本実施の形態６では、ダミー命令判断部２３３ａ〜２３３ｃによる判断結果が不一致である場合に命令の外部計算機３に対して異常を通知する。
【０２１０】
これによれば、外部計算機３は、インターフェイスボード２のＡＮＤ回路２３９からの通知信号に応じて、インターフェイスボード２をリセットする等することができる。そのため、ダミー命令判断部２３３ａ〜２３３ｃの全てにおいて順序命令又は周期命令のいずれかが揃うことを合わせる構成において、インターフェイスボード２のフリーズ状態を解消することができる。
【０２１１】
（実施の形態６の変形例）
本実施の形態６においても、実施の形態５と同様に、外部計算機３とインターフェイスボード２とを処理装置５を介して接続するようにしてもよく、外部計算機３に代えて処理装置５が周期命令検出部３４を有するようにしてもよく、外部計算機３がコンパイラによってソースプログラム３１１を一括解釈することで生成した実行可能プログラムを処理装置５で実行するようにしてもよい。
【０２１２】
＜実施の形態７＞
続いて、実施の形態７について説明する。以下、実施の形態１と同様の内容については適宜省略して説明する。図２５を参照して、実施の形態７に係るモジュール制御システム１に係るインターフェイスボード２及び外部計算機３の構成について説明する。本実施の形態７に係るインターフェイスボード２は、実施の形態１に係るインターフェイスボード２と比較して、さらにエラー信号検出部２６と、命令発行情報収集部２７とを有する。
【０２１３】
エラー信号検出部２６は、バス９１〜９３を監視する。エラー信号検出部２６は、バス９１〜９３においてエラー発生を検出した場合に、エラーの発生を通知する通知信号を命令発行情報収集部２７に出力する。例えば、エラー信号検出部２６は、バス９１〜９３の通信規格においてエラーパケットが定義されている場合には、そのエラーパケットを検出したときにエラーが発生したと判断する。また、バス９１〜９３の通信規格においてエラーパケットが定義されていない場合には、例えば、モジュール４が通信に関する異常を検出したときにユーザ定義のエラーパケットを送信することで、そのエラーパケットを検出したときにエラーが発生したと判断するようにしてもよい。
【０２１４】
命令発行情報収集部２７は、エラー信号検出部２６からの通知信号に応じて、バス用命令バッファ２２ａ〜２２ｃのそれぞれに格納されている命令に関する情報を収集する。この情報の収集は、バス用命令バッファ２２ａ〜２２ｃの全てに対して実施してもよく、エラー信号検出部２６によって異常が検出されたバスに対応するバス用命令バッファ２２に対してのみ実施するようにしてもよい。そして、命令発行情報収集部２７は、エラーの発生を通知する通知情報を外部計算機３に対して送信する。この通知情報には、収集した情報が含まれる。この情報は、例えば、バス用命令バッファ２２ａ〜２２ｃのそれぞれに格納されている命令の種類及び数などを示す情報である。
【０２１５】
このように、本実施の形態７では、エラー信号検出部２６は、バス用命令バッファ２２ａ〜２２ｃとモジュール４群との間のバス９１〜９３の異常を検出する。そして、命令発行情報収集部２７は、エラー信号検出部２６によって異常が検出された場合に、バス用命令バッファ２２ａ〜２２ｃに格納された命令に関する情報を収集する。
【０２１６】
これによれば、外部計算機３は、どのような命令の送信状況でエラーが発生したのかを把握することができる。よって、例えば、外部計算機３は、インターフェイスボード２のバス用命令バッファ２２ａ〜２２ｃをリセットし、エラーが発生した命令から命令を再送する等の復旧処理を実行することが可能となる。
【０２１７】
（実施の形態７の変形例）
また、本実施の形態７においても、図１１と同様に、モジュール制御システム１は、外部計算機３とインターフェイスボード２とを処理装置５を介して接続するようにしてもよい。
【０２１８】
この場合、命令発行情報収集部２７は、処理装置５（図示せず）にも通知情報を送信する。処理装置５は、命令発行情報収集部２７からの通知信号に応じて、命令メモリ５０に蓄積された命令の送信を停止する。そして、外部計算機３は、インターフェイスボード２のバス用命令バッファ２２ａ〜２２ｃ及び処理装置５の命令メモリ５０をリセットし、エラーが発生した命令から命令を再送する等の復旧処理を実行すればよい。
【０２１９】
また、図１２と同様に、外部計算機３がコンパイラによってソースプログラム３１１を一括解釈することで生成した実行可能プログラムを処理装置５で実行することで、命令をインターフェイスボード２に対して送信するようにしてもよい。この場合、実行可能プログラムにインターフェイスボード２からの通知信号に応じて命令の送信を停止する処理を含めておくことで、処理装置５のＣＰＵが、通知信号に応じて命令の送信を停止するようにしてもよい。また、実行可能プログラムに異常時処理を含めておき、処理装置５のＣＰＵが、この実行可能プログラムの実行時に通知信号を受信した場合、異常時処理としてインターフェイスボード２のバス用命令バッファ２２ａ〜２２ｃをリセットし、エラーが発生した命令から命令を再送する等の復旧を行うようにしてもよい。
【０２２０】
＜実施の形態８＞
続いて、実施の形態８について説明する。以下、実施の形態１と同様の内容については適宜省略して説明する。
【０２２１】
図２６を参照して、実施の形態８に係るモジュール制御システム１に係るインターフェイスボード２及び外部計算機３の構成について説明する。図２６に示すように、本実施の形態８に係るインターフェイスボード２は、実施の形態１に係るインターフェイスボード２と比較して、トリガ命令検出機能２８と、ＯＲ回路２１４とをさらに有する点が異なる。また、本実施の形態８に係る送信制御機能２０は、実施の形態１に係る送信制御機能２０と比較して、ダミー命令生成部２０３をさらに有する点が異なる。
【０２２２】
トリガ命令検出機能２８は、送信制御機能２０に入力された命令がトリガ命令である場合は、ダミー命令生成部２０３及びＯＲ回路２１４に対してブロードキャスト指示信号を出力し、入力された命令がトリガ命令でない場合は、ブロードキャスト指示信号を出力しない。
【０２２３】
ＯＲ回路２１４は、ダミー命令検出機能２１及びトリガ命令検出機能２８のそれぞれから入力された信号の論理和演算により生成された信号を、命令振分部２０１及び命令分配部２０２に出力する。すなわち、本実施の形態８では、実施の形態１と比較して、ダミー命令検出機能２１から出力される信号は、命令振分部２０１及び命令分配部２０２ではなく、ＯＲ回路２１４に入力される。
【０２２４】
ＯＲ回路２１４は、ダミー命令検出機能２１及びトリガ命令検出機能２８の少なくとも１つからブロードキャスト信号が入力されている場合、命令振分部２０１及び命令分配部２０２に対してブロードキャスト信号を出力する。一方、ＯＲ回路２１４は、ダミー命令検出機能２１及びトリガ命令検出機能２８のいずれからもブロードキャスト指示信号が入力されていない場合、命令振分部２０１及び命令分配部２０２に対してブロードキャスト指示信号を出力しない。
【０２２５】
ダミー命令生成部２０３は、トリガ命令検出機能２８からブロードキャスト指示信号が入力された場合、ダミー命令を生成して命令振分部２０１及び命令分配部２０２に対して出力する。すなわち、トリガ命令検出機能２８からダミー命令生成部２０３に対するブロードキャスト指示信号は、ダミー命令生成指示信号として機能する。なお、この場合、命令分配部２０２は、ダミー命令生成部２０３から入力されたダミー命令をバス用命令バッファ２２ａ〜２２ｃに対して分配した後に、外部計算機３から入力されたトリガ命令をバッファ２２ａ〜２２ｃに対して分配する。
【０２２６】
より具体的には、例えば、次に説明する回路で実現されるダミー命令検出機能２１及びトリガ命令検出機能２８のそれぞれは、ハイレベルとローレベルのいずれかに切り替えられる信号をＯＲ回路２１４に対して出力する。トリガ命令検出機能２８は、送信制御機能２０に入力された命令がトリガ命令である場合は、ＯＲ回路２１４に対してハイレベルの信号を出力する。一方、トリガ命令検出機能２８は、送信制御機能２０に入力された命令がトリガ命令でない場合は、ＯＲ回路２１４に対してローレベルの信号を出力する。
【０２２７】
ＯＲ回路２１４は、ダミー命令検出機能２１及びトリガ命令検出機能２８の少なくとも１つから入力される信号がハイレベルの信号である場合、命令振分部２０１及び命令分配部２０２に対してハイレベルの信号を出力する。一方、ＯＲ回路２１４は、ダミー命令検出機能２１及びトリガ命令検出機能２８の両方から入力される信号がローレベルの信号である場合、命令振分部２０１及び命令分配部２０２に対してローレベルの信号を出力する。なお、実施の形態１で説明したように、この信号は、命令分配部２０２にはそのまま入力され、命令振分部２０１にはインバータ２０９によって反転された信号が入力される。ダミー命令生成部２０３は、トリガ命令検出機能２８からハイレベルの信号が入力された場合に、ダミー命令を生成する。すなわち、ハイレベルの信号は、ブロードキャスト指示信号に相当する。
【０２２８】
このような構成によれば、外部計算機３からトリガ命令が送信された場合、バス用命令バッファ２２ａ〜２２ｃの全てに対して、ダミー命令を格納するとともに、そのダミー命令の次にトリガ命令を格納することができる。これまでの実施の形態１〜７においても説明したように、バス用命令バッファ２２ａ〜２２ｃからの出力は、ダミー命令で待ち合わせを行うことで、命令の順序性を保証している。よって、ダミー命令の次の命令は、バス９１〜９３のそれぞれに同時に送信され、命令の実行タイミングを合わせることができる。よって、本実施の形態８では、外部計算機３の命令生成部３１がモジュール４での実行タイミングを合わせたい命令をトリガ命令として送信することで、その命令の実行タイミングを合わせることを可能としている。
【０２２９】
続いて、図２７を参照して、実施の形態８に係る命令の実行順序について説明する。図２７では、外部計算機３の命令生成部３１が命令Ａ〜Ｃ、トリガ命令、命令Ｄ〜Ｆの順に命令を生成する例について説明する。ここで、命令Ｄ、命令Ｆは、実行順序を守るべき命令であるものとする。
【０２３０】
この場合、外部計算機３のダミー命令生成機能３０は、命令Ｄと命令Ｆの間にダミー命令を挿入する。よって、外部計算機３は、図４に「通信経路９０のデータ」として示すように、命令Ａ、命令Ｂ、命令Ｃ、トリガ命令、命令Ｄ、命令Ｅ、ダミー命令、命令Ｆの順に、命令を順次１つずつ通信経路９０を介してインターフェイスボード２に対して送信する。
【０２３１】
また、この場合、ダミー命令生成部２０３は、命令Ｃとトリガ命令の前にダミー命令を挿入する。したがって、「時間１」〜「時間４」におけるバス９１〜９３の状態については、図４に示す例と同様となるため、説明を省略する。
【０２３２】
（時間５）
「時間４」でバス用命令バッファ２２ｂ、２２ｃの動作が再開されるため、全てのバス用命令バッファ２２ａ〜２２ｃのそれぞれは、ダミー命令の次に格納されたトリガ命令を、バス９１〜９３のそれぞれに送信する。そのため、バス９１〜９３のそれぞれに接続されるモジュール４でトリガ命令が同時に実行される。
【０２３３】
「時間６」以降の動作については、図４に示す例の「時間５」以降と同様の動作となるため、説明を省略する。このように、本実施の形態８では、実行順序を守るべき命令の追い越しを抑止するために行われるダミー命令の待ち合わせを利用して、トリガ命令を同時に実行することを可能としている。
【０２３４】
続いて、図２８を参照して、実施の形態８に係るインターフェイスボード２の送信制御機能２０、ダミー命令検出機能２１、及びトリガ命令検出機能２８の動作について説明する。実施の形態８に係るインターフェイスボード２の動作は、図１に示す実施の形態１に係るインターフェイスボード２の動作と比較して、さらに、ステップＳ２４〜Ｓ２６を有する点が異なる。
【０２３５】
すなわち、トリガ命令検出機能２８は、外部計算機３から受信した命令がトリガ命令であるか否かを判断する（Ｓ２４）。ダミー命令生成部２０３は、外部計算機３から受信した命令がトリガ命令であると判断された場合（Ｓ２４：Ｙｅｓ）、ダミー命令を生成してトリガ命令の前に挿入する（Ｓ２５）。送信制御機能２０は、命令分配部２０２によって、そのダミー命令とトリガ命令を全てのバスに分配する（Ｓ２６）。
【０２３６】
外部計算機３から受信した命令がトリガ命令でなくダミー命令である場合は（Ｓ２４：Ｎｏ、Ｓ２１：Ｙｅｓ）、ステップＳ２３が実行される。外部計算機３から受信した命令がトリガ命令及びダミー命令のいずれでもない場合は（Ｓ２４：Ｎｏ、Ｓ２１：Ｎｏ）、ステップＳ２２の処理が実行される。
【０２３７】
以上に説明したように、本実施の形態８では、送信制御機能２０は、入力された命令がトリガ命令である場合には、トリガ命令の前にダミー命令を挿入して、トリガ命令と共にバス用命令バッファ２２ａ〜２２ｃの全てに分配する。
【０２３８】
これによれば、バス用命令バッファ２２ａ〜２２ｃの全てにおいてダミー命令の出力が揃う仕組みを利用して、全てのバス９１〜９３に対してトリガ命令を同時に送信することで、トリガ命令を同時に実行することができる。
【０２３９】
（実施の形態８の変形例１）
本実施の形態８においても、図１１示す例と同様に、外部計算機３とインターフェイスボード２とを処理装置５を介して接続するようにしてもよい。また、本実施の形態３においても、図１２に示す例と同様に、外部計算機３がコンパイラによってソースプログラム３１１を一括解釈することで生成した実行可能プログラムを処理装置５で実行することで、命令をインターフェイスボード２に対して送信するようにしてもよい。
【０２４０】
（実施の形態８の変形例２）
以上の説明では、トリガ命令の実行タイミングを揃えるためのダミー命令を送信制御機能２０において生成して挿入するようにしていたが、これに限られない。外部計算機３において、ダミー命令生成機能３０がダミー命令を生成して、トリガ命令の前に挿入するようにしてもよい。これによれば、送信制御機能２０においてダミー命令生成部２０３は不要となる。
【０２４１】
＜実施の形態９＞
続いて、実施の形態９として、モジュール制御システム１のより具体的な第１の構成例について説明する。
【０２４２】
図２９〜図３１に示すように、実施の形態９に係るモジュール制御システム１は、インターフェイスボード２と、外部計算機３と、複数のモジュール４と、処理装置５と、サーバー６とを有する。
【０２４３】
図２９に示すように、サーバー６は、コミュニティー提供部６１と、オンラインショップ提供部６２と、記憶部６３とを有する。サーバー６は、インターネットを介して外部計算機３と接続される。
【０２４４】
コミュニティー提供部６１は、外部計算機３に対してインターネットコミュニティーサービスを提供する。オンラインショップ提供部６２は、外部計算機３に対してオンラインショップサービスを提供する。
【０２４５】
記憶部６３は、モジュールデータ６０１及び設計データ６０２等が格納される。すなわち、記憶部６３は、これらのデータ６０１、６０２を格納可能な記憶装置を含む。記憶装置は、例えば、メモリ及びハードディスク等である。モジュールデータ６０１は、モジュール４のデータである。モジュールデータ６０１は、例えば、モジュール４の形状、重さ、及び物理特性などを示す。モジュールデータ６０１は、モジュール４の種類だけ用意される。設計データ６０２は、複数のモジュール４によって構築されるガジェットの仮想モデルを示すデータである。
【０２４６】
これにより、外部計算機３のユーザは、コミュニティー提供部６１によって提供されるコミュニティーを利用することで、例えば、サーバー６において他のユーザとの間で、自身が作成した設計データ６０２を共有することができる。また、外部計算機３のユーザは、オンラインショップ提供部６２によって提供されるオンラインショップから設計データ６０２、設計データを作成するためのソフトウェア、及びモジュール４等を購入することができる。
【０２４７】
図２９に示すように、外部計算機３は、設計機能３３０と、ＵＳＢ（Universal Serial Bus）通信機能３３７とを有する。設計機能３３０は、記憶機能３３１と、ＧＵＩ（Graphical User Interface）ベースのモジュール組立て機能３３２と、表示機能３３３と、物理シミュレーション機能３３４と、プログラミング環境３３５と、制御設計ツール３３６とを有する。外部計算機３は、これらの機能３３１〜３３６を連携させた設計機能３３０を有することで、ユーザが快適にガジェット及びそれを動作させるプログラムを設計できる環境を提供している。
【０２４８】
記憶機能３３１は、サーバー３から取得したモジュールデータ６０１及び設計データ６０２等が格納される。記憶機能３３１は、これらのデータ６０１、６０２を格納可能な記憶装置を含む。記憶装置は、例えば、メモリ及びハードディスク等である。
【０２４９】
モジュール組立て機能３３２は、ユーザがＧＵＩベースで仮想的にモジュール４を組み立ててガジェットの仮想モデルを作成する機能を提供する。このようにして作成された仮想モデルを示す設計データ６０２が記憶機能３３１に格納される。ユーザは、外部計算機３の入力装置を操作することによって仮想モデルを作成することができる。
【０２５０】
表示機能３３３は、モジュール４及びガジェットの仮想モデルを３次元コンピュータグラフィックスで表示する。より具体的には、表示機能３３３は、外部計算機３のＣＰＵが、外部計算機３が有する表示装置に対して、それらの画像を表示することによって実現される。
【０２５１】
物理シミュレーション機能３３４は、設計データ６０２が示す仮想モデルによって、ガジェットの動作シミュレーションを実施する機能を提供する。物理シミュレーション機能３３４は、ガジェットを構成するモジュール４のモジュールデータ６０１を利用することで、モジュール４の形状などを考慮した動作シミュレーションを実施することが可能である。
【０２５２】
プログラミング環境３３５は、上述のソースプログラム３１１を作成するための環境をユーザに対して提供するものである。プログラミング環境３３５は、例えば、統合開発環境である。ユーザは、プログラミング環境３３５を利用して、外部計算機３の入力装置を操作することによってソースプログラム３１１を作成する。
【０２５３】
制御設計ツール３３６は、複数のモジュール４を制御するソースプログラム３１１の自動生成ツールである。例えば、制御設計ツール３３６は、設計データ６０２に基づいて、ソースプログラム３１１を自動生成するツールであってもよい。
【０２５４】
ＵＳＢ通信機能３３７は、インターフェイスボード２との間で、ＵＳＢ通信規格による通信を実現する機能である。すなわち、本実施の形態９では、外部計算機３とインターフェイスボード２とを接続する通信経路９０がＵＳＢバスである例について説明する。
【０２５５】
図３０に示すように、処理装置５は、処理機能５１と、ＵＳＢ通信機能５２と、ＳＰＩ通信機能５３と、電圧変換部５４と、アナログ入出力部５５と、デジタル入出力部５６とを有する。
【０２５６】
処理機能５１は、処理装置５を統括的に制御する。処理機能５１は、ＣＰＵ及びメモリ等（図示せず）を有し、ＣＰＵがメモリに格納されたプログラムを実行することで、処理装置５としての機能を実現する。例えば、処理機能５１は、ＵＳＢ通信機能５２を介して外部計算機３から命令を受信する。処理機能５１は、受信した命令を、ＳＰＩ（Serial Peripheral Interface）通信機能５３を介してインターフェイスボード２に送信する。この場合、処理機能５１が有するメモリは、命令メモリ５０として機能する。また、処理機能５１は、メモリに格納された実行可能プログラムをＣＰＵによって実行することで、プログラム実行部３０１としても機能することができる。
【０２５７】
ＵＳＢ通信機能５２は、外部計算機３との間で、ＵＳＢ通信規格による通信を実現する機能である。ＳＰＩ通信機能５３は、インターフェイスボード２との間で、ＳＰＩ通信規格による通信を実現する機能である。すなわち、本実施の形態９では、処理装置５とインターフェイスボード２とを接続する通信経路９５がＳＰＩバスである例について説明する。
【０２５８】
電圧変換部５４は、バッテリ８０から供給される電圧をインターフェイスボード２に対して供給可能な電圧に変換する。Ｖｄｄ出力部５４１は、電圧変換部５４によって変換された電圧を、電源電圧としてインターフェイスボード２に対して供給する。Ｇｎｄ出力部５４２は、グランド電圧をインターフェイスボード２に対して供給する。
【０２５９】
アナログ入出力部５５は、アナログ入出力部５５のコネクタに接続される装置から任意のアナログ信号の入力を受ける。アナログ入出力部５５は、入力されたアナログ信号を処理機能５１及びインターフェイスボード２に出力する。デジタル入出力部５６は、デジタル入出力部５６のコネクタに接続される装置から任意のデジタル信号の入力を受ける。デジタル入出力部５６は、入力されたデジタル信号を処理機能５１及びインターフェイスボード２に出力する。
【０２６０】
これによれば、インターフェイスボード２に対して外部の装置からのアナログ信号及びデジタル信号を処理装置５のコネクタを介して供給することが可能となる。そのため、例えば、インターフェイスボード２上に処理装置５を重ねて配置したとしても、インターフェイスボード２への外部の装置からのアナログ信号及びデジタル信号の供給が阻害されることはない。
【０２６１】
図３０に示すように、インターフェイスボード２は、送信機能２００と、受信機能２２０と、ＳＰＩ通信機能２９０と、複数のＩ２Ｃ通信機能２９１ａ〜２９１ｄと、コネクタ２９２ａ〜２９２ｈを有する。
【０２６２】
送信機能２００及び受信機能２２０については、これまでの実施の形態１〜８で説明した通りである。ＳＰＩ通信機能２９０は、処理装置５との間で、ＳＰＩ通信規格による通信を実現する機能である。Ｉ２Ｃ通信機能２９１ａ〜２９１ｄのそれぞれは、モジュール４との間で、コネクタ２９２ａ〜２９２ｈを介したＩ２Ｃ通信規格による通信を実現する機能である。図３０では、４つのコネクタ２９２ａ〜２９２ｄのそれぞれに対してモジュール４が接続される例について説明する。４つのコネクタ２９２ａ〜２９２ｄのそれぞれに対して複数のモジュール４が接続されることで、インターフェイスボード２及び複数のモジュール４の内部の信号線が接続されてバス９１〜９４が形成される。コネクタ２９２ａ〜２９２ｈは、典型的には、４ピンのコネクタである。この場合、バス９１〜９４のそれぞれは、２本の信号線と、１本の電源電圧線と、１本のグランド電圧線とを含む。電源電圧線には、Ｖｄｄ出力部５４１から出力された電源電圧が供給される。グランド電圧線には、Ｇｎｄ出力部５４２から出力されたグランド電圧が供給される。
【０２６３】
上述したように、送信機能２００は、送信制御機能２０を介して処理装置５から受信した命令をバス９１〜９４に振り分け又は分配して送信することが可能である。送信機能２００、受信機能２２０、ＳＰＩ通信機能２９０、Ｉ２Ｃ通信機能２９１ａ〜２９１ｄは、例えば、マイコン２０００によって実現される。
【０２６４】
図３１に示すように、モジュール４は、マイコン４０と、コネクタ４８とを有する。上述したように、インターフェイスボード２のコネクタ２９２ａ〜２９２ｄと、複数のモジュール４のコネクタ４８とが接続されることで、バス９１〜９４が形成される。マイコン４０は、インターフェイスボード２からコネクタ４８を介して供給される電源電圧及びグランド電圧によって動作する。また、マイコン４０は、インターフェイスボード２からコネクタ４８を介して供給される信号によって命令を受信し、実行する。
【０２６５】
ここで、モジュール４は、様々な態様をとることができる。例えば、図３１に示すように、センサ４１、ＡＣ（Alternating Current）モータ４３、ＤＣ（Direct Current）モータ４４、アナログ入出力モジュール４５、デジタル入出力モジュール４６、通信規格対応モジュール４７のうち、いずれか１つ以上を有するようにしてよい。センサ４１については、実施の形態１で説明した通りである。
【０２６６】
ＡＣモータ４３は、ＡＣ電源８１から供給される交流電流によって駆動される。ＤＣモータ４４は、バッテリ８０から供給される直流電流によって駆動される。このように、モジュール４内において、バス９１〜９４を介して供給される電力では電力不足となる装置が存在する場合には、バッテリ８０及びＡＣ電源８１からその装置に対して直接電力を供給するようにしてもよい。また、図３１に示すように、複数のモジュール４は、ＡＣモータ４３を有するモジュール４と、ＤＣモータ４４を有するモジュール４とを混在させる例に限られない。ＡＣモータ４３を有するモジュール４と、ＤＣモータ４４を有するモジュール４のうち、いずれか１つのみを利用してもよい。また、図３１に示すように、ＡＣ電源８１からの交流電流をＡＣ／ＤＣ変換器８２によって直流電流に変換してモジュール４内の装置（図３１の例ではアナログ入出力モジュール４５）に供給するようにしてもよい。
【０２６７】
アナログ入出力モジュール４５は、外部の装置に対してアナログ信号による入出力を行う。デジタル入出力モジュール４６は、外部の装置に対してデジタル信号による入出力を行う。このように、モジュール４は、外部の装置と接続し、その外部の装置との間で任意の信号を送受信することで動作するものであってもよい。
【０２６８】
通信規格対応モジュール４７は、外部の装置と任意の通信規格による通信によって情報を送受信する。なお、この通信は、有線であってもよく、無線であってもよい。このように、モジュール４は、外部の装置と情報を送受信することで動作するものであってもよい。
【０２６９】
続いて、実施の形態９に係るモジュール制御システム１の動作例について説明する。図３２を参照して、実施の形態９に係るモジュール制御システム１の動作について説明する。なお、ここでは、制御周期（例えば１０ｍｓｅｃ）毎の期間を「制御期間」として示している。
【０２７０】
図３２に示すように、第１の制御期間で、処理装置５からＳＰＩ通信によってインターフェイスボード２に対して、周期命令、センサ値取得命令Ａ〜Ｆ、及びモータ駆動命令Ａ〜Ｇが送信されるものとする。
【０２７１】
上述したように、タイミング調整機能２３によって各バス９１〜９４に対する命令が周期命令となるまで待ち合わせが行われる。そのため、周期命令に続くセンサ値取得命令Ａ〜Ｆ及びモータ駆動命令Ａ〜Ｇが、各バス９１〜９４において周期命令がそろったタイミングから一斉に送信され、モジュール４で実行される。
【０２７２】
この際、センサ値取得命令Ａ〜Ｆによって取得されたセンサ値Ａ〜Ｆのそれぞれは、随時、モジュール４からＳＰＩ通信によって処理装置５に送信される。さらに、このセンサ値は、処理装置５から外部計算機３に送信される。外部計算機３は、モジュール４から送信されたセンサ値Ａ〜Ｆに基づいて、次の第２の制御周期におけるモータ駆動命令Ａ〜Ｉにおける指令値を計算する。
【０２７３】
図３２に示すように、第２の制御期間で、処理装置５からＳＰＩ通信によってインターフェイスボード２に対して、周期命令、センサ値取得命令Ａ〜Ｅ、及びモータ駆動命令Ａ〜Ｉが送信されるものとする。
【０２７４】
上述と同様に、タイミング調整機能２３によって各バス９１〜９４に対する命令が周期命令となるまで待ち合わせが行われる。そのため、周期命令に続くセンサ値取得命令Ａ〜Ｅ及びモータ駆動命令Ａ〜Ｉが、各バス９１〜９４において周期命令がそろったタイミングから一斉に送信され、モジュール４で実行される。
【０２７５】
このように、周期命令を利用した制御では、前述したとおり、制御周期毎に命令を分けることができる。そして、それらの命令を繰り返し実行することでガジェット（モジュール４）を制御することができる。これは、例えば、図３２に示すようなセンサ値に基づくモータ制御に好適である。モータ制御では、センサ値の取得と、そのセンサ値によるモータの駆動とが繰り返される。それに対して、周期命令を利用した制御によれば、制御周期毎に、センサ値の取得と、モータの駆動とを繰り返すことができ、好適なモータ制御を実現することができる。また、ここで説明したように、制御期間において、モータ駆動命令と、その次の制御期間におけるモータ駆動命令の生成に利用するためのセンサ値を取得するセンサ値取得命令を同時に実行することで、各制御周期でモータ駆動を連続的に実施することができる。
【０２７６】
このように、これまでの実施の形態１〜８で説明した内容は、実施の形態９に係るモジュール制御システム１のように開発環境が組み込まれた統合的なシステムにおいても阻害なく実施することが可能である。
【０２７７】
＜実施の形態１０＞
続いて、実施の形態１０について説明する。実施の形態１０として、モジュール制御システム１のより具体的な第２の構成例について説明する。図３３〜図３５を参照して、実施の形態１０に係るモジュール制御システム１の構成について説明する。図３３では、サーバー６を図示していないが、当然に、実施の形態１０に係るモジュール制御システム１においても、サーバー６を有するようにしてもよい。
【０２７８】
図３３に示すように、実施の形態１０に係る外部計算機３は、実施の形態９に係る外部計算機３と比較して、接続モジュール一覧表示機能３４０をさらに有するという点が異なる。接続モジュール一覧表示機能３４０は、インターフェイスボード２に接続される複数のモジュール４の一覧を表示機能３３３によって表示する。
【０２７９】
図３３に示すように、実施の形態１０に係る処理装置５は、実施の形態９に係る処理装置５と比較して、Ｉ２Ｃ通信機能５７と、割り込み機能５８と、Ｖｄｄ出力機能５４３とをさらに有するという点が異なる。
【０２８０】
Ｉ２Ｃ通信機能５７は、インターフェイスボード２との間で、Ｉ２Ｃ通信規格による通信を実現する機能である。すなわち、本実施の形態１０では、ＳＰＩ通信規格による通信経路９５とは別に命令を送信する通信経路を有している。
【０２８１】
割り込み機能５８は、インターフェイスボード２からの割り込み信号を受信する機能である。
【０２８２】
Ｖｄｄ出力部５４３は、電圧変換部５４によって変換された電圧を、電源電圧としてインターフェイスボード２に対して供給する。本実施の形態１０に係る電圧変換部５４は、バッテリ８０から供給される電圧を変換し、第１の電圧と、第１電圧とは異なる第２の電圧とを生成する。そして、Ｖｄｄ出力部５４１は、第１の電圧をインターフェイスボード２に対して供給し、Ｖｄｄ出力部５４２は、第２の電圧をインターフェイスボード２に対して供給する。
【０２８３】
接続モジュール一覧取得機能５１０は、インターフェイスボード２に接続される複数のモジュール４の一覧を取得し、その複数のモジュール４の一覧を示す一覧情報を外部計算機３に対して送信する。これにより、外部計算機３の接続モジュール一覧表示機能３４０は、処理装置５から受信した一覧情報に基づいて、複数のモジュール４の一覧を表示することができる。これによれば、ユーザは、ガジェットを構成する複数のモジュール４を容易に確認することができる。
【０２８４】
なお、接続モジュール一覧取得機能５１０は、複数のモジュール４のそれぞれに対して、モジュール情報返信命令を送信することで、複数のモジュール４の一覧を取得する。複数のモジュール４のそれぞれは、処理装置５からのモジュール情報返信命令に応じて、自身を特定する情報を処理装置５に対して返信する。この情報は、例えば、各モジュール４に対して一意に割り当てられたモジュールＩＤである。この場合、複数のモジュール４の一覧として、複数のモジュール４のモジュールＩＤの一覧が取得される。
【０２８５】
このモジュール４の一覧の取得は、例えば、上述の実行可能プログラムにモジュール情報返信命令を送信する処理を含めておき、処理機能５１がその実行可能プログラムを実行することで実現する。
【０２８６】
図３４に示すように、本実施の形態１０に係るインターフェイスボード２は、実施の形態９に係るインターフェイスボード２と比較して、さらに、複数の割込み検出部２５０ａ〜２５０ｄと、ＯＲ回路２５１と、停止命令機能２６０と、複数のエラー検出部２６１ａ〜２６１ｄと、複数の過電流検出部２６２ａ〜２６２ｄと、過電流検出部２６３と、選択回路２９３、２９４と、振分回路２９５と、複数の電圧変換部２９６ａ〜２９６ｄとを有する。また、本実施の形態１０に係るインターフェイスボード２は、実施の形態９に係るインターフェイスボード２と比較して、Ｉ２Ｃ通信機能２９１ｄに代えて、ＲＳ４８５通信機能２９７を有する。
【０２８７】
複数の割込み検出部２５０ａ〜２５０ｄのそれぞれは、バス９１〜９４のそれぞれに送信される割り込みパケットを検出する。複数の割込み検出部２５０ａ〜２５０ｄのそれぞれは、割り込みパケットを検出した場合、ＯＲ回路２５１に対して割り込み信号を出力する。ＯＲ回路２５１は、複数の割込み検出部２５０ａ〜２５０ｄのそれぞれからの論理和演算により生成された信号を処理装置５の割り込み機能５８に対して送信する。すなわち、ＯＲ回路２５１は、複数の割込み検出部２５０ａ〜２５０ｄの少なくとも１つから割り込み信号が入力されている場合、処理装置５の割り込み機能５８に対して割り込み信号を送信する。例えば、モジュール４は、緊急に対処が必要な事象を検出した場合、割り込みパケットを送信する。これによれば、処理機能５１は、その割り込みパケットに基づく割り込み信号を割り込み機能５８を介して受信したときに、その事象に対して迅速に対処することができる。
【０２８８】
停止命令機能２６０は、エラー検出部２６１ａ〜２６１ｄによってエラーが検出された場合、及び、過電流検出部２６２ａ〜２６２ｄ、２６３によって過電流が検出された場合、処理装置５に対して停止命令を送信する。処理装置５は、インターフェイスボード２の停止命令機能２６０からの停止命令に応じて、異常時処理を実施する。異常時処理は、例えば、インターフェイスボード２をリセットする又はガジェット（複数のモジュール４）を停止させる等である。これによれば、ガジェットの誤動作を防止することができる。
【０２８９】
複数のエラー検出部２６１ａ〜２６１ｄのそれぞれは、バス９１〜９４のそれぞれに送信されるエラーパケットを、上述のエラーとして検出する。複数の過電流検出部２６２ａ〜２６２ｄのそれぞれは、バス９１〜９４のそれぞれに対して電圧変換部２９６ａ〜２９６ｄのそれぞれから供給される信号の過電流を、上述のエラーとして検出する。過電流検出部２６３は、バス９１〜９４のそれぞれに対してＶｄｄ出力部５４１、５４３から選択回路２９３を介して電源電圧とともに供給される電流の過電流を、上述のエラーとして検出する。
【０２９０】
選択部２９３は、Ｖｄｄ出力部５４１から供給される電圧と、Ｖｄｄ出力部５４３から供給される電圧のいずれか１つを選択して、電源電圧としてバス９１〜９４のそれぞれに供給する。ここで、どちらの電圧が選択されるかは、処理装置５の処理機能５１が選択部２９３に対して入力する信号によって切り替えられる。処理機能５１は、使用されるモジュール４の動作電圧に応じて、適切な電圧を選択する。
【０２９１】
選択部２９４は、処理装置５のＩ２Ｃ通信機能５７から送信された命令と、インターフェイスボード２のＩ２Ｃ通信機能２９１ａから送信された命令のいずれかを選択してバス９１に対して送信する。ここで、どちらの命令が選択されるかは、処理装置５の処理機能５１が選択部２９４に対して入力する信号によって切り替えられる。これによれば、モジュール４の動作をデバッグしたい場合に、送信機能２００を経由せず、直接任意の命令をＩ２Ｃ通信機能５７経由でモジュール４に対して送信することができる。
【０２９２】
振分部２９５は、送信機能２００から送信された命令を、Ｉ２Ｃ通信機能２９１ｃ及びＲＳ４８５通信機能２９７のいずれか１つに振り分ける。これによれば、複数のモジュール４において異なる通信規格のモジュール４を混在させることが可能となる。例えば、Ｉ２Ｃ通信に対応したモジュール４だけでなく、ＲＳ４８５通信に対応したモジュール４も利用したい場合、コネクタ２９２ｃの先ではなく、コネクタ２９２ｄの先にそのモジュール４を接続する。これによれば、コネクタ２９２ａ、２９２ｂに接続されたＩ２Ｃ通信に対応したモジュール４と、コネクタ２９２ｄに接続されたＲＳ４８５通信に対応したモジュール４とから構成されるガジェットを制御することができる。なお、全てＩ２Ｃ通信に対応したモジュール４でガジェット構成する場合には、コネクタ２９２ｄの先ではなく、コネクタ２９２ｃの先にモジュール４を接続すればよい。ここで、振分部２９５がＩ２Ｃ通信機能２９１ｃ及びＲＳ４８５通信機能２９７のどちらに命令を振り分けるかは、処理装置５の処理機能５１が振分部２９５に対して入力する信号によって切り替えられる。
【０２９３】
電圧変換部２９６ａ〜２９６ｄのそれぞれは、選択部２９３から入力される電圧を、バス９１〜９４のそれぞれの信号に利用可能な電圧に変換する。
【０２９４】
ＲＳ４８５通信機能２９２は、モジュール４との間でＲＳ４８５通信規格による通信を実現する機能である。ＲＳ４８５通信機能２９７は、コネクタ２９２ｄに接続されたバス９４に対する通信を実現する。
【０２９５】
図３５に示すように、モジュール４は、マイコン４０と、モータ４２と、コネクタ４８と、エラー検知部４９とを有する。コネクタ４８及びモータ４２については、これまでの実施の形態１〜９で説明した通りである。
【０２９６】
マイコン４０は、処理機能４００と、記憶装置４１０とを有する。処理機能４００は、動作制御部４０１と、エラー対応制御部４０２、４０３とを有する。
【０２９７】
動作制御部４０１は、モータ４２の異常が検出されていない通常状態におけるモータ４２の制御を実行する。エラー対応制御部４０２、４０３は、モータ４２の異常が検出された異常状態におけるモータ４２の制御を実行する。
【０２９８】
ここで、記憶装置４１０は、異常状態において、エラー対応制御部４０２及びエラー対応制御部４０３のいずれによる制御を実行するか否かを示す選択情報が予め格納される。処理機能４００は、異常状態では、記憶装置４１０に格納された選択情報に応じて、エラー対応制御部４０２及びエラー対応制御部４０３のいずれによる制御を実施するかを決定し、決定した制御を実施する。これによれば、例えば、モジュール４が利用されるガジェットに応じて、異常状態において、エラー対応制御部４０２及びエラー対応制御部４０３のいずれによる制御を実行するかを変更することができる。
【０２９９】
エラー検知部４９は、上述のモータ４２の異常を検出する。エラー検知部４９は、モータ４２の異常を検出した場合、処理機能４００に通知する。
【０３００】
続いて、モジュール制御システム１のより具体的な第２の動作例について説明する。図３６を参照して、実施の形態１０に係るモジュール制御システム１の動作について説明する。なお、ここでは、制御周期（例えば１０ｍｓｅｃ）毎の期間を「制御期間」として示している。
【０３０１】
図３６に示すように、図３２を参照して実施の形態９で説明した例と同様に、第１の制御期間で、処理装置５からＳＰＩ通信によってインターフェイスボード２に対して、周期命令、センサ値取得命令Ａ〜Ｆ、及びモータ駆動命令Ａ〜Ｇが送信されるものとする。
【０３０２】
上述したように、タイミング調整機能２３によって各バス９１〜９４に対する命令が周期命令となるまで待ち合わせが行われる。そのため、周期命令に続くセンサ値取得命令Ａ〜Ｆ及びモータ駆動命令Ａ〜Ｇが、各バス９１〜９４において周期命令がそろったタイミングから一斉に送信が開始される。
【０３０３】
この際に、センサ値取得命令Ａ〜Ｆ及びモータ駆動命令Ａ〜Ｇの送信途中で異常が検出され、停止命令機能２６０が停止命令を処理装置５に対して送信したものとする。この場合、処理装置５は、この異常に応じた制御を実行する。例えば、図３６に示すように、モータ４２を停止させるモータ駆動命令をモジュールに対して送信するようにしてもよい。
【０３０４】
そして、処理装置５は、インターフェイスボード２をリセットする等して復旧した後に、第２の制御期間から、通常通り、センサ値取得命令及びモータ駆動命令の送信を再開してよい。
【０３０５】
このように、周期命令を利用した制御では、これまでにも説明したように、制御周期毎に命令を分けることができる。そして、それらの命令を繰り返し実行することでガジェット（モジュール４）を制御することができる。本実施の形態１０では、この際に異常が発生した場合であっても、停止命令機能２６０によって異常を検出し、処理装置５に通知することができる。よって、上述したように、処理装置５は、インターフェイスボード２の停止命令機能２６０からの通知に応じて、異常状態を復旧し、制御を再開することができる。
【０３０６】
このように、これまでの実施の形態１〜８で説明した内容は、実施の形態１０に係るモジュール制御システム１のように各種異常検出機能が組み込まれたシステムにおいても阻害なく実施することが可能である。
【０３０７】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【０３０８】
上述の実施の形態１〜１０では、全てのバス用命令バッファ２２においてダミー命令がそろった場合には、ダミー命令を破棄していたが、これに限られない。全てのバス用命令バッファ２２においてダミー命令がそろった場合においても、ダミー命令を破棄せずに、モジュール４に対して送信するようにしてもよい。この場合、ダミー命令は、モジュール４の制御に影響を与えない命令とすればよい。例えば、この命令は、モジュール４が命令を受信しても何も処理を実行しない命令などとすればよい。しかしながら、好ましくは、上述したようにダミー命令を破棄することで、無駄な命令の送信を無くすことができる。
【０３０９】
また、上述の実施の形態１〜１０において、実行順序を守るべき命令が存在した場合であっても、それらの命令が同一のバスに対して送信される命令である場合には、それらの命令の間にダミー命令を挿入しないようにしてもよい。同一のバスに対して送信される命令では、命令の追い越しが発生することはないからである。例えば、実行順序判断部３２は、対応データに基づいて、ｉ行目の命令とｉ−１行目以前の命令の送信対象がいずれも同一のバスであると判断した場合には、それらの命令を順序に制約があると判断しないようにしてもよい。
【０３１０】
上述の実施の形態１〜８では、送信制御機能２０、ダミー命令検出機能２１、及びタイミング調整機能２３の具体例として回路で構成される例について説明したが、これに限られない。それらの機能のうち、少なくとも一部は、インターフェイスボード２のマイコン２０００が有するＣＰＵによって、その少なくとも一部の機能を実行させるプログラムを実行することで実現してもよい。すなわち、実施の形態１〜８も、実施の形態９において説明したように、送信機能２００及び受信機能２２０をマイコン２０００によって実現するようにしてもよい。
【０３１１】
また、上述の実施の形態１〜１０では、インターフェイスボード２とモジュール４との間の通信経路における接続方式がバス接続である例について説明したが、これに限られない。例えば、インターフェイスボード２とモジュール４との間の通信経路における接続方式は、ピアツーピア接続であってもよい。また、この場合、通信経路は、有線であってもよく、無線であってもよい。
【０３１２】
この場合であっても、以下の２つの条件を満たすのであれば、図１０を参照して説明した課題が生じるからである。
条件１：（インターフェイスボード２とモジュール４の間の通信経路数  ×  その通信経路の速度）  ＜  外部計算機３とインターフェイスボード２との間の通信経路の速度
条件２：インターフェイスボード２とモジュール４の間の通信経路の間で、送信される命令数に偏りがある
【０３１３】
しかしながら、ピアツーピア接続の場合は１つの通信経路を介して１つのモジュール４のみが接続されるが、バス接続の場合は１つの通信経路を介して複数のモジュール４が接続される。そのため、バス接続の場合は、条件１だけでも上述の課題が顕在化する。したがって、実施の形態１〜１０では、上述したようにインターフェイスボード２とモジュール４の間の通信経路における接続方式をバス接続とすると効果的である。
【符号の説明】
【０３１４】
１  モジュール制御システム
２  インターフェイスボード
３  外部計算機
４  モジュール
５  処理装置
６  サーバー
２０  送信制御機能
２１  ダミー命令検出機能
２２ａ、２２ｂ、２２ｃ  バス用命令バッファ
２３  タイミング調整機能
２４  オーバーフロー検出部
２５  タイマー
２６  エラー信号検出部
２７  命令発行情報収集部
２８  トリガ命令検出機能
３０  ダミー命令生成機能
３１  命令生成部
３２  実行順序判断部
３３  ダミー命令検出部
３４  周期命令検出部
４０  マイコン
４１  センサ
４２  モータ
４３  ＡＣモータ
４４  ＤＣモータ
４５  アナログ入出力モジュール
４６  デジタル入出力モジュール
４７  通信規格対応モジュール
４８  コネクタ
４９  エラー検知部
５０  命令メモリ
５１  処理機能
５２  ＵＳＢ通信機能
５３  ＳＰＩ通信機能
５４  電圧変換部
５５  アナログ入出力部
５６  デジタル入出力部
５７  Ｉ２Ｃ通信機能
５８  割り込み機能
６１  コミュニティー提供部
６２  オンラインショップ提供部
６３  記憶部
８０  バッテリ
８１  ＡＣ電源
８２  ＡＣ／ＤＣ変換器
９０  通信経路
９１、９２、９３  バス
２００  送信機能
２０１  命令振分部
２０２  命令分配部
２０３  ダミー命令生成部
２０９  インバータ
２１１  順序命令検出部
２１２  周期命令検出部
２１３、２１４、２３６、２３８、２３３３  ＯＲ回路
２２０  受信機能
２２１  受信制御機能
２２２ａ、２２２ｂ、２２２ｃ  受信バス用命令バッファ
２３１ａ、２３１ｂ、２３１ｃ  ダミー命令検出部
２３３ａ、２３３ｂ、２３１ｃ  ダミー命令判断機能
２３２、２３４、２３５、２３９  ＡＮＤ回路
２３７  選択回路
２５０ａ、２５０ｂ、２５０ｃ、２５０ｄ  割込み検出部
２６１ａ、２６１ｂ、２６１ｃ、２６１ｄ  エラー検出部
２６２ａ、２６２ｂ、２６２ｃ、２６２ｄ、２６３  過電流検出部
２５１  ＯＲ回路
２９０  ＳＰＩ通信機能
２９１ａ、２９１ｂ、２９１ｃ、２９１ｄ  Ｉ２Ｃ通信機能
２９２ａ、２９２ｂ、２９２ｃ、２９２ｄ、２９２ｅ、２９２ｆ、２９２ｇ、２９２ｈ  コネクタ
２９３、２９４  選択部
２９５  振分部
２９７  ＲＳ４８５通信機能
３００  ＣＰＵ
３０１  メモリ
３０２  ハードディスク
３０３  通信コントローラ
３１０  インタプリタ
３１１  ソースプログラム
３２０  プログラム生成部
３２１  プログラム実行部
３３０  設計機能
３３１  記憶機能
３３２  モジュール組立て機能
３３３  表示機能
３３４  物理シミュレーション機能
３３５  プログラミング環境
３３６  制御設計ツール
３３７  ＵＳＢ通信機能
３４０  接続モジュール一覧表示機能
４００  処理機能
４０１  動作制御部
４０２、４０３  エラー対応制御部
４１０  記憶装置
５１０  接続モジュール一覧取得機能
５４１、５４３  Ｖｄｄ出力部
５４２  Ｇｎｄ出力部
６０１  モジュールデータ
６０２  設計データ
２０００  マイコン
２３３１  順序命令検出部
２３３２  周期命令検出部
【図１】
2016075721.tif 000003
【図２】
2016075721.tif 000004
【図３】
2016075721.tif 000005
【図４】
2016075721.tif 000006
【図５】
2016075721.tif 000007
【図６】
2016075721.tif 000008
【図７】
2016075721.tif 000009
【図８】
2016075721.tif 000010
【図９】
2016075721.tif 000011
【図１０】
2016075721.tif 000012
【図１１】
2016075721.tif 000013
【図１２】
2016075721.tif 000014
【図１３】
2016075721.tif 000015
【図１４】
2016075721.tif 000016
【図１５】
2016075721.tif 000017
【図１６】
2016075721.tif 000018
【図１７】
2016075721.tif 000019
【図１８】
2016075721.tif 000020
【図１９】
2016075721.tif 000021
【図２０】
2016075721.tif 000022
【図２１】
2016075721.tif 000023
【図２２】
2016075721.tif 000024
【図２３】
2016075721.tif 000025
【図２４】
2016075721.tif 000026
【図２５】
2016075721.tif 000027
【図２６】
2016075721.tif 000028
【図２７】
2016075721.tif 000029
【図２８】
2016075721.tif 000030
【図２９】
2016075721.tif 000031
【図３０】
2016075721.tif 000032
【図３１】
2016075721.tif 000033
【図３２】
2016075721.tif 000034
【図３３】
2016075721.tif 000035
【図３４】
2016075721.tif 000036
【図３５】
2016075721.tif 000037
【図３６】
2016075721.tif 000038
【手続補正書】
【提出日】平成27年4月23日(2015.4.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
命令を実行する複数の命令実行部のそれぞれに前記命令を先入れ先出しで出力する複数の命令記憶部と、
順次入力される命令を前記複数の命令記憶部のいずれかに振り分ける命令制御部と、
前記複数の命令記憶部からの前記命令の出力を制御する出力制御部と、を備え、
前記命令制御部は、入力された命令が、実行順序を守るべき命令の間に挿入されるダミー命令である場合には、前記入力された命令を前記複数の命令記憶部の全てに分配し、
前記出力制御部は、前記複数の命令記憶部の全てにおいて出力する命令が前記ダミー命令となるまで、出力する命令が前記ダミー命令となっている命令記憶部から前記命令実行部への命令の出力を抑止する、
命令実行制御システム。
【請求項２】
前記命令実行制御システムは、さらに、前記命令記憶部がオーバーフロー又は一杯になったこと検出し、前記命令の入力元に通知する検出部を備えた
請求項１に記載の命令実行制御システム。
【請求項３】
前記命令実行制御システムは、さらに、一定周期毎に通知信号を出力するタイマーを備え、
前記出力制御部は、前記複数の命令記憶部の全てにおいて出力する命令が前記ダミー命令となっているときに前記タイマーから前記通知信号が出力されるまで、前記出力する命令がダミー命令となっている命令記憶部からの命令の出力を抑止する、
請求項１に記載の命令実行制御システム。
【請求項４】
前記命令実行制御システムは、さらに、
前記複数の命令記憶部と、前記命令制御部と、前記出力制御部と、前記タイマーとを有するインターフェイス装置と、
前記インターフェイス装置に対して前記命令を入力する外部装置と、を備え、
前記外部装置は、所定数のダミー命令の前記インターフェイス装置に対する入力に応じて、前記インターフェイス装置に対する前記命令の入力を中断するダミー命令検出部を有し、
前記出力制御部は、前記複数の命令記憶部の全てにおいて出力する命令が前記ダミー命令となり、かつ前記タイマーから前記通知信号が出力された場合に、前記ダミー命令検出部に対して通知信号を出力し、
前記ダミー命令検出部は、前記出力制御部からの通知信号の出力に応じて、前記中断していた命令の入力を再開する、
請求項３に記載の命令実行制御システム。
【請求項５】
前記命令実行制御システムは、前記ダミー命令として、順序命令及び周期命令が入力され、
前記出力制御部は、
前記ダミー命令が前記順序命令である場合、前記タイマーからの通知信号の出力に関わらず、前記複数の命令記憶部の全てにおいて出力する命令が前記順序命令となるまで、出力する命令が前記順序命令となっている命令記憶部からの命令の出力を抑止し、
前記ダミー命令が前記周期命令である場合は、前記複数の命令記憶部の全てにおいて出力する命令が前記周期命令となっているときに前記タイマーから前記通知信号が出力されるまで、出力する命令が前記周期命令となっている命令記憶部からの命令の出力を抑止する、
請求項３に記載の命令実行制御システム。
【請求項６】
前記命令実行制御システムは、さらに、
前記複数の命令記憶部と、前記命令制御部と、前記出力制御部と、前記タイマーとを有するインターフェイス装置と、
前記インターフェイス装置に対して前記命令を入力する外部装置と、を備え、
前記外部装置は、所定数の周期命令の前記インターフェイス装置に対する入力に応じて、前記インターフェイス装置に対する前記命令の入力を中断する周期命令検出部を有し、
前記出力制御部は、前記複数の命令記憶部の全てにおいて出力する命令が前記周期命令となり、かつ前記タイマーから前記通知信号が出力された場合に、前記周期命令検出部に対して通知信号を出力し、
前記周期命令検出部は、前記出力制御部からの通知信号の出力に応じて、前記中断していた命令の入力を再開する、
請求項５に記載の命令実行制御システム。
【請求項７】
前記出力制御部は、
前記複数の命令記憶部のそれぞれから出力される命令が、前記順序命令及び前記周期命令のいずれの命令であるかを判断する複数のダミー命令判断部と、
前記複数のダミー命令判断部による判断結果が不一致である場合に前記命令の入力元に異常を通知する通知部と、を有する、
請求項５に記載の命令実行制御システム。
【請求項８】
前記命令実行制御システムは、さらに、
前記命令記憶部と前記命令実行部との間において前記命令が伝送される通信経路の異常を検出する異常検出部と、
前記異常検出部によって異常が検出された場合に、前記命令記憶部に格納された命令に関する情報を収集する情報収集部と、を備えた
請求項１に記載の命令実行制御システム。
【請求項９】
前記命令制御部は、さらに、前記入力された命令がトリガ命令である場合には、前記トリガ命令の前に前記ダミー命令を挿入して前記複数の命令記憶部の全てに分配するとともに、前記入力されたトリガ命令を前記複数の命令記憶部の全てに分配する、
請求項１に記載の命令実行制御システム。
【請求項１０】
前記命令記憶部は、前記出力制御部による前記命令の出力の抑止が解除された場合に、前記ダミー命令を破棄する、
請求項１に記載の命令実行制御システム。
【請求項１１】
前記命令実行制御システムは、さらに、
前記複数の命令記憶部と、前記命令制御部と、前記出力制御部とを有するインターフェイス装置と、
前記インターフェイス装置に対して前記命令を入力する外部装置と、を備え、
前記外部装置は、
前記命令を生成する命令生成部と、
前記命令生成部によって生成された命令において、実行順序を守るべき命令が存在するか否かを判断する実行順序判断部と、
前記実行順序判断部によって実行順序を守るべきと判断された命令の間に前記ダミー命令を生成して挿入するダミー命令生成部と、を有する、
請求項１に記載の命令実行制御システム。
【請求項１２】
順次入力される命令を複数の命令記憶部のいずれかに振り分ける命令制御ステップと、
前記複数の命令記憶部のそれぞれに格納された命令を、前記命令を実行する複数の命令実行部のそれぞれに先入れ先出しで出力する命令出力ステップと、を備え、
前記命令制御ステップでは、入力された命令が、実行順序を守るべき命令の間に挿入されるダミー命令である場合には、前記入力された命令を前記複数の命令記憶部の全てに分配し、
前記命令出力ステップでは、前記複数の命令記憶部の全てにおいて出力する命令が前記ダミー命令となるまで、出力する命令が前記ダミー命令となっている命令記憶部から前記命令実行部への命令の出力を抑止する、
命令実行制御方法。
【国際調査報告】
2016075721.tif 000039
2016075721.tif 000040