(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0026】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0027】
<A.システム構成>
本実施の形態に係るPLC1は、モータの運動を制御するためのモーション制御機能を有する。まず、
図1を参照して、PLC1のシステム構成について説明する。
【0028】
図1は、PLCシステムの概略構成を示す模式図である。
図1に示すように、PLCシステムSYSは、PLC1と、PLC1とフィールドネットワーク2を介して接続される複数のサーボモータドライバ3およびリモートIOターミナル5と、フィールド機器である検出スイッチ6およびリレー7とを含む。また、PLC1には、接続ケーブル10などを介してPLCサポート装置8が接続される。
【0029】
PLC1は、主たる演算処理を実行するCPUユニット13(制御装置)と、1つ以上のIOユニット14と、特殊ユニット15とを含む。これらのユニットは、PLCシステムバス11を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット12によって適切な電圧の電源が供給される。なお、PLC1として構成される各ユニットは、PLCメーカーが提供するものであるので、PLCシステムバス11は、一般にPLCメーカーごとに独自に開発され、使用されている。これに対して、後述するようにフィールドネットワーク2については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。
【0030】
CPUユニット13の詳細については、
図2を参照して後述する。
IOユニット14は、一般的な入出力処理に関するユニットであり、オン/オフといった2値化されたデータの入出力を司る。すなわち、IOユニット14は、検出スイッチ6などのセンサが何らかの対象物を検出している状態(オン)および何らの対象物も検出していない状態(オフ)のいずれであるかという情報を収集する。また、IOユニット14は、リレー7またはアクチュエータといった出力先に対して、活性化するための指令(オン)および不活性化するための指令(オフ)のいずれかを出力する。
【0031】
特殊ユニット15は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、IOユニット14ではサポートしない機能を有する。
【0032】
フィールドネットワーク2は、CPUユニット13と遣り取りされる各種データを伝送する。フィールドネットワーク2としては、典型的には、各種の産業用イーサネット(登録商標)を用いることができる。産業用イーサネット(登録商標)としては、たとえば、EtherCAT(登録商標)、Profinet IRT、MECHATROLINK(登録商標)−III、Powerlink、SERCOS(登録商標)−III、CIP Motionなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット(登録商標)以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、DeviceNet、CompoNet/IP(登録商標)などを用いてもよい。本実施の形態に係るPLCシステムSYSでは、典型的に、本実施の形態においては、産業用イーサネット(登録商標)であるEtherCAT(登録商標)をフィールドネットワーク2として採用する場合の構成について例示する。
【0033】
なお、
図1には、PLCシステムバス11およびフィールドネットワーク2の両方を有するPLCシステムSYSを例示するが、一方のみを搭載するシステム構成を採用することもできる。たとえば、フィールドネットワーク2ですべてのユニットを接続してもよい。あるいは、フィールドネットワーク2を使用せずに、サーボモータドライバ3をPLCシステムバス11に直接接続してもよい。さらに、フィールドネットワーク2の通信ユニットをPLCシステムバス11に接続し、CPUユニット13から当該通信ユニット経由で、フィールドネットワーク2に接続された機器との間の通信を行なうようにしてもよい。
【0034】
サーボモータドライバ3は、フィールドネットワーク2を介してCPUユニット13と接続されるとともに、CPUユニット13からの指令値に従ってサーボモータ4を駆動する。より具体的には、サーボモータドライバ3は、PLC1から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ3は、サーボモータ4の軸に接続されている位置センサ(ロータリーエンコーダ)やトルクセンサといった検出器から、位置、速度(典型的には、今回位置と前回位置との差から算出される)、トルクといったサーボモータ4の動作に係る実測値を取得する。そして、サーボモータドライバ3は、CPUユニット13からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行なう。すなわち、サーボモータドライバ3は、実測値が目標値に近づくようにサーボモータ4を駆動するための電流を調整する。
なお、サーボモータドライバ3は、サーボモータアンプと称されることもある。
【0035】
また、
図1には、サーボモータ4とサーボモータドライバ3とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
【0036】
図1に示すPLCシステムSYSのフィールドネットワーク2には、さらに、リモートIOターミナル5が接続されている。リモートIOターミナル5は、基本的には、IOユニット14と同様に、一般的な入出力処理に関する処理を行なう。より具体的には、リモートIOターミナル5は、フィールドネットワーク2でのデータ伝送に係る処理を行なうための通信カプラ52と、1つ以上のIOユニット53とを含む。これらのユニットは、リモートIOターミナルバス51を介して、データを互いに遣り取りできるように構成される。
なお、PLCサポート装置8については後述する。
【0037】
<B.CPUユニットのハードウェア構成>
次に、
図2を参照して、CPUユニット13のハードウェア構成について説明する。
図2は、CPUユニットのハードウェア構成を示す模式図である。
図2に示すように、CPUユニット13は、マイクロプロセッサ100と、チップセット102と、メインメモリ104と、不揮発性メモリ106と、システムタイマ108と、PLCシステムバスコントローラ120と、フィールドネットワークコントローラ140と、USBコネクタ110とを含む。チップセット102と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【0038】
マイクロプロセッサ100およびチップセット102は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ100は、チップセット102から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット102は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ100に必要な命令コードを生成する。さらに、チップセット102は、マイクロプロセッサ100での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【0039】
CPUユニット13は、記憶手段として、メインメモリ104および不揮発性メモリ106を有する。
【0040】
メインメモリ104は、揮発性の記憶領域(RAM)であり、CPUユニット13への電源投入後にマイクロプロセッサ100で実行されるべき各種プログラムを保持する。また、メインメモリ104は、マイクロプロセッサ100による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ104としては、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)といったデバイスが用いられる。
【0041】
一方、不揮発性メモリ106は、リアルタイムOS(Operating System)、PLC1のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ100がアクセスできるようにメインメモリ104にコピーされる。このような不揮発性メモリ106としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、DVD−RAM(Digital Versatile Disk Random Access Memory)のような光学記録媒体などを用いることもできる。
【0042】
システムタイマ108は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ100に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、OS(Operating System)やBIOS(Basic Input Output System)などによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ108が発生する割り込み信号を利用して、後述するようなモーション制御サイクルごとの制御動作が実現される。
【0043】
CPUユニット13は、通信回路として、PLCシステムバスコントローラ120およびフィールドネットワークコントローラ140を有する。
【0044】
バッファメモリ126は、PLCシステムバス11を介して他のユニットへ出力されるデータ(以下「出力データ」とも称す。)の送信バッファ、および、PLCシステムバス11を介して他のユニットから入力されるデータ(以下「入力データ」とも称す。)の受信バッファとして機能する。なお、マイクロプロセッサ100による演算処理によって作成された出力データは、原始的にはメインメモリ104に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ104から読み出されて、バッファメモリ126に一時的に保持される。また、他のユニットから転送された入力データは、バッファメモリ126に一時的に保持された後、メインメモリ104に移される。
【0045】
DMA制御回路122は、メインメモリ104からバッファメモリ126への出力データの転送、および、バッファメモリ126からメインメモリ104への入力データの転送を行なう。
【0046】
PLCシステムバス制御回路124は、PLCシステムバス11に接続される他のユニットとの間で、バッファメモリ126の出力データを送信する処理および入力データを受信してバッファメモリ126に格納する処理を行なう。典型的には、PLCシステムバス制御回路124は、PLCシステムバス11における物理層およびデータリンク層の機能を提供する。コネクタ130は、PLCシステムバス制御回路124と外部とのインターフェースである。
【0047】
フィールドネットワークコントローラ140は、フィールドネットワーク2を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ140は、用いられるフィールドネットワーク2の規格に従い、出力データの送信および入力データの受信を制御する。上述したように、本実施の形態においてはEtherCAT(登録商標)規格に従うフィールドネットワーク2が採用されるので、通常のイーサネット(登録商標)通信を行なうためのハードウェアを含む、フィールドネットワークコントローラ140が用いられる。EtherCAT(登録商標)規格では、通常のイーサネット(登録商標)規格に従う通信プロトコルを実現する一般的なイーサネット(登録商標)コントローラを利用できる。但し、フィールドネットワーク2として採用される産業用イーサネット(登録商標)の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット(登録商標)コントローラが用いられる。また、産業用イーサネット(登録商標)以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。
【0048】
DMA制御回路142は、メインメモリ104からバッファメモリ146への出力データの転送、および、バッファメモリ146からメインメモリ104への入力データの転送を行なう。
【0049】
フィールドネットワーク制御回路144は、フィールドネットワーク2に接続される他の装置との間で、バッファメモリ146の出力データを送信する処理および入力データを受信してバッファメモリ146に格納する処理を行なう。典型的には、フィールドネットワーク制御回路144は、フィールドネットワーク2における物理層およびデータリンク層の機能を提供する。コネクタ150は、フィールドネットワークコントローラ140と外部とのインターフェースである。
【0050】
USBコネクタ110は、PLCサポート装置8とCPUユニット13とを接続するためのインターフェースである。典型的には、PLCサポート装置8から転送される、CPUユニット13のマイクロプロセッサ100で実行可能なプログラムなどは、USBコネクタ110を介してPLC1に取込まれる。
【0051】
<C.CPUユニットのソフトウェア構成>
次に、
図3を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、CPUユニット13のマイクロプロセッサ100によって実行される。
【0052】
図3は、CPUユニットで実行されるソフトウェア構成を示す模式図である。
図3を参照して、CPUユニット13で実行されるソフトウェアとしては、リアルタイムOS200と、システムプログラム210と、ユーザプログラム236との3階層になっている。
【0053】
リアルタイムOS200は、CPUユニット13のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ100がシステムプログラム210およびユーザプログラム236を実行するための基本的な実行環境を提供する。このリアルタイムOSは、典型的には、PLCのメーカーあるいは専門のソフトウェア会社などによって提供される。
【0054】
システムプログラム210は、PLC1としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム210は、スケジューラプログラム212と、出力処理プログラム214と、入力処理プログラム216と、シーケンス命令演算プログラム232と、モーション演算プログラム234と、その他のシステムプログラム220とを含む。なお、一般には出力処理プログラム214および入力処理プログラム216は、連続的(一体として)に実行されるので、これらのプログラムを、IO処理プログラム218と総称する場合もある。
【0055】
ユーザプログラム236は、ユーザにおける制御目的に応じて作成される。すなわち、PLCシステムSYSを用いて制御する対象のライン(プロセス)などに応じて、任意に設計されるプログラムである。
【0056】
後述するように、ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム236、シーケンス命令演算プログラム232、およびモーション演算プログラム234を、制御プログラム230と総称する場合もある。
【0057】
このように、CPUユニット13のマイクロプロセッサ100は、記憶手段に格納されたシステムプログラム210およびユーザプログラム236を実行する。
【0058】
以下、各プログラムについてより詳細に説明する。
ユーザプログラム236は、上述したように、ユーザにおける制御目的(たとえば、対象のラインやプロセス)に応じて作成される。ユーザプログラム236は、典型的には、CPUユニット13のマイクロプロセッサ100で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム236は、PLCサポート装置8などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム236は、PLCサポート装置8から接続ケーブル10を介してCPUユニット13へ転送され、不揮発性メモリ106などに格納される。
【0059】
スケジューラプログラム212は、出力処理プログラム214、入力処理プログラム216、および制御プログラム230について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム212は、ユーザプログラム236およびモーション演算プログラム234の実行を制御する。
【0060】
本実施の形態に係るCPUユニット13では、モーション演算プログラム234に適した一定周期の実行サイクル(モーション制御サイクル)を処理全体の共通サイクルとして採用する。そのため、1つのモーション制御サイクル内で、すべての処理を完了することは難しいので、実行すべき処理の優先度などに応じて、各モーション制御サイクルにおいて実行を完了すべき処理と、複数のモーション制御サイクルに亘って実行してもよい処理とが区分される。スケジューラプログラム212は、これらの区分された処理の実行順序などを管理する。より具体的には、スケジューラプログラム212は、各モーション制御サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。
【0061】
出力処理プログラム214は、ユーザプログラム236(制御プログラム230)の実行によって生成された出力データを、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140へ転送するのに適した形式に再配置する。PLCシステムバスコントローラ120またはフィールドネットワークコントローラ140が、マイクロプロセッサ100からの、送信を実行するための指示を必要とする場合は、出力処理プログラム214がそのような指示を発行する。
【0062】
入力処理プログラム216は、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140によって受信された入力データを、制御プログラム230が使用するのに適した形式に再配置する。
【0063】
シーケンス命令演算プログラム232は、ユーザプログラム236で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。
【0064】
モーション演算プログラム234は、ユーザプログラム236による指示に従って実行され、サーボモータドライバ3やパルスモータドライバといったモータドライバに対して出力する指令値を算出するプログラムである。
【0065】
その他のシステムプログラム220は、
図3に個別に示したプログラム以外の、PLC1の各種機能を実現するためのプログラム群をまとめて示したものである。その他のシステムプログラム220は、モーション制御サイクルの周期を設定するプログラム222を含む。
【0066】
モーション制御サイクルの周期は、制御目的に応じて適宜設定することができる。典型的には、モーション制御サイクルの周期を指定する情報をユーザがPLCサポート装置8へ入力する。すると、その入力された情報は、PLCサポート装置8からCPUユニット13へ転送される。モーション制御サイクルの周期を設定するプログラム222は、PLCサポート装置8からの情報を不揮発性メモリ106に格納させるとともに、システムタイマ108から指定されたモーション制御サイクルの周期で割り込み信号が発生されるように、システムタイマ108を設定する。CPUユニット13への電源投入時に、モーション制御サイクルの周期を設定するプログラム222が実行されることで、モーション制御サイクルの周期を指定する情報が不揮発性メモリ106から読み出され、読み出された情報に従ってシステムタイマ108が設定される。
【0067】
モーション制御サイクルの周期を指定する情報の形式としては、モーション制御サイクルの周期を示す時間の値や、モーション制御サイクルの周期に関する予め用意された複数の選択肢のうちから1つを特定する情報(番号または文字)などを採用することができる。
【0068】
本実施の形態に係るCPUユニット13において、モーション制御サイクルの周期を設定する手段としては、モーション制御サイクルの周期を指定する情報を取得するために用いられるPLCサポート装置8との通信手段、モーション制御サイクルの周期を設定するプログラム222、ならびにモーション制御サイクルを規定する割り込み信号の周期を任意に設定可能に構成されているシステムタイマ108の構成といった、モーション制御サイクルの周期を任意の設定するために用いられる要素が該当する。
【0069】
リアルタイムOS200は、複数のプログラムを時間の経過に従い切り換えて実行するための環境を提供する。本実施の形態に係るPLC1においては、CPUユニット13のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力(送信)するためのイベント(割り込み)として、出力準備割り込み(P)およびフィールドネットワーク送信割り込み(X)が初期設定される。リアルタイムOS200は、出力準備割り込み(P)またはフィールドネットワーク送信割り込み(X)が発生すると、マイクロプロセッサ100での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム212に切り換える。なお、リアルタイムOS200は、スケジューラプログラム212およびスケジューラプログラム212がその実行を制御するプログラムが何ら実行されていない場合に、その他のシステムプログラム210に含まれているプログラムを実行する。このようなプログラムとしては、たとえば、CPUユニット13とPLCサポート装置8との間の接続ケーブル10(USB)などを介した通信処理に関するものが含まれる。
【0070】
<D.モーション制御の概略>
次に、上述したユーザプログラム236に含まれる典型的な構成について説明する。ユーザプログラム236は、モータの運動に関する制御開始の条件が成立するか否かを周期的に判断させる命令を含む。たとえば、モータの駆動力によって何らかの処置がなされるワークが所定の処置位置まで搬送されたか否かを判断するようなロジックである。そして、ユーザプログラム236は、この制御開始の条件が成立したと判断されたことに応答して、モーション制御を開始させる命令をさらに含む。このモーション制御の開始に伴って、モーション命令の実行が指示される。すると、指示されたモーション命令に対応するモーション演算プログラム234が起動し、まず、モーション演算プログラム234の実行ごとにモータに対する指令値を算出していくために必要な初期処理が実行される。また、初期処理と同じモーション制御サイクルにおいて、第1サイクルでの指令値が算出される。したがって、初期処理および第1番目の指令値算出処理が、起動したモーション演算プログラム234が第1番目の実行においてなすべき処理となる。以降、各サイクルでの指令値が順次算出される。
【0071】
図4は、制御プログラムによって提供されるモーション制御の概略の処理手順を示すフローチャートである。
図4に示すように、マイクロプロセッサ100は、モータの運動に関する制御開始の条件が成立しているか否かを周期的に判断する(ステップS2)。この制御開始の条件が成立しているか否かの判断は、ユーザプログラム236およびシーケンス命令演算プログラム232によって実現される。制御開始の条件が成立していない場合(ステップS2において「NO」の場合)には、ステップS2の判断が繰り返される。
【0072】
制御開始の条件が成立している場合(ステップS2において「YES」の場合)には、マイクロプロセッサ100は、モーション制御に関する初期処理を実行する(ステップS4)。この初期処理としては、モータの運動の開始位置座標、終了位置座標、初期速度、初期加速度、軌跡などを算出処理が含まれる。続いて、マイクロプロセッサ100は、第1サイクルでの指令値の算出処理を実行する(ステップS6)。さらに、マイクロプロセッサ100は、算出した指令値の出力処理を実行する(ステップS8)。
【0073】
その後、マイクロプロセッサ100は、次のモーション制御サイクルが到来するまで待つ(ステップS10)。そして、マイクロプロセッサ100は、モータの運動に関する制御終了の条件が成立しているか否かを周期的に判断する(ステップS12)。この制御終了の条件が成立しているとは、サーボモータ4が終了位置に到達している状態などをいう。制御終了の条件が成立している場合(ステップS12において「YES」の場合)には、ステップS2以下の処理が再度繰り返される。このとき、起動中のモーション演算プログラム234は、新たな制御開始の条件が成立するまで不活性の状態に維持される。
【0074】
制御終了の条件が成立していない場合(ステップS12において「NO」の場合)には、マイクロプロセッサ100は、現在のサイクルでの指令値の算出処理を実行する(ステップS14)。さらに、マイクロプロセッサ100は、算出した指令値の出力処理を実行する(ステップS16)。そして、ステップS10以下の処理が繰り返される。
【0075】
以下では、モーション制御を実現する為の機能モジュールを、「モーション制御機能モジュール」とも称する。具体的には、「モーション制御機能モジュール」とは、ユーザプログラムから与えられた目標値(位置、速度、トルクなど)を用いて、ユーザ所望のモーション動作を実現するために必要な、軸への指令値出力、および軸からの情報取得を一定の周期で実行する機能モジュールである。なお、「モーション制御機能モジュール」は、サーボドライバに対して指令値を出力するオープンループ型のコントローラである。また、モーション制御機能モジュールに対して指示を与える命令(ファンクションブロック(以下、「FB」とも称する)等)のことを、「モーション制御命令」と称する。
【0076】
図5は、モーション制御命令とタスクの関係を示した図であり、具体的には、高優先度定周期タスクにモーション制御命令を記載したときのデータフローを表した図である。高優先度定周期タスクは、CPUユニット13の中で最高優先度のタスクである。
図5に示すように、UPRG710に、モーション制御命令が記述された場合におけるデータの大まかな流れの順序は、(1)スレーブ→OI701→FB711→MC702→OI703→サーボモータドライバ3、(2)MC704→OI705→サーボモータドライバ3、(3)MC706→OI707→サーボモータドライバ3である。
【0077】
図6は、低優先度定周期タスクにモーション制御命令を記載したときのデータフローを表した図である。この場合におけるデータの大まかな流れの順序は、スレーブ→OI701→MC702→UPG720(FB721,722)→
MC706→OI707→サーボモータドライバ3である。
【0078】
低優先度定周期タスク実行中に高優先度定周期タスクが実行可能になった場合、低優先度定周期タスクは一旦中断され、高優先度定周期タスクが実行される。高優先度定周期タスクの完了後、低優先度定周期タスクの実行が再開される。なお、低優先度定周期タスクの周期T2は、高優先度定周期タスクの周期T1の整数倍である。
図5は、T2=2T1の場合を表している。
【0079】
PLC1の実行中においては、マイクロプロセッサ100が、少なくとも、出力・入力処理プログラム(出力処理プログラム214および入力処理プログラム216)と、ユーザプログラム236と、モーション演算プログラム234とが実行可能な状態になっている。厳密に言えば、リアルタイムOS200がそれぞれのプログラムに係るプロセス(または、スレッド)を実行可能な状態に保持しており、スケジューラプログラム212がリアルタイムOS200およびハードウェアリソース(システムタイマ108など)を利用することで、各プログラムが適切なタイミングかつ適切な順序で実行される。このように、それぞれのプログラムに係る実行の開始/中断/終了などは、スケジューラプログラム212によって制御される。
【0080】
図5において、スレーブからOI701への入力(IN)に基づき、フィールドネットワークコントローラ140(
図2参照)がモーション制御用入力データを受信してメインメモリ104のフィールドネットワーク受信バッファ(図示せず)に当該入力データを格納、および/または、PLCシステムバスコントローラ120が、モーション制御用入力データを受信してメインメモリ104のPLCシステムバス受信バッファ(図示せず)に当該入力データを格納する。なお、CPUユニット13がマスタであり、CPUユニット13以外のそれぞれのユニットが、スレーブに設定される。
【0081】
また、IO処理プログラム218の命令に従って、起動指令データまたはモーション指令値データが出力される。より具体的には、メインメモリ104の制御プログラムの作業領域(図示せず)に格納されている起動指令データおよびモーション指令値データがメインメモリ104のフィールドネットワーク送信バッファ(図示せず)へ転送される。さらに、フィールドネットワーク送信バッファへのデータ転送に続いて、フィールドネットワークコントローラ140が起動指令データまたはモーション指令値データをサーボモータドライバ3へ送信する。
【0082】
なお、上記のスレーブからOI701への入力(IN)では、ユーザプログラム236での演算には使用されるが、モーション演算プログラム234での演算には使用されない入力データについても入力され得る。また、ユーザプログラム236の実行により生成されるユーザプログラム出力データは、モーション演算プログラム234での演算には使用されない出力データであっても、IO処理プログラム218へ送られて、OIの処理において出力される。
【0083】
本実施の形態に係る「モーション制御サイクル」は、モーション演算プログラム234の実行および通信の周期、すなわち、サーボモータドライバ3へモーション指令値データを与える周期で実行される一連の処理のサイクルである。
【0084】
<E.電子カム>
以下では、同期制御の機能として、電子カム動作について説明する。「同期制御」とは、主軸(入力軸)の位置に同期して従動軸(制御対象軸)の位置を制御することである。主軸としては、フルクローズドループ制御用のエンコーダの位置、サーボドライバおよび仮想サーボドライバの指令位置、並びに、エンコーダ、サーボドライバ、および仮想サーボドライバのフィードバック位置のうちのいずれかを指定できる。また、「電子カム動作」とは、カムテーブルによって設定されたカムパターンに従い、制御周期でカム動作を行なう機能をいう。「カムテーブル」とは、電子カムの主軸の位相各々に対して電子カムの従動軸の変位を対応付けた構造体配列である。
【0085】
CPUユニット13は、制御周期毎に入力に同期して演算することによって出力を制御するので、演算結果がモーション制御機能モジュールで出力可能な最高速度を上回る場合もある。しかしながら、この場合には、CPUユニット13は、エラーとはせずに、最高速度の出力を行なう。そして、CPUユニット13は、最高速度で飽和することにより不足する移動量を、次の制御周期以降において分配して出力する。
【0086】
図7は、電子カムの機能概要を表した図である。
図7に示すように、電子カム500は、カム演算プログラム501と、補間プログラム502と、スイッチ部503とを備える。なお、電子カム500は、CPUユニット13及びCPUユニット13によって実行されるプログラムによって実現されている。
カム演算プログラム501には、フルクローズドループ制御用のエンコーダの位置、サーボドライバおよび仮想サーボドライバの指令位置、並びに、エンコーダ、サーボドライバ、および仮想サーボドライバのフィードバック位置のうち、予め選択された位置が入力される。
【0087】
カム演算プログラム501は、カムテーブルを用いて、主軸の位相各々に対して当該電子カムの従動軸の変位に対応する位置指令値を出力するモーション制御を行うためのプログラムである。具体的には、カム演算プログラム501は、入力された主軸の位相とカムテーブルとに基づき、入力された主軸の位相に対応するカムテーブルに記載の従動軸の変位を、補間プログラム502に出力する。補間プログラム502は、カム演算プログラム501から出力された値を用いて補間処理を行なう。補間プログラム502は、補間処理後の値(指令位置)を、スイッチ部503を介して出力する。
【0088】
図8は、電子カムの動作を視覚的に説明するための図である。具体的には、
図8は、カムテーブルに基づいたカム曲線で表される機械式カム500Aを含んだカム機構MEを表した図である。
図8に示すように、カム機構MEは、主軸400と、機械式カム500Aと、従動軸600とを備えている。機械式カム500Aは、主軸400に固定されており、主軸400の回転に伴い回転する。従動軸600は、機械式カム500Aの回転に伴い、直線運動を行なう。つまり、カム機構MEにおいては、主軸の位相(入力)が変化すると、従動軸600が変位(出力)する。このようなカム機構MEにおける入出力を、ソフトウェアにて実現したものが電子カム500である。
【0089】
図9は、電子カムのカム曲線を示した図である。
図9に示すように、カム曲線510は、位相が0から増加するに連れて変位が0から増加し、半周期における位相(180度)で変位はピークを迎える。その後、位相の増加に連れて変位が減少し、1周期における位相(360度)で変位は0となる。なお、カム曲線510は、例示であって、PLCシステムSYSで利用されるカム曲線は、これに限定されない。
【0090】
図10は、電子カムに関するシステム構成を表した図である。
図10は、
図7の電子カム500をより詳しく示した図であり、電子カムの動作を実行させるモーションコントローラの構成を示した図でもある。
図10に示すように、電子カム500に関するシステムは、カム演算プログラム501と、補間プログラム502と、カムテーブル生成プログラム504と、カム定義変数記憶プログラム505と、メインメモリ104と、不揮発性メモリ106と、ユーザプログラム236とにより実現される。なお、
図10では、主軸指令位置として、エンコーダ19からエンコーダ位置が電子カム500に対して、が入力される。
【0091】
図10に示すように、電子カム500(CPUユニット13)には、ユーザ入出力装置21が接続されている。ユーザ入出力装置21は、例えばタブレット及びパーソナルコンピュータからなり、実際にPLC1を使用しているユーザが用いる装置である。ユーザは、ユーザ入出力装置21を用いてPLC1の動作状況を確認できる。例えば、カム曲線、カムデータ、カム定義変数を表示できる。また、ユーザは、ユーザ入出力装置21を用いてカム定義変数を作成・編集可能であり、そのカム定義変数を電子カム500(CPUユニット13)に送信可能である。例えば生産条件の変更の際に、ユーザは、ユーザ入出力装置21を用いて、カム曲線を変更するために新たなカム定義変数を電子カム500(CPUユニット13)に送信する。
なお、ユーザ入出力装置21は、後述するPLCサポート装置8と同等の機能を有していてもよい。
【0092】
図10では、不揮発性メモリ106には、複数のカムテーブル520,521,522が格納されている。格納されているカムテーブルは、外部の入力装置(ユーザ入出力装置21またはPLCサポート装置8)から送信されてきたものと、後述するようにメインメモリ104内に作成された後に不揮発性メモリ106に格納されたものとの一方または両方である。また、
図10では、不揮発性メモリ106には、複数のカム定義変数530,531,532が格納されている。格納されているカム定義変数は、PLCサポート装置8から送信されてきたものと、後述するようにメインメモリ104においてカムテーブルを生成するのに用いられた後に不揮発性メモリ106に格納された元の一方または両方である。カム定義変数については後述する。
【0093】
図10では、メインメモリ104には、カムテーブル520が格納されている。カムテーブル520の詳細については、後述する。なお、以下では、説明の便宜上、カムテーブル520を「カムテーブルNo.1」とも称する。
さらに、
図10では、カム定義変数530がメインメモリ104に格納されている。カム定義変数530は、ユーザ入出力装置21またはPLCサポート装置8から、不揮発性メモリ106を介してまたは直接にメインメモリ104に格納されている。
なお、
図10において、メインメモリ104には1つのカムテーブルと1つのカム定義変数が格納されているが、実際には複数のカムテーブルと複数のカム定義変数をメインメモリに展開することも可能である。
【0094】
カムテーブル生成プログラム504は、モーション制御により実現される電子カム動作を規定するカム定義変数の入力を受け付けて、入力されたカム定義変数に対応するカム曲線を配列にしたカムテーブルを生成するためのプログラムである。具体的には、カムテーブル生成プログラム504は、例えば、メインメモリ104に格納されたカム定義変数に基づいて、メインメモリ104に格納されたカムテーブルの値を書き換えることで、新たなカムテーブルをメインメモリ104内に生成する。より具体的には、カムテーブル生成プログラム504は、メインメモリ104内のカムテーブル(構造体配列)にカム定義変数に基づいた新たなデータを入力することで、このカムテーブルを書き換えて新たなカムテーブルとする(詳細は後述)。
なお、書き換えられる元のカムテーブルは、カムテーブル名と配列構造のためのメモリ番地がメインメモリ104内に確保されていればよく、特定のカムテーブルである必要はない。つまり、現在メインメモリ104内に展開された使用中のカムテーブルを書き換えてもよいが、現在使用中のカムテーブルを書き換えることなく別の新たなカムテーブルを生成してもよい。
【0095】
カム定義変数記憶プログラム505は、例えばカムテーブル生成プログラム504が実行された後に、入力されたカム定義変数を不揮発性メモリ106に格納する。また、このときに、生成されたカムテーブルも不揮発性メモリ106に格納される。そのため、
図10に示すように、不揮発性メモリ106には、複数のカムテーブル及びカム定義変数が格納される。なお、生成されたカムテーブルは必ずしも不揮発性メモリ106に格納されなくてもよい。なぜなら、カム定義変数が格納されていさえすれば、当該カム定義変数を用いて例えばPLCサポート装置8によってカム曲線を復元可能だからである。
【0096】
この格納動作時に、さらに、カム定義変数記憶プログラム505は、生成されたカムテーブルを識別する情報を、当該カム定義変数を構成するデータに付加する。このように、入力されたカム定義変数とカムテーブルを識別する情報とが対応付けて不揮発性メモリ106に格納されているので、必要に応じて現在動作中のカムテーブルに対応するカム定義変数を外部装置に取り出して、さらに外部装置においてカム定義変数に基づいてカム曲線を生成できる。その結果、生成されたカムテーブルに対応するカム曲線を外部装置で確認可能である。特に、この実施形態では、カム定義変数を入力した装置と異なる装置においても、カム曲線を確認することができるメリットが大きい。例えば、カム定義変数を入力したのがユーザ入出力装置21であっても、PLCサポート装置8においてカム曲線を確認することができる。なお、カム定義変数とカムテーブルを識別する情報とを対応付けた情報をユーザ入出力装置21もしくはPLCサポート装置8から不揮発性メモリ106に格納しておくことで、カム定義変数記憶プログラム505が生成したカムテーブルを識別する情報を、当該カム定義変数を構成するデータに付加する処理を省略しても構わない。
なお、カム演算プログラム501、補間プログラム502、カムテーブル生成プログラム504、およびカム定義変数記憶プログラム505は、システムプログラム210のモーション演算プログラム234に含まれている。
【0097】
図11は、カムデータに関する構造体配列を示した図である。
図11に示すように、構造体配列519は、不揮発性メモリ106に格納されたカムテーブル520を、メインメモリ104で管理するための構造体配列を示した図である。構造体配列519においては、カムテーブルの識別子と、インデックスと、位相の値(または変位の値)とが対応付けられている。たとえば、構造体配列519の1番目の記述は、カムテーブルNo.1(つまり、カムテーブル520)におけるインデックスが1番の位相が“0.0”であることを示している。
【0098】
図12は、カムテーブルのデータ構造を表した図である。
図12に示すように、カムテーブル520は、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたデータである。つまり、カムテーブル520は、離散的なデータである。カムテーブル520におけるデータを用いて直線補完すると、
図9に示したカム曲線510となる。当該直線補間は、
図7の補間プログラム502によってなされる。
【0099】
カムテーブル520では、0度から360度までの位相を、最大カムデータ数に区分して記述できる。カムテーブル520では、0.1度刻みで位相が記述されている。なお、「カムデータ」とは、1つの変位と1つの位相とで構成されるデータである。つまり、カムテーブル520は、複数のカムデータを含む。なお、変位δの単位は、たとえば、“mm”である。
【0100】
また、カムテーブルにおいて、位相および変位の値の各々が0となっている最初のカムデータが、カムテーブル始点である。この箇所をインデックス0番とする。次に位相および変位の値の各々が次に0となる箇所よりも1つ前(つまり、1つ上)のカムデータが、カムテーブルの終点である。つまり、カムテーブルの始点からカムテーブルの終点まで(0度から360度までの位相の範囲のデータ)が、有意なカムデータである。「有意なカムデータ」とは、電子カムの動作に影響を与えるカムデータである。カムデータの識別子であるインデックスの番号は、有意なカムデータに対して付与される。インデックスの番号は、カムテーブルにおいて昇順に付与される。
【0101】
また、カムテーブルの終点よりも後(つまり、下)のカムデータは、電子カムの動作に影響を与えないカムデータ(つまり、有意でないカムデータ)である。なお、有意でないカムデータは、位相と変位との両方が0である必要はない。有意でないカムデータの数は、例えばカムテーブル編集ソフトにより指定される。
【0102】
図13は、カムテーブルの書き換え処理を説明するための図である。詳しくは、
図13は、CPUユニット13が先のカムテーブルに基づいた処理を行っている最中に、CPUユニット13が、カムテーブルの内容(カムデータ)を変更する処理を説明するための図である。
【0103】
図13(a)は、変更前のカムテーブルに基づくカム曲線510と、変更後のカムテーブルに基づくカム曲線560とを表した図である。
図13(b)は、カムテーブルの生成前後における電子カムの動作を説明するための図である。
【0104】
図13(a)に示すように、カム曲線510における位相θaの変位はδ1であり、カム曲線560における位相θaの変位はδ2(δ2>δ1)である。
【0105】
図13(b)に示すように、CPUユニット13は、位相θaに対応する時点で変位を変更する指令を受付けた場合、次の制御周期以降においてはカム曲線560に基づいて、制御対象である従動軸を動作させる。カム曲線560の位相θaの近傍である位相θb(θb>θa)からカム動作を続行する。具体的には、CPUユニット13は、カムテーブルの書き換え処理を行う場合に、書き換え前のカムテーブルにおける位相と連続性を有するような、曲線(正確には直線の集合体となる)となる当該生成時における新たなカムテーブルにおける位相から、新たなカムテーブルを用いた制御を開始する。
【0106】
このため、
図13(b)に示す場合においては、位相θaの時点において、指令値である変位δの値がδ1からδ2に急激に変化することになる。この場合、必要に応じてスムージング処理を行ってもよい。
【0107】
図14は、カムテーブルを生成する手順を示したフローチャートである。
以下のフローチャートにおいて、マイクロプロセッサ100は、カム定義変数の入力を受け付ければ、カムテーブル生成プログラム504を実行することでカムテーブルを生成し、生成されたカムテーブルをメインメモリ104に格納する。また、マイクロプロセッサ100は、生成されたカムテーブルを用いてカム演算プログラム501を実行することで、電子カム動作を実行する。
具体的には、
図14に示すように、マイクロプロセッサ100は、ステップS102において、例えばユーザ入出力装置21から、複数の電子カムのうちカムテーブルを変更の対象であるカムテーブルの指定を受け付けたか否かを判断する。
【0108】
マイクロプロセッサ100は、受け付けていないと判断した場合(ステップS102において「NO」の場合)、処理をステップS110に進める。マイクロプロセッサ100は、受け付けたと判断した場合(ステップS102において「YES」の場合)、ステップS104において、例えばユーザ入出力装置21からカムテーブル生成指令およびカム定義変数の入力を受け付けたか否かを判断する。なお、カム定義変数は、入力時に、不揮発性メモリ106に格納され、その後にメインメモリ104に展開されるか、または直接にメインメモリ104に格納される。
【0109】
マイクロプロセッサ100は、受け付けていないと判断した場合(ステップS104において「NO」の場合)、処理をステップS110に進める。マイクロプロセッサ100は、受け付けたと判断した場合(ステップS104において「YES」の場合)、ステップS106において、カムテーブル生成プログラム504を実行することで、指定された電子カム(たとえば、電子カムNo.1)で使用するカムテーブルを、入力されたカム定義変数に基づいて生成する。その結果、新たなカムテーブルがメインメモリ104に格納される。
また、このとき、マイクロプロセッサ100は、カム定義変数記憶プログラム505を実行することで、メインメモリ104内のカム定義変数を不揮発性メモリ106に格納する。
【0110】
ステップ
S108において、マイクロプロセッサ100は、カム演算プログラム501を実行することで、生成後のカムデータを用いたモーション制御を実行する。ステップS110において、マイクロプロセッサ100は、指定された電子カムを用いた制御が終了したか否かを判断する。マイクロプロセッサ100は、終了したと判断した場合(ステップ
S110において「YES」)、一連の処理を終了する。マイクロプロセッサ100は、終了していないと判断した場合(ステップ
S110において「NO」の場合)、処理をステップS102に進める。
以上に述べたように、カムテーブルを生成するのがCPUユニット13のマイクロプロセッサ100なので、カムテーブルの生成を行うために専用の設定ツール(例えば、この実施形態ではPLCサポート装置8)を用いる必要がない。その結果、カムテーブルを容易に生成できる。
【0111】
図15は、システムサービスSCの実行タイミングを示した図である。前述したとおりモーション制御機能モジュールは高優先度定周期タスクで実行される。システムサービスは、高優先度定周期タスクを含む定周期タスクが実行終了した後の空き時間にて実行される。
【0112】
システムサービスSCは、定周期タスクの空き時間に実行され、軸への指令値出力、および軸からの情報取得に直接関係のない処理を実行しても良い。後述する電子カム、後述するカムテーブル生成命令の演算処理をシステムサービスSCにて実行しても良い。カムテーブル生成命令の演算処理をシステムサービスSCにおいて実行する場合、カムテーブル生成命令の演算処理に伴う演算負荷が定周期タスクの空き時間に実行されるため定周期タスクと動作に影響を及ぼさないという効果を奏する。またカムテーブル生成プログラムの演算処理を高優先度定周期タスクで実行させるか、システムサービスで実行させるかは、システムプログラム210が制御することで実現される。
【0113】
<F.サポート装置>
次に、PLC1で実行されるプログラムの作成およびPLC1のメンテナンスなどを行なうためのPLCサポート装置8について説明する。
【0114】
図16は、CPUユニットに接続して用いられるPLCサポート装置のハードウェア構成を示す模式図である。
図16に示すように、PLCサポート装置8は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。
【0115】
図16に示すように、PLCサポート装置8は、OSを含む各種プログラムを実行するCPU81と、BIOSや各種データを格納するROM(Read Only Memory)82と、CPU81でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリRAM83と、CPU81で実行されるプログラムなどを不揮発的に格納するハードディスク(HDD)84とを含む。
【0116】
PLCサポート装置8は、さらに、ユーザからの操作を受け付けるキーボード85およびマウス86と、情報をユーザに提示するためのディスプレイ87とを含む。さらに、PLCサポート装置8は、PLC1(CPUユニット13)などと通信するための通信インターフェース89(IF)を含む。
【0117】
後述するように、PLCサポート装置8で実行される各種プログラムは、CD−ROM9に格納されて流通する。このCD−ROM9に格納されたプログラムは、CD−ROM(Compact Disk-Read Only Memory)ドライブ88によって読取られ、ハードディスク(HDD)84などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【0118】
図17は、CPUユニットとPLCサポート装置におけるデータ処理を示す模式図である。
図17に示すように、PLCサポート装置8は、エディタ処理部91と、ディスプレイ87と、記憶部93と、変数記憶部94とを有している。
【0119】
エディタ処理部91は、カムデータ95が構成するカム曲線を表示し、編集する機能を有する。ディスプレイ87は、カムデータ及びカム曲線等の各種データを表示可能である。記憶部93は、カムデータ95およびカムプロファイル96を格納している。変数記憶部94は、カムデータ変数97(カムテーブルのカムデータを構成する変数)およびカム定義変数98を格納している。
【0120】
エディタ処理部91は、記憶部93に格納されたカムデータ95を読出して、さらにカムプロファイル96を作成し、次にディスプレイ87においてグラフ表示する機能を有する。エディタ処理部91は、カムデータ95からカムデータ変数97を生成し、変数記憶部94に格納する機能を有する。エディタ処理部91は、カムデータ変数97を作成する際に、カム定義変数98を生成し、さらに、生成したカム定義変数98を変数記憶部94に格納する機能を有する。記憶部93及び変数記憶部94は、前述のメモリRAM83、ハードディスク(HDD)84などによって実現されている。
さらに、エディタ処理部91は、変数記憶部94に格納されているカム定義変数98から、カムデータ95またはカム曲線を生成(復元)して、ディスプレイ87に表示する機能を有する。
【0121】
前述のように、CPUユニット13のマイクロプロセッサ100のメインメモリ104内においてカムテーブル520を生成するのに用いられたカム定義変数98は、不揮発性メモリ106に格納されている。このカム定義変数98は、サポート管理者がPLCサポート装置8を操作することによって、CPUユニット13からPLCサポート装置8にダウンロードされ、変数記憶部94に格納される。エディタ処理部91は、格納されたカム定義変数98を用いて、修正されたカムデータ95およびカム曲線をPLCサポート装置8上で復元でき、例えばカム曲線をディスプレイ87に表示される。
【0122】
サポート管理者は、PLCサポート装置8を用いて、簡易に電子カムの動作を変更できる。例えば、サポート管理者は、変更したい電子カムを指定する情報をCPUユニット13にダウンロードする。さらに、ユーザは、カム生成指令および生成したいカム曲線に対応するカム定義変数98をCPUユニット13にダウンロードする。以上の結果、CPUユニット13においてカムテーブル520が生成され、生成されたカムテーブル520に基づいて電子カム動作が実行される。なお、PLCサポート装置8は、CPUユニットに格納された複数のカム定義変数の中から特定のカム定義変数を指定し、メインメモリ104にカム定義変数の値を直接書き込むことができる。
【0123】
ユーザも、ユーザ入出力装置21を用いて、簡易に電子カムの動作を変更できる。例えば、ユーザは、変更したい電子カムを指定する情報をCPUユニット13にダウンロードする。さらに、ユーザは、カム生成指令および生成したいカム曲線に対応するカム定義変数をCPUユニット13にダウンロードする。以上の結果、CPUユニット13においてカムテーブル520が生成され、生成されたカムテーブル520に基づいて電子カム動作が実行される。
【0124】
このようにユーザによって電子カム動作が変更された場合は、サポート管理者がPLCサポート装置8を用いて、変更後の例えば現在動作中の電子カムの曲線を確かめることが要望されたり、必要になったりする。この場合は、サポート管理者は、PLCサポート装置8を用いて、電子カム動作の変更に用いられたカム定義変数をCPUユニット13の不揮発性メモリ106からアップロードする。そして、サポート管理者は、PLCサポート装置8のエディタ処理部91を用いて、アップロードしたカム定義変数からカムデータまたはカム曲線を復元して、ディスプレイ87に表示したり、印刷したり、編集したりする。
なお、電子カム動作の変更に用いられたカム定義変数は、生成されたカムテーブルに対応付けられてCPUユニット13において記憶されているので、PLCサポート装置8は、格納された複数のカム定義変数の中から現在動作しているカムテーブルに対応したカム定義変数を指定し、メインメモリ104からカム定義変数の値を直接読み出すことができる。また、PLCサポート装置8は、過去にカムテーブルを生成するのに用いられたカム定義変数をCPUユニット13から読み出すこともできる。
【0125】
<G.カムテーブル生成プログラムを実現する制御命令の詳細>
図18は、カムテーブル生成プログラムを実現する制御命令の概要を示す模式図である。制御命令FB800は、
図5の制御命令FB711、
図6の制御命令FB721,722に対応する。制御命令FB800の名称は、MC_GenerateCamTable(カムテーブル生成)であって、入力変数としてExecute(起動)を有し、出力変数としてDone(完了)、EndPointIndex(終点インデックス)、Busy(実行中)、CommandAborted(実行中断)、Error(エラー)、ErrorID(エラーコード)、ErrorParameterCode(パラメータ詳細コード)、ErrorNodePointIndex(ノードポイント要素番号)を有している。Execute(起動)は、立ち上り時に命令を開始する。Done(完了)は、命令の実行が完了したときにTRUE(1)になる。EndPointIndex(終点インデックス)は、命令に実行が完了したときに、終点インデックスを出力する。
【0126】
MC_GenerateCamTable(カムテーブル生成)は、入出力変数として、CamTable(カムテーブル)、CamProperty(カムプロパティ)、CamNodes(カムノード)を有している。CamProperty(カムプロパティ)およびCamNodes(カムノード)が前述のカム定義変数である。
Camtable(カムテーブル)は、前述の通り、構造体配列によって定義される。
【0127】
CamProperty(カムプロパティ)は配列変数によって定義され、各要素の値は、カムプロファイル曲線設定における「プロパティ設定」の一部に相当する。CamProperty(カムプロパティ)は、メンバ変数として、InitVel(開始ノードポイントの初期速度)、InitAcc(開始ノードポイントの初期加速度)、Cycletime(カム動作1サイクルに要する時間であるサイクルタイム)を含んでいる。
【0128】
CamNodes(カムノード)は配列変数によって定義され、各配列は、カムプロファイル曲線設定における「ノードポイント」に相当する。CamNodes(カムノード)は、メンバ変数として、Phase(ノードポイントの主軸位相の値を指定する主軸位相)、Distance(ノードポイントの従軸変位の値を指定する従軸変位)、Curve(ノードポイントまでのカム曲線の形状している曲線形状)などを含んでいる。
なお、CamProperty(カムプロパティ)とCamNodes(カムノード)の各パラメータは、エディタ処理部91(
図17)でのカムプロファイル曲線設定の各項目と一致している。
【0129】
図19は、制御命令の実行イメージを示す模式図である。
図19に示すように、制御命令FB800は、Execute(起動)の立ち上りで、入出力で指定したカム定義変数98のCamProperty98a(カムプロパティ)とCamNodes98b(カムノード)の値に従って、カムデータを演算によって生成し、指定されたカムテーブル520(不揮発性メモリ106からメインメモリ104に展開されている)を、生成したカムデータで書き換えることによって新たなカムテーブル520Aを生成する。制御命令FB800は、カムテーブルの生成(書き換え)が完了したら、カムテーブルの終点インデックスを更新し、その値を出力変数のEndPointIndex(終点インデックス)に出力し、命令の実行を完了する。
【0130】
<H.カムテーブル生成の制御フローの詳細>
図20〜
図22を用いて、制御命令FB800の制御フローの詳細を説明する。
図20は、制御命令の制御手順を示したフローチャートであり、マイクロプロセッサ100が制御命令FB800を実行するときの流れを示す。
【0131】
マイクロプロセッサ100は、ノードポイント数(カムノードにおいて有効となるノードポイントの数)を算出する(ステップ
S202)。
マイクロプロセッサ100は、変数nに0を代入し、変数xに0を代入する(ステップS204)。変数nは、ノード番号である。
マイクロプロセッサ100は、変数nがノードポイント数より小さいか否かを判断する(ステップS206)。マイクロプロセッサ100は、小さいと判断した場合(ステップS206において「YES」の場合)、処理をステップS208に進め、小さくないと判断した場合(ステップS206において「NO」の場合)、全てのノードポイントにおいて処理は終了したので全体の処理を終了する。
【0132】
マイクロプロセッサ100は、ノードポイント毎の位相幅P
n、変位幅H
n、サイクル時間T
n_cycle、データサンプル点数N_P
nを導出する(ステップS208)。
マイクロプロセッサ100は、各ノードポイントにおけるカム曲線の演算とメモリへの値の反映を行う(ステップS210)。ステップS210の詳細は後述する。
【0133】
マイクロプロセッサ100は、変数nをインクリメントする(ステップS212)。その後、処理はステップS206に戻る。
ステップ208とステップ
S210のループがノードポイント数だけ繰り返されることによって、各ノードポイントの始点から終点までのサンプルポイントにカムデータとしての値が入れられる。
【0134】
次に、
図20のステップS210の詳細を、
図21および
図22を用いて説明する。
図21は、カム曲線を演算しメモリへ値を反映する手順を示したフローチャートである。
図22は、カムテーブル生成を説明するためのグラフ(カム曲線)である。
【0135】
なお、
図22のグラフにおいて、各符号の意味は下記の通りである。
P
s_n:第nノードポイントの位相始点(nは1〜の整数であり、以下同様)
P
e_n:第nノードポイントの位相終点
H
s_n:第nノードポイントの変位始点
H
e_n:第nノードポイントの変位終点
N:最大ノードポイント数
T
cycle:1サイクルの時間(sec)
【0136】
マイクロプロセッサ100は、変数mに0を代入する(ステップS214)。変数mはサンプル点数である。
マイクロプロセッサ100は、変数mがデータサンプル点数N_P
nより小さいか否かを判断する(ステップS216)。なお、データサンプル点数N_P
nは、下記の式で得られる。
N_P
n=P
n/ΔP
n (ΔP
n:第nノードポイントの位相刻み幅)
【0137】
マイクロプロセッサ100は、小さいと判断すれば(ステップS216で「YES」の場合)処理をステップS218に進め、小さくないと判断すれば(ステップS216で「NO」の場合)処理を終了する。
マイクロプロセッサ100は、相対位相P
n(m)、相対変位H
n(m)を導出する(ステップS218)。
【0138】
最初に、ノードポイント毎の位相始点からの相対位相、すなわち相対位相P
n(m)の導出について説明する。位相PがP
s_n<P<=P
e_nで、P
s_nからm番目のサンプル点の相対位相P
n(m)は、以下の式で求められる。
P
n(m)=ΔP
n×m (m<N_P
nの場合)
P
n(m)=P
n (m=N_P
nの場合)
【0139】
次に、ノードポイント毎の変位始点からの相対変位、すなわち相対変位H
n(m)の導出について説明する。具体的には、マイクロプロセッサ100は、指定されたカム特性曲線式を用いて、ノードポイント毎の変位始点からの相対変位を導出する。位相PがP
s_n<P<=P
e_nで、P
s_nからm番目のサンプル点の相対変位H
n(m)は、以下の式で求められる。
H
n(m)=H
n×f(T)
T=(ΔP
n/P
n)×m (m<N_P
nの場合)
T=1 (m=N_P
nの場合)
なお、f()およびTは下記の通りである。
f():ノードポイントで設定されたカム曲線の計算式
T:カム特性曲線式に代入する時刻(0〜1)
【0140】
マイクロプロセッサ100は、P
n(m)、H
n(m)をカムテーブル全体での位相P(X)、変位H(X)に変換する(ステップS220)。
【0141】
マイクロプロセッサ100は、カムテーブルのメモリのX番目の位相、変位にP(X)、H(X)をカムデータの値としてそれぞれ書き込む(ステップS222)。
【0142】
マイクロプロセッサ100は、変数m、変数Xをそれぞれインクリメントする(ステップS224)。
以上に述べたステップ
S216〜ステップS222のループがサンプル点数だけ繰り返されることで、1ノードポイント内の複数のカムデータとしての値が入力される。
【0143】
<I.制御命令FB実行時のカムデータの変化の詳細>
以下、
図23〜
図29を用いて、カムテーブル生成におけるカムデータの変化の詳細を説明する。
図23〜
図29は、カムノードの値を示す表と、カムテーブルの生成中に書き換えられていくカムテーブルのカムデータを示す表である。
【0144】
この例では、マイクロプロセッサ100は、
図23の左側のCamNodes(カムノード)の値を元に、右側のCamTable(カムテーブル)のカムデータを生成して書き換えていく。以下の説明では、わかりやすさを考慮して、カムの曲線形状を直線とする。したがって、カム定義変数としては、CamProperty(カムプロパティ)は用いられず、CamNodes(カムノード)のみが用いられている。
この例では、CamNodes(カムノード)の配列要素数は4以上、CamTable(カムテーブル)の配列要素数は4000とする。また、CamTable(カムテーブル)の位相、変位は全て不定値とする。
【0145】
図24に示すように、マイクロプロセッサ100は、CamTable(カムテーブル)の配列番号0の位相、変位をゼロにする。
マイクロプロセッサ100は、CamNodes(カムノード)の最初の配列番号のノードポイントの値を取得する。さらに、マイクロプロセッサ100は、パラメータを元に、開始ノードポイントから次のノードポイントまでのカムデータのサンプル点数と各位相、変位を計算する(
図20のステップS208に対応)。そして、マイクロプロセッサ100は、配列番号1から、サンプル点数分のCamTable(カムテーブル)の値を書き換える(
図20のステップS210、
図21のステップS214〜S224に対応)。
図25では、配列番号1から1800までの1800点のカムデータが書き換えられている。
【0146】
マイクロプロセッサ100は、上記と同様に、配列番号0と1のノードポイント間のカムデータのサンプル点数と各位相、変位を計算して(
図20のステップS208に対応)、CamTable(カムテーブル)の値を書き換える(
図20のステップS210、
図21のステップS214〜S224に対応)。有効ノードポイントが続く限り、この処理は繰り返えされる。
図26では、マイクロプロセッサ100は、CamNodes(カムノード)の配列番号1のノードポイントの値を取得し、配列番号1801から36000までの1800点のカムデータが書き換えられている。
【0147】
図27に示すように、CamNodes(カムノード)の配列番号2は無効ノードポイントなので、マイクロプロセッサ100は、カムデータの計算を終了する(ステップS206で「NO」の場合)。マイクロプロセッサ100は、最後に書き換えた配列番号の次以降のカムデータが無効であることを示すため、それらカムデータの位相をゼロとする。
もし、位相の値がゼロとなる無効ノードポイントがなく、CamNodes(カムノード)の配列が終了した場合も同様に、マイクロプロセッサ100は、位相をゼロとする。
図28は、CamNodes(カムノード)の配列要素数が2で、カムデータに無効ノードポイントが存在しない場合である。
【0148】
ただし、位相にゼロを書き込むCamTable(カムテーブル)の配列要素が存在しない場合、位相にゼロは書き込まれない。
図28の例では、生成したカムデータの合計点数とCamTable(カムテーブル)の配列要素数がともに3601である。
【0149】
マイクロプロセッサ100は、最後に書き込んだ有効なカムデータの配列番号の値でカムテーブルの終点インデックスを更新する。そして、制御命令FB800は、その値をEndPointIndex(終点インデックス)に出力する。
図29では、終点インデックスは3600となる。以上で命令の実行は完了する。
【0150】
<J.制御装置による処理のまとめ>
制御装置(例えば、
図1のCPUユニット13)は、モーション制御とシーケンス制御とを実行する。制御装置は、プロセッサ(例えば、
図2のマイクロプロセッサ100)と、記憶部(例えば、
図10のメインメモリ104)とを備えている。記憶部は、カム演算プログラム(例えば、
図10のカム演算プログラム501)と、カムテーブル(例えば、
図10のカムテーブル520)の格納に用いられる。カム演算プログラムは、電子カム(例えば、
図10の電子カム500)の主軸の位相各々に対して電子カムの従動軸の変位を対応付けた配列であるカムテーブルを用いて、主軸の位相各々に対して電子カムの従動軸の変位に対応する位置指令値を出力するモーション制御を行うためのものである。
記憶部は、モーション制御により実現される電子カム動作を規定するカム定義変数(例えば、
図17のカム定義変数、
図18のCamNodes(カムノード)、CamProperty(カムプロパティ))の入力を受け付けて、入力されたカム定義変数に対応するカム曲線を配列にしたカムテーブルを生成するためのカムテーブル生成プログラム(例えば、
図10のカムテーブル生成プログラム504)をさらに含む。
プロセッサは、カムテーブルを用いてカム演算プログラムを実行し(例えば、
図14のステップS108)、モーション制御を行う。また、プロセッサは、カム定義変数の入力を受け付け(例えば、
図14のステップS104で「YES」の場合)、カムテーブル生成プログラムを実行することでカムテーブルを生成し(例えば、
図14のステップS106)、生成されたカムテーブルを記憶部に格納する。
【0151】
この制御装置では、プロセッサは、カムテーブルを用いてカム演算プログラムを実行することで、主軸の位相各々に対して電子カムの従動軸の変位に対応する位置指令値を出力するモーション制御を行う(例えば、
図14のステップS108)。また、カム定義変数が入力されれば、プロセッサは、カムテーブル生成プログラムを実行することでカムテーブルを生成する(例えば、
図14のステップS106)。
以上に述べたようにカムテーブルを生成するのが制御装置のプロセッサなので、カムテーブルの変更を行うために専用の設定ツール(例えば、
図1のPLCサポート装置8)を用いる必要がない。その結果、カムテーブルを容易に変更可能になる。
【0152】
記憶部は、入力されたカム定義変数と、カムテーブル生成プログラムが実行されることで生成されたカムテーブルを識別する情報とを対応づけて、記憶部に格納するカム定義変数記憶プログラム(例えば、
図10のカム定義変数記憶プログラム505)をさらに含んでいてもよい。
この制御装置では、入力されたカム定義変数とカムテーブルを識別する情報とが対応付けて記憶部に格納されているので、必要に応じて現在動作中のカムテーブルに対応するカム定義変数を外部装置(例えば、
図1のPLCサポート装置8)に取り出して、さらに外部装置においてカム定義変数からカム曲線を生成できる。その結果、変更を行ったカムテーブルに対応するカム曲線を外部装置で確認可能である。
【0153】
<K.他の実施形態>
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、発明の要旨を逸脱しない範囲で種々の変更が可能である。特に、本明細書に書かれた複数の実施形態及び変形例は必要に応じて任意に組み合せ可能である。
【0154】
<L.本発明の要旨>
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した発明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。