主軸と従動軸との同期制御を制御周期ごとに実行する同期制御装置であって、主軸と従動軸とが同期を開始する同期開始位置を指定する指定部と、カム曲線を作成するカム曲線作成部と、毎制御周期ごとの前記主軸の位置情報を検出する検出部と、前記同期開始位置までは、前記カム曲線と前記主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、前記同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出する制御部とを備え、前記制御部は、前記算出した速度指令値で前記従動軸を制御する、同期制御装置。前記カム曲線作成部は、前記同期開始位置までの期間における、指定された目標加速度、目標減速度、および目標速度に基づいて、前記カム曲線を作成する、請求項1に記載の同期制御装置。主軸と従動軸との同期制御を制御周期ごとに実行する同期制御方法であって、主軸と従動軸とが同期を開始する同期開始位置を指定するステップと、カム曲線を作成するステップと、毎制御周期ごとの前記主軸の位置情報を検出するステップと、前記同期開始位置までは、前記カム曲線と前記主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、前記同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出するステップと、前記算出した速度指令値で前記従動軸を制御するステップとを備える、同期制御方法。コンピュータに、主軸と従動軸との同期制御を制御周期ごとに実行させる同期制御プログラムであって、主軸と従動軸とが同期を開始する同期開始位置を指定するステップと、カム曲線を作成するステップと、毎制御周期ごとの前記主軸の位置情報を検出するステップと、前記同期開始位置までは、前記カム曲線と前記主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、前記同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出するステップと、前記算出した速度指令値で前記従動軸を制御するステップとを実行させる、同期制御プログラム。コンピュータに、主軸と従動軸との同期制御を制御周期ごとに実行させる同期制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、主軸と従動軸とが同期を開始する同期開始位置を指定するステップと、カム曲線を作成するステップと、毎制御周期ごとの前記主軸の位置情報を検出するステップと、前記同期開始位置までは、前記カム曲線と前記主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、前記同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出するステップと、前記算出した速度指令値で前記従動軸を制御するステップとを実行させる、コンピュータ読み取り可能な記録媒体。しかしながら、特許文献1特許第3452899号公報では、追いかけ動作中は、従動軸が単独で動作している。そのため、追いかけ動作中に主軸の速度が変化した場合には、同期開始位置で同期制御を開始できないという問題がある。これは、特許文献1特許第3452899号公報が解決しようとしている課題は同期開始時の従動軸の機械的衝撃の緩和であって、追いかけ動作時の主軸の速度変化を考慮していないためである。CNCComputerizedNumericallyControlled工作機械のように主軸の速度が微小な場合には、追いかけ動作中に主軸と従動軸が同期していなくても、大きな問題とならないかもしれない。しかし、いわゆる汎用モーションコントローラでは、主軸の速度が大きく変化する場合がある。そのような場合には同期開始位置で同期制御を開始できないことになる。それゆえに、本発明の目的は、従動軸に加わる衝撃を緩和し、かつ同期開始位置で確実に同期制御を開始することができる同期制御装置、同期制御方法、同期制御プログラム、および同期制御プログラムを記録したコンピュータ読み取り可能な記録媒体を提供することである。上記課題を解決するために、本発明は、主軸と従動軸との同期制御を制御周期ごとに実行する同期制御装置であって、主軸と従動軸とが同期を開始する同期開始位置を指定する指定部と、カム曲線を作成するカム曲線作成部と、毎制御周期ごとの主軸の位置情報を検出する検出部と、同期開始位置までは、カム曲線と主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出する制御部とを備え、制御部は、算出した速度指令値で従動軸を制御する。好ましくは、カム曲線作成部は、同期開始位置までの期間における、指定された目標加速度、目標減速度、および目標速度に基づいて、カム曲線を作成する。また、本発明は、主軸と従動軸との同期制御を制御周期ごとに実行する同期制御方法であって、主軸と従動軸とが同期を開始する同期開始位置を指定するステップと、カム曲線を作成するステップと、毎制御周期ごとの主軸の位置情報を検出するステップと、同期開始位置までは、カム曲線と主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出するステップと、算出した速度指令値で従動軸を制御するステップとを備える。また、本発明は、コンピュータに、主軸と従動軸との同期制御を制御周期ごとに実行させる同期制御プログラムであって、主軸と従動軸とが同期を開始する同期開始位置を指定するステップと、カム曲線を作成するステップと、毎制御周期ごとの主軸の位置情報を検出するステップと、同期開始位置までは、カム曲線と主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出するステップと、算出した速度指令値で従動軸を制御するステップとを実行させる。また、本発明は、コンピュータに、主軸と従動軸との同期制御を制御周期ごとに実行させる同期制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、主軸と従動軸とが同期を開始する同期開始位置を指定するステップと、カム曲線を作成するステップと、毎制御周期ごとの主軸の位置情報を検出するステップと、同期開始位置までは、カム曲線と主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出するステップと、算出した速度指令値で従動軸を制御するステップとを実行させる。本発明によれば、従動軸に加わる衝撃を緩和し、かつ同期開始位置で確実に同期制御を開始することができる。以下、本発明の実施形態について図面を参照して説明する。[第1の実施形態]本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。<A.システム構成>本実施の形態に係るPLCProgrammableLogicControllerは、モータの運動を制御するためのモーション制御機能を有する。まず、図1を参照して、本実施の形態に係るPLC1のシステム構成について説明する。図1は、本発明の実施の形態に係るPLCシステムの概略構成を示す模式図である。図1を参照して、PLCシステムSYSは、PLC1と、PLC1とフィールドネットワーク2を介して接続されるサーボモータドライバ3およびリモートIOターミナル5と、フィールド機器である検出スイッチ6およびリレー7とを含む。また、PLC1には、接続ケーブル10などを介してPLCサポート装置8が接続される。PLC1は、主たる演算処理を実行するCPUユニット13と、1つ以上のIOユニット14と、特殊ユニット15とを含む。これらのユニットは、PLCシステムバス11を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット12によって適切な電圧の電源が供給される。CPUユニット13の詳細については、図2を参照して後述する。IOユニット14は、一般的な入出力処理に関するユニットであり、オン/オフといった2値化されたデータの入出力を司る。すなわち、IOユニット14は、検出スイッチ6などのセンサが何らかの対象物を検出している状態オンおよび何らの対象物も検出していない状態オフのいずれであるかという情報を収集する。また、IOユニット14は、リレー7やアクチュエータといった出力先に対して、活性化するための指令オンおよび不活性化するための指令オフのいずれかを出力する。特殊ユニット15は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、IOユニット14ではサポートしない機能を有する。フィールドネットワーク2は、CPUユニット13と遣り取りされる各種データを伝送する。フィールドネットワーク2としては、典型的には、各種の産業用イーサネット登録商標を用いることができる。なお、図1には、PLCシステムバス11およびフィールドネットワーク2の両方を有するPLCシステムSYSを例示するが、一方のみを搭載するシステム構成を採用することもできる。たとえば、フィールドネットワーク2ですべてのユニットを接続してもよい。あるいは、フィールドネットワーク2を使用せずに、サーボモータドライバ3をPLCシステムバス11に直接接続してもよい。さらに、フィールドネットワーク2の通信ユニットをPLCシステムバス11に接続し、CPUユニット13から当該通信ユニット経由で、フィールドネットワーク2に接続された機器との間の通信を行なうようにしてもよい。サーボモータドライバ3は、フィールドネットワーク2を介してCPUユニット13と接続されるとともに、CPUユニット13からの指令値に従ってサーボモータ4を駆動する。より具体的には、サーボモータドライバ3は、PLC1から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ3は、サーボモータ4の軸に接続されている位置センサロータリーエンコーダやトルクセンサといった検出器から、位置、速度典型的には、今回位置と前回位置との差から算出される、トルクといったサーボモータ4の動作に係る実測値を取得する。そして、サーボモータドライバ3は、CPUユニット13からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行なう。すなわち、サーボモータドライバ3は、実測値が目標値に近づくようにサーボモータ4を駆動するための電流を調整する。なお、サーボモータドライバ3は、サーボモータアンプと称されることもある。また、図1には、サーボモータ4とサーボモータドライバ3とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。図1に示すPLCシステムSYSのフィールドネットワーク2には、さらに、リモートIOターミナル5が接続されている。リモートIOターミナル5は、基本的には、IOユニット14と同様に、一般的な入出力処理に関する処理を行なう。より具体的には、リモートIOターミナル5は、フィールドネットワーク2でのデータ伝送に係る処理を行なうための通信カプラ52と、1つ以上のIOユニット53とを含む。これらのユニットは、リモートIOターミナルバス51を介して、データを互いに遣り取りできるように構成される。<B.CPUユニットのハードウェア構成>次に、図2を参照して、CPUユニット13のハードウェア構成について説明する。図2は、本発明の実施の形態に係るCPUユニット13のハードウェア構成を示す模式図である。図2を参照して、CPUユニット13は、マイクロプロセッサ100と、チップセット102と、メインメモリ104と、不揮発性メモリ106と、システムタイマ108と、PLCシステムバスコントローラ120と、フィールドネットワークコントローラ140と、USBコネクタ110とを含む。チップセット102と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。マイクロプロセッサ100およびチップセット102は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ100は、チップセット102から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット102は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ100に必要な命令コードを生成する。さらに、チップセット102は、マイクロプロセッサ100での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。CPUユニット13は、記憶手段として、メインメモリ104および不揮発性メモリ106を有する。メインメモリ104は、揮発性の記憶領域RAMであり、CPUユニット13への電源投入後にマイクロプロセッサ100で実行されるべき各種プログラムを保持する。また、メインメモリ104は、マイクロプロセッサ100による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ104としては、DRAMDynamicRandomAccessMemoryやSRAMStaticRandomAccessMemoryといったデバイスが用いられる。一方、不揮発性メモリ106は、リアルタイムOSOperatingSystem、PLC1のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ100がアクセスできるようにメインメモリ104にコピーされる。このような不揮発性メモリ106としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、DVD-RAMDigitalVersatileDiskRandomAccessMemoryのような光学記録媒体などを用いることもできる。システムタイマ108は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ100に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、OSOperatingSystemやBIOSBasicInputOutputSystemなどによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ108が発生する割り込み信号を利用して、後述するようなモーション制御サイクルごとの制御動作が実現される。CPUユニット13は、通信回路として、PLCシステムバスコントローラ120およびフィールドネットワークコントローラ140を有する。PLCシステムバスコントローラ120は、PLCシステムバス11を介したデータの遣り取りを制御する。より具体的には、PLCシステムバスコントローラ120は、DMADynamicMemoryAccess制御回路122と、PLCシステムバス制御回路124と、バッファメモリ126とを含む。なお、PLCシステムバスコントローラ120は、PLCシステムバスコネクタ130を介してPLCシステムバス11と内部的に接続される。バッファメモリ126は、PLCシステムバス11を介して他のユニットへ出力されるデータ以下出力データとも称す。の送信バッファ、および、PLCシステムバス11を介して他のユニットから入力されるデータ以下入力データとも称す。の受信バッファとして機能する。なお、マイクロプロセッサ100による演算処理によって作成された出力データは、原始的にはメインメモリ104に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ104から読み出されて、バッファメモリ126に一次的に保持される。また、他のユニットから転送された入力データは、バッファメモリ126に一次的に保持された後、メインメモリ104に移される。DMA制御回路122は、メインメモリ104からバッファメモリ126への出力データの転送、および、バッファメモリ126からメインメモリ104への入力データの転送を行なう。PLCシステムバス制御回路124は、PLCシステムバス11に接続される他のユニットとの間で、バッファメモリ126の出力データを送信する処理および入力データを受信してバッファメモリ126に格納する処理を行なう。典型的には、PLCシステムバス制御回路124は、PLCシステムバス11における物理層およびデータリンク層の機能を提供する。フィールドネットワークコントローラ140は、フィールドネットワーク2を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ140は、用いられるフィールドネットワーク2の規格に従い、出力データの送信および入力データの受信を制御する。このように、本実施の形態に係るCPUユニット13は、フィールドネットワーク2を介して、駆動装置であるサーボモータドライバ3と接続される。DMA制御回路142は、メインメモリ104からバッファメモリ146への出力データの転送、および、バッファメモリ146からメインメモリ104への入力データの転送を行なう。フィールドネットワーク制御回路144は、フィールドネットワーク2に接続される他の装置との間で、バッファメモリ146の出力データを送信する処理および入力データを受信してバッファメモリ146に格納する処理を行なう。典型的には、フィールドネットワーク制御回路144は、フィールドネットワーク2における物理層およびデータリンク層の機能を提供する。USBコネクタ110は、PLCサポート装置8とCPUユニット13とを接続するためのインターフェイスである。典型的には、PLCサポート装置8から転送される、CPUユニット13のマイクロプロセッサ100で実行可能なプログラムなどは、USBコネクタ110を介してPLC1に取込まれる。<C.CPUユニットのソフトウェア構成>次に、図3を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、CPUユニット13のマイクロプロセッサ100によって実行される。図3は、本発明の実施の形態に係るCPUユニット13で実行されるソフトウェア構成を示す模式図である。図3を参照して、CPUユニット13で実行されるソフトウェアとしては、リアルタイムOS200と、システムプログラム210と、ユーザプログラム236との3階層になっている。リアルタイムOS200は、CPUユニット13のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ100がシステムプログラム210およびユーザプログラム236を実行するための基本的な実行環境を提供する。このリアルタイムOSは、典型的には、PLCのメーカーあるいは専門のソフトウェア会社などによって提供される。システムプログラム210は、PLC1としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム210は、スケジューラプログラム212と、出力処理プログラム214と、入力処理プログラム216と、シーケンス命令演算プログラム232と、モーション演算プログラム234と、その他のシステムプログラム220とを含む。なお、一般には出力処理プログラム214および入力処理プログラム216は、連続的一体としてに実行されるので、これらのプログラムを、IO処理プログラム218と総称する場合もある。ユーザプログラム236は、ユーザにおける制御目的に応じて作成される。すなわち、PLCシステムSYSを用いて制御する対象のラインプロセスなどに応じて、任意に設計されるプログラムである。後述するように、ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム236、シーケンス命令演算プログラム232、およびモーション演算プログラム234を、制御プログラム230と総称する場合もある。このように、CPUユニット13のマイクロプロセッサ100は、記憶手段に格納されたシステムプログラム210およびユーザプログラム236を実行する。以下、各プログラムについてより詳細に説明する。ユーザプログラム236は、上述したように、ユーザにおける制御目的たとえば、対象のラインやプロセスに応じて作成される。ユーザプログラム236は、典型的には、CPUユニット13のマイクロプロセッサ100で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム236は、PLCサポート装置8などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム236は、PLCサポート装置8から接続ケーブル10を介してCPUユニット13へ転送され、不揮発性メモリ106などに格納される。スケジューラプログラム212は、出力処理プログラム214、入力処理プログラム216、および制御プログラム230について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム212は、ユーザプログラム236およびモーション演算プログラム234の実行を制御する。出力処理プログラム214は、ユーザプログラム236制御プログラム230の実行によって生成された出力データを、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140へ転送するのに適した形式に再配置する。PLCシステムバスコントローラ120またはフィールドネットワークコントローラ140が、マイクロプロセッサ100からの、送信を実行するための指示を必要とする場合は、出力処理プログラム214がそのような指示を発行する。入力処理プログラム216は、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140によって受信された入力データを、制御プログラム230が使用するのに適した形式に再配置する。シーケンス命令演算プログラム232は、ユーザプログラム236で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。モーション演算プログラム234は、ユーザプログラム236による指示に従って実行され、サーボモータドライバ3やパルスモータドライバといったなモータドライバに対して出力する指令値を算出するプログラムである。その他のシステムプログラム220は、図3に個別に示したプログラム以外の、PLC1の各種機能を実現するためのプログラム群をまとめて示したものである。その他のシステムプログラム220は、モーション制御サイクルの周期を設定するプログラム222を含む。モーション制御サイクルの周期は、制御目的に応じて適宜設定することができる。モーション制御サイクルの周期を設定するプログラム222は、システムタイマ108から指定されたモーション制御サイクルの周期で割り込み信号が発生されるように、システムタイマ108を設定する。CPUユニット13への電源投入時に、モーション制御サイクルの周期を設定するプログラム222が実行されることで、モーション制御サイクルの周期を指定する情報が不揮発性メモリ106から読み出され、読み出された情報に従ってシステムタイマ108が設定される。リアルタイムOS200は、複数のプログラムを時間の経過に従い切り換えて実行するための環境を提供する。<D.モーション制御の概略>次に、上述したユーザプログラム236に含まれる典型的な構成について説明する。ユーザプログラム236は、モータの運動に関する制御開始の条件が成立するか否かを周期的に判断させる命令を含む。たとえば、モータの駆動力によって何らかの処置がなされるワークが所定の処置位置まで搬送されたか否かを判断するようなロジックである。そして、ユーザプログラム236は、この制御開始の条件が成立したと判断されたことに応答して、モーション制御を開始させる命令をさらに含む。このモーション制御の開始に伴って、モーション命令の実行が指示される。すると、指示されたモーション命令に対応するモーション演算プログラム234が起動し、まず、モーション演算プログラム234の実行ごとにモータに対する指令値を算出していくために必要な初期処理が実行される。また、初期処理と同じモーション制御サイクルにおいて、第1サイクルでの指令値が算出される。したがって、初期処理および第1番目の指令値算出処理が、起動したモーション演算プログラム234が第1番目の実行においてなすべき処理となる。以降、各サイクルでの指令値が順次算出される。<E.同期制御の概略>図4は、同期制御装置の構成を表わす図である。図4に示すように、同期制御装置61は、ユーザ指令部62と、スケジュール部63と、カム曲線作成部64と、検出部65と、制御部66とを備える。これらの構成要素は、制御プログラム230、モーション制御サイクルの周期を設定するプログラム222、およびスケジューラプログラム212によって実現される。スケジュール部63は、制御周期のタイミング、ユーザ指令部63、および同期処理全体のタイミングを制御する。スケジュール部63は、同期開始時点よりも早いタイミングで従動軸に対して主軸を追いかける動作以下、追いかけ動作を実行させる。ユーザ指令部62は、ユーザが指定した同期開始主軸位置SPM、同期開始従動軸位置SPD、ギヤ比GR、追いかけ動作中の目標速度VTD、目標加速度ATD、目標減速度BTDの指令値を入力し、スケジュール部63の指令タイミングでカム曲線作成部64および制御部66の処理に反映させる。同期開始主軸位置SPMおよび同期開始従動軸位置SPDは、従動軸と主軸が同期する時点での主軸の位置、従動軸の位置を表わす。また、ユーザ指令部62は、同期制御の開始を指示する。検出部65は、主軸用のエンコーダ67および従動軸用のエンコーダ68からのパルスのカウント値に基づいて、主軸の位置、従動軸の位置、主軸の速度、従動軸の速度を検出する。カム曲線作成部64は、ギヤ同期開始時の速度として、追いつき動作開始時の主軸の速度VMTsにギヤ比GRを掛けた速度を計算する。カム曲線作成部64は、目標速度VTD、目標加速度ATD、目標減速度BTD、追いつき動作開始時の従動軸の速度VDTs、および算出したギヤ同期開始時の速度を用いて、図5に示すようなカム曲線を作成する。本実施の形態において、カム曲線とは時間変位に対する従動軸の速度を表わすものとする。制御部66は、追いかけ動作時には、カム曲線と主軸の位置情報具体的には、追いかけ動作開始からの移動量とに基づいて、制御周期ごとに、従動軸に対する速度指令値および位置指令値を算出して、従動軸用のサーボモータドライバ70へ出力する。制御部66は、追いかけ動作終了後の同期制御時には、主軸の速度とギヤ比とに基づいて、制御周期ごとに、従動軸に対する速度指令値および位置指令値を算出して、従動軸用のサーボモータドライバ70へ出力する。同期制御の動作図6は、第1の実施形態の同期制御の動作手順を表わすフローチャートである。まず、ユーザ指令部62は、ユーザによって指定された同期開始主軸位置SPM、同期開始従動軸位置SPD、ギヤ比GR、目標速度VTD、目標加速度ATD、目標減速度BTDの指令値を入力するステップS101。次に、スケジュール部63は、従動軸の追いかけ動作の開始を指示するステップS102。検出部65は、開始を指示された時点Tsにおいて、主軸用のエンコーダ67からのパルスのカウント値位置を取得して主軸の位置PMTsとし、取得したカウント値の時間微分時間差分から主軸の速度VMTsを算出する。また、検出部65は、開始を指示された時点Tsにおいて、従動軸用のエンコーダ68からのパルスのカウント値位置を取得して従動軸の位置PDTsとし、取得したカウント値の時間微分時間差分から従動軸の速度VDTsを算出するステップS103。次に、カム曲線作成部64は、目標速度VTD、目標加速度ATD、目標減速度BTD、追いつき動作開始時の従動軸の速度VDTs、追いつき動作開始時の主軸の速度VMTsにギヤ比GRを掛けた速度を用いて、図5に示すようなカム曲線速度プロファイルを作成するステップS104。検出部65は、主軸用のエンコーダ67からのパルスのカウント値位置を取得して主軸の位置PMiとする。また、検出部65は、従動軸用のエンコーダ68からのパルスのカウント値位置を取得して従動軸の位置PDiとするステップS105。スケジュール部63は、検出した主軸の位置PMiが同期開始主軸位置SPMと同じであり、かつ検出した従動軸の位置PDiが同期開始従動軸位置SPDと同じである条件を満足しない場合にはステップS106でYES、以下のステップによって追いかけ動作を続行する。制御部66は、カム曲線と、追いかけ動作開始からの主軸の移動量PMi-PMTsに基づいて、現在のモーション制御周期での従動軸の速度指令位置および位置指令値を算出する。具体的には、制御部66は、主軸の移動量がPのときに、カム曲線を積分した値がPとなるときの従動軸の速度を従動軸の速度指令値として算出する。さらに、制御部66は、従動軸の速度指令値を積分して、積分した値を従動軸の位置指令値とするステップS107。制御部66は、従動軸用のサーボモータドライバ70に速度指令値および位置指令値を出力するステップS108。スケジュール部63は、次のモーション制御サイクルが到着するまで待機するように指示する。次のモーション制御サイクルが到着したら、iをインクリメントするステップS109。一方、検出した主軸の位置PMiが同期開始主軸位置SPMと同じであり、かつ検出した従動軸の位置PDiが同期開始従動軸位置SPDと同じである条件を満足する場合にはステップS106でYES、スケジュール部63は、追いかけ動作を終了し、以下のステップによってギヤ動作を実行させる。検出部65は、主軸用のエンコーダ67からのパルスのカウント値位置を取得し、取得したカウント値の時間微分時間差分から主軸の速度VMiを算出するステップS110。制御部66は、検出した主軸の速度VMiとギヤ比GRとを乗算することによって、従動軸の速度指令値を算出する。さらに、制御部66は、従動軸の速度指令値を積分して、積分した値を従動軸の位置指令値とするステップS111。制御部66は、従動軸用のサーボモータドライバ70に速度指令値および位置指令値を出力するステップS112。スケジュール部63は、次のモーション制御サイクルが到着するまで待機するように指示するステップS113。スケジュール部63は、ギア動作終了の終了条件が成立するまでステップS114でYES、ステップS110~S113のギヤ動作を続行させる。以上のように、本実施の形態では、追いつき動作をカム曲線を用いた、同期動作で実現し、同期開始位置以降は、ギヤ比を用いた同期動作を行なうので、従動軸の追いかけ動作中に、主軸の速度が変化しても、主軸の速度に同期して従動軸の速度が変化するので、同期開始位置での同期開始が可能となる。同期開始主軸位置同期開始従動軸位置で確実に同期状態に遷移できるギヤ動作を開始することを保証する。[第2の実施形態]第2の実施形態では、主軸の速度が追いかけ動作時から変化したときに、主軸と従動軸が指定された位置で同期をとるための方法をより具体化した方法について説明する。図7は、第2の実施形態の同期制御の動作手順を表わすフローチャートである。まず、ユーザ指令部62は、ユーザによって指定された同期開始主軸位置SPM、同期開始従動軸位置SPD、ギヤ比GR、目標速度VTD、目標加速度ATD、目標減速度BTDの指令値を入力するステップS101。次に、スケジュール部63は、従動軸の追いかけ動作の開始を指示するステップS102。検出部65は、開始を指示された時点Tsにおいて、主軸用のエンコーダ67からのパルスのカウント値位置を取得して主軸の位置PMTsとし、取得したカウント値の時間微分時間差分から主軸の速度VMTsを算出する。また、検出部65は、開始を指示された時点Tsにおいて、従動軸用のエンコーダ68からのパルスのカウント値位置を取得して従動軸の位置PDTsとし、取得したカウント値の時間微分時間差分から従動軸の速度VDTsを算出する。制御部66は、同期開始主軸位置SPMと主軸の位置PMTsとから、同期開始までの主軸の移動量SSPMを算出し、同期開始従動軸位置SPDと従動軸の位置PDTsとから、同期開始までの従動軸の移動量SSPDを算出する。制御部66は、従動軸の移動量SSPDを主軸の移動量SSPMで除算して、移動量比PRを算出する。さらに、制御部66は、主軸の速度VMTsと、同期開始までの主軸の移動量SSPMとから同期開始時点Teを特定する。さらに、制御部66は、同期開始時点Teまでに従動軸が移動量SSPDだけ移動するように、目標速度VTDを維持しつつ、目標加速度ATDおよび目標減速度BTDの値をそれぞれATD′およびBTD′に修正するステップS203。次に、カム曲線作成部64は、目標速度VTD、目標加速度ATD′、目標減速度BTD′、追いつき動作開始時の従動軸の速度VDTs、追いつき動作開始時の主軸の速度VMTsにギヤ比GRを掛けた速度を用いて、図8に示すようなカム曲線速度プロファイルを作成するステップS204。検出部65は、主軸用のエンコーダ67からのパルスのカウント値位置を取得して主軸の位置PMiとする。また、検出部65は、従動軸用のエンコーダ68からのパルスのカウント値位置を取得して従動軸の位置PDiとするステップS105。スケジュール部63は、検出した主軸の位置PMiが同期開始主軸位置SPMと同じであり、かつ検出した従動軸の位置PDiが同期開始従動軸位置SPDと同じである条件を満足しない場合にはステップS106でYES、以下のステップによって追いかけ動作を続行する。制御部66は、カム曲線と、追いかけ動作開始からの主軸の移動量PPMi-PMTsに基づいて、現在のモーション制御周期での従動軸の速度指令位置および位置指令値を算出する。具体的には、制御部66は、カム曲線を積分した値がP×PRとなるときの従動軸の速度を従動軸の速度指令値として算出する。さらに、制御部66は、従動軸の速度指令値を積分して、積分した値を従動軸の位置指令値とするステップS207。制御部66は、従動軸用のサーボモータドライバ70に速度指令値および位置指令値を出力するステップS108。スケジュール部63は、次のモーション制御サイクルが到着するまで待機するように指示する。次のモーション制御サイクルが到着したら、iをインクリメントするステップS109。一方、検出した主軸の位置PMiが同期開始主軸位置SPMと同じであり、かつ検出した従動軸の位置PDiが同期開始従動軸位置SPDと同じである条件を満足する場合にはステップS106でYES、スケジュール部63は、追いかけ動作を終了し、以下のステップによってギヤ動作を実行させる。検出部65は、主軸用のエンコーダ67からのパルスのカウント値位置を取得し、取得したカウント値の時間微分時間差分から主軸の速度VMiを算出するステップS110。制御部66は、検出した主軸の速度VMiとギヤ比GRとを乗算することによって、従動軸の速度指令値を算出する。さらに、制御部66は、従動軸の速度指令値を積分して、積分した値を従動軸の位置指令値とするステップS111。制御部66は、従動軸用のサーボモータドライバ70に速度指令値および位置指令値を出力するステップS112。スケジュール部63は、次のモーション制御サイクルが到着するまで待機するように指示するステップS113。スケジュール部63は、ギア動作終了の終了条件が成立するまでステップS114でYES、ステップS110~S113のギヤ動作を続行させる。以上の動作によって、主軸の速度が追いかけ動作開始時の速度VMTsから変化しないときには、時点Teにおいて主軸の移動量がSSPMとなり、従動軸の移動量がSSPDとなり、時点Teの後から同期が開始される。一方、主軸の速度が追いかけ動作開始時の速度VMTsから早くなる方に変化したときには、時点Teよりも前の時点Taにおいて主軸の移動量がSSPMとなり、従動軸の移動量がSSPDとなり、時点Taの後から同期が開始される。また、主軸の速度が追いかけ動作開始時の速度VMTsから遅くなる方に変化したときには、時点Teよりも後の時点Tbにおいて主軸の移動量がSSPMとなり、従動軸の移動量がSSPDとなり、時点Tbの後から同期が開始される。本発明は、上記の実施形態に限定されるものではなく、たとえば以下のような変形例も含む。[変形例1]なお、本実施の形態では、図に示すように、カム曲線は、直線で加速し、その後定速となり、その後減速するものであったが、これに限定するものではない。カム曲線として、たとえば、一般的に知られているサイクロイド曲線やトラペクロイド曲線などを用いてもよい。カム曲線の文献例としてはCamDesignandManufacturingHandbookSecondEditionや、機械技術者のための実用カム機構学西岡雅夫著日刊工業新聞社2003などがある。また、カム曲線を多項式で表現することとしてもよい。[変形例2]主軸の回転方向と逆方向に同期開始従動軸位置が存在した場合には、追いかけ動作は前述のカム曲線に従って主軸と逆方向に動作し、同期開始後は主軸の回転方向に動作する。[変形例3]追いかけ動作中に主軸で異常が発生して停止した場合や、主軸に対して停止指令が出された場合であっても、従動軸は前述のカム曲線に従って同期関係を継続した状態を保つ。[変形例4]同期開始主軸位置や同期開始従動軸位置が位置カウンタ1周分を越える場合に、ユーザプログラムに対して異常を発報するか、多回転とするかをユーザが指定できるようにしてもよい。たとえば、位置カウンタが0~360degの場合に、ユーザプログラムから同期開始主軸位置として720degが指定された場合に、ユーザプログラムに対して異常を通知するか、2回転後の0degから同期を開始するかを指定できるようにしてもよい。[変形例5]追いかけ動作中に、図5において、主軸の速度が大きく変化し、予め指定された閾値を越えた場合には、その時点での主軸の速度をVMTs1としたときに、同期開始位置での従動軸の目標速度をVMTs×GRからVMTs1×GRに変えて、カム曲線の演算をやり直すこととしてもよい。今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。