【課題】 加工プログラムのデバッグにかかるオペレータの作業負担を軽減するとともに、デバッグにおける要注意範囲の見過ごしを防止することができる加工プログラムデバッグ装置およびこれを備えた工作機械を提供する。
【解決手段】 加工プログラムによって制御される工作機械10の動作を確認するための加工プログラムデバッグ装置1であって、加工プログラムを解析し、加工動作後に工具の退避動作を開始する退避動作開始行を検出する加工プログラム解析部51と、退避動作開始行よりも任意の事前通知設定時間だけ前方向のタイミングに基づき事前通知行を決定する事前通知行決定部52と、加工プログラムのデバッグ中に事前通知行に到達した場合、まもなく退避動作開始行に到達する旨を通知するための事前通知処理を実行する事前通知処理部55と、を有する。
前記事前通知行決定部は、前記退避動作開始行よりも前方向に存在する各ブロックのサイクルタイムを順次加算し、前記サイクルタイムの総和が前記事前通知設定時間以上になったときのブロックを前記事前通知行として決定する、請求項1から請求項3のいずれかに記載の加工プログラムデバッグ装置。
前記事前通知行決定部は、前記退避動作開始行よりも前方向に存在する各ブロックのサイクルタイムを順次加算し、前記サイクルタイムの総和が前記事前通知設定時間以上になったときのブロックのサイクルタイムが基準時間以上であり、かつ、当該ブロックの最終区間内に前記タイミングが含まれない場合、前記サイクルタイムの総和から前記事前通知設定時間を差し引いた値を通知開始時間として記憶するとともに、前記ブロックを前記事前通知行として決定し、
前記事前通知処理部は、前記事前通知行に到達してから前記通知開始時間の経過後に前記事前通知処理を実行する、請求項1から請求項4のいずれかに記載の加工プログラムデバッグ装置。
前記事前通知行決定部は、前記退避動作開始行よりも前方向に存在する各ブロックのサイクルタイムを順次加算し、前記サイクルタイムの総和が前記事前通知設定時間以上になったときのブロックのサイクルタイムが基準時間以上であり、かつ、当該ブロックの最終区間内に前記タイミングが含まれる場合、当該ブロックの次のブロックを前記事前通知行として決定する、請求項1から請求項5のいずれかに記載の加工プログラムデバッグ装置。
前記加工プログラム解析部は、前記加工プログラムに含まれる複数の加工動作間の区切りを示す区切りブロックを検出し、前記区切りブロックから前方向における最初の早送り、または所定の送り速度以上に設定された最初の切削送りのいずれかを含むブロックを前記退避動作開始行として検出する、請求項1から請求項6のいずれかに記載の加工プログラムデバッグ装置。
【発明を実施するための形態】
【0020】
以下、本発明に係る加工プログラムデバッグ装置およびこれを備えた工作機械の一実施形態について図面を用いて説明する。
【0021】
本実施形態の加工プログラムデバッグ装置1は、オペレータが加工プログラムによって制御される工作機械10の動作を事前に確認し、適宜修正するデバッグ作業を行うためのものである。以下、各構成について詳細に説明する。
【0022】
工作機械10は、旋盤、ボール盤、中ぐり盤、フライス盤、歯切り盤、研削盤等のように、金属、木材、石材、樹脂等のワークに対して、切断、穿孔、研削、研磨、圧延、鍛造、折り曲げ等の各種の加工を施すための機械である。本実施形態において、工作機械10は、加工プログラムによって数値制御可能に構成されている。
【0023】
本実施形態の加工プログラムデバッグ装置1は、工作機械10を制御する数値制御装置等のコンピュータによって構成されており、
図1に示すように、主として、各種のデータを表示・入力する表示入力手段2と、各種のデータを送受信する通信手段3と、各種のデータを記憶する記憶手段4と、各種の演算処理を実行し後述する各構成部として機能する演算処理手段5とから構成されている。以下、各構成手段について詳細に説明する。
【0024】
表示入力手段2は、タッチパネル等で構成されており、オペレータからの入力等を受け付ける入力機能と、デバッグ処理中の加工プログラム等を表示する表示機能とを兼ね備えたものである。本実施形態において、表示入力手段2は、後述する表示制御部56から入力された表示内容を表示するようになっている。なお、表示入力手段2の構成は上記に限定されるものではなく、表示機能のみを備えた表示手段、および入力機能のみを備えた入力手段をそれぞれ別個に有していてもよい。
【0025】
通信手段3は、加工プログラムデバッグ装置1に通信機能を実装するためのものであり、通信モジュール等から構成されている。本実施形態において、通信手段3は、有線または無線LAN(Local Area Network)等のネットワーク通信に対応しており、後述する事前通知処理部55による通知をオペレータの携帯端末11や、オペレータが操作中の機器12に送信するようになっている。
【0026】
記憶手段4は、各種のデータを記憶するとともに、演算処理手段5が演算処理を行う際のワーキングエリアとして機能するものである。本実施形態において、記憶手段4は、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュメモリ等によって構成されており、
図1に示すように、プログラム記憶部41と、加工プログラム記憶部42と、解析結果記憶部43と、オペレータ不在記録部44とを有している。以下、各構成部についてより詳細に説明する。
【0027】
プログラム記憶部41には、本実施形態の加工プログラムデバッグプログラム1aがインストールされている。そして、演算処理手段5が、加工プログラムデバッグプログラム1aを実行することにより、加工プログラムデバッグ装置1としてのコンピュータを後述する各構成部として機能させるようになっている。
【0028】
なお、加工プログラムデバッグプログラム1aの利用形態は、上記構成に限られるものではない。例えば、CD−ROMやUSBメモリ等のように、コンピュータで読み取り可能な記録媒体に加工プログラムデバッグプログラム1aを記憶させておき、当該記録媒体から直接読み出して実行してもよい。また、外部サーバ等からASP(Application Service Provider)方式やクラウドコンピューティング方式で利用してもよい。
【0029】
加工プログラム記憶部42は、デバッグ対象となる加工プログラムを記憶するためのものである。本実施形態において、加工プログラムは、CAM(Computer Aided Manufacturing:コンピュータ支援製造)装置によって作成され、工作機械10を数値制御するためのGコードやMコード等によって構成されている。なお、工作機械10の主な動作は、
図2に示すように、工具をワークに進入させる進入動作、工具でワークを加工する加工動作、および工具をワークから退避させる退避動作の3つである。このため、加工プログラムには、
図3に示すように、進入動作、加工動作および退避動作を指令する複数のブロックが繰り返し含まれている。
【0030】
また、本実施形態において、加工プログラム記憶部42に記憶される加工プログラムは、後述するとおり、デバッグ処理を実行する前に、加工プログラム解析部51によって事前に解析されるとともに、デバッグ処理中は、後述するデバッグ処理部53によって実行されるようになっている。
【0031】
解析結果記憶部43は、デバッグ処理を実行する前に、加工プログラムを事前に解析した結果を記憶するものである。具体的には、解析結果記憶部43は、
図1に示すように、後述する加工プログラム解析部51によって検出された退避動作開始行および進入動作終了行と、後述する事前通知行決定部52によって決定された事前通知行のそれぞれについて、該当する行番号を記憶するようになっている。また、解析結果記憶部43は、後述する通知開始時間を事前通知行に対応付けて記憶するようになっている。
【0032】
なお、デバッグ作業において、オペレータが特に注意すべき要注意範囲は、工具がワークと干渉または衝突する可能性のある、進入動作および退避動作を行う部分である。このため、本実施形態では、
図3に示すように、加工動作後に工具の退避動作を開始する退避動作開始行から、退避動作後に工具の進入動作を終了する進入動作終了行までが要注意範囲として特定される。
【0033】
オペレータ不在記録部44は、デバッグ中にオペレータが不在であったブロックを記録するものである。本実施形態において、オペレータ不在記録部44は、後述するオペレータ検出部54によって、退避動作開始行から進入動作終了行までの要注意範囲において、加工プログラムデバッグ装置1の周囲にオペレータが検出されなかった場合、その旨を記録するようになっている。具体的には、不在であった行番号を記録してもよく、全ての行番号を有する行番号テーブルにおいて、不在であった行番号をチェックしてもよい。
【0034】
演算処理手段5は、CPU(Central Processing Unit)等によって構成されており、記憶手段4にインストールされた加工プログラムデバッグプログラム1aを実行することにより、
図1に示すように、加工プログラム解析部51と、事前通知行決定部52と、デバッグ処理部53と、オペレータ検出部54と、事前通知処理部55と、表示制御部56として機能するようになっている。以下、各構成部についてより詳細に説明する。
【0035】
加工プログラム解析部51は、加工プログラムを事前に解析するものである。加工プログラムにおいては、一般的に、進入動作および退避動作は早送りによって行われる。しかしながら、実際には加工動作においても早送りが使用される場合がある。そこで、本実施形態では、複数の加工動作間に通常挿入される区切りブロックを基準として前後方向を探索し、退避動作開始行や進入動作終了行を検出するようになっている。
【0036】
具体的には、加工プログラム解析部51は、加工プログラム記憶部42内の加工プログラムを取得し、当該加工プログラムから解析対象となる解析対象行を順次選択しながら区切りブロックを検出する。そして、当該区切りブロックから前方向における最初の早送り、または所定の送り速度以上に設定された最初の切削送りのいずれかを含むブロックを退避動作開始行として検出し、その行番号を解析結果記憶部43に記憶するようになっている。
【0037】
なお、本実施形態では、区切りブロックとして、
図3に示すM01(オプショナルストップ)を使用している。しかしながら、これに限定されるものではなく、複数の加工動作間の区切りを示すものであれば、M00(プログラムストップ)や、加工プログラムの作成者によって意図的に挿入された任意の文字列等を区切りブロックとしてもよい。また、早送りを行わせる際は、一般的なG00(早送りによる工具の移動)の他に、G01(切削送りによる工具の直線移動)の送り速度(F)を早くして代用することがある。このため、本実施形態では、G00および所定の送り速度以上のG01のどちらでも、早送りを開始するブロックとして検出するようになっている。
【0038】
また、本実施形態において、加工プログラム解析部51は、検出した区切りブロック以降において最初の加工動作を行うブロックの1つ前の行を、進入動作終了行として検出し、その行番号を解析結果記憶部43に記憶するようになっている。なお、加工動作を行うブロックとしては、各種の切削送り(G01、G02、G03)等が挙げられる。
【0039】
事前通知行決定部52は、デバッグ処理が要注意範囲に到達する旨をオペレータに通知するタイミングを定める事前通知行を決定するものである。本実施形態において、事前通知行決定部52は、
図3に示すように、要注意範囲の最初の行にあたる退避動作開始行よりも任意の事前通知設定時間だけ前方向のタイミングに基づき事前通知行を決定する。具体的には、事前通知行決定部52は、退避動作開始行よりも前方向に存在する各ブロックのサイクルタイムを順次加算する。そして、当該サイクルタイムの総和が事前通知設定時間以上になったときのブロックを事前通知行として決定し、その行番号を解析結果記憶部43に記憶するようになっている。
【0040】
なお、本実施形態において、事前通知設定時間は、ユーザによって任意の時間(10秒等)に設定されてもよく、センサ等によって検出された各種の状況に応じて、最適な時間が自動的に設定されるようにしてもよい。また、サイクルタイムは、1ブロックを実行するのにかかる処理時間であり、その算出に際しては、各ブロックで指定されている、移動距離、送り速度とそのオーバーライド(倍率)、モータの加減速、および動作時間(M機能の場合)等が加味される。これにより、正確なサイクルタイムが算出されるため、事前通知行が自動的かつ高精度に決定される。
【0041】
なお、上述した本実施形態において、事前通知行決定部52によって決定された事前通知行が長時間を要するブロックであった場合、後述する事前通知処理が実行された後も長時間待たなければならない場合も考えられる。そこで、本実施形態において、事前通知行決定部52は、前記タイミングを含むブロックのサイクルタイムが基準時間以上か否かを判断し、当該結果に応じて事前通知処理を実行するタイミングを調整するようになっている。
【0042】
具体的には、事前通知行決定部52は、退避動作開始行よりも前方向に存在する各ブロックのサイクルタイムを順次加算する。そして、当該サイクルタイムの総和が事前通知設定時間以上になったときのブロックのサイクルタイムが基準時間より短い場合、上記のとおり、当該ブロックを事前通知行として決定する。なお、基準時間としては、60秒以下程度に設定することが好ましいが適宜変更しうる。
【0043】
一方、事前通知行決定部52は、前記サイクルタイムの総和が事前通知設定時間以上になったときのブロックのサイクルタイムが基準時間以上であり、かつ、当該ブロックの最終区間内に前記タイミングが含まれない場合、前記サイクルタイムの総和から事前通知設定時間を差し引いた値を通知開始時間として解析結果記憶部43に記憶する。
【0044】
なお、最終区間とは、ブロックの最後から所定時間内の区間であり、当該所定時間としては数秒程度に設定することが好ましいが、適宜変更可能である。また、最終区間内に前記タイミングが含まれるか否かは、事前通知設定時間から一つ前の総サイクルタイムを差し引いた値が、最終区間を定める所定時間以下であるか否かによって判定される。すなわち、上記値が所定時間以下であれば最終区間内であり、所定時間よりも大きければ最終区間内ではないと判定される。
【0045】
また、事前通知行決定部52は、前記サイクルタイムの総和が事前通知設定時間以上になったときのブロックを事前通知行として決定し、その行番号を通知開始時間とともに解析結果記憶部43に記憶するようになっている。この場合、後述するとおり、事前通知処理部55は、事前通知行に到達してから通知開始時間の経過後に事前通知処理を実行するようになっている。
【0046】
また、事前通知行決定部52は、前記サイクルタイムの総和が事前通知設定時間以上になったときのブロックのサイクルタイムが基準時間以上であり、かつ、当該ブロックの最終区間内に前記タイミングが含まれる場合、当該ブロックの次のブロックを事前通知行として決定し、その行番号を解析結果記憶部43に記憶するようになっている。
【0047】
デバッグ処理部53は、加工プログラムのデバッグ処理を行うものである。本実施形態において、デバッグ処理部53は、加工プログラム記憶部42から加工プログラムを読み出し、当該加工プログラムを構成する各ブロックによって指定される動作を順次実行するようになっている。
【0048】
また、本実施形態において、デバッグ処理部53は、解析結果記憶部43に記憶されている退避動作開始行に到達した場合、オペレータ検出部54の検出結果を参照する。そして、オペレータが検出されなかった場合、デバッグ処理部53は、退避動作開始行で加工プログラムの実行を停止するようになっている。また、デバッグ処理部53は、表示入力手段2等から実行の再開を受け付けた場合、加工プログラムの実行を再開する。
【0049】
さらに、本実施形態において、デバッグ処理部53は、解析結果記憶部43に記憶されている退避動作開始行から進入動作終了行までの要注意範囲を実行している間、常に、オペレータ検出部54の検出結果を参照する。そして、オペレータが検出されなかった場合、デバッグ処理部53は、オペレータが不在の旨をオペレータ不在記録部44に記憶するようになっている。
【0050】
オペレータ検出部54は、加工プログラムデバッグ装置1の周囲にオペレータがいるか否かを検出するものである。本実施形態において、オペレータ検出部54は、加工プログラムデバッグ装置1や工作機械10に設けられた所定のボタン(図示せず)が押下されたか否かによって、オペレータの在否を判定するようになっている。このため、タッチパネルやメカニカルボタン等の既存の設備を用いてオペレータの検出が可能になる。
【0051】
なお、オペレータの検出手段は、上記ボタンに限定されるものではなく、オペレータを検出しうるものであればよい。例えば、加工プログラムデバッグ装置1の周囲に設置した監視カメラ(図示せず)の映像を画像処理し、オペレータが工作機械10を見ているか否かによってオペレータを検出してもよい。また、加工プログラムデバッグ装置1の周囲に設置したバリアセンサ(図示せず)からの出力信号に基づいて、オペレータを検出してもよく、他の人感センサ等を使用してもよい。
【0052】
事前通知処理部55は、まもなく退避動作開始行に到達する旨をオペレータに通知するための事前通知処理を実行するものである。本実施形態において、事前通知処理部55は、加工プログラムのデバッグ中に事前通知行に到達した場合、オペレータ検出部54の検出結果を参照する。そして、加工プログラムデバッグ装置1の周囲にオペレータが検出された場合、事前通知処理部55は、加工プログラムデバッグ装置1または工作機械10において事前通知処理を実行する。一方、加工プログラムデバッグ装置1の周囲にオペレータが検出されなかった場合、事前通知処理部55は、オペレータの携帯端末11またはオペレータが操作中の機器12(他の工作機械等)に対して事前通知処理を実行するようになっている。
【0053】
また、本実施形態において、加工プログラムデバッグ装置1の周囲にオペレータが検出された場合であって、前記タイミングを含むブロックのサイクルタイムが基準時間以上であり、かつ、前記タイミングが当該ブロックの最終区間内に含まれない場合、事前通知処理部55は、解析結果記憶部43から通知開始時間を読み出し、事前通知行の実行が開始されてから通知開始時間の経過後に事前通知処理を実行するようになっている。
【0054】
なお、事前通知処理は、オペレータに通知しうる処理であれば特に限定されるものではない。具体的には、表示入力手段2にメッセージを表示させてもよく、スピーカー(図示せず)から警告音を出力してもよく、ライトを点滅・点灯させてもよい。また、本実施形態では、オペレータの携帯端末11のメールアドレスや、オペレータが操作中の機器12に関する情報が予め記憶手段4に設定されている。
【0055】
表示制御部56は、表示入力手段2に表示させる表示内容を制御するものである。本実施形態において、表示制御部56は、加工プログラムのデバッグ中に、実行中の行と、当該行以降の複数の行を表示入力手段2に表示させる。また、表示制御部56は、解析結果記憶部43から退避動作開始行および進入動作終了行の行番号を参照し、退避動作開始行から進入動作終了行までの要注意範囲を他の行と識別可能に表示入力手段2に表示させる。例えば、
図3に示すように、要注意範囲の背景にのみ着色することにより、オペレータは一目で要注意範囲を認識する。
【0056】
つぎに、本実施形態の加工プログラムデバッグ装置1、およびこれを備えた工作機械10の作用について、
図4〜
図6を参照しつつ説明する。
【0057】
まず、本実施形態の加工プログラムデバッグ装置1を用いて、加工プログラムをデバッグする場合、事前に加工プログラムを解析し、退避動作開始行、進入動作開始行および事前通知行を特定するための加工プログラム解析処理を実行する。
【0058】
具体的には、
図4に示すように、まず、加工プログラム解析部51が加工プログラムを取得するとともに(ステップS1)、解析対象行の行番号を示すパラメータiを0に初期化する(ステップS2)。そして、パラメータiをインクリメント(i+1)することにより、次の行を解析対象行として選択し(ステップS3)、当該解析対象行が加工プログラムの最終行であるか否かを判定する(ステップS4)。当該判定の結果、解析対象行が最終行である場合(ステップS4:YES)、加工プログラム解析処理を終了する。
【0059】
一方、ステップS4における判定の結果、解析対象行が最終行でない場合(ステップS4:NO)、加工プログラム解析部51は、解析対象行が区切りブロックであるか否かを判定する(ステップS5)。当該判定の結果、解析対象行が区切りブロックでなければ(ステップS5:NO)、ステップS3へ戻り、次の行を新たな解析対象行として選択する。
【0060】
一方、ステップS5における判定の結果、解析対象行が区切りブロックであった場合(ステップS5:YES)、加工プログラム解析部51は、退避動作開始行を探索するための探索対象行を示すパラメータjを現在の解析対象行の行番号(i)に初期化する(ステップS6)。これにより、退避動作開始行を探索する際の基準が区切りブロックに設定される。
【0061】
つぎに、加工プログラム解析部51は、パラメータjをデクリメント(j−1)することにより、1つ前の行を新たな探索対象行として選択し(ステップS7)、当該探索対象行が早送りを開始するブロックであるか否かを判定する(ステップS8)。当該判定の結果、早送り開始ブロックでなければ(ステップS8:NO)、ステップS7に戻り、1つ前の行を新たな探索対象行として選択する。これにより、区切りブロックから前方向におけるブロックが順次探索されることとなる。
【0062】
一方、ステップS8における判定の結果、探索対象行が早送り開始ブロックであった場合(ステップS8:YES)、加工プログラム解析部51は、現在の探索対象行(j)を退避動作開始行として解析結果記憶部43に記憶する(ステップS9)。これにより、要注意範囲の開始ブロックとなる退避動作開始行が正確かつ自動的に検出される。
【0063】
退避動作開始行が検出されると(ステップS9)、事前通知行決定部52が、当該退避動作開始行よりも任意の事前通知設定時間だけ前方のタイミングに基づいて事前通知行を決定する(ステップS10)。具体的には、
図5に示すように、まず、事前通知行決定部52が、サイクルタイムを算出するための算出対象行を示すパラメータkを退避動作開始行の行番号(j)に初期化するとともに、サイクルタイムの総和を示すパラメータTを0に初期化する(ステップS21)。
【0064】
つぎに、事前通知行決定部52は、パラメータkをデクリメントすることにより、1つ前の行(k−1)を新たな算出対象行(k)として選択する(ステップS22)。そして、事前通知行決定部52は、当該算出対象行(k)のサイクルタイム(t
k)を算出し、当該サイクルタイム(t
k)を総サイクルタイム(T)に加算する(ステップS23)。これにより、ステップS9で検出された退避動作開始行よりも前方向に存在する各ブロックのサイクルタイムが順次加算されることとなる。
【0065】
総サイクルタイム(T)が更新される度に(ステップS23)、事前通知行決定部52は、事前通知設定時間と比較する(ステップS24)。当該比較の結果、総サイクルタイム(T)が事前通知設定時間未満であれば(ステップS24:NO)、ステップS22に戻り、1つ前の行(k−1)を新たな算出対象行(k)として選択する。一方、ステップS24における比較の結果、総サイクルタイム(T)が事前通知設定時間以上となった場合(ステップS24:YES)、事前通知行決定部52は、現在の算出対象行(k)のサイクルタイム(t
k)が、基準時間以上であるか否かを判定する(ステップS25)。
【0066】
当該判定の結果、現在の算出対象行(k)のサイクルタイム(t
k)が基準時間よりも短い場合(ステップS25:NO)、事前通知行決定部52は、現在の算出対象行(k)を事前通知行として解析結果記憶部43に記憶する(ステップS28)。これにより、サイクルタイムがそれほど長くないブロックであれば、退避動作開始行よりも事前通知設定時間前に実行されるブロックが事前通知行として正確かつ自動的に決定される。
【0067】
一方、ステップS25における判定の結果、現在の算出対象行(k)のサイクルタイム(t
k)が基準時間以上である場合(ステップS25:YES)、事前通知行決定部52は、事前通知設定時間から一つ前の総サイクルタイム(T−t
k)を差し引いた値が、最終区間を定める所定時間以下であるか否かを判定する(ステップS26)。これにより、事前通知設定時間によって定められるタイミングが、サイクルタイムの長いブロックにおける最終区間に含まれるか否かが判定される。
【0068】
ステップS26における判定の結果、事前通知設定時間から一つ前の総サイクルタイム(T−t
k)を差し引いた値が所定時間よりも大きい場合(ステップS26:NO)、事前通知行決定部52は、総サイクルタイム(T)から事前通知設定時間を差し引いた値を通知開始時間として記憶するとともに(ステップS27)、現在の算出対象行(k)を事前通知行として記憶する(ステップS28)。これにより、サイクルタイムの長いブロックにおいて、通知タイミングが最後の数秒間に含まれない場合、事前通知行に到達してから事前通知処理を実行するまでの時間を定める通知開始時間が別途、算出される。
【0069】
一方、事前通知設定時間から一つ前の総サイクルタイム(T−t
k)を差し引いた値が所定時間以下の場合(ステップS26:YES)、事前通知行決定部52は、現在の算出対象行(k)の次のブロック(k+1)を事前通知行として決定する(ステップS29)。これにより、サイクルタイムの長いブロックにおいて、通知タイミングが最後の数秒間に含まれる場合には、通知開始時間が算出されることなく次のブロックが事前通知行として決定される。
【0070】
以上の事前通知行決定処理によって事前通知行が決定されると(ステップS9)、
図4の加工プログラム解析処理に戻り、加工プログラム解析部51が探索対象行を示すパラメータjを再び現在の解析対象行の行番号(i)で初期化する(ステップS11)。これにより、進入動作終了行を探索する際の基準が区切りブロックに設定される。
【0071】
つぎに、加工プログラム解析部51は、パラメータjをインクリメント(j+1)することにより、次の行を新たな探索対象行として選択し(ステップS12)、当該探索対象行が加工動作を開始するブロックであるか否かを判定する(ステップS13)。当該判定の結果、加工開始ブロックでなければ(ステップS13:NO)、ステップS12に戻り、次の行を新たな探索対象行として選択する。これにより、区切りブロックから後方向におけるブロックが順次探索されることとなる。
【0072】
一方、ステップS13における判定の結果、探索対象行が加工開始ブロックであった場合(ステップS13:YES)、加工プログラム解析部51は、現在の探索対象行の1つ前の行(j−1)を進入動作終了行として解析結果記憶部43に記憶する(ステップS14)。これにより、要注意範囲の終了ブロックとなる進入動作終了行が正確かつ自動的に検出される。
【0073】
進入動作終了行が検出されると(ステップS14)、加工プログラム解析部51は、現在の解析対象行の行番号が加工プログラムの総行数を超えているか否かを比較する(ステップS15)。当該比較の結果、現在の解析対象行の行番号が総行数以下の場合(ステップS15:NO)、未解析のブロックが存在するため、ステップS3に戻り、上述した処理を繰り返す。一方、現在の解析対象行の行番号が総行数を超えた場合(ステップS15:YES)、全てのブロックが解析されたこととなるため、加工プログラム解析処理を終了する。
【0074】
以上のとおり、事前に加工プログラム解析処理を実行することにより、デバッグ対象の加工プログラムに含まれる、全ての退避動作開始行、進入動作終了行および事前通知行が特定される。そして、加工プログラム解析処理が実行された加工プログラムについては、本実施形態のデバッグ処理が実行可能となる。
【0075】
具体的には、
図6に示すように、まず、表示制御部56がデバッグ対象の加工プログラムを表示入力手段2に表示する(ステップS31)。これにより、デバッグ処理を実行する加工プログラムがオペレータに提示され、実行中のブロックおよびこれから実行されるブロックが目視により確認される。
【0076】
つづいて、デバッグ処理部53が加工プログラムの実行対象行の行番号を示すパラメータeを0に初期化した後(ステップS32)、パラメータeをインクリメント(e+1)することにより、次の行を新たな実行対象行として選択し実行する(ステップS33)。そして、デバッグ処理部53は、当該実行対象行が事前通知行であるか否かを判定する(ステップS34)。
【0077】
当該判定の結果、実行対象行が事前通知行でなければ(ステップS34:NO)、ステップS33に戻り、次の行を新たな実行対象行として選択する。一方、ステップS34における判定の結果、実行対象行が事前通知行であった場合(ステップS34:YES)、オペレータ検出部54は加工プログラムデバッグ装置1の周囲にオペレータがいるか否かを判定する(ステップS35)。これにより、オペレータの在否に応じて適した事前通知処理を行うことが可能となる。
【0078】
ステップS35における判定の結果、オペレータが検出された場合(ステップS35:YES)、事前通知処理部55が加工プログラムデバッグ装置1または工作機械10において事前通知処理を実行する(ステップS36)。一方、オペレータが検出されなかった場合(ステップS35:NO)、事前通知処理部55がオペレータの携帯端末11またはオペレータが操作中の機器12に対して事前通知処理を実行する(ステップS37)。
【0079】
これにより、オペレータはどこにいても確実に、まもなく要注意範囲に到達する旨の注意が喚起される。このため、デバッグにおける要注意範囲の見過ごしが防止されるとともに、オペレータはデバッグ中の工作機械10を常時監視する必要がなく、デバッグにかかる作業負担が軽減する。また、複数の工作機械10を同時並行で操作することも可能となるため、作業効率が向上する。
【0080】
また、本実施形態において、事前通知行に対応付けて上述した通知開始時間が設定されている場合、事前通知処理部55は、事前通知行に到達してから通知開始時間の経過後に事前通知処理を実行する(ステップS36)。これにより、事前通知行決定部52によって決定された事前通知行のサイクルタイムが長い場合には、当該事前通知行の実行開始時ではなく、通知開始時間の経過後に事前通知処理が実行されるため、オペレータが長時間待たされることがない。
【0081】
さらに、本実施形態において、退避動作開始行よりも事前通知設定時間だけ前方向のタイミングを含むブロックのサイクルタイムが長く、当該ブロックの最終区間内に前記タイミングが含まれる場合、当該ブロックの次のブロックが事前通知行として設定される。これにより、事前通知行の実行が開始されてから要注意範囲に到達するまでに長時間かかることが防止される。一方、事前通知行を次のブロックに設定しても、事前通知処理の実行タイミングはほとんど変わらないため、事前通知処理の作用効果は維持される。
【0082】
つぎに、表示制御部56が、表示入力手段2に表示される加工プログラムのうち、退避動作開始行から進入動作終了行までの要注意範囲を識別可能に表示する(ステップS38)。これにより、オペレータは、デバッグにおける要注意範囲を一目で認識し、集中して確認できるため、デバッグの精度が向上する。
【0083】
つづいて、デバッグ処理部53が、パラメータeをインクリメント(e+1)することにより、次の行を新たな実行対象行として選択し実行する(ステップS39)。そして、デバッグ処理部53は、当該実行対象行が退避動作開始行であるか否かを判定する(ステップS40)。当該判定の結果、実行対象行が退避動作開始行でなければ(ステップS40:NO)、ステップS39に戻り、次の行を新たな実行対象行として選択する。
【0084】
一方、ステップS40における判定の結果、実行対象行が退避動作開始行であった場合(ステップS40:YES)、オペレータ検出部54が加工プログラムデバッグ装置1の周囲にオペレータがいるか否かを判定する(ステップS41)。当該判定の結果、オペレータが不在であれば(ステップS43:NO)、デバッグ処理部53が加工プログラムの実行を停止する(ステップS42)。
【0085】
これにより、オペレータが不在の状態で、要注意範囲の実行が開始されてしまうことがなく、デバッグ作業の信頼性が向上する。また、事前通知設定時間を長めに設定することにより、オペレータは加工プログラムが停止する前に戻って来ることができ、デバッグ作業における時間のロスを低減することができる。
【0086】
つぎに、デバッグ処理部53は、オペレータが不在の旨をオペレータ不在記録部44に記録する(ステップS43)。これにより、要注意範囲内のブロックが実行されている間に、オペレータが不在であったブロックが記録される。このため、オペレータによって確認されなかったブロックが簡単に特定されるため、再確認作業が容易になり、デバッグの精度が向上する。また、不在の記録がなければ、要注意範囲がオペレータによって確認されたことが間接的に担保される。
【0087】
一方、ステップS41における判定の結果、オペレータが検出された場合(ステップS41:YES)、または、加工プログラムが一旦停止した後、オペレータから実行再開の指示を受け付けた場合(ステップS44:YES)、デバッグ処理部53がパラメータeをインクリメント(e+1)することにより、次の行を新たな実行対象行として選択し実行する(ステップS45)。そして、デバッグ処理部53は、当該実行対象行が加工プログラムの総行数を超えたか否かを判定し(ステップS46)、超えていれば(ステップS46:YES)、デバッグ処理を終了する。
【0088】
一方、ステップS46における判定の結果、総行数を超えていない場合(ステップS46:NO)、デバッグ処理部53は実行対象行が進入動作終了行であるか否かを判定する(ステップS47)。そして、当該判定の結果、進入動作終了行でなければ(ステップS47:NO)、ステップS43に戻り、オペレータの存否を確認しながら次の行を選択して実行する。一方、ステップS47における判定の結果、実行対象行が進入動作終了行であれば(ステップS47:YES)、ステップS33に戻り、次の行を選択して実行する。これにより、加工プログラムに含まれる全ての要注意範囲について、上述したデバッグ処理が実行されることとなる。
【0089】
以上のような本実施形態によれば、以下のような効果を奏する。
1.加工プログラムのデバッグにかかるオペレータの作業負担を軽減するとともに、デバッグにおける要注意範囲の見過ごしを防止することができる。
2.オペレータがどこにいても、まもなく要注意範囲に到達することを確実に通知することができる。
3.オペレータの不在を記録することにより、デバッグの精度および信頼性を向上することができる。
4.要注意範囲に到達する事前通知設定時間前のタイミングに基づいて、事前通知行を正確かつ自動的に決定することができる。
5.事前通知行の実行が開始されてから、要注意範囲に到達するまでにオペレータが長時間待たされるのを防止することができる。
6.要注意範囲の開始ブロックである退避動作開始行および要注意範囲の終了ブロックである進入動作終了行を簡単かつ自動的に検出することができる。
7.要注意範囲をオペレータに一目で認識させられるため、デバッグの精度を向上することができる。
8.オペレータが不在の状態で、要注意範囲の実行が開始されることを防止し、デバッグ作業の信頼性を向上することができる。
9.オペレータが不在でも、加工プログラムデバッグ装置1に戻って来るための時間的な余裕を与えて、デバッグ処理が停止されることを極力抑制し、デバッグ作業における時間のロスを低減することができる。
10.退避動作開始行、進入動作開始行および事前通知行を手動で指定または挿入する必要がなく、一般的な加工プログラムをそのまま解析およびデバッグすることができる。
11.要注意範囲のうち、オペレータが不在であったブロックを事後的に確認することができる。
【0090】
なお、本発明に係る加工プログラムデバッグ装置1は、前述した実施形態に限定されるものではなく、適宜変更することができる。例えば、上述した本実施形態では、数値制御装置の一機能として加工プログラムデバッグ装置1を機能させているが、この構成に限定されるものではない。
【0091】
例えば、CAD(Computer-Aided Design:コンピュータ支援設計)機能およびCAM(Computer Aided Manufacturing:コンピュータ支援製造)機能を兼ね備えたCAD/CAM装置に本発明に係る加工プログラムデバッグプログラム1aを実装し、加工プログラムデバッグ装置1として構成してもよい。この場合、工作機械10を実際に動作させることなく、シミュレーションによって工作機械10の動作を確認しデバッグすることができる。
【0092】
また、本実施形態の加工プログラムデバッグ装置1は、オペレータ不在記録部44およびオペレータ検出部54を有しているが、この構成に限定されるものではない。オペレータが不在時の処理が不要であれば、オペレータ不在記録部44およびオペレータ検出部54を設けなくてもよい。この場合、デバッグ処理におけるステップS35、ステップS37およびステップS41〜S44の処理が不要となる。
【0093】
さらに、上述した本実施形態では、要注意範囲を他の行と識別可能に表示するために、進入動作終了行を検出している。しかしながら、当該識別表示が不要であれば、加工プログラム解析部51は、進入動作終了行を検出する必要はない。この場合、加工プログラム解析処理におけるステップS11〜S14の処理が不要となる。
【0094】
また、上述した本実施形態では、事前通知処理の実行後にオペレータが長時間待たされるのを防止するため、事前通知行決定部52は、事前通知行決定処理におけるステップS25〜S27,S29を実行している。しかしながら、各ブロックのサイクルタイムがそれほど長くない場合などは、上記ステップS25〜S27,S29の処理を省略してもよい。さらに、事前通知行決定部52は、事前通知行決定処理において、通知開始時間を設定するステップS27のみを省略してもよい。
【0095】
さらに、本実施形態において、事前通知行決定部52は、サイクルタイムの総和が事前通知設定時間以上になったときのブロックのサイクルタイムが基準時間以上であり、かつ、当該ブロックの最終区間内に通知タイミングが含まれる場合のみ、当該ブロックの次のブロックを事前通知行として決定している。しかしながら、事前通知行決定部52は、ブロックのサイクルタイムに関係なく、通知タイミングがブロックの最終区間内に含まれる場合には、当該ブロックの次のブロックを事前通知行として決定してもよい。