(57)【要約】【課題】上位コントローラがモーションコントローラに対して動作開始タイミングを指示する必要が無く、上位コントローラから与えられた指令に基づいて複数のモーションコントローラが同期誤差無くモータを駆動することができるようにする。【解決手段】上位コントローラ１００が同期指令を生成する同期指令生成部１１５を備え、モーションコントローラ２００１が、上位ネットワーク３００で一意な値であるモーションコントローラＩＤを格納するＩＤ格納部２７０１と、同期指令を解析し同期モーション指令を生成する上位指令解析部２２０１と、上位指令解析部２２０１が生成した同期モーション指令を他のモーションコントローラと同期して実行する同期モーション処理部２６０１とを備えるようにした。【選択図】図１
2009009409.tif 000002
【特許請求の範囲】
【請求項１】
軌跡の種類や軌跡のパラメータを含んだ上位指令を複数台のモーションコントローラに対して生成する指令生成部と、
前記指令生成部が生成した指令を前記モーションコントローラに送信する通信処理部とを備えた上位コントローラにおいて、
指令を一意に示す指令ＩＤおよび同期して動作する全ての前記モーションコントローラのモーションコントローラＩＤとを含んだ同期指令を生成する同期指令生成部を備えたことを特徴とする上位コントローラ。
【請求項２】
指令を一意に示す指令ＩＤおよび同期して動作する全てのモーションコントローラのモーションコントローラＩＤを含んだ同期指令を上位コントローラから受信するための手段を提供する上位通信処理部と、
前記上位通信処理部を介して前記上位コントローラが出した前記上位指令を受け取り、解析し、軌跡の種類や軌跡のパラメータを含んだモーション指令を生成する上位指令解析部と、
前記上位指令解析部が生成したモーション指令を保持するモーション指令ＦＩＦＯと、前記モーション指令ＦＩＦＯの先頭に保持された前記モーション指令に従って接続されたモータに対する時々刻々の指令値を算出するモーション指令処理部と、前記モーション指令処理部が生成した前記モータに対する時々刻々の指令値を前記モータに送信し、前記モータからの応答値を受信する同期通信処理部とを備えたモーションコントローラにおいて、
さらに、上位ネットワークで一意な値であるモーションコントローラＩＤを格納するＩＤ格納部と、
前記上位指令解析部が生成した前記同期モーション指令を他の前記モーションコントローラと同期して実行する同期モーション処理部とを備え、
かつ、前記上位指令解析部は、さらに、前記同期指令を解析し、指令を一意に示す指令ＩＤおよび同期して動作する全ての前記モーションコントローラのモーションコントローラＩＤと、同期して動作する全ての前記モーションコントローラの準備完了状態を表した準備完了フラグとを含んだ同期モーション指令を生成することを特徴とするモーションコントローラ。
【請求項３】
請求項１記載の上位コントローラと、
請求項２記載のモーションコントローラと、
前記モーションコントローラから送信された指令値を受信し、応答を送信するモータと、
前記上位コントローラと複数の前記モーションコントローラを接続する上位ネットワークと、
複数の前記モーションコントローラと複数の前記モータを接続する同期ネットワークとから構成されることを特徴とするモーションコントロール装置。
【請求項４】
複数台のモーションコントローラに対して指令を生成する指令生成部と、前記指令生成部が生成した指令を前記モーションコントローラに送信する通信処理部とを備えた上位コントローラと、
前記上位コントローラと通信するための手段を提供する上位通信処理部と、前記上位通信処理部を介して前記上位コントローラが出した上位指令を受け取り解析し、動作軌跡を表すモーション指令を生成する上位指令解析部と、前記上位指令解析部が生成したモーション指令を生成された順番どおりに保持するモーション指令ＦＩＦＯと、前記モーション指令ＦＩＦＯの先頭に保持されたモーション指令に従って接続されたモータに対する時々刻々の指令値を算出するモーション指令処理部と、前記モーション指令処理部が生成した前記モータに対する時々刻々の指令値を前記モータに送信し、前記モータからの応答値を受信する同期通信処理部と、を備えたモーションコントローラと、
前記モーションコントローラから送信された指令値を受信し、応答を送信するモータと、
前記上位コントローラと複数の前記モーションコントローラを接続する上位ネットワークと、
複数の前記モーションコントローラと複数の前記モータを接続する同期ネットワークと、
から構成されるモーションコントロール装置の同期方法において、
前記モーション指令ＦＩＦＯの先頭に同期指令を検出すると準備完了パケットを前記同期ネットワーク上に送出し、準備完了パケットを他の前記モーションコントローラが受信するまで待ち、同期して動作する前記モーションコントローラの準備完了状態を表した準備完了フラグが全てｔｒｕｅになった場合に前記モータに対する時々刻々の指令値を算出する手順で処理することを特徴とするモーションコントロール装置の同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、上位コントローラに接続された複数台のモーションコントローラが同期して動作するモーションコントロール装置およびその同期方法に関する。
【背景技術】
【０００２】
まず、従来のモーションコントロール装置について図を用いて説明する。
図９は従来のモーションコントロール装置のブロック図を示したものである。
図において、９は従来のモーションコントロール装置、１００は上位コントローラであり、２００ｉ（ｉは正の整数）は複数台のモーションコントローラ、３００は上位ネットワーク、４００は同期ネットワーク、５００ｊは複数台のモータ５００ｊ（ｊは正の整数）である。
上位コントローラ１００は複数台のモーションコントローラ２００ｉと上位ネットワーク３００を介して接続されており、上位ネットワーク３００では非同期通信で通信パケットが送受信される。モーションコントローラ２００ｉは同期ネットワーク４００を介して複数台のモータ５００ｊと接続されており、同期ネットワーク４００により同期通信で通信パケットが送受信される。
上位コントローラ１００には指令生成部１１０と通信処理部１２０があり、指令生成部１１０で例えば図１０に示すような上位指令を生成し各モーションコントローラ２００ｉへ与えられる。
図１０は上位指令の例を示している。
上位指令６００には「軌跡の種類」と「軌跡のパラメータ」が格納される。
例えば、直線補間の場合、各モータの目標位置やベクトル方向の速度が上位指令６００に格納される。
このように指令生成部１１０で生成された上位指令６００は、通信処理部１２０によってモーションコントローラ２００ｉへ上位ネットワーク３００を通じて送信される。
上位コントローラ１００から上位指令６００を受け取ったモーションコントローラ２００ｉは、受け取った上位指令６００の内容に従って以下で説明するようにして同期ネットワーク４００に接続されたモータ５００ｊを駆動する。
【０００３】
そこで、次に、モーションコントローラ２００ｉについて説明する。
モーションコントローラ２００ｉには、上位通信処理部２１０ｉと上位指令解析部２２０ｉとモーション指令ＦＩＦＯ２３０ｉとモーション指令処理部２４０ｉと同期通信処理部２５０ｉとが備わっている。
まず、上位通信処理部２１０ｉは、上位ネットワーク３００を介して上位コントローラ１００と通信し、上位コントローラ１００から上位指令６００（図１０）を受信する。上位通信処理部２１０ｉが受信した上位指令６００は上位指令解析部２２０ｉへ送られる。
上位指令解析部２２０ｉは、上位指令６００からモーション指令（図１１）を生成する。
図１１はモーション指令の例を示している。
モーション指令７００には「軌跡の種類」と「軌跡のパラメータ」が含まれる。
例えば、直線補間の場合、各モータの開始位置、終了位置や各モータの速度がモーション指令に含まれる。
このようにして上位指令解析部２２０ｉで生成されたモーション指令７００は次のモーション指令ＦＩＦＯ２３０ｉに格納される。モーション指令ＦＩＦＯ２３０ｉでは、モーション指令が先入れ先出し方式で管理されている。
モーション指令処理部２４０ｉは同期通信処理部２５０ｉから定周期で起動される。
【０００４】
モーション指令処理部２４０ｉの処理フローを図１２に示す。
モーション指令処理部２４０ｉ（図９）が起動されると、まず、モーション指令ＦＩＦＯ２３０ｉが空かどうかチェックする（Ｓ１００）。
モーション指令ＦＩＦＯ２３０ｉが空の場合、モーション指令処理部２４０ｉは何も処理をせずに終了する。モーション指令ＦＩＦＯ２３０ｉが空でない場合、Ｓ１１０を実行する。
Ｓ１１０では、モーション指令ＦＩＦＯ２３０ｉの先頭に格納されたモーション指令７００（図１１）を参照し、モータ５００ｊに対する時々刻々の指令値を算出する。
算出されたモータ５００ｊに対する時々刻々の指令値は、同期通信処理部２５０ｉを介して同期ネットワーク上に送出される（Ｓ１２０）。
次に、モーション指令ＦＩＦＯ２３０ｉの先頭に格納されたモーション指令が最後まで実行されたか確認する（Ｓ１３０）。
モーション指令が最後まで実行された場合、モーション指令ＦＩＦＯ２３０ｉの先頭に格納されたモーション指令をモーション指令ＦＩＦＯ２３０ｉから削除する（Ｓ１４０）。
モーション指令ＦＩＦＯ２３０ｉからモーション指令が削除されると、次のモーション指令がモーション指令ＦＩＦＯ２３０ｉの先頭に設定される。
モーション指令処理部２４０ｉが次回起動されると、モーション指令ＦＩＦＯ２３０ｉの先頭に新しく設定されたモーション指令７００が実行される。
【０００５】
図１３は同期通信処理部２５０ｉの機能ブロック図である。
図１３において、同期通信処理部２５０ｉ（図９）は、割り込みハンドラ２５１ｉ、送信用ダブルバッファ２５２ｉ、受信用ダブルバッファ２５３ｉ、通信チップ２５５ｉから構成される。
図１４は、同期ネットワークの同期フレームと通信周期を示す図である。
同期フレームＳｆが同期ネットワーク４００（図９）上を流れると、同期ネットワーク４００の１つの通信周期が始まる。同期フレームＳｆを起点とし、一定の時間を１つの通信周期Ｔとし、同期ネットワーク４００上では一定の周期Ｔで通信が行われる。割り込みハンドラ２５１ｉ（図１３）は、同期ネットワーク４００に同期フレームが流れた際に起動される。
【０００６】
図１５は、従来の割り込みハンドラの処理手順を示すフローチャートである。
割り込みハンドラ２５１ｉが起動されると、まず、送信用ダブルバッファ２５２ｉを切り替える（Ｓ５００）。
次に、通信チップ２５５ｉへ送信要求をし（Ｓ５１０）、受信用ダブルバッファ２５３ｉを切り替える（Ｓ５２０）。
最後にモーション指令処理部２４０ｉを起動する（Ｓ５３０）。
【０００７】
図１６は同期通信処理部の送信処理を示す図である。
同期通信処理部２５０ｉ（図９）にある送信用ダブルバッファ２５２ｉ（図１３）は、書き込み用と読み出し用の２面のバッファを持つ。
図１６において、送信用ダブルバッファ２５２ｉの書き込み用バッファは、モーション指令処理部２４０ｉ（図９）がモータ５００ｉ（図９）に対する指令値を書き込む際にアクセスされる。
送信用ダブルバッファ２５２ｉの読み出し用バッファは、通信チップ２５５ｉ（図１３）が同期ネットワーク４００（図９）に通信パケットを送出する際にアクセスされる。割り込みハンドラ２５１ｉ（図１３）が送信用ダブルバッファ２５２ｉを切り替えるため、周期ｔで書き込み用バッファだったバッファは、次の周期ｔ＋１で読み出し用バッファとなる。このため、周期ｔで書き込み用バッファに書き込まれたデータは、周期ｔ＋１で読み出し用バッファに移っている。周期ｔ＋１では、通信チップ２５５ｉが読み出し用バッファからデータを読み出し、同期ネットワーク４００上に通信パケットとして送出する。
【０００８】
図１７は同期通信処理部の受信処理を示す図である。
同期通信処理部２５０ｉ（図９）にある受信用ダブルバッファ２５３ｉ（図１３）は、書き込み用と読み出し用の２面のバッファを持つ。
図１７において、受信用ダブルバッファ２５３ｉの書き込み用バッファは、通信チップ２５５ｉ（図１３）が同期ネットワーク４００（図９）上の通信パケットを受信する際にアクセスされる。
受信用ダブルバッファ２５３ｉ（図１３）の読み出し用バッファは、モーション指令処理部２４０ｉ（図９）がモータ５００ｉ（図９）からの応答値を読み出す際にアクセスされる。割り込みハンドラ２５１ｉが受信用ダブルバッファ２５３ｉを切り替えるため、周期ｔで書き込み用バッファだったバッファは、次の周期ｔ＋１で読み出し用バッファとなる。このため、周期ｔで同期ネットワーク４００（図９）から受信した通信パケットは、周期ｔ＋１で読み出し用バッファに移っている。周期ｔ＋１でモーション指令処理部２４０ｉは通信パケットを読み出すことができる。
【０００９】
図９に示した従来のモーションコントロール装置において、上位コントローラ１００が複数台のモーションコントローラ２００ｉを同期させて動作させる場合を考えると、この場合、上位コントローラ１００は同期させて動作させたい複数台のモーションコントローラ２００ｉに対して、上位ネットワーク３００を介して複数台のモーションコントローラ２００ｉに上位指令を同時に送信する。ここで、上位ネットワーク３００は非同期通信であり、通信負荷によって送信されたパケットの到着時間に差異が生じる可能性があった。
また、モーションコントローラ２００ｉに搭載されたＣＰＵの負荷状況によって、上位指令解析部２２０ｉの実行が待たされる恐れがある。このため、上位コントローラ１００が複数台のモーションコントローラ２００ｉに同時に上位指令を送信しても、それぞれのモーションコントローラ２００ｉがモータ５００ｉに対して同時に指令を開始することは保証できなかった。
これに対して従来技術１では、ある時刻になったらモーション指令を駆動するように、上位コントローラがそれぞれのモーションコントローラに対して指令する方法があったが、この方法では、モーションコントローラの時刻がずれていた場合にモータを駆動するタイミングがずれてしまった。
また、従来技術２ではモーションコントローラの時刻を合わせる技術がある。これだとモーションコントローラの時刻が一致しており、かつ、特定の時刻になったらモーション指令を駆動するように準備すれば、各モーションコントローラがモータを駆動するタイミングは一致する。しかし、モーションコントローラの処理負荷や性能差などの影響により、モーションコントローラが上位コントローラから受け取った指令を一定の時間で処理することは保証できなかった。つまり、あるモーションコントローラは直ちに上位指令を処理できるが、別のモーションコントローラでは上位指令の処理に時間がかかってしまう可能性があった。このため、上位コントローラが各モーションコントローラへ上位指令を送信する時刻から、モーション指令を処理開始時刻まで十分長い時間を取る必要があった。
【００１０】
従来技術３では、スレーブに対してあらかじめ指令を渡しておき、マスタが同期信号を一斉同報し、一斉同報された同期信号を受信するとスレーブが同時に処理を始める方法がある。モーションコントローラでは、上位コントローラからの指令を受け取って動作を開始するまでの時間を保証できないため、この方法を適用した場合、マスタがスレーブに対して指令を送信し、その後に同期信号を一斉同報するまでに十分に長い時間を取る必要があった。これは従来技術２と同様に、モーションコントローラが上位コントローラから受け取った指令を一定の時間で処理できる保証が無い。
従来技術４では、複数のＣＰＵで共有する共有メモリを持ち、タイミング信号路やアドレスバスなどを用いて複数台のサーボを同期させる技術がある。
また、従来技術５では、上位装置と複数のサーボドライバ間で同期パルスを共有し、サーボドライバの内部クロックを同期させている。これらの技術によって、複数台の機器の各制御周期の開始タイミングを同期させることはできるが、複数の機器に対して指令を与えたときに処理開始が同時であることを保証することはできない。
【００１１】
従来技術６では、複数台のロボットが同期して動作する仕組みが公開されている（特許文献１参照）。例えば、２台のロボット、ロボット１とロボット２が同期する場合には次の手順で動作する。
１）ロボット１がロボット２のフラグを立てる。
２）ロボット１は自身のフラグが立つまで待機する。
３）ロボット２は自身のフラグが立ったのでフラグをクリアし、ロボット１のフラグを立て、処理を開始する。
４）ロボット１は自身のフラグが立ったのでフラグをクリアし、処理を開始する。
この手法によれば複数台のロボットがある程度同期して動作することが可能である。しかし、ロボット１とロボット２の処理周期分の同期誤差が生じる恐れがあった。
【特許文献１】特開平９−２４４７３１号公報（図１）
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明はこのような問題点に鑑みてなされたものであり、上位コントローラが複数のモーションコントローラに対して動作開始タイミングを指示する必要が無く、しかも上位コントローラから与えられた指令に基づいて複数のモーションコントローラが同期誤差無くモータを駆動することができるモーションコントロール装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記問題を解決するため、請求項１記載の上位コントローラの発明は、軌跡の種類や軌跡のパラメータを含んだ上位指令を複数台のモーションコントローラに対して生成する指令生成部と、前記指令生成部が生成した指令を前記モーションコントローラに送信する通信処理部とを備えた上位コントローラにおいて、
指令を一意に示す指令ＩＤおよび同期して動作する全ての前記モーションコントローラのモーションコントローラＩＤとを含んだ同期指令を生成する同期指令生成部を備えたことを特徴としている。
請求項２記載のモーションコントローラの発明は、指令を一意に示す指令ＩＤおよび同期して動作する全てのモーションコントローラのモーションコントローラＩＤを含んだ同期指令を上位コントローラから受信するための手段を提供する上位通信処理部と、前記上位通信処理部を介して前記上位コントローラが出した前記上位指令を受け取り、解析し、軌跡の種類や軌跡のパラメータを含んだモーション指令を生成する上位指令解析部と、前記上位指令解析部が生成したモーション指令を保持するモーション指令ＦＩＦＯと、前記モーション指令ＦＩＦＯの先頭に保持された前記モーション指令に従って接続されたモータに対する時々刻々の指令値を算出するモーション指令処理部と、前記モーション指令処理部が生成した前記モータに対する時々刻々の指令値を前記モータに送信し、前記モータからの応答値を受信する同期通信処理部とを備えたモーションコントローラにおいて、
さらに、上位ネットワークで一意な値であるモーションコントローラＩＤを格納するＩＤ格納部と、前記上位指令解析部が生成した前記同期モーション指令を他の前記モーションコントローラと同期して実行する同期モーション処理部とを備え、
かつ、前記上位指令解析部は、さらに、前記同期指令を解析し、指令を一意に示す指令ＩＤおよび同期して動作する全ての前記モーションコントローラのモーションコントローラＩＤと、同期して動作する全ての前記モーションコントローラの準備完了状態を表した準備完了フラグとを含んだ同期モーション指令を生成することを特徴としている。
請求項３記載のモーションコントロール装置の発明は、請求項１記載の上位コントローラと、請求項２記載のモーションコントローラと、前記モーションコントローラから送信された指令値を受信し、応答を送信するモータと、前記上位コントローラと複数の前記モーションコントローラを接続する上位ネットワークと、複数の前記モーションコントローラと複数の前記モータを接続する同期ネットワークとから構成されることを特徴としている。
請求項４記載のモーションコントロール装置の同期方法の発明は、複数台のモーションコントローラに対して指令を生成する指令生成部と、前記指令生成部が生成した指令を前記モーションコントローラに送信する通信処理部とを備えた上位コントローラと、前記上位コントローラと通信するための手段を提供する上位通信処理部と、前記上位通信処理部を介して前記上位コントローラが出した上位指令を受け取り解析し、動作軌跡を表すモーション指令を生成する上位指令解析部と、前記上位指令解析部が生成したモーション指令を生成された順番どおりに保持するモーション指令ＦＩＦＯと、前記モーション指令ＦＩＦＯの先頭に保持されたモーション指令に従って接続されたモータに対する時々刻々の指令値を算出するモーション指令処理部と、前記モーション指令処理部が生成した前記モータに対する時々刻々の指令値を前記モータに送信し、前記モータからの応答値を受信する同期通信処理部と、を備えたモーションコントローラと、前記モーションコントローラから送信された指令値を受信し、応答を送信するモータと、前記上位コントローラと複数の前記モーションコントローラを接続する上位ネットワークと、複数の前記モーションコントローラと複数の前記モータを接続する同期ネットワークと、から構成されるモーションコントロール装置の同期方法において、
前記モーション指令ＦＩＦＯの先頭に同期指令を検出すると準備完了パケットを前記同期ネットワーク上に送出し、準備完了パケットを他の前記モーションコントローラが受信するまで待ち、同期して動作する前記モーションコントローラの準備完了状態を表した準備完了フラグが全てｔｒｕｅになった場合に前記モータに対する時々刻々の指令値を算出する手順で処理することを特徴としている。
【発明の効果】
【００１４】
本発明によると、上位コントローラが、指令を一意に示す指令ＩＤおよび同期して動作する全てのモーションコントローラのモーションコントローラＩＤとを含んだ同期指令を生成する同期指令生成部を備え、かつ、モーションコントローラが、モーションコントローラＩＤを格納するＩＤ格納部と、同期指令を解析し、指令を一意に示す指令ＩＤおよび同期して動作する全てのモーションコントローラのモーションコントローラＩＤと、同期して動作する全てのモーションコントローラの準備完了状態を表した準備完了フラグとを含んだ同期モーション指令を生成する上位指令解析部と、上位指令解析部が生成した前記同期モーション指令を他のモーションコントローラと同期して実行する同期モーション処理部とを備えているため、上位コントローラがモーションコントローラに対して動作開始タイミングを指示する必要が無く、上位コントローラから与えられた指令に基づいて複数のモーションコントローラが同期誤差無くモータを駆動することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態について図を参照して説明する。
【実施例１】
【００１６】
図１は、本発明のモーションコントロール装置のブロック図である。
図において、１は本発明のモーションコントロール装置、１００は上位コントローラであり、２００ｉ（ｉは正の整数）は複数台のモーションコントローラ、３００は上位ネットワーク、４００は同期ネットワーク、５００ｊは複数台のモータ５００ｊ（ｊは正の整数）である。
上位コントローラ１００は、指令生成部１１０で各モーションコントローラ２００ｉへの上位指令を生成する。上位指令の例は既に図１０で説明したとおりである。
そこで、複数台のモーションコントローラ２００ｉを同期させて動作させる場合は、本発明によって設けられた同期指令生成部１１５が複数台のモーションコントローラ２００ｉを同期させて動作させるための同期指令を生成する。
図２は同期指令の例を示す図である。同期指令には、指令を一意に示す指令ＩＤと、同期して動作する全てのモーションコントローラのモーションコントローラＩＤとが本発明によって設けられ、その他は従来の上位指令（図１０参照）と同じく、軌跡の種類と、軌跡のパラメータとが含まれている。
このようにして同期指令生成部１１５（図１）で生成された上位指令６００または同期指令６１０は、モーションコントローラ２００ｉへ上位ネットワーク３００を通じて通信処理部１２０によって送信される。
【００１７】
次に、本発明におけるモーションコントローラ２００ｉについて説明する。
上位通信処理部２１０ｉおよび上位指令解析部２２０ｉが扱うモーション指令７００については従来装置で図１１で説明したので割愛する。
上位指令解析部は、同期指令６１０（図２）から同期モーション指令（図３）を生成する。
図３は同期モーション指令の例を示している。
同期モーション指令７１０には従来のモーション指令７００にあった「軌跡の種類」と「軌跡のパラメータ」を含む他に、本発明により、指令を一意に示す指令ＩＤと、同期して動作する全てのモーションコントローラのモーションコントローラＩＤと、同期して動作する全てのモーションコントローラの準備完了状態を表した準備完了フラグを含む。指令ＩＤとモーションコントローラＩＤは同期指令からコピーされる。準備完了フラグはｆａｌｓｅに初期化される。生成されたモーション指令７００（図１１）または同期モーション指令７１０（図３）は、次のモーション指令ＦＩＦＯ２３０ｉに格納される。モーション指令ＦＩＦＯ２３０ｉでは、モーション指令が先入れ先出し方式で管理されている。
【００１８】
モーション指令処理部２４０ｉは同期モーション処理部２６０ｉから起動される。モーション指令処理部２４０ｉの処理フローは図１２で説明したので割愛する。そこで、同期モーション処理部２６０ｉの処理フローを図４に示す。
図４の処理フローは同期モーション処理部２６０ｉが１通信周期内で実行する処理のフローを示している。つまり、毎通信周期、図４の処理フローが繰り返される。図において、同期モーション処理部２６０ｉは同期通信処理部２５０ｉから定周期で起動される。同期通信処理部２５０ｉから起動された同期モーション処理部２６０ｉは、受信用ダブルバッファ２５３ｉに準備完了パケット（図５）が含まれているか確認する（Ｓ２００）。
図５は準備完了パケットを示す図である。図において、８００は準備完了パケットで、この準備完了パケット８００には、指令ＩＤとモーションコントローラＩＤが含まれている。
そこで、図４のフローに戻って、受信用ダブルバッファ２５３ｉに準備完了パケットが含まれている場合、準備完了パケットに含まれている指令ＩＤと一致する同期モーション指令をモーション指令ＦＩＦＯ２３０ｉから検索し、発見した同期モーション指令の中にあるモーションコントローラ（図ではＭＣと略記）ＩＤが一致するモーションコントローラの準備完了フラグをｔｒｕｅに設定する（Ｓ２１０）。
次に、モーション指令ＦＩＦＯ２３０ｉの先頭が同期モーション指令かどうかチェックする（Ｓ２２０）。モーション指令ＦＩＦＯ２３０ｉの先頭が同期モーション指令でない場合、Ｓ４００でモーション指令処理部２４０ｉを起動し、同期モーション処理部２６０ｉの処理は完了する。モーション指令ＦＩＦＯ２３０ｉの先頭が同期モーション指令である場合、Ｓ２３０へ処理を進める。
Ｓ２３０では、待ちカウンタの値をチェックする。待ちカウンタは、モーションコントローラ２００ｉが起動する際に０クリアされるカウンタである。待ちカウンタの値が０でない場合、待ちカウンタの値を１つ減らし（Ｓ２４０）、同期モーション処理部２６０ｉの処理は完了する。待ちカウンタの値が０の場合、モーション指令ＦＩＦＯ２３０ｉの先頭にある同期モーション指令の準備完了フラグがすべてｔｒｕｅであるかチェックする（Ｓ２５０）。
準備完了フラグがすべてｔｒｕｅであれば、Ｓ４００でモーション指令処理部２４０ｉを起動し、同期モーション処理部２６０ｉの処理は完了する。準備完了フラグがすべてｔｒｕｅでない場合、ＩＤ格納部２７０ｉから自モーションコントローラＩＤを読み出し、同期モーション指令の中でモーションコントローラＩＤが一致する準備完了フラグをチェックする（Ｓ２６０）。
モーションコントローラＩＤが一致する準備完了フラグがｔｒｕｅの場合は同期モーション処理部２６０ｉの処理は完了する。
準備完了フラグがｆａｌｓｅの場合、Ｓ２７０、Ｓ２８０、Ｓ２９０を実行する。
Ｓ２７０では、同期モーション指令の中でモーションコントローラＩＤが自モーションコントローラＩＤと一致する準備完了フラグをｔｒｕｅに設定する。Ｓ２８０では、同期モーション指令に含まれている指令ＩＤと、ＩＤ格納部２７０ｉから読み出した自モーションコントローラＩＤと、を使用して準備完了パケットを作成し、作成した準備完了パケットを同期通信処理部２５０ｉの送信用ダブルバッファ２５２ｉに書き込む。Ｓ２９０では、待ちカウンタの値を１に設定する。
以上が同期モーション処理部２６０ｉが１通信周期で実行する処理のフローである。次の通信周期では再び図４のフローが繰り返される。
【００１９】
同期通信処理部２５０ｉにおける本発明による割り込みハンドラの処理手順について図６に基づいて説明する。図において、割り込みハンドラ２５１ｉが起動されると、まず、送信用ダブルバッファ２５２ｉ（図１３）を切り替える（Ｓ５００）。
次に、通信チップ２５５ｉ（図１３）へ送信要求をし（Ｓ５１０）、受信用ダブルバッファ２５３ｉ（図１３）を切り替える（Ｓ５２０）。
最後に同期モーション処理部２６０ｉ（図１）を起動する（Ｓ５３５）。
【００２０】
送信用ダブルバッファ２５２ｉは、書き込み用と読み出し用の２面のバッファを持つ（図１６）。送信用ダブルバッファ２５２ｉの書き込み用バッファは、モーション指令処理部２４０ｉがモータに対する指令値を書き込む際にアクセスされる。また、送信用ダブルバッファ２５２ｉの書き込み用バッファは、同期モーション処理部２６０ｉが準備完了パケットを書き込む際にもアクセスされる。送信用ダブルバッファ２５２ｉの読み出し用バッファは、通信チップ２５５ｉが同期ネットワーク４００に通信パケットを送出する際にアクセスされる。割り込みハンドラ２５１ｉが送信用ダブルバッファ２５２ｉを切り替えるため、周期ｔで書き込み用バッファだったバッファは、次の周期ｔ＋１で読み出し用バッファとなる。このため、周期ｔで書き込み用バッファに書き込まれたデータは、周期ｔ＋１で読み出し用バッファに移っている。周期ｔ＋１では、通信チップ２５５ｉが読み出し用バッファからデータを読み出し、同期ネットワーク４００上に通信パケットとして送出する。
【００２１】
受信用ダブルバッファ２５３ｉは、書き込み用と読み出し用の２面のバッファを持つ（図１７）。受信用ダブルバッファ２５３ｉの書き込み用バッファは、通信チップ２５５ｉが同期ネットワーク４００上の通信パケットを受信する際にアクセスされる。受信用ダブルバッファ２５３ｉの読み出し用バッファは、モーション指令処理部２４０ｉがモータからの応答値を読み出す際にアクセスされる。また、他のモーションコントローラから送信された準備完了パケットを同期モーション処理部２６０ｉが読み出す際にもアクセスされる。割り込みハンドラ２５１ｉが受信用ダブルバッファ２５３ｉを切り替えるため、周期ｔで書き込み用バッファだったバッファは、次の周期ｔ＋１で読み出し用バッファとなる。このため、周期ｔで同期ネットワーク４００から受信した通信パケットは、周期ｔ＋１で読み出し用バッファに移っている。周期ｔ＋１において、モーション指令処理部２４０ｉや同期モーション処理部２６０ｉは通信パケットを読み出すことができる。
【００２２】
図７は２台のモーションコントローラ（図１のモーションコントローラ１とモーションコントローラ２）の動作例を示したものである。ただし、モーションコントローラ１，２とモータ５００ｉ（図１）との間で送受信される通信パケットは省略している。
モーションコントローラ１のモーション指令ＦＩＦＯ（図１の２３０１）にはモーション指令Ａと同期モーション指令Ｘが格納されている。
周期ｔにおいて、モーションコントローラ１のモーション指令ＦＩＦＯの先頭（矢印方向）にはモーション指令Ａが設定されている。
同期モーション指令Ｘの指令ＩＤは１２３であり、モーションコントローラ１とモーションコントローラ２が同期して動作することを示している。周期ｔおける同期モーション指令Ｘでは、モーションコントローラ１の準備完了フラグ（ＭＣ１）およびモーションコントローラ２の準備完了フラグ（ＭＣ２）が共にｆａｌｓｅに設定されている。
一方、モーションコントローラ２のモーション指令ＦＩＦＯ（図１の２３０２）にはモーション指令Ｂと同期モーション指令Ｙが格納されている。
周期ｔにおいて、モーションコントローラ２のモーション指令ＦＩＦＯの先頭（矢印方向）にはモーション指令Ｂが設定されている。
同期モーション指令Ｙの指令ＩＤは１２３であり、モーションコントローラ１とモーションコントローラ２が同期して動作することを示している。周期ｔおける同期モーション指令Ｙでは、モーションコントローラ１の準備完了フラグ（ＭＣ１）およびモーションコントローラ２の準備完了フラグ（ＭＣ２）が共にｆａｌｓｅに設定されている。
【００２３】
次に、図７におけるモーションコントローラ１の動作を説明する。
モーションコントローラ１のモーション指令Ａが周期ｔで完了すると仮定する。図４の処理フローのステップＳ２２０により、周期ｔではＦＩＦＯの先頭がモーション指令Ａであって同期モーション指令ではないのでステップＳ４００に進み、モーションコントローラ１の同期モーション処理部２６０１（図１）がモーション指令処理部２４０１（図１）を起動する。
起動されたモーション指令処理部は図１２の処理フローに従い、ステップＳ１３０でモーション指令Ａの最後の指令値を送信用ダブルバッファに書込み、ステップＳ１４０でモーション指令Ａをモーション指令ＦＩＦＯから削除する。これにより、周期ｔ＋１において、モーションコントローラ１のモーション指令ＦＩＦＯの先頭には同期モーション指令Ｘが設定される。
周期ｔ＋１では、モーションコントローラ１の同期モーション処理部２６０１は自モーションコントローラＩＤの１をＩＤ格納部２７０１（図１）より読み出し、同期モーション指令Ｘの自モーションコントローラＩＤと一致する準備完了フラグＭＣ１をｔｒｕｅに設定する。
また、同期モーション指令Ｘの指令ＩＤである１２３とモーションコントローラＩＤである１を含んだ準備完了パケット８００（図５）を送信用ダブルバッファの書込み用バッファに書き込む（これを図でハッチングで示す。）。周期ｔ＋１に送信用ダブルバッファの書込み用バッファにへ書き込まれた準備完了パケット８００は周期ｔ＋２に同期ネットワーク上へ送出される（これを図でハッチングで示す。）。
また、周期ｔ＋１においてモーションコントローラ１の待ちカウンタが１に設定され、周期ｔ＋２において待ちカウンタがデクリメントされて０となる。
続く周期ｔ＋３以降では、同期モーション指令Ｘに含まれるすべての準備完了フラグがチェックされるが、モーションコントローラ２の準備完了フラグＭＣ２がｆａｌｓｅであるため、同期モーション指令部２６０１はモーション指令処理部２４０１を起動しない。
【００２４】
次に、図７におけるモーションコントローラ２の動作を説明する。
周期ｔ＋２において、モーションコントローラ２の受信用ダブルバッファの書込み用バッファにモーションコントローラ１から送信された準備完了パケット８００が受信される。この準備完了パケット８００には指令ＩＤの１２３とモーションコントローラＩＤの１が含まれている。周期ｔ＋３において、モーションコントローラ２の同期モーション処理部２６０２（図１）が準備完了パケット８００を参照し、指令ＩＤが一致する同期モーション指令Ｙに含まれているモーションコントローラ１の準備完了フラグをｔｒｕｅに設定する。続く周期では、指令Ｂが完了するまで同期モーション指令部２６０２はモーション指令処理部２４０２を起動する。
【００２５】
図８は図７からＮ周期後の周期ｔ’における２台のモーションコントローラ（モーションコントローラ１とモーションコントローラ２）の動作例を示している。図８でも図７と同じように、モーションコントローラとモータとの間で送受信される通信パケットは省略している。
図８におけるモーションコントローラ２の動作を説明する。
モーションコントローラ２のモーション指令Ｂが周期ｔ’で完了すると仮定する。図４の処理フローのステップＳ２２０により、周期ｔ’ではＦＩＦＯの先頭がモーション指令Ｂで同期モーション指令でないのでステップＳ４００に進み、モーションコントローラ２の同期モーション処理部２６０２（図１）がモーション指令処理部２４０２（図１）を起動する。
起動されたモーション指令処理部２４０２は図１２の処理フローに従い、ステップＳ１３０でモーション指令Ｂの最後の指令値を送信用ダブルバッファに書込み、ステップＳ１４０でモーション指令Ｂをモーション指令ＦＩＦＯから削除する。これにより、周期ｔ’＋１において、モーションコントローラ２のモーション指令ＦＩＦＯの先頭には同期モーション指令Ｙが設定される。
周期ｔ’＋１では、モーションコントローラ２の同期モーション処理部２６０２は自モーションコントローラＩＤの２をＩＤ格納部より読み出し、同期モーション指令Ｙの自モーションコントローラＩＤと一致する準備完了フラグＭＣ１をｔｒｕｅに設定する。
また、同期モーション指令Ｙの指令ＩＤである１２３とモーションコントローラＩＤである２を含んだ準備完了パケット８００（図５）を送信用ダブルバッファに書き込む。周期ｔ’＋１に送信用ダブルバッファへ書き込まれた準備完了パケット８００は周期ｔ’＋２に同期ネットワーク上へ送出される。また、周期ｔ’＋１においてモーションコントローラ２の待ちカウンタが１に設定され、周期ｔ’＋２において待ちカウンタがデクリメントされて０となる。
周期ｔ’＋３において、同期モーション指令Ｙに含まれるすべての準備完了フラグＭＣ１，ＭＣ２がｔｒｕｅであるため、周期ｔ’＋３からモーション指令処理部２４０２が起動される。周期ｔ’＋３以降、モーション指令処理部２４０２は図１２の処理フローに従い、モーション指令Ｙの指令値を送信用ダブルバッファに書込む。
【００２６】
図８におけるモーションコントローラ１の動作を説明する。
周期ｔ’＋２において、モーションコントローラ１の受信用ダブルバッファに、モーションコントローラ２から送信された準備完了パケット８００が受信される。この準備完了パケット８００には指令ＩＤの１２３とモーションコントローラＩＤの２が含まれている。周期ｔ’＋３において、モーションコントローラ２の同期モーション処理部２６０２が準備完了パケット８００を参照し、指令ＩＤが一致する同期モーション指令Ｘに含まれているモーションコントローラ２の準備完了フラグＭＣ２をｔｒｕｅに設定する。ここで、同期モーション指令Ｘに含まれるすべての準備完了フラグＭＣ１，ＭＣ２がｔｒｕｅとなるので、周期ｔ’＋３から同期モーション処理部２６０１はモーション指令処理部２４０１を起動する。周期ｔ’＋３以降、モーション指令処理部２４０１は図１２の処理フローに従い、モーション指令Ｘの指令値を送信用ダブルバッファに書込む。
【００２７】
以上ではモーションコントローラ２台についてのみ説明したが、同様の手順で２台以上のモーションコントローラで同期することが可能である。
以上で説明したように、本発明によれば、上位コントローラがモーションコントローラに対して動作開始タイミングを指示する必要が無く、複数のモーションコントローラが上位コントローラから与えられた指令に基づいて同期誤差無くモータを駆動することができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の第１実施例を示すモーションコントロール装置のブロック図である。
【図２】同期指令の例を示す図である。
【図３】同期モーション指令の例を示す図である。
【図４】同期モーション処理部の処理手順を示すフローチャートである。
【図５】準備完了パケットを示す図である。
【図６】本発明における同期通信処理部の割り込みハンドラの処理手順を示すフローチャートである。
【図７】２台のモーションコントローラの第１の動作例を示す図である。
【図８】２台のモーションコントローラの第２の動作例を示す図である。
【図９】従来のモーションコントロール装置のブロック図である。
【図１０】上位指令の例を示す図である。
【図１１】モーション指令の例を示す図である。
【図１２】モーション指令処理部の処理手順を示すフローチャートである。
【図１３】同期通信処理部のブロック図である。
【図１４】同期ネットワークの同期フレームと通信周期を示す図である。
【図１５】従来の割り込みハンドラの処理手順を示すフローチャートである。
【図１６】同期通信処理部の送信処理を示す図である。
【図１７】同期通信処理部の受信処理を示す図である。
【符号の説明】
【００２９】
１  本発明のモーションコントロール装置
１００  上位コントローラ
１１０  指令生成部
１１５  同期指令生成部
１２０  通信処理部
２００ｉ  モーションコントローラ
２１０ｉ  上位通信処理部
２２０ｉ  上位指令解析部
２３０ｉ  モーション指令ＦＩＦＯ
２４０ｉ  モーション指令処理部
２５０ｉ  同期通信処理部
２５１ｉ  割り込みハンドラ
２５２ｉ  送信用ダブルバッファ
２５３ｉ  受信用ダブルバッファ
２５５ｉ  通信チップ
２６０ｉ  同期モーション処理部
２７０ｉ  ＩＤ格納部
３００  上位ネットワーク
４００  同期ネットワーク
５００ｊ  モータ
６００  上位指令の例
６１０  同期指令の例
７００  モーション指令の例
７１０  同期モーション指令の例
８００  準備完了パケット
【図１】
2009009409.tif 000003
【図２】
2009009409.tif 000004
【図３】
2009009409.tif 000005
【図４】
2009009409.tif 000006
【図５】
2009009409.tif 000007
【図６】
2009009409.tif 000008
【図７】
2009009409.tif 000009
【図８】
2009009409.tif 000010
【図９】
2009009409.tif 000011
【図１０】
2009009409.tif 000012
【図１１】
2009009409.tif 000013
【図１２】
2009009409.tif 000014
【図１３】
2009009409.tif 000015
【図１４】
2009009409.tif 000016
【図１５】
2009009409.tif 000017
【図１６】
2009009409.tif 000018
【図１７】
2009009409.tif 000019