"モーション制御とシーケンス制御とを実行する、プログラマブルロジックコントローラの演算ユニットであって、プロセッサと、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとしての第1のカムテーブルおよび第2のカムテーブルとを格納したメモリとを備え、前記プロセッサは、前記第1のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記従動軸に対応する制御対象機器に出力し、前記プログラムの実行中に予め定められた指示を受け付けると、前記プログラムの実行に用いるカムテーブルを前記第1のカムテーブルから前記第2のカムテーブルに切り換え、前記切り換えに基づき、前記第2のカムテーブルを用いた前記プログラムの実行結果を前記制御対象機器に出力する、演算ユニット。前記メモリは、不揮発性メモリと、揮発性メモリとを含み、前記不揮発性メモリは、前記第1のカムテーブルと前記第2のカムテーブルとを格納しており、前記プロセッサは、前記第1のカムテーブルと前記第2のカムテーブルとを前記不揮発性メモリから読み出して、当該読み出したカムテーブルを前記揮発性メモリに展開し、前記予め定められた指示を受け付ける前は、前記展開された前記第1のカムテーブルを用いて前記プログラムを実行し、前記展開後に前記予め定められた指示を受け付けると、前記展開された前記第2のカムテーブルを用いて前記プログラムを実行する、請求項1に記載の演算ユニット。前記プロセッサは、前記プログラムの実行に用いるカムテーブルを前記第1のカムテーブルから前記第2のカムテーブルに切り換える場合、前記切り換え時における前記第1のカムテーブルにおける位相よりも大きな前記第2のカムテーブルの位相に対応付けられた変位を用いて前記プログラムを実行する、請求項1または2に記載の演算ユニット。前記メモリは、加速度に関する上限値と、減速度に関する上限値とを、さらに格納しており、前記プロセッサは、前記切り換え直後における前記制御対象機器の加速度が前記加速度に関する上限値を超える場合、前記制御対象機器の加速度を前記加速度に関する上限値に制限し、前記切り換え直後における前記制御対象機器の減速度が前記減速度に関する上限値を超える場合、前記制御対象機器の減速度を前記減速度に関する上限値に制限する、請求項3に記載の演算ユニット。前記メモリは、前記カムテーブルを平滑化する平滑化フィルタをさらに格納しており、前記プロセッサは、前記切り換え直後においては、前記第2のカムテーブルにおける前記変位を前記平滑化フィルタによってスムージング処理する、請求項3に記載の演算ユニット。前記メモリは、3次以上の高次多項式をさらに格納しており、前記プロセッサは、前記切り換え直後においては、前記第2のカムテーブルにおける前記変位を前記高次多項式によってスムージング処理する、請求項3に記載の演算ユニット。前記プロセッサは、前記第2のカムテーブルの変位を出力しない制御を行なうことによって生じる前記制御対象機器の移動量の不足分を、前記モーション制御における前記電子カムの1または複数のカム周期において補う処理をする、請求項4から6のいずれかに記載の演算ユニット。前記プロセッサは、前記1つのカム周期において前記移動量の不足分を補うことができない場合には、エラーとして処理するか、または次のカム周期においても不足分を補う処理を行なわせるかを指定する命令を受け付ける、請求項7に記載の演算ユニット。前記プログラムは、モーション演算プログラムと、前記モーション演算プログラムに対して当該モーション演算プログラムの実行に必要な指示を与える処理を行なうユーザプログラムとを含み、前記プロセッサは、モーション演算プログラムの実行を、第1の定周期毎に繰り返し、前記ユーザプログラムを、前記第1の定周期の整数倍となる第2の定周期毎に繰り返し、前記ユーザプログラムのうち前記切り換えを行なうためのプログラムは、前記第1の定周期のタスクまたは前記第2の定周期のタスクに記述される、請求項1から8のいずれか1項に記載の演算ユニット。モーション制御とシーケンス制御とを実行する、プログラマブルロジックコントローラの演算ユニットにおける出力制御方法であって、前記演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとしての第1のカムテーブルおよび第2のカムテーブルとを格納しており、前記出力制御方法は、前記演算ユニットのプロセッサが、前記第1のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記従動軸に対応する制御対象機器に出力するステップと、前記プロセッサが、前記プログラムの実行中に予め定められた指示を受け付けると、前記プログラムの実行に用いるカムテーブルを前記第1のカムテーブルから前記第2のカムテーブルに切り換えるステップと、前記プロセッサが、前記切り換えに基づき、前記第2のカムテーブルを用いた前記プログラムの実行結果を前記制御対象機器に出力するステップとを備える、出力制御方法。モーション制御とシーケンス制御とを実行する、プログラマブルロジックコントローラの演算ユニットを制御するプログラムであって、前記演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとしての第1のカムテーブルおよび第2のカムテーブルとを格納しており、前記プログラムは、前記第1のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記従動軸に対応する制御対象機器に出力するステップと、前記プログラムの実行中に予め定められた指示を受け付けると、前記プログラムの実行に用いるカムテーブルを前記第1のカムテーブルから前記第2のカムテーブルに切り換えるステップと、前記切り換えに基づき、前記第2のカムテーブルを用いた前記プログラムの実行結果を前記制御対象機器に出力するステップとを、前記演算ユニットに実行させる、プログラム。従来においては、ワークの種類に応じたカムテーブルに切り換える際、一旦、従動軸の動作を停止させる必要があった。そのため、従動軸が停止させている時間が、無駄な時間となっていた。また、非特許文献1には、カムテーブルの切り換えについて具体的な内容が開示されていない。本願発明は上記の問題点に鑑みなされたものであって、その目的は、カムテーブルの切り換えを迅速に行なうことが可能なPLCの演算ユニット、出力制御方法、およびプログラムを提供することにある。本発明のある局面に従うと、演算ユニットは、モーション制御とシーケンス制御とを実行する、プログラマブルロジックコントローラの演算ユニットである。演算ユニットは、プロセッサと、電子カムの主軸の位相の各々に対して当該電子カムの従節の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、カムテーブルとしての第1のカムテーブルおよび第2のカムテーブルとを格納したメモリとを備える。プロセッサは、第1のカムテーブルを用いてプログラムを実行し、当該実行結果を従節に対応する制御対象機器に出力する。プロセッサは、プログラムの実行中に予め定められた指示を受け付けると、プログラムの実行に用いるカムテーブルを第1のカムテーブルから第2のカムテーブルに切り換える。プロセッサは、切り換えに基づき、第2のカムテーブルを用いたプログラムの実行結果を制御対象機器に出力する。好ましくは、メモリは、不揮発性メモリと、揮発性メモリとを含む。不揮発性メモリは、第1のカムテーブルと第2のカムテーブルとを格納している。プロセッサは、第1のカムテーブルと第2のカムテーブルとを不揮発性メモリから読み出して、当該読み出したカムテーブルを揮発性メモリに展開する。プロセッサは、予め定められた指示を受け付ける前は、展開された第1のカムテーブルを用いてプログラムを実行する。プロセッサは、展開後に予め定められた指示を受け付けると、展開された第2のカムテーブルを用いてプログラムを実行する。好ましくは、プロセッサは、プログラムの実行に用いるカムテーブルを第1のカムテーブルから第2のカムテーブルに切り換える場合、切り換え時における第1のカムテーブルにおける位相よりも大きな第2のカムテーブルの位相に対応付けられた変位を用いてプログラムを実行する。好ましくは、メモリは、加速度に関する上限値と、減速度に関する上限値とを、さらに格納している。プロセッサは、切り換え直後における制御対象機器の加速度が加速度に関する上限値を超える場合、制御対象機器の加速度を加速度に関する上限値に制限する。プロセッサは、切り換え直後における制御対象機器の減速度が減速度に関する上限値を超える場合、制御対象機器の減速度を減速度に関する上限値に制限する。好ましくは、メモリは、カムテーブルを平滑化する平滑化フィルタをさらに格納している。プロセッサは、切り換え直後においては、第2のカムテーブルにおける変位を平滑化フィルタによってスムージング処理する。好ましくは、メモリは、3次以上の高次多項式をさらに格納している。プロセッサは、切り換え直後においては、第2のカムテーブルにおける変位を高次多項式によってスムージング処理する。好ましくは、プロセッサは、第2のカムテーブルの変位を出力しない制御を行なうことによって生じる制御対象機器の移動量の不足分を、モーション制御における電子カムの1または複数のカム周期において補う処理をする。好ましくは、プロセッサは、1つのカム周期において移動量の不足分を補うことができない場合には、エラーとして処理するか、または次のカム周期においても不足分を補う処理を行なわせるかを指定する命令を受け付ける。好ましくは、プログラムは、モーション演算プログラムと、モーション演算プログラムに対して当該モーション演算プログラムの実行に必要な指示を与える処理を行なうユーザプログラムとを含む。プロセッサは、モーション演算プログラムの実行を、第1の定周期毎に繰り返す。プロセッサは、ユーザプログラムを、第1の定周期の整数倍となる第2の定周期毎に繰り返す。ユーザプログラムのうち上記切り換えを行なうためのプログラムは、第1の定周期のタスクまたは第2の定周期のタスクに記述される。本発明の他の局面に従うと、出力制御方法は、モーション制御とシーケンス制御とを実行する、プログラマブルロジックコントローラの演算ユニットにおける出力制御方法である。演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従節の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、カムテーブルとしての第1のカムテーブルおよび第2のカムテーブルとを格納している。出力制御方法は、演算ユニットのプロセッサが、第1のカムテーブルを用いてプログラムを実行し、当該実行結果を従節に対応する制御対象機器に出力するステップと、プロセッサが、プログラムの実行中に予め定められた指示を受け付けると、プログラムの実行に用いるカムテーブルを第1のカムテーブルから第2のカムテーブルに切り換えるステップと、プロセッサが、切り換えに基づき、第2のカムテーブルを用いたプログラムの実行結果を制御対象機器に出力するステップとを備える。本発明のさらに他の局面に従うと、プログラムは、モーション制御とシーケンス制御とを実行する、プログラマブルロジックコントローラの演算ユニットを制御するプログラムである。演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従節の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、カムテーブルとしての第1のカムテーブルおよび第2のカムテーブルとを格納している。プログラムは、第1のカムテーブルを用いてプログラムを実行し、当該実行結果を従節に対応する制御対象機器に出力するステップと、プログラムの実行中に予め定められた指示を受け付けると、プログラムの実行に用いるカムテーブルを第1のカムテーブルから第2のカムテーブルに切り換えるステップと、切り換えに基づき、第2のカムテーブルを用いたプログラムの実行結果を制御対象機器に出力するステップとを、演算ユニットに実行させる。本発明によれば、カムテーブルの切り換えを迅速に行なうことが可能となる。本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。<A.システム構成>本実施の形態に係るPLCは、モータの運動を制御するためのモーション制御機能を有する。まず、図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によって適切な電圧の電源が供給される。なお、PLC1として構成される各ユニットは、PLCメーカーが提供するものであるので、PLCシステムバス11は、一般にPLCメーカーごとに独自に開発され、使用されている。これに対して、後述するようにフィールドネットワーク2については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。CPUユニット13の詳細については、図2を参照して後述する。IOユニット14は、一般的な入出力処理に関するユニットであり、オン/オフといった2値化されたデータの入出力を司る。すなわち、IOユニット14は、検出スイッチ6などのセンサが何らかの対象物を検出している状態オンおよび何らの対象物も検出していない状態オフのいずれであるかという情報を収集する。また、IOユニット14は、リレー7やアクチュエータといった出力先に対して、活性化するための指令オンおよび不活性化するための指令オフのいずれかを出力する。特殊ユニット15は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、IOユニット14ではサポートしない機能を有する。フィールドネットワーク2は、CPUユニット13と遣り取りされる各種データを伝送する。フィールドネットワーク2としては、典型的には、各種の産業用イーサネット登録商標を用いることができる。産業用イーサネット登録商標としては、たとえば、EtherCAT登録商標、ProfinetIRT、MECHATROLINK登録商標-III、Powerlink、SERCOS登録商標-III、CIPMotionなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット登録商標以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、DeviceNet、CompoNet/IP登録商標などを用いてもよい。本実施の形態に係るPLCシステムSYSでは、典型的に、本実施の形態においては、産業用イーサネット登録商標であるEtherCAT登録商標をフィールドネットワーク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を介して、データを互いに遣り取りできるように構成される。なお、PLCサポート装置8については後述する。<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を有する。バッファメモリ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の規格に従い、出力データの送信および入力データの受信を制御する。上述したように、本実施の形態においてはEtherCAT登録商標規格に従うフィールドネットワーク2が採用されるので、通常のイーサネット登録商標通信を行なうためのハードウェアを含む、フィールドネットワークコントローラ140が用いられる。EtherCAT登録商標規格では、通常のイーサネット登録商標規格に従う通信プロトコルを実現する一般的なイーサネット登録商標コントローラを利用できる。但し、フィールドネットワーク2として採用される産業用イーサネット登録商標の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット登録商標コントローラが用いられる。また、産業用イーサネット登録商標以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。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の実行を制御する。本実施の形態に係るCPUユニット13では、モーション演算プログラム234に適した一定周期の実行サイクルモーション制御サイクルを処理全体の共通サイクルとして採用する。そのため、1つのモーション制御サイクル内で、すべての処理を完了することは難しいので、実行すべき処理の優先度などに応じて、各モーション制御サイクルにおいて実行を完了すべき処理と、複数のモーション制御サイクルに亘って実行してもよい処理とが区分される。スケジューラプログラム212は、これらの区分された処理の実行順序などを管理する。より具体的には、スケジューラプログラム212は、各モーション制御サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。出力処理プログラム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を含む。モーション制御サイクルの周期は、制御目的に応じて適宜設定することができる。典型的には、モーション制御サイクルの周期を指定する情報をユーザがPLCサポート装置8へ入力する。すると、その入力された情報は、PLCサポート装置8からCPUユニット13へ転送される。モーション制御サイクルの周期を設定するプログラム222は、PLCサポート装置8からの情報を不揮発性メモリ106に格納させるとともに、システムタイマ108から指定されたモーション制御サイクルの周期で割り込み信号が発生されるように、システムタイマ108を設定する。CPUユニット13への電源投入時に、モーション制御サイクルの周期を設定するプログラム222が実行されることで、モーション制御サイクルの周期を指定する情報が不揮発性メモリ106から読み出され、読み出された情報に従ってシステムタイマ108が設定される。モーション制御サイクルの周期を指定する情報の形式としては、モーション制御サイクルの周期を示す時間の値や、モーション制御サイクルの周期に関する予め用意された複数の選択肢のうちから1つを特定する情報番号または文字などを採用することができる。本実施の形態に係るCPUユニット13において、モーション制御サイクルの周期を設定する手段としては、モーション制御サイクルの周期を指定する情報を取得するために用いられるPLCサポート装置8との通信手段、モーション制御サイクルの周期を設定するプログラム222、ならびにモーション制御サイクルを規定する割り込み信号の周期を任意に設定可能に構成されているシステムタイマ108の構成といった、モーション制御サイクルの周期を任意の設定するために用いられる要素が該当する。リアルタイムOS200は、複数のプログラムを時間の経過に従い切り換えて実行するための環境を提供する。本実施の形態に係るPLC1においては、CPUユニット13のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力送信するためのイベント割り込みとして、出力準備割り込みPおよびフィールドネットワーク送信割り込みXが初期設定される。リアルタイムOS200は、出力準備割り込みPまたはフィールドネットワーク送信割り込みXが発生すると、マイクロプロセッサ100での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム212に切り換える。なお、リアルタイムOS200は、スケジューラプログラム212およびスケジューラプログラム212がその実行を制御するプログラムが何ら実行されていない場合に、その他のシステムプログラム210に含まれているプログラムを実行する。このようなプログラムとしては、たとえば、CPUユニット13とPLCサポート装置8との間の接続ケーブル10USBなどを介した通信処理に関するものが含まれる。<D.モーション制御の概略>次に、上述したユーザプログラム236に含まれる典型的な構成について説明する。ユーザプログラム236は、モータの運動に関する制御開始の条件が成立するか否かを周期的に判断させる命令を含む。たとえば、モータの駆動力によって何らかの処置がなされるワークが所定の処置位置まで搬送されたか否かを判断するようなロジックである。そして、ユーザプログラム236は、この制御開始の条件が成立したと判断されたことに応答して、モーション制御を開始させる命令をさらに含む。このモーション制御の開始に伴って、モーション命令の実行が指示される。すると、指示されたモーション命令に対応するモーション演算プログラム234が起動し、まず、モーション演算プログラム234の実行ごとにモータに対する指令値を算出していくために必要な初期処理が実行される。また、初期処理と同じモーション制御サイクルにおいて、第1サイクルでの指令値が算出される。したがって、初期処理および第1番目の指令値算出処理が、起動したモーション演算プログラム234が第1番目の実行においてなすべき処理となる。以降、各サイクルでの指令値が順次算出される。図4は、本発明の実施の形態に係る制御プログラム230ユーザプログラム236、シーケンス命令演算プログラム232およびモーション演算プログラム234によって提供されるモーション制御の概略の処理手順を示すフローチャートである。図4を参照して、マイクロプロセッサ100は、モータの運動に関する制御開始の条件が成立しているか否かを周期的に判断するステップS2。この制御開始の条件が成立しているか否かの判断は、ユーザプログラム236およびシーケンス命令演算プログラム232によって実現される。制御開始の条件が成立していない場合ステップS2においてNOの場合には、ステップS2の判断が繰り返される。制御開始の条件が成立している場合ステップS2においてYESの場合には、マイクロプロセッサ100は、モーション制御に関する初期処理を実行するステップS4。この初期処理としては、モータの運動の開始位置座標、終了位置座標、初期速度、初期加速度、軌跡などを算出処理が含まれる。続いて、マイクロプロセッサ100は、第1サイクルでの指令値の算出処理を実行するステップS6。さらに、マイクロプロセッサ100は、算出した指令値の出力処理を実行するステップS8。その後、マイクロプロセッサ100は、次のモーション制御サイクルが到来するまで待つステップS10。そして、マイクロプロセッサ100は、モータの運動に関する制御終了の条件が成立しているか否かを周期的に判断するステップS12。この制御終了の条件が成立しているとは、サーボモータ4が終了位置に到達している状態などをいう。制御終了の条件が成立している場合ステップS12においてYESの場合には、ステップS2以下の処理が再度繰り返される。このとき、起動中のモーション演算プログラム234は、新たな制御開始の条件が成立するまで不活性の状態に維持される。制御終了の条件が成立していない場合ステップS12においてNOの場合には、マイクロプロセッサ100は、現在のサイクルでの指令値の算出処理を実行するステップS14。さらに、マイクロプロセッサ100は、算出した指令値の出力処理を実行するステップS16。そして、ステップS10以下の処理が繰り返される。以下では、モーション制御を実現する為の機能モジュールを、モーション制御機能モジュールとも称する。具体的には、モーション制御機能モジュールとは、ユーザプログラムから与えられた目標値位置、速度、トルクなどを用いて、ユーザ所望のモーション動作を実現するために必要な、軸への指令値出力、および軸からの情報取得を一定の周期で実行する機能モジュールである。なお、モーション制御機能モジュールは、サーボドライバに対して指令値を出力するオープンループ型のコントローラである。また、モーション制御機能モジュールに対して指示を与える命令ファンクションブロック等のことを、モーション制御命令と称する。図5は、モーション制御命令とタスクとの関係を示した図である。具体的には、図5は、データフローを示した図である。図5を参照して、モーション制御機能モジュールは、高優先度定周期タスク中で実行される。モーション制御命令は、高優先度定周期タスクまたは低優先度定周期タスクに記述できる。高優先度定周期タスクは、CPUユニット13の中で最高優先度のタスクである。低優先度定周期タスク実行中に高優先度定周期タスクが実行可能になった場合、低優先度定周期タスクは一旦中断され、高優先度定周期タスクが実行される。高優先度定周期タスクの完了後、低優先度定周期タスクの実行が再開される。なお、低優先度定周期タスクの周期T2は、高優先度定周期タスクの周期T1の整数倍である。図5は、T2=2T1の場合を表している。図5においては、スケジューラプログラムをSCと、出力入力処理プログラムをOIと、ユーザプログラム236をUPRGと、モーション演算プログラム234をMCと表記している。また、図5では、説明の便宜上、各OI、各MCを識別するために、それぞれに異なる参照符合701~707を付している。データの大まかな流れの順序は、1スレーブ→OI701→MC702→OI703→サーボモータドライバ3、2MC704→OI705→サーボモータドライバ3、3MC706→OI707→サーボモータドライバ3である。以下、具体的に説明する。PLC1の実行中においては、マイクロプロセッサ100が、少なくとも、出力入力処理プログラム出力処理プログラム214および入力処理プログラム216と、ユーザプログラム236と、モーション演算プログラム234とが実行可能な状態になっている。厳密に言えば、リアルタイムOS200がそれぞれのプログラムに係るプロセスまたは、スレッドを実行可能な状態に保持しており、スケジューラプログラム212がリアルタイムOS200およびハードウェアリソースシステムタイマ108などを利用することで、各プログラムが適切なタイミングかつ適切な順序で実行される。このように、それぞれのプログラムに係る実行の開始/中断/終了などは、スケジューラプログラム212によって制御される。図5において、スレーブからOI701への入力INに基づき、フィールドネットワークコントローラ140図2参照がモーション制御用入力データを受信してメインメモリ104のフィールドネットワーク受信バッファ図示せずに当該入力データを格納、および/または、PLCシステムバスコントローラ120が、モーション制御用入力データを受信してメインメモリ104のPLCシステムバス受信バッファ図示せずに当該入力データを格納する。なお、CPUユニット13がマスタであり、CPUユニット13以外のそれぞれのユニットが、スレーブに設定される。また、IO処理プログラム218の命令に従って、起動指令データまたはモーション指令値データが出力される。より具体的には、メインメモリ104の制御プログラムの作業領域図示せずに格納されている起動指令データおよびモーション指令値データがメインメモリ104のフィールドネットワーク送信バッファ図示せずへ転送される。さらに、フィールドネットワーク送信バッファへのデータ転送に続いて、フィールドネットワークコントローラ140が起動指令データまたはモーション指令値データをサーボモータドライバ3へ送信する。なお、上記のスレーブからOI701への入力INでは、ユーザプログラム236での演算には使用されるが、モーション演算プログラム234での演算には使用されない入力データについても入力され得る。また、ユーザプログラム236の実行により生成されるユーザプログラム出力データは、モーション演算プログラム234での演算には使用されない出力データであっても、IO処理プログラム218へ送られて、OIの処理において出力される。本実施の形態に係るモーション制御サイクルは、モーション演算プログラム234の実行および通信の周期、すなわち、サーボモータドライバ3へモーション指令値データを与える周期で実行される一連の処理のサイクルである。<E.電子カム>以下では、同期制御の機能として、電子カム動作について説明する。同期制御とは、主軸入力軸の位置に同期して従動軸制御対象軸の位置を制御することである。主軸としては、フルクローズドループ制御用のエンコーダの位置、サーボドライバおよび仮想サーボドライバの指令位置、並びに、エンコーダ、サーボドライバ、および仮想サーボドライバのフィードバック位置のうちのいずれかを指定できる。また、電子カム動作とは、後述するカムテーブルによって設定されたカムパターンに従い、制御周期でカム動作を行なう機能をいう。CPUユニット13は、制御周期毎に入力に同期して演算することによって出力を制御するため、演算結果がモーション制御機能モジュールで出力可能な最高速度を上回る場合もある。しかしながら、この場合には、CPUユニット13は、エラーとはせずに、最高速度の出力を行なう。CPUユニット13は、最高速度、最高で飽和することにより不足する移動量は次の制御周期以降において、分配して出力する。図6は、電子カムの機能概要を表した図である。図6を参照して、電子カム500は、電子カム演算部501と、補間部502と、スイッチ部503とを備える。電子カム演算部501には、フルクローズドループ制御用のエンコーダの位置、サーボドライバおよび仮想サーボドライバの指令位置、並びに、エンコーダ、サーボドライバ、および仮想サーボドライバのフィードバック位置のうち、予め選択された位置が入力される。電子カム演算部501は、入力された主軸の位相とカムテーブルとに基づき、従動軸の変位を補間部502に出力する。補間部502は、電子カム演算部501から出力された値を用いて補間処理を行なう。補間部502は、補間処理後の値指令位置を、スイッチ部503を介して出力する。カムテーブルは、不揮発性メモリ106に予め格納されており、電源投入に伴い、メインメモリ104に展開される。図7は、電子カム500の動作を視覚的に説明するための図である。具体的には、図7は、カムテーブルに基づいたカム曲線で表される機械式カム500Aを含んだカム機構MEを表した図である。図7を参照して、カム機構MEは、主軸400と、機械式カム500Aと、従動軸600とを備えている。機械式カム500Aは、主軸400に固定されており、主軸400の回転に伴い回転する。従動軸600は、機械式カム500Aの回転に伴い、直線運動を行なう。つまり、カム機構MEにおいては、主軸の位相入力が変化すると、従動軸600が変位出力する。このようなカム機構MEにおける入出力を、ソフトウェアにて実現したものが電子カム500である。図8は、電子カム500のカム曲線510を示した図である。図8を参照して、カム曲線510は、位相が0から増加するに連れて変位が0から増加し、半周期における位相180度で変位はピークを迎える。その後、位相の増加に連れて変位が減少し、1周期における位相360度で変位は0となる。なお、カム曲線510は、例示であって、PLCシステムSYSで利用されるカム曲線は、これに限定されるものではない。図9は、電子カム500に関するシステム構成を表した図である。図9は、図6の電子カム500をより詳しく示した図である。図9を参照して、電子カム500に関するシステムは、電子カム演算部501と、補間部502と、スイッチ部503と、カムテーブル読込部504と、スムージング処理部505と、複数のカムテーブルとにより実現される。なお、図9は、電子カム500に対して、エンコーダ19から主軸指令位置エンコーダ位置が入力される例を示している。複数のカムテーブルの各々には、詳細については後述するが、主軸の位相と従動軸の変位との関係が定義されている。CPUユニット13においては、ユーザは、電子カム動作の開始時に所望のカムテーブルを指定できる。マイクロプロセッサ100は、ユーザから指示に基づき、複数のカムテーブルの中から利用するカムテーブルを選択する。マイクロプロセッサ100は、電子カム動作の開始指示を受け付けると、カムテーブル読込部504が主軸の位相と従動軸の変位とを読み込む。マイクロプロセッサ100は、電子カムの動作中は、制御周期ごとに主軸の位相を取得し、カムテーブルに定義された変位となるように従動軸の位置を指令する。電子カム500は、スムージング処理部505によって、後述するスムージング処理を実行することができる。なお、CPUユニット13においては、スイッチ部503により、スムージング処理を行なうか否かを選択可能に構成されている。電子カム500は、サーボモータドライバ3に対して従動軸指令位置を出力する。スムージング処理を行なう場合には、補間部502からの出力に対してスムージング処理を行なった後の出力が、従同軸指令位置となる。また、スムージング処理を行なわない場合には、補間部からの出力が、従動軸指令位置となる。また、詳細については後述するが、ユーザは、従動軸の停止中においても電子カムの動作中においても、カムテーブルを変更する指示を入力できる。図10は、カムテーブル520のデータ構造を表した図である。より詳しくは、図10は、PLCサポート装置8に格納されているカムテーブル編集ソフトウェアにより作成されるカムテーブルのデータ構造を表した図である。図10を参照して、カムテーブル520は、電子カムの主軸の位相の各々に対して当該電子カムの従節の変位を対応付けたデータである。つまり、カムテーブル520は、離散的なデータである。カムテーブル520におけるデータを用いて直線補完すると、図8に示したカム曲線510となる。当該直線補間は、図6の補間部502によってなされる。カムテーブル520では、0度から360度までの位相を、最大カムデータ数に区分して記述できる。カムテーブル520では、0.1度刻みで位相が記述されている。なお、カムデータとは、1つの変位と1つの位相とで構成されるデータである。つまり、カムテーブル520は、複数のカムデータを含む。なお、変位δの単位は、たとえば、mmである。また、カムテーブルにおいて、位相および変位の値の各々が0となっている最初のカムデータが、カムテーブル始点である。この箇所をインデックス0番とする。次に位相および変位の値の各々が次に0となる箇所よりも1つ前つまり、1つ上のカムデータが、カムテーブルの終点である。つまり、カムテーブルの始点からカムテーブルの終点まで0度から360度までの位相の範囲のデータが、有意なカムデータである。有意なカムデータとは、電子カムの動作に影響を与えるカムデータである。カムデータの識別子であるインデックスの番号は、有意なカムデータに対して付与される。インデックスの番号は、カムテーブルにおいて昇順に付与される。また、カムテーブルの終点よりも後つまり、下のカムデータは、電子カムの動作に影響を与えないカムデータつまり、有意でないカムデータである。なお、有意でないカムデータは、位相と変位との両方が0である必要はない。有意でないカムデータの数は、カムテーブル編集ソフトにより指定される。図11は、電子カム500が適用される液体充填装置900の一例を示した図である。図11を参照して、液体充填装置900は、複数の容器990を矢印911の方向に搬送するコンベア910と、液体を注入する注入管930と、注入管930を矢印921に沿って回転させるターンテーブル920とを備える。注入管930は、ターンテーブル920の回転に伴い、電子カムによって矢印931に示す方向にストローク運動する。つまり、液体充填装置900では、矢印911への移動を行わせるための軸910aが主軸に該当し、注入管930が主軸に同期したカム動作を行なう従軸に該当する。図12は、図8に示したカム曲線510とは異なるカム曲線560を示した図である。図12を参照して、カム曲線560は、位相が0から増加するに連れて変位が0から増加し、位相140度付近で変位はピークを迎える。その後、位相の増加に連れて変位が減少し、位相290度付近で変位が増加に転じる。さらに、位相310度付近で位相が減少に転じ、1周期における位相360度で変位は0となる。このように、カム曲線560は、カム曲線510とは異なる曲線である。なお、カム曲線560は、例示であって、カム曲線510と異なる曲線であればよい。図13は、カムテーブル570を表した図である。図13を参照して、カムテーブル570は、電子カムの主軸の位相の各々に対して当該電子カムの従節の変位を対応付けたデータである。つまり、カムテーブル570は、カムテーブル520と同様に、離散的なデータである。カムテーブル570におけるデータを用いて直線補完すると、図12に示したカム曲線560となる。当該直線補間は、図6の補間部502によってなされる。なお、上述したように、カムテーブル520とカムテーブル570とは、不揮発性メモリ106に予め格納されており、電源投入に伴い、メインメモリ104に展開される。図14は、カムテーブルの切り換え処理を説明するための図である。詳しくは、図14は、CPUユニット13がカムテーブル520に基づいた処理を行っている最中に、CPUユニット13が、カム動作に用いるカムテーブルをカムテーブル520からカムテーブル570に切り換える処理を説明するための図である。図14aは、切り換え前のカムテーブル520に基づくカム曲線510と、切り換え後のカムテーブル570に基づくカム曲線560とを表した図である。図14bは、カムテーブルの切り換え前後における電子カムの動作を説明するための図である。図14aを参照して、カム曲線510における位相θaの変位はδ1であり、カム曲線560における位相θaの変位はδ2δ2>δ1である。図14bを参照して、CPUユニット13は、位相θaに対応する時点でカムテーブルをカムテーブル520からカムテーブル570に切り換える指令を受付けた場合、カムテーブル520を用いた1つの制御周期が終了していなくても、当該周期においてカムテーブル570を用いた処理を開始する。より詳しくは、CPUユニット13は、カム曲線510の位相θaに対応する時点でカムテーブルを切り換える指令を受け付けた場合、カム曲線560の位相θaの近傍である位相θbθb>θaからカム動作を続行する。具体的には、CPUユニット13は、カムテーブルをカムテーブル520からカムテーブル570に切り換える場合、当該切り換え時におけるカムテーブル520における位相と連続性を有するような、当該切り換え時におけるカムテーブル570における位相から、カムテーブル570を用いた制御を開始する。このため、図14bに示す切り換えにおいては、カムテーブルの切り換えが行なわれる制御周期図14bの真ん中の周期では、位相θaの時点において、指令値である変位δの値がδ1からδ2に急激に変化することになる。図15は、カムテーブルを切り換えるためのユーザインターフェイスを表した図である。また、図15は、PLCコントローラで一般的に使用されているラダー言語とファンクションブロックとを用いた場合の、切り換え命令の記述例を示している。図15を参照して、カムテーブルの切り換えは、PLCサポート装置8を用いて行なわれる。具体的には、ユーザがPLCサポート装置8のディスプレイ87を参照しつつ、カムテーブルの切り換えを指示する入力を行なうことにより、メインメモリ104に展開されているカムテーブルの切り換えが実行される。ディスプレイ87には、3つの領域801~803が表示される。領域801は、選択可能な項目が表示されるメニュー領域である。領域802は、ユーザが入力する領域である。領域802には、複数の電子カムのうち電子カムNo.1に用いるカムテーブルをカムテーブルNo.1からカムテーブルNo.2に切り換えるための指令がユーザにより記述される。たとえば、カムテーブル520がカムテーブルNo.1に対応し、カムテーブル570がカムテーブルNo.2に対応する。領域803には、領域802における記述に従い、実行される処理内容が表示される。マイクロプロセッサ100は、ラダープログラム中に、カム動作開始のインスタンスカムNo.1を2つ記述する。マイクロプロセッサ100は、1つ目のインスタンスではカムテーブルNo.1を指定し、2つ目のインスタンスではカムテーブルNo.2を指定する。マイクロプロセッサ100は、1つ目のインスタンスの動作中、かつ接点_2をTRUEにしたときに、2つ目のインスタンスを実行することにより、利用するカムテーブルをカムテーブル1からカムテーブルNo.2に切り換る。なお、カムテーブルの切り換え命令は、ラダー言語の代わりに、STStructureText言語を用いてもよい。図16は、図15に示したカムテーブルの切り換えのタイミングチャートを表した図である。図16を参照して、時刻t1において接点_1がTRUEとなり、時刻t2t1<t2において、CPUユニット13は、カムテーブルNo.1を用いたモーション制御を開始する。時刻t3t2<t3において、接点_2がTRUEとなる。接点_2がTRUEとなると、カムテーブルNo.1を用いたモーション制御からカムテーブルNo.2を用いたモーション制御へと制御内容を切り換える。電子カム動作中にユーザがカムテーブルの切り換え指示を出した場合、カムテーブル読込部504は、新しいカムテーブルを読み込み、カムテーブル切り換え指示を受け付けた時点での主軸の位置pつまり、変位と、新しいカムテーブルに定義された主軸の位置とを比較し、pよりも大きい位置よりカム動作を継続する。たとえば、カムテーブル520と、カムテーブル570とでは、位相の値が一致している。この場合、たとえば、図14に示すとおり、カムテーブル520の位相θaで切り換えの指示が入力された場合図16においては、接点_2がTRUEになった場合、マイクロプロセッサ100は、位相θaよりも大きなカムテーブル570の位相に対応付けられた変位を用いて、モーション演算プログラム234を実行する。マイクロプロセッサ100は、たとえば、カムテーブル570における位相θaの次の位相θa0.1°に対応付けられた変位を用いて、モーション演算プログラム234を実行する。その後は、マイクロプロセッサ100は、位相θa0.1を開始点とした、位相の昇順に基づく処理を行なう。図17は、カムテーブルの切り換え時における処理について説明するための図である。図17を参照して、カムテーブルを現在使用しているカムテーブルNo.i図示せずからカムテーブルNo.jに変更する場合において、カムテーブルの切り換え指示時の主軸の位相が200°であったとする。また、カムテーブルNo.jの位相、180°の次が210°であったとする。なお、i,jは、自然数である。この場合には、CPUユニット13は、従動軸である制御対象機器の変位位置が、200°よりも大きな210°の位相に対応付けられた100mmとなるように、制御対象機器に対して指令値を出力する。もし、ユーザがカムテーブル切り換え時に、後述するスムージング機能の使用を指定した場合、スムージング処理部505は、カムテーブル切り換え時に発生する従軸指令位置の急激な変化を抑制するように従軸指令位置を滑らかに変化させるための処理を行なう。これにより、従動軸のサーボドライバがハンチングすることを防止できる。つまり、カムテーブル切り換え時において、従動軸の振動発生を低減できる。図18は、カムテーブルを切り換える手順を示したフローチャートである。図18を参照して、ステップS102において、マイクロプロセッサ100は、複数の電子カムの中から、カムテーブルを切り換える電子カムの指定を受け付けたか否かを判断する。マイクロプロセッサ100は、受け付けていないと判断した場合ステップS102においてNO、処理をステップS110に進める。マイクロプロセッサ100は、受け付けたと判断した場合ステップS102においてYES、ステップS104において、切り換え後に用いるカムテーブルの指定を受け付けたか否かを判断する。マイクロプロセッサ100は、受け付けていないと判断した場合ステップS104においてNO、処理をステップS110に進める。マイクロプロセッサ100は、受け付けたと判断した場合ステップS104においてYES、ステップS106において、指定された電子カムたとえば、電子カムNo.1で使用するカムテーブルを、現在使用しているカムテーブルたとえば、カムテーブル520から、指定されたカムテーブルたとえば、カムテーブル570に切り換える。ステップS108において、マイクロプロセッサ100は、切り換え後のカムデータを用いたモーション制御を実行する。ステップS110において、マイクロプロセッサ100は、指定された電子カムを用いた制御が終了したか否かを判断する。マイクロプロセッサ100は、終了したと判断した場合ステップS108においてYES、一連の処理を終了する。マイクロプロセッサ100は、終了していないと判断した場合ステップS108においてNO、処理をステップS102に進める。ところで、カムテーブルを切り換える制御命令は、高優先度定周期タスクにカムテーブルを切り換える制御命令を記述してもよいし、あるいは、低優先度定周期タスクに当該制御命令を記述してもよい。図19は、高優先度定周期タスクにカムテーブルを切り換える制御命令を記載したときのデータフローを表した図である。図19を参照して、UPRG710に、カムテーブルを切り換える制御命令FBFunctionBlock711が記述される。この場合におけるデータの大まかな流れの順序は、1スレーブ→OI701→FB711→MC702→OI703→サーボモータドライバ3、2MC704→OI705→サーボモータドライバ3、3MC706→OI707→サーボモータドライバ3である。図20は、低優先度定周期タスクにカムテーブルを切り換える制御命令を記載したときのデータフローを表した図である。図20を参照して、UPRG720に、カムテーブルを切り換える制御命令FBFunctionBlock721,722が記述される。この場合におけるデータの大まかな流れの順序は、スレーブ→OI701→MC702→UPRG720FB721,722→OI706→OI707→サーボモータドライバ3である。変形例ところで、図14bにおいては、上述したように、カムテーブルの切り換えが行なわれる周期では、位相θaの時点において、指令値である変位δの値がδ1からδ2に急激に変化することになる。このような急激な変化は好ましくない。また、位相θa近傍におけるCPUユニット13による演算結果が、モーション制御機能モジュールで出力可能な最高加速度、最高減速度、および/または最高加加速度を上回る場合には、図14bに示した急激な変位の変化どおりの制御はできない。このような理由から、カムテーブルの切り換えが行なわれた制御周期においては、カムテーブル570のデータを平滑化処理することにより得られたカムテーブルを用いた制御を行なうことが好ましい。なお、以下では、説明の便宜上、カムテーブル570のデータを平滑化処理することにより得られたカムテーブルを、カムテーブル570Aと称する。また、なお、カムテーブル570Aに基づくカム曲線を、カム曲線560Aと称する。図21は、カムテーブルの切り換え前後における電子カムの動作を説明するための図である。詳しくは、図21は、CPUユニット13がカムテーブル520に基づいた処理を行っている最中に、CPUユニット13が、カム動作に用いるカムテーブルをカムテーブル520からカムテーブル570に切り換えたときの電子カムの動作を説明するための図である。図21を参照して、マイクロプロセッサ100は、カムテーブル520からカムテーブル570への切り換え指令を受け付けると、当該指令を受け付けた制御周期において、カムテーブル570の代わりにカムテーブル570Aを用いた処理を実行する。マイクロプロセッサ100は、カムテーブル570Aを1度用いると、次の制御周期では、カムテーブル570Aの代わりにカムテーブル570を用いた処理を実行する。このように、CPUユニット13は、カムテーブルを切り換える指示を受け付けた制御周期においては、平滑化されたカムテーブルを用いることにより、急激な変位の変化が生じることを低減することができる。上記の平滑化処理は、不揮発性メモリ106に予め格納された平滑化フィルタをマイクロプロセッサ100が用いることにより実現される。平滑化フィルタは、急激な変化を平滑にするため、ローパス特性を有することが好ましい。ローパス特性を有する代表的な平滑化フィルタとして、たとえば、一次遅れフィルタ、高次遅れフィルタ、移動平均フィルタが挙げられる。図22は、スムージング処理に関する処理の流れを示したフローチャートである。当該フローチャートに示した処理は、図18のステップS108において実行される。図22を参照して、ステップS202において、マイクロプロセッサ100は、スムージング処理を実行するか否かを判断する。当該判断の手法については、後述する図23。マイクロプロセッサ100は、スムージング処理を実行すると判断した場合ステップS202においてYES、ステップS204においてスムージング処理を行なう。マイクロプロセッサ100は、スムージング処理を実行しないと判断した場合ステップS202においてNO、一連の処理を終了する。ステップS206において、マイクロプロセッサ100は、電子カムの1周期カム周期とも称するが終了したか否かを判断する。つまり、マイクロプロセッサ100は、カムテーブルの切り換え時を含んだ周期が終了したか否かを判断する。マイクロプロセッサ100は、終了したと判断した場合ステップS206においてYES、ステップS208において、移動量に残量があるか否かを判断する。マイクロプロセッサ100は、終了していないと判断した場合ステップS206においてNO、処理をステップS204に進める。マイクロプロセッサ100は、残量があると判断した場合ステップS208においてYES、ステップS210において、次の電子カムの周期に移動量の不足分を補うための持ち越し処理を実施するか否かを判断する。当該判断の手法についても、後述する図23。マイクロプロセッサ100は、持ち越し処理をすると判断した場合ステップS210においてYES、処理をステップS204に進める。マイクロプロセッサ100は、持ち越し処理をしないと判断した場合ステップS210においてNO、スムージング処理の実行を停止する。つまり、マイクロプロセッサは、次の電子カムの周期においては、スムージング処理を行なわない。スムージング処理部505は、上記のような平滑化処理を行なう場合、たとえば、伝達関数Gsが以下の式1となる1次遅れフィルタを用いればよい。Gs=1/T×s1...1式1におけるTは時定数である。Tの値が大きいほど、滑らかに平滑化される。なお、一般的にローパスフィルタは信号の位相が遅れる特性がある。また、位相の遅れ度合と平滑度とは、トレードオフの関係にある。カムテーブルの切り換え後に、当該位相遅れをなくした場合には、Tを小さく設定する必要がある。図26は、平滑化フィルタを用いた場合における、図15に示したカムテーブルの切り換えのタイミングチャートを表した図である。図26を参照して、時刻t1において接点_1がTRUEとなり、時刻t2t1<t2において、CPUユニット13は、カムテーブルNo.1を用いたモーション制御を開始する。時刻t3t2<t3において、接点_2がTRUEとなる。接点_2がTRUEとなると、カムテーブルNo.1を用いたモーション制御からカムテーブルNo.2および平滑化フィルタを用いたモーション制御へと制御内容を切り換える。ところで、上記においては、カムテーブル570のデータを平滑化処理することにより得られたカムテーブルを用いた制御を行なう場合について説明したが、これに限定されない。カム曲線を切り換える場合に、双方の曲線を接続するための切り換え区間を設け、その間を多項式曲線で接続することによって、不連続な従軸位置指令を発生させずに、滑らかな切り換えを行なうように、CPUユニット13を構成してもよい。図27は、多項式曲線を用いる場合における、電子カム500に関するシステム構成を表した図である。図27を参照して、電子カム500に関するシステムは、電子カム演算部501と、補間部502と、スイッチ部503と、カムテーブル読込部504と、スムージング処理部505と、複数のカムテーブルと、スイッチ部506と、多項式曲線演算部507とにより実現される。なお、図27は、図9と同様に、電子カム500に対して、エンコーダ19から主軸指令位置エンコーダ位置が入力される例を示している。スイッチ部506は、電子カム演算機能と多項式曲線演算機能とを切り換えるための回路である。CPUユニット13は、以下の処理を行なう。まず、電子カム500に関するシステムCPUユニット13は、カムテーブルの切り換え前は、スイッチ部506を電子カム演算部501に接続する。電子カム500に関するシステムは、カムテーブルの切り換え指示を受け付けた場合、スイッチ部506を多項式曲線演算部507に接続する。次いで、電子カム500に関するシステムは、切り換え区間の主軸距離位相幅を設定し、当該主軸距離をΔPとする。電子カム500に関するシステムは、主軸位置が、切り換え開始位置からΔP以上変化したときに、スイッチ506を電子カム演算部501に再接続する。以下に、文献CamDesignandManufacturingHandbookSecondEditionに記載されたB-SPLINEの式において、B-SPLINE5次における従動軸指令演算を行なった例を示す。i電子カム500は、切り換え時の主軸位置、従軸変位、従軸速度、および従軸加速度を、それぞれ、P1、S1,V1,A1とする。ii電子カム500は、切り換え後のカム曲線が主軸位置P1ΔPにあるときの従軸変位、従軸速度、および従軸加速度の変位を求め、それらを、S2,V2,A2とする。iii電子カム500は、主軸位置P従軸指令位置Sとしたときの多項式曲線を、以下の式2とする。SP=C1C2×PC3×P^2C4×P^3C5×P^4C6×P^5...2ただし、C1~C5は以下の境界条件を満足する係数である。なお、^ハットマークは、べき乗計算を示す演算子である。SP1=S1S’P1=V1S’’P1=A1SP2=S2S’P2=V2S’’P2=A2なお、’は、微分を表す演算子である。iv式2を用いて、電子カム500は、切り換え区間における従動軸指令位置を演算する。図28は、多項式を用いた場合における、図15に示したカムテーブルの切り換えのタイミングチャートを表した図である。図28を参照して、時刻t1において接点_1がTRUEとなり、時刻t2t1<t2において、CPUユニット13は、カムテーブルNo.1を用いたモーション制御を開始する。時刻t3t2<t3において、接点_2がTRUEとなる。接点_2がTRUEとなると、CPUユニット13は、多項式を用いた平滑化処理を行なう。CPUユニット13は、切り換え区間t3~t4が経過すると、カムテーブルNo.1を用いたモーション制御からカムテーブルNo.2を用いたモーション制御へと制御内容を切り換える。図23は、スムージング処理を行なう場合のスムージングパターンを説明するための図である。カムテーブルの切り換え時におけるスムージング処理方法をユーザが指定する場合、たとえば、上述したファンクションブロック方式の命令を用いる。具体的には、ユーザは、命令MCCamInにスムージングパターンを指定するための入力変数CamTransitionを追加する。CamTransitionは、たとえば列挙子型であり、図23に示したスムージングパターンのいずれかを指定できる。列挙子がmcCTNoneである場合、マイクロプロセッサ100は、スムージング処理を行なわない。列挙子がmcCTMaxAccDecである場合、マイクロプロセッサ100は、最大加速度で抑制する。この場合、カムの1周期で終わらない場合には、エラーを出力する。列挙子がmcCTMaxAccDecCyclicである場合、マイクロプロセッサ100は、最大加速度で抑制する。この場合、カムの1周期で終わらないときには、不足分つまり、残量を次サイクルで処理する。つまり、CPUユニット13は、持ち越し処理をする。列挙子がmcCTFilteringである場合、マイクロプロセッサ100は、平滑化フィルタを使用する。この場合、マイクロプロセッサ100は、カムの1周期で終わらないときには、エラー出力をする。列挙子がmcCTFilteringCyclicである場合、マイクロプロセッサ100は、平滑化フィルタを使用する。この場合、マイクロプロセッサ100は、カムの1周期で終わらないときには、不足分を次サイクルで処理する。列挙子がmcCTPoly5である場合、マイクロプロセッサ100は、5次多項式で補間処理を行なう。なお、ここでは5次多項式を例に挙げているが、マイクロプロセッサ100が3次以上の多項式で補間処理を行なう構成であればよい。<F.CPUユニットのまとめ>1CPUユニット13は、モーション制御とシーケンス制御とを実行する、PLCの演算ユニットである。CPUユニット13は、マイクロプロセッサ100と、電子カム500の主軸の位相の各々に対して当該電子カムの従節の変位を対応付けたカムテーブルを用いたモーション制御を行なうための制御プログラム230と、カムテーブル520およびカムテーブル570とを格納したメモリとを備える。マイクロプロセッサ100は、カムテーブル520を用いて制御プログラム230を実行し、当該実行結果を従節に対応する制御対象機器に出力する。マイクロプロセッサ100は、制御プログラム230の実行中に予め定められた指示を受け付けると、制御プログラム230の実行に用いるカムテーブルをカムテーブル520からカムテーブル570に切り換える。マイクロプロセッサ100は、当該切り換えに基づき、カムテーブル570を用いた制御プログラム230の実行結果を制御対象機器に出力する。これにより、CPUユニット13は、カムテーブルの切り換えを迅速に行なうことが可能となる。2上記メモリは、不揮発性メモリ106と、揮発性のメインメモリ104とを含む。不揮発性メモリ106は、カムテーブル520とカムテーブル570とを格納している。マイクロプロセッサ100は、カムテーブル520とカムテーブル570とを不揮発性メモリ106から読み出して、当該読み出したカムテーブル520,570をメインメモリ104に展開する。マイクロプロセッサ100は、上述した予め定められた指示を受け付ける前は、展開されたカムテーブル520を用いて制御プログラム230を実行する。マイクロプロセッサ100は、展開後に上記予め定められた指示を受け付けると、展開されたカムテーブル570を用いて制御プログラム230を実行する。マイクロプロセッサ100は、カムテーブル520,570を揮発性のメインメモリ104に展開した後に、使用するカムテーブルをカムテーブル520からカムテーブル570に切り換える。このため、CPUユニット13は、切り換える際に、カムテーブル570を不揮発性メモリ106から読み出す構成に比べて、カムテーブルの切り換え処理を迅速に行なうことができる。3マイクロプロセッサ100は、制御プログラム230の実行に用いるカムテーブルをカムテーブル520からカムテーブル570に切り換える場合、当該切り換え時におけるカムテーブル520における位相よりも大きなカムテーブル570の位相に対応付けられた変位を用いて制御プログラム230を実行する。これにより、CPUユニット13は、位相に関して連続した処理を行なうことができる。4上記メモリは、加速度に関する上限値と、減速度に関する上限値とを、さらに格納している。マイクロプロセッサ100は、切り換え直後における制御対象機器の加速度が加速度に関する上限値を超える場合、前記制御対象機器の加速度を前記加速度に関する上限値に制限する。マイクロプロセッサ100は、切り換え直後における制御対象機器の減速度が減速度に関する上限値を超える場合、制御対象機器の減速度を減速度に関する上限値に制限する。これにより、CPUユニット13は、ユーザが意図していない急激な加速/減速を伴う制御対象機器の移動を防止することができる。5上記メモリは、カムテーブルを平滑化する平滑化フィルタをさらに格納している。マイクロプロセッサ100は、切り換え直後においては、カムテーブル570における変位を平滑化フィルタによってスムージング処理する。これにより、CPUユニット13は、カムテーブルの切り換え時に、制御対象機器のスムーズな移動を実現することができる。6上記メモリは、3次以上の高次多項式をさらに格納している。マイクロプロセッサ100は、切り換え直後においては、カムテーブル570における変位を高次多項式によってスムージング処理する。これにより、CPUユニット13は、カムテーブルの切り換え時に、制御対象機器のスムーズな移動を実現することができる。7マイクロプロセッサ100は、カムテーブル570の変位を出力しない制御を行なうことによって生じる制御対象機器の移動量の不足分を、モーション制御における電子カムの1または複数のカム周期において補う処理をする。これにより、CPUユニット13は、たとえば平滑化処理の実行をする場合、および/または上述した加減速度についての上限値が設定されている場合であっても、制御対象機器の移動量の不足を低減あるいは無くすことができる。8マイクロプロセッサ100は、1つのカム周期において移動量の不足分を補うことができない場合には、エラーとして処理するか、または次のカム周期においても不足分を補う処理を行なわせるかを指定する命令を受け付ける。これにより、1つのカム周期において移動量の不足分を補うことができない場合において、ユーザは、エラーとしてたとえば処理を停止させるか、あるいは次のカム周期において不足分を補う処理を行なわせるかを選択することができる。9制御プログラム230は、モーション演算プログラム234と、モーション演算プログラム234に対して当該モーション演算プログラム234の実行に必要な指示を与える処理を行なうユーザプログラム236とを含む。マイクロプロセッサ100は、モーション演算プログラム234の実行を、定周期T1毎に繰り返し、ユーザプログラム236を、定周期T1の整数倍となる定周期T2毎に繰り返す。ユーザプログラム236のうち上記切り換えを行なうためのプログラムは、定周期T1のタスクまたは定周期T2のタスクに記述される。これにより、高優先度定周期タスクまたは低優先度定周期タスクにカムテーブルを切り換える制御命令を記載できる。とこで、図1に示したように、PLCシステムSYSにおいては、PLC1のCPUユニット13が、モーション制御とシーケンス制御とを実行する構成である。より詳しくは、CPU13のマイクロプロセッサ100図2参照が、モーション制御とシーケンス制御とを実行する。しかしながら、CPUユニット13として、モーション制御用のユニットとシーケンス制御用のユニットとを別々に設けておき、モーション制御とシーケンス制御とを異なるプロセッサマイクロプロセッサにより実行してもよい。つまり、モーション制御用のユニットのプロセッサにモーション制御を実行させ、シーケンス制御用のプロセッサにシーケンス制御を実行させればよい。あるいは、マイクロプロセッサ100として、デュアルコアのプロセッサまたはマルチコアのプロセッサを利用する場合、1つのコアにモーション制御を実行させ、残りのコアのいずれかにシーケンス制御を実行させるように、CPUユニット13を構成してもよい。<G.サポート装置>次に、PLC1で実行されるプログラムの作成およびPLC1のメンテナンスなどを行なうためのPLCサポート装置8について説明する。図24は、本発明の実施の形態に係るCPUユニットに接続して用いられるPLCサポート装置8のハードウェア構成を示す模式図である。図24を参照して、PLCサポート装置8は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。図24を参照して、PLCサポート装置8は、OSを含む各種プログラムを実行するCPU81と、BIOSや各種データを格納するROMReadOnlyMemory82と、CPU81でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリRAM83と、CPU81で実行されるプログラムなどを不揮発的に格納するハードディスクHDD84とを含む。PLCサポート装置8は、さらに、ユーザからの操作を受付けるキーボード85およびマウス86と、情報をユーザに提示するためのディスプレイ87とを含む。さらに、PLCサポート装置8は、PLC1CPUユニット13などと通信するための通信インターフェイスIFを含む。後述するように、PLCサポート装置8で実行される各種プログラムは、CD-ROM9に格納されて流通する。このCD-ROM9に格納されたプログラムは、CD-ROMCompactDiskReadOnlyMemoryドライブ88によって読取られ、ハードディスクHDD84などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。上述したように、PLCサポート装置8は、汎用的なコンピュータを用いて実現されるので、これ以上の詳細な説明は行わない。図25は、本発明の実施の形態に係るCPUユニットに接続して用いられるPLCサポート装置8のソフトウェア構成を示す模式図である。図25を参照して、PLCサポート装置8ではOS310が実行され、PLCサポートプログラム320に含まれる各種のプログラムを実行可能な環境が提供される。PLCサポートプログラム320は、エディタプログラム321と、コンパイラプログラム322と、デバッガプログラム323と、シミュレーション用シーケンス命令演算プログラム324と、シミュレーション用モーション演算プログラム325と、通信プログラム326とを含む。PLCサポートプログラム320に含まれるそれぞれのプログラムは、典型的には、CD-ROM9に格納された状態で流通して、PLCサポート装置8にインストールされる。エディタプログラム321は、ユーザプログラム236を作成するための入力および編集といった機能を提供する。より具体的には、エディタプログラム321は、ユーザがキーボード85やマウス86を操作してユーザプログラム236のソースプログラム330を作成する機能に加えて、作成したソースプログラム330の保存機能および編集機能を提供する。また、エディタプログラム321は、外部からのソースプログラム330の入力を受付ける。コンパイラプログラム322は、ソースプログラム330をコンパイルして、CPUユニット13のマイクロプロセッサ100で実行可能なオブジェクトプログラム形式のユーザプログラム236を生成する機能を提供する。また、コンパイラプログラム322は、ソースプログラム330をコンパイルして、PLCサポート装置8のCPU81で実行可能なオブジェクトプログラム形式のユーザプログラム340を生成する機能を提供する。このユーザプログラム340は、PLCサポート装置8によってPLC1の動作をシミュレート模擬するために使用される、シミュレーション用のオブジェクトプログラムである。デバッガプログラム323は、ユーザプログラムのソースプログラムに対してデバッグを行なうための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。デバッガプログラム323は、さらに、シミュレーション用のオブジェクトプログラムであるユーザプログラム340を実行する機能を提供する。このシミュレーション時には、CPUユニット13のシステムプログラムに含まれるシーケンス命令演算プログラム232およびモーション演算プログラム234に代えて、PLCサポートプログラム320に含まれるシミュレーション用シーケンス命令演算プログラム324およびシミュレーション用モーション演算プログラム325が用いられる。通信プログラム326は、PLC1のCPUユニット13へユーザプログラム236を転送する機能を提供する。一般的には、PLC1に実装されるシステムプログラム210は、CPUユニット13の製造段階でCPUユニット13の不揮発性メモリ106へ格納される。但し、CD-ROM9にシステムプログラム210を格納しておけば、ユーザは、CD-ROM9のシステムプログラム210をPLCサポート装置8へコピーし、通信プログラム326が提供する機能を利用してコピーしたシステムプログラム210をCPUユニット13へ転送することもできる。さらに、CD-ROM9に、PLC1のCPUユニット13で実行されるリアルタイムOS200を格納しておけば、リアルタイムOS200についてもユーザ操作によってPLC1へ再インストールできる。今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。"