(57)【特許請求の範囲】
【請求項１】
センサであって、
上位センサ又は上位コントローラと通信する上位接続ポートと、
下位センサと通信する下位接続ポートと、
前記上位コントローラからのモータ関連情報取得コマンドを受信するコマンド受信部と、
前記上位コントローラからの初期化コマンドを受信する初期化コマンド受信部と、
少なくとも、前記上位センサ又は前記上位コントローラと、当該センサと、前記下位センサとの接続順位に応じた待機時間を前記初期化コマンドに基づいて設定する待機時間設定部と、
前記モータ関連情報取得コマンドにより定まるタイミングと前記待機時間とに応じたタイミングでモータに関するモータ関連情報を取得するモータ関連情報取得部と、
を有するセンサ。
【請求項２】
前記待機時間設定部は、前記初期化コマンドに含まれる指定待機時間に基づいて前記待機時間を設定する、
請求項１に記載のセンサ。
【請求項３】
前記待機時間設定部は、前記モータ関連情報取得部によるモータ関連情報取得タイミングが、最下位センサが前記モータ関連情報取得コマンドの受信を完了した後となるように、前記待機時間を設定する、
請求項１又は２に記載のセンサ。
【請求項４】
上位センサ又は上位コントローラと通信する上位接続ポートと、
下位センサと通信する下位接続ポートと、
前記上位コントローラからのコマンドを受信するコマンド受信部と、
少なくとも、前記上位センサ又は前記上位コントローラと、当該センサと、前記下位センサとの接続順位に応じた待機時間を設定する待機時間設定部と、
前記コマンドにより定まるタイミングと前記待機時間とに応じたタイミングでモータに関するモータ関連情報を取得するモータ関連情報取得部と、
を有するセンサと通信する接続ポートと、
前記接続ポートに、前記接続順位に応じた待機時間を設定するための情報を含む初期化コマンドを送信する初期化コマンド送信部と、
を有するコントローラ。
【請求項５】
前記待機時間を設定するための情報は、前記センサ毎に、前記接続順位に基づいて定められた待機時間である、
請求項４に記載のコントローラ。
【請求項６】
前記待機時間を、前記センサ毎に、前記接続順位と、前記コマンドの伝送遅れ時間と、前記コマンドの送受信時間と、前記センサの最大接続数に基づいて定められるコマンド通信期間と、に基づいて算出する待機時間算出部を有する、
請求項５に記載のコントローラ。
【請求項７】
前記コマンド受信部により受信した前記モータ関連情報取得コマンドを、受信が完了する前に前記下位接続ポートより送信するコマンド再送信部と、
前記下位接続ポートから下位モータ関連情報を受信する下位モータ関連情報受信部と、
前記モータ関連情報を前記上位接続ポートにより送信し、前記下位モータ関連情報を、前記モータ関連情報の送信が完了した後に前記上位接続ポートにより送信するモータ関連情報送信部と、
を更に有する請求項１〜３の何れかに記載のセンサ。
【請求項８】
前記コマンド再送信部は、前記コマンド受信部により受信した前記モータ関連情報取得コマンドを、カットスルー方式により前記下位接続ポートより送信し、
前記モータ関連情報送信部は、前記下位モータ関連情報を、ストアアンドフォワード方式により前記上位接続ポートにより送信する、
請求項７に記載のセンサ。
【請求項９】
前記モータ関連情報取得コマンドを送受信するモータ関連情報取得コマンド通信期間より、前記モータ関連情報及び前記下位モータ関連情報を送受信するモータ関連情報通信期間の方が長い、
請求項７又は８に記載のセンサ。
【請求項１０】
前記モータ関連情報送信部は、前記下位モータ関連情報のプリアンブルヘッダを削除し、前記モータ関連情報に続けて送信する、
請求項７〜９の何れかに記載のセンサ。
【請求項１１】
上位センサ又は上位コントローラと通信する上位接続ポートと、
下位センサと通信する下位接続ポートと、
前記上位コントローラからのコマンドを受信するコマンド受信部と、
少なくとも、前記上位センサ又は前記上位コントローラと、当該センサと、前記下位センサとの接続順位に応じた待機時間を設定する待機時間設定部と、
前記コマンドにより定まるタイミングと前記待機時間とに応じたタイミングでモータに関するモータ関連情報を取得するモータ関連情報取得部と、
を有するセンサであって、
前記上位接続ポートは、半２重通信方式により前記上位センサ又は前記上位コントローラと接続され、
前記下位接続ポートから下位モータ関連情報を受信する下位モータ関連情報受信部と、
前記モータ関連情報及び前記下位モータ関連情報を前記上位接続ポートにより送信するモータ関連情報送信部と、
前記モータ関連情報送信部による送信が終了した後、所定の時間、前記上位接続ポートを送信イネーブル状態に保持するイネーブル保持部と、
を更に有するセンサ。
【請求項１２】
前記コマンドは、モータ関連情報取得コマンドであり、
前記イネーブル保持部は、少なくとも前記コマンド受信部により前記モータ関連情報取得コマンドが受信されるまでに前記送信イネーブル状態を解除する、
請求項１１に記載のセンサ。
【請求項１３】
前記モータの位置を取得するエンコーダである請求項１〜３及び７〜１２に記載のセンサ。
【請求項１４】
請求項１〜３及び７〜１２の何れかに記載のセンサと、
請求項４〜６の何れかに記載のコントローラと、
を有するモータ制御システム。
【請求項１５】
請求項１４に記載のモータ制御システムと、
ロボットと、
を有するロボットシステム。
【請求項１６】
センサの上位接続ポートより、上位コントローラからのコマンドを受信し、
少なくとも、上位センサ又は上位コントローラと、前記センサと、下位センサとの接続順位に応じた待機時間を設定し、
前記コマンドにより定まるタイミングと前記待機時間とに応じたタイミングでモータに関するモータ関連情報を取得し、
前記上位コントローラの接続ポートに、前記接続順位に応じた待機時間を設定するための情報を含む初期化コマンドを送信する、
モータ関連情報取得方法。
【請求項１７】
更に、前記コマンドを、受信が完了する前に前記センサの下位接続ポートより送信し、
前記下位接続ポートから下位モータ関連情報を受信し、
前記下位モータ関連情報を、前記モータ関連情報の送信が完了した後に前記上位接続ポートにより送信する
請求項１６に記載のモータ関連情報取得方法。
【請求項１８】
前記上位接続ポートは、半２重通信方式により前記上位センサ又は前記上位コントローラと接続され、
下位接続ポートから下位モータ関連情報を受信し、
前記モータ関連情報及び前記下位モータ関連情報を、前記上位接続ポートにより送信し、
前記モータ関連情報の送信が終了した後、所定の時間、前記上位接続ポートを送信イネーブル状態に保持する、
請求項１６又は１７に記載のモータ関連情報取得方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、センサ、コントローラ、モータ制御システム、ロボットシステム、及びモータ関連情報取得方法に関する。
【背景技術】
【０００２】
特許文献１には、コントローラの指示のもとモータ制御装置がモータを制御するモータ制御システムにおいて、モータ関連情報を取得するセンサ（例えば、モータの位置を取得するエンコーダ）が記載されている。このセンサは、コントローラから受信したコマンドを実行して、モータ関連情報をコントローラに送信する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２２９３５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、デイジーチェーン接続された各センサによるモータ関連情報の取得タイミングを合わせることである。
【課題を解決するための手段】
【０００５】
本発明の一側面に係るセンサは、上位センサ又は上位コントローラと通信する上位接続ポートと、下位センサと通信する下位接続ポートと、前記上位コントローラからのコマンドを受信するコマンド受信部と、少なくとも、前記上位センサ又は前記上位コントローラと、当該センサと、前記下位センサとの接続順位に応じた待機時間を設定する待機時間設定部と、前記コマンドにより定まるタイミングと前記待機時間とに応じたタイミングでモータに関するモータ関連情報を取得するモータ関連情報取得部と、を有する。
【０００６】
また、本発明の一側面に係るセンサでは、前記コマンドは、モータ関連情報取得コマンドである。
【０００７】
また、本発明の一側面に係るセンサでは、前記コントローラからの初期化コマンドを受信する初期化コマンド受信部を更に有し、前記待機時間設定部は、前記初期化コマンドに基づいて前記待機時間を設定するようにしてよい。
【０００８】
また、本発明の一側面に係るセンサでは、前記待機時間設定部は、前記初期化コマンドに含まれる指定待機時間に基づいて前記待機時間を設定するようにしてよい。
【０００９】
また、本発明の一側面に係るセンサでは、前記待機時間設定部は、前記モータ関連情報取得部によるモータ関連情報取得タイミングが、最下位センサが前記コマンドの受信を完了した後となるように、前記待機時間を設定するようにしてよい。
【００１０】
また、本発明の一側面に係るコントローラでは、上記記載のセンサと通信する接続ポートと、前記接続ポートに、前記接続順位に応じた待機時間を設定するための情報を含む初期化コマンドを送信する初期化コマンド送信部と、を有する。
【００１１】
また、本発明の一側面に係るコントローラでは、前記待機時間を設定するための情報は、前記センサ毎に、前記接続順位に基づいて定められた待機時間であるようにしてよい。
【００１２】
また、本発明の一側面に係るコントローラでは、前記待機時間を、前記センサ毎に、前記接続順位と、前記コマンドの伝送遅れ時間と、前記コマンドの送受信時間と、前記センサの最大接続数に基づいて定められるコマンド通信期間と、に基づいて算出する待機時間算出部を有するようにしてよい。
【００１３】
また、本発明の一側面に係るセンサでは、前記コマンド受信部により受信した前記コマンドを、受信が完了する前に前記下位接続ポートより送信するコマンド再送信部と、前記下位接続ポートから下位モータ関連情報を受信する下位モータ関連情報受信部と、前記モータ関連情報を前記上位接続ポートにより送信し、前記下位モータ関連情報を、前記モータ関連情報の送信が完了した後に前記上位接続ポートにより送信するモータ関連情報送信部と、を更に有するようにしてよい。
【００１４】
また、本発明の一側面に係るセンサでは、前記コマンド再送信部は、前記コマンド受信部により受信した前記コマンドを、カットスルー方式により前記下位接続ポートより送信し、前記モータ関連情報送信部は、前記下位モータ関連情報を、ストアアンドフォワード方式により前記上位接続ポートにより送信するようにしてよい。
【００１５】
また、本発明の一側面に係るセンサでは、前記コマンドを送受信するコマンド通信期間より、前記モータ関連情報及び前記下位モータ関連情報を送受信するモータ関連情報通信期間の方が長いようにしてよい。
【００１６】
また、本発明の一側面に係るセンサでは、前記モータ関連情報送信部は、前記下位モータ関連情報のプリアンブルヘッダを削除し、前記モータ関連情報に続けて送信するようにしてよい。
【００１７】
また、本発明の一側面に係るセンサでは、前記上位接続ポートは、半２重通信方式により前記上位センサ又は前記上位コントローラと接続され、前記下位接続ポートから下位モータ関連情報を受信する下位モータ関連情報受信部と、前記モータ関連情報及び前記下位モータ関連情報を前記上位接続ポートにより送信するモータ関連情報送信部と、前記モータ関連情報送信部による送信が終了した後、所定の時間、前記上位接続ポートを送信イネーブル状態に保持するイネーブル保持部と、を更に有するようにしてよい。
【００１８】
また、本発明の一側面に係るセンサでは、前記イネーブル保持部は、少なくとも前記コマンド受信部により前記モータ関連情報取得コマンドが受信されるまでに前記送信イネーブル状態を解除するようにしてよい。
【００１９】
また、本発明の一側面に係るセンサでは、前記モータの位置を取得するエンコーダであるようにしてよい。
【００２０】
また、本発明の一側面に係るモータ制御システムは、上記の何れかに記載のセンサと、上記の何れかに記載のコントローラと、を有する。
【００２１】
また、本発明の一側面に係るロボットシステムは、上記に記載のモータ制御システムと、ロボットと、を有する。
【００２２】
また、本発明の一側面に係るモータ関連情報取得方法は、センサの上位接続ポートより、上位コントローラからのコマンドを受信し、少なくとも、上位センサ又は上位コントローラと、前記センサと、下位センサとの接続順位に応じた待機時間を設定し、前記コマンドにより定まるタイミングと前記待機時間とに応じたタイミングでモータに関するモータ関連情報を取得する。
【００２３】
また、本発明の一側面に係るモータ関連情報取得方法は、更に、前記上位コントローラの接続ポートに、前記接続順位に応じた待機時間を設定するための情報を含む初期化コマンドを送信するようにしてよい。
【００２４】
また、本発明の一側面に係るモータ関連情報取得方法は、更に、前記コマンドを、受信が完了する前に前記センサの下位接続ポートより送信し、前記下位接続ポートから下位モータ関連情報を受信し、前記下位モータ関連情報を、前記モータ関連情報の送信が完了した後に前記上位接続ポートにより送信するようにしてよい。
【００２５】
また、本発明の一側面に係るモータ関連情報取得方法は、前記上位接続ポートは、半２重通信方式により前記上位センサ又は前記上位コントローラと接続され、前記下位接続ポートから下位モータ関連情報を受信し、前記モータ関連情報及び前記下位モータ関連情報を、前記上位接続ポートにより送信し、前記モータ関連情報の送信が終了した後、所定の時間、前記上位接続ポートを送信イネーブル状態に保持するようにしてよい。
【００２６】
また、本発明の一側面に係るセンサは、上位コントローラからのコマンドを受信するコマンド受信手段と、前記コマンドに基づいて、当該センサに接続された他のセンサとモータ関連情報の取得タイミングを合わせて前記モータ関連情報を取得するモータ関連情報取得手段と、を有する。
【００２７】
また、本発明の一側面に係るコントローラは、上記記載のセンサに、前記コマンドを送信するコマンド送信手段と、前記センサと当該センサに接続された他のセンサとの前記モータ関連情報の取得タイミングを合わせる手段と、を有する。
【発明の効果】
【００２８】
上記発明によれば、デイジーチェーン接続された各センサによるモータ関連情報の取得タイミングを合わせることができる。
【図面の簡単な説明】
【００２９】
【図１】実施形態１に係るモータ制御システムの物理構成を示すブロック図である。
【図２】モータ位置情報取得コマンドが転送される様子を示す図である。
【図３】実施形態１におけるモータ制御システムの機能ブロック図である。
【図４】待機時間データのデータ格納例を示す図である。
【図５】初期化時の処理の流れを示す図である。
【図６】実施形態１の変形例における機能ブロック図である。
【図７】実施形態２でモータ位置情報がコントローラに送信される様子を示す図である。
【図８】実施形態２の変形例におけるモータ位置情報がコントローラに送信される様子を示す図である。
【図９】実施形態３のモータ制御システムの機能ブロック図である。
【図１０】実施形態３の処理の流れを示す図である。
【図１１】実施形態４の処理の流れを示す図である。
【図１２】実施形態５においてモータ位置情報取得コマンドが転送される様子を示す図である。
【図１３】ロボットシステムの一例を示す図である。
【発明を実施するための形態】
【００３０】
［１．実施形態１］
本発明の発明者の見地によれば、モータ関連情報を取得するセンサがデイジーチェーン接続されている場合、各センサがコントローラから受信するコマンドを実行するタイミングにずれが生じる可能性がある。各センサがモータ関連情報を取得するタイミングがずれると、コントローラによるモータ制御の精度が低下してしまう。そこで本発明の発明者は、モータ制御の精度を高めるために鋭意研究開発を行った結果、新規かつ独創的なモータ制御システム等に想到した。以降、実施形態１のモータ制御システム等を詳細に説明する。なお、実施形態１では、センサの一例としてエンコーダを説明する。
【００３１】
［１−１．モータ制御システムの物理構成］
図１は、実施形態１に係るモータ制御システムの物理構成を示すブロック図である。図１に示すように、モータ制御システム１は、コントローラ１０（上位コントローラ）と、デイジーチェーン接続された複数のエンコーダ２０−ｎ（ｎ：１〜７の整数）と、を含み、各機器は、伝送路３０−ｎを介して通信可能に接続される。実施形態１では、伝送路３０−ｎは、半２重通信方式であってもよいし、全２重通信方式であってもよい。
【００３２】
デイジーチェーン接続は、複数の機器を数珠繋ぎにした接続方式であり、接続順位が最上位の機器から最下位の機器まで、接続順位の順番にデータを転送する接続方式である。ここでは、コントローラ１０と各エンコーダ２０−ｎとが順番に接続されている。上位とは、接続順位が上のことであり、下位とは、接続順位が下のことである。エンコーダ２０−ｎの「ｎ」の数値は、デイジーチェーン接続の接続順位を示している。ここでは、エンコーダ２０−１の接続順位は最上位であり、エンコーダ２０−７の接続順位は最下位である。接続順位は、各エンコーダ２０−ｎに指示を送るコントローラ１０から数えた順番ともいえる。
【００３３】
コントローラ１０は、モータ制御システム１全体の動作を制御するコンピュータである。例えば、コントローラ１０は、所定のタイミングで各エンコーダ２０にコマンドを送信したり、各エンコーダ２０からデータを受信したりする。他にも例えば、コントローラ１０は、モータへ電流・電圧等を出力するアンプを備えたモータ制御装置（サーボアンプ又はサーボコントローラ）にコマンドを送信したり、モータ制御装置からのエラー信号やその他の状態信号を受信したりする。
【００３４】
コントローラ１０は、プロセッサ１１、メモリ１２、通信制御部１３、及び接続ポート１４を含む。プロセッサ１１は、ＣＰＵとメモリからなる一般的な集積回路や、マイクロコントローラやＦＰＧＡ（Field Programmable Gate Array）等の任意の集積回路であってよい。
【００３５】
メモリ１２は、一般的な情報記憶媒体である。メモリ１２は、不揮発性メモリ及び揮発性メモリの少なくとも一方を含む。例えば、不揮発性メモリは、ＲＯＭ（Read Only Memory）、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）、フラッシュメモリ、及びハードディスク等である。揮発性メモリは、ＲＡＭ（Random Access Memory）等である。メモリ１２は、プログラムや各種データを記憶する。
【００３６】
通信制御部１３は、一般的な通信用集積回路である。例えば、通信制御部１３は、ＡＳＩＣ（Application Specific Integrated Circuit）等により構成される。接続ポート１４は、外部機器と通信するための通信インタフェースである。接続ポート１４は、エンコーダ２０−ｎと通信するためのものである。
【００３７】
通信制御部１３は、接続ポート１４を介して、各エンコーダ２０−ｎとの通信を行う。通信制御部１３は、最上位のエンコーダ２０−１と直接的に通信し、接続順位が２番目以降のエンコーダ２０−２〜２０−７の各々と間接的に通信する。間接的に通信するとは、通信相手の機器との間に他の機器を介在させて通信することである。
【００３８】
エンコーダ２０−ｎは、モータの位置を検出するセンサである。エンコーダ２０−ｎは、光学式エンコーダ又は磁気式エンコーダの何れであってもよい。エンコーダ２０−ｎは、コントローラ１０から受信したコマンドを実行したり、コマンドの実行結果をコントローラ１０に送信したりする。
【００３９】
エンコーダ２０−ｎは、プロセッサ２１−ｎ、メモリ２２−ｎ、通信制御部２３−ｎ、上位接続ポート２４−ｎ、及び下位接続ポート２５−ｎを含む。プロセッサ２１−ｎ、メモリ２２−ｎ、及び通信制御部２３−ｎの各々の物理的構成は、プロセッサ１１、メモリ１２、及び通信制御部１３と同様であってよい。
【００４０】
上位接続ポート２４−ｎ及び下位接続ポート２５−ｎの各々は、外部機器と通信するための通信インタフェースである。上位接続ポート２４−ｎは、上位の機器（上位のエンコーダ２０−ｎ又はコントローラ１０）と通信する。下位接続ポート２５−ｎは、下位の機器（下位のエンコーダ２０−ｎ）と通信する。
【００４１】
図１に示すように、接続順位が最上位のエンコーダ２０−１の上位接続ポート２４−１は、コントローラ１０と通信する。最上位のエンコーダ２０−１の下位接続ポート２５−２は、接続順位が１つ下のエンコーダ２０−２と通信する。同様に、上位接続ポート２４−２〜２４−７の各々は、接続順位が１つ上のエンコーダ２０−１〜２０−６と通信する。下位接続ポート２５−２〜２５−６の各々は、接続順位が１つ下のエンコーダ２０−３〜２０−７と通信する。エンコーダ２０−７は、接続順位が最下位なので、下位接続ポート２５−１は、他の機器と通信しない。
【００４２】
モータ制御システム１では、エンコーダ２０−１〜２０−７がデイジーチェーン接続されているので、エンコーダ２０−１〜２０−６の各々は、コントローラ１０からのモータ位置情報取得コマンドを受信すると、接続順位が１つ下のものに転送することで、最下位のエンコーダ２０−７までモータ位置情報取得コマンドが転送される。
【００４３】
図２は、モータ位置情報取得コマンドが転送される様子を示す図である。ここでは、概要を説明し、詳細は後述する。図２に示すｔ軸は、時間軸である。図２に示すように、まず、コントローラ１０は、通信周期の開始時点ｔ０が訪れると、エンコーダ２０−１に対して、モータ位置情報取得コマンドを送信する（Ｓ１０１）。通信周期は、所定の時間間隔の期間である。
【００４４】
エンコーダ２０−１は、モータ位置情報取得コマンドの受信を開始すると（Ｓ１０２）、接続順位が１つ下のエンコーダ２０−２に対して、モータ位置情報取得コマンドを転送する（Ｓ１０３）。同様に、エンコーダ２０−２〜２０−６の各々は、モータ位置情報取得コマンドの受信を開始すると（Ｓ１０４，Ｓ１０６，Ｓ１０８，Ｓ１１０，Ｓ１１２）、接続順位が１つ下のエンコーダ２０−３〜２０−７に対して、モータ位置情報取得コマンドを転送する（Ｓ１０５，Ｓ１０７，Ｓ１０９，Ｓ１１１，Ｓ１１３）。エンコーダ２０−７は、接続順位が最下位なので、モータ位置情報取得コマンドを受信しても転送しない（Ｓ１１４）。
【００４５】
図２に示すように、エンコーダ２０−１〜２０−６の各々が、モータ位置情報取得コマンドの受信を開始してから、接続順位が１つ下のエンコーダ２０−２〜２０−７に対してモータ位置情報取得コマンドの転送を開始するまでに、伝送遅延時間Ｔｄｒ（リピート遅れ時間）が生じる。なお、実施形態１では、エンコーダ２０−１〜２０−６の各々の伝送遅延時間Ｔｄｒが同じものとして説明するが、伝送遅延時間Ｔｄｒは異なってもよい。
【００４６】
上記のように伝送遅延時間Ｔｄｒが生じるので、エンコーダ２０−１〜２０−７の各々がモータ位置情報取得コマンドの受信を完了する時点が異なる。このため、エンコーダ２０−１〜２０−７の各々が、モータ位置情報取得コマンドの受信を完了した後すぐにモータ位置情報を取得してしまうと、モータ位置情報を取得するタイミングがずれてしまう。
【００４７】
そこで、実施形態１のモータ制御システム１では、図２に示すようにエンコーダ２０−１〜２０−７の各々に、モータ位置情報取得コマンドの実行を待機する待機時間Ｔｗ１〜Ｔｗ７を設定することによって、位置取得タイミングｔ８を合わせるようになっている（Ｓ１１５〜Ｓ１２１）。以降、この機能の詳細を説明する。
【００４８】
［１−２．モータ制御システムで実現される機能］
図３は、実施形態１におけるモータ制御システム１の機能ブロック図である。図３に示すように、コントローラ１０は、初期化コマンド送信部１００、初期化完了受信部１０１、モータ位置情報取得コマンド送信部１０２、及びモータ位置情報受信部１０３を含む。これら各機能は、プロセッサ１１や通信制御部１３により実現される。
【００４９】
また、各エンコーダ２０−ｎは、初期化コマンド受信部２００−ｎ、初期化コマンド再送信部２０１−ｎ、待機時間設定部２０２−ｎ、下位初期化完了受信部２０３−ｎ、初期化完了送信部２０４−ｎ、モータ位置情報取得コマンド受信部２０５−ｎ（本発明に係るコマンド受信部の一例）、モータ位置情報取得コマンド再送信部２０６−ｎ（本発明に係るコマンド再送信部の一例）、モータ位置情報取得部２０７−ｎ、下位モータ位置情報受信部２０８−ｎ、及びモータ位置情報送信部２０９−ｎを含む。これら各機能は、プロセッサ２１―ｎや通信制御部２３−ｎにより実現される。
【００５０】
ここでは、エンコーダ２０−ｎの初期化時に待機時間Ｔｗｎが設定される場合を例に挙げて説明する。このため、まず、エンコーダ２０−ｎを初期化する場合に実現される機能について説明する。コントローラ１０は、電源投入後において、各エンコーダ２０−ｎの設定を初期状態に戻すために初期化を行う。モータ制御システム１では、コントローラ１０のメモリ１２が、待機時間Ｔｗｎを示す待機時間データを記憶しており、この待機時間データを利用して、初期化時に待機時間Ｔｗｎを設定するようになっている。
【００５１】
図４は、待機時間データのデータ格納例を示す図である。図４に示すように、待機時間データには、各エンコーダ２０−ｎを識別する情報（例えば、アドレス情報）と、モータ制御システム１のユーザが指定した指定待機時間と、が関連付けられている。ここでは、指定待機時間として、待機時間Ｔｗ１〜Ｔｗ７が予め定められている。
【００５２】
各エンコーダ２０−ｎの待機時間Ｔｗｎは、デイジーチェーン接続における接続順位が上位であるほど長く、接続順位が下位であるほど短い。別の言い方をすれば、各エンコーダ２０−ｎの待機時間Ｔｗｎは、モータ位置情報取得コマンドの受信タイミングが早いほど長く、受信タイミングが遅いほど短い。図４のデータ格納例では、最上位のエンコーダ２０−１の待機時間Ｔｗ１が最も大きく、最下位のエンコーダ２０−７の待機時間Ｔｗ７が最も小さいことになる。
【００５３】
図５は、初期化時の処理の流れを示す図である。図５に示すように、まず、コントローラ１０の初期化コマンド送信部１００は、接続ポート１４に、デイジーチェーン接続における接続順位に応じた待機時間Ｔｗｎを設定するための情報を含む初期化コマンドを送信する（Ｓ１）。初期化コマンドは、エンコーダ２０−ｎの初期化を指示するためのコマンドである。初期化コマンドは、所定のデータ形式であればよく、例えば、コマンドの種類を示すコマンドコードや待機時間データを含む。他にも、初期化コマンドは、転送先のエンコーダ２０−ｎを識別する情報を含んでいてもよい。
【００５４】
待機時間Ｔｗｎを設定するための上記情報は、エンコーダ２０−ｎ毎に、デイジーチェーン接続における接続順位に基づいて定められた待機時間Ｔｗｎである。ここでは、待機時間データが当該情報に相当する。Ｓ１においては、初期化コマンド送信部１００は、接続ポート１４に、待機時間データを含む初期化コマンドを送信することによって、エンコーダ２０−１に初期化コマンドを送信することになる。
【００５５】
エンコーダ２０−１の初期化コマンド受信部２００−１は、コントローラ１０からの初期化コマンドを受信する（Ｓ２）。Ｓ２においては、初期化コマンド受信部２００−１は、伝送路３０−１及び上位接続ポート２４−１を介して、コントローラ１０から初期化コマンドを受信することになる。
【００５６】
エンコーダ２０−１の初期化コマンド再送信部２０１−１は、初期化コマンドを下位のエンコーダ２０−２に送信する（Ｓ３）。なお、初期化コマンド再送信部２０１−１は、初期化コマンド受信部２００−１が受信した初期化コマンドをそのままエンコーダ２０−２に送信してもよいし、初期化コマンドに含まれる情報を変更（書き換え、追加、又は削除）したうえでエンコーダ２０−２に送信してもよい。
【００５７】
初期化コマンドの受信が完了すると、エンコーダ２０−１の待機時間設定部２０２−１は、少なくとも、上位のエンコーダ（エンコーダ２０−１の場合は存在しない）又はコントローラ１０と、当該エンコーダ２０−１と、下位のエンコーダ２０−ｎとの接続順位（即ち、デイジーチェーン接続における接続順位）に応じた待機時間Ｔｗ１を設定する（Ｓ４）。Ｓ４においては、待機時間設定部２０２−１は、初期化コマンドに基づいて待機時間Ｔｗ１を設定することになる。即ち、待機時間設定部２０２−１は、初期化コマンドに含まれる指定待機時間に基づいて待機時間Ｔｗ１を設定する。ここでは、図２に示すように、待機時間設定部２０２−１は、モータ位置情報取得部２０７−１による位置取得タイミングｔ８が、最下位のエンコーダ２０−７がモータ位置情報取得コマンドの受信を完了した後（図２の時点ｔ７Ｅの後）となるように、待機時間Ｔｗ１を設定することになる。
【００５８】
Ｓ４の処理を更に具体的に説明すると、まず、待機時間設定部２０２−１は、初期化コマンドに含まれる待機時間データを参照して、エンコーダ２０−１の指定待機時間である待機時間Ｔｗ１を取得する。なお、エンコーダ２０−１を識別する情報は、予めメモリ２２−１に記憶されており、待機時間設定部２０２−１は、待機時間データに格納された指定待機時間のうち、エンコーダ２０−１のものを特定できるものとする。そして、待機時間設定部２０２−１は、待機時間Ｔｗ１を通信制御部２３内のメモリに保持することによって、待機時間Ｔｗ１を設定する。なお、待機時間設定部２０２−１は、プロセッサ２１−１内のメモリ又はメモリ２２−１に待機時間Ｔｗ１を保持するようにしてもよい。
【００５９】
図５に示すように、エンコーダ２０−２〜２０−７の各々においても、エンコーダ２０−１と同様の処理が行われる。即ち、初期化コマンド受信部２００−２〜２００−７の各々は、初期化コマンド再送信部２０１−１〜２０１−６が送信した初期化コマンドを受信する（Ｓ５，Ｓ８，Ｓ１１，Ｓ１４，Ｓ１７，Ｓ２０）。初期化コマンド再送信部２０１−２〜２０１−６の各々は、初期化コマンドを下位のエンコーダ２０−２〜２０−７に送信する（Ｓ６，Ｓ９，Ｓ１２，Ｓ１５，Ｓ１８）。待機時間設定部２０２−２〜２０２−７の各々は、初期化コマンドに基づいて待機時間Ｔｗ２〜Ｔｗ７を設定する（Ｓ７，Ｓ１０，Ｓ１３，Ｓ１６，Ｓ１９，Ｓ２１）。
【００６０】
初期化時には、各エンコーダ２０−ｎは、待機時間Ｔｗｎの設定以外にも、初期化コマンドに応じてパラメータの初期化等の初期化処理を実行することになる。初期化が完了すると、各エンコーダ２０−ｎは、初期化が完了したことを示す初期化完了通知をコントローラ１０に送信する。
【００６１】
図５では、説明の簡略化のため、初期化完了通知の流れを省略しているが、各エンコーダ２０−ｎの初期化完了送信部２０４−ｎは、初期化コマンドの実行が完了したことを示す初期化完了通知をコントローラ１０に送信する。初期化完了通知は、所定のデータ形式で行われるようにすればよい。エンコーダ２０−１〜２０−６の下位初期化完了受信部２０３−１〜２０３−６の各々は、下位のエンコーダ２０−２〜２０−７から初期化完了通知を受信すると、初期化完了送信部２０４−ｎが転送することになる。
【００６２】
コントローラ１０の初期化完了受信部１０１は、各エンコーダ２０−ｎの初期化完了通知を受信する。初期化が正常に完了しなかった場合には、コントローラ１０が再度初期化コマンドを送信するようにしてもよい。モータ制御システム１は、コントローラ１０が初期化完了通知を受信して初期化処理が完了すると、モータを制御するためにモータ位置情報の取得を開始することになる。
【００６３】
次に、モータ位置情報を取得する場合に実現される機能を、図２を参照しながら説明する。図２に示すように、コントローラ１０のモータ位置情報取得コマンド送信部１０２は、接続ポート１４に、モータ位置情報取得コマンドを送信する（Ｓ１０１）。モータ位置情報取得コマンドは、実施形態１では本発明に係るコマンドの一例であり、エンコーダ２０−ｎにモータ位置情報を取得させるためのコマンドである。モータ位置情報取得コマンドは、所定のデータ形式であればよく、例えば、コマンドの種類を示すコマンドコードを含む。他にも、モータ位置情報取得コマンドは、転送先のエンコーダ２０−ｎを識別する情報を含んでいてもよい。Ｓ１０１においては、モータ位置情報取得コマンド送信部１０２は、接続ポート１４に、モータ位置情報取得コマンドを送信することによって、エンコーダ２０−１にモータ位置情報取得コマンドを送信することになる。
【００６４】
エンコーダ２０−１のモータ位置情報取得コマンド受信部２０５−１は、コントローラ１０からのモータ位置情報取得コマンドを受信する（Ｓ１０２）。Ｓ１０２においては、モータ位置情報取得コマンド受信部２０５−１は、伝送路３０−１及び上位接続ポート２４−１を介して、コントローラ１０からモータ位置情報取得コマンドを受信することになる。
【００６５】
エンコーダ２０−１のモータ位置情報取得コマンド再送信部２０６−１は、モータ位置情報取得コマンド受信部２０５−１が受信したモータ位置情報取得コマンドをエンコーダ２０−２に送信する（Ｓ１０３）。Ｓ１０３においては、モータ位置情報取得コマンド再送信部２０６−１は、モータ位置情報取得コマンド受信部２０５−１が受信したモータ位置情報取得コマンドをそのままエンコーダ２０−２に送信してもよいし、モータ位置情報取得コマンドに含まれる情報を変更（書き換え、追加、又は削除）したうえでエンコーダ２０−２に送信してもよい。
【００６６】
エンコーダ２０−１のモータ位置情報取得部２０７−１は、モータ位置情報取得コマンドにより定まるタイミングと待機時間Ｔｗ１とに応じたタイミングでモータの位置に関するモータ位置情報を取得する（Ｓ１１５）。モータ位置情報取得コマンドにより定まるタイミングとは、モータ位置情報取得コマンドの受信タイミング、又は、モータ位置情報取得コマンドが含む情報に基づいて定まるタイミング（実施形態５参照）である。本実施形態では、モータ位置情報取得コマンドにより定まるタイミングが、モータ位置情報取得コマンドの受信タイミングである場合を説明する。モータ位置情報取得コマンドの受信タイミングとは、モータ位置情報取得コマンドの受信を開始してから受信が完了するまでの期間（図２の例では、時点ｔ１Ｓ〜ｔ１Ｅの期間）内の何れかの時点である。ここでは、モータ位置情報取得コマンドの受信が完了した時点ｔ１Ｅとする。
【００６７】
モータ位置情報取得コマンドの受信タイミングと待機時間Ｔｗ１とに応じたタイミングとは、モータ位置情報取得コマンドの受信タイミングから待機時間Ｔｗ１だけ経過した後の時点である。図２のＳ１１５に示すように、エンコーダ２０−１のモータ位置情報取得部２０７−１は、モータ位置情報取得コマンドの受信を完了した時点ｔ１Ｅから待機時間Ｔｗ１だけ経過した後の時点ｔ８で、モータ位置情報取得コマンドを実行する。先述のように、待機時間Ｔｗ１は通信制御部２３−１内のメモリ等に保持されているので、モータ位置情報取得部２０７−１は、通信制御部２３−１内のメモリ等を参照して待機時間Ｔｗ１を取得して、位置取得タイミングｔ８を特定することになる。
【００６８】
なお、モータ位置情報は、エンコーダ２０−１で検出可能なモータの位置に関する情報が含まれる。例えば、１回転内の位置、回転数、回転角度、又は回転速度等がモータ位置情報に含まれることになる。他にも例えば、モータ位置情報は、当該モータ位置情報が取得されたエンコーダ２０−１を識別する情報を含んでいてもよい。
【００６９】
図２に示すように、エンコーダ２０−２〜２０−７の各々においても、エンコーダ２０−１と同様の処理が行われる。即ち、モータ位置情報取得コマンド受信部２０５−２〜２０５−７の各々は、モータ位置情報取得コマンド再送信部２０６−１〜２０６−６が送信したモータ位置情報取得コマンドを受信する（Ｓ１０４，Ｓ１０６，Ｓ１０８，Ｓ１１０，Ｓ１１２，Ｓ１１４）。そして、モータ位置情報取得コマンド再送信部２０６−２〜２０６−６の各々は、モータ位置情報取得コマンドを下位のエンコーダ２０−３〜２０−７に送信する（Ｓ１０５，Ｓ１０７，Ｓ１０９，Ｓ１１１，Ｓ１１３）。待機時間設定部２０２−２〜２０２−７の各々は、モータ位置情報取得コマンドの受信を完了した時点ｔ２Ｅ〜ｔ７Ｅから、待機時間Ｔｗ２〜Ｔｗ７だけ経過した後の時点ｔ８で、モータ位置情報取得コマンドを実行する（Ｓ１１６〜Ｓ１２１）。
【００７０】
上記のようにして、通信周期の開始時点ｔ０から位置取得タイミングｔ８までの期間は、デイジーチェーン接続の接続順位の上位から下位に対してモータ位置情報取得コマンドが送信される。Ｓ１１５〜Ｓ１２１において、各エンコーダ２０−ｎがモータ位置情報を取得すると、デイジーチェーン接続の接続順位の下位から上位に対してモータ位置情報が送信される。
【００７１】
図２では、説明の簡略化のため、モータ位置情報の送信の流れを省略しているが（詳しくは実施形態２を参照）、エンコーダ２０−７のモータ位置情報送信部２０９−７は、モータ位置情報取得部２０７−７が取得したモータ位置情報をエンコーダ２０−６に送信する。エンコーダ２０−６の下位モータ位置情報受信部２０８−６は、下位接続ポート２５−６から下位モータ位置情報を受信する。下位モータ位置情報は、下位から受信したモータ位置情報のことである。エンコーダ２０−６のモータ位置情報送信部２０９−６は、モータ位置情報取得部２０７−６が取得したモータ位置情報及び下位モータ位置情報を上位接続ポート２４−６により送信する。
【００７２】
エンコーダ２０−１〜２０−５の各々においても、エンコーダ２０−６と同様の処理が行われる。即ち、下位モータ位置情報受信部２０８−１〜２０８−５の各々は、モータ位置情報送信部２０９−２〜２０９−６が送信した下位モータ位置情報を受信する。そして、モータ位置情報送信部２０９−１〜２０９−５の各々は、モータ位置情報及び下位モータ位置情報を上位接続ポート２４−１〜２４−５により送信する。なお、モータ位置情報送信部２０９−１〜２０９−７の各々は、モータ位置情報を一斉に送信してもよいし、互いに送信タイミングが重複しないように調整したうえで送信してもよい。
【００７３】
コントローラ１０のモータ位置情報受信部１０３は、各エンコーダ２０−ｎからモータ位置情報を受信する。コントローラ１０は、受信したモータ位置情報に基づいて、モータを制御する。以降、モータ制御システム１では、通信周期毎に、モータ位置情報取得コマンドの送信及び実行と、モータ位置情報の送信と、が繰り返されることになる。
【００７４】
［１−３．実施形態１まとめ］
実施形態１のモータ制御システム１によれば、各エンコーダ２０−ｎが、モータ位置情報取得コマンドを受信するタイミングが異なっても、位置取得タイミングｔ８でモータ位置情報取得コマンドを一斉に実行するので、デイジーチェーン接続された各エンコーダ２０−ｎによる位置取得タイミングを合わせることができる。また、各エンコーダ２０−ｎの位置取得タイミングがばらばらだと位置決めの精度が悪くなるが、位置取得タイミングが合うので、コントローラ１０に位置決めの精度を向上させることができる。更に、エンコーダ２０−ｎがデイジーチェーン接続されており、コントローラ１０は最上位のエンコーダ２０−ｎと接続すればよいので、省配線が可能となる。即ち、コントローラ１０と各エンコーダ２０−ｎが直接的に接続される場合は、エンコーダ２０−ｎの数だけ配線が必要になるが、このような場合に比べて省配線が可能になる。
【００７５】
また、モータ制御システム１では、初期化コマンドに基づいて待機時間Ｔｗｎを設定するため、初期化以降は各エンコーダ２０−ｎが待機時間Ｔｗｎを記憶しているので、モータ位置情報取得コマンド等の各コマンドにいちいち待機時間Ｔｗｎを含めなくて済む。その結果、モータ位置情報取得コマンド等のデータ長を短くすることができ、処理の高速化が可能になる。特に、モータ制御の分野においては、通信周期を短くして通信周波数を低くすることが求められているため、１通信周期あたりのデータ長を短くすることが要求されるところ、本実施形態に係るモータ制御システム１によれば、このように通信周期が短く通信周波数が低い場合であったとしても、確実に位置取得タイミングを合わせることができる。
【００７６】
また、ユーザが指定した指定待機時間に基づいて待機時間Ｔｗｎを設定するので、各エンコーダ２０−ｎに合った待機時間Ｔｗｎをユーザが自ら設定することができる。
【００７７】
また、各エンコーダ２０−ｎはデイジーチェーン接続されているので、モータ位置情報取得コマンドを受信するのが最も遅いのは最下位のエンコーダ２０−７となるが、その最下位のエンコーダ２０−７がモータ位置情報取得コマンドを受信した後に、各エンコーダ２０−ｎで一斉にモータ位置情報を取得させることができるので、全エンコーダ２０−ｎで位置を取得するタイミングをより確実に合わせることができる。即ち、最下位のエンコーダ２０−７が、まだモータ位置情報取得コマンドを受信していないにもかかわらず、上位側のエンコーダ２０−１〜２０−６がモータ位置情報を取得してしまうようなことを防止することができる。
【００７８】
また例えば、各エンコーダ２０−ｎの接続順位に応じた待機時間Ｔｗｎそのものを初期化コマンドに含めることで、エンコーダ２０−ｎ側で待機時間Ｔｗｎの計算をする必要がなく、受信した待機時間Ｔｗｎをそのまま設定すればよいので、比較的簡易な処理によって待機時間Ｔｗｎを設定することができる。
【００７９】
［１−４．実施形態１の変形例］
なお、実施形態１では、ユーザが指定した指定待機時間によって各エンコーダ２０−ｎの待機時間Ｔｗｎが設定される場合を例に挙げて説明したが、待機時間Ｔｗｎは、ユーザが指定するのではなく、コントローラ１０が計算するようにしてもよい。即ち、各エンコーダ２０−ｎの待機時間Ｔｗｎは、ユーザが手動で決めるのではなく、コントローラ１０が自動的に決めるようにしてもよい。
【００８０】
図６は、実施形態１の変形例における機能ブロック図である。図６に示すように、変形例では、コントローラ１０は、更に待機時間算出部１０４を含む。待機時間算出部１０４は、プロセッサ１１や通信制御部１３により実現される。
【００８１】
待機時間算出部１０４は、待機時間Ｔｗｎを、エンコーダ２０−ｎ毎に、デイジーチェーン接続における接続順位と、モータ位置情報取得コマンドの伝送遅れ時間Ｔｄｒと、モータ位置情報取得コマンドの送受信時間ＴＳＲと、エンコーダ２０−ｎの最大接続数に基づいて定められるモータ位置情報取得コマンド通信期間ＴＣＴと、に基づいて算出する。
【００８２】
図２に示すように、モータ位置情報取得コマンドの送受信時間ＴＳＲは、各エンコーダ２０−ｎがモータ位置情報取得コマンドの送受信に必要な時間であり、上位からのモータ位置情報取得コマンドの受信を開始した時点（例えば、図２の時点ｔ１Ｓ）から、下位へのモータ位置情報取得コマンドの送信を完了した時点（例えば、図２の時点ｔ２Ｅ）までの時間である。エンコーダ２０−ｎの最大接続数は、デイジーチェーンにおける接続台数であり、ｎの最大値（ここでは、７である）である。
【００８３】
なお、各エンコーダ２０−ｎの接続順位、伝送遅れ時間Ｔｄｒ、及び送受信時間ＴＳＲは、メモリ１２に記憶されているようにしてもよいし、エンコーダ２０−ｎから取得するようにしてもよい。エンコーダ２０−ｎから取得する場合には、接続順位はメモリ２２に記憶されており、伝送遅れ時間Ｔｄｒ及び送受信時間ＴＳＲは、エンコーダ２０−ｎが計算する。この場合、通信制御部２３−ｎは、コントローラ１０からのコマンド等のデータを受信した時間から、下位に当該データの転送を開始した時点までを転送遅れ時間Ｔｄｒとして計算する。また、通信制御部２３−ｎは、コントローラ１０からのコマンド等のデータを受信した時間から、下位に当該データの転送を完了した時点までを送受信時間ＴＳＲとして計算する。モータ位置情報取得コマンド通信期間ＴＣＴについては、設定値として予めメモリ１２に記憶されているようにすればよい。
【００８４】
コントローラ１０のメモリ１２が記憶するプログラムには、デイジーチェーン接続における接続順位、伝送遅れ時間Ｔｄｒ、送受信時間ＴＳＲ、及びモータ位置情報取得コマンド通信期間ＴＣＴから待機時間Ｔｗｎを計算するための計算式が記述されている。待機時間算出部１０４は、この計算式に上記各値を代入することで、エンコーダ２０−ｎ毎に待機時間Ｔｗｎを計算する。
【００８５】
例えば、待機時間算出部１０４は、下記の式１を満たすように、待機時間Ｔｗ７を計算する。式１のように待機時間Ｔｗ７を計算するのは、位置取得タイミングｔ８がモータ位置情報取得コマンド通信期間ＴＣＴの経過後にならないようにするためである。また、待機時間算出部１０４は、式２〜式７によって、待機時間Ｔｗ１〜Ｔｗ６を計算する。待機時間算出部１０４は、計算した待機時間Ｔｗ１〜Ｔｗ７を示す待機時間データを生成することになる。
（式１）０≦Ｔｗ７≦ＴＣＴ−ＴＳＲ−５＊Ｔｄｒ
（式２）Ｔｗ６＝Ｔｗ７＋Ｔｄｒ
（式３）Ｔｗ５＝Ｔｗ７＋２＊Ｔｄｒ
（式４）Ｔｗ４＝Ｔｗ７＋３＊Ｔｄｒ
（式５）Ｔｗ３＝Ｔｗ７＋４＊Ｔｄｒ
（式６）Ｔｗ２＝Ｔｗ７＋５＊Ｔｄｒ
（式７）Ｔｗ１＝Ｔｗ７＋６＊Ｔｄｒ
【００８６】
初期化コマンド送信部１００は、待機時間算出部１０４が算出した待機時間Ｔｗｎを示す情報を初期化コマンドに含めて送信することになる。例えば、初期化コマンドには、各エンコーダ２０−ｎを識別する情報と、待機時間算出部１０４が算出した待機時間Ｔｗｎと、が関連付けられている。別の言い方をすれば、初期化コマンド送信部１００は、待機時間算出部１０４が生成した待機時間データを含む初期化コマンドを送信する。エンコーダ２０−ｎが初期化コマンドから待機時間Ｔｗｎを設定する方法は、実施形態で説明した方法と同様である。
【００８７】
上記変形例によれば、接続順位と伝送遅れ時間Ｔｄｒに基づいて待機時間Ｔｗｎを計算しているので、全エンコーダ２０−ｎで位置取得タイミングをより確実に合わせることができる。例えば、上位側のエンコーダ２０−ｎで発生した伝送遅れ時間Ｔｄｒの蓄積のために、下位側のエンコーダ２０−ｎがまだモータ位置情報取得コマンドを受信していないにもかかわらず、上位側のエンコーダ２０−ｎがモータの位置を取得してしまうようなことを防止することができる。
【００８８】
更に、モータ位置情報取得コマンドの送受信時間ＴＳＲと、モータ位置取得コマンド通信期間ＴＣＴと、に基づいて待機時間Ｔｗｎを算出しているので、位置取得タイミングを、モータ位置取得コマンド通信期間ＴＣＴ内とすることができる。即ち、１通信周期内には、モータ位置情報取得コマンドを送受信するモータ位置情報取得コマンド通信期間ＴＣＴと、その後にモータ位置情報を送るモータ位置通信期間と、が存在するが、モータ位置の取得タイミングがモータ位置通信期間内になってしまわないようにすることができる。別の言い方をすれば、モータ位置情報を送るべき期間が来ても、まだモータ位置情報を取得できていないような状況を防止することができる。
【００８９】
なお、待機時間算出部１０４による待機時間Ｔｗｎの算出方法は、上記の例に限られない。待機時間算出部１０４は、メモリ１２に記憶された情報と、コントローラ１０がエンコーダ２０−ｎから受信した情報と、の少なくとも一方に基づいて待機時間Ｔｗｎを算出すればよい。例えば、コントローラ１０が、コマンドを送信した送信時間を記憶しておき、最下位のエンコーダ２０−７からコマンドの受信を完了した完了時間を示す情報を受信し、この完了時間と送信時間との差に基づいて待機時間Ｔｗｎを計算してもよい。この場合、コントローラ１０とエンコーダ２０−ｎとの時間を合わせておくことが望ましい。他にも例えば、エンコーダ２０−ｎの接続順位を示す番号を所定の定数に乗算することで待機時間Ｔｗｎを計算してもよい。
【００９０】
［２．実施形態２］
次に、本発明に係る別実施形態を説明する。本発明の発明者の見地によれば、従来は、デイジーチェーン接続されたセンサがモータ関連情報をコントローラに送信する場合には、各センサの送信タイミングが重複しないようにいちいち調整する必要があった。そこで本発明の発明者は、モータ関連情報の送信を容易にするために鋭意研究開発を行った結果、新規かつ独創的なモータ制御システム等に想到した。以降、実施形態２のモータ制御システム等を詳細に説明する。なお、実施形態２でも、センサの一例としてエンコーダを説明する。
【００９１】
実施形態２のモータ制御システム１の物理構成及び機能ブロック図は、実施形態１と同様である。実施形態２では、各エンコーダ２０−ｎが、モータ位置情報取得コマンドを転送する処理と、コントローラ１０にモータ位置情報を送信する処理と、を詳しく説明する。
【００９２】
［２−１．実施形態２で実現される機能］
図７は、実施形態２でモータ位置情報がコントローラ１０に送信される様子を示す図である。図７のＳ１０１〜Ｓ１２１に示すように、各エンコーダ２０−ｎがモータ位置情報を取得するまでの流れは、実施形態１と同様であるが、ここでは、各エンコーダ２０−ｎが、モータ位置情報取得コマンドを転送するＳ１０２〜Ｓ１１３の処理の詳細を説明する。
【００９３】
図７に示すように、モータ位置情報取得コマンドを送受信するモータ位置情報取得コマンド通信期間ＴＣＴより、モータ位置情報及び下位モータ位置情報を送受信するモータ位置情報通信期間ＴＩＴの方が長い。例えば、モータ位置情報取得コマンド通信期間ＴＣＴは、通信周期ＴＣＣの開始時点ｔ０から位置取得タイミングｔ８までの期間である。モータ位置情報通信期間ＴＩＴは位置取得タイミングｔ８から通信周期ＴＣＣの終了時点ｔ９（次の通信周期ＴＣＣの開始時点）までの期間である。
【００９４】
上記のように、１通信周期ＴＣＣ内に、１つのモータ位置情報取得コマンド通信期間ＴＣＴと、１つのモータ位置情報通信期間ＴＩＴが含まれることになる。モータ位置情報取得コマンド通信期間ＴＣＴの後に、モータ位置情報通信期間ＴＩＴが訪れる。別の言い方をすれば、デイジーチェーン接続されたエンコーダ２０−ｎの接続順位が上位から下位に向けてデータを送信するモータ位置情報取得コマンド通信期間ＴＣＴの後に、接続順位が下位から上位に向けてデータを送信するモータ位置情報通信期間ＴＩＴが訪れることになる。
【００９５】
図７に示すように、エンコーダ２０−１のモータ位置情報取得コマンド再送信部２０６−１は、モータ位置情報取得コマンド受信部２０５−１により受信したモータ位置情報取得コマンドを、受信が完了する前に下位接続ポート２５−１より送信する。即ち、エンコーダ２０−２に対してモータ位置情報取得コマンドの送信を開始する時点ｔ２Ｓは、モータ位置情報取得コマンドの受信が完了する時点ｔ１Ｅよりも前である。モータ位置情報取得コマンド再送信部２０６−１は、コントローラ１０からのモータ位置情報取得コマンドの受信の完了を待たず、エンコーダ２０−２へのモータ位置情報取得コマンドの送信を開始することになる。
【００９６】
例えば、モータ位置情報取得コマンド再送信部２０６−１は、モータ位置情報取得コマド受信部２０５−１により受信したモータ位置情報取得コマンドを、カットスルー方式により下位接続ポート２５−１より送信する。カットスルー方式は、受信した情報の転送先の機器が自らに接続されている場合に、情報を蓄積せずに受信しながらそのまま転送先の機器に送信する通信方式である。
【００９７】
例えば、モータ位置情報取得コマンド再送信部２０６−１は、モータ位置情報取得コマンドの所定部分（例えば、ヘッダ部分）に含まれる転送先の情報を参照して、転送先が下位のエンコーダ２０−２であれば、モータ位置情報取得コマンドを蓄積せずに受信しながらエンコーダ２０−２に転送する。なお、各エンコーダ２０−ｎは、自身の下位及び上位の機器を識別する情報をメモリ２２−ｎ等に記憶しているものとする。
【００９８】
エンコーダ２０−２〜２０−６の各々においても、エンコーダ２０−１と同様に、モータ位置情報取得コマンド再送信部２０６−２〜２０６−６の各々は、モータ位置情報取得コマンドを下位のエンコーダ２０−３〜２０−７にカットスルー方式で送信することになる（Ｓ１０５，Ｓ１０７，Ｓ１０９，Ｓ１１１，Ｓ１１３）。エンコーダ２０−７がモータ位置情報取得コマンドの受信を完了した後は、実施形態１と同様に、位置取得タイミングｔ８で各エンコーダ２０−ｎがモータ位置情報を取得する。
【００９９】
なお、上記ではカットスルー方式を一例に挙げて説明したが、他の方法でモータ位置情報取得コマンドを転送してもよい。モータ位置情報取得コマンドの受信が完了する前に送信を開始すればよく、例えば、受信したモータ位置情報取得コマンドを蓄積しつつ、受信が完了する前に転送するようにしてもよい。
【０１００】
位置取得タイミングｔ８が訪れた後は、各エンコーダ２０−ｎは、コントローラ１０に対してモータ位置情報の送信を順次開始する。モータ位置情報を送信するタイミングは、各エンコーダ２０−ｎがモータ位置情報取得コマンドの受信タイミングの一定時間後のタイミングであってもよいし、各エンコーダ２０−ｎで同じであってもよい。例えば、エンコーダ２０−７のモータ位置情報送信部２０９−７は、モータ位置情報をエンコーダ２０−６に送信する（Ｓ１２２）。エンコーダ２０−６の下位モータ位置情報受信部２０８−６は、下位接続ポート２５−６から下位モータ位置情報を受信するが（Ｓ１２４）、図７のＳ１２３に示すように、この時点では、モータ位置情報送信部２０９−６は、モータ位置情報を送信中であるため、下位モータ位置情報をすぐに送信することができない。
【０１０１】
このため、モータ位置情報送信部２０９−６は、モータ位置情報を上位接続ポート２４−６により送信し（Ｓ１２３）、下位モータ位置情報を、モータ位置情報の送信が完了した後に上位接続ポート２４−６により送信する（Ｓ１２４）。例えば、エンコーダ２０−５に対して下位モータ位置情報の送信を開始する時点は、モータ位置情報の送信が完了する時点よりも後であり、図７では、下位モータ位置情報の受信が完了する時点と同時である。Ｓ１２４においては、モータ位置情報送信部２０９−６は、モータ位置情報の送信を完了するまでは、下位モータ位置情報を、通信制御部２３−６内のメモリに記憶させる。なお、下位モータ位置情報を、プロセッサ２１−６内のメモリに記憶するようにしてもよいし、メモリ２２−６に記憶するようにしてもよい。
【０１０２】
Ｓ１２４において、例えば、モータ位置情報送信部２０９−６は、下位モータ位置情報を、ストアアンドフォワード方式により上位接続ポート２４−６により送信する。ストアアンドフォワード方式は、受信した情報をいったんすべて受信して蓄積してから、転送先の機器へ送信する方式のことである。ここでは、図７に示すように、モータ位置情報送信部２０９−６は、下位モータ位置情報の受信を完了した後に、下位モータ位置情報の送信を開始することになる。別の言い方をすれば、モータ位置情報送信部２０９−６は、モータ位置情報を送信している間は、下位モータ位置情報を受信したとしても、下位モータ位置情報を送信せずに待機することになる。
【０１０３】
エンコーダ２０−１〜２０−５の各々においても、エンコーダ２０−６と同様に、モータ位置情報送信部２０９−１〜２０９−５の各々は、モータ位置情報を送信しつつ（Ｓ１２５〜Ｓ１２９）、下位モータ位置情報をストアアンドフォワード方式で送信する（Ｓ１３０〜Ｓ１３４）ことになる。コントローラ１０が、各エンコーダ２０−ｎからモータ位置情報を受信した後は、実施形態１と同様である。
【０１０４】
なお、上記説明した方法以外にも、他の方法で下位モータ位置情報を送信してもよい。モータ位置情報の送信が完了した後に下位モータ位置情報の送信を開始すればよく、例えば、受信した下位モータ位置情報を蓄積しつつ、下位モータ位置情報の受信が完了する前にモータ位置情報の送信が完了した場合には、下位モータ位置情報の転送を開始してもよい。即ち、下位モータ位置情報の受信の完了を待たなくても、下位モータ位置情報の転送を開始してもよい。
【０１０５】
［２−２．実施形態２まとめ］
実施形態２のモータ制御システム１では、各エンコーダ２０−ｎは、デイジーチェーン接続をしているため、下位モータ位置情報を上位のエンコーダ２０−ｎに送信する必要がある。例えば、下位モータ位置情報をカットスルー方式で転送しようとすると、一応はコントローラ１０に送信することが可能であるが、各エンコーダ２０−ｎの送信タイミングが重ならないようにいちいち調整する必要がある。この点、実施形態２によれば、例えば、ストアアンドフォワード形式で下位モータ位置を送信するので、このような調整をする必要がなくなる。その結果、ユーザの調整負担を軽減するとともに、コントローラ１０やエンコーダ２０−ｎの処理負担を軽減することができる。更に、コントローラ１０は、モータ位置情報を確実かつ迅速に取得することができるようになる。
【０１０６】
また、エンコーダ２０−ｎは、上位からモータ位置情報取得コマンドを受信すると、原則として、次の通信周期ＴＣＣが訪れるまでは、上位からデータを受信することがない。この点に着目し、上位から受信したモータ位置情報取得コマンドをカットスルー方式で転送することで、モータ位置情報取得コマンドをいちいちため込む必要が無くなるので、下位に迅速にモータ位置情報取得コマンドを転送することができる。その結果、モータ位置情報取得コマンド通信期間ＴＣＴを短くすることができ、モータ位置通信期間ＴＩＴを充分に確保することができる。更に、モータ位置の取得タイミングを早めることができ、コントローラ１０は、モータ位置をより早い段階で取得することができる。
【０１０７】
また、コントローラ１０は各エンコーダ２０−ｎからモータ位置情報を受信する必要があるため、モータ位置通信期間ＴＩＴをモータ位置情報取得コマンド通信期間ＴＣＴに比べて長く設定しているので、ストアアンドフォワード方式を用いても確実にモータ位置を送信することができる。即ち、まだモータ位置を送信し終わっていないにも関わらず、次の通信周期ＴＣＣが来てしまうようなことを防止することができる。
【０１０８】
なお、ストアアンドフォワード方式で下位モータ位置情報を送信する場合に、下位モータ位置情報をそのまま転送すると、伝送の遅れなどによって、データの先頭の信号パターンが中継によって欠落することがあるので、データ検出用の所定のデータパターンを先頭に付加したうえで転送することで、転送時の先頭データの欠落をなくすようにしてもよい。
【０１０９】
［２−３．実施形態２の変形例］
なお、実施形態２では、各エンコーダ２０−ｎが、モータ位置情報と下位モータ位置情報を別々に送信する場合を例に挙げて説明したが、各モータエンコーダ２０−ｎは、モータ位置情報と下位モータ位置情報とを結合して一つのデータとして送信するようにしてもよい。
【０１１０】
図８は、実施形態２の変形例におけるモータ位置情報がコントローラ１０に送信される様子を示す図である。図８のＳ１０１〜Ｓ１２１に示すように、位置取得タイミングｔ８が訪れてからエンコーダ２０−７がモータ位置情報をエンコーダ２０−６に送信するまでは、図７と同様である。
【０１１１】
実施形態１及び２では説明を省略したが、モータ位置情報及び下位モータ位置情報は、所定形式のプリアンブルヘッダを有する。プリアンブルヘッダは、所定値のデータであればよく、例えば、データの開始位置を示すために用いられる。図８に示すように、エンコーダ２０−７のモータ位置情報送信部２０９−７は、プリアンブルヘッダＦ１、モータ位置情報、及び末尾フラグＦ２に順番で構成されるデータをエンコーダ２０−６に送信する（Ｓ１３５）。末尾フラグＦ２は、所定値のデータであればよく、例えば、データの終了位置を示すために用いられる。
【０１１２】
エンコーダ２０−６の下位モータ位置情報受信部２０８−６が下位モータ位置情報を受信すると（Ｓ１３６）、モータ位置情報送信部２０９−６は、下位モータ位置情報のプリアンブルヘッダＦ１を削除し、モータ位置情報に続けて送信する（Ｓ１３７）。Ｓ１３７においては、例えば、モータ位置情報送信部２０９−６は、プリアンブルヘッダＦ１及びモータ位置情報の順番で構成されるデータに、下位モータ位置情報のプリアンブルヘッダＦ１を削除したデータを結合し、プリアンブルヘッダＦ１、モータ位置情報及び下位モータ位置情報、及び末尾フラグＦ２の順番で構成されるデータを送信することになる。
【０１１３】
エンコーダ２０−１〜２０−５の各々においても、エンコーダ２０−６と同様に、下位モータ位置情報受信部２０８−１〜２０８−５が下位モータ位置情報を受信すると（Ｓ１３８，Ｓ１４０，Ｓ１４２，Ｓ１４４，Ｓ１４６）、モータ位置情報送信部２０９−１〜２０９−５は、下位モータ位置情報のプリアンブルヘッダＦ１を削除して、モータ位置情報に続けて送信する（Ｓ１３７，Ｓ１３９，Ｓ１４１，Ｓ１４３，Ｓ１４５）ことになる。コントローラ１０が、各エンコーダ２０−ｎからモータ位置情報を受信した後は、実施形態１と同様である。
【０１１４】
本変形例によれば、各エンコーダ２０−ｎが、下位モータ位置情報のプリアンブルヘッダＦ１を削除して自身のモータ位置情報に続けて送信することで、より短いデータ長での伝送が可能となり、データ転送効率が向上する。
【０１１５】
なお、実施形態２及び変形例では、実施形態１のように各エンコーダ２０−ｎに待機時間Ｔｗｎを設定するようにしてもよいし、特に待機時間Ｔｗｎを設定しないようにしてもよい。即ち、実施形態２及び変形例では、モータ位置情報取得コマンドの転送方法と、モータ位置情報及び下位モータ位置情報の送信方法と、が上記説明した方法で行われるようにすればよく、各エンコーダ２０−ｎの位置取得タイミングがずれていても構わない。
【０１１６】
［３．実施形態３］
次に、本発明に係る別実施形態を説明する。本発明の発明者の見地によれば、従来は、センサがモータ関連情報をコントローラに送信するために半２重通信路を利用する場合、例えば、他のケーブルからの信号がクロストーク等のノイズが伝送路に乗ってしまうことがあった。そこで本発明の発明者は、クロストーク等のノイズの影響を軽減するために鋭意研究開発を行った結果、新規かつ独創的なモータ制御システム等に想到した。以降、実施形態３のモータ制御システム等を詳細に説明する。なお、実施形態３でも、センサの一例としてエンコーダを説明する。
【０１１７】
なお、実施形態３のモータ制御システムの物理構成は、実施形態１と同様である。ただし、実施形態３の各伝送路３０−ｎは、半２重通信路である。半２重通信方式は、例えば、ＲＳ−４８５形式であってよく、この場合、接続ポート１４、上位接続ポート２４−ｎ、及び下位接続ポート２５−ｎの各々は、ＲＳ−４８５トランシーバを含むことになる。各上位接続ポート２４−ｎは、半２重通信方式により上位のエンコーダ２０−ｎ又はコントローラ１０と接続されることになり、各下位接続ポート２５−ｎは、半２重通信方式により下位のエンコーダ２０−ｎと接続される。
【０１１８】
［３−１．実施形態３で実現される機能］
図９は、実施形態３のモータ制御システムの機能ブロック図である。図９に示すように、実施形態３のエンコーダでは、イネーブル保持部２１０−ｎが実現される。他の各機能は、実施形態１及び２で説明した内容と同様であってよい。イネーブル保持部２１０−ｎは、通信制御部２３により実現される。
【０１１９】
実施形態３では、各エンコーダ２０−ｎが上位からモータ位置情報取得コマンドを受信すると、次の通信周期ＴＣＣが訪れるまでは、原則として、上位からデータを受信することがないので、この点に着目して、上位接続ポート２４−ｎを送信イネーブル状態にすることで、伝送路３０−ｎの信号を安定させて、クロストークの影響を抑えるようになっている。
【０１２０】
図１０は、実施形態３の処理の流れを示す図である。図１０のＳ１０１〜Ｓ１２１に示すように、各エンコーダ２０−ｎがモータ位置情報を取得するまでの流れは、実施形態１及び２と同様であるが、ここでは、各エンコーダ２０−ｎが、モータ位置情報取得コマンドを転送するＳ１０２〜Ｓ１１３の処理を、更に詳細に説明する。
【０１２１】
図１０に示すように、Ｓ１０１において、コントローラ１０のモータ位置情報取得コマンド送信部１０２は、接続ポート１４を送信イネーブル状態にして、モータ位置情報取得コマンドを送信し、送信が完了した後に送信イネーブル状態を解除する。図１０では、「送信イネーブル」を示す線が立ち上がっている状態を、送信イネーブル状態として示している。所定のビット列を示す送信イネーブル信号によって、送信イネーブル状態となる。送信イネーブル状態の解除も同様に、所定のビット列を示す送信イネーブル解除信号によって行われるようにすればよい。
【０１２２】
Ｓ１０２において、エンコーダ２０−１のモータ位置情報取得コマンド受信部２０５−１は、モータ位置情報取得コマンドを受信すると、Ｓ１０３において、モータ位置情報取得コマンド再送信部２０６−１は、下位接続ポート２５−１を送信イネーブル状態にして、モータ位置情報取得コマンドを送信し、送信が完了した後に送信イネーブル状態を解除する。
【０１２３】
エンコーダ２０−２〜２０−６の各々においても、エンコーダ２０−１と同様に、モータ位置情報取得コマンド再送信部２０６−２〜２０６−６の各々は、下位接続ポート２５−２〜２５−６の送信イネーブル状態にして、モータ位置情報取得コマンドを送信し、送信が完了した後に送信イネーブル状態を解除する（Ｓ１０５，Ｓ１０７，Ｓ１０９，Ｓ１１１，Ｓ１１３）。エンコーダ２０−７がモータ位置情報取得コマンドの受信を完了した後は、実施形態１と同様に、位置取得タイミングｔ８で各エンコーダ２０−ｎがモータ位置情報を取得する。
【０１２４】
実施形態３では、位置取得タイミングｔ８が訪れた後に、イネーブル保持部２１０−１〜２１０−７の各々は、上位接続ポート２４−１〜２４−７の各々を送信イネーブル状態とする（Ｓ１４８〜Ｓ１５４）。この状態になると、モータ位置情報送信部２０９−ｎは、モータ位置情報を送信可能な状態となり、Ｓ１５５〜Ｓ１６７のように、モータ位置情報を送信する。Ｓ１５５〜Ｓ１６７は、Ｓ１２２〜Ｓ１３４と同様であるが、Ｓ１３５〜Ｓ１４７のように送信してもよい。
【０１２５】
図１０に示すように、イネーブル保持部２１０−１〜２１０−７の各々は、モータ位置情報送信部２０９−１〜２１０−７による送信が終了した後、所定の時間、上位接続ポート２４−ｎを送信イネーブル状態に保持する。送信イネーブル状態を保持するとは、上述のように、所定のビット列を示す送信イネーブル信号を通信ケーブルに印加し、通信経路上の電位をある特定の値に保つ（即ち、信号レベルを固定する）ことである。これにより、通信経路上の電位が不定とならず、クロストーク等のノイズの影響を受けにくくなる。上記所定の時間は、予め定められた期間であればよく、例えば、次の通信周期ＴＣＣが訪れるまでであってもよい。ここでは、イネーブル保持部２１０−１〜２１０−７の各々は、所定の長さの状態保持期間Ｔｅｎａｂｌｅだけ送信イネーブル状態を保持する。
【０１２６】
状態保持期間Ｔｅｎａｂｌｅは、通信周期ＴＣＣによって定まり、各エンコーダ２０−ｎで共通であってもよいし、エンコーダ２０−ｎ毎に定められていてもよい。送信イネーブル状態になった伝送路３０−ｎは信号レベルが固定されるので、図１０に斜線で示した期間だけ、伝送路３０−１〜３０−７の各々の信号レベルが固定されることになる。なお、状態保持期間Ｔｅｎａｂｌｅは、予めメモリ２２等に記憶されているようにしてもよいし、待機時間Ｔｗｎと同様にして、初期化時に設定されるようにしてもよい。
【０１２７】
イネーブル保持部２１０−ｎは、少なくともモータ位置情報取得コマンド受信部２０５−ｎによりモータ位置情報取得コマンドが受信されるまでに送信イネーブル状態を解除する。例えば、イネーブル保持部２１０−ｎは、通信周期ＴＣＣの終了時点ｔ９（即ち、次の通信周期ＴＣＣの開始時点）よりも前に、送信イネーブル状態を解除する。
【０１２８】
［３−２．実施形態３まとめ］
実施形態３のモータ制御システム１によれば、各エンコーダ２０−ｎは、上位からモータ位置情報取得コマンドを受信すると、次の通信周期ＴＣＣが訪れるまでは、上位から何らかの情報を受信することは基本的にないので、エンコーダ２０−ｎは、モータ位置情報を送信した後は、送信イネーブル状態にして伝送路３０−ｎの信号レベルを固定することによって、他のケーブルからの信号がクロストークによって伝送路３０−ｎに乗ってしまう等のノイズの影響を受けることを防止することができる。例えば、接続順位が下であるほど何もデータを送信しない期間が長いため、最下位に近いほどノイズの影響を受けやすいが、最下位に近いエンコーダ２０−ｎでも、ノイズの影響を防止することができる。
【０１２９】
また、各エンコーダ２０−ｎは、次の通信周期ＴＣＣが到来して、モータ位置取得コマンドを受信しようとしても、送信イネーブル状態のままだと受信できなくなってしまうが、それまでに送信イネーブル状態を解除することで、ノイズの影響を防止しつつ、次のモータ位置取得コマンドも確実に受信することができる。
【０１３０】
なお、実施形態３では、実施形態１のように各エンコーダ２０−ｎに待機時間Ｔｗｎを設定するようにしてもよいし、特に待機時間Ｔｗｎを設定しないようにしてもよい。同様に、実施形態３では、実施形態２のように各データを送信してもよいし、他の方法で送信してもよい。即ち、実施形態３では、上位接続ポート２４−ｎの送信イネーブル状態が上記説明した方法で保持及び解除されるようにすればよく、各エンコーダ２０−ｎの位置取得タイミングがずれていても構わないし、カットスルー方式やストアアンドフォワード方式を利用しなくてもよい。
【０１３１】
なお、実施形態１〜３の各々を組み合わせてもよい。
【０１３２】
［４．実施形態４］
次に、本発明に係る別実施形態を説明する。実施形態１〜３では、各エンコーダ２０がモータ位置情報取得コマンドに応じてモータ位置情報を取得する場合を説明したが、各エンコーダ２０は、モータ位置情報取得コマンドを受信しなくても、他のエンコーダ２０と同じ位置取得タイミングでモータ位置情報を取得するようにしてもよい。なお、実施形態１〜３では、モータ位置情報取得コマンドが本発明に係るコマンドに相当したが、実施形態４では、初期化コマンドが本発明に係るコマンドに相当する。
【０１３３】
実施形態４のモータ制御システム１の物理構成は、実施形態１〜３と同様である。実施形態４のモータ制御システム１の機能ブロックは、実施形態１〜３と略同様であるが、コントローラ１０は、モータ位置情報取得コマンドを送信しないので、コントローラ１０のモータ位置情報取得コマンド送信部１０２は省略してよい。同様に、各エンコーダ２０は、モータ位置情報取得コマンドを受信しないので、モータ位置情報取得コマンド受信部２０５−ｎと、モータ位置情報取得コマンド再送信部２０６−ｎと、は省略してよい。なお、実施形態４では、初期化コマンド受信部２００−ｎが、本発明に係るコマンド受信部に相当し、初期化コマンド再送信部２０１−ｎが、本発明に係るコマンド再送信部に相当する。
【０１３４】
図１１は、実施形態４の処理の流れを示す図である。なお、図１１では、説明の簡略化のため、各エンコーダ２０がモータ位置情報をコントローラ１０に送信する処理は省略している。図１１に示すように、まず、Ｓ１〜Ｓ２１の処理が実行される点については、実施形態１〜３と同様である。ただし、実施形態４では、初期化コマンドには、通信周期ＴＣＣの長さを示す通信周期情報が含まれているものとする。通信周期情報は、コントローラ１０のメモリ１２等に記憶されているようにすればよい。また、Ｓ４，Ｓ７，Ｓ１０，Ｓ１３，Ｓ１６，Ｓ１９，Ｓ２１では、待機時間設定部２０２−１〜２０２−７の各々は、初期化コマンドの受信タイミングから最初の位置取得タイミングｔ１２までの待機時間Ｔｗ１〜Ｔｗ７を設定することになる。
【０１３５】
初期化コマンドの受信タイミングは、初期化コマンドの受信を開始してから受信が完了するまでの期間内の何れかの時点である。ここでは、初期化コマンドの受信が完了した時点とする。最初の位置取得タイミングとは、初期化コマンドを受信した後の１回目の位置取得タイミングである。このため、実施形態４の待機時間Ｔｗ１〜Ｔｗ７の長さは、実施形態１〜３とは異なっている。例えば、待機時間Ｔｗ１〜Ｔｗ７は、初期化コマンドの受信が完了した時点から、通信周期ＴＣＣの開始時点ｔ１１の所定時間後の位置取得タイミングｔ１２までの長さとなる。この通信周期ＴＣＣは、初期化コマンドを受信した通信周期ＴＣＣの次のものであってもよいし、所定周期だけ後のものであってもよい。また、上記所定時間は、モータ位置情報通信期間ＩＴを十分に確保できるように定めればよく、０であってもよい。なお、初期化コマンドの伝送遅延時間は、実施形態１で説明したモータ位置情報取得コマンドの伝送遅延時間Ｔｄｒと同じであってもよい。この場合、実施形態４でも、待機時間Ｔｗ１〜Ｔｗ７の各々は、伝送遅延時間Ｔｄｒだけずれることになる。
【０１３６】
なお、Ｓ４，Ｓ７，Ｓ１０，Ｓ１３，Ｓ１６，Ｓ１９，Ｓ２１では、待機時間設定部２０２−１〜２０２−７の各々は、初期化コマンドに含まれる通信周期情報を通信制御部２３−１〜２３−７内のメモリ等に保持するものとする。これは、２回目以降の位置取得タイミングを特定するためである。
【０１３７】
モータ位置情報取得部２０７−１〜２０７−７の各々は、初期化コマンドの受信タイミングから待機時間Ｔｗ１〜Ｔｗ７が経過した位置取得タイミングｔ１２で、最初のモータ位置情報を取得する（Ｓ１１５−１〜Ｓ１２１−１）。例えば、モータ位置情報取得部２０７−１〜２０７−７の各々は、初期化コマンドの受信タイミングから計時を開始し、通信制御部２３−１〜２３−７内のメモリ等に保持された待機時間Ｔｗ１〜Ｔｗ７が経過した場合に、モータ位置情報を取得することになる。
【０１３８】
なお、Ｓ１１５−１〜Ｓ１２１−１の各々の処理は、それぞれ実施形態で説明したＳ１１５〜Ｓ１２１と同様である。また、先述したように、ここでは、各エンコーダ２０がコントローラ１０にモータ位置情報を送信する処理は省略しているが、次の通信周期ＴＣＣの開始時点ｔ１３が訪れるまでに、実施形態２で説明したような方法によって、モータ位置情報がコントローラ１０に送信されるようにすればよい。
【０１３９】
最初の位置取得タイミングｔ１２が訪れた後は、モータ位置情報取得部２０７−１〜２０７−７の各々は、通信周期ＴＣＣごとにモータ位置情報を取得する（Ｓ１１５−２〜Ｓ１２１−２，Ｓ１１５−３〜Ｓ１２１−３）。例えば、モータ位置情報取得部２０７−１〜２０７−７の各々は、モータ位置情報を取得すると計時を開始し、通信制御部２３−１〜２３−７内のメモリ等に保持された通信周期ＴＣＣが経過した場合に、モータ位置情報を取得することになる。１回目の位置取得タイミングｔ１２が各エンコーダ２０で合っているので、それ以降は所定時間毎に位置取得タイミングｔ１４，ｔ１６が訪れるようにすることで、モータ位置情報取得コマンドを送受信しなくても、２回目以降の位置取得タイミングｔ１４，ｔ１６も各エンコーダ２０で合わせることができる。
【０１４０】
実施形態４によれば、モータ位置情報取得コマンドを送受信しなくても、各エンコーダ２０−ｎでモータ位置情報の取得タイミングを合わせることができる。モータ位置情報取得コマンドを送受信する必要がないので、通信周期ＴＣＣを短くしても、モータ位置情報通信期間ＴＩＴを十分に確保することができる。
【０１４１】
なお、実施形態４では、１回目の位置取得タイミングｔ１２が訪れた後は、通信周期ＴＣＣ毎にモータ位置情報を取得する場合を説明したが、各エンコーダ２０−ｎで同じ位置取得タイミングとなるようにすればよく、通信周期ＴＣＣ毎でなくてもよい。ある位置取得タイミングから次の位置取得タイミングまでの時間が各エンコーダ２０−ｎで同じであり、各エンコーダ２０−ｎ間で位置取得タイミングが合うようにすればよい。この時間は、コントローラ１０の指示により各エンコーダ２０−ｎに設定されるようにすればよい。
【０１４２】
また、実施形態１〜３で説明した構成と、実施形態４と、を組み合わせてもよい。例えば、実施形態１と同様に、待機時間設定部２０２−ｎは、位置取得タイミングが、最下位のエンコーダ２０−７が初期化コマンドの受信を完了した後となるように待機時間Ｔｗｎを設定してもよい。また、実施形態１の変形例と同様に、コントローラ１０は、待機時間算出部１０４を含むようにしてもよい。この場合、待機時間算出部１０４は、各エンコーダ２０−ｎの接続順位と、初期化コマンドの伝送遅れ時間と、初期化コマンドの送受信時間と、初期化コマンドの送受信のための通信期間と、に基づいて待機時間を算出するようにすればよい。また、初期化コマンド再送信部２０１−ｎが本発明に係るコマンド再送信部に相当し、実施形態２と同様に、初期化コマンドをカットスルー方式で下位のエンコーダ２０−ｎに送信するようにしてもよい。
【０１４３】
［５．実施形態５］
次に、本発明に係る別実施形態を説明する。実施形態１〜４では、各エンコーダ２０が、モータ位置情報取得コマンドや初期化コマンドの受信タイミングに基づいてモータ位置情報を取得する場合を説明したが、実施形態５では、各エンコーダ２０が、コントローラ１０により指定されたタイミングに基づいてモータ位置情報を取得する場合を説明する。例えば、モータ位置情報の取得を待機する際の起点となるタイミングが、初期化コマンドやモータ位置情報取得コマンドの受信タイミングではなく、コントローラ１０により指定されたタイミングである場合を説明する。
【０１４４】
実施形態５のモータ制御システム１の物理構成は、実施形態１〜４と同様である。実施形態５のモータ制御システム１の機能ブロックは、実施形態１〜３と略同様であってもよいし、実施形態４と同様に、モータ位置情報取得コマンド送信部１０２、モータ位置情報取得コマンド受信部２０５−ｎ、及び、モータ位置情報取得コマンド再送信部２０６−ｎを省略してもよい。
【０１４５】
また、初期化コマンドが実行されるまでの処理の流れは、実施形態１のＳ１〜Ｓ２１（図５）と同様であってもよいが、実施形態５では、例えば、Ｓ４，Ｓ７，Ｓ１０，Ｓ１３，Ｓ１６，Ｓ１９，Ｓ２１において、各エンコーダ２０−ｎは、初期化コマンドを受信すると、時間情報を初期化するものとする。なお、ここでは、説明の簡略化のため、待機時間Ｔｗｎを設定する上記各ステップにおいて時間情報の初期化が実行される場合を説明するが、待機時間Ｔｗｎを設定するステップと、時間情報の初期化を実行するステップと、を分けてもよい。
【０１４６】
時間情報は、時間を示す数値であり、例えば、所定時間ごとに値が変化するカウントアップタイマ又はカウントダウンタイマであってもよいし、日時を示すリアルタイムクロックであってもよい。本実施形態では、カウントアップタイマが用いられる場合を例に挙げて説明する。時間情報は、通信制御部２３−１内のメモリ等に記憶されている。時間情報の初期化とは、時間情報が示す数値を所定値にすることであり、例えば、カウントアップタイマを０にすることである。各エンコーダ２０−ｎは、時間情報を初期化すると計時を開始し、所定時間が経過するたびに時間情報を更新する。本実施形態では、各エンコーダ２０−ｎは、カウントアップタイマである時間情報を０にするとカウントアップを開始することになる。
【０１４７】
図５に示すように、各エンコーダ２０−ｎは、デイジーチェーン接続されているので、各エンコーダ２０−ｎが初期化コマンドを受信して時間情報を初期化するタイミングは、伝送遅延時間Ｔｄｒだけずれることになる。このため、ある時点における各エンコーダ２０−ｎの時間情報は、デイジーチェーンの接続順位に応じた値だけずれることになる。より具体的には、例えば、各エンコーダ２０−ｎの時間情報が示す値をＴｎとする。エンコーダ２０−１は、他のエンコーダ２０−２〜２０−７よりも時間情報を初期化するタイミングが早く、Ｓ４において、時間情報Ｔ１が０になる。そして、エンコーダ２０−１は、時間情報Ｔ１のカウントアップを開始し、伝送遅延時間Ｔｄｒを示す値だけカウントアップしたときに、エンコーダ２０−２は、時間情報Ｔ２を０にする。このように、各エンコーダ２０−ｎの時間情報Ｔｎは、伝送遅延時間Ｔｄｒだけずれることになる。
【０１４８】
上記のようにして初期化コマンドが実行されると、各エンコーダ２０−ｎは、モータ位置情報を取得することになる。図１２は、実施形態５においてモータ位置情報取得コマンドが転送される様子を示す図である。図１２に示すように、Ｓ１０１〜Ｓ１１４の処理が実行され、各エンコーダ２０−ｎがモータ位置情報取得コマンドを送受信する点については、実施形態１（図２）と同様である。ただし、実施形態５では、モータ位置情報取得コマンドに、待機時間Ｔｗｎの起点となるタイミング（ここでは、カウントアップタイマが示す数値）を示す起点情報が含まれているものとする。モータ位置情報取得部２０７−ｎは、受信したモータ位置情報取得コマンドに含まれるタイミングを参照し、そのタイミングから待機時間Ｔｗｎだけ待機したタイミングでモータ位置情報を取得することになる。
【０１４９】
先述のように、各エンコーダ２０−ｎの時間情報Ｔｎは、伝送遅延時間Ｔｄｒだけずれているので、図１２に示すように、エンコーダ２０−１〜２０−６の各々が起点情報により特定するタイミングｔ１Ｄ〜ｔ６Ｄと、エンコーダ２０−２〜２０−７の各々が起点情報により特定するタイミングｔ２Ｄ〜ｔ７Ｄと、は伝送遅延時間Ｔｄｒだけずれていることになる。そして、各エンコーダ２０−ｎに設定される待機時間Ｔｗｎは、伝送遅延時間Ｔｄｒだけずれているため、Ｓ１１５〜Ｓ１２１に示すように、各エンコーダ２０−ｎは、同じ位置取得タイミングｔ８でモータ位置情報を取得することになる。
【０１５０】
なお、２回目以降のモータ位置情報の取得に関し、コントローラ１０は、モータ位置情報取得コマンドに起点情報を毎回含めるようにしてもよいし、実施形態４のように、モータ位置情報取得コマンドの送受信は行わずに通信周期Ｔｃｃ毎にモータ位置情報を取得するようにしてもよい。モータ位置情報取得コマンドに起点情報を毎回含める場合には、所定のタイミング（例えば、通信周期Ｔｃｃの開始タイミングや位置取得タイミング）で時間情報を毎回初期化するようにしてもよい。
【０１５１】
実施形態５によれば、初期化コマンドやモータ位置情報取得コマンドの受信タイミングではなく、コントローラ１０が指定したタイミングに基づいて、各エンコーダ２０−ｎにモータ位置情報を取得させることで、各エンコーダ２０−ｎの位置取得タイミングを合わせることができる。
【０１５２】
なお、実施形態５では、モータ位置情報取得コマンドに起点情報が含まれている場合を説明したが、起点情報は、初期化コマンドに含まれていてもよい。この場合、各エンコーダ２０−ｎは、初期化コマンドに含まれる起点情報が示すタイミングから待機時間Ｔｗｎだけ待機したタイミングでモータ位置情報を取得することになる。以降は、実施形態４と同様に、通信周期Ｔｃｃ毎にモータ位置情報を取得するようにすれば、２回目以降の位置取得タイミングも各エンコーダ２０−ｎで合わせることができるようになる。また、モータ位置情報取得部２０７−ｎは、初期化コマンドやモータ位置情報取得コマンドにより定まるタイミングと待機時間Ｔｗｎとに応じたタイミングでモータ位置情報を取得すればよく、例えば、カウントアップタイマの値が０のタイミングが、初期化コマンドやモータ位置情報取得コマンドにより定まるタイミングに相当してもよい。この場合、待機時間Ｔｗｎは、各エンコーダ２０−ｎの位置取得タイミングそのものを示すことになる。
【０１５３】
［６．その他変形例］
また、上記説明した本発明に係る各処理をロボットシステムに適用してもよい。図１３は、ロボットシステムの一例を示す図である。図１３に示すように、ロボットシステム２は、モータ制御システム１と、ロボット３と、を含む。ロボット３は、コントローラ１０の制御対象となる装置であり、例えば、複数のモータ４を含む。即ち、ロボット３には、モータ４が組み込まれている。図１３に示す例では、ロボット３は、アームを有するマニピュレータを含む。また、ここでのロボット３は、２つ以上の軸を有する機械である多軸機械（例えば、金属の加工機械等）を含む意味である。図４に示すロボット３は、４つのモータ４−１〜４−４を有するため、４つの軸を有する多軸機械といえる。
【０１５４】
ロボットシステム２では、コントローラ１０の指示のもとでモータ４−１〜４−４が回転することで、ロボット３が動作する。例えば、コントローラ１０は、ロボット３のアームが所定のタイミングで所定の位置で物をつかむように、モータ４−１〜４−４を回転させる。ここでは、４つのモータ４−１〜４−４の各々に、エンコーダ２０−１〜２０−４が接続されている。図１３に破線で示すように、エンコーダ２０−１〜２０−４の各々は、デイジーチェーン接続されている。ここでは、エンコーダ２０−１が最上位であり、エンコーダ２０−４が最下位である。なお、図１３では、他の配線や補器類は省略している。
【０１５５】
ロボットシステム２においては、実施形態１〜４で説明した処理の何れか１つ、これらの組み合わせ、又は全部が実行されるようにしてもよい。即ち、ロボットシステム２でも、実施形態１のようにして、エンコーダ２０−１〜２０−４の位置取得タイミングを合わせるようにしてもよい。また、ロボットシステム２でも、実施形態２のようにして、カットスルー方式やストアアンドフォワード方式を用いてデータを送信してもよい。また、ロボットシステム２でも、実施形態３のようにして、送信イネーブル状態を保持及び解除するようにしてもよい。また、ロボットシステム２でも、実施形態４のようにして、モータ位置情報取得コマンドを送受信しなくても、位置取得タイミングを合わせるようにしてもよい。
【０１５６】
また、上位接続ポート２４−ｎ及び下位接続ポート２５−ｎは、伝送路３０−ｎと直接的に接続されるものだけではなく、間接的に接続されるものも含む意味である。間接的に接続とは、例えば、ケーブルや通信コネクタ等の直接的な接続部分はエンコーダ２０−ｎとは別体で存在し、この接続部分からの信号線の入力部により接続される意味である。コントローラ１０の接続ポート１４も同様である。
【０１５７】
また、コントローラ１０は、モータ制御装置（サーボコントローラ又はサーボアンプ）とは別体であってもよいし、モータ制御装置を含んでいてもよい。また例えば、各エンコーダ２０−ｎの通信相手が１又は複数のモータ制御装置であり、１又は複数のモータ制御装置が別の上位装置によって制御されるようにしてもよい。即ち、コントローラ１０は、モータ制御装置と、モータ制御装置を制御する上位装置と、の両方を含む意味であってもよいし、モータ制御装置と、モータ制御装置を制御する装置と、が別体であってもよい。後者の場合、モータ制御装置がコントローラに相当してもよいし、モータ制御装置を制御する上位装置がコントローラに相当してもよい。
【０１５８】
また、実施形態１〜４では、コントローラ１０とエンコーダ２０−ｎとがモータ制御システム１に含まれる場合を説明したが、モータ制御システム１は、他の機器を含んでいてもよい。例えば、コントローラ１０とエンコーダ２０−ｎだけでなく、モータやモータ制御システムを含むものをモータ制御システム１としてもよい。
【０１５９】
また、デイジーチェーン接続の接続台数は、上記説明した４台や７台に限られない。接続台数は２台以上であればよい。また、実施形態１における待機時間Ｔｗｎの設定は、初期化時でなくてもよい。電源投入後の任意の時間に設定されるようにすればよい。
【０１６０】
また、コントローラ１０が受信するモータ位置情報には、どのエンコーダ２０−ｎで取得したものなのかを識別する情報が含まれているものとして説明したが、この情報が含まれていなくてもよい。この場合、各エンコーダ２０−ｎが、所定の順番にモータ位置情報を送信することで、コントローラ１０が、どのエンコーダ２０−ｎが取得したモータ位置情報なのかを、受信順によって特定してもよい。
【０１６１】
また例えば、モータ位置情報取得部２０７−ｎは、コマンド（例えば、モータ位置情報取得コマンドや初期化コマンド）に基づいて、自身に接続された他のエンコーダ２０−ｎ（即ち、デイジーチェーン接続された他のエンコーダ２０−ｎ）とモータ位置情報の取得タイミングを合わせてモータ位置情報を取得する手段として機能すればよく、位置取得タイミングの合わせ方は、上記説明した例に限られない。待機時間Ｔｗｎを設定する方法以外にも、所定の時刻が到来した場合にモータ位置情報を取得するようにしてもよい。
【０１６２】
また例えば、初期化コマンド送信部１０２は、エンコーダ２０−ｎと当該エンコーダ２０−ｎに接続された他のエンコーダ２０−ｎ（即ち、デイジーチェーン接続された各エンコーダ２０−ｎ）のモータ位置情報の取得タイミングを合わせる手段として機能すればよく、初期化コマンドに待機時間データを含める方法以外にも、モータ位置情報を取得すべき時刻を各エンコーダ２０−ｎに送信するようにしてもよい。
【０１６３】
また、センサの一例としてエンコーダ２０−ｎを例に挙げて説明し、モータ位置情報がモータ関連情報に相当する場合を説明したが、モータ関連情報を取得する種々のセンサに適用すればよく、エンコーダ２０−ｎ以外のセンサにも適用可能である。例えば、モータのトルクを検出するトルク検出センサが、本発明に係るセンサに相当してもよい。この場合、複数のトルク検出センサがデイジーチェーン接続されていることになり、モータのトルクを示すトルク情報がモータ関連情報に相当する。
【０１６４】
他にも例えば、加速度センサや力覚センサが、本発明に係るセンサに相当してもよい。この場合、複数の加速度センサや力覚センサがデイジーチェーン接続されていることになり、モータの加速度を示す加速度情報やモータにより動作するアームの圧力を示す圧力情報が、モータ関連情報に相当する。
【０１６５】
即ち、本発明に係るセンサは、モータに関するモータ関連情報を取得するセンサであればよい。このため、実施形態１〜４及び上記変形例で説明した「モータ位置情報」の記載は、「モータ関連情報」と読み替えることができる。また、デイジーチェーン接続された複数のセンサの各々が異なる種類のセンサであってもよい。例えば、エンコーダ、トルク検出センサ、加速度センサ、及び力覚センサがデイジーチェーン接続された場合であっても、上記説明した各処理を適用してもよい。
【符号の説明】
【０１６６】
１  モータ制御システム、２  ロボットシステム、３  ロボット、４  モータ、１０  コントローラ、１１  プロセッサ、１２  メモリ、１３  通信制御部、１４  接続ポート、２０  エンコーダ、２１  プロセッサ、２２  メモリ、２３  通信制御部、２４  上位接続ポート、２５  下位接続ポート、３０  伝送路、１００  初期化コマンド送信部、１０１  初期化完了受信部、１０２モータ位置情報取得コマンド送信部、１０３  モータ位置情報受信部、１０４  待機時間算出部、２００  初期化コマンド受信部、２０１  初期化コマンド再送信部、２０２  待機時間設定部、２０３  下位初期化完了受信部、２０４  初期化完了送信部、２０５  モータ位置情報取得コマンド受信部、２０６  モータ位置情報取得コマンド再送信部、２０７  モータ位置情報取得部、２０８  下位モータ位置情報受信部、２０９  モータ位置情報送信部、２１０  イネーブル保持部、Ｔｗｎ  待機時間。
【図１】
0006299670.tif 000002
【図２】
0006299670.tif 000003
【図３】
0006299670.tif 000004
【図４】
0006299670.tif 000005
【図５】
0006299670.tif 000006
【図６】
0006299670.tif 000007
【図７】
0006299670.tif 000008
【図８】
0006299670.tif 000009
【図９】
0006299670.tif 000010
【図１０】
0006299670.tif 000011
【図１１】
0006299670.tif 000012
【図１２】
0006299670.tif 000013
【図１３】
0006299670.tif 000014