(57)【要約】【課題】マスタ装置とスレーブ装置の動作周期が異なっているモーションコントロールシステムにおいて、モータの動作上のムラを発生させない。【解決手段】スレーブ装置１００において、ネットワーク通信部１０７が、マスタ動作周期に従ってモータ３００の位置指令を受信し、データ補正部１０８が、マスタ動作周期とスレーブ動作周期とが一致するタイミングからの経過時間に基づいて、スレーブ動作周期間の位置指令の値の差が一定となるように、スレーブ動作周期ごとに、マスタ動作周期単位の位置指令をスレーブ動作周期単位の位置指令に補正し、補正値をデータ制御部１０９に出力し、データ制御部１０９は補正値に従ってモータ３００を制御する。【選択図】図１
2010140372.tif 000002
【特許請求の範囲】
【請求項１】
所定のマスタ動作周期で動作するマスタ装置に接続され、前記マスタ動作周期と異なるスレーブ動作周期で所定の制御対象物の制御を行うスレーブ装置であって、
前記マスタ装置がマスタ動作周期単位で生成した前記制御対象物の制御のための数値である制御指令値を受信する受信部と、
前記マスタ動作周期と前記スレーブ動作周期とが一致するタイミングからの経過時間に基づいて、スレーブ動作周期ごとに、前記マスタ動作周期単位の制御指令値をスレーブ動作周期単位の数値に補正する指令値補正部と、
スレーブ動作周期ごとに、前記指令値補正部により補正された補正値を用いて前記制御対象物の制御を行う制御部とを有することを特徴とするスレーブ装置。
【請求項２】
前記指令値補正部は、
前後のスレーブ動作周期間の補正値の差が略一定となる数値にて各スレーブ動作周期の補正値を算出することを特徴とする請求項１に記載のスレーブ装置。
【請求項３】
前記指令値補正部は、
スレーブ動作周期Ｙ＿ｊごとに、スレーブ動作周期Ｙ＿ｊの開始時刻Ｙｓ＿ｊと、スレーブ動作周期Ｙ＿ｊの開始時刻Ｙｓ＿ｊよりも前に開始しており当該スレーブ動作周期Ｙ＿ｊと少なくとも部分的に同時進行している同時進行マスタ動作周期Ｘ＿ｉの開始時刻Ｘｓ＿ｉと、前記同時進行マスタ動作周期Ｘ＿ｉにおける制御指令値Ｍ＿ｉと、前記同時進行マスタ動作周期Ｘ＿ｉの１つ前のマスタ動作周期における制御指令値Ｍ＿ｉ−１と、マスタ動作周期の周期時間ＴＭとに基づき、各スレーブ動作周期の補正値Ｓ＿ｊを算出することを特徴とする請求項１又は２に記載のスレーブ装置。
【請求項４】
前記指令値補正部は、
スレーブ動作周期Ｙ＿ｊごとに、
Ｓ＿ｊ＝Ｍ＿ｉ−１＋｛（Ｍ＿ｉ−Ｍ＿ｉ−１）×（Ｙｓ＿ｊ−Ｘｓ＿ｉ）／ＴＭ｝により、
各スレーブ動作周期の補正値Ｓ＿ｊを算出することを特徴とする請求項３に記載のスレーブ装置。
【請求項５】
前記スレーブ装置は、
前記制御対象物としてモータを制御するサーボアンプであり、
前記受信部は、
モーションコントローラであるマスタ装置が生成した前記モータの位置を指示する制御指令値を受信し、
前記制御部は、
スレーブ動作周期ごとに、前記指令値補正部により補正された補正値を用いて前記モータの位置制御を行うことを特徴とする請求項１〜４のいずれかに記載のスレーブ装置。
【請求項６】
所定のマスタ動作周期で動作するマスタ装置に接続され、前記マスタ動作周期と異なるスレーブ動作周期で所定の制御対象物の制御を行うスレーブ装置であって、
前記マスタ動作周期と前記スレーブ動作周期とが一致するタイミングからの経過時間に基づいて、マスタ動作周期ごとに、スレーブ動作周期単位で取得された前記制御対象物の状態を示す数値である状態値をマスタ動作周期単位の数値に補正する状態値補正部と、
マスタ動作周期に従って、前記状態値補正部により補正された補正値を前記マスタ装置に送信する送信部とを有することを特徴とするスレーブ装置。
【請求項７】
前記状態値補正部は、
前後のスレーブ動作周期間の状態値の差が略一定である状態値から補正値を算出することを特徴とする請求項６に記載のスレーブ装置。
【請求項８】
前記スレーブ装置は、
前記制御対象物としてモータを制御するサーボアンプであり、
前記状態値補正部は、
スレーブ動作周期単位で取得された前記モータの現在位置を示す数値である状態値をマスタ動作周期単位の数値に補正し、
前記送信部は、
前記状態値補正部により補正された補正値をモーションコントローラであるマスタ装置に送信することを特徴とする請求項６又は７に記載のスレーブ装置。
【請求項９】
所定のマスタ動作周期で動作するマスタ装置に接続され、前記マスタ動作周期と異なるスレーブ動作周期で所定の制御対象物の制御を行うコンピュータであるスレーブ装置に、
前記マスタ装置がマスタ動作周期単位で生成した前記制御対象物の制御のための数値である制御指令値を受信する受信処理と、
前記マスタ動作周期と前記スレーブ動作周期とが一致するタイミングからの経過時間に基づいて、スレーブ動作周期ごとに、前記マスタ動作周期単位の制御指令値をスレーブ動作周期単位の数値に補正する指令値補正処理と、
スレーブ動作周期ごとに、前記指令値補正処理により補正された補正値を用いて前記制御対象物の制御を行う制御処理とを実行させることを特徴とするプログラム。
【請求項１０】
所定のマスタ動作周期で動作するマスタ装置に接続され、前記マスタ動作周期と異なるスレーブ動作周期で所定の制御対象物の制御を行うコンピュータであるスレーブ装置に、
前記マスタ動作周期と前記スレーブ動作周期とが一致するタイミングからの経過時間に基づいて、マスタ動作周期ごとに、スレーブ動作周期単位で取得された前記制御対象物の状態を示す数値である状態値をマスタ動作周期単位の数値に補正する状態値補正処理と、
マスタ動作周期に従って、前記状態値補正処理により補正された補正値を前記マスタ装置に送信する送信処理とを実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスタ装置と、制御対象物を制御するスレーブ装置とが接続されたシステムにおいて、スレーブ装置が制御対象物を制御する技術に関し、例えば、モーションコントローラとモータを制御するサーボアンプが通信線で接続されたモーションコントロールシステムにおいて、モータを位置指令で制御する技術に関する。
【背景技術】
【０００２】
以下、マスタ装置と、制御対象物を制御するスレーブ装置とが接続されたシステムの例として、モーションコントローラ（以下、マスタ装置、またはマスタと呼ぶ）とモータを制御するサーボアンプ（以下、スレーブ装置、またはスレーブと呼ぶ）が通信線で接続されたモーションコントロールシステムについて説明する。
【０００３】
モーションコントロールシステムでは、同期通信を行うためにマスタの動作周期とスレーブの動作周期を一致させることが望まれるものの、異なるメーカのマスタとスレーブを組み合わせて動作させる等の理由により、マスタとスレーブの動作周期が一致しないシステムを構築するケースも存在する。
【０００４】
ここで、マスタの動作周期とは、マスタがスレーブに指令を与え、各スレーブからの応答を受信して受信後の処理を完了するまでの一連の動作に要する時間を指す。
また、スレーブの動作周期とは、スレーブがマスタからの指令を受信してモータを駆動し、逆に応答情報をマスタに送信するまでの一連の動作に要する時間を指す。
【０００５】
本明細書では、マスタがスレーブに与える指令を位置指令（モータの回転量についての指令）、スレーブがマスタに応答する情報をモータの現在位置情報とする。
なお以降の記述では、基本的に位置指令時の動作についてのみ述べ、現在位置を応答するときの動作は、データを送受する方向が異なる以外は位置指令時と同様の動作となるため説明を省略する。
【０００６】
マスタとスレーブの動作周期が一致していないシステムでは、各スレーブはマスタから受信した最新の位置指令を用いてモータを制御するのが一般的である。
そのときの動作を説明するにあたり、スレーブの一般的な構成を図４に示す。
【０００７】
スレーブ５００は、ネットワーク４００を介してマスタ２００に接続されている。
また、スレーブ５００は、制御対象物であるモータ３００に接続されている。
スレーブ５００において、５０２は、スレーブの動作周期を制御する周期制御部である。
また、５０３は、タイマ部である。
５０４は、ネットワーク４００側から来る周期信号を監視して適宜スレーブの動作周期をリセットする周期リセット部である。
５０５は、タイマ部５０３から受け取るタイマ値からスレーブの周期を検出して他の処理部に伝える周期検出部である。
５０７は、ネットワーク側から来る周期信号を受信したり、スレーブとネットワーク間のデータの送受を行うネットワーク通信部である。
５０９は、ネットワーク通信部６から受信したデータを元にモータ３００を駆動するモータ制御部である。
【０００８】
次に、図４に示すスレーブ５００の動作について説明する。
【０００９】
スレーブ５００内部のネットワーク通信部５０７は、マスタ２００の動作周期に同期してネットワーク４００から位置指令を受信する。
ネットワーク通信部５０７は受信した位置指令をスレーブの動作周期に同期してモータ制御部５０９に送り、これを受け取ったモータ制御部５０９は、その情報を元にモータ３００を駆動する。
【００１０】
周期リセット部５０４は、スレーブの動作周期を制御する。
また、タイマ部５０３は、タイマ値を周期検出部５０５へ伝え、周期検出部５０５は、タイマ値を参照して、予めスレーブの動作周期として定めた時間が経過するごとに周期の開始タイミングを示す周期信号をモータ制御部５０９へ送る。
一方で、ネットワーク通信部５０７は、マスタの動作周期が一定時間経過するごとにマスタ２００から周期リセット信号を受信し、これを周期制御部５０２内部の周期リセット部５０４に送る。
周期リセット部５０４は、周期リセット信号を受信したら周期検出部５０５にリセットするように指令を与え、これを受信した周期検出部５０５は、それまで自身で管理していたスレーブ５００の動作周期の開始タイミングをリセットする。
ただし、この周期リセットは、マスタ２００とスレーブ５００の動作周期が一致していないシステムにおいては、マスタ２００の動作周期とスレーブの動作周期が一致するタイミングでのみリセットすることが考えられる。
【００１１】
以上のように、ネットワーク通信部５０７は、マスタ２００と同期するためにマスタの動作周期に同期してネットワーク４００と通信し、ネットワーク通信部５０７とモータ制御部５０９はスレーブの動作周期に同期して通信を行う。
【００１２】
マスタとスレーブの動作周期が一致しないモーションコントロールシステムでの位置指令の伝わり方を図５に示す。
右方向が時刻の経過を表しており、マスタＸの行はマスタ２００の動作周期での位置指令、つまり図４におけるネットワーク通信部５０７がマスタ２００の動作周期で位置指令を受信するタイミングおよび値の変化の例を示している。
また、スレーブＹの行はスレーブ５００の動作周期での位置指令、つまり図４におけるモータ制御部５０９がスレーブ５００の動作周期で、ネットワーク通信部５０７から位置指令を受信するタイミングおよび値の変化の例を示している。
このスレーブＹの位置指令の値は、スレーブの動作周期の開始時刻（周期ごとの四角の枠の左側の縦線の位置）の時点における、マスタＸの動作周期での位置指令を参照したものである。
また、ΔＴはスレーブの周期間における位置指令の差分を示している。
【００１３】
なお、モーションコントローラシステムの別の例として、特許文献１に記載のものがある。
【特許文献１】特開２００６−２３６２４３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
図５で示したように、マスタとスレーブの動作周期が一致していない場合は、マスタ側が一定の速度でモータを回すために周期ごとの位置指令データの増加分を一定にした場合であっても、スレーブがモータへ与える位置指令値の増加量（ΔＴ）は一定とならない。
故に周期ごとのモータの回転数に差が出てしまい、回転ムラが発生してしまうといった課題がある。
【００１５】
本発明は、このような課題を解決することを主な目的の一つとしており、マスタ装置とスレーブ装置の動作周期が異なっていても、スレーブ動作周期間の制御値の差が一定となるようにようにして、制御対象物の動作上のムラを発生させないことを主な目的とする。
【課題を解決するための手段】
【００１６】
本発明に係るスレーブ装置は、
所定のマスタ動作周期で動作するマスタ装置に接続され、前記マスタ動作周期と異なるスレーブ動作周期で所定の制御対象物の制御を行うスレーブ装置であって、
前記マスタ装置がマスタ動作周期単位で生成した前記制御対象物の制御のための数値である制御指令値を受信する受信部と、
前記マスタ動作周期と前記スレーブ動作周期とが一致するタイミングからの経過時間に基づいて、スレーブ動作周期ごとに、前記マスタ動作周期単位の制御指令値をスレーブ動作周期単位の数値に補正する指令値補正部と、
スレーブ動作周期ごとに、前記指令値補正部により補正された補正値を用いて前記制御対象物の制御を行う制御部とを有することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、マスタ装置とスレーブ装置の動作周期が異なっていても、スレーブ動作周期間で制御値の差が一定となるようにように補正するので、動作上のムラを発生させることなく制御対象物を円滑に制御することができる。
【発明を実施するための最良の形態】
【００１８】
実施の形態１．
本実施の形態に係るスレーブ装置の構成例を図１に示す。
【００１９】
図１において、スレーブ装置１００（以下、スレーブという）は、ネットワーク４００を介してマスタ装置２００（以下、マスタという）に接続されている。
マスタ２００とスレーブ１００は、動作周期が異なる。マスタ２００の動作周期をマスタ動作周期といい、スレーブ１００の動作周期をスレーブ動作周期という。
また、スレーブ１００は、制御対象物であるモータ３００に接続されている。
【００２０】
スレーブ１００において、１０２は、スレーブ１００の動作周期を制御する周期制御部である。
１０３は、タイマ部である。
１０４は、ネットワーク４００側から来る周期信号を監視して適宜スレーブ１００の動作周期をリセットする周期リセット部である。
１０５は、タイマ部１０３から受け取るタイマ値からスレーブの周期を検出して他の処理部に伝える周期検出部である。
１０６は、周期検出部１０５から受信する周期信号の回数をカウントして他の処理部に伝える周期カウンタ部である。
【００２１】
１０７は、ネットワークからの周期信号を受信したり、スレーブとネットワーク間のデータの送受を行うネットワーク通信部である。
ネットワーク通信部１０７は、マスタ２００がマスタ動作周期単位で生成したモータ３００の制御のための数値である位置指令（制御指令値）を受信する。ネットワーク通信部１０７は、受信部及び送信部の例である。
【００２２】
１０８は、ネットワーク通信部１０７から受信した位置指令を、周期カウンタ部１０６によって補正を行うデータ補正部である。
データ補正部１０８は、マスタ動作周期とスレーブ動作周期とが一致するタイミングからの経過時間に基づいて、スレーブ動作周期ごとに、マスタ動作周期単位の位置指令をスレーブ動作周期単位の位置指令に補正する。データ補正部１０８は、前後のスレーブ動作周期間の補正値の差が略一定となる数値にて各スレーブ動作周期の補正値を算出する。
また、データ補正部１０８は、モータ３００の現在の状態を示す数値であるモータの現在位置（状態値）をマスタ動作周期に適合するように補正する。つまり、データ補正部１０８は、マスタ動作周期とスレーブ動作周期とが一致するタイミングからの経過時間に基づいて、マスタ動作周期ごとに、スレーブ動作周期単位で取得されたモータの現在位置をマスタ動作周期単位の数値に補正する。データ補正部１０８は、前後のスレーブ動作周期間の差が略一定となる現在位置の値から各マスタ動作周期の補正値を算出する。
データ補正部１０８の補正値算出手順は後述する。
データ補正部１０８は、指令値補正部及び状態値補正値の例である。
【００２３】
１０９は、データ補正部１０８から受信した補正後のデータを元にサーボモータを駆動するモータ制御部である。
モータ制御部１０９は、スレーブ動作周期ごとに、データ補正部１０８により補正された補正値を用いて制御対象物であるモータ３００の制御を行う。
モータ制御部１０９は、制御部の例である。
【００２４】
次に、本実施の形態に係るスレーブ１００がマスタ動作周期の位置指令の値からスレーブ動作周期の補正値を算出する動作について説明する。
【００２５】
スレーブ１００内部のネットワーク通信部１０７は、マスタ２００の動作周期に同期してネットワーク４００から位置指令を受信する。
ネットワーク通信部１０７は、受信した位置指令をデータ補正部１０８に送り、データ補正部１０８は位置指令を現在のスレーブ動作周期で最適な値に補正し、これをモータ制御部１０９に送る。
データ補正部１０８から補正値を受け取ったモータ制御部１０９は、補正値を元にモータ３００を駆動する。
これらネットワーク通信部１０７、データ補正部１０８およびモータ制御部１０９の間の通信はスレーブの動作周期に同期して行われる。
【００２６】
周期リセット部１０４は、スレーブ１００の動作周期を制御する。
タイマ部１０３は、タイマ値を周期検出部１０５へ伝え、周期検出部１０５は、タイマ値を参照して、予めスレーブ１００の動作周期として定めた時間が経過するごとに周期の開始タイミングを示す周期信号を周期カウンタ部１０６、データ補正部１０８、およびモータ制御部１０９へ送る。
周期カウンタ部１０６は、周期の数をカウントする。
ここで、カウンタ値の上限をＣ＿ｍａｘとし、Ｃ＿ｍａｘの次は０としてカウントを繰り返す。
なお、Ｃ＿ｍａｘの値は、マスタ２００とスレーブ１００の動作周期が一致するタイミングから、次に一致するタイミングまでに要するスレーブ動作周期の周期数から１を引いたものである。Ｃ＿ｍａｘの値の詳細は、図２を参照して後述する。
【００２７】
データ補正部１０８は、カウンタ値を元にネットワーク通信部１０７から受信する位置指令の値を補正する。
この補正方法については、後ほど図２を用いて説明する。
一方で、ネットワーク通信部１０７は、マスタの動作周期が一定時間経過するごとにマスタ２００から周期リセット信号を受信し、これを周期制御部１０２内部の周期リセット部１０４に送る。
周期リセット部１０４は、マスタ２００とスレーブ１００の動作周期が一致するタイミングで周期リセット信号を受信したときのみ、周期検出部１０５および周期カウンタ部に指令を与え、これを受信した周期検出部１０５は、それまで自身で管理していたスレーブの動作周期の開始タイミングをリセットし、また周期カウンタ部１０６はカウンタ値を０にリセットする。
【００２８】
以上のように、ネットワーク通信部１０７は、マスタ２００と同期するためにマスタの動作周期に同期してネットワーク１１と通信するのに対し、ネットワーク通信部１０７とデータ制御部８、およびデータ制御部８とモータ制御部１０９はスレーブの動作周期に同期して通信を行う。
【００２９】
続いて、図１のデータ補正部１０８内部で行うスレーブ動作周期ごとの位置指令の補正の方法について説明する。
データ補正部１０８では、マスタ２００とスレーブ１００の動作周期の開始時刻が一致する時点を基準として補正を行う。そのイメージを図２に示す。
【００３０】
まずは、図２で示した記号について説明する。
図２において、ＴＭはマスタの動作周期である。
ＴＳはスレーブの動作周期である。
Ｔ＿ＬＣＭは、ＴＭとＴＳが一致する周期、つまりＴＭとＴＳの最小公倍数となる周期である。
また、ＴＭおよびＴＳがそれぞれＴ＿ＬＣＭまでに必要な周期数をそれぞれＮＭ，ＮＳとした場合、Ｔ＿ＬＣＭ＝ＴＭ×ＮＭ＝ＴＳ×ＮＳの関係が成り立つ。
図２では、ＮＭ＝４、ＮＳ＝９のときの例を示している。
【００３１】
また、図２において、Ｔ１はＴＭとＴＳの開始時刻が一致するタイミングであり、次に一致するタイミングをＴ２とする。
マスタ２００におけるＴ１からＴ２までの周期の番号をＸ＿ｋ，Ｘ＿ｋ＋１，Ｘ＿ｋ＋２．．．Ｘ＿ｋ＋ｍで表しており、各周期における位置指令の値をＭ＿ｋ，Ｍ＿ｋ＋１，Ｍ＿ｋ＋２．．．Ｍ＿ｋ＋ｍで表す。
先にも述べたとおり、図２はＮＭ＝４であるときの例を示しているため、ｍ＝３となる。
また、Ｘ＿ｋ−１はＸ＿ｋの前の周期の番号を示している。
【００３２】
スレーブについても同様に、Ｔ１からＴ２までの周期の番号を、Ｙ＿ｌ，Ｙ＿ｌ＋１，Ｙ＿ｌ＋２．．．Ｙ＿ｌ＋ｎで表しており、各周期における位置指令を、Ｓ＿ｌ，Ｓ＿ｌ＋１，Ｓ＿ｌ＋２．．．Ｓ＿ｌ＋ｎで表す。
図２は、ＮＳ＝９であるときの例を示しているため、ｎ＝８となる。
なお、先の図１の説明にあった周期カウンタ部１０６でのカウンタの上限Ｃ＿ｍａｘは上記ｎと等しい。
【００３３】
次に、図２を用いて、あるスレーブ動作周期Ｙ＿ｊ（ｊ＝ｌ〜ｌ＋８）における位置指令の補正値Ｓ＿ｊの求め方を説明する。
位置指令の補正値Ｓ＿ｊは、スレーブ動作周期Ｙ＿ｊにおける基準値ＢＳ＿ｊと調整値ＨＳ＿ｊから求められ、Ｓ＿ｊ＝ＢＳ＿ｊ＋ＨＳ＿ｊの関係式が成り立つものとする。
【００３４】
位置指令の補正値Ｓ＿ｊの基準値ＢＳ＿ｊは、スレーブ動作周期Ｙ＿ｊの開始時刻までにマスタ２００の動作周期で受信した最新の位置指令Ｍ＿ｉ（ｉ＝ｋ〜ｋ＋３）の１周期前の値Ｍ＿ｉ−１に等しい。
例えば、図２において、補正値Ｓ＿ｌ＋１の基準値ＢＳ＿ｌ＋１は、位置指令Ｍ＿ｋ−１である（最新の位置指令Ｍ＿ｉはＭ＿ｋであり、その１周期前の位置指令はＭ＿ｋ−１である）。
【００３５】
続いて、調整値ＨＳの求め方について説明する。
あるスレーブ動作周期Ｙ＿ｊでの位置指令の調整値ＨＳ＿ｊは、スレーブ動作周期Ｙ＿ｊの開始時刻までにマスタ動作周期で受信した最新の位置指令Ｍ＿ｉ（同時進行マスタ動作周期Ｘ＿ｉの位置指令）と、その１周期前の位置指令の値Ｍ＿ｉ−１、および補正変数ＰＴ＿ｊから算出する。
関係式は、ＨＳ＿ｊ＝（Ｍ＿ｉ−Ｍ＿ｉ−１）×ＰＴ＿ｊとする。
【００３６】
補正変数ＰＴ＿ｊは、スレーブ動作周期Ｙ＿ｊの開始時刻（Ｙｓ＿ｊとする）から、Ｘ＿ｉ（同時進行マスタ動作周期：Ｙ＿ｊの開始時刻までにマスタの動作周期で受信した最新の位置指令Ｍ＿ｉの周期）の開始時刻（Ｘｓ＿ｉとする）を差し引き、それをＴＭで割った値である。
よって、ＰＴ＿ｊ＝（Ｙｓ＿ｊ−Ｘｓ＿ｉ）／ＴＭで表される。
【００３７】
以上を踏まえ、図２におけるＹ＿ｌ〜Ｙ＿ｌ＋８を求めると次のようになる。
【００３８】
Ｓ＿ｌ＝Ｍ＿ｋ−１＋（Ｍ＿ｋ−Ｍ＿ｋ−１）×（Ｙｓ＿ｌ−Ｘｓ＿ｋ）／ＴＭ
Ｓ＿ｌ＋１＝Ｍ＿ｋ−１＋（Ｍ＿ｋ−Ｍ＿ｋ−１）×（Ｙｓ＿ｌ＋１−Ｘｓ＿ｋ）／ＴＭ
Ｓ＿ｌ＋２＝Ｍ＿ｋ−１＋（Ｍ＿ｋ−Ｍ＿ｋ−１）×（Ｙｓ＿ｌ＋２−Ｘｓ＿ｋ）／ＴＭ
Ｓ＿ｌ＋３＝Ｍ＿ｋ＋（Ｍ＿ｋ＋１−Ｍ＿ｋ）×（Ｙｓ＿ｌ＋３−Ｘｓ＿ｋ＋１）／ＴＭ
Ｓ＿ｌ＋４＝Ｍ＿ｋ＋（Ｍ＿ｋ＋１−Ｍ＿ｋ）×（Ｙｓ＿ｌ＋４−Ｘｓ＿ｋ＋１）／ＴＭ
Ｓ＿ｌ＋５＝Ｍ＿ｋ＋１＋（Ｍ＿ｋ＋２−Ｍ＿ｋ＋１）×（Ｙｓ＿ｌ＋５−Ｘｓ＿ｋ＋２）／ＴＭ
Ｓ＿ｌ＋６＝Ｍ＿ｋ＋１＋（Ｍ＿ｋ＋２−Ｍ＿ｋ＋１）×（Ｙｓ＿ｌ＋６−Ｘｓ＿ｋ＋２）／ＴＭ
Ｓ＿ｌ＋７＝Ｍ＿ｋ＋２＋（Ｍ＿ｋ＋３−Ｍ＿ｋ＋２）×（Ｙｓ＿ｌ＋７−Ｘｓ＿ｋ＋３）／ＴＭ
Ｓ＿ｌ＋８＝Ｍ＿ｋ＋２＋（Ｍ＿ｋ＋３−Ｍ＿ｋ＋２）×（Ｙｓ＿ｌ＋８−Ｘｓ＿ｋ＋３）／ＴＭ
【００３９】
図２では、Ｔ＿ＬＣＭ＝ＴＭ×４＝ＴＳ×９の関係が成り立つため、ＰＴ＿ｊを次のような分数で表すことも可能である。
【００４０】
Ｓ＿ｌ＝Ｍ＿ｋ−１＋（Ｍ＿ｋ−Ｍ＿ｋ−１）×０／９
Ｓ＿ｌ＋１＝Ｍ＿ｋ−１＋（Ｍ＿ｋ−Ｍ＿ｋ−１）×４／９
Ｓ＿ｌ＋２＝Ｍ＿ｋ−１＋（Ｍ＿ｋ−Ｍ＿ｋ−１）×８／９
Ｓ＿ｌ＋３＝Ｍ＿ｋ＋（Ｍ＿ｋ＋１−Ｍ＿ｋ）×３／９
Ｓ＿ｌ＋４＝Ｍ＿ｋ＋（Ｍ＿ｋ＋１−Ｍ＿ｋ）×７／９
Ｓ＿ｌ＋５＝Ｍ＿ｋ＋１＋（Ｍ＿ｋ＋２−Ｍ＿ｋ＋１）×２／９
Ｓ＿ｌ＋６＝Ｍ＿ｋ＋１＋（Ｍ＿ｋ＋２−Ｍ＿ｋ＋１）×６／９
Ｓ＿ｌ＋７＝Ｍ＿ｋ＋２＋（Ｍ＿ｋ＋３−Ｍ＿ｋ＋２）×１／９
Ｓ＿ｌ＋８＝Ｍ＿ｋ＋２＋（Ｍ＿ｋ＋３−Ｍ＿ｋ＋２）×５／９
【００４１】
このＰＴ＿ｊの求め方をＳ＿ｌ＋１のときを例として説明する。
Ｔ＿ＬＣＭの時間を１で表したとき、Ｙｓ＿ｌ＋１＝４／３６，Ｘｓ＿ｋ＝０／３６，ＴＭ＝９／３６であるため、（Ｙｓ＿ｌ＋１−Ｘｓ＿ｋ）／ＴＭ＝（４／３６−０／３６）／９／３６＝４／９となる。
他のＰＴ＿ｊについても同様に求めることが可能である。
【００４２】
図３は、マスタ２００とスレーブ１００の動作周期が一致しないモーションコントロールシステムで、本実施に係るスレーブ１００を使用したときの位置指令の伝わり方を示している。
【００４３】
右方向が時刻の経過を表しており、マスタＸの行はマスタ２００の動作周期での位置指令、つまり図１におけるネットワーク通信部１０７がマスタ２００の動作周期で位置指令を受信するタイミングおよび値の変化の例を示している。
また、スレーブＹの行はスレーブ１００の動作周期での位置指令、つまり図１におけるモータ制御部１０９がスレーブ１００の動作周期で、データ補正部１０８から位置指令を受信するタイミングおよび値の変化の例を示している。
また、ΔＴはスレーブの動作周期間における位置指令の差分を示している。
【００４４】
図３の通り、マスタ側が一定の速度でモータを回すことを考えて周期ごとの位置指令データの増加分を一定にしたとき、スレーブ１００がモータ３００へ与える位置指令値の増加量（ΔＴ）が一定となる。
故に周期ごとのモータの回転数に差が出ず、回転ムラが発生しない。
なお、図３では、スレーブＹの値を小数点以下は省略して表記しているので、一部スレーブＹとΔＴの値が完全には一致していない箇所があるが、ΔＴの値が一定であることには変わりない。
【００４５】
このように、本実施の形態によれば、マスタとスレーブの動作周期が一致していない環境において、スレーブは、ネットワークの通信周期と自身の動作周期が一致するタイミングを基準とし、周期ごとに受信する位置指令を基準からの経過時間の情報を元にデータを補正することで、一定速度で回転ムラなくモータを駆動させることが可能である。
また、モータの回転ムラを回避することができるので、モータの消費電力を抑えることができ、また、モータを円滑に駆動させることができるので、モータの寿命を長くすることができる。
【００４６】
次に、本実施の形態に係るスレーブ１００がマスタ２００のモータ３００の現在位置を通知する際の動作を説明する。
【００４７】
スレーブ１００がマスタ２００に現在位置を通知する動作は、基本的に、スレーブ１００がマスタ動作周期による位置指令をスレーブ動作周期の補正値に変換する動作の逆である。
つまり、データ補正部１０８は、マスタ動作周期とスレーブ動作周期とが一致するタイミングからの経過時間に基づいて、マスタ動作周期ごとに、スレーブ動作周期単位で取得されたモータの現在位置をマスタ動作周期単位の数値に補正する。
マスタ動作周期単位の補正値の具体的な算出方法は、以下の通りである。
【００４８】
図２で説明したマスタからスレーブの位置指令Ｍ＿ｉ，Ｓ＿ｊをスレーブからマスタへの位置情報とする。その場合の算出式は以下の通りである。
Ｍ＿ｋ＝Ｓ＿ｌ−１＋（Ｓ＿ｌ−Ｓ＿ｌ−１）×（Ｘｓ＿ｋ−Ｙｓ＿ｌ）／ＴＭ
Ｍ＿ｋ＋１＝Ｓ＿ｌ＋１＋（Ｓ＿ｌ＋２−Ｓ＿ｌ＋１）×（Ｘｓ＿ｋ＋１−Ｙｓ＿ｌ＋２）／ＴＭ
Ｍ＿ｋ＋２＝Ｓ＿ｌ＋３＋（Ｓ＿ｌ＋４−Ｓ＿ｌ＋３）×（Ｘｓ＿ｋ＋２−Ｙｓ＿ｌ＋４）／ＴＭ
Ｍ＿ｋ＋３＝Ｓ＿ｌ＋５＋（Ｓ＿ｌ＋６−Ｓ＿ｌ＋５）×（Ｘｓ＿ｋ＋３−Ｙｓ＿ｌ＋６）／ＴＭ
【００４９】
図２では、Ｔ＿ＬＣＭ＝ＴＭ×４＝ＴＳ×９の関係が成り立つため、ＰＴ＿ｉを次のような分数で表すことも可能である。
【００５０】
Ｍ＿ｋ＝Ｓ＿ｌ−１＋（Ｓ＿ｌ−Ｓ＿ｌ−１）×０／４
Ｍ＿ｋ＋１＝Ｓ＿ｌ＋１＋（Ｓ＿ｌ＋２−Ｓ＿ｌ＋１）×１／４
Ｍ＿ｋ＋２＝Ｓ＿ｌ＋３＋（Ｓ＿ｌ＋４−Ｓ＿ｌ＋３）×２／４
Ｍ＿ｋ＋３＝Ｓ＿ｌ＋５＋（Ｓ＿ｌ＋６−Ｓ＿ｌ＋５）×３／４
【００５１】
このように、本実施の形態によれば、マスタとスレーブの動作周期が一致していない環境において、マスタ動作周期単位をスレーブ動作周期単位の補正値に直してモータを制御するとともに、スレーブ動作周期単位で制御しているモータの現在位置をマスタ動作周期単位の値に変換するため、マスタ動作周期ごとの正確なモータの現在位置をマスタに通知することができる。
【００５２】
以上、本実施の形態では、モーションコントローラからサーボアンプにネットワーク経由で指令を与え、サーボアンプがサーボモータを駆動するモーションネットワークシステムにおいて、モーションコントローラの動作周期とサーボアンプの動作周期が異なる環境で、サーボアンプがモーションコントローラから受信した位置指令を、モーションコントローラの周期とサーボアンプの周期が一致するタイミングからの経過時間によって補正する位置指令の補正方式、およびサーボアンプ装置を説明した。
【００５３】
また、本実施の形態では、モーションコントローラの動作周期とサーボアンプの動作周期が異なるモーションネットワークシステムにおいて、サーボアンプがモーションコントローラに送信するサーボモータの現在位置情報を、モーションコントローラの周期とサーボアンプの周期が一致するタイミングからの経過時間によって補正する現在位置応答の補正方式、およびサーボアンプ装置を説明した。
【００５４】
最後に、本実施の形態に示したスレーブ装置１００のハードウェア構成例について説明する。
図６は、本実施の形態に示すスレーブ装置１００のハードウェア資源の一例を示す図である。
なお、図６の構成は、あくまでもスレーブ装置１００のハードウェア構成の一例を示すものであり、スレーブ装置１００のハードウェア構成は図６に記載の構成に限らず、他の構成であってもよい。
【００５５】
図６において、スレーブ装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）と接続していてもよい。また、磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード９１５、キーボード９０２、マウス９０３、ＦＤＤ９０４などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１などは、出力装置の一例である。
【００５６】
通信ボード９１５は、図１に示すように、ネットワークに接続されている。例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。
【００５７】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００５８】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００５９】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
スレーブ装置１００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００６０】
上記プログラム群９２３には、本実施の形態の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００６１】
ファイル群９２４には、本実施の形態の説明において、「〜の判断」、「〜の計算」、「〜の算出」、「〜の補正」、「〜の比較」、「〜の設定」、「〜の制御」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
【００６２】
また、本実施の形態の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、本実施の形態の「〜部」としてコンピュータを機能させるものである。あるいは、本実施の形態の「〜部」の手順や方法をコンピュータに実行させるものである。
【００６３】
このように、本実施の形態に示すスレーブ装置１００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【図面の簡単な説明】
【００６４】
【図１】実施の形態１に係るスレーブ装置の構成例を示す図である。
【図２】実施の形態１に係るスレーブ装置における位置指令の補正値の算出方法を説明する図である。
【図３】実施の形態１のスレーブ装置を適用したモーションコントロールシステムにおける位置指令の伝わり方を示す図である。
【図４】一般的なスレーブの構成図である。
【図５】一般的なスレーブを適用したモーションコントロールシステムにおける位置指令の伝わり方を示す図である。
【図６】実施の形態１に係るスレーブ装置のハードウェア構成例を示す図である。
【符号の説明】
【００６５】
１００  スレーブ装置、１０２  周期制御部、１０３  タイマ部、１０４  周期リセット部、１０５  周期検出部、１０６  周期カウンタ部、１０７  ネットワーク通信部、１０８  データ補正部、１０９  モータ制御部、２００  マスタ装置、３００  モータ、４００  ネットワーク。
【図１】
2010140372.tif 000003
【図２】
2010140372.tif 000004
【図３】
2010140372.tif 000005
【図４】
2010140372.tif 000006
【図５】
2010140372.tif 000007
【図６】
2010140372.tif 000008