(57)【特許請求の範囲】
【請求項１】
パルス列の周波数に応じて速度が決定されるとともにパルス列のパルス数に応じて位置が決定される複数台のモータを同時に起動しかつ同時に停止させる同期制御を行うように、シーケンスプログラムに従ってパルス列を発生する機能を備えたプログラマブルコントローラであって、シーケンスプログラムを実行するマイコンのシステムプログラムに複数のモータに対するパルス列の発生を指示する同期制御命令が組み込まれており、同期制御命令の実行時に必要な設定値として少なくとも初速度、最高速度、加減速時間、移動量を格納する設定テーブルを備え、同期制御命令の実行時に設定テーブルから読み出した設定値を用いて直線補間制御を行うようにパルス列を発生させるとともに、パルス列の発生後に加速制御を行う加速期間を有し、パルス列の停止前に減速制御を行う減速期間を有しており、同期制御命令の実行時には加速期間および減速期間においてモータの速度が連続的に変化する周波数を演算値として求め、この演算値に基づいてパルス列を発生させ、加速期間および減速期間には複数のパルス列について周波数を変化させるタイミングを各別に一定値として設定するとともに、前記複数のパルス列の最高速到達時間を一致させるように前記タイミングを調節することを特徴とするプログラマブルコントローラ。
【請求項２】
シーケンスプログラムを実行するＣＰＵユニットと、他のユニットとを接続して構成されるプログラマブルコントローラであって、前記同期制御命令がＣＰＵユニットにおいて実行されるとともにＣＰＵユニットに前記設定テーブルが設けられていることを特徴とする請求項１記載のプログラマブルコントローラ。
【請求項３】
前記設定テーブルには、前記同期制御命令の実行時に算出される演算値を格納する領域が、前記設定値を格納する領域に連続した領域として設けられていることを特徴とする請求項１または請求項２記載のプログラマブルコントローラ。
【請求項４】
前記設定テーブルには、前記同期制御命令の実行時に検出されるエラーの有無に対応したエラーコードを格納する領域が、前記設定値を格納する領域に連続した領域として設けられていることを特徴とする請求項１または請求項２記載のプログラマブルコントローラ。
【請求項５】
前記加速期間および前記減速期間においてモータの速度が一定加速度で連続的に変化する周波数を演算値として求めることを特徴とする請求項１ないし請求項４のいずれか１項に記載のプログラマブルコントローラ。
【請求項６】
前記設定テーブルに設定される設定値として加速度比率を含み、前記加速期間および前記減速期間においてモータの速度が加速度比率に従って連続的に変化する周波数を演算値として求めることを特徴とする請求項１ないし請求項４のいずれか１項に記載のプログラマブルコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パルス列により回転速度および回転角度が制御されるモータを制御する際に、複数個のモータの回転開始と回転停止とのタイミングを一致させる同期運転を可能とするプログラマブルコントローラに関するものである。
【０００２】
【従来の技術】
一般に、ステッピングモータのようにパルスの入力毎に一定角度ずつ回転して停止するモータでは、回転速度は入力するパルス列の周波数（周期）により決定され、回転軸の回転角度はパルス列に含まれるパルス数により決定される。たとえば、１０００パルスで回転軸が１回転するように設計されたパルスモータがあるとすれば、１５００パルスのパルス列を与えることによって回転軸を１．５回転させた後に停止させることができる。
【０００３】
この種のモータを制御するにあたっては、複数個のモータの回転開始と回転停止とのタイミングを一致させるように制御しなければならないことがあり、この種の制御を同期制御と呼んでいる。ここでは説明を簡単にするために２個のモータの同期制御について考察する。いま、図３３に示すように、各モータの回転開始時点を原点Ｏとし、回転開始から回転停止までの期間に各モータに要求される回転角度をそれぞれＸ軸上およびＹ軸上に表した平面を考える。図においてＸ軸上およびＹ軸上の矢印の長さが回転角度を表す。ここで、各モータの運転中における回転角度の比率を一定に保つように各モータを制御するとすれば、両モータの運転中における各モータの回転角度は図３４に示す直線ｔｒの成分となる関係を満たすように制御しなければならない。以下では、このような制御を直線補間制御と呼ぶ。この種の制御は、たとえばＸ−Ｙテーブルにおいて目標位置まで直進移動させる制御に相当する。
【０００４】
一方、モータ自身の慣性およびモータにより駆動される負荷の慣性を考慮すると、図３４に示すように、各モータの回転開始後に時間経過ととともに回転速度を増加させる加速制御を行う加速期間Ｔ１を設け、各モータの回転停止前には時間経過とともに回転速度を低下させる減速制御を行う減速期間Ｔ３を設けることが必要である。加速制御と減速制御との間では回転速度を一定とした定速期間Ｔ２になる。したがって、直線補間制御を行うには、定速期間Ｔ２において両モータの回転角度の比率を一定に保つだけではなく、加速期間Ｔ１や減速期間Ｔ３においても回転角度の比率を一定に保たなければならない。つまり、加速期間Ｔ１および減速期間Ｔ３は両モータについて等しくなる。また、各モータの回転開始後に各モータにそれぞれ与えるパルス列に含まれるパルス数は各モータに要求される回転角度によって定められているから、直線補間制御を行うには各モータに与えるパルス列の周波数を制御することになる。
【０００５】
ここで、加速期間Ｔ１と減速期間Ｔ３とは一般に等しく設定されるから、以下では加速期間Ｔ１および減速期間Ｔ３の各時間を加減速時間と呼ぶ。さらに、回転開始時のパルス列の周波数（つまり、初速度であって、図３４における加速期間Ｔ１の開始時点での縦線の長さ）と回転停止時のパルス列の周波数（つまり、最終速度であって、図３４における減速期間Ｔ３の終了時点での縦線の長さ）とについても等しく設定され、上述のようにパルス列の周波数はモータの回転速度を決定するから、以下ではモータの回転開始時および回転停止時のパルス列の周波数を初速度と呼ぶ。また、定速期間Ｔ２におけるパルス列の周波数を最高速度と呼び、各モータに入力するパルス列のパルス数を移動量と呼ぶ。加速期間Ｔ１および減速期間Ｔ３におけるパルス列の周波数の変化率は、初速度と最高速度と加減速時間とを用いて、（最高速度−初速度）／（加減速時間）として決定することができるから、各モータを制御するには、各モータごとに（初速度、最高速度、加減速時間、移動量）の４つ組をパラメータとして求めればよい。
【０００６】
実際にＸ−Ｙテーブルを２個のモータによって制御するような場合には、Ｘ軸用のモータとＹ軸用のモータとの個々に対して上述した４つ組を与えるのではなく、初速度、最高速度についてはＸ軸とＹ軸との合成値で与える。以下では、初速度の合成値を合成初速度と呼び、最高速度の合成値を合成最高速度と呼ぶ。また、加減速時間は上述のようにＸ軸とＹ軸とについて共通であるから、各モータにおいて１つの加減速時間を共通に用いればよく、移動量については個々のモータごとに各別に与える。両モータの仕様が等しいとすれば、図３３における直線ｔｒの傾きは個々のモータの移動量の比率に等しいから、合成初速度および合成最高速度と各モータごとの移動量とを用いることによって、各モータごとの初速度および最高速度を求めることができる。
【０００７】
【発明が解決しようとする課題】
ところで、上述した直線補間制御のように、２個のモータの同期制御を行うには、合成初速度と合成最高速度と加減速時間と各モータごとの移動量とを与えることが必要であり、これらのデータから各モータごとの４つ組のパラメータを求めることによって各モータをそれぞれ制御することが可能になる。
【０００８】
この種の同期制御はプログラマブルコントローラを用いて実現されている。ただし、図３５に示すように、ＣＰＵユニット１と電源ユニット２とを個別に持ち、さらに図示しない入出力ユニットなどを組み合わせている大規模システムのプログラマブルコントローラではモータを制御するために専用ユニット（モータ制御ユニット）３を設けているのが現状である。つまり、ＣＰＵユニット１はプログラマブルコントローラの通常の命令を実行し、専用ユニット３が同期制御を含めてモータの制御を行うのである。言い換えると、複数個のモータの同期制御を実現するためにＣＰＵユニット１のほかに専用ユニット３が必要であり、プログラマブルコントローラの全体としてはコスト高につながるという問題が生じている。また、専用ユニット３を用いるには専用ユニット３の使用方法を習得しなければならないという問題もある。
【０００９】
本発明は上記事由に鑑みて為されたものであり、その目的は、複数個の機器の同期制御を簡単かつ安価に実現することができるプログラマブルコントローラを提供することにある。
【００１０】
【課題を解決するための手段】
請求項１の発明は、パルス列の周波数に応じて速度が決定されるとともにパルス列のパルス数に応じて位置が決定される複数台のモータを同時に起動しかつ同時に停止させる同期制御を行うように、シーケンスプログラムに従ってパルス列を発生する機能を備えたプログラマブルコントローラであって、シーケンスプログラムを実行するマイコンのシステムプログラムに複数のモータに対するパルス列の発生を指示する同期制御命令が組み込まれており、同期制御命令の実行時に必要な設定値として少なくとも初速度、最高速度、加減速時間、移動量を格納する設定テーブルを備え、同期制御命令の実行時に設定テーブルから読み出した設定値を用いて直線補間制御を行うようにパルス列を発生させるとともに、パルス列の発生後に加速制御を行う加速期間を有し、パルス列の停止前に減速制御を行う減速期間を有しており、同期制御命令の実行時には加速期間および減速期間においてモータの速度が連続的に変化する周波数を演算値として求め、この演算値に基づいてパルス列を発生させ、加速期間および減速期間には複数のパルス列について周波数を変化させるタイミングを各別に一定値として設定するとともに、前記複数のパルス列の最高速到達時間を一致させるように前記タイミングを調節することを特徴とする。
【００１１】
請求項２の発明は、請求項１の発明において、シーケンスプログラムを実行するＣＰＵユニットと、他のユニットとを接続して構成されるプログラマブルコントローラであって、前記同期制御命令がＣＰＵユニットにおいて実行されるとともにＣＰＵユニットに設定テーブルが設けられていることを特徴とする。
【００１２】
請求項３の発明は、請求項１または請求項２の発明において、前記設定テーブルには、前記同期制御命令の実行時に算出される演算値を格納する領域が、前記設定値を格納する領域に連続した領域として設けられていることを特徴とする。
【００１３】
請求項４の発明は、請求項１または請求項２の発明において、前記設定テーブルには、前記同期制御命令の実行時に検出されるエラーの有無に対応したエラーコードを格納する領域が、前記設定値を格納する領域に連続した領域として設けられていることを特徴とする。
【００１４】
請求項５の発明は、請求項１ないし請求項４の発明において、前記加速期間および前記減速期間においてモータの速度が一定加速度で連続的に変化する周波数を演算値として求めることを特徴とする。
【００１５】
請求項６の発明は、請求項１ないし請求項４の発明において、前記設定テーブルに設定される設定値として加速度比率を含み、前記加速期間および前記減速期間においてモータの速度が加速度比率に従って連続的に変化する周波数を演算値として求めることを特徴とする。
【００３１】
【発明の実施の形態】
本発明は、基本的にはシーケンスプログラムを実行するプロセッサを備えるプログラマブルコントローラにおいて、モータ制御を行うための専用ユニットを用いることなく複数のモータの同期制御を可能とするものである。そこで、シーケンスプログラムに記述可能な命令として同期制御用の命令を新たに設け、さらにシーケンスプログラムを実行するプロセッサを備えた装置において同期制御用の命令を実行する構成を採用している。また、シーケンスプログラムを実行するプロセッサを備えた装置には、同期制御に必要な各種パラメータを登録するための設定テーブルも設けてある。
【００３２】
以下に説明する実施形態では、従来構成と同様に電源ユニット２などに組み合わせて用いるＣＰＵユニット１において同期制御用の命令を実行する例を示す。ＣＰＵユニット１は、図３２に示すように、シーケンスプログラムを実行するためのプロセッサを含むマイコン（プロセッサのほか、システムプログラムを格納したシステムメモリ、シーケンスプログラムを格納するプログラムメモリ、シーケンスプログラムの実行中に発生するデータを格納するデータメモリなどを備える）１ａを備える。
【００３３】
ところで、プログラマブルコントローラのシーケンスプログラムは、オンオフの入出力や接点の開閉、あるいは論理積演算や論理和演算のような基本的な論理演算などビット処理を中心とした基本命令と、四則演算や比較など各種のデータ処理を行う応用命令とによって記述される。以下の実施形態で説明する複数個のモータの同期制御を行う命令（以下、同期制御命令と呼ぶ）は応用命令としてＣＰＵユニット１に用意される。また、この命令を実行する構成には、図３２（ａ）のように同期制御のための専用の集積回路１ｂを採用することができるが、図３２（ｂ）のように同期制御命令をソフトウェア１ｃで実現し、シーケンスプログラムにおいて同期制御命令の実行が指示されているときにソフトウェア１ｃをマイコン１ａで実行してもよい。ＣＰＵユニット１に同期制御命令をソフトウェア１ｃで組み込む構成を採用すれば、ハードウェアの変更を伴わないから同期制御命令をシステムプログラムの変更程度の作業でＣＰＵユニットに容易に追加することができる。
【００３４】
従来の技術として説明したように、複数個のモータの同期制御を行うには各種パラメータを必要とするから、同期制御命令を設定すると同期制御命令のオペランドとして複数のパラメータが必要である。一方、プログラマブルコントローラのシーケンスプログラムを記述する言語としてはロジカルシンボリック言語やラダー言語が用いられており、とくにラダー言語によって記述されるラダー図の中に多数のパラメータを表記すると可読性が低下し、シーケンスプログラムの流れがわかりにくくなる。そこで、以下に説明する実施形態では同期制御命令に必要なパラメータを設定する設定テーブルを設け、同期制御命令には読み出すべき設定テーブルの位置のみを記述しシーケンスプログラムの可読性を高めている。つまり、同期制御命令の実行時に指定された位置の設定テーブルからパラメータを読み出すことによって、複数個のパラメータを同期制御命令に並記することを不要にしているのである。
【００３５】
（第１実施形態）
本実施形態では、２個のモータの同期制御を行う例であって、図１（ａ）に示すように、同期制御命令のオペレータＦ１７５に対するオペランドを設定テーブルＴｂの先頭番地ＤＴ１０００としてある。この先頭番地ＤＴ１０００によってオペレータＦ１７５は設定テーブルＴｂの位置を知ることができる。設定テーブルＴｂはＣＰＵユニット１に設けたメモリの適宜エリアに設ければよい。設定テーブルＴｂには、図１（ｂ）のように、パラメータとして（制御コード、合成速度、Ｘ軸移動量、Ｙ軸移動量）の４つ組を登録する。つまり、本実施形態の同期制御命令では、従来の技術として説明した初速度と加減速時間とは考慮しない形式としてある。言い換えると、モータの回転開始の直後に回転軸の回転速度が合成速度に達し、モータの回転停止の直前まで回転軸の回転速度が合成速度に保たれると仮定している。ここに、制御コードは必要に応じてフラグなどを設定する領域である。また、図示例の設定テーブルＴｂでは、１つのパラメータごとにメモリ上の２個の連続したアドレス領域を割り当ててあり、ＤＴ１０００を先頭番地とすればＤＴ１００７（＝ＤＴ１０００＋７）が同期制御命令によって読み出される領域の最終番地になる。
【００３６】
従来の技術として説明したように、２個のモータについて同期制御を行う場合には、同期制御ではＸ軸移動量とＹ軸移動量との比率と合成速度とから各モータごとの速度を求めることができるから、本実施形態のようにパラメータとして４つ組を用いることによって、各モータごとにパラメータを設定する場合よりもパラメータの個数を低減することができる。
【００３７】
各モータごとに求められた速度は、設定テーブルＴｂにおいて上述した４つ組のパラメータが設定される領域に連続した領域に書き込まれる。つまり、本実施形態における同期制御命令はメモリ上の８アドレスを用いるから、先頭番地がＤＴ１０００であると、図２に示すように、ＤＴ１０００〜ＤＴ１００７に格納されたパラメータが同期制御命令において用いられる。そこで、各モータごとに求めた速度（以下では、Ｘ軸成分速度およびＹ軸成分速度と呼ぶ）の格納に４アドレスが必要になるとすれば、ＤＴ１００７に続くＤＴ１００８〜ＤＴ１０１１をＸ軸成分速度およびＹ軸成分速度の格納領域に用いる。このように、設定テーブルＴｂに設定されたパラメータから演算によって求めたＸ軸成分速度およびＹ軸成分速度も設定テーブルＴｂに格納すれば、制御中に演算結果を参照することができるのはもちろんのこと、制御後も演算結果の確認が可能になり利便性が高まる。また、設定テーブルＴｂに設定されたパラメータとパラメータから得られた演算結果とをアドレス空間の連続領域に格納することによってＸ軸成分速度およびＹ軸成分速度を読み出すための別途の標識を設定する必要がなく、設定テーブルＴｂの先頭番地（本実施形態ではＤＴ１０００）を用いて抽出することができる。要するに、本実施形態ではメモリのアドレス空間に設定テーブルＴｂとして確保される領域の前半部分は同期制御命令の演算に用いるパラメータとし、後半部分は同期制御命令の実行時の演算によって求められた結果を格納するのである。ただし、Ｘ軸成分速度およびＹ軸成分速度を格納する領域が同期制御命令に用いるパラメータを格納する領域に連続していることは必須ではない。
【００３８】
ところで、設定テーブルＴｂに格納されたパラメータに基づいて各モータごとの速度であるＸ軸成分速度およびＹ軸成分速度を求めたときに、設定テーブルＴｂに設定されたパラメータの大きさによっては、各モータの動作可能範囲を逸脱する可能性がある。たとえば、演算結果として得られた速度が負の値になったり、演算結果として得られた速度がモータの仕様により許容されている最大速度を越える可能性がある。また、場合によっては演算自身を行えない場合（たとえば、０での除算など）もある。そこで、このようにモータの動作可能範囲を逸脱するような演算結果が得られる場合や演算が行えない場合には、設定テーブルＴｂに設定されているパラメータに不具合があることを報知するとともに、原因の特定を容易にするために、設定テーブルＴｂにエラーコードを書き込む。エラーコードは、図３に示すように、Ｘ軸成分速度およびＹ軸成分速度の格納領域に連続する領域に書き込むのが望ましい。
【００３９】
表１にエラーコードの設定例を示す。ただし、エラーコードにおいて数字に付随する「Ｈ」は数字が１６進数であることを示している。
【００４０】
【表１】
0003852572.tif 000002
【００４１】
なお、エラーコードを格納する領域は、Ｘ軸成分速度およびＹ軸成分速度と同様に、設定テーブルＴｂにおいてＸ軸成分速度およびＹ軸成分速度に連続する領域とするのが望ましい。つまり、エラーコードも同期制御命令を実行する際に得られる演算結果の一種であるから、設定テーブルＴｂの後半部分に格納するのである。このようにすれば、エラーコードを読み出すための別途の標識を設定する必要がなく、設定テーブルＴｂの先頭番地（本実施形態ではＤＴ１０００）を用いて抽出することができる。ただし、エラーコードを格納する領域がＸ軸成分速度およびＹ軸成分速度を格納する領域に連続していることは必須ではない。
【００４２】
しかして、本実施形態における同期制御命令をシーケンスプログラムに記述しておけば、この同期制御命令を実行するときに設定テーブルＴｂが読み出され、設定テーブルＴｂに登録されたパラメータを用いて各モータごとの速度が求められ、各モータを駆動するためのパルス列の周波数が決定される。たとえば、図１（ａ）に示す例では、同期制御命令Ｆ１７５を接点Ｒ０と接続してあり、接点Ｒ０がオンになると同期制御命令Ｆ１７５が実行されるようにしてある。
【００４３】
本実施形態の構成では、従来構成のようにモータを制御するための専用ユニットを設けずにＣＰＵユニット１において同期制御命令の実行を可能としているから、２個のモータの同期制御を行うシステムを容易かつ安価に構築することができる。たとえば、図４に示すように、ＣＰＵユニット１に入出力ユニットのような増設ユニット４を付加するだけで、モータの制御用の専用ユニットを付加することなく２個のモータの同期制御が可能になる。なお、図示例では電源ユニットは図示を省略してある。
【００４４】
なお、本実施形態においては２個のモータについて同期制御を行う例を示したが、３個以上のモータの同期制御を行う場合には３個以上のモータに関して同様の命令を設定し、当該命令に対応した設定テーブルを設ければよい。また、上述した実施形態では各モータを駆動する速度として求めたＸ軸成分速度およびＹ軸成分速度と、同期制御命令の実行に伴って生じたエラーコードとを設定テーブルＴｂに格納する例を示したが、設定テーブルＴｂへのエラーコードの格納を省略した同期制御命令、あるいは設定テーブルＴｂへのＸ軸成分速度およびＹ軸成分速度の格納を省略した同期制御命令を用意してもよい。
【００４５】
（第２実施形態）
第１実施形態では、従来の技術として説明した加速期間および減速期間を設けない制御例を示したが、図５に示すように、加速期間Ｔ１および減速期間Ｔ３を設ける場合には、初速度および加減速時間を各モータに指示しなければならない。ただし、本実施形態では回転停止直前の速度を初速度と一致させ、加速期間Ｔ１と減速期間Ｔ３との長さをともに加減速時間に一致させている。したがって、本実施形態では、同期制御命令に対応する設定テーブルＴｂに設定すべきパラメータとして、図６に示すように、第１実施形態における合成速度に代えて、合成初速度、合成最高速度、加減速時間を設定する。つまり、本実施形態において設定テーブルＴｂに設定するパラメータは、（制御コード、合成初速度、合成最高速度、加減速時間、Ｘ軸移動量、Ｙ軸移動量）の６つ組になる。同期制御のためのパラメータをこのように設定することによって、加減速を伴う同期制御が可能になる。要するに、本実施形態も第１実施形態と同様に、シーケンスプログラムにおいて同期制御命令を記述する際には、オペレータに付随するオペランドとして設定テーブルＴｂの先頭番地を指定すればよい。
【００４６】
しかして、同期制御命令が実行されると、従来の技術において説明したように、各モータごとの初速度および最高速度であるＸ軸成分初速度、Ｘ軸成分最高速度、Ｙ軸成分初速度、Ｙ軸成分最高速度が求められる。また、第１実施形態において説明したようにエラーコードも抽出される。設定テーブルＴｂに設定されたパラメータに基づく演算によって求められたデータは、設定テーブルＴｂの後半領域に格納される。
【００４７】
ところで、本実施形態では同期制御命令の実行時に設定テーブルＴｂに設定されたパラメータから、各モータごとの周波数レンジおよび加減速段数も演算によって求めている。周波数レンジは初速度に対応するパルス列の周波数と最高速度に対応するパルス列の周波数との周波数差であり、加減速段数は各モータが加減速時間において周波数を切り換える回数である。加減速段数の具体的な決定手順については後述する。
【００４８】
本実施形態の同期制御では、加速期間Ｔ１と減速期間Ｔ３とにおいてそれぞれ加速度を一定とし、かつ加速期間Ｔ１と減速期間Ｔ３とにおいて加速度の絶対値を等しく設定する。ただし、実際の制御にあたっては加速度を連続的に変化させるのは困難であるから、図７に示すように、速度切替時間Δｔａごとに速度を一定の刻み幅（以下では、加速度Δｆという）ずつ変化させる。速度切替時間Δｔａは適宜に設定することができるが、本実施形態では、設定テーブルＴｂに格納されている合成初速度（周波数）Ｆｍｉｎを用いて、速度切替時間Δｔａを１／Ｆｍｉｎという形で設定する。速度切替時間Δｔａが決まれば、設定テーブルＴｂに格納された加減速時間を速度切替時間Δｔａで除算することによって加速期間Ｔ１または減速期間Ｔ３において速度を変化させる加減速段数を求めることができる。つまり、設定テーブルＴｂに格納されている合成初速度Ｆｍｉｎと合成最高速度Ｆｍａｘとの差である周波数レンジを上述のようにして求めた加減速段数によって除算すれば、速度切替時間Δｔａごとに変化させる速度の加速度Δｆを決定することができる。
【００４９】
図６に示した本実施形態の設定テーブルＴｂのように各モータごとに周波数レンジおよび加減速段数を求めるには、上述した演算を各モータごとに行えばよい。すなわち、同期制御命令が実行されると第１実施形態と同様に設定テーブルＴｂに設定されたパラメータを読み込み、これらのパラメータに基づいて上述した演算を行ってＸ軸成分初速度、Ｘ軸成分最高速度、Ｙ軸成分初速度、Ｙ軸成分最高速度のほか、Ｘ軸周波数レンジ、Ｙ軸周波数レンジ、Ｘ軸加減速段数、Ｙ軸加減速段数、エラーコードを決定し、これらのデータを設定テーブルＴｂに格納する。また、求めたデータを用いて各モータを制御する。
【００５０】
ところで、各モータごとの加減速段数は以下の手順で求めることができる。ここでは、各モータのうち初速度が最小であるモータについて初速度（周波数）の逆数を加減速段数として求め、この加減速段数に基づいて各モータごとのデータを演算する例を説明する。
【００５１】
Ｘ軸とＹ軸との２軸について直線補間制御を行うものとして、設定テーブルＴｂには、図８に示すように、（制御コード、合成初速度、合成最高速度、加減速時間、Ｘ軸移動量、Ｙ軸移動量）の６つ組をパラメータとして設定する。ただし、以下では、合成初速度、合成最高速度、加減速時間、Ｘ軸移動量、Ｙ軸移動量をそれぞれＦｍｉｎ、Ｆｍａｘ、ｔａ、ｐｓｘ、ｐｓｙで表す。
【００５２】
また、これらのパラメータに対して同期制御命令の実行に伴って求められるデータとして、各モータごとの初速度、最高速度、周波数レンジ、加減速段数、加速度、速度切替時間、加速動作累積時間、実出力時間、出力時間誤差があり、両モータについてパラメータから共通に求められるデータには加減速段数、エラーコード、周波数切替時間がある。つまり、Ｘ軸成分初速度、Ｘ軸成分最高速度、Ｙ軸成分初速度、Ｙ軸成分最高速度、Ｘ軸周波数レンジ、Ｙ軸周波数レンジ、Ｘ軸加減速段数、Ｙ軸加減速段数、Ｘ軸加速度、Ｙ軸加速度、Ｘ軸速度切替時間、Ｙ軸速度切替時間、Ｘ軸加速動作累積時間、Ｙ軸加速動作累積時間、Ｘ軸実出力時間、Ｙ軸実出力時間、Ｘ軸出力時間誤差、Ｙ軸出力時間誤差があり、以下ではそれぞれｆｘｍｉｎ，ｆｘｍａｘ，ｆｙｍｉｎ，ｆｙｍａｘ，ｘｒａｎｇ，ｙｒａｎｇ，ｘｄａｎｓｕ，ｙｄａｎｓｕ，Δｆｘ，Δｆｙ，Δｔａｘ，Δｔａｙ，ｔｘａｄｄ，ｔｙａｄｄ，ｔｘｒ，ｔｙｒ，ｔｘｇ，ｔｙｇで表す。両モータについてパラメータから共通に求められる加減速段数、エラーコード、周波数切替時間は、それぞれｄａｎｓｕ，ｅｒｒｃｏｄｅ，Δｔａで表す。なお、各値の意味については後述する。
【００５３】
しかして、同期制御命令が実行されると、まずＸ軸成分初速度およびＹ軸成分初速度（ｆｘｍｉｎ，ｆｙｍｉｎ）と、Ｘ軸成分最高速度およびＹ軸成分最高速度（ｆｘｍａｘ，ｆｙｍａｘ）とが求められる。ここで、図９に示すように、Ｘ軸成分初速度ｆｘｍｉｎがＹ軸成分初速度ｆｙｍｉｎより小さい場合、つまりＸ軸加減速段数ｘｄａｎｓｕがＹ軸加減速段数ｙｄａｎｓｕより少ない場合には、Ｘ軸成分初速度ｆｘｍｉｎの周期１／ｆｘｍｉｎであるＸ軸速度切替時間Δｔｘａを各モータに共通の速度切替時間Δｔａとして用いる。つまり、加減速時間ｔａに対して加減速段数ｄａｎｓｕを、ｄａｎｓｕ＝ｔａ／Δｔａ（＝ｔａ／Δｔａｘ）とし、以下の形でＸ軸加速度ΔｆｘおよびＹ軸加速度Δｆｙを求める。
Δｆｘ＝（ｆｘｍａｘ−ｆｘｍｉｎ）／ｄａｎｓｕ
Δｆｙ＝（ｆｙｍａｘ−ｆｙｍｉｎ）／ｄａｎｓｕ
その結果、図１０に階段状として示しているように、加速期間Ｔ１における両モータの速度切替のタイミングが一致することになる。
【００５４】
ここで、加減速段数ｄａｎｓｕは正の整数値でなければならないが、上述のようにして求めた加減速段数は整数値にならずに誤差を生じる。そこで、まずＸ軸成分初速度ｆｘｍｉｎとＹ軸成分初速度ｆｙｍｉｎとについて速度切替時間Δｔａにもっとも近い時間で出力されるパルス数を求め、求めたパルス数で実際にパルス列を出力するＸ軸実出力時間ｔｘｒおよびＹ軸実出力時間ｔｙｒを求める。この演算により生じた誤差分は次段の速度に対する速度切替時間Δｔａに対して加減算する。たとえば、速度切替時間Δｔａに対するＸ軸成分の誤差であるＸ軸出力時間誤差ｔｘｇと、Ｙ軸成分の誤差であるＹ軸出力時間誤差ｔｙｇとを速度切替時間Δｔａに加算した時間Δｔａ＋ｔｘｇ，Δｔａ＋ｔｙｇにもっとも近い時間で出力されるパルス数をｆｘｍｉｎ＋Δｆｘ、ｆｙｍｉｎ＋Δｆｙとについて算出する。このパルス数に対してパルス列を実際に出力する実出力時間を求め、この演算により生じた誤差分は、さらに次段の速度に対する速度切替時間Δｔａに対して加減算する。以下、同様にして誤差分を補正するように各速度でのパルス数を調節する。
【００５５】
実際の演算では、図１１にＸ軸成分の例として示すように、ある速度について２個のパルスを出力する実出力時間ｔｘｒがΔｔａ−Δｔｘｇ１（Δｔｘｇ１は誤差分）になり、３個のパルスを出力する実出力時間ｔｘｒがΔｔａ＋ｔｘｇ２（Δｔｘｇ２は誤差分）になるとすれば、ｔｘｇ１＜ｔｘｇ２のときにはＸ軸出力時間誤差ｔｘｇは−ｔｘｇ１になるから、ｔｘｒ＝Δｔａ−ｔｘｇ１とし、ｔｘｇ１＞ｔｘｇ２のときにはＸ軸出力時間誤差ｔｘｇはｔｘｇ２になるから、ｔｘｒ＝Δｔａ＋ｔｘｇ２とする。図示例ではｔｘｇ１＜ｔｘｇ２であるから、Ｘ軸実出力時間ｔｘｒとしてΔｔａ−ｔｘｇ１を用い、この速度でのパルス数を決定する。また、設定テーブルＴｂのＸ軸出力時間誤差ｔｘｇの値は−ｔｘｇ１になる。
【００５６】
次段の速度では、図１２にＸ軸成分の例として示すように、Δｔａ＋ｔｘｇ（＝Δｔａ＋ｔｘｇ１）に対するパルス数を求め、図１１に示した演算と同様の演算を行って誤差分Δｔｘｇ１′，Δｔｘｇ２′を求め、ｔｘｇ１′＜ｔｘｇ２′のときにはＸ軸出力時間誤差ｔｘｇとしてｔｘｇ１′を採用し、Ｘ軸実出力時間ｔｘｒをｔｘｒ＝Δｔａ＋ｔｘｇ−ｔｘｇ１′とし、ｔｘｇ１′＞ｔｘｇ２′のときにはＸ軸出力時間誤差ｔｘｇとしてｔｘｇ２′を採用し、Ｘ軸実出力時間ｔｘｒをｔｘｒ＝Δｔａ＋ｔｘｇ＋ｔｘｇ２′とする。また、この速度でのパルス数をＸ軸実出力時間ｔｘｒから決定するのである。図示例ではｔｘｇ１′＜ｔｘｇ２′であるから、Ｘ軸実出力時間ｔｘｒとしてΔｔａ＋ｔｘｇ１−ｔｘｇ１′を用い、この速度でのパルス数を決定する。また、この時点で設定テーブルＴｂのＸ軸出力時間誤差ｔｘｇの値は−ｔｘｇ１′になる。
【００５７】
上述のような補正演算を繰り返すことによって、両モータの最高速到達時間を一致させ、加減速を伴う直線補間動作を実現する。
【００５８】
なお、本実施形態では、加速期間Ｔ１と減速期間Ｔ３との長さを等しく設定しているが、加速期間Ｔ１と減速期間Ｔ３との長さは異ならせることが可能であり、また初速度と最終速度とを一致させているが、初速度と最終速度とが一致することも必須条件ではない。ただし、加速期間Ｔ１と減速期間Ｔ３とが異なる場合や初速度と最終速度とが異なる場合には、それぞれを設定することが必要になり、さらに設定された各パラメータを用いて加速期間Ｔ１と減速期間Ｔ３とにおける周波数レンジや加減速段数をそれぞれ求めることが必要になる。また、第１実施形態と同様に、設定テーブルＴｂに設定されたパラメータを用いた演算によって求めたデータは、あらかじめ設定されたパラメータの格納領域に連続した領域に格納することも必須ではなく、メモリ上で別に設けた領域に格納してもよい。ただし、設定されたパラメータと演算によって求めたデータとの格納領域を連続させておけば、演算によって求めたデータをメモリから抽出するために別途に標識を設定する必要がない。他の構成および動作は第１実施形態と同様である。
【００５９】
（第３実施形態）
本実施形態は、第２実施形態と同様に加速期間Ｔ１および減速期間Ｔ３を設ける例を示す。ただし、第２実施形態では加速期間Ｔ１および減速期間Ｔ３において各モータの加減速段数を一致させていたが、本実施形態では各モータごとに加減速段数を設定してある。
【００６０】
すなわち、第２実施形態ではＸ軸加減速段数ｘｄａｎｓｕとＹ軸加減速段数ｙｄａｎｓｕとの少ないほうに基づいて速度切替時間Δｔａを設定していたが、本実施形態ではＸ軸成分初速度ｆｘｍｉｎの周期１／ｆｘｍｉｎをＸ軸速度切替時間Δｔａｘに用い、Ｙ軸成分初速度（ｆｙｍｉｎ）の周期１／ｆｙｍｉｎをＹ軸速度切替時間Δｔａｙに用いている。したがって、加減速時間ｔａに対して、各モータごとに加減速段数を求めるのであって、Ｘ軸加減速段数ｘｄａｎｓｕはｘｄａｎｓｕ＝ｔａ／Δｔａｘとなり、Ｙ軸加減速段数ｙｄａｎｓｕはｙｄａｎｓｕ＝ｔａ／Δｔａｙとして求められる。
【００６１】
その結果、Ｘ軸加速度Δｆｘおよびｙ軸加速度Δｆｙは、以下の形で求められる。
Δｆｘ＝（ｆｘｍａｘ−ｆｘｍｉｎ）／ｘｄａｎｓｕ
Δｆｙ＝（ｆｙｍａｘ−ｆｙｍｉｎ）／ｙｄａｎｓｕ
Ｘ軸加速度Δｆｘおよびｙ軸加速度Δｆｙを求めた後の処理手順は第２実施形態と同様であるから説明を省略する。
【００６２】
（第４実施形態）
本実施形態は、第３実施形態と同様に、Ｘ軸加速度Δｆｘおよびｙ軸加速度Δｆｙを、Ｘ軸速度切替時間ΔｔａｘとＹ軸速度切替時間Δｔａｙとに基づいてそれぞれ求めるものであって、Ｘ軸成分初速度ｆｘｍｉｎについてＸ軸速度切替時間Δｔａｘにもっとも近い時間で出力されるパルス数を求め、Ｙ軸成分初速度ｆｙｍｉｎについてＹ軸速度切替時間Δｔａｙにもっとも近い時間で出力されるパルス数を求める。また、各モータごとに求めたパルス数で実際にパルス列を出力するＸ軸実出力時間ｔｘｒおよびＹ軸実出力時間ｔｙｒを求める。ここで、求めたＸ軸実出力時間ｔｘｒおよびＹ軸実出力時間ｔｙｒに各モータの加速動作累積時間ｔｘａｄｄ，ｔｙａｄｄに加算する。Ｘ軸加速動作累積時間ｔｘａｄｄおよびＹ軸加速動作累積時間ｔｙａｄｄは、加速期間Ｔ１または減速期間Ｔ３の開始からの経過時間を意味する。したがって、加速期間Ｔ１ないし減速期間Ｔ３の全時間を意味する加減速時間ｔａからＸ軸加速動作累積時間ｔｘａｄｄまたはＹ軸加速動作累積時間ｔｙａｄｄを減算した時間が、加速期間Ｔ１または減速期間Ｔ３における残り時間を意味になる。つまり、各モータについて加速期間Ｔ１ないし減速期間Ｔ３の残り時間は、それぞれｔａ−ｔｘａｄｄ，ｔａ−ｔｙａｄｄになる。
【００６３】
このように、加速期間Ｔ１ないし減速期間Ｔ３の残り時間を求めると、以下の演算を行うことによって、加速期間Ｔ１ないし減速期間Ｔ３における残りの加減速段数でＸ軸速度切替時間ΔｔａｘおよびＹ軸速度切替時間Δｔａｙをそれぞれ補正することができる。
Δｔａｘ＝（ｔａ−ｔｘａｄｄ）／（ｘｄａｎｓｕ−１）
Δｔａｙ＝（ｔａ−ｔｙａｄｄ）／（ｙｄａｎｓｕ−１）
Ｘ軸速度切替時間ΔｔａｘおよびＹ軸速度切替時間Δｔａｙを求めた後には、再演算して求めたＸ軸速度切替時間ΔｔａｘおよびＹ軸速度切替時間Δｔａｙにもっとも近い時間で出力されるパルス数をｆｘｍｉｎ＋Δｆｘ、ｆｙｍｉｎ＋Δｆｙについて算出する。このパルス数に対してパルス列を実際に出力する実出力時間を各モータについてそれぞれ求め、第２実施形態と同様の補正演算を行う。
【００６４】
上述した演算の具体例を図１３にＸ軸を例として示す。ここに、ｔｘｇ１＜ｔｘｇ２のときにはＸ軸実出力時間ｔｘｒをｔｘｒ＝Δｔａ−ｔｘｇ１とし、ｔｘｇ１＞ｔｘｇ２のときにはＸ軸実出力時間ｔｘｒをｔｘｒ＝Δｔａ＋ｔｘｇ２として求め、この速度でのパルス数を決定する。
【００６５】
次段の速度の開始時点では、Ｘ軸加速動作累積時間ｔｘａｄｄはｔｘｒであるから、加速期間Ｔ１の残り時間は、図１４に示すように、ｔａ−ｔｘｒになる。ここで、Ｘ軸加減速段数ｘｄａｎｓｕがｎであるとすれば、残り段数はｎ−１であるから、残り時間を残り段数で除算することによって、周波数切替時間Δｔａを再演算する。つまり、Δｔａ＝（ｔａ−ｔｘｒ）／（ｎ−１）になる。このような補正演算を繰り返すことによって、両モータの最高速到達時間を一致させるように加減速を伴う直線補間動作を実現することができる。他の構成および動作は第２実施形態と同様である。
【００６６】
（第５実施形態）
本実施形態は、加速期間Ｔ１および減速期間Ｔ３において、パルス数を（１／２）Δｆずつ加算する補正を行いながら各モータの速度を制御するものである。
【００６７】
すなわち、設定テーブルＴｂに格納されているＸ軸成分初速度ｆｘｍｉｎおよびＹ軸成分初速度ｆｙｍｉｎ、Ｘ軸成分最高速度ｆｘｍａｘおよびＹ軸成分最高速度ｆｙｍａｘが与えられると、各モータの加減速時に出力されるパルス数は、図１５における斜線部の面積として表すことができる。ここに、図示例では各成分を分けずに記述している（つまり、ｆｍｉｎはｆｘｍｉｎまたはｆｙｍｉｎと読み替え、ｆｍａｘはｆｘｍａｘまたはｆｙｍａｘと読み替える）。
【００６８】
ところで、加速期間Ｔ１ないし減速期間Ｔ３においてはモータの速度を連続的に変化させるのが理想的であって、理想的な時間変化は図１６における右上がりの直線Ｌ０によって表すことができる。これに対して、実際の制御においては速度が段階的に変化するものであって、上述した各実施形態で求めた加速度Δｆ（つまり、Ｘ軸加速度Δｆｘ、Ｙ軸加速度Δｆｙ）ずつ速度を変化させる際に、図１６に階段状に示しているように速度を変化させるとすれば、斜線部についてはパルス数が不足することになる。
【００６９】
そこで、本実施形態では、図１７に示すように、加速期間Ｔ１の開始時点では初速度に（１／２）Δｆを加算し、その後は、最高速度に到達する１段階前（加減速段数をｎ段とすると（ｎ−１）段）までの加速度をΔｆとし、最終段の加速度は（１／２）Δｆとすることによって、各速度において理想のパルス数に対して超過分と不足分が等しくなり（つまり、図１７において１段階の速度について示すと、斜線部Ａ１と斜線部Ａ２の面積が等しくなり）、結果的に、速度を段階的に変化させながらも図１８に斜線部で示すように、図１５に示した斜線部の面積に等しい面積となるように制御することができ、モータを制御するパルス列のパルス数を理想値にすることができる。
【００７０】
なお、本実施形態は、上述した第２実施形態、第３実施形態、第４実施形態とのいずれとも組み合わせることが可能であり、これらを組合せることによって、加減速を伴う直線補間制御において各モータの最高速到達時間を一致させることができる。
【００７１】
（第６実施形態）
第２実施形態ないし第５実施形態では、加速期間Ｔ１および減速期間Ｔ２において加速度を一定に保つように制御していたが、本実施形態では、図１９に示すように、初速度付近と最高速度付近とでは加速度が小さくなるように制御する例を示す。
【００７２】
具体的には図２０に示すように、第２実施形態において説明した速度切替時間Δｔａごとの速度の加速度Δｆを、初速度付近と最高速度付近とでは他の期間よりも小さくなるようにしてある。このような設定は、加速度Δｆが図２０に示すパターンで変化するように加速度の変化率としての加速度比率を設定テーブルＴｂに設定値として設定し、加速度比率に基づいて加速度Δｆ１，Δｆ２，……，Δｆ（ｎ−１），Δｆｎを設定すればよい。他の構成および動作は第２実施形態と同様である。
【００７３】
（参考例１）
上述した各実施形態では複数個のモータを用いて直線補間制御を行う例を示したが、本例は２個のモータを用いて円弧補間制御を行う例を示す。つまり、X−YテーブルのＸ軸モータとＹ軸モータとを同期制御したときにテーブルの軌跡が円弧上を通る制御を行う例を示す。
【００７４】
この種の制御では、たとえば図２１に示すように、開始位置Ｐ１から終点位置Ｐ２までの移動軌跡Ｔｒが円弧上を通るように制御するのであって、移動軌跡Ｔｒを含む円弧を規定することが必要である。円弧を規定する方法としては、終点位置Ｐ２のほかに、移動軌跡Ｔｒの上で開始位置Ｐ１および終点位置Ｐ２とは異なる位置であって通過すべき位置（通過点位置）Ｐｍを与える方法と、終点位置Ｐのほかに移動軌跡Ｔｒを含む円弧の中心Ｏを与える方法とがある。
【００７５】
通過点位置Ｐｍを与えることによって円弧を規定する場合には、図２２に示すように、制御コード、合成速度のほかに、Ｘ軸終点位置、Ｙ軸終点位置、Ｘ軸通過点位置、Ｙ軸通過点位置を設定テーブルＴｂに設定する。同期制御命令では、これらの情報に基づいて、移動軌跡Ｔｒを含む円弧の半径ｒ、Ｘ軸中心位置、Ｙ軸中心位置を求める。
【００７６】
一方、移動軌跡Ｔｒを含む円弧の中心Ｏを与えることによって円弧を規定する場合には、図２２に示すように、制御コード、合成速度のほかに、Ｘ軸終点位置、Ｙ軸終点位置、Ｘ軸中心位置、Ｙ軸中心位置を設定テーブルＴｂに設定する。同期制御命令では、これらの情報に基づいて、移動軌跡Ｔｒを含む円弧の半径ｒを求める。このようにして移動軌跡Ｔｒを含む円弧が決定された後には、決定された円弧状を通るように各モータの速度を制御する。本例では、移動軌跡Ｔｒを上述したどちらのデータによっても指定することを可能としてあり、同期制御命令の実行時には設定テーブルＴｂに設定される制御コードによってどちらの演算を行うかが選択されるようになっている。
【００７７】
本例における同期制御命令の処理手順を図２４に示す。円弧補間制御を行う同期制御命令の実行が開始されると、まずモータを制御するパルス列を出力しているか否かが判定される（Ｓ１）。同期制御命令の実行を開始した時点ではパルス列を出力していないから、設定値の論理的矛盾の有無を確認し（Ｓ２）、矛盾があればエラー処理を行い（Ｓ３）、矛盾がなければ、設定テーブルＴｂの内容から上述した２種類のデータのどちらが設定されているかを判定し（Ｓ４）、通過点位置Ｐｍの指定による場合には半径と中心位置とを求め（Ｓ５）、中心位置の指定による場合には半径を求める（Ｓ６）。このようにして終点位置と中心位置と半径とが決定されると、パルス列の出力を開始する（Ｓ７）。パルス列が出力されている間には（Ｓ１）、各モータにそれぞれ与えたパルス数（つまり現在位置）を確認し（Ｓ８）、終点位置に達していなければ（Ｓ９）、各モータごとに与える速度（周波数）を演算して（Ｓ１０）、速度を変化させる（Ｓ１１）。また、終点位置に達したときには（Ｓ９）、パルス列の出力を停止して同期制御命令の実行を終了する（Ｓ１２）。
【００７８】
なお、本例では移動軌跡Ｔｒを含む円弧を規定するデータとして、終点位置と通過点位置または終点位置と中心位置を設定テーブルＴｂに設定しているが、円弧を規定することが可能なデータの組合せであれば、他のデータを用いることも可能である。他の構成および動作は第１の実施の形態と同様である。
【００７９】
（参考例２）
ところで、参考例１のように円弧補間制御を行うときには、各モータに与えたパルス数によって現在位置が確認され、現在位置に応じて各モータに与えるパルス列の周波数（速度）が調節されるのであるが、各モータに与えるパルス列の周波数が比較的高く、その一方で位置確認の時間間隔が比較的長くなるときは、図２５に示すように、移動軌跡Ｔｒが規定した円弧Ｌ２に対して外に膨らむことになる。
【００８０】
このような不具合を抑制するために、同期制御命令の実行中には規定した円弧Ｌ２の中心位置と現在位置との距離を求めるとともに求めた距離と半径とを比較し、両者の差に基づいて各モータに与えるパルス列の周波数（速度）を補正することにより、移動軌跡Ｔｒを規定した円弧Ｌ２から大きく逸脱させることなくモータを制御することが可能になる。
【００８１】
すなわち、本例では、図２６に示すように、図２４に示した各モータごとの速度を求めるステップＳ１０の次に、上述のようにして求めた誤差分に対する速度の補正を行う処理（Ｓ１３）を追加しているのであって、このような速度補正を行うことにより、移動軌跡Ｔｒが規定した円弧Ｌ２からの逸脱を抑制することが可能になる。他の構成および動作は参考例１と同様である。
【００８２】
（参考例３）
参考例２では、移動軌跡Ｔｒが規定の円弧Ｌ２から大きく逸脱するのを防止するために、中心位置と現在位置との距離を半径と比較する構成を採用しているが、本例では、図２７に示すように、中心位置ＯからＸ軸方向およびＹ軸方向に半径ｒだけ離れた４本の直線に囲まれる領域内を移動軌跡Ｔｒの許容範囲としてある。要するに、移動軌跡Ｔｒの位置に対する限界値を設定してある。
【００８３】
本例における同期制御命令では、図２８に示すように、図２６に示した参考例２の処理手順とは、終点位置か否かの判定（Ｓ９）の後に現在位置と限界値とを比較する処理（Ｓ１４）と、さらに限界値から逸脱している（許容範囲外である）場合には限界値を逸脱している側のモータを一旦停止させる処理（Ｓ１５）とを追加した点で相違する。すなわち、現在位置が限界値以内であれば、各モータについて速度計算（Ｓ１０）と速度補正（Ｓ１３）と速度変更（Ｓ１１）を行い動作を継続する。また、現在位置が限界値に達した場合には限界値に達した側のモータに対するパルス列の出力を一旦停止した後、少なくともＸ軸方向およびＹ軸方向の限界値以内の軌跡となるように円弧補間を行う。他の構成および動作は参考例２と同様である。
【００８４】
（参考例４）
参考例３で、現在位置が限界値に達した場合は、限界値に達した側のモータを一旦停止させている。ところで、設定された移動軌跡Ｔｒが含まれる円弧Ｌ２の中心位置Ｏを原点とする座標系を考えると、図２９に示すように移動軌跡Ｔｒを含む平面を４つの象限に分けることができる。
【００８５】
いま、移動軌跡Ｔｒが第１象現から第４象現に移行するものとして、第１象限において現在位置が限界値に達したモータに対してパルス列の出力を再開するタイミングを象現が変化したときにしてある。つまり、第１象現で限界値に達する可能性があるのはＸ軸のみと考えられるから、限界値に達した時点でＸ軸のモータに対するパルス列の出力を停止するが、Ｙ軸のモータに対するパルス列の出力は継続されるから、Ｘ軸のモータを停止している状態でも移動軌跡Ｔｒは第４象現にはいることになる。このように、Ｘ軸のモータに対するパルス列の出力を再開することで、円弧Ｌ２からの移動軌跡Ｔｒのずれを抑制することができる。他の構成および動作は参考例３と同様である。
【００８６】
（参考例５）
本例は、図３０に示すように、円弧補間制御を連続的に行う場合の例であって、２個の円弧Ｌ１２，Ｌ２２のうちの一方の円弧Ｌ１２の終点位置Ｐ１２を他方の円弧Ｌ２２の開始位置Ｐ２１に一致させている。
【００８７】
このような制御を行うには、一方の円弧Ｌ１２の終点位置Ｐ１２においてモータの動作を停止させることなく次の円弧Ｌ２１の開始位置Ｐ２１からの円弧補間制御を実行するのが望ましい。そこで、本例では設定テーブルＴｂの制御コードに、動作継続フラグを設定可能にしてある。動作継続フラグは、たとえば１であれば動作の継続を意味し、０であれば停止を意味する。停止の場合には同期制御命令の実行を開始した円弧Ｌ２１，Ｌ２１の終点位置で停止させる。
【００８８】
図３１において動作継続フラグが０であるときには、一方の円弧Ｌ１２の終点位置Ｌ１２で停止する。また、動作継続フラグが１であるときには、同期制御命令の実行を開始した後に、終点位置Ｌ１２に到達する前に新たな設定テーブルＴｂを作成することによって連続動作を実現している。図３１に示すように、本例では終点位置の判定の後（Ｓ９）、移動軌跡Ｔｒが連続して他の円弧Ｌ２２を通ること（連続モード）を要求されているか否かを判断し（Ｓ１６）、連続モードが要求されているときには設定テーブルＴｂに基づいて最終位置を再設定する（Ｓ１７）。また、連続モードではないときには（Ｓ１６）、パルス列の出力を停止する（Ｓ１８）。他の構成および動作は参考例１と同様である。、
【００８９】
【発明の効果】
請求項１の発明の構成によれば、複数個のモータの同期制御が別途に専用ユニットを用いることなく実現可能になる。しかも、同期制御に必要な設定値は設定テーブルに格納するから、シーケンスプログラムをラダープログラムによって作成する場合にも可読性が低下しないという利点がある。また、複数のモータの動きを合成した動作軌跡が直線になるような直線補間制御が行え、かつ加減速を伴う制御が可能になる。さらに、専用のハードウェアを用いることなくシーケンスプログラムを実行するマイコンのシステムソフトで同期制御が行えるから、プログラマブルコントローラに同期制御命令を安価かつ容易に組み込むことができる。加えて、各モータごとにパルス列の周波数を変化させるタイミングを異ならせているから、全体として滑らかな速度変化になるような制御が可能になる。
【００９０】
請求項２の発明は、請求項１の発明において、シーケンスプログラムを実行するＣＰＵユニットと、他のユニットとを接続して構成されるプログラマブルコントローラであって、前記同期制御命令がＣＰＵユニットにおいて実行されるとともにＣＰＵユニットに設定テーブルが設けられているものであり、ＣＰＵユニットによって同期制御命令を実行するから、他に同期制御用のユニットが不要であって、簡単かつ安価に同期制御が実現可能になる。
【００９１】
請求項３の発明は、請求項１または請求項２の発明において、前記設定テーブルには、前記同期制御命令の実行時に算出される演算値を格納する領域が、前記設定値を格納する領域に連続した領域として設けられているものであり、同期制御を実現するために設定値に基づいて演算値が算出されると演算値が設定テーブルにおいて設定値に連続する領域に格納されるから、設定値と演算値との関係を確認するのが容易である。
【００９２】
請求項４の発明は、請求項１または請求項２の発明において、前記設定テーブルには、前記同期制御命令の実行時に検出されるエラーの有無に対応したエラーコードを格納する領域が、前記設定値を格納する領域に連続した領域として設けられているものであり、設定範囲外の設定値が設定テーブルに格納されたり、演算不可となったりすると、設定テーブルに格納されたエラーコードによってエラー内容を容易に判断することができる。
【００９６】
請求項５の発明は、請求項１ないし請求項４の発明において、前記加速期間および前記減速期間においてモータの速度が一定加速度で連続的に変化する周波数を演算値として求めるから、一定加速度の加減速動作を伴う直線補間制御を実現できる。
【００９７】
請求項６の発明は、請求項１ないし請求項４の発明において、前記設定テーブルに設定される設定値として加速度比率を含み、前記加速期間および前記減速期間においてモータの速度が前記加速度比率に従って連続的に変化する周波数を演算値として求めるから、加速度が連続的に変化するような加減速動作を伴う直線補間制御を実現できる。
【図面の簡単な説明】
【図１】  本発明の第１実施形態の概念説明図である。
【図２】  同上に用いる設定テーブルを示す図である。
【図３】  同上に用いる設定テーブルを示す図である。
【図４】  同上によるシステム構成例を示すブロック図である。
【図５】  本発明の第２実施形態の動作説明図である。
【図６】  同上に用いる設定テーブルを示す図である。
【図７】  同上の動作説明図である。
【図８】  同上に用いる設定テーブルを示す図である。
【図９】  同上の動作説明図である。
【図１０】  同上の動作説明図である。
【図１１】  同上の動作説明図である。
【図１２】  同上の動作説明図である。
【図１３】  本発明の第３実施形態を示す動作説明図である。
【図１４】  本発明の第４実施形態を示す動作説明図である。
【図１５】  本発明の第５実施形態を示す動作説明図である。
【図１６】  同上の動作説明図である。
【図１７】  同上の動作説明図である。
【図１８】  同上の動作説明図である。
【図１９】  本発明の第６実施形態を示す動作説明図である。
【図２０】  同上の動作説明図である。
【図２１】  参考例１を示す動作説明図である。
【図２２】  同上に用いる設定テーブルを示す図である。
【図２３】  同上に用いる設定テーブルを示す図である。
【図２４】  同上の動作説明図である。
【図２５】  参考例２を示す動作説明図である。
【図２６】  同上の動作説明図である。
【図２７】  参考例３を示す概念説明図である。
【図２８】  同上の動作説明図である。
【図２９】  参考例４を示す概念説明図である。
【図３０】  参考例５を示す概念説明図である。
【図３１】  同上の動作説明図である。
【図３２】  （ａ）（ｂ）はそれぞれ本発明の基本構成を示すブロック図である。
【図３３】  従来例を示す動作説明図である。
【図３４】  同上の動作説明図である。
【図３５】  同上のブロック図である。
【符号の説明】
１  ＣＰＵユニット
１ａ  マイコン
１ｂ  専用集積回路
１ｃ  ソフトウェア
２  電源ユニット
３  専用ユニット（モータ制御ユニット）
４  増設ユニット
Ｔｂ  設定テーブル
【図１】
0003852572.tif 000003
【図２】
0003852572.tif 000004
【図３】
0003852572.tif 000005
【図４】
0003852572.tif 000006
【図５】
0003852572.tif 000007
【図６】
0003852572.tif 000008
【図７】
0003852572.tif 000009
【図８】
0003852572.tif 000010
【図９】
0003852572.tif 000011
【図１０】
0003852572.tif 000012
【図１１】
0003852572.tif 000013
【図１２】
0003852572.tif 000014
【図１３】
0003852572.tif 000015
【図１４】
0003852572.tif 000016
【図１５】
0003852572.tif 000017
【図１６】
0003852572.tif 000018
【図１７】
0003852572.tif 000019
【図１８】
0003852572.tif 000020
【図１９】
0003852572.tif 000021
【図２０】
0003852572.tif 000022
【図２１】
0003852572.tif 000023
【図２２】
0003852572.tif 000024
【図２３】
0003852572.tif 000025
【図２４】
0003852572.tif 000026
【図２５】
0003852572.tif 000027
【図２６】
0003852572.tif 000028
【図２７】
0003852572.tif 000029
【図２８】
0003852572.tif 000030
【図２９】
0003852572.tif 000031
【図３０】
0003852572.tif 000032
【図３１】
0003852572.tif 000033
【図３２】
0003852572.tif 000034
【図３３】
0003852572.tif 000035
【図３４】
0003852572.tif 000036
【図３５】
0003852572.tif 000037