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

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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-05
(45)【発行日】2024-01-16
(54)【発明の名称】最適化処理装置
(51)【国際特許分類】
   G05B 19/18 20060101AFI20240109BHJP
   G05B 19/406 20060101ALI20240109BHJP
   B23Q 15/00 20060101ALI20240109BHJP
【FI】
G05B19/18 S
G05B19/406 S
B23Q15/00 B
【請求項の数】 10
(21)【出願番号】P 2019192896
(22)【出願日】2019-10-23
(65)【公開番号】P2021068180
(43)【公開日】2021-04-30
【審査請求日】2022-07-20
(73)【特許権者】
【識別番号】390008235
【氏名又は名称】ファナック株式会社
(74)【代理人】
【識別番号】100106002
【弁理士】
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100165157
【弁理士】
【氏名又は名称】芝 哲央
(74)【代理人】
【識別番号】100160794
【弁理士】
【氏名又は名称】星野 寛明
(72)【発明者】
【氏名】村松 稔文
【審査官】野口 絢子
(56)【参考文献】
【文献】特開平01-152507(JP,A)
【文献】特開2016-218982(JP,A)
【文献】特開昭61-150010(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B23Q15/00
G05B19/18-19/416
G05B19/42-19/46
(57)【特許請求の範囲】
【請求項1】
第1プログラムに含まれるブロック毎の準備機能コード及び/又は補助機能コードを解析するブロック解析部と、
前記ブロック解析部の解析結果に基づいて、連続する複数のブロックの前記準備機能コード及び/又は補助機能コードに対して処理を行い、前記第1プログラムを最適化するコード処理部と、
前記コード処理部により最適化された前記第1プログラムを第2プログラムとして生成するプログラム生成部と、を備え、
前記コード処理部は、
連続する前記複数のブロックにおいて、前記準備機能コードが現れたブロックにだけ影響するコードではなく、且つ前記準備機能コードが連続する他のブロックの準備機能コードと異なるモーダルグループのコードの場合、前記複数のブロックを統合する第1統合処理部と、
連続する前記複数のブロックにおいて、準備機構コードが現れたブロックにだけ影響するコードではなく、且つ前記準備機能コードが連続する他のブロックの準備機能コードと異なるモーダルグループのコードであるとともに、前記他のブロックに含まれる補助機能コードが単独で前記他のブロックに指令する必要がなく、且つ相反する動作でない場合、前記複数のブロックを統合する第2統合処理部と、を備える最適化処理装置。
【請求項2】
前記コード処理部は、
連続する前記複数のブロックにおいて、準備機能コードが現れたブロックにだけ影響するコードではなく、且つ前記準備機能コードが連続する他のブロックの準備機能コードと同じ場合、最初のブロック以外のブロックの準備機能コードを削除する削除処理部を備える、請求項1に記載の最適化処理装置。
【請求項3】
前記コード処理部は、
連続する前記複数のブロックにおいて、補助機能コードが前のブロックに含まれる準備機能コード又は補助機能コードと相反する動作でない場合、前記複数のブロックの順番を入れ替えるブロック入替処理部と、
連続する前記複数のブロックにおいて、最初のブロックの準備機能コードが固定サイクルの準備機能コードであり、且つ最後のブロックの準備機能コードが前記最初のブロックの準備機能コードに対応する固定サイクルのキャンセルの準備機能コードの場合、前記複数のブロックの間に含まれるディメンジョンワードで指定される複数の座標値に対し、座標値間の移動距離又は移動時間の合計が最小となるように前記複数の座標値を入れ替える座標値入替処理部と、を備える、請求項1又は請求項2に記載の最適化処理装置。
【請求項4】
前記コード処理部は、
連続する前記複数のブロックにおいて、最初のブロックの準備機能コードが固定サイクルの準備機能コードであり、且つ最後のブロックの準備機能コードが前記最初のブロックの準備機能コードに対応する固定サイクルのキャンセルの準備機能コードの場合、前記複数のブロックを固定サイクルの準備機能コードから補間の準備機能コードの組合せで置換する置換処理部を備える、請求項1から請求項のいずれか1項に記載の最適化処理装置。
【請求項5】
前記プログラム生成部は、生成された前記第2プログラムを、前記第1プログラムと置き換えて生成する、請求項1から請求項のいずれか1項に記載の最適化処理装置。
【請求項6】
前記プログラム生成部は、生成された前記第2プログラムを、前記第1プログラムとは異なる新たなプログラムとして生成する、請求項1から請求項のいずれか1項に記載の最適化処理装置。
【請求項7】
処理された前記準備機能コード又は前記補助機能コードを含むブロックの直前又は直後のブロックに、前記コード処理部により行われた処理内容を示す情報を出力する情報出力部を備える、請求項1から請求項のいずれか1項に記載の最適化処理装置。
【請求項8】
マンマシンインタフェースと、
前記マンマシンインタフェースを用いて、前記第1プログラムを実行する産業機械の選択をオペレータより受け付ける入力部と、を備え、
前記コード処理部は、選択された前記産業機械に基づいて、前記第1プログラムに対して行う処理を変更する、請求項1から請求項のいずれか1項に記載の最適化処理装置。
【請求項9】
前記コード処理部により行われた処理内容を示す情報を表示する表示部を備える、請求項1から請求項のいずれか1項に記載の最適化処理装置。
【請求項10】
前記表示部は、前記コード処理部により行われた処理に基づいて、生成された前記第2プログラムの実行時間の予測値を表示する、請求項に記載の最適化処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、最適化処理装置に関する。
【背景技術】
【0002】
加工プログラムは、例えば、CAD/CAM装置や、工作機械のオペレータ等により生成される。加工プログラムに含まれるNC指令コードの準備機能(G機能)や補助機能(M機能)等のNC指令コードの多くはJIS B6314等により規格化されている。
しかしながら、工作機械等の機能を向上させるための様々な追加機能のG機能やM機能等のNC指令コードが、JIS B6314等の規格とは別に工作機械メーカ毎に考案さている。
この点、自己のNC指令コードと、このNC指令コードと同じ機能を指定する他のNC指令コードとの対応関係を記憶した変換テーブルを参照し、入力された加工プログラムの仕様の異なるNC指令コードを自己のNC指令コードに読み換えて加工プログラムを実行する技術が知られている。例えば、特許文献1参照。
【先行技術文献】
【特許文献】
【0003】
【文献】特開平10-320027号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、CAD/CAM装置のポストプロセッサにより各種工作機械向けに加工プログラムが生成される。しかしながら、生成される加工プログラムは、確実に動作することが重視されるため必ずしも必要でないG機能(以下、「Gコード」ともいう)及びM機能(以下、「Mコード」ともいう)のNC指令コードが挿入されたり、重複することがある。また、処理の順序についても処理時間について必ずしも考慮されていない。このため、工作機械の動作が遅くなり、サイクルタイムが伸びるという問題がある。なお、オペレータ、特に加工プログラムに不慣れなオペレータが作成した加工プログラムについても同様の問題がある。
【0005】
そこで、生成された加工プログラムに含まれるNC指令コードを最適化し、工作機械の動作を速くすることが望まれている。
【課題を解決するための手段】
【0006】
本開示の最適化処理装置の一態様は、第1プログラム(以下、「ソースプログラム」ともいう)に含まれるブロック毎の準備機能コード及び/又は補助機能コードを解析するブロック解析部と、前記ブロック解析部の解析結果に基づいて、連続する複数のブロックの前記準備機能コード及び/又は補助機能コードに対して処理を行い、前記第1プログラムを最適化するコード処理部と、前記コード処理部により最適化された前記第1プログラムを第2プログラム(以下、「オブジェクトプログラム」ともいう)として生成するプログラム生成部と、を備える。
【発明の効果】
【0007】
一態様によれば、生成された加工プログラムに含まれるNC指令コードを最適化し、工作機械の動作を速くすることができる。
【図面の簡単な説明】
【0008】
図1】一実施形態に係る制御システムの機能的構成例を示す機能ブロック図である。
図2A】削除処理部の削除処理を説明するソースプログラムの一例を示す図である。
図2B】削除処理後のソースプログラムの一例を示す図である。
図3A】第2統合処理部におけるブロックの統合処理を説明するソースプログラムの一例を示す図である。
図3B】統合処理後のソースプログラムの一例を示す図である。
図4A】第2統合処理部におけるブロックの統合処理を説明するソースプログラムの一例を示す図である。
図4B】統合処理後のソースプログラムの一例を示す図である。
図5A】ブロック入替処理部の入替処理を説明するソースプログラムの一例を示す図である。
図5B】入替処理後のソースプログラムの一例を示す図である。
図6A】座標値入替処理部の入替処理を説明するソースプログラムの一例を示す図である。
図6B図6Aのソースプログラムにおける工作機械の工具の順路の一例を示す図である。
図7A】入替処理後のソースプログラムの一例を示す図である。
図7B図7Aのソースプログラムにおける工作機械の工具の順路の一例を示す図である。
図8A】置換処理部の置換処理を説明するソースプログラムの一例を示す図である。
図8B】置換処理後のソースプログラムの一例を示す図である。
図9】数値制御装置の最適化処理について説明するフローチャートである。
図10図9の最適化処理の続きを示すフローチャートである。
図11図9の最適化処理の続きを示すフローチャートである。
図12図9の最適化処理の続きを示すフローチャートである。
図13図9の最適化処理の続きを示すフローチャートである。
図14】制御システムの構成の一例を示す図である。
図15】マンマシンインタフェースの一例を示す図である。
【発明を実施するための形態】
【0009】
<一実施形態>
まず、本実施形態の概略を説明する。本実施形態では、最適化処理装置は、第1プログラムに含まれる各ブロックに対する準備機能コード及び/又は補助機能コードを解析する。最適化処理装置は、解析結果に基づいて、連続する複数のブロックの準備機能コード及び/又は補助機能コードに対して処理時間を短縮させるための最適化処理を行い第1プログラムを最適化し、最適化された第1プログラムを第2プログラムとして生成する。
【0010】
これにより、本実施形態によれば、「生成された加工プログラムに含まれるNC指令コードを最適化し、工作機械の動作を速くする」という課題を解決することができる。
以上が本実施形態の概略である。
【0011】
次に、本実施形態の構成について図面を用いて詳細に説明する。
図1は、一実施形態に係る制御システムの機能的構成例を示す機能ブロック図である。図1に示すように、制御システム1は、数値制御装置10、及び工作機械20を有する。
【0012】
数値制御装置10、及び工作機械20は、図示しない接続インタフェースを介して互いに直接接続されてもよい。また、数値制御装置10、及び工作機械20は、LAN(Local Area Network)やインターネット等の図示しないネットワークを介して相互に接続されていてもよい。この場合、数値制御装置10、及び工作機械20は、かかる接続によって相互に通信を行うための図示しない通信部を備えている。なお、後述するように、工作機械20は、数値制御装置10を含むようにしてもよい。
【0013】
数値制御装置10は、当業者にとって公知の数値制御装置であり、制御情報に基づいて動作指令を生成し、生成した動作指令を工作機械20に送信する。これにより、数値制御装置10は、工作機械20の動作を制御する。なお、工作機械20がロボット等の場合、数値制御装置10は、ロボット制御装置等でもよい。
また、数値制御装置10の制御対象は工作機械20やロボットに限定されず、産業機械全般に広く適用することができる。産業機械とは、例えば、工作機械、産業用ロボット、サービス用ロボット、鍛圧機械及び射出成形機といった様々な機械を含む。
【0014】
図1に示すように、数値制御装置10は、制御部100、及び記憶部200を有する。そして、制御部100は、数値制御装置10が最適化処理装置として動作するために、最適化部110、及びプログラム実行部120を有する。また、最適化部110は、ブロック解析部111、コード処理部112、情報出力部113、及びNCプログラム生成部114を有する。さらに、コード処理部112は、削除処理部1121、第1統合処理部1122、第2統合処理部1123、ブロック入替処理部1124、座標値入替処理部1125、及び置換処理部1126を有する。
【0015】
<記憶部200>
記憶部200は、RAMやHDD等である。記憶部200は、ソースプログラム210、及びオブジェクトプログラム220を記憶する。
【0016】
ソースプログラム210は、CAD/CAM装置等の外部装置や、工作機械20のオペレータ等により生成され取得された最適化前の加工プログラムである。
【0017】
オブジェクトプログラム220は、後述するコード処理部112により処理されたソースプログラム210が後述するNCプログラム生成部114により生成された最適化後の加工プログラムである。
【0018】
<制御部100>
制御部100は、CPU、ROM、RAM、CMOSメモリ等を有し、これらはバスを介して相互に通信可能に構成される、当業者にとって公知のものである。
CPUは数値制御装置10を全体的に制御するプロセッサである。CPUは、ROMに格納されたシステムプログラム及びアプリケーションプログラムを、バスを介して読み出し、前記システムプログラム及びアプリケーションプログラムに従って数値制御装置10全体を制御する。これにより、図1に示すように、制御部100が、ブロック解析部111、コード処理部112、情報出力部113、及びNCプログラム生成部114の機能を実現するように構成される。RAMには一時的な計算データや表示データ等の各種データが格納される。CMOSメモリは図示しないバッテリでバックアップされ、数値制御装置10の電源がオフされても記憶状態が保持される不揮発性メモリとして構成される。
【0019】
ブロック解析部111は、例えば、CAD/CAM装置等の外部装置及び/又はオペレータにより生成された加工プログラムを、ソースプログラム210として記憶部200から取得する。ブロック解析部111は、取得されたソースプログラム210に含まれる各ブロックに対する準備機能コード(Gコード)及び/又は補助機能コード(Mコード)を解析する。
なお、ソースプログラム210は、例えば、JIS B6315-1、及びJIS B6315-2の規格に基づく。
【0020】
コード処理部112は、ブロック解析部111の解析結果に基づいて、ソースプログラム210の連続する複数のブロックの所定の準備機能コード及び/又は所定の補助機能コードに対して最適化処理を行い、ソースプログラム210を最適化する。
【0021】
削除処理部1121は、連続する複数のブロックにおいて、準備機能コードが現れたブロックにだけ影響するコードではなく、且つ前記準備機能コードが連続する他のブロックの準備機能コードと同じ場合、不必要な準備機能コードが重複していると判定する。削除処理部1121は、最初のブロック以外のブロックの準備機能コードを削除する。
図2A及び図2Bは、削除処理部1121の削除処理を説明するソースプログラム210の一例を示す図である。
図2Aのソースプログラム210は、最初に現在の工具位置からX軸方向に「-10」及びY軸方向に「+10」だけ、工作機械20の工具(図示しない)を「F350」の速度で直線補間により移動させる。次に、ソースプログラム210は、移動した位置からX軸方向に「-10」及びY軸方向に「-10」だけ、工作機械20の工具(図示しない)を「F350」の速度で直線補間により移動させる。最後に、ソースプログラム210は、移動した位置からX軸方向に「+10」及びY軸方向に「+10」だけ、工作機械20の工具(図示しない)を「F350」の速度で直線補間により移動させる。
【0022】
なお、「G91」及び「G01」の準備機能コードは、モーダルグループのコードであることから、一度設定されると設定が変更又はキャンセルされるまで有効である。そこで、削除処理部1121は、図2Bに示すように、図2Aのソースプログラム210の最初のブロック以外の「G91」及び「G01」のコードを削除する。これにより、ソースプログラム210が最適化され、オブジェクトプログラム220の実行時に数値制御装置10の処理を減らすことができ、実行時間を短縮することができる。
【0023】
第1統合処理部1122は、連続する複数のブロックにおいて、準備機能コードが現れたブロックにだけ影響するコードではなく、且つ前記準備機能コードが連続する他のブロックの準備機能コードと異なるモーダルグループのコードの場合、複数のブロックを統合する。
【0024】
第2統合処理部1123は、連続する複数のブロックにおいて、準備機能コードが現れたブロックにだけ影響するコードではなく、且つ準備機能コードが連続する他のブロックの準備機能コードと異なるモーダルグループのコードであるとともに、他のブロックに含まれる補助機能コードが単独で他のブロックに指令する必要がなく、且つ相反する動作でない場合、複数のブロックを統合する。
【0025】
図3A及び図3Bは、第2統合処理部1123におけるブロックの統合処理を説明するソースプログラム210の一例を示す図である。
図3Aのソースプログラム210は、3行目のブロックにおいて工具交換指令「M6」を実行し、4行目のブロックにおいて位置決め指令「G00」を実行する。ここで、位置決め指令「G00」は、4行目のブロックにだけ影響するコードではなく、且つ連続する3行目のブロックの工具長補正キャンセル指令「G49」と異なるモーダルグループのコードである。また、工具交換指令「M6」は、単独で他のブロックに指令する必要がなく、且つ相反する動作でない。そこで、第2統合処理部1123は、図3Bに示すように、3行目のブロックの工具交換指令「M6」と4行目のブロックの位置決め指令「G00」とを統合する。これにより、ソースプログラム210が最適化され、工具交換指令「M6」と位置決め指令「G00」とを同時に行うことができ、サイクルタイムを短縮することができる。
【0026】
図4A及び図4Bは、第2統合処理部1123におけるブロックの統合処理を説明するソースプログラム210の一例を示す図である。
図4Aのソースプログラム210は、2行目のブロックにおいて工具長補正指令「G43」を実行し、3行目のブロックにおいて主軸回転指令「M3」を実行する。ここで、工具長補正指令「G43」は、2行目のブロックにだけ影響するコードではなく、且つ連続する1行目のブロックの工具長補正キャンセル指令「G49」等と異なるモーダルグループのコードである。また、主軸回転指令「M3」は、単独で他のブロックに指令する必要がなく、且つ相反する動作でない。そこで、第2統合処理部1123は、図4Bに示すように、2行目のブロックの工具長補正指令「G43」と3行目のブロックの主軸回転指令「M3」とを統合する。これにより、ソースプログラム210が最適化され、工具長補正指令「G43」と主軸回転指令「M3」とを同時に行うことができ、補助機能コードの処理時間がサイクルタイムに影響し難くなる。
【0027】
ブロック入替処理部1124は、連続する複数のブロックにおいて、補助機能コードが前のブロックに含まれる準備機能コード又は補助機能コードと相反する動作でない場合、複数のブロックの順番を入れ替える。
図5A及び図5Bは、ブロック入替処理部1124の入替処理を説明するソースプログラム210の一例を示す図である。
図5Aのソースプログラム210は、最初に位置決め指令「G00」を実行し、クーラント吐出指令「M08」を実行し、直線補間による移動指令「G01」を実行する。ここで、クーラント吐出指令「M08」は、位置決め指令「G00」や直線補間による移動指令「G01」の準備機能コードと相反する動作でない。そこで、ブロック入替処理部1124は、図5Bに示すように、クーラント吐出指令「M08」を1行目のブロックの位置決め指令「G01」と入れ替える。これにより、ソースプログラム210が最適化され、実行時間を短縮することができる。
また、クーラント吐出指令「M08」が指令されても、クーラントが実際に吐出されるまでにタイムラグがある。このため、クーラント吐出指令「M08」が3行目のブロックの直線補間による移動指令「G01」直前から位置決め指令「G00」の前に移動することで、クーラントが吐出されていることを確認して、工作機械20を加工動作させることができる。
【0028】
座標値入替処理部1125は、連続する複数のブロックにおいて、最初のブロックの準備機能コードが固定サイクルの準備機能コードであり、且つ最後のブロックの準備機能コードが最初のブロックの準備機能コードに対応する固定サイクルのキャンセルの準備機能コードの場合、複数のブロックの間に含まれるディメンジョンワードで指定される複数の座標値に対し、座標値間の移動距離又は移動時間の合計が最小となるように複数の座標値を入れ替える。
図6A及び図6B、並びに図7A及び図7Bは、座標値入替処理部1125の入替処理を説明するソースプログラム210の一例を示す図である。
図6Aのソースプログラム210は、1行目のブロックに固定サイクルの準備機能コードであるドリルサイクル、スポットボーリングサイクル指令「G81」を有し、4行目のブロックに「G81」に対応する固定サイクルキャンセル指令「G80」を有する。そして、ソースプログラム210は、1行目から4行目のブロックの間におけるディメンジョンワードで指定される座標値に基づいて、図6Bに示すように、工作機械20のドリル等の工具(図示しない)を指令位置Aから指令位置Dの順番に移動させる。
【0029】
しかしながら、図6Bに示す順路では、工作機械20の工具(図示しない)の移動距離が無駄に長く、サイクルタイムが伸びてしまう。そこで、座標値入替処理部1125は、例えば、指令位置Aから指令位置Dを巡回セールスマン問題におけるノードと見なすことで移動距離又は移動時間の合計が最小となるように、指令位置Aから指令位置Dに移動する順番を最適化する。
なお、巡回セールスマン問題は、公知の方法であり、詳細な説明は省略する。また、移動距離又は移動時間の合計が最小となるように移動する順番を最適化する方法は、巡回セールスマン問題に限定されず、他の公知の方法を用いてもよい。
【0030】
図7Aは、入替処理後のソースプログラム210の一例を示す図である。図7Bは、図7Aのソースプログラム210における工作機械の工具(図示しない)の順路の一例を示す図である。
図7Aに示すように、ソースプログラム210において2行目及び3行目のブロックの座標値が、図6Aの場合と比較して入れ替えることで、図7Bに示すように、工作機械20のドリル等の工具(図示しない)は、指令位置A、指令位置C、指令位置B、及び指令位置Dの順番に移動する。これにより、工作機械20の工具(図示しない)の累計の移動距離が短くなり、サイクルタイムを短縮することができる。
【0031】
なお、巡回セールスマン問題に基づいて指令位置間の距離をコスト、移動距離を評価関数と見なす場合、図6Bに示す順路の評価関数は「48」となり、図7Bに示す順路の評価関数は「40」となる。すなわち、図7Bに示す順路が最小となる。
【0032】
置換処理部1126は、連続する複数のブロックにおいて、最初のブロックの準備機能コードが固定サイクルの準備機能コードであり、且つ最後のブロックの準備機能コードが最初のブロックの準備機能コードに対応する固定サイクルのキャンセルの準備機能コードの場合、複数のブロックを固定サイクルの準備機能コードから補間の準備機能コードの組合せで置換する。
図8A及び図8Bは、置換処理部1126の置換処理を説明するソースプログラム210の一例を示す図である。
図8Aのソースプログラム210は、1行目のブロックに固定サイクルの準備機能コードであるドリルサイクル、スポットボーリングサイクル指令「G81」を有し、2行目のブロックに「G81」に対応する固定サイクルキャンセル指令「G80」を有する。この場合、置換処理部1126は、図8Bに示すように、ドリルサイクル、スポットボーリングサイクル指令「G81」等の固定サイクルの準備機能コードから、位置決め指令「G00」や直線補間による移動指令「G01」等の各種補間の準備機能コードに置き換える。このように、固定サイクルの準備機能コードから各種補間の準備機能コードに置き換えることで、実行時間を短縮することができる。
【0033】
情報出力部113は、コード処理部112により最適化処理された準備機能コード又は補助機能コードを含むブロックの直前又は直後のブロックに、コード処理部112により行われた処理内容を示す情報を出力する。情報出力部113は、情報が出力されたソースプログラム210をNCプログラム生成部114に出力する。
なお、情報出力部113は、コード処理部112により行われた処理内容を示す情報を数値制御装置10に含まれる液晶ディスプレイ等の表示部(図示しない)に出力してもよい。そして、表示部(図示しない)は、コード処理部112により行われた処理内容を表示してもよい。これにより、数値制御装置10のオペレータは、ソースプログラム210に対してどのような処理が行われているかを確認することができる。
また、情報出力部113は、コード処理部112により行われた処理内容に基づいて、オブジェクトプログラム220の実行時間の予測値を算出し、表示部(図示しない)に出力してもよい。そして、表示部(図示しない)は、情報出力部113により算出された予測値を表示してもよい。これにより、数値制御装置10のオペレータは、ソースプログラム210に対する最適化処理により実行時間がどれだけ短縮されるかを確認することができる。
【0034】
NCプログラム生成部114は、コード処理部112により最適化されたソースプログラム210をオブジェクトプログラム220として生成する。
具体的には、NCプログラム生成部114は、コード処理部112により処理されたソースプログラム210からオブジェクトプログラム220を生成する。そして、NCプログラム生成部114は、生成されたオブジェクトプログラム220を記憶部200に記憶する。
なお、NCプログラム生成部114は、オブジェクトプログラム220をソースプログラム210と別に生成したが、オブジェクトプログラム220をソースプログラム210と置き換えて生成してもよい。
【0035】
プログラム実行部120は、NCプログラム生成部114により生成されたオブジェクトプログラム220を記憶部200から読み込み実行する。プログラム実行部120は、オブジェクトプログラム220に基づいて動作指令を生成し、生成した動作指令を工作機械20に送信することで、工作機械20の動作を制御する。
【0036】
<数値制御装置10の最適化処理>
次に、本実施形態に係る数値制御装置10の最適化処理に係る動作について説明する。
図9から図13は、数値制御装置10の最適化処理について説明するフローチャートである。ここで示すフローは、新たなソースプログラム210が取得される度に繰り返し実行される。
【0037】
図9のステップS11において、ブロック解析部111は、ソースプログラム210のブロックが補助機能コードを含むか否かを判定する。補助機能コードを含む場合、処理はステップS12に進む。一方、補助機能コードを含まない場合、処理はステップS13に進む。
【0038】
ステップS12において、ブロック解析部111は、ソースプログラム210のブロックが準備機能コードを含むか否かを判定する。準備機能コードを含む場合、処理は図12のステップS41に進む。一方、準備機能コードを含まない場合、処理は図11のステップS31に進む。
【0039】
ステップS13において、ブロック解析部111は、ソースプログラム210のブロックが準備機能コードを含むか否かを判定する。準備機能コードを含む場合、処理はステップS14に進む。一方、準備機能コードを含まない場合、処理はステップS15に進む。
【0040】
ステップS14において、削除処理部1121は、ステップS13で判定されたブロックの準備機能コードが当該ブロックだけで有効な準備機能コードか否かを判定する。当該ブロックだけで有効な準備機能コードの場合、処理はステップS15に進む。一方、当該ブロックだけで有効な準備機能コードでない、すなわち他のブロックに対しても有効な準備機能コードの場合、処理は図12のステップS21に進む。
【0041】
ステップS15において、コード処理部112は、処理された指令コードを生成する。そして、数値制御装置10は、最適化処理を終了する。
【0042】
図10のステップS21において、削除処理部1121は、図9のステップS14で判定されたブロックの準備機能コードが当該ブロックより前の前ブロックと同じ準備機能コードか否かを判定する。前ブロックと同じ準備機能コードの場合、処理はステップS22に進む。一方、前ブロックと異なる準備機能コードの場合、処理はステップS23に進む。
【0043】
ステップS22において、削除処理部1121は、図2Bの場合と同様に、最初のブロック以外のブロックの準備機能コードを削除する。
【0044】
ステップS23において、第2統合処理部1123は、ステップS21で判定されたブロックの準備機能コードが前ブロックと同じモーダルグループの準備機能コードを含むか否かを判定する。前ブロックと同じモーダルグループの準備機能コードを含む場合、処理はステップS29に進む。一方、前ブロックと異なるモーダルグループの準備機能コードを含む場合、処理はステップS24に進む。
【0045】
ステップS24において、座標値入替処理部1125は、ステップS23で判定されたブロックが固定サイクルの準備機能コードを含むか否かを判定する。固定サイクルの準備機能コードを含む場合、処理はステップS25に進む。一方、固定サイクルの準備機能コードを含まない場合、処理は図13のステップS51に進む。
【0046】
ステップS25において、座標値入替処理部1125は、ステップS24で判定されたブロック以降に出現するブロックにおける指令位置の座標値(アドレス)を保存しながら、ステップS24で判定されたブロックの準備機能コードに対応する固定サイクルのキャンセルの準備機能コードを含むブロックまで読み込む。
【0047】
ステップS26において、座標値入替処理部1125は、ステップS25で保存された指令位置の座標値に対して、指令位置間の移動距離又は移動時間を評価関数とし、巡回セールスマン問題を解くことで移動する順番を変更する。
【0048】
ステップS27において、置換処理部1126は、固定サイクルの準備機能コードを位置決め指令「G00」、直線補間による移動指令「G01」、時計方向の円弧補間「G02」、及び反時計方向の円弧補間「G03」の各種補間の準備機能コードの組合せで置き換える。
【0049】
ステップS28において、情報出力部113は、コード処理部112により行われた処理内容を示す文字列(情報)を生成し、生成された文字列をステップS26又はステップS27で処理された準備機能コードを含むブロックの直前又は直後のブロックに出力する。
【0050】
ステップS29において、コード処理部112は、処理された指令コードを生成する。そして、数値制御装置10は、最適化処理を終了する。
【0051】
図11のステップS31において、ブロック入替処理部1124は、図1のステップS12で判定されたブロックの補助機能コードが準備機能コードと同時実行不可か否かを判定する。補助機能コードが準備機能コードと同時実行不可の場合、処理はステップS32に進む。一方、補助機能コードが準備機能コードと同時実行可能の場合、処理はステップS35に進む。
【0052】
ステップS32において、ブロック入替処理部1124は、補助機能コードが準備機能コードの動作に影響を与えないか否かを判定する。補助機能コードが準備機能コードの動作に影響を与えない場合、処理はステップS33に進む。一方、補助機能コードが準備機能コードの動作に影響を与える場合、処理はステップS38に進む。
【0053】
ステップS33において、ブロック入替処理部1124は、図5Bの場合と同様に、補助機能コードのブロックを前に移動させる。
【0054】
ステップS34において、情報出力部113は、コード処理部112により行われた処理内容を示す文字列を生成し、生成された文字列をステップS33で処理された補助機能コードを含むブロックの直前又は直後のブロックに出力する。
【0055】
ステップS35において、第2統合処理部1123は、前ブロックに同時実行不可な補助機能コードが含まれないか否かを判定する。前ブロックに同時実行不可な補助機能コードが含まれない場合、処理はステップS36に進む。一方、前ブロックに同時実行不可な補助機能コードが含まれる場合、処理はステップS38に進む。
【0056】
ステップS36において、第2統合処理部1123は、図3B及び図4Bの場合と同様に、補助機能コードを前ブロックと統合する。
【0057】
ステップS37において、情報出力部113は、処理結果の内容を示す文字列を生成し、生成された文字列をステップS36で処理された補助機能コードを含むブロックの直前又は直後のブロックに出力する。
【0058】
ステップS38において、コード処理部112は、処理された指令コードを生成する。そして、数値制御装置10は、最適化処理を終了する。
【0059】
図12のステップS41において、第2統合処理部1123は、図9のステップS12で判定されたブロックが前ブロックと同じモーダルグループの準備機能コードを含むか否かを判定する。前ブロックと同じモーダルグループの準備機能コードを含む場合、処理はステップS45に進む。一方、前ブロックと同じモーダルグループの準備機能コードを含まない場合、処理はステップS42に進む。
【0060】
ステップS42において、第2統合処理部1123は、前ブロックに同時実行不可な補助機能コードが含まれないか否かを判定する。前ブロックに同時実行不可な補助機能コードが含まれない場合、処理はステップS43に進む。一方、前ブロックに同時実行不可な補助機能コードが含まれる場合、処理はステップS45に進む。
【0061】
ステップS43において、第2統合処理部1123は、準備機能コード・補助機能コードを前ブロックと統合する。
【0062】
ステップS44において、情報出力部113は、コード処理部112により行われた処理内容を示す文字列を生成し、生成された文字列をステップS43で処理された準備機能コード及び/又は補助機能コードを含むブロックの直前又は直後のブロックに出力する。
【0063】
ステップS45において、コード処理部112は、処理された指令コードを生成する。そして、数値制御装置10は、最適化処理を終了する。
【0064】
図13のステップS51において、第1統合処理部1122は、前ブロックに同時実行不可な補助機能コードが含まれないか否かを判定する。前ブロックに同時実行不可な補助機能コードが含まれない場合、処理はステップS52に進む。一方、前ブロックに同時実行不可な補助機能コードが含まれる場合、処理はステップS54に進む。
【0065】
ステップS52において、第1統合処理部1122は、準備機能コードを前ブロックと統合する。
【0066】
ステップS53において、情報出力部113は、コード処理部112により行われた処理内容を示す文字列を生成し、生成された文字列をステップS52で処理された準備機能コードを含むブロックの直前又は直後のブロックに出力する。
【0067】
ステップS54において、コード処理部112は、処理された指令コードを生成する。そして、数値制御装置10は、最適化処理を終了する。
【0068】
以上により、一実施形態の数値制御装置10は、ソースプログラム210の各ブロックにおける準備機能コード及び補助機能コードの指令内容及び並び方に応じて、削除処理、統合処理、ブロック入替処理、座標値入替処理、及び置換処理を行う。これにより、数値制御装置10は、生成された加工プログラムに含まれるNC指令コードを最適化し、工作機械20の動作を速くすることができる。そして、サイクルタイムを短縮することができる。
【0069】
以上、一実施形態について説明したが、数値制御装置10は、上述の実施形態に限定されるものではなく、目的を達成できる範囲での変形、改良等を含む。
【0070】
<変形例1>
上述の実施形態では、数値制御装置10は、工作機械20と異なる装置として例示したが、数値制御装置10の一部又は全部の機能を、工作機械20が備えるようにしてもよい。
また、数値制御装置10の最適化部110の一部又は全部の機能が、コンピュータ装置等の情報処理装置により最適化処理装置として実現されてもよい。
あるいは、数値制御装置10のブロック解析部111、削除処理部1121、第1統合処理部1122、第2統合処理部1123、ブロック入替処理部1124、座標値入替処理部1125、置換処理部1126、プログラム実行部120、及び記憶部200の一部又は全部を、例えば、サーバが備えるようにしてもよい。また、クラウド上で仮想サーバ機能等を利用して、数値制御装置10の各機能を実現してもよい。
さらに、数値制御装置10は、数値制御装置10の各機能を適宜複数のサーバに分散される、分散処理システムとしてもよい。
【0071】
<変形例2>
また例えば、上述の実施形態では、情報出力部113は、コード処理部112により処理された準備機能コード又は補助機能コードを含むブロックの直前又は直後のブロックに、コード処理部112により行われた処理内容を示す情報を出力したが、これに限定されない。例えば、情報出力部113は、コード処理部112により行われた処理内容を示す情報を数値制御装置10の表示部(図示しない)に出力してもよい。そして、表示部(図示しない)は、コード処理部112により行われた処理内容を表示する。これにより、数値制御装置10のオペレータは、ソースプログラム210に対してどのような処理が行われているかを確認することができる。
また、情報出力部113は、コード処理部112により行われた処理内容に基づいて、オブジェクトプログラム220の実行時間の予測値を算出し、表示部(図示しない)に出力してもよい。そして、表示部(図示しない)は、情報出力部113により算出された予測値を表示してもよい。これにより、数値制御装置10のオペレータは、ソースプログラム210に対する最適化処理により実行時間がどれだけ短縮されるかを確認することができる。
【0072】
<変形例3>
また例えば、上述の実施形態では、数値制御装置10は、1つの工作機械20に対応したオブジェクトプログラム220を生成したが、これに限定されない。例えば、図14に示すように、数値制御装置10は、ネットワーク50に接続されたm個の工作機械20A(1)-20A(m)の各々に対してオブジェクトプログラム220を生成してもよい(mは2以上の整数)。そして、数値制御装置10は、工作機械20A(1)-20A(m)の各々に含まれる数値制御装置(図示しない)にオブジェクトプログラム220を提供し実行させてもよい。なお、工作機械20A(1)-20A(m)は互いに同じ種類(バージョン)の工作機械でもよく、互いに異なる種類(バージョン)の工作機械でもよい。
ただし、工作機械20A(1)-20A(m)が互いに異なる種類(バージョン)の場合、数値制御装置10は、工作機械20A(1)-20A(m)の種類(バージョン)に応じた複数のオプティマイザを予め記憶部200に記憶してもよい。また、数値制御装置10は、工作機械20A(1)-20A(m)の種類(バージョン)とオプティマイザとを対応付けしたオプティマイザテーブルを記憶部200に予め記憶してもよい。これにより、数値制御装置10は、工作機械20A(1)-20A(m)の種類(バージョン)に応じて最適化されたオブジェクトプログラム220を生成することができる。
なお、工作機械20A(1)-20A(m)の各々は、図1の工作機械20に対応する。以下、工作機械20A(1)-20A(m)を区別する必要がない場合、「工作機械20A」ともいう。
【0073】
また、数値制御装置10は、オプティマイザテーブルに替えて、図15に示すように、数値制御装置10の表示部(図示しない)にマンマシンインタフェース300を表示してもよい。この場合、数値制御装置10は、数値制御装置10に含まれるタッチパネル等の入力部(図示しない)を介して、マンマシンインタフェース300においてソースプログラム210を実行させる工作機械20Aのバージョン(種類)をオペレータに選択させてもよい。
図15は、マンマシンインタフェース300の一例を示す図である。
図15に示すように、マンマシンインタフェース300は、工作機械20Aのバージョンを表示する選択表示領域310、選択されたバージョンに応じた処理内容を表示する表示領域320、及び選択されたバージョンに応じた付加的な処理内容を表示する表示領域330を有する。
こうすることで、数値制御装置10のオペレータは、工作機械20Aのバージョンを選択することで、ソースプログラム210に対する最適化処理においてどのような処理が行われるのかを容易に把握することができる。
【0074】
なお、一実施形態に係る数値制御装置10に含まれる各機能は、ハードウェア、ソフトウェア又はこれらの組み合わせによりそれぞれ実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
【0075】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(Non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(Tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば、光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAMを含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(Transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は、無線通信路を介して、プログラムをコンピュータに供給できる。
【0076】
なお、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0077】
以上を換言すると、本開示の最適化処理装置は、次のような構成を有する各種各様の実施形態を取ることができる。
【0078】
(1)本開示の最適化処理装置(数値制御装置10)は、ソースプログラム210に含まれるブロック毎の準備機能コード及び/又は補助機能コードを解析するブロック解析部111と、ブロック解析部111の解析結果に基づいて、連続する複数のブロックの準備機能コード及び/又は補助機能コードに対して処理を行い、ソースプログラム210を最適化するコード処理部112と、コード処理部112により最適化されたソースプログラム210をオブジェクトプログラム220として生成するプログラム生成部114と、を備える。
この最適化処理装置によれば、生成された加工プログラムに含まれるNC指令コードを最適化し、工作機械の動作を速くすることができる。
【0079】
(2)コード処理部112は、連続する複数のブロックにおいて、準備機能コードが現れたブロックにだけ影響するコードではなく、且つ準備機能コードが連続する他のブロックの準備機能コードと同じ場合、最初のブロック以外のブロックの準備機能コードを削除する削除処理部1121を備えてもよい。
そうすることで、オブジェクトプログラム220の実行時間を短縮することができる。
【0080】
(3)コード処理部112は、連続する複数のブロックにおいて、準備機能コードが現れたブロックにだけ影響するコードではなく、且つ準備機能コードが連続する他のブロックの準備機能コードと異なるモーダルグループのコードの場合、複数のブロックを統合する第1統合処理部1122と、連続する複数のブロックにおいて、準備機構コードが現れたブロックにだけ影響するコードではなく、且つ準備機能コードが連続する他のブロックの準備機能コードと異なるモーダルグループのコードであるとともに、他のブロックに含まれる補助機能コードが単独で他のブロックに指令する必要がなく、且つ相反する動作でない場合、複数のブロックを統合する第2統合処理部1123と、を備えてもよい。
そうすることで、サイクルタイムを短縮することができる。
【0081】
(4)コード処理部112は、連続する複数のブロックにおいて、補助機能コードが前のブロックに含まれる準備機能コード又は補助機能コードと相反する動作でない場合、複数のブロックの順番を入れ替えるブロック入替処理部1124と、連続する複数のブロックにおいて、最初のブロックの準備機能コードが固定サイクルの準備機能コードであり、且つ最後のブロックの準備機能コードが最初のブロックの準備機能コードに対応する固定サイクルのキャンセルの準備機能コードの場合、複数のブロックの間に含まれるディメンジョンワードで指定される複数の座標値に対し、座標値間の移動距離又は移動時間の合計が最小となるように複数の座標値を入れ替える座標値入替処理部1125と、を備えてもよい。
そうすることで、オブジェクトプログラム220の実行時間や、サイクルタイムを短縮することができる。
【0082】
(5)コード処理部112は、連続する複数のブロックにおいて、最初のブロックの準備機能コードが固定サイクルの準備機能コードであり、且つ最後のブロックの準備機能コードが最初のブロックの準備機能コードに対応する固定サイクルのキャンセルの準備機能コードの場合、複数のブロックを固定サイクルの準備機能コードから補間の準備機能コードの組合せで置換する置換処理部1126を備えてもよい。
そうすることで、オブジェクトプログラム220の実行時間を短縮することができる。
【0083】
(6)プログラム生成部は、生成されたオブジェクトプログラム220を、ソースプログラム210と置き換えて生成してもよい。
そうすることで、記憶部200の記憶容量を節約することができる。
【0084】
(7)プログラム生成部は、生成されたオブジェクトプログラム220を、ソースプログラム210とは異なる新たなプログラムとして生成してもよい。
そうすることで、1つのソースプログラム210で工作機械20毎にオブジェクトプログラム220を生成することができる。
【0085】
(8)処理された準備機能コード又は補助機能コードを含むブロックの直前又は直後のブロックに、コード処理部112により行われた処理内容を示す情報を出力する情報出力部113を備えてもよい。
そうすることで、数値制御装置10のオペレータは、ソースプログラム210の各ブロックに対してどのような処理が行われたかを確認することができる。
【0086】
(9)マンマシンインタフェース300と、マンマシンインタフェース300を用いて、ソースプログラム210を実行する工作機械20の選択をオペレータより受け付ける入力部と、を備え、コード処理部112は、選択された工作機械20Aに基づいて、ソースプログラム210に対して行う処理を変更してもよい。
そうすることで、選択された工作機械20Aに最適なオブジェクトプログラム220を生成することができる。
【0087】
(10)コード処理部112により行われた処理内容を示す情報を表示する表示部を備えてもよい。
そうすることで、数値制御装置10のオペレータは、ソースプログラム210に対してどのような処理が行われているかを確認することができる。
【0088】
(11)表示部は、コード処理部112により行われた処理に基づいて、生成されたオブジェクトプログラム220の実行時間の予測値を表示してもよい。
そうすることで、数値制御装置10のオペレータは、ソースプログラム210に対する最適化処理により実行時間がどれだけ短縮されるかを確認することができる。
【符号の説明】
【0089】
1 制御システム
10 数値制御装置
20 工作機械
111 ブロック解析部
112 コード処理部
1121 削除処理部
1122 第1統合処理部
1123 第2統合処理部
1124 ブロック入替処理部
1125 座標値入替処理部
1126 置換処理部
113 情報出力部
114 NCプログラム生成部
210 ソースプログラム
220 オブジェクトプログラム
図1
図2A
図2B
図3A
図3B
図4A
図4B
図5A
図5B
図6A
図6B
図7A
図7B
図8A
図8B
図9
図10
図11
図12
図13
図14
図15