"モーション制御とシーケンス制御とを実行する、プログラマブルロジックコントローラの演算ユニットであって、プロセッサと、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとを格納したメモリとを備え、前記プロセッサは、前記プログラムの実行結果を、前記従動軸に対応する制御対象機器に出力し、前記複数の位相のうちのいずれかの位相および当該位相に対応付けられた変位の少なくともいずれかを変更するための第1の指令を受け付けると、前記カムテーブルにおける当該位相および変位の少なくともいずれかを前記第1の指令に基づいた値に変更し、前記変更が行なわれると、前記変更された後のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記制御対象機器に出力する、演算ユニット。前記メモリは、不揮発性メモリと、揮発性メモリとを含み、前記不揮発性メモリは、前記変更される前のカムテーブルを格納しており、前記プロセッサは、前記変更される前のカムテーブルを前記不揮発性メモリから読み出して、当該読み出したカムテーブルを前記揮発性メモリに展開し、前記展開後に前記第1の指令を受け付けると、前記揮発性メモリに展開されたカムテーブルにおいて前記変更を行ない、第2の指令を受け付けると、前記揮発性メモリに展開されている前記変更された後のカムテーブルを、前記不揮発性メモリにさらに格納する、請求項1に記載の演算ユニット。前記変更される前のカムテーブルは、1つの変位と1つの位相とで構成されるカムデータを複数含み、前記複数のカムデータは、前記電子カムの動作に影響を与える第1のカムデータと、前記電子カムの動作に影響を与えない第2のカムデータとに区分され、前記プロセッサは、前記第1の指令を受け付けると、前記第2のカムデータにおける位相および変位の少なくともいずれかを、前記第1の指令に基づいた値に変更する、請求項2に記載の演算ユニット。前記プログラムは、モーション演算プログラムと、前記モーション演算プログラムに対して当該モーション演算プログラムの実行に必要な指示を与える処理を行なうユーザプログラムとを含み、前記カムデータの各々には識別情報が対応付けられており、前記プロセッサは、前記モーション演算プログラムを用いた電子カムの動作を実行しているときに、前記識別情報を前記ユーザプログラムに通知する、請求項3に記載の演算ユニット。前記プロセッサは、前記変更される前のカムテーブルを前記不揮発性メモリから読み出すと、当該カムテーブルにおいて、前記位相が昇順となるように前記カムデータが配列されているかを判定し、前記位相が昇順となるように前記カムデータが配列されていないと判定した場合、予め定められた報知を行なう、請求項4に記載の演算ユニット。前記プロセッサは、前記プログラムを実行している場合、前記カムテーブルの変更の有無にかかわらず、前記プログラムの実行の際に用いられているカムテーブルにおいて、前記位相が昇順となるように前記カムデータが配列されているかを、予め定められた間隔で判定し、前記位相が昇順となるように前記カムデータが配列されていないと判定した場合、予め定められた報知を行なう、請求項4に記載の演算ユニット。前記プロセッサは、第1の変更モードおよび第2の変更モードのいずれかを選択するための指示を受け付け、前記第1の変更モードの選択を受け付けた場合に、前記第1の指令を受け付けると、当該第1の指令を受け付けたときの前記電子カムの周期および当該周期の次の周期以降において、前記変更された後のカムテーブルを用いて前記プログラムを実行し、前記第2の変更モードの選択を受け付けた場合に、前記第1の指令を受け付けると、第1の指令を受け付けたときの前記電子カムの周期においては前記変更される前のカムテーブルを用いて前記プログラムを実行し、当該周期の次の周期以降においては前記変更された後のカムテーブルを用いて前記プログラムを実行する、請求項1から6のいずれか1項に記載の演算ユニット。前記プログラムは、モーション演算プログラムと、前記モーション演算プログラムに対して当該モーション演算プログラムの実行に必要な指示を与える処理を行なうユーザプログラムとを含み、前記プロセッサは、モーション演算プログラムの実行を、第1の定周期毎に繰り返し、前記ユーザプログラムを、前記第1の定周期の整数倍となる第2の定周期毎に繰り返し、前記ユーザプログラムのうち前記変更を行なうためのプログラムは、前記第1の定周期のタスクまたは前記第2の定周期のタスクに記述される、請求項1から7のいずれかに記載の演算ユニット。プログラマブルロジックコントローラの演算ユニットで実行されるユーザプログラムの作成を行なうための支援装置であって、前記演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けた第1のカム曲線と、前記複数の位相のうちのいずれかの位相に対応付けられた変位が変更されたカムテーブルとを格納したメモリを備え、前記支援装置は、プロセッサと、前記第1のカム曲線と、前記ユーザプログラムの作成を支援するサポートプログラムとを格納したメモリと、ディスプレイと、前記演算ユニットと通信を行なうための通信インターフェイスとを備え、前記プロセッサは、予め定められた指令を受け付けると、前記通信インターフェイスを用いて、前記第1のカム曲線と前記カムテーブルとを前記演算ユニットから取得し、前記メモリに格納された第1のカム曲線または前記取得した第1のカム曲線と、前記取得したカムテーブルに基づく第2のカム曲線とを前記ディスプレイに表示させる、支援装置。前記サポートプログラムは、閾値を予め記憶しており、前記プロセッサは、前記カムテーブルに基づき、前記従動軸の加加速度を算出し、前記算出された加加速度が前記閾値以上である場合、前記加加速度が閾値以上であることを示す画像を、前記ディスプレイに表示させる、請求項9に記載の支援装置。前記サポートプログラムは、閾値を予め記憶しており、前記プロセッサは、前記カムテーブルに基づき、前記従動軸の速度を算出し、前記算出された速度が前記閾値以上である場合、前記速度が閾値以上であることを示す画像を、前記ディスプレイに表示させる、請求項9に記載の支援装置。前記サポートプログラムは、閾値を予め記憶しており、前記プロセッサは、前記カムテーブルに基づき、前記従動軸の加速度を算出し、前記算出された加速度が前記閾値以上である場合、前記加速度が閾値以上であることを示す画像を、前記ディスプレイに表示させる、請求項9に記載の支援装置。前記プロセッサは、前記第2のカム曲線において、前記閾値を超えた箇所を、前記閾値を超えていない箇所とは異なる表示態様で、前記ディスプレイに表示させる、請求項10から12のいずれかに記載の支援装置。モーション制御とシーケンス制御とを実行する、プログラマブルロジックコントローラの演算ユニットにおける出力制御方法であって、前記演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとを格納しており、前記出力制御方法は、前記演算ユニットのプロセッサが、前記プログラムの実行結果を、前記従動軸に対応する制御対象機器に出力するステップと、前記プロセッサが、前記複数の位相のうちのいずれかの位相および当該位相に対応付けられた変位の少なくともいずれかを変更するための第1の指令を受け付けると、前記カムテーブルにおける当該位相および変位の少なくともいずれかを前記第1の指令に基づいた値に変更するステップと、前記プロセッサが、前記変更が行なわれると、前記変更された後のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記制御対象機器に出力するステップとを備える、出力制御方法。プログラマブルロジックコントローラの演算ユニットで実行されるユーザプログラムの作成を行なうための支援装置における表示制御方法であって、前記演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けた第1のカム曲線と、前記複数の位相のうちのいずれかの位相に対応付けられた変位が変更されたカムテーブルとを格納しており、前記支援装置は、前記第1のカム曲線と、前記ユーザプログラムの作成を支援するサポートプログラムとをメモリに格納しており、前記表示制御方法は、前記支援装置のプロセッサが、予め定められた指令を受け付けると、通信インターフェイスを用いて、前記第1のカム曲線と前記カムテーブルとを前記演算ユニットから取得するステップと、前記プロセッサが、前記メモリに格納された第1のカム曲線または前記取得した第1のカム曲線と、前記取得したカムテーブルに基づく第2のカム曲線とをディスプレイに表示させるステップとを備える、表示制御方法。モーション制御とシーケンス制御とを実行する、プログラマブルロジックコントローラの演算ユニットを制御するプログラムであって、前記演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとを格納しており、前記プログラムの実行結果を、前記従動軸に対応する制御対象機器に出力するステップと、前記複数の位相のうちのいずれかの位相および当該位相に対応付けられた変位の少なくともいずれかを変更するための第1の指令を受け付けると、前記カムテーブルにおける当該位相および変位の少なくともいずれかを前記第1の指令に基づいた値に変更するステップと、前記変更が行なわれると、前記変更された後のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記制御対象機器に出力するステップとを、前記演算ユニットに実行させる、プログラム。プログラマブルロジックコントローラの演算ユニットで実行されるユーザプログラムの作成を行なうための支援装置を制御するためのプログラムであって、前記演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けた第1のカム曲線と、前記複数の位相のうちのいずれかの位相に対応付けられた変位が変更されたカムテーブルとを格納しており、前記支援装置は、前記第1のカム曲線と、前記ユーザプログラムの作成を支援するサポートプログラムとをメモリに格納しており、予め定められた指令を受け付けると、通信インターフェイスを用いて、前記第1のカム曲線と前記カムテーブルとを前記演算ユニットから取得するステップと、前記メモリに格納された第1のカム曲線または前記取得した第1のカム曲線と、前記取得したカムテーブルに基づく第2のカム曲線とをディスプレイに表示させるステップとを、前記支援装置に実行させる、プログラム。しかしながら、特許文献2では、電子カムにおけるストローク下死点が設定可能であるが、他の箇所は設定できない。また、非特許文献1には、カムテーブルの変更について具体的な内容が開示されていない。さらに、主軸と従軸の位置関係を定義したカムテーブルを用いて同期制御を行なう電子カムの動作では、機械の個体差機差による同期タイミングの違いを吸収するために各機械で動作させながらカムテーブルに定義された位置情報を微調整しなければならない場合がある。また、特許文献7の図1に示すようなフィルムローラを主軸に有する装置では、フィルムの伸縮に合わせて従軸の動作内容を変更しなければならない場合がある。従来は、パソコン上で動作する電子カム作成ソフトウェアでカムテーブルを作成し、当該カムテーブルをモーションコントローラに転送して電子カム動作を実現していた。この方法では、予め作成されたカムテーブルの位置情報で動作するため、上記のように装置機差の微調整や、電子カム動作中における従軸の動作の変更が容易に実現できなかった。本願発明は上記の問題点に鑑みなされたものであって、その目的は、装置機差の微調整および電子カム動作中における従軸の動作の変更を容易に実現可能なPLCの演算ユニット、支援装置、出力制御方法、表示制御方法、およびプログラムを提供することにある。本発明のある局面に従うと、演算ユニットは、モーション制御とシーケンス制御とを実行する、プログラマブルロジックコントローラの演算ユニットである。演算ユニットは、プロセッサと、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、カムテーブルとを格納したメモリとを備える。プロセッサは、プログラムの実行結果を、従動軸に対応する制御対象機器に出力する。プロセッサは、複数の位相のうちのいずれかの位相および当該位相に対応付けられた変位の少なくともいずれかを変更するための第1の指令を受け付けると、カムテーブルにおける当該位相および変位の少なくともいずれかを第1の指令に基づいた値に変更する。プロセッサは、変更が行なわれると、変更された後のカムテーブルを用いてプログラムを実行し、当該実行結果を制御対象機器に出力する。好ましくは、メモリは、不揮発性メモリと、揮発性メモリとを含む。不揮発性メモリは、変更される前のカムテーブルを格納している。プロセッサは、変更される前のカムテーブルを不揮発性メモリから読み出して、当該読み出したカムテーブルを揮発性メモリに展開する。プロセッサは、展開後に第1の指令を受け付けると、揮発性メモリに展開されたカムテーブルにおいて変更を行なう。プロセッサは、第2の指令を受け付けると、揮発性メモリに展開されている変更された後のカムテーブルを、不揮発性メモリにさらに格納する。好ましくは、変更される前のカムテーブルは、1つの変位と1つの位相とで構成されるカムデータを複数含む。複数のカムデータは、電子カムの動作に影響を与える第1のカムデータと、電子カムの動作に影響を与えない第2のカムデータとに区分される。プロセッサは、第1の指令を受け付けると、第2のカムデータにおける位相および変位の少なくともいずれかを、第1の指令に基づいた値に変更する。好ましくは、プログラムは、モーション演算プログラムと、モーション演算プログラムに対して当該モーション演算プログラムの実行に必要な指示を与える処理を行なうユーザプログラムとを含む。カムデータの各々には識別情報が対応付けられている。プロセッサは、モーション演算プログラムを用いた電子カムの動作を実行しているときに、識別情報をユーザプログラムに通知する。好ましくは、プロセッサは、変更される前のカムテーブルを不揮発性メモリから読み出すと、当該カムテーブルにおいて、位相が昇順となるようにカムデータが配列されているかを判定する。プロセッサは、位相が昇順となるようにカムデータが配列されていないと判定した場合、予め定められた報知を行なう。好ましくは、プロセッサは、プログラムを実行している場合、カムテーブルの変更の有無にかかわらず、プログラムの実行の際に用いられているカムテーブルにおいて、位相が昇順となるようにカムデータが配列されているかを、予め定められた間隔で判定する。プロセッサは、位相が昇順となるようにカムデータが配列されていないと判定した場合、予め定められた報知を行なう。好ましくは、プロセッサは、第1の変更モードおよび第2の変更モードのいずれかを選択するための指示を受け付ける。プロセッサは、第1の変更モードの選択を受け付けた場合に、第1の指令を受け付けると、当該第1の指令を受け付けたときの電子カムの周期および当該周期の次の周期以降において、変更された後のカムテーブルを用いてプログラムを実行する。プロセッサは、第2の変更モードの選択を受け付けた場合に、第1の指令を受け付けると、第1の指令を受け付けたときの電子カムの周期においては変更される前のカムテーブルを用いてプログラムを実行し、当該周期の次の周期以降においては変更された後のカムテーブルを用いてプログラムを実行する。好ましくは、プログラムは、モーション演算プログラムと、モーション演算プログラムに対して当該モーション演算プログラムの実行に必要な指示を与える処理を行なうユーザプログラムとを含む。プロセッサは、モーション演算プログラムの実行を、第1の定周期毎に繰り返す。プロセッサは、ユーザプログラムを、第1の定周期の整数倍となる第2の定周期毎に繰り返す。ユーザプログラムのうち変更を行なうためのプログラムは、第1の定周期のタスクまたは第2の定周期のタスクに記述される。本発明の他の局面に従うと、支援装置は、プログラマブルロジックコントローラの演算ユニットで実行されるユーザプログラムの作成を行なうための支援装置である。演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けた第1のカム曲線と、複数の位相のうちのいずれかの位相に対応付けられた変位が変更されたカムテーブルとを格納したメモリを備える。支援装置は、プロセッサと、第1のカム曲線と、ユーザプログラムの作成を支援するサポートプログラムとを格納したメモリと、ディスプレイと、演算ユニットと通信を行なうための通信インターフェイスとを備える。プロセッサは、予め定められた指令を受け付けると、通信インターフェイスを用いて、第1のカム曲線とカムテーブルとを演算ユニットから取得する。プロセッサは、メモリに格納された第1のカム曲線または取得した第1のカム曲線と、取得したカムテーブルに基づく第2のカム曲線とをディスプレイに表示させる。好ましくは、サポートプログラムは、閾値を予め記憶している。プロセッサは、カムテーブルに基づき、従動軸の加加速度を算出する。プロセッサは、算出された加加速度が閾値以上である場合、加加速度が閾値以上であることを示す画像を、ディスプレイに表示させる。好ましくは、サポートプログラムは、閾値を予め記憶している。プロセッサは、カムテーブルに基づき、従動軸の速度を算出する。プロセッサは、算出された速度が閾値以上である場合、速度が閾値以上であることを示す画像を、ディスプレイに表示させる。好ましくは、サポートプログラムは、閾値を予め記憶している。プロセッサは、カムテーブルに基づき、従動軸の加速度を算出する。プロセッサは、算出された加速度が閾値以上である場合、加速度が閾値以上であることを示す画像を、ディスプレイに表示させる。好ましくは、プロセッサは、第2のカム曲線において、閾値を超えた箇所を、閾値を超えていない箇所とは異なる表示態様で、ディスプレイに表示させる。本発明のさらに他の局面に従うと、出力制御方法は、モーション制御とシーケンス制御とを実行する、プログラマブルロジックコントローラの演算ユニットにおける出力制御方法である。演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、カムテーブルとを格納している。出力制御方法は、演算ユニットのプロセッサが、プログラムの実行結果を、従動軸に対応する制御対象機器に出力するステップと、プロセッサが、複数の位相のうちのいずれかの位相および当該位相に対応付けられた変位の少なくともいずれかを変更するための第1の指令を受け付けると、カムテーブルにおける当該位相および変位の少なくともいずれかを第1の指令に基づいた値に変更するステップと、プロセッサが、変更が行なわれると、変更された後のカムテーブルを用いてプログラムを実行し、当該実行結果を制御対象機器に出力するステップとを備える。本発明のさらに他の局面に従うと、表示制御方法は、プログラマブルロジックコントローラの演算ユニットで実行されるユーザプログラムの作成を行なうための支援装置における表示制御方法である。演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けた第1のカム曲線と、複数の位相のうちのいずれかの位相に対応付けられた変位が変更されたカムテーブルとをメモリに格納している。支援装置は、第1のカム曲線と、ユーザプログラムの作成を支援するサポートプログラムとを格納している。表示制御方法は、支援装置のプロセッサが、予め定められた指令を受け付けると、通信インターフェイスを用いて、第1のカム曲線とカムテーブルとを演算ユニットから取得するステップと、プロセッサが、メモリに格納された第1のカム曲線または取得した第1のカム曲線と、取得したカムテーブルに基づく第2のカム曲線とをディスプレイに表示させるステップとを備える。本発明のさらに他の局面に従うと、プログラムは、モーション制御とシーケンス制御とを実行する、プログラマブルロジックコントローラの演算ユニットを制御するプログラムである。演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、カムテーブルとを格納している。プログラムは、プログラムの実行結果を、従動軸に対応する制御対象機器に出力するステップと、複数の位相のうちのいずれかの位相および当該位相に対応付けられた変位の少なくともいずれかを変更するための第1の指令を受け付けると、カムテーブルにおける当該位相および変位の少なくともいずれかを第1の指令に基づいた値に変更するステップと、変更が行なわれると、変更された後のカムテーブルを用いてプログラムを実行し、当該実行結果を制御対象機器に出力するステップとを、演算ユニットに実行させる。本発明のさらに他の局面に従うと、プログラムは、プログラマブルロジックコントローラの演算ユニットで実行されるユーザプログラムの作成を行なうための支援装置を制御するためのプログラムである。演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けた第1のカム曲線と、複数の位相のうちのいずれかの位相に対応付けられた変位が変更されたカムテーブルとを格納している。支援装置は、第1のカム曲線と、ユーザプログラムの作成を支援するサポートプログラムとをメモリに格納している。プログラムは、予め定められた指令を受け付けると、通信インターフェイスを用いて、カムテーブルを演算ユニットから取得するステップと、メモリに格納された第1のカム曲線または取得した第1のカム曲線と、取得したカムテーブルに基づく第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以下の処理が繰り返される。以下では、モーション制御を実現する為の機能モジュールを、モーション制御機能モジュールとも称する。具体的には、モーション制御機能モジュールとは、ユーザプログラムから与えられた目標値位置、速度、トルクなどを用いて、ユーザ所望のモーション動作を実現するために必要な、軸への指令値出力、および軸からの情報取得を一定の周期で実行する機能モジュールである。なお、モーション制御機能モジュールは、サーボドライバに対して指令値を出力するオープンループ型のコントローラである。また、モーション制御機能モジュールに対して指示を与える命令ファンクションブロック以下、FBとも称する等のことを、モーション制御命令と称する。図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と、メインメモリ104と、不揮発性メモリ106と、ユーザプログラム236とにより実現される。不揮発性メモリ106には、複数のカムテーブル520,521,522が格納されている。図9は、不揮発性メモリ106からカムテーブル520がメインメモリ104に展開された状態を示している。また、図9は、電子カム500に対して、エンコーダ19からエンコーダ位置が入力される例を示している。カムテーブル520の詳細については、後述する。なお、以下では、説明の便宜上、カムテーブル520をカムテーブルNo.1とも称する。図10は、カムデータに関する構造体配列を示した図である。図10を参照して、構造体配列530は、不揮発性メモリ106に格納されたカムテーブル520を、メインメモリ104で管理するための構造体配列を示した図である。構造体配列530においては、カムテーブルの識別子と、インデックスと、位相の値または変位の値とが対応付けられている。たとえば、構造体配列530の1番目の記述は、カムテーブルNo.1つまり、カムテーブル520におけるインデックスが1番の位相が0.0であることを示している。なお、インデックスについては、後述する。図11は、カムテーブル520のデータ構造を表した図である。より詳しくは、図11は、PLCサポート装置8に格納されているカムテーブル編集ソフトウェアにより作成されるカムテーブルのデータ構造を表した図である。図11を参照して、カムテーブル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である必要はない。有意でないカムデータの数は、カムテーブル編集ソフトにより指定される。図13は、カムテーブル520を書き換えた後のカムテーブル520Aのデータ構造を表した図である。なお、カムテーブルの書き換え処理とは、上述したように、不揮発性メモリ106からメインメモリ104に展開したカムテーブル520のデータを書き換える処理をいう。当該書き換え処理を行なうためにカムテーブル520を展開した場合であっても、不揮発性メモリ106には、カムテーブル520つまり、オリジナルデータは格納されたままの状態である。図13を参照して、CPUユニット13は、カムテーブル520の位相θaにおける変位δをδ1からδ2に変更する指令を受け付けると、カムテーブル520における位相θaに対応付けられた変位をδ1からδ2に変更する。つまり、CPUユニット13のマイクロプロセッサ100が、メインメモリ104に展開されたカムテーブル520における位相θaに対応付けられた変位δ1をδ2により上書きする。なお、θaは、0度から360度までの各位相のうち、任意の位相である。マイクロプロセッサ100は、予め定められた指示を受け付けると、メインメモリ104に一時記憶されているカムテーブル520Aを、不揮発性メモリ106に格納する。これにより、不揮発性メモリ106には、カムテーブル520とカムテーブル520Aとが格納されることになる。図14は、カムテーブル520の書き換え処理を説明するための図である。図14aは、書き換え前のカムテーブル520に基づくカム曲線510と、書き換え後のカムテーブル520Aに基づくカム曲線510Aとを表した図である。図14bは、カムテーブルの書き換え前後における電子カムの動作を説明するための図である。図14aを参照して、カムテーブル520Aに基づくカム曲線510Aは、カムテーブル520Aにおける位相θaの前後の位相についての変位との間で連続性を有した曲線正確には、直線の集合体となる。図14bを参照して、CPUユニット13は、位相θbに対応する時点θa<θbで変位を変更する指令を受け付けた場合、次の制御周期以降においては、カムテーブル520Aに基づいたカム曲線510Aに応じて、制御対象である従動軸を動作させる。カムテーブルの書き換えには、プログラムをユーザが直接記述する方式と、テーブル形式のGUIGraphicUserInterfaceを用いる方式とがある。図15は、プログラムをユーザが直接記述する方式における、カムテーブルを書き換えるためのユーザインターフェイスを表した図である。また、図15は、PLCコントローラで一般的に使用されているSTStructureText言語およびラダー言語を用いた場合の、書き換え命令の記述例を示している。図15を参照して、カムテーブルの書き換えは、PLCサポート装置8を用いて行なわれる。具体的には、ユーザがPLCサポート装置8のディスプレイ87を参照しつつ、データ入力を行なうことにより、メインメモリ104に展開されているカムテーブル520の書き換えが実行される。ディスプレイ87には、2つの領域801,803が表示される。領域801は、選択可能な項目が表示されるメニュー領域である。領域803内のボックス803aには、ユーザによるプログラムが記述される。つまり、ボックス803aには、実行される処理内容が表示される。具体例として、領域803aには、電子カムNo.1つまり、電子カム500が実行中であることを示す出力パラメータビジー_1と接点_2とがTRUEであって、かつ従動軸への指令に使用しているカムテーブルのカムデータがインデックス90番より小さいときに、カムテーブルNo.1のインデックス90番~100番の変位に10を加算する命令が、上記言語を用いて記述される。この場合、マイクロプロセッサ100は、領域803に記述された処理を実行する。図12は、テーブル形式のGUIを用いる方式における、カムテーブルを書き換えるためのユーザインターフェイスを表した図である。図12を参照して、ディスプレイ87には、テーブル形式のGUIであるウィンドウ851が表示される。ウィンドウ851は、ユーザが入力するための領域である。ウィンドウ851には、カムテーブルNo.1のインデックス90番から100番のカムデータの変位をそれぞれ、10mm増加させるための指令がユーザにより記述される。なお、図12の場合は、GUIを用いるため、ユーザは、指令を容易に記述できる。図16は、カムテーブル520におけるカムデータの変位を書き換える手順を示したフローチャートである。図16を参照して、ステップS102において、マイクロプロセッサ100は、カムテーブル520における、変位を変更するインデックス番号の指定を受け付けたか否かを判断する。マイクロプロセッサ100は、インデックス番号の指定を受け付けたと判断するとステップS102においてYES、ステップS104において、変位の値の入力を受け付けたか否かを判断する。マイクロプロセッサ100は、インデックス番号の指定を受け付けていないと判断するとステップS102においてNO、処理をステップS102に進める。マイクロプロセッサ100は、変位の値の入力を受け付けたと判断するとステップS104においてYES、ステップS106において、カムテーブル520における指定されたインデックスにおける変位を入力された値に変更する。マイクロプロセッサ100は、変位の値の入力を受け付けていないと判断するとステップS104においてNO、処理をステップS104に進める。ステップS108において、マイクロプロセッサ100は、変位が変更されたカムテーブル520Aを用いた制御を実行する。ステップS110において、マイクロプロセッサ100は、カムテーブル520Aを用いた制御が終了したか否かを判断する。マイクロプロセッサ100は、制御が終了したと判断するとステップS110においてYES、ステップS112において、カムテーブル520Aを保存するための指示を受け付けたか否かを判断する。マイクロプロセッサ100は、制御が終了していないと判断するとステップS110においてNO、処理をステップS110に進める。マイクロプロセッサ100は、保存するための指示を受け付けたと判断するとステップS112においてYES、ステップS114において、カムテーブル520Aを不揮発性メモリ106に格納する。マイクロプロセッサ100は、保存するための指示を受け付けていないと判断するとステップS112においてNO、カムテーブル520Aを不揮発性メモリ106に格納することなく、一連の処理を終了する。ところで、カムテーブルを書き換える制御命令は、高優先度定周期タスクにカムテーブルを書き換える制御命令を記述してもよいし、あるいは、低優先度定周期タスクに当該制御命令を記述してもよい。図17は、高優先度定周期タスクにカムテーブルを書き換える制御命令を記載したときのデータフローを表した図である。図17を参照して、UPRG710に、カムテーブルを書き換える制御命令FB711が記述される。この場合におけるデータの大まかな流れの順序は、1スレーブ→OI701→FB711→MC702→OI703→サーボモータドライバ3、2MC704→OI705→サーボモータドライバ3、3MC706→OI707→サーボモータドライバ3である。図18は、低優先度定周期タスクにカムテーブルを書き換える制御命令を記載したときのデータフローを表した図である。図18を参照して、UPRG720に、カムテーブルを書き換える制御命令FBFunctionBlock721,722が記述される。この場合におけるデータの大まかな流れの順序は、スレーブ→OI701→MC702→UPRG720FB721,722→OI706→OI707→サーボモータドライバ3である。以下、CPUユニット13が実行可能な他の機能について説明する。なお、カムテーブルにおけるカムデータの書き換えは、カム動作中のみならず、カム停止中にも行なうことができる。e1.マスキング処理CPUユニット13は、図14bに示したとおり、位相θbに対応する時点θa<θbで変位を変更する指令を受け付けた場合、次の制御周期以降においては、カムテーブル520Aに基づいたカム曲線510Aに応じて、制御対象である従動軸を動作させた。しかしながら、CPUユニット13は、当該指令を受け付けた次の制御周期においてはカムテーブル520を用い、当該指令を受け付けた次の次の制御周期においてカムテーブル520Aを用いた処理を行ってもよい。より具体的に説明すると、以下のとおりである。なお、以下では、当該処理を、説明の便宜上マスキング処理とも称する。CPUユニット13のマイクロプロセッサ100は、マスキング処理を実行しないモード第1の変更モードとも称するおよびマスキング処理を実行するモード第2の変更モードとも称するのいずれかを選択するための指示を、ユーザから受け付ける。マイクロプロセッサ100は、マスキング処理を行なわないモードの選択を受け付けた場合に、変位を変更するための指令を受け付けると、当該指令を受け付けたときの電子カムの周期および当該周期の次の周期以降において、変更された後のカムテーブル520Aを用いて制御プログラム230を実行する。つまり、マイクロプロセッサ100は、上述したように、変位を変更すると、直ぐに当該変更を反映した処理を実行する。一方、マイクロプロセッサ100は、マスキング処理を実行するモードの選択を受け付けた場合に、変位を変更するための指令を受け付けると、当該指令を受け付けたときの電子カムの周期においては変更される前のカムテーブル520を用いて制御プログラム230を実行し、当該周期の次の周期以降においては変更された後のカムテーブル520Aを用いて制御プログラム230を実行する。図19は、位相θaにおける変位を変更する指令を受け付けた次の制御周期においてはカムテーブル520を用い、当該指令を受け付けた次の次の制御周期においてカムテーブル520Aを用いた処理を行なう場合における、電子カムの動作を説明するための図である。つまり、図19は、マスキング処理を行なうモードが選択された場合における、電子カムの動作を説明するための図である。図19を参照して、CPUユニット13は、位相θbに対応する時点で変位を変更する指令を受け付けた場合、次のカム周期においては、変更前のカムテーブル520に対応したカム曲線510に基づいて、制御対象である従動軸を動作させる。さらに、次のカム周期においては、CPUユニット13は、変更後のカムテーブル520Aに対応したカム曲線510Aに基づいて、制御対象である従動軸を動作させる。このような処理を行なうことによって、少なくとも書き換えが行なわれているタイミングが含まれるカム周期において、書き換えた後のカムテーブルを用いた制御が行なわれることがなくなる。このため、CPUユニット13は、安定した制御が可能となる。なお、マスキング処理の機能はオプション機能であり、CPUユニット13が必ず備えていなければならない機能ではない。e2.位相の書き換え上記においては、カムテーブルにおけるカムデータの変位を書き換える例を説明したが、これに限定されるものではない。CPUユニット13は、変位の書き換えの変わりに位相を書き換えることもできる。あるいは、CPUユニット13は、変位の書き換えだけではなく、変位および位相を書き換えてもよい。図20は、プログラムをユーザが直接記述する方式における、カムテーブルの位相を書き換えるためのユーザインターフェイスを表した図である。また、図20は、図15と同様に、PLCコントローラで一般的に使用されているSTStructureText言語およびラダー言語を用いた場合の、書き換え命令の記述例を示している。図20を参照して、領域803内のボックス803aには、上述したとおり、ユーザによるプログラムが記述される。具体例として、領域803aには、電子カムNo.1つまり、電子カム500が実行中であることを示す出力パラメータビジー_1と接点_2とがTRUEであって、かつ従動軸への指令に使用しているカムテーブルのカムデータがインデックス100番より小さいときに、カムテーブルNo.1のインデックス100番の位相を200°に変更する命令が、上記言語を用いて記述される。この場合、マイクロプロセッサ100は、領域803に表示された処理を実行する。図25は、テーブル形式のGUIを用いる方式における、カムテーブルの位相を書き換えるためのユーザインターフェイスを表した図である。図25を参照して、ディスプレイ87には、テーブル形式のGUIであるウィンドウ852とが表示される。ウィンドウ852には、カムテーブルNo.1のインデックス100番のカムデータの位相を、200.0°に変更させるための指令がユーザにより記述される。e3.昇順チェック上述したように、カムテーブルに含まれる位相についても、ユーザは書き換え可能である。それため、カムテーブルに含まれるカムデータにおける位相が、昇順にならないように、カムテーブルが書き換えられるおそれもある。たとえば、図11に示したカムテーブル520における位相が、0.0→0.1→0.8→0.2→0.3...となってしまう場合もある。このような状況を想定して、CPUユニット13は、電子カムの動作開始時とカム動作中とにおいて、位相が昇順かどうかをチェックする。なお、CPUユニット13は、カム動作中においては、たとえば、予め定められた間隔たとえば、1制御周期で昇順か否かをチェックする。CPUユニット13は、位相が昇順となるようにカムデータが配列されていないと判定した場合、予め定められた報知を行なう。具体的には、CPUユニット13は、エラー警告エラーメッセージ、エラーコード、音声、および/または画像の通知を、ユーザプログラム236に通知する。e4.有意なカムデータの追加削除図11に基づいて説明したとおり、カムテーブルは電子カムにとって有意なカムデータと、有意でないカムデータを有している。マイクロプロセッサ100は、カムデータを追加するためのユーザ入力を受け付けると、有意でないカムデータのいずれかに当該入力に基づく位相および/または変位を書き込む。さらに、マイクロプロセッサ100は、予め定められた命令を実行することにより、上記入力に基づく位相および/または変位を有する有意でないカムデータを、有意なカムデータとする。この場合、マイクロプロセッサ100は、位相が昇順となるように、カムテーブル内のカムデータの並び順を変更する。以上により、カムテーブルにおける有意なカムデータの数を増やすことができる。また、反対に、有意なカムデータを有意でないカムデータに変更することもできる。これにより、以上により、カムテーブルにおける有意なカムデータの数を減らすこともできる。e5.インデックス通知図11に基づいて説明したように、カムテーブルを構成するカムデータの各々には、インデックス番号が付与されている。マイクロプロセッサ100は、ユーザプログラム236に当該インデックス番号を通知する。これにより、ユーザは、カムテーブルを構成するカムデータのインデックスを知ることができる。特に、マイクロプロセッサ100は、電子カムの動作中にインデックスをユーザプログラム236に通知することにより、図15に示した画面でのカムテーブルの書き換えを実現することができる。<F.CPUユニットによる処理のまとめ>1CPUユニット13は、モーション制御とシーケンス制御とを実行する、PLCの演算ユニットである。CPUユニット13は、マイクロプロセッサ100と、電子カム500の主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブル520を用いたモーション制御を行なうための制御プログラム230と、カムテーブル520とを格納したメモリとを備える。マイクロプロセッサ100は、制御プログラム230の実行結果を、従動軸に対応する制御対象機器に出力する。マイクロプロセッサ100は、上記複数の位相のうちのいずれかの位相および当該位相に対応付けられた変位の少なくともいずれかを変更するための第1の指令を受け付けると、カムテーブル520における当該位相および変位の少なくともいずれかを第1の指令に基づいた値に変更する。マイクロプロセッサ100は、上記変更が行なわれると、変更された後のカムテーブル520Aを用いて制御プログラム230を実行し、当該実行結果を制御対象機器に出力する。これにより、CPUユニット13は、電子カム動作中における従軸制御対象機器の動作の変更を容易に実現可能となる。さらに、CPUユニット13は、装置機差の微調整可能となる。より具体的には、CPUユニット13を用いることにより、主軸と従軸の位置情報とを定義したカムテーブルを用いる電子カム動作において、電子カム動作中にユーザプログラム236を用いてカムテーブルの値を変更したり、カムデータ数の増減を行なうことができる。それゆえ、CPUユニット13は、従軸の動作を調整できる。2上記メモリは、不揮発性メモリ106と、揮発性のメインメモリ104とを含む。不揮発性メモリ106は、変更される前のカムテーブル520を格納している。マイクロプロセッサ100は、変更される前のカムテーブル520を不揮発性メモリ106から読み出して、当該読み出したカムテーブル520をメインメモリ104に展開する。マイクロプロセッサ100は、展開後に上記第1の指令を受け付けると、メインメモリ104に展開されたカムテーブル520において上述の変更を行なう。マイクロプロセッサ100は、第2の指令を受け付けると、メインメモリに展開されている上記変更された後のカムテーブル520Aを、不揮発性メモリ106にさらに格納する。これにより、ユーザは、書き換え後のカムテーブル520Aを、カムテーブル520とは別に不揮発性メモリ106に格納することができる。3変更される前のカムテーブル520は、1つの変位と1つの位相とで構成されるカムデータを複数含む。複数のカムデータは、電子カムの動作に影響を与える有意なカムデータ第1のカムデータと、電子カムの動作に影響を与えない有意でないカムデータ第2のカムデータとに区分される。マイクロプロセッサ100は、上記第1の指令を受け付けると、有意でないカムデータにおける位相および変位の少なくともいずれかを、上記第1の指令に基づいた値に変更する。これにより、ユーザは、カムテーブル520において、有意なカムデータを追加することができる。4制御プログラム230は、モーション演算プログラム234と、モーション演算プログラム234に対して当該モーション演算プログラム234の実行に必要な指示を与える処理を行なうユーザプログラム236とを含む。カムデータの各々にはインデックス番号識別情報が対応付けられている。マイクロプロセッサ100は、モーション演算プログラム234を用いた電子カム500の動作を実行しているときに、インデックス番号をユーザプログラム236に通知する。これにより、ユーザは、カムテーブルを構成するカムデータのインデックスを知ることができる。5マイクロプロセッサ100は、変更される前のカムテーブル520を不揮発性メモリ106から読み出すと、当該カムテーブル520において、位相が昇順となるようにカムデータが配列されているかを判定する。マイクロプロセッサ100は、位相が昇順となるようにカムデータが配列されていないと判定した場合、予め定められた報知を行なう。これにより、ユーザは、位相を昇順とする必要があることを認識できる。6マイクロプロセッサ100は、制御プログラム230を実行している場合、カムテーブルの変更の有無にかかわらず、制御プログラム230の実行の際に用いられているカムテーブルにおいて、位相が昇順となるようにカムデータが配列されているかを、予め定められた間隔で判定する。マイクロプロセッサ100は、位相が昇順となるようにカムデータが配列されていないと判定した場合、予め定められた報知を行なう。これにより、ユーザは、位相を昇順とする必要があることを認識できる。7マイクロプロセッサ100は、第1の変更モードおよび第2の変更モードのいずれかを選択するための指示を受け付ける。マイクロプロセッサ100は、第1の変更モードの選択を受け付けた場合に、上記第1の指令を受け付けると、当該第1の指令を受け付けたときの電子カムの周期および当該周期の次の周期以降において、変更された後のカムテーブル520Aを用いて前記プログラムを実行する。マイクロプロセッサ100は、第2の変更モードの選択を受け付けた場合に、上記第1の指令を受け付けると、第1の指令を受け付けたときの電子カムの周期においては変更される前のカムテーブル520を用いて制御プログラム230を実行し、当該周期の次の周期以降においては変更された後のカムテーブル520Aを用いて制御プログラム230を実行する。これにより、CPUユニット13は、第2の変更モードが選択された場合には、第1の変更モードの場合よりも安定した制御が可能となる。8マイクロプロセッサ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について説明する。図21は、PLCサポート装置8が、カム曲線510およびカム曲線510AをPLCサポート装置8のディスプレイ87に表示した状態を表した図である。PLCサポート装置8は、ユーザからの指示に基づきCPUユニット13に格納されたカムテーブル520Aを読み出す。また、PLCサポート装置8は、PLCサポート装置8の不揮発性のメモリから、カム曲線510を読み出す。PLCサポート装置8は、ディスプレイ87にカム曲線510およびカムテーブル520Aに基づくカム曲線510Aを表示する。あるいは、PLCサポート装置8は、ユーザからの指示に基づきCPUユニット13に格納されたカム曲線510およびカムテーブル520Aを読み出し、ディスプレイ87に当該読み出したカム曲線510と、当該読み出したカムテーブル520Aに基づくカム曲線510Aとを表示してもよい。つまり、CPUユニット13から取得したカム曲線510と、CPUユニット13から取得したカムテーブル520Aに基づくカム曲線510Aとを表示するように、PLCサポート装置8を構成してもよい。なお、PLCサポート装置8は、メモリ内のデータ量が増加することを抑制するため、書き換え前のカムテーブル520を保存せずに、カム曲線510を保存している。ただし、PLCサポート装置8が、カムテーブル520を保存する構成としてもよい。図21aは、カム曲線510とカム曲線510Aとを並べて表示した場合を示した図である。図21bは、カム曲線510にカム曲線510Aを重ねて表示した場合を示した図である。なお、図21bにおいては、両曲線510,510Aが重なっている箇所においては、カム曲線510を表す実線のみを表示している。図21a,bを参照して、PLCサポート装置8は、変更前のカムテーブル520に基づくカム曲線510と、変更後のカムテーブル520Aに基づくカム曲線510Aとを同じ画面に表示するため、ユーザは、カムテーブル520に対して、どのような変更を行ったのかを直感的に容易に理解することができる。特に、図21bの場合には、ユーザは、書き換え後の状態が図21aの場合よりも明確に認識可能となる。図22は、図21a,bの各々の状態において、さらに警告表示がなされた状態を表した図である。図22a,bを参照して、PLCサポート装置8は、カムテーブル520Aに基づき制御対象である従動軸の加加速度ジャークを算出する。PLCサポート装置8は、算出された加加速度が予め定められた閾値以上である場合、加加速度が閾値以上であることを示す画像を、ディスプレイ87に表示させる。PLCサポート装置8は、たとえば、位相θc~θdの間で、予め規定されている最大ジャークを超えてしまっていることを警告表示する。カム曲線510Aにおいて、当該閾値を超えた箇所を、閾値を超えていない箇所とは異なる表示態様で、ディスプレイ87に表示させるように、PLCサポート装置8を構成することが好ましい。たとえば、閾値を超えた箇所を、当該閾値を超えていない箇所とは異なる色で表示するようにPLCサポート装置を構成することが好ましい。なお、上記閾値は、PLCサポート装置8のメモリに予め格納されている。なお、上記においては、或る位相区間において、予め規定されている最大ジャークを超えていることを警告表示したが、これに限定されず、予め規定された最大加速度、最大減速度、および/または最大速度を超えた区間についても警告表示をするようにPLCサポート装置8を構成してもよい。この場合、PLCサポート装置8は、最大ジャークを超えている箇所と、最大加速度を超えている箇所と、最大減速度を超えている箇所とを、ユーザに区別可能な態様で表示することが好ましい。また、カム曲線510Aのみならずカム曲線510においても、上記閾値を超えた箇所を、当該閾値を超えていない箇所とは異なる表示態様で、ディスプレイ87に表示させるように、PLCサポート装置8を構成することが好ましい。なお、カム曲線510Aについての閾値と、カム曲線510についての閾値とは、同じ値であってもよいし、あるいは異なる値であってもよい。なお、ユーザは、PLCサポート装置8を用いて、従軸の最高速度、最大加速度、最大減速度、および最大ジャークを指定できる。また、PLCサポート装置8は、最大速度、最大加速度、最大ジャークを、カム曲線のグラフ中に表示できる。なお、PLCサポート装置8は、最高速度を制御グラフの速度グラフに表示し、最大加速度および最大減速度を制御グラフの加減速度グラフに表示し、最大ジャークを制御グラフのジャークグラフに表示する。この場合、PLCサポート装置8は、指定された単位を用いて、速度、加速度、ジャークの単位を表示する時間は秒固定とする。図23は、本発明の実施の形態に係るCPUユニットに接続して用いられるPLCサポート装置8のハードウェア構成を示す模式図である。図23を参照して、PLCサポート装置8は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。図23を参照して、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は、汎用的なコンピュータを用いて実現されるので、これ以上の詳細な説明は行わない。図24は、本発明の実施の形態に係るCPUユニットに接続して用いられるPLCサポート装置8のソフトウェア構成を示す模式図である。図24を参照して、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へ再インストールできる。<H.サポート装置による処理のまとめ>1PLCサポート装置8は、PLCのCPUユニット13で実行されるユーザプログラム236の作成を行なうための支援装置である。CPUユニット13は、電子カム500の主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカム曲線510と、複数の位相のうちのいずれかの位相に対応付けられた変位が変更されたカムテーブル520Aとを格納したメモリを備える。PLCサポート装置8は、CPU81と、カム曲線510と、ユーザプログラム236の作成を支援するPLCサポートプログラム320とを格納したメモリと、ディスプレイ87と、CPUユニット13と通信を行なうための通信IF89とを備える。CPU81は、予め定められた指令を受け付けると、通信IF89を用いて、カム曲線510とカムテーブル520AとをCPUユニット13から取得する。CPU81は、メモリに格納されたカム曲線510またはCPUユニット13から取得したカム曲線510と、上記取得したカムテーブル520Aに基づくカム曲線510Aとをディスプレイ87に表示させる。つまり、PLCサポート装置8は、変更前後のカム曲線をディスプレイ上で比較表示できる。これにより、ユーザは、変更前書き換え前のカムテーブル520に基づくカム曲線510と、変更後のカムテーブル520Aに基づくカム曲線510Aとを、PLCサポート装置8のディスプレイ87にて対比することができる。2PLCサポートプログラム320は、加加速度に関する閾値を予め記憶している。CPU81は、カムテーブル520Aに基づき、従動軸である制御対象機器の加加速度を算出する。CPU81は、算出された加加速度が上記閾値以上である場合、加加速度が閾値以上であることを示す画像を、ディスプレイ87に表示させる。これにより、ユーザは、加加速度に関するカムテーブルの書き換えが適切であったか否かを確認することができる。3PLCサポートプログラム320は、速度に関する閾値を予め記憶している。CPU81は、カムテーブル520Aに基づき、従動軸である制御対象機器の速度を算出する。CPU81は、算出された速度が上記閾値以上である場合、速度が閾値以上であることを示す画像を、ディスプレイ87に表示させる。これにより、ユーザは、速度に関するカムテーブルの書き換えが適切であったか否かを確認することができる。4PLCサポートプログラム320は、加速度および/または減速度に関する閾値を予め記憶している。CPU81は、カムテーブル520Aに基づき、従動軸である制御対象機器の加速度を算出する。CPU81は、算出された加速度および/または減速度が上記閾値以上である場合、加速度および/または減速度が閾値以上であることを示す画像を、ディスプレイ87に表示させる。なお、加速度に関する閾値と、減速度に関する閾値とは、同じであってもよいし、あるいは異なっていてもよい。これにより、ユーザは、加速度および/または減速度に関するカムテーブルの書き換えが適切であったか否かを確認することができる。5CPU81は、カム曲線510Aにおいて、上記閾値を超えた箇所を、当該閾値を超えていない箇所とは異なる表示態様で、ディスプレイ87に表示させる。これにより、ユーザは、閾値を超えた箇所を容易に判断することができる。今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。"