主軸と従動軸との同期制御を制御周期ごとに実行する同期制御装置であって、第1のカム曲線および第2のカム曲線を記憶する記憶手段と、前記従動軸の位置指令値を算出し、前記算出した位置指令値で前記従動軸を制御する制御部とを備え、前記制御部は、カム曲線の切替え前は、各制御タイミングで、第1のカム曲線上の値に基づいて、従動側部材への位置指令値を求め、前記カム曲線の切替え後は、各制御タイミングで、第2のカム曲線上の値に基づいて位置指令値を求め、前記カム曲線の切替期間は、各制御タイミングで、前記第1のカム曲線または前記従動軸の位置に基づく第1のデータと、前記第2のカム曲線に基づく第2のデータとを加重平均した値に基づいて従動側部材への位置指令値を求める、同期制御装置。前記加重平均において、重みは主軸位置に連動して可変であって、前記切替期間の開始タイミングでは前記第1のデータの重みを前記第2のデータの重みより大きく設定し、前記切替期間の終了タイミングでは前記第1のデータの重みを前記第2のデータの重みより小さく設定する、請求項1記載の同期制御装置。前記第1のデータは、各制御タイミングでの前記第1のカム曲線上の値である、請求項1記載の同期制御装置。前記第1のデータは、前記切換期間の開始タイミングでの前記第1のカム曲線上の値である、請求項1記載の同期制御装置。前記第1のデータは、各制御タイミングでの前記従動軸の位置である、請求項1記載の同期制御装置。前記第1のデータは、前記切替期間の開始タイミングでの前記従動軸の位置である、請求項1記載の同期制御装置。前記第2のデータは、各制御タイミングでの前記第2のカム曲線上の値である、請求項1記載の同期制御装置。前記第2のデータは、前記切換期間の終了タイミングでの前記第2のカム曲線上の値である、請求項1記載の同期制御装置。前記加重平均において、前記第1のデータの重みを1-aとし、前記第2のデータの重みをaとしたときに、前記重みaは、前記切替期間の開始タイミングでは0であり、前記切替期間での時刻の経過とともに単調に増加し、前記切替期間の終了タイミングでは1となる、請求項1記載の同期制御装置。前記重みaは、時刻に対して1次関数で変化する、請求項9記載の同期制御装置。前記重みaは、時刻に対してn次関数で変化する、ただし、nは1以外の正の実数である、請求項9記載の同期制御装置。前記重みaは、時刻に対して正弦関数で変化する、請求項9記載の同期制御装置。前記重みaは、時刻に対して余弦関数で変化する、請求項9記載の同期制御装置。しかしながら、特許文献1および特許文献2では、予め速度曲線を生成する必要があるため、ユーザが任意のタイミングでカム曲線を切替ることができない。また、特許文献1および特許文献2では、微分値が連続となるような高次曲線を生成する必要があるため、複雑なソフトウェア処理が必要である。そのため、低スペックなCPUでは制御周期内のリアルタイムでの計算ができないという問題がある。それゆえに、本発明の目的は、容易かつ遅れなしにカム曲線の切替が可能な同期制御装置を提供することである。上記課題を解決するために、主軸と従動軸との同期制御を制御周期ごとに実行する同期制御装置であって、第1のカム曲線および第2のカム曲線を記憶する記憶手段と、従動軸の位置指令値を算出し、算出した位置指令値で従動軸を制御する制御部とを備える。制御部は、カム曲線の切替え前は、各制御タイミングで、第1のカム曲線上の値に基づいて、従動側部材への位置指令値を求める。制御部は、カム曲線の切替え後は、各制御タイミングで、第2のカム曲線上の値に基づいて位置指令値を求める。制御部は、カム曲線の切替期間は、各制御タイミングで、第1のカム曲線または従動軸の位置に基づく第1のデータと、第2のカム曲線に基づく第2のデータとを加重平均した値に基づいて従動側部材への位置指令値を求める。好ましくは、加重平均において、重みは主軸位置に連動して可変であって、切替期間の開始タイミングでは第1のデータの重みを第2のデータの重みより大きく設定し、切替期間の終了タイミングでは第1のデータの重みを第2のデータの重みより小さく設定する。好ましくは、第1のデータは、各制御タイミングでの第1のカム曲線上の値である。好ましくは、第1のデータは、切替期間の開始タイミングでの第1のカム曲線上の値である。好ましくは、第1のデータは、各制御タイミングでの従動軸の位置である。好ましくは、第1のデータは、切替期間の開始タイミングでの従動軸の位置である。好ましくは、第2のデータは、各制御タイミングでの第2のカム曲線上の値である。好ましくは、第2のデータは、切替期間の終了タイミングでの第2のカム曲線上の値である。好ましくは、加重平均において、第1のデータの重みを1-aとし、第2のデータの重みをaとしたときに、重みaは、切替期間の開始タイミングでは0であり、切替期間での時刻の経過とともに単調に増加し、切替期間の終了タイミングでは1となる。好ましくは、重みaは、時刻に対して1次関数で変化する。好ましくは、重みaは、時刻に対してn次関数で変化する、ただし、nは1以外の正の実数である。好ましくは、重みaは、時刻に対して正弦関数で変化する。好ましくは、重みaは、時刻に対して余弦関数で変化する。本発明によれば、従動軸に加わる衝撃を緩和し、かつ同期開始位置で確実に同期制御を開始することができる。以下、本発明の実施形態について図面を参照して説明する。[第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は、主軸と従動軸との同期制御を制御周期ごとに実行する装置であって、カム曲線記憶部64と、検出部65と、制御部66とを備える。これらの構成要素は、制御プログラム230、モーション制御サイクルの周期を設定するプログラム222、およびスケジューラプログラム212によって実現される。検出部65は、主軸用のエンコーダ67および従動軸用のエンコーダ68からのパルスのカウント値に基づいて、主軸の現在位置、従動軸の現在位置、主軸の現在速度、従動軸の現在速度を検出する。カム曲線記憶部64は、第1のカム曲線および第2のカム曲線と記憶する。本実施の形態において、カム曲線とは、主軸の回転角で表わされる時間変位に対する従動軸の位置を表わすものとする。制御部66は、第1のカム曲線、第2のカム曲線、および従動軸の現在位置に基づいて、従動軸の位置指令値を算出し、従動軸用のサーボモータドライバ70へ出力する。具体的には、制御部は、カム曲線の切替え前は、各制御タイミングで、第1のカム曲線上の値と従動軸の現在位置に基づいて、従動側部材への位置指令値として求める。制御部は、カム曲線の切替え後は、各制御タイミングで、第2のカム曲線上の値と従動軸の現在位置に基づいて、位置指令値を求める。制御部は、カム曲線の切替え期間は、切替曲線上の値と、従動軸の現在位置に基づいて、動側部材への位置指令値を求める。切替曲線上の値は、第1のカム曲線または従動軸の位置に基づく第1のデータと、第2のカム曲線に基づく第2のデータとを加重平均した値である。加重平均において、第1のデータの重みを1-aとし、第2のデータの重みをaとする。本実施の形態では、重みaは、切替期間の開始タイミングでは0であり、切替期間での時刻の経過とともに単調に増加し、切替期間の終了タイミングでは、1となるものとする。本実施の形態では、より具体的には、重みaは、図5に示すように、時刻の経過に対して1次関数で変化するものとする。第1の実施の形態では、第1のデータを、各制御タイミングでの第1のカム曲線上の値とする。また、第2のデータを、各制御タイミングでの第2のカム曲線上の値とする。図6aは、第1の実施形態における、第1のカム曲線と、第2のカム曲線と、切替曲線とを表わす図である。切替曲線の各制御タイミングの値は、各制御タイミングでの第1のカム曲線上の値と各制御タイミングでの第2のカム曲線上の値が0~1で増加する重みを用いて加重平均された値となる。図6bは、第1の実施形態における、制御部66で使用するカム曲線、およびそのカム曲線を微分した曲線である速度を表わす曲線を表わす図である。カム曲線の切替前は、第1のカム曲線が使用され、カム曲線の切替期間中は、切替曲線が使用され、カム曲線の切替後は、第2のカム曲線が使用される。以上のように、本実施の形態によれば、カム曲線の切替期間において、第1のカム曲線と第2のカム曲線の加重平均で切替曲線が求まるので、容易かつ遅れなしにカム曲線を切替ることができる。[第2の実施形態]第2の実施形態では、第1のデータを切替期間の開始タイミングでの第1のカム曲線上の値とする。第2のデータを、第1の実施形態と同様に、各制御タイミングでの第2のカム曲線上の値とする。本実施の形態では、重みaは、第1の実施形態と同様に、図5に示すように、時刻の経過に対して1次関数で変化するものとする。図7aは、第2の実施形態における、第1のカム曲線と、第2のカム曲線と、切替曲線とを表わす図である。切替曲線の各制御タイミングでの値は、切替期間の開始タイミングでの第1のカム曲線上の値と、各制御タイミングでの第2のカム曲線上の値が0~1で増加する重みを用いて加重平均された値となる。図7bは、第2の実施形態における、制御部66で使用するカム曲線、およびそのカム曲線を微分した曲線である速度を表わす曲線を表わす図である。カム曲線の切替前は、第1のカム曲線が使用され、カム曲線の切替期間中は、切替曲線が使用され、カム曲線の切替後は、第2のカム曲線が使用される。以上のように、本実施の形態によれば、カム曲線の切替期間において、切替期間の開始タイミングでの第1のカム曲線上の値と第2のカム曲線の加重平均で切替曲線が求まるので、容易かつ遅れなしにカム曲線を切替ることができる。[第2の実施形態の変形例1]本変形例では、第1のデータを、第1の実施形態と同様に、各制御タイミングでの第1のカム曲線上の値とする。また、第2のデータを、切替期間の終了タイミングでの第2のカム曲線上の値とする。以上のように、本実施の形態によれば、カム曲線の切替期間において、第1のカム曲線と切替期間の終了タイミングでの第2のカム曲線上の値の加重平均で切替曲線が求まるので、容易かつ遅れなしにカム曲線を切替ることができる。[第3の実施形態]第3の実施形態では、第1のデータを、各制御タイミングでの従動軸の位置とする。従動軸の位置は、検出部65が、従動軸用のエンコーダ68からのパルスのカウント値に基づいて算出された値が用いられる。また、第2のデータを、第1の実施形態と同様に、各制御タイミングでの第2のカム曲線上の値とする。図8aは、第3の実施形態における、第1のカム曲線と、第2のカム曲線と、切替曲線とを表わす図である。切替曲線の各制御タイミングでの値は、各制御タイミングでの従動軸の位置と、各制御タイミングでの第2のカム曲線上の値が0~1で増加する重みを用いて加重平均された値となる。図8bは、第3の実施形態における、制御部66で使用するカム曲線、およびそのカム曲線を微分した曲線である速度を表わす曲線を表わす図である。カム曲線の切替前は、第1のカム曲線が使用され、カム曲線の切替期間中は、切替曲線が使用され、カム曲線の切替後は、第2のカム曲線が使用される。以上のように、本実施の形態によれば、カム曲線の切替期間において、従動軸の現在位置と第2のカム曲線の加重平均で切替曲線が求まるので、容易かつ遅れなしにカム曲線を切替ることができる。[第3の実施形態の変形例1]本変形例では、第1のデータを、切替期間の開始タイミングでの従動軸の位置とする。また、第2のデータを、第1の実施形態と同様に、各制御タイミングでの第2のカム曲線上の値とする。以上のように、本実施の形態によれば、カム曲線の切替期間において、切替期間の開始タイミングでの従動軸の位置と第2のカム曲線の加重平均で切替曲線が求まるので、容易かつ遅れなしにカム曲線を切替ることができる。本発明は、上記の実施形態に限定されるものではなく、たとえば以下のような変形例も含む。[変形例1]重みaを、時刻に対してn次関数で変化するものとしてもよい。ただし、nは正の実数である。nが1の場合には、第1の実施形態と同様に、重みaは、直線で変化する関数となる。nが1でない場合には、重みaは、曲線で変化する関数となる。たとえば、時刻と関係するθを主軸の位相としたときに、aθ=θ/2π05とすることができる。切替期間の開始タイミングをθ=0とし、切替期間の終了タイミングをθ=2πとしたときに、a0=0、a2π=1なる。[変形例2]重みaを、時刻対して正弦関数で変化するものとしてもよい。たとえば、θを主軸の位相としたときに、aθ=sinθ/4とすることができる。切替期間の開始タイミングをθ=0とし、切替期間の終了タイミングをθ=2πとしたときに、a0=0、a2π=1なる。[変形例3]重みaを、時刻対して余弦弦関数で変化するものとしてもよい。たとえば、θを主軸の位相としたときに、aθ=cosθ/4-π/2とすることができる。切替期間の開始タイミングをθ=0とし、切替期間の終了タイミングをθ=2πとしたときに、a0=0、a2π=1なる。今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。