[1.実施形態1]
本発明の発明者の見地によれば、モータ関連情報を取得するセンサがデイジーチェーン接続されている場合、各センサがコントローラから受信するコマンドを実行するタイミングにずれが生じる可能性がある。各センサがモータ関連情報を取得するタイミングがずれると、コントローラによるモータ制御の精度が低下してしまう。そこで本発明の発明者は、モータ制御の精度を高めるために鋭意研究開発を行った結果、新規かつ独創的なモータ制御システム等に想到した。以降、実施形態1のモータ制御システム等を詳細に説明する。なお、実施形態1では、センサの一例としてエンコーダを説明する。
[1−1.モータ制御システムの物理構成]
図1は、実施形態1に係るモータ制御システムの物理構成を示すブロック図である。図1に示すように、モータ制御システム1は、コントローラ10(上位コントローラ)と、デイジーチェーン接続された複数のエンコーダ20−n(n:1〜7の整数)と、を含み、各機器は、伝送路30−nを介して通信可能に接続される。実施形態1では、伝送路30−nは、半2重通信方式であってもよいし、全2重通信方式であってもよい。
デイジーチェーン接続は、複数の機器を数珠繋ぎにした接続方式であり、接続順位が最上位の機器から最下位の機器まで、接続順位の順番にデータを転送する接続方式である。ここでは、コントローラ10と各エンコーダ20−nとが順番に接続されている。上位とは、接続順位が上のことであり、下位とは、接続順位が下のことである。エンコーダ20−nの「n」の数値は、デイジーチェーン接続の接続順位を示している。ここでは、エンコーダ20−1の接続順位は最上位であり、エンコーダ20−7の接続順位は最下位である。接続順位は、各エンコーダ20−nに指示を送るコントローラ10から数えた順番ともいえる。
コントローラ10は、モータ制御システム1全体の動作を制御するコンピュータである。例えば、コントローラ10は、所定のタイミングで各エンコーダ20にコマンドを送信したり、各エンコーダ20からデータを受信したりする。他にも例えば、コントローラ10は、モータへ電流・電圧等を出力するアンプを備えたモータ制御装置(サーボアンプ又はサーボコントローラ)にコマンドを送信したり、モータ制御装置からのエラー信号やその他の状態信号を受信したりする。
コントローラ10は、プロセッサ11、メモリ12、通信制御部13、及び接続ポート14を含む。プロセッサ11は、CPUとメモリからなる一般的な集積回路や、マイクロコントローラやFPGA(Field Programmable Gate Array)等の任意の集積回路であってよい。
メモリ12は、一般的な情報記憶媒体である。メモリ12は、不揮発性メモリ及び揮発性メモリの少なくとも一方を含む。例えば、不揮発性メモリは、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable Read Only Memory)、フラッシュメモリ、及びハードディスク等である。揮発性メモリは、RAM(Random Access Memory)等である。メモリ12は、プログラムや各種データを記憶する。
通信制御部13は、一般的な通信用集積回路である。例えば、通信制御部13は、ASIC(Application Specific Integrated Circuit)等により構成される。接続ポート14は、外部機器と通信するための通信インタフェースである。接続ポート14は、エンコーダ20−nと通信するためのものである。
通信制御部13は、接続ポート14を介して、各エンコーダ20−nとの通信を行う。通信制御部13は、最上位のエンコーダ20−1と直接的に通信し、接続順位が2番目以降のエンコーダ20−2〜20−7の各々と間接的に通信する。間接的に通信するとは、通信相手の機器との間に他の機器を介在させて通信することである。
エンコーダ20−nは、モータの位置を検出するセンサである。エンコーダ20−nは、光学式エンコーダ又は磁気式エンコーダの何れであってもよい。エンコーダ20−nは、コントローラ10から受信したコマンドを実行したり、コマンドの実行結果をコントローラ10に送信したりする。
エンコーダ20−nは、プロセッサ21−n、メモリ22−n、通信制御部23−n、上位接続ポート24−n、及び下位接続ポート25−nを含む。プロセッサ21−n、メモリ22−n、及び通信制御部23−nの各々の物理的構成は、プロセッサ11、メモリ12、及び通信制御部13と同様であってよい。
上位接続ポート24−n及び下位接続ポート25−nの各々は、外部機器と通信するための通信インタフェースである。上位接続ポート24−nは、上位の機器(上位のエンコーダ20−n又はコントローラ10)と通信する。下位接続ポート25−nは、下位の機器(下位のエンコーダ20−n)と通信する。
図1に示すように、接続順位が最上位のエンコーダ20−1の上位接続ポート24−1は、コントローラ10と通信する。最上位のエンコーダ20−1の下位接続ポート25−2は、接続順位が1つ下のエンコーダ20−2と通信する。同様に、上位接続ポート24−2〜24−7の各々は、接続順位が1つ上のエンコーダ20−1〜20−6と通信する。下位接続ポート25−2〜25−6の各々は、接続順位が1つ下のエンコーダ20−3〜20−7と通信する。エンコーダ20−7は、接続順位が最下位なので、下位接続ポート25−1は、他の機器と通信しない。
モータ制御システム1では、エンコーダ20−1〜20−7がデイジーチェーン接続されているので、エンコーダ20−1〜20−6の各々は、コントローラ10からのモータ位置情報取得コマンドを受信すると、接続順位が1つ下のものに転送することで、最下位のエンコーダ20−7までモータ位置情報取得コマンドが転送される。
図2は、モータ位置情報取得コマンドが転送される様子を示す図である。ここでは、概要を説明し、詳細は後述する。図2に示すt軸は、時間軸である。図2に示すように、まず、コントローラ10は、通信周期の開始時点t0が訪れると、エンコーダ20−1に対して、モータ位置情報取得コマンドを送信する(S101)。通信周期は、所定の時間間隔の期間である。
エンコーダ20−1は、モータ位置情報取得コマンドの受信を開始すると(S102)、接続順位が1つ下のエンコーダ20−2に対して、モータ位置情報取得コマンドを転送する(S103)。同様に、エンコーダ20−2〜20−6の各々は、モータ位置情報取得コマンドの受信を開始すると(S104,S106,S108,S110,S112)、接続順位が1つ下のエンコーダ20−3〜20−7に対して、モータ位置情報取得コマンドを転送する(S105,S107,S109,S111,S113)。エンコーダ20−7は、接続順位が最下位なので、モータ位置情報取得コマンドを受信しても転送しない(S114)。
図2に示すように、エンコーダ20−1〜20−6の各々が、モータ位置情報取得コマンドの受信を開始してから、接続順位が1つ下のエンコーダ20−2〜20−7に対してモータ位置情報取得コマンドの転送を開始するまでに、伝送遅延時間Tdr(リピート遅れ時間)が生じる。なお、実施形態1では、エンコーダ20−1〜20−6の各々の伝送遅延時間Tdrが同じものとして説明するが、伝送遅延時間Tdrは異なってもよい。
上記のように伝送遅延時間Tdrが生じるので、エンコーダ20−1〜20−7の各々がモータ位置情報取得コマンドの受信を完了する時点が異なる。このため、エンコーダ20−1〜20−7の各々が、モータ位置情報取得コマンドの受信を完了した後すぐにモータ位置情報を取得してしまうと、モータ位置情報を取得するタイミングがずれてしまう。
そこで、実施形態1のモータ制御システム1では、図2に示すようにエンコーダ20−1〜20−7の各々に、モータ位置情報取得コマンドの実行を待機する待機時間Tw1〜Tw7を設定することによって、位置取得タイミングt8を合わせるようになっている(S115〜S121)。以降、この機能の詳細を説明する。
[1−2.モータ制御システムで実現される機能]
図3は、実施形態1におけるモータ制御システム1の機能ブロック図である。図3に示すように、コントローラ10は、初期化コマンド送信部100、初期化完了受信部101、モータ位置情報取得コマンド送信部102、及びモータ位置情報受信部103を含む。これら各機能は、プロセッサ11や通信制御部13により実現される。
また、各エンコーダ20−nは、初期化コマンド受信部200−n、初期化コマンド再送信部201−n、待機時間設定部202−n、下位初期化完了受信部203−n、初期化完了送信部204−n、モータ位置情報取得コマンド受信部205−n(本発明に係るコマンド受信部の一例)、モータ位置情報取得コマンド再送信部206−n(本発明に係るコマンド再送信部の一例)、モータ位置情報取得部207−n、下位モータ位置情報受信部208−n、及びモータ位置情報送信部209−nを含む。これら各機能は、プロセッサ21―nや通信制御部23−nにより実現される。
ここでは、エンコーダ20−nの初期化時に待機時間Twnが設定される場合を例に挙げて説明する。このため、まず、エンコーダ20−nを初期化する場合に実現される機能について説明する。コントローラ10は、電源投入後において、各エンコーダ20−nの設定を初期状態に戻すために初期化を行う。モータ制御システム1では、コントローラ10のメモリ12が、待機時間Twnを示す待機時間データを記憶しており、この待機時間データを利用して、初期化時に待機時間Twnを設定するようになっている。
図4は、待機時間データのデータ格納例を示す図である。図4に示すように、待機時間データには、各エンコーダ20−nを識別する情報(例えば、アドレス情報)と、モータ制御システム1のユーザが指定した指定待機時間と、が関連付けられている。ここでは、指定待機時間として、待機時間Tw1〜Tw7が予め定められている。
各エンコーダ20−nの待機時間Twnは、デイジーチェーン接続における接続順位が上位であるほど長く、接続順位が下位であるほど短い。別の言い方をすれば、各エンコーダ20−nの待機時間Twnは、モータ位置情報取得コマンドの受信タイミングが早いほど長く、受信タイミングが遅いほど短い。図4のデータ格納例では、最上位のエンコーダ20−1の待機時間Tw1が最も大きく、最下位のエンコーダ20−7の待機時間Tw7が最も小さいことになる。
図5は、初期化時の処理の流れを示す図である。図5に示すように、まず、コントローラ10の初期化コマンド送信部100は、接続ポート14に、デイジーチェーン接続における接続順位に応じた待機時間Twnを設定するための情報を含む初期化コマンドを送信する(S1)。初期化コマンドは、エンコーダ20−nの初期化を指示するためのコマンドである。初期化コマンドは、所定のデータ形式であればよく、例えば、コマンドの種類を示すコマンドコードや待機時間データを含む。他にも、初期化コマンドは、転送先のエンコーダ20−nを識別する情報を含んでいてもよい。
待機時間Twnを設定するための上記情報は、エンコーダ20−n毎に、デイジーチェーン接続における接続順位に基づいて定められた待機時間Twnである。ここでは、待機時間データが当該情報に相当する。S1においては、初期化コマンド送信部100は、接続ポート14に、待機時間データを含む初期化コマンドを送信することによって、エンコーダ20−1に初期化コマンドを送信することになる。
エンコーダ20−1の初期化コマンド受信部200−1は、コントローラ10からの初期化コマンドを受信する(S2)。S2においては、初期化コマンド受信部200−1は、伝送路30−1及び上位接続ポート24−1を介して、コントローラ10から初期化コマンドを受信することになる。
エンコーダ20−1の初期化コマンド再送信部201−1は、初期化コマンドを下位のエンコーダ20−2に送信する(S3)。なお、初期化コマンド再送信部201−1は、初期化コマンド受信部200−1が受信した初期化コマンドをそのままエンコーダ20−2に送信してもよいし、初期化コマンドに含まれる情報を変更(書き換え、追加、又は削除)したうえでエンコーダ20−2に送信してもよい。
初期化コマンドの受信が完了すると、エンコーダ20−1の待機時間設定部202−1は、少なくとも、上位のエンコーダ(エンコーダ20−1の場合は存在しない)又はコントローラ10と、当該エンコーダ20−1と、下位のエンコーダ20−nとの接続順位(即ち、デイジーチェーン接続における接続順位)に応じた待機時間Tw1を設定する(S4)。S4においては、待機時間設定部202−1は、初期化コマンドに基づいて待機時間Tw1を設定することになる。即ち、待機時間設定部202−1は、初期化コマンドに含まれる指定待機時間に基づいて待機時間Tw1を設定する。ここでは、図2に示すように、待機時間設定部202−1は、モータ位置情報取得部207−1による位置取得タイミングt8が、最下位のエンコーダ20−7がモータ位置情報取得コマンドの受信を完了した後(図2の時点t7Eの後)となるように、待機時間Tw1を設定することになる。
S4の処理を更に具体的に説明すると、まず、待機時間設定部202−1は、初期化コマンドに含まれる待機時間データを参照して、エンコーダ20−1の指定待機時間である待機時間Tw1を取得する。なお、エンコーダ20−1を識別する情報は、予めメモリ22−1に記憶されており、待機時間設定部202−1は、待機時間データに格納された指定待機時間のうち、エンコーダ20−1のものを特定できるものとする。そして、待機時間設定部202−1は、待機時間Tw1を通信制御部23内のメモリに保持することによって、待機時間Tw1を設定する。なお、待機時間設定部202−1は、プロセッサ21−1内のメモリ又はメモリ22−1に待機時間Tw1を保持するようにしてもよい。
図5に示すように、エンコーダ20−2〜20−7の各々においても、エンコーダ20−1と同様の処理が行われる。即ち、初期化コマンド受信部200−2〜200−7の各々は、初期化コマンド再送信部201−1〜201−6が送信した初期化コマンドを受信する(S5,S8,S11,S14,S17,S20)。初期化コマンド再送信部201−2〜201−6の各々は、初期化コマンドを下位のエンコーダ20−2〜20−7に送信する(S6,S9,S12,S15,S18)。待機時間設定部202−2〜202−7の各々は、初期化コマンドに基づいて待機時間Tw2〜Tw7を設定する(S7,S10,S13,S16,S19,S21)。
初期化時には、各エンコーダ20−nは、待機時間Twnの設定以外にも、初期化コマンドに応じてパラメータの初期化等の初期化処理を実行することになる。初期化が完了すると、各エンコーダ20−nは、初期化が完了したことを示す初期化完了通知をコントローラ10に送信する。
図5では、説明の簡略化のため、初期化完了通知の流れを省略しているが、各エンコーダ20−nの初期化完了送信部204−nは、初期化コマンドの実行が完了したことを示す初期化完了通知をコントローラ10に送信する。初期化完了通知は、所定のデータ形式で行われるようにすればよい。エンコーダ20−1〜20−6の下位初期化完了受信部203−1〜203−6の各々は、下位のエンコーダ20−2〜20−7から初期化完了通知を受信すると、初期化完了送信部204−nが転送することになる。
コントローラ10の初期化完了受信部101は、各エンコーダ20−nの初期化完了通知を受信する。初期化が正常に完了しなかった場合には、コントローラ10が再度初期化コマンドを送信するようにしてもよい。モータ制御システム1は、コントローラ10が初期化完了通知を受信して初期化処理が完了すると、モータを制御するためにモータ位置情報の取得を開始することになる。
次に、モータ位置情報を取得する場合に実現される機能を、図2を参照しながら説明する。図2に示すように、コントローラ10のモータ位置情報取得コマンド送信部102は、接続ポート14に、モータ位置情報取得コマンドを送信する(S101)。モータ位置情報取得コマンドは、実施形態1では本発明に係るコマンドの一例であり、エンコーダ20−nにモータ位置情報を取得させるためのコマンドである。モータ位置情報取得コマンドは、所定のデータ形式であればよく、例えば、コマンドの種類を示すコマンドコードを含む。他にも、モータ位置情報取得コマンドは、転送先のエンコーダ20−nを識別する情報を含んでいてもよい。S101においては、モータ位置情報取得コマンド送信部102は、接続ポート14に、モータ位置情報取得コマンドを送信することによって、エンコーダ20−1にモータ位置情報取得コマンドを送信することになる。
エンコーダ20−1のモータ位置情報取得コマンド受信部205−1は、コントローラ10からのモータ位置情報取得コマンドを受信する(S102)。S102においては、モータ位置情報取得コマンド受信部205−1は、伝送路30−1及び上位接続ポート24−1を介して、コントローラ10からモータ位置情報取得コマンドを受信することになる。
エンコーダ20−1のモータ位置情報取得コマンド再送信部206−1は、モータ位置情報取得コマンド受信部205−1が受信したモータ位置情報取得コマンドをエンコーダ20−2に送信する(S103)。S103においては、モータ位置情報取得コマンド再送信部206−1は、モータ位置情報取得コマンド受信部205−1が受信したモータ位置情報取得コマンドをそのままエンコーダ20−2に送信してもよいし、モータ位置情報取得コマンドに含まれる情報を変更(書き換え、追加、又は削除)したうえでエンコーダ20−2に送信してもよい。
エンコーダ20−1のモータ位置情報取得部207−1は、モータ位置情報取得コマンドにより定まるタイミングと待機時間Tw1とに応じたタイミングでモータの位置に関するモータ位置情報を取得する(S115)。モータ位置情報取得コマンドにより定まるタイミングとは、モータ位置情報取得コマンドの受信タイミング、又は、モータ位置情報取得コマンドが含む情報に基づいて定まるタイミング(実施形態5参照)である。本実施形態では、モータ位置情報取得コマンドにより定まるタイミングが、モータ位置情報取得コマンドの受信タイミングである場合を説明する。モータ位置情報取得コマンドの受信タイミングとは、モータ位置情報取得コマンドの受信を開始してから受信が完了するまでの期間(図2の例では、時点t1S〜t1Eの期間)内の何れかの時点である。ここでは、モータ位置情報取得コマンドの受信が完了した時点t1Eとする。
モータ位置情報取得コマンドの受信タイミングと待機時間Tw1とに応じたタイミングとは、モータ位置情報取得コマンドの受信タイミングから待機時間Tw1だけ経過した後の時点である。図2のS115に示すように、エンコーダ20−1のモータ位置情報取得部207−1は、モータ位置情報取得コマンドの受信を完了した時点t1Eから待機時間Tw1だけ経過した後の時点t8で、モータ位置情報取得コマンドを実行する。先述のように、待機時間Tw1は通信制御部23−1内のメモリ等に保持されているので、モータ位置情報取得部207−1は、通信制御部23−1内のメモリ等を参照して待機時間Tw1を取得して、位置取得タイミングt8を特定することになる。
なお、モータ位置情報は、エンコーダ20−1で検出可能なモータの位置に関する情報が含まれる。例えば、1回転内の位置、回転数、回転角度、又は回転速度等がモータ位置情報に含まれることになる。他にも例えば、モータ位置情報は、当該モータ位置情報が取得されたエンコーダ20−1を識別する情報を含んでいてもよい。
図2に示すように、エンコーダ20−2〜20−7の各々においても、エンコーダ20−1と同様の処理が行われる。即ち、モータ位置情報取得コマンド受信部205−2〜205−7の各々は、モータ位置情報取得コマンド再送信部206−1〜206−6が送信したモータ位置情報取得コマンドを受信する(S104,S106,S108,S110,S112,S114)。そして、モータ位置情報取得コマンド再送信部206−2〜206−6の各々は、モータ位置情報取得コマンドを下位のエンコーダ20−3〜20−7に送信する(S105,S107,S109,S111,S113)。待機時間設定部202−2〜202−7の各々は、モータ位置情報取得コマンドの受信を完了した時点t2E〜t7Eから、待機時間Tw2〜Tw7だけ経過した後の時点t8で、モータ位置情報取得コマンドを実行する(S116〜S121)。
上記のようにして、通信周期の開始時点t0から位置取得タイミングt8までの期間は、デイジーチェーン接続の接続順位の上位から下位に対してモータ位置情報取得コマンドが送信される。S115〜S121において、各エンコーダ20−nがモータ位置情報を取得すると、デイジーチェーン接続の接続順位の下位から上位に対してモータ位置情報が送信される。
図2では、説明の簡略化のため、モータ位置情報の送信の流れを省略しているが(詳しくは実施形態2を参照)、エンコーダ20−7のモータ位置情報送信部209−7は、モータ位置情報取得部207−7が取得したモータ位置情報をエンコーダ20−6に送信する。エンコーダ20−6の下位モータ位置情報受信部208−6は、下位接続ポート25−6から下位モータ位置情報を受信する。下位モータ位置情報は、下位から受信したモータ位置情報のことである。エンコーダ20−6のモータ位置情報送信部209−6は、モータ位置情報取得部207−6が取得したモータ位置情報及び下位モータ位置情報を上位接続ポート24−6により送信する。
エンコーダ20−1〜20−5の各々においても、エンコーダ20−6と同様の処理が行われる。即ち、下位モータ位置情報受信部208−1〜208−5の各々は、モータ位置情報送信部209−2〜209−6が送信した下位モータ位置情報を受信する。そして、モータ位置情報送信部209−1〜209−5の各々は、モータ位置情報及び下位モータ位置情報を上位接続ポート24−1〜24−5により送信する。なお、モータ位置情報送信部209−1〜209−7の各々は、モータ位置情報を一斉に送信してもよいし、互いに送信タイミングが重複しないように調整したうえで送信してもよい。
コントローラ10のモータ位置情報受信部103は、各エンコーダ20−nからモータ位置情報を受信する。コントローラ10は、受信したモータ位置情報に基づいて、モータを制御する。以降、モータ制御システム1では、通信周期毎に、モータ位置情報取得コマンドの送信及び実行と、モータ位置情報の送信と、が繰り返されることになる。
[1−3.実施形態1まとめ]
実施形態1のモータ制御システム1によれば、各エンコーダ20−nが、モータ位置情報取得コマンドを受信するタイミングが異なっても、位置取得タイミングt8でモータ位置情報取得コマンドを一斉に実行するので、デイジーチェーン接続された各エンコーダ20−nによる位置取得タイミングを合わせることができる。また、各エンコーダ20−nの位置取得タイミングがばらばらだと位置決めの精度が悪くなるが、位置取得タイミングが合うので、コントローラ10に位置決めの精度を向上させることができる。更に、エンコーダ20−nがデイジーチェーン接続されており、コントローラ10は最上位のエンコーダ20−nと接続すればよいので、省配線が可能となる。即ち、コントローラ10と各エンコーダ20−nが直接的に接続される場合は、エンコーダ20−nの数だけ配線が必要になるが、このような場合に比べて省配線が可能になる。
また、モータ制御システム1では、初期化コマンドに基づいて待機時間Twnを設定するため、初期化以降は各エンコーダ20−nが待機時間Twnを記憶しているので、モータ位置情報取得コマンド等の各コマンドにいちいち待機時間Twnを含めなくて済む。その結果、モータ位置情報取得コマンド等のデータ長を短くすることができ、処理の高速化が可能になる。特に、モータ制御の分野においては、通信周期を短くして通信周波数を低くすることが求められているため、1通信周期あたりのデータ長を短くすることが要求されるところ、本実施形態に係るモータ制御システム1によれば、このように通信周期が短く通信周波数が低い場合であったとしても、確実に位置取得タイミングを合わせることができる。
また、ユーザが指定した指定待機時間に基づいて待機時間Twnを設定するので、各エンコーダ20−nに合った待機時間Twnをユーザが自ら設定することができる。
また、各エンコーダ20−nはデイジーチェーン接続されているので、モータ位置情報取得コマンドを受信するのが最も遅いのは最下位のエンコーダ20−7となるが、その最下位のエンコーダ20−7がモータ位置情報取得コマンドを受信した後に、各エンコーダ20−nで一斉にモータ位置情報を取得させることができるので、全エンコーダ20−nで位置を取得するタイミングをより確実に合わせることができる。即ち、最下位のエンコーダ20−7が、まだモータ位置情報取得コマンドを受信していないにもかかわらず、上位側のエンコーダ20−1〜20−6がモータ位置情報を取得してしまうようなことを防止することができる。
また例えば、各エンコーダ20−nの接続順位に応じた待機時間Twnそのものを初期化コマンドに含めることで、エンコーダ20−n側で待機時間Twnの計算をする必要がなく、受信した待機時間Twnをそのまま設定すればよいので、比較的簡易な処理によって待機時間Twnを設定することができる。
[1−4.実施形態1の変形例]
なお、実施形態1では、ユーザが指定した指定待機時間によって各エンコーダ20−nの待機時間Twnが設定される場合を例に挙げて説明したが、待機時間Twnは、ユーザが指定するのではなく、コントローラ10が計算するようにしてもよい。即ち、各エンコーダ20−nの待機時間Twnは、ユーザが手動で決めるのではなく、コントローラ10が自動的に決めるようにしてもよい。
図6は、実施形態1の変形例における機能ブロック図である。図6に示すように、変形例では、コントローラ10は、更に待機時間算出部104を含む。待機時間算出部104は、プロセッサ11や通信制御部13により実現される。
待機時間算出部104は、待機時間Twnを、エンコーダ20−n毎に、デイジーチェーン接続における接続順位と、モータ位置情報取得コマンドの伝送遅れ時間Tdrと、モータ位置情報取得コマンドの送受信時間TSRと、エンコーダ20−nの最大接続数に基づいて定められるモータ位置情報取得コマンド通信期間TCTと、に基づいて算出する。
図2に示すように、モータ位置情報取得コマンドの送受信時間TSRは、各エンコーダ20−nがモータ位置情報取得コマンドの送受信に必要な時間であり、上位からのモータ位置情報取得コマンドの受信を開始した時点(例えば、図2の時点t1S)から、下位へのモータ位置情報取得コマンドの送信を完了した時点(例えば、図2の時点t2E)までの時間である。エンコーダ20−nの最大接続数は、デイジーチェーンにおける接続台数であり、nの最大値(ここでは、7である)である。
なお、各エンコーダ20−nの接続順位、伝送遅れ時間Tdr、及び送受信時間TSRは、メモリ12に記憶されているようにしてもよいし、エンコーダ20−nから取得するようにしてもよい。エンコーダ20−nから取得する場合には、接続順位はメモリ22に記憶されており、伝送遅れ時間Tdr及び送受信時間TSRは、エンコーダ20−nが計算する。この場合、通信制御部23−nは、コントローラ10からのコマンド等のデータを受信した時間から、下位に当該データの転送を開始した時点までを転送遅れ時間Tdrとして計算する。また、通信制御部23−nは、コントローラ10からのコマンド等のデータを受信した時間から、下位に当該データの転送を完了した時点までを送受信時間TSRとして計算する。モータ位置情報取得コマンド通信期間TCTについては、設定値として予めメモリ12に記憶されているようにすればよい。
コントローラ10のメモリ12が記憶するプログラムには、デイジーチェーン接続における接続順位、伝送遅れ時間Tdr、送受信時間TSR、及びモータ位置情報取得コマンド通信期間TCTから待機時間Twnを計算するための計算式が記述されている。待機時間算出部104は、この計算式に上記各値を代入することで、エンコーダ20−n毎に待機時間Twnを計算する。
例えば、待機時間算出部104は、下記の式1を満たすように、待機時間Tw7を計算する。式1のように待機時間Tw7を計算するのは、位置取得タイミングt8がモータ位置情報取得コマンド通信期間TCTの経過後にならないようにするためである。また、待機時間算出部104は、式2〜式7によって、待機時間Tw1〜Tw6を計算する。待機時間算出部104は、計算した待機時間Tw1〜Tw7を示す待機時間データを生成することになる。
(式1)0≦Tw7≦TCT−TSR−5*Tdr
(式2)Tw6=Tw7+Tdr
(式3)Tw5=Tw7+2*Tdr
(式4)Tw4=Tw7+3*Tdr
(式5)Tw3=Tw7+4*Tdr
(式6)Tw2=Tw7+5*Tdr
(式7)Tw1=Tw7+6*Tdr
初期化コマンド送信部100は、待機時間算出部104が算出した待機時間Twnを示す情報を初期化コマンドに含めて送信することになる。例えば、初期化コマンドには、各エンコーダ20−nを識別する情報と、待機時間算出部104が算出した待機時間Twnと、が関連付けられている。別の言い方をすれば、初期化コマンド送信部100は、待機時間算出部104が生成した待機時間データを含む初期化コマンドを送信する。エンコーダ20−nが初期化コマンドから待機時間Twnを設定する方法は、実施形態で説明した方法と同様である。
上記変形例によれば、接続順位と伝送遅れ時間Tdrに基づいて待機時間Twnを計算しているので、全エンコーダ20−nで位置取得タイミングをより確実に合わせることができる。例えば、上位側のエンコーダ20−nで発生した伝送遅れ時間Tdrの蓄積のために、下位側のエンコーダ20−nがまだモータ位置情報取得コマンドを受信していないにもかかわらず、上位側のエンコーダ20−nがモータの位置を取得してしまうようなことを防止することができる。
更に、モータ位置情報取得コマンドの送受信時間TSRと、モータ位置取得コマンド通信期間TCTと、に基づいて待機時間Twnを算出しているので、位置取得タイミングを、モータ位置取得コマンド通信期間TCT内とすることができる。即ち、1通信周期内には、モータ位置情報取得コマンドを送受信するモータ位置情報取得コマンド通信期間TCTと、その後にモータ位置情報を送るモータ位置通信期間と、が存在するが、モータ位置の取得タイミングがモータ位置通信期間内になってしまわないようにすることができる。別の言い方をすれば、モータ位置情報を送るべき期間が来ても、まだモータ位置情報を取得できていないような状況を防止することができる。
なお、待機時間算出部104による待機時間Twnの算出方法は、上記の例に限られない。待機時間算出部104は、メモリ12に記憶された情報と、コントローラ10がエンコーダ20−nから受信した情報と、の少なくとも一方に基づいて待機時間Twnを算出すればよい。例えば、コントローラ10が、コマンドを送信した送信時間を記憶しておき、最下位のエンコーダ20−7からコマンドの受信を完了した完了時間を示す情報を受信し、この完了時間と送信時間との差に基づいて待機時間Twnを計算してもよい。この場合、コントローラ10とエンコーダ20−nとの時間を合わせておくことが望ましい。他にも例えば、エンコーダ20−nの接続順位を示す番号を所定の定数に乗算することで待機時間Twnを計算してもよい。
[2.実施形態2]
次に、本発明に係る別実施形態を説明する。本発明の発明者の見地によれば、従来は、デイジーチェーン接続されたセンサがモータ関連情報をコントローラに送信する場合には、各センサの送信タイミングが重複しないようにいちいち調整する必要があった。そこで本発明の発明者は、モータ関連情報の送信を容易にするために鋭意研究開発を行った結果、新規かつ独創的なモータ制御システム等に想到した。以降、実施形態2のモータ制御システム等を詳細に説明する。なお、実施形態2でも、センサの一例としてエンコーダを説明する。
実施形態2のモータ制御システム1の物理構成及び機能ブロック図は、実施形態1と同様である。実施形態2では、各エンコーダ20−nが、モータ位置情報取得コマンドを転送する処理と、コントローラ10にモータ位置情報を送信する処理と、を詳しく説明する。
[2−1.実施形態2で実現される機能]
図7は、実施形態2でモータ位置情報がコントローラ10に送信される様子を示す図である。図7のS101〜S121に示すように、各エンコーダ20−nがモータ位置情報を取得するまでの流れは、実施形態1と同様であるが、ここでは、各エンコーダ20−nが、モータ位置情報取得コマンドを転送するS102〜S113の処理の詳細を説明する。
図7に示すように、モータ位置情報取得コマンドを送受信するモータ位置情報取得コマンド通信期間TCTより、モータ位置情報及び下位モータ位置情報を送受信するモータ位置情報通信期間TITの方が長い。例えば、モータ位置情報取得コマンド通信期間TCTは、通信周期TCCの開始時点t0から位置取得タイミングt8までの期間である。モータ位置情報通信期間TITは位置取得タイミングt8から通信周期TCCの終了時点t9(次の通信周期TCCの開始時点)までの期間である。
上記のように、1通信周期TCC内に、1つのモータ位置情報取得コマンド通信期間TCTと、1つのモータ位置情報通信期間TITが含まれることになる。モータ位置情報取得コマンド通信期間TCTの後に、モータ位置情報通信期間TITが訪れる。別の言い方をすれば、デイジーチェーン接続されたエンコーダ20−nの接続順位が上位から下位に向けてデータを送信するモータ位置情報取得コマンド通信期間TCTの後に、接続順位が下位から上位に向けてデータを送信するモータ位置情報通信期間TITが訪れることになる。
図7に示すように、エンコーダ20−1のモータ位置情報取得コマンド再送信部206−1は、モータ位置情報取得コマンド受信部205−1により受信したモータ位置情報取得コマンドを、受信が完了する前に下位接続ポート25−1より送信する。即ち、エンコーダ20−2に対してモータ位置情報取得コマンドの送信を開始する時点t2Sは、モータ位置情報取得コマンドの受信が完了する時点t1Eよりも前である。モータ位置情報取得コマンド再送信部206−1は、コントローラ10からのモータ位置情報取得コマンドの受信の完了を待たず、エンコーダ20−2へのモータ位置情報取得コマンドの送信を開始することになる。
例えば、モータ位置情報取得コマンド再送信部206−1は、モータ位置情報取得コマド受信部205−1により受信したモータ位置情報取得コマンドを、カットスルー方式により下位接続ポート25−1より送信する。カットスルー方式は、受信した情報の転送先の機器が自らに接続されている場合に、情報を蓄積せずに受信しながらそのまま転送先の機器に送信する通信方式である。
例えば、モータ位置情報取得コマンド再送信部206−1は、モータ位置情報取得コマンドの所定部分(例えば、ヘッダ部分)に含まれる転送先の情報を参照して、転送先が下位のエンコーダ20−2であれば、モータ位置情報取得コマンドを蓄積せずに受信しながらエンコーダ20−2に転送する。なお、各エンコーダ20−nは、自身の下位及び上位の機器を識別する情報をメモリ22−n等に記憶しているものとする。
エンコーダ20−2〜20−6の各々においても、エンコーダ20−1と同様に、モータ位置情報取得コマンド再送信部206−2〜206−6の各々は、モータ位置情報取得コマンドを下位のエンコーダ20−3〜20−7にカットスルー方式で送信することになる(S105,S107,S109,S111,S113)。エンコーダ20−7がモータ位置情報取得コマンドの受信を完了した後は、実施形態1と同様に、位置取得タイミングt8で各エンコーダ20−nがモータ位置情報を取得する。
なお、上記ではカットスルー方式を一例に挙げて説明したが、他の方法でモータ位置情報取得コマンドを転送してもよい。モータ位置情報取得コマンドの受信が完了する前に送信を開始すればよく、例えば、受信したモータ位置情報取得コマンドを蓄積しつつ、受信が完了する前に転送するようにしてもよい。
位置取得タイミングt8が訪れた後は、各エンコーダ20−nは、コントローラ10に対してモータ位置情報の送信を順次開始する。モータ位置情報を送信するタイミングは、各エンコーダ20−nがモータ位置情報取得コマンドの受信タイミングの一定時間後のタイミングであってもよいし、各エンコーダ20−nで同じであってもよい。例えば、エンコーダ20−7のモータ位置情報送信部209−7は、モータ位置情報をエンコーダ20−6に送信する(S122)。エンコーダ20−6の下位モータ位置情報受信部208−6は、下位接続ポート25−6から下位モータ位置情報を受信するが(S124)、図7のS123に示すように、この時点では、モータ位置情報送信部209−6は、モータ位置情報を送信中であるため、下位モータ位置情報をすぐに送信することができない。
このため、モータ位置情報送信部209−6は、モータ位置情報を上位接続ポート24−6により送信し(S123)、下位モータ位置情報を、モータ位置情報の送信が完了した後に上位接続ポート24−6により送信する(S124)。例えば、エンコーダ20−5に対して下位モータ位置情報の送信を開始する時点は、モータ位置情報の送信が完了する時点よりも後であり、図7では、下位モータ位置情報の受信が完了する時点と同時である。S124においては、モータ位置情報送信部209−6は、モータ位置情報の送信を完了するまでは、下位モータ位置情報を、通信制御部23−6内のメモリに記憶させる。なお、下位モータ位置情報を、プロセッサ21−6内のメモリに記憶するようにしてもよいし、メモリ22−6に記憶するようにしてもよい。
S124において、例えば、モータ位置情報送信部209−6は、下位モータ位置情報を、ストアアンドフォワード方式により上位接続ポート24−6により送信する。ストアアンドフォワード方式は、受信した情報をいったんすべて受信して蓄積してから、転送先の機器へ送信する方式のことである。ここでは、図7に示すように、モータ位置情報送信部209−6は、下位モータ位置情報の受信を完了した後に、下位モータ位置情報の送信を開始することになる。別の言い方をすれば、モータ位置情報送信部209−6は、モータ位置情報を送信している間は、下位モータ位置情報を受信したとしても、下位モータ位置情報を送信せずに待機することになる。
エンコーダ20−1〜20−5の各々においても、エンコーダ20−6と同様に、モータ位置情報送信部209−1〜209−5の各々は、モータ位置情報を送信しつつ(S125〜S129)、下位モータ位置情報をストアアンドフォワード方式で送信する(S130〜S134)ことになる。コントローラ10が、各エンコーダ20−nからモータ位置情報を受信した後は、実施形態1と同様である。
なお、上記説明した方法以外にも、他の方法で下位モータ位置情報を送信してもよい。モータ位置情報の送信が完了した後に下位モータ位置情報の送信を開始すればよく、例えば、受信した下位モータ位置情報を蓄積しつつ、下位モータ位置情報の受信が完了する前にモータ位置情報の送信が完了した場合には、下位モータ位置情報の転送を開始してもよい。即ち、下位モータ位置情報の受信の完了を待たなくても、下位モータ位置情報の転送を開始してもよい。
[2−2.実施形態2まとめ]
実施形態2のモータ制御システム1では、各エンコーダ20−nは、デイジーチェーン接続をしているため、下位モータ位置情報を上位のエンコーダ20−nに送信する必要がある。例えば、下位モータ位置情報をカットスルー方式で転送しようとすると、一応はコントローラ10に送信することが可能であるが、各エンコーダ20−nの送信タイミングが重ならないようにいちいち調整する必要がある。この点、実施形態2によれば、例えば、ストアアンドフォワード形式で下位モータ位置を送信するので、このような調整をする必要がなくなる。その結果、ユーザの調整負担を軽減するとともに、コントローラ10やエンコーダ20−nの処理負担を軽減することができる。更に、コントローラ10は、モータ位置情報を確実かつ迅速に取得することができるようになる。
また、エンコーダ20−nは、上位からモータ位置情報取得コマンドを受信すると、原則として、次の通信周期TCCが訪れるまでは、上位からデータを受信することがない。この点に着目し、上位から受信したモータ位置情報取得コマンドをカットスルー方式で転送することで、モータ位置情報取得コマンドをいちいちため込む必要が無くなるので、下位に迅速にモータ位置情報取得コマンドを転送することができる。その結果、モータ位置情報取得コマンド通信期間TCTを短くすることができ、モータ位置通信期間TITを充分に確保することができる。更に、モータ位置の取得タイミングを早めることができ、コントローラ10は、モータ位置をより早い段階で取得することができる。
また、コントローラ10は各エンコーダ20−nからモータ位置情報を受信する必要があるため、モータ位置通信期間TITをモータ位置情報取得コマンド通信期間TCTに比べて長く設定しているので、ストアアンドフォワード方式を用いても確実にモータ位置を送信することができる。即ち、まだモータ位置を送信し終わっていないにも関わらず、次の通信周期TCCが来てしまうようなことを防止することができる。
なお、ストアアンドフォワード方式で下位モータ位置情報を送信する場合に、下位モータ位置情報をそのまま転送すると、伝送の遅れなどによって、データの先頭の信号パターンが中継によって欠落することがあるので、データ検出用の所定のデータパターンを先頭に付加したうえで転送することで、転送時の先頭データの欠落をなくすようにしてもよい。
[2−3.実施形態2の変形例]
なお、実施形態2では、各エンコーダ20−nが、モータ位置情報と下位モータ位置情報を別々に送信する場合を例に挙げて説明したが、各モータエンコーダ20−nは、モータ位置情報と下位モータ位置情報とを結合して一つのデータとして送信するようにしてもよい。
図8は、実施形態2の変形例におけるモータ位置情報がコントローラ10に送信される様子を示す図である。図8のS101〜S121に示すように、位置取得タイミングt8が訪れてからエンコーダ20−7がモータ位置情報をエンコーダ20−6に送信するまでは、図7と同様である。
実施形態1及び2では説明を省略したが、モータ位置情報及び下位モータ位置情報は、所定形式のプリアンブルヘッダを有する。プリアンブルヘッダは、所定値のデータであればよく、例えば、データの開始位置を示すために用いられる。図8に示すように、エンコーダ20−7のモータ位置情報送信部209−7は、プリアンブルヘッダF1、モータ位置情報、及び末尾フラグF2に順番で構成されるデータをエンコーダ20−6に送信する(S135)。末尾フラグF2は、所定値のデータであればよく、例えば、データの終了位置を示すために用いられる。
エンコーダ20−6の下位モータ位置情報受信部208−6が下位モータ位置情報を受信すると(S136)、モータ位置情報送信部209−6は、下位モータ位置情報のプリアンブルヘッダF1を削除し、モータ位置情報に続けて送信する(S137)。S137においては、例えば、モータ位置情報送信部209−6は、プリアンブルヘッダF1及びモータ位置情報の順番で構成されるデータに、下位モータ位置情報のプリアンブルヘッダF1を削除したデータを結合し、プリアンブルヘッダF1、モータ位置情報及び下位モータ位置情報、及び末尾フラグF2の順番で構成されるデータを送信することになる。
エンコーダ20−1〜20−5の各々においても、エンコーダ20−6と同様に、下位モータ位置情報受信部208−1〜208−5が下位モータ位置情報を受信すると(S138,S140,S142,S144,S146)、モータ位置情報送信部209−1〜209−5は、下位モータ位置情報のプリアンブルヘッダF1を削除して、モータ位置情報に続けて送信する(S137,S139,S141,S143,S145)ことになる。コントローラ10が、各エンコーダ20−nからモータ位置情報を受信した後は、実施形態1と同様である。
本変形例によれば、各エンコーダ20−nが、下位モータ位置情報のプリアンブルヘッダF1を削除して自身のモータ位置情報に続けて送信することで、より短いデータ長での伝送が可能となり、データ転送効率が向上する。
なお、実施形態2及び変形例では、実施形態1のように各エンコーダ20−nに待機時間Twnを設定するようにしてもよいし、特に待機時間Twnを設定しないようにしてもよい。即ち、実施形態2及び変形例では、モータ位置情報取得コマンドの転送方法と、モータ位置情報及び下位モータ位置情報の送信方法と、が上記説明した方法で行われるようにすればよく、各エンコーダ20−nの位置取得タイミングがずれていても構わない。
[3.実施形態3]
次に、本発明に係る別実施形態を説明する。本発明の発明者の見地によれば、従来は、センサがモータ関連情報をコントローラに送信するために半2重通信路を利用する場合、例えば、他のケーブルからの信号がクロストーク等のノイズが伝送路に乗ってしまうことがあった。そこで本発明の発明者は、クロストーク等のノイズの影響を軽減するために鋭意研究開発を行った結果、新規かつ独創的なモータ制御システム等に想到した。以降、実施形態3のモータ制御システム等を詳細に説明する。なお、実施形態3でも、センサの一例としてエンコーダを説明する。
なお、実施形態3のモータ制御システムの物理構成は、実施形態1と同様である。ただし、実施形態3の各伝送路30−nは、半2重通信路である。半2重通信方式は、例えば、RS−485形式であってよく、この場合、接続ポート14、上位接続ポート24−n、及び下位接続ポート25−nの各々は、RS−485トランシーバを含むことになる。各上位接続ポート24−nは、半2重通信方式により上位のエンコーダ20−n又はコントローラ10と接続されることになり、各下位接続ポート25−nは、半2重通信方式により下位のエンコーダ20−nと接続される。
[3−1.実施形態3で実現される機能]
図9は、実施形態3のモータ制御システムの機能ブロック図である。図9に示すように、実施形態3のエンコーダでは、イネーブル保持部210−nが実現される。他の各機能は、実施形態1及び2で説明した内容と同様であってよい。イネーブル保持部210−nは、通信制御部23により実現される。
実施形態3では、各エンコーダ20−nが上位からモータ位置情報取得コマンドを受信すると、次の通信周期TCCが訪れるまでは、原則として、上位からデータを受信することがないので、この点に着目して、上位接続ポート24−nを送信イネーブル状態にすることで、伝送路30−nの信号を安定させて、クロストークの影響を抑えるようになっている。
図10は、実施形態3の処理の流れを示す図である。図10のS101〜S121に示すように、各エンコーダ20−nがモータ位置情報を取得するまでの流れは、実施形態1及び2と同様であるが、ここでは、各エンコーダ20−nが、モータ位置情報取得コマンドを転送するS102〜S113の処理を、更に詳細に説明する。
図10に示すように、S101において、コントローラ10のモータ位置情報取得コマンド送信部102は、接続ポート14を送信イネーブル状態にして、モータ位置情報取得コマンドを送信し、送信が完了した後に送信イネーブル状態を解除する。図10では、「送信イネーブル」を示す線が立ち上がっている状態を、送信イネーブル状態として示している。所定のビット列を示す送信イネーブル信号によって、送信イネーブル状態となる。送信イネーブル状態の解除も同様に、所定のビット列を示す送信イネーブル解除信号によって行われるようにすればよい。
S102において、エンコーダ20−1のモータ位置情報取得コマンド受信部205−1は、モータ位置情報取得コマンドを受信すると、S103において、モータ位置情報取得コマンド再送信部206−1は、下位接続ポート25−1を送信イネーブル状態にして、モータ位置情報取得コマンドを送信し、送信が完了した後に送信イネーブル状態を解除する。
エンコーダ20−2〜20−6の各々においても、エンコーダ20−1と同様に、モータ位置情報取得コマンド再送信部206−2〜206−6の各々は、下位接続ポート25−2〜25−6の送信イネーブル状態にして、モータ位置情報取得コマンドを送信し、送信が完了した後に送信イネーブル状態を解除する(S105,S107,S109,S111,S113)。エンコーダ20−7がモータ位置情報取得コマンドの受信を完了した後は、実施形態1と同様に、位置取得タイミングt8で各エンコーダ20−nがモータ位置情報を取得する。
実施形態3では、位置取得タイミングt8が訪れた後に、イネーブル保持部210−1〜210−7の各々は、上位接続ポート24−1〜24−7の各々を送信イネーブル状態とする(S148〜S154)。この状態になると、モータ位置情報送信部209−nは、モータ位置情報を送信可能な状態となり、S155〜S167のように、モータ位置情報を送信する。S155〜S167は、S122〜S134と同様であるが、S135〜S147のように送信してもよい。
図10に示すように、イネーブル保持部210−1〜210−7の各々は、モータ位置情報送信部209−1〜210−7による送信が終了した後、所定の時間、上位接続ポート24−nを送信イネーブル状態に保持する。送信イネーブル状態を保持するとは、上述のように、所定のビット列を示す送信イネーブル信号を通信ケーブルに印加し、通信経路上の電位をある特定の値に保つ(即ち、信号レベルを固定する)ことである。これにより、通信経路上の電位が不定とならず、クロストーク等のノイズの影響を受けにくくなる。上記所定の時間は、予め定められた期間であればよく、例えば、次の通信周期TCCが訪れるまでであってもよい。ここでは、イネーブル保持部210−1〜210−7の各々は、所定の長さの状態保持期間Tenableだけ送信イネーブル状態を保持する。
状態保持期間Tenableは、通信周期TCCによって定まり、各エンコーダ20−nで共通であってもよいし、エンコーダ20−n毎に定められていてもよい。送信イネーブル状態になった伝送路30−nは信号レベルが固定されるので、図10に斜線で示した期間だけ、伝送路30−1〜30−7の各々の信号レベルが固定されることになる。なお、状態保持期間Tenableは、予めメモリ22等に記憶されているようにしてもよいし、待機時間Twnと同様にして、初期化時に設定されるようにしてもよい。
イネーブル保持部210−nは、少なくともモータ位置情報取得コマンド受信部205−nによりモータ位置情報取得コマンドが受信されるまでに送信イネーブル状態を解除する。例えば、イネーブル保持部210−nは、通信周期TCCの終了時点t9(即ち、次の通信周期TCCの開始時点)よりも前に、送信イネーブル状態を解除する。
[3−2.実施形態3まとめ]
実施形態3のモータ制御システム1によれば、各エンコーダ20−nは、上位からモータ位置情報取得コマンドを受信すると、次の通信周期TCCが訪れるまでは、上位から何らかの情報を受信することは基本的にないので、エンコーダ20−nは、モータ位置情報を送信した後は、送信イネーブル状態にして伝送路30−nの信号レベルを固定することによって、他のケーブルからの信号がクロストークによって伝送路30−nに乗ってしまう等のノイズの影響を受けることを防止することができる。例えば、接続順位が下であるほど何もデータを送信しない期間が長いため、最下位に近いほどノイズの影響を受けやすいが、最下位に近いエンコーダ20−nでも、ノイズの影響を防止することができる。
また、各エンコーダ20−nは、次の通信周期TCCが到来して、モータ位置取得コマンドを受信しようとしても、送信イネーブル状態のままだと受信できなくなってしまうが、それまでに送信イネーブル状態を解除することで、ノイズの影響を防止しつつ、次のモータ位置取得コマンドも確実に受信することができる。
なお、実施形態3では、実施形態1のように各エンコーダ20−nに待機時間Twnを設定するようにしてもよいし、特に待機時間Twnを設定しないようにしてもよい。同様に、実施形態3では、実施形態2のように各データを送信してもよいし、他の方法で送信してもよい。即ち、実施形態3では、上位接続ポート24−nの送信イネーブル状態が上記説明した方法で保持及び解除されるようにすればよく、各エンコーダ20−nの位置取得タイミングがずれていても構わないし、カットスルー方式やストアアンドフォワード方式を利用しなくてもよい。
なお、実施形態1〜3の各々を組み合わせてもよい。
[4.実施形態4]
次に、本発明に係る別実施形態を説明する。実施形態1〜3では、各エンコーダ20がモータ位置情報取得コマンドに応じてモータ位置情報を取得する場合を説明したが、各エンコーダ20は、モータ位置情報取得コマンドを受信しなくても、他のエンコーダ20と同じ位置取得タイミングでモータ位置情報を取得するようにしてもよい。なお、実施形態1〜3では、モータ位置情報取得コマンドが本発明に係るコマンドに相当したが、実施形態4では、初期化コマンドが本発明に係るコマンドに相当する。
実施形態4のモータ制御システム1の物理構成は、実施形態1〜3と同様である。実施形態4のモータ制御システム1の機能ブロックは、実施形態1〜3と略同様であるが、コントローラ10は、モータ位置情報取得コマンドを送信しないので、コントローラ10のモータ位置情報取得コマンド送信部102は省略してよい。同様に、各エンコーダ20は、モータ位置情報取得コマンドを受信しないので、モータ位置情報取得コマンド受信部205−nと、モータ位置情報取得コマンド再送信部206−nと、は省略してよい。なお、実施形態4では、初期化コマンド受信部200−nが、本発明に係るコマンド受信部に相当し、初期化コマンド再送信部201−nが、本発明に係るコマンド再送信部に相当する。
図11は、実施形態4の処理の流れを示す図である。なお、図11では、説明の簡略化のため、各エンコーダ20がモータ位置情報をコントローラ10に送信する処理は省略している。図11に示すように、まず、S1〜S21の処理が実行される点については、実施形態1〜3と同様である。ただし、実施形態4では、初期化コマンドには、通信周期TCCの長さを示す通信周期情報が含まれているものとする。通信周期情報は、コントローラ10のメモリ12等に記憶されているようにすればよい。また、S4,S7,S10,S13,S16,S19,S21では、待機時間設定部202−1〜202−7の各々は、初期化コマンドの受信タイミングから最初の位置取得タイミングt12までの待機時間Tw1〜Tw7を設定することになる。
初期化コマンドの受信タイミングは、初期化コマンドの受信を開始してから受信が完了するまでの期間内の何れかの時点である。ここでは、初期化コマンドの受信が完了した時点とする。最初の位置取得タイミングとは、初期化コマンドを受信した後の1回目の位置取得タイミングである。このため、実施形態4の待機時間Tw1〜Tw7の長さは、実施形態1〜3とは異なっている。例えば、待機時間Tw1〜Tw7は、初期化コマンドの受信が完了した時点から、通信周期TCCの開始時点t11の所定時間後の位置取得タイミングt12までの長さとなる。この通信周期TCCは、初期化コマンドを受信した通信周期TCCの次のものであってもよいし、所定周期だけ後のものであってもよい。また、上記所定時間は、モータ位置情報通信期間ITを十分に確保できるように定めればよく、0であってもよい。なお、初期化コマンドの伝送遅延時間は、実施形態1で説明したモータ位置情報取得コマンドの伝送遅延時間Tdrと同じであってもよい。この場合、実施形態4でも、待機時間Tw1〜Tw7の各々は、伝送遅延時間Tdrだけずれることになる。
なお、S4,S7,S10,S13,S16,S19,S21では、待機時間設定部202−1〜202−7の各々は、初期化コマンドに含まれる通信周期情報を通信制御部23−1〜23−7内のメモリ等に保持するものとする。これは、2回目以降の位置取得タイミングを特定するためである。
モータ位置情報取得部207−1〜207−7の各々は、初期化コマンドの受信タイミングから待機時間Tw1〜Tw7が経過した位置取得タイミングt12で、最初のモータ位置情報を取得する(S115−1〜S121−1)。例えば、モータ位置情報取得部207−1〜207−7の各々は、初期化コマンドの受信タイミングから計時を開始し、通信制御部23−1〜23−7内のメモリ等に保持された待機時間Tw1〜Tw7が経過した場合に、モータ位置情報を取得することになる。
なお、S115−1〜S121−1の各々の処理は、それぞれ実施形態で説明したS115〜S121と同様である。また、先述したように、ここでは、各エンコーダ20がコントローラ10にモータ位置情報を送信する処理は省略しているが、次の通信周期TCCの開始時点t13が訪れるまでに、実施形態2で説明したような方法によって、モータ位置情報がコントローラ10に送信されるようにすればよい。
最初の位置取得タイミングt12が訪れた後は、モータ位置情報取得部207−1〜207−7の各々は、通信周期TCCごとにモータ位置情報を取得する(S115−2〜S121−2,S115−3〜S121−3)。例えば、モータ位置情報取得部207−1〜207−7の各々は、モータ位置情報を取得すると計時を開始し、通信制御部23−1〜23−7内のメモリ等に保持された通信周期TCCが経過した場合に、モータ位置情報を取得することになる。1回目の位置取得タイミングt12が各エンコーダ20で合っているので、それ以降は所定時間毎に位置取得タイミングt14,t16が訪れるようにすることで、モータ位置情報取得コマンドを送受信しなくても、2回目以降の位置取得タイミングt14,t16も各エンコーダ20で合わせることができる。
実施形態4によれば、モータ位置情報取得コマンドを送受信しなくても、各エンコーダ20−nでモータ位置情報の取得タイミングを合わせることができる。モータ位置情報取得コマンドを送受信する必要がないので、通信周期TCCを短くしても、モータ位置情報通信期間TITを十分に確保することができる。
なお、実施形態4では、1回目の位置取得タイミングt12が訪れた後は、通信周期TCC毎にモータ位置情報を取得する場合を説明したが、各エンコーダ20−nで同じ位置取得タイミングとなるようにすればよく、通信周期TCC毎でなくてもよい。ある位置取得タイミングから次の位置取得タイミングまでの時間が各エンコーダ20−nで同じであり、各エンコーダ20−n間で位置取得タイミングが合うようにすればよい。この時間は、コントローラ10の指示により各エンコーダ20−nに設定されるようにすればよい。
また、実施形態1〜3で説明した構成と、実施形態4と、を組み合わせてもよい。例えば、実施形態1と同様に、待機時間設定部202−nは、位置取得タイミングが、最下位のエンコーダ20−7が初期化コマンドの受信を完了した後となるように待機時間Twnを設定してもよい。また、実施形態1の変形例と同様に、コントローラ10は、待機時間算出部104を含むようにしてもよい。この場合、待機時間算出部104は、各エンコーダ20−nの接続順位と、初期化コマンドの伝送遅れ時間と、初期化コマンドの送受信時間と、初期化コマンドの送受信のための通信期間と、に基づいて待機時間を算出するようにすればよい。また、初期化コマンド再送信部201−nが本発明に係るコマンド再送信部に相当し、実施形態2と同様に、初期化コマンドをカットスルー方式で下位のエンコーダ20−nに送信するようにしてもよい。
[5.実施形態5]
次に、本発明に係る別実施形態を説明する。実施形態1〜4では、各エンコーダ20が、モータ位置情報取得コマンドや初期化コマンドの受信タイミングに基づいてモータ位置情報を取得する場合を説明したが、実施形態5では、各エンコーダ20が、コントローラ10により指定されたタイミングに基づいてモータ位置情報を取得する場合を説明する。例えば、モータ位置情報の取得を待機する際の起点となるタイミングが、初期化コマンドやモータ位置情報取得コマンドの受信タイミングではなく、コントローラ10により指定されたタイミングである場合を説明する。
実施形態5のモータ制御システム1の物理構成は、実施形態1〜4と同様である。実施形態5のモータ制御システム1の機能ブロックは、実施形態1〜3と略同様であってもよいし、実施形態4と同様に、モータ位置情報取得コマンド送信部102、モータ位置情報取得コマンド受信部205−n、及び、モータ位置情報取得コマンド再送信部206−nを省略してもよい。
また、初期化コマンドが実行されるまでの処理の流れは、実施形態1のS1〜S21(図5)と同様であってもよいが、実施形態5では、例えば、S4,S7,S10,S13,S16,S19,S21において、各エンコーダ20−nは、初期化コマンドを受信すると、時間情報を初期化するものとする。なお、ここでは、説明の簡略化のため、待機時間Twnを設定する上記各ステップにおいて時間情報の初期化が実行される場合を説明するが、待機時間Twnを設定するステップと、時間情報の初期化を実行するステップと、を分けてもよい。
時間情報は、時間を示す数値であり、例えば、所定時間ごとに値が変化するカウントアップタイマ又はカウントダウンタイマであってもよいし、日時を示すリアルタイムクロックであってもよい。本実施形態では、カウントアップタイマが用いられる場合を例に挙げて説明する。時間情報は、通信制御部23−1内のメモリ等に記憶されている。時間情報の初期化とは、時間情報が示す数値を所定値にすることであり、例えば、カウントアップタイマを0にすることである。各エンコーダ20−nは、時間情報を初期化すると計時を開始し、所定時間が経過するたびに時間情報を更新する。本実施形態では、各エンコーダ20−nは、カウントアップタイマである時間情報を0にするとカウントアップを開始することになる。
図5に示すように、各エンコーダ20−nは、デイジーチェーン接続されているので、各エンコーダ20−nが初期化コマンドを受信して時間情報を初期化するタイミングは、伝送遅延時間Tdrだけずれることになる。このため、ある時点における各エンコーダ20−nの時間情報は、デイジーチェーンの接続順位に応じた値だけずれることになる。より具体的には、例えば、各エンコーダ20−nの時間情報が示す値をTnとする。エンコーダ20−1は、他のエンコーダ20−2〜20−7よりも時間情報を初期化するタイミングが早く、S4において、時間情報T1が0になる。そして、エンコーダ20−1は、時間情報T1のカウントアップを開始し、伝送遅延時間Tdrを示す値だけカウントアップしたときに、エンコーダ20−2は、時間情報T2を0にする。このように、各エンコーダ20−nの時間情報Tnは、伝送遅延時間Tdrだけずれることになる。
上記のようにして初期化コマンドが実行されると、各エンコーダ20−nは、モータ位置情報を取得することになる。図12は、実施形態5においてモータ位置情報取得コマンドが転送される様子を示す図である。図12に示すように、S101〜S114の処理が実行され、各エンコーダ20−nがモータ位置情報取得コマンドを送受信する点については、実施形態1(図2)と同様である。ただし、実施形態5では、モータ位置情報取得コマンドに、待機時間Twnの起点となるタイミング(ここでは、カウントアップタイマが示す数値)を示す起点情報が含まれているものとする。モータ位置情報取得部207−nは、受信したモータ位置情報取得コマンドに含まれるタイミングを参照し、そのタイミングから待機時間Twnだけ待機したタイミングでモータ位置情報を取得することになる。
先述のように、各エンコーダ20−nの時間情報Tnは、伝送遅延時間Tdrだけずれているので、図12に示すように、エンコーダ20−1〜20−6の各々が起点情報により特定するタイミングt1D〜t6Dと、エンコーダ20−2〜20−7の各々が起点情報により特定するタイミングt2D〜t7Dと、は伝送遅延時間Tdrだけずれていることになる。そして、各エンコーダ20−nに設定される待機時間Twnは、伝送遅延時間Tdrだけずれているため、S115〜S121に示すように、各エンコーダ20−nは、同じ位置取得タイミングt8でモータ位置情報を取得することになる。
なお、2回目以降のモータ位置情報の取得に関し、コントローラ10は、モータ位置情報取得コマンドに起点情報を毎回含めるようにしてもよいし、実施形態4のように、モータ位置情報取得コマンドの送受信は行わずに通信周期Tcc毎にモータ位置情報を取得するようにしてもよい。モータ位置情報取得コマンドに起点情報を毎回含める場合には、所定のタイミング(例えば、通信周期Tccの開始タイミングや位置取得タイミング)で時間情報を毎回初期化するようにしてもよい。
実施形態5によれば、初期化コマンドやモータ位置情報取得コマンドの受信タイミングではなく、コントローラ10が指定したタイミングに基づいて、各エンコーダ20−nにモータ位置情報を取得させることで、各エンコーダ20−nの位置取得タイミングを合わせることができる。
なお、実施形態5では、モータ位置情報取得コマンドに起点情報が含まれている場合を説明したが、起点情報は、初期化コマンドに含まれていてもよい。この場合、各エンコーダ20−nは、初期化コマンドに含まれる起点情報が示すタイミングから待機時間Twnだけ待機したタイミングでモータ位置情報を取得することになる。以降は、実施形態4と同様に、通信周期Tcc毎にモータ位置情報を取得するようにすれば、2回目以降の位置取得タイミングも各エンコーダ20−nで合わせることができるようになる。また、モータ位置情報取得部207−nは、初期化コマンドやモータ位置情報取得コマンドにより定まるタイミングと待機時間Twnとに応じたタイミングでモータ位置情報を取得すればよく、例えば、カウントアップタイマの値が0のタイミングが、初期化コマンドやモータ位置情報取得コマンドにより定まるタイミングに相当してもよい。この場合、待機時間Twnは、各エンコーダ20−nの位置取得タイミングそのものを示すことになる。
[6.その他変形例]
また、上記説明した本発明に係る各処理をロボットシステムに適用してもよい。図13は、ロボットシステムの一例を示す図である。図13に示すように、ロボットシステム2は、モータ制御システム1と、ロボット3と、を含む。ロボット3は、コントローラ10の制御対象となる装置であり、例えば、複数のモータ4を含む。即ち、ロボット3には、モータ4が組み込まれている。図13に示す例では、ロボット3は、アームを有するマニピュレータを含む。また、ここでのロボット3は、2つ以上の軸を有する機械である多軸機械(例えば、金属の加工機械等)を含む意味である。図4に示すロボット3は、4つのモータ4−1〜4−4を有するため、4つの軸を有する多軸機械といえる。
ロボットシステム2では、コントローラ10の指示のもとでモータ4−1〜4−4が回転することで、ロボット3が動作する。例えば、コントローラ10は、ロボット3のアームが所定のタイミングで所定の位置で物をつかむように、モータ4−1〜4−4を回転させる。ここでは、4つのモータ4−1〜4−4の各々に、エンコーダ20−1〜20−4が接続されている。図13に破線で示すように、エンコーダ20−1〜20−4の各々は、デイジーチェーン接続されている。ここでは、エンコーダ20−1が最上位であり、エンコーダ20−4が最下位である。なお、図13では、他の配線や補器類は省略している。
ロボットシステム2においては、実施形態1〜4で説明した処理の何れか1つ、これらの組み合わせ、又は全部が実行されるようにしてもよい。即ち、ロボットシステム2でも、実施形態1のようにして、エンコーダ20−1〜20−4の位置取得タイミングを合わせるようにしてもよい。また、ロボットシステム2でも、実施形態2のようにして、カットスルー方式やストアアンドフォワード方式を用いてデータを送信してもよい。また、ロボットシステム2でも、実施形態3のようにして、送信イネーブル状態を保持及び解除するようにしてもよい。また、ロボットシステム2でも、実施形態4のようにして、モータ位置情報取得コマンドを送受信しなくても、位置取得タイミングを合わせるようにしてもよい。
また、上位接続ポート24−n及び下位接続ポート25−nは、伝送路30−nと直接的に接続されるものだけではなく、間接的に接続されるものも含む意味である。間接的に接続とは、例えば、ケーブルや通信コネクタ等の直接的な接続部分はエンコーダ20−nとは別体で存在し、この接続部分からの信号線の入力部により接続される意味である。コントローラ10の接続ポート14も同様である。
また、コントローラ10は、モータ制御装置(サーボコントローラ又はサーボアンプ)とは別体であってもよいし、モータ制御装置を含んでいてもよい。また例えば、各エンコーダ20−nの通信相手が1又は複数のモータ制御装置であり、1又は複数のモータ制御装置が別の上位装置によって制御されるようにしてもよい。即ち、コントローラ10は、モータ制御装置と、モータ制御装置を制御する上位装置と、の両方を含む意味であってもよいし、モータ制御装置と、モータ制御装置を制御する装置と、が別体であってもよい。後者の場合、モータ制御装置がコントローラに相当してもよいし、モータ制御装置を制御する上位装置がコントローラに相当してもよい。
また、実施形態1〜4では、コントローラ10とエンコーダ20−nとがモータ制御システム1に含まれる場合を説明したが、モータ制御システム1は、他の機器を含んでいてもよい。例えば、コントローラ10とエンコーダ20−nだけでなく、モータやモータ制御システムを含むものをモータ制御システム1としてもよい。
また、デイジーチェーン接続の接続台数は、上記説明した4台や7台に限られない。接続台数は2台以上であればよい。また、実施形態1における待機時間Twnの設定は、初期化時でなくてもよい。電源投入後の任意の時間に設定されるようにすればよい。
また、コントローラ10が受信するモータ位置情報には、どのエンコーダ20−nで取得したものなのかを識別する情報が含まれているものとして説明したが、この情報が含まれていなくてもよい。この場合、各エンコーダ20−nが、所定の順番にモータ位置情報を送信することで、コントローラ10が、どのエンコーダ20−nが取得したモータ位置情報なのかを、受信順によって特定してもよい。
また例えば、モータ位置情報取得部207−nは、コマンド(例えば、モータ位置情報取得コマンドや初期化コマンド)に基づいて、自身に接続された他のエンコーダ20−n(即ち、デイジーチェーン接続された他のエンコーダ20−n)とモータ位置情報の取得タイミングを合わせてモータ位置情報を取得する手段として機能すればよく、位置取得タイミングの合わせ方は、上記説明した例に限られない。待機時間Twnを設定する方法以外にも、所定の時刻が到来した場合にモータ位置情報を取得するようにしてもよい。
また例えば、初期化コマンド送信部102は、エンコーダ20−nと当該エンコーダ20−nに接続された他のエンコーダ20−n(即ち、デイジーチェーン接続された各エンコーダ20−n)のモータ位置情報の取得タイミングを合わせる手段として機能すればよく、初期化コマンドに待機時間データを含める方法以外にも、モータ位置情報を取得すべき時刻を各エンコーダ20−nに送信するようにしてもよい。
また、センサの一例としてエンコーダ20−nを例に挙げて説明し、モータ位置情報がモータ関連情報に相当する場合を説明したが、モータ関連情報を取得する種々のセンサに適用すればよく、エンコーダ20−n以外のセンサにも適用可能である。例えば、モータのトルクを検出するトルク検出センサが、本発明に係るセンサに相当してもよい。この場合、複数のトルク検出センサがデイジーチェーン接続されていることになり、モータのトルクを示すトルク情報がモータ関連情報に相当する。
他にも例えば、加速度センサや力覚センサが、本発明に係るセンサに相当してもよい。この場合、複数の加速度センサや力覚センサがデイジーチェーン接続されていることになり、モータの加速度を示す加速度情報やモータにより動作するアームの圧力を示す圧力情報が、モータ関連情報に相当する。
即ち、本発明に係るセンサは、モータに関するモータ関連情報を取得するセンサであればよい。このため、実施形態1〜4及び上記変形例で説明した「モータ位置情報」の記載は、「モータ関連情報」と読み替えることができる。また、デイジーチェーン接続された複数のセンサの各々が異なる種類のセンサであってもよい。例えば、エンコーダ、トルク検出センサ、加速度センサ、及び力覚センサがデイジーチェーン接続された場合であっても、上記説明した各処理を適用してもよい。