(57)【要約】【課題】手続き型言語のＮＣデータをシミュレーションする装置にかかる。シミュレーションプログラムのメンテナンス性に優れ、ＮＣデータに対応したＮＣ命令の種別の追加，変更，削除の対応が容易に行えるものとする。【解決手段】命令単位オブジェクト生成手段３１と管理手段３２とを備える。命令単位オブジェクト生成手段３１は、ＮＣデータ６の命令毎のオブジェクトである命令単位オブジェクト２３を自己生成させる手段である。管理手段３２は、生成された命令単位オブジェクト２３に実行指令を与える手段である。命令単位オブジェクト２３は、自己のＮＣ命令種別のデータと、必要な特有属性データと、実行指令に応答して自己のＮＣ命令種別等に応じたシミュレーション処理を行う実行メソッドとを有する。【選択図】        図１
2004164485.tif 000002
【特許請求の範囲】
【請求項１】
加工機械を数値制御する手続き型言語のＮＣデータをシミュレーションする装置であって、
ＮＣデータの命令毎のオブジェクトである命令単位オブジェクトを生成する命令単位オブジェクト生成手段と、
生成された命令単位オブジェクトに実行指令を与える管理手段とを備え、
上記命令単位オブジェクトは、自己のＮＣ命令種別のデータと、必要な特有属性データと、上記実行指令に応答して自己のＮＣ命令種別および特有属性データに応じたシミュレーション処理を行う実行メソッドとを有するものであり、
上記命令単位オブジェクト生成手段は、ＮＣ命令の種別毎にクラス定義された命令種別クラスを有し、これらの命令種別クラスは、渡されたＮＣ命令が自己のＮＣ命令の種別に合致するか否かを判断し、合致する場合に自己のクラスのインスタンスとして上記命令単位オブジェクトを生成するものとした、
オブジェクト指向型加工シミュレーション装置。
【請求項２】
上記加工機械がパンチプレスであり、上記ＮＣデータに属性データとして記述された工具についてのデータを上記ＮＣデータから抽出する工具データ抽出手段と、抽出された工具データにおける工具の種別毎のオブジェクトである工具種別オブジェクトを生成する工具種別オブジェクト生成手段とを設け、この工具種別オブジェクト生成手段は、その工具種別の工具に関するデータとシミュレーション処理時にその工具を作画する作画メソッドとを有するものであり、上記命令単位オブジェクトのうち、工具命令の命令単位オブジェクトは、実行メソッドにおけるシミュレーション処理に上記工具種別オブジェクトの作画メソッドを用いるものとした請求項１記載のオブジェクト指向型加工シミュレーション装置。
【請求項３】
加工機械を数値制御する手続き型言語のＮＣデータをシミュレーションする、コンピュータで実行可能なプログラムであって、
ＮＣデータから、このＮＣデータの所定区分毎の文字列をデータとして持つ複数のＮＣ１行オブジェクトを生成する手順と、
これらのＮＣ１行オブジェクトの下位のオブジェクトとして、ＮＣ１行オブジェクトの持つＮＣデータの命令毎のオブジェクトである命令単位オブジェクトを生成する手順と、
生成された各命令単位オブジェクトに順次実行指令を与える手順とを含み、
上記命令単位オブジェクトは、自己のＮＣ命令種別のデータと、必要な特有属性データと、上記実行指令に応答して自己のＮＣ命令種別および特有属性データに応じたシミュレーション処理を行う実行メソッドとを有するものであり、
上記命令単位オブジェクトを生成する手順は、ＮＣ命令の種別毎にクラス定義された各々の命令種別クラスによって、上記ＮＣ１行オブジェクトから渡されたＮＣ命令が自己のＮＣ命令の種別に合致するか否かを判断し、合致する場合に自己のクラスのインスタンスとして上記命令単位オブジェクトを生成する手順とした、
オブジェクト指向型加工シミュレーションプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、パンチプレス等の板金加工機や、その他の加工機械を数値制御する手続き型言語のＮＣデータをシミュレーションするオブジェクト指向型加工シミュレーション装置に関する。
【０００２】
【従来の技術】
従来より、加工機械を制御するＮＣデータを、実加工する前にシミュレーションし、加工状況や工具干渉等をチェックし、トラブルを未然に防ぐことが行われている。
従来のＣ言語を用いた一般的なシミュレーション方法は、ＮＣデータ１行に対して文字列処理し、ＮＣ命令を検索した後、あらかじめ容易された関数へ処理を移行し、その関数内で命令特有の処理を行うのが一般的であった。
なお、オブジェクト指向型のソフトウェアをシミュレーションする方法としては、特許文献１に示すものがあるが、手続き型のＮＣデータをシミュレーションする方法ではない。
【０００３】
【特許文献１】
特開平９−２２３５９号公報
【０００４】
【発明が解決しようとする課題】
しかし、上記従来のシミュレーション方法では、次のデメリットがある。
ａ）ＮＣ命令が膨大であると、ＮＣデータの１行を検索し、該当する関数へ移行させる上位関数の判断・検索を行う処理が複雑になる。
ｂ）上位関数の判断・検索が複雑になるため、新規のＮＣ命令分岐を挿入するときにバグを誘発する。
ｃ）ＮＣ命令は行では完結しないものがあり、複数行に渡る時の上位関数の処理が複雑になる。
ｄ）ＮＣ命令同士で干渉し合うものがあり、上位関数の処理にＮＣ命令の関係処理を記述する必要があって、上位関数が複雑になる。
ｅ）ＮＣ命令を他社コードへ変換処理する場合も、上位関数による分岐・変換処理が必要となり、複雑になる。
これらの結果、特定の関数に処理が集中し、関数は単純処理のみとなり、効率の悪いプログラムとなる。また、新規ＮＣ命令の追加や削除・変更などの際に、他命令への影響を最大限に気をつける必要があり、デバッグとテスト工数に多大の時間を費やしてしまう。
【０００５】
この発明の目的は、シミュレーションプログラムのメンテナンス性に優れ、ＮＣデータに対応したＮＣ命令の種別の追加，変更，削除の対応が容易に行える加工シミュレーション装置を提供することである。
この発明の他の目的は、種々の工具を持つパンチプレスに対するシミュレーションに対しても、メンテナンス性に優れたものとすることである。
この発明のさらに他の目的は、メンテナンス性に優れ、ＮＣデータに対応したＮＣ命令の種別の追加，変更，削除の対応が容易に行える加工シミュレーションプログラムを提供することである。
【０００６】
【課題を解決するための手段】
この発明のオブジェクト指向型加工シミュレーション装置（１）は、加工機械を数値制御する手続き型言語のＮＣデータ（６）をシミュレーションする装置であって、ＮＣデータ（６）の命令毎のオブジェクトである命令単位オブジェクト（２３）を生成する命令単位オブジェクト生成手段（３１）と、生成された命令単位オブジェクト（２３）に実行指令を与える管理手段（３２）とを備える。
上記命令単位オブジェクト（２３）は、自己のＮＣ命令種別のデータと、必要な特有属性データと、上記実行指令に応答して自己のＮＣ命令種別および特有属性データに応じたシミュレーション処理を行う実行メソッドとを有するものである。上記特有属性データは、特にない場合には保有しなくても良い。
上記命令単位オブジェクト生成手段（３１）は、ＮＣ命令の種別毎にクラス定義された命令種別クラス（３３）を有する。これらの命令種別クラス（３３）は、渡されたＮＣ命令が自己のＮＣ命令の種別に合致するか否かを判断し、合致する場合に自己のクラスのインスタンスとして上記命令単位オブジェクト（２３）を生成するものとする。
なお、この明細書で言う「命令種別クラス」は実際の一つのクラスを示すのではなく、ＮＣ命令の種別毎にクラス定義された各クラスを総称して示すものである。
【０００７】
この構成の加工シミュレーション装置（１）は、単独のＮＣ命令を関数ではなく、命令単位のオブジェクト（２３）として定義したため、性格や振る舞いなど、自分がどのような命令で、どのような処理が行えるかを知るソフトウェア部品として取り扱える。また、命令単位オブジェクト生成手段（３１）は、ＮＣ命令の種別毎にクラス定義された命令種別クラス（３３）を有し、自己のＮＣ命令の種別に合致するか否かを判断して自己生成するものとしたため、膨大なＮＣ命令の中から、自分自信の命令を探し出し、自分自身を生成し、上位オブジェクト（２２）等へ自己ポインタを与えることができて、上位オブジェクト（２２）が行う複雑な初期処理は不要であり、非常にすっきりとした独立性の高いプログラム構造となる。シミュレーションの実行時にも、管理手段（３２）が命令単位オブジェクト（２３）に対して「実行」を通知するだけで良い。その後は各命令単位オブジェクト（２３）が、自分自身で判断し必要に応じて、例えば加工や，工具交換，移動等のシミュレーション処理を全て自立的に行う。
【０００８】
このため、次の各利点が得られる。
ａ）入力データのＮＣデータファイルから自己生成型ロジックにより、各命令種別クラス（３３）が自立的に自分自身を探し出し、動的メモリ空間に命令単位オブジェクト（２３）として自分を作りだすため、プログラムのメンテナンス性が飛躍的に向上する。
ｂ）シミュレーションプログラムの開発が、従来の処理手続き中心から、各命令単位オブジェクト（２３）の命令種別クラス（３３）の作成に専念できる。
ｃ）独立性が高く、他のソースコードに影響することなく、命令種別クラス（３３）の単位での追加・変更・削除が容易に行える。
ｄ）他社形式へのＮＣ命令の変換も、各命令種別クラス（３３）の定義により容易に対処できる。
【０００９】
この発明は、整理し直すと、オブジェクト指向を利用した自己生成型のシミュレーション装置であることを特徴とする。通常は、オブジェクト指向を用いても、上位オブジェクトが下位オブジェクトを生成して保有するのが一般的である。しかし、この発明の「自己生成型」では、下位の命令単位オブジェクト（正確には命令種別クラス）が自分自身の生成の可否を判断し、さらに必要となれば、自分自身を生成した後、上位オブジェクトへの保有依頼の旨を伝える手法であり、完全な独立手法となっている。
【００１０】
この発明において、上記加工機械がパンチプレスである場合に、上記ＮＣデータ（６）に属性データとして記述された工具についてのデータを上記ＮＣデータ（６）から抽出する工具データ抽出手段（３４）と、抽出された工具データにおける工具の種別毎のオブジェクトである工具種別オブジェクト（２５）を生成する工具種別オブジェクト生成手段（３５）とを設けても良い。
この工具種別オブジェクト生成手段（３５）は、その工具種別の工具に関するデータとシミュレーション処理時にその工具を作画する作画メソッドとを有するものである。上記命令単位オブジェクト（２３）のうち、工具命令の命令単位オブジェクト（２３）は、実行メソッドにおけるシミュレーション処理に上記工具種別オブジェクト（２５）の作画メソッドを用いるものとする。
パンチプレスでは、種々の工具を持つため、シミュレーション時の作画が煩雑なものとなるが、このような加工機械のミュレーション装置においても、メンテナンス性に優れたものとなる。
【００１１】
この発明のオブジェクト指向型加工シミュレーションプログラムは、加工機械を数値制御する手続き型言語のＮＣデータをシミュレーションするプログラムであって、コンピュータで実行可能なものであり、次の各手順を含む。
すなわち、ＮＣデータ（６）から、このＮＣデータ（６）の所定区分毎の文字列をデータとして持つ複数のＮＣ１行オブジェクト（２２）を生成する手順と、
これらのＮＣ１行オブジェクト（２２）の下位のオブジェクトとして、ＮＣ１行オブジェクト（２２）の持つＮＣデータの命令毎のオブジェクトである命令単位オブジェクト（２３）を生成する手順と、
生成された各命令単位オブジェクト（２３）に順次実行指令を与える手順とを含む。
上記命令単位オブジェクト（２３）は、自己のＮＣ命令種別のデータと、必要な特有属性データと、上記実行指令に応答して自己のＮＣ命令種別および特有属性データに応じたシミュレーション処理を行う実行メソッドとを有するものである。
上記命令単位オブジェクト（２３）を生成する手順は、ＮＣ命令の種別毎にクラス定義された各々の命令種別クラス（３３）により、上記ＮＣ１行オブジェクト（２２）から渡されたＮＣ命令が自己のＮＣ命令の種別に合致するか否かを判断し、合致する場合に自己のクラスのインスタンスとして上記命令単位オブジェクト（２３）を生成する手順とする。この自己生成の手順は、ＮＣ１行オブジェクト（２２）の生成の過程で行うようにしても良く、また生成後に行うようにしても良い。
【００１２】
【発明の実施の形態】
この発明の一実施形態を図面と共に説明する。図２に示すように、このオブェジェクト指向型の加工シミュレーション装置１は、ＮＣデータ６をシミュレーションする装置であって、コンピュータ２のハードウェアおよびオペレーションシステム（図示せず）と、アプリケーションプログラムとなる加工シミュレーションプログラム３とで構成される。加工シミュレーションプログラム３は、オブェジェクト指向型のプログラムであり、例えばＣ＋＋言語で記述される。コンピュータ２は、中央処理装置（ＣＰＵ）等で構成される演算制御部４と、記憶手段５とを有し、記憶手段５の一部の記憶エリアに上記加工シミュレーションプログラム３が記憶される。記憶手段５の他の記憶エリアに、一つまたは複数のＮＣデータ６がファイル等として記憶される。
ＮＣデータ６は、加工機械を数値制御する手続き型言語のプログラムであり、１行に１命令または複数の関連命令を記述した文字列として記述されている。各ＮＣ命令は所定形式のＮＣコードで記述されている。ＮＣデータ６の制御対象となる加工機械は、パンチプレス，レーザ加工機等の板金加工機械や、旋盤等の工作機械である。
加工シミュレーションプログラム３は、ＮＣデータ６から階層関係のオブジェクト群７を、記憶手段５の一部の記憶エリア５ａに作成し、そのオブジェクト群７にシミュレーションの処理を実行させることで、ＮＣデータ６のシミュレーション結果を画面表示装置８に表示させる。画面表示装置８は、液晶表示装置またはＣＲＴ等からなる。コンピュータ２には、キーボードや、マウス、その他の入力装置９が備えられている。なお、コンピュータ２は、１台として図示してあるが、ここで言うコンピュータ２は、ネットワークを構成する複数台のコンピュータの集まりであっても良い。
【００１３】
図３は、画面表示装置８のシミュレーション時の画面表示例を示す。この例では、画面表示装置８の全体画面の中に、ＮＣデータ画面１０と、シミュレーション結果表示画面１１と、各種情報画面１２とが、別のウィンドウとして表示され、かつ各種のソフトウェアキー１３が表示されている。ＮＣデータ画面１０にはＮＣデータ６が文字列で表示される。シミュレーション結果表示画面１１にはシミュレーション結果として、加工完了状態または加工途中のワーク等の図が表示される。図示の例は、パンチプレスのＮＣデータ６のシミュレーション結果例であり、素材となる板金ワークＷに、加工された各パンチ孔１４の図が重ねて表示してある。パンチ孔１４は、この例では連続したスリットを構成するが、１回のパンチ毎のパンチ孔１４が示されている。また、パンチプレスにおけるワークＷを把持するワークホルダ１５の図も表示されている。ソフトウェアキー１３は、各種情報画面１２に表示させる情報種類の選択等を行う手段であり、加工情報、工具情報、ＮＣ情報、実績情報等の別に設けられている。各種情報画面１２に表示される情報は、例えば加工情報としてはＮＣデータ６のプログラム番号，タレット番号、板厚などが表示される。工具情報としてはタレットの各タレット番号の該当箇所に配置された工具の工具番号，工具種類などが表示され、ＮＣ情報としては、ＮＣデータ６のファイル更新日時などが表示される。実績情報としてはＮＣデータ６のシミュレーション回数等が表示される。
【００１４】
図１は、このオブェジェクト指向型の加工シミュレーション装置１の概念構成と、この装置１で生成されたオブジェクト群７の階層関係を示す説明図である。まず、各オブジェクトにつき説明し、その後に加工シミュレーション装置１の構成を説明する。
オブジェクト群７の各オブジェクトは、それぞれデータと処理内容であるメソッドとを持つ。オブジェクト群７は、最上位の一つのＮＣデータオブジェクト２１と、その下位の複数のＮＣ１行オブジェクト２２と、各ＮＣ１行オブジェクト２２に対してその下位に一つまたは複数設けられた命令単位オブジェクト２３とを有する。ＮＣデータオブジェクト２１は、ＮＣデータ６のファイル６Ａの全体のデータを有する。ＮＣ１行オブジェクト２２は、ＮＣデータ６の１行等の所定区分毎に設けられたオブジェクトである。上記所定の区分は原則的には１行であるが、ＮＣ命令の種類等により、複数行にわたるものとなっても良い。命令単位オブジェクト２３は、各ＮＣ１行オブジェクト２２の持つＮＣ命令毎に設けられたオブジェクトであり、ＮＣ１行オブジェクト２２が１つのＮＣ命令のみを持つ場合は１個設けられ、複数の命令を持つ場合はそのＮＣ命令個数だけ設けられる。なお、ここで言う命令単位オブジェクト２３の個数には、後述の基底クラスは含めない。命令単位オブジェクト２３は、シミュレーションの作画や座標変更等を行う実行メソッドを有するオブジェクトである。その上位のＮＣ１行オブジェクト２２およびＮＣデータオブジェクト２１は、命令単位オブジェクト２３の生成や管理上の都合で設けられるオブジェクトである。命令単位オブジェクト２３は、後述のように自己生成型とされる。
【００１５】
オブジェクト群７は、この他にＮＣデータオブジェクト２１と同じ階層のオブジェクトとして、工具データオブジェクト２４と、加工情報オブジェクト２６とを有し、工具データオブジェクト２４の下位に複数の工具種別オブジェクト２５を有する。
工具データオブジェクト２４は、ＮＣデータ６に属性データとして記述された工具についてのデータをＮＣデータ６から抽出したものを、データとして持つオブジェクトである。ＮＣデータ６の制御対象となる加工機械がタレット式のパンチプレスの場合、工具についてのデータとして、工具番号、工具自体の形状，サイズ等のデータと、タレット番号（タレットにおける工具の配置場所の番号）と、そのタレット番号の箇所に装備した工具の番号等が保持される。
工具種別オブジェクト２５は、個々の工具毎に作成されたオブジェクトであって、個々の工具についての工具番号，形状，サイズ等のデータと、シミュレーション時に画面に表示させる工具作画データ等を持つ。工具データオブジェクト２４および工具種別オブジェクト２５は、工具を交換しない加工機械（例えばレーザ加工専用機）等の場合は不要である。また、工具交換する加工機械の場合にも、工具に関するデータは、必ずしもオブジェクトとして持つ必要はなく、単なるデータファイルとして持つようにしても良い。工具種別オブジェクト２５は、後に命令単位オブジェクト２３について説明すると同様に自己生成型とされる。
【００１６】
加工情報オブジェクト２６は、ＮＣデータ６に属性データとして記述された加工条件等のデータを抽出して持つオブジェクトである。上記加工条件は、パンチプレスの場合、パンチ圧力，ニブリングピッチ等である。加工情報オブジェクト２６も、必ずしも設ける必要はなく、単なるファイルとして加工条件等の加工情報を記憶させておいても良い。
なお、工具データオブジェクト２４および加工情報オブジェクト２６は、ＮＣデータ６に含まれない他のファイル等の情報がシミュレーションに必要な場合、例えばＮＣデータ６とは別に設けられた工具マスタファイル（図示せず）や、ＮＣデータ６を作成する自動プログラミング装置の持つデータを、それらのファイルや装置から得て保有するものとしても良い。
【００１７】
図６は、ＮＣ１行オブジェクト２２の構造の概念図である。ＮＣ１行オブジェクト２２は、データとして、ＮＣデータ６の所定区分の文字列（以下「ＮＣ１行文字列」と称す）と、下位の命令単位オブジェクト２３の記憶場所を識別する情報となるオブジェクトポインタとを持つ。この他に、データとして、上記ＮＣ１行文字列の行ナンバーと、そのＮＣ１行文字列の命令固有の情報を持つ。この固有の情報は、タレット型のパンチプレスである場合、タレット番号、ニブリングの有無、現在位置データ等である。レーザ・パンチ複合型のタレット式パンチプレスでは、パンチ加工とレーザ加工の区別のモード等の情報が含まれる。
ＮＣ１行オブジェクト２２のメソッドには、上位のＮＣデータオブジェクト２１から受けた実行指令を伝達する伝達メソッドが設けられる。この伝達メソッドは、下位の各命令単位オブジェクト２３に実行指令を順次伝達し、各下位の命令単位オブジェクト２３の実行の完了応答によって次のＮＣ１行オブジェクト２２に実行指令を伝達するものである。
【００１８】
図７は、命令単位オブジェクト２３の構造の概念図である。命令単位オブジェクト２３は、ＮＣ命令毎に設けられたものであるため、ＮＣ命令の種別毎に若干違った内容のものとなる。命令単位オブジェクト２３は、データとして、ＮＣ命令の種別と、そのＮＣ命令の特有の属性と、上記のＮＣ１行オブジェクト２２のポインタとを持つ。ＮＣ命令は、ＮＣコードの文字列として記述されており、パンチプレスの場合、工具指令であるＴコードや、Ｘ軸方向の移動指令であるＸコードや、回転割出するインデックスツールの回転角度の指令であるＣコードや、同じ工具で直線的に複数箇所を順次打ち抜く命令であるＲＥＣコード等がある。上記のＮＣ命令の特有の属性として、Ｔコードの場合はタレット５１（図１４（Ａ））の工具配置位置であるタレット番号Ｔｎ、Ｃコードの場合はインデックスツール５２（同図（Ｃ））の角度θがある。ＲＥＣコードの場合は方向（前後左右），加工長Ｌ（同図（Ｂ）），工具長ａ，送りピッチｐ等のデータがあり、Ｘコードの場合は移動量ｘ（同図（Ｄ））がある。命令単位オブジェクト２３の持つデータとして、上記の他に、ＮＣデータ６の形式を示すコードや、注意書き（例えば、相性の悪いＮＣ命令等）がある。
命令単位オブジェクト２３は、メソッドとしては、与えられた実行指令に応答して所定のシミュレーションの処理を実行メソッドを持つ。実行メソッドは、ＮＣ命令の種別によって異なり、例えばパンチ指令（ＲＥＣコード等）の場合は作画の処理、移動指令（Ｘコード等）の場合は現在座標の変更、工具指令（Ｔコード）の場合はタレットの割出回転等の処理を行うメソッドである。
【００１９】
図１のＮＣデータオブジェクト２１は、図示を省略するが、上記のようにデータとしては、ＮＣデータ６の全体を持ち、メソッドとしては、入力装置９（図２）等から与えられる実行指令の入力に応じて、各ＮＣ１行オブジェクト２２に実行の指令を与えるメソッドを持つ。
【００２０】
図１と共に、加工シミュレーション装置１の構成を説明する。この加工シミュレーション装置１は、ＮＣデータ６の命令毎のオブジェクトである命令単位オブジェクト２３を生成する命令単位オブジェクト生成手段３１と、生成された命令単位オブジェクト２３に実行指令を与える管理手段３２とを備える。
命令単位オブジェクト生成手段３１は、ＮＣ命令の種別毎にクラス定義された複数の命令種別クラス３３を有する。これらの命令種別クラス３３は、渡されたＮＣ命令が自己のＮＣ命令の種別に合致するか否かを判断し、合致する場合に自己のクラスのインスタンスとして上記命令単位オブジェクト２３を生成するものである。インスタンスは、クラスに実体を持たせたものである。命令種別クラス３３は、ＮＣ命令の種類の個数だけ設けられる。
【００２１】
加工シミュレーション装置１は、この他に工具データ抽出手段３４と、工具種別オブジェクト生成手段３５と、加工情報オブジェクト生成手段３６とを有する。工具データ抽出手段３４は、ＮＣデータ６に属性データとして記述された工具についてのデータを上記ＮＣデータ６から抽出する手段であり、具体的には上記工具データオブジェクト２４を生成するものとされる。工具種別オブジェクト生成手段３５は、工具データ抽出手段３４により抽出された工具データにおける工具の種別毎のオブジェクトである工具種別オブジェクト２５を生成する手段である。工具種別オブジェクト生成手段３５は、この例では、工具種別オブジェクト２５を、命令単位オブジェクト２３の生成手法と同様な手法で自己生成させるものとしてある。工具種別オブジェクト２５は、その工具種別の工具に関するデータとシミュレーション処理時にその工具を作画する作画メソッドとを有するものである。上記命令単位オブジェクト２３のうち、工具命令の命令単位オブジェクト２３は、実行メソッドにおけるシミュレーション処理に工具種別オブジェクト２５の作画メソッドを用いるものとしている。
【００２２】
図４は、管理手段３２および命令単位オブジェクト生成手段３１の具体例を示す。管理手段３２は、管理部３７とＮＣデータオブジェクト生成部３８を有し、ＮＣデータオブジェクト生成部３８は図１のＮＣデータオブジェクト２１を生成する。管理手段３２は、この他に、工具データオブジェクト２４および加工情報オブジェクト２６を生成する各最上位オブジェクト生成部（図示せず）を有する。管理部３７は、オペレータの入力に対する処理等を行う手段であり、どのＮＣデータ６のシミュレーションを行うかの選択、およびオブジェクト作成開始の指令を受け、ＮＣデータオブジェクト生成部３８等に、選択されたＮＣデータ６のオブジェクト群７の作成を開始させる。また、作成されたオブジェクト群７に対して、シミュレーションの実行指令を伝える。この実行指令は、作成されたＮＣデータオブジェクト２１から順次下位のオブジェクトに伝えられることになる。
【００２３】
命令単位オブジェクト生成手段３１は、ＮＣ１行オブジェクト２２を生成するＮＣ１行オブジェクト生成部３９と、命令単位オブジェクト２３を生成する命令単位オブジェクト生成部４０とを有する。
【００２４】
図５に示すように、ＮＣ１行オブジェクト生成部３９は、クラス定義された一つのＮＣ１行クラス４１を有する。ＮＣ１行オブジェクト生成部３９は、ＮＣ１行クラス４１にＮＣデータ６の１行文字列等のデータを引数等として与え、ＮＣ１行クラス４１のインスタンスとしてＮＣ１行オブジェクト２２（図１）を生成する手段である。ＮＣ１行オブジェクト生成部３９は、上位の管理手段３２（図４）の管理に従って、ＮＣ１行オブジェクト２２の生成を行う。ＮＣ１行クラス４１は、具体的には図１０に流れ図で示す手順の処理を行うメソッドを有している。
【００２５】
命令単位オブジェクト生成部４０は、命令種別クラス３３に属するクラスとして、基底クラスである命令種別基底クラス３３ａと、この命令種別基底クラス３３ａの派生クラスとして定義された複数の命令種別毎のクラス３３ｂを有する。命令種別毎のクラス３３ｂは、命令種別の数だけ設けられる。なお、この明細書で言う「命令種別クラス３３」は、実際のクラスではなく、上記命令種別基底クラス３３ａと、その各派生クラスである命令種別毎のクラス３３ｂとを総称したものを示す。
命令種別基底クラス３３ａは、各命令種別毎のクラス３３ｂに共通のメンバを持つクラスであり、このクラス３３ａのインスタンスは生成しない。命令種別毎のクラス３３ｂは、命令種別基底クラス３３ａとの差分となるデータおよびメソッドを定義したものであり、命令種別基底クラス３３ａのデータおよびメソッドの全てを承継し、これに差分となるデータおよびメソッドが追加された内容をもつものとなる。
【００２６】
各命令種別毎のクラス３３ｂは、データとして自己特徴のデータを有し、メソッドとして、自己識別関数と、自己生成メソッドと、実行メソッドとを有する。自己特徴のデータは、そのクラス３３ｂがどのＮＣ命令（例えば、Ｔコード、Ｘコード、Ｃコード、ＲＥＣコード、…）であるかを示すデータである。
自己識別関数は、引数として渡されたデータが、自己特徴を示すデータに一致するか否かを判断する関数である。
自己生成メソッドは、自己識別関数により自己特徴と一致すると判断された場合に、その命令種別のクラス３３ｂに対して、ＮＣデータの内容を持つインスタンスとして命令単位オブジェクト２３を生成するメソッドである。
実行メソッドは、命令単位オブジェクト２３について説明した内容と同じであり、ＮＣ命令の種別によって異なる。説明が重複するが、実行メソッドは、例えばパンチ指令（ＲＥＣコード等）のクラスの場合は作画の処理、移動指令（Ｘコード等）のクラスの場合は現在座標の変更、工具指令（Ｔコード）のクラスの場合はタレットの割出回転等の処理を行うメソッドとされる。
【００２７】
図１２に示すように、各命令種別毎のクラス３３ｂの自己識別関数は、一つの自己識別関数テーブル４２にその関数名が列挙される。関数名は、クラス名と関数名とを併記することで、各クラス特有の関数名とされる。自己識別関数テーブル４２は、静的メソッド関数テーブルとされる。
【００２８】
次に、上記構成の加工シミュレーション装置１によりオブジェクト群７を生成する過程、および作成されたオブジェクト群によりシミュレーションを実行する過程を、図８〜図１１の流れ図に従って説明する。
図８は全体処理の流れを示す。オペレータの入力により、加工シミュレーションプログラム５を起動させると（ステップＳ１）、管理手段３２（図１，図４）の処理により、ＮＣデータ６のファイル６Ａが選択可能な状態となる。この状態で、希望のＮＣデータ６のファイル６Ａを選択し、オブジェクト作成の指令を入力すると（Ｓ２）、まずＮＣデータオブジェクト２１が生成され（Ｓ３）、その後に各ＮＣ１行オブジェクト２２が順次生成される（Ｓ４）。各ＮＣ１行オブジェクト２２の生成の過程で、その下位に属する命令単位オブジェクト２３が生成される。このようにして、階層構造のオブジェクト群７が生成される。なお、上記のオブジェクト作成の指令の入力により、図１の工具データオブジェクト２４、工具種別オブジェクト２５、および加工情報オブジェクト２６も生成される。これらのオブジェクト２５，２６の生成は、ＮＣ１行オブジェクト２２の生成の前後のいずれであっても、同時であっても良い。
このようにオブジェクト群７が生成されると、管理手段３２がその生成完了を認識してシミュレーションの実行指令を与える。この実行指令は、管理手段３２に対するオペレータの操作によって与えるようにしても良い。
【００２９】
図９は、ＮＣ１行オブジェクト２２の作成の過程を示す。図５のＮＣ１行オブジェクト生成部３９により、ＮＣデータオブジェクト２１のデータとして持つＮＣデータ６から、１行の文字列を抽出し、ＮＣ１行クラス４１に引数として与える（ステップＲ１）。これにより、ＮＣ１行クラス４１を、そのクラスのインスタンス、つまり実体のあるオブジェクトとしたＮＣ１行オブジェクト２２が生成される（Ｒ２）。このＮＣ１行オブジェクト２２の生成過程で、下位の命令単位毎のクラス３３ｂ（図５）に命令単位オブジェクト２３を自己生成させ、その自己生成された命令単位オブジェクト２３を、ＮＣ１行オブジェクト２２の持つ配列要素に追加する。これにより一つのＮＣ１行オブジェクト２２が完成する。
ついで、ＮＣデータ６の文字列の行ナンバーを示す行カウンタをデクリメントし（またはインクリメントし）（Ｒ３）、最終行か否かの判定を行う（Ｒ４）。最終行でなければ、ＮＣデータ６の次の１行の文字列を抽出し、上記と同様にしてＮＣ１行オブジェクト２２を生成する。このような処理を繰り返し、ＮＣデータ６の全ての行について、ＮＣ１行オブジェクト２２を生成する。
【００３０】
図１０は、ＮＣ１行クラス４１により、その生成過程で、下位クラス３３ｂ（図５）へ命令単位オブジェクト２３の自己生成の指令を行い、配列要素へ追加する手順を示す。
概要を先に説明すると、自己生成は、自己識別関数テーブル４２（図１２）に列挙された自己識別関数を順に実行して該当クラスに自己識別させ、自己特徴と一致する場合に行われる。自己識別関数は、全ての命令種別のクラス３３ｂについて個別に設けられた関数であり、引数と自己特徴を比較して自己識別する。
ステップ順に説明する。ＮＣ１行クラス４１のメソッドは、自己識別関数テーブル４２（図１２）の配列値を初期化し（ステップＱ１）、該当配列値の自己識別関数を読み込む（Ｑ２）。配列値からテーブル終端か否かを判断し（Ｑ３）、終端でなければ以下の処理Ｑ４〜Ｑ１０を進める。次のステップＱ４，Ｑ５については詳細処理であるため、後に説明する。ステップＱ６において、上記の読み込んだ自己識別関数をコールする。
【００３１】
このコールにより、図１１に示すように、その自己識別関数を持つ命令種別のクラス３３ｂでは、自己識別関数を実行し、引数であるＮＣ命令が自己特徴と一致するか否かを判断する（Ｕ２）。一致しない場合は、不一致の返答をＮＣ１行クラス４１に返し、オブジェクトの生成は行わない。一致する場合は、その命令種別のクラス３３ｂのインスタンスとなる命令単位オブジェクト２３を、そのクラス３３ｂの持つ自己生成メソッドによって自己生成し、一致の返答をＮＣ１行クラス４１に返す。
具体例で説明すると、読み出された自己識別関数が、工具命令（Ｔコード）クラスの自己識別関数であったとする。この場合、工具命令のクラスがその自己識別関数を実行することになる。このとき、工具命令クラスには、ＮＣ１行の文字列が引数として渡されていて、その文字列の示す命令がＸ方向の移動指令（Ｘコード）であったとする。そうすると、自己識別関数を実行している工具命令のクラスは、自己特徴である工具命令と引数である移動指令とが一致しないため、不一致の返答を返し、インスタンスとなるオブジェクトを生成しない。引数が工具命令である場合は、自己特徴と一致するため、工具命令のクラスのインスタンスとなる命令単位オブジェクト２３を生成し、一致の返答をＮＣ１行クラス４１に返す。
【００３２】
図１０のステップＱ７では、命令種別のクラス３３ｂから返される返答を判断し、自己特徴と不一致の返答の場合は、次の自己識別関数の読み込み（Ｑ１０，Ｑ２）に進む。自己特徴と一致の返答の場合は、ＮＣ１行オブジェクト２２の保有する配列要素に、その自己生成された命令単位オブジェクト２３を追加し（Ｑ８）、配列値を初期化した後に（Ｑ９）、次の自己識別関数の読み込み（Ｑ２）に進む。
【００３３】
このような処理を、自己識別関数テーブル４２の終端の自己識別関数まで繰り返す。したがって、ＮＣ１行オブジェクト２２は、引数に該当する命令単位オブジェクト２３を保有することになる。
具体例で説明すると、ＮＣ１行クラス４１に引数として渡されたＮＣ命令が工具命令であったとする。その場合、自己識別関数テーブル４２に列挙された自己識別関数が順次コールされ、その自己識別関数に該当する命令種別のクラス３３ｂで自己識別関数を実行することになるが、コールされた自己識別関数に対応する命令種別のクラス３３ｂが移動命令のクラスであった場合は、自己特徴に一致しないため、不一致の返答がなされ、次の自己識別関数がコールされる。次の自己識別関数も工具命令以外のＮＣ命令、例えばＣ軸命令であったとすると、不一致の返答がなされ、さらに次の自己識別関数がコールされる。このようにして自己識別関数テーブル４２の自己識別関数が順次コールされ、工具命令の自己識別関数がコールされると、引数である工具命令が工具命令のクラス３３ｂの自己特徴と一致することになり、その工具命令のクラス３３ｂの命令単位オブジェクト２３が自己生成される。また、その自己生成された命令単位オブジェクト２３が、ＮＣ１行クラス４１のインスタンスであるＮＣ１行オブジェクト２２に配列要素として保有されることになる。
【００３４】
図１０のステップＱ４，Ｑ５の処理は、引数とされたＮＣ１行文字列が複数の命令を含む場合にも対処可能とするための処理を示す。図１３の具体例と共に説明する。
引数のＮＣ１行文字列が、ＮＣ命令として、「ＲＥＣ／１００」の命令と、「Ｔ０」の命令と、「Ｍ０」の命令を含む「ＲＥＣ／１００ Ｔ０ Ｍ０」であったとする。なお、ここでＮＣコードで示した「ＲＥＣ／１００」等の命令は、仮に示したコードであり、その内容は何であっても良い。
ステップＱ４では、自己識別関数テーブル４２における一つ前の自己識別関数の読み出し時に、自己特徴と一致するとして命令単位オブジェクト２３が自己生成された場合に、その自己生成された命令の文字列を引数から引く処理を行う。その結果、図１３の例では、残された文字列は「Ｔ０ Ｍ０」となり、２つのＮＣ命令が残ることになる。なお、１行文字列に複数のＮＣ命令を含む場合、その１行中の最先のＮＣ命令から自己識別，自己生成が行われる。
ステップＱ５では、文字列が残っているか否かを判別し、残っていない場合はそのＮＣ１行クラス４１の処理を終了する。図１３の例では、まだ文字列「Ｔ０Ｍ０」が残っているため、処理が続けられることになる。
ついで、文字列「Ｔ０」のＮＣ命令の命令単位オブジェクト２３が自己生成されると、その文字列「Ｔ０」が次の繰り返し過程のステップＱ４で引かれ、「Ｍ０」が残る。文字列「Ｍ０」のＮＣ命令の命令単位オブジェクト２３が自己生成されると、文字列は０となるため、ステップＱ５からＮＣ１行クラス４１の処理の終了となる。
このようにして、１行文字列が「ＲＥＣ／１００ Ｔ０ Ｍ０」のＮＣ１行オブジェクト２２は、その配列要素として、「ＲＥＣ／１００」の命令単位オブジェクト２３と、「Ｔ０」の命令単位オブジェクト２３と、「Ｍ０」の命令単位オブジェクト２３との３つの命令単位オブジェクト２３を保有することになる。
このように、１行文字列に含まれる命令個数にかかわらず、命令単位オブジェクト２３の自己生成が行える。１行文字列に含まれるＮＣ命令が一つである場合は、自己生成されると、次の繰り返し過程で文字列が０となるため、そこで処理が終了することになる。
【００３５】
シミュレーションの実行、つまりオブジェクト群７の生成後のシミュレーションの実行は、オブジェクト群７の生成の完了が管理手段３２が認識することで、または管理手段３２にオペレータ等が実行の指令を与えることで、管理手段３２が実行命令を与えることにより行われる。この実行命令は、ＮＣデータオブジェクト２１から、最初のＮＣ１行オブジェクト２２に伝えられ、その下位の最初の命令単位オブジェクト２３に伝えられる。命令単位オブジェクト２３は、実行完了をＮＣ１行オブジェクト２２に返し、ＮＣ１行オブジェクト２２は次の命令単位オブジェクト２３に実行命令を伝える。次の命令単位オブジェクト２３がない場合は、次のＮＣ１行オブジェクト２２に実行命令が伝えられる。このようにして、命令単位オブジェクト２３が生成された順に実行命令が伝えられる。
各命令単位オブジェクト２３は、実行命令によって、その命令単位オブジェクト２３の独自の実行メソッドを実行する。例えば、作画や、現在座標の移動、工具の交換（タレットの割出回転）等を行う。その結果、図３のように、ＮＣデータ６の実行結果の図が画面表示装置８のシミュレーション結果画面１１に表示される。オペレータは、この画面表示内容を見て、ＮＣデータ６の不具合を発見することができる。
【００３６】
なお、上記の説明では省略したが、より具体的には、例えば各ＮＣ１行オブジェクト２２は、下位のオブジェクトとして、命令種別基底クラス３３ａ（図５）であるオブジェクトと、その派生クラスとなるいずれかの命令種別のクラス３３ｂをインスタンスとした一つまたは複数の命令単位オブジェクト２３を持つものとされる。オブジェクト群の作成時に，命令種別基底クラス３３ａ自体を明示的に作成することはしていないが、派生クラス３３ｂには基底クラスから性質を受け継ぐことを宣言しているので、例えば派生クラスのインスタンスの生成により、基底クラス３３ａを持つことになる。実行過程では、例えば、まず命令種別基底クラス３３ａ（図５）のオブジェクトに実行命令が伝えられるが、命令種別基底クラス３３ａは実行メソッドの具体的内容がなく、具体的なシミュレーションの処理は行わない。
【００３７】
この加工シミュレーション装置１は、このように、オブジェクト指向を利用した自己生成型とし、命令単位オブジェクト２３を自己生成するものとしたため、シミュレーションプログラム５のメンテナンス性に優れ、ＮＣデータ５に対応したＮＣ命令の種別の追加，変更，削除の対応が容易に行える。例えば、ＮＣ命令の追加，変更，削除に対応して、命令種別のクラス３３ｂと自己識別関数テーブル４２の自己識別関数を追加，変更，削除するだけで、他に影響を与えずに対処することができる。
【００３８】
上記の説明は、加工シミュレーション装置１の観点から行ったが、この発明は加工シミュレーションプログラム５の発明としても捕らえることができる。
この加工シミュレーションプログラム５は、加工機械を数値制御する手続き型言語のＮＣデータ６をシミュレーションする、コンピュータで実行可能なプログラムであって、ＮＣデータ６から、このＮＣデータ６の所定区分毎の文字列をデータとして持つ複数のＮＣ１行オブジェクト２２を生成する手順と、これらのＮＣ１行オブジェクト２２の下位のオブジェクトとして、ＮＣ１行オブジェクト２２の持つＮＣデータの命令毎のオブジェクトである命令単位オブジェクト２３を生成する手順と、生成された各命令単位オブジェクト２３に順次実行指令を与える手順とを含む。
上記命令単位オブジェクト２３は、自己のＮＣ命令種別のデータと、必要な特有属性データと、上記実行指令に応答して自己のＮＣ命令種別および特有属性データに応じたシミュレーション処理を行う実行メソッドとを有するものである。
命令単位オブジェクト２３を生成する手順は、ＮＣ命令の種別毎にクラス定義された各々の命令種別クラス３３により、上記ＮＣ１行オブジェクト２２から渡されたＮＣ命令が自己のＮＣ命令の種別に合致するか否かを判断し、合致する場合に自己のクラスのインスタンスとして上記命令単位オブジェクト２３を生成する手順とする。
命令単位オブジェクト２３を生成する手順は、この実施形態では、ＮＣ１行オブジェクト２２を生成する手順の途中で行われるが、ＮＣ１行オブジェクト２２の生成の後に行うようにしても良い。
【００３９】
【発明の効果】
この発明の加工シミュレーション装置は、オブジェクト指向を利用した自己生成型のシミュレーション装置とし、命令単位のオブジェクトを自己生成するものとしたため、シミュレーションプログラムのメンテナンス性に優れ、ＮＣデータに対応したＮＣ命令の種別の追加，変更，削除の対応が容易に行える。
パンチプレスのＮＣデータに対応するものとし、工具種別オブジェクト生成手段とを設けた場合は、種々の工具を持つパンチプレスに対するシミュレーションに対しても、メンテナンス性に優れたものとなる。
この発明の加工シミュレーションプログラムは、オブジェクト指向を利用した自己生成型のシミュレーションプログラムとし、命令単位のオブジェクトを自己生成するものとしたため、メンテナンス性に優れ、ＮＣデータに対応したＮＣ命令の種別の追加，変更，削除の対応が容易に行える。
【図面の簡単な説明】
【図１】この発明の一実施形態にかかるオブェジェクト指向型加工シミュレーション装置とその生成されたオブジェクト群の階層関係を示す概念構成図である。
【図２】同加工シミュレーション装置のハードウェア構成例の概略説明図である。
【図３】同加工シミュレーション装置における画面表示装置の画面例の説明図である。
【図４】同加工シミュレーション装置の管理手段と命令単位オブジェクト生成手段の概念構成のブロック図である。
【図５】同加工シミュレーション装置の命令単位オブジェクト生成手段の概念構成の詳細のブロック図である。
【図６】ＮＣ１行オブジェクトの概念構成の説明図である。
【図７】命令単位オブジェクトの概念構成の説明図である。
【図８】同加工シミュレーション装置の全体処理の概略を示す流れ図である。
【図９】そのＮＣ１行オブジェクトの生成過程を示す流れ図である。
【図１０】そのＮＣ１行オブジェクトによる命令種別クラスへの自己生成の指令と、その形成されたオブジェクトの保有の処理を示す流れ図である。
【図１１】命令種別クラスの自己生成過程の流れ図である。
【図１２】自己識別関数テーブルの説明図である。
【図１３】１行文字列から自己生成された文字列を引く処理の説明図である。
【図１４】パンチプレスの各部の構成および動作の説明図である。
【符号の説明】
１…加工シミュレーション装置
２…コンピュータ
３…加工シミュレーションプログラム
６…ＮＣデータ
７…オブジェクト群
８…画面表示装置
２１…ＮＣデータオブジェクト
２２…ＮＣ１行オブジェクト
２３…命令単位オブジェクト
２４…工具データオブジェクト
２５…工具種別オブジェクト
３１…命令単位オブジェクト生成手段
３２…管理手段
３３…命令種別クラス
３３ａ…命令種別基底クラス
３３ｂ…命令種別毎のクラス
３４…工具データ抽出手段
３５…工具種別オブジェクト生成手段
３６…加工情報オブジェクト生成手段
４１…ＮＣ１行クラス
４２…自己識別関数テーブル
【図１】
2004164485.tif 000003
【図２】
2004164485.tif 000004
【図３】
2004164485.tif 000005
【図４】
2004164485.tif 000006
【図５】
2004164485.tif 000007
【図６】
2004164485.tif 000008
【図７】
2004164485.tif 000009
【図８】
2004164485.tif 000010
【図９】
2004164485.tif 000011
【図１０】
2004164485.tif 000012
【図１１】
2004164485.tif 000013
【図１２】
2004164485.tif 000014
【図１３】
2004164485.tif 000015
【図１４】
2004164485.tif 000016