(57)【要約】【課題】  通常のＮＣプログラム（ＥＩＡフォーマット）に対しても学習制御を適用できるようにした数値制御装置を得る。【解決手段】  ＮＣプログラムの指令の内、同一動作パターンが実行され学習制御可能な指令を予め記憶しておく。プログラムを読み学習制御可能指令であれば(a10)、このブロックに識別コードと学習制御オンのデータを付加する(a11,a12)。該ブロックの実行処理では、サーボシステムにこれらデータが送られ学習制御が開始される。また学習制御可能指令が読込まれると(a7)、学習制御オフのデータがブロックに付加され(a8)、サーボシステムに出力されて、学習制御を終了させる。同一動作パターンが発生する個所では自動的に学習制御がなされ、その学習制御の補正データは識別コードと共に記憶される。プログラムの再実行時には識別コードに基づいて補正データ使用され学習制御がなされる。【選択図】          図３
2005122647.tif 000002
【特許請求の範囲】
【請求項１】
同一動作パターンにおける位置偏差に基づく補正データを作成して記憶し、該補正データに基づいて同一動作パターン実行時の位置偏差を補正する学習制御機能を有する数値制御装置において、
ＮＣプログラムでの指令を実行し、同一動作パターンが発生する発生開始個所から学習制御を実行し、同一動作パターンが終了する個所で学習制御を停止するようにしたことを特徴とする数値制御装置。
【請求項２】
ＮＣプログラムでの指令のうち、同一動作パターンが発生する学習制御可能な指令か若しくは学習制御不可能な指令かを予め記憶しておき、該指令に基づいて同一動作パターンが発生する発生開始個所か、及び学習制御の停止個所かを自動的に判別して、ＮＣプログラムの内同一動作パターン個所に対して学習制御を行う請求項１に記載の数値制御装置。
【請求項３】
学習制御開始位置及び学習制御終了位置を指令するコードを設け、ＮＣプログラム中に、該コードを用いて学習制御開始位置及び学習制御終了位置を指令し、該指令コードに基づいて学習制御開始位置から学習制御終了位置まで学習制御を行うようにした請求項１に記載の数値制御装置。
【請求項４】
ＮＣプログラムを実行し、発生する複数種の同一動作パターンに対して識別コードを付して学習制御による補正データを記憶し、該識別コードに基づいて、学習制御の補正データを選択して学習制御を各々実行する請求項１乃至３の内いずれか１項に記載の数値制御装置。
【請求項５】
学習制御開始時及び学習制御終了時に、位置偏差を補正する補正値を学習制御開始時には段階的に増大させ、学習制御終了時には段階的に減少させるようにした請求項１乃至４の内いずれか１項に記載の数値制御装置。
【請求項６】
学習制御により求められた補正値に対して、該補正値に乗じる係数を段階的に変えて、該係数を補正値に掛けた値で位置偏差を補正する請求項５に記載の数値制御装置。
【請求項７】
加工条件が変更されたとき、学習制御の補正データを自動的に無効にする請求項１乃至６の内いずれか１項に記載の数値制御装置。
【請求項８】
精度優先時における学習制御の設定値と加工速度優先時の学習制御の設定値を有し、精度優先か加工速度優先かの選択を可能とした請求項１乃至７の内いずれか１項に記載の数値制御装置。
【請求項９】
１種類の加工物に対して各々加工条件を変えて１つのＮＣプログラムを実行して得られた学習制御の補正データをそれぞれ記憶しておき、いずれかの補正データを選択して学習制御を実施するようにした請求項１乃至８の内いずれか１項に記載の数値制御装置。
【請求項１０】
学習制御の補正データと共にその学習制御を行ったＮＣプログラムの情報を記憶しておき、ＮＣプログラム選択時に自動的に学習制御の補正データをも選択し設定するようにした請求項１乃至９の内いずれか１項に記載の数値制御装置。
【請求項１１】
学習制御の状態を外部に通知する機能を備える請求項１乃至１０の内いずれか１項に記載の数値制御装置。
【請求項１２】
前記ＮＣプログラムの一部若しくは全てが時間と可動軸の位置又は主軸の回転角と可動軸の位置の関係を記述したプログラムである請求項１乃至１０の内いずれか１項に記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工作機械等を制御する数値制御装置に関する。特に学習制御を実行する数値制御装置に関する。
【背景技術】
【０００２】
同一指令パターンを繰り返し指令して同一動作パターンを実行させて加工等を行う場合において、加工精度を向上させるために、学習制御が採用されている。この学習制御は、同一指令パターンを指令して同一動作パターンが発生する１パターンを１周期とし、位置偏差をサンプリングし該位置偏差に基づいて１周期分の補正データを記憶し、同一指令パターンにおける対応するサンプリング時の補正データを当該サンプリング時の位置偏差に加算して補正するもので、この学習制御を繰り替えし実行して補正値を順次更新し、最終的には位置偏差を「０」近傍に収束するように制御するものである。位置偏差が「０」近傍に収束することから、高い加工精度を得ることができるものである（例えば、特許文献１参照）。
【０００３】
【特許文献１】特開平６−３０９０２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述したように、学習制御は、同一指令パターンにより同一動作パターンが発生するような加工を繰り返し実行するもので、高精度の加工を行うことができるが、従来、この学習制御は同一動作パターンが生じるバイナリ運転に対してのみ適用されており、通常のＮＣプログラム（ＥＩＡフォーマット）による運転では、同一のＮＣプログラムを実行しても同一の動作パターンが生じないことから、ＮＣプログラムに対しては適用されていない。  
そこで、本発明は、通常のＮＣプログラム（ＥＩＡフォーマット）に対しても学習制御を適用できるようにした数値制御装置を提供することにある。
【課題を解決するための手段】
【０００５】
本願請求項１に係わる発明は、同一動作パターンにおける位置偏差に基づく補正データを作成して記憶し、該補正データに基づいて同一動作パターン実行時の位置偏差を補正する学習制御機能を有する数値制御装置において、ＮＣプログラムでの指令を実行し、同一動作パターンが発生する発生開始個所から学習制御を実行し、同一動作パターンが終了する個所で学習制御を停止するようにしたものである。請求項２に係わる発明は、ＮＣプログラムでの指令のうち、同一動作パターンが発生する学習制御可能な指令か若しくは学習制御不可能な指令かを予め記憶しておき、該指令に基づいて同一動作パターンが発生する発生開始個所か、及び学習制御の停止個所かを自動的に判別して、ＮＣプログラムの内同一動作パターン個所に対して学習制御を行うようにしたものである。また、請求項３に係わる発明は、学習制御開始位置及び学習制御終了位置を指令するコードを設け、ＮＣプログラム中に、該コードを用いて学習制御開始位置及び学習制御終了位置を指令し、該指令コードに基づいて学習制御開始位置から学習制御終了位置まで学習制御を行うようにしたものである。  
さらに、請求項４に係わる発明は、上述の各発明に対して、ＮＣプログラムを実行し、発生する複数種の同一動作パターンに対して識別コードを付して学習制御による補正データを記憶し、該識別コードに基づいて、学習制御の補正データを選択して学習制御を各々実行するようにしたものである。また、請求項５に係わる発明は、さらに、学習制御開始時及び学習制御終了時に、位置偏差を補正する補正値を学習制御開始時には段階的に増大させ、学習制御終了時には段階的に減少させるようにして、学習制御の開始時と終了時に生じる機械的ショックを緩和したものである。その一方法として、請求項６に係わる発明は、学習制御により求められた補正値に対して、該補正値に乗じる係数を段階的に変えて、該係数を補正値に掛けた値で位置偏差を補正するようにしたものである。
【０００６】
また、請求項７に係わる発明は、上述した各発明において、加工条件が変更されたとき、学習制御の補正データを自動的に無効にするようにしたものである。また、請求項８に係わる発明は、精度優先時における学習制御の設定値と加工速度優先時の学習制御の設定値を有し、精度優先か加工速度優先かの選択を可能としたものである。さらに、請求項９に係わる発明は、１種類の加工物に対して各々加工条件を変えて１つのＮＣプログラムを実行して得られた学習制御の補正データをそれぞれ記憶しておき、いずれかの補正データを選択して学習制御を実施するようにした。また、請求項１０に係わる発明は、学習制御の補正データと共にその学習制御を行ったＮＣプログラムの情報を記憶しておき、ＮＣプログラム選択時に自動的に学習制御の補正データをも選択し設定するようにした。さらに、請求項１１に係わる発明は、学習制御の状態を外部に通知する機能を備えるようにした。また、請求項１２に係わる発明は、ＮＣプログラムの一部若しくは全てが時間と可動軸の位置又は主軸の回転角と可動軸の位置の関係を記述したプログラムに上述した各発明を適用する数値制御装置である。
【発明の効果】
【０００７】
通常のＮＣプログラム（ＥＩＡフォーマット）による運転時において、同一動作パターンが生じる区間においては、学習制御がなされることから、通常のＮＣプログラムによる加工においても位置偏差を小さくした精度の高い加工を行うことができる。
【発明を実施するための最良の形態】
【０００８】
図１は、本発明の一実施形態の数値制御装置の概要図である。数値制御装置のハードウェア構成は従来の数値制御装置と同一であることから簡単に図示している。数値制御装置１０は、大きく分けてＣＮＣシステム１１とサーボシステム１２で構成され、該ＣＮＣシステム１１とサーボシステム１２との間はインタフェース１７を介して接続されている。ＣＮＣシステム１１には数値制御用のプロセッサ１３及びＲＯＭ，ＲＡＭ，不揮発性ＲＡＭ等で構成されたメモリ１４、ＣＲＴや液晶で構成された表示器とキーボート等の入力機器からなる表示器／入力機器１８を備えている。又、インタフェースを介して外部メモリ１９にも接続されるように構成されている。
【０００９】
サーボシステム１２は、工作機械等の各軸サーボモータの位置、速度、電流を制御するサーボ回路を構成するもので、さらに主軸の制御回路を含めている。これら各軸サーボ
モータを制御するサーボ制御や主軸の制御は、ソフトウェアによる制御がなされており、サーボシステム１２としては、サーボ用のプロセッサ１５、ＲＯＭ，ＲＡＭ等で構成されたメモリ１６を有している。このサーボシステム１２にはサーボアンプ２０を介して各軸のサーボモータＭ１〜Ｍ４に接続されている。又主軸アンプ２１を介して主軸モータＳＭが接続されている。
【００１０】
ＣＮＣシステム１１のプロセッサ１３は、外部メモリ１９又は表示器／入力機器１８を介して入力されメモリ１４に記憶されているＮＣプログラム読み出し実行し、各ブロックで指令された移動指令に基づいて各軸への分配補間処理して各軸への移動指令をサーボシステム１２にインタフェース１７を介して引き渡す。サーボシステム１２のプロセッサ１５は、この移動指令と、各サーボモータ等に設けられた位置・速度検出器からの位置、速度のフィードバック信号に基づいて、さらには電流フィードバック信号に基づいて位置、速度、電流のループ処理を行い、サーボアンプ２０を介して各軸サーボモータＭ１〜Ｍ４を駆動制御する。また、同様に主軸モータＳＭに対しても速度のフィードバック制御がなされ、主軸速度をＮＣプログラム指令値に保持する。
【００１１】
上述した数値制御装置１０の構成、作用は、従来の数値制御装置と同一である。そして、さらに、本実施形態では、サーボシステム１２のプロセッサ１５は、学習制御の処理をも実施するものである。  
図２は、サーボシステム１２において、プロセッサ１５が実施する各サーボモータＭ１〜Ｍ４を制御するサーボ処理のブロック図の一部である。特にこの実施形態では学習制御を行う学習コントローラ３０が設けられている。この学習コントローラ３０も従来から周知のものであるが、この実施形態では、学習コントローラ３０から出力される補正値に対し段階的制御をするための係数（段階値）αの項３５が設けられている点で従来の学習コントローラと相違するものである。
【００１２】
学習制御を実施しないときは、ＣＮＣシステム１１から指令された位置指令から位置・速度検出器からフィードバックされてくる位置フィードバック量を減算器３６で減じて位置偏差を求め、該位置偏差に位置ループゲインＫｐを乗じて速度指令を求め、速度制御部に指令する。速度制御部ではこの速度指令とフィードバックされて来る速度フィードバック量に基づいて比例、積分等の処理を行って電流指令を電流制御部へ出力し電流制御部では電流のループ制御を行ってサーボアンプ２０を介してサーボモータＭ１〜Ｍ４を駆動制御する。
【００１３】
学習コントローラ３０は、加算器３１、制御系を安定化するために設けられた帯域フィルタ３２，同一指令パターンの１周期分のサンプリング数に対応する数の補正データを記憶する遅れ要素メモリ３３，制御対象の位相遅れ、ゲイン低下を補償する動特性補正要素３４、さらに係数（段階値）αの項３５で構成されている。  
サンプリング周期（この位置、速度ループ処理周期）毎に求められる位置偏差を求めるると共に、同一指令パターンにおける当該サンプリング時に対応する補正データを遅れ要素メモリ３３から読み出し、動特性補償要素３４の処理を行い係数（段階値）αを乗じて（後述する段階処理をしないときはこの係数（段階値）αは１である。若しくは、この乗数αの項３５は設けなくてもよい）、学習コントローラ３０の出力（補正値）とし、加算器３７で、この学習コントローラ３０から出力された補正値を位置偏差に加算し位置ループゲインＫｐを乗じて速度指令を求め、速度制御部３９に入力する。
【００１４】
一方、当該サンプリング時に読み出した補正データを加算器３１で位置偏差に加算し、帯域制限フィルタ３２の処理を行った後、遅れ要素メモリ３３の記憶データを１つシフトさせて、この帯域制限フィルタ３２の処理を行って得られた補正データを最新のデータを記憶するメモリに格納する。
【００１５】
以上のようにして、学習制御においては先に実施した該同一指令パターンの処理における各サンプリング時の位置偏差に基づいて求められた補正データの内、当該同一指令パターンを実行するときの当該サンプリング時に対応する補正データを読み出して位置偏差を補正し、かつ、次の同一指令パターンを実行するときの当該サンプリング時に対応する補正データとして遅れ要素メモリに格納してこの補正データを更新するものであり、同一指令パターンにより同一動作パターンが生じることが前提としているものである。
【００１６】
しかし，通常のＮＣプログラム（ＥＩＡフォーマット）を繰り返し実行する場合、同一動作パターンが生じるとは限らない。ねじ切り加工や、Ｍコード等の指令がある場合には、ＮＣプログラムの各回の実行時において動作タイミングがずれ、各ＮＣプログラムの実行時に同一動作パターンで実行されないものとなる。一方、ＮＣプログラムの所定区間においては、連続した指令で各プログラム実行時において同一動作パターンが生じる区間がある。例えば、直線補間指令や円弧補間指令等が連続する区間では、各ＮＣプログラムの実行時においては、この区間における加工タイミングは加工条件が変わらない限り同一であり、同一動作パターンが発生する。そこで、本発明は、ＮＣプログラムで実行される処理において、同一動作パターンが実行される区間に対してのみ学習制御を自動的に若しくは、プログラム指令によって行うようにしたものである。
まず、ＮＣプログラムの指令によって、学習制御可能な指令か否かを判別して学習制御を行う区間を自動的に決定する実施形態について説明する。
【００１７】
予め、指令により処理を開始してから、同一タイミングで同一指令（動作）のパターンが実行されるようなＮＣプログラムの指令を学習制御可能指令として設定記憶させておく。例えば、直線補間や円弧補間等の指令は、これらの指令がされ、これらの指令が連続する区間では、同一の指令パターンが同一タイミングで実行され、同一動作パターンがなされるものであるから、これらの指令を学習制御可能指令として設定記憶させておく。逆に、学習制御不可能な指令を設定し記憶させておき、設定記憶されていない指令は学習制御可能指令と判断するようにしてもよい。
【００１８】
図３は、ＣＮＣシステム１１のプロセッサ１３が前処理周期毎に実施する前処理のフローチャートである。まずＮＣプログラムから１ブロックを読み込み（ステップａ１）、該ブロックで指令された指令がプログラムエンドか判断し（ステップａ２）、プログラムエンドでなければ、加工条件変更の指令が入力されているか判断する（ステップａ３）。プログラムや各種パラメータ、オフセット、送り速度のオーバライド値等が変更されて加工条件が変わったような場合には、指令パターン（動作パターン）が異なることになるから、それまでに行っていた学習制御による補正データは意味を持たないので、ステップａ４で学習コントローラ３０の遅れ要素メモリ３３に記憶する補正データをクリアするようサーボシステム１２に出力し、記憶する学習制御による補正データをクリアさせる。
【００１９】
加工条件の変更がなければ、学習制御自動判定を有効にするがパラメータ設定されているか判断し（ステップａ５）、学習制御自動判定モードにパラメータ設定されていなければ、ステップａ９に移行し、当該ブロックの解析処理を行い（ステップａ９）、ステップａ１に戻る。以下この処理を繰り返す。以上は、学習制御実施を自動判定して学習制御を行わないときの例である。
【００２０】
一方、学習制御自動判定を有効にするパラメータが設定されているときには、学習制御オンを示すフラグが立っていて学習制御中か否かを判別し（ステップａ６）、学習制御中でなければ、ステップａ１で読み込んだ指令が学習制御可能の指令か判断する（ステップａ１０）。すなわち、設定されている学習制御可能な指令の中の１つかを判断する。学習制御可能の指令でなければ、ステップａ９に移行し、前述した通常の処理を実行する。
【００２１】
学習制御可能の指令であれば、識別コードを計数するカウンタの値に１加算しこの指令に対する識別コードとしブロックと共に記憶する（ステップａ１１）。なお、識別コードを計数するカウンタは初期設定で「０」にセットされている。そして学習制御オンのフラグを立て当該ブロックと共に学習制御オンを記憶し（ステップａ１２）、ステップａ９に移行し、このブロックに対する解析処理を行い、ステップａ１に戻る。そして、前述した処理を行うが、ステップａ６では、学習制御オンのフラグが立っているから、ステップａ６からステップａ７に移行し、ステップａ１で読み出した指令が学習制御不可能な指令か否か判断する。即ち、読み込んだ指令が、学習制御可能な指令として設定されている指令か否か判断する。学習制御不可能な指令でなければ（学習制御可能な指令）、ステップａ９に移行し、学習制御オンの状態を維持する。
【００２２】
以下、学習制御不可能な指令が読み込まれない限り、学習制御オンの状態を維持する。そして、ステップａ７で読み込まれた指令が学習制御不可能な指令であると判断されたときには、学習制御オンを示すフラグをおろし、当該ブロックと共に学習制御オフを記憶する（ステップａ８）、ステップａ９に移行する。
【００２３】
以下、次に学習制御可能な指令が読み込まれるまで、ステップａ１〜ａ６、ａ１０，ａ９の処理を繰り返し実行することになる。そして再び学習制御可能な指令が読み込まれるとステップａ１０からステップａ１１，ａ１２の処理を行い、当該ブロックと共に識別コード及び学習制御オンを記憶し、学習制御オンのフラグを立て、前処理を実行する。各ブロックを読み込んでいく内に学習制御不可能な指令が読み込まれると（ステップａ７）、学習制御オンのフラグを下ろし、かつこのブロックと共に学習制御オフを記憶する。
【００２４】
以上のようにして、ＮＣプログラムの前処理段階で、学習制御可能な指令が読み込まれると、識別コード、学習制御オンが当該ブロックと共に記憶され、学習制御不可能な指令が読み込まれると当該ブロックと共に学習制御オフが記憶されることになる。  
そしてＮＣプログラムよりプログラムエンドが読み込まれると、識別コードを計数するカウンタをクリアし（ステップａ１３）、このＮＣプログラムの前処理を終了する。
【００２５】
図４は、ＣＮＣシステム１１のプロセッサ１３が実行処理周期毎に実行する実行処理のフローチャートで、前述したように前処理の段階で、ＮＣプログラムの指令が解析され実行可能状態にされたデータに基づいて、各軸への分配補間処理が実施される。この実施形態では、学習制御開始時と終了時に発生するおそれのある機械的ショックを緩和するために、学習制御の影響を段階的に増加、又は減少させるような処理を行うか否か選択できるものとしている。即ち、図２において、段階値αの値を段階的に変える処理を行うか、「１」に固定するか（又はこの段階値αの項が内学習コントローラの処理）の選択を行うことができるようにしている。
【００２６】
この段階的に学習制御の影響を変える点に付いてまず説明する。  
図６は、この段階的に学習制御の影響を変える理由とその動作概要説明である。  
図６（ａ）に示すような位置指令が出力されたとする（横軸は時間、縦軸は指令移動量であり、指令速度に対応する）。学習制御を行わないときでは、図６（ｂ）に示すような位置偏差が生じたものとする（横軸は時間、縦軸は位置偏差）。そして、図６（ｃ）に示すように、学習制御をオンとしたとする。学習制御は、同一の指令パターンにおいて、先に実施したパターンの動作において生じた位置偏差に基づく値を補正データとして当該パターンを実行するときの位置偏差を補正（図２参照）するものであるから、位置偏差が「０」近傍に収斂するものであるから、図６（ｄ）に示すように学習制御がオンとなったとき、位置偏差は急速に小さくなり、又、学習制御がオフとなったとき急激に位置偏差が増大する。速度指令は位置偏差に位置ループゲインＫｐを乗じたものであるから、位置偏差が急激に変化すれば、速度指令も急激に変化し、それに追従しようとして機械にショックが生じることになる。
【００２７】
そこで、本実施形態では、図６（ｅ）に示すように、学習制御の影響を段階的に変化させるようにしたものである。図２に示すように学習コントローラ３０に係数（段階値）αの項を設け、この係数（段階値）αの値を段階的に増大又は減少させることによって学習制御の補正の影響を段階的に作用させるようにしたものである。その結果、図６（ｆ）に示すように、位置偏差は段階的に減少、又は増大し、ショックを緩和させるものである。
【００２８】
図４に示す実行処理に戻って、ＣＮＣシステム１１のプロセッサ１３は、図３で示される前処理によって解析されたブロックのデータに基づいて従来と同様に分配処理を行う（ステップｂ１）、次に段階的補正を有効にするようにパラメータが設定されているか否か判断し（ステップｂ２）、段階的補正をするようにパラメータが設定されていなければ、ステップｂ１３に移行し、従来の通常と同じように分配処理したデータをサーボシステム１２に出力する。ただし、ブロックに識別コード、及び学習制御オン、オフの信号が付加されている場合には、この識別コード、学習制御オン又はオフの信号もサーボシステム１２に送出する。
【００２９】
一方、段階的補正が有効となっている場合には、解析されたブロックに学習制御オフのデータが付されていたか判断し（ステップｂ３）、学習制御オフのデータが読み込まれないと、次に学習制御オンのデータが読み込まれたか判断し（ステップｂ４）、このデータも読み込まれなければ、学習制御中を示すフラグＦ１が「１」か判断し（ステップｂ５）、このフラグＦ１が「１」でなければ、ステップｂ１３に移行する。即ち、まだ学習制御可能な指令が読み込まれていない状態であり、従来の通常の処理と同様にステップｂ１で分配処理したデータをサーボシステム１２に出力する。
【００３０】
一方、ステップｂ４で学習制御オンのデータが読み込まれたと判断されたときには、学習制御オン中を示すフラグＦ１を「１」にセットし（なお、このフラグＦ１は初期設定で「０」に設定されている）、タイマＴ１をリセットしてスタートさせる（ステップｂ１４）。また、段階的制御のために設定されている時間をタイマＴ２にセットし（ステップｂ１５）、ステップｂ１３に移行する。このときは、学習制御オンのデータが読み込まれたときであるから、ステップｂ１３の処理では、この学習制御オンのデータ及び該データと共に記憶されている識別コードをステップｂ１で分配処理したデータと共に、サーボシステム１２に出力する。
【００３１】
そして、次の周期では、学習制御中を示すフラグＦ１が「１」にセットされているから、ステップｂ５からステップｂ６に移行し、タイマＴ１での計時時間が現在実行中の学習制御の識別コードに対応して記憶されているオフ段階開始位置に達しているか判断する。このオフ段階開始位置は後述するステップｂ１７，ｂ１８の処理で識別コードに対応させて記憶されるものであり、ＮＣプログラムの１回目の実行時（初めての実行時）には、記憶されておらず、このステップｂ６の判断は「Ｎｏ」となりステップｂ７に進む。
【００３２】
ステップｂ７では、ステップｂ１５でタイマＴ２設定した時間が経過して該タイマＴ２がタイムアップしたか判断し、タイムアップしてなければ、タイマＴ２から設定されている所定量を減算する（ステップｂ８）。次に、学習制御のオフ時の段階的終了処理中を示すフラグＦ２が１か判断する。なお、このフラグＦ２は初期設定で「０」に設定されており、最初はゼロであることから、ステップｂ１０に進み、オン時の段階的制御の段階値αを算出する。この段階値αの算出は例えば、ステップｂ１５で設定した設定値をｔｓとし、ステップｂ８で減じられたタイマＴ２の現在値をｔとすると、（ｔｓ−ｔ）／ｔｓとして求める。
【００３３】
こうして求めた段階値αを学習カウンタ３０の補正データに乗じる値としてサーボシステム１２に送出し設定する。そして、ステップｂ１３に移行して分配処理データをサーボシステム１２に出力する。
【００３４】
以下、各周期毎、ステップｂ１〜ｂ１３の処理を行い、段階値αを徐々に増大させ、段階値αが「１」となり、タイマＴ２がタイムアップすると、ステップｂ７からステップｂ１３に移行し、段階値αの出力は停止され、段階値αは「１」に固定される。以後はステップｂ１〜ステップｂ７、ステップｂ１３の処理が繰り返される。そして、ステップｂ３で、学習制御のオフのデータが読み込まれたことが検出されると、ステップｂ１７に移行し、タイマＴ１の現在値から設定されている時間を減じて、次回からのＮＣプログラムの実行時に利用するための学習制御の段階的補正におけるオフ時の段階的制御を開始する位置（学習制御を開始してからの経過時間）算出し（ステップｂ１７）、求めたオフ時段階開始位置を識別コードと共に記憶する（ステップｂ１８）。又、フラグＦ１，Ｆ２を「０」にセットする。そして、ステップｂ１３に移行し、分配処理データを出力するが、この場合学習制御オフのデータがサーボシステム１２に出力される。
【００３５】
ステップｂ１８でオフ時段階開始位置を識別コードと共に記憶されることになるから、次回のＮＣプログラムの実行時には、ステップｂ６で、現在の識別コードに対応するオフ時段階開始位置にタイマＴ１の値が達したかを判断し、達したときには、段階制御オフ中を示すフラグＦ２を「１」にセットし（ステップｂ１６）、設定時間をタイマＴ２にセットする（ステップｂ１５）。そして次の周期からは、ステップｂ１〜ステップｂ９の処理を行った後、該ステップｂ９で、フラグＦ２が「１」であることが検出されることから、ステップｂ１１に移行して、オフ時の段階値αを算出し、サーボシステム１２に出力する（ステップｂ１２）。
【００３６】
このオフ時の段階値αの算出は、例えば、ステップｂ１５で設定した設定値をｔｓとし、ステップｂ８で減じられたタイマＴ２の現在値をｔとすると、ｔ／ｔｓとして求める。そして、学習制御オフのデータが読み出されると、ステップｂ３からステップｂ１７に移行し前述した処理を行うことになる。  
以上のようにして段階的な学習制御の補正値を段階的に増大、又は減少するための段階値αが求められ、サーボシステム１２に送られることになる。
【００３７】
一方、サーボシステム１２のプロセッサ１５は、所定周期（位置、速度ループ処理周期）毎に図５に示す処理を実行する。  
まず、ＣＮＣシステム１１から送られてきたデータに学習制御オンのデータがあるか判断し（ステップｃ１）学習制御オンのデータが送られてきてなければ、学習制御オフのデータが送られてきているか判断し（ステップｃ１２）、このデータも送られてきてなければ、送られてきている指令位置と位置のフィードバック量より従来と同様の位置偏差εを求める処理を行い（ステップｃ４）、学習中オンフラグが「１」か判断し（ステップｃ５）、「１」ではなければ、従来と同様にこの位置偏差εに位置ループゲインＫｐを乗じて速度指令Ｖｃを求め（ステップｃ１０）、該速度指令Ｖｃを速度制御部に出力する。速度制御部ではこの速度指令Ｖｃと速度フィードバック信号に基づいて、比例、積分等の速度ループ処理を実行する。この点従来と同様であることから説明を省略する。
【００３８】
以上は、学習制御が行われないときのサーボシステム１２の位置ループ処理である。一方、ステップｃ１で学習制御オンのデータが読み込まれると、該データと共に送られてきている識別コードに対応して記憶している１組みの補正データを読み込む（ステップｃ２）。即ち、図２において学習コントローラ３０の遅れ要素メモリ３３に記憶される１組の補正データであり、識別コード毎に先入れ先出し方式（ＦＩＦＯ）で記憶されているものである。ＮＣプログラムの１回目の実行時（最初の実行時）には、まだ、１組の補正データが作成されていないので、この場合には、識別コードに対して補正データを記憶するメモリが用意されるだけである。次に学習中オンフラグを「１」にして（ステップｃ３）、ステップｃ４に進む。
【００３９】
ステップｃ４で位置偏差を求め、学習中オンフラグが「１」にセットされているから、ステップｃ２で読み込んだ補正データから最初の補正データ（記憶するデータの内、１番先に記憶したデータ）を読み出し、従来と同様に動特性補償処理を行い補正値ｙを求める（ステップｃ６）。さらに、ＣＮＣシステム１１から出力され記憶されている段階値αを補正値ｙに乗じて段階補正値ｙ’を求める（ステップｃ７）。また、ステップｃ４で求めた位置偏差εに読み出した補正値ｙを加算し、帯域制限フィルタの処理（図２の帯域制限フィルタ３２の処理）を行い補正データを求め、最新の補正データとして記憶し、１組の補正データを更新する（ステップｃ８）。
【００４０】
また、ステップｃ４で求めた位置偏差εにステップｃ７で求めた段階補正値ｙ’を加算して、学習制御による補正がなされた位置偏差に更新し（ステップｃ９）、該位置偏差に位置ループゲインＫｐを乗じて速度指令Ｖｃを求め（ステップｃ１０）、速度制御部に引き渡す。
【００４１】
次の周期からは、ステップｃ１，ｃ１２，ｃ４，ｃ５〜ｃ１１の処理を繰り返し実行することになる。そして、学習制御オフのデータが読み込まれると、ステップｃ１２からステップｃ１３に移行して学習中オンフラグを「０」にセットしステップｃ４に移行し、ステップｃ４、ステップｃ５、ステップｃ１０〜ｃ１１の処理がなされることになる。そして、次の周期からは、学習中オンフラグを「０」であるから、ステップｃ１，ステップｃ１２，ステップｃ４，ｃ５，ステップｃ１０，ｃ１１の処理が実行されることになる。
【００４２】
以上のようにして、学習制御可能の指令がＮＣプログラムより読み出されたときは、この指令から、自動的に学習制御が開始され、しかも、段階的制御を行うように設定しておけば、学習制御オンとなったときには学習制御による補正値が段階的に増大するように適用され、学習制御オフ時には段階的に減少するように学習制御による補正値が適用されることになる。
【００４３】
なお、上述した実施形態ではＮＣプログラムの指令より学習制御を開始するか、学習制御を終了するかをプログラム指令の種類により自動的に判断するようにしたが。プログラムされた各種指令より自動的に判断するのではなく、ＮＣプログラム中に学習制御オン指令（例えばＧａａａ）、学習制御オフ指令（例えばＧｂｂｂ）を指令しておき（Ｇコード中のａａａ又はｂｂｂは数値である）、学習制御オン指令（Ｇａａａ）と共に識別コードを指令しておいてもよいものである（なお、識別コードは前述した実施形態のようにカウンタを設けＮＣプログラムの当初からの学習制御オン指令の数に基づいて決めるようにしてもよい）。この場合、図３のステップ７，ステップ１０における判断が、学習制御オフ指令か学習制御オン指令かの判断に代えればよい。
【００４４】
また、上述した実施形態では、図３のステップａ３で送り速度やオフセット値等の加工条件が変更になったとき、ステップａ４の処理で学習制御の補正データがクリアされることから、新たな加工条件での学習制御の補正データを自動的に作成することができる。また、各種の加工条件で作成した学習制御の補正データをＣＮＣシステム１１内のメモリに転送して記憶しておき、必要なとき、加工条件に対応する補正データを読み込み、サーボシステム１２に転送してその補正データを利用するようにしてもよい。さらには、この補正データを外部メモリ１９に出力し保存するようにしてもよい。又、この保存した補正データを数値制御装置１０に入力して利用することにより、学習時間の短縮が図れるものである。又、学習制御を行う同一動作パターンに対しては、識別コードが付されてその学習制御の補正データが記憶されているものであるから、識別コードを指定して、指定された識別コードの動作パターンについてのみ学習制御を行うようにすることもできる。
【００４５】
さらに、識別コードに対してその学習したときの加工条件等により異なった情報を付加しておけば、同種のワークを加工するとき、その時加工する条件に対応する学習制御の補正データを外部信号、ＮＣパラメータ等で指定することで、学習制御を直ちに実行できる。
【００４６】
また、識別コードと共にその学習制御を実施したＮＣプログラムの情報をも記憶しておくことにより、実行するＮＣプログラムが選択されたとき、そのＮＣプログラム選択時に学習制御の補正データも同時に選択できるようにすることができる。
【００４７】
また、学習制御は同一指令パターンの実行を繰り返し行うことにより、位置偏差を０近傍に収束させるものであるが、荒加工や高速での加工のように外乱が大きい場合には、学習制御が安定しない現象が発生する。このような場合は、学習コントローラ３０の帯域制限フィルタ３２の帯域幅を安定の方向に切り換える等の学習制御の設定を変えることによって、荒加工や高速での加工でも安定した加工ができるようになる。このことから、荒加工や高速での加工を行う加工速度優先場合と精度が必要な加工を行う精度優先の場合とで、学習制御の設定を変えることができるようにする。これは、段階値αを変更したように、この学習制御の設定（例えば帯域制限フィルタ３２の設定）をも変えるようにすればよいものである。
【００４８】
また、学習制御のオン、オフの状態や、位置偏差状態をサーボシステム１２からＣＮＣシステム１１に読み出し、これらのデータを表示器／入力機器１８の表示器の画面に表示するようにしてもよい。又、予め位置偏差の範囲を設定しておき、この範囲内に位置偏差があるかを監視することもできる。
【００４９】
さらに、上述した実施形態では、通常のＮＣプログラムにおいて、同一動作パターンが実行される部分をＮＣプログラムの中から区分してその部分に学習制御を適用できるようにしたものであるが、このようなＮＣプログラム以外にも、例えば、図７に示すような、主軸の回転角に対する送り軸の例えば、Ｘ、Ｚ軸の位置を対応付けて記述したプログラムを実行する際にも、本発明の学習制御は適用できるものである。
【００５０】
図７において、＜ＰＡＴＨ  ＴＡＢＬＥ＞はプログラム名であり、Ｓ０１，Ｓ１１等は主軸の回転位置、Ｘ０１，Ｘ１１等は、可動軸であるＸ軸の位置、Ｚ０１，Ｚ１１等は、可動軸であるＺ軸の位置を示している。そして、例えば、「Ｓ１１  Ｘ１１  Ｚ１１」は
主軸の回転角度がＳ１１のとき可動軸Ｘ軸はＸ１１でＺ軸はＺ１１であること指令するものである。  
また、この主軸の回転位置の代わりに時間を基準として各可動軸の位置を指令するようにしてもよいものである。
【図面の簡単な説明】
【００５１】
【図１】本発明の一実施形態の数値制御装置の概要図である。
【図２】同実施形態における位置ループ制御と学市有制御のブロック図である。
【図３】同実施形態におけるＮＣプログラムの前処理のフローチャートである。
【図４】同実施形態におけるＮＣプログラムの実行処理のフローチャートである。
【図５】同実施形態におけるサーボシステムによる位置ループ処理と学習制御処理のフローチャートである。
【図６】学習制御の補正値を段階的に適用するときの動作説明図である。
【図７】本発明を適用するの別の実施形態におけるプログラムの例である。
【符号の説明】
【００５２】
１０  数値制御装置
Ｍ１〜Ｍ４  サーボモータ
ＳＭ  主軸モータ
３０  学習コントローラ
【図１】
2005122647.tif 000003
【図２】
2005122647.tif 000004
【図３】
2005122647.tif 000005
【図４】
2005122647.tif 000006
【図５】
2005122647.tif 000007
【図６】
2005122647.tif 000008
【図７】
2005122647.tif 000009