(58)【調査した分野】(Int.Cl.,DB名)
前記シミュレーション画像を表示することを実行するためのボタンが表示された前記画面上において、前記ボタンを長押しすると、前記ボタンを押した際に実行される機能のガイダンスが前記ボタンの近くに表示される、請求項6に記載の工作機械。
【発明を実施するための形態】
【0009】
本実施形態におけるプログラム編集装置は、編集画面とともにシミュレーション画面を表示する。編集画面では、編集操作に応じてNCプログラムを表示し、シミュレーション画面では、編集画面に表示されたNCプログラムによるシミュレーション結果を表示する。
【0010】
図24は、工作機械700と操作盤702の外観図である。
このプログラム編集装置は、工作機械700の中に組み込まれていて、編集画面やシミュレーション画面を操作盤702の画面上に表示する形態でもよいし、工作機械700とは別体のコンピュータ(例えば、パーソナルコンピュータ)の画面上に編集画面やシミュレーション画面を表示する形態でもよい。好ましい形態は、工作機械700がプログラム編集装置を備え、操作盤702の操作画面704にプログラム編集装置の編集画面やシミュレーション画面を表示する形態である。
【0011】
ユーザは、たとえばNCプログラムの入力作業において、加工順に指令を書き込む。本実施形態では、新たな指令が書き込まれる都度、その段階までの加工がシミュレートされ、新たな指令によるシミュレーション結果が強調表示される。
【0012】
また、ユーザは、NCプログラムの見直し作業において、指令の内容を確認したい箇所にカーソルを移動させると、カーソル行に対応するシミュレーション結果が強調表示される。
【0013】
図1は、ワーク100の斜視図である。
この例で想定するワーク100は板部材であって、厚み方向に6つの穴102、穴104、穴106、穴108、穴110、穴112が空けられる。穴102は、板部材の中央に形成される。穴104は板部材の左下に形成され、穴106は同じく右下に形成され、穴108は同じく右側中央に形成され、穴110は同じく右上に形成され、さらに穴112は同じく左上に形成される。穴104、穴106、穴108、穴110、穴112の内径は、穴102の内径よりも小さい。
【0014】
ワーク100に対する穴あけを、工作機械700の一例であるマシニングセンタで行う。穴102の切削には、大きな径のドリルが使用され、穴104、穴106、穴108、穴110、穴112の切削には、穴102の切削に用いたドリルの径よりも小さな径のドリルが使用される。
【0015】
以下では、ワーク100の表面における中心を加工原点とする。また、正面方向から見た場合の右側がX軸の正方向であり、同じく上側がY軸の正方向であり、さらに手前がZ軸の正方向であるものとする。
【0016】
ユーザが、穴102、穴104、穴106、穴108、穴110および穴112の順に穴あけ加工を行うNCプログラムのコーディングをするものとする。
【0017】
図2は、26行目まで記述された編集画面202とシミュレーション画面204の画面図である。編集画面202とシミュレーション画面204は、操作盤702の操作画面704に表示される。
編集画面202とシミュレーション画面204は、編集−シミュレーション画面に含まれる。編集−シミュレーション画面には、アイコンボタン600a〜jとガイダンスボタン602が含まれる。アイコンボタン600a〜jについては、変形例2に関連して後述する。ガイダンスボタン602については、変形例1に関連して後述する。
【0018】
26行目における「G98G83Z−33.554R3.Q7.F240.」の入力に続いて、「;」キーが押下された後の状態を示している。「;」キーが押下されると、「;」が入力され、自動的に改行する。以下、同様である。シミュレーション画面204には、26行目まで制御動作を実行した場合の刃先経路(以下、単に「経路」ということがある)が表示される。
【0019】
なお、23行目より上で、穴102の切削に関するプログラムが記述されているものとする。したがって、シミュレーション画面204で穴102の切削動作に関する経路302が表示される。23行目以下では、穴102、穴104、穴106、穴108、穴110、穴112の切削に関するプログラムをコーディングするものとする。
【0020】
23行目「G90G54G17G0X−100.Y−50.;」について説明する。「G90」は、絶対値指令である。絶対値指令は、加工原点からの距離と向きで指令するという宣言である。「G54」は、ワーク座標系指令である。ワーク座標系指令は、加工原点位置の指定(ワークオフセット)である。「G17」は、XY平面指令である。XY平面指令は、XY平面に対して加工を行うという宣言である。「G0X−100.Y−50.」は、位置決めである。この位置決めで、X座標:−100mm、Y座標:−50mmの位置へ早送りで工具(この例では、ドリル)の刃先を移動させる。
【0021】
24行目「G43Z50.H45S1010M3;」について説明する。「G43」は、工具長補正指令である。「H45」は、45番の工具長補正値を適用することを意味する。「Z50.」は、「G0 Z50.」と同義である。この位置決めで、Z座標50mmまで早送りで工具の刃先を移動させる。「S1010」は、主軸回転数指令である。具体的には、工具の回転数を1010回/分に指定する。「M3」は、工具を回転させる主軸正転を指令する。
【0022】
25行目「Z50.M8;」について説明する。「Z50.」は、「G0 Z50.」と同義である。この位置決めで、Z座標:50mmまで早送りで工具の刃先を移動させる。「M8」は、クーラント吐出の指令である。ここまでの指令によって、工具の刃先は、経路304を経て、穴104に対する位置305に達している。位置305は、X座標:−100mm、Y座標:−50mm、Z座標:50mmである。
【0023】
26行目「G98G83Z−33.554R3.Q7.F240.」について説明する。「G98」は、イニシャル点レベル復帰の指令である。この指令は、イニシャル点まで戻ってから次の穴あけ位置に移動する宣言である。「G83」は、深穴ドリリング固定サイクルの指令である。この指令によって、穴104に対応する位置305をイニシャル点とする切削加工を行い、その後も別の位置をイニシャル点とする切削加工が繰り返される。「Z−33.554」は、穴底の位置を指令する。この指令によって、Z座標:−33.554mmの深さまで切削が行われる。「R3.」は、切削送りの開始位置を指令する。この指令による切削送りの開始位置は、Z座標:+3mmである。つまり、正面の3mm手前から、切削送りが始まる。「Q7.」は、1回あたりの切り込み量である。具体的には、7ミリの穴あけ動作と1ミリの逃げ動作とを繰り返すことを意味する。「F240.」は、送り速度指令である。具体的には、240mm/minで工具の刃先を移動させる。
【0024】
ユーザが26行目における指令の入力を終えると、「;」キーを押下する。この段階で、26行目の指令による穴104(中心軸X座標:−100mm、中心軸Y座標:−50mm)の切削に関連する経路が特定される。具体的には、イニシャル点の位置305からの接近、穴104の切削およびワーク100から位置305までの復帰が特定され、経路306として新たに表示される。26行目の指令によって追加された経路306は、太線によって強調表示される。この例では、新たな行のコード列による工作の挙動を示す部位を太線で示す。太線は、新たな行のコード列による工作の挙動を示す部位を表示する第1区別態様の例である。第1区別態様は、太線以外の表示であってもよい。
【0025】
図3は、27行目まで記述された編集画面202とシミュレーション画面204の画面図である。
この例は、27行目における「X100.」の入力に続いて、「;」キーが押下された後の状態を示している。シミュレーション画面204には、27行目まで制御動作を実行した場合の経路が表示される。
【0026】
「X100.」は、穴下降位置の指令である。27行目の指令によって、穴106(中心軸X座標:100mm、中心軸Y座標:−50mm)の切削に関連する経路が追加される。具体的には、まず位置305から次のイニシャル点の位置309までスライドする経路308が特定される。さらに、位置309からの接近、穴106の切削および位置309までの復帰に相当する経路310が特定される。27行目の指令によって追加された経路308および経路310は、太線によって強調表示される。
【0027】
図4は、28行目まで記述された編集画面202とシミュレーション画面204の画面図である。
この例は、28行目における「Y0」の入力に続いて、「;」キーが押下された後の状態を示している。シミュレーション画面204には、28行目まで制御動作を実行した場合の経路が表示される。
【0028】
「Y0」は、穴下降位置の指令である。28行目の指令によって、穴108(中心軸X座標:100mm、中心軸Y座標:0mm)の切削に関連する経路が追加される。具体的には、まず位置309から次のイニシャル点の位置313までスライドする経路312が特定される。さらに、位置313からの接近、穴108の切削および位置313までの復帰に相当する経路314が特定される。28行目の指令によって追加された経路312および経路314は、太線によって強調表示される。
【0029】
図5は、29行目まで記述された編集画面202とシミュレーション画面204の画面図である。
この例は、29行目における「Y50.」の入力に続いて、「;」キーが押下された後の状態を示している。シミュレーション画面204には、29行目まで制御動作を実行した場合の経路が表示される。
【0030】
「Y50.」は、穴下降位置の指令である。29行目の指令によって、穴110(中心軸X座標:100mm、中心軸Y座標:50mm)の切削に関連する経路が追加される。具体的には、まず位置313から次のイニシャル点の位置317までスライドする経路316が特定される。さらに、位置317からの接近、穴110の切削および位置317までの復帰に相当する経路318が特定される。29行目の指令によって追加された経路316および経路318は、太線によって強調表示される。
【0031】
図6は、30行目まで記述された編集画面202とシミュレーション画面204の画面図である。
この例は、30行目における「X−100.」の入力に続いて、「;」キーが押下された後の状態を示している。シミュレーション画面204には、30行目まで制御動作を実行した場合の経路が表示される。
【0032】
「X−100.;」は、穴下降位置の指令である。30行目の指令によって、穴112(中心軸X座標:−100mm、中心軸Y座標:50mm)の切削に関連する経路が追加される。具体的には、まず位置317から次のイニシャル点の位置321までスライドする経路320が特定される。さらに、位置321からの接近、穴112の切削および位置321までの復帰に相当する経路322が特定される。30行目の指令によって追加された経路320および経路322は、太線によって強調表示される。
【0033】
図2〜
図6に示したように、各行の入力の都度正しく指令を記述したかを確かめることができる。次に、誤った指令を記述した場合の例を示す。
【0034】
図7は、30行目で誤った記述がされた編集画面202とシミュレーション画面204の画面図である。
この例は、30行目における「X−100」の入力に続いて、「;」キーが押下された後の状態を示している。シミュレーション画面204には、30行目まで制御動作を実行した場合の経路が表示される。
【0035】
穴下降位置の指令として本来「X−100.;」(−100mm)と記述すべきところ、小数点の入力を忘れて「X−100;」となっている。この場合、工作機械700の制御装置は、「X−100;」を−0.1mmと解釈してしまう。したがって、プログラム編集装置においても、30行目の指令によって、穴114(中心軸X座標:−0.1mm、中心軸Y座標:50mm)の切削に関連する経路が追加される。具体的には、まず位置317から次のイニシャル点である位置325までスライドする経路324が特定される。さらに、位置325からの接近、穴114の切削および位置325までの復帰に相当する経路326が特定される。30行目の指令によって追加された経路324および経路326は、太線によって強調表示される。
【0036】
編集画面202において小数点の欠落は、あまり目立たないが、シミュレーション画面204における経路の相違は明白である。このように、経路の外観によって、ユーザがコーディングミスを認識しやすくできる。小数点の欠落の他にも、正負の間違い(たとえば、30行目の「X100.;」)、パラメータの間違い(たとえば、30行目の「Y−100.;」)あるいはGコードの間違い(たとえば、回転方向が違う指令の取り違い)などについても気づきやすくなる。
【0037】
また、以上のようにNCプログラムの入力作業におけるシミュレーション結果を強調表示するだけでなく、NCプログラムの見直し作業においてシミュレーション結果を強調表示してもよい。具体的には、NCプログラムを見直すために、ユーザがカーソル206を移動させると、カーソル206がある行に対応する経路が強調表示される。
【0038】
図8は、29行目までカーソル206を戻した編集画面202とシミュレーション画面204の画面図である。
この例は、
図6で上矢印キーを2回押下してカーソル206を、29行目へ移動させた状態を示している。シミュレーション画面204には、
図6と同様に30行目まで制御動作を実行した場合の経路が表示される。ただし、30行目の指令によって追加された経路320および経路322は、強調表示されていない。その代わり、カーソル206がある29行目の指令によって追加された経路316および経路318が、白抜き線によって強調表示されている。この例では、移動したカーソルが指す行のコード列による工作の挙動を示す部位を白抜き線で示す。白抜き線は、移動したカーソルが指す行のコード列による工作の挙動を示す部位を表示する第2区別態様の例である。第2区別態様は、白抜き線以外の表示であってもよい。また、第2区別態様を第1区別態様と同じ表示にしてもよい。
【0039】
図9は、28行目までカーソル206を戻した編集画面202とシミュレーション画面204の画面図である。
この例は、
図8で上矢印キーを1回押下してカーソル206を、28行目へ移動させた状態を示している。シミュレーション画面204には、
図6と同様に30行目まで制御動作を実行した場合の経路が表示される。ただし、カーソル206がある28行目の指令によって追加された経路312および経路314が、白抜き線によって強調表示されている。
【0040】
このように、入力済みの行へカーソル206を移動させると、カーソル206がある行に対応する経路が白抜き線によって強調表示される。したがって、どの行がどの経路に対応するかを一目で理解することができる。たとえば、ユーザがある経路を修正したいと思ったときに、その経路に相当する指令がどの行に記述されているかを編集画面202で見つけるのは、面倒であり、勘違いが起きやすい。本実施形態の場合には、シミュレーション画面204においてユーザが着目する経路が強調表示されるまで、カーソル206を上下に移動させれば該当行を特定することができるので、ユーザの労力が少なく、勘違いを防止できる。
【0041】
図10は、プログラム編集装置400の機能ブロック図である。
プログラム編集装置400の各構成要素は、CPU(Central Processing Unit)および各種コプロセッサ(coprocessor)などの演算器、メモリやストレージといった記憶装置、それらを連結する通信線を含むハードウェアと、記憶装置に格納され、演算器に処理命令を供給するソフトウェアによって実現される。コンピュータプログラムは、デバイスドライバ、オペレーティングシステム、それらの上位層に位置する各種アプリケーションプログラム、また、これらのプログラムに共通機能を提供するライブラリによって構成されてもよい。以下に説明する各ブロックは、ハードウェア単位の構成ではなく、機能単位のブロックを示している。
【0042】
プログラム編集装置400は、インターフェース処理部410、データ処理部440およびデータ格納部450を含む。
インターフェース処理部410は、キーボード、マウスやタッチパネルなどを介してユーザからの操作を受け付けるほか、画像表示や音声出力など、ユーザインターフェースに関する処理を担当する。インターフェース処理部410は、ネットワークを介する通信に関するインターフェース処理を担当してもよい。データ処理部440は、インターフェース処理部410により取得されたデータ、データ格納部450に格納されているデータに基づいて各種処理を実行する。データ処理部440は、インターフェース処理部410およびデータ格納部450のインターフェースとしても機能する。データ格納部450は各種データを格納する。
【0043】
インターフェース処理部410は、データ入力を受け付ける入力部420と、画像や音声等の各種情報を出力する出力部430を含む。
入力部420は、キーの押下によって文字コード、数字コード、記号コードおよび各種制御コードなどを受け付ける受付部422を含む。
【0044】
出力部430は、プログラム表示部432、画像表示部434および画面表示部436を含む。
プログラム表示部432は、編集画面202を生成して、表示する。画像表示部434は、シミュレーション画面204を生成して、表示する。画面表示部436は、Gコード入力ガイダンス画面を生成して、表示する。Gコード入力ガイダンス画面については、
図18に関連して後述する。プログラム表示部432と画像表示部434は、編集画面202とシミュレーション画面204を同時に表示させる。
【0045】
データ処理部440は、編集部442およびシミュレーション部444を含む。
編集部442は、NCプログラムの編集処理を実行する。シミュレーション部444は、NCプログラムによる工作の挙動をシミュレートする。
【0046】
データ格納部450は、保存記憶領域460および一時記憶領域470を含む。保存記憶領域460には、ハードディスクドライブ装置やフラッシュメモリのような不揮発性メモリが使用される。一時記憶領域470には、RAM(Random access memory)のような揮発性メモリが使用される。
【0047】
保存記憶領域460には、NCプログラムファイル462およびワーク定義ファイル464などが記憶される。
NCプログラムファイル462については、
図14に関連して後述する。ワーク定義ファイル464は、加工前のワークの形状に関するデータおよび加工後のワークの形状に関するデータが含まれる。
【0048】
一時記憶領域470には、NCプログラムコード表472、カーソル位置474、ワーク3Dモデル476および経路テーブル478などが記憶される。
NCプログラムコード表472およびカーソル位置474については、
図11〜
図13に関連して後述する。ワーク3Dモデル476は、工作機械700内において加工されるワークの三次元モデルである。各加工段階におけるワーク3Dモデル476が、その加工に関する指令が記述されているNCプログラムの行の番号に対応づけられる。経路テーブル478には、3次元空間において工具の刃先が移動する各経路が格納される。各経路には、その移動に関する指令が記述されているNCプログラムの行の番号が対応づけられる。
【0049】
図11は、
図2に対応するカーソル位置474とNCプログラムコード表472のデータ構造図である。
NCプログラムコード表472は、行毎の行レコードを有し、各行レコードには、行番号とその行のコード列が設定される。NCプログラムコード表472に基づいて、NCプログラムが編集され、編集画面202が表示される。カーソル位置474は、編集画面202に表示されるカーソル206の行番号と、その行のコード列のインデックスとを示す。インデックスは、配列における要素を識別する変数であって、先頭番号を0とし、配列中の要素順位を示す。この例でN個のコードを含むコード列について、各コードはインデックスの0,1,・・・N−1で特定される。
図2でカーソル206が27行目の1文字目を指しているので、カーソル位置474は、「27:0」である。なお、27行目のコード列は、空である。
【0050】
図12は、
図6に対応するカーソル位置474とNCプログラムコード表472のデータ構造図である。
NCプログラムコード表472は、
図11と比較して、27行目のコード列に「X100.;」が設定され、さらに28行目から31行目までの行レコードが追加されている。
図6でカーソル206が31行目の1文字目を指しているので、カーソル位置474は、「31:0」である。また、31行目のコード列は、空である。
【0051】
図13は、
図8に対応するカーソル位置474とNCプログラムコード表472のデータ構造図である。
NCプログラムコード表472は、
図12と同様である。
図8でカーソル206が29行目の6文字目を指しているので、カーソル位置474は、「29:5」である。
【0052】
図14は、
図12と
図13に対応するNCプログラムファイル462のデータ構造図である。
このNCプログラムファイル462は、
図12と
図13に示したNCプログラムコード表472から変換されたものであって、NCプログラムの内容自体は同じである。NCプログラムファイル462は、テーブル形式ではなく、テキスト形式である。テキスト形式では、テーブル形式における各行のコード列の間に、図中「↓」で示した改行コードが挿入される。また、NCプログラムファイル462において改行コードで区切られる各コード列について行レコードを設けることによって、NCプログラムコード表472へ変換することも可能である。
【0053】
図15と
図16は、プログラム編集装置400におけるメイン処理過程を示すフローチャートである。
ユーザによってNCプログラムファイル462の読み込みが指示された場合には、読み込み処理を実行する(S12)。
【0054】
読み込み処理において、編集部442は、NCプログラムファイル462をNCプログラムコード表472に変換する。具体的には、編集部442は、改行コードで区切られているコード列を、順に行レコードに格納する。つまり、NCプログラムファイル462にN個の改行コードが含まれる場合には、NCプログラムコード表472にN+1個の行レコードが設けられる。カーソル位置474の行番号は、最終行の番号とする。カーソル位置474のインデックスは、最終行のコード列に含まれるコード数と同じにする。これによって、最後尾にカーソル206が設定される。
【0055】
NCプログラムファイル462の読み込みが指示されない場合には、コード列が空である行レコードを1個生成する。カーソル位置474の行番号は1とし、インデックスは0とする。
【0056】
文字キーが押下された場合には(S14のY)、受付部422が文字コードを受け付けて、編集部442は文字挿入処理を実行する(S16)。文字挿入処理において、編集部442は、カーソル位置474の行番号で特定されるコード列のうち、カーソル位置474のインデックスで特定される箇所に、文字キーに対応する文字を挿入し、インデックスの値を1増加させる。プログラム表示部432は、文字を挿入した行を表示し直し、右へ移動したカーソル206を表示する。そして、S14の処理へ戻る。
【0057】
数字キーが押下された場合には(S18のY)、受付部422が数字コードを受け付けて、編集部442は数字挿入処理を実行する(S20)。数字挿入処理において、編集部442は、カーソル位置474の行番号で特定されるコード列のうち、カーソル位置474のインデックスで特定される箇所に、数字キーに対応する数字を挿入し、インデックスの値を1増加させる。プログラム表示部432は、数字を挿入した行を表示し直し、右へ移動したカーソル206を表示する。そして、S14の処理へ戻る。
【0058】
記号キーが押下された場合には(S22のY)、受付部422が記号コードを受け付けて、編集部442は記号挿入処理を実行する(S24)。記号挿入処理において、編集部442は、カーソル位置474の行番号で特定されるコード列のうち、カーソル位置474のインデックスで特定される箇所に、記号キーに対応する記号を挿入し、インデックスの値を1増加させる。プログラム表示部432は、記号を挿入した行を表示し直し、右へ移動したカーソル206を表示する。そして、S14の処理へ戻る。
【0059】
右矢印キーが押下された場合には(S26のY)、受付部422が右矢印コードを受け付けて、編集部442は右矢印移動処理を実行する(S28)。右矢印移動処理において、編集部442は、カーソル206が行末にあるか否かを判定する。具体的には、編集部442は、カーソル位置474のインデックスの値がその行のコード列のコード数と一致するか否かを判定する。カーソル206が行末より前にあれば、編集部442は、インデックスの値を1増加させ、プログラム表示部432は、右へ移動したカーソル206を表示する。
【0060】
カーソル206が行末にあれば、編集部442は、さらにカーソル206が最終行にあるか否かを判定する。具体的には、編集部442は、カーソル位置474の行番号が最終行の番号であるか否かを判定する。カーソル206が最終行にある場合には、プログラム表示部432は、そのままの表示とする。
【0061】
カーソル206が最終行以外の行末にある場合には、編集部442は、カーソル位置474の行番号の値を1増加させ、同じくインデックスの値を0とする。そして、プログラム表示部432は、1つ下の行の先頭にカーソル206を表示する。右矢印キーの操作でカーソル206が下の行へ移った場合には、シミュレーション処理を実行する(S29)。シミュレーション処理によって、白抜き線の強調表示が新たなカーソル行による挙動の部位に切り替わる。また、元のカーソル行のコード列が変更されている場合には、元のカーソル行において変更されたコード列による挙動を示すシミュレーション画像が表示される。そして、S14の処理へ戻る。シミュレーション処理については、
図17に関連して詳述する。
【0062】
左矢印キーが押下された場合には(S30のY)、受付部422が左矢印コードを受け付けて、編集部442は左矢印移動処理を実行する(S32)。左矢印移動処理において、編集部442は、カーソル206が行頭にあるか否かを判定する。具体的には、編集部442は、カーソル位置474のインデックスが0であるか否かを判定する。カーソル206が行頭より後にあれば、編集部442は、カーソル位置474のインデックスの値を1減少させ、プログラム表示部432は、左へ移動したカーソル206を表示する。
【0063】
カーソル206が行頭にあれば、編集部442は、さらにカーソル206が1行目にあるか否かを判定する。具体的には、編集部442は、カーソル位置474の行番号が1であるか否かを判定する。カーソル206が1行目の行頭にある場合には、プログラム表示部432は、そのままの表示とする。
【0064】
カーソル206が2行目以降の行頭にある場合には、編集部442は、カーソル位置474の行番号の値を1減少させ、同じくインデックスの値を上の行のコード数と同じにする。そして、プログラム表示部432は、1つ上の行の末尾にカーソル206を表示する。左矢印キーの操作でカーソル206が上の行へ移った場合には、シミュレーション処理を実行する(S33)。シミュレーション処理によって、白抜き線の強調表示が新たなカーソル行による挙動の部位に切り替わる。また、元のカーソル行のコード列が変更されている場合には、元のカーソル行において変更されたコード列による挙動を示すシミュレーション画像が表示される。そして、S14の処理へ戻る。
【0065】
左矢印キーが押下されていないと判定した場合(S30のN)、
図16に示したS34の処理へ移る。
【0066】
上矢印キーが押下された場合には(S34のY)、受付部422が上矢印コードを受け付けて、編集部442は上矢印移動処理を実行する(S36)。上矢印移動処理において、編集部442は、カーソル206が1行目にあるか否かを判定する。具体的には、編集部442は、カーソル位置474の行番号が1であるか否かを判定する。カーソル206が1行目にある場合には、プログラム表示部432は、そのままの表示とする。
【0067】
カーソル206が2行目以降にある場合には、編集部442は、カーソル位置474の行番号の値を1減少させる。また、カーソル位置474のインデックスの値が上の行のコード数を超える場合には、編集部442は、インデックスの値をコード数と同じにする。そして、プログラム表示部432は、上の行にカーソル206を表示する。上矢印キーの操作でカーソル206が上の行へ移った場合には、シミュレーション処理を実行する(S37)。シミュレーション処理によって、白抜き線の強調表示が新たなカーソル行による挙動の部位に切り替わる。また、元のカーソル行のコード列が変更されている場合には、元のカーソル行において変更されたコード列による挙動を示すシミュレーション画像が表示される。そして、S14の処理へ戻る。
【0068】
下矢印キーが押下された場合には(S38のY)、受付部422が下矢印コードを受け付けて、編集部442は下矢印移動処理を実行する(S40)。下矢印移動処理において、編集部442は、カーソル206が最終行にあるか否かを判定する。具体的には、編集部442は、カーソル位置474の行番号が最終行の番号であるか否かを判定する。カーソル206が最終行にある場合には、そのままの表示とする。
【0069】
カーソル206が最終行以外にある場合には、編集部442は、カーソル位置474の行番号の値を1増加させる。また、カーソル位置474のインデックスの値が下の行のコード数を超える場合には、編集部442は、インデックスの値をコード数と同じにする。そして、プログラム表示部432は、下の行にカーソル206を表示する。下矢印キーの操作でカーソル206が下の行へ移った場合には、シミュレーション処理を実行する(S41)。シミュレーション処理によって、白抜き線の強調表示が新たなカーソル行による挙動の部位に切り替わる。また、元のカーソル行のコード列が変更されている場合には、元のカーソル行において変更されたコード列による挙動を示すシミュレーション画像が表示される。そして、S14の処理へ戻る。
【0070】
「;」キーが押下された場合には(S42のY)、受付部422が「;」コードを入力して、編集部442は改行処理を実行する(S44)。改行処理において、編集部442は、カーソル206がある行の後に新しい行を挿入する。挿入箇所以降の各行の行番号は、1つ繰り下げる。また、編集部442は、カーソル206がある行のコード列のうち、カーソル206以降の部分を新しい行のコード列へ移す。つまり、カーソル206の位置でコード列を切り分ける。編集部442は、カーソル位置474の行番号の値を1増加させ、同じくインデックスの値を0とする。プログラム表示部432は、下の行の先頭へ移ったカーソル206を表示する。そして、シミュレーション部444は、シミュレーション処理を実行する(S45)。
【0071】
削除キーが押下された場合には(S46のY)、受付部422が削除コードを受け付けて、編集部442は削除処理を実行する(S48)。削除処理において、編集部442は、カーソル206が行末にあるか否かを判定する。具体的には、編集部442は、インデックスの値がその行のコード数と一致するか否かを判定する。カーソル206の位置が行末でなければ、編集部442は、その行のコード列のうちインデックスが指すコードを削除し、プログラム表示部432は、その行を表示し直す。カーソル206が行末にあれば、編集部442は、次の行のコード列を上の行のコード列に加える。次の行は無くなり、その下以降の行が繰り上げられる。プログラム表示部432は、カーソル206がある行以降を表示し直す。そして、シミュレーション部444は、シミュレーション処理を実行する(S49)。
【0072】
終了指示を受け付けた場合には(S50のY)、書き込み処理を実行する(S52)。書き込み処理において、編集部442は、NCプログラムコード表472をNCプログラムファイル462に変換し、保存する。そして、メイン処理を終了する。
【0073】
図17は、シミュレーション処理過程を示すフローチャートである。
シミュレーション部444は、NCプログラムコード表472における行レコードを順次特定する(S60)。シミュレーション部444は、その行レコードのコード列の指令による経路を算定する(S62)。Gコードなどの指令による経路の算定方法は、従来技術と同様でもよい。算定された経路は、その行レコードの行番号を対応づけて経路テーブル478に記憶される。シミュレーション部444は、その行レコードのコード列の指令による加工内容に応じてワーク3Dモデル476を変形させる(S64)。Gコードなどの指令によるワーク3Dモデル476の変形方法は、従来技術と同様でもよい。変形されたワーク3Dモデル476は、その行レコードの行番号を対応づけて一時記憶領域470に記憶される。シミュレーション部444は、最終行の1つ前に至るまで(S66のN)、S60へ戻ってS62とS64の処理を繰り返す。
【0074】
最終行の1つ前まで処理すると(S66のY)、画像表示部434は、シミュレーション画面204に最新のワーク3Dモデル476を描画する(S68)。
【0075】
カーソル206が最終行にあれば(S70のY)、画像表示部434は、最終行の1つ前の行の指令によって得られた経路を示す線に太線属性を設定する(S72)。つまり、カーソル位置474の行番号が最終行の行番号と一致する場合には、最終行の行番号−1に対応する経路が太線で強調される。
【0076】
一方、カーソル206が最終行より上にあれば(S70のN)、画像表示部434は、カーソル行の指令によって得られた経路を示す線に白抜き属性を設定する(S74)。つまり、カーソル位置474の行番号が最終行の行番号と一致しない場合には、カーソル位置474の行番号に対応する経路が白抜き線で強調される。
【0077】
画像表示部434は、上述の各経路の線をシミュレーション画面204に描画する(S76)。そして、S14の処理へ戻る。
【0078】
これにより、
図2〜
図7に関連して説明したとおり、NCプログラムの入力作業において「;」キーを押下すると、空の行が追加されその行にカーソル206が移り、元の行で入力した指令に応じた太線の経路が現れる。したがって、ユーザは、想定どおりにコーディングできたかをすぐに確認できる。また、どの段階までコーディングしたかを常に意識しているので、勘違いによる記述の重複や欠落を防ぎやすい。
【0079】
また、
図8と
図9に関連して説明したとおり、NCプログラムの見直し作業においてカーソル206を移動させると、カーソル206がある行の指令による経路が白抜き線に変る。したがって、ユーザは、プログラムの記述と工作の挙動との関係を把握しやすい。
【0080】
[変形例1]
コーディングを補助するために、指令入力のガイダンス画面を表示するようにしてもよい。ここでは、Gコード入力のガイダンス画面の例を示す。
【0081】
図18は、Gコード入力ガイダンス画面の画面図である。
Gコード入力ガイダンス画面500は、編集画面202におけるGコードの記述をガイドする。ユーザによって編集画面202内のガイダンスボタン602(
図2)がタッチされると、画面表示部436はガイダンス画面500(
図18)を表示する。ユーザがGの入力領域502にGコードの番号を入力すると、Gコードの種類(たとえば、「ヘリカル穴あけサイクル」)および引数の構成(たとえば、「G439(X_Y_Z_R_H_I_J_K_U_V_W)」)が表示され、各引数に対応する入力領域504a〜hが表示される。ユーザがいずれかの引数の入力領域504を選択すると、入力領域504にその引数の値を入力することが可能となる。この例では、ユーザによって選択された引数Xの入力領域504aにカーソル206が表示され、引数Xの値を受け付ける状態を表している。また、選択された引数Xに関する概念
図506と説明文508が表示される。引数Xに関する概念
図506と説明文508を参照することによって、ユーザは引数Xの変数としての意味を理解できる。入力された引数の値は、引数領域514に表示される。他の引数についても同様である。図中の「*」は、値入力が必須であることを示している。ユーザが挿入ボタン510にタッチすると、Gコードと各引数の値が、所定の書式に従って、編集画面202のカーソル位置474に挿入される。ユーザが戻るボタン512にタッチした場合には、何も挿入されない。このようにすれば、ユーザはGコード毎の書式を調べる必要がなく、Gコードに関する記述の入力が簡単になる。ユーザが入力領域502へGコードの番号を直接入力せずに、Gコード入力ガイダンス画面の前に表示されるリストからGコードを選択できるようにしてもよい。
【0082】
[変形例2]
変形例2は、アイコンボタンのタッチ操作によるガイダンスメッセージ表示に関する。プログラム編集装置は、タッチパネルを用いるものとする。
【0083】
アイコンボタンは見た目で何をするためのボタンなのかがわかりにくいという課題がある。ガイダンスメッセージでボタンの説明を表示したいが、固定のメッセージ領域を確保できない。パーソナルコンピュータでは、マウスオーバーによりガイダンスメッセージを表示できるが、タッチパネルではマウスオーバーのような操作ができない。
【0084】
図19は、編集−シミュレーションの画面におけるガイダンスメッセージ604bの例を示す図である。画面表示部436は、シミュレーション画像を表示することを実行するためのボタン600aなどのボタン600を表示するボタン表示部を有する。さらに、インターフェース処理部410の入力部420は、タッチパネルにおけるタッチ操作を検出するタッチ検出部を有する。タッチ検出部が、アイコンボタン600aの長いタッチを検出すると、ボタン表示部は、アイコンボタン600aに対応する機能「シミュレーション開始」を示すガイダンスメッセージ604bを、アイコンボタン600aの近接位置に表示する。他のアイコンボタン600についても同様に、イベント検出部が、アイコンボタン600の長いタッチを検出すると、ボタン表示部は、そのアイコンボタン600に対応する機能内容を示すガイダンスメッセージ604bを、そのアイコンボタン600の近接位置に表示する。また、メッセージ表示部は、「NCプログラムの実行順に強調表示されます。」という機能メッセージ606を表示する。ガイダンスメッセージ表示中にタッチしている指を放しても「シミュレーション開始」の機能は実行されない。ただし、短くタッチした場合には、シミュレーション開始の機能を実行する。なお、イベント検出部は、アイコンボタン600に対するタッチが継続している時間が基準値を超えた場合に、アイコンボタン600の長いタッチが行われたと判定する。アイコンボタン600に対するタッチが継続している時間が基準値を下回る場合には、イベント検出部は、アイコンボタン600の短いタッチが行われたと判定する。また、データ格納部450は、保存記憶領域460に、アイコンボタン600毎に、そのアイコンボタン600に対応する機能内容を示すガイダンスメッセージ604を記憶するガイダンスメッセージ記憶部を有するものとする。
【0085】
図19に示したアイコンボタン600について説明する。
タッチ検出部が、ファイル一覧ボタン600gの長いタッチ(長押し)を検出すると、画面表示部436は、ファイル一覧画面に遷移する。タッチ検出部が、編集ボタン600hの長いタッチ(長押し)を検出すると、画面表示部436は、ファイル一覧画面でユーザに選択されたファイルの編集画面に遷移する。タッチ検出部が、シミュレーションボタン600iの長いタッチ(長押し)を検出すると、画面表示部436は、編集しているファイルに設定されたNCプログラムをシミュレーションする画面に遷移する。タッチ検出部が、フォアグラウンド/バックグラウンド切替ボタン600jの長いタッチ(長押し)を検出すると、画面表示部436は、フォアグラウンド画面とバックグラウンド画面を切り替える。例えばバックグラウンド画面で編集したNCプログラムを運転する場合は、フォアグラウンド画面でプログラムを実行する必要があるので、当該ボタンでフォアグラウンド画面に切り替える。
【0086】
図20は、バックグラウンド編集の画面図である。バックグラウンド編集画面は、アイコンボタン600g〜j,600r,600sを有する。
図20〜
図23に示すバックグラウンド編集の画面は、
図2〜
図9の「編集画面204とシミュレーション画面204」と同様に、操作盤702の操作画面704に表示される。また、バックグラウンド編集の画面は、「編集画面204とシミュレーション画面204」と切り替え可能である。
【0087】
図20に示したアイコンボタン600について説明する。
タッチ検出部が、追加ボタン600rの長いタッチ(長押し)を検出すると、データ作成部は、データを新規作成する。タッチ検出部が、表示情報切替ボタン600sの長いタッチ(長押し)を検出すると、ボタン表示部は、2階層目のツールバーを表示する。表示項目のチェック状態を変更することで、画面に表示する表示項目を変更できる。
【0088】
図21は、バックグラウンド編集の画面におけるガイダンスメッセージ604cの例を示す図である。タッチ検出部が、アイコンボタン600sの長いタッチを検出すると、ボタン表示部は、アイコンボタン600sに対応する機能「表示情報変更」を示すガイダンスメッセージ604cを、アイコンボタン600sの近接位置に表示する。
【0089】
図22は、バックグラウンド編集画面で工程が選択された状態を示す図である。いずれかの工程が選択された状態で、ボタン表示部は、さらにアイコンボタン600t〜wを表示する。
【0090】
図22に示したアイコンボタン600について説明する。
タッチ検出部が、編集切替ボタン600tの長いタッチ(長押し)を検出すると、編集部442は、加工工程の編集モードを切り替える。編集モードを切り替えることで、対話形式で設定した加工工程のNCプログラムを手編集できる。タッチ検出部が、加工ON/OFFボタン600uの長いタッチ(長押し)を検出すると、切り替え部は、加工工程の実行/非実行を切り替える。加工OFFに設定することで当該加工工程はNCプログラムに出力されなくなる。タッチ検出部が、削除ボタン600vの長いタッチ(長押し)を検出すると、データ削除部は、ユーザが選択したデータを削除する。タッチ検出部が、複製ボタン600wの長いタッチ(長押し)を検出すると、データ複製部は、ユーザが選択したデータを複製する。
【0091】
図23は、バックグラウンド編集の画面におけるガイダンスメッセージ604dの例を示す図である。タッチ検出部が、アイコンボタン600uに対する長いタッチを検出すると、ボタン表示部は、アイコンボタン600uに対応する機能「加工OFF」を示すガイダンスメッセージ604dを、そのアイコンボタン600uの近接位置に表示する。なお、加工OFFは、その加工工程を無効にする機能である。加工OFFに設定された工程は、実行されない。
【0092】
[その他の変形例]
また、シミュレーション画面204における強調表示の態様は、太線や白抜き線以外でもよい。強調する経路に特定の色や輝度を施してもよい。あるいは、強調する経路をアニメーションで表示してもよい。上述の強調表示は、特定の態様による表示の例である。例示した強調表示に相当する経路が、その他の通常表示による経路と区別できる程度の態様で表示されてもよい。
【0093】
また、太線で例示した経路と白抜き線で例示した経路について、表示態様を共通にしてもよい。両方とも同じ太さの線で表示してもよいし、両方とも同じ線種の線で表示してもよい。両方とも同じ色の線で表示してもよいし、両方とも同じ輝度の線で表示してもよい。また、両方とも同じアニメーションで表示してもよい。
【0094】
また、シミュレーション画面204において、カーソルがある行より下の行の番号に対応する経路を表示せず、カーソルがある行までに対応する経路だけを表示するようにしてもよい。つまり、たとえば
図8で、経路320と経路322を表示しなくてもよい。また、
図9で経路316、経路318、経路320及び経路322を表示しなくてもよい。具体的な処理としては、
図17のS66において、シミュレーション部444がカーソル行まで処理を終えたか否かを判定する。カーソル行まで処理していなければ(S66のN)、S60へ戻ってS62とS64の処理を繰り返す。カーソル行まで処理していれば(S66のY)、画像表示部434は、シミュレーション画面204にワーク3Dモデル476を描画する(S68)。
【0095】
また、シミュレーション画面204において、経路のみを表示して、ワーク100を表示しないようにしてもよい。具体的な処理としては、S64の処理およびS68の処理を省いてもよい。
【0096】
また、シミュレーション画面204において、ワーク100のみを表示して、経路を表示しないようにしてもよい。具体的な処理としては、S72の処理、S74の処理およびS76の処理を省いてもよい。
【0097】
また、メイン処理において、文字挿入処理、数字挿入処理および記号挿入処理の後に、シミュレーション処理を実行してもよい。このようにすれば、コードの挿入によって指令を修正した時点で、修正された内容によるシミュレーションが表示される。
【0098】
また、編集画面202において改行キーが入力された場合に、新しい行の先頭に「;」を自動的に入力するようにしてもよい。
【0099】
図17に関連して説明したシミュレーション処理について、通常はNCプログラムの最初から実行するが、NCプログラムの最初から実行されなくてもよい。たとえば、NCプログラムの途中からシミュレーション処理を実行してもよい。その場合には、
図17のS60において、シミュレーション部444は、シミュレーションを行う途中のコード列から、NCプログラムコード表472における行レコードの特定を開始する。たとえば、受付部422において、シミュレーションを開始させるコード列の指定を受け付けて、シミュレーション部444は、指定されたコード列の行レコードからS60以降の処理を開始してもよい。受付部422は、指定されるコード列の行番号を受け付けてもよいし、指定されるコード列に対するタッチ操作やクリック操作を受け付けてもよい。そうすれば、NCプログラムの途中から工作の挙動を示すシミュレーション画像の表示が行われる。また、ユーザが追加したコード列の複数行前からシミュレーションを実行するようにしてもよい。追加したコード列から遡る行数は、たとえば100行から200行の範囲内である。遡る行数は、予め決めておいてもよいし、ユーザが指定してもよい。予め決めておく場合には、保存記憶領域460に所定の遡り行数を記憶しておく。ユーザが指定する場合には、受付部422において遡り行数を受け付ける。シミュレーション部444は、NCプログラムに追加されたコード列の行番号から遡り行数を引いて、S60において、シミュレーションを開始させる行レコードを特定する。これにより、作業者は、変更したNCプログラムの箇所の確認を容易に行うことができる。
【0100】
また、NCプログラムの変更後のシミュレーションの再開について、新規にコードを追加した箇所またはコードを編集した箇所からシミュレーション動画で5秒から15秒の範囲内で前まで遡って再開するように、ユーザ操作あるいは自動的にシミュレーション部444に設定してもよい。たとえば、シミュレーションの動作において1行に割り当てられる単位動作時間(行単位の動画再生時間)を決めておいてもよい。あるいは、NCプログラムの行ごとの指令に応じて各行に割り当てられる工作の挙動を示すシミュレーション画像の動作時間(指令別の動画再生時間)を算出してもよい。シミュレーション部444において、指令の種類に対応して動画再生時間を決めておいてもよい。シミュレーション部444は、新規行または編集行から昇順に各行の動作時間(動画再生時間)を合算することによって遡って再生される動画の再生時間を算出する。そして、シミュレーション部444は、動画再生時間が5秒から15秒の範囲内に収まる動画再生開始の行を特定する。このようにして、新たな行のコード列を受け付けたとき、または、1つの行のコード列の変更を付け付けたときに、シミュレーション画像においてそのコード列から5秒から15秒の範囲の動画再生時間前まで遡ってシミュレーション画像の動画再生を行える。プログラムチェックの5秒から15秒の範囲であっても、実際の加工はもっと長く(たとえば、1時間)かかる場合もあり、実際の加工時間とシミュレーションの動作時間は異なる。プログラムチェックで5秒から15秒の範囲内で遡って確認すれば、長い時間かかる加工工程も短い時間で効率よく確認できる。
【0101】
対象とする工作機械700は、マシニングセンタ以外でもよい。たとえば、ターニングセンタや複合加工機等に、上述の実施形態や変形例を適用してもよい。
【0102】
これらの工作機械700は、いずれも、工作するための工作部と、画面を有し工作機械の操作を行うための操作盤702と、工作するために、工作部内の機能部の位置を制御する数値制御部(NC装置)とを有する。工作機械700がマシニングセンタであれば、工作部は、刃物工具、主軸、主軸を回転させるサーボモーター、パレット、ATC(Automatic Tool Changer:自動工具交換装置)および工具マガジンなどを含み、フライス削り、中ぐり、穴あけやねじ立てなどの加工を行う。工作機械700がターニングセンタであれば、工作部は、刃物工具、回転軸、回転軸を回転させるサーボモーター、タレット、ATCおよび工具マガジンなどを含み、主に旋削加工を行う。マシニングセンタの主軸やターニングセンタのタレットは、工作部内の機能部に相当する。
【0103】
数値制御部は、工作部のサーボモーターやATCなどに対して、直接あるいはPLC(Programmable Logic Controller)を介して数値制御を行って工作部内の機能部の位置や工具の選択を制御する。マシニングセンタの数値制御部は、機能部である主軸を移動させる。ターニングセンタの数値制御部は、機能部であるタレットを移動させる。これによって加工の作用箇所である刃先が移動することになる。
【0104】
工作部の機能部は、その他のレーザ照射部や粉末吐出部などであってもよい。つまり、数値制御部は、レーザ照射部や粉末吐出部などを移動させることもある。レーザ照射部であれば、レーザ光が加工の作用箇所に相当し、粉末吐出部であれば、飛散した粉末の分布域が加工の作用箇所に相当する。つまり、工作部の機能部は、加工の作用箇所を操る部位である。
【0105】
上述したシミュレーション部444、画像表示部434および画面表示部434は、工作機械700用のプログラムと、工作機械700内に保存されている機能部の情報とをもとに、工作の挙動を示すシミュレーション画像を画面に表示制御する表示制御部の例である。シミュレーション部444は、加工内容に応じて仮想の3次元空間におけるワーク3Dモデル476を変形させる。工作の挙動を示すシミュレーション画像は、このワーク3Dモデル476を所定視点から観察したものとして画像表示部434が生成した2次元画像である。主に、段階的な加工によって都度変化するワークの形状が描かれる。上述の例では、切削でワークに形成された穴の形状を描いた。シミュレーション部444は、更に仮想の3次元空間における加工の作用箇所(刃先の経路、レーザ光、粉末の分布域など)を算定する。工作の挙動を示すシミュレーション画像には、この作用箇所を所定視点から観察したものとして画像表示部434が生成した加工の作用箇所を示す描画(刃先の経路の線、レーザ光の線や粉末の分布域の表示など)も含まれる。
【0106】
工作機械700用のプログラムとは、たとえばNCプログラムを指し、シミュレーション部444は、このプログラムをもとにしてワーク3Dモデル476を変形させ、加工の作用箇所を特定する。また、シミュレーション部444は、工作機械700内の機能部情報記憶部に保存されている機能部の情報も用いる。機能部の情報には、機能部の形状、機能部の機能、機能部の工作機械700内での位置 機能部の基準点とその位置などの情報が含まれる。
【0107】
このように、工作機械700の加工によって変化するワークの形状が描かれた画像が、シミュレーション画像である。また、シミュレーション画像には、上述のように加工の作用箇所も描かれる場合がある。これらの工作の挙動を示すシミュレーション画像は、時系列に順次変化する複数のシミュレーション静止画またはシミュレーション動画である。
【0108】
なお、本発明は上記実施形態や変形例に限定されるものではなく、要旨を逸脱しない範囲で構成要素を変形して具体化することができる。上記実施形態や変形例に開示されている複数の構成要素を適宜組み合わせることにより種々の発明を形成してもよい。また、上記実施形態や変形例に示される全構成要素からいくつかの構成要素を削除してもよい。
【解決手段】本発明のある態様におけるプログラム編集装置は、工作機械用の数値制御プログラムを受け付ける受付部と、数値制御プログラムの各行におけるコード列を表示するプログラム表示部と、(i)数値制御プログラムの中に新たな行のコード列を受け付けたときに、新たな行のコード列による工作の挙動を示すシミュレーション画像、または、(ii)数値制御プログラムの中に1つの行のコード列の変更を受け付けたときに、変更された行のコード列による工作の挙動を示すシミュレーション画像、を表示する画像表示部とを有する。