IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オークマ株式会社の特許一覧

特開2024-62864加工プログラム変換装置および工作機械システム
<>
  • 特開-加工プログラム変換装置および工作機械システム 図1
  • 特開-加工プログラム変換装置および工作機械システム 図2
  • 特開-加工プログラム変換装置および工作機械システム 図3
  • 特開-加工プログラム変換装置および工作機械システム 図4
  • 特開-加工プログラム変換装置および工作機械システム 図5
  • 特開-加工プログラム変換装置および工作機械システム 図6
  • 特開-加工プログラム変換装置および工作機械システム 図7
  • 特開-加工プログラム変換装置および工作機械システム 図8
  • 特開-加工プログラム変換装置および工作機械システム 図9
  • 特開-加工プログラム変換装置および工作機械システム 図10
  • 特開-加工プログラム変換装置および工作機械システム 図11
  • 特開-加工プログラム変換装置および工作機械システム 図12
  • 特開-加工プログラム変換装置および工作機械システム 図13
  • 特開-加工プログラム変換装置および工作機械システム 図14
  • 特開-加工プログラム変換装置および工作機械システム 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024062864
(43)【公開日】2024-05-10
(54)【発明の名称】加工プログラム変換装置および工作機械システム
(51)【国際特許分類】
   G05B 19/4093 20060101AFI20240501BHJP
【FI】
G05B19/4093 H
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2022170988
(22)【出願日】2022-10-25
(71)【出願人】
【識別番号】000149066
【氏名又は名称】オークマ株式会社
(74)【代理人】
【識別番号】110001210
【氏名又は名称】弁理士法人YKI国際特許事務所
(72)【発明者】
【氏名】磯▲崎▼ 篤浩
(72)【発明者】
【氏名】市原 敬吾
(72)【発明者】
【氏名】一政 信行
(72)【発明者】
【氏名】深谷 安司
【テーマコード(参考)】
3C269
【Fターム(参考)】
3C269AB01
3C269BB08
3C269EF21
3C269EF39
3C269EF82
3C269QB20
(57)【要約】
【課題】加工プログラムをより適切に変換できる加工プログラム変換装置を開示する。
【解決手段】加工プログラム100を、実行データ110に変換する加工プログラム変換装置10は、プロセッサ20と、メモリ22と、を備えており、前記メモリ22は、外部特殊コードと内部特殊コードとを一対一に対応付けて記録した特殊コード変換テーブルT02と、外部一般アドレスと前記特殊コードの指令状況および有効状況と内部一般アドレスとの対応関係を記録した一般アドレス変換テーブルT06と、を記憶しており、前記プロセッサ20は、加工プログラム100をブロックごとに読み込み、読み込んだ変換前コードを、前記特殊コード変換テーブルT02に照らし合わせて、前記内部特殊コードに変換し、前記一般アドレス変換テーブルT06に基づいて変換前アドレスを前記内部一般アドレスに変換する、ように構成されている。
【選択図】図2
【特許請求の範囲】
【請求項1】
第一ルールに従って作成された第一加工プログラムを、第二ルールに従って作成された第二加工プログラムに変換する加工プログラム変換装置であって、
プロセッサと、メモリと、を備えており、
前記メモリは、予め、
前記第一加工プログラムで利用可能な特殊コードである外部特殊コードと、前記第二加工プログラムで利用可能な特殊コードである内部特殊コードと、を一対一に対応付けて記録した特殊コード変換テーブルと、
前記第一加工プログラムで利用可能な一般アドレスである外部一般アドレスと、前記特殊コードの指令状況および有効状況と、前記第二加工プログラムで利用可能な一般アドレスである内部一般アドレスと、の対応関係を記録した一般アドレス変換テーブルと、
を記憶しており、前記プロセッサは、
前記第一加工プログラムをブロックごとに読み込み、
読み込んだ変換前の特殊コードである変換前コードを、前記特殊コード変換テーブルに照らし合わせて、前記内部特殊コードに変換し、
前記ブロックを読み込んだ結果に基づいて、現在の前記特殊コードの指令状況および有効状況を判別し、
読み込んだ前記一般アドレスである変換前アドレスおよび現在の前記特殊コードの指令状況および有効状況を、前記一般アドレス変換テーブルに照らし合わせて、前記変換前アドレスを前記内部一般アドレスに変換する、
ように構成されており、
前記特殊コードは、GコードまたはMコードであり、
前記一般アドレス変換テーブルにおいて、一部の前記外部一般アドレスは、一対複数の関係で前記内部一般アドレスに対応付けられている、
ことを特徴とする加工プログラム変換装置。
【請求項2】
請求項1に記載の加工プログラム変換装置であって、
前記内部特殊コードは、複数のグループに分類されており、
前記メモリは、さらに、
前記グループが、モーダル、または、ワンショットのいずれであるかを示す特殊コード特性テーブルと、
現在のブロックで指令された前記内部特殊コードが属する前記グループと、現在のブロックで有効な前記内部特殊コードと、を記録した内部特殊コードテーブルと、
を記憶しており、前記プロセッサは、
読み込むブロックを更新する度に、前記特殊コード特性テーブルに基づいて、前記内部特殊コードテーブルをリフレッシュし、
前記変換前コードを、前記内部特殊コードに変換した後、変換結果に基づいて、前記内部特殊コードテーブルを更新し、
前記内部特殊コードテーブルに基づいて、現在の前記特殊コードの指令状況および有効状況を判別する、
ように構成されている、ことを特徴とする加工プログラム変換装置。
【請求項3】
工作機械システムであって、
工作機械と、
請求項1または2の加工プログラム変換装置として機能する数値制御装置と、
を備え、前記第二加工プログラムは、前記工作機械を数値制御して動作させるための実行データであり、
前記数値制御装置は、前記実行データに従って前記工作機械を数値制御する、
ことを特徴とする工作機械システム。
【請求項4】
請求項3に記載の工作機械システムであって、
さらに、表示器を備え、
前記数値制御装置は、数値制御を実行しているブロックにおいて、指令されたおよび有効な前記特殊コードを、前記外部特殊コードの形式で前記表示器に表示させる、
ことを特徴とする工作機械システム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、第一ルールに従って作成された第一加工プログラムを、第二ルールに従って作成された第二加工プログラムに変換する加工プログラム変換装置、および、加工プログラム変換装置として機能する数値制御装置を備えた工作機械システムを開示する。
【背景技術】
【0002】
一般に、工作機械を数値制御するための加工プログラムの形式(フォーマット)は、数値制御装置のメーカー、あるいは、数値制御装置の世代によって異なる。そのため、数値制御装置の種類が異なる複数の工作機械を持つユーザは、加工するワークが同一であっても、それぞれの数値制御装置に応じた加工プログラムを作成する必要があり、非常に手間であった。
【0003】
特許文献1では、所定の規格(例えば、JIS B6315-1等)に従って作成された加工プログラムを、数値制御装置において実行可能な実行データに変換する数値制御装置が開示されている。特許文献1において、数値制御装置は、変換前のワードと、変換後のワードの対応関係を記録した「単一変換テーブル」および「混合変換テーブル」を予め記憶している。そして、数値制御装置は、読み込んだ加工プログラムを、この単一変換テーブルおよび混合変換テーブルに照らし合わせて、変換していく。かかる特許文献1の技術によれば、数値制御装置に応じて、複数の加工プログラムをオペレータが作成する必要がなく、オペレータの負担を軽減できる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平7-334225号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1では、加工プログラムをブロック単位で、独立して変換している。換言すれば、特許文献1では、一つのブロックを変換するにあたって、過去のブロックでの指令内容を考慮していない。そのため、特許文献1では、加工プログラムを適切に変換できない場合があった。
【0006】
そこで、本明細書では、加工プログラムをより適切に変換できる加工プログラム変換装置および工作機械システムを開示する。
【課題を解決するための手段】
【0007】
本明細書で開示する加工プログラム変換装置は、第一ルールに従って作成された第一加工プログラムを、第二ルールに従って作成された第二加工プログラムに変換する加工プログラム変換装置であって、プロセッサと、メモリと、を備えており、前記メモリは、予め、前記第一加工プログラムで利用可能な特殊コードである外部特殊コードと、前記第二加工プログラムで利用可能な特殊コードである内部特殊コードと、を一対一に対応付けて記録した特殊コード変換テーブルと、前記第一加工プログラムで利用可能な一般アドレスである外部一般アドレスと、前記特殊コードの指令状況および有効状況と、前記第二加工プログラムで利用可能な一般アドレスである内部一般アドレスと、の対応関係を記録した一般アドレス変換テーブルと、を記憶しており、前記プロセッサは、前記第一加工プログラムをブロックごとに読み込み、読み込んだ変換前の特殊コードである変換前コードを、前記特殊コード変換テーブルに照らし合わせて、前記内部特殊コードに変換し、前記ブロックを読み込んだ結果に基づいて、現在の前記特殊コードの指令状況および有効状況を判別し、読み込んだ前記一般アドレスである変換前アドレスおよび現在の前記特殊コードの指令状況および有効状況を、前記一般アドレス変換テーブルに照らし合わせて、前記変換前アドレスを前記内部一般アドレスに変換する、ように構成されており、前記特殊コードは、GコードまたはMコードであり、前記一般アドレス変換テーブルにおいて、一部の前記外部一般アドレスは、一対複数の関係で前記内部一般アドレスに対応付けられている、ことを特徴とする。
【0008】
この場合、前記内部特殊コードは、複数のグループに分類されており、前記メモリは、さらに、前記グループが、モーダル、または、ワンショットのいずれであるかを示す特殊コード特性テーブルと、現在のブロックで指令された前記内部特殊コードが属する前記グループと、現在のブロックで有効な前記内部特殊コードと、を記録した内部特殊コードテーブルと、を記憶しており、前記プロセッサは、読み込むブロックを更新する度に、前記特殊コード特性テーブルに基づいて、前記内部特殊コードテーブルをリフレッシュし、前記変換前コードを、前記内部特殊コードに変換した後、変換結果に基づいて、前記内部特殊コードテーブルを更新し、前記内部特殊コードテーブルに基づいて、現在の前記特殊コードの指令状況および有効状況を判別する、ように構成されてもよい。
【0009】
また、本明細書で開示する工作機械システムは、工作機械と、上述の加工プログラム変換装置として機能する数値制御装置と、を備え、前記第二加工プログラムは、前記工作機械を数値制御して動作させるための実行データであり、前記数値制御装置は、前記実行データに従って前記工作機械を数値制御する、ことを特徴とする。
【0010】
この場合、さらに、表示器を備え、前記数値制御装置は、数値制御を実行しているブロックにおいて、指令されたおよび有効な前記特殊コードを、前記外部特殊コードの形式で前記表示器に表示させてもよい。
【発明の効果】
【0011】
本明細書で開示する技術によれば、加工プログラムをより適切に変換できる。
【図面の簡単な説明】
【0012】
図1】加工プログラム変換装置および工作機械のブロック図である。
図2】加工プログラム変換装置の機能ブロック図である。
図3】加工プログラムの一例を示す図である。
図4】加工プログラムの一例を示す図である。
図5】外部特殊コード振り分けテーブル、特殊コード変換テーブル、特殊コード特性テーブルを示す図である。
図6】外部特殊コードテーブルおよび内部特殊コードテーブルを示す図である。
図7】一般アドレス変換テーブルを示す図である。
図8】外部一般ワードテーブルおよび内部一般ワードテーブルを示す図である。
図9】実行データの構成を示す模式図である。
図10】実行データの表示例である。
図11】加工プログラムの変換の流れを示すフローチャートである。
図12】一般ワードの変換の前半の流れを示すフローチャートである。
図13】一般ワードの変換の後半の流れを示すフローチャートである。
図14】加工プログラムの変換例を示す図である。
図15】ブロックに対応する内部特殊コードテーブルである。
【発明を実施するための形態】
【0013】
以下、図面を参照して加工プログラム変換装置10の構成について説明する。図1は、加工プログラム変換装置10および工作機械16のブロック図である。本例の加工プログラム変換装置10は、工作機械システム11の数値制御装置12に組み込まれている。数値制御装置12は、オペレータによって作成された加工プログラム100(NCプログラムともいう)を、工作機械16を数値制御するための実行データ110に変換する。この変換前の加工プログラム100が、第一ルールに従って作成された第一加工プログラムに該当し、実行データ110が、第二ルールに従って作成された第二加工プログラムに該当する。実行データ110が生成できれば、数値制御装置12は、実行データ110に基づいて、工作機械16に搭載された複数のサーボモータを駆動する。これにより、工作機械16により、ワークが加工される。
【0014】
数値制御装置12は、物理的には、プロセッサ20とメモリ22と通信I/F24とUI装置26とを含むコンピュータである。この「コンピュータ」には、コンピュータシステムを一つの集積回路に組み込んだマイクロコントローラも含まれる。また、プロセッサ20とは、広義的なプロセッサを指し、汎用的なプロセッサ(例えばCPU:Central Processing Unit、等)や、専用のプロセッサ(例えばGPU:Graphics Processing Unit、ASIC:Application Specific Integrated Circuit、FPGA:Field Programmable Gate Array、プログラマブル論理デバイス、等)を含む。
【0015】
メモリ22は、各種データを記憶する装置で、プロセッサ20が直接アクセスする主記憶装置、および、プロセッサ20が入出力チャネルを介してアクセスする補助記憶装置の双方を含む。主記憶装置は、例えば、半導体メモリを含む。補助記憶装置は、例えば半導体メモリや、磁気記憶装置を含む。
【0016】
メモリ22は、加工プログラム100の変換のために、参照、あるいは、編集される複数のテーブルT01~T08を記憶している。これら複数のテーブルT01~T08の詳細については後述する。また、メモリ22は、生成された実行データ110を一時記憶する実行データバッファ42としても機能する。
【0017】
通信I/F24は、外部の他の電子機器と、有線通信または無線通信により、データを送受する。通信I/F24は、例えば、工作機械16や、外部の他のコンピュータと通信する。UI装置26は、オペレータに各種情報を提示するとともに、オペレータからの指示を受け付ける。かかるUI装置26は、例えば、表示器50やスピーカ等の出力装置と、キーボードやマウス、マイク、タッチパネル等の入力装置と、を含む。なお、加工プログラム変換装置10は、単一のコンピュータである必要はなく、物理的に離隔した複数のコンピュータを組み合わせて構成されてもよい。
【0018】
次に、変換対象である加工プログラム100の構成について簡単に説明する。図3は、加工プログラム100の一例を示す図である。
【0019】
加工プログラム100は、通常、所定の規格(例えば、JIS B6315-1等)に従って作成される。図3の上段に示す通り、加工プログラム100の各行は「ブロック」と呼ばれる。加工プログラム100は、複数のブロックを含む。各ブロックは、改行またはセミコロン(;)で終わる。
【0020】
図3の下段は、ブロックの一例である。ブロックは、複数のワードにより構成され、各ワードは、アドレスおよび数字データにより構成される。アドレスは、アルファベットで構成される。数字データは、少なくとも数字を含み、さらに、「=」や「+」等の演算子を含んでもよい。例えば、ワード「G00」の場合、「G」がアドレスであり、「00」が数字データである。こうしたワードのうち、ブロックの先頭に記載されるワード「N**」は、シーケンス番号を表している。また、シーケンス番号の後に続く、1以上のワードの集まりは、「データワード」と呼ばれる。
【0021】
また、アドレス「G」を含むワードは、準備機能ワード、または、Gコードと呼ばれる。また、アドレス「M」を含むワードは、補助機能ワード、または、Mコードと呼ばれる。このGコードおよびMコードは、後に詳説するように、その指令状況および有効状況に応じて、他のワードの解釈に影響を与える。そのため、本明細書では、このGコードおよびMコードを「特殊コード」と呼び、他のワードと区別する。また、以下では、特殊コード以外のワードを「一般ワード」と呼び、一般ワードに含まれるアドレスを「一般アドレス」と呼ぶ。図3の下段の例において「X100」、「Y100」および「Z20」が、一般ワードに該当し、「X」、「Y」および「Z」が、「一般アドレス」に該当する。なお、本例において、加工プログラム100の記述ルールは、一般アドレスが2文字以上の場合、数字データの先頭に「=」を使用することを含む。したがって、オペレータは、一般ワード「RP3」を指令したい場合、加工プログラム100に「RP=3」と記述する。ただし、当然ながら、こうした記述ルールは、無くてもよい。後に詳説するように、加工プログラム変換装置10は、数字データに演算子が含まれている場合には、当該数字データを、演算の結果の数値として取り扱う。したがって、加工プログラム変換装置10は、加工プログラム100に「RP=3」が記載されている場合、当該記載を「RP3」として取り扱い、「RP=3+3」が記載されている場合、当該記載を「RP6」として取り扱う。
【0022】
数値制御装置12は、加工プログラム100を解釈し、工作機械16を数値制御するための実行データ110を生成する。このとき、工作機械16の機能を適切に活用するためには、加工プログラム100に記載されているワードを、数値制御装置12の種類や世代に応じて、当該数値制御装置12の内部処理形式のワードに変換する必要がある。以下では、加工プログラム100で利用可能なワードを「外部ワード」と呼び、内部処理形式のワードを「内部ワード」と呼び、区別する。また、一般アドレスや特殊コードについても同様に区別する。
【0023】
例えば、外部特殊コード「G10」は、数値制御装置12の種類によっては、「G69」という内部特殊コードに変換しなければならない場合がある。同様に、外部一般アドレスも、数値制御装置12の種類に応じて、当該数値制御装置12の内部処理に適した、内部一般アドレスに変換しなければならない。
【0024】
ここで、外部特殊コードが意味する指令内容は、他のワードの影響を受けず、常に一定であり、外部特殊コードは、内部特殊コードに、一対一に対応付け可能である。そのため、外部特殊コードは、内部特殊コードに容易に変換できる。一方、外部一般アドレスの意味は、外部特殊コードの指令状況および有効状況によって変化する場合がある。そのため、従来、外部一般アドレスを、内部一般アドレスに適切に変換することが難しかった。これについて、図4を参照して説明する。
【0025】
図4は、加工プログラム100の一例を示す図である。図4の上段の加工プログラム100aは、ブロックB1とブロックB2を含む。ブロックB1における外部特殊コード「G00」は、位置決め指令を示している。また、外部一般ワード「X100」は、位置決め目標位置のX座標を示しており、外部一般ワード「A30」は、X軸に対する目標位置方向の角度、すなわち仰角を示している。つまり、ブロックB1において、外部一般アドレス「A」は、「仰角」を意味している。
【0026】
ブロックB2には、外部特殊コード「G00」は、記載されていないが、ブロックB2において、外部特殊コード「G00」は、有効なままである。すなわち、特殊コードは、その有効範囲によって、モーダルとワンショットとに分かれる。モーダルの特殊コードは、一度指令されると、その後のブロックでも継続して有効となる。かかるモーダルの特殊コードは、同一のグループに属する他の特殊コードが指令されるまで、有効状態が維持される。ワンショットの特殊コードは、1ブロックのみで有効なコードである。
【0027】
外部特殊コード「G00」は、モーダルであるため、ブロックB2において、「G00」が指令されていなくても、ブロックB2において、位置決め指令を示す「G00」は、有効である。そして、この場合、ブロックB2における外部一般アドレス「A」は、ブロックB1の場合と同様に「仰角」を意味する。
【0028】
図4の中段の加工プログラム100bは、ブロックB3とブロックB4を含む。ブロックB3における外部特殊コード「G11」は、座標系の平行移動/回転指令を意味している。この「G11」の後に続く、「X40」、「Y20」は、座標系を平行移動させる位置を示しており、「A30」は、座標系を回転させる角度を示す。つまり、ブロックB3において、外部一般アドレス「A」は、座標系の回転角度を意味している。
【0029】
図4の下段の加工プログラム100cは、ブロックB5とブロックB6とブロックB7とを含む。ブロックB5における外部特殊コード「G381」は、ドリル加工指令を意味している。この「G381」の後に続く、「X100」および「Y60」は、穴あけのX-Y平面での位置を示しており、「Z-12」は、穴あけのZ軸の目標位置を示している。また、「RP=3」は、穴あけを開始するZ軸の位置を示しており、「A5」は、穴あけ動作の際の切り込み量を示している。つまり、ブロックB5において、外部一般アドレス「A」は、切り込み量を意味している。
【0030】
以上の説明で明らかな通り、外部一般アドレス「A」は、ブロックB1,B2では、仰角を意味し、ブロックB3では、回転角度を意味し、ブロックB5では、切り込み量を意味する。換言すれば、外部一般アドレス「A」は、外部特殊コードの指令状況および有効状況に応じて意味が変化する。また、モーダルな外部特殊コードもあるため、一つのブロックだけでは、現在有効な外部特殊コードを判別できず、ひいては、外部一般アドレスの意味を正確に判別できない。そのため、従来、こうした外部一般アドレスを、適切に、内部一般アドレスに変換することが難しかった。
【0031】
本例では、こうした問題を解決するために、特殊コードの指令状況および有効状況を一時記憶しておき、その指令状況および有効状況に応じて、外部一般アドレスを内部一般アドレスに変換している。以下、加工プログラム100の変換について説明する。はじめに、メモリ22に記憶される複数のテーブルT01~T08について説明する。上述した通り、数値制御装置12は、加工プログラム100を実行データ110に変換するために、複数のテーブルT01~T08を記憶している。図5図8は、これらテーブルT01~T08の一例を示す図である。なお、図6図8では、いずれも、初期化(図11のステップS10)直後のテーブルT04,T05,T07,T08を図示している。
【0032】
図5に示す外部特殊コード振り分けテーブルT01、特殊コード変換テーブルT02、特殊コード特性テーブルT03は、予め作成され、メモリ22に記憶される。同様に、図7に示す一般アドレス変換テーブルT06も、予め作成され、メモリ22に記憶される。この四つのテーブルT01,T02,T03,T06は、一つの加工プログラム100の変換の過程で、変更されることのない、参照用テーブルである。一方、図6に示す外部特殊コードテーブルT04および内部特殊コードテーブルT05は、一つの加工プログラム100の変換の過程で、データが編集される、記録用テーブルである。同様に、図8に示す外部一般ワードテーブルT07および内部一般ワードテーブルT08も、一つの加工プログラム100の変換の過程で、データが編集される、記録用テーブルである。
【0033】
図5に示す外部特殊コード振り分けテーブルT01は、外部特殊コードと、当該外部特殊コードが属するグループ番号と、の対応関係を示すテーブルである。例えば、図5の例において、「G00」、「G01」、「G02」、「G03」は、いずれも、グループ番号「0」に対応付けられていることが分かる。
【0034】
特殊コード変換テーブルT02は、外部特殊コードを、内部特殊コードに一対一に対応付けて記録したテーブルである。図5の例の場合、例えば、加工プログラム100に記載された「G10」という外部特殊コードは、実行データ110に変換する際には、「G69」という内部特殊コードに変換すべきことが分かる。なお、特殊コード変換テーブルT02では、変換が必要な特殊コードのみが記録されており、変換不要の特殊コード(例えば「G00」等)は記録されていない。
【0035】
特殊コード特性テーブルT03は、グループ番号と、有効特性と、を対応付けて記録したテーブルである。有効特性とは、特殊コードが有効な範囲である。有効特性としては、1ブロックだけで有効なワンショットと、同一グループに属する他の特殊コードが指定されるまで有効状態を維持するモーダルと、がある。なお、図5では、ワンショットを「OS」と、モーダルを「MD」と記載している。図5の例の場合、グループ番号「0」は、モーダルであり、グループ番号「1」は、ワンショットである。したがって、例えば、グループ番号「0」に属する外部特殊コード「G00」は、一度指令されると、グループ番号「0」に属する他の外部特殊コード「G01」、「G02」、「G03」のいずれかが指令されるまで、有効状態が維持される。一方、グループ番号「1」に属する外部特殊コード「G04」は、ワンショットであるため、一つのブロックで指令されたとしても、次のブロックでは無効となる。
【0036】
図6に示す外部特殊コードテーブルT04は、外部特殊コードの指令状況および有効状況を判別できるような形式で、外部特殊コードがグループ番号と対応付けて一時記録されるテーブルである。より具体的に説明すると、外部特殊コードテーブルT04は、グループ番号(1列目)と、現在のブロックでの指令の有無を示す指令フラグ(2列目)と、現在のブロックで指令された外部特殊コード(すなわち変換前コード、3列目)と、を含む。
【0037】
この外部特殊コードテーブルT04は、加工プログラム100の1ブロックごとに、リフレッシュされたうえで更新される。リフレッシュでは、全ての行において、指令フラグが「無」に変更され、ワンショットのグループ番号の行において、外部特殊コード欄(3列目)に「Null」が記録される。これは、ワンショットの外部特殊コードは、ブロックが更新されれば、無効となるためである。一方、モーダルの外部特殊コードは、ブロックが更新されても、有効状態が維持されるため、リフレッシュ処理において、モーダルのグループ番号の行の外部特殊コード欄は、変更することなく、残存させる。1ブロックが読み込まれた場合には、当該ブロックにおいて指令された外部特殊コード(すなわち変換前コード)に対応する行において、指令フラグが「有」に変更され、外部特殊コード欄(3列目)に変換前コードが記録される。
【0038】
ここで、後に詳説するが、この外部特殊コードテーブルT04のうち、外部特殊コード欄(3列目)は、現在のブロックで有効な外部特殊コードが記録されており、指令フラグ(2列目)は、現在のブロックで指令(記載)されているか否かを示す。換言すれば、外部特殊コードテーブルT04の2列目は、外部特殊コードの指令状況を表し、3列目は、外部特殊コードの有効状況を表す。
【0039】
内部特殊コードテーブルT05は、内部特殊コードの指令状況および有効状況を判別できるような形式で、特殊コードの変換結果が一時記録されるテーブルである。この内部特殊コードテーブルT05の構成は、外部特殊コードテーブルT04とほぼ同様である。ただし、内部特殊コードテーブルT05では、3列目に、内部特殊コード、すなわち、変換前コードを内部形式に変換した変換後のコードが記録される。
【0040】
また、内部特殊コードテーブルT05は、外部特殊コードテーブルT04と同様に、加工プログラム100の1ブロックを読み込むたびに、リフレッシュおよび更新される。リフレッシュでは、全ての行において、指令フラグが「無」に変更され、ワンショットのグループ番号の行において、内部特殊コード欄(3列目)に「Null」が記録される。また、リフレッシュ後は、変換後の内部特殊コードに対応する行において、指令フラグが「有」に変更され、内部特殊コード欄(3列目)に変換後コードが記録される。
【0041】
図7の一般アドレス変換テーブルT06は、外部一般アドレスと内部一般アドレスとの対応関係を記録したテーブルである。ただし、上述した通り、一部の外部一般アドレスは、特殊コードの指令状況および有効状況によって、意味が変化する。
【0042】
そこで、一般アドレス変換テーブルT06では、一部の外部一般アドレスについては、一つの外部一般アドレスに、複数の内部アドレスを対応付けている。また、内部一般アドレスごとに、当該内部一般アドレスに変換可能な条件が記録されている。本例では変換条件として、グループ番号(2列目)および内部特殊コード(3列目)を記録している。グループ番号は、特殊コードの指令状況を示している。このグループ番号欄に記録されたグループに属する特殊コードが、現在のブロックで指令されている場合、対応する内部一般アドレスへの変換が許容される。例えば、現在のブロックで、グループ「6」に属する外部特殊コード「G11」(内部特殊コード「G68」)が指令されている場合、当該ブロックに記載されている外部一般アドレス「A」は、内部一般アドレス「AR」に変換できる。
【0043】
また、一般アドレス変換テーブルT06の内部特殊コード欄(3列目)は、特殊コードの有効状況を示している。この内部特殊コード欄に記録された内部特殊コードが、現在のブロックで有効な場合、対応する内部一般アドレスへの変換が許容される。例えば、内部特殊コード「G00」は、モーダルであるため、現在のブロックで指令されていなくても、現在のブロックで有効な場合がある。かかる場合、当該ブロックに記載されている外部一般アドレス「A」は、内部一般アドレス「AG」に変換できる。なお、変換が不要な一般アドレス、すなわち、内部一般アドレスと外部一般アドレスが同じである一般アドレスは、当該一般アドレス変換テーブルT06に記録されていない。
【0044】
また、後に詳説する通り、2列目の変換条件(すなわち指令状況)が、3列目の変換条件よりも優先される。例えば、「G00 X100 A30」というブロックがあり、このブロックにおいて、内部特殊コード「G68」が有効である場合を考える。この場合、一般アドレス変換テーブルT06の1行3列目の条件と、3行2列目の条件と、の双方を満たすことになる。そして、本例では、2列目の変換条件を優先するため、上記ブロックにおける外部一般アドレス「A」は、内部一般アドレス「AG」に変換される。
【0045】
また、後に詳説する通り、一般アドレス変換テーブルT06の各行は、変換条件の優先順位と同じ順序で並んでいる。例えば、あるブロックにおいて、内部特殊コード「G68」と「G00」との双方が、指令されていないものの、有効である場合を考える。この場合、当該ブロックにおいて指令された外部一般アドレス「A」は、一般アドレス変換テーブルT06の1行目の記載に従って「AR」に変換される。
【0046】
図8の外部一般ワードテーブルT07は、加工プログラム100における外部一般ワードの指令状況を一時記録するテーブルである。具体的には、現在読み込んだブロックに、外部一般アドレスが存在する場合、プロセッサ20は、当該外部一般アドレスに対応する指令フラグの欄に「有」を記録したうえで、数字データを記録する。例えば、読み込んだブロックに「A30」が存在する場合、プロセッサ20は、外部一般ワードテーブルT07の「A」の指令フラグの欄に「有」を記録し、数字データの欄に「30」を記録する。なお、数字データが演算子を含む場合、演算の結果を、数字データの欄に記録する。例えば、読み込んだブロックに「RP=3」が存在する場合、プロセッサ20は、外部一般ワードテーブルT07の「RP」の指令フラグの欄に「有」を記録し、数字データの欄には、「=」を除いた数値「3」のみを記録する。同様に、読み込んだブロックに「RP=3+3」が存在する場合、プロセッサ20は、外部一般ワードテーブルT07の「RP」の指令フラグの欄に「有」を記録し、数字データの欄には、「=3+3」の演算結果である数値「6」のみを記録する。この外部一般ワードテーブルT07は、加工プログラム100の1ブロックを読み込むたびに、リフレッシュおよび更新される。リフレッシュでは、外部一般ワードテーブルT07の全ての行において、指令フラグ欄を「無」にし、数字データ欄を「Null」にする。
【0047】
内部一般ワードテーブルT08は、加工プログラム100における外部一般ワードの指令状況を、内部一般ワードに置き換えた状態で一時記録するテーブルである。例えば、現在読み込んだブロックの外部一般ワード「A30」を、内部一般ワード「AR30」に変換する場合、プロセッサ20は、内部一般ワードテーブルT08の「AR」の指令フラグの欄に「有」を記録し、数字データの欄に「30」を記録する。この内部一般ワードテーブルT08も、外部一般ワードテーブルT07と同様に、加工プログラム100の1ブロックを読み込むたびに、リフレッシュおよび更新される。リフレッシュでは、内部一般ワードテーブルT08の全ての行において、指令フラグ欄を「無」にし、数字データ欄を「Null」にする。
【0048】
次に、図2を参照して、加工プログラム100の変換の流れについて説明する。図2は、加工プログラム変換装置10の機能ブロック図である。加工プログラム変換装置10のプロセッサ20は、図2に示す複数の機能ブロックとして機能する。加工プログラム読み込み部30は、加工プログラム100を1ブロックずつ読み込み、ワード振り分け部32に出力する。
【0049】
ワード振り分け部32は、外部特殊コードテーブルT04および外部一般ワードテーブルT07をリフレッシュする。ここで、リフレッシュとは、ワードの振り分けに先立って、前回のブロックのワードの振り分けの結果を消去する処理である。外部特殊コードテーブルT04をリフレッシュする場合、ワード振り分け部32は、外部特殊コードテーブルT04の全ての行において、指令フラグ欄を「無」にする。また、ワード振り分け部32は、外部特殊コードテーブルT04のうち、ワンショットのグループ番号の行において、外部特殊コード欄を「Null」にする。ワード振り分け部32は、ワンショットか否かを、特殊コード特性テーブルT03を参照して、判断する。また、外部一般ワードテーブルT07をリフレッシュする場合、ワード振り分け部32は、外部一般ワードテーブルT07の全ての行において、指令フラグ欄を「無」にし、数字データ欄を「Null」にする。
【0050】
続いて、ワード振り分け部32は、入力されたブロックを、ワード単位で順番に読み込み、読み込み結果を、外部特殊コードテーブルT04および外部一般ワードテーブルT07に振り分けて記録する。
【0051】
具体的に説明すると、ワード振り分け部32は、読み込んだブロックに外部特殊コード(すなわち変換前コード)が存在する場合、この変換前コードを、外部特殊コード振り分けテーブルT01に照らし合わせ、当該変換前コードのグループ番号を特定する。続いて、ワード振り分け部32は、外部特殊コードテーブルT04のうち、特定されたグループ番号の指令フラグ欄に「有」を、外部特殊コード欄に、変換前コードを、記録する。なお、外部特殊コード振り分けテーブルT01に、変換前の特殊コードと一致する外部特殊コードがない場合、ワード振り分け部32は、内部処理不可の特殊コードが指令されたと判断し、アラームを出力する。
【0052】
また、ワード振り分け部32は、読み込んだブロックに外部一般ワード(すなわち変換前の一般ワード)が存在する場合、この変換前の一般ワードを、一般アドレスと数字データ後に分解する。続いて、ワード振り分け部32は、外部一般ワードテーブルT07のうち、特定された変換前の一般アドレスに対応する指令フラグ欄に「有」を、数字データ欄に実際の数字データを、それぞれ記録する。
【0053】
例えば、読み込んだブロックが「G00 X100 A30」の場合を考える。外部特殊コード「G00」は、外部特殊コード振り分けテーブルT01を参照すると、グループ番号が「0」であることが分かる。したがって、この場合、ワード振り分け部32は、外部特殊コードテーブルT04の、グループ番号「0」の行において、指令フラグ欄を「有」とし、外部特殊コード欄に「G00」を記録する。また、ワード振り分け部32は、外部一般ワードテーブルT07の外部一般アドレス「X」の行において、指令フラグ欄に「有」を、数字データ欄に「100」を記録し、外部一般アドレス「A」の行において、指令フラグ欄に「有」を、数字データ欄に「30」を記録する。振り分け結果が記録された外部特殊コードテーブルT04は、特殊コード変換部34に出力され、外部一般ワードテーブルT07は、一般ワード変換部36に出力される。
【0054】
特殊コード変換部34は、内部特殊コードテーブルT05をリフレッシュしたうえで、特殊コードの変換結果を、内部特殊コードテーブルT05に記録する。初めに、内部特殊コードテーブルT05のリフレッシュ処理について説明する。内部特殊コードテーブルT05をリフレッシュする場合、特殊コード変換部34は、内部特殊コードテーブルT05の全ての行において、指令フラグ欄を「無」に変更する。また、特殊コード変換部34は、内部特殊コードテーブルT05のうち、ワンショットのグループ番号の行において、内部特殊コード欄を「Null」にする。
【0055】
リフレッシュ処理が完了すれば、特殊コード変換部34は、特殊コードの変換を行う。具体的には、特殊コード変換部34は、外部特殊コードテーブルT04において、指令フラグが「有」の外部特殊コードおよびそのグループ番号を抽出する。抽出された外部特殊コードは、現在のブロックで指令(記載)されている外部特殊コードであり、変換前コードである。特殊コード変換部34は、抽出された変換前コードを、特殊コード変換テーブルT02に照らし合わせ、変換前コードに対応する内部特殊コードを特定する。そして、特殊コード変換部34は、内部特殊コードテーブルT05において、抽出されたグループ番号の指令フラグ欄を「有」にするとともに、内部特殊コード欄で特定された内部特殊コードを記録する。なお、変換前コードが、特殊コード変換テーブルT02に存在しない場合、特殊コード変換部34は、当該変換前コードの変換が不要と判断する。この場合、特殊コード変換部34は、変換前コードを内部特殊コードとして、内部特殊コードテーブルT05に記録する。
【0056】
例えば、外部特殊コードテーブルT04のグループ番号「6」の行に「6 有 G10」が記録されていた場合を考える。外部特殊コード「G10」は、内部特殊コード「G69」に対応する。そのため、この場合、特殊コード変換部34は、内部特殊コードテーブルT05のグループ番号「6」の行に「6 有 G69」を記録する。また、別の例として、外部特殊コードテーブルT04のグループ番号「0」の行に「0 有 G00」が記録されていた場合を考える。外部特殊コード「G00」は、特殊コード変換テーブルT02に記録されていないため、変換不要と判断できる。そのため、この場合、特殊コード変換部34は、内部特殊コードテーブルT05のグループ番号「0」の行に「0 有 G00」を記録する。
【0057】
特殊コード変換部34は、変換結果を記録した内部特殊コードテーブルT05を、一般ワード変換部36および実行データ生成部38に出力する。ここで、この内部特殊コードテーブルT05は、特殊コードの変換結果だけでなく、特殊コードの指令状況および有効状況を表す情報である。すなわち、内部特殊コードテーブルT05の内部特殊コード欄(3列目)には、現在のブロックで有効な内部特殊コードのデータが記録されている。また、内部特殊コードテーブルT05の指令フラグ欄(2列目)は、対応する内部特殊コードが、現在のブロックで指定されたか否かを示している。そのため、内部特殊コードテーブルT05の2列目を参照すれば、現在のブロックで指令された内部特殊コードを特定でき、3列目を参照すれば、現在のブロックで有効な内部特殊コードを特定できる。
【0058】
一般ワード変換部36は、内部一般ワードテーブルT08のリフレッシュと、一般ワードの変換処理と、を行う。内部一般ワードテーブルT08をリフレッシュする場合、一般ワード変換部36は、内部一般ワードテーブルT08の全ての行において、指令フラグ欄を「無」に変更し、数字データ欄を「Null」に変更する。
【0059】
内部一般ワードテーブルT08をリフレッシュできれば、一般ワード変換部36は、外部一般ワードを内部一般ワードに変換し、変換結果を、内部一般ワードテーブルT08に記録する。この一般ワードの変換処理について、図12図13を参照して説明する。
【0060】
一般ワード変換部36は、外部一般ワードテーブルT07を参照し、指令フラグ「有」となっている外部一般アドレスを、変換前アドレスとして特定する(S30)。続いて、参照ポインタpの値を初期化する(S32)。すなわち、p=1にする。
【0061】
その後、一般ワード変換部36は、一般アドレス変換テーブルT06を、順次読み込み、外部一般アドレスおよびコード指令状況が、変換前アドレスおよび現在の指令状況と、一致する行を探索する(S34~S44)。具体的には、一般ワード変換部36は、一般アドレス変換テーブルT06のp行目に記録された外部一般アドレスを特定し(S34)、当該外部一般アドレスが、変換前アドレスと一致するか否かを確認する(S36)。一致する場合は、続いて、一般アドレス変換テーブルT06のp行目に記録されたグループ番号を対象番号として特定する(S38)。
【0062】
一般ワード変換部36は、特定されたグループ番号(対象番号)の内部特殊コードが、現在のブロックで指令されているか否かを確認する(S40)。すなわち、一般ワード変換部36は、内部特殊コードテーブルT05において、対象番号を検索し、当該対象番号に対応する指令フラグを確認する。確認の結果、指令フラグが「有」の場合、すなわち、対象番号に属する内部特殊コードが現在のブロックで指令されている場合、変換前アドレスを、一般アドレス変換テーブルT06のp行目に記載された内部一般アドレスに変換する(S62)。一般ワード変換部36は、この変換結果に応じて、内部一般ワードテーブルT08を更新する(S64)。すなわち、内部一般ワードテーブルT08において、変換後の内部一般アドレスを探索し、当該内部一般アドレスに対応する指令フラグを「有」にしたうえで、変換前ワードの数字データを、数字データ欄に記録する。なお、数字データ欄の値は、外部一般ワードテーブルT07を参照して特定する。そして、上述した通り、加工プログラム100において、数字データが演算子を含む形式で記載されていたとしても、外部一般ワードテーブルT07には、演算後の数値のみが記録される。したがって、内部一般ワードテーブルT08の数字データ欄に記録されるデータも、演算後の数値のみとなる。例えば、加工プログラム100に「RP=3+3」が記載されていたとしても、外部一般ワードテーブルT07および内部一般ワードテーブルT08の「RP」の数字データ欄には数値「6」のみが記録される。ただし、数字データに関するこうした手順は一例であり、当然ながら、演算子を残した状態で、外部一般ワードテーブルT07および内部一般ワードテーブルT08に、数字データを記録してもよい。
【0063】
一方、ステップS36で、変換前アドレスが、p行目の外部一般アドレスと一致しない場合、あるいは、ステップS40で、現在の指令状況が、p行目の指令状況と一致しない場合、一般ワード変換部36は、ポインタpをインクリメントする(S42)。その後、一般ワード変換部36は、一般アドレス変換テーブルT06におけるp行目の有無を確認し(S44)、p行目が存在する場合は、ステップS34に戻り、S34~S44の処理を繰り返す。
【0064】
ステップS44でp行目が存在しない場合、一般ワード変換部36は、ポインタpを再度初期化する(S46)。その後、一般ワード変換部36は、一般アドレス変換テーブルT06を、順次読み込み、外部一般アドレスおよびコード有効状況が、変換前アドレスおよび現在のコード有効状況と、一致する行を探索する(S48~S60)。具体的には、一般ワード変換部36は、一般アドレス変換テーブルT06のp行目に記録された外部一般アドレスを特定し(S48)、当該外部一般アドレスが、変換前アドレスと一致するか否かを確認する(S50)。一致する場合は、続いて、一般アドレス変換テーブルT06のp行目の3列目に記録された有効な内部特殊コードを対象コードとして特定する(S52)。
【0065】
一般ワード変換部36は、対象コードが、現在のブロックで有効か否かを確認する(S54)。すなわち、一般ワード変換部36は、対象コードを、内部特殊コードテーブルT05において検索する。検索の結果、内部特殊コードテーブルT05に、対象コードが記録されている場合、すなわち、対象コードが、現在のブロックで有効な場合、変換前アドレスを、一般アドレス変換テーブルT06のp行目に記載された内部一般アドレスに変換する(S62)。一般ワード変換部36は、この変換結果に応じて、内部一般ワードテーブルT08を更新する(S64)。
【0066】
一方、ステップS50で、変換前アドレスが、p行目の外部一般アドレスと一致しない場合、あるいは、ステップS54で、現在のコード有効状況が、p行目のコード有効状況と一致しない場合、一般ワード変換部36は、ポインタpをインクリメントする(S56)。その後、一般ワード変換部36は、一般アドレス変換テーブルT06におけるp行目の有無を確認し(S58)、p行目が存在する場合は、ステップS48に戻り、S48~S58の処理を繰り返す。
【0067】
一方、ステップS58において、p行目が存在しない場合、一般ワード変換部36は、変換前アドレスの変換が不要と判断する(S60)。この場合、一般ワード変換部36は、変換前アドレスを、変換後アドレスとして、内部一般ワードテーブルT08を更新する(S64)。その後、さらに別の変換前ワードが存在する場合(S66でYes)、再度、ステップS30~S66の処理を繰り返す。別の変換前ワードが存在しない場合は、一般ワードの変換処理は終了となる。
【0068】
一般ワードの変換処理が終了となった場合、実行データ生成部38は、内部特殊コードテーブルT05および内部一般ワードテーブルT08に基づいて、実行データ110を生成する。実行データ110は、工作機械16を数値制御するためのデータである。かかる実行データ110の生成は、従来の技術を利用できるため、ここでの詳説は省略する。
【0069】
図9は、実行データ110の構成を示す模式図である。実行データ110は、軸移動を指示するためのXYZ座標および円弧半径と、外部特殊コードテーブルT04と、内部特殊コードテーブルT05と、を含む。こうした実行データ110は、ブロックごとに生成され、実行データ書き込み部40に出力される。
【0070】
実行データ書き込み部40は、実行データ110を実行データバッファ42に書き込む。実行データ読み込み部44は、工作機械16の制御状況に応じて、必要な実行データ110を実行データバッファ42から読み出し、機械制御実行部46および実行データ出力部48に出力する。機械制御実行部46は、入力された実行データ110に基づいて工作機械16を数値制御する。
【0071】
実行データ出力部48は、機械制御実行部46が実行している実行データ110を表示器50に表示する。図10は、実行データ110の表示例である。図10から明らかな通り、表示器50には、実行中の動作の種類、機械の現在位置と目標位置が表示される。また、実行中のブロックで指令されていた外部特殊コードと有効な外部特殊コードが、区別して表示器50に表示される。
【0072】
実行データ出力部48は、実行中のブロックで指令されている外部特殊コードを表示する場合、実行データ110に含まれる外部特殊コードテーブルT04において、指令フラグ欄が「有」となっている行を探索する。そして、実行データ出力部48は、「有」となっている行の外部特殊コードを、現在のブロックで指令された外部特殊コードとして表示器50に表示する。また、実行データ出力部48は、外部特殊コードテーブルT04のうち、外部特殊コード欄に記録されている外部特殊コードを、現在のブロックで有効な外部特殊コードとして表示器50に表示する。
【0073】
例えば、図10の例の場合、シーケンス番号N4のブロックでは、現在のブロックで指令された外部特殊コードとして「G381」が表示され、現在のブロックで有効な外部特殊コードとして「G00」と「G381」とが表示されている。ここで、「G381」および「G00」は、いずれも、内部特殊コードではなく、外部特殊コードである。このように変換前の外部特殊コードを表示する構成とすることで、オペレータは、加工プログラム100を作成するときに用いた外部特殊コードを見て機械動作の確認ができる。
【0074】
次に、加工プログラム変換装置10による加工プログラム100の変換の流れについて図11図13を参照して説明する。加工プログラム100を変換する場合、プロセッサ20は、メモリ22に記録されている記録用テーブルT04,T05,T07,T08を初期化する(S10)。具体的には、プロセッサ20は、外部特殊コードテーブルT04、内部特殊コードテーブルT05、外部一般ワードテーブルT07、および、内部一般ワードテーブルT08それぞれの2列目(指令フラグ)を、全て「無」に変更する。また、プロセッサ20は、外部特殊コードテーブルT04、内部特殊コードテーブルT05、外部一般ワードテーブルT07、および、内部一般ワードテーブルT08それぞれの3列目(特殊コードまたは数字データ)を、全て「Null」に変更する。
【0075】
記録用テーブルの初期化が完了すれば、プロセッサ20は、加工プログラム100を1ブロックごとに、実行データ110に変換する(S12~S24)。具体的に説明すると、プロセッサ20は、まず、特殊コードテーブルT04,T05および一般ワードテーブルT07,T08をリフレッシュする(S12)。すなわち、プロセッサ20は、特殊コードテーブルT04,T05の2列目(指令フラグ)を全て「無」に変更する。また、プロセッサ20は、特殊コードテーブルT04,T05のうち、ワンショットのグループ番号の行において3列目(特殊コード)のデータを「Null」にする。また、プロセッサ20は、一般ワードテーブルT07,T08の2列目(指令フラグ)を全て「無」に変更し、3列目(数字データ)のデータを全て「Null」にする。
【0076】
テーブルT04,T05,T07,T08のリフレッシュ処理が完了すれば、プロセッサ20は、加工プログラム100を1ブロック読み込む(S14)。その後、プロセッサ20は、読み込んだブロックを、ワード単位で分割したうえで、特殊コードの振り分け処理および一般ワードの振り分け処理を実行する(S16)。
【0077】
特殊コードを振り分ける場合、プロセッサ20は、外部特殊コード振り分けテーブルT01を参照して、読み込んだブロックに記載されている外部特殊コード(すなわち変換前コード)のグループ番号を特定する。そして、プロセッサ20は、外部特殊コードテーブルT04のうち、特定されたグループ番号の指令フラグ(2列目)を「有」にし、外部特殊コード欄(3列目)に変換前コードを記録する。
【0078】
一般ワードを振り分ける場合、プロセッサ20は、読み込んだブロックに記載されている外部一般ワード(すなわち変換前ワード)のアドレス(すなわち変換前アドレス)を特定する。そして、プロセッサ20は、外部一般ワードテーブルT07のうち、変換前アドレスと一致する行の指令フラグ欄(2列目)を「有」にし、数字データ欄(3列目)に変換前ワードの数字データを記録する。
【0079】
次に、プロセッサ20は、変換前コードを内部特殊コードに変換し、変換結果に応じて、内部特殊コードテーブルT05を更新する(S18)。具体的に説明すると、プロセッサ20は、外部特殊コードテーブルT04のうち、指令フラグ欄(2列目)が「有」の行を特定し、当該行に記載されたグループ番号(1列目)および外部特殊コード(3列目)を、対象番号および変換前コードとして特定する。続いて、プロセッサ20は、この変換前コードを、特殊コード変換テーブルT02に照らし合わせ、対応する内部特殊コードを変換後コードとして特定する。その後、プロセッサ20は、内部特殊コードテーブルT05のうち、グループ番号(1列目)が対象番号と一致する行において、指令フラグ欄を「有」にし、内部特殊コード欄に変換後コードを記録する。
【0080】
次に、プロセッサ20は、変換前ワードを内部一般ワードに変換し、変換結果に応じて内部一般ワードテーブルT08を更新する(S20)。この変換処理は、図12および図13を参照して説明した通りであるため、ここでの詳説は省略する。
【0081】
内部一般ワードテーブルT08の更新が完了すれば、プロセッサ20は、内部特殊コードテーブルT05および内部一般ワードテーブルT08に基づいて実行データ110を生成し、生成された実行データ110を実行データバッファ42に書き込む(S22)。その後、プロセッサ20は、次に読み込むべきブロックがあるか否かを判断し(S24)、次のブロックがある場合には、ステップS12に戻り、ステップS12~S24を繰り返す。次のブロックがない場合は、加工プログラム100の変換処理は終了となる。
【0082】
次に、加工プログラム100の変換について具体例を参照して説明する。図14は、加工プログラム100の変換例を示す図である。図14の上段は、加工プログラム100の一例であり、下段は、上段の加工プログラム100の外部特殊コードおよび外部一般ワードを、内部特殊コードおよび内部一般ワードに置き換えた図である。また、図15は、ブロックN1~N7に対応する内部特殊コードテーブルT05_1~T05_7の一部抜粋である。なお、図15では、理解を容易にするために、内部特殊コードの後に、対応する外部特殊コードを括弧書きしているが、上述した通り、実際の内部特殊コードテーブルT05には、こうした括弧書きはない。
【0083】
図14の例では、ブロックN1において、内部特殊コード「G68」(外部特殊コード「G11」、グループ番号「6」)が指令されている。そのため、内部特殊コードテーブルT05_1では、グループ番号「6」において、指令フラグが「有」となり、内部特殊コード欄に、「G68」が記録される。また、ブロックN1の外部一般アドレス「A」を変換する場合を考える。この場合、グループ番号「6」の指令フラグが「有」であるため、p=1において、図12のステップS40がYesとなる。この場合、外部一般アドレス「A」は、一般アドレス変換テーブルT06の1行目に記載されている内部一般アドレス、すなわち、回転角を表す内部一般アドレス「AR」に変換される。なお、外部一般アドレス「X」、「Y」、「Z」、「RP」は、変換の必要がないため、以下では、これらの変換の説明は省略する。
【0084】
次に、ブロックN2を変換する場合を考える。グループ番号「6」は、ワンショットであるため、ブロックN2の内部特殊コードテーブルT05_2において、グループ番号「6」の指令フラグは「無」になり、内部特殊コード「G68」も削除される。一方、ブロックN2では、内部特殊コード「G00」(外部特殊コード「G00」、グループ番号「0」)が指令されている。そのため、内部特殊コードテーブルT05_2では、グループ番号「0」において、指令フラグが「有」となり、内部特殊コード欄に、「G00」が記録される。
【0085】
グループ番号「0」は、モーダルである。そのため、ブロックN3の内部特殊コードテーブルT05_3において、グループ番号「0」の指令フラグは「無」に変更されるが、内部特殊コード欄における「G00」は、削除されずに、維持される。ここで、ブロックN3では、グループ番号「6」、「20」、「0」に属する内部特殊コードは、指令されていない。一方、内部特殊コード「G00」は、現在のブロックN3で指令されていないが、有効である。この状態で、ブロックN3の外部一般アドレス「A」を変換する場合を考える。この場合、図12のステップS40でYesに進むことなく、ステップS34~S44のループが終了する。続いて、図13のステップS48~S58のループにおいては、p=3となったとき、ステップS54がYesとなる。この場合、ブロックN3の外部一般アドレス「A」は、一般アドレス変換テーブルT06の3行目に記載されている内部一般アドレス、すなわち、仰角を表す内部アドレス「AG」に変換される。
【0086】
ブロックN4では、新たに、内部特殊コード「G83」(外部特殊コード「G381」、グループ番号「20」)が、指令されている。そのため、ブロックN4の内部特殊コードテーブルT05_4において、グループ番号「20」の指令フラグが「有」に変更され、内部特殊コード欄に「G83」が記録される。また、グループ番号「0」の内部特殊コード欄には「G00」が記録されたままである。ブロックN4の外部一般アドレス「A」を変換する場合、ステップS34~S44のループにおいて、p=2となったときに、ステップS40がYesとなる。この場合、ブロックN4の外部一般アドレス「A」は、一般アドレス変換テーブルT06の2行目に記載されている内部一般アドレス、すなわち、切り込み量指令を表す内部一般アドレス「AD」に変換される。
【0087】
グループ番号「20」は、モーダルであるため、ブロックN5の内部特殊コードテーブルT05_5では、グループ番号「20」の指令フラグは「無」に変更されるが、内部特殊コード欄の「G83」は維持されたままである。ここで、ブロックN5では、グループ番号「6」、「20」、「0」に属する内部特殊コードは、指令されていない。一方、内部特殊コード「G00」、「G83」は、現在のブロックN5で指令されていないが、有効である。この場合、ブロックN5の外部一般アドレス「A」を変換する場合、ステップS40でYesに進むことなく、ステップS34~S44のループが終了する。続いて、ステップS48~S58のループにおいては、p=2となったとき、ステップS54がYesとなる。この場合、ブロックN5の外部一般アドレス「A」は、一般アドレス変換テーブルT06の2行目に記載されている内部一般アドレス、すなわち、切り込み量指令を表す内部一般アドレス「AD」に変換される。
【0088】
ここで、ブロックN5では、「G00」および「G83」の双方が有効である。しかし、一般アドレス変換テーブルT06では、「G83」の行が、「G00」の行よりも先に読み込まれる。そのため、ブロックN5において、外部一般アドレス「A」は、「AG」ではなく、「AD」に変換される。
【0089】
ブロックN6では、新たに、内部特殊コード「G00」(外部特殊コード「G00」、グループ番号「0」)が、指令されている。そのため、ブロックN6の内部特殊コードテーブルT05_6において、グループ番号「0」の指令フラグが「有」に変更され、内部特殊コード欄に「G00」が記録される。ブロックN6の外部一般アドレス「A」を変換する場合、ステップS34~S44のループにおいて、p=3となったときに、ステップS40がYesとなる。この場合、ブロックN6の外部一般アドレス「A」は、一般アドレス変換テーブルT06の3行目に記載されている内部一般アドレス、すなわち、仰角を表す内部アドレス「AG」に変換される。
【0090】
ブロックN7では、いずれの内部特殊コードも指令されていない。そのため、ブロックN7の内部特殊コードテーブルT05_7において、全ての行の指令フラグが「無」に変更される。一方で、内部特殊コード「G00」、「G83」は、内部特殊コードテーブルT05_7に記録されたまま残る。ブロックN7において外部特殊コードが指令されていないため、ブロックN7の外部一般アドレス「A」を変換する場合、ステップS40でYesに進むことなく、ステップS34~S44のループが終了する。続いて、ステップS48~S58のループにおいては、p=2となったとき、ステップS54がYesとなる。この場合、ブロックN7の外部一般アドレス「A」は、一般アドレス変換テーブルT06の2行目に記載されている内部一般アドレス、すなわち、「AD」に変換される。
【0091】
以上の説明から明らかな通り、本明細書で開示する加工プログラム変換装置10では、特殊コードの指令状況および有効状況を一時記録している。そして、この特殊コードの指令状況および有効状況に基づいて、外部一般アドレスを、いずれの内部一般アドレスに変換するかを決定している。これにより、一つの外部一般アドレスの意味が特殊コードの指令状況および有効状況によって変化する場合でも、外部一般アドレスを内部一般アドレスに適切に変換できる。
【0092】
なお、上述した構成は、一例であり、加工プログラム変換装置10は、請求項1に記載の構成を有するのであれば、その他の構成は、適宜、変更されてもよい。例えば、各種テーブルT01~T08の構成は、適宜、変更されてもよい。例えば、上記説明では、外部特殊コード振り分けテーブルT01と特殊コード変換テーブルT02と特殊コード特性テーブルT03を互いに異なるテーブルとして説明している。しかし、これらテーブルT01~T03は、一つのテーブルに纏められてもよい。例えば、1列目に外部特殊コードを、2列目にグループ番号を、3列目に内部特殊コードを、4列目にワンショットまたはモーダルを示す識別子を記録したテーブルを設けてもよい。また、これまでの説明では、加工プログラム変換装置10は、数値制御装置12に組み込まれている。しかし、加工プログラム変換装置10は、数値制御装置12や工作機械16から独立した装置でもよい。
【符号の説明】
【0093】
10 加工プログラム変換装置、11 工作機械システム、12 数値制御装置、16 工作機械、20 プロセッサ、22 メモリ、24 通信I/F、26 UI装置、30 加工プログラム読み込み部、32 ワード振り分け部、34 特殊コード変換部、36 一般ワード変換部、38 実行データ生成部、40 実行データ書き込み部、42 実行データバッファ、44 実行データ読み込み部、46 機械制御実行部、48 実行データ出力部、50 表示器、100 加工プログラム、110 実行データ、T01 外部特殊コード振り分けテーブル、T02 特殊コード変換テーブル、T03 特殊コード特性テーブル、T04 外部特殊コードテーブル、T05 内部特殊コードテーブル、T06 一般アドレス変換テーブル、T07 外部一般ワードテーブル、T08 内部一般ワードテーブル。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15