(57)【特許請求の範囲】
【請求項１】
主軸と従動軸との同期制御を制御周期ごとに実行する同期制御装置であって、
主軸と従動軸とが同期を開始する同期開始位置を指定する指定部と、
時間変位に対する前記従動軸の速度を表わすカム曲線を作成するカム曲線作成部と、
毎制御周期ごとの前記主軸の位置情報を検出する検出部と、
前記同期開始位置までは、前記カム曲線と前記主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、前記同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出する制御部とを備え、
前記制御部は、前記算出した速度指令値で前記従動軸を制御する、同期制御装置。
【請求項２】
前記カム曲線作成部は、前記同期開始位置までの期間における、指定された目標加速度、目標減速度、および目標速度に基づいて、前記カム曲線を作成する、請求項１に記載の同期制御装置。
【請求項３】
主軸と従動軸との同期制御を制御周期ごとに実行する同期制御方法であって、
主軸と従動軸とが同期を開始する同期開始位置を指定するステップと、
時間変位に対する前記従動軸の速度を表わすカム曲線を作成するステップと、
毎制御周期ごとの前記主軸の位置情報を検出するステップと、
前記同期開始位置までは、前記カム曲線と前記主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、前記同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出するステップと、
前記算出した速度指令値で前記従動軸を制御するステップとを備える、同期制御方法。
【請求項４】
コンピュータに、主軸と従動軸との同期制御を制御周期ごとに実行させる同期制御プログラムであって、
主軸と従動軸とが同期を開始する同期開始位置を指定するステップと、
時間変位に対する前記従動軸の速度を表わすカム曲線を作成するステップと、
毎制御周期ごとの前記主軸の位置情報を検出するステップと、
前記同期開始位置までは、前記カム曲線と前記主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、前記同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出するステップと、
前記算出した速度指令値で前記従動軸を制御するステップとを実行させる、同期制御プログラム。
【請求項５】
コンピュータに、主軸と従動軸との同期制御を制御周期ごとに実行させる同期制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
主軸と従動軸とが同期を開始する同期開始位置を指定するステップと、
時間変位に対する前記従動軸の速度を表わすカム曲線を作成するステップと、
毎制御周期ごとの前記主軸の位置情報を検出するステップと、
前記同期開始位置までは、前記カム曲線と前記主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、前記同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出するステップと、
前記算出した速度指令値で前記従動軸を制御するステップとを実行させる、コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同期制御装置、同期制御方法、同期制御プログラム、および同期制御プログラムを記録したコンピュータ読み取り可能な記録媒体に関し、特に主軸と従動軸を任意のギヤ比をによって同期動作させる同期制御装置、同期制御方法、同期制御プログラム、および同期制御プログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【背景技術】
【０００２】
プログラマブルロジックコントローラ（Programmable Logic Controller：以下「ＰＬ
Ｃ」と称す。）は、たとえば、ユーザプログラムを実行する演算ユニット、外部のスイッチやセンサからの信号入力および外部のリレーやアクチュエータへの信号出力を担当するＩＯ（Input Output）ユニットといった複数のユニットで構成される。それらのユニット間で、ユーザプログラム実行サイクルごとに、ＰＬＣシステムバスおよび／またはフィールドネットワークを経由してデータの授受をしながら、ＰＬＣは制御動作を実行する。
【０００３】
機械、設備などの動作の制御としては、モータの運動を制御するためのモーションコントロールが含まれる場合がある。このようなモーション制御の典型例としては、位置決めテーブルやロボットといったメカニカル機構の位置決めを行うようなアプリケーションが想定される。
【０００４】
モーションコントローラにおいて、同期動作や同期制御は、主軸と従動軸が何らかの関係を保ちつつ動作する方式のことを意味し、一般的にはカム動作やギヤ動作が含まれる。カム動作とは、主軸の位置（位相）に対応する従動軸の位置（変位）を毎制御周期、カムテーブル中から検索して、従動軸の指令位置を決定する方式である。ギヤ動作とは、主軸の速度にギヤ比を乗算した値を従動軸の指令速度として、従動軸の指令位置を決定する方式である。
【０００５】
次に、ギヤ動作について説明する。
従動軸が停止した状態から主軸に同期させるには、従動軸の速度をステップ状に変化させる必要がある。
【０００６】
これは、マニュアルトランスミッション方式の自動車において主軸をエンジン、従動軸をタイヤと置き換えて考えた場合に、半クラッチをせずにいきなりギアチェンジした場合に対応する。すなわち、クラッチをつなげたら従動軸（＝タイヤ）に無理な力が発生することと同じである。このような従動軸速度が急激に変化することによって従動軸に加わる機械的衝撃を緩和するには、主軸の速度を落とす方法と、同期開始前に従動軸の動作を開始させる方法（以下、「追いつき動作」という）とが考えられる。
【０００７】
主軸の速度を落とす方法では、装置のスループット（単位時間に処理できる数）が減ったり、ＣＮＣ（Computerized Numerically Controlled）では加工精度が落ちるなどの問題がある。そのため、追いつき動作を実現することが重要である。実現例として、たとえば、特許文献１（特許第３４５２８９９号公報）には、「追いかけ動作」による実現方法が開示されている。すなわち、特許文献１に記載された動作方式では、予め加減速の直線や曲線を定義しており、従動軸は同期開始位置まで加減速を行い、同期開始位置以降は主軸と従動軸が同期する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第３４５２８９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１（特許第３４５２８９９号公報）では、追いかけ動作中は、従動軸が単独で動作している。そのため、追いかけ動作中に主軸の速度が変化した場合には、同期開始位置で同期制御を開始できないという問題がある。
【００１０】
これは、特許文献１（特許第３４５２８９９号公報）が解決しようとしている課題は「同期開始時の従動軸の機械的衝撃の緩和」であって、追いかけ動作時の主軸の速度変化を考慮していないためである。
【００１１】
ＣＮＣ（Computerized Numerically Controlled）工作機械のように主軸の速度が微小な場合には、追いかけ動作中に主軸と従動軸が同期していなくても、大きな問題とならないかもしれない。しかし、いわゆる汎用モーションコントローラでは、主軸の速度が大きく変化する場合がある。そのような場合には同期開始位置で同期制御を開始できないことになる。
【００１２】
それゆえに、本発明の目的は、従動軸に加わる衝撃を緩和し、かつ同期開始位置で確実に同期制御を開始することができる同期制御装置、同期制御方法、同期制御プログラム、および同期制御プログラムを記録したコンピュータ読み取り可能な記録媒体を提供することである。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明は、主軸と従動軸との同期制御を制御周期ごとに実行する同期制御装置であって、主軸と従動軸とが同期を開始する同期開始位置を指定する指定部と、カム曲線を作成するカム曲線作成部と、毎制御周期ごとの主軸の位置情報を検出する検出部と、同期開始位置までは、カム曲線と主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出する制御部とを備え、制御部は、算出した速度指令値で従動軸を制御する。
【００１４】
好ましくは、カム曲線作成部は、同期開始位置までの期間における、指定された目標加速度、目標減速度、および目標速度に基づいて、カム曲線を作成する。
【００１５】
また、本発明は、主軸と従動軸との同期制御を制御周期ごとに実行する同期制御方法であって、主軸と従動軸とが同期を開始する同期開始位置を指定するステップと、カム曲線を作成するステップと、毎制御周期ごとの主軸の位置情報を検出するステップと、同期開始位置までは、カム曲線と主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出するステップと、算出した速度指令値で従動軸を制御するステップとを備える。
【００１６】
また、本発明は、コンピュータに、主軸と従動軸との同期制御を制御周期ごとに実行させる同期制御プログラムであって、主軸と従動軸とが同期を開始する同期開始位置を指定するステップと、カム曲線を作成するステップと、毎制御周期ごとの主軸の位置情報を検出するステップと、同期開始位置までは、カム曲線と主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出するステップと、算出した速度指令値で従動軸を制御するステップとを実行させる。
【００１７】
また、本発明は、コンピュータに、主軸と従動軸との同期制御を制御周期ごとに実行させる同期制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、主軸と従動軸とが同期を開始する同期開始位置を指定するステップと、カム曲線を作成するステップと、毎制御周期ごとの主軸の位置情報を検出するステップと、同期開始位置までは、カム曲線と主軸の位置情報とに基づいて、制御周期ごとに従動軸に対する速度指令値を算出し、同期開始位置以降は、主軸と従動軸とのギア比に基づいて、制御周期ごとに従動軸に対する速度指令値を算出するステップと、算出した速度指令値で従動軸を制御するステップとを実行させる。
【発明の効果】
【００１８】
本発明によれば、従動軸に加わる衝撃を緩和し、かつ同期開始位置で確実に同期制御を開始することができる。
【図面の簡単な説明】
【００１９】
【図１】ＰＬＣシステムの概略構成を示す模式図である。
【図２】ＣＰＵユニットのハードウェア構成を示す模式図である。
【図３】ＣＰＵユニットで実行されるソフトウェア構成を示す模式図である。
【図４】同期制御装置の構成を表わす図である。
【図５】カム曲線の例を表わす図である。
【図６】第１の実施形態の同期制御の動作手順を表わすフローチャートである。
【図７】第２の実施形態の同期制御の動作手順を表わすフローチャートである。
【図８】カム曲線の例を表わす図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態について図面を参照して説明する。
［第１の実施形態］
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２１】
＜Ａ．システム構成＞
本実施の形態に係るＰＬＣ（Programmable Logic Controller）は、モータの運動を制御するためのモーション制御機能を有する。まず、図１を参照して、本実施の形態に係るＰＬＣ１のシステム構成について説明する。
【００２２】
図１は、本発明の実施の形態に係るＰＬＣシステムの概略構成を示す模式図である。図１を参照して、ＰＬＣシステムＳＹＳは、ＰＬＣ１と、ＰＬＣ１とフィールドネットワーク２を介して接続されるサーボモータドライバ３およびリモートＩＯターミナル５と、フィールド機器である検出スイッチ６およびリレー７とを含む。また、ＰＬＣ１には、接続ケーブル１０などを介してＰＬＣサポート装置８が接続される。
【００２３】
ＰＬＣ１は、主たる演算処理を実行するＣＰＵユニット１３と、１つ以上のＩＯユニット１４と、特殊ユニット１５とを含む。これらのユニットは、ＰＬＣシステムバス１１を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット１２によって適切な電圧の電源が供給される。
【００２４】
ＣＰＵユニット１３の詳細については、図２を参照して後述する。
ＩＯユニット１４は、一般的な入出力処理に関するユニットであり、オン／オフといった２値化されたデータの入出力を司る。すなわち、ＩＯユニット１４は、検出スイッチ６などのセンサが何らかの対象物を検出している状態（オン）および何らの対象物も検出していない状態（オフ）のいずれであるかという情報を収集する。また、ＩＯユニット１４は、リレー７やアクチュエータといった出力先に対して、活性化するための指令（オン）および不活性化するための指令（オフ）のいずれかを出力する。
【００２５】
特殊ユニット１５は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、ＩＯユニット１４ではサポートしない機能を有する。
【００２６】
フィールドネットワーク２は、ＣＰＵユニット１３と遣り取りされる各種データを伝送する。フィールドネットワーク２としては、典型的には、各種の産業用イーサネット（登録商標）を用いることができる。
【００２７】
なお、図１には、ＰＬＣシステムバス１１およびフィールドネットワーク２の両方を有するＰＬＣシステムＳＹＳを例示するが、一方のみを搭載するシステム構成を採用することもできる。たとえば、フィールドネットワーク２ですべてのユニットを接続してもよい。あるいは、フィールドネットワーク２を使用せずに、サーボモータドライバ３をＰＬＣシステムバス１１に直接接続してもよい。さらに、フィールドネットワーク２の通信ユニットをＰＬＣシステムバス１１に接続し、ＣＰＵユニット１３から当該通信ユニット経由で、フィールドネットワーク２に接続された機器との間の通信を行なうようにしてもよい。
【００２８】
サーボモータドライバ３は、フィールドネットワーク２を介してＣＰＵユニット１３と接続されるとともに、ＣＰＵユニット１３からの指令値に従ってサーボモータ４を駆動する。より具体的には、サーボモータドライバ３は、ＰＬＣ１から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ３は、サーボモータ４の軸に接続されている位置センサ（ロータリーエンコーダ）やトルクセンサといった検出器から、位置、速度（典型的には、今回位置と前回位置との差から算出される）、トルクといったサーボモータ４の動作に係る実測値を取得する。そして、サーボモータドライバ３は、ＣＰＵユニット１３からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行なう。すなわち、サーボモータドライバ３は、実測値が目標値に近づくようにサーボモータ４を駆動するための電流を調整する。
なお、サーボモータドライバ３は、サーボモータアンプと称されることもある。
【００２９】
また、図１には、サーボモータ４とサーボモータドライバ３とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
【００３０】
図１に示すＰＬＣシステムＳＹＳのフィールドネットワーク２には、さらに、リモートＩＯターミナル５が接続されている。リモートＩＯターミナル５は、基本的には、ＩＯユニット１４と同様に、一般的な入出力処理に関する処理を行なう。より具体的には、リモートＩＯターミナル５は、フィールドネットワーク２でのデータ伝送に係る処理を行なうための通信カプラ５２と、１つ以上のＩＯユニット５３とを含む。これらのユニットは、リモートＩＯターミナルバス５１を介して、データを互いに遣り取りできるように構成される。
【００３１】
＜Ｂ．ＣＰＵユニットのハードウェア構成＞
次に、図２を参照して、ＣＰＵユニット１３のハードウェア構成について説明する。図２は、本発明の実施の形態に係るＣＰＵユニット１３のハードウェア構成を示す模式図である。
【００３２】
図２を参照して、ＣＰＵユニット１３は、マイクロプロセッサ１００と、チップセット１０２と、メインメモリ１０４と、不揮発性メモリ１０６と、システムタイマ１０８と、ＰＬＣシステムバスコントローラ１２０と、フィールドネットワークコントローラ１４０と、ＵＳＢコネクタ１１０とを含む。チップセット１０２と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【００３３】
マイクロプロセッサ１００およびチップセット１０２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ１００は、チップセット１０２から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１０２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ１００に必要な命令コードを生成する。さらに、チップセット１０２は、マイクロプロセッサ１００での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００３４】
ＣＰＵユニット１３は、記憶手段として、メインメモリ１０４および不揮発性メモリ１０６を有する。
【００３５】
メインメモリ１０４は、揮発性の記憶領域（ＲＡＭ）であり、ＣＰＵユニット１３への電源投入後にマイクロプロセッサ１００で実行されるべき各種プログラムを保持する。また、メインメモリ１０４は、マイクロプロセッサ１００による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ１０４としては、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）といったデバイスが用いられる。
【００３６】
一方、不揮発性メモリ１０６は、リアルタイムＯＳ（Operating System）、ＰＬＣ１のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ１００がアクセスできるようにメインメモリ１０４にコピーされる。このような不揮発性メモリ１０６としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、ＤＶＤ−ＲＡＭ（Digital Versatile Disk Random Access Memory）のような光学記録媒体などを用いることもできる。
【００３７】
システムタイマ１０８は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ１００に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、ＯＳ（Operating System）やＢＩＯＳ（Basic Input Output System）などによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ１０８が発生する割り込み信号を利用して、後述するようなモーション制御サイクルごとの制御動作が実現される。
【００３８】
ＣＰＵユニット１３は、通信回路として、ＰＬＣシステムバスコントローラ１２０およびフィールドネットワークコントローラ１４０を有する。
【００３９】
ＰＬＣシステムバスコントローラ１２０は、ＰＬＣシステムバス１１を介したデータの遣り取りを制御する。より具体的には、ＰＬＣシステムバスコントローラ１２０は、ＤＭＡ（Dynamic Memory Access）制御回路１２２と、ＰＬＣシステムバス制御回路１２４と、バッファメモリ１２６とを含む。なお、ＰＬＣシステムバスコントローラ１２０は、ＰＬＣシステムバスコネクタ１３０を介してＰＬＣシステムバス１１と内部的に接続される。
【００４０】
バッファメモリ１２６は、ＰＬＣシステムバス１１を介して他のユニットへ出力されるデータ（以下「出力データ」とも称す。）の送信バッファ、および、ＰＬＣシステムバス１１を介して他のユニットから入力されるデータ（以下「入力データ」とも称す。）の受信バッファとして機能する。なお、マイクロプロセッサ１００による演算処理によって作成された出力データは、原始的にはメインメモリ１０４に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ１０４から読み出されて、バッファメモリ１２６に一次的に保持される。また、他のユニットから転送された入力データは、バッファメモリ１２６に一次的に保持された後、メインメモリ１０４に移される。
【００４１】
ＤＭＡ制御回路１２２は、メインメモリ１０４からバッファメモリ１２６への出力データの転送、および、バッファメモリ１２６からメインメモリ１０４への入力データの転送を行なう。
【００４２】
ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１に接続される他のユニットとの間で、バッファメモリ１２６の出力データを送信する処理および入力データを受信してバッファメモリ１２６に格納する処理を行なう。典型的には、ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１における物理層およびデータリンク層の機能を提供する。
【００４３】
フィールドネットワークコントローラ１４０は、フィールドネットワーク２を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ１４０は、用いられるフィールドネットワーク２の規格に従い、出力データの送信および入力データの受信を制御する。このように、本実施の形態に係るＣＰＵユニット１３は、フィールドネットワーク２を介して、駆動装置であるサーボモータドライバ３と接続される。
【００４４】
ＤＭＡ制御回路１４２は、メインメモリ１０４からバッファメモリ１４６への出力データの転送、および、バッファメモリ１４６からメインメモリ１０４への入力データの転送を行なう。
【００４５】
フィールドネットワーク制御回路１４４は、フィールドネットワーク２に接続される他の装置との間で、バッファメモリ１４６の出力データを送信する処理および入力データを受信してバッファメモリ１４６に格納する処理を行なう。典型的には、フィールドネットワーク制御回路１４４は、フィールドネットワーク２における物理層およびデータリンク層の機能を提供する。
【００４６】
ＵＳＢコネクタ１１０は、ＰＬＣサポート装置８とＣＰＵユニット１３とを接続するためのインターフェイスである。典型的には、ＰＬＣサポート装置８から転送される、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なプログラムなどは、ＵＳＢコネクタ１１０を介してＰＬＣ１に取込まれる。
【００４７】
＜Ｃ．ＣＰＵユニットのソフトウェア構成＞
次に、図３を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＣＰＵユニット１３のマイクロプロセッサ１００によって実行される。
【００４８】
図３は、本発明の実施の形態に係るＣＰＵユニット１３で実行されるソフトウェア構成を示す模式図である。図３を参照して、ＣＰＵユニット１３で実行されるソフトウェアとしては、リアルタイムＯＳ２００と、システムプログラム２１０と、ユーザプログラム２３６との３階層になっている。
【００４９】
リアルタイムＯＳ２００は、ＣＰＵユニット１３のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ１００がシステムプログラム２１０およびユーザプログラム２３６を実行するための基本的な実行環境を提供する。このリアルタイムＯＳは、典型的には、ＰＬＣのメーカーあるいは専門のソフトウェア会社などによって提供される。
【００５０】
システムプログラム２１０は、ＰＬＣ１としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム２１０は、スケジューラプログラム２１２と、出力処理プログラム２１４と、入力処理プログラム２１６と、シーケンス命令演算プログラム２３２と、モーション演算プログラム２３４と、その他のシステムプログラム２２０とを含む。なお、一般には出力処理プログラム２１４および入力処理プログラム２１６は、連続的（一体として）に実行されるので、これらのプログラムを、ＩＯ処理プログラム２１８と総称する場合もある。
【００５１】
ユーザプログラム２３６は、ユーザにおける制御目的に応じて作成される。すなわち、ＰＬＣシステムＳＹＳを用いて制御する対象のライン（プロセス）などに応じて、任意に設計されるプログラムである。
【００５２】
後述するように、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム２３６、シーケンス命令演算プログラム２３２、およびモーション演算プログラム２３４を、制御プログラム２３０と総称する場合もある。
【００５３】
このように、ＣＰＵユニット１３のマイクロプロセッサ１００は、記憶手段に格納されたシステムプログラム２１０およびユーザプログラム２３６を実行する。
【００５４】
以下、各プログラムについてより詳細に説明する。
ユーザプログラム２３６は、上述したように、ユーザにおける制御目的（たとえば、対象のラインやプロセス）に応じて作成される。ユーザプログラム２３６は、典型的には、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム２３６は、ＰＬＣサポート装置８などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム２３６は、ＰＬＣサポート装置８から接続ケーブル１０を介してＣＰＵユニット１３へ転送され、不揮発性メモリ１０６などに格納される。
【００５５】
スケジューラプログラム２１２は、出力処理プログラム２１４、入力処理プログラム２１６、および制御プログラム２３０について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム２１２は、ユーザプログラム２３６およびモーション演算プログラム２３４の実行を制御する。
【００５６】
出力処理プログラム２１４は、ユーザプログラム２３６（制御プログラム２３０）の実行によって生成された出力データを、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０へ転送するのに適した形式に再配置する。ＰＬＣシステムバスコントローラ１２０またはフィールドネットワークコントローラ１４０が、マイクロプロセッサ１００からの、送信を実行するための指示を必要とする場合は、出力処理プログラム２１４がそのような指示を発行する。
【００５７】
入力処理プログラム２１６は、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０によって受信された入力データを、制御プログラム２３０が使用するのに適した形式に再配置する。
【００５８】
シーケンス命令演算プログラム２３２は、ユーザプログラム２３６で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。
【００５９】
モーション演算プログラム２３４は、ユーザプログラム２３６による指示に従って実行され、サーボモータドライバ３やパルスモータドライバといったなモータドライバに対して出力する指令値を算出するプログラムである。
【００６０】
その他のシステムプログラム２２０は、図３に個別に示したプログラム以外の、ＰＬＣ１の各種機能を実現するためのプログラム群をまとめて示したものである。その他のシステムプログラム２２０は、モーション制御サイクルの周期を設定するプログラム２２２を含む。モーション制御サイクルの周期は、制御目的に応じて適宜設定することができる。モーション制御サイクルの周期を設定するプログラム２２２は、システムタイマ１０８から指定されたモーション制御サイクルの周期で割り込み信号が発生されるように、システムタイマ１０８を設定する。ＣＰＵユニット１３への電源投入時に、モーション制御サイクルの周期を設定するプログラム２２２が実行されることで、モーション制御サイクルの周期を指定する情報が不揮発性メモリ１０６から読み出され、読み出された情報に従ってシステムタイマ１０８が設定される。
【００６１】
リアルタイムＯＳ２００は、複数のプログラムを時間の経過に従い切り換えて実行するための環境を提供する。
【００６２】
＜Ｄ．モーション制御の概略＞
次に、上述したユーザプログラム２３６に含まれる典型的な構成について説明する。ユーザプログラム２３６は、モータの運動に関する制御開始の条件が成立するか否かを周期的に判断させる命令を含む。たとえば、モータの駆動力によって何らかの処置がなされるワークが所定の処置位置まで搬送されたか否かを判断するようなロジックである。そして、ユーザプログラム２３６は、この制御開始の条件が成立したと判断されたことに応答して、モーション制御を開始させる命令をさらに含む。このモーション制御の開始に伴って、モーション命令の実行が指示される。すると、指示されたモーション命令に対応するモーション演算プログラム２３４が起動し、まず、モーション演算プログラム２３４の実行ごとにモータに対する指令値を算出していくために必要な初期処理が実行される。また、初期処理と同じモーション制御サイクルにおいて、第１サイクルでの指令値が算出される。したがって、初期処理および第１番目の指令値算出処理が、起動したモーション演算プログラム２３４が第１番目の実行においてなすべき処理となる。以降、各サイクルでの指令値が順次算出される。
【００６３】
＜Ｅ．同期制御の概略＞
図４は、同期制御装置の構成を表わす図である。
【００６４】
図４に示すように、同期制御装置６１は、ユーザ指令部６２と、スケジュール部６３と、カム曲線作成部６４と、検出部６５と、制御部６６とを備える。これらの構成要素は、制御プログラム２３０、モーション制御サイクルの周期を設定するプログラム２２２、およびスケジューラプログラム２１２によって実現される。
【００６５】
スケジュール部６３は、制御周期のタイミング、ユーザ指令部６３、および同期処理全体のタイミングを制御する。スケジュール部６３は、同期開始時点よりも早いタイミングで従動軸に対して主軸を追いかける動作（以下、追いかけ動作）を実行させる。
【００６６】
ユーザ指令部６２は、ユーザが指定した同期開始主軸位置ＳＰＭ、同期開始従動軸位置ＳＰＤ、ギヤ比ＧＲ、追いかけ動作中の目標速度ＶＴＤ、目標加速度ＡＴＤ、目標減速度ＢＴＤの指令値を入力し、スケジュール部６３の指令タイミングでカム曲線作成部６４および制御部６６の処理に反映させる。同期開始主軸位置ＳＰＭおよび同期開始従動軸位置ＳＰＤは、従動軸と主軸が同期する時点での主軸の位置、従動軸の位置を表わす。また、ユーザ指令部６２は、同期制御の開始を指示する。
【００６７】
検出部６５は、主軸用のエンコーダ６７および従動軸用のエンコーダ６８からのパルスのカウント値に基づいて、主軸の位置、従動軸の位置、主軸の速度、従動軸の速度を検出する。
【００６８】
カム曲線作成部６４は、ギヤ同期開始時の速度として、追いつき動作開始時の主軸の速度ＶＭ（Ｔｓ）にギヤ比ＧＲを掛けた速度を計算する。カム曲線作成部６４は、目標速度ＶＴＤ、目標加速度ＡＴＤ、目標減速度ＢＴＤ、追いつき動作開始時の従動軸の速度ＶＤ（Ｔｓ）、および算出したギヤ同期開始時の速度を用いて、図５に示すようなカム曲線を作成する。
【００６９】
本実施の形態において、カム曲線とは時間変位に対する従動軸の速度を表わすものとする。
【００７０】
制御部６６は、追いかけ動作時には、カム曲線と主軸の位置情報（具体的には、追いかけ動作開始からの移動量）とに基づいて、制御周期ごとに、従動軸に対する速度指令値および位置指令値を算出して、従動軸用のサーボモータドライバ７０へ出力する。制御部６６は、追いかけ動作終了後の同期制御時には、主軸の速度とギヤ比とに基づいて、制御周期ごとに、従動軸に対する速度指令値および位置指令値を算出して、従動軸用のサーボモータドライバ７０へ出力する。
【００７１】
（同期制御の動作）
図６は、第１の実施形態の同期制御の動作手順を表わすフローチャートである。
【００７２】
まず、ユーザ指令部６２は、ユーザによって指定された同期開始主軸位置ＳＰＭ、同期開始従動軸位置ＳＰＤ、ギヤ比ＧＲ、目標速度ＶＴＤ、目標加速度ＡＴＤ、目標減速度ＢＴＤの指令値を入力する（ステップＳ１０１）。
【００７３】
次に、スケジュール部６３は、従動軸の追いかけ動作の開始を指示する（ステップＳ１０２）。
【００７４】
検出部６５は、開始を指示された時点Ｔｓにおいて、主軸用のエンコーダ６７からのパルスのカウント値（位置）を取得して主軸の位置ＰＭ（Ｔｓ）とし、取得したカウント値の時間微分（時間差分）から主軸の速度ＶＭ（Ｔｓ）を算出する。また、検出部６５は、開始を指示された時点Ｔｓにおいて、従動軸用のエンコーダ６８からのパルスのカウント値（位置）を取得して従動軸の位置ＰＤ（Ｔｓ）とし、取得したカウント値の時間微分（時間差分）から従動軸の速度ＶＤ（Ｔｓ）を算出する（ステップＳ１０３）。
【００７５】
次に、カム曲線作成部６４は、目標速度ＶＴＤ、目標加速度ＡＴＤ、目標減速度ＢＴＤ、追いつき動作開始時の従動軸の速度ＶＤ（Ｔｓ）、追いつき動作開始時の主軸の速度ＶＭ（Ｔｓ）にギヤ比ＧＲを掛けた速度を用いて、図５に示すようなカム曲線（速度プロファイル）を作成する（ステップＳ１０４）。
【００７６】
検出部６５は、主軸用のエンコーダ６７からのパルスのカウント値（位置）を取得して主軸の位置ＰＭ（ｉ）とする。また、検出部６５は、従動軸用のエンコーダ６８からのパルスのカウント値（位置）を取得して従動軸の位置ＰＤ（ｉ）とする（ステップＳ１０５）。
【００７７】
スケジュール部６３は、検出した主軸の位置ＰＭ（ｉ）が同期開始主軸位置ＳＰＭと同じであり、かつ検出した従動軸の位置ＰＤ（ｉ）が同期開始従動軸位置ＳＰＤと同じである条件を満足しない場合には（ステップＳ１０６でＹＥＳ）、以下のステップによって追いかけ動作を続行する。
【００７８】
制御部６６は、カム曲線と、追いかけ動作開始からの主軸の移動量（ＰＭ（ｉ）−ＰＭ（Ｔｓ））に基づいて、現在のモーション制御周期での従動軸の速度指令位置および位置指令値を算出する。具体的には、制御部６６は、主軸の移動量がＰのときに、カム曲線を積分した値がＰとなるときの従動軸の速度を従動軸の速度指令値として算出する。さらに、制御部６６は、従動軸の速度指令値を積分して、積分した値を従動軸の位置指令値とする（ステップＳ１０７）。
【００７９】
制御部６６は、従動軸用のサーボモータドライバ７０に速度指令値および位置指令値を出力する（ステップＳ１０８）。
【００８０】
スケジュール部６３は、次のモーション制御サイクルが到着するまで待機するように指示する。次のモーション制御サイクルが到着したら、ｉをインクリメントする（ステップＳ１０９）。
【００８１】
一方、検出した主軸の位置ＰＭ（ｉ）が同期開始主軸位置ＳＰＭと同じであり、かつ検出した従動軸の位置ＰＤ（ｉ）が同期開始従動軸位置ＳＰＤと同じである条件を満足する場合には（ステップＳ１０６でＹＥＳ）、スケジュール部６３は、追いかけ動作を終了し、以下のステップによってギヤ動作を実行させる。
【００８２】
検出部６５は、主軸用のエンコーダ６７からのパルスのカウント値（位置）を取得し、取得したカウント値の時間微分（時間差分）から主軸の速度ＶＭ（ｉ）を算出する（ステップＳ１１０）。
【００８３】
制御部６６は、検出した主軸の速度ＶＭ（ｉ）とギヤ比ＧＲとを乗算することによって、従動軸の速度指令値を算出する。さらに、制御部６６は、従動軸の速度指令値を積分して、積分した値を従動軸の位置指令値とする（ステップＳ１１１）。
【００８４】
制御部６６は、従動軸用のサーボモータドライバ７０に速度指令値および位置指令値を出力する（ステップＳ１１２）。
【００８５】
スケジュール部６３は、次のモーション制御サイクルが到着するまで待機するように指示する（ステップＳ１１３）。
【００８６】
スケジュール部６３は、ギア動作終了の終了条件が成立するまで（ステップＳ１１４でＹＥＳ）、ステップＳ１１０〜Ｓ１１３のギヤ動作を続行させる。
【００８７】
以上のように、本実施の形態では、「追いつき動作」をカム曲線を用いた、同期動作で実現し、同期開始位置以降は、ギヤ比を用いた同期動作を行なうので、従動軸の「追いかけ動作」中に、主軸の速度が変化しても、主軸の速度に同期して従動軸の速度が変化するので、同期開始位置での同期開始が可能となる。「同期開始主軸位置」「同期開始従動軸位置」で確実に同期状態に遷移できる（ギヤ動作を開始する）ことを保証する。
【００８８】
［第２の実施形態］
第２の実施形態では、主軸の速度が追いかけ動作時から変化したときに、主軸と従動軸が指定された位置で同期をとるための方法をより具体化した方法について説明する。
【００８９】
図７は、第２の実施形態の同期制御の動作手順を表わすフローチャートである。
まず、ユーザ指令部６２は、ユーザによって指定された同期開始主軸位置ＳＰＭ、同期開始従動軸位置ＳＰＤ、ギヤ比ＧＲ、目標速度ＶＴＤ、目標加速度ＡＴＤ、目標減速度ＢＴＤの指令値を入力する（ステップＳ１０１）。
【００９０】
次に、スケジュール部６３は、従動軸の追いかけ動作の開始を指示する（ステップＳ１０２）。
【００９１】
検出部６５は、開始を指示された時点Ｔｓにおいて、主軸用のエンコーダ６７からのパルスのカウント値（位置）を取得して主軸の位置ＰＭ（Ｔｓ）とし、取得したカウント値の時間微分（時間差分）から主軸の速度ＶＭ（Ｔｓ）を算出する。また、検出部６５は、開始を指示された時点Ｔｓにおいて、従動軸用のエンコーダ６８からのパルスのカウント値（位置）を取得して従動軸の位置ＰＤ（Ｔｓ）とし、取得したカウント値の時間微分（時間差分）から従動軸の速度ＶＤ（Ｔｓ）を算出する。
【００９２】
制御部６６は、同期開始主軸位置ＳＰＭと主軸の位置ＰＭ（Ｔｓ）とから、同期開始までの主軸の移動量ＳＳＰＭを算出し、同期開始従動軸位置ＳＰＤと従動軸の位置ＰＤ（Ｔｓ）とから、同期開始までの従動軸の移動量ＳＳＰＤを算出する。制御部６６は、従動軸の移動量ＳＳＰＤを主軸の移動量ＳＳＰＭで除算して、移動量比ＰＲを算出する。
【００９３】
さらに、制御部６６は、主軸の速度ＶＭ（Ｔｓ）と、同期開始までの主軸の移動量ＳＳＰＭとから同期開始時点Ｔｅを特定する。さらに、制御部６６は、同期開始時点Ｔｅまでに従動軸が移動量ＳＳＰＤだけ移動するように、目標速度ＶＴＤを維持しつつ、目標加速度ＡＴＤおよび目標減速度ＢＴＤの値をそれぞれＡＴＤ′およびＢＴＤ′に修正する（ステップＳ２０３）。
【００９４】
次に、カム曲線作成部６４は、目標速度ＶＴＤ、目標加速度ＡＴＤ′、目標減速度ＢＴＤ′、追いつき動作開始時の従動軸の速度ＶＤ（Ｔｓ）、追いつき動作開始時の主軸の速度ＶＭ（Ｔｓ）にギヤ比ＧＲを掛けた速度を用いて、図８に示すようなカム曲線（速度プロファイル）を作成する（ステップＳ２０４）。
【００９５】
検出部６５は、主軸用のエンコーダ６７からのパルスのカウント値（位置）を取得して主軸の位置ＰＭ（ｉ）とする。また、検出部６５は、従動軸用のエンコーダ６８からのパルスのカウント値（位置）を取得して従動軸の位置ＰＤ（ｉ）とする（ステップＳ１０５）。
【００９６】
スケジュール部６３は、検出した主軸の位置ＰＭ（ｉ）が同期開始主軸位置ＳＰＭと同じであり、かつ検出した従動軸の位置ＰＤ（ｉ）が同期開始従動軸位置ＳＰＤと同じである条件を満足しない場合には（ステップＳ１０６でＹＥＳ）、以下のステップによって追いかけ動作を続行する。
【００９７】
制御部６６は、カム曲線と、追いかけ動作開始からの主軸の移動量Ｐ（ＰＭ（ｉ）−ＰＭ（Ｔｓ））に基づいて、現在のモーション制御周期での従動軸の速度指令位置および位置指令値を算出する。具体的には、制御部６６は、カム曲線を積分した値がＰ×ＰＲとなるときの従動軸の速度を従動軸の速度指令値として算出する。さらに、制御部６６は、従動軸の速度指令値を積分して、積分した値を従動軸の位置指令値とする（ステップＳ２０７）。
【００９８】
制御部６６は、従動軸用のサーボモータドライバ７０に速度指令値および位置指令値を出力する（ステップＳ１０８）。
【００９９】
スケジュール部６３は、次のモーション制御サイクルが到着するまで待機するように指示する。次のモーション制御サイクルが到着したら、ｉをインクリメントする（ステップＳ１０９）。
【０１００】
一方、検出した主軸の位置ＰＭ（ｉ）が同期開始主軸位置ＳＰＭと同じであり、かつ検出した従動軸の位置ＰＤ（ｉ）が同期開始従動軸位置ＳＰＤと同じである条件を満足する場合には（ステップＳ１０６でＹＥＳ）、スケジュール部６３は、追いかけ動作を終了し、以下のステップによってギヤ動作を実行させる。
【０１０１】
検出部６５は、主軸用のエンコーダ６７からのパルスのカウント値（位置）を取得し、取得したカウント値の時間微分（時間差分）から主軸の速度ＶＭ（ｉ）を算出する（ステップＳ１１０）。
【０１０２】
制御部６６は、検出した主軸の速度ＶＭ（ｉ）とギヤ比ＧＲとを乗算することによって、従動軸の速度指令値を算出する。さらに、制御部６６は、従動軸の速度指令値を積分して、積分した値を従動軸の位置指令値とする（ステップＳ１１１）。
【０１０３】
制御部６６は、従動軸用のサーボモータドライバ７０に速度指令値および位置指令値を出力する（ステップＳ１１２）。
【０１０４】
スケジュール部６３は、次のモーション制御サイクルが到着するまで待機するように指示する（ステップＳ１１３）。
【０１０５】
スケジュール部６３は、ギア動作終了の終了条件が成立するまで（ステップＳ１１４でＹＥＳ）、ステップＳ１１０〜Ｓ１１３のギヤ動作を続行させる。
【０１０６】
以上の動作によって、主軸の速度が追いかけ動作開始時の速度ＶＭ（Ｔｓ）から変化しないときには、時点Ｔｅにおいて主軸の移動量がＳＳＰＭとなり、従動軸の移動量がＳＳＰＤとなり、時点Ｔｅの後から同期が開始される。
【０１０７】
一方、主軸の速度が追いかけ動作開始時の速度ＶＭ（Ｔｓ）から早くなる方に変化したときには、時点Ｔｅよりも前の時点Ｔａにおいて主軸の移動量がＳＳＰＭとなり、従動軸の移動量がＳＳＰＤとなり、時点Ｔａの後から同期が開始される。
【０１０８】
また、主軸の速度が追いかけ動作開始時の速度ＶＭ（Ｔｓ）から遅くなる方に変化したときには、時点Ｔｅよりも後の時点Ｔｂにおいて主軸の移動量がＳＳＰＭとなり、従動軸の移動量がＳＳＰＤとなり、時点Ｔｂの後から同期が開始される。
【０１０９】
本発明は、上記の実施形態に限定されるものではなく、たとえば以下のような変形例も含む。
【０１１０】
［変形例１］
なお、本実施の形態では、図に示すように、カム曲線は、直線で加速し、その後定速となり、その後減速するものであったが、これに限定するものではない。カム曲線として、たとえば、一般的に知られているサイクロイド曲線やトラペクロイド曲線などを用いてもよい。カム曲線の文献例としては  「Cam Design and Manufacturing Handbook Second Edition" (Robert L.Norton著  INDUSTRIAL PRESS INC 2009)」や、「機械技術者のための実用カム機構学」（西岡雅夫著  日刊工業新聞社  2003などがある）。また、カム曲線を多項式で表現することとしてもよい。
【０１１１】
［変形例２］
主軸の回転方向と逆方向に同期開始従動軸位置が存在した場合には、追いかけ動作は前述のカム曲線に従って主軸と逆方向に動作し、同期開始後は主軸の回転方向に動作する。
【０１１２】
［変形例３］
追いかけ動作中に主軸で異常が発生して停止した場合や、主軸に対して停止指令が出された場合であっても、従動軸は前述のカム曲線に従って同期関係を継続した状態を保つ。
【０１１３】
［変形例４］
同期開始主軸位置や同期開始従動軸位置が位置カウンタ１周分を越える場合に、ユーザプログラムに対して異常を発報するか、多回転とするかをユーザが指定できるようにしてもよい。
【０１１４】
たとえば、位置カウンタが0〜360degの場合に、ユーザプログラムから同期開始主軸位置として720degが指定された場合に、ユーザプログラムに対して異常を通知するか、２回転後の0degから同期を開始するかを指定できるようにしてもよい。
【０１１５】
［変形例５］
追いかけ動作中に、図５において、主軸の速度が大きく変化し、予め指定された閾値を越えた場合には、その時点での主軸の速度をＶＭ（Ｔｓ１）としたときに、同期開始位置での従動軸の目標速度をＶＭ（Ｔｓ）×ＧＲからＶＭ（Ｔｓ１）×ＧＲに変えて、カム曲線の演算をやり直すこととしてもよい。
【０１１６】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１１７】
１  ＰＬＣ、２  フィールドネットワーク、３，６９，７０  サーボモータドライバ、４  サーボモータ、５  ターミナル、６  検出スイッチ、７  リレー、８  ＰＬＣサポート装置、１０  接続ケーブル、１１  システムバス、１２  電源ユニット、１３，１４，５３  ＩＯユニット、１５  特殊ユニット、５１  ターミナルバス、５２  通信カプラ、５３  ＩＯユニット、６１  同期制御装置、６２  ユーザ指令部、６３  スケジュール部、６４  カム曲線作成部、６５  検出部、６６  制御部、６７，６８  エンコーダ、１００  マイクロプロセッサ、１０２  チップセット、１０４  メインメモリ、１０６  不揮発性メモリ、１０８  システムタイマ、１１０  コネクタ、１２０  システムバスコントローラ、１２２，１４２  制御回路、１２４  システムバス制御回路、１２６，１４６  バッファメモリ、１３０  システムバスコネクタ、１４０  フィールドネットワークコントローラ、１４４  フィールドネットワーク制御回路、２００  リアルタイムＯＳ、２１０，２２０  システムプログラム、２１２  スケジューラプログラム、２３０  制御プログラム、２３２  シーケンス命令演算プログラム、２３４  モーション演算プログラム、ＳＹＳ  システム。
【図１】
0005803337.tif 000002
【図２】
0005803337.tif 000003
【図３】
0005803337.tif 000004
【図４】
0005803337.tif 000005
【図５】
0005803337.tif 000006
【図６】
0005803337.tif 000007
【図７】
0005803337.tif 000008
【図８】
0005803337.tif 000009