(57)【特許請求の範囲】
【請求項１】
命令コード及びその引数を含むテキスト形式のソースプログラムをコンピュータが読み取り実行可能な実行プログラムに変換するためのソースプログラム変換方法において、
命令コード抽出手段により、前記ソースプログラムの文字列群の先頭文字から順次読み込みながら、あらかじめ適用された命令コード及び該命令コード毎に従属する引数が記録されたリストを参照して、命令コードを抽出する命令抽出工程と、
命令コード抽出手段によって抽出された前記命令コードが引数をとるものである場合に、引数抽出手段により、前記リストにおける前記命令コードに対応する箇所を参照し、前記命令コードに続く文字列から該命令コードに対応する引数を抽出する引数抽出工程と、
複数の命令コード専用変換手段のうち前記命令コードに対応した命令コード専用変換手段により、前記命令コード抽出手段によって抽出された命令コードを、前記引数抽出手段によって抽出された引数とともに変換し、実行可能な実行コードを生成する変換工程と、
命令コード抽出手段により、前記命令コード専用変換手段によって変換される文字列の次に記述された文字列を文字列群の先頭文字とする更新工程と、
を有し、
前記命令抽出工程、前記引数抽出工程、前記変換工程及び前記更新工程を繰り返し実行し、
前記引数抽出工程は、前記命令コードに続く文字列を順に調べて引数を順次抽出するとともに、抽出された文字列と同じ文字列の引数がすでに抽出処理済みであるとき、その時点における命令コードに対応した引数の抽出を終了することを特徴とするソースプログラム変換方法。
【請求項２】
請求項１記載のソースプログラム変換方法において、
前記リストは、命令コードが記録されている第１リストと、
各命令コード毎にその従属する引数が記録されている第２リストと、
に分けて構成されていることを特徴とするソースプログラム変換方法。
【請求項３】
請求項１又は２に記載のソースプログラム変換方法において、
前記命令コード専用変換手段は、前記命令コード毎に対応して実行コードを生成するバイナリ変換部を有し、
前記命令コード専用変換手段には、命令コードに対応したバイナリ変換部を追加登録可能であることを特徴とするソースプログラム変換方法。
【請求項４】
請求項１〜３のいずれか１項に記載のソースプログラム変換方法において、
前記引数抽出手段は前記命令コード専用変換手段に含まれ、
前記命令コード抽出手段は、前記ソースプログラムの文字列群の先頭文字から順次読み込みながら、前記リストを参照して抽出した命令コードに続く文字列群を前記命令コード専用変換手段に渡すことを特徴とするソースプログラム変換方法。
【請求項５】
請求項１〜４のいずれか１項に記載のソースプログラム変換方法において、
前記ソースプログラムは、命令コードと引数の間、及び引数同士の間がスペースで区切られていることを特徴とするソースプログラム変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テキスト形式のソースプログラムをコンピュータが読み取り実行可能な実行プログラムに変換するためのソースプログラム変換方法に関する。
【背景技術】
【０００２】
数値制御式の加工機械（ＮＣ装置）を動作させる加工プログラムはテキスト形式で編集されており、該ソースプログラムには命令コードとして動作の種類の設定コード、目標位置の設定コード及び動作速度の設定コード等が記録される。ＮＣ装置では、所定の変換部によってこれらの命令コードを認識、解釈してバイナリ形式の実行プログラムに変換した後、この実行プログラムを実行させてモータ等の制御を行う。
【０００３】
加工プログラムの記述方法はＮＣ装置の変換部の機能に対応しており、１行に１つの命令コードを記述する方法の他に、１行に複数の命令コードを記述する方法や、行の概念がなく連続して命令コードを記述する方法もある。
【０００４】
１行に複数の命令コードを記述する方法では、ＮＣ装置の変換部に各命令コードに対応する処理部を設けて、該処理部において複数の命令コードが併記可能であることを認識するようにしている（例えば、特許文献１参照）。
【０００５】
また、行の概念がなく連続して命令コードを記述する方法では、加工プログラムを命令コード毎に分割して、その後の分割した文字列が併記可能なものであるか否かを認識しながら変換を行っている。
【０００６】
【特許文献１】特開平１０−１３３７２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記のとおり、ＮＣ装置間では加工プログラムに互換性がないため、所定の加工プログラムを他のＮＣ装置に移植しようとする場合、移植先のＮＣ装置における変換部の仕様に合わせて加工プログラムを再編集する必要がある。
【０００８】
また、１行に複数の命令コードを記述する方法や、行の概念がなく連続して命令コードを記述する方法では、従来適用されていなかった新規の命令コードが適用される場合には、該命令コードに対応した処理部を追加するだけでは足らず、従来の命令コードに対応する処理部も変更する必要がある。従って、新規の命令コードを追加するためには、処理部の内容を熟知している者でなければ追加の操作を行うことができず、該操作自体にも時間がかかる。
【０００９】
本発明はこのような課題を考慮してなされたものであり、プログラムの互換性を向上させるとともに、加工プログラム等のソースプログラムに対して新規の命令コードを適用する際に、該命令コードを簡便に適用させることができるソースプログラム変換方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係るソースプログラム変換方法は、命令コード及びその引数を含むテキスト形式のソースプログラムをコンピュータが読み取り実行可能な実行プログラムに変換するためのソースプログラム変換方法において、命令コード抽出手段により、前記ソースプログラムの文字列群の先頭文字から順次読み込みながら、あらかじめ適用された命令コード及び該命令コード毎に従属する引数が記録されたリストを参照して、命令コードを抽出する命令抽出工程と、命令コード抽出手段によって抽出された前記命令コードが引数をとるものである場合に、引数抽出手段により、前記リストにおける前記命令コードに対応する箇所を参照し、前記命令コードに続く文字列から該命令コードに対応する引数を抽出する引数抽出工程と、複数の命令コード専用変換手段のうち前記命令コードに対応した命令コード専用変換手段により、前記命令コード抽出手段によって抽出された命令コードを、前記引数抽出手段によって抽出された引数とともに変換し、実行可能な実行コードを生成する変換工程と、命令コード抽出手段により、前記命令コード専用変換手段によって変換される文字列の次に記述された文字列を文字列群の先頭文字とする更新工程とを有し、前記命令抽出工程、前記引数抽出工程、前記変換工程及び前記更新工程を繰り返し実行し、前記引数抽出工程は、前記命令コードに続く文字列を順に調べて引数を順次抽出するとともに、抽出された文字列と同じ文字列の引数がすでに抽出処理済みであるとき、その時点における命令コードに対応した引数の抽出を終了することを特徴とする。
【００１１】
このように、リストを参照しながら命令コード及び引数を抽出することにより、プログラムの互換性を向上させるとともに、ソースプログラムに対して新規の命令コードを適用する際にはリストに命令コード及び引数を追加登録すればよく、該命令コードを簡便に適用させることができる。また、命令コードと引数とを正確に区別することができる。
【００１３】
また、前記リストは、命令コードが記録されている第１リストと、各命令コード毎にその従属する引数が記録されている第２リストとに分けて構成することにより、新規の登録が容易になる。
【００１４】
さらに、前記命令コード専用変換手段は、前記命令コード毎に対応して実行コードを生成するバイナリ変換部を有し、前記命令コード専用変換手段には、命令コードに対応したバイナリ変換部を追加登録可能とするとよい。前記引数抽出手段は前記命令コード専用変換手段に含まれ、前記命令コード抽出手段は、前記ソースプログラムの文字列群の先頭文字から順次読み込みながら、前記リストを参照して抽出した命令コードに続く文字列群を前記命令コード専用変換手段に渡すようにしてもよい。前記ソースプログラムは、命令コードと引数の間、及び引数同士の間がスペースで区切られていてもよい。
【発明の効果】
【００１５】
本発明に係るソースプログラム変換方法によれば、加工プログラム等のソースプログラムに対して新規の命令コードを適用する際に、該命令コードを簡便に適用させることができる。これにより、例えば、それまでの追加登録の履歴を把握していない者であっても、容易且つ短時間に新規の命令コードを追加し、適用させることができる。また、プログラムの互換性が向上する。
【発明を実施するための最良の形態】
【００１６】
以下、本発明に係るソースプログラム変換方法について実施の形態を挙げ、添付の図１〜図７を参照しながら説明する。
【００１７】
本実施の形態に係るソースプログラム変換方法は、例えばソースプログラム変換システム１０を用いて行われる。図１に示すように、ソースプログラム変換システム１０は、加工部１２の数値制御を行うＮＣ装置１４と、該ＮＣ装置１４を動作させるための加工プログラム（ソースプログラム）１６、第１リスト１８及び第２リスト２０の編集を行う編集端末２２とを有する。加工プログラム１６、第１リスト１８及び第２リスト２０は、編集端末２２のエディタ２４によってテキスト形式で編集される。
【００１８】
ＮＣ装置１４は、編集端末２２から転送された加工プログラム１６、第１リスト１８及び第２リスト２０をそれぞれ加工プログラム１６ａ、第１リスト１８ａ及び第２リスト２０ａとして記録するメモリ２６と、第１リスト１８ａ及び第２リスト２０ａを参照しながら加工プログラム１６ａを実行プログラム２８に変換する変換部３０と、実行プログラム２８を読み取り実行して前記加工部１２を動作させる実行処理部３２とを有する。実行処理部３２はアンプ３４を介してモータ３６、ソレノイド３７等を作用させ、工具やテーブル等を駆動することによりワークに対する加工を行う。
【００１９】
変換部３０は、加工プログラム１６ａから所定の長さの文字列を順に読み出す入力部４０と、第１リスト１８ａを参照しながら、入力部４０によって読み出された文字列に記述されている命令コードの種類を識別する命令コード抽出部４２と、該命令コード抽出部４２で識別した命令コードの種類に応じた引数を、第２リスト２０ａを参照しながら抽出し、実行可能なバイナリ形成に変換する変換処理部（引数抽出手段）４４とを有する。該変換処理部４４は、各命令コード毎に対応したバイナリ変換部４６ａ、４６ｂ、４６ｃ、４６ｄ、４６ｅ及び４６ｆを有する。
【００２０】
図２に示すように、加工プログラム１６及び１６ａは、テキスト形式で編集されており、命令コード（「Ｎ」、「Ｅ」、「Ｇ００」等）と、命令コードに従属する引数（「Ｘ１００．０」、「Ｙ２００．０」等）と、コメントが記述されている。
【００２１】
ＮＣ装置１４で適用可能な命令コードは「Ｇ００」、「Ｇ０１」、「Ｇ０２」「Ｅ」、「Ｆ」及び「Ｎ」の６つの命令コードである。引数は省略可能である。命令コード「Ｇ００」は変換処理部４４におけるバイナリ変換部４６ａによって変換処理される。同様に、命令コード「Ｇ０１」、「Ｇ０２」、「Ｅ」、「Ｆ」及び「Ｎ」は、それぞれバイナリ変換部４６ｂ、４６ｃ、４６ｄ、４６ｅ及び４６ｆによって変換処理される。
【００２２】
なお、後述するように、変換処理部４４には、新規の命令コードに対応する変換部を追加することが可能であり、例えば、新規の命令コード「Ｇ１０３」に対応するバイナリ変換部４６ｇを追加設定することができる。
【００２３】
実際上、ＮＣ装置１４にはより多くの命令コードが存在するが、理解を容易にするために代表的な６つの命令コードと、新規の命令コード「Ｇ１０３」に限って説明する。
【００２４】
変換部３０で変換可能な加工プログラム１６ａの書式は、１行に複数の命令コードを記述することが可能であって、命令コード毎に他の命令コードとの併記が許可されるか又は排他的であるかが規定されている。併記が許可される命令コードは、１行に複数を記述可能である。排他的な命令コード同士を１行に記述することは禁止されており、併記が許可される１以上の命令コードと１つの排他的な命令コードを記述することは可能である。
【００２５】
「Ｇ００」の命令コードは、非補間の位置決めコードであって、排他的な命令コードである。また、引数は３次元座標としての「Ｘ」、「Ｙ」及び「Ｚ」と、姿勢を示す「Ａ」、「Ｂ」及び「Ｃ」である。
【００２６】
「Ｇ０１」の命令コードは、直線補間コードであり、排他的な命令コードである。また、引数は「Ｘ」、「Ｙ」、「Ｚ」、「Ａ」、「Ｂ」及び「Ｃ」である。
【００２７】
「Ｇ０２」の命令コードは、時計回りの円弧補間コードであり、排他的な命令コードである。また、引数は「Ｘ」、「Ｙ」、「Ｚ」及び円弧の半径としての「Ｒ」である。
【００２８】
「Ｅ」の命令コードは、各軸速度の指定コードであり、他命令コードとの併記は許可されている。また、引数はない。
【００２９】
「Ｆ」の命令コードは、補間動作速度指定コードであり、他命令コードとの併記は許可されている。また、引数はない。
【００３０】
「Ｎ」の命令コードは、ラベル番号指定コードであり、他命令コードとの併記は許可されている。また、引数はない。この「Ｎ」の命令コードは、所定の分岐命令（いわゆるＧＯ  ＴＯ文等）に対応する分岐先として利用可能である。
【００３１】
例えば、「Ｎ１０」という記述は、ラベル番号「１０」を指定する命令であり、「Ｎ」の直後に対応する数値を記述する。「Ｆ」及び「Ｎ」も同様である。また、行番号を１０番として採番し、動作としてＸ＝１００．０［ｍｍ］、Ｙ＝２００．０［ｍｍ］の位置へ各軸速度を１００［％］で移動させる場合には、
「Ｎ１０  Ｇ００  Ｘ１００．０  Ｙ２００．０  Ｅ１００」
という文字列を１行に記述すればよい。
【００３２】
なお、これらの命令のうちいくつかは、ＪＩＳ  Ｂ  ６３１５−２及びＩＳＯ／ＤＩＳ６９８３−２にも規定されている。
【００３３】
図３Ａに示すように、第１リスト１８及び１８ａには各命令コードが記録されている。
【００３４】
図４Ａに示すように、第２リスト２０及び２０ａには各命令コード毎にその従属する引数が記録されている。このうち、引数を有する命令コードの行には、最後の引数の欄の右側欄にそれ以上の引数がないことを示す「−」が記録されている。また、命令コード「Ｅ」、「Ｆ」及び「Ｎ」には、従属する引数がないことから、最初の欄に「−」が記録されており、引数がないことを示している。
【００３５】
第１リスト１８に命令コード、第２リスト２０に引数をそれぞれ分けて記録することにより適用済みの命令コード及び引数が明瞭になり、後述するように新規の命令コードを追加登録する際にも編集が容易である。
【００３６】
次に、このように構成されるソースプログラム変換システム１０によって、加工プログラム１６を実行プログラム２８に変換する手順（ソースプログラム変換方法）について、図５〜図７を参照しながら説明する。図５に示す処理のうち、ステップＳ１〜Ｓ４は、主に前記入力部４０によって実行される処理であり、ステップＳ５〜Ｓ１４は主に前記命令コード抽出部４２によって実行される処理である。また、図６に示す処理は、主に変換処理部４４のバイナリ変換部４６ａによって実行される処理である。
【００３７】
先ず、ステップＳ１において、編集端末２２のエディタ２４によって加工プログラム１６を編集する。この編集作業は、いわゆるプログラミング作業であり、ＮＣ装置１４が所定の動作を行うことができるように加工プログラム１６を作成・編集する。また、第１リスト１８及び第２リスト２０は、あらかじめ図３Ａ及び図４Ａに示すように作成されているものとする。
【００３８】
加工プログラム１６は、テキスト形式で編集され、第１リスト１８及び第２リスト２０はテキスト形式又はバイナリ形式で編集されている。
【００３９】
次に、ステップＳ２において、加工プログラム１６、第１リスト１８及び第２リスト２０をＮＣ装置１４のメモリ２６に転送し、加工プログラム１６ａ、第１リスト１８ａ及び第２リスト２０ａとして記録する。
【００４０】
次いで、ステップＳ３において、所定の変換開始指示操作により、入力部４０がメモリ２６内の加工プログラム１６ａに対するアクセスを可能にするためのオープン処理を行う。加工プログラム１６ａは、図２に示すように編集されているものとする。
【００４１】
さらに、ステップＳ４において、入力部４０は加工プログラム１６ａから１行を所定のバッファに読み込む。このステップＳ４の処理は、実行される度に先頭から順に１行ずつを読み込むことができるように、加工プログラム１６ａにおける行を示す所定の行ポインタにより制御される。
【００４２】
次に、ステップＳ５において、読み込んだ行がファイルの終端を示す「ＥＯＦ」コードであるか否かを確認する。バッファ中の文字列が「ＥＯＦ」コードであるときには処理を終了し、それ以外のときにはステップＳ６へ進む。
【００４３】
ステップＳ６においては、バッファ中の文字列からコメントの文字列を削除する。つまり、括弧“（”及び閉じ括弧“）”で囲まれる範囲の文字列をその括弧を含んで削除し、さらに、その行におけるセミコロン“；”以降の文字列を削除する。
【００４４】
これにより、例えば、加工プログラム１６の第１行目の文字列（図２参照）の場合、「（１０番のタップ位置へ移動）」という文字列と、「；速度設定」という文字列が削除され、
「Ｇ００  Ｘ１００．０  Ｙ２００．０  Ｅ１００」
という文字列がバッファ中に残る。
【００４５】
次に、ステップＳ７において、読み取り位置を示す命令抽出用ポインタをバッファの先頭にセットする。つまり、上記の文字列の場合には、先頭の文字である「Ｇ」の部分に所定の命令抽出用ポインタがセットされる。この命令抽出用ポインタはステップＳ８以降の処理においてバッファにおける位置が移動する。
【００４６】
次いで、ステップＳ８において、その時点の命令抽出用ポインタの位置を調べ、該命令抽出用ポインタがバッファの終端にある場合には前記ステップＳ４へ戻り、それ以外の場合には次のステップＳ９へ移る。ステップＳ４へ戻る場合には加工プログラム１６ａから次の行の文字列をバッファに順次読み込み、該文字列に対して処理を続行することになる。
【００４７】
ステップＳ９において、その時点における命令抽出用ポインタの位置から次のスペース位置までに含まれる文字列を命令コードとして抽出する。上記の文字列の場合には、当初「Ｇ００」という命令コードの文字列が抽出される。
【００４８】
ステップＳ１０において、抽出された命令コードを示す文字列が第１リスト１８ａにあるか否かを確認する。該文字列が第１リスト１８ａに存在する場合には、次のステップＳ１１へ移り、存在しない場合には所定の異常表示を行い、処理を終了する。
【００４９】
ステップＳ１１において、抽出された命令コードに対応する所定のバイナリ変換部を変換処理部４４から呼び出す。具体的には、抽出された命令コードが「Ｇ００」である場合には、対応するバイナリ変換部４６ａを呼び出す。
【００５０】
次に、ステップＳ１２において、呼び出されたバイナリ変換部を実行させる。このとき、バイナリ変換部に対して、抽出された命令コードに続く文字列を引き渡す。つまり、上記の文字列の場合には、「Ｇ００」に続く文字列である
「Ｘ１００．０  Ｙ２００．０  Ｅ１００」
という文字列をバイナリ変換部４６ａに引き渡す。このバイナリ変換部４６ａにおける処理については後述する。
【００５１】
次いで、ステップＳ１３において、バイナリ変換部によって認識された引数を確認し、バッファ上において該引数の文字列に続く次の文字の位置に命令抽出用ポインタを移動する。つまり、上記の文字列における最初の命令コード「Ｇ００」に対応したバイナリ変換部４６ａを呼び出した場合には、引数が「Ｘ１００．０  Ｙ２００．０」であると認識され、命令抽出用ポインタはそれに続く文字である「Ｅ」の位置にセットされる。
【００５２】
さらにステップＳ１４において、バイナリ変換部における処理中にエラーが発生したか否かを確認し、エラーがある場合には所定の異常表示を行い、処理を終了する。それ以外の場合、つまり正常である場合には前記ステップＳ８へ戻りバッファ中の次の文字列に対して処理を続行する。
【００５３】
このようにして、加工プログラム１６ａに記述された文字列を、ステップＳ４〜Ｓ８において１行ずつバッファに順次読み込むとともに、ステップＳ９〜Ｓ１４においてバッファ内の文字列を分解して、バイナリ変換部４６ａ〜４６ｆによって順次バイナリ形式に変換することができる。
【００５４】
次に、前記ステップＳ１２におけるバイナリ変換部の処理について図６を参照しながら説明する。なお、本説明では、代表例として、バイナリ変換部のうち命令コード「Ｇ００」に対応するバイナリ変換部４６ａが、命令コード抽出部４２から文字列「Ｘ１００．０  Ｙ２００．０  Ｅ１００」の引き渡しを受けた場合について説明する。
【００５５】
先ず、ステップＳ１０１において、引き渡しを受けた文字列における先頭の文字「Ｘ」の位置に引数抽出用ポインタをセットしておく。
【００５６】
次に、ステップＳ１０２において、対応する命令コードである「Ｇ００」は引数をとるか否かを確認する。具体的には、第２リスト２０ａを参照して、命令コード「Ｇ００」の行を参照し、この行に引数を示す文字がなく、文字「−」のみが記録されているときにはステップＳ１０８へ移り、引数を示す文字列が記録されている場合には、ステップＳ１０３へ移る。
【００５７】
また、引数がない命令コードは第２リスト２０ａに登録しないこととし、該第２リスト２０ａを参照したときに対応する文字列がない場合にステップＳ１０８へ移るようにしてもよい。
【００５８】
次に、ステップＳ１０３において、第２リスト２０ａにおける「Ｇ００」の行を参照し、その時点における引数抽出用ポインタが示す文字（例えば、「Ｘ」）が存在するか否かを調べる。対応する文字がないときにはステップＳ１０８へ移り、該文字が存在するときにはステップＳ１０４へ移る。
【００５９】
なお、上記のとおり、命令コード「Ｇ００」は、引数として「Ｘ」、「Ｙ」、 「Ｚ」、「Ａ」、「Ｂ」及び「Ｃ」の６つをとり得るが、引数の数は６以下の任意の数でよく、例えば、引数が全くなくてもよい。
【００６０】
ステップＳ１０４において、その時点における引数抽出用ポインタが示す文字がすでに処理済みであるか否かを確認する。つまり、後述するように、ある引数が所定の命令コードと同じ文字列に適用されている場合であっても、引き渡された文字列のうち先頭側に存在する文字列を引数として識別し、後側に存在する文字列を「Ｇ００」に続く次の命令コードであると識別することができる。
【００６１】
引数抽出用ポインタが示す文字がすでに処理済みである場合には、ステップＳ１０８へ移り、それ以外の場合にはステップＳ１０５へ移る。
【００６２】
ステップＳ１０５においては、その時点における引数抽出用ポインタの位置から次のスペース位置までに含まれる数値を示す文字列を抽出し、引数抽出用ポインタの示す文字と組み合わせて、その引数が示す数値データとして認識する。
【００６３】
具体的には、引数抽出用ポインタが「Ｘ」を示す場合には、引数Ｘを、Ｘ＝１００．０として認識し、メモリ２６上の所定の変数エリア（又は所定のバッファ）に記録する。この場合、「１００．０」という文字列としてではなく数値データとして記録してもよい。
【００６４】
次に、ステップＳ１０６において、前記ステップＳ１０５において認識した数値データがあらかじめ規定された適正範囲の値であるか否かを確認する。適正である場合には、ステップＳ１０７へ移り、不適正である場合には所定の異常表示を行い、処理を終了する。数値データが不適正である場合には、所定のワーニング表示を行った後にステップＳ１０７へ移って処理を続行してもよい。
【００６５】
ステップＳ１０７においては、その時点まで認識した引数と該引数に付属する数値を示す文字列の次の文字に引数抽出用ポインタをセットする。つまり、引数を示す文字列「Ｘ」に対して、Ｘ＝１００．０と認識した後には、引数抽出用ポインタを次の文字列「Ｙ」の位置にセットする。この後、前記ステップＳ１０２へ移る。
【００６６】
このようにして、ステップＳ１０２〜Ｓ１０７を繰り返し行うことにより、文字列「Ｘ１００．０  Ｙ２００．０  Ｅ１００」に対して、命令コード「Ｇ００」に対応する引数をＸ＝１００．０、Ｙ＝２００．０として認識することができる。この後、引数抽出用ポインタが文字列「Ｅ」の位置にセットされたときには、前記ステップＳ１０３により、該文字列「Ｅ」が引数でないことが認識されてステップＳ１０８へ移る。
【００６７】
ステップＳ１０８（変換手段）においては、その時点までに認識された引数の数（０〜６）と各引数の数値データを反映させて「Ｇ００」をバイナリ形式に変換する。
【００６８】
ここでいう変換とは、単に「Ｇ００」という文字列をバイナリ形式に表現形式だけを変えることではなく、ＮＣ装置１４において実行処理部３２が読み取り実行可能な形式（つまり実行コード）に変換することをいう。変換したコードは、実行プログラム２８を記録する領域に対して、所定のアドレス順に書き込む。
【００６９】
この後、引き渡しを受けた文字列「Ｘ１００．０  Ｙ２００．０  Ｅ１００」のうち、この時点における引数抽出用ポインタの位置である「Ｅ」の位置に基づき、「Ｘ１００．０  Ｙ２００．０」までが認識済みであり、これに続く文字列「Ｅ１００」が未処理である旨を命令コード抽出部４２に通知する。命令コード抽出部４２では、この通知に基づき前記ステップＳ１３において命令抽出用ポインタを移動させる。
【００７０】
ステップＳ１０８の処理の後、バイナリ変換部４６ａにおける今回の処理、つまり図６に示す処理を終了する。加工プログラム１６ａに命令コードとしての文字列「Ｇ００」が複数記述されている場合には、バイナリ変換部４６ａが再度呼び出されることはもちろんである。
【００７１】
ここまで命令コード「Ｇ００」に対応したバイナリ変換部４６ａの処理について説明したが、他の命令コード「Ｇ０１」、「Ｇ０２」、「Ｅ」、「Ｆ」及び「Ｎ」についても、バイナリ変換部４６ｂ〜４６ｆ（図１参照）によって同様に処理される。バイナリ変換部４６ａ〜４６ｆは、ステップＳ１０１〜Ｓ１０７に相当する部分は共通にして、ステップＳ１０８に相当する部分だけを個別に設けるようにしてもよい。
【００７２】
また、上記の例では、１行に２つの命令コード「Ｇ００」及び「Ｅ１００」が含まれている例について説明したが、１行に３つ以上の命令コードが含まれている場合も同様に処理可能である。
【００７３】
ところで、加工プログラム１６ａに記述される命令コードは、動作命令と非動作命令に区別される。動作命令とは、モータ３６やソレノイド３７等のアクチュエータを実際に動作させる命令であり、非動作命令は、速度設定や送り設定等のパラメータ設定用の命令であり、実際の動作を伴うことがない。
【００７４】
動作命令と非動作命令を組み合わせて、例えば、各軸の速度を１００［％］に設定し、Ｘ＝１００．０、Ｙ＝２００．０の座標に位置決めするように加工プログラム１６ａに記述する際、
「Ｇ００  Ｘ１００．０  Ｙ２００．０  Ｅ１００」
という記述と、
「Ｅ１００  Ｇ００  Ｘ１００．０  Ｙ２００．０」
という記述の両方が許容されている場合がある。
【００７５】
このような場合には、前記ステップＳ１０８において変換したコードを、実行プログラム２８を記録する領域に対して直接に書き込むのではなく、一度、動作命令用の記録領域と、非動作命令用の記録領域に分けて書き込み、加工プログラム１６ａの全て（又は所定の部分）まで変換が終わった後にコードを並び替えて実行プログラム２８として記録してもよい。
【００７６】
以上の手順によって加工プログラム１６ａを変換することによって作成された実行プログラム２８は、実行処理部３２のコンピュータによって読み取り実行され、アンプ３４を介してモータ３６及びソレノイド３７等を制御する。
【００７７】
なお、上記の手順は、加工プログラム１６ａに基づいて実行プログラム２８を一度作成した後に、該実行プログラム２８を実行させるという、いわゆるコンパイラ型の変換システムとしてもよいし、また、加工プログラム１６ａを実行プログラム２８に変換しながら、変換した部分を直ちに実行させるという、いわゆるインタプリタ型の変換システムとしてもよい。
【００７８】
次に、加工プログラム１６に新規の命令コードを適用させる場合に、該加工プログラム１６を実行プログラム２８に変換する手順について説明する。
【００７９】
ここで説明する新規の命令コードは、従来適用されていなかったものであり、「Ｇ１０３」と表現されるものとする。また、この命令コード「Ｇ１０３」は、タップサイクルを設定するコードであって、排他的な命令コードであり、引数には工具の回転数を示す「Ｎ」と、ピッチを示す「Ｆ」と、タイマ設定用の「Ｐ」とをとり得るものとする。
【００８０】
この命令コード「Ｇ１０３」を用いて、加工プログラム１６に
「Ｇ１０３  Ｎ８  Ｆ０．８  Ｐ１．０  Ｆ６００」
という文字列を記述した場合について以下に説明する。
【００８１】
この場合、２つの文字列「Ｆ」のうち先頭側の「Ｆ０．８」は「Ｇ１０３」の引数で、ピッチが０．８［ｍｍ］であることを示す。一方、後側の「Ｆ６００」は、「Ｇ１０３」とは別の命令コードであって、補間動作速度が６００［ｍｍ／ｓ］であることを示す。また、「Ｎ８」は、「Ｇ１０３」の引数であって、工具の回転数が８回であることを示し、前記の命令コード「Ｎ」とは異なる。「Ｐ１．０」は、「Ｇ１０３」の引数であって、１．０［ｓ］のタイマ機能を示す。
【００８２】
加工プログラム１６に新規の命令コード「Ｇ１０３」を記述し、該加工プログラム１６を実行プログラム２８に変換する際、準備として図７に示す作業を行う。
【００８３】
先ず、ステップＳ２０１において、変換処理部４４（図１参照）に新規の命令コード「Ｇ１０３」をバイナリコードに変換するためのバイナリ変換部４６ｇ（図１参照）を追加登録する。この場合、他のバイナリ変換部４６ａ〜４６ｆ及び命令コード抽出部４２は変更する必要がない。
【００８４】
バイナリ変換部４６ｇは、図６に基づいて説明したバイナリ変換部４６ａと基本的に同じ構成であり、前記ステップＳ１０８に相当する部分が異なる。つまり、バイナリ変換部４６ａは命令コード「Ｇ００」をバイナリ形式に変換することに対して、バイナリ変換部４６ｇにおけるステップＳ１０８に相当する部分では命令コード「Ｇ１０３」をバイナリ形式に変換する。以下の説明では、バイナリ変換部４６ｇに対して、図６と同じステップ番号を用いて説明する。
【００８５】
次に、ステップＳ２０２において、第１リスト１８に新規の命令コード「Ｇ１０３」を追加登録し、更新する（図３Ｂ参照）。
【００８６】
さらに、ステップＳ２０３において、第２リスト２０に命令コード「Ｇ１０３」と、そのとり得る引数の「Ｎ」、「Ｆ」及び「Ｐ」を追加登録し、更新する（図４Ｂ参照）。
【００８７】
第１リスト１８及び第２リスト２０に対する追加登録は、例えば、エディタ２４を用いればよい。
【００８８】
このようにステップＳ２０３までの準備が終了した後、図５及び図６に示す処理を実行する。
【００８９】
この場合、前記ステップＳ９及びＳ１０において、更新された第１リスト１８（図３Ｂ参照）を参照することにより「Ｇ１０３」という文字列が命令コードであることが認識可能であり、しかも最初の１文字が同一である他の命令コードの「Ｇ００」、「Ｇ０１」及び「Ｇ０２」との区別が可能である。
【００９０】
また、この後、ステップＳ１１により、命令コード「Ｇ１０３」に対応するバイナリ変換部４６ｇが適切に呼び出され、「Ｇ１０３」に続く文字列である「Ｎ８  Ｆ０．８  Ｐ１．０  Ｆ６００」がバイナリ変換部４６ｇに引き渡される。
【００９１】
バイナリ変換部４６ｇにおける処理では、ステップＳ１０２及びＳ１０３において、更新された第２リスト２０（図４Ｂ参照）を参照することにより、文字列「Ｎ」が「Ｇ１０３」の引数であることが認識可能であり、ラベル番号指定コードである「Ｎ」とは区別できる。
【００９２】
さらに、ステップＳ１０５及びＳ１０６において、文字列「Ｎ」に続く文字列である「８」を認識することにより、Ｎ＝８、つまり工具の回転数が８回であることが認識可能となり、命令コード「Ｇ１０３」の最初の引数である［Ｎ］についての処理が終了する。
【００９３】
次に、ステップＳ１０７において引数抽出用ポインタを２つの文字列「Ｆ」のうち先頭側の位置にセットする。その後、文字列「Ｎ」の場合と同様に、Ｆ＝０．８、つまりピッチが０．８［ｍｍ］であることを認識する。
【００９４】
さらに、引数抽出用ポインタを文字列「Ｐ」の位置にセットして同様の処理を行い、Ｐ＝１．０、つまり１．０［ｓ］のタイマ機能を認識する。
【００９５】
このようにして、新規の命令コードである「Ｇ１０３」に従属する引数である「Ｎ８」、「Ｆ０．８」及び「Ｐ１．０」を正しく認識することができる。
【００９６】
さらにまた、この後ステップＳ１０７において引数抽出用ポインタを２つの文字列「Ｆ」のうち後側の位置にセットし、ステップＳ１０３を介してステップＳ１０４に移る。このステップＳ１０４においては、前記のとおり、その時点における引数抽出用ポインタが示す文字列「Ｆ」が処理済みであるか否かを確認するが、この文字列「Ｆ」は２つ存在するうちの後側であることからすでに１度処理を行っていると判断されて、ステップＳ１０８へ移ることとなる。
【００９７】
従って、後側の「Ｆ」及びこれに続く「６００」という文字列は、命令コードである「Ｇ１０３」の引数ではなく、異なる次の命令コードであることを正しく判断することができる。
【００９８】
この後、ステップＳ１０８では、認識された各引数及びその数値データを反映させて新規の命令コードである「Ｇ１０３」をバイナリ形式に変換する。
【００９９】
上述したように、本実施の形態に係るソースプログラム変換システム１０によれば、「Ｇ１０３」等の新規の命令コードを用いる場合、これに対応するバイナリ変換部４６ｇを変換処理部４４に追加登録するとともに、第１リスト１８及び第２リスト２０に「Ｇ１０３」の命令コードとその引数「Ｎ」、「Ｆ」及び「Ｐ」を追加登録すればよい。この場合、他のバイナリ変換部４６ａ〜４６ｆ及び命令コード抽出部４２には影響がなく、修正を行う必要がない。
【０１００】
次に、本実施の形態に係るソースプログラム変換方法と対比するために、従来技術について説明する。
【０１０１】
従来技術においては、加工プログラム１６ａからバッファに読み込んだ文字列のうち、「Ｅ」、「Ｆ」、「Ｇ」又は「Ｎ」のいずれかの文字から次に現れる「Ｅ」、「Ｆ」、「Ｇ」又は「Ｎ」までの間を１つの命令として認識している。従って、前記の「Ｇ１０３」のような新規の命令コードが「Ｆ」や「Ｎ」を引数としてとるものと規定されている場合には、そのままでは命令コードと引数との区別ができず、専用の判断処理を設ける必要がある。
【０１０２】
つまり、命令コード抽出部４２に相当する処理部又は変換処理部４４に相当する処理部において次のような意味の例外処理を追加、変更する必要がある。
【０１０３】
すなわち、この場合の例外処理は、“ただし、切り分け予定部分の先頭の文字列が「Ｇ１０３」であったら、１回目の「Ｆ」及び「Ｎ」は無視する”という意味のものである。
【０１０４】
また、このような追加、変更の操作は、新規の命令コードが適用される度に行う必要があり、命令コード抽出部４２に相当する処理部が次第に複雑となり、追加、変更の操作の際に人為的なミスを誘発することがある。また、追加、変更の操作を担当した以外の者には処理構造の理解が困難になる。さらに、いわゆるバージョン管理が繁雑となる。
【０１０５】
一方、本実施の形態に係るソースプログラム変換方法によれば、命令コード抽出部４２や変換処理部４４は、第１リスト１８及び第２リスト２０を参照しながら命令コードの抽出を行うため、新規の命令コードを適用する際に、命令コード抽出部４２や従来の命令コードに対応するバイナリ変換部４６ａ〜４６ｆに対して変更を加える必要がない。この場合、第１リスト１８及び第２リスト２０には、新規の命令コードに対応して、その命令コード自体と、引数とを追加登録するが、この手順は極めて容易であって、しかも追加登録の数が増えても第１リスト１８及び第２リスト２０の基本構造は変化がない。従って、それまでの追加登録の履歴を把握していない者であっても、容易且つ短時間に新規の命令コードを追加適用させることができる。
【０１０６】
このように、本実施の形態に係るソースプログラム変換方法によれば、加工プログラム１６及び１６ａに対して新規の命令コードを適用する際に、該命令コードを簡便に適用させることができる。
【０１０７】
また、上記の説明では、命令コードとして「Ｅ」、「Ｇ００」、「Ｇ１０３」等の動作や条件を設定するための命令コードについて例示したが、これ以外に、分岐処理、演算処理及び代入処理等に関する命令コードについても適用可能であることはもちろんである。例えば、第２リスト２０における登録データを引数なしとし、前記ステップＳ１０８の処理を分岐命令、演算命令及び代入命令に置き換えれることにより、これらの処理に対して適用可能となる。つまり、図６に示す処理は各命令コード毎に用意されるものであり、全体の仕組みや他の命令処理に影響されずに作成可能である。
【０１０８】
さらに、本実施の形態に係るソースプログラム変換方法は、ＮＣ装置１４を制御するための加工プログラム１６に限らず、他の形式のプログラムにも適用可能である。
【０１０９】
上記の説明では、新規の命令コードとして１つの命令コード「Ｇ１０３」に対して適用する例について説明したが、新規の命令コードが複数である場合にも同様の手順により対応可能であることはもちろんである。
【０１１０】
さらにまた、上記の説明では、第１リスト１８と第２リスト２０とを参照しながら命令コード及び引数を抽出する例について説明したが、第２リスト２０のうち図４Ａにおける最も左側の列に相当する部分を第１リスト１８として兼用することとし、該第１リスト１８自体を省略してもよい。
【０１１１】
実行プログラム２８は、１つの加工プログラム１６から変換されるものとして説明したが、加工プログラム１６は複数のファイルから構成されていてもよい。
【０１１２】
本発明に係るソースプログラム変換方法は、上述の実施の形態に限らず、本発明の要旨を逸脱することなく、種々の構成をとり得ることはもちろんである。
【図面の簡単な説明】
【０１１３】
【図１】ソースプログラム変換システムの構成ブロック図である。
【図２】加工プログラムの内容を示す図である。
【図３】図３Ａは、第１リストの内容を示す図であり、図３Ｂは、新規の命令コードを追加登録して更新された第１リストの内容を示す図である。
【図４】図４Ａは、第２リストの内容を示す図であり、図４Ｂは、新規の命令コードを追加登録して更新された第２リストの内容を示す図である。
【図５】入力部及び命令コード抽出部が行う処理の手順を示すフローチャートである。
【図６】バイナリ変換部が行う処理の手順を示すフローチャートである。
【図７】新規の命令コードを適用させる際における準備の手順を示すフローチャートである。
【符号の説明】
【０１１４】
１０…ソースプログラム変換システム    １４…ＮＣ装置
１６、１６ａ…加工プログラム          １８、１８ａ…第１リスト
２０、２０ａ…第２リスト              ２２…編集端末
２４…エディタ                        ２６…メモリ
２８…実行プログラム                  ３０…変換部
３２…実行処理部                      ４０…入力部
４２…命令コード抽出部                ４４…変換処理部
４６ａ〜４６ｇ…バイナリ変換部
【図１】
0004613003.tif 000002
【図２】
0004613003.tif 000003
【図３】
0004613003.tif 000004
【図４】
0004613003.tif 000005
【図５】
0004613003.tif 000006
【図６】
0004613003.tif 000007
【図７】
0004613003.tif 000008