(57)【要約】【課題】  ＩＥＥＥ１３９４ネットワーク上に接続されたマスタと全スレーブが制御周期内に制御データの授受を行う同期通信システムにおいて、各スレーブの応答データの更新・作成の周期が異なる場合でも、マスタが同一タイミングの応答データを得るようにする。【解決手段】  マスタは、同期単位、制御周期、スレーブ数に基いて、マスタの制御データの送受信のタイミングや制御処理のタイミングが設定された同期通信管理テーブルを作成する。また、その同期通信管理テーブルとスレーブの応答データ更新・作成周期に基いてスレーブの制御データの送受信のタイミングや指令実行や応答作成のタイミングが設定された同期通信情報データテーブルを作成してスレーブに通知する。マスタとスレーブは、それらの同期通信管理テーブルおよび同期通信情報データテーブルに従って通信する。【選択図】図１
2009049621.tif 000002
【特許請求の範囲】
【請求項１】
１局のマスタと１局以上のスレーブがＩＥＥＥ１３９４ネットワーク上に接続され、アイソクロナスサイクルの整数倍の制御周期に同期して、前記マスタと前記スレーブが通信するマスタ・スレーブ同期通信システムにおいて、
前記マスタは、全ての前記スレーブとの通信に必要なアイソクロナスサイクル単位での時間を意味する同期単位を、前記スレーブからの受信の場合には前記制御周期の最後から設定し、前記スレーブへの送信の場合には前記同期単位を前記制御周期の最初から設定した同期通信管理テーブルを備え、
前記スレーブは、前記マスタへ応答データに格納される現在値が更新される周期を通知するための現在値更新周期サイクル数と、前記マスタから設定される制御周期サイクル数および、同期通信のタイミングとで構成される同期通信情報データテーブルを備えた
ことを特徴とするマスタ・スレーブ同期通信システム。
【請求項２】
前記マスタが備える前記同期通信管理テーブルは、前記マスタが前記スレーブへの指令データを作成する制御処理を起動するタイミングと、前記マスタが送信する前記スレーブの数と前記スレーブ番号および前記マスタが受信する前記スレーブの数と前記スレーブ番号とをアイソクロナスサイクル毎に保持し、
前記スレーブが備える前記同期通信情報データテーブルは、前記スレーブの現在値更新周期サイクル数と、前記制御周期分のサイクル数と、前記スレーブが、前記マスタから指令データを受信する前記タイミングと、前記指令データを実行する前記タイミングと、前記マスタへの応答データを作成する前記タイミングと、前記マスタへ応答データを送信する前記タイミングとを保持する、
ことを特徴とする請求項１に記載のマスタ・スレーブ同期通信システム。
【請求項３】
前記マスタに備えられたスレーブ割付部が、あらかじめ設定された前記同期単位と前記制御周期と、前記同期単位内において通信する前記スレーブ数と、前記スレーブをユニークに指定するスレーブ番号の配列をもとに前記同期通信管理テーブルを作成し、該同期通信管理テーブルおよび、前記スレーブの現在値更新周期サイクル数に基づいて前記同期通信情報データテーブルを作成する、
ことを特徴とする請求項１に記載のマスタ・スレーブ同期通信システム。
【請求項４】
前記マスタは、前記同期通信管理テーブルに従い、前記制御処理を起動するタイミングを検出すると前記制御処理を実行し、前記スレーブからの受信タイミングを検出すると受信を実行し、前記スレーブへの送信タイミングを検出すると送信を実行し、
前記スレーブは、前記同期通信情報データテーブルに従い、前記指令データを受信するタイミングを検出すると前記マスタからの指令データを受信し、前記指令データを実行するタイミングを検出すると前記指令データの処理を実行し、前記応答データを作成するタイミングを検出すると前記応答データを作成し、前記応答データを送信するタイミングを検出すると前記マスタへ前記応答データを送信する、
ことを特徴とする請求項１に記載のマスタ・スレーブ同期通信システム。
【請求項５】
前期マスタもしくは前期スレーブ、もしくは前期マスタおよび前期スレーブは前記同期通信管理テーブルや、前記同期通信情報データテーブルをアプリケーションから参照可能とすることを特徴とする請求項１から請求項４のいずれかに記載のマスタ・スレーブ同期通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＥＥＥ１３９４ネットワークを使用したマスタとスレーブの同期通信システムおよび同期通信方式に関する。
【背景技術】
【０００２】
従来のＩＥＥＥ１３９４通信システムのアイソクロナス転送は、アイソクロナス転送をする機器は、予め、Ｉｓｏｃｈｒｏｎｏｕｓ  Ｒｅｓｏｕｒｃｅ  Ｍａｎａｇｅｒ（以下、ＩＲＭとする）から帯域幅とチャネルを獲得し、サイクル開始パケットを受けると、バスの使用権を獲得した機器がデータを送信する。各通信機器はアイソクロナス転送期間にバスの使用権を順に獲得してデータを送信するようになっている（例えば非特許文献１参照）。
【０００３】
通常、アイソクロナス転送期間で、すべての通信機器はデータを転送する仕組みになっているので、新たな機器を追加したいが残っている帯域が獲得したい帯域より少ない場合には、一つの機器に対するデータが減ってしまうか、新たな機器の追加ができないことになる。
【０００４】
このような問題に対して、アイソクロナスサイクルの整数倍を制御周期として、マスタが制御対象のスレーブを制御周期分のアイソクロナスサイクルに送信可能な数だけ割り付け、その割り付けに従って、順にスレーブと制御データの授受を行うことで、汎用な高速通信ネットワークであるＩＥＥＥ１３９４を使用したマスタとスレーブの同期通信システムか構築できるようにする技術が開示されている。これを図１６、図１７を用いて説明する。
【０００５】
図１６は、1局のマスタと８局のスレーブが１０００μｓの制御周期で同期通信するための通信タイミング管理テーブルであり、１アイソクロナスサイクルに４局分割り付けられ、１０００μｓ分に相当する８アイソクロナスサイクルのうち先頭の２アイソクロナスサイクルを使用して通信を行うよう設定されている。図１７は図１６の通信タイミング管理テーブルに従い通信をしたタイミングチャートであり、１０００μｓの最初の１２５μｓでマスタがスレーブ１〜４までへの指令データＣ１〜Ｃ４を送信し、スレーブ１〜４はマスタへの応答データＲ１〜Ｒ４を送信している。さらに２番目のアイソクロナスサイクルである１２５μｓ〜２５０μｓの間にマスタがスレーブ５〜８までへの指令データＣ５〜Ｃ８を送信し、スレーブ５〜８はマスタへの応答データＲ５〜Ｒ８を送信している。（特許文献１参照）
【０００６】
しかしながら、特許文献１に記載されている同期通信システムでは、図１５に示すように、マスタの制御部と通信部、スレーブの制御部と通信部は、制御周期（アイソクロナスサイクルの整数倍）で同期してデータの送受信を行っている。
【０００７】
すなわち、ある制御周期Ｎに注目すると、２周期前の制御周期Ｎ−２のサイクルカウンタが＃７のアイソクロナスサイクルで全スレーブの制御部が一斉に応答データを作成し、スレーブ通信部へ渡す。スレーブ通信部は制御周期Ｎ−１の決められたアイソクロナスサイクルで応答データを送信する。
【０００８】
マスタ通信部は、制御周期Ｎ−１のサイクル毎に応答データを受信し、次の制御周期Ｎのサイクルカウンタが＃０のサイクルで全スレーブの応答データをマスタ制御部に渡し、マスタ制御部はその制御周期内で応答データを基に指令データを作成し、マスタ通信部へ指令データを渡す。
【０００９】
マスタ通信部は制御周期Ｎ＋１で順に各スレーブに指令データを送信する。
そして、スレーブ通信部は制御周期分経過後の制御周期Ｎ＋２のサイクルカウンタ＃０で一斉に指令データをスレーブ制御部に渡している。
【００１０】
すなわち、スレーブからマスタへの応答データの送信、その応答データに基く次の指令データの作成、その指令データのスレーブへの送信、その指令データのスレーブでの処理の実行が、制御周期に同期して実行されていた。
【００１１】
従って、応答データの受信・指令データの送信のそれぞれで通信にかかる遅れ（以降、通信遅延と呼ぶ）に制御周期の時間が含まれており、図１７のサイクル＃２〜＃７のように通信が行われないアイソクロナスサイクルが有っても、通信遅延は制御周期より短くならず、制御性能の向上の妨げになるという問題があった。
【００１２】
また、特にマスタの制御処理に時間がかかるために制御周期が長くなるシステムでは、通信遅延が長くなり、制御性能の向上の妨げになるという問題があった。
このような問題を解決するために、特許文献２では、通信遅延を一定にするようなマスタ・スレーブ同期通信システムが提案された。
【特許文献１】特開２００５−２２９１４２号公報（図２、３）
【特許文献２】特願２００６−１９９６８７
【非特許文献１】IEEE Std 1394-1995, IEEE Standard for a High Performance Serial Bus
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかし、ＩＥＥＥ１３９４では、接続できるノード数が６３ノードまでであること、１３９４ＯＨＣＩのように１アイソクロナスサイクルで送受信できるノード数にＨ／Ｗによる制約があり、１つのスレーブの制御対象が増えてその制御処理の負荷が増え、応答データの更新・作成の周期（以降、現在値更新周期）がアイソクロナスサイクルより長くなる場合がある。
またスレーブの機能によっては性能よりもコストを重視する場合、複数のスレーブを一つにまとめたり、安価なプロセッサを使用したスレーブを構成したりすることにより、制御処理に時間がかかることによって現在値更新周期がアイソクロナスサイクルよりも長くなる場合がある。
【００１４】
このような場合、各スレーブの現在値更新周期が異なる可能性があるが、たとえば、図１４に示すように、現在値更新周期がアイソクロナスサイクル数で数えて１、２、４とする。図１４の同期通信情報データテーブル２ｉ３１（ｉ＝１〜３）に基づいて特許文献２で提案された技術を適用すると、図１５に示すようなタイミングチャートが得られる。
図１５は現在値更新周期と応答データ作成タイミングの関係図であり、現在値更新周期サイクル数が異なる各スレーブが、設定された応答作成タイミングに対して、実際に応答データに含まれる現在値を作成するタイミングを示すものである。
サイクル＃６、＃７で送信する応答データを作成するタイミングは＃５以前である必要があるが、図１４の同期通信情報データテーブル２ｉ３１（ｉ＝１〜３）に従い、＃５で応答データを作成しようとした場合、スレーブ１は現在値更新周期サイクル数が１なので、実際には直前の＃４（Ｍ１−６の現在値更新周期）のサイクルで更新された現在値を使って、応答データを作成する。
しかし、スレーブ２は現在値更新周期サイクル数が２なので、実際には＃３（Ｍ２−４の現在値更新周期）のサイクルで更新された現在値を使って応答データを作成し、スレーブ３は現在値更新周期サイクル数が４なので、実際には＃１（Ｍ３−３の現在値更新周期）のサイクルで更新された現在値を使って応答データを作成することになる。従って、応答データのタイミングがスレーブ毎に異なることになる。
【００１５】
次に、スレーブ毎に応答データの作成されるタイミングがずれて、マスタが、同一タイミングの応答データを取得できないことによる不具合を例示する。
例えば、図１５に示すように、現在値更新が毎アイソクロナスサイクルで実行可能なスレーブ２１はサーボ1軸を制御するスレーブであり、現在値更新周期が２アイソクロナスサイクルで実行可能なスレーブ２２はサーボ２軸を制御するスレーブであり、現在値更新周期が４アイソクロナスサイクルで実行可能なスレーブ２３はサーボ４軸を制御するスレーブであるようなシステムを考える。
これらの各スレーブに対して、１ｍｓ＝８アイソクロナスサイクル毎に同じ８０パルスずつ増分する位置指令を与えて、アイソクロナスサイクル毎に１０パルスずつ回転する動作をさせる。
各スレーブは、図１４に示す同期通信情報データテーブルに従って動作するので、各スレーブは、応答データを授受するのに必要な２アイソクロナスサイクルの直前のサイクル＃５で応答データを作成する。
つまり、スレーブ１の軸は３０パルス回転した応答データ、スレーブ２の軸は２０パルス回転した応答データ、スレーブ３の軸は０パルス回転した応答データというように、各々が異なった応答データを作成し、マスタへ送信する。
その結果、マスタは、スレーブ１の軸に対して、スレーブ２の軸、更にスレーブ３の軸が遅れて動作しているように見えるため、全軸が同じ現在値となるように指令を出そうとするので、スレーブ２の軸やスレーブ３の軸にそれぞれ、１０パルス、３０パルスを上乗せした指令を与えてしまい、実際の軸の位置がずれてしまい、多軸を使った同期制御ができなくなることになる。
【００１６】
この発明は、このような問題点に着目してなされたものであり、その目的とするところは、例えば処理能力の異なるサーボのように、現在値更新周期サイクル数が異なるスレーブであっても、同一時刻（アイソクロナスサイクル単位で）の現在値を応答するようなマスタ・スレーブ同期通信システムを提供することである。
【課題を解決するための手段】
【００１７】
上記問題を解決するため、本発明は、次のようにするものである。
請求項１に記載の発明は、１局のマスタと１局以上のスレーブがＩＥＥＥ１３９４ネットワーク上に接続され、アイソクロナスサイクルの整数倍の制御周期に同期して、前記マスタと前記スレーブが通信するマスタ・スレーブ同期通信システムにおいて、
前記マスタが、全ての前記スレーブとの通信に必要なアイソクロナスサイクル単位での時間を意味する同期単位を、前記スレーブからの受信の場合には前記制御周期の最後から設定し、前記スレーブへの送信の場合には前記同期単位を前記制御周期の最初から設定した同期通信管理テーブルを備え、
前記スレーブは、前記マスタへ応答データに格納される現在値が更新される周期を通知するための現在値更新周期サイクル数と、前記マスタから設定される制御周期サイクル数および、同期通信のタイミングとで構成される同期通信情報データテーブルを備えたことを特徴とするものである。
【００１８】
また、請求項２に記載の発明は、請求項１に記載の発明において、前記マスタが備える前記同期通信管理テーブルが、前記マスタが前記スレーブへの指令データを作成する制御処理を起動するタイミングと、前記マスタが送信する前記スレーブの数と前記スレーブ番号および前記マスタが受信する前記スレーブの数と前記スレーブ番号とを前記タイミング毎に保持し、
前記スレーブが備える前記同期通信情報データテーブルが、前記スレーブの現在値更新周期サイクル数と、前記制御周期分のサイクル数と、前記スレーブが、前記マスタから指令データを受信する前記タイミングと、前記指令データを実行する前記タイミングと、前記マスタへの応答データを作成する前記タイミングと、前記マスタへ応答データを送信する前記タイミングとを保持することを特徴とするものである。
【００１９】
また、請求項３に記載の発明は、請求項１に記載の発明において、前記マスタに備えられたスレーブ割付部が、あらかじめ設定された前記同期単位と前記制御周期と、前記同期単位内において通信する前記スレーブ数と、前記スレーブをユニークに指定するスレーブ番号の配列をもとに前記同期通信管理テーブルを作成し、該同期通信管理テーブルおよび、前記スレーブの現在値更新周期サイクル数に基づいて前記同期通信情報データテーブルを作成することを特徴とするものである。
【００２０】
また、請求項４に記載の発明は、請求項１に記載の発明において、前記マスタが、前記同期通信管理テーブルに従い、前記制御処理を起動するタイミングを検出すると前記制御処理を実行し、前記スレーブからの受信タイミングを検出すると受信を実行し、前記スレーブへの送信タイミングを検出すると送信を実行し、
前記スレーブが、前記同期通信情報データテーブルに従い、前記指令データを受信するタイミングを検出すると前記マスタからの指令データを受信し、前記指令データを実行するタイミングを検出すると前記指令データの処理を実行し、前記応答データを作成するタイミングを検出すると前記応答データを作成し、前記応答データを送信するタイミングを検出すると前記マスタへ前記応答データを送信することを特徴とするものである。
【００２１】
また、請求項５に記載の発明は、請求項１から請求項４のいずれかに記載の発明において、前期マスタもしくは前期スレーブ、もしくは前期マスタおよび前期スレーブは前記同期通信管理テーブルや、前記同期通信情報データテーブルをアプリケーションから参照可能とすることを特徴とするものである。
【発明の効果】
【００２２】
請求項１から請求項４に記載の発明によれば、マスタとスレーブは、マスタに備えられた同期通信管理テーブルと、スレーブに備えられた同期通信情報データテーブルに基づいて、制御周期以下の同期単位で通信を行うので、通信遅延は同期単位のまま一定となり、制御性能の向上を図ることができる。
また、各スレーブの制御処理にかかる時間が異なり応答データの更新・作成の周期が異なっても、マスタは同一タイミングの応答データを得ることができるので制御性能の向上を図ることができる。
【００２３】
請求項５に記載の発明によれば、通信遅延を算出することが可能となり、通信遅延を考慮したアプリケーションプログラムを作成することができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の方法の具体的実施例について、図に基づいて説明する。
【実施例１】
【００２５】
まず、以下の説明の中で出てくる、ＩＥＥＥ１３９４規格にて規定された機能名、信号名について説明しておく
【００２６】
図１０はＩＥＥＥ１３９４機器が持つコンフィグレーションＲＯＭの最小形式のフォーマットを表す図であり、ベンダーＩＤと言う、ベンダー固有の情報を表す、２４ビットのｖｅｎｄｏｒ＿ｉｄが含まれる。
【００２７】
図１１はＩＥＥＥ１３９４機器が持つコンフィグレーションＲＯＭの一般形式のフォーマットを表す図であり、図１２は図１１に含まれるｂｕｓ＿ｉｎｆｏ＿ｂｌｏｃｋのフォーマットを表す図である。図１０と同様のベンダーＩＤ（ｎｏｄｅ＿ｖｅｎｄｏｒ＿ｉｄ）や、ベンダー内で機器を固有にする、８ビットのｃｈｉｐ＿ｉｄ＿ｈｉと３２ビットのｃｈｉｐ＿ｉｄ＿ｌｏを連結した４０ビットのチップＩＤが含まれる。ベンダーＩＤとチップＩＤをあわせた６４ビットの情報はＥＵＩ−６４（Ｅｘｔｅｎｄｅｄ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｅｒ、拡張固有識別子、６４ビット）と呼ばれ全てのＩＥＥＥ１３９４機器の中で、ユニークに識別できる情報である。
【００２８】
図１３はＩＥＥＥ１３９４機器が持つＣＹＣＬＥ＿ＴＩＭＥレジスタのフォーマットを表す図であり、ｓｅｃｏｕｎｄ＿ｃｏｕｎｔや、ｃｙｃｌｅ＿ｃｏｕｎｔ、ｃｙｃｌｅ＿ｏｆｆｓｅｔが含まれる。ｓｅｃｏｕｎｄ＿ｃｏｕｎｔはｃｙｃｌｅ＿ｃｏｕｎｔからの桁上がりが発生するたびに増加し、値が１２７のときに増加すると循環して０に戻る。ｃｙｃｌｅ＿ｃｏｕｎｔはｃｙｃｌｅ＿ｏｆｆｓｅｔからの桁上がりが発生するたびに増加し、値が７９９９のときに増加すると循環して０に戻り、ｓｅｃｏｕｎｄ＿ｃｏｕｎｔに桁上がりする。ｃｙｃｌｅ＿ｃｏｕｎｔの単位は１２５μｓである。ｃｙｃｌｅ＿ｏｆｆｓｅｔは２４．５７６ＭＨｚのローカルクロックの１ティックごとに増加し、値が３０７１のときに増加すると、循環して０に戻り、ｃｙｃｌｅ＿ｃｏｕｎｔに桁上がりする。
【００２９】
サイクル開始パケットとは、ＩＥＥＥ１３９４規格にて規定されているアイソクロナスサイクルの開始を示すパケットのことで固有周期の１２５μｓ毎にサイクルマスタとなった機器が送信する。
【００３０】
図１は、本発明の実施例を示すマスタ・スレーブ同期通信システムの構成図である。図において１はマスタ、２ｉ（ｉ＝１、２、・・・ｎ）はスレーブ、３はＩＥＥＥ１３９４ネットワークである。
【００３１】
マスタ１は、制御周期データ１１と、スレーブ検出部１２と、スレーブ検出部１２により検出された接続スレーブ情報１２１と、通信タイミング等の割付を行うスレーブ割付部１３と、割り付けられた同期通信用の情報を格納する同期通信管理テーブル１４と、処理タイミングを算出するサイクル開始パケット受信処理部１５と、指令データ送信部１６と送信する指令データ１６１と、応答データ受信部１７と受信した応答データ１７１と、応答データ１７１を読み込み、指令データ１６１を作成する制御処理部１８とで構成される。
【００３２】
但し、請求項１〜２および４に記載のシステムでは、同期通信管理テーブル１４は予めプログラムとして作成されていてもよいし、他の機器から設定させるなど、別の手段でマスタ１へ通知してもよい。この場合、制御周期データ１１、スレーブ検出部１２、接続スレーブ情報１２１、スレーブ割付部１３は省くことが出来る。
【００３３】
一方、スレーブ２ｉは、指令データ受信部２ｉ１と受信した指令データ２ｉ１１と、応答データ２ｉ２と送信する応答データ２ｉ２１と、送受信処理を行う同期通信処理部２ｉ３と、各処理タイミングが格納された同期通信情報データテーブル２ｉ３１と、各処理タイミングを算出するサイクル開始パケット受信処理２ｉ４と、応答データを作成する応答作成部２ｉ５と、指令データを実行する指令処理部２ｉ６とで構成される。
【００３４】
図２は、本発明の実施例となる制御周期データの詳細図で、図１の制御周期データ１１の詳細図であり、同期単位、スレーブを分けたグループ数、制御周期、制御スレーブ数と制御スレーブ番号で構成される。本実施例では、同期単位を２５０μｓとし、制御周期を１０００μｓ、制御スレーブ数を３局、制御スレーブ番号をＳ１，Ｓ２，Ｓ３とした１つのグループの例を示している。
なお、同期単位とは、マスタが全てのスレーブと通信（受信または送信）を行うために必要な連続したアイソクロナスサイクル単位の時間であり、予め決められた固定値やアプリケーションでの設定値だったり、スレーブを割り付けた結果、実際に通信に必要なアイソクロナスサイクルで算出される値でもよい。
【００３５】
図３は、本発明の実施例となる、図１の同期通信管理テーブル１４の詳細図である。同期通信管理テーブル１４は制御周期に相当するアイソクロナスサイクルのサイクル数が格納される全サイクル数と、マスタの制御処理起動タイミングと、各サイクルにおいて指令データを送信するスレーブ数を表す送信スレーブ数、送信先のスレーブを表す送信スレーブ番号、応答データを受信するスレーブ数を表す応答スレーブ数、送信元のスレーブを表す受信スレーブ番号から構成される。本発明の実施例として図２の制御周期データと同じ設定の制御周期１０００μｓでスレーブ３局の設定で、１サイクルで通信できるスレーブ数が２局の場合のデータを示している。
【００３６】
ここで、サイクル＃はサイクル開始パケット受信時のＣＹＣＬＥ＿ＴＩＭＥのｃｙｃｌｅ＿ｃｏｕｎｔ値を制御周期に相当するアイソクロナスサイクル数で割った時の余り（剰余）の値とする。つまり、０〜アイソクロナスサイクル数−１の値を循環して増加する値となり、各タイミングの値はサイクル＃が設定値となったタイミングを意味する。
【００３７】
図４は、本発明の実施例となる、図１の同期通信情報データテーブル２ｉ３１（ｉ＝１〜３）の詳細図である。同期通信情報データテーブル２ｉ３１は応答データに含まれる現在値を更新する周期に相当するアイソクロナスサイクル数と、制御周期に相当するアイソクロナスサイクル数と、指令データを受信するタイミングと、指令データを実行するタイミングと、応答データを作成するタイミングと、応答データを送信するタイミングから構成される。本発明の第１および第２の実施例として図３の同期通信管理テーブルに対応するスレーブ２ｉ（ｉ＝１〜３）のデータを示しており、全スレーブの指令データを実行するタイミングが同じ値となることで同期して制御が開始され、全てのスレーブの応答データを作成するタイミングが同じ値となることで同期して同じタイミングの応答データが得られている。
【００３８】
図５は本発明の実施例となる通信タイミングチャートである。マスタは、図３の同期通信管理テーブル、各スレーブは図４の同期通信情報データテーブルに従って動作した時のもので、ある制御周期Ｎのマスタ制御処理に注目し、制御周期Ｎ−１の各スレーブの応答データを基に指令データを作成し、制御周期Ｎ＋１で各スレーブに指令データを送信し、各スレーブが指令データを取り込んで実行している様子を表した図である。実際には、制御周期毎に同じ処理が実行されているが、ここでは、図に現れる処理について、制御周期Ｎ−１のスレーブの応答から制御周期Ｎ＋１のマスタの指令の順に説明していく。
【００３９】
まず、制御周期Ｎ−１、サイクル＃２のタイミングでは、スレーブ２ｉ（ｉ＝１〜３）は、同じタイミングで応答データを作成する。但し、このときの応答データは、直前のサイクル、制御周期Ｎ−１、サイクル＃１で更新された現在値、つまり、各スレーブは現在値更新周期が異なるので、スレーブ２１は現在値更新周期Ｍ１−１７の周期、スレーブ２２は現在値更新周期Ｍ２−９の周期、スレーブ２３は現在値更新周期Ｍ３−５の周期で更新された現在値により作成された応答データとなる。
【００４０】
更に、制御周期Ｎ−１、サイクル＃６のタイミングで、スレーブ２ｉ（ｉ＝１〜２）は、応答データＲｉ（ｉ＝１〜２）を、サイクル＃７のタイミングで、スレーブ２ｉ（ｉ＝３）は、応答データＲｉ（ｉ＝３）を送信する。
【００４１】
次に、制御周期Ｎ、サイクル＃０のタイミングでは、マスタ１が制御処理を起動して、受信した応答データＲｉ（ｉ＝１〜３）を基に指令データＣｉ（ｉ＝１〜３）を作成する。この制御処理は通信処理を妨げない高速な処理、または低優先度の処理として実行される。
【００４２】
そして、制御周期Ｎ＋１、サイクル＃０のタイミングでマスタ１は指令データＣｉ（ｉ＝１〜２）を送信、スレーブ２ｉ（ｉ＝１〜２）が受信、サイクル＃１のタイミングでマスタ１は指令データＣｉ（ｉ＝３）を送信、スレーブ２ｉ（ｉ＝３）が受信する。
【００４３】
最後に、制御周期Ｎ＋１、サイクル＃１のタイミングでスレーブ２ｉ（ｉ＝１〜３）は、一斉に指令を実行する。スレーブの指令実行処理もスレーブの通信処理を妨げない高速な処理、または低優先度の処理として実行される。
【００４４】
よって、応答データに関しては、６〜７サイクル前、つまり７５０〜８７５μｓ前のタイミングに全スレーブが一斉に応答データを作成し、直前の２サイクル、つまり０〜２５０μｓ前の間にマスタ１とスレーブ２ｉ（ｉ＝１〜３）が応答データを授受することができ、制御周期前のデータではなく、一定の通信遅延前の同じタイミングのスレーブの情報を応答データとして、マスタが取得することができる。
【００４５】
また、指令データに関しては、最初の２サイクル、つまり０〜２５０μｓにてマスタ１とスレーブ２ｉ（ｉ＝１〜３）が、指令データの授受を行い、全スレーブに対しての指令データの授受が終った、同期単位後の２５０μｓ後（２５０〜３７５μｓのタイミング）に、全スレーブが一斉に指令実行を開始することができ、設定された同期単位後にスレーブが同期して指令データを実行することができる。
【００４６】
実際には、サイクル＃で処理が定義され、制御周期毎に同じ処理が実行され、制御周期は１０００μｓなので、サイクル＃は０〜７の繰返しとなる。
【００４７】
以上により、制御周期１０００μｓ内にマスタ１が全スレーブ２ｉ（ｉ＝１〜３）と通信データの授受することができ、かつ制御周期後まで待つことなく、一定の通信遅延後にスレーブが同期して指令データを実行し、また、制御周期前のデータではなく、一定の通信遅延前の同じタイミングのスレーブの情報を応答データとして、マスタが取得することができる。
【００４８】
図６は、本発明のマスタ・スレーブ同期通信システムにおける、同期通信方式の通信初期化処理手順を示すフローチャートである。この図を用いて、マスタが同期通信で使用する同期通信管理テーブルと、スレーブが同期通信で使用する同期通信情報データテーブルを、マスタのスレーブ割付部１３が制御周期データをもとに作成する手順を順を追って説明する。
【００４９】
はじめにＳ０１０で制御周期やスレーブ数、スレーブ番号等があらかじめ設定された制御周期データ１１を取り出す。
【００５０】
次にＳ０２０で制御周期データ１１に設定されているスレーブとネットワーク上に接続されている機器を対応付ける。これは、非特許文献１記載のＩＥＥＥ１３９４規格の機能を利用してネットワーク上に接続されている全てのスレーブ情報１２１と、該スレーブとマスタが通信するためのスレーブ番号を検出する。ここで、スレーブ情報１２１とは、図１０のベンダーＩＤ、もしくは図１２のＥＵＩ−６４の情報を指し、スレーブとなる機器の判別にスレーブ情報１２１を使用する。またスレーブ番号は、スレーブ局に登録されている情報でもよいし、ＩＥＥＥ１３９４の規格の機能としてネットワーク上に接続されているＩＥＥＥ１３９４機器に割り付けられるノードＩＤを利用してもよい。
【００５１】
Ｓ０３０でサイクル内通信可能スレーブ数として１アイソクロナスサイクルで同期通信することが可能なスレーブの数を算出する。ここでサイクル内通信可能スレーブ数はＯＨＣＩ準拠のＩＥＥＥ１３９４インターフェースを使用している場合はＤＭＡコンテキスト数のハードウェアの制約となり、ハードウェアの制約がない場合は、指令データの帯域、応答データの帯域、機器の通信速度により、式（１）で求められる。（本実施例ではサイクル内通信可能スレーブ数を２としている）
【００５２】
サイクル内通信可能スレーブ数
＝  アイソクロナス転送の帯域  ÷  １スレーブ分の送受信の帯域    ・・・（１）
１スレーブ分の送受信の帯域
＝｛（ヘッダ＋指令データ分の帯域）＋  指令データ送信時のギャップ
＋（ヘッダ＋応答データ分の帯域）＋  応答データ送信時のギャップ｝
なお、ヘッダ、指令データ送信時のギャップ、応答データ送信時のギャップはＩＥＥＥ１３９４規格において規定された帯域である。
【００５３】
次にＳ０４０で通信タイミング割付け可能かどうかを式（２）にて判断するが、式（２）が成り立てば０５０に進み、不成立の場合はＳ０４１でエラー処理を行い終了となる。
全スレーブ数  ÷  サイクル内通信可能スレーブ数  ≦  全サイクル数・・・（２）
全サイクル数  ＝  制御周期［μｓ］  ÷  １２５［μｓ］・・・（３）
１２５μｓ：ＩＥＥＥ１３９４規格で規定されているアイソクロナスサイクル
【００５４】
次にＳ０５０で式（３）により算出された全サイクル数分の同期通信管理テーブル１４の領域を確保、０クリアし、全サイクル数を設定する。
【００５５】
次にＳ０６０で、サイクル内通信可能スレーブ数に従い、制御周期データ１１に設定されたスレーブ番号を同期通信管理テーブル１４の送信先スレーブ番号に前詰めにして順に格納し、各サイクルに格納されたスレーブ数を送信スレーブ数に設定する。
【００５６】
Ｓ１２０で最初に送信するスレーブが割り付けられたサイクルをマスタの制御処理起動タイミングとして設定する。
【００５７】
Ｓ１３０で受信スレーブ番号の割り付けを開始するサイクル＃として、受信割付開始サイクル＃を式（４）で算出する。
受信割付開始サイクル＃  ＝  全サイクル数  −  同期単位サイクル数  ・・・（４）
【００５８】
Ｓ１４０でサイクル＃０の送信先スレーブ数、送信スレーブ番号を、受信割付開始サイクル＃の応答スレーブ数、受信スレーブ番号へコピーする。この処理を送信のサイクル＃と受信のサイクル＃を１サイクルずつずらしながら、全サイクル数分繰り返し、同期通信管理テーブルを作成する。
【００５９】
Ｓ１５０で全スレーブの同期通信情報データテーブルから、現在値更新周期サイクル数を取得してその最小公倍数を求める。この現在値更新周期サイクル数は各スレーブが予め格納しておく。
【００６０】
Ｓ１５１でスレーブの指令実行タイミングおよび応答作成タイミングをそれぞれ式（５）、（６）で算出する。
指令実行タイミング
＝  ＭＯＤ（(制御処理起動タイミング＋同期単位サイクル数)，
制御周期サイクル数）  ・・・（５）
応答作成タイミング
＝  (理想応答作成タイミング÷ (ＬＣＭ現在値更新周期サイクル数＋同期単位))
× 現在値更新周期サイクル数 ＋ 指令実行タイミング      ・・・（６）
理想応答作成タイミング
＝  ＭＯＤ（(受信割付開始サイクル＃ ＋ 制御周期サイクル数 − １),  
制御周期サイクル数）
但し、上記式結果が０の場合、理想応答作成タイミング＝８とする。
ＭＯＤ（Ａ，Ｂ）：ＡのＢによる剰余
ＬＣＭ現在値更新周期サイクル数はＳ１５０で算出した全スレーブの現在値更新周期サイクル数の最小公倍数を使用する。
【００６１】
Ｓ１６０で上記までのステップにて作成された同期通信管理テーブル１４からそれぞれのスレーブに対する指令受信タイミングと応答送信タイミングを抽出し、制御周期に相当するサイクル数と指令実行タイミングおよび応答作成タイミングのデータとあわせて同期通信情報データテーブルとして全スレーブへ通知する。
【００６２】
以上により、マスタ１に図３の同期通信管理テーブル１４および、各スレーブ２ｉに図４の同期通信情報データテーブル２ｉ３１が作成される。
なお、同期通信管理テーブル１４および、同期通信情報データテーブル２ｉ３１は、本マスタ・スレーブ同期通信システムの外部に存在するパソコン等に実装されるエンジニアリングツールで作成し、ネットワーク等を介して本システムのマスタやスレーブにダウンロードしても構わない。
【００６３】
図７は本発明のマスタ・スレーブ同期通信システムにおける、マスタの同期通信開始後のサイクル開始パケット受信時の処理手順を示すフローチャートである。この図でマスタがサイクル開始パケットを受信した時のイベント処理を順を追って説明する。
【００６４】
まず、Ｓ１０００でサイクル＃を算出する。
【００６５】
次に、Ｓ１０１０で同期通信管理テーブルから送信スレーブ数および、送信スレーブ番号、応答スレーブ数および、受信スレーブ番号について、サイクル＃のタイミングのデータを抽出する。
【００６６】
Ｓ１０２０で抽出した応答スレーブ数が０でない場合は、受信スレーブ番号の応答データを受信する。
【００６７】
Ｓ１０３０で抽出した送信スレーブ数が０でない場合は、送信スレーブ番号の指令データを送信する。
【００６８】
Ｓ１０４０で制御処理起動タイミングがサイクル＃と一致していれば、該当する制御処理を起動する。
【００６９】
Ｓ１０００からＳ１０４０により、マスタのサイクル開始パケット受信時のイベント処理として同期通信処理が実行される。
【００７０】
図８は本発明のマスタ・スレーブ同期通信システムにおける、スレーブの同期通信開始後のサイクル開始パケット受信時の処理手順を示すフローチャートである。この図でスレーブがサイクル開始パケットを受信した時のイベント処理を順を追って説明する。
【００７１】
まず、Ｓ２０００でサイクル＃を算出する。
【００７２】
次に、Ｓ２０１０で同期通信情報データテーブルを読み出し、Ｓ２０２０で指令受信タイミングがサイクル＃と等しい時はＳ２０３０で指令データを受信する。
【００７３】
Ｓ２０４０で指令実行タイミングがサイクル＃と等しい時は、Ｓ２０５０で指令を実行する。もしくは指令処理を起動する。
【００７４】
Ｓ２０６０で応答作成タイミングがサイクル＃と等しい時は、Ｓ２０７０で応答データを作成する。
【００７５】
Ｓ２０８０で応答送信タイミングがサイクル＃と等しい時は、Ｓ２０９０で応答データを送信する。
【００７６】
Ｓ２０００からＳ２０８０により、スレーブのサイクル開始パケット受信時のイベント処理として同期通信処理が実行される。
【００７７】
図６〜図８のフローチャートに従えば、図２の制御周期データから図３の同期通信管理テーブル、図４の同期通信情報データテーブルが作成され、マスタおよびスレーブが図５の通信タイミングチャートの通りに通信することができる。
ちなみに、図１５に示した従来の方法を適用した現在値更新周期と応答データ作成タイミングの関係図は、図９に示すように改善される。すなわち、スレーブ２１では＃１（Ｍ１−９の現在値更新周期）、スレーブ２２は＃１（Ｍ２−５の現在値更新周期）、スレーブ２３も＃１（Ｍ３−３の現在値更新周期）と、全スレーブが＃１のサイクルで更新された現在値を使用した、同一タイミングの応答データをマスタ１へ送信できる。
【００７８】
また、同期通信管理テーブルおよび、同期通信情報データテーブルをアプリケーションプログラムや他の機器で読み出せるデータとして保持することで、ユーザに通信遅延時間を通知することができる。
【産業上の利用可能性】
【００７９】
制御周期の設定によらずマスタとスレーブの送受信データの通信に必要分の通信時間でマスタとスレーブが同期して通信できるので、マスタでキネマティクスを使ったような制御指令の作成に時間がかかるロボットコントロールシステムや、モーションコントロールシステムという用途にも適用できる。
【図面の簡単な説明】
【００８０】
【図１】本発明の実施例を示すマスタ・スレーブ同期通信システムの構成図
【図２】本発明の実施例となる制御周期データの詳細図
【図３】本発明の実施例となる同期通信管理テーブルの詳細図
【図４】本発明の実施例となる同期通信情報データテーブルの詳細図
【図５】本発明の実施例となる通信タイミングチャート
【図６】本発明のマスタ・スレーブ同期通信システムにおける、同期通信方式の通信初期化処理手順を示すフローチャート
【図７】本発明のマスタ・スレーブ同期通信システムにおける、マスタの同期通信開始後のサイクル開始パケット受信時の処理手順を示すフローチャート
【図８】本発明のマスタ・スレーブ同期通信システムにおける、スレーブの同期通信開始後のサイクル開始パケット受信時の処理手順を示すフローチャート
【図９】現在値更新周期と応答データ作成タイミングの関係図
【図１０】ＩＥＥＥ１３９４機器が持つコンフィグレーションＲＯＭの最小形式のフォーマットを表す図
【図１１】ＩＥＥＥ１３９４機器が持つコンフィグレーションＲＯＭの一般形式のフォーマットを表す図
【図１２】ｂｕｓ＿ｉｎｆｏ＿ｂｌｏｃｋのフォーマットを表す図
【図１３】ＣＹＣＬＥ＿ＴＩＭＥのフォーマットを表す図
【図１４】従来の方法を適用した同期通信情報データテーブルの詳細図
【図１５】従来の方法を適用した現在値更新周期と応答データ作成タイミングの関係図
【図１６】従来の方法を適用した通信タイミング管理テーブルの詳細図
【図１７】従来の方法を適用した通信タイミングチャート
【図１８】従来の方法を適用した通信遅延
【符号の説明】
【００８１】
１  マスタ
１１  制御周期データ
１２  スレーブ検出部
１２１  接続スレーブ情報
１３  スレーブ割付部
１４  同期通信管理テーブル
１５  サイクル開始パケット受信処理部
１６  指令データ送信部
１６１  指令データ
１７  応答データ受信部
１７１  応答データ
１８  制御処理部
２ｉ  スレーブ
２ｉ１  指令データ受信部
２ｉ１１  指令データ
２ｉ２  応答データ送信部
２ｉ２１  応答データ
２ｉ３  同期通信処理部
２ｉ３１  同期通信情報データテーブル
２ｉ４  サイクル開始パケット受信処理部
２ｉ５  応答作成部
２ｉ６  指令処理部
３  ＩＥＥＥ１３９４ネットワーク
Ｃｉ  マスタ１からスレーブｉへの指令データ
Ｒｉ  スレーブｉからマスタ１への応答データ
【図１】
2009049621.tif 000003
【図２】
2009049621.tif 000004
【図３】
2009049621.tif 000005
【図４】
2009049621.tif 000006
【図５】
2009049621.tif 000007
【図６】
2009049621.tif 000008
【図７】
2009049621.tif 000009
【図８】
2009049621.tif 000010
【図９】
2009049621.tif 000011
【図１０】
2009049621.tif 000012
【図１１】
2009049621.tif 000013
【図１２】
2009049621.tif 000014
【図１３】
2009049621.tif 000015
【図１４】
2009049621.tif 000016
【図１５】
2009049621.tif 000017
【図１６】
2009049621.tif 000018
【図１７】
2009049621.tif 000019
【図１８】
2009049621.tif 000020