(57)【要約】【課題】加工プログラムの転送速度が遅い場合において、加工プログラムの読み出し・バッファリングと、当該加工プログラムに基づく運転実行のタイミングを制御することを可能とする数値制御装置を提供すること。【解決手段】加工プログラムを格納した補助記憶装置３００またはホストコンピュータ２００から、内部メモリ１６０へ加工プログラムをバッファリングし自動運転を行う数値制御装置１００において、加工プログラム中に挿入されたバッファリングポイント命令を実行した際に、次のバッファリングポイント命令まで加工プログラムのバッファリングが完了しているかを確認し、バッファリングが完了していれば自動運転を継続し、バッファリングが完了していなければ自動運転を一時停止すると同時に設定に応じて工具を一旦退避し、バッファリング完了後に工具を復帰し運転を再開する数値制御装置１００を提案する。【選択図】図２
2016031725.tif 000002
【特許請求の範囲】
【請求項１】
外部記憶装置または外部制御装置から接続手段を介して加工プログラムを内部メモリにバッファリングし、バッファリングされた前記加工プログラムに基づいて自動運転実行部が自動運転を行う数値制御装置において、
前記加工プログラムは一つまたは複数個のバッファリングポイントを含み、
前記自動運転実行部は、
前記内部メモリへの前記加工プログラムバッファリングにおいて、バッファリングする該加工プログラムに前記バッファリングポイントが含まれているか否かを確認し確認結果を保持するバッファリング完了確認結果保持手段と、
前記内部メモリにバッファリングされた前記加工プログラムを前記自動運転実行部が実行する際に、実行する加工プログラムに前記バッファリングポイントが含まれているか否かを確認し結果を保持する実行確認結果保持手段と
前記バッファリング完了確認結果保持手段と前記実行確認結果保持手段とを比較する比較手段と
該比較結果に基づいて自動運転の継続または一時停止または再開のいずれかを行う実行手段と、
を有することを特徴とする数値制御装置。
【請求項２】
前記バッファリングポイントの二点に挟まれた加工プログラムの部分領域が前記内部メモリの予め設定された領域の大きさを超えていないかを、前記外部記憶装置または前記外部制御装置に格納された前記加工プログラムの全領域にわたって前記部分領域毎に診断し、該診断結果として前記内部メモリの大きさを超えていた前記部分領域を示す情報を出力することを特徴とする請求項１に記載の数値制御装置。
【請求項３】
前記内部メモリの大きさを超えていた前記部分領域を新たに分割する前記バッファリングポイントを出力する、
ことを特徴とした請求項２に記載の数値制御装置。
【請求項４】
自動運転の一時停止を行う際に工具退避を行うか否かを設定可能である、
ことを特徴とする請求項１〜３のいずれか１つに記載の数値制御装置。
【請求項５】
専用の命令または汎用の切削を行わない命令の少なくとも一方を、バッファリングポイントとして使用可能である、
ことを特徴とする請求項１〜４のいずれか１つに記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値制御装置に関し、特に加工プログラムの転送速度が遅い場合において加工プログラムの読み出し・バッファリングと、当該加工プログラムに基づく運転実行のタイミングを制御する数値制御装置に関する。
【背景技術】
【０００２】
数値制御装置は、内部のメモリに保持された加工プログラムを読み込み、自動運転を行っている。近年、ＣＡＤ／ＣＡＭシステムの普及によって複雑な自由曲面加工形状を微小線分で補間した加工プログラムの作成が可能になり、これにより加工プログラムの巨大化が進んでいる。数値制御装置で巨大な加工プログラムを実行するためには、内部のメモリを大容量化する必要があるが、内部メモリの大容量化はコストの増大や速度の低下に繋がるため、その大容量化には限界がある。
【０００３】
一方数値制御装置には、補助記憶装置として市販のフロッピー（登録商標）ディスクドライブやコンパクトフラッシュ（登録商標）カード等の記憶媒体を接続し、これに加工プログラムを格納することもできる（例えば、特許文献１）。容量の限られた内部メモリを補うため、これらの補助記憶装置に保存された加工プログラムを読み出しながら運転を行うＤＮＣ運転などが一般に知られている（例えば、特許文献２）。
【０００４】
また、ホストとなるコンピュータと数値制御装置を通信接続する構成において、通信手段を介してホストから転送される加工プログラムデータを数値制御装置のファイル装置やメモリに蓄え、その蓄えられた加工プログラムデータを用いて数値制御装置が加工を制御するＤＮＣ運転も知られている（例えば、特許文献３）。
【０００５】
ところで前述のＤＮＣ運転における加工プログラムの読み出しにおいては、補助記憶装置からの読み出しの場合でもホストからの転送の場合でも、数値制御装置の内部メモリに比べて読み出し時間が長いので、一般に加工時間が増大する。加工時間の増大を防ぐには、補助記憶装置やホストからの読み出し結果を数値制御装置内部のメモリに蓄えつつ、メモリに蓄えた加工プログラムデータをブロック毎に処理して運転すれば良い。このような機能として特許文献４では、ホストから数値制御装置に転送される加工プログラムデータをメモリ内の運転バッファに蓄えつつ、運転バッファ内の加工プログラムデータをブロック単位に順次取り出して運転を行うリモート運転機能が紹介されている。
【０００６】
図１３は、特許文献４におけるリモート運転機能を備えた数値制御装置１００のリモート運転処理ブロック図である。ホスト２００から転送される加工プログラムデータＰＤは、数値制御装置１００の通信制御部１４０を介して運転バッファ１５０に転送される。運転バッファ１５０に転送された加工プログラムデータＰＤは、ブロック単位でブロック解析部１１０に取りだされて順次解析され、解析結果ＳＲがブロック実行部１２０に渡されて加工が実行される。
【０００７】
図１４は、ホスト２００から加工プログラムデータを転送するかわりに、補助記憶装置３００からの加工プログラムデータを読み出すリモート運転機能のブロック図である。運転バッファへ１５０の加工プログラムデータＰＤが補助記憶装置３００から転送される点以外は、図１３と同じである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−１３５１５３号公報
【特許文献２】特開２００４−０７８４７６号公報
【特許文献３】特開２００３−１９５９３０号公報
【特許文献４】特開平０７−２３９７０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
前述のようなリモート運転機能を備えた数値制御装置においては、ブロック解析部とブロック実行部が加工プログラムデータを取り出す処理に比べて、ホストないし補助記憶装置から運転バッファに転送される加工プログラムデータのブロック転送処理が遅い場合、運転バッファが空になって加工が停止してしまい、ワークにカッタマークが付いたり振動が発生したりする、という課題がある。
この課題に対して特許文献４では、運転バッファ内の加工プログラムデータの残りのデータ量が予め設定されたブロック数を下回った場合に、切削送り速度を低下させることで、加工の停止によるカッタマーク生成や振動を回避する、という方法が開示されている。
【００１０】
しかしながら、補助記憶装置の読み出し時間には上限の保証がないものが一般的である。またホストから数値制御装置への転送も、一般にはホストやネットワークの混雑状況に左右されるため、転送にかかる時間の上限は補助記憶装置からの読み出し時間と同様に保証できないのが一般的である。このため、特許文献４で開示されている方法を用いる場合には、実際にどれだけ切削送り速度を低下させれば運転バッファ内が空になることを回避できるかがわからない、という問題があった。
【００１１】
また特許文献４では、最悪の場合に運転バッファが空になってしまったとしても、切削中の工具を工具装着の軸方向に退避させることで、カッタマークの生成や振動を防ぐことができる、という解決手段も開示されているが、切削送り中に工具を一旦退避させその後工具を復帰させるという動作は加工面の品質に問題が生じるため、仕上げ加工などの場合に適用できず、課題が完全に解決されたとは言えない。また特許文献４では、前述の工具退避の有効無効を設定できるとなっているが、工具退避が無効に設定された箇所で実際に運転バッファ内の加工プログラムが空になってしまった場合には、結局カッタマークの生成や振動を防ぐことができない、という課題があった。
【００１２】
さらに特許文献４では、切削送り速度の速度低下（切削送りオーバライド）のパーセンテージや速度低下の可否、工具退避有効無効などを加工プログラム文中で指定しているが、加工プログラムが長大な場合、加工プログラムの全領域の細部にわたってこれらの設定をその都度変更するようにプログラムを編集するのは、手間がかかり現実的ではない、という課題もあった。
【００１３】
そこで、本発明の目的は、加工プログラムの転送速度が遅い場合において、加工プログラムの読み出し・バッファリングと、当該加工プログラムに基づく運転実行のタイミングを制御することを可能とする数値制御装置を提供することである。
【課題を解決するための手段】
【００１４】
本願の請求項１に係る発明は、外部記憶装置または外部制御装置から接続手段を介して加工プログラムを内部メモリにバッファリングし、バッファリングされた前記加工プログラムに基づいて自動運転実行部が自動運転を行う数値制御装置において、前記加工プログラムは一つまたは複数個のバッファリングポイントを含み、前記自動運転実行部は、前記内部メモリへの前記加工プログラムバッファリングにおいて、バッファリングする該加工プログラムに前記バッファリングポイントが含まれているか否かを確認し確認結果を保持するバッファリング完了確認結果保持手段と、前記内部メモリにバッファリングされた前記加工プログラムを前記自動運転実行部が実行する際に、実行する加工プログラムに前記バッファリングポイントが含まれているか否かを確認し結果を保持する実行確認結果保持手段と前記バッファリング完了確認結果保持手段と前記実行確認結果保持手段とを比較する比較手段と該比較結果に基づいて自動運転の継続または一時停止または再開のいずれかを行う実行手段と、を有することを特徴とする数値制御装置である。
【００１５】
本願の請求項２に係る発明は、前記バッファリングポイントの二点に挟まれた加工プログラムの部分領域が前記内部メモリの予め設定された領域の大きさを超えていないかを、前記外部記憶装置または前記外部制御装置に格納された前記加工プログラムの全領域にわたって前記部分領域毎に診断し、該診断結果として前記内部メモリの大きさを超えていた前記部分領域を示す情報を出力することを特徴とする請求項１に記載の数値制御装置である。
【００１６】
本願の請求項３に係る発明は、前記内部メモリの大きさを超えていた前記部分領域を新たに分割する前記バッファリングポイントを出力する、ことを特徴とした請求項２に記載の数値制御装置である。
【００１７】
本願の請求項４に係る発明は、自動運転の一時停止を行う際に工具退避を行うか否かを設定可能である、ことを特徴とする請求項１〜３のいずれか１つに記載の数値制御装置である。
【００１８】
本願の請求項５に係る発明は、専用の命令または汎用の切削を行わない命令の少なくとも一方を、バッファリングポイントとして使用可能である、ことを特徴とする請求項１〜４のいずれか１つに記載の数値制御装置である。
【発明の効果】
【００１９】
バッファリングポイント命令は内部メモリへの加工プログラムをバッファリングする区切りを指定する命令である。バッファリングポイント命令は、専用命令に加えて、工具退避命令や早送り命令など、自動運転を一時停止してもカッタマークが生成しないような非切削命令も、バッファリングポイント命令となる。数値制御装置は、バッファリングポイント命令に挟まれた加工プログラムの各部分領域が、数値制御装置の内部メモリにバッファリングできるサイズであるかどうかついて、自動運転開始前に予め診断を行う。診断の結果、サイズ違反となっている部分領域については、数値制御装置が加工プログラムを解析することで工具の運動方向が反転する位置、例えばワークの端面などを検出し、ここにバッファリングポイント専用命令を新規に挿入する。
このような構成を設けることにより、数値制御装置がホストからのデータ転送や補助記憶装置からの読み出しにより加工プログラムを内部メモリへのバッファリングする場合に、バッファリングポイント命令間の加工プログラムのバッファリングが完了してから運転を行い、バッファリングが未完了の場合には運転を一時停止し、設定に応じて工具を退避することができる。そのため、データ転送が遅く内部メモリが空になってしまう場合でも、予め指定したバッファリングポイント命令以外の箇所で加工が停止することはなく、ワークにカッタマークの生成や振動が発生する、という問題が発生しない。
また、バッファリングポイント命令の挿入位置について事前に診断し、問題のある箇所については、加工プログラムを解析し、自動的にバッファリングポイント命令を挿入するので、作業者は加工プログラムの作成時にバッファリングポイント命令の存在を意識することなく、長大なプログラムを作成することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施の形態における数値制御装置の要部ブロック図である。
【図２】本発明の実施の形態１における数値制御装置の機能ブロック図である。
【図３】本発明の実施の形態において使用する加工プログラムの例を示す図である。
【図４】本発明の実施の形態１における解析処理のフローチャートである。
【図５】本発明の実施の形態１における実行処理のフローチャートである。
【図６】本発明の実施の形態１における診断処理のフローチャートである。
【図７】本発明の実施の形態１におけるバッファリングポイント命令挿入位置出力処理のフローチャートである。
【図８】本発明の実施の形態２における数値制御装置の機能ブロック図である。
【図９】本発明の実施の形態２における解析処理のフローチャートである。
【図１０】本発明の実施の形態２における実行処理のフローチャートである。
【図１１】本発明の実施の形態２における診断処理のフローチャートである。
【図１２】本発明の実施の形態２におけるバッファリングポイント命令挿入位置出力処理のフローチャートである。
【図１３】従来技術におけるネットワークを介したリモート運転機能を備えた数値制御装置のブロック図である。
【図１４】従来技術における補助記憶装置を用いたリモート運転機能を備えた数値制御装置のブロック図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態を図面と共に説明する。なお、従来技術と同一または類似する構成は同じ符号を用いて説明する。
【００２２】
＜実施の形態１＞
図１は、本発明の実施形態に係る数値制御装置１００とホストコンピュータ２００と補助記憶装置３００（ここではメモリカード５０及びＵＳＢメモリ６０）を含む周辺構成をブロック図で示したものである。
図１に示したように、工作機械の各軸を数値制御する数値制御装置１００は、通常のハードウェア構成のもので、全体を制御するＣＰＵ１１とそのチップセット１２、チップセット１２と内部バス２５を介してＣＰＵ１１に接続された内部メモリ１３、不揮発性メモリ１４、軸制御部１５、軸接続部１６、主軸制御部１７、主軸接続部１８、ＰＭＣ制御部１９、操作キー接続部２０、表示器接続部２１、外部通信制御部２２、補助記憶装置接続部（ここではメモリカード接続制御部２３及びＵＳＢ接続制御部２４）を備えている。
【００２３】
操作キー接続部２０にはオペレータがマニュアル操作を行うための操作キー３０（キーボード）に接続され、表示器接続部２１には表示器４０が接続されている。補助記憶装置接続部には記憶媒体（ここではメモリカード５０及びＵＳＢメモリ６０）が接続され、プログラムやパラメータその他の送受信に利用される。また、外部通信制御部２２には通信手段を介してホストコンピュータ２００が接続され、記憶媒体と同様にプログラムやその他のデータ通信に利用される。不揮発性メモリ１４には、数値制御装置１００の動作ソフトが格納されており、ＣＰＵ１１は電源投入後の動作開始時に、これを不揮発性メモリ１４からローディングする（ブート動作）のに利用される。
【００２４】
この他、加工プログラムや各種設定データなども不揮発性メモリ１４に格納されており、補助記憶装置や外部通信を利用しない自動運転の場合には、不揮発性メモリ１４に格納された加工プログラムを内部メモリ１３の加工プログラム格納領域に一括して読み出して自動運転が行われる。
工作機械も通常構成のもので、軸数（ここでは２を例示）分と主軸数（ここでは１を例示）分のアンプ７０とモータ８０の他、機械制御装置９０、ＰＭＣ制御部１９と機械制御装置９０を繋ぐ入出力装置９１（Ｉ／Ｏ）を備えている。
【００２５】
図２は、本発明の実施形態に係る数値制御装置１００の加工プログラムの処理を示したブロック図である。自動運転実行部は、ブロック解析部１１０、ブロック実行部１２０、内部メモリ１６０から構成されており、さらにバッファリングポイント命令を内部メモリに格納した回数を表すバッファリングポイントリードカウンタ１７０と、バッファリングポイント命令を実行した回数を表すバッファリングポイント実行カウンタ１８０と、工具退避の許可不許可や工具退避方向及び工具退避量などの設定情報が保存されている工具退避設定部１９０も、自動運転実行部に含まれている。
【００２６】
まずブロック解析部１１０は、１ブロックまたは複数のブロックの加工プログラムを、補助記憶装置３００またはホストコンピュータ２００からそれぞれの補助記憶装置接続制御部１３０または外部通信制御部１４０を通じて読み出す。次にブロック解析部１１０は、読み出した加工プログラムのブロックを解析し（解析処理）、解析結果を実行形式として加工プログラム実行形式格納領域１６１に格納する（バッファリング）。ここで加工プログラム実行形式格納領域１６１は、先入れ先出しバッファ（ＦｉｒｓｔＩｎＦｉｒｓｔＯｕｔ：ＦＩＦＯ）となっており、先に格納された実行形式から順にブロック実行部に渡される。ブロック実行部１２０は、加工プログラム実行形式格納領域１６１に先に格納された実行形式から順にブロック解析結果を実行する（実行処理）。自動運転中において、軸及び主軸への指令を淀みなく行うために、一般に実行処理は所定の周期で実行される。一方解析処理は、所定の周期で所定回数行われても、実行処理の合間に行われても良い。いずれにしても解析処理と実行処理の両者は、順次行われるものではなく、それぞれ並行して行われる。
【００２７】
図３は、本発明の実施の形態の数値制御装置１００で使用される加工プログラムの一例である。先頭のＯ０００１はプログラム番号で、末尾のＭ３０はプログラムエンドを表す。Ｏ０００１とＭ３０に挟まれた各行はブロックと呼ばれ、工具や主軸の動作令や、工具設定、各種補正機能など、数値制御装置１００に与える指令が書き込まれている。各ブロックは、先頭にブロックを識別するためのシーケンス番号（図例ではＮ００１〜Ｎ０２０）が書き込まれ、次に軸の移動の方法やその他の設定を数値制御装置１００に指令するための準備機能を表すＧコード（図例ではＧ００〜Ｇ０１）と、Ｇコードに対応した座標値の指令であるディメンジョンワード（図例ではＸ、Ｚ）が書き込まれている。
【００２８】
準備機能は一度指定すると変更されるまでずっと有効となる命令もあり（モーダル指令）、指令そのものを変更しない場合にはＮ０１３のブロックのように省略される場合もある。また、例では、マクロやサブプログラムの呼び出し、回転軸割り出しなどに使用される補助機能（例ではＭ）が書き込まれている。この他ブロックには、主軸への指令を表す主軸機能（Ｓ機能）、工具の設定を表す工具機能（Ｔ機能）なども書き込まれる（図示せず）。図例では、シーケンス番号Ｎ０１１のブロックとＮ０２０の末尾に書かれているＭ１０００が、本発明において導入されるバッファリングポイントを表す補助命令である。
【００２９】
図４は、解析処理１回分の流れを表すフローチャートである。前述の通り、解析処理は所定の周期に所定回数だけ、または実行処理の合間の空き時間に開始される。
まず、内部メモリの加工プログラム実行形式格納領域１６１に空きがあるかどうかが確認され（ステップＳＡ０１）、空きがない場合には解析処理終了となる。空きがあった場合、補助記憶装置３００またはホストコンピュータ２００から加工プログラムを１ブロック読み込み解析する（ステップＳＡ０２）。解析したブロックがプログラムエンドの場合には（ステップＳＡ０３）、解析処理は終了となる。プログラムエンドではない場合、解析結果が実行形式として出力され、加工プログラム実行形式格納領域１６１に格納される（ステップＳＡ０４）。最後に、解析したブロックにバッファリングポイント命令が含まれていたかを確認し（ステップＳＡ０５）、含まれていない場合には解析処理終了、含まれていればバッファリングポイントリードカウンタ１７０がカウントアップされる（ステップＳＡ０６）。
【００３０】
バッファリングポイントリードカウンタ１７０は、自動運転の開始時にクリアされており、このようにバッファリングポイント命令を読み出す度に値がカウントアップされるので、何回バッファリングポイント命令を含むブロックを補助記憶装置３００またはホストコンピュータ２００から読み出したかの回数が記録されていることになる。つまり、内部メモリ１６０の加工プログラム実行形式格納領域１６１に格納済みの加工プログラムのうち、最新のバッファリングポイント命令を含むブロックが、加工プログラムの頭から数えて何番目のバッファリングポイントであったかを示している。
【００３１】
図５は、実行処理１回分の流れを表すフローチャートである。
まず、バッファリングポイント実行カウンタ１８０とバッファリングポイントリードカウンタ１７０の値を比較し（ステップＳＢ０１）、バッファリングポイント実行カウンタ１８０の値がバッファリングポイントリードカウンタ１７０の値以上の場合、実行処理が終了する。バッファリングポイントリードカウンタ１７０のほうが大きい場合には、工具が退避されているかどうかを確認し（ステップＳＢ０２）、工具が退避されていれば工具を復帰する（ステップＳＢ０３）。次にブロック実行部１２０は加工プログラム実行形式格納領域１６１に先に格納された実行形式から順にこれを読み出して実行する（ステップＳＢ０４）。この時、読み出した実行形式にバッファリングポイント命令が含まれていない場合は（ステップＳＢ０５）、読み出した実行形式が通常通り実行されて、１回分の実行処理が終了となる
【００３２】
一方、バッファリングポイント命令が含まれていた場合には、まずバッファリングポイント実行カウンタ１８０がカウントアップされる（ステップＳＢ０６）。ここで、バッファリングポイント実行カウンタ１８０とバッファリングポイントリードカウンタ１７０の比較が再度行われる（ステップＳＢ０７）。この比較により、現在実行中のバッファリングポイント命令よりも、一つ先のバッファリングポイント命令までをバッファリング完了済みであるかを確認することができる。この比較において、バッファリングポイント実行カウンタ１８０とバッファリングポイントリードカウンタ１７０の値が等しい場合には、工具退避設定部の内容を確認する（ステップＳＢ０８）。ここで工具退避が有効になっている場合には、設定された退避方向と退避量に従って工具を退避し（ステップＳＢ０９）、実行処理が終了となる。退避が有効でない場合には、工具退避を実行せずに実行処理が終了となる。
なお、工具退避有効無効／工具退避量／工具退避方向の各設定は、自動運転前に予め工具退避設定部１９０に設定しておくことが可能であり、また加工プログラム中の命令でも、自動運転中に随時変更することも可能である。
【００３３】
図６は、補助記憶装置３００またはホストコンピュータ２００に格納された加工プログラムに、バッファリングポイントが適切な間隔で挿入されているかを診断する診断処理の流れを表すフローチャートである。
まず、バッファリングポイントリードカウンタ１７０の値がクリアされる（ステップＳＣ０１）。次に、補助記憶装置３００またはホストコンピュータ２００から加工プログラムを１ブロック読み込み、これを解析する（ステップＳＣ０２）。読み込んだブロックがプログラムエンドの場合には（ステップＳＣ０３）、診断処理は終了となる。プログラムエンドでなかった場合には、解析結果を実行形式として出力し、内部メモリの加工プログラム実行形式格納領域１６１に格納する（ステップＳＣ０４）。
【００３４】
次に、加工プログラム実行形式格納領域１６１の格納データが溢れていないかをチェックし（ステップＳＣ０５）、溢れている場合には、現在のバッファリングポイントリードカウンタ１７０の値を記録する（ステップＳＣ０６）。溢れていない場合には、解析したブロックにバッファリングポイント命令が含まれていたかをチェックし（ステップＳＣ０７）、含まれていなかった場合には、加工ブロックの読み込みから再度同様の処理を行う。含まれていた場合には、バッファリングポイントリードカウンタ１７０の値をカウントアップした上で（ステップＳＣ０８）、加工プログラム実行形式格納領域１６１に格納された実行形式のデータを全てクリアした上で（ステップＳＣ０９）、加工ブロックの読み込みから再度同様の処理を行う。
ステップＳＣ０５において、加工プログラム実行形式格納領域１６１が溢れていた場合においても、同様に加工プログラム実行形式格納領域１６１のデータを全てクリアした上で（ステップＳＣ０９）、加工ブロックの読み込みから再度同様の処理を行う。
【００３５】
以上の流れを繰り返すことで、バッファリングポイント命令間のブロック数が多すぎるために内部メモリの加工プログラム実行形式格納領域１６１に収まらなくなってしまう箇所の、直前のバッファリングポイント命令の位置がバッファリングポイントリードカウンタ１７０の値の形で全て記録される。数値制御装置１００は本処理を実行後、記録されたバッファリングポイントリードカウンタ１７０の値をユーザに出力し、加工プログラム実行形式格納領域１６１に収まらない箇所をユーザに通知することができる。
なお、加工プログラム実行形式格納領域１６１が溢れるか溢れないかのチェックについては、実際の格納領域の大きさよりも小さく設定して、診断処理を行うことも可能である。
【００３６】
図７は、図６の診断処理を実行した結果、内部メモリ１６０の加工プログラム実行形式格納領域１６１に収まらなかった箇所について、新たに追加すべきバッファリングポイント命令の位置を出力する処理の流れを表すフローチャートである。
まず、前述の診断処理で記録されたバッファリングポイント命令の位置まで加工プログラムをサーチする（ステップＳＤ０１）。サーチ位置から、加工プログラム実行形式格納領域１６１が溢れるまで加工プログラムの読み出しと解析、加工プログラム実行形式格納領域１６１への格納を繰り返す（ステップＳＤ０２）。ステップＳＤ０２の処理を繰り返している最中に、プログラムエンドまたはバッファリング命令が読み出されたら（ステップＳＤ０３）、正常終了する。途中で加工プログラム実行形式格納領域１６１が溢れたら（ステップＳＤ０４）、溢れた箇所から１ブロックずつ加工プログラムを遡り、早送りなどの非切削命令で構成されるブロック、または工具の運動方向が反転するブロックをサーチする（ステップＳＤ０５）。サーチの結果、一つ手前のバッファリングポイント命令または加工プログラムの先頭までにサーチ条件に該当するブロックが見つかれば（ステップＳＤ０６）、見つかったブロックの位置のサイクル番号を記録し（ステップＳＤ０７）、格納領域のデータをオールクリアし（ステップＳＤ０８）、ステップＳＤ０７で記録したサイクル番号の位置に戻り（ステップＳＤ０９）、そこから再度同様の処理を繰り返す。このように処理を繰り返すことで、検出したバッファリングポイントの挿入位置以降の領域が加工プログラム実行形式格納領域１６１に収まらない場合にも対応することができる。なお、ステップＳＤ０６において、早送りなどの非切削命令で構成されるブロック、または工具の運動方向が反転するブロックが見つからなければ、エラー終了となる。
【００３７】
以上の処理を行うことにより、加工プログラム実行形式格納領域１６１から溢れる加工ブロックの領域について、バッファリングポイントを追加すべき位置を出力し、ユーザに通知することができる。このような処理を、前述の診断箇所で加工プログラム実行形式格納領域１６１に収まらなかった箇所の全てにおいて実行することで、加工プログラムの全領域にわたってバッファリングポイントを挿入すべき箇所をユーザに通知することができる。なお、ユーザへの通知時には、実際に新規にバッファリングポイントを挿入して良いかも合わせて確認する。ユーザが許可すると、新規のバッファリングポイントが加工プログラムの該当箇所に自動挿入される。また、ユーザへの通知なしに自動でバッファリングポイント命令を挿入するように事前に設定しておくこともできる。
【００３８】
バッファリングポイント命令は、専用命令に加えて、工具退避命令や早送り命令など、自動運転を一時停止してもカッタマークが生成しないような非切削命令も、バッファリングポイント命令となる。また、ユーザ指定の任意の命令について、バッファリングポイント命令として扱うかどうかを事前に設定しておくこともできる。
【００３９】
なお本実施例では、バッファリングポイントリードカウンタ１７０とバッファリングポイント実行カウンタ１８０を自動運転実行部に持っていたが、両者を一つのバッファリングポイントカウンタで代用し、バッファリングポイント命令を加工プログラム実行形式格納領域１６１に格納したらカウンタを＋１、バッファリングポイント命令を実行部で実行したらカウンタを−１、ブロック実行部１２０はカウンタが０になったら自動運転を一時停止、として実現することもできる。
【００４０】
＜実施の形態２＞
実施の形態１では、図２に示すように、ブロック解析部１１０の解析結果を内部メモリ１６０の加工プログラム実行形式格納領域１６１に格納するように構成した数値制御装置１００の実施の形態を示した。実施の形態２では、ブロック解析部１１０の手前で、内部メモリ１６０の加工プログラム格納領域１６２に加工プログラムを格納する数値制御装置１００についての例について説明する。
なお、使用する加工プログラムの例は図３と同様である。数値制御装置と周辺構成も図１と同様である。
【００４１】
図８は、本実施例に係る数値制御装置１００の加工プログラムの処理を示したブロック図である。
図２と異なり、補助記憶装置３００やホストコンピュータ２００から読み出された加工プログラムは、まず内部メモリ１６０の加工プログラム格納領域１６２に格納される（読み出し処理、バッファリング）。格納された加工プログラムはブロック解析部１１０に渡される。ブロック解析部１１０が解析結果をブロック実行形式として出力し、これをブロック実行部１２０に渡す（解析処理）。ブロック実行部１２０は、渡されたブロック実行形式を実行する（実行処理）。
【００４２】
実施の形態１と同様、実行処理は所定の周期で実行される。解析処理は、実行処理と同様に所定の周期で実行処理に対応して実行される。一方読み出し処理は、所定の周期で所定回数行われる場合と、実行処理及び解析処理の合間に行われる場合がある。いずれにしても解析処理及び実行処理と読み出し処理の両者は、順次行われるものではなく、それぞれ平行して行われる。
【００４３】
図９は、読み出し処理１回分の流れを表すフローチャートである。前述の通り、読み出し処理は所定の周期に所定の回数だけ、または実行処理と解析処理の合間の空き時間に開始される。
まず、内部メモリ１６０の加工プログラム格納領域１６２に空きがあるかどうかが確認され（ステップＳＥ０１）、空きがない場合には読み出し処理終了となる。空きが合った場合、補助記憶装置３００またはホストコンピュータ２００から加工プログラムをブロック読み込む（ステップＳＥ０２）。読み込んだブロックがプログラムエンドの場合には（ステップＳＥ０３）、解析処理は終了となる。プログラムエンドではない場合、読み込んだブロックが内部メモリ１６０の加工プログラム格納領域１６２に格納される（ステップＳＥ０４）。最後に、読み込んだブロックにバッファリングポイント命令が含まれていたかを確認し（ステップＳＥ０５）、含まれていない場合には読み出し処理終了、含まれていればバッファリングポイントリードカウンタ１７０がカウントアップされる（ステップＳＥ０６）。
【００４４】
バッファリングポイントリードカウンタ１７０は、自動運転開始時にクリアされており、実施の形態１と同様に内部メモリ１６０に格納された加工プログラムのうち、最新のバッファリングポイント命令を含むブロックが、加工プログラムの頭から数えて何番目のバッファリングポイントであるかを示している。
【００４５】
図１０は、実行処理１回分の流れを表すフローチャートである。
まず、バッファリングポイント実行カウンタ１８０とバッファリングポイントリードカウンタ１７０の値を比較し（ステップＳＦ０１）、バッファリングポイント実行カウンタ１８０の値がバッファリングポイントリードカウンタ１７０の値以上の場合、実行処理が終了する。バッファリングポイントリードカウンタ１７０のほうが大きい場合には、工具が退避されているかどうかを確認し（ステップＳＦ０２）、工具が退避されていれば工具を復帰する（ステップＳＦ０３）。次にブロック解析部１１０は加工プログラム格納領域１６２から先に格納されたブロックから順にこれを読み出して解析し、解析結果の指令をブロック実行部１２０へ渡す（ステップＳＦ０４）。この時、解析したブロックにバッファリングポイント命令が含まれていない場合は（ステップＳＦ０５）、解析したブロックが通常通り実行されて、１回分の実行処理が終了となる
【００４６】
一方、バッファリングポイント命令が含まれていた場合には、まずバッファリングポイント実行カウンタ１８０がカウントアップされる（ステップＳＦ０６）。ここで、バッファリングポイント実行カウンタ１８０とバッファリングポイントリードカウンタ１７０の比較が再度行われる（ステップＳＦ０７）。この比較により、現在実行中のバッファリングポイント命令よりも、一つ先のバッファリングポイント命令までをバッファリング完了済みであるかを確認することができる。この比較において、バッファリングポイント実行カウンタ１８０とバッファリングポイントリードカウンタ１７０の値が等しい場合には、工具退避設定部の内容を確認する（ステップＳＦ０８）。ここで工具退避が有効になっている場合には、現在の実行処理の終了後に設定された退避方向と退避量に従って工具を退避し（ステップＳＦ０９）、実行処理が終了となる。退避が有効でない場合には、工具退避を実行せずに実行処理が終了となる。
【００４７】
図１１は、補助記憶装置３００またはホストコンピュータ２００に格納された加工プログラムに、バッファリングポイントが適切な間隔で挿入されているかを診断する診断処理の流れを表すフローチャートである。
まず、バッファリングポイントリードカウンタ１７０の値がクリアされる（ステップＳＧ０１）。次に、補助記憶装置３００またはホストコンピュータ２００から加工プログラムを１ブロック読み込む（ステップＳＧ０２）。読み込んだブロックがプログラムエンドの場合には（ステップＳＧ０３）、診断処理は終了となる。プログラムエンドでなかった場合には、加工プログラム格納領域１６２の格納データが溢れていないかをチェックし（ステップＳＧ０４）、溢れている場合には、現在のバッファリングポイントリードカウンタ１７０の値を記録する（ステップＳＧ０５）。溢れていない場合には、解析したブロックにバッファリングポイント命令が含まれていたかをチェックし（ステップＳＧ０６）、含まれていなかった場合には、加工ブロックの読み込みから再度同様の処理を行う。含まれていた場合には、バッファリングポイントリードカウンタ１７０の値をカウントアップした上で（ステップＳＧ０７）、加工プログラム格納領域１６２に格納されたデータを全てクリアした上で（ステップＳＧ０８）、加工ブロックの読み込みから再度同様の処理を行う。
ステップＳＧ０５において、加工プログラム格納領域１６２が溢れていた場合においても、同様に加工プログラム格納領域１６２のデータを全てクリアした上で（ステップＳＧ０８）、加工ブロックの読み込みから再度同様の処理を行う。
【００４８】
以上の流れを繰り返すことで、バッファリングポイント命令間のブロック数が多すぎるために内部メモリ１６０の加工プログラム格納領域１６２に収まらなくなってしまう箇所の、直前のバッファリングポイント命令の位置がバッファリングポイントリードカウンタ１７０の値の形で全て記録される。数値制御装置１００は本処理を実行後、記録されたバッファリングポイントリードカウンタ１７０の値をユーザに出力し、加工プログラム格納領域１６２に収まらない箇所をユーザに通知することができる。
なお、加工プログラム格納領域１６２が溢れるか溢れないかのチェックについては、実際の格納領域の大きさよりも小さく設定して、診断処理を行うことも可能である。
【００４９】
図１２は、図１１の診断処理を実行した結果、内部メモリ１６０の加工プログラム格納領域１６２に収まらなかった箇所について、新たに追加すべきバッファリングポイント命令の位置を出力する処理の流れを表すフローチャートである。
まず、前述の診断処理で記録されたバッファリングポイント命令の位置まで加工プログラムをサーチする（ステップＳＨ０１）。サーチ位置から、加工プログラム格納領域１６２が溢れるまで加工プログラムの読み出しと、加工プログラム格納領域１６２への格納を繰り返す（ステップＳＨ０２）。ステップＳＨ０２の処理を繰り返している最中に、プログラムエンドまたはバッファリング命令が読み出されたら（ステップＳＨ０３）、正常終了する。途中で加工プログラム格納領域１６２が溢れたら（ステップＳＨ０４）、溢れた箇所から１ブロックずつ加工プログラムを遡り、早送りなどの非切削命令で構成されるブロック、または工具の運動方向が反転するブロックをサーチする（ステップＳＨ０５）。サーチの結果、一つ手前のバッファリングポイント命令または加工プログラムの先頭までにサーチ条件に該当するブロックが見つかれば（ステップＳＨ０６）、見つかったブロックの位置のサイクル番号を記録し（ステップＳＨ０７）、加工プログラム格納領域１６２のデータをオールクリアし（ステップＳＨ０８）、記録したサイクル番号の位置に戻り（ステップＳＨ０９）、そこから再度同様の処理を繰り返す。このように処理を繰り返すことで、検出したバッファリングポイントの挿入位置以降の領域が加工プログラム格納領域１６２に収まらない場合にも対応することができる。なお、ステップＳＨ０６において、早送りなどの非切削命令で構成されるブロック、または工具の運動方向が反転するブロックが見つからなければ、エラー終了となる。
【００５０】
以上の処理を行うことにより、加工プログラム格納領域１６２から溢れる加工ブロックの領域について、バッファリングポイントを追加すべき位置を出力し、ユーザに通知することができる。このような処理を、前述の診断箇所で加工プログラム格納領域１６２に収まらなかった箇所の全てにおいて実行することで、加工プログラムの全領域にわたってバッファリングポイントを挿入すべき箇所をユーザに通知することができる。なお、ユーザへの通知時には、実際に新規にバッファリングポイントを挿入して良いかも合わせて確認する。ユーザが許可すると、新規のバッファリングポイントが加工プログラムの該当箇所に自動挿入される。また、ユーザへの通知なしに自動でバッファリングポイント命令を挿入するように事前に設定しておくこともできる。
【符号の説明】
【００５１】
１１    ＣＰＵ
１２    チップセット
１３    メモリ
１４    不揮発性メモリ
１５    軸制御部
１６    軸接続部
１７    主軸制御部
１８    主軸接続部
１９    ＰＭＣ制御部
２０    操作キー接続部
２１    表示器接続部
２２    外部通信制御部
２３    メモリカード接続制御部
２４    ＵＳＢ接続制御部
２５    内部バス
３０    操作キー
４０    表示器
５０    メモリカード
６０    ＵＳＢメモリ
７０    アンプ
８０    モータ
９０    機械制御装置
９１    Ｉ／Ｏ
１００    数値制御装置
１１０    ブロック解析部
１２０    ブロック実行部
１３０    補助記憶装置接続制御部
１４０    外部通信制御部
１５０    運転バッファ
１６０    内部メモリ
１６１    加工プログラム実行形式格納領域
１６２    加工プログラム格納領域
１７０    バッファリングポイントリードカウンタ
１８０    バッファリングポイント実行カウンタ
１９０    工具退避設定部
２００    ホストコンピュータ
３００    補助記憶装置
【図１】
2016031725.tif 000003
【図３】
2016031725.tif 000004
【図４】
2016031725.tif 000005
【図５】
2016031725.tif 000006
【図６】
2016031725.tif 000007
【図７】
2016031725.tif 000008
【図９】
2016031725.tif 000009
【図１０】
2016031725.tif 000010
【図１１】
2016031725.tif 000011
【図１２】
2016031725.tif 000012
【図１３】
2016031725.tif 000013
【図１４】
2016031725.tif 000014
【図２】
2016031725.tif 000015
【図８】
2016031725.tif 000016