(57)【特許請求の範囲】
【請求項１】
モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットであって、
プロセッサと、
電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとを格納したメモリとを備え、
前記プロセッサは、
前記プログラムの実行結果を、前記従動軸に対応する制御対象機器に出力し、
前記複数の位相のうちのいずれかの位相および当該位相に対応付けられた変位の少なくともいずれかを変更するための第１の指令を受け付けると、前記カムテーブルにおける当該位相および変位の少なくともいずれかを前記第１の指令に基づいた値に変更し、
前記変更が行なわれると、前記変更された後のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記制御対象機器に出力し、
第１の変更モードおよび第２の変更モードのいずれかを選択するための指示を受け付け、
前記第１の変更モードの選択を受け付けた場合に、前記第１の指令を受け付けると、当該第１の指令を受け付けたときの前記電子カムの周期および当該周期の次の周期以降において、前記変更された後のカムテーブルを用いて前記プログラムを実行し、
前記第２の変更モードの選択を受け付けた場合に、前記第１の指令を受け付けると、第１の指令を受け付けたときの前記電子カムの周期においては前記変更される前のカムテーブルを用いて前記プログラムを実行し、当該周期の次の周期以降においては前記変更された後のカムテーブルを用いて前記プログラムを実行する、演算ユニット。
【請求項２】
前記メモリは、不揮発性メモリと、揮発性メモリとを含み、
前記不揮発性メモリは、前記変更される前のカムテーブルを格納しており、
前記プロセッサは、
前記変更される前のカムテーブルを前記不揮発性メモリから読み出して、当該読み出したカムテーブルを前記揮発性メモリに展開し、
前記展開後に前記第１の指令を受け付けると、前記揮発性メモリに展開されたカムテーブルにおいて前記変更を行ない、
第２の指令を受け付けると、前記揮発性メモリに展開されている前記変更された後のカムテーブルを、前記不揮発性メモリにさらに格納する、請求項１に記載の演算ユニット。
【請求項３】
前記変更される前のカムテーブルは、１つの変位と１つの位相とで構成されるカムデータを複数含み、
前記複数のカムデータは、前記電子カムの動作に影響を与える第１のカムデータと、前記電子カムの動作に影響を与えない第２のカムデータとに区分され、
前記プロセッサは、前記第１の指令を受け付けると、前記第２のカムデータにおける位相および変位の少なくともいずれかを、前記第１の指令に基づいた値に変更する、請求項２に記載の演算ユニット。
【請求項４】
前記プログラムは、モーション演算プログラムと、前記モーション演算プログラムに対して当該モーション演算プログラムの実行に必要な指示を与える処理を行なうユーザプログラムとを含み、
前記カムデータの各々には識別情報が対応付けられており、
前記プロセッサは、前記モーション演算プログラムを用いた電子カムの動作を実行しているときに、前記識別情報を前記ユーザプログラムに通知する、請求項３に記載の演算ユニット。
【請求項５】
前記プロセッサは、
前記変更される前のカムテーブルを前記不揮発性メモリから読み出すと、当該カムテーブルにおいて、前記位相が昇順となるように前記カムデータが配列されているかを判定し、
前記位相が昇順となるように前記カムデータが配列されていないと判定した場合、予め定められた報知を行なう、請求項４に記載の演算ユニット。
【請求項６】
前記プロセッサは、
前記プログラムを実行している場合、前記カムテーブルの変更の有無にかかわらず、前記プログラムの実行の際に用いられているカムテーブルにおいて、前記位相が昇順となるように前記カムデータが配列されているかを、予め定められた間隔で判定し、
前記位相が昇順となるように前記カムデータが配列されていないと判定した場合、予め定められた報知を行なう、請求項４に記載の演算ユニット。
【請求項７】
前記プログラムは、モーション演算プログラムと、前記モーション演算プログラムに対して当該モーション演算プログラムの実行に必要な指示を与える処理を行なうユーザプログラムとを含み、
前記プロセッサは、
モーション演算プログラムの実行を、第１の定周期毎に繰り返し、
前記ユーザプログラムを、前記第１の定周期の整数倍となる第２の定周期毎に繰り返し、
前記ユーザプログラムのうち前記変更を行なうためのプログラムは、前記第１の定周期のタスクまたは前記第２の定周期のタスクに記述される、請求項１から６のいずれかに記載の演算ユニット。
【請求項８】
モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットにおける出力制御方法であって、
前記演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとを格納しており、
前記出力制御方法は、
前記演算ユニットのプロセッサが、前記プログラムの実行結果を、前記従動軸に対応する制御対象機器に出力するステップと、
前記プロセッサが、前記複数の位相のうちのいずれかの位相および当該位相に対応付けられた変位の少なくともいずれかを変更するための第１の指令を受け付けると、前記カムテーブルにおける当該位相および変位の少なくともいずれかを前記第１の指令に基づいた値に変更するステップと、
前記プロセッサが、前記変更が行なわれると、前記変更された後のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記制御対象機器に出力するステップと、
前記プロセッサが、第１の変更モードおよび第２の変更モードのいずれかを選択するための指示を受け付けるステップと、
前記プロセッサが、前記第１の変更モードの選択を受け付けた場合に、前記第１の指令を受け付けると、当該第１の指令を受け付けたときの前記電子カムの周期および当該周期の次の周期以降において、前記変更された後のカムテーブルを用いて前記プログラムを実行するステップと、
前記プロセッサが、前記第２の変更モードの選択を受け付けた場合に、前記第１の指令を受け付けると、第１の指令を受け付けたときの前記電子カムの周期においては前記変更される前のカムテーブルを用いて前記プログラムを実行し、当該周期の次の周期以降においては前記変更された後のカムテーブルを用いて前記プログラムを実行するステップとを備える、出力制御方法。
【請求項９】
モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットを制御するプログラムであって、
前記演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとを格納しており、
前記プログラムの実行結果を、前記従動軸に対応する制御対象機器に出力するステップと、
前記複数の位相のうちのいずれかの位相および当該位相に対応付けられた変位の少なくともいずれかを変更するための第１の指令を受け付けると、前記カムテーブルにおける当該位相および変位の少なくともいずれかを前記第１の指令に基づいた値に変更するステップと、
前記変更が行なわれると、前記変更された後のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記制御対象機器に出力するステップと、
第１の変更モードおよび第２の変更モードのいずれかを選択するための指示を受け付けるステップと、
前記第１の変更モードの選択を受け付けた場合に、前記第１の指令を受け付けると、当該第１の指令を受け付けたときの前記電子カムの周期および当該周期の次の周期以降において、前記変更された後のカムテーブルを用いて前記プログラムを実行するステップと、
前記第２の変更モードの選択を受け付けた場合に、前記第１の指令を受け付けると、第１の指令を受け付けたときの前記電子カムの周期においては前記変更される前のカムテーブルを用いて前記プログラムを実行し、当該周期の次の周期以降においては前記変更された後のカムテーブルを用いて前記プログラムを実行するステップとを、前記演算ユニットに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブル・ロジック・コントローラの演算ユニット、支援装置、出力制御方法、表示制御方法、およびプログラムに関し、特に、モーション制御とシーケンス制御とを実行する演算ユニット、演算ユニットの支援装置、演算ユニットにおける出力制御方法、支援装置における表示制御方法、およびプログラムに関する。
【背景技術】
【０００２】
ＰＬＣ（Programmable Logic Controller）は、たとえば、ユーザプログラムを実行するマイクロプロセッサを含むＣＰＵ（Central Processing Unit）ユニット、外部のスイッチやセンサからの信号入力および外部のリレーやアクチュエータへの信号出力を担当するＩＯ（Input Output）ユニットといった複数のユニットで構成される。それらのユニット間で、ユーザプログラム実行サイクルごとに、ＰＬＣシステムバスおよび／またはフィールドネットワークを経由してデータの授受をしながら、ＰＬＣは制御動作を実行する。
【０００３】
機械、設備などの動作の制御としては、モータの運動を制御するためのモーション制御が含まれる場合がある。従来、このようなモーション制御、典型的には、モータを駆動するモータドライバに対して周期的に指令値を出力する制御処理（モーション演算プログラムの実行）は、ＰＬＣとは別に設けたモーションコントローラにおいて行われていた。しかしながら、情報技術の分野においては、マイクロプロセッサや通信ネットワークの高速化が進展しつつある。そのため、ＰＬＣにおいてもそれらの技術を利用して、１つのマイクロプロセッサにおいて、ユーザプログラムだけでなくモーション演算プログラムをも実行することが可能になってきた。
【０００４】
たとえば、特許文献１には、モータを制御するモーション制御機能とシーケンス演算（ユーザプログラム）を実行するＰＬＣ機能とを、１つのＣＰＵで処理する構成が開示されている。より具体的には、基本クロックの１サイクルごとに、「定周期モーション制御処理および各軸処理」と「高速シーケンス処理」とを実行し、さらに各基本クロックサイクル内の残りの時間において、「低速シーケンス処理」または「非定周期モーション制御処理」を実行することが開示されている。
【０００５】
また、モーション制御においては電子カムが用いられることがある。電子カムは、機械式カムの動作を電子制御で実現するのものであり、カムの段取り換えやカム形状の微調整などが自由に簡単にできる。非特許文献１には、電子カムを実現するためのカムテーブルについての記述がなされている。また、非特許文献１には、カム変数についての記述がなされている。
【０００６】
特許文献２には、電子カム制御装置が開示されている。当該電子カム制御装置は、ストローク下死点設定部と、加算移動量設定部と、位置指令算出部と、ストローク下死点変更部とを備える。加算移動量設定部は、ストローク下死点位置を変更するための加算移動データを設定する。位置指令算出部は、ストローク下死点変更指令が入力されると、カム位置決め量Ａに、ストローク下死点設定部に設定されたストローク下死点位置および加算移動量設定部に設定された加算移動データに対応する加算移動量を逐次加算し、この加算結果を出力軸に対する位置指令値として順次出力する。ストローク下死点変更部は、ストローク下死点変更指令が入力されると、ストローク下死点設定部に設定されたストローク下死点位置に加算移動量設定部に設定された加算移動データに対応する加算移動量を逐次加算し、この加算結果でストローク下死点設定部に設定されたストローク下死点位置を順次
更新する。
【０００７】
特許文献３には、モータの位置決め制御システムが開示されている。当該モータの位置決め制御システムは、移動実時間Ｒtiを分周周期毎に更新し、更新した移動実時間Ｒtiから無次元時間ｔiを求め、この無次元時間ｔiに対応する無次元位置Ｓijをカム曲線テーブルを用いて求める。モータの位置決め制御システムは、求めた無次元位置Ｓijにストロークｈjを乗じて実位置ｓijを求める。モータの位置決め制御システムは、このような実位置ｓijを求める演算を選択したＮ個のカム曲線について行なう。モータの位置決め制御システムは、求めたＮ個の実位置ｓijを加算する。モータの位置決め制御システムは、この加算値ｓTiと前回の分周周期で求めた加算値ｓTi-1の差ｓTi−ｓTi-1を指令値にしてモータの回転位置をフィードバック制御する。
【０００８】
また、特許文献４から６には、主軸モータと従属軸モータとを同期駆動させる装置が開示されている。特許文献７には、電子カムを利用した、複合伸縮部部材の製造方法および製造装置（図１参照）が開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−１４０６５５号公報
【特許文献２】特開２００６−２９３６９２号公報
【特許文献３】特開平８−３３９２１８号公報
【特許文献４】特開平８−１２６３７５号公報
【特許文献５】特開平９−２８９７８８号公報
【特許文献６】特開平１０−１７４４７８号公報
【特許文献７】特開２０１０−２６０３２３号公報
【非特許文献】
【００１０】
【非特許文献１】Technical Specification PLCopen - Technical Committee 2 - Task Force，Function blocks for motion control(Formerly Part 1 and Part 2)，PLCopen Working Draft，Version 1.99 - Release for comments - till August 16, 2010
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献２では、電子カムにおけるストローク下死点が設定可能であるが、他の箇所は設定できない。また、非特許文献１には、カムテーブルの変更について具体的な内容が開示されていない。
【００１２】
さらに、主軸と従軸の位置関係を定義したカムテーブルを用いて同期制御を行なう電子カムの動作では、機械の個体差（機差）による同期タイミングの違いを吸収するために各機械で動作させながらカムテーブルに定義された位置情報を微調整しなければならない場合がある。また、特許文献７の図１に示すようなフィルムローラを主軸に有する装置では、フィルムの伸縮に合わせて従軸の動作内容を変更しなければならない場合がある。
【００１３】
従来は、パソコン上で動作する電子カム作成ソフトウェアでカムテーブルを作成し、当該カムテーブルをモーションコントローラに転送して電子カム動作を実現していた。この方法では、予め作成されたカムテーブルの位置情報で動作するため、上記のように装置機差の微調整や、電子カム動作中における従軸の動作の変更が容易に実現できなかった。
【００１４】
本願発明は上記の問題点に鑑みなされたものであって、その目的は、装置機差の微調整および電子カム動作中における従軸の動作の変更を容易に実現可能なＰＬＣの演算ユニッ
ト、支援装置、出力制御方法、表示制御方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【００１５】
本発明のある局面に従うと、演算ユニットは、モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットである。演算ユニットは、プロセッサと、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、カムテーブルとを格納したメモリとを備える。プロセッサは、プログラムの実行結果を、従動軸に対応する制御対象機器に出力する。プロセッサは、複数の位相のうちのいずれかの位相および当該位相に対応付けられた変位の少なくともいずれかを変更するための第１の指令を受け付けると、カムテーブルにおける当該位相および変位の少なくともいずれかを第１の指令に基づいた値に変更する。プロセッサは、変更が行なわれると、変更された後のカムテーブルを用いてプログラムを実行し、当該実行結果を制御対象機器に出力する。
【００１６】
好ましくは、メモリは、不揮発性メモリと、揮発性メモリとを含む。不揮発性メモリは、変更される前のカムテーブルを格納している。プロセッサは、変更される前のカムテーブルを不揮発性メモリから読み出して、当該読み出したカムテーブルを揮発性メモリに展開する。プロセッサは、展開後に第１の指令を受け付けると、揮発性メモリに展開されたカムテーブルにおいて変更を行なう。プロセッサは、第２の指令を受け付けると、揮発性メモリに展開されている変更された後のカムテーブルを、不揮発性メモリにさらに格納する。
【００１７】
好ましくは、変更される前のカムテーブルは、１つの変位と１つの位相とで構成されるカムデータを複数含む。複数のカムデータは、電子カムの動作に影響を与える第１のカムデータと、電子カムの動作に影響を与えない第２のカムデータとに区分される。プロセッサは、第１の指令を受け付けると、第２のカムデータにおける位相および変位の少なくともいずれかを、第１の指令に基づいた値に変更する。
【００１８】
好ましくは、プログラムは、モーション演算プログラムと、モーション演算プログラムに対して当該モーション演算プログラムの実行に必要な指示を与える処理を行なうユーザプログラムとを含む。カムデータの各々には識別情報が対応付けられている。プロセッサは、モーション演算プログラムを用いた電子カムの動作を実行しているときに、識別情報をユーザプログラムに通知する。
【００１９】
好ましくは、プロセッサは、変更される前のカムテーブルを不揮発性メモリから読み出すと、当該カムテーブルにおいて、位相が昇順となるようにカムデータが配列されているかを判定する。プロセッサは、位相が昇順となるようにカムデータが配列されていないと判定した場合、予め定められた報知を行なう。
【００２０】
好ましくは、プロセッサは、プログラムを実行している場合、カムテーブルの変更の有無にかかわらず、プログラムの実行の際に用いられているカムテーブルにおいて、位相が昇順となるようにカムデータが配列されているかを、予め定められた間隔で判定する。プロセッサは、位相が昇順となるようにカムデータが配列されていないと判定した場合、予め定められた報知を行なう。
【００２１】
好ましくは、プロセッサは、第１の変更モードおよび第２の変更モードのいずれかを選択するための指示を受け付ける。プロセッサは、第１の変更モードの選択を受け付けた場合に、第１の指令を受け付けると、当該第１の指令を受け付けたときの電子カムの周期および当該周期の次の周期以降において、変更された後のカムテーブルを用いてプログラムを実行する。プロセッサは、第２の変更モードの選択を受け付けた場合に、第１の指令を
受け付けると、第１の指令を受け付けたときの電子カムの周期においては変更される前のカムテーブルを用いてプログラムを実行し、当該周期の次の周期以降においては変更された後のカムテーブルを用いてプログラムを実行する。
【００２２】
好ましくは、プログラムは、モーション演算プログラムと、モーション演算プログラムに対して当該モーション演算プログラムの実行に必要な指示を与える処理を行なうユーザプログラムとを含む。プロセッサは、モーション演算プログラムの実行を、第１の定周期毎に繰り返す。プロセッサは、ユーザプログラムを、第１の定周期の整数倍となる第２の定周期毎に繰り返す。ユーザプログラムのうち変更を行なうためのプログラムは、第１の定周期のタスクまたは第２の定周期のタスクに記述される。
【００２３】
本発明の他の局面に従うと、支援装置は、プログラマブル・ロジック・コントローラの演算ユニットで実行されるユーザプログラムの作成を行なうための支援装置である。演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けた第１のカム曲線と、複数の位相のうちのいずれかの位相に対応付けられた変位が変更されたカムテーブルとを格納したメモリを備える。支援装置は、プロセッサと、第１のカム曲線と、ユーザプログラムの作成を支援するサポートプログラムとを格納したメモリと、ディスプレイと、演算ユニットと通信を行なうための通信インターフェイスとを備える。プロセッサは、予め定められた指令を受け付けると、通信インターフェイスを用いて、第１のカム曲線とカムテーブルとを演算ユニットから取得する。プロセッサは、メモリに格納された第１のカム曲線または取得した第１のカム曲線と、取得したカムテーブルに基づく第２のカム曲線とをディスプレイに表示させる。
【００２４】
好ましくは、サポートプログラムは、閾値を予め記憶している。プロセッサは、カムテーブルに基づき、従動軸の加加速度を算出する。プロセッサは、算出された加加速度が閾値以上である場合、加加速度が閾値以上であることを示す画像を、ディスプレイに表示させる。
【００２５】
好ましくは、サポートプログラムは、閾値を予め記憶している。プロセッサは、カムテーブルに基づき、従動軸の速度を算出する。プロセッサは、算出された速度が閾値以上である場合、速度が閾値以上であることを示す画像を、ディスプレイに表示させる。
【００２６】
好ましくは、サポートプログラムは、閾値を予め記憶している。プロセッサは、カムテーブルに基づき、従動軸の加速度を算出する。プロセッサは、算出された加速度が閾値以上である場合、加速度が閾値以上であることを示す画像を、ディスプレイに表示させる。
【００２７】
好ましくは、プロセッサは、第２のカム曲線において、閾値を超えた箇所を、閾値を超えていない箇所とは異なる表示態様で、ディスプレイに表示させる。
【００２８】
本発明のさらに他の局面に従うと、出力制御方法は、モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットにおける出力制御方法である。演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、カムテーブルとを格納している。出力制御方法は、演算ユニットのプロセッサが、プログラムの実行結果を、従動軸に対応する制御対象機器に出力するステップと、プロセッサが、複数の位相のうちのいずれかの位相および当該位相に対応付けられた変位の少なくともいずれかを変更するための第１の指令を受け付けると、カムテーブルにおける当該位相および変位の少なくともいずれかを第１の指令に基づいた値に変更するステップと、プロセッサが、変更が行なわれると、変更された後のカムテーブルを用いてプログラムを実行し、当該実行結果を制御対象機器に出力するステップとを備える。
【００２９】
本発明のさらに他の局面に従うと、表示制御方法は、プログラマブル・ロジック・コントローラの演算ユニットで実行されるユーザプログラムの作成を行なうための支援装置における表示制御方法である。演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けた第１のカム曲線と、複数の位相のうちのいずれかの位相に対応付けられた変位が変更されたカムテーブルとをメモリに格納している。支援装置は、第１のカム曲線と、ユーザプログラムの作成を支援するサポートプログラムとを格納している。表示制御方法は、支援装置のプロセッサが、予め定められた指令を受け付けると、通信インターフェイスを用いて、第１のカム曲線とカムテーブルとを演算ユニットから取得するステップと、プロセッサが、メモリに格納された第１のカム曲線または取得した第１のカム曲線と、取得したカムテーブルに基づく第２のカム曲線とをディスプレイに表示させるステップとを備える。
【００３０】
本発明のさらに他の局面に従うと、プログラムは、モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットを制御するプログラムである。演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、カムテーブルとを格納している。プログラムは、プログラムの実行結果を、従動軸に対応する制御対象機器に出力するステップと、複数の位相のうちのいずれかの位相および当該位相に対応付けられた変位の少なくともいずれかを変更するための第１の指令を受け付けると、カムテーブルにおける当該位相および変位の少なくともいずれかを第１の指令に基づいた値に変更するステップと、変更が行なわれると、変更された後のカムテーブルを用いてプログラムを実行し、当該実行結果を制御対象機器に出力するステップとを、演算ユニットに実行させる。
【００３１】
本発明のさらに他の局面に従うと、プログラムは、プログラマブル・ロジック・コントローラの演算ユニットで実行されるユーザプログラムの作成を行なうための支援装置を制御するためのプログラムである。演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けた第１のカム曲線と、複数の位相のうちのいずれかの位相に対応付けられた変位が変更されたカムテーブルとを格納している。支援装置は、第１のカム曲線と、ユーザプログラムの作成を支援するサポートプログラムとをメモリに格納している。プログラムは、予め定められた指令を受け付けると、通信インターフェイスを用いて、カムテーブルを演算ユニットから取得するステップと、メモリに格納された第１のカム曲線または取得した第１のカム曲線と、取得したカムテーブルに基づく第２のカム曲線とをディスプレイに表示させるステップとを、支援装置に実行させる、プログラム。
【発明の効果】
【００３２】
本発明によれば、装置機差の微調整および電子カム動作中における従軸の動作の変更を容易に実現可能となる。
【図面の簡単な説明】
【００３３】
【図１】ＰＬＣシステムの概略構成を示す模式図である。
【図２】ＣＰＵユニットのハードウェア構成を示す模式図である。
【図３】ＣＰＵユニットで実行されるソフトウェア構成を示す模式図である。
【図４】制御プログラムによって提供されるモーション制御の概略の処理手順を示すフローチャートである。
【図５】モーション制御命令とタスクとの関係を示した図である。
【図６】電子カムの機能概要を表した図である。
【図７】電子カムの動作を視覚的に説明するための図である。
【図８】電子カムのカム曲線を示した図である。
【図９】電子カムに関するシステム構成を表した図である。
【図１０】カムデータに関する構造体配列を示した図である。
【図１１】カムテーブルのデータ構造を表した図である。
【図１２】テーブル形式のＧＵＩを用いる方式における、カムテーブルを書き換えるためのユーザインターフェイスを表した図である。
【図１３】カムテーブルを書き換えた後のカムテーブルのデータ構造を表した図である。
【図１４】カムテーブルの書き換え処理を説明するための図である。
【図１５】プログラムをユーザが直接記述する方式における、カムテーブルを書き換えるためのユーザインターフェイスを表した図である。
【図１６】カムデータを書き換える手順を示したフローチャートである。
【図１７】高優先度定周期タスクにカムテーブルを書き換える制御命令を記載したときのデータフローを表した図である。
【図１８】低優先度定周期タスクにカムテーブルを書き換える制御命令を記載したときのデータフローを表した図である。
【図１９】位相θａにおける変位を変更する指令を受け付けた次の制御周期においては変更前のカムテーブルを用い、当該指令を受け付けた次の次の制御周期において他のカムテーブルを用いた処理を行なう場合における、電子カムの動作を説明するための図である。
【図２０】カムテーブルの位相を書き換えるためのユーザインターフェイスを表した図である。
【図２１】ＰＬＣサポート装置が、カム曲線および変更後のカム曲線をＰＬＣサポート装置のディスプレイに表示した状態を表した図である。
【図２２】図２１（ａ），（ｂ）の各々の状態において、さらに警告表示がなされた状態を表した図である。
【図２３】ＣＰＵユニットに接続して用いられるＰＬＣサポート装置のハードウェア構成を示す模式図である。
【図２４】ＣＰＵユニットに接続して用いられるＰＬＣサポート装置のソフトウェア構成を示す模式図である。
【図２５】テーブル形式のＧＵＩを用いる方式における、カムテーブルの位相を書き換えるためのユーザインターフェイスを表した図である。
【発明を実施するための形態】
【００３４】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００３５】
＜Ａ．システム構成＞
本実施の形態に係るＰＬＣは、モータの運動を制御するためのモーション制御機能を有する。まず、図１を参照して、本実施の形態に係るＰＬＣ１のシステム構成について説明する。
【００３６】
図１は、本発明の実施の形態に係るＰＬＣシステムの概略構成を示す模式図である。図１を参照して、ＰＬＣシステムＳＹＳは、ＰＬＣ１と、ＰＬＣ１とフィールドネットワーク２を介して接続されるサーボモータドライバ３およびリモートＩＯターミナル５と、フィールド機器である検出スイッチ６およびリレー７とを含む。また、ＰＬＣ１には、接続ケーブル１０などを介してＰＬＣサポート装置８が接続される。
【００３７】
ＰＬＣ１は、主たる演算処理を実行するＣＰＵユニット１３と、１つ以上のＩＯユニット１４と、特殊ユニット１５とを含む。これらのユニットは、ＰＬＣシステムバス１１を
介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット１２によって適切な電圧の電源が供給される。なお、ＰＬＣ１として構成される各ユニットは、ＰＬＣメーカーが提供するものであるので、ＰＬＣシステムバス１１は、一般にＰＬＣメーカーごとに独自に開発され、使用されている。これに対して、後述するようにフィールドネットワーク２については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。
【００３８】
ＣＰＵユニット１３の詳細については、図２を参照して後述する。
ＩＯユニット１４は、一般的な入出力処理に関するユニットであり、オン／オフといった２値化されたデータの入出力を司る。すなわち、ＩＯユニット１４は、検出スイッチ６などのセンサが何らかの対象物を検出している状態（オン）および何らの対象物も検出していない状態（オフ）のいずれであるかという情報を収集する。また、ＩＯユニット１４は、リレー７やアクチュエータといった出力先に対して、活性化するための指令（オン）および不活性化するための指令（オフ）のいずれかを出力する。
【００３９】
特殊ユニット１５は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、ＩＯユニット１４ではサポートしない機能を有する。
【００４０】
フィールドネットワーク２は、ＣＰＵユニット１３と遣り取りされる各種データを伝送する。フィールドネットワーク２としては、典型的には、各種の産業用イーサネット（登録商標）を用いることができる。産業用イーサネット（登録商標）としては、たとえば、ＥｔｈｅｒＣＡＴ（登録商標）、Ｐｒｏｆｉｎｅｔ  ＩＲＴ、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ  Ｍｏｔｉｏｎなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット（登録商標）以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ／ＩＰ（登録商標）などを用いてもよい。本実施の形態に係るＰＬＣシステムＳＹＳでは、典型的に、本実施の形態においては、産業用イーサネット（登録商標）であるＥｔｈｅｒＣＡＴ（登録商標）をフィールドネットワーク２として採用する場合の構成について例示する。
【００４１】
なお、図１には、ＰＬＣシステムバス１１およびフィールドネットワーク２の両方を有するＰＬＣシステムＳＹＳを例示するが、一方のみを搭載するシステム構成を採用することもできる。たとえば、フィールドネットワーク２ですべてのユニットを接続してもよい。あるいは、フィールドネットワーク２を使用せずに、サーボモータドライバ３をＰＬＣシステムバス１１に直接接続してもよい。さらに、フィールドネットワーク２の通信ユニットをＰＬＣシステムバス１１に接続し、ＣＰＵユニット１３から当該通信ユニット経由で、フィールドネットワーク２に接続された機器との間の通信を行なうようにしてもよい。
【００４２】
サーボモータドライバ３は、フィールドネットワーク２を介してＣＰＵユニット１３と接続されるとともに、ＣＰＵユニット１３からの指令値に従ってサーボモータ４を駆動する。より具体的には、サーボモータドライバ３は、ＰＬＣ１から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ３は、サーボモータ４の軸に接続されている位置センサ（ロータリーエンコーダ）やトルクセンサといった検出器から、位置、速度（典型的には、今回位置と前回位置との差から算出される）、トルクといったサーボモータ４の動作に係る実測値を取得する。そして、サーボモータドライバ３は、ＣＰＵユニット１３からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行なう。すなわち、サーボモータドライバ３は、実測値が目標値に近づくようにサーボモータ４を駆動するための電流を調整する。
なお、サーボモータドライバ３は、サーボモータアンプと称されることもある。
【００４３】
また、図１には、サーボモータ４とサーボモータドライバ３とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
【００４４】
図１に示すＰＬＣシステムＳＹＳのフィールドネットワーク２には、さらに、リモートＩＯターミナル５が接続されている。リモートＩＯターミナル５は、基本的には、ＩＯユニット１４と同様に、一般的な入出力処理に関する処理を行なう。より具体的には、リモートＩＯターミナル５は、フィールドネットワーク２でのデータ伝送に係る処理を行なうための通信カプラ５２と、１つ以上のＩＯユニット５３とを含む。これらのユニットは、リモートＩＯターミナルバス５１を介して、データを互いに遣り取りできるように構成される。
【００４５】
なお、ＰＬＣサポート装置８については後述する。
＜Ｂ．ＣＰＵユニットのハードウェア構成＞
次に、図２を参照して、ＣＰＵユニット１３のハードウェア構成について説明する。図２は、本発明の実施の形態に係るＣＰＵユニット１３のハードウェア構成を示す模式図である。図２を参照して、ＣＰＵユニット１３は、マイクロプロセッサ１００と、チップセット１０２と、メインメモリ１０４と、不揮発性メモリ１０６と、システムタイマ１０８と、ＰＬＣシステムバスコントローラ１２０と、フィールドネットワークコントローラ１４０と、ＵＳＢコネクタ１１０とを含む。チップセット１０２と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【００４６】
マイクロプロセッサ１００およびチップセット１０２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ１００は、チップセット１０２から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１０２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ１００に必要な命令コードを生成する。さらに、チップセット１０２は、マイクロプロセッサ１００での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００４７】
ＣＰＵユニット１３は、記憶手段として、メインメモリ１０４および不揮発性メモリ１０６を有する。
【００４８】
メインメモリ１０４は、揮発性の記憶領域（ＲＡＭ）であり、ＣＰＵユニット１３への電源投入後にマイクロプロセッサ１００で実行されるべき各種プログラムを保持する。また、メインメモリ１０４は、マイクロプロセッサ１００による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ１０４としては、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）といったデバイスが用いられる。
【００４９】
一方、不揮発性メモリ１０６は、リアルタイムＯＳ（Operating System）、ＰＬＣ１のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ１００がアクセスできるようにメインメモリ１０４にコピーされる。このような不揮発性メモリ１０６としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、ＤＶＤ−ＲＡＭ（Digital Versatile Disk Random Access Memory）のような光学記録媒体などを用いることもできる。
【００５０】
システムタイマ１０８は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ１００に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、ＯＳ（Operating System）やＢＩＯＳ（Basic Input Output System）などによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ１０８が発生する割り込み信号を利用して、後述するようなモーション制御サイクルごとの制御動作が実現される。
【００５１】
ＣＰＵユニット１３は、通信回路として、ＰＬＣシステムバスコントローラ１２０およびフィールドネットワークコントローラ１４０を有する。
【００５２】
バッファメモリ１２６は、ＰＬＣシステムバス１１を介して他のユニットへ出力されるデータ（以下「出力データ」とも称す。）の送信バッファ、および、ＰＬＣシステムバス１１を介して他のユニットから入力されるデータ（以下「入力データ」とも称す。）の受信バッファとして機能する。なお、マイクロプロセッサ１００による演算処理によって作成された出力データは、原始的にはメインメモリ１０４に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ１０４から読み出されて、バッファメモリ１２６に一次的に保持される。また、他のユニットから転送された入力データは、バッファメモリ１２６に一次的に保持された後、メインメモリ１０４に移される。
【００５３】
ＤＭＡ制御回路１２２は、メインメモリ１０４からバッファメモリ１２６への出力データの転送、および、バッファメモリ１２６からメインメモリ１０４への入力データの転送を行なう。
【００５４】
ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１に接続される他のユニットとの間で、バッファメモリ１２６の出力データを送信する処理および入力データを受信してバッファメモリ１２６に格納する処理を行なう。典型的には、ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１における物理層およびデータリンク層の機能を提供する。
【００５５】
フィールドネットワークコントローラ１４０は、フィールドネットワーク２を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ１４０は、用いられるフィールドネットワーク２の規格に従い、出力データの送信および入力データの受信を制御する。上述したように、本実施の形態においてはＥｔｈｅｒＣＡＴ（登録商標）規格に従うフィールドネットワーク２が採用されるので、通常のイーサネット（登録商標）通信を行なうためのハードウェアを含む、フィールドネットワークコントローラ１４０が用いられる。ＥｔｈｅｒＣＡＴ（登録商標）規格では、通常のイーサネット（登録商標）規格に従う通信プロトコルを実現する一般的なイーサネット（登録商標）コントローラを利用できる。但し、フィールドネットワーク２として採用される産業用イーサネット（登録商標）の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット（登録商標）コントローラが用いられる。また、産業用イーサネット（登録商標）以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。
【００５６】
ＤＭＡ制御回路１４２は、メインメモリ１０４からバッファメモリ１４６への出力データの転送、および、バッファメモリ１４６からメインメモリ１０４への入力データの転送を行なう。
【００５７】
フィールドネットワーク制御回路１４４は、フィールドネットワーク２に接続される他の装置との間で、バッファメモリ１４６の出力データを送信する処理および入力データを
受信してバッファメモリ１４６に格納する処理を行なう。典型的には、フィールドネットワーク制御回路１４４は、フィールドネットワーク２における物理層およびデータリンク層の機能を提供する。
【００５８】
ＵＳＢコネクタ１１０は、ＰＬＣサポート装置８とＣＰＵユニット１３とを接続するためのインターフェイスである。典型的には、ＰＬＣサポート装置８から転送される、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なプログラムなどは、ＵＳＢコネクタ１１０を介してＰＬＣ１に取込まれる。
【００５９】
＜Ｃ．ＣＰＵユニットのソフトウェア構成＞
次に、図３を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＣＰＵユニット１３のマイクロプロセッサ１００によって実行される。
【００６０】
図３は、本発明の実施の形態に係るＣＰＵユニット１３で実行されるソフトウェア構成を示す模式図である。図３を参照して、ＣＰＵユニット１３で実行されるソフトウェアとしては、リアルタイムＯＳ２００と、システムプログラム２１０と、ユーザプログラム２３６との３階層になっている。
【００６１】
リアルタイムＯＳ２００は、ＣＰＵユニット１３のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ１００がシステムプログラム２１０およびユーザプログラム２３６を実行するための基本的な実行環境を提供する。このリアルタイムＯＳは、典型的には、ＰＬＣのメーカーあるいは専門のソフトウェア会社などによって提供される。
【００６２】
システムプログラム２１０は、ＰＬＣ１としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム２１０は、スケジューラプログラム２１２と、出力処理プログラム２１４と、入力処理プログラム２１６と、シーケンス命令演算プログラム２３２と、モーション演算プログラム２３４と、その他のシステムプログラム２２０とを含む。なお、一般には出力処理プログラム２１４および入力処理プログラム２１６は、連続的（一体として）に実行されるので、これらのプログラムを、ＩＯ処理プログラム２１８と総称する場合もある。
【００６３】
ユーザプログラム２３６は、ユーザにおける制御目的に応じて作成される。すなわち、ＰＬＣシステムＳＹＳを用いて制御する対象のライン（プロセス）などに応じて、任意に設計されるプログラムである。
【００６４】
後述するように、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム２３６、シーケンス命令演算プログラム２３２、およびモーション演算プログラム２３４を、制御プログラム２３０と総称する場合もある。
【００６５】
このように、ＣＰＵユニット１３のマイクロプロセッサ１００は、記憶手段に格納されたシステムプログラム２１０およびユーザプログラム２３６を実行する。
【００６６】
以下、各プログラムについてより詳細に説明する。
ユーザプログラム２３６は、上述したように、ユーザにおける制御目的（たとえば、対
象のラインやプロセス）に応じて作成される。ユーザプログラム２３６は、典型的には、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム２３６は、ＰＬＣサポート装置８などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム２３６は、ＰＬＣサポート装置８から接続ケーブル１０を介してＣＰＵユニット１３へ転送され、不揮発性メモリ１０６などに格納される。
【００６７】
スケジューラプログラム２１２は、出力処理プログラム２１４、入力処理プログラム２１６、および制御プログラム２３０について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム２１２は、ユーザプログラム２３６およびモーション演算プログラム２３４の実行を制御する。
【００６８】
本実施の形態に係るＣＰＵユニット１３では、モーション演算プログラム２３４に適した一定周期の実行サイクル（モーション制御サイクル）を処理全体の共通サイクルとして採用する。そのため、１つのモーション制御サイクル内で、すべての処理を完了することは難しいので、実行すべき処理の優先度などに応じて、各モーション制御サイクルにおいて実行を完了すべき処理と、複数のモーション制御サイクルに亘って実行してもよい処理とが区分される。スケジューラプログラム２１２は、これらの区分された処理の実行順序などを管理する。より具体的には、スケジューラプログラム２１２は、各モーション制御サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。
【００６９】
出力処理プログラム２１４は、ユーザプログラム２３６（制御プログラム２３０）の実行によって生成された出力データを、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０へ転送するのに適した形式に再配置する。ＰＬＣシステムバスコントローラ１２０またはフィールドネットワークコントローラ１４０が、マイクロプロセッサ１００からの、送信を実行するための指示を必要とする場合は、出力処理プログラム２１４がそのような指示を発行する。
【００７０】
入力処理プログラム２１６は、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０によって受信された入力データを、制御プログラム２３０が使用するのに適した形式に再配置する。
【００７１】
シーケンス命令演算プログラム２３２は、ユーザプログラム２３６で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。
【００７２】
モーション演算プログラム２３４は、ユーザプログラム２３６による指示に従って実行され、サーボモータドライバ３やパルスモータドライバといったなモータドライバに対して出力する指令値を算出するプログラムである。
【００７３】
その他のシステムプログラム２２０は、図３に個別に示したプログラム以外の、ＰＬＣ１の各種機能を実現するためのプログラム群をまとめて示したものである。その他のシステムプログラム２２０は、モーション制御サイクルの周期を設定するプログラム２２２を含む。
【００７４】
モーション制御サイクルの周期は、制御目的に応じて適宜設定することができる。典型的には、モーション制御サイクルの周期を指定する情報をユーザがＰＬＣサポート装置８へ入力する。すると、その入力された情報は、ＰＬＣサポート装置８からＣＰＵユニット
１３へ転送される。モーション制御サイクルの周期を設定するプログラム２２２は、ＰＬＣサポート装置８からの情報を不揮発性メモリ１０６に格納させるとともに、システムタイマ１０８から指定されたモーション制御サイクルの周期で割り込み信号が発生されるように、システムタイマ１０８を設定する。ＣＰＵユニット１３への電源投入時に、モーション制御サイクルの周期を設定するプログラム２２２が実行されることで、モーション制御サイクルの周期を指定する情報が不揮発性メモリ１０６から読み出され、読み出された情報に従ってシステムタイマ１０８が設定される。
【００７５】
モーション制御サイクルの周期を指定する情報の形式としては、モーション制御サイクルの周期を示す時間の値や、モーション制御サイクルの周期に関する予め用意された複数の選択肢のうちから１つを特定する情報（番号または文字）などを採用することができる。
【００７６】
本実施の形態に係るＣＰＵユニット１３において、モーション制御サイクルの周期を設定する手段としては、モーション制御サイクルの周期を指定する情報を取得するために用いられるＰＬＣサポート装置８との通信手段、モーション制御サイクルの周期を設定するプログラム２２２、ならびにモーション制御サイクルを規定する割り込み信号の周期を任意に設定可能に構成されているシステムタイマ１０８の構成といった、モーション制御サイクルの周期を任意の設定するために用いられる要素が該当する。
【００７７】
リアルタイムＯＳ２００は、複数のプログラムを時間の経過に従い切り換えて実行するための環境を提供する。本実施の形態に係るＰＬＣ１においては、ＣＰＵユニット１３のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力（送信）するためのイベント（割り込み）として、出力準備割り込み（Ｐ）およびフィールドネットワーク送信割り込み（Ｘ）が初期設定される。リアルタイムＯＳ２００は、出力準備割り込み（Ｐ）またはフィールドネットワーク送信割り込み（Ｘ）が発生すると、マイクロプロセッサ１００での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム２１２に切り換える。なお、リアルタイムＯＳ２００は、スケジューラプログラム２１２およびスケジューラプログラム２１２がその実行を制御するプログラムが何ら実行されていない場合に、その他のシステムプログラム２１０に含まれているプログラムを実行する。このようなプログラムとしては、たとえば、ＣＰＵユニット１３とＰＬＣサポート装置８との間の接続ケーブル１０（ＵＳＢ）などを介した通信処理に関するものが含まれる。
【００７８】
＜Ｄ．モーション制御の概略＞
次に、上述したユーザプログラム２３６に含まれる典型的な構成について説明する。ユーザプログラム２３６は、モータの運動に関する制御開始の条件が成立するか否かを周期的に判断させる命令を含む。たとえば、モータの駆動力によって何らかの処置がなされるワークが所定の処置位置まで搬送されたか否かを判断するようなロジックである。そして、ユーザプログラム２３６は、この制御開始の条件が成立したと判断されたことに応答して、モーション制御を開始させる命令をさらに含む。このモーション制御の開始に伴って、モーション命令の実行が指示される。すると、指示されたモーション命令に対応するモーション演算プログラム２３４が起動し、まず、モーション演算プログラム２３４の実行ごとにモータに対する指令値を算出していくために必要な初期処理が実行される。また、初期処理と同じモーション制御サイクルにおいて、第１サイクルでの指令値が算出される。したがって、初期処理および第１番目の指令値算出処理が、起動したモーション演算プログラム２３４が第１番目の実行においてなすべき処理となる。以降、各サイクルでの指令値が順次算出される。
【００７９】
図４は、本発明の実施の形態に係る制御プログラム２３０（ユーザプログラム２３６、
シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４）によって提供されるモーション制御の概略の処理手順を示すフローチャートである。図４を参照して、マイクロプロセッサ１００は、モータの運動に関する制御開始の条件が成立しているか否かを周期的に判断する（ステップＳ２）。この制御開始の条件が成立しているか否かの判断は、ユーザプログラム２３６およびシーケンス命令演算プログラム２３２によって実現される。制御開始の条件が成立していない場合（ステップＳ２においてＮＯの場合）には、ステップＳ２の判断が繰り返される。
【００８０】
制御開始の条件が成立している場合（ステップＳ２においてＹＥＳの場合）には、マイクロプロセッサ１００は、モーション制御に関する初期処理を実行する（ステップＳ４）。この初期処理としては、モータの運動の開始位置座標、終了位置座標、初期速度、初期加速度、軌跡などを算出処理が含まれる。続いて、マイクロプロセッサ１００は、第１サイクルでの指令値の算出処理を実行する（ステップＳ６）。さらに、マイクロプロセッサ１００は、算出した指令値の出力処理を実行する（ステップＳ８）。
【００８１】
その後、マイクロプロセッサ１００は、次のモーション制御サイクルが到来するまで待つ（ステップＳ１０）。そして、マイクロプロセッサ１００は、モータの運動に関する制御終了の条件が成立しているか否かを周期的に判断する（ステップＳ１２）。この制御終了の条件が成立しているとは、サーボモータ４が終了位置に到達している状態などをいう。制御終了の条件が成立している場合（ステップＳ１２においてＹＥＳの場合）には、ステップＳ２以下の処理が再度繰り返される。このとき、起動中のモーション演算プログラム２３４は、新たな制御開始の条件が成立するまで不活性の状態に維持される。
【００８２】
制御終了の条件が成立していない場合（ステップＳ１２においてＮＯの場合）には、マイクロプロセッサ１００は、現在のサイクルでの指令値の算出処理を実行する（ステップＳ１４）。さらに、マイクロプロセッサ１００は、算出した指令値の出力処理を実行する（ステップＳ１６）。そして、ステップＳ１０以下の処理が繰り返される。
【００８３】
以下では、モーション制御を実現する為の機能モジュールを、「モーション制御機能モジュール」とも称する。具体的には、「モーション制御機能モジュール」とは、ユーザプログラムから与えられた目標値（位置、速度、トルクなど）を用いて、ユーザ所望のモーション動作を実現するために必要な、軸への指令値出力、および軸からの情報取得を一定の周期で実行する機能モジュールである。なお、「モーション制御機能モジュール」は、サーボドライバに対して指令値を出力するオープンループ型のコントローラである。また、モーション制御機能モジュールに対して指示を与える命令（ファンクションブロック（以下、「ＦＢ」とも称する）等）のことを、「モーション制御命令」と称する。
【００８４】
図５は、モーション制御命令とタスクとの関係を示した図である。具体的には、図５は、データフローを示した図である。図５を参照して、モーション制御機能モジュールは、高優先度定周期タスク中で実行される。モーション制御命令は、高優先度定周期タスクまたは低優先度定周期タスクに記述できる。高優先度定周期タスクは、ＣＰＵユニット１３の中で最高優先度のタスクである。
【００８５】
低優先度定周期タスク実行中に高優先度定周期タスクが実行可能になった場合、低優先度定周期タスクは一旦中断され、高優先度定周期タスクが実行される。高優先度定周期タスクの完了後、低優先度定周期タスクの実行が再開される。なお、低優先度定周期タスクの周期Ｔ２は、高優先度定周期タスクの周期Ｔ１の整数倍である。図５は、Ｔ２＝２Ｔ１の場合を表している。
【００８６】
図５においては、スケジューラプログラムを「ＳＣ」と、出力・入力処理プログラムを
「ＯＩ」と、ユーザプログラム２３６を「ＵＰＲＧ」と、モーション演算プログラム２３４を「ＭＣ」と表記している。また、図５では、説明の便宜上、各ＯＩ、各ＭＣを識別するために、それぞれに異なる参照符合７０１〜７０７を付している。
【００８７】
データの大まかな流れの順序は、（１）スレーブ→ＯＩ７０１→ＭＣ７０２→ＯＩ７０３→サーボモータドライバ３、（２）ＭＣ７０４→ＯＩ７０５→サーボモータドライバ３、（３）ＭＣ７０６→ＯＩ７０７→サーボモータドライバ３である。以下、具体的に説明する。
【００８８】
ＰＬＣ１の実行中においては、マイクロプロセッサ１００が、少なくとも、出力・入力処理プログラム（出力処理プログラム２１４および入力処理プログラム２１６）と、ユーザプログラム２３６と、モーション演算プログラム２３４とが実行可能な状態になっている。厳密に言えば、リアルタイムＯＳ２００がそれぞれのプログラムに係るプロセス（または、スレッド）を実行可能な状態に保持しており、スケジューラプログラム２１２がリアルタイムＯＳ２００およびハードウェアリソース（システムタイマ１０８など）を利用することで、各プログラムが適切なタイミングかつ適切な順序で実行される。このように、それぞれのプログラムに係る実行の開始／中断／終了などは、スケジューラプログラム２１２によって制御される。
【００８９】
図５において、スレーブからＯＩ７０１への入力（ＩＮ）に基づき、フィールドネットワークコントローラ１４０（図２参照）がモーション制御用入力データを受信してメインメモリ１０４のフィールドネットワーク受信バッファ（図示せず）に当該入力データを格納、および／または、ＰＬＣシステムバスコントローラ１２０が、モーション制御用入力データを受信してメインメモリ１０４のＰＬＣシステムバス受信バッファ（図示せず）に当該入力データを格納する。なお、ＣＰＵユニット１３がマスタであり、ＣＰＵユニット１３以外のそれぞれのユニットが、スレーブに設定される。
【００９０】
また、ＩＯ処理プログラム２１８の命令に従って、起動指令データまたはモーション指令値データが出力される。より具体的には、メインメモリ１０４の制御プログラムの作業領域（図示せず）に格納されている起動指令データおよびモーション指令値データがメインメモリ１０４のフィールドネットワーク送信バッファ（図示せず）へ転送される。さらに、フィールドネットワーク送信バッファへのデータ転送に続いて、フィールドネットワークコントローラ１４０が起動指令データまたはモーション指令値データをサーボモータドライバ３へ送信する。
【００９１】
なお、上記のスレーブからＯＩ７０１への入力（ＩＮ）では、ユーザプログラム２３６での演算には使用されるが、モーション演算プログラム２３４での演算には使用されない入力データについても入力され得る。また、ユーザプログラム２３６の実行により生成されるユーザプログラム出力データは、モーション演算プログラム２３４での演算には使用されない出力データであっても、ＩＯ処理プログラム２１８へ送られて、ＯＩの処理において出力される。
【００９２】
本実施の形態に係る「モーション制御サイクル」は、モーション演算プログラム２３４の実行および通信の周期、すなわち、サーボモータドライバ３へモーション指令値データを与える周期で実行される一連の処理のサイクルである。
【００９３】
＜Ｅ．電子カム＞
以下では、同期制御の機能として、電子カム動作について説明する。「同期制御」とは、主軸（入力軸）の位置に同期して従動軸（制御対象軸）の位置を制御することである。主軸としては、フルクローズドループ制御用のエンコーダの位置、サーボドライバおよび
仮想サーボドライバの指令位置、並びに、エンコーダ、サーボドライバ、および仮想サーボドライバのフィードバック位置のうちのいずれかを指定できる。また、「電子カム動作」とは、後述するカムテーブルによって設定されたカムパターンに従い、制御周期でカム動作を行なう機能をいう。
【００９４】
ＣＰＵユニット１３は、制御周期毎に入力に同期して演算することによって出力を制御するため、演算結果がモーション制御機能モジュールで出力可能な最高速度を上回る場合もある。しかしながら、この場合には、ＣＰＵユニット１３は、エラーとはせずに、最高速度の出力を行なう。ＣＰＵユニット１３は、最高速度で飽和することにより不足する移動量は次の制御周期以降において、分配して出力する。
【００９５】
図６は、電子カムの機能概要を表した図である。図６を参照して、電子カム５００は、電子カム演算部５０１と、補間部５０２と、スイッチ部５０３とを備える。電子カム演算部５０１には、フルクローズドループ制御用のエンコーダの位置、サーボドライバおよび仮想サーボドライバの指令位置、並びに、エンコーダ、サーボドライバ、および仮想サーボドライバのフィードバック位置のうち、予め選択された位置が入力される。
【００９６】
電子カム演算部５０１は、入力された主軸の位相とカムテーブルとに基づき、従動軸の変位を補間部５０２に出力する。補間部５０２は、電子カム演算部５０１から出力された値を用いて補間処理を行なう。補間部５０２は、補間処理後の値（指令位置）を、スイッチ部５０３を介して出力する。カムテーブルは、不揮発性メモリ１０６に予め格納されており、電源投入に伴い、メインメモリ１０４に展開される。
【００９７】
図７は、電子カム５００の動作を視覚的に説明するための図である。具体的には、図７は、カムテーブルに基づいたカム曲線で表される機械式カム５００Ａを含んだカム機構ＭＥを表した図である。図７を参照して、カム機構ＭＥは、主軸４００と、機械式カム５００Ａと、従動軸６００とを備えている。機械式カム５００Ａは、主軸４００に固定されており、主軸４００の回転に伴い回転する。従動軸６００は、機械式カム５００Ａの回転に伴い、直線運動を行なう。つまり、カム機構ＭＥにおいては、主軸の位相（入力）が変化すると、従動軸６００が変位（出力）する。このようなカム機構ＭＥにおける入出力を、ソフトウェアにて実現したものが電子カム５００である。
【００９８】
図８は、電子カム５００のカム曲線５１０を示した図である。図８を参照して、カム曲線５１０は、位相が０から増加するに連れて変位が０から増加し、半周期における位相（１８０度）で変位はピークを迎える。その後、位相の増加に連れて変位が減少し、１周期における位相（３６０度）で変位は０となる。なお、カム曲線５１０は、例示であって、ＰＬＣシステムＳＹＳで利用されるカム曲線は、これに限定されるものではない。
【００９９】
図９は、電子カム５００に関するシステム構成を表した図である。図９は、図６の電子カム５００をより詳しく示した図であり、電子カムの動作を実行させるモーションコントローラの構成を示した図でもある。図９を参照して、電子カム５００に関するシステムは、電子カム演算部５０１と、補間部５０２と、スイッチ部５０３と、メインメモリ１０４と、不揮発性メモリ１０６と、ユーザプログラム２３６とにより実現される。
【０１００】
不揮発性メモリ１０６には、複数のカムテーブル５２０，５２１，５２２が格納されている。図９は、不揮発性メモリ１０６からカムテーブル５２０がメインメモリ１０４に展開された状態を示している。また、図９は、電子カム５００に対して、エンコーダ１９からエンコーダ位置が入力される例を示している。カムテーブル５２０の詳細については、後述する。なお、以下では、説明の便宜上、カムテーブル５２０を「カムテーブルＮｏ．１」とも称する。
【０１０１】
図１０は、カムデータに関する構造体配列を示した図である。図１０を参照して、構造体配列５３０は、不揮発性メモリ１０６に格納されたカムテーブル５２０を、メインメモリ１０４で管理するための構造体配列を示した図である。構造体配列５３０においては、カムテーブルの識別子と、インデックスと、位相の値（または変位の値）とが対応付けられている。たとえば、構造体配列５３０の１番目の記述は、カムテーブルＮｏ．１（つまり、カムテーブル５２０）におけるインデックスが１番の位相が“０．０”であることを示している。なお、インデックスについては、後述する。
【０１０２】
図１１は、カムテーブル５２０のデータ構造を表した図である。より詳しくは、図１１は、ＰＬＣサポート装置８に格納されているカムテーブル編集ソフトウェアにより作成されるカムテーブルのデータ構造を表した図である。
【０１０３】
図１１を参照して、カムテーブル５２０は、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたデータである。つまり、カムテーブル５２０は、離散的なデータである。カムテーブル５２０におけるデータを用いて直線補完すると、図８に示したカム曲線５１０となる。当該直線補間は、図６の補間部５０２によってなされる。
【０１０４】
カムテーブル５２０では、０度から３６０度までの位相を、最大カムデータ数に区分して記述できる。カムテーブル５２０では、０．１度刻みで位相が記述されている。なお、「カムデータ」とは、１つの変位と１つの位相とで構成されるデータである。つまり、カムテーブル５２０は、複数のカムデータを含む。なお、変位δの単位は、たとえば、“ｍｍ”である。
【０１０５】
また、カムテーブルにおいて、位相および変位の値の各々が０となっている最初のカムデータが、カムテーブル始点である。この箇所をインデックス０番とする。次に位相および変位の値の各々が次に０となる箇所よりも１つ前（つまり、１つ上）のカムデータが、カムテーブルの終点である。つまり、カムテーブルの始点からカムテーブルの終点まで（０度から３６０度までの位相の範囲のデータ）が、有意なカムデータである。「有意なカムデータ」とは、電子カムの動作に影響を与えるカムデータである。カムデータの識別子であるインデックスの番号は、有意なカムデータに対して付与される。インデックスの番号は、カムテーブルにおいて昇順に付与される。
【０１０６】
また、カムテーブルの終点よりも後（つまり、下）のカムデータは、電子カムの動作に影響を与えないカムデータ（つまり、有意でないカムデータ）である。なお、有意でないカムデータは、位相と変位との両方が０である必要はない。有意でないカムデータの数は、カムテーブル編集ソフトにより指定される。
【０１０７】
図１３は、カムテーブル５２０を書き換えた後のカムテーブル５２０Ａのデータ構造を表した図である。なお、カムテーブルの書き換え処理とは、上述したように、不揮発性メモリ１０６からメインメモリ１０４に展開したカムテーブル５２０のデータを書き換える処理をいう。当該書き換え処理を行なうためにカムテーブル５２０を展開した場合であっても、不揮発性メモリ１０６には、カムテーブル５２０（つまり、オリジナルデータ）は格納されたままの状態である。
【０１０８】
図１３を参照して、ＣＰＵユニット１３は、カムテーブル５２０の位相θａにおける変位δをδ１からδ２に変更する指令を受け付けると、カムテーブル５２０における位相θａに対応付けられた変位をδ１からδ２に変更する。つまり、ＣＰＵユニット１３のマイクロプロセッサ１００が、メインメモリ１０４に展開されたカムテーブル５２０における
位相θａに対応付けられた変位δ１をδ２により上書きする。なお、θａは、０度から３６０度までの各位相のうち、任意の位相である。
【０１０９】
マイクロプロセッサ１００は、予め定められた指示を受け付けると、メインメモリ１０４に一時記憶されているカムテーブル５２０Ａを、不揮発性メモリ１０６に格納する。これにより、不揮発性メモリ１０６には、カムテーブル５２０とカムテーブル５２０Ａとが格納されることになる。
【０１１０】
図１４は、カムテーブル５２０の書き換え処理を説明するための図である。図１４（ａ）は、書き換え前のカムテーブル５２０に基づくカム曲線５１０と、書き換え後のカムテーブル５２０Ａに基づくカム曲線５１０Ａとを表した図である。図１４（ｂ）は、カムテーブルの書き換え前後における電子カムの動作を説明するための図である。
【０１１１】
図１４（ａ）を参照して、カムテーブル５２０Ａに基づくカム曲線５１０Ａは、カムテーブル５２０Ａにおける位相θａの前後の位相についての変位との間で連続性を有した曲線（正確には、直線の集合体）となる。図１４（ｂ）を参照して、ＣＰＵユニット１３は、位相θｂに対応する時点（θａ＜θｂ）で変位を変更する指令を受け付けた場合、次の制御周期以降においては、カムテーブル５２０Ａに基づいたカム曲線５１０Ａに応じて、制御対象である従動軸を動作させる。
【０１１２】
カムテーブルの書き換えには、プログラムをユーザが直接記述する方式と、テーブル形式のＧＵＩ（Graphic User Interface）を用いる方式とがある。
【０１１３】
図１５は、プログラムをユーザが直接記述する方式における、カムテーブルを書き換えるためのユーザインターフェイスを表した図である。また、図１５は、ＰＬＣコントローラで一般的に使用されているＳＴ（Structure Text）言語およびラダー言語を用いた場合の、書き換え命令の記述例を示している。
【０１１４】
図１５を参照して、カムテーブルの書き換えは、ＰＬＣサポート装置８を用いて行なわれる。具体的には、ユーザがＰＬＣサポート装置８のディスプレイ８７を参照しつつ、データ入力を行なうことにより、メインメモリ１０４に展開されているカムテーブル５２０の書き換えが実行される。
【０１１５】
ディスプレイ８７には、２つの領域８０１，８０３が表示される。領域８０１は、選択可能な項目が表示されるメニュー領域である。
【０１１６】
領域８０３内のボックス８０３ａには、ユーザによるプログラムが記述される。つまり、ボックス８０３ａには、実行される処理内容が表示される。具体例として、領域８０３aには、電子カムＮｏ．１（つまり、電子カム５００）が実行中であることを示す出力パラメータ“ビジー＿１”と“接点＿２”とがＴＲＵＥであって、かつ従動軸への指令に使用しているカムテーブルのカムデータがインデックス９０番より小さいときに、カムテーブルＮｏ．１のインデックス９０番〜１００番の変位に１０を加算する命令が、上記言語を用いて記述される。この場合、マイクロプロセッサ１００は、領域８０３に記述された処理を実行する。
【０１１７】
図１２は、テーブル形式のＧＵＩを用いる方式における、カムテーブルを書き換えるためのユーザインターフェイスを表した図である。図１２を参照して、ディスプレイ８７には、テーブル形式のＧＵＩであるウィンドウ８５１が表示される。ウィンドウ８５１は、ユーザが入力するための領域である。ウィンドウ８５１には、カムテーブルＮｏ．１のインデックス９０番から１００番のカムデータの変位をそれぞれ、１０ｍｍ増加させるため
の指令がユーザにより記述される。なお、図１２の場合は、ＧＵＩを用いるため、ユーザは、指令を容易に記述できる。
【０１１８】
図１６は、カムテーブル５２０におけるカムデータの変位を書き換える手順を示したフローチャートである。図１６を参照して、ステップＳ１０２において、マイクロプロセッサ１００は、カムテーブル５２０における、変位を変更するインデックス番号の指定を受け付けたか否かを判断する。マイクロプロセッサ１００は、インデックス番号の指定を受け付けたと判断すると（ステップＳ１０２においてＹＥＳ）、ステップＳ１０４において、変位の値の入力を受け付けたか否かを判断する。マイクロプロセッサ１００は、インデックス番号の指定を受け付けていないと判断すると（ステップＳ１０２においてＮＯ）、処理をステップＳ１０２に進める。
【０１１９】
マイクロプロセッサ１００は、変位の値の入力を受け付けたと判断すると（ステップＳ１０４においてＹＥＳ）、ステップＳ１０６において、カムテーブル５２０における指定されたインデックスにおける変位を入力された値に変更する。マイクロプロセッサ１００は、変位の値の入力を受け付けていないと判断すると（ステップＳ１０４においてＮＯ）、処理をステップＳ１０４に進める。
【０１２０】
ステップＳ１０８において、マイクロプロセッサ１００は、変位が変更されたカムテーブル５２０Ａを用いた制御を実行する。ステップＳ１１０において、マイクロプロセッサ１００は、カムテーブル５２０Ａを用いた制御が終了したか否かを判断する。マイクロプロセッサ１００は、制御が終了したと判断すると（ステップＳ１１０においてＹＥＳ）、ステップＳ１１２において、カムテーブル５２０Ａを保存するための指示を受け付けたか否かを判断する。マイクロプロセッサ１００は、制御が終了していないと判断すると（ステップＳ１１０においてＮＯ）、処理をステップＳ１１０に進める。
【０１２１】
マイクロプロセッサ１００は、保存するための指示を受け付けたと判断すると（ステップＳ１１２においてＹＥＳ）、ステップＳ１１４において、カムテーブル５２０Ａを不揮発性メモリ１０６に格納する。マイクロプロセッサ１００は、保存するための指示を受け付けていないと判断すると（ステップＳ１１２においてＮＯ）、カムテーブル５２０Ａを不揮発性メモリ１０６に格納することなく、一連の処理を終了する。
【０１２２】
ところで、カムテーブルを書き換える制御命令は、高優先度定周期タスクにカムテーブルを書き換える制御命令を記述してもよいし、あるいは、低優先度定周期タスクに当該制御命令を記述してもよい。
【０１２３】
図１７は、高優先度定周期タスクにカムテーブルを書き換える制御命令を記載したときのデータフローを表した図である。図１７を参照して、ＵＰＲＧ７１０に、カムテーブルを書き換える制御命令ＦＢ７１１が記述される。この場合におけるデータの大まかな流れの順序は、（１）スレーブ→ＯＩ７０１→ＦＢ７１１→ＭＣ７０２→ＯＩ７０３→サーボモータドライバ３、（２）ＭＣ７０４→ＯＩ７０５→サーボモータドライバ３、（３）ＭＣ７０６→ＯＩ７０７→サーボモータドライバ３である。
【０１２４】
図１８は、低優先度定周期タスクにカムテーブルを書き換える制御命令を記載したときのデータフローを表した図である。図１８を参照して、ＵＰＲＧ７２０に、カムテーブルを書き換える制御命令ＦＢ（Function Block）７２１，７２２が記述される。この場合におけるデータの大まかな流れの順序は、スレーブ→ＯＩ７０１→ＭＣ７０２→ＵＰＲＧ７２０（ＦＢ７２１，７２２）→ＯＩ７０６→ＯＩ７０７→サーボモータドライバ３である。
【０１２５】
以下、ＣＰＵユニット１３が実行可能な他の機能について説明する。なお、カムテーブルにおけるカムデータの書き換えは、カム動作中のみならず、カム停止中にも行なうことができる。
【０１２６】
（ｅ１．マスキング処理）
ＣＰＵユニット１３は、図１４（ｂ）に示したとおり、位相θｂに対応する時点（θａ＜θｂ）で変位を変更する指令を受け付けた場合、次の制御周期以降においては、カムテーブル５２０Ａに基づいたカム曲線５１０Ａに応じて、制御対象である従動軸を動作させた。しかしながら、ＣＰＵユニット１３は、当該指令を受け付けた次の制御周期においてはカムテーブル５２０を用い、当該指令を受け付けた次の次の制御周期においてカムテーブル５２０Ａを用いた処理を行ってもよい。より具体的に説明すると、以下のとおりである。なお、以下では、当該処理を、説明の便宜上「マスキング処理」とも称する。
【０１２７】
ＣＰＵユニット１３のマイクロプロセッサ１００は、マスキング処理を実行しないモード（「第１の変更モード」とも称する）およびマスキング処理を実行するモード（「第２の変更モード」とも称する）のいずれかを選択するための指示を、ユーザから受け付ける。マイクロプロセッサ１００は、マスキング処理を行なわないモードの選択を受け付けた場合に、変位を変更するための指令を受け付けると、当該指令を受け付けたときの電子カムの周期および当該周期の次の周期以降において、変更された後のカムテーブル５２０Ａを用いて制御プログラム２３０を実行する。つまり、マイクロプロセッサ１００は、上述したように、変位を変更すると、直ぐに当該変更を反映した処理を実行する。
【０１２８】
一方、マイクロプロセッサ１００は、マスキング処理を実行するモードの選択を受け付けた場合に、変位を変更するための指令を受け付けると、当該指令を受け付けたときの電子カムの周期においては変更される前のカムテーブル５２０を用いて制御プログラム２３０を実行し、当該周期の次の周期以降においては変更された後のカムテーブル５２０Ａを用いて制御プログラム２３０を実行する。
【０１２９】
図１９は、位相θａにおける変位を変更する指令を受け付けた次の制御周期においてはカムテーブル５２０を用い、当該指令を受け付けた次の次の制御周期においてカムテーブル５２０Ａを用いた処理を行なう場合における、電子カムの動作を説明するための図である。つまり、図１９は、マスキング処理を行なうモードが選択された場合における、電子カムの動作を説明するための図である。
【０１３０】
図１９を参照して、ＣＰＵユニット１３は、位相θｂに対応する時点で変位を変更する指令を受け付けた場合、次のカム周期においては、変更前のカムテーブル５２０に対応したカム曲線５１０に基づいて、制御対象である従動軸を動作させる。さらに、次のカム周期においては、ＣＰＵユニット１３は、変更後のカムテーブル５２０Ａに対応したカム曲線５１０Ａに基づいて、制御対象である従動軸を動作させる。
【０１３１】
このような処理を行なうことによって、少なくとも書き換えが行なわれているタイミングが含まれるカム周期において、書き換えた後のカムテーブルを用いた制御が行なわれることがなくなる。このため、ＣＰＵユニット１３は、安定した制御が可能となる。
【０１３２】
なお、マスキング処理の機能はオプション機能であり、ＣＰＵユニット１３が必ず備えていなければならない機能ではない。
【０１３３】
（ｅ２．位相の書き換え）
上記においては、カムテーブルにおけるカムデータの変位を書き換える例を説明したが、これに限定されるものではない。ＣＰＵユニット１３は、変位の書き換えの変わりに位
相を書き換えることもできる。あるいは、ＣＰＵユニット１３は、変位の書き換えだけではなく、変位および位相を書き換えてもよい。
【０１３４】
図２０は、プログラムをユーザが直接記述する方式における、カムテーブルの位相を書き換えるためのユーザインターフェイスを表した図である。また、図２０は、図１５と同様に、ＰＬＣコントローラで一般的に使用されているＳＴ（Structure Text）言語およびラダー言語を用いた場合の、書き換え命令の記述例を示している。
【０１３５】
図２０を参照して、領域８０３内のボックス８０３ａには、上述したとおり、ユーザによるプログラムが記述される。具体例として、領域８０３aには、電子カムＮｏ．１（つまり、電子カム５００）が実行中であることを示す出力パラメータ“ビジー＿１”と“接点＿２”とがＴＲＵＥであって、かつ従動軸への指令に使用しているカムテーブルのカムデータがインデックス１００番より小さいときに、カムテーブルＮｏ．１のインデックス１００番の位相を２００°に変更する命令が、上記言語を用いて記述される。この場合、マイクロプロセッサ１００は、領域８０３に表示された処理を実行する。
【０１３６】
図２５は、テーブル形式のＧＵＩを用いる方式における、カムテーブルの位相を書き換えるためのユーザインターフェイスを表した図である。図２５を参照して、ディスプレイ８７には、テーブル形式のＧＵＩであるウィンドウ８５２とが表示される。ウィンドウ８５２には、カムテーブルＮｏ．１のインデックス１００番のカムデータの位相を、２００．０°に変更させるための指令がユーザにより記述される。
【０１３７】
（ｅ３．昇順チェック）
上述したように、カムテーブルに含まれる位相についても、ユーザは書き換え可能である。それため、カムテーブルに含まれるカムデータにおける位相が、昇順にならないように、カムテーブルが書き換えられるおそれもある。たとえば、図１１に示したカムテーブル５２０における位相が、“０．０”→“０．１”→“０．８”→“０．２”→“０．３”…となってしまう場合もある。
【０１３８】
このような状況を想定して、ＣＰＵユニット１３は、電子カムの動作開始時とカム動作中とにおいて、位相が昇順かどうかをチェックする。なお、ＣＰＵユニット１３は、カム動作中においては、たとえば、予め定められた間隔（たとえば、１制御周期）で昇順か否かをチェックする。ＣＰＵユニット１３は、位相が昇順となるようにカムデータが配列されていないと判定した場合、予め定められた報知を行なう。具体的には、ＣＰＵユニット１３は、エラー警告（エラーメッセージ、エラーコード、音声、および／または画像）の通知を、ユーザプログラム２３６に通知する。
【０１３９】
（ｅ４．有意なカムデータの追加・削除）
図１１に基づいて説明したとおり、カムテーブルは電子カムにとって有意なカムデータと、有意でないカムデータを有している。
【０１４０】
マイクロプロセッサ１００は、カムデータを追加するためのユーザ入力を受け付けると、有意でないカムデータのいずれかに当該入力に基づく位相および／または変位を書き込む。さらに、マイクロプロセッサ１００は、予め定められた命令を実行することにより、上記入力に基づく位相および／または変位を有する有意でないカムデータを、有意なカムデータとする。この場合、マイクロプロセッサ１００は、位相が昇順となるように、カムテーブル内のカムデータの並び順を変更する。以上により、カムテーブルにおける有意なカムデータの数を増やすことができる。
【０１４１】
また、反対に、有意なカムデータを有意でないカムデータに変更することもできる。こ
れにより、以上により、カムテーブルにおける有意なカムデータの数を減らすこともできる。
【０１４２】
（ｅ５．インデックス通知）
図１１に基づいて説明したように、カムテーブルを構成するカムデータの各々には、インデックス番号が付与されている。マイクロプロセッサ１００は、ユーザプログラム２３６に当該インデックス番号を通知する。これにより、ユーザは、カムテーブルを構成するカムデータのインデックスを知ることができる。
【０１４３】
特に、マイクロプロセッサ１００は、電子カムの動作中にインデックスをユーザプログラム２３６に通知することにより、図１５に示した画面でのカムテーブルの書き換えを実現することができる。
【０１４４】
＜Ｆ．ＣＰＵユニットによる処理のまとめ＞
（１）ＣＰＵユニット１３は、モーション制御とシーケンス制御とを実行する、ＰＬＣの演算ユニットである。ＣＰＵユニット１３は、マイクロプロセッサ１００と、電子カム５００の主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブル５２０を用いたモーション制御を行なうための制御プログラム２３０と、カムテーブル５２０とを格納したメモリとを備える。
【０１４５】
マイクロプロセッサ１００は、制御プログラム２３０の実行結果を、従動軸に対応する制御対象機器に出力する。マイクロプロセッサ１００は、上記複数の位相のうちのいずれかの位相および当該位相に対応付けられた変位の少なくともいずれかを変更するための第１の指令を受け付けると、カムテーブル５２０における当該位相および変位の少なくともいずれかを第１の指令に基づいた値に変更する。マイクロプロセッサ１００は、上記変更が行なわれると、変更された後のカムテーブル５２０Ａを用いて制御プログラム２３０を実行し、当該実行結果を制御対象機器に出力する。
【０１４６】
これにより、ＣＰＵユニット１３は、電子カム動作中における従軸（制御対象機器）の動作の変更を容易に実現可能となる。さらに、ＣＰＵユニット１３は、装置機差の微調整可能となる。
【０１４７】
より具体的には、ＣＰＵユニット１３を用いることにより、主軸と従軸の位置情報とを定義したカムテーブルを用いる電子カム動作において、電子カム動作中にユーザプログラム２３６を用いてカムテーブルの値を変更したり、カムデータ数の増減を行なうことができる。それゆえ、ＣＰＵユニット１３は、従軸の動作を調整できる。
【０１４８】
（２）上記メモリは、不揮発性メモリ１０６と、揮発性のメインメモリ１０４とを含む。不揮発性メモリ１０６は、変更される前のカムテーブル５２０を格納している。マイクロプロセッサ１００は、変更される前のカムテーブル５２０を不揮発性メモリ１０６から読み出して、当該読み出したカムテーブル５２０をメインメモリ１０４に展開する。マイクロプロセッサ１００は、展開後に上記第１の指令を受け付けると、メインメモリ１０４に展開されたカムテーブル５２０において上述の変更を行なう。マイクロプロセッサ１００は、第２の指令を受け付けると、メインメモリに展開されている上記変更された後のカムテーブル５２０Ａを、不揮発性メモリ１０６にさらに格納する。これにより、ユーザは、書き換え後のカムテーブル５２０Ａを、カムテーブル５２０とは別に不揮発性メモリ１０６に格納することができる。
【０１４９】
（３）変更される前のカムテーブル５２０は、１つの変位と１つの位相とで構成されるカムデータを複数含む。複数のカムデータは、電子カムの動作に影響を与える有意なカム
データ（第１のカムデータ）と、電子カムの動作に影響を与えない有意でないカムデータ（第２のカムデータ）とに区分される。マイクロプロセッサ１００は、上記第１の指令を受け付けると、有意でないカムデータにおける位相および変位の少なくともいずれかを、上記第１の指令に基づいた値に変更する。これにより、ユーザは、カムテーブル５２０において、有意なカムデータを追加することができる。
【０１５０】
（４）制御プログラム２３０は、モーション演算プログラム２３４と、モーション演算プログラム２３４に対して当該モーション演算プログラム２３４の実行に必要な指示を与える処理を行なうユーザプログラム２３６とを含む。カムデータの各々にはインデックス番号（識別情報）が対応付けられている。マイクロプロセッサ１００は、モーション演算プログラム２３４を用いた電子カム５００の動作を実行しているときに、インデックス番号をユーザプログラム２３６に通知する。これにより、ユーザは、カムテーブルを構成するカムデータのインデックスを知ることができる。
【０１５１】
（５）マイクロプロセッサ１００は、変更される前のカムテーブル５２０を不揮発性メモリ１０６から読み出すと、当該カムテーブル５２０において、位相が昇順となるようにカムデータが配列されているかを判定する。マイクロプロセッサ１００は、位相が昇順となるようにカムデータが配列されていないと判定した場合、予め定められた報知を行なう。これにより、ユーザは、位相を昇順とする必要があることを認識できる。
【０１５２】
（６）マイクロプロセッサ１００は、制御プログラム２３０を実行している場合、カムテーブルの変更の有無にかかわらず、制御プログラム２３０の実行の際に用いられているカムテーブルにおいて、位相が昇順となるようにカムデータが配列されているかを、予め定められた間隔で判定する。マイクロプロセッサ１００は、位相が昇順となるようにカムデータが配列されていないと判定した場合、予め定められた報知を行なう。これにより、ユーザは、位相を昇順とする必要があることを認識できる。
【０１５３】
（７）マイクロプロセッサ１００は、第１の変更モードおよび第２の変更モードのいずれかを選択するための指示を受け付ける。マイクロプロセッサ１００は、第１の変更モードの選択を受け付けた場合に、上記第１の指令を受け付けると、当該第１の指令を受け付けたときの電子カムの周期および当該周期の次の周期以降において、変更された後のカムテーブル５２０Ａを用いて前記プログラムを実行する。マイクロプロセッサ１００は、第２の変更モードの選択を受け付けた場合に、上記第１の指令を受け付けると、第１の指令を受け付けたときの電子カムの周期においては変更される前のカムテーブル５２０を用いて制御プログラム２３０を実行し、当該周期の次の周期以降においては変更された後のカムテーブル５２０Ａを用いて制御プログラム２３０を実行する。これにより、ＣＰＵユニット１３は、第２の変更モードが選択された場合には、第１の変更モードの場合よりも安定した制御が可能となる。
【０１５４】
（８）マイクロプロセッサ１００は、モーション演算プログラム２３４の実行を、定周期Ｔ１毎に繰り返し、ユーザプログラム２３６を、定周期Ｔ１の整数倍となる定周期Ｔ２毎に繰り返す。ユーザプログラム２３６のうち上述した位相および／または変位の変更を行なうためのプログラムは、定周期Ｔ１のタスクまたは定周期Ｔ２のタスクに記述される。これにより、高優先度定周期タスクまたは低優先度定周期タスクにカムテーブルを書き換える制御命令を記載できる。
【０１５５】
とこで、図１に示したように、ＰＬＣシステムＳＹＳにおいては、ＰＬＣ１のＣＰＵユニット１３が、モーション制御とシーケンス制御とを実行する構成である。より詳しくは、ＣＰＵ１３のマイクロプロセッサ１００（図２参照）が、モーション制御とシーケンス制御とを実行する。
【０１５６】
しかしながら、ＣＰＵユニット１３として、モーション制御用のユニットとシーケンス制御用のユニットとを別々に設けておき、モーション制御とシーケンス制御とを異なるプロセッサ（マイクロプロセッサ）により実行してもよい。つまり、モーション制御用のユニットのプロセッサにモーション制御を実行させ、シーケンス制御用のプロセッサにシーケンス制御を実行させればよい。
【０１５７】
あるいは、マイクロプロセッサ１００として、デュアルコアのプロセッサまたはマルチコアのプロセッサを利用する場合、１つのコアにモーション制御を実行させ、残りのコアのいずれかにシーケンス制御を実行させるように、ＣＰＵユニット１３を構成してもよい。
【０１５８】
＜Ｇ．サポート装置＞
次に、ＰＬＣ１で実行されるプログラムの作成およびＰＬＣ１のメンテナンスなどを行なうためのＰＬＣサポート装置８について説明する。
【０１５９】
図２１は、ＰＬＣサポート装置８が、カム曲線５１０およびカム曲線５１０ＡをＰＬＣサポート装置８のディスプレイ８７に表示した状態を表した図である。ＰＬＣサポート装置８は、ユーザからの指示に基づきＣＰＵユニット１３に格納されたカムテーブル５２０Ａを読み出す。また、ＰＬＣサポート装置８は、ＰＬＣサポート装置８の不揮発性のメモリから、カム曲線５１０を読み出す。ＰＬＣサポート装置８は、ディスプレイ８７にカム曲線５１０およびカムテーブル５２０Ａに基づくカム曲線５１０Ａを表示する。
【０１６０】
あるいは、ＰＬＣサポート装置８は、ユーザからの指示に基づきＣＰＵユニット１３に格納されたカム曲線５１０およびカムテーブル５２０Ａを読み出し、ディスプレイ８７に当該読み出したカム曲線５１０と、当該読み出したカムテーブル５２０Ａに基づくカム曲線５１０Ａとを表示してもよい。つまり、ＣＰＵユニット１３から取得したカム曲線５１０と、ＣＰＵユニット１３から取得したカムテーブル５２０Ａに基づくカム曲線５１０Ａとを表示するように、ＰＬＣサポート装置８を構成してもよい。
【０１６１】
なお、ＰＬＣサポート装置８は、メモリ内のデータ量が増加することを抑制するため、書き換え前のカムテーブル５２０を保存せずに、カム曲線５１０を保存している。ただし、ＰＬＣサポート装置８が、カムテーブル５２０を保存する構成としてもよい。
【０１６２】
図２１（ａ）は、カム曲線５１０とカム曲線５１０Ａとを並べて表示した場合を示した図である。図２１（ｂ）は、カム曲線５１０にカム曲線５１０Ａを重ねて表示した場合を示した図である。なお、図２１（ｂ）においては、両曲線５１０，５１０Ａが重なっている箇所においては、カム曲線５１０を表す実線のみを表示している。
【０１６３】
図２１（ａ），（ｂ）を参照して、ＰＬＣサポート装置８は、変更前のカムテーブル５２０に基づくカム曲線５１０と、変更後のカムテーブル５２０Ａに基づくカム曲線５１０Ａとを同じ画面に表示するため、ユーザは、カムテーブル５２０に対して、どのような変更を行ったのかを直感的に容易に理解することができる。特に、図２１（ｂ）の場合には、ユーザは、書き換え後の状態が図２１（ａ）の場合よりも明確に認識可能となる。
【０１６４】
図２２は、図２１（ａ），（ｂ）の各々の状態において、さらに警告表示がなされた状態を表した図である。図２２（ａ），（ｂ）を参照して、ＰＬＣサポート装置８は、カムテーブル５２０Ａに基づき制御対象である従動軸の加加速度（ジャーク）を算出する。ＰＬＣサポート装置８は、算出された加加速度が予め定められた閾値以上である場合、加加速度が閾値以上であることを示す画像を、ディスプレイ８７に表示させる。ＰＬＣサポー
ト装置８は、たとえば、位相θｃ〜θｄの間で、予め規定されている最大ジャークを超えてしまっていることを警告表示する。
【０１６５】
カム曲線５１０Ａにおいて、当該閾値を超えた箇所を、閾値を超えていない箇所とは異なる表示態様で、ディスプレイ８７に表示させるように、ＰＬＣサポート装置８を構成することが好ましい。たとえば、閾値を超えた箇所を、当該閾値を超えていない箇所とは異なる色で表示するようにＰＬＣサポート装置を構成することが好ましい。なお、上記閾値は、ＰＬＣサポート装置８のメモリに予め格納されている。
【０１６６】
なお、上記においては、或る位相区間において、予め規定されている最大ジャークを超えていることを警告表示したが、これに限定されず、予め規定された最大加速度、最大減速度、および／または最大速度を超えた区間についても警告表示をするようにＰＬＣサポート装置８を構成してもよい。この場合、ＰＬＣサポート装置８は、最大ジャークを超えている箇所と、最大加速度を超えている箇所と、最大減速度を超えている箇所とを、ユーザに区別可能な態様で表示することが好ましい。
【０１６７】
また、カム曲線５１０Ａのみならずカム曲線５１０においても、上記閾値を超えた箇所を、当該閾値を超えていない箇所とは異なる表示態様で、ディスプレイ８７に表示させるように、ＰＬＣサポート装置８を構成することが好ましい。なお、カム曲線５１０Ａについての閾値と、カム曲線５１０についての閾値とは、同じ値であってもよいし、あるいは異なる値であってもよい。
【０１６８】
なお、ユーザは、ＰＬＣサポート装置８を用いて、従軸の最高速度、最大加速度、最大減速度、および最大ジャークを指定できる。また、ＰＬＣサポート装置８は、最大速度、最大加速度、最大ジャークを、カム曲線のグラフ中に表示できる。なお、ＰＬＣサポート装置８は、最高速度を制御グラフの速度グラフに表示し、最大加速度および最大減速度を制御グラフの加減速度グラフに表示し、最大ジャークを制御グラフのジャークグラフに表示する。この場合、ＰＬＣサポート装置８は、指定された単位を用いて、速度、加速度、ジャークの単位を表示する（時間は秒固定とする）。
【０１６９】
図２３は、本発明の実施の形態に係るＣＰＵユニットに接続して用いられるＰＬＣサポート装置８のハードウェア構成を示す模式図である。図２３を参照して、ＰＬＣサポート装置８は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。
【０１７０】
図２３を参照して、ＰＬＣサポート装置８は、ＯＳを含む各種プログラムを実行するＣＰＵ８１と、ＢＩＯＳや各種データを格納するＲＯＭ（Read Only Memory）８２と、ＣＰＵ８１でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ８３と、ＣＰＵ８１で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）８４とを含む。
【０１７１】
ＰＬＣサポート装置８は、さらに、ユーザからの操作を受け付けるキーボード８５およびマウス８６と、情報をユーザに提示するためのディスプレイ８７とを含む。さらに、ＰＬＣサポート装置８は、ＰＬＣ１（ＣＰＵユニット１３）などと通信するための通信インターフェイス（ＩＦ）を含む。
【０１７２】
後述するように、ＰＬＣサポート装置８で実行される各種プログラムは、ＣＤ−ＲＯＭ９に格納されて流通する。このＣＤ−ＲＯＭ９に格納されたプログラムは、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）ドライブ８８によって読取られ、ハードディスク（ＨＤＤ）８４などへ格納される。あるいは、上位のホストコンピュータなどからネットワ
ークを通じてプログラムをダウンロードするように構成してもよい。
【０１７３】
上述したように、ＰＬＣサポート装置８は、汎用的なコンピュータを用いて実現されるので、これ以上の詳細な説明は行わない。
【０１７４】
図２４は、本発明の実施の形態に係るＣＰＵユニットに接続して用いられるＰＬＣサポート装置８のソフトウェア構成を示す模式図である。図２４を参照して、ＰＬＣサポート装置８ではＯＳ３１０が実行され、ＰＬＣサポートプログラム３２０に含まれる各種のプログラムを実行可能な環境が提供される。
【０１７５】
ＰＬＣサポートプログラム３２０は、エディタプログラム３２１と、コンパイラプログラム３２２と、デバッガプログラム３２３と、シミュレーション用シーケンス命令演算プログラム３２４と、シミュレーション用モーション演算プログラム３２５と、通信プログラム３２６とを含む。ＰＬＣサポートプログラム３２０に含まれるそれぞれのプログラムは、典型的には、ＣＤ−ＲＯＭ９に格納された状態で流通して、ＰＬＣサポート装置８にインストールされる。
【０１７６】
エディタプログラム３２１は、ユーザプログラム２３６を作成するための入力および編集といった機能を提供する。より具体的には、エディタプログラム３２１は、ユーザがキーボード８５やマウス８６を操作してユーザプログラム２３６のソースプログラム３３０を作成する機能に加えて、作成したソースプログラム３３０の保存機能および編集機能を提供する。また、エディタプログラム３２１は、外部からのソースプログラム３３０の入力を受け付ける。
【０１７７】
コンパイラプログラム３２２は、ソースプログラム３３０をコンパイルして、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式のユーザプログラム２３６を生成する機能を提供する。また、コンパイラプログラム３２２は、ソースプログラム３３０をコンパイルして、ＰＬＣサポート装置８のＣＰＵ８１で実行可能なオブジェクトプログラム形式のユーザプログラム３４０を生成する機能を提供する。このユーザプログラム３４０は、ＰＬＣサポート装置８によってＰＬＣ１の動作をシミュレート（模擬）するために使用される、シミュレーション用のオブジェクトプログラムである。
【０１７８】
デバッガプログラム３２３は、ユーザプログラムのソースプログラムに対してデバッグを行なうための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。
【０１７９】
デバッガプログラム３２３は、さらに、シミュレーション用のオブジェクトプログラムであるユーザプログラム３４０を実行する機能を提供する。このシミュレーション時には、ＣＰＵユニット１３のシステムプログラムに含まれるシーケンス命令演算プログラム２３２およびモーション演算プログラム２３４に代えて、ＰＬＣサポートプログラム３２０に含まれるシミュレーション用シーケンス命令演算プログラム３２４およびシミュレーション用モーション演算プログラム３２５が用いられる。
【０１８０】
通信プログラム３２６は、ＰＬＣ１のＣＰＵユニット１３へユーザプログラム２３６を転送する機能を提供する。
【０１８１】
一般的には、ＰＬＣ１に実装されるシステムプログラム２１０は、ＣＰＵユニット１３の製造段階でＣＰＵユニット１３の不揮発性メモリ１０６へ格納される。但し、ＣＤ−Ｒ
ＯＭ９にシステムプログラム２１０を格納しておけば、ユーザは、ＣＤ−ＲＯＭ９のシステムプログラム２１０をＰＬＣサポート装置８へコピーし、通信プログラム３２６が提供する機能を利用してコピーしたシステムプログラム２１０をＣＰＵユニット１３へ転送することもできる。さらに、ＣＤ−ＲＯＭ９に、ＰＬＣ１のＣＰＵユニット１３で実行されるリアルタイムＯＳ２００を格納しておけば、リアルタイムＯＳ２００についてもユーザ操作によってＰＬＣ１へ再インストールできる。
【０１８２】
＜Ｈ．サポート装置による処理のまとめ＞
（１）ＰＬＣサポート装置８は、ＰＬＣのＣＰＵユニット１３で実行されるユーザプログラム２３６の作成を行なうための支援装置である。ＣＰＵユニット１３は、電子カム５００の主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカム曲線５１０と、複数の位相のうちのいずれかの位相に対応付けられた変位が変更されたカムテーブル５２０Ａとを格納したメモリを備える。ＰＬＣサポート装置８は、ＣＰＵ８１と、カム曲線５１０と、ユーザプログラム２３６の作成を支援するＰＬＣサポートプログラム３２０とを格納したメモリと、ディスプレイ８７と、ＣＰＵユニット１３と通信を行なうための通信ＩＦ８９とを備える。ＣＰＵ８１は、予め定められた指令を受け付けると、通信ＩＦ８９を用いて、カム曲線５１０とカムテーブル５２０ＡとをＣＰＵユニット１３から取得する。ＣＰＵ８１は、メモリに格納されたカム曲線５１０またはＣＰＵユニット１３から取得したカム曲線５１０と、上記取得したカムテーブル５２０Ａに基づくカム曲線５１０Ａとをディスプレイ８７に表示させる。
【０１８３】
つまり、ＰＬＣサポート装置８は、変更前後のカム曲線をディスプレイ上で比較表示できる。これにより、ユーザは、変更前（書き換え前）のカムテーブル５２０に基づくカム曲線５１０と、変更後のカムテーブル５２０Ａに基づくカム曲線５１０Ａとを、ＰＬＣサポート装置８のディスプレイ８７にて対比することができる。
【０１８４】
（２）ＰＬＣサポートプログラム３２０は、加加速度に関する閾値を予め記憶している。ＣＰＵ８１は、カムテーブル５２０Ａに基づき、従動軸である制御対象機器の加加速度を算出する。ＣＰＵ８１は、算出された加加速度が上記閾値以上である場合、加加速度が閾値以上であることを示す画像を、ディスプレイ８７に表示させる。これにより、ユーザは、加加速度に関するカムテーブルの書き換えが適切であったか否かを確認することができる。
【０１８５】
（３）ＰＬＣサポートプログラム３２０は、速度に関する閾値を予め記憶している。ＣＰＵ８１は、カムテーブル５２０Ａに基づき、従動軸である制御対象機器の速度を算出する。ＣＰＵ８１は、算出された速度が上記閾値以上である場合、速度が閾値以上であることを示す画像を、ディスプレイ８７に表示させる。これにより、ユーザは、速度に関するカムテーブルの書き換えが適切であったか否かを確認することができる。
【０１８６】
（４）ＰＬＣサポートプログラム３２０は、加速度および／または減速度に関する閾値を予め記憶している。ＣＰＵ８１は、カムテーブル５２０Ａに基づき、従動軸である制御対象機器の加速度を算出する。ＣＰＵ８１は、算出された加速度および／または減速度が上記閾値以上である場合、加速度および／または減速度が閾値以上であることを示す画像を、ディスプレイ８７に表示させる。なお、加速度に関する閾値と、減速度に関する閾値とは、同じであってもよいし、あるいは異なっていてもよい。これにより、ユーザは、加速度および／または減速度に関するカムテーブルの書き換えが適切であったか否かを確認することができる。
【０１８７】
（５）ＣＰＵ８１は、カム曲線５１０Ａにおいて、上記閾値を超えた箇所を、当該閾値を超えていない箇所とは異なる表示態様で、ディスプレイ８７に表示させる。これにより
、ユーザは、閾値を超えた箇所を容易に判断することができる。
【０１８８】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１８９】
１  ＰＬＣ、２  フィールドネットワーク、３  サーボモータドライバ、４  サーボモータ、５  ターミナル、６  検出スイッチ、７  リレー、８  ＰＬＣサポート装置、１０
接続ケーブル、１１  システムバス、１２  電源ユニット、１３，１４，５３  ＩＯユニット、１５  特殊ユニット、１９  エンコーダ、５１  ターミナルバス、５２  通信カプラ、８３  ＲＡＭ、８７  ディスプレイ、８９  通信ＩＦ、１００  マイクロプロセッサ、１０２  チップセット、１０４  メインメモリ、１０６  不揮発性メモリ、１０８  システムタイマ、１１０  コネクタ、１２０  システムバスコントローラ、１２２，１４２  制御回路、１２４  システムバス制御回路、１２６，１４６  バッファメモリ、１３０  システムバスコネクタ、１４０  フィールドネットワークコントローラ、１４４  フィールドネットワーク制御回路、２００  リアルタイムＯＳ、２１０，２２０  システムプログラム、２１２  スケジューラプログラム、２３０  制御プログラム、２３２  シーケンス命令演算プログラム、２３４  モーション演算プログラム、２３６，３４０  ユーザプログラム、４００  主軸、５００  電子カム、５００Ａ  機械式カム、５０１  電子カム演算部、５０２  補間部、５０３  スイッチ部、５２０，５２１，５２２，５２０Ａ
カムテーブル、５１０，５１０Ａ  カム曲線、５３０  構造体配列、６００  従動軸、ＭＥ  カム機構、ＳＹＳ  システム。
【要約】
【課題】装置機差の微調整および電子カム動作中における従軸の動作の変更を容易に実現可能なＰＬＣの演算ユニットを提供する。
【解決手段】ＰＬＣのＣＰＵユニットは、モーション制御とシーケンス制御とを実行する。ＣＰＵユニットは、カムテーブルを用いたモーション制御を行なうための制御プログラムと、カムテーブルとを格納している。マイクロプロセッサは、複数の位相のうちのいずれかの位相および当該位相に対応付けられた変位の少なくともいずれかを変更するための指令を受け付けると、カムテーブルにおける当該位相および変位の少なくともいずれかを当該指令に基づいた値に変更する。マイクロプロセッサは、上記変更が行なわれると、変更された後のカムテーブルを用いて制御プログラムを実行し、当該実行結果を制御対象機器に出力する。
【選択図】図１４【図１】
0004807475.tif 000002
【図２】
0004807475.tif 000003
【図３】
0004807475.tif 000004
【図４】
0004807475.tif 000005
【図５】
0004807475.tif 000006
【図６】
0004807475.tif 000007
【図７】
0004807475.tif 000008
【図８】
0004807475.tif 000009
【図９】
0004807475.tif 000010
【図１０】
0004807475.tif 000011
【図１１】
0004807475.tif 000012
【図１２】
0004807475.tif 000013
【図１３】
0004807475.tif 000014
【図１４】
0004807475.tif 000015
【図１５】
0004807475.tif 000016
【図１６】
0004807475.tif 000017
【図１７】
0004807475.tif 000018
【図１８】
0004807475.tif 000019
【図１９】
0004807475.tif 000020
【図２０】
0004807475.tif 000021
【図２１】
0004807475.tif 000022
【図２２】
0004807475.tif 000023
【図２３】
0004807475.tif 000024
【図２４】
0004807475.tif 000025
【図２５】
0004807475.tif 000026