(57)【特許請求の範囲】
【請求項１】
工作機械で複数の行を有するＮＣプログラムを実行しながら加工を行うためのＮＣプログラムファイルを受け付ける受付部と、
前記ＮＣプログラムファイルのＮＣプログラムの各行におけるコード列を実行順に並べて複数の行を表示するプログラム表示部と、
(i)前記ＮＣプログラムの中に新たな行のコード列を受け付けたときに、前記新たな行のコード列による工作の挙動を示すシミュレーション画像、または、(ii)前記ＮＣプログラムの中に１つの行のコード列の変更を受け付けたときに、前記変更された行のコード列による前記工作の挙動を示すシミュレーション画像、を表示する画像表示部と、を有し、
前記新たな行のコード列を受け付けたとき、または、前記１つの行のコード列の変更を受け付けたときに、前記ＮＣプログラムの前記コード列のうち、前記新たな行または前記変更された行より前の途中の行から前記シミュレーション画像の再生を行う、プログラム編集装置。
【請求項２】
シミュレーション画像において前記新たな行のコード列または前記変更された行のコード列から５秒から１５秒の範囲の動画再生時間前まで遡って、前記シミュレーション画像の前記再生を行う、請求項１に記載のプログラム編集装置。
【請求項３】
前記新たな行または前記変更された行から予め記憶している遡り行数またはユーザが指定した遡り行数だけ遡った行のコード列から前記シミュレーション画像の前記再生を行う、請求項１または２に記載のプログラム編集装置。
【請求項４】
コード列に含める指令の種類に応じて、前記指令で使用されるパラメータごとの入力領域を有する入力ガイダンス画面を表示する画面表示部を、さらに有し、
前記受付部は、前記入力ガイダンス画面の前記入力領域に入力された値を、前記指令のパラメータとして前記コード列に加える、請求項１から３のいずれか１項に記載のプログラム編集装置。
【請求項５】
前記シミュレーション画像を表示することを実行するためのボタンを表示するボタン表示部、を有し、
前記ボタンを長押しすると、前記ボタンを押した際に実行させる機能のガイダンスを前記ボタンの近くに表示する、請求項１から４のいずれか１項に記載のプログラム編集装置。
【請求項６】
画面を有し工作機械の操作を行うための操作盤と、
工作するための工作部と、
工作するために、前記工作部内の機能部の位置を制御する数値制御部と、
前記工作機械の固有機械情報を含む工作機械用のプログラムと、前記工作機械内に保存されている前記機能部の情報と、をもとに、工作の挙動を示すシミュレーション画像を前記画面に表示制御する表示制御部と、を備え、
前記表示制御部は、(i)前記プログラムの中に新たな行のコード列を受け付けたときに、前記新たな行のコード列による前記工作の挙動を示すシミュレーション画像、または、(ii)前記プログラムの中に１つの行のコード列の変更を受け付けたときに、前記変更された行のコード列による前記工作の挙動を示すシミュレーション画像、を表示制御し、
前記新たな行のコード列を受け付けたとき、または、前記１つの行のコード列の変更を受け付けたときに、前記プログラムの前記コード列のうち、前記新たな行または前記変更された行より前の途中の行から前記シミュレーション画像の再生を行う、工作機械。
【請求項７】
前記シミュレーション画像を表示することを実行するためのボタンが表示された前記画面上において、前記ボタンを長押しすると、前記ボタンを押した際に実行される機能のガイダンスが前記ボタンの近くに表示される、請求項６に記載の工作機械。
【請求項８】
工作機械で複数の行を有するＮＣプログラムを実行しながら加工を行うためのＮＣプログラムファイルを受け付ける機能と、
前記ＮＣプログラムファイルのＮＣプログラムの各行におけるコード列を実行順に並べて複数の行を表示する機能と、
(i)前記ＮＣプログラムの中に新たな行のコード列を受け付けたときに、前記新たな行のコード列による工作の挙動を示すシミュレーション画像、または、(ii)前記ＮＣプログラムの中に１つの行のコード列の変更を受け付けたときに、前記変更された行のコード列による前記工作の挙動を示すシミュレーション画像、を表示する機能と、
前記新たな行のコード列を受け付けたとき、または、前記１つの行のコード列の変更を受け付けたときに、前記ＮＣプログラムの前記コード列のうち、前記新たな行または前記変更された行より前の途中の行から前記シミュレーション画像の再生を行う機能と、をコンピュータに発揮させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工作機械用の数値制御プログラムを編集する技術に関する。
【背景技術】
【０００２】
ターニングセンタやマシニングセンタのように数値制御（ＮＣ：Numerical Control）によって、自動的に加工を行う工作機械が広く利用されている。このような工作機械を使用するためには、数値制御による加工を指示するための数値制御プログラム（以下、ＮＣプログラムという）を準備する。
【０００３】
ＣＡＤ（Computer-Aided Design）やＣＡＭ（Computer Aided Manufacturing）を利用してＮＣプログラムを生成する方法の他、従来通りユーザがコーディングすることもある。ただし、コーディングにおいて人的なミスがあると、ＮＣプログラムによって正しく加工されないことになる。したがって、ＮＣプログラムを作成する際には人的ミスを少なくすることが望まれる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−２００７６６号公報
【特許文献２】特開平２−１５１９０８号公報
【特許文献３】特開２０１６−０１８５３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＮＣプログラムを検証する方法として、ワークを設置しない工作機械を空運転させることがある。ただし、空運転における工作の挙動を観察する労力は大きく、ＮＣプログラムの不備を見逃すこともある。また、大がかりな作業であり、工作機械を占有することになるため、頻繁に検証することはできない。
【課題を解決するための手段】
【０００６】
本発明は、特許請求の範囲に記載のプログラム編集装置等を提供するものである。
【発明の効果】
【０００７】
本発明によれば、ＮＣプログラムの編集において人的なミスを低減できる。
【図面の簡単な説明】
【０００８】
【図１】ワークの斜視図である。
【図２】２６行目まで記述された編集画面とシミュレーション画面の画面図である。
【図３】２７行目まで記述された編集画面とシミュレーション画面の画面図である。
【図４】２８行目まで記述された編集画面とシミュレーション画面の画面図である。
【図５】２９行目まで記述された編集画面とシミュレーション画面の画面図である。
【図６】３０行目まで記述された編集画面とシミュレーション画面の画面図である。
【図７】３０行目で誤った記述がされた編集画面とシミュレーション画面の画面図である。
【図８】２９行目までカーソルを戻した編集画面とシミュレーション画面の画面図である。
【図９】２８行目までカーソルを戻した編集画面とシミュレーション画面の画面図である。
【図１０】プログラム編集装置の機能ブロック図である。
【図１１】図２に対応するカーソル位置とＮＣプログラムコード表のデータ構造図である。
【図１２】図６に対応するカーソル位置とＮＣプログラムコード表のデータ構造図である。
【図１３】図８に対応するカーソル位置とＮＣプログラムコード表のデータ構造図である。
【図１４】図１２と図１３に対応するＮＣプログラムファイルのデータ構造図である。
【図１５】プログラム編集装置におけるメイン処理過程を示すフローチャートである。
【図１６】プログラム編集装置におけるメイン処理過程を示すフローチャートである。
【図１７】シミュレーション処理過程を示すフローチャートである。
【図１８】Ｇコード入力ガイダンス画面の画面図である。
【図１９】編集−シミュレーションの画面におけるガイダンスメッセージの例を示す図である。
【図２０】バックグラウンド編集の画面図である。
【図２１】バックグラウンド編集の画面におけるガイダンスメッセージの例を示す図である。
【図２２】バックグラウンド編集画面で工程が選択された状態を示す図である。
【図２３】バックグラウンド編集の画面におけるガイダンスメッセージの例を示す図である。
【図２４】工作機械と操作盤の外観図である。
【発明を実施するための形態】
【０００９】
本実施形態におけるプログラム編集装置は、編集画面とともにシミュレーション画面を表示する。編集画面では、編集操作に応じてＮＣプログラムを表示し、シミュレーション画面では、編集画面に表示されたＮＣプログラムによるシミュレーション結果を表示する。
【００１０】
図２４は、工作機械７００と操作盤７０２の外観図である。
このプログラム編集装置は、工作機械７００の中に組み込まれていて、編集画面やシミュレーション画面を操作盤７０２の画面上に表示する形態でもよいし、工作機械７００とは別体のコンピュータ（例えば、パーソナルコンピュータ）の画面上に編集画面やシミュレーション画面を表示する形態でもよい。好ましい形態は、工作機械７００がプログラム編集装置を備え、操作盤７０２の操作画面７０４にプログラム編集装置の編集画面やシミュレーション画面を表示する形態である。
【００１１】
ユーザは、たとえばＮＣプログラムの入力作業において、加工順に指令を書き込む。本実施形態では、新たな指令が書き込まれる都度、その段階までの加工がシミュレートされ、新たな指令によるシミュレーション結果が強調表示される。
【００１２】
また、ユーザは、ＮＣプログラムの見直し作業において、指令の内容を確認したい箇所にカーソルを移動させると、カーソル行に対応するシミュレーション結果が強調表示される。
【００１３】
図１は、ワーク１００の斜視図である。
この例で想定するワーク１００は板部材であって、厚み方向に６つの穴１０２、穴１０４、穴１０６、穴１０８、穴１１０、穴１１２が空けられる。穴１０２は、板部材の中央に形成される。穴１０４は板部材の左下に形成され、穴１０６は同じく右下に形成され、穴１０８は同じく右側中央に形成され、穴１１０は同じく右上に形成され、さらに穴１１２は同じく左上に形成される。穴１０４、穴１０６、穴１０８、穴１１０、穴１１２の内径は、穴１０２の内径よりも小さい。
【００１４】
ワーク１００に対する穴あけを、工作機械７００の一例であるマシニングセンタで行う。穴１０２の切削には、大きな径のドリルが使用され、穴１０４、穴１０６、穴１０８、穴１１０、穴１１２の切削には、穴１０２の切削に用いたドリルの径よりも小さな径のドリルが使用される。
【００１５】
以下では、ワーク１００の表面における中心を加工原点とする。また、正面方向から見た場合の右側がＸ軸の正方向であり、同じく上側がＹ軸の正方向であり、さらに手前がＺ軸の正方向であるものとする。
【００１６】
ユーザが、穴１０２、穴１０４、穴１０６、穴１０８、穴１１０および穴１１２の順に穴あけ加工を行うＮＣプログラムのコーディングをするものとする。
【００１７】
図２は、２６行目まで記述された編集画面２０２とシミュレーション画面２０４の画面図である。編集画面２０２とシミュレーション画面２０４は、操作盤７０２の操作画面７０４に表示される。
編集画面２０２とシミュレーション画面２０４は、編集−シミュレーション画面に含まれる。編集−シミュレーション画面には、アイコンボタン６００ａ〜ｊとガイダンスボタン６０２が含まれる。アイコンボタン６００ａ〜ｊについては、変形例２に関連して後述する。ガイダンスボタン６０２については、変形例１に関連して後述する。
【００１８】
２６行目における「Ｇ９８Ｇ８３Ｚ−３３．５５４Ｒ３．Ｑ７．Ｆ２４０．」の入力に続いて、「；」キーが押下された後の状態を示している。「；」キーが押下されると、「；」が入力され、自動的に改行する。以下、同様である。シミュレーション画面２０４には、２６行目まで制御動作を実行した場合の刃先経路（以下、単に「経路」ということがある）が表示される。
【００１９】
なお、２３行目より上で、穴１０２の切削に関するプログラムが記述されているものとする。したがって、シミュレーション画面２０４で穴１０２の切削動作に関する経路３０２が表示される。２３行目以下では、穴１０２、穴１０４、穴１０６、穴１０８、穴１１０、穴１１２の切削に関するプログラムをコーディングするものとする。
【００２０】
２３行目「Ｇ９０Ｇ５４Ｇ１７Ｇ０Ｘ−１００．Ｙ−５０．；」について説明する。「Ｇ９０」は、絶対値指令である。絶対値指令は、加工原点からの距離と向きで指令するという宣言である。「Ｇ５４」は、ワーク座標系指令である。ワーク座標系指令は、加工原点位置の指定（ワークオフセット）である。「Ｇ１７」は、ＸＹ平面指令である。ＸＹ平面指令は、ＸＹ平面に対して加工を行うという宣言である。「Ｇ０Ｘ−１００．Ｙ−５０．」は、位置決めである。この位置決めで、Ｘ座標：−１００ｍｍ、Ｙ座標：−５０ｍｍの位置へ早送りで工具（この例では、ドリル）の刃先を移動させる。
【００２１】
２４行目「Ｇ４３Ｚ５０．Ｈ４５Ｓ１０１０Ｍ３；」について説明する。「Ｇ４３」は、工具長補正指令である。「Ｈ４５」は、４５番の工具長補正値を適用することを意味する。「Ｚ５０．」は、「Ｇ０  Ｚ５０．」と同義である。この位置決めで、Ｚ座標５０ｍｍまで早送りで工具の刃先を移動させる。「Ｓ１０１０」は、主軸回転数指令である。具体的には、工具の回転数を１０１０回／分に指定する。「Ｍ３」は、工具を回転させる主軸正転を指令する。
【００２２】
２５行目「Ｚ５０．Ｍ８；」について説明する。「Ｚ５０．」は、「Ｇ０  Ｚ５０．」と同義である。この位置決めで、Ｚ座標：５０ｍｍまで早送りで工具の刃先を移動させる。「Ｍ８」は、クーラント吐出の指令である。ここまでの指令によって、工具の刃先は、経路３０４を経て、穴１０４に対する位置３０５に達している。位置３０５は、Ｘ座標：−１００ｍｍ、Ｙ座標：−５０ｍｍ、Ｚ座標：５０ｍｍである。
【００２３】
２６行目「Ｇ９８Ｇ８３Ｚ−３３．５５４Ｒ３．Ｑ７．Ｆ２４０．」について説明する。「Ｇ９８」は、イニシャル点レベル復帰の指令である。この指令は、イニシャル点まで戻ってから次の穴あけ位置に移動する宣言である。「Ｇ８３」は、深穴ドリリング固定サイクルの指令である。この指令によって、穴１０４に対応する位置３０５をイニシャル点とする切削加工を行い、その後も別の位置をイニシャル点とする切削加工が繰り返される。「Ｚ−３３．５５４」は、穴底の位置を指令する。この指令によって、Ｚ座標：−３３．５５４ｍｍの深さまで切削が行われる。「Ｒ３．」は、切削送りの開始位置を指令する。この指令による切削送りの開始位置は、Ｚ座標：＋３ｍｍである。つまり、正面の３ｍｍ手前から、切削送りが始まる。「Ｑ７．」は、１回あたりの切り込み量である。具体的には、７ミリの穴あけ動作と１ミリの逃げ動作とを繰り返すことを意味する。「Ｆ２４０．」は、送り速度指令である。具体的には、２４０ｍｍ／ｍｉｎで工具の刃先を移動させる。
【００２４】
ユーザが２６行目における指令の入力を終えると、「；」キーを押下する。この段階で、２６行目の指令による穴１０４（中心軸Ｘ座標：−１００ｍｍ、中心軸Ｙ座標：−５０ｍｍ）の切削に関連する経路が特定される。具体的には、イニシャル点の位置３０５からの接近、穴１０４の切削およびワーク１００から位置３０５までの復帰が特定され、経路３０６として新たに表示される。２６行目の指令によって追加された経路３０６は、太線によって強調表示される。この例では、新たな行のコード列による工作の挙動を示す部位を太線で示す。太線は、新たな行のコード列による工作の挙動を示す部位を表示する第１区別態様の例である。第１区別態様は、太線以外の表示であってもよい。
【００２５】
図３は、２７行目まで記述された編集画面２０２とシミュレーション画面２０４の画面図である。
この例は、２７行目における「Ｘ１００．」の入力に続いて、「；」キーが押下された後の状態を示している。シミュレーション画面２０４には、２７行目まで制御動作を実行した場合の経路が表示される。
【００２６】
「Ｘ１００．」は、穴下降位置の指令である。２７行目の指令によって、穴１０６（中心軸Ｘ座標：１００ｍｍ、中心軸Ｙ座標：−５０ｍｍ）の切削に関連する経路が追加される。具体的には、まず位置３０５から次のイニシャル点の位置３０９までスライドする経路３０８が特定される。さらに、位置３０９からの接近、穴１０６の切削および位置３０９までの復帰に相当する経路３１０が特定される。２７行目の指令によって追加された経路３０８および経路３１０は、太線によって強調表示される。
【００２７】
図４は、２８行目まで記述された編集画面２０２とシミュレーション画面２０４の画面図である。
この例は、２８行目における「Ｙ０」の入力に続いて、「；」キーが押下された後の状態を示している。シミュレーション画面２０４には、２８行目まで制御動作を実行した場合の経路が表示される。
【００２８】
「Ｙ０」は、穴下降位置の指令である。２８行目の指令によって、穴１０８（中心軸Ｘ座標：１００ｍｍ、中心軸Ｙ座標：０ｍｍ）の切削に関連する経路が追加される。具体的には、まず位置３０９から次のイニシャル点の位置３１３までスライドする経路３１２が特定される。さらに、位置３１３からの接近、穴１０８の切削および位置３１３までの復帰に相当する経路３１４が特定される。２８行目の指令によって追加された経路３１２および経路３１４は、太線によって強調表示される。
【００２９】
図５は、２９行目まで記述された編集画面２０２とシミュレーション画面２０４の画面図である。
この例は、２９行目における「Ｙ５０．」の入力に続いて、「；」キーが押下された後の状態を示している。シミュレーション画面２０４には、２９行目まで制御動作を実行した場合の経路が表示される。
【００３０】
「Ｙ５０．」は、穴下降位置の指令である。２９行目の指令によって、穴１１０（中心軸Ｘ座標：１００ｍｍ、中心軸Ｙ座標：５０ｍｍ）の切削に関連する経路が追加される。具体的には、まず位置３１３から次のイニシャル点の位置３１７までスライドする経路３１６が特定される。さらに、位置３１７からの接近、穴１１０の切削および位置３１７までの復帰に相当する経路３１８が特定される。２９行目の指令によって追加された経路３１６および経路３１８は、太線によって強調表示される。
【００３１】
図６は、３０行目まで記述された編集画面２０２とシミュレーション画面２０４の画面図である。
この例は、３０行目における「Ｘ−１００．」の入力に続いて、「；」キーが押下された後の状態を示している。シミュレーション画面２０４には、３０行目まで制御動作を実行した場合の経路が表示される。
【００３２】
「Ｘ−１００．；」は、穴下降位置の指令である。３０行目の指令によって、穴１１２（中心軸Ｘ座標：−１００ｍｍ、中心軸Ｙ座標：５０ｍｍ）の切削に関連する経路が追加される。具体的には、まず位置３１７から次のイニシャル点の位置３２１までスライドする経路３２０が特定される。さらに、位置３２１からの接近、穴１１２の切削および位置３２１までの復帰に相当する経路３２２が特定される。３０行目の指令によって追加された経路３２０および経路３２２は、太線によって強調表示される。
【００３３】
図２〜図６に示したように、各行の入力の都度正しく指令を記述したかを確かめることができる。次に、誤った指令を記述した場合の例を示す。
【００３４】
図７は、３０行目で誤った記述がされた編集画面２０２とシミュレーション画面２０４の画面図である。
この例は、３０行目における「Ｘ−１００」の入力に続いて、「；」キーが押下された後の状態を示している。シミュレーション画面２０４には、３０行目まで制御動作を実行した場合の経路が表示される。
【００３５】
穴下降位置の指令として本来「Ｘ−１００．；」（−１００ｍｍ）と記述すべきところ、小数点の入力を忘れて「Ｘ−１００；」となっている。この場合、工作機械７００の制御装置は、「Ｘ−１００；」を−０．１ｍｍと解釈してしまう。したがって、プログラム編集装置においても、３０行目の指令によって、穴１１４（中心軸Ｘ座標：−０．１ｍｍ、中心軸Ｙ座標：５０ｍｍ）の切削に関連する経路が追加される。具体的には、まず位置３１７から次のイニシャル点である位置３２５までスライドする経路３２４が特定される。さらに、位置３２５からの接近、穴１１４の切削および位置３２５までの復帰に相当する経路３２６が特定される。３０行目の指令によって追加された経路３２４および経路３２６は、太線によって強調表示される。
【００３６】
編集画面２０２において小数点の欠落は、あまり目立たないが、シミュレーション画面２０４における経路の相違は明白である。このように、経路の外観によって、ユーザがコーディングミスを認識しやすくできる。小数点の欠落の他にも、正負の間違い（たとえば、３０行目の「Ｘ１００．；」）、パラメータの間違い（たとえば、３０行目の「Ｙ−１００．；」）あるいはＧコードの間違い（たとえば、回転方向が違う指令の取り違い）などについても気づきやすくなる。
【００３７】
また、以上のようにＮＣプログラムの入力作業におけるシミュレーション結果を強調表示するだけでなく、ＮＣプログラムの見直し作業においてシミュレーション結果を強調表示してもよい。具体的には、ＮＣプログラムを見直すために、ユーザがカーソル２０６を移動させると、カーソル２０６がある行に対応する経路が強調表示される。
【００３８】
図８は、２９行目までカーソル２０６を戻した編集画面２０２とシミュレーション画面２０４の画面図である。
この例は、図６で上矢印キーを２回押下してカーソル２０６を、２９行目へ移動させた状態を示している。シミュレーション画面２０４には、図６と同様に３０行目まで制御動作を実行した場合の経路が表示される。ただし、３０行目の指令によって追加された経路３２０および経路３２２は、強調表示されていない。その代わり、カーソル２０６がある２９行目の指令によって追加された経路３１６および経路３１８が、白抜き線によって強調表示されている。この例では、移動したカーソルが指す行のコード列による工作の挙動を示す部位を白抜き線で示す。白抜き線は、移動したカーソルが指す行のコード列による工作の挙動を示す部位を表示する第２区別態様の例である。第２区別態様は、白抜き線以外の表示であってもよい。また、第２区別態様を第１区別態様と同じ表示にしてもよい。
【００３９】
図９は、２８行目までカーソル２０６を戻した編集画面２０２とシミュレーション画面２０４の画面図である。
この例は、図８で上矢印キーを１回押下してカーソル２０６を、２８行目へ移動させた状態を示している。シミュレーション画面２０４には、図６と同様に３０行目まで制御動作を実行した場合の経路が表示される。ただし、カーソル２０６がある２８行目の指令によって追加された経路３１２および経路３１４が、白抜き線によって強調表示されている。
【００４０】
このように、入力済みの行へカーソル２０６を移動させると、カーソル２０６がある行に対応する経路が白抜き線によって強調表示される。したがって、どの行がどの経路に対応するかを一目で理解することができる。たとえば、ユーザがある経路を修正したいと思ったときに、その経路に相当する指令がどの行に記述されているかを編集画面２０２で見つけるのは、面倒であり、勘違いが起きやすい。本実施形態の場合には、シミュレーション画面２０４においてユーザが着目する経路が強調表示されるまで、カーソル２０６を上下に移動させれば該当行を特定することができるので、ユーザの労力が少なく、勘違いを防止できる。
【００４１】
図１０は、プログラム編集装置４００の機能ブロック図である。
プログラム編集装置４００の各構成要素は、ＣＰＵ（Central Processing Unit）および各種コプロセッサ（coprocessor）などの演算器、メモリやストレージといった記憶装置、それらを連結する通信線を含むハードウェアと、記憶装置に格納され、演算器に処理命令を供給するソフトウェアによって実現される。コンピュータプログラムは、デバイスドライバ、オペレーティングシステム、それらの上位層に位置する各種アプリケーションプログラム、また、これらのプログラムに共通機能を提供するライブラリによって構成されてもよい。以下に説明する各ブロックは、ハードウェア単位の構成ではなく、機能単位のブロックを示している。
【００４２】
プログラム編集装置４００は、インターフェース処理部４１０、データ処理部４４０およびデータ格納部４５０を含む。
インターフェース処理部４１０は、キーボード、マウスやタッチパネルなどを介してユーザからの操作を受け付けるほか、画像表示や音声出力など、ユーザインターフェースに関する処理を担当する。インターフェース処理部４１０は、ネットワークを介する通信に関するインターフェース処理を担当してもよい。データ処理部４４０は、インターフェース処理部４１０により取得されたデータ、データ格納部４５０に格納されているデータに基づいて各種処理を実行する。データ処理部４４０は、インターフェース処理部４１０およびデータ格納部４５０のインターフェースとしても機能する。データ格納部４５０は各種データを格納する。
【００４３】
インターフェース処理部４１０は、データ入力を受け付ける入力部４２０と、画像や音声等の各種情報を出力する出力部４３０を含む。
入力部４２０は、キーの押下によって文字コード、数字コード、記号コードおよび各種制御コードなどを受け付ける受付部４２２を含む。
【００４４】
出力部４３０は、プログラム表示部４３２、画像表示部４３４および画面表示部４３６を含む。
プログラム表示部４３２は、編集画面２０２を生成して、表示する。画像表示部４３４は、シミュレーション画面２０４を生成して、表示する。画面表示部４３６は、Ｇコード入力ガイダンス画面を生成して、表示する。Ｇコード入力ガイダンス画面については、図１８に関連して後述する。プログラム表示部４３２と画像表示部４３４は、編集画面２０２とシミュレーション画面２０４を同時に表示させる。
【００４５】
データ処理部４４０は、編集部４４２およびシミュレーション部４４４を含む。
編集部４４２は、ＮＣプログラムの編集処理を実行する。シミュレーション部４４４は、ＮＣプログラムによる工作の挙動をシミュレートする。
【００４６】
データ格納部４５０は、保存記憶領域４６０および一時記憶領域４７０を含む。保存記憶領域４６０には、ハードディスクドライブ装置やフラッシュメモリのような不揮発性メモリが使用される。一時記憶領域４７０には、ＲＡＭ（Random access memory）のような揮発性メモリが使用される。
【００４７】
保存記憶領域４６０には、ＮＣプログラムファイル４６２およびワーク定義ファイル４６４などが記憶される。
ＮＣプログラムファイル４６２については、図１４に関連して後述する。ワーク定義ファイル４６４は、加工前のワークの形状に関するデータおよび加工後のワークの形状に関するデータが含まれる。
【００４８】
一時記憶領域４７０には、ＮＣプログラムコード表４７２、カーソル位置４７４、ワーク３Ｄモデル４７６および経路テーブル４７８などが記憶される。
ＮＣプログラムコード表４７２およびカーソル位置４７４については、図１１〜図１３に関連して後述する。ワーク３Ｄモデル４７６は、工作機械７００内において加工されるワークの三次元モデルである。各加工段階におけるワーク３Ｄモデル４７６が、その加工に関する指令が記述されているＮＣプログラムの行の番号に対応づけられる。経路テーブル４７８には、３次元空間において工具の刃先が移動する各経路が格納される。各経路には、その移動に関する指令が記述されているＮＣプログラムの行の番号が対応づけられる。
【００４９】
図１１は、図２に対応するカーソル位置４７４とＮＣプログラムコード表４７２のデータ構造図である。
ＮＣプログラムコード表４７２は、行毎の行レコードを有し、各行レコードには、行番号とその行のコード列が設定される。ＮＣプログラムコード表４７２に基づいて、ＮＣプログラムが編集され、編集画面２０２が表示される。カーソル位置４７４は、編集画面２０２に表示されるカーソル２０６の行番号と、その行のコード列のインデックスとを示す。インデックスは、配列における要素を識別する変数であって、先頭番号を０とし、配列中の要素順位を示す。この例でＮ個のコードを含むコード列について、各コードはインデックスの０，１，・・・Ｎ−１で特定される。図２でカーソル２０６が２７行目の１文字目を指しているので、カーソル位置４７４は、「２７：０」である。なお、２７行目のコード列は、空である。
【００５０】
図１２は、図６に対応するカーソル位置４７４とＮＣプログラムコード表４７２のデータ構造図である。
ＮＣプログラムコード表４７２は、図１１と比較して、２７行目のコード列に「Ｘ１００．；」が設定され、さらに２８行目から３１行目までの行レコードが追加されている。図６でカーソル２０６が３１行目の１文字目を指しているので、カーソル位置４７４は、「３１：０」である。また、３１行目のコード列は、空である。
【００５１】
図１３は、図８に対応するカーソル位置４７４とＮＣプログラムコード表４７２のデータ構造図である。
ＮＣプログラムコード表４７２は、図１２と同様である。図８でカーソル２０６が２９行目の６文字目を指しているので、カーソル位置４７４は、「２９：５」である。
【００５２】
図１４は、図１２と図１３に対応するＮＣプログラムファイル４６２のデータ構造図である。
このＮＣプログラムファイル４６２は、図１２と図１３に示したＮＣプログラムコード表４７２から変換されたものであって、ＮＣプログラムの内容自体は同じである。ＮＣプログラムファイル４６２は、テーブル形式ではなく、テキスト形式である。テキスト形式では、テーブル形式における各行のコード列の間に、図中「↓」で示した改行コードが挿入される。また、ＮＣプログラムファイル４６２において改行コードで区切られる各コード列について行レコードを設けることによって、ＮＣプログラムコード表４７２へ変換することも可能である。
【００５３】
図１５と図１６は、プログラム編集装置４００におけるメイン処理過程を示すフローチャートである。
ユーザによってＮＣプログラムファイル４６２の読み込みが指示された場合には、読み込み処理を実行する（Ｓ１２）。
【００５４】
読み込み処理において、編集部４４２は、ＮＣプログラムファイル４６２をＮＣプログラムコード表４７２に変換する。具体的には、編集部４４２は、改行コードで区切られているコード列を、順に行レコードに格納する。つまり、ＮＣプログラムファイル４６２にＮ個の改行コードが含まれる場合には、ＮＣプログラムコード表４７２にＮ＋１個の行レコードが設けられる。カーソル位置４７４の行番号は、最終行の番号とする。カーソル位置４７４のインデックスは、最終行のコード列に含まれるコード数と同じにする。これによって、最後尾にカーソル２０６が設定される。
【００５５】
ＮＣプログラムファイル４６２の読み込みが指示されない場合には、コード列が空である行レコードを１個生成する。カーソル位置４７４の行番号は１とし、インデックスは０とする。
【００５６】
文字キーが押下された場合には（Ｓ１４のＹ）、受付部４２２が文字コードを受け付けて、編集部４４２は文字挿入処理を実行する（Ｓ１６）。文字挿入処理において、編集部４４２は、カーソル位置４７４の行番号で特定されるコード列のうち、カーソル位置４７４のインデックスで特定される箇所に、文字キーに対応する文字を挿入し、インデックスの値を１増加させる。プログラム表示部４３２は、文字を挿入した行を表示し直し、右へ移動したカーソル２０６を表示する。そして、Ｓ１４の処理へ戻る。
【００５７】
数字キーが押下された場合には（Ｓ１８のＹ）、受付部４２２が数字コードを受け付けて、編集部４４２は数字挿入処理を実行する（Ｓ２０）。数字挿入処理において、編集部４４２は、カーソル位置４７４の行番号で特定されるコード列のうち、カーソル位置４７４のインデックスで特定される箇所に、数字キーに対応する数字を挿入し、インデックスの値を１増加させる。プログラム表示部４３２は、数字を挿入した行を表示し直し、右へ移動したカーソル２０６を表示する。そして、Ｓ１４の処理へ戻る。
【００５８】
記号キーが押下された場合には（Ｓ２２のＹ）、受付部４２２が記号コードを受け付けて、編集部４４２は記号挿入処理を実行する（Ｓ２４）。記号挿入処理において、編集部４４２は、カーソル位置４７４の行番号で特定されるコード列のうち、カーソル位置４７４のインデックスで特定される箇所に、記号キーに対応する記号を挿入し、インデックスの値を１増加させる。プログラム表示部４３２は、記号を挿入した行を表示し直し、右へ移動したカーソル２０６を表示する。そして、Ｓ１４の処理へ戻る。
【００５９】
右矢印キーが押下された場合には（Ｓ２６のＹ）、受付部４２２が右矢印コードを受け付けて、編集部４４２は右矢印移動処理を実行する（Ｓ２８）。右矢印移動処理において、編集部４４２は、カーソル２０６が行末にあるか否かを判定する。具体的には、編集部４４２は、カーソル位置４７４のインデックスの値がその行のコード列のコード数と一致するか否かを判定する。カーソル２０６が行末より前にあれば、編集部４４２は、インデックスの値を１増加させ、プログラム表示部４３２は、右へ移動したカーソル２０６を表示する。
【００６０】
カーソル２０６が行末にあれば、編集部４４２は、さらにカーソル２０６が最終行にあるか否かを判定する。具体的には、編集部４４２は、カーソル位置４７４の行番号が最終行の番号であるか否かを判定する。カーソル２０６が最終行にある場合には、プログラム表示部４３２は、そのままの表示とする。
【００６１】
カーソル２０６が最終行以外の行末にある場合には、編集部４４２は、カーソル位置４７４の行番号の値を１増加させ、同じくインデックスの値を０とする。そして、プログラム表示部４３２は、１つ下の行の先頭にカーソル２０６を表示する。右矢印キーの操作でカーソル２０６が下の行へ移った場合には、シミュレーション処理を実行する（Ｓ２９）。シミュレーション処理によって、白抜き線の強調表示が新たなカーソル行による挙動の部位に切り替わる。また、元のカーソル行のコード列が変更されている場合には、元のカーソル行において変更されたコード列による挙動を示すシミュレーション画像が表示される。そして、Ｓ１４の処理へ戻る。シミュレーション処理については、図１７に関連して詳述する。
【００６２】
左矢印キーが押下された場合には（Ｓ３０のＹ）、受付部４２２が左矢印コードを受け付けて、編集部４４２は左矢印移動処理を実行する（Ｓ３２）。左矢印移動処理において、編集部４４２は、カーソル２０６が行頭にあるか否かを判定する。具体的には、編集部４４２は、カーソル位置４７４のインデックスが０であるか否かを判定する。カーソル２０６が行頭より後にあれば、編集部４４２は、カーソル位置４７４のインデックスの値を１減少させ、プログラム表示部４３２は、左へ移動したカーソル２０６を表示する。
【００６３】
カーソル２０６が行頭にあれば、編集部４４２は、さらにカーソル２０６が１行目にあるか否かを判定する。具体的には、編集部４４２は、カーソル位置４７４の行番号が１であるか否かを判定する。カーソル２０６が１行目の行頭にある場合には、プログラム表示部４３２は、そのままの表示とする。
【００６４】
カーソル２０６が２行目以降の行頭にある場合には、編集部４４２は、カーソル位置４７４の行番号の値を１減少させ、同じくインデックスの値を上の行のコード数と同じにする。そして、プログラム表示部４３２は、１つ上の行の末尾にカーソル２０６を表示する。左矢印キーの操作でカーソル２０６が上の行へ移った場合には、シミュレーション処理を実行する（Ｓ３３）。シミュレーション処理によって、白抜き線の強調表示が新たなカーソル行による挙動の部位に切り替わる。また、元のカーソル行のコード列が変更されている場合には、元のカーソル行において変更されたコード列による挙動を示すシミュレーション画像が表示される。そして、Ｓ１４の処理へ戻る。
【００６５】
左矢印キーが押下されていないと判定した場合（Ｓ３０のＮ）、図１６に示したＳ３４の処理へ移る。
【００６６】
上矢印キーが押下された場合には（Ｓ３４のＹ）、受付部４２２が上矢印コードを受け付けて、編集部４４２は上矢印移動処理を実行する（Ｓ３６）。上矢印移動処理において、編集部４４２は、カーソル２０６が１行目にあるか否かを判定する。具体的には、編集部４４２は、カーソル位置４７４の行番号が１であるか否かを判定する。カーソル２０６が１行目にある場合には、プログラム表示部４３２は、そのままの表示とする。
【００６７】
カーソル２０６が２行目以降にある場合には、編集部４４２は、カーソル位置４７４の行番号の値を１減少させる。また、カーソル位置４７４のインデックスの値が上の行のコード数を超える場合には、編集部４４２は、インデックスの値をコード数と同じにする。そして、プログラム表示部４３２は、上の行にカーソル２０６を表示する。上矢印キーの操作でカーソル２０６が上の行へ移った場合には、シミュレーション処理を実行する（Ｓ３７）。シミュレーション処理によって、白抜き線の強調表示が新たなカーソル行による挙動の部位に切り替わる。また、元のカーソル行のコード列が変更されている場合には、元のカーソル行において変更されたコード列による挙動を示すシミュレーション画像が表示される。そして、Ｓ１４の処理へ戻る。
【００６８】
下矢印キーが押下された場合には（Ｓ３８のＹ）、受付部４２２が下矢印コードを受け付けて、編集部４４２は下矢印移動処理を実行する（Ｓ４０）。下矢印移動処理において、編集部４４２は、カーソル２０６が最終行にあるか否かを判定する。具体的には、編集部４４２は、カーソル位置４７４の行番号が最終行の番号であるか否かを判定する。カーソル２０６が最終行にある場合には、そのままの表示とする。
【００６９】
カーソル２０６が最終行以外にある場合には、編集部４４２は、カーソル位置４７４の行番号の値を１増加させる。また、カーソル位置４７４のインデックスの値が下の行のコード数を超える場合には、編集部４４２は、インデックスの値をコード数と同じにする。そして、プログラム表示部４３２は、下の行にカーソル２０６を表示する。下矢印キーの操作でカーソル２０６が下の行へ移った場合には、シミュレーション処理を実行する（Ｓ４１）。シミュレーション処理によって、白抜き線の強調表示が新たなカーソル行による挙動の部位に切り替わる。また、元のカーソル行のコード列が変更されている場合には、元のカーソル行において変更されたコード列による挙動を示すシミュレーション画像が表示される。そして、Ｓ１４の処理へ戻る。
【００７０】
「；」キーが押下された場合には（Ｓ４２のＹ）、受付部４２２が「；」コードを入力して、編集部４４２は改行処理を実行する（Ｓ４４）。改行処理において、編集部４４２は、カーソル２０６がある行の後に新しい行を挿入する。挿入箇所以降の各行の行番号は、１つ繰り下げる。また、編集部４４２は、カーソル２０６がある行のコード列のうち、カーソル２０６以降の部分を新しい行のコード列へ移す。つまり、カーソル２０６の位置でコード列を切り分ける。編集部４４２は、カーソル位置４７４の行番号の値を１増加させ、同じくインデックスの値を０とする。プログラム表示部４３２は、下の行の先頭へ移ったカーソル２０６を表示する。そして、シミュレーション部４４４は、シミュレーション処理を実行する（Ｓ４５）。  
【００７１】
削除キーが押下された場合には（Ｓ４６のＹ）、受付部４２２が削除コードを受け付けて、編集部４４２は削除処理を実行する（Ｓ４８）。削除処理において、編集部４４２は、カーソル２０６が行末にあるか否かを判定する。具体的には、編集部４４２は、インデックスの値がその行のコード数と一致するか否かを判定する。カーソル２０６の位置が行末でなければ、編集部４４２は、その行のコード列のうちインデックスが指すコードを削除し、プログラム表示部４３２は、その行を表示し直す。カーソル２０６が行末にあれば、編集部４４２は、次の行のコード列を上の行のコード列に加える。次の行は無くなり、その下以降の行が繰り上げられる。プログラム表示部４３２は、カーソル２０６がある行以降を表示し直す。そして、シミュレーション部４４４は、シミュレーション処理を実行する（Ｓ４９）。
【００７２】
終了指示を受け付けた場合には（Ｓ５０のＹ）、書き込み処理を実行する（Ｓ５２）。書き込み処理において、編集部４４２は、ＮＣプログラムコード表４７２をＮＣプログラムファイル４６２に変換し、保存する。そして、メイン処理を終了する。
【００７３】
図１７は、シミュレーション処理過程を示すフローチャートである。
シミュレーション部４４４は、ＮＣプログラムコード表４７２における行レコードを順次特定する（Ｓ６０）。シミュレーション部４４４は、その行レコードのコード列の指令による経路を算定する（Ｓ６２）。Ｇコードなどの指令による経路の算定方法は、従来技術と同様でもよい。算定された経路は、その行レコードの行番号を対応づけて経路テーブル４７８に記憶される。シミュレーション部４４４は、その行レコードのコード列の指令による加工内容に応じてワーク３Ｄモデル４７６を変形させる（Ｓ６４）。Ｇコードなどの指令によるワーク３Ｄモデル４７６の変形方法は、従来技術と同様でもよい。変形されたワーク３Ｄモデル４７６は、その行レコードの行番号を対応づけて一時記憶領域４７０に記憶される。シミュレーション部４４４は、最終行の１つ前に至るまで（Ｓ６６のＮ）、Ｓ６０へ戻ってＳ６２とＳ６４の処理を繰り返す。
【００７４】
最終行の１つ前まで処理すると（Ｓ６６のＹ）、画像表示部４３４は、シミュレーション画面２０４に最新のワーク３Ｄモデル４７６を描画する（Ｓ６８）。
【００７５】
カーソル２０６が最終行にあれば（Ｓ７０のＹ）、画像表示部４３４は、最終行の１つ前の行の指令によって得られた経路を示す線に太線属性を設定する（Ｓ７２）。つまり、カーソル位置４７４の行番号が最終行の行番号と一致する場合には、最終行の行番号−１に対応する経路が太線で強調される。
【００７６】
一方、カーソル２０６が最終行より上にあれば（Ｓ７０のＮ）、画像表示部４３４は、カーソル行の指令によって得られた経路を示す線に白抜き属性を設定する（Ｓ７４）。つまり、カーソル位置４７４の行番号が最終行の行番号と一致しない場合には、カーソル位置４７４の行番号に対応する経路が白抜き線で強調される。
【００７７】
画像表示部４３４は、上述の各経路の線をシミュレーション画面２０４に描画する（Ｓ７６）。そして、Ｓ１４の処理へ戻る。
【００７８】
これにより、図２〜図７に関連して説明したとおり、ＮＣプログラムの入力作業において「；」キーを押下すると、空の行が追加されその行にカーソル２０６が移り、元の行で入力した指令に応じた太線の経路が現れる。したがって、ユーザは、想定どおりにコーディングできたかをすぐに確認できる。また、どの段階までコーディングしたかを常に意識しているので、勘違いによる記述の重複や欠落を防ぎやすい。
【００７９】
また、図８と図９に関連して説明したとおり、ＮＣプログラムの見直し作業においてカーソル２０６を移動させると、カーソル２０６がある行の指令による経路が白抜き線に変る。したがって、ユーザは、プログラムの記述と工作の挙動との関係を把握しやすい。
【００８０】
［変形例１]
コーディングを補助するために、指令入力のガイダンス画面を表示するようにしてもよい。ここでは、Ｇコード入力のガイダンス画面の例を示す。
【００８１】
図１８は、Ｇコード入力ガイダンス画面の画面図である。
Ｇコード入力ガイダンス画面５００は、編集画面２０２におけるＧコードの記述をガイドする。ユーザによって編集画面２０２内のガイダンスボタン６０２（図２）がタッチされると、画面表示部４３６はガイダンス画面５００（図１８）を表示する。ユーザがＧの入力領域５０２にＧコードの番号を入力すると、Ｇコードの種類（たとえば、「ヘリカル穴あけサイクル」）および引数の構成（たとえば、「Ｇ４３９（Ｘ＿Ｙ＿Ｚ＿Ｒ＿Ｈ＿Ｉ＿Ｊ＿Ｋ＿Ｕ＿Ｖ＿Ｗ）」）が表示され、各引数に対応する入力領域５０４ａ〜ｈが表示される。ユーザがいずれかの引数の入力領域５０４を選択すると、入力領域５０４にその引数の値を入力することが可能となる。この例では、ユーザによって選択された引数Ｘの入力領域５０４ａにカーソル２０６が表示され、引数Ｘの値を受け付ける状態を表している。また、選択された引数Ｘに関する概念図５０６と説明文５０８が表示される。引数Ｘに関する概念図５０６と説明文５０８を参照することによって、ユーザは引数Ｘの変数としての意味を理解できる。入力された引数の値は、引数領域５１４に表示される。他の引数についても同様である。図中の「＊」は、値入力が必須であることを示している。ユーザが挿入ボタン５１０にタッチすると、Ｇコードと各引数の値が、所定の書式に従って、編集画面２０２のカーソル位置４７４に挿入される。ユーザが戻るボタン５１２にタッチした場合には、何も挿入されない。このようにすれば、ユーザはＧコード毎の書式を調べる必要がなく、Ｇコードに関する記述の入力が簡単になる。ユーザが入力領域５０２へＧコードの番号を直接入力せずに、Ｇコード入力ガイダンス画面の前に表示されるリストからＧコードを選択できるようにしてもよい。
【００８２】
［変形例２］
変形例２は、アイコンボタンのタッチ操作によるガイダンスメッセージ表示に関する。プログラム編集装置は、タッチパネルを用いるものとする。
【００８３】
アイコンボタンは見た目で何をするためのボタンなのかがわかりにくいという課題がある。ガイダンスメッセージでボタンの説明を表示したいが、固定のメッセージ領域を確保できない。パーソナルコンピュータでは、マウスオーバーによりガイダンスメッセージを表示できるが、タッチパネルではマウスオーバーのような操作ができない。
【００８４】
図１９は、編集−シミュレーションの画面におけるガイダンスメッセージ６０４ｂの例を示す図である。画面表示部４３６は、シミュレーション画像を表示することを実行するためのボタン６００ａなどのボタン６００を表示するボタン表示部を有する。さらに、インターフェース処理部４１０の入力部４２０は、タッチパネルにおけるタッチ操作を検出するタッチ検出部を有する。タッチ検出部が、アイコンボタン６００ａの長いタッチを検出すると、ボタン表示部は、アイコンボタン６００ａに対応する機能「シミュレーション開始」を示すガイダンスメッセージ６０４ｂを、アイコンボタン６００ａの近接位置に表示する。他のアイコンボタン６００についても同様に、イベント検出部が、アイコンボタン６００の長いタッチを検出すると、ボタン表示部は、そのアイコンボタン６００に対応する機能内容を示すガイダンスメッセージ６０４ｂを、そのアイコンボタン６００の近接位置に表示する。また、メッセージ表示部は、「ＮＣプログラムの実行順に強調表示されます。」という機能メッセージ６０６を表示する。ガイダンスメッセージ表示中にタッチしている指を放しても「シミュレーション開始」の機能は実行されない。ただし、短くタッチした場合には、シミュレーション開始の機能を実行する。なお、イベント検出部は、アイコンボタン６００に対するタッチが継続している時間が基準値を超えた場合に、アイコンボタン６００の長いタッチが行われたと判定する。アイコンボタン６００に対するタッチが継続している時間が基準値を下回る場合には、イベント検出部は、アイコンボタン６００の短いタッチが行われたと判定する。また、データ格納部４５０は、保存記憶領域４６０に、アイコンボタン６００毎に、そのアイコンボタン６００に対応する機能内容を示すガイダンスメッセージ６０４を記憶するガイダンスメッセージ記憶部を有するものとする。
【００８５】
図１９に示したアイコンボタン６００について説明する。
タッチ検出部が、ファイル一覧ボタン６００ｇの長いタッチ（長押し）を検出すると、画面表示部４３６は、ファイル一覧画面に遷移する。タッチ検出部が、編集ボタン６００ｈの長いタッチ（長押し）を検出すると、画面表示部４３６は、ファイル一覧画面でユーザに選択されたファイルの編集画面に遷移する。タッチ検出部が、シミュレーションボタン６００ｉの長いタッチ（長押し）を検出すると、画面表示部４３６は、編集しているファイルに設定されたＮＣプログラムをシミュレーションする画面に遷移する。タッチ検出部が、フォアグラウンド／バックグラウンド切替ボタン６００ｊの長いタッチ（長押し）を検出すると、画面表示部４３６は、フォアグラウンド画面とバックグラウンド画面を切り替える。例えばバックグラウンド画面で編集したＮＣプログラムを運転する場合は、フォアグラウンド画面でプログラムを実行する必要があるので、当該ボタンでフォアグラウンド画面に切り替える。
【００８６】
図２０は、バックグラウンド編集の画面図である。バックグラウンド編集画面は、アイコンボタン６００ｇ〜ｊ，６００ｒ，６００ｓを有する。図２０〜図２３に示すバックグラウンド編集の画面は、図２〜図９の「編集画面２０４とシミュレーション画面２０４」と同様に、操作盤７０２の操作画面７０４に表示される。また、バックグラウンド編集の画面は、「編集画面２０４とシミュレーション画面２０４」と切り替え可能である。
【００８７】
図２０に示したアイコンボタン６００について説明する。
タッチ検出部が、追加ボタン６００ｒの長いタッチ（長押し）を検出すると、データ作成部は、データを新規作成する。タッチ検出部が、表示情報切替ボタン６００ｓの長いタッチ（長押し）を検出すると、ボタン表示部は、２階層目のツールバーを表示する。表示項目のチェック状態を変更することで、画面に表示する表示項目を変更できる。
【００８８】
図２１は、バックグラウンド編集の画面におけるガイダンスメッセージ６０４ｃの例を示す図である。タッチ検出部が、アイコンボタン６００ｓの長いタッチを検出すると、ボタン表示部は、アイコンボタン６００ｓに対応する機能「表示情報変更」を示すガイダンスメッセージ６０４ｃを、アイコンボタン６００ｓの近接位置に表示する。
【００８９】
図２２は、バックグラウンド編集画面で工程が選択された状態を示す図である。いずれかの工程が選択された状態で、ボタン表示部は、さらにアイコンボタン６００ｔ〜ｗを表示する。
【００９０】
図２２に示したアイコンボタン６００について説明する。
タッチ検出部が、編集切替ボタン６００ｔの長いタッチ（長押し）を検出すると、編集部４４２は、加工工程の編集モードを切り替える。編集モードを切り替えることで、対話形式で設定した加工工程のＮＣプログラムを手編集できる。タッチ検出部が、加工ＯＮ／ＯＦＦボタン６００ｕの長いタッチ（長押し）を検出すると、切り替え部は、加工工程の実行／非実行を切り替える。加工ＯＦＦに設定することで当該加工工程はＮＣプログラムに出力されなくなる。タッチ検出部が、削除ボタン６００ｖの長いタッチ（長押し）を検出すると、データ削除部は、ユーザが選択したデータを削除する。タッチ検出部が、複製ボタン６００ｗの長いタッチ（長押し）を検出すると、データ複製部は、ユーザが選択したデータを複製する。
【００９１】
図２３は、バックグラウンド編集の画面におけるガイダンスメッセージ６０４ｄの例を示す図である。タッチ検出部が、アイコンボタン６００ｕに対する長いタッチを検出すると、ボタン表示部は、アイコンボタン６００ｕに対応する機能「加工ＯＦＦ」を示すガイダンスメッセージ６０４ｄを、そのアイコンボタン６００ｕの近接位置に表示する。なお、加工ＯＦＦは、その加工工程を無効にする機能である。加工ＯＦＦに設定された工程は、実行されない。
【００９２】
［その他の変形例]
また、シミュレーション画面２０４における強調表示の態様は、太線や白抜き線以外でもよい。強調する経路に特定の色や輝度を施してもよい。あるいは、強調する経路をアニメーションで表示してもよい。上述の強調表示は、特定の態様による表示の例である。例示した強調表示に相当する経路が、その他の通常表示による経路と区別できる程度の態様で表示されてもよい。
【００９３】
また、太線で例示した経路と白抜き線で例示した経路について、表示態様を共通にしてもよい。両方とも同じ太さの線で表示してもよいし、両方とも同じ線種の線で表示してもよい。両方とも同じ色の線で表示してもよいし、両方とも同じ輝度の線で表示してもよい。また、両方とも同じアニメーションで表示してもよい。
【００９４】
また、シミュレーション画面２０４において、カーソルがある行より下の行の番号に対応する経路を表示せず、カーソルがある行までに対応する経路だけを表示するようにしてもよい。つまり、たとえば図８で、経路３２０と経路３２２を表示しなくてもよい。また、図９で経路３１６、経路３１８、経路３２０及び経路３２２を表示しなくてもよい。具体的な処理としては、図１７のＳ６６において、シミュレーション部４４４がカーソル行まで処理を終えたか否かを判定する。カーソル行まで処理していなければ（Ｓ６６のＮ）、Ｓ６０へ戻ってＳ６２とＳ６４の処理を繰り返す。カーソル行まで処理していれば（Ｓ６６のＹ）、画像表示部４３４は、シミュレーション画面２０４にワーク３Ｄモデル４７６を描画する（Ｓ６８）。
【００９５】
また、シミュレーション画面２０４において、経路のみを表示して、ワーク１００を表示しないようにしてもよい。具体的な処理としては、Ｓ６４の処理およびＳ６８の処理を省いてもよい。
【００９６】
また、シミュレーション画面２０４において、ワーク１００のみを表示して、経路を表示しないようにしてもよい。具体的な処理としては、Ｓ７２の処理、Ｓ７４の処理およびＳ７６の処理を省いてもよい。
【００９７】
また、メイン処理において、文字挿入処理、数字挿入処理および記号挿入処理の後に、シミュレーション処理を実行してもよい。このようにすれば、コードの挿入によって指令を修正した時点で、修正された内容によるシミュレーションが表示される。
【００９８】
また、編集画面２０２において改行キーが入力された場合に、新しい行の先頭に「；」を自動的に入力するようにしてもよい。
【００９９】
図１７に関連して説明したシミュレーション処理について、通常はＮＣプログラムの最初から実行するが、ＮＣプログラムの最初から実行されなくてもよい。たとえば、ＮＣプログラムの途中からシミュレーション処理を実行してもよい。その場合には、図１７のＳ６０において、シミュレーション部４４４は、シミュレーションを行う途中のコード列から、ＮＣプログラムコード表４７２における行レコードの特定を開始する。たとえば、受付部４２２において、シミュレーションを開始させるコード列の指定を受け付けて、シミュレーション部４４４は、指定されたコード列の行レコードからＳ６０以降の処理を開始してもよい。受付部４２２は、指定されるコード列の行番号を受け付けてもよいし、指定されるコード列に対するタッチ操作やクリック操作を受け付けてもよい。そうすれば、ＮＣプログラムの途中から工作の挙動を示すシミュレーション画像の表示が行われる。また、ユーザが追加したコード列の複数行前からシミュレーションを実行するようにしてもよい。追加したコード列から遡る行数は、たとえば１００行から２００行の範囲内である。遡る行数は、予め決めておいてもよいし、ユーザが指定してもよい。予め決めておく場合には、保存記憶領域４６０に所定の遡り行数を記憶しておく。ユーザが指定する場合には、受付部４２２において遡り行数を受け付ける。シミュレーション部４４４は、ＮＣプログラムに追加されたコード列の行番号から遡り行数を引いて、Ｓ６０において、シミュレーションを開始させる行レコードを特定する。これにより、作業者は、変更したＮＣプログラムの箇所の確認を容易に行うことができる。
【０１００】
また、ＮＣプログラムの変更後のシミュレーションの再開について、新規にコードを追加した箇所またはコードを編集した箇所からシミュレーション動画で５秒から１５秒の範囲内で前まで遡って再開するように、ユーザ操作あるいは自動的にシミュレーション部４４４に設定してもよい。たとえば、シミュレーションの動作において１行に割り当てられる単位動作時間（行単位の動画再生時間）を決めておいてもよい。あるいは、ＮＣプログラムの行ごとの指令に応じて各行に割り当てられる工作の挙動を示すシミュレーション画像の動作時間（指令別の動画再生時間）を算出してもよい。シミュレーション部４４４において、指令の種類に対応して動画再生時間を決めておいてもよい。シミュレーション部４４４は、新規行または編集行から昇順に各行の動作時間（動画再生時間）を合算することによって遡って再生される動画の再生時間を算出する。そして、シミュレーション部４４４は、動画再生時間が５秒から１５秒の範囲内に収まる動画再生開始の行を特定する。このようにして、新たな行のコード列を受け付けたとき、または、１つの行のコード列の変更を付け付けたときに、シミュレーション画像においてそのコード列から５秒から１５秒の範囲の動画再生時間前まで遡ってシミュレーション画像の動画再生を行える。プログラムチェックの５秒から１５秒の範囲であっても、実際の加工はもっと長く（たとえば、１時間）かかる場合もあり、実際の加工時間とシミュレーションの動作時間は異なる。プログラムチェックで５秒から１５秒の範囲内で遡って確認すれば、長い時間かかる加工工程も短い時間で効率よく確認できる。
【０１０１】
対象とする工作機械７００は、マシニングセンタ以外でもよい。たとえば、ターニングセンタや複合加工機等に、上述の実施形態や変形例を適用してもよい。
【０１０２】
これらの工作機械７００は、いずれも、工作するための工作部と、画面を有し工作機械の操作を行うための操作盤７０２と、工作するために、工作部内の機能部の位置を制御する数値制御部（ＮＣ装置）とを有する。工作機械７００がマシニングセンタであれば、工作部は、刃物工具、主軸、主軸を回転させるサーボモーター、パレット、ＡＴＣ（Automatic Tool Changer：自動工具交換装置）および工具マガジンなどを含み、フライス削り、中ぐり、穴あけやねじ立てなどの加工を行う。工作機械７００がターニングセンタであれば、工作部は、刃物工具、回転軸、回転軸を回転させるサーボモーター、タレット、ＡＴＣおよび工具マガジンなどを含み、主に旋削加工を行う。マシニングセンタの主軸やターニングセンタのタレットは、工作部内の機能部に相当する。
【０１０３】
数値制御部は、工作部のサーボモーターやＡＴＣなどに対して、直接あるいはＰＬＣ（Programmable Logic Controller）を介して数値制御を行って工作部内の機能部の位置や工具の選択を制御する。マシニングセンタの数値制御部は、機能部である主軸を移動させる。ターニングセンタの数値制御部は、機能部であるタレットを移動させる。これによって加工の作用箇所である刃先が移動することになる。
【０１０４】
工作部の機能部は、その他のレーザ照射部や粉末吐出部などであってもよい。つまり、数値制御部は、レーザ照射部や粉末吐出部などを移動させることもある。レーザ照射部であれば、レーザ光が加工の作用箇所に相当し、粉末吐出部であれば、飛散した粉末の分布域が加工の作用箇所に相当する。つまり、工作部の機能部は、加工の作用箇所を操る部位である。
【０１０５】
上述したシミュレーション部４４４、画像表示部４３４および画面表示部４３４は、工作機械７００用のプログラムと、工作機械７００内に保存されている機能部の情報とをもとに、工作の挙動を示すシミュレーション画像を画面に表示制御する表示制御部の例である。シミュレーション部４４４は、加工内容に応じて仮想の３次元空間におけるワーク３Ｄモデル４７６を変形させる。工作の挙動を示すシミュレーション画像は、このワーク３Ｄモデル４７６を所定視点から観察したものとして画像表示部４３４が生成した２次元画像である。主に、段階的な加工によって都度変化するワークの形状が描かれる。上述の例では、切削でワークに形成された穴の形状を描いた。シミュレーション部４４４は、更に仮想の３次元空間における加工の作用箇所（刃先の経路、レーザ光、粉末の分布域など）を算定する。工作の挙動を示すシミュレーション画像には、この作用箇所を所定視点から観察したものとして画像表示部４３４が生成した加工の作用箇所を示す描画（刃先の経路の線、レーザ光の線や粉末の分布域の表示など）も含まれる。
【０１０６】
工作機械７００用のプログラムとは、たとえばＮＣプログラムを指し、シミュレーション部４４４は、このプログラムをもとにしてワーク３Ｄモデル４７６を変形させ、加工の作用箇所を特定する。また、シミュレーション部４４４は、工作機械７００内の機能部情報記憶部に保存されている機能部の情報も用いる。機能部の情報には、機能部の形状、機能部の機能、機能部の工作機械７００内での位置  機能部の基準点とその位置などの情報が含まれる。
【０１０７】
このように、工作機械７００の加工によって変化するワークの形状が描かれた画像が、シミュレーション画像である。また、シミュレーション画像には、上述のように加工の作用箇所も描かれる場合がある。これらの工作の挙動を示すシミュレーション画像は、時系列に順次変化する複数のシミュレーション静止画またはシミュレーション動画である。
【０１０８】
なお、本発明は上記実施形態や変形例に限定されるものではなく、要旨を逸脱しない範囲で構成要素を変形して具体化することができる。上記実施形態や変形例に開示されている複数の構成要素を適宜組み合わせることにより種々の発明を形成してもよい。また、上記実施形態や変形例に示される全構成要素からいくつかの構成要素を削除してもよい。
【符号の説明】
【０１０９】
１００  ワーク、１０２  穴、１０４  穴、１０６  穴、１０８  穴、１１０  穴、１１２  穴、１１４  穴、２０２  編集画面、２０４  シミュレーション画面、２０６  カーソル、３０２  経路、３０４  経路、３０５  位置、３０６  経路、３０８  経路、３０９  位置、３１０  経路、３１２  経路、３１３  位置、３１４  経路、３１６  経路、３１７  位置、３１８  経路、３２０  経路、３２１  位置、３２２  経路、３２４  経路、３２５  位置、３２６  経路、４００  プログラム編集装置、４１０  インターフェース処理部、４２０  入力部、４２２  受付部、４３０  出力部、４３２  プログラム表示部、４３４  画像表示部、４３６  画面表示部、４４０  データ処理部、４４２  編集部、４４４  シミュレーション部、４５０  データ格納部、４６０  保存記憶領域、４６２  ＮＣプログラムファイル、４６４  ワーク定義ファイル、４７０  一時記憶領域、４７２  ＮＣプログラムコード表、４７４  カーソル位置、４７６  ワーク３Ｄモデル、４７８  経路テーブル、５００  ガイダンス画面、５０２  入力領域、５０４  入力領域、５０６  概念図、５０８  説明文、５１０  挿入ボタン、５１２  戻るボタン、５１４  引数領域、６００  アイコンボタン、６０２  ガイダンスボタン、６０４  ガイダンスメッセージ、６０６  機能メッセージ、７００  工作機械、７０２  操作盤、７０４  操作画面
【要約】
【課題】数値制御プログラムの編集において人的なミスを防止できるように補助する。
【解決手段】本発明のある態様におけるプログラム編集装置は、工作機械用の数値制御プログラムを受け付ける受付部と、数値制御プログラムの各行におけるコード列を表示するプログラム表示部と、(i)数値制御プログラムの中に新たな行のコード列を受け付けたときに、新たな行のコード列による工作の挙動を示すシミュレーション画像、または、(ii)数値制御プログラムの中に１つの行のコード列の変更を受け付けたときに、変更された行のコード列による工作の挙動を示すシミュレーション画像、を表示する画像表示部とを有する。
【選択図】図６【図１】
0006971416.tif 000002
【図２】
0006971416.tif 000003
【図３】
0006971416.tif 000004
【図４】
0006971416.tif 000005
【図５】
0006971416.tif 000006
【図６】
0006971416.tif 000007
【図７】
0006971416.tif 000008
【図８】
0006971416.tif 000009
【図９】
0006971416.tif 000010
【図１０】
0006971416.tif 000011
【図１１】
0006971416.tif 000012
【図１２】
0006971416.tif 000013
【図１３】
0006971416.tif 000014
【図１４】
0006971416.tif 000015
【図１５】
0006971416.tif 000016
【図１６】
0006971416.tif 000017
【図１７】
0006971416.tif 000018
【図１８】
0006971416.tif 000019
【図１９】
0006971416.tif 000020
【図２０】
0006971416.tif 000021
【図２１】
0006971416.tif 000022
【図２２】
0006971416.tif 000023
【図２３】
0006971416.tif 000024
【図２４】
0006971416.tif 000025