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

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

▶ ファナック株式会社の特許一覧

特許7328475加工プログラム管理装置、及びコンピュータが読み取り可能な記憶媒体
<>
  • 特許-加工プログラム管理装置、及びコンピュータが読み取り可能な記憶媒体 図1
  • 特許-加工プログラム管理装置、及びコンピュータが読み取り可能な記憶媒体 図2
  • 特許-加工プログラム管理装置、及びコンピュータが読み取り可能な記憶媒体 図3
  • 特許-加工プログラム管理装置、及びコンピュータが読み取り可能な記憶媒体 図4
  • 特許-加工プログラム管理装置、及びコンピュータが読み取り可能な記憶媒体 図5
  • 特許-加工プログラム管理装置、及びコンピュータが読み取り可能な記憶媒体 図6
  • 特許-加工プログラム管理装置、及びコンピュータが読み取り可能な記憶媒体 図7
  • 特許-加工プログラム管理装置、及びコンピュータが読み取り可能な記憶媒体 図8
  • 特許-加工プログラム管理装置、及びコンピュータが読み取り可能な記憶媒体 図9
  • 特許-加工プログラム管理装置、及びコンピュータが読み取り可能な記憶媒体 図10
  • 特許-加工プログラム管理装置、及びコンピュータが読み取り可能な記憶媒体 図11
  • 特許-加工プログラム管理装置、及びコンピュータが読み取り可能な記憶媒体 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2023-08-07
(45)【発行日】2023-08-16
(54)【発明の名称】加工プログラム管理装置、及びコンピュータが読み取り可能な記憶媒体
(51)【国際特許分類】
   G05B 19/4068 20060101AFI20230808BHJP
【FI】
G05B19/4068
【請求項の数】 7
(21)【出願番号】P 2023526135
(86)(22)【出願日】2023-02-13
(86)【国際出願番号】 JP2023004870
【審査請求日】2023-05-10
【早期審査対象出願】
(73)【特許権者】
【識別番号】390008235
【氏名又は名称】ファナック株式会社
(74)【代理人】
【識別番号】110001151
【氏名又は名称】あいわ弁理士法人
(72)【発明者】
【氏名】三上 和幸
(72)【発明者】
【氏名】斉藤 学
【審査官】亀田 貴志
(56)【参考文献】
【文献】特開2020-95580(JP,A)
【文献】特開2003-248507(JP,A)
【文献】米国特許出願公開第2010/0063608(US,A1)
【文献】特開2019-168804(JP,A)
【文献】特開2015-207135(JP,A)
【文献】特開平3-160503(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/18 - 19/46
B23Q 15/00
G06F 8/70
(57)【特許請求の範囲】
【請求項1】
加工プログラムを一連の管理単位に分割したフォーマットで記憶する加工プログラム記憶部と、
前記加工プログラムの特定のブロック番号を取得するブロック番号取得部と、
前記管理単位の付加情報である管理単位のブロック数を読み出し、前記ブロック数を用いて、前記特定のブロック番号を含む管理単位を検索する管理単位検索部と、
前記特定のブロック番号を含む管理単位の先頭のブロックから順にブロック番号を算出し、前記特定のブロック番号に該当するブロックの記憶位置を検索するブロック検索部と、
を備える加工プログラム管理装置。
【請求項2】
前記ブロック番号取得部は、前記特定のブロック番号が示すブロックの編集内容を取得し、
前記編集内容に従い、前記管理単位に含まれるブロックを編集し、前記管理単位の付加情報であるブロック数を更新する、ブロック書込部を備える、請求項1記載の加工プログラム管理装置。
【請求項3】
前記ブロック書込部は、前記編集により、前記管理単位が所定のサイズを超えるとき、新たな管理単位を追加し、超過した編集内容を書き込む、請求項2記載の加工プログラム管理装置。
【請求項4】
管理単位に分割されていない新規の加工プログラムを取得する新規プログラム取得部と、
前記新規の加工プログラムを一連の管理単位に分割し、各管理単位に含まれるブロック数を計数し、前記ブロック数を付加情報として各管理単位に追加するフォーマット変換部と、を備える請求項1記載の加工プログラム管理装置。
【請求項5】
前記ブロック数は、各管理単位に含まれるブロック区切りの数であり、
前記一連の管理単位において、各管理単位の最後のブロックは、次のブロックにまたぐように分割されており、
前記管理単位検索部は、前記管理単位の付加情報としてのブロック数に1を足して、前記付加情報としてのブロック数と、前記管理単位に含まれるブロックの数とのずれを補正する、請求項1記載の加工プログラム管理装置。
【請求項6】
前記ブロック数は、各管理単位に含まれるブロック区切りの数であり、
前記管理単位検索部は、管理単位の最後の文字がブロック区切りか否かを判定し、前記管理単位の最後の文字がブロック区切りでない場合、前記のブロック数に1を足して、前記付加情報としてのブロック数と、前記管理単位に含まれるブロックの数とのずれを補正する、請求項1記載の加工プログラム管理装置。
【請求項7】
1つ又は複数のプロセッサが実行することにより、
一連の管理単位に分割したフォーマットの加工プログラムを所定の記憶領域に記憶し、
前記加工プログラムの特定のブロック番号を取得し、
前記管理単位の付加情報である管理単位のブロック数を読み出し、前記ブロック数を用いて、前記特定のブロック番号を含む管理単位を検索し、
前記特定のブロック番号を含む管理単位の先頭のブロックから順にブロック番号を算出し、前記特定のブロック番号に該当するブロックの記憶位置を検索する、処理を実行させる命令を記憶するコンピュータが読取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、加工プログラム管理装置、及びコンピュータが読み取り可能な記憶媒体に関する。
【背景技術】
【0002】
数値制御装置は、工作機械の制御装置である。数値制御装置は、加工プログラムを解析し、ワークや主軸の位置、刃物の回転数などをデジタルの「数値」で制御する。加工プログラムは、ブロックという単位の集まりで構成される。加工プログラムの先頭からブロックを通し番号で表したものがブロック番号であり、加工プログラムの位置を表す。
【0003】
加工プログラムの編集では、編集画面が表示され、キーボードからの入力により、編集することができる。加工プログラムは、ブロック単位で編集できるため、例えば、工作機械の運転中などにブロックを書き換えて、工作機械の動作を変更することができる。例えば、特許文献1。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2003-248507号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
加工プログラムのブロック位置の検索では、加工プログラムの先頭から、プログラム文字列を1文字ずつ読取りながら、ブロック区切りを示す文字をブロック数としてカウントし、編集画面のブロック番号とメモリのブロックの位置を検索する。このような検索方法では、加工プログラムが長いほど、検索に時間がかかる。
【0006】
加工プログラムの管理では、ブロックの位置検索を効率化することが望まれている。
【課題を解決するための手段】
【0007】
本開示の加工プログラム管理装置は、加工プログラムを一連の管理単位に分割したフォーマットで記憶する加工プログラム記憶部と、加工プログラムの特定のブロック番号を取得するブロック番号取得部と、管理単位の付加情報である管理単位のブロック数を読み出し、ブロック数を用いて、特定のブロック番号を含む管理単位を検索する管理単位検索部と、特定のブロック番号を含む管理単位の先頭のブロックから順にブロック番号を算出し、特定のブロック番号に該当するブロックの記憶位置を検索するブロック検索部と、を備える。
【図面の簡単な説明】
【0008】
図1】加工プログラム管理装置のブロック図である。
図2】加工プログラムのフォーマットを説明する模式図である。
図3】加工プログラムのフォーマットを説明する模式図である。
図4】加工プログラムの編集画面の画面構成図である。
図5】ブロックの検索方法を説明するフローチャートである。
図6】ブロックの検索方法の説明図である。
図7】ブロックの書込みの説明図である。
図8】(1)のフォーマットに変換した加工プログラムにおけるブロックの検索方法の説明図である。
図9】(2)のフォーマットに変換した加工プログラムにおけるブロックの検索方法の説明図である。
図10】(3)のフォーマットに変換した加工プログラムにおけるブロックの検索方法を説明するフローチャートである。
図11】(3)のフォーマットに変換した加工プログラムにおけるブロックの検索方法の説明図である。
図12】加工プログラム管理装置のハードウェア構成図である。
【発明を実施するための形態】
【0009】
図1を参照して加工プログラム管理装置100の構成を説明する。まず、加工プログラム管理装置100と加工プログラム編集装置200の関係について説明する。
本実施形態の加工プログラム管理装置100は、加工プログラムを管理単位に分割して管理する。加工プログラム管理装置100は、数値制御装置などの情報処理装置に適用される。
加工プログラム編集装置200は、プログラム表示部21と編集受付部22を備え、ユーザによる加工プログラムの編集を受け付け、編集を受け付けた加工プログラムのブロック番号と、編集内容を加工プログラム管理装置100に出力する。
加工プログラム管理装置100は、加工プログラム編集装置200から取得したブロック番号を、加工プログラム記憶部17の記憶位置に変換する。加工プログラム管理装置100は、ブロック単位で加工プログラムを書き換えることができる。そのため、加工プログラム全体を書き換えることなく、部分的な追加、変更、削除といった操作に柔軟に対応することができる。
加工プログラム編集装置200は、数値制御装置やPC(パーソナルコンピュータ)などに実装される。加工プログラム管理装置100と加工プログラム編集装置200は、1つの装置に実装してもよい。
【0010】
図1は、加工プログラム管理装置100のブロック図である。加工プログラム管理装置100は、新規プログラム取得部11、フォーマット変換部12、ブロック番号取得部13、管理単位検索部14、ブロック検索部15、ブロック書込部16を備える。
なお、加工プログラム管理装置100の構成要素は、その機能を類別したものであって、物理構成及びプログラム構成において明確に区分できなくてもよい。
【0011】
新規プログラム取得部11は、管理単位に分割されていない新規の加工プログラムを取得する。新規プログラムは、数値制御装置、PCなどの情報処理装置のエディタで作成される。新規プログラムは、可搬性記憶媒体やネットワークを介して取得してもよい。
【0012】
フォーマット変換部12は、取得した新規プログラムのフォーマットを変換する。フォーマット変換部12は、フォーマットの変換において、新規プログラムを、所定の管理単位に分割する。所定の管理単位とは、例えば、数キロバイト、数メガバイトなどの所定のサイズである。サイズは、予め設定されているものとする。図2の加工プログラム3の管理単位1には、5つのブロックが含まれる。
加工プログラムの管理単位への分割は、加工プログラムの局所編集を容易にする。例えば、ブロックの挿入により、管理単位のサイズを超過した場合には、ファイル全体を書き換えず、新たに管理単位を追加する。管理単位に分割することで、追加、変更、削除といった頻繁な編集に対応できる。
【0013】
フォーマット変換部12は、加工プログラムを管理単位に分割し、管理単位にブロック数という付加情報を追加する。ブロック数は、管理単位に含まれるブロック区切りの数を示す。ブロック区切りとは、ブロックの終端を示す特定の文字列である。ブロック区切りとしては、改行文字(CR=‘0×0D’、LF=‘0×0A’)が用いられることが多い。ブロック区切りには、どの文字コードを用いてもよい。
フォーマット変換部12は、ブロック区切りを計数することにより、加工プログラムを構成する文字とブロック番号とを対応付けることができる。すなわち、加工プログラムの先頭から1文字ずつ読み出して、最初のブロック区切りまでのブロックのブロック番号が「1」、次のブロック区切りまでのブロックのブロック番号が「2」、次のブロック区切りまでのブロックのブロック番号が「3」・・・となる。
フォーマット変換部12は、管理単位に含まれるブロック区切りを計数し、付加情報「ブロック数」として管理単位に追加する。例えば、図2の管理単位は、5つのブロック区切りが含まれる。フォーマット変換部12は、管理単位にブロック数「5」という付加情報を追加する。
【0014】
ここで、加工プログラムのフォーマットについて説明する。加工プログラムのフォーマットは、例えば、図3に示すように、(1)ブロックを分割せずブロック区切りが管理単位の最後の文字となるように配置するフォーマット、(2)管理単位の最後のブロックが次のブロックをまたぐようにブロックを分割するフォーマット、(3)(1)と(2)が混在するフォーマットがある。
(1)ブロック区切りが管理単位の最後の文字となるようにブロックを分割せずに記録する場合、管理単位に含まれるブロック区切りの数と、管理単位を構成するブロックの数が一致する。また、(2)管理単位の最後のブロックが次のブロックをまたぐようブロックを分割して記録する場合、先頭の管理単位に含まれるブロック区切りの数と、先頭の管理単位を構成するブロックの数にずれが生じる。(3)の場合、どの方法を使うかによって、ブロックの検索及び書込みの方法が変化する。これについては、他の実施形態で説明する。どの方法を使うかは、加工プログラム管理装置100で規定する。
【0015】
ブロック番号取得部13は、加工プログラム編集装置200からブロック番号を取得する。加工プログラム編集装置200は、プログラム表示部21に表示された加工プログラムに対するユーザの操作を受け付け、編集受付部22が受け付けた加工プログラムのブロックのブロック番号と、編集内容を加工プログラム管理装置100に出力する。
図4は、加工プログラム編集装置200の編集画面の一例を示す。図4の編集画面では、加工プログラムの各ブロックにブロック番号が表示される。ブロック番号は、編集画面に表示される場合と、表示されない場合がある。加工プログラム編集装置200の編集受付部22は、ユーザ操作を受け付ける。ブロック番号取得部13は、編集受付部22が受け付けた操作内容と、操作対象のブロック番号を取得する。
【0016】
管理単位検索部14は、ブロック番号取得部13が取得したブロック番号のブロックが含まれる管理単位を検索する。
図5のフローチャート及び図6の説明図を参照してブロック位置の検索方法を説明する。ブロック数の読出しは、先頭の管理単位1を最初に行う。管理単位検索部14は、まず、nに1を入力して(ステップS11)、管理単位nのブロック数を読み出す(ステップS12)。
管理単位検索部14は、ブロック数を基に管理単位nに含まれるブロック番号の範囲を算出し、検索対象のブロックが管理単位nに存在するか否かを判定する(ステップS13)。
管理単位nに検索対象のブロックが存在する場合(ステップS14;Yes)、管理単位検索部14は、後述するブロック検索を行う。管理単位nに検索対象のブロックが存在しない場合(ステップS14;No)、管理単位検索部14は、nにn+1を入力し、検索対象の管理単位nを次の管理単位n+1に変更する(ステップS15)。管理単位検索部14は、ステップS12に移行し、次の管理単位のブロック数を読み出す。管理単位検索部14は、検索対象のブロックを含む管理単位を検出するまで、ステップS12からステップS15の処理を繰り返す。
【0017】
ブロック検索部15は、検索対象のブロックが含まれる管理単位の先頭から加工プログラムを1文字ずつ読み出し、読み出した文字がブロック区切りか否かを判定する。読み出した文字がブロック区切りであれば、ブロック検索部15は、ブロック番号を1加算する。このときのブロック番号の値は、直近で読み出したブロック区切りの次のブロックのブロック番号である。ブロック検索部15は、算出したブロック番号と、検索対象のブロック番号とを比較し、検索対象のブロックのブロック番号と、加工プログラム記憶部17の位置とを対応づける。
【0018】
図6を参照してブロックの検索方法を具体的に説明する。
まず、検索対象のブロックが含まれる管理単位を検索する。図6の例では、「管理単位1」のブロック数が「10」であるため、「管理単位1」にはブロック番号「1~10」のブロックが存在する。検索対象のブロックのブロック番号「12」であるため、「管理単位1」には検索対象のブロックは存在しない。
次の「管理単位2」のブロック数は「7」であるため、「管理単位2」にはブロック番号「11~17」のブロックが存在する。検索対象のブロックのブロック番号は「12」であるため、「11≦12≦17」であり、「管理単位2」に検索対象のブロックが存在するという判定結果となる。
【0019】
ブロック検索部15は、管理単位のどこに検索対象のブロックが存在するかを検索する。ブロック検索部15は、「管理単位2」の先頭のブロックのブロック番号と、検索対象のブロック番号を比較する。「管理単位2」の先頭のブロック番号は「11」である。これは検索対象のブロックのブロック番号「12」と異なる。ブロック検索部15は、「管理単位2」の加工プログラムを1文字ずつ読取り、ブロック区切りが存在したときには、ブロック番号を「1」加算する。ブロック番号を「1」加算したことにより、ブロック番号は「12(=11+1)」となる。検索対象のブロック番号「12」は、ブロック区切りの次の文字のブロック番号と等しい。これにより、ブロック検索部15は、加工プログラム編集装置200から取得した検索対象のブロック番号と加工プログラム記憶部17におけるブロックの記憶位置を対応付けることができる。
【0020】
ブロック書込部16は、加工プログラム編集装置200での編集内容をメモリ上の加工プログラムに反映させるように編集内容を更新する。図7を参照してブロックの書込みについて説明する。前提として、図7の例では、「管理単位1」のブロック数が「k」であり、「管理単位2」のブロック数が「l」である。ブロック番号「k+2」のブロックが編集対象であり、「k+2」の次に1ブロック「(k+2)´」を追加する。
【0021】
ブロック書込部16は、ブロックを挿入すると、ブロックの挿入により増加したブロック区切りの数を加算し、管理単位の付加情報としてのブロック数を更新する。
【0022】
編集により、ブロックの文字数が増加したり、ブロックを挿入したりすると、管理単位のサイズを超過することがある。管理単位のサイズが超過したときは、ブロック書込部16は、新たな管理単位を追加する。新たな管理単位を追加するときには、上述した(1)(2)(3)のいずれかのフォーマットでブロックを書込む。使用するフォーマットは、予め規定されているものとする。
【0023】
以上説明したように、加工プログラム管理装置100では、加工プログラムを管理単位に分割して管理する。加工プログラム管理装置100では、管理単位に含まれるブロックの数を管理単位に付加する。加工プログラム管理装置100は、管理単位に付加されたブロックの数を基に、検索対象のブロックがどの管理単位に含まれるかを検索することができる。本実施形態の加工プログラム管理装置100では、検索対象のブロックを含む管理単位でのみ、管理単位の先頭から1文字ずつを読み出し、ブロック数を判定すればよい。そのため、検索対象のブロックを含む管理単位以外では、1文字ずつの判定が不要になり、ブロックの位置検索を効率化することができる。
【0024】
なお、検索対象のブロックが管理単位に含まれるか否かを判定するには、管理単位の後尾のブロック番号のみを算出してもよい。図6の加工プログラムを例に説明すると、管理単位1の後尾のブロック番号は「10」である。検索対象のブロック番号「12」は管理単位1の後尾のブロック番号「10」より大きいので、検索対象のブロックは管理単位1に含まれないことが分かる。管理単位2の後尾のブロック番号は「17」である。検索対象のブロック番号「17」は管理単位2の後尾のブロック番号「17」より小さいので、検索対象のブロックは、管理単位2に含まれることが分かる。
【0025】
[フォーマットごとの検索方法]
ブロックの検索方法は、管理単位のフォーマットによって異なる。以下、(1)、(2)、(3)の3つのフォーマットにおける検索方法の違いについて説明する。
【0026】
[(1)管理単位の最後の文字をブロック区切りとするフォーマット]
管理単位の最後の文字がブロック区切りとなるように加工プログラムを保存すると、管理単位を構成するブロックの個数と、管理単位の付加情報であるブロック数が一致する。管理単位検索部14は、以下のような方法で、管理単位nに含まれるブロック番号の範囲を算出する。
なお、以下の説明では、管理単位nの先頭のブロックのブロック番号をFBN(FirstBlockNumber)、管理単位nの後尾のブロックのブロック番号をLBN(LastBlockNumber)、検索対象のブロック番号をTN(TargetNumber)と呼ぶ。
【0027】
管理単位nに含まれるブロック番号の範囲は、先頭のブロックのブロック番号FBNと、後尾のブロックのブロック番号LBNの間となる。管理単位nのブロック数を「m」とすると、管理単位nの先頭のブロックのブロック番号FBNは、管理単位nの1つ前の管理単位n-1までのブロック数の総和に1を足した値である。管理単位nの後尾のブロックのブロック番号LBNは、管理単位nの1つ前の管理単位n-1までのブロック数の総和に管理単位nのブロック数「m」を足した値である。
【0028】
管理単位検索部14は、先頭の管理単位1から順に、ブロック番号TNを含む管理単位を検索する。検索方法として、まず、先頭の管理単位1の先頭のブロック番号FBNと後尾のブロック番号LBNを算出し、検索対象のブロック番号TNと比較する。検索対象のブロック番号TNが管理単位1に含まれない場合には、管理単位検索部14は、次の管理単位2の先頭のブロック番号FBNと後尾のブロック番号LBNを算出し、検索対象のブロック番号TNと比較する。検索対象のブロック番号TNが管理単位2に含まれない場合、管理単位検索部14は、次のブロックの先頭のブロック番号FBNと後尾のブロック番号LBNを算出する。管理単位検索部14は、同様の処理を繰り返し、検索対象のブロック番号TNのブロックが含まれる管理単位を検索する。
【0029】
ブロック検索部15は、検索対象のブロックを検索する。ブロック検索部15は、まず、検索対象のブロックを含む管理単位の先頭のブロックのブロック番号FBNと、検索対象のブロックのブロック番号TNとを比較する。比較の結果、検索対象のブロックのブロック番号TNが、管理単位の先頭のブロックのブロック番号FBNより大きければ、ブロック検索部15は、次の1文字を読み出す。次の1文字がブロック区切りであれば、先頭のブロック番号に1を加算し、検索対象のブロック番号TNと比較する。次の1文字がブロック区切りでなければ、その次の1文字を読み出す。ブロック検索部15は、読み出した文字のブロック番号が、検索対象のブロック番号TNとなるまでこの処理を繰り返す。
【0030】
図8を参照してブロック検索方法を具体的に説明する。図8の例では、管理単位1のブロック数が「k」、管理単位2のブロック数が「l」、管理単位3のブロック数が「m」、検索対象のブロックのブロック番号TNが「k+l+2」である。
管理単位検索部14は、まず、先頭の管理単位1の先頭のブロック番号FBNと後尾のブロック番号LBNを算出する。管理単位1の先頭のブロック番号FBNは「1」であり、後尾のブロック番号LBNは「k」である。検索対象のブロック番号TN「k+l+2」はこの範囲に含まれない。検索対象のブロックが管理単位1には含まれない場合、管理単位検索部14は、次の管理単位2に含まれるブロック番号の範囲を算出する。
管理単位2の先頭のブロック番号FBNは「管理単位1のブロック数kに1を足した値」、すなわち「k+1」である。管理単位2の後尾のブロック番号LBNは「管理単位1のブロック数k」に管理番号2のブロック数「l」を足した値「k+l」である。検索対象のブロックが管理単位2に含まれない場合、管理単位検索部14は、検索対象のブロックは管理単位2に含まれないと判定し、次の管理単位3のブロック番号の範囲を算出する。
管理単位3の先頭のブロック番号FBNは、「管理単位1及び管理単位2のブロック数の総和に1を足した値」、すなわち「k+l+1」である。管理単位3の後尾のブロック番号LBNは、先頭のブロック番号「管理単位1及び管理単位2のブロック数の総和「k+l」に管理単位3のブロック数「m」を足した値「k+l+m」である。検索対象のブロック番号TN「k+l+2」はこの範囲に含まれる。管理単位検索部14は、検索対象のブロックを含む管理単位は管理単位3であると判定する。
【0031】
ブロック検索部15は、検索対象のブロックを検索する。ブロック検索部15は、管理単位3の先頭から1文字ずつ読み出し、ブロック区切りを検索する。ブロック検索部15は、読み出した文字がブロック区切りである場合、ブロック番号を1加算する。ブロック検索部15は、算出したブロック番号と検索対象のブロック番号TNが等しければ、直近に読み出したブロック区切りの次の文字が、検索対象のブロックの先頭の文字であると判定する。これにより、検索対象のブロック番号と、加工プログラム記憶部17における検索対象のブロックの位置が対応付けられる。
図8の例では、ブロック検索部15は、ブロック区切りを検出すると、管理単位3の先頭のブロック番号「k+l+1」に1を足し、次のブロックのブロック番号「k+l+2」を算出する。算出したブロック番号「k+l+2」と検出対象のブロック番号「k+l+2」は等しい。これにより、検索対象のブロック番号「k+l+2」の加工プログラム記憶部17における位置が分かる。
【0032】
上述した加工プログラム管理装置100では、管理単位の最後の文字がブロック区切りとなるように加工プログラムを保存する。これにより、管理単位を構成するブロックの個数と、管理単位の付加情報としてのブロック数(管理単位に含まれるブロック区切りの数)が一致する。加工プログラム管理装置100では、上述した方法を用いて、管理単位に含まれるブロック番号の範囲を演算し、検索対象のブロックがどの管理単位に含まれるかを検索することができる。
【0033】
[(2)管理単位の最後のブロックが次のブロックをまたぐフォーマット]
(2)の場合、管理単位の付加情報としてのブロック数(管理単位に含まれるブロック区切りの数)と、管理単位に含まれるブロックの数にずれが生じる。管理単位nの後尾のブロックは2つに分割され次の管理単位n+1にまたいで記録されるため、管理単位nに含まれるブロックの数は、ブロック数(ブロック区切りの数)よりずれ「1」だけ大きくなる。
(2)の場合、管理単位のブロック数のずれを補正するために、管理単位の後尾のブロック番号LBNに1を加算する。図9の例の場合、管理単位nのブロック数を「m」とすると、管理単位nの後尾のブロックのブロック番号は、管理単位nの1つ前の管理単位n-1までのブロック数の総和に、管理単位nのブロック数「m」とブロック数のずれ「1」を足した値となる。これにより、各管理単位に含まれるブロックのブロック番号の範囲が計算できる。
【0034】
図9を参照してブロックの検索方法を具体的に説明する。図9の例では、管理単位1のブロック数が「k」、管理単位2のブロック数が「l」、管理単位3のブロック数が「m」、検索対象のブロックのブロック番号TNが「k+l+2」である。
管理単位検索部14は、まず、先頭の管理単位1の先頭のブロック番号FBNと後尾のブロック番号LBNを算出する。管理単位1の先頭のブロック番号FBNは「1」であり、後尾のブロック番号LBNはブロック数「k」にブロック数のずれ「1」を足した値「k+1」である。検索対象のブロック番号TN「k+l+2」はこの範囲に含まれないため、管理単位検索部14は、検索対象のブロックは管理単位1に含まれないと判定し、次の管理単位2に含まれるブロック番号の範囲を算出する。
管理単位2の先頭ブロックのブロック番号FBNは「管理単位1のブロック数kに1を足した値」、すなわち「k+1」である。管理単位2の後尾のブロック番号は、管理単位1及び管理単位2のブロック数の総和に「1」を足した値、すなわち「k+l+1」である。検索対象のブロック番号「k+l+2」はこの範囲に含まれないため、管理単位検索部14は、次の管理単位3に含まれるブロック番号の範囲を算出する。
管理単位3の先頭ブロックFBNは、「管理単位1及び管理単位2のブロック数の総和に1を足した値」、すなわち「k+l+1」である。管理単位3の後尾のブロック番号LBNは「管理単位1及び管理単位2のブロック数の総和」に管理単位3のブロック数「m」及びブロック数のずれ「1」を足した値「k+l+m+1」である。検索対象のブロック番号「k+l+2」は管理単位3の範囲に含まれる。管理単位検索部14は、検索対象のブロックを含む管理単位は管理単位3であると判定する。
【0035】
ブロック検索部15は、管理単位3における検索対象のブロック番号TNの位置を検索する。ブロック検索部15は、管理単位3の先頭から1文字ずつ読み出し、読み出した文字がブロック区切りであれば、現在のブロック番号に「1」を加算する。ブロック検索部15は、検索対象のブロック番号TNと、算出したブロック番号とが等しいか否かを判定する。2つのブロック番号が等しい場合には、直近に読み出したブロック区切りの次の文字が、検索対象のブロックの先頭の文字であると判定する。
【0036】
上述した加工プログラム管理装置100では、管理単位の最後のブロックが次のブロックをまたぐようにブロックを分割して保存する。(2)のフォーマットでは、管理単位に隙間なく加工プログラムを記録することができ、容量に無駄がなくなる。(2)の検索方法では、管理単位検索部14は、ずれ「1」を加算するだけで、(1)と同じように管理単位に含まれるブロック番号の範囲が計算でき、計算負荷が少なく効率的である。しかしながら、(2)のフォーマットでは、2つの管理単位をまたぐようにブロックを調整するため、加工プログラムの記録時に、ごみとなる文字を挿入する処理が必要となることがある。
【0037】
[(3)(1)と(2)を混在させたフォーマット]
(1)と(2)が混在している場合には、管理単位の最後の文字がブロック区切りか否かによって判定条件を変化させる。
【0038】
図10は、(3)の場合の加工プログラム管理装置の動作を示すフローチャートである。
管理単位nに含まれるブロック番号の範囲を算出する場合(ステップS21)、管理単位検索部14は、まず、管理単位nの最後の文字を読み出し(ステップS22)、最後の文字がブロック区切りか否かを判定する(ステップS23)。最後の文字がブロック区切りの場合(ステップS24;Yes)、管理単位nの付加情報であるブロック数(ブロック区切りの数)と、管理単位nに含まれるブロックの数がずれないため、ずれの補正は不要である。管理単位検索部14は、管理単位nの1つ前の管理単位n-1までのブロック数の総和に管理単位nのブロック数「m」を足して、管理単位nの後尾のブロックのブロック番号LBNを算出する(ステップS25)。
【0039】
管理単位nの最後の文字がブロック区切りでない場合(ステップS24;No)、管理単位nの付加情報であるブロック数(ブロック区切りの数)と、管理単位nに含まれるブロックの数がずれる。管理単位検索部14は、管理単位nの1つ前の管理単位n-1までのブロック数の総和、管理単位nのブロック数「m」、ブロック数のずれ「1」を足して、管理単位nの後尾のブロックのブロック番号LBNを算出する(ステップS26)。
【0040】
管理単位検索部14は、検索対象のブロック番号TNのブロックが管理単位nの範囲内に含まれるか否かを判定する(ステップS27)。検索対象のブロック番号TNのブロックが管理単位nの範囲に含まれない場合(ステップS28;No)、管理単位検索部14は、ステップS22に移行し、nにn+1を入力し、検索対象の管理単位nを次の管理単位n+1に変更する(ステップS29)。
また、検索対象のブロック番号TNのブロックが管理単位nの範囲に含まれる場合(ステップS28;Yes)、管理単位検索部14は、検索対象のブロックが管理単位nに含まれると判定する。
【0041】
図11を参照して(3)の場合の管理単位の検索方法を具体的に説明する。図11の例では、管理単位1のブロック数が「k」、管理単位2のブロック数が「l」、管理単位3のブロック数が「m」である。
管理単位検索部14は、先頭の管理単位1の最後の文字を読み出し、最後の文字がブロック区切りか否かを判定する。図11の管理単位1の最後の文字はブロック区切りである。管理単位検索部14は、管理単位1の後尾のブロックのブロック番号LBN「k」を算出する。管理単位検索部14は、管理単位1の後尾のブロックのブロック番号LBN「k」と、検索対象のブロック番号TKは「k+l+2」とを比較し、検索対象のブロックは管理単位1に含まれないと判定する。
管理単位検索部14は、次の管理単位2の最後の文字を読み出し、管理単位2の最後の文字がブロック区切りか否かを判定する。図11の管理単位2の最後の文字はブロック区切りではない。管理単位検索部14は、管理単位1のブロック数「k」に、管理単位2のブロック数「l」とずれ「1」を加算して、管理単位2の後尾のブロックのブロック番号LBK「k+l+1」を算出する。管理単位検索部14は、管理単位2の後尾のブロックのブロック番号LBN「k+l+1」と検索対象のブロック番号TKは「k+l+2」とを比較し、検索対象のブロックは管理単位2に含まれないと判定する。
管理単位検索部14は、次の管理単位3を読み出し、管理単位3の最後の文字がブロック区切りか否かを判定する。図11の管理単位3の最後の文字はブロック区切りではない。管理単位検索部14は、管理単位1と管理単位2のブロック数の総和「k+l」に、管理単位3のブロック数「m」とずれ「1」を加算して、管理単位3の後尾のブロックのブロック番号LBK「k+l+m+1」を算出する。管理単位検索部14は、管理単位3の後尾のブロック番号LBK「k+l+m+1」と、検索対象のブロック番号TKは「k+l+2」とを比較し、検索対象のブロックが管理単位3に含まれると判定する。
【0042】
(3)のフォーマットでは、管理単位の終端でずれが生じる場合とずれが生じない場合が混在する。加工プログラム管理装置100は、最後の文字がブロック区切りでない場合、管理単位の後尾のブロック番号に「1」を足してずれを補正し、管理単位の最後の文字がブロック区切りの場合、ずれの補正は行わない。
(3)の検索方法は、(1)のフォーマットにも(2)のフォーマットにも適用できるので汎用性が高い。(3)のフォーマットは、隙間なく加工プログラムを記録できるため無駄がない。また、(3)のフォーマットは、ブロック区切りの位置を調整する必要がない。しかしながら、(3)の検索方法は、管理単位の検索時に、ずれを補正するか否かの判断を行うので、(1)(2)よりも演算量が多くなるという問題がある。
【0043】
以下、本開示を適用した加工プログラム管理装置100のハードウェア構成について説明する。図12は、加工プログラム管理装置100のハードウェア構成図である。加工プログラム管理装置100は、図12に示すように、加工プログラム管理装置100を全体的に制御するCPU111、プログラムやデータを記録するROM112、一時的にデータを展開するためのRAM113を備え、CPU111はバスを介してROM112に記録されたシステムプログラムを読み出し、加工プログラムの管理処理を実行する。
【0044】
不揮発性メモリ114は、例えば、図示しないバッテリでバックアップされるなどして、加工プログラム管理装置100の電源がオフされても記憶状態が保持される。不揮発性メモリ114には、インタフェース115、118、119を介して外部装置120から読み込まれたプログラムや入力部30を介して入力されたユーザ操作などの各種データが記憶される。不揮発性メモリ114に、本開示のブロック検索を実行するためのプログラムおよびデータを記憶してもよい。また、表示部70には各種データが表示される。
【0045】
インタフェース115は、加工プログラム管理装置100とアダプタ等の外部装置120と接続するためのインタフェースである。外部装置120側からはプログラムや各種パラメータ等が読み込まれる。
【0046】
本開示について詳述したが、本開示は上述した個々の実施形態に限定されるものではない。これらの実施形態は、本開示の要旨を逸脱しない範囲で、又は、請求の範囲に記載された内容とその均等物から導き出される本開示の主旨を逸脱しない範囲で種々の追加、置き換え、変更、部分的削除等が可能である。また、これらの実施形態は、組合せて実施することもできる。例えば、上述した実施形態において、各動作の順序や各処理の順序は、一例として示したものであり、これらに限定されるものではない。
【0047】
上記実施形態及び変形例に関し、更に以下の付記を開示する。
(付記1)
加工プログラム管理装置(100)は、加工プログラムを一連の管理単位に分割したフォーマットで記憶する加工プログラム記憶部(17)と、前記加工プログラムの特定のブロック番号を取得するブロック番号取得部(13)と、前記管理単位の付加情報である管理単位のブロック数を読み出し、前記ブロック数を用いて、前記特定のブロック番号を含む管理単位を検索する管理単位検索部(14)と、前記特定のブロック番号を含む管理単位の先頭のブロックから順にブロック番号を算出し、前記特定のブロック番号に該当するブロックの記憶位置を検索するブロック検索部(15)と、を備える。
(付記2)
加工プログラム管理装置(100)は、前記ブロック番号取得部(13)は、前記特定のブロック番号が示すブロックの編集内容を取得し、前記編集内容に従い、前記管理単位に含まれるブロックを編集し、前記管理単位の付加情報であるブロック数を更新する、ブロック書込部(16)を備える。
(付記3)
加工プログラム管理装置(100)は、前記ブロック書込部(16)は、前記編集により、前記管理単位が所定のサイズを超えるとき、新たな管理単位を追加し、超過した編集内容を書き込む。
(付記4)
加工プログラム管理装置(100)は、管理単位に分割されていない新規の加工プログラムを取得する新規プログラム取得部(11)と、前記新規の加工プログラムを一連の管理単位に分割し、各管理単位に含まれるブロック数を計数し、前記ブロック数を付加情報として各管理単位に追加するフォーマット変換部(12)と、を備える。
(付記5)
加工プログラム管理装置(100)は、前記ブロック数は、各管理単位に含まれるブロック区切りの数であり、前記一連の管理単位において、各管理単位の最後のブロックは、次のブロックにまたぐように分割されており、前記管理単位検索部(14)は、前記管理単位の付加情報としてのブロック数に1を足して、前記付加情報としてのブロック数と、前記管理単位に含まれるブロックの数とのずれを補正する。
(付記6)
加工プログラム管理装置(100)は、前記ブロック数は、各管理単位に含まれるブロック区切りの数であり、前記管理単位検索部(14)は、管理単位の最後の文字がブロック区切りか否かを判定し、前記管理単位の最後の文字がブロック区切りでない場合、前記のブロック数に1を足して、前記付加情報としてのブロック数と、前記管理単位に含まれるブロックの数とのずれを補正する。
(付記7)
コンピュータが読取り可能な記憶媒体(112、113、114)は、1つ又は複数のプロセッサ(111)が実行することにより、一連の管理単位に分割したフォーマットの加工プログラムを所定の記憶領域に記憶し、前記加工プログラムの特定のブロック番号を取得し、前記管理単位の付加情報である管理単位のブロック数を読み出し、前記ブロック数を用いて、前記特定のブロック番号を含む管理単位を検索し、前記特定のブロック番号を含む管理単位の先頭のブロックから順にブロック番号を算出し、前記特定のブロック番号に該当するブロックの記憶位置を検索する。
【符号の説明】
【0048】
100 加工プログラム管理装置
11 新規プログラム取得部
12 フォーマット変換部
13 ブロック番号取得部
14 管理単位検索部
15 ブロック検索部
16 ブロック書込部
17 加工プログラム記憶部
111 CPU
112 ROM
113 RAM
114 不揮発性メモリ
【要約】
加工プログラム管理装置は、一連の管理単位に分割したフォーマットの加工プログラムを記憶させ、加工プログラムの特定のブロック番号を取得し、管理単位の付加情報である管理単位のブロック数を読み出し、ブロック数を用いて、特定のブロック番号を含む管理単位を検索し、特定のブロック番号を含む管理単位の先頭のブロックから順にブロック数を算出し、特定のブロック番号に該当するブロックの記憶位置を検索する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12