(57)【特許請求の範囲】
【請求項１】
ネットワークに接続されたサーボコントローラと、複数の制御対象の軸であるサーボドライバとの間で時間的に複数の通信フェーズに分けて、繰返しデータ伝送を行い、サーボコントローラがサーボドライバに接続されたサーボモータそれぞれの状態を示す軸データを受信するとともにサーボモータそれぞれに対する制御指令データを送信することによりサーボモータの動作を制御するシステムにおけるサーボコントローラであって、
ＣＰＵと通信部とを含み、
前記通信部は、１つの通信フェーズにおいて、サーボモータの状態を示す軸データを受信すると、予め記憶保持された前記軸毎に割り当てられたアドレス情報に基づいて、受信した軸データを、その割り当てられた受信データ用メモリのアドレス領域に格納するとともに、送信データ用メモリに格納された前記ＣＰＵからの前記制御指令データをサーボドライバへ送信する機能を備え、
前記ＣＰＵは、予め確定した通信フェーズ数の繰返しの中で、フェーズ番号を制御することによって現在の通信フェーズ番号から今回の通信フェーズで制御対象となるサーボモータを特定し、繰返される通信フェーズにおいて、前記特定した制御対象となるサーボモータの軸データを、予め記憶保持されたフェーズ番号に対応した軸毎に割り当てられたメモリのアドレス情報に基づいて前記受信データ用メモリから取り込み、取り込んだ軸データに基づいて制御指令データを生成し、その生成した制御指令データを送信データ用メモリへ格納する機能を備えた
ことを特徴とするサーボコントローラ。
【請求項２】
前記予め記憶保持されたフェーズ番号に対応した前記軸毎に割り当てられたメモリのアドレス情報は、
１つの通信フェーズにおいてデータ伝送の対象となる前記軸データに対しては、その軸毎に前記メモリ上の異なる領域に割り当てるとともに、
異なる通信フェーズのそれぞれにおいてデータ伝送の対象となる前記軸データ同士については、割り当て領域を共有して割り当てることを特徴とする請求項１記載のサーボコントローラ。
【請求項３】
前記通信部は、軸毎に、１つの通信フェーズにおいて新たにデータを書き込んだか否かのステータス情報を記憶する受信データステータス記憶手段を備え、前記メモリの対応するアドレスに前記軸データを格納した際に、対応する軸データのステータス情報をデータ書き込み済みにするようにしたものであり、
前記ＣＰＵは、前記受信データステータス記憶手段のステータス情報を参照し、データ書き込み済みである旨を認識した軸データのみを前記メモリから読み出し、読み出しを行ったならば該当するステータス情報の設定をクリアすることを特徴とする
請求項１または２に記載のサーボコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ネットワークに接続されるサーボコントローラに関するものである。
【０００２】
【従来の技術】
サーボモータをネットワークを介してコントロールしようとした場合、例えば、図１に示すように、サーボモータ１に対して通電したり、サーボモータ１の状態（回転角等）を取得するサーボドライバ２と、そのサーボドライバ２とデータ伝送を行うサーボコントローラ３をネットワーク４に接続し、上記データ伝送は、係るネットワーク４を介して行うようなシステムが想定できる。
【０００３】
ここで、サーボコントローラ３からサーボドライバ２に向けて伝送するデータは、制御指令データである。サーボドライバ２は、受け取った制御指令データに従い、サーボモータ１に対する通電量その他を制御し、サーボモータ１が制御指令に即した動作をするように制御する。
【０００４】
また、サーボドライバ２は、サーボモータ１の所定位置に設けたセンサの出力から、サーボモータ１の回転角などの状態を取得するので、係るサーボモータ１の状態を、制御フィードバックデータとしてサーボコントローラ３にデータ伝送する。そして、その制御フィードバックデータを受け取ったサーボコントローラ３は、その受け取ったデータに基づいて次の制御指令データを生成し出力する。以後、上記処理を繰り返し実行することにより、サーボコントローラ３がサーボモータ１の動作をネットワーク４を介して制御することができる。
【０００５】
ところで、それらサーボドライバ２，サーボコントローラ３の各ノードは、いずれもネットワーク４に接続されて通信を行うことから、その内部構造は、通信ＬＳＩ５と、ＣＰＵ６を有している。
【０００６】
そして、通信ＬＳＩ５では、自己宛に送られてきた受信データを取得するとともに、本来のデータ部分をＣＰＵ６に渡したり、ＣＰＵ６から渡された送信用のデータに対し、送信先その他のヘッダ情報を付加して送信データを生成するとともに、所定のタイミングでネットワーク４上に送信したりする機能を有する。ＣＰＵ６は、受信したデータに基づき各ノードの本体の処理を実行し、必要に応じて送信データを生成し、通信ＬＳＩ５に渡す機能を有する。
【０００７】
ところで、ノード内における通信ＬＳＩ５からＣＰＵ６へ受信したデータを転送する場合、実際には、図２に示すように、共有メモリである受信データ用メモリ７を介して行われる。つまり、通信ＬＳＩ５は、受信データを受信データ用メモリ７に転送し、ＣＰＵ６は、その受信データ用メモリ７に格納されたデータを取得する処理を行う。これにより、通信ＬＳＩ５とＣＰＵ６は、それぞれ所定のタイミングで受信データ用メモリ７にアクセスし、データの送受を行うことができる。
【０００８】
また、本システムのネットワーク４では、通信可能な時期が決まっており、通信ＬＳＩ５は、割り当てられた所定のタイミングでデータの送受を行うようになっている。従って、受信データ用メモリ７内の「受信データ１」，「受信データ２」，…「受信データｎ」は、今回の受信処理で受信できた各ノード毎の受信データである。つまり、例えばノードがサーボコントローラ３であり、サーボドライバ２の２つのサーボモータ１からのデータは、１つの受信データ内に格納される。よって、各回毎にｎの値は異なることはある。
【０００９】
一方、受信データのデータフォーマットの一例を示すと、図３に示すように、ヘッダ部とデータ部に分かれている。ヘッダ部には送信先ノードアドレスや送信元ノードアドレス並びにそれに続くデータ部がどこまでかを特定するためのデータ長などが格納される。そして、データ部に、実際のサーボモータの状態などの伝送すべきデータが格納される。なお、係るフォーマット自体は一般的なものである。
【００１０】
さらに、１つの受信データは、ノード単位となっているので、１つのノードに複数のサーボモータ１が接続されている場合には、その複数のサーボモータ１についてのデータが一緒に格納される。なお、各サーボモータに関するデータを軸データと称する。なお、サーボモータに関するデータとしては、例えば、速度データや位置データがある。つまり、サーボドライバがサーボモータの速度制御をする場合には、軸データとして速度データを用いる。また、位置制御をする場合には、軸データとして位置データを用いる。
【００１１】
また、サーボコントローラ３からのデータは、軸データである。従って、図１に示すサーボドライバ２から送られてきた受信データは、図３（ｂ）の表現形式をとると、軸データヘッダ部と軸データの組が３組格納されることになる。
【００１２】
一方、受信データ用メモリ７に格納されたデータをＣＰＵ６が読み出すための処理アルゴリズムは、図４に示すようになっている。すなわち、まず、データが受信されるのを待ち（ＳＴ１）、受信完了（たとえば、所定の通信時間終了）された場合には、受信データ処理を行う（ＳＴ２）。つまり、ヘッダ部のデータ長を参照し、その受信データのデータ部分を抽出する処理等を行う。
【００１３】
次いで、データ部分の各受信データのデータ部に含まれる軸データの処理を行う。つまり、軸データヘッダ部を解釈し、どの軸データについてのデータでそのデータ長がいくつであるかなどを判断する（ＳＴ３）。そして、順番に１つの軸データを取得し、その軸データの処理を行う（ＳＴ４）。係る軸データ処理を、処理対象の受信データに含まれる軸データについて順次実行する。そして、全ての軸データの処理を実行したならば（ＳＴ５の分岐判断でＹｅｓ）、ステップ６に進み、今回受信した全ての受信データ、つまり、受信データ用メモリ７に格納された全てのデータに対する処理を行ったか否かを判断する（ＳＴ６）。そして、未処理の受信データがあると、それに対してステップ２からの処理を実行する。このようにして全ての受信データについての処理を実行すると、今回の受信処理を終了する。
【００１４】
なお、実際には、上記したフローチャートに示す処理は、受信データ用メモリ７に対して逐次アクセスして行うのではなく、最初にデータ転送を行い受信データ用メモリ７に格納されたデータをＣＰＵ６内の作業メモリ内に格納し、その作業メモリに対してアクセスすることにより実行する。また、ドライバソフト６ａが受信データ内の軸データを識別している。
【００１５】
【発明が解決しようとする課題】
しかしながら、上記した従来の装置では、ドライバソフト６ａが受信データ内の軸データを識別するため、データ受信から最終的な軸データの識別までに、非常に時間がかかってしまう。そのため、ＣＰＵ６上のプログラムの処理が増えてしまい、プログラムが複雑化するばかりでなく、ＣＰＵ６の負荷が増大してしまい、高速な処理に対応しきれなくなる。しかも、上記したように、受信データ用メモリ７からＣＰＵ６にデータ転送を行うため、ＣＰＵ６に負荷が更にかかり上記した問題はより顕著となる。
【００１６】
さらに、１回の受信処理で受信する軸データ数は不定であるが、最大は全てのサーボドライバ（軸データ）を受信することがあるので、使用する受信データ用メモリ７のメモリ容量は、制御対象の軸の数分だけ用意する必要があり、係る軸数の増加に伴いメモリ資源も増大してしまうという問題も生じる。
【００１７】
この発明は、共有メモリに格納された軸データをコントローラに読み出す際に、そのコントローラ（ＣＰＵ）の負荷を低減するとともに、使用するメモリ容量の削減を図ることができ、ノードひいてはネットワーク全体のスムーズなデータ伝送を可能にするサーボコントローラを提供することを目的とする。
【００１８】
【課題を解決するための手段】
この発明によるサーボコントローラは、ネットワークに接続されたサーボコントローラと、複数の制御対象の軸である複数のサーボドライバとの間で時間的に複数の通信フェーズに分けて、繰返しデータ伝送を行い、サーボコントローラがサーボドライバに接続されたサーボモータの状態を示す軸デーを受信するとともにサーボモータそれぞれに対する制御指令データを送信することによりサーボモータそれぞれの動作を制御するシステムにおけるサーボコントローラであって、ＣＰＵと通信部とを含む。そして、通信部は、１つの通信フェーズにおいて、サーボモータの状態を示す軸データを受信すると、予め記憶保持された前記軸毎に割り当てられたアドレス情報に基づいて、受信した軸データを、その割り当てられた受信データ用メモリのアドレス領域に格納するとともに、送信データ用メモリに格納された前記ＣＰＵからの前記制御指令データをサーボドライバへ送信する機能を備える。また、ＣＰＵは、予め確定した通信フェーズ数の繰返しの中で、フェーズ番号を制御することによって現在の通信フェーズ番号から今回の通信フェーズで制御対象となるサーボモータ（軸）を特定し、繰返される通信フェーズにおいて、前記特定した制御対象となるサーボモータの軸データを、予め記憶保持されたフェーズ番号に対応した軸毎に割り当てられたメモリのアドレス情報に基づいて前記受信データ用メモリから取り込み、取り込んだ軸データに基づいて制御指令データを生成し、その生成した制御指令データを送信データ用メモリへ格納する機能を備えるようにした。フェーズ管理機能は、フェーズ管理部２２に対応する。
【００１９】
前記予め記憶保持されたフェーズ番号に対応した前記軸毎に割り当てられたメモリのアドレス情報は、１つの通信フェーズにおいてデータ伝送の対象となる前記軸データに対しては、その軸毎に前記メモリ上の異なる領域に割り当てるとともに、異なる通信フェーズのそれぞれにおいてデータ伝送の対象となる前記軸データ同士については、割り当て領域を共有して割り当てるようにすると良い。
【００２０】
前記通信部は、軸毎に、１つの通信フェーズにおいて新たにデータを書き込んだか否かのステータス情報を記憶する受信データステータス記憶手段を備え、前記メモリの対応するアドレスに前記軸データを格納した際に、対応する軸データのステータス情報をデータ書き込み済みにするようにしたものであり、前記ＣＰＵは、前記受信データステータス記憶手段のステータス情報を参照し、データ書き込み済みである旨を認識した軸データのみを前記メモリから読み出し、読み出しを行ったならば該当するステータス情報の設定をクリアするように構成すると良い。ステータス情報を確認することにより、軸データの内容が更新されたもののみをコントローラ（ＣＰＵ）が読み出すことができる。よって、更新されていない軸データの無駄な読み出しをしなくて済むので、コントローラの負荷が更に軽減される。
【００２２】
この発明によれば、通信装置（通信部）が、軸データを軸毎に共有メモリの所定領域に格納するので、コントローラ（ＣＰＵ）側で軸データヘッダ部を解釈する必要がなくなり、データ受信から軸データ抽出までを高速に行え、プログラムを単純化でき、コントローラ（ＣＰＵ）の負荷を削減できる。なお、通信装置側はその分負荷が増えるものの、コントローラに比べると、処理する全体量が少ないので、十分対処できる。
【００２３】
しかも、本発明では、前記ネットワークに接続される各軸（サーボモータ）の軸データは、複数のフェーズに分けて送受信するとともに、前記軸ごとに記憶する領域は、同一のフェーズで送受信される軸データに対しては前記共有メモリ上の異なる領域に割り当てるとともに、異なるフェーズで送受信する軸データ同士は、同一の領域に割り当てるようにしているので、共有メモリの一つの領域が複数の軸（サーボモータ）の軸データで共有される。その結果、軸（サーボモータ）の総数に比べて、使用するメモリ容量が少なくなる。
【００２４】
さらに、軸データを転送，格納する領域を特定し、専用領域とすることにより、共有メモリに格納された受信データを、一旦コントローラ側へ転送する必要もなくなり、軸データを受信データ用の記憶部からコントローラ側のメモリエリアへ転送する処理の必要がなくなり、その点でも処理を高速化できる。
【００２７】
さらにまた、軸毎に、データ転送先のコントローラが使用するか否かの情報を記憶する受信制御記憶部を設け、前記データ格納手段は、前記受信制御記憶部をアクセスし、使用する軸データのみを前記共有メモリに格納するようにすると好ましい。
【００２８】
係る構成によると、コントローラが必要とする軸データのみが共有メモリに登録されるので、通信装置は不要な軸データを受け取ったとしても、共有メモリに書き込む必要が無く、負荷が軽減される。
【００３０】
この発明の以上説明した構成要素は可能な限り組み合わせることができる。この発明によるサーボコントローラを構成する各手段を専用のハードウェア回路によって実現することができるし、プログラムされたコンピュータによって実現することもできる。
【００３１】
【発明の実施の形態】
図５は、本発明が適用されるネットワークの一例を示している。図１と比較すると明らかなように、基本的なハードウェア構成は、従来と同様である。すなわち、サーボモータ１に対して通電したり、サーボモータ１の状態（回転角等）を取得するサーボドライバ２と、そのサーボドライバ２とデータ伝送を行うサーボコントローラ３をネットワーク４に接続し、上記データ伝送は、係るネットワーク４を介して行う。
【００３２】
そして、サーボコントローラ３からサーボドライバ２に向けて制御指令データを送り、サーボドライバ２は、受け取った制御指令データに従い、サーボモータ１に対する通電量その他を制御し、サーボモータ１が制御指令に即した動作をするように制御する。
【００３３】
また、サーボドライバ２は、サーボモータ１の所定位置に設けたセンサの出力から、サーボモータ１の回転角などの状態を取得するので、係るサーボモータ１の状態を、前記制御指令データに対するレスポンスとして、制御フィードバックデータをサーボコントローラ３にデータ伝送する。そして、その制御フィードバックデータを受け取ったサーボコントローラ３は、その受け取ったデータに基づいて次の制御指令データを生成し出力する。以後、上記処理を繰り返し実行することにより、サーボコントローラ３がサーボモータ１の動作をネットワーク４を介して制御することができる。
【００３４】
ここで、本実施の形態では、各サーボドライバ２が１つのサーボモータを制御するようにしている。さらに、フェーズ管理を行い、制御指令データ，制御フィードバックデータの送受信を複数のフェーズに分けて実行するようにしている。すなわち、図５に示すように制御対象の軸（サーボドライバ２）が４軸有り、それを２つのフェーズに分けて送受信する場合を想定すると、例えば図６に示すように、まず第１のフェーズではサーボコントローラ３から、軸１，軸２のサーボドライバに対して制御指令データを送り、そのレスポンスとして軸１と軸２のサーボドライバ２から制御フィードバックデータがサーボコントローラ３に向けて送られる。この第１フェーズでは、軸３，軸４のサーボドライバ２とサーボコントローラ３との間ではデータの送受信は行われない。そして、次の第２フェーズでは、サーボコントローラ３から、軸３，軸４のサーボドライバ２に対して制御指令データを送り、そのレスポンスとして軸３と軸４のサーボドライバ２から制御フィードバックデータがサーボコントローラ３に向けて送られる。この第２フェーズでは、軸１，軸２のサーボドライバ２とサーボコントローラ３との間ではデータの送受信は行われない。
【００３５】
以後、上記処理を繰り返し行うことにより、２回のフェーズで全ての軸データの送受が行える。もちろん、各フェーズで送受対称となる軸データは、任意の組み合わせを取ることができ、また、フェーズの分割数も任意である（送受信対象の軸の総数等から決定する）。
【００３６】
図７は、本発明の好適な一実施の形態を示している。同図に示すように、本実施の形態のノードは、サーボコントローラ３であって、通信ＬＳＩ１０と、ＣＰＵ２０を備えている。
【００３７】
そして、通信ＬＳＩ１０は、各種のデータ処理を行う制御部１１と、記憶部１２を有している。つまり、本形態では、受信データを一時的に記憶する共有メモリも、通信ＬＳＩ１０内に設けている。また、本発明では、通信ＬＳＩ１０の通信処理にＩＥＥＥ１３９４を利用している。良く知られているように、ＩＥＥＥ１３９４には、定期的に優先に送信されるＩｓｏｃｈｒｏｎｏｕｓ  Ｐａｃｋｅｔ、と非同期メッセージとしてＡｓｙｎｃｈｒｏｎｏｕｓ  Ｐａｃｋｅｔがある。Ｉｓｏｃｈｒｏｎｏｕｓ  Ｐａｃｋｅｔは、同期パケットで各局が定期的（送信サイクルが１２５μｓｅｃ毎）に送信できる。本発明では、軸データをＩｓｏｃｈｒｏｎｏｕｓ  Ｐａｃｋｅｔで送信する。したがって、１２５μｓｅｃの周期での軸データの送受信が可能となり、換言すると、１２５μｓｅｃの周期でのサーボの制御が可能となる。
【００３８】
次に各部について詳述する。制御部１１は、ネットワーク４に接続可能で、そのネットワーク４に接続された他のノードとの間でデータ通信可能な通信処理部１１ａと、受け取った受信データを記憶部１２に格納する軸データ指定領域転送部１１ｂを有している。
【００３９】
記憶部１２には、受信系として、受信データ用メモリ１２ａと、指定受信領域用メモリ１２ｂ並びに軸受信データステータスレジスタ１２ｃを有している。受信データ用メモリ１２ａは、従来と同様に受信データを記憶するためのメモリ領域であるが、従来と相違するのは軸毎に割り当てたアドレスに格納するようにしている。しかも、１つのアドレスに異なるフェーズで送受信する複数の軸を割り当てるようにしている。そして、その軸データの割り当てを特定する情報を指定受信領域用メモリ１２ｂに格納する。更に、送信系として、送信データを記憶する送信データ用メモリ１２ｇが設けられている。
【００４０】
受信系について更に説明する。指定受信領域用メモリ１２ｂに、ｍ個分の軸データを登録する受信データ用メモリ１２ａ内のアドレスを特定する。すなわち、指定受信領域用メモリ１２ｂの「第１指定ａｄｄｒ」には、「軸１データ」を格納する受信データ用メモリ１２ａ内のアドレスを記録する。同様に、「第２指定ａｄｄｒ」には、「軸２データ」用のアドレスを記録し、…、「第ｍ指定ａｄｄｒ」には、「軸ｍデータ」用のアドレスを記録する。
【００４１】
本実施の形態では、ｍ個分の軸データをＮ回の複数のフェーズで送受信するようにしたため、各フェーズで送受信する軸数を均等に配置すると、１回のフェーズで送信する軸数の最大値Ｘは、（ｍ／Ｎ）個（小数点以下切り上げ）となる。そこで、受信データ用メモリ１２ａ内に、Ｘ個分の軸データの格納エリアを確保し、同一のフェーズで送受信する軸を格納する領域（アドレス）を、上記Ｘ個分の何れかの格納エリアに割り付ける。従って、受信データ用メモリ１２ａ内の同一のアドレスには、同一のフェーズで送受信する軸データが重複して割り当てられることはないが、異なるフェーズで送信される軸データは、同一のアドレスに割り当てられ、共有することになる。
【００４２】
そして、具体例を挙げて説明すると、軸数が６個（ｍ＝６）で、３回のフェーズ（Ｎ＝３）に分けて軸データを送受信することを想定すると、１回のフェーズで送信する軸データ数は、２個となるので、受信データ用メモリ１２ａと指定受信領域用メモリ１２ｂのデータ構造は、図８に示すようになる。ここでは、受信データ用メモリ１２ａ中の２つのアドレス（「ａｄｄｒＡ」と「ａｄｄｅｒＢ」）を軸データを格納するためのエリアに確保し、「ａｄｄｒＡ」には軸１データ，軸３データ，軸５データの各データを割り付け、「ａｄｄｒＢ」には軸２データ，軸４データ，軸６データの各データを割り付ける。そして、実際に各「ａｄｄｒＡ」と「ａｄｄｅｒＢ」にどの軸データが格納されているかは、現在のフェーズを確認することにより認識できる。
【００４３】
そして、この記録するアドレスの指定は、ＣＰＵ２０が行う。つまり、初期設定として、ＣＰＵ２０（ドライバソフト２１）によって事前に指定受信領域用メモリ１２ｂ内の各領域に、ｍ個分の軸データのアドレスを登録する。具体的には、図９に示すフローチャートを実施することにより行う。
【００４４】
すなわち、まず、制御対象軸数（ｍ）と通信フェーズ数（Ｎ）を確定する（ＳＴ１１，ＳＴ１２）。制御対称軸の数は、システム構成から一義的に決定される情報であるので、ユーザが入力した情報を取得する。また、通信フェーズ数は、１回の通信に割り当てられる時間や、１つのデータを操守するために要する時間並びに制御対象軸数などから適正な値が決定される。そして、最適な通信フェーズ数を算出するようにしても良いが、本実施の形態では、このフェーズ数もユーザからの入力により確定する。つまり、ステップ１１，１２の処理は、いずれもユーザが入力した値を取得し、確定する。
【００４５】
次に、１フェーズ値に通信する制御軸数を算出する（ＳＴ１３）。これは、制御対象軸数（ｍ）を通信フェーズ数（Ｎ）で除算し、得られた「商」と「あまり」から簡単に求めることができる。すなわち、１回のフェーズ当りに送受信する軸数は、算出した「商」或いは「商＋１」となり、「あまり」の数分だけ「商＋１」となる。よって、最大送受信数Ｘは、「商＋１」となるので、受信データ用メモリ１２ａには、係るＸ個分の記憶エリアを確保すれば良いことになる。
【００４６】
次いで、全軸指定ａｄｄｒを算出する（ＳＴ４）。これは、例えば軸番号順に対象となるフェーズ番号と、指定ａｄｄｒを設定する。つまり、先頭からＸ個分が第１フェーズでの送受信対象とし、Ｘ＋１番目から２Ｘ番目までが第２フェーズでの送受信対象とする。以下、上記「あまり」の回数分だけＸ個ずつを１つのグループとしてフェーズ番号を設定し、それ以降は、（Ｘ−１）個ずつを１つのグループとしてフェーズ番号を設定する。さらに、各フェーズ毎に、最初の軸から順番に、割り当てられた指定ａｄｄｒを割り付ける。これにより、例えば図１０に示すようなテーブルが作成される。
【００４７】
このようにして全ての軸に対して、フェーズ番号と指定ａｄｄｒを割り振ったならば、実際に指定受信領域用メモリ１２ｂに格納し、前処理としての設定を終了する。また、図１０に示したテーブルは、例えばＣＰＵ２０側で保持したり、各種の記憶部に格納する。
【００４８】
そして、実際の稼働時には、軸データ指定領域転送部１１ｂは、通信処理部１１ａを介して受信した受信データの内容を解析し、軸データ毎に分離する。つまり、本形態における受信データは、図３（ｃ）に示すように、軸データヘッダ部には送信元軸番号と送信先軸番号があり、この軸番号に基づき指定受信領域用メモリ１２ｂをアクセスし、軸データの登録アドレス（指定ａｄｄｒ）を読み出し、その読み出したアドレスで特定される受信データ用メモリ１２ａに、軸データを記憶する。なお、この記憶する軸データは、ヘッダの軸データ長を参照して受信データから対応する部分のデータを読み出すことにより取得できる。
【００４９】
一方、ＣＰＵ２０は、各軸データの登録アドレスはわかっている（自己が指定している）とともに、フェーズ管理部２２によって、現在のフェーズ番号が制御されるので、図１０に示したテーブルにより、現在のフェーズ番号において制御対象となっている軸番号もＣＰＵ２０側でわかっている。従って、現在受信データ用メモリ１２ａ内の所定アドレスに記録されたデータが、どの軸データのものかがわかるので、係るデータを読み出し、取り込むことができる。
【００５０】
ところで、通信ＬＳＩ（軸データ指定領域転送部１１ｂ）側は、現在のフェーズが何番であるかは分からないので、受信した軸データは、そのまま軸番号をキーにして指定受信領域用メモリ１２ｂを参照し、所定の受信データ用メモリ１２ａの記憶エリアに格納する。このとき、通常であれば、図６にも示したとおり、サーボコントローラ３から、現在のフェーズにおける対象の軸のサーボドライバに対して制御指令データが送られ、そのレスポンスとしてその軸のサーボドライバ２から制御フィードバックデータが返信されてくるので、受信した軸データ指定領域転送部１１ｂは、現在のフェーズが何番であるかを知らなくても、正規の軸データのみを受信し、所望の記憶エリアに格納することができる。
【００５１】
しかし、何らかの原因によって、現在のフェーズの対象外の軸データを受信した場合には、受信データ用メモリ１２ａの同一の記憶エリア（アドレス）を指定ａｄｄｒとする軸データを複数受信することになり、係る場合には、受信した複数のデータをその都度受信データ用メモリ１２ａに格納する。従って、正規の軸データを先に受信してしまうと、係る記憶エリアに保持されるデータは、その後に受信した正規でない軸データの内容に書きかえられてしまうという問題がある。
【００５２】
さらに、正規の軸データが受信できなかった場合には、本来その正規の軸データが格納されるべき記憶エリアには、前回のフェーズの際に受信した軸データが格納されているため、そのままでは、ＣＰＵ２０は誤ったデータを取り込んでしまう。
【００５３】
そこで、本実施の形態では、軸受信データステータスレジスタ１２ｃを設け、ＣＰＵ２０は、受信データ用メモリ１２ａからデータを取り込むに先立ち、このレジスタ内容を参照することにより、正規の軸データのみを取得するようにしている。
【００５４】
すなわち、この軸受信データステータスレジスタ１２ｃは、図１１に示すように、該当する軸データに最新のデータがあるか否かのステータス情報を格納するものである。ステータスが「１」の場合には、新たに書き込まれたデータがあることを意味し、ステータスが「０」の場合には新たに書き込まれたデータがないことを意味する。
【００５５】
従って、ＣＰＵ２０は、読み出すサイクル毎に、軸受信データステータスレジスタ１２ｃを参照し、受信すべき軸データ（ステータスが「１」）を認識し、当該軸データのみを受信データ用メモリ１２ａから読み出すことになる。係る処理を行うには、軸データ指定領域転送部１１ｂが、軸データを受信データ用メモリ１２ａに格納した場合に、該当する受信軸のステータスを「１」に設定する。一方、ＣＰＵ２０は、今回のフェーズに伴うデータの読み出しを行ったならば、該当する各受信軸のステータスを「０」に設定（クリア）する。
【００５６】
これにより、各フェーズのデータを読み出す前に、軸受信データステータスレジスタ１２ｃを参照し、正常な軸データのみを受信するようにしている。すなわち、今回のフェーズで受信すべきでない受信軸のステータスが「１」になっている場合には、その「１」となった受信軸が格納される指定ａｄｄｒに格納された軸データは、正規のものか否かが確定できない。そこで、係る不定のものは受信しないようにすることにより、誤ったデータに基づく誤動作を防止する。
【００５７】
また、今回のフェーズで受信すべき正規の受信軸のステータスが「０」になっている場合には、その「０」である受信軸に割り振られた指定ａｄｄｒには、それ以前のフェーズで受信した他の軸データのものが格納されているので、受信しないようにすることにより、誤ったデータに基づく誤動作を防止する。
【００５８】
そして、上記処理を行うためのＣＰＵ２０の具体的な受信データ取得処理は、図１２のフローチャートに示すようになっている。すなわち、ＣＰＵ２０がフェーズの管理をしているので、現フェーズを認識する（ＳＴ２１）。つまり、現在のフェーズ番号から、今回のフェーズで送受信される軸データの番号を認識する。
【００５９】
次に、制御対象外の軸データの受信の有無を判断する（ＳＴ２２）。具体的には、軸受信データステータスレジスタ１２ｃをアクセスし、今回のフェーズにおける制御対象外の軸データのステータスが、「１」になっているか否かを判断する。そして、「１」になっているものがあると、制御対象外軸受信ありと判断し、異常軸処理を行う（ＳＴ２３）。この異常軸処理としては、例えば、データログを取ったり、異常を通知することなどがある。さらに、現フェーズでの制御対象外の軸データのステータスと、その軸データと同一の記憶エリア（指定ａｄｄｒ）に割り付けられた正規の軸データのステータスを共に「０」にリセットする。
【００６０】
ステップ２２の分岐判断で「なし」或いはステップ２３の処理を実行後、ステップ２４に進み、現フェーズの制御対象軸に対する処理を実行する。実際には、ステップ２３の異常処理により、制御対象外の軸と、それに関連する正規の軸のステータスが「０」になっているので、軸受信データステータスレジスタ１２ｃでステータスが「１」になっている全ての軸データを読み出す。そして、次のフェーズにおける受信に備え、ステータスを全て「０」にリセットする。
【００６１】
その後、現フェーズの番号を１加算した値を次フェーズの番号にセットし（ＳＴ２５）、その次フェーズが最大フェーズ（Ｘ）を越えたか否かを判断する（ＳＴ２６）。そして、越えた場合には、次フェーズを１にセットし、越えない場合には、ステップ２５で求めた番号が、次フェーズに確定する。
係る処理を繰り返し実行することになる。そして、ステップ２５から２７によって決定された次フェーズが、次回の処理における現フェーズとなる。
【００６２】
この図１２と図４を比較すると明らかなように、本形態によれば、ＣＰＵ２０は軸データを直接読み出すことができ、受信データ処理や軸データヘッダ解析処理などが不要となるので、処理が簡単に行え、負荷が削減される。
【００６３】
一方、軸データの送信系であるが、図７に示したように通信ＬＳＩ１０内の共有メモリたる記憶部１２内に送信データ用メモリ１２ｇを設けたことは上述したとおりである。そして、送信データ用メモリ１２ｇには、そのノード（サーボコントローラ３）が今回のフェーズで送受信する相手に対して送信する制御指令データが格納される。そして、ＣＰＵ２０は、送信すべきサーボドライバ２に対する制御指令データを、任意のタイミングで送信データ用メモリ１２ｇに格納する。このとき、ＣＰＵ２０は、フェーズ管理部２２により、今回のフェーズで送受信すべき制御指令データ及びそのデータを格納する送信データ用メモリ１２ｇ内のアドレスを知っており、軸データ単位（サーボドライバ２単位）で格納することができるようになっている。
【００６４】
一方、通信処理部１１ａは、ＩＥＥＥ１３９４に従い、１２５μｓｅｃ間隔で、軸データを含む送信データ（図３に示すデータ構造）を送信する。つまり、所定のタイミングで送信データ用メモリ１２ｇに格納された全ての軸データを含むデータ（図３（ａ）の「データ」部分）を、通信処理部１１ａ内のＦＩＦＯに書き込み、更に図３（ａ）に示す「ヘッダ部」を付加して送信データを作成した後、送出する。このＦＩＦＯにデータを格納後、送信データを作成・送出する処理は従来と同様である。もちろん、データの書込領域は、ＦＩＦＯに限るものではなく、他の形式（メモリエリア等）もある。
【００６５】
本形態によれば、通信ＬＳＩ１０内に共有メモリである記憶部１２を用意し、送信すべき軸データを一旦送信データ用メモリ１２ｇに格納するようにしたため、ＣＰＵ２０は、変更のあった軸データのみを記憶させるだけで、通信ＬＳＩ１０が最終的な送信データを作成し、送出するので処理が軽減される。
【００６６】
図１３は、本発明の第２の実施の形態を示している。本実施の形態では、軸データ指定領域転送部１１ｂに替えて、軸データ転送領域書込部１１ｄを設けている。また、これに併せて、記憶部１２内には、指定受信領域用メモリ１２ｂに替えてインデックスメモリ領域用メモリ１２ｄを設けている。
【００６７】
つまり、第１の実施の形態では、受信データ用メモリ１２ａに格納する軸データのアドレスの指定を、ＣＰＵ２０側から設定するようにしたが、本実施の形態では、通信ＬＳＩ１０（軸データ転送領域書込部１１ｄ）側が係るアドレスの指定を行うようにした。
【００６８】
具体的には、図１４に示すように、初期設定として軸データ転送領域書込部１１ｄがインデックスメモリ領域用メモリ１２ｄ内の各領域に、ｍ個分の軸データのアドレスを登録する。このとき、図９に示した処理を行い、フェーズ数と各フェーズでの制御対象（送受信対象）となる軸数を確定し、転送ａｄｄｒの割り付けを行う。
【００６９】
そして、実際の稼働時には、軸データ転送領域書込部１１ｄは、通信処理部１１ａを介して受信した受信データの内容を解析し、軸データ毎に分離し、検出した軸番号に対応する受信データ用メモリ１２ａ内の所定アドレスに軸データを格納する。また、この格納に伴い、軸受信データステータスレジスタ１２ｃのステータスを「１」にセットする。
【００７０】
一方、ＣＰＵ２０（ドライバソフト２１）は、図１２に示すフローチャートを実行し、現在のフェーズ番号に基づき、インデックスメモリ領域用メモリ１２ｄを参照し、現フェーズの対象となっている軸データの転送ａｄｄｒを読み出し、その読み出したアドレスで特定される受信データ用メモリ１２ａを読み出すことにより、正規の軸データを取得できる。そして、その読み出し等に伴い、該当する受信軸のステータスを「０」に設定（クリア）する。なお、その他の構成並びに作用効果は、上記した第１の実施の形態と同様であるので、対応する部材に同一符号を付し、その詳細な説明を省略する。
【００７１】
図１５は、本発明の第３の実施の形態を示している。本実施の形態では、記憶部１２内の軸受信データステータスレジスタ１２ｃに替えて、軸データ受信制御レジスタ１２ｅを設けている。この軸データ受信制御レジスタ１２ｅは、図１６に示すように、ＣＰＵ２０側が必要とする軸番号に該当する軸受信制御レジスタ領域に「１」をセットする。そして、軸データ転送領域書込部１１ｄは、受信データのうち、軸受信制御レジスタ領域に「１」がセットされた軸データのみを書き込む。
【００７２】
このようにすると、ＣＰＵ２０が、現フェーズで対象となっている軸データのみを「１」にセットし、他を「０」にセットすることにより、仮に、現フェーズで対象となっていない軸データを受信したとしても、この軸データ受信制御レジスタ１２ｅの値が「０」になっているので、受信データ用メモリ１２ａには格納されない。よって、図１２に示すフローチャートにおける異常判定処理（ＳＴ２２）は設けなくても良くなり、処理が簡単になり迅速に実行できる。但し、この場合でも、正規の軸データが受信できずに、前回のデータがそのまま残っていることによる対処はできないので、第１の実施の形態のように受信の有無（ステータス）に関する情報を取得しておくと好ましい。
【００７３】
なお、その他の構成並びに作用効果は、上記した第１の実施の形態と同様であるので、対応する部材に同一符号を付し、その詳細な説明を省略する。また、本実施の形態では、第１の実施の形態を基本として説明したが、第２の実施の形態を基本として構成することももちろんできる。
【００７４】
図１７は、本発明の第４の実施の形態を示している。本実施の形態では、上記した第１から第３の実施の形態の機能を組み合わせたものである。そして、本実施の形態では、モード設定部１１ｆを更に設け、軸データ指定領域転送部１１ｂと軸データ転送領域書込部１１ｄを択一的に切り替えるようにしている。また、択一的に使用することにより、指定受信領域・インデックスメモリ領域用メモリ１２ｆを指定受信領域メモリ１２ｂとインデックスメモリ領域用メモリ１２ｄのいずれかの領域として使用することができる。さらに、モード設定部１１ｆは、軸データ受信ステータスレジスタと軸データ受信制御レジスタの使用の有無も設定できるようにしている。
【００７５】
更に、上記した各実施の形態では、いずれも受信データを格納する受信データ用メモリ１２ａを１つ設けた例を示しているが、実際には２個設け、適宜切り替えて使用する。つまり、ＣＰＵ２０がデータを読み出している場合には、通信ＬＳＩ１０（制御部１１）が他の受信データ用メモリに対してデータの書き込みを行うようにする。これにより、ＣＰＵ２０と通信ＬＳＩ１０が、ともに任意のタイミングで読み出し或いは書き込み中を行うことができる。この切替は、フラグ管理をすることにより行える。
【００７６】
さらにまた、上記した各実施の形態では、記憶部１２を通信ＬＳＩ１０内に設けたが、ＣＰＵ２０側に設けても良いし、別途独立した記憶部として設置しても良い。
【００７７】
【発明の効果】
以上のように、この発明では、通信装置側で受信データの中から軸データを抽出し、共有メモリには軸データ単位で格納するようにしたため、コントローラは、共有メモリから必要な軸データをそのまま直接読み出すことができるので、コントローラ（ＣＰＵ）の負荷が軽減され、その軽減された分、他の処理を実行することができ、効率よく高速処理ができる。しかも、複数のフェーズに分けて軸データを送受信するようにしたため、異なるフェーズで送る軸データ同士を同一の記憶エリアに割り当てることができるので、メモリ容量を削減することができる。
【図面の簡単な説明】
【図１】従来のネットワークシステムの一例を示す図である。
【図２】従来のノードの内部構造を示す図である。
【図３】受信データのデータフォーマットの一例を示す図である。
【図４】従来のＣＰＵの機能を示すフローチャートである。
【図５】本発明が適用されるネットワークシステムの一例を示す図である。
【図６】図５に示すネットワークシステムにおけるデータ通信制御の一例を示す図である。
【図７】本発明の第１の実施の形態を示すブロック図である。
【図８】受信データ用メモリと、指定受信領域用メモリのデータ構造の一例並びにそれを使用してデータ伝送をする機能を説明する図である。
【図９】前処理機能を説明するフローチャートである。
【図１０】図９に示す前処理機能を実施して得られた各軸データに対して設定されたデータの一例を示すテーブルである。
【図１１】軸受信データステータスレジスタのデータ構造の一例並びにそれを使用してデータ伝送をする機能を説明する図である。
【図１２】本発明のＣＰＵの機能を示すフローチャートである。
【図１３】本発明の第２の実施の形態を示すブロック図である。
【図１４】受信データ用メモリと、インデックスメモリ領域用メモリのデータ構造の一例並びにそれを使用してデータ伝送をする機能を説明する図である。
【図１５】本発明の第３の実施の形態を示すブロック図である。
【図１６】軸データ受信制御レジスタのデータ構造の一例並びにそれを使用してデータ伝送をする機能を説明する図である。
【図１７】本発明の第４の実施の形態を示すブロック図である。
【符号の説明】
１  サーボモータ
２  サーボドライバ
３  サーボコントローラ(ノード)
４  ネットワーク
５  通信ＬＳＩ
６  ＣＰＵ
７  受信データ用メモリ
１１  制御部
１１ａ  通信処理部（受け取る手段）
１１ｂ  軸データ指定領域転送部（軸データ識別手段，データ格納手段）
１１ｄ  軸データ転送領域書込部（軸データ識別手段，データ格納手段）
１１ｆ  モード設定部
１２  記憶部（共有メモリ）
１２ａ  受信データ用メモリ
１２ｂ  指定受信領域用メモリ
１２ｃ  軸受信データステータスレジスタ（受信データステータス記憶手段）
１２ｄ  インデックスメモリ領域用メモリ
１２ｅ  軸データ受信制御レジスタ（受信制御記憶部）
１２ｆ  指定受信領域・インデックスメモリ領域用メモリ
２０  ＣＰＵ（コントローラ）
２１  ドライバソフト（軸データを読み出す機能）
２２  フェーズ管理部
【図１】
0004164270.tif 000002
【図２】
0004164270.tif 000003
【図３】
0004164270.tif 000004
【図４】
0004164270.tif 000005
【図５】
0004164270.tif 000006
【図６】
0004164270.tif 000007
【図７】
0004164270.tif 000008
【図８】
0004164270.tif 000009
【図９】
0004164270.tif 000010
【図１０】
0004164270.tif 000011
【図１１】
0004164270.tif 000012
【図１２】
0004164270.tif 000013
【図１３】
0004164270.tif 000014
【図１４】
0004164270.tif 000015
【図１５】
0004164270.tif 000016
【図１６】
0004164270.tif 000017
【図１７】
0004164270.tif 000018