(57)【要約】【課題】加工プログラムに応じて数値制御装置のコントロールソフトウェアを最適化する機能を備えた制御システムを提供すること。【解決手段】本発明の制御システムは、制御プログラム、および該制御プログラムの使用履歴を受け取る制御プログラム受け取り部と、制御プログラム、および該制御プログラムの使用履歴に基づいて当該制御プログラムにより使用される機能の使用頻度を算出する使用頻度算出部と、使用頻度算出部により算出された使用頻度に基づいてコントロールソフトウェアのソースコードを最適化して最適化済ソースコードを生成するソースコード最適化部と、最適化ソースコードに基づいて、最適化されたコントロールソフトウェアを生成するコントロールソフトウェア生成部と、最適化されたコントロールソフトウェアをコントロールソフトウェアの実行環境へと転送するコントロールソフトウェア転送部とを備える。【選択図】図６
2016133911.tif 000002
【特許請求の範囲】
【請求項１】
制御プログラムを解析し、制御対象となる機械に係る制御情報を出力する処理を実行するコントロールソフトウェアの実行環境を備えた制御システムにおいて、
前記制御プログラム、および前記制御プログラムの使用履歴を受け取る制御プログラム受け取り部と、
前記制御プログラム、および前記制御プログラムの使用履歴に基づいて前記制御プログラムにより使用される機能の使用頻度を算出する使用頻度算出部と、
前記使用頻度算出部により算出された前記制御プログラムにより使用される機能の使用頻度に基づいて、前記コントロールソフトウェアのソースコードを最適化して最適化済ソースコードを生成するソースコード最適化部と、
前記最適化済ソースコードに基づいて、最適化されたコントロールソフトウェアを生成するコントロールソフトウェア生成部と、
前記最適化されたコントロールソフトウェアを前記コントロールソフトウェアの実行環境へと転送するコントロールソフトウェア転送部と、
を備えたことを特徴とする制御システム。
【請求項２】
前記コントロールソフトウェアの実行環境は制御装置である、
ことを特徴とする請求項１に記載の制御システム。
【請求項３】
前記コントロールソフトウェアの実行環境は制御装置に対して前記制御情報を出力するサーバである、
ことを特徴とする請求項１に記載の制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値制御装置に関し、特に加工プログラムに応じて数値制御装置のコントロールソフトウェアを最適化する機能を備えた数値制御装置に関する。
【背景技術】
【０００２】
数値制御装置のコントロールソフトウェアは、加工プログラムを解釈し、モータへの移動指令を作成して、工作機械を動作させている。プログラム言語を解釈しながら実行するプログラムを一般にインタプリタという。
【０００３】
インタプリタの高速化を目的として、特定の命令群のキャッシュ効率が最もよくなるようにモジュールを配置したインタプリタセットをあらかじめ複数用意し、プログラム中で使用されている命令を調べ、用意したインタプリタセットの中でもっとも高速に動作するものを選択し実行する方法が提案されている（例えば、特許文献１）。
【０００４】
また、動作するソフトウェアそのものの高速化や必要メモリ量の削減などを目的として、ユーザプロファイルデータをサーバへ送り、サーバで送られたユーザプロファイルデータをもとに不要モジュールの削減や変数の定数化などを行ったソフトウェアを作成し、小型情報機器にダウンロードさせ実行する方法が提案されている（例えば、特許文献２）。
【０００５】
また、コンパイルサーバを使用してアプリケーションソフトを配布する方法として、クライアントから送られてきたクライアント情報をもとにクライアントに合わせたソフトウェアを作成し配布する方法が提案されている（例えば、特許文献３）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−２２９８０３号公報
【特許文献２】特開２００３−２１６４３４号公報
【特許文献３】特開２０００−１２２８７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
数値制御装置には、さまざまな工作機械に適用するため多くの準備機能(Ｇコード)や補助機能(Ｍコード)などがあり、さらに工作機械に求められる機能の増加に伴って新しい機能が次々に追加されていっている。これら機能追加による条件分岐命令の増加によって、パイプラインストールやキャッシュミスなどの処理速度の低下を引き起こす問題が多く発生するようになっている。
【０００８】
特許文献１では、典型的なプログラム（ベンチマーク、ネットワークアプリ、グラフィックアプリなど）から考えられるプログラムのバリエーションを網羅するように選択して使用される命令の統計をとり、使用するプロセッサの仕様も考慮に入れた上で、命令を複数のタイプの命令群に分類し、そのタイプごとにもっともキャッシュ効率がよくなるようなインタプリタセットをあらかじめ作成している。この方法では、プログラムでどのような機能が実際に使用されているのかを把握できない段階でソフトウェアを作成する必要があるため、条件分岐命令によって発生するパイプラインストールなどの問題に対応することができない。また、複数のソフトウェアを用意しておく必要があるため、多くの資源が必要になり、使用可能な資源の限られている数値制御装置には不向きといった問題がある。
【０００９】
特許文献２で提案されている方法では、特定地域の天気などのユーザの所望する情報や、テキスト主体がよいかグラフィックス主体がよいかなどのユーザの嗜好といったユーザプロファイルデータをもとに、不要モジュールの削除や変数の定数化などが行われている。変数の定数化などによって条件分岐命令そのものがなくなるためパイプラインストールなどの問題は発生しなくなるが、処理そのものを削除するためいくつかの機能が使用できなくなり、使用したい機能が変わったときにネットワークに接続されていなければ、その場ですぐに使用することができないといった問題がある。つまり、数値制御装置に同様の方法を適用した場合おいては、パラメータや加工プログラムを変更した際に運転ができなくなるという問題が生じることなどが考えられる。
【００１０】
また、従来、コンパイルサーバを使用してクライアントに最適なソフトウェアを配布する方法として特許文献３で提案されている方法があるが、数値制御装置のコントロールソフトウェアの最適化方法は開示されておらず、コンパイルサーバを使用して最適化された数値制御装置のコントロールソフトウェアを配布するシステムは実現できなかった。
【００１１】
そこで本発明の目的は、加工プログラムに応じて数値制御装置のコントロールソフトウェアを最適化する機能を備えた制御システムを提供することである。
【課題を解決するための手段】
【００１２】
本願の請求項１に係る発明は、制御プログラムを解析し、制御対象となる機械に係る制御情報を出力する処理を実行するコントロールソフトウェアの実行環境を備えた制御システムにおいて、前記制御プログラム、および前記制御プログラムの使用履歴を受け取る制御プログラム受け取り部と、前記制御プログラム、および前記制御プログラムの使用履歴に基づいて前記制御プログラムにより使用される機能の使用頻度を算出する使用頻度算出部と、前記使用頻度算出部により算出された前記制御プログラムにより使用される機能の使用頻度に基づいて、前記コントロールソフトウェアのソースコードを最適化して最適化済ソースコードを生成するソースコード最適化部と、前記最適化済ソースコードに基づいて、最適化されたコントロールソフトウェアを生成するコントロールソフトウェア生成部と、前記最適化されたコントロールソフトウェアを前記コントロールソフトウェアの実行環境へと転送するコントロールソフトウェア転送部と、を備えたことを特徴とする制御システムである。
【００１３】
本願の請求項２に係る発明は、前記コントロールソフトウェアの実行環境は制御装置である、ことを特徴とする請求項１に記載の制御システムである。
【００１４】
本願の請求項３に係る発明は、前記コントロールソフトウェアの実行環境は制御装置に対して前記制御情報を出力するサーバである、ことを特徴とする請求項１に記載の制御システムである。
【発明の効果】
【００１５】
本発明により、分岐予測ミスによるパイプラインストールやキャッシュミスが減少するため、より高速に加工プログラムを実行することが可能になる。
【図面の簡単な説明】
【００１６】
【図１】本発明における最適化アプリケーションを、ネットワーク上のサーバに設けた場合の制御システムの概略図である。
【図２】本発明における最適化アプリケーションを、数値制御装置と接続されているコンピュータ上に設けた場合の制御システムの概略図である。
【図３】本発明における最適化アプリケーションを、数値制御装置のマルチコア上で動作させる場合の制御システムの概略図である。
【図４】本発明における最適化の例（１）を説明する図である。
【図５】本発明における最適化の例（２）を説明する図である。
【図６】本発明の一実施の形態における制御システムのブロック図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態を図面と共に説明する。はじめに、本発明の技術的概要について説明する。
本発明では、コンパイラ、および、リンカを有する最適化アプリケーションを用意し、その最適化アプリケーションへ工作機械で使用される加工プログラム、加工プログラムの使用履歴を転送し、実際に使用される機能を調査した上でコントロールソフトウェアの最適化を行うことで、条件分岐命令の最適化を可能にする。
【００１８】
これにより複数のコントロールソフトウェアを事前に用意することなしに、加工プログラムに応じた最適なコントロールソフトウェアを使用することができる。最適化アプリケーションは、図１に示すように、ネットワーク上のサーバにあってもよいし、図２に示すように、数値制御装置と接続されているコンピュータ、または、一体となっているコンピュータにあってもよい。また、将来的にマルチコア構成での数値制御装置が多くのリソースを有するようになった場合は、図３に示すように、コントロールソフトウェアを動作させるオペレーティングシステムが使用しているコアとは別のコアで動作しているオペレーティングシステム上で最適化アプリケーションを動作させてもよい。
【００１９】
ネットワーク上のサーバを用いてコントロールソフトウェアの最適化を行う場合でも、コントロールソフトウェア内に条件分岐命令は残っているため、動作は遅くなる可能性はあるがネットワークが切断されてしまうような環境においてもパラメータや加工プログラムを変更しての運転を行うことが可能になる。
例えば、新しい加工プログラムに応じたコントロールソフトウェアを作成したい時に、工作機械の設置されている場所のネットワーク環境が悪くサーバに接続できない場合であっても、新しい加工プログラム専用に作られたコントロールソフトウェアではないため動作は遅くなるかもしれないが、そのときすでに工作機械の制御装置にインストールされている他の加工プログラムのために最適化されたコントロールソフトウェアでも、従来技術の特許文献２のように処理そのものが削除されているわけではないので、これを用いて運転を行うことが可能である。
【００２０】
なお、数値制御装置が常時安定的にネットワークに接続されている場合は、加工プログラムごとに作成したコントロールソフトウェアをネットワーク上のサーバで動作させ、数値制御装置では制御情報を受け取るようにすることで、資源の限られている工作機械でも加工プログラムに応じた最適なコントロールソフトウェアを使用することが可能になる。このように使用する場合でも、もとのコントロールソフトウェアは数値制御装置内に置かれたままであるため、万が一ネットワークが切断された場合であっても、数値制御装置におかれたもとのコントロールソフトウェアを利用した運転が可能である。
【００２１】
以下では、本発明における最適なコントロールソフトウェアを生成するための手順を説明する。本発明の制御システムでは、工作機械、または、ＣＡＤ／ＣＡＭを搭載したコンピュータから、最適化アプリケーションに対して加工プログラム、および、存在する場合には加工プログラムの使用履歴を転送する。
【００２２】
最適化アプリケーションは、送られてきた加工プログラムを解析し、準備機能や補助機能などの各機能の使用頻度や各機能間の関係（使用順序など）を算出する。加工プログラムが複数送られてきていて、加工プログラムの使用履歴も送られてきた場合は、加工プログラムの使用回数による重み付けを行い、より正確な使用頻度を算出すると共に、各機能の実際の呼出しのタイミングを分析してより正確な各機能間の関係を算出する。そして、算出した結果をもとにソースコードを最適化し、コンパイル・リンクを行い数値制御装置のコントロールソフトウェアを作成する。このコントロールソフトウェアは、実際に数値制御装置にインストールして使用しても、ネットワーク上のサーバで動作させ、数値制御装置は制御情報を受け取るようにしてもよい。
【００２３】
以下に、本発明におけるコントロールソフトウェアの最適化処理を例示する。なお、本発明における最適化処理は以下の例に留まるものではなく、加工プログラムや加工プログラムの使用履歴を解析結果に基づいて適用可能なソースコードの最適化手法を適宜適用することが可能である。
【００２４】
＜最適化例１＞
準備機能や補助機能などの各機能に関連するチェック処理において、準備機能や補助機能などの各機能の使用頻度や使用するプロセッサの動的分岐予測の精度によって、条件分岐命令に分岐予測のヒントを与えたほうが高速に動作するようになる場合はヒントを与えるようにする。例えば、図４に示すように、１００％使用されない機能が有効か無効かをチェックしている処理では、無効になるようにヒントを与えることで分岐予測ミスを減らせるため、パイプラインストールの発生や本来実行する必要のなかった命令をキャッシュに読み込んでしまうことによるキャッシュミスを減少させることが可能になる。ヒントの与え方の例としては、例えばC言語の場合には、＿＿ｂｕｉｌｔｉｎ＿ｅｘｐｅｃｔ（）などのコンパイラの組み込み関数を用いて与えることができる。
【００２５】
＜最適化例２＞
図５に示すように、準備機能や補助機能などの各機能に応じて分岐するｉｆ−ｅｌｓｅｉｆ−ｅｌｓｅ文において、よく使用される機能がはじめにチェックされるように順序を並べ替える。より多く使用される機能を先にチェックすることによって、実行時に通過する条件分岐命令の数そのものが減少するため、条件分岐命令に起因する速度低下を減らすことが可能になる。
【００２６】
＜最適化例３＞
準備機能や補助機能などの各機能に関連するモジュールを機能の使用頻度に応じて、メモリ上でのモジュールの配置を変更したり、よく同時に使われている機能に関連するモジュールがメモリ上で近くに配置したりする、などの工夫をすることによって、キャッシュミスやＴＬＢミスを減らすことが可能になる。
【００２７】
図６は、本発明の一実施の形態における制御システムの機能ブロック図である。図６では、最適化アプリケーションをネットワーク上のサーバ１００上に設けた例を示している。
本実施の形態における制御システムは、最適化アプリケーションが設けられたサーバ１００、数値制御装置２００、ＣＡＤ／ＣＡＭを搭載したコンピュータ３００、コントロールソフトウェアの実行環境であるサーバ４００がネットワークを介して接続されて構成されている。
【００２８】
サーバ１００は、加工プログラム受け取り部１１０、使用頻度算出部１２０、ソースコード最適化部１３０、コンパイラ１４０、リンカ１５０、コントロールソフトウェア転送部１６０を備えている。
加工プログラム受け取り部１１０は、数値制御装置２００、またはコンピュータ３００から加工プログラム、および、存在する場合には該加工プログラムの使用履歴に係る情報を受け取る。
【００２９】
使用頻度算出部１２０は、加工プログラム受け取り部１１０が受け取った加工プログラム、および、加工プログラムの使用履歴に係る情報を解析し、準備機能や補助機能などの各機能の使用頻度や各機能間の関係（使用順序など）を算出する。
ソースコード最適化部１３０は、メモリ（図示せず）に記憶されているコントロールソフトウェアのソースコード１７０を読み出して、使用頻度算出部１２０が算出した準備機能や補助機能などの各機能の使用頻度や各機能間の関係に基づいて、該ソースコードに対して上述した最適化処理を施し、最適化済ソースコード１７２を生成する。
【００３０】
コンパイラ１４０は、ソースコード最適化部１３０が生成した最適化済ソースコード１７２をコンパイルし、オブジェクトファイル１７４を生成し、生成されたオブジェクトファイル１７４をリンカ１５０がリンクして最適化されたコントロールソフトウェア１７６を生成する。
そして、コントロールソフトウェア転送部１６０が、生成された最適化されたコントロールソフトウェア１７６を、コントロールソフトウェアの実行環境に転送する。転送先となるコントロールソフトウェアの実行環境は、コントロールソフトウェア１７６の使用方法に応じて、直接数値制御装置２００で実行する場合には工作機械の数値制御装置２００となり、ネットワーク上でコントロールソフトウェア１７６を実行する方法の場合にはサーバ４００となる。
【００３１】
以上、本発明の実施の形態について説明したが、本発明は上述した実施の形態の例に限定されることなく、適宜の変更を加えることにより、その他の態様で実施することができる。
例えば、上述した例では加工プログラムと、該加工プログラムの使用履歴を分析して最適化する場合を説明しているが、これに加えてコントロールソフトウェアの動作環境に関する情報（ＣＰＵの種類やアーキテクチャ、メモリ構造など）を取得し、ソースコードの最適化に用いるようにしてもよい。
【符号の説明】
【００３２】
１００    サーバ
１１０    加工プログラム受け取り部
１２０    使用頻度算出部
１３０    ソースコード最適化部
１４０    コンパイラ
１５０    リンカ
１６０    コントロールソフトウェア転送部
１７０    ソースコード
１７２    最適化済ソースコード
１７４    オブジェクトファイル
１７６    コントロールソフトウェア
２００    数値制御装置
３００    コンピュータ
４００    サーバ
【図１】
2016133911.tif 000003
【図２】
2016133911.tif 000004
【図３】
2016133911.tif 000005
【図４】
2016133911.tif 000006
【図５】
2016133911.tif 000007
【図６】
2016133911.tif 000008