(57)【要約】【課題】最適なリソース管理を行うことが可能な数値制御装置を提供する。【解決手段】数値制御装置１００は、複数の機能モジュールにリソースを割り当てる。数値制御装置１００は、ユーザが選択したオプション又はパラメータに応じ、有効化すべき機能モジュールを設定した機械構成テーブル１３１を生成する機械構成入力手段１３０と、メモリ使用量を管理するメモリ管理テーブル１１１を生成するメモリ管理手段１１０と、ＣＰＵ使用率を管理するパフォーマンス管理テーブル１２１を生成するパフォーマンス管理手段１２０と、機械構成テーブル１３１、メモリ管理テーブル１１１及びパフォーマンス管理テーブル１２１に基づいて機能モジュールの選定数を決定し、モジュール選定テーブル１４１を生成するモジュール選定手段１４０と、機能モジュールの選定数に従って機能モジュールの着脱を行うモジュール着脱手段１５０と、を有する。【選択図】図１
2018185734.tif 000002
【特許請求の範囲】
【請求項１】
複数の機能モジュールにリソースを割り当てる数値制御装置であって、
ユーザが選択したオプション又はパラメータに応じ、有効化すべき前記機能モジュールを設定した機械構成テーブルを生成する機械構成入力手段と、
メモリ使用量を管理するメモリ管理テーブルを生成するメモリ管理手段と、
ＣＰＵ使用率を管理するパフォーマンス管理テーブルを生成するパフォーマンス管理手段と、
前記機械構成テーブル、前記メモリ管理テーブル及び前記パフォーマンス管理テーブルに基づいて前記機能モジュールの選定数を決定し、モジュール選定テーブルを生成するモジュール選定手段と、
前記機能モジュールの前記選定数に従って前記機能モジュールの着脱を行うモジュール着脱手段と、を有する
数値制御装置。
【請求項２】
前記機械構成入力手段は、有効化すべき前記機能モジュールと、前記機能モジュールそれぞれの前記選定数、優先度及び選定数上限値と、を設定した前記機械構成テーブルを生成する
請求項１記載の数値制御装置。
【請求項３】
前記メモリ管理手段は、前記メモリ使用量と、空きメモリ量と、を管理する前記メモリ管理テーブルを生成する
請求項１記載の数値制御装置。
【請求項４】
前記パフォーマンス管理手段は、前記ＣＰＵ使用率と、空きＣＰＵ使用率と、を管理する前記パフォーマンス管理テーブルを生成する
請求項１記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は数値制御装置に関し、特に最適なリソース管理を行うことが可能な数値制御装置に関する。
【背景技術】
【０００２】
近年、旋盤、研削盤、マシニングセンタなどの多種の工作機械が存在し、これらの工作機械は、用途、目的に応じて、それぞれの分野のなかでも多様化しつつある。例えば、多軸制御に特化した機械、先読み数を多くすることで高精度加工に特化した機械などが存在する。このように、市場は特定の機能に特化した工作機械を求めるようになっており、これに応じて機械メーカも、独自性の高い特徴的な設計を行うようになっている。
【０００３】
従来の汎用的な工作機械に、単にこのような特徴的な機能を実現するためのソフトウェアを追加的に搭載すると、従来よりも多くのシステムリソース（典型的にはＣＰＵ使用率やメモリ使用量など）が必要となる。しかしながら、システムリソースの上限を拡大することはコスト増に直結する。
【０００４】
この点、特許文献１には、産業機械のすべてに共通して使用される入力システム部と、産業機械ごとにモジュール化した複数のブロックを有し、対象となる産業機械に応じた所定のブロックを選択してその産業機械の各種アクチュエータを制御する制御システム部と、をパッケージ化したアプリケーションを備えた産業機械用ＮＣ制御装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０９−０３４５２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
このように特許文献１は、特定の機能に特化したモジュールを搭載した数値制御装置を開示している。しかしながら、このようなモジュールの利用にあたってどのようにリソース管理を行うかについては、特許文献１には具体的に説明していない。
【０００７】
実際、従来の数値制御装置のコントロールソフトウェアは、全ての機能を１つのメモリマップ上に割り当てる（図１０参照）。しかしながら、割り当てられた機能モジュールのうち実際に使用されるものは、汎用的な機能を除けば、オプションやパラメータによってユーザに選択された特定機能に関連するものだけである。すなわち、従来の数値制御装置は各機能のリソースを静的に決定するため、使用しない機能であってもＲＡＭ上に常駐することなる。これにより、不要なメモリ領域が消費されたり、ＣＰＵの負荷を増加させたりといった問題が生じる。
【０００８】
一方、工作機械の数値制御装置においても、汎用ＯＳのように、動的にモジュールを着脱したり、１つのアプリケーションを同時に複数実行させたりすることも技術的には実現可能である。しかしながら、このような構成を採用すると、数値制御装置が搭載するリソースが限界近くまで使用されてしまい、レスポンスが低下したり、最悪の場合はアプリケーションの動作が停止したりするという問題が生じる。汎用ＯＳとは異なり、数値制御装置のような組込みソフトウェアにおいては、このような問題の発生は許されない。
【０００９】
このようなジレンマのもと、従来の数値制御装置は次のような課題を有している。静的なリソース割当てを行っているため、不要な機能のリソースを動的に有効活用できず、拡張性に乏しく、独自性の高い機械が設計しにくい。ハードウェアによりこれを解決しようとすると、要求スペックが上昇しコストが増大する。一方、ソフトウェアによりこれを解決する手法として、優先度の低い機能に関するモジュールを削減した専用ソフトウェアを作成することが考えられる。しかしながら、このような手法は機種ごとに異なるソフトウェアを開発する必要があることから、開発管理コストの増大を招く。また、数値制御装置においては使用できる機能が制限されることとなり、利便性が低下する。
【００１０】
本発明はこのような問題点を解決するためになされたものであり、最適なリソース管理を行うことが可能な数値制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一実施の形態にかかる数値制御装置は、複数の機能モジュールにリソースを割り当てる数値制御装置であって、ユーザが選択したオプション又はパラメータに応じ、有効化すべき前記機能モジュールを設定した機械構成テーブルを生成する機械構成入力手段と、メモリ使用量を管理するメモリ管理テーブルを生成するメモリ管理手段と、ＣＰＵ使用率を管理するパフォーマンス管理テーブルを生成するパフォーマンス管理手段と、前記機械構成テーブル、前記メモリ管理テーブル及び前記パフォーマンス管理テーブルに基づいて前記機能モジュールの選定数を決定し、モジュール選定テーブルを生成するモジュール選定手段と、前記モジュール選定テーブルにおいて決定された前記機能モジュールの前記選定数に従って前記機能モジュールの着脱を行うモジュール着脱手段と、を有する。
【００１２】
本発明の一実施の形態にかかる数値制御装置は、前記機械構成入力手段は、有効化すべき前記機能モジュールと、前記機能モジュールそれぞれの前記選定数、優先度及び選定数上限値と、を設定した前記機械構成テーブルを生成する。
【００１３】
本発明の一実施の形態にかかる数値制御装置は、前記メモリ管理手段は、前記メモリ使用量と、空きメモリ量と、を管理する前記メモリ管理テーブルを生成する。
【００１４】
本発明の一実施の形態にかかる数値制御装置は、前記パフォーマンス管理手段は、前記ＣＰＵ使用率と、空きＣＰＵ使用率と、を管理する前記パフォーマンス管理テーブルを生成する。
【発明の効果】
【００１５】
本発明によれば、最適なリソース管理を行うことが可能な数値制御装置を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施の形態にかかる数値制御装置１００の構成を示すブロック図である。
【図２】機械構成テーブル１３１の一例を示す図である。
【図３】メモリ管理テーブル１１１の一例を示す図である。
【図４】パフォーマンス管理テーブル１２１の一例を示す図である。
【図５】モジュール選定手段１４０が行う処理を示すフローチャートである。
【図６】モジュール選定テーブル１４１の一例を示す図である。
【図７】モジュール選定テーブル１４１の一例を示す図である。
【図８】数値制御装置１００の動作結果を示す図である。
【図９】数値制御装置１００の動作結果を示す図である。
【図１０】従来の数値制御装置の動作を示す図である。
【発明を実施するための形態】
【００１７】
以下、図面を用いて本発明の実施の形態を説明する。まず、図１のブロック図を用いて、本発明の実施の形態にかかる数値制御装置１００の構成について説明する。
数値制御装置１００は、メモリ管理手段１１０、パフォーマンス管理手段１２０、機械構成入力手段１３０、モジュール選定手段１４０、モジュール着脱手段１５０を有する。
【００１８】
機械構成入力手段１３０は、ユーザが選択したオプションやパラメータに関する情報を取得する。典型的な数値制御装置１００は、特定の機能を有効化／無効化するオプションの選択や、有効化した機能のパフォーマンスを左右するパラメータの設定などをユーザに行わせるためのインタフェースを有している。すなわち、オプションによりリソース使用量の大枠が決定され、パラメータによりその範囲内で実際にどこまでリソースが使用されるかが決定されることになる。機械構成入力手段１３０は、このようなインタフェースを介して数値制御装置１００に設定されたオプションやパラメータの内容を、図示しない記憶領域から読み込む。具体的なパラメータの例としては、加工プログラムの先読みモジュールが先読み可能なブロック数を設定させるものがある。短い線分が連続するような加工においては、多ブロックの先読みを行うことでパフォーマンスが向上する。
【００１９】
機械構成入力手段１３０は、ユーザが選択したオプションやパラメータに関する情報に基づいて、機械構成テーブル１３１を生成する。図２に示すように、機械構成テーブル１３１は、ユーザが選択（有効化）した機能に応じて、その機能を実現するために必要な機能モジュール、当該機能モジュールの選定数、拡張優先度、選定数上限値を定義したテーブルである。各項目の意味を以下に説明する。
選定数：リソースを割り当てるべき機能モジュール名と、そのインスタンスの数を示す値である。機械構成入力手段１３０は、オプションやパラメータで指定された仕様と、その仕様を満たすために必要な機能モジュール及びその最低限の選定数と、の対応関係をあらかじめ記憶している。機械構成入力手段１３０は、ユーザが選択したオプション及びパラメータに応じて、必要な機能モジュール及びその最低限の選定数を特定し、機械構成テーブル１３１に初期値としてセットする。
選定数上限値：機能モジュールの選定数を幾つまで拡張できるかを示す値である。機械構成入力手段１３０は、機能モジュールごとに、システム上選定可能なモジュール数の上限値をあらかじめ記憶している。システム上の上限値は、主にシステムが保有するリソースの量に基づいてあらかじめ決定される。なお、選定数上限値は、ユーザの設定により下げることも可能として良い。
拡張優先度：機能モジュールごとの、リソース割り当てにおける優先度を示す値である。この項目はユーザが設定可能な項目であり、ユーザは、強化したいと考える機能に対して、より高い優先度を設定することができる。ここで設定した拡張優先度に従って、後述の処理により、最終的な選定数が決定される。
【００２０】
メモリ管理手段１１０は、機械構成テーブル１３１に基づいて、メモリ管理テーブル１１１を生成する。図３に示すメモリ管理テーブル１１１は、機械構成テーブル１３１で定義された機械構成のもとで必要となるメモリ量と、空きメモリ量とを管理するためのテーブルである。メモリ管理手段１１０は、機能モジュールを１つ選定する毎に必要となるメモリ使用量ＦＵＮ＿Ｍｘをあらかじめ記憶している。なお、使用可能な総メモリ量ＭＡＸ＿Ｍはハードウェア構成によって決定される。また、ユーザ設定により、使用可能な総メモリ量ＭＡＸ＿Ｍのうち、リソースの割当に使用せずに残しておくべきメモリ量ＲＳＶ＿Ｍを指定できるよう構成しても良い。このとき、機械構成テーブル１３１にセットされた全ての機能モジュールにメモリを割り当てた場合の空きメモリ量ＲＥＭ＿Ｍは、次式で定義できる。空きメモリ量ＲＥＭ＿Ｍは、後述の拡張処理において使用可能なメモリ量となる。
ＲＥＭ＿Ｍ  ＝  ＭＡＸ＿Ｍ  −  （ＦＵＮ＿Ｍ１＋…）  −  ＲＳＶ＿Ｍ
【００２１】
パフォーマンス管理手段１２０は、機械構成テーブル１３１に基づいて、パフォーマンス管理テーブル１２１を生成する。図４に示すパフォーマンス管理テーブル１２１は、機械構成テーブル１３１で定義された機械構成のもとで必要となるＣＰＵ使用率と、空きＣＰＵ使用率とを管理するためのテーブルである。パフォーマンス管理手段１２０は、機能モジュールを１つ選定する毎に必要となるＣＰＵ使用率ＦＵＮ＿Ｕｘをあらかじめ記憶している。なお、ＣＰＵ使用率の上限ＭＡＸ＿Ｕは１００％とする。また、ユーザ設定により、ＣＰＵ使用率の上限ＭＡＸ＿Ｕのうち、リソースの割当に使用せずに残しておくべきＣＰＵ使用率ＲＳＶ＿Ｕを指定できるよう構成しても良い。また、ＣＰＵのスペックによる処理能力の差を調整するための係数をＫとする。一般に、係数Ｋは、ＣＰＵの処理能力はもとより、機能モジュールとＣＰＵの種類との組み合わせなどにより決定される。このとき、機械構成テーブル１３１にセットされた全ての機能モジュールにＣＰＵ使用率を割り当てた場合の空きＣＰＵ使用率ＲＥＭ＿Ｕは、次式で定義できる。空きＣＰＵ使用率ＲＥＭ＿Ｕは、後述の拡張処理において使用可能なＣＰＵ使用率となる。
ＲＥＭ＿Ｕ  ＝  １００  −Ｋ  ×  （ＦＵＮ＿Ｕ１＋…）  −  ＲＳＶ＿Ｕ
【００２２】
モジュール選定手段１４０は、機械構成テーブル１３１、メモリ管理テーブル１１１、パフォーマンス管理テーブル１２１に基づいて、最終的な機能モジュールの選定数を決定する処理を行う。図５のフローチャートを用いて、モジュール選定手段１４０が行う処理について説明する。
＜ステップ１＞
Ｓ１：モジュール選定手段１４０は、機械構成テーブル１３１、メモリ管理テーブル１１１、パフォーマンス管理テーブル１２１を取得する。
Ｓ２：拡張優先度の初期値を記憶する。
Ｓ３：モジュール選定手段１４０は、拡張優先度＞０、かつメモリ使用量＜空きメモリ量、かつＣＰＵ使用率＜空きＣＰＵ使用率、かつ選定数＜選定数上限値となる機能モジュール番号ｘを取得する。
Ｓ４：ｘが存在する場合、Ｓ５に遷移する。ｘが存在しない場合は処理を終了する。
＜ステップ２＞
Ｓ５：モジュール選定手段１４０は、拡張優先度が最大の機能モジュール番号ｙを特定する。
Ｓ６：モジュール選定手段１４０は、ｙの中で、拡張優先度の初期値が最大である機能モジュール番号ｚを取得する。
＜ステップ３＞
Ｓ７：モジュール選定手段１４０は、ｚに該当する機能モジュールの選定数を＋１し、空きメモリ量及び空きＣＰＵ使用率を再計算する。そして当該機能モジュールの拡張優先度を−１する。
＜ステップ４＞
Ｓ８：モジュール選定手段１４０は、全ての機能モジュールの拡張優先度が０であるか判定する。０である場合はＳ９に遷移する。その他の場合はＳ３に遷移する。
Ｓ９：モジュール選定手段１４０は、全ての機能モジュールの拡張優先度を初期値に書き換える。その後、Ｓ３に遷移する。
【００２３】
モジュール選定手段１４０は、上記ステップ１乃至ステップ４の一連の処理により最終的な機能モジュールの選定数を決定したならば、その結果をモジュール選定テーブル１４１に格納する。図６に、モジュール選定テーブル１４１の一例を示す。
【００２４】
上記ステップ１乃至ステップ４の処理は、次のようにも表現できる。以下の記述におけるＳ１乃至Ｓ９は、上記ステップ１乃至ステップ４のＳ１乃至Ｓ９にそれぞれ対応する。各変数の定義は以下の通りである。
ｋ＝１，２，…，ｎ  ：  機能モジュール番号
Ｍ＿ｋ              ：  機能モジュールｋ
Ｐ＿ｋ              ：  Ｍ＿ｋの拡張優先度
ＵＭ＿ｋ            ：  Ｍ＿ｋのメモリ使用量
ＵＣ＿ｋ            ：  Ｍ＿ｋのＣＰＵ使用率
ＥＭ                ：  空きメモリ量
ＥＣ                ：  空きＣＰＵ使用率
Ｎ＿ｋ              ：  Ｍ＿ｋの選定数
Ｌ＿ｋ              ：  Ｍ＿ｋの選定数上限値
ＰＯＲＧ＿ｋ        ：  Ｐ＿ｋの初期値
Φ                  ：  空集合
＜ステップ１＞
Ｓ１：モジュール選定手段１４０は、機械構成テーブル１３１、メモリ管理テーブル１１１、パフォーマンス管理テーブル１２１を取得する。
Ｓ２：ＰＯＲＧ＿ｋ：＝Ｐ＿ｋとする。
Ｓ３：Ａ＝｛ａ｜ａはＰ＿ｋ＞０、かつＵＭ＿ｋ≦ＥＭ、かつＵＣ＿ｋ≦ＥＣ、かつＮ＿ｋ＜Ｌ＿ｋをみたすｋ｝とする。
Ｓ４：Ａ＝Φの場合、処理を終了する。
＜ステップ２＞
Ｓ５：Ｂ＝｛ｂ｜ｂはｂ∈Ａ、かつＰ＿ｂが最大となるｋ｝とする。
Ｓ６：集合Ｂの要素の中で、ＰＯＲＧ＿ｋが最大となるｋをｍとする。
＜ステップ３＞
Ｓ７：Ｎ＿ｍ：＝Ｎ＿ｍ＋１，ＥＭ：＝ＥＭ−ＵＭ＿ｍ，ＥＣ：＝ＥＣ−ＵＣ＿ｍ，Ｐ＿ｍ：＝Ｐ＿ｍ−１とする。
＜ステップ４＞
Ｓ８：Ｄ＝｛ｄ｜ｄはＰ＿ｋ＞０をみたすｋ｝とする。
Ｄ＝Φの場合、Ｓ９へ遷移する。その他の場合はＳ３に遷移する。
Ｓ９：全てのｋに対してＰ＿ｋ：＝ＰＯＲＧ＿ｋとする。
その後、Ｓ３に遷移する。
【００２５】
すなわちモジュール選定手段１４０は、拡張優先度の高さ（値の大きさ）に応じ、優先度の比率に従って、可能な限り機能モジュールの選定数を増やす。モジュール選定手段１４０は、最高の優先度を持つ機能モジュールをチェックし、拡張可能であれば選定数を１加算し、拡張したモジュールについては優先度を１下げる操作を、繰り返し実行する。拡張優先度が全て０になると、拡張優先度を初期値に戻して、再度一連の処理を繰り返す。モジュール選定手段１４０は、空きメモリ量、空きＣＰＵ使用率に対して拡張できる機能モジュールが１つも無くなった場合に処理を終了する。
【００２６】
＜実施例１＞
実施例１として、モジュール選定手段１４０が上述のステップ１乃至ステップ４を繰り返し実行することにより、ｋ、Ｐ＿ｋ、ＵＭ＿ｋ、ＵＣ＿ｋ、ＥＭ、ＥＣ、Ｎ＿ｋ、ＰＯＲＧ＿ｋがそれぞれどのように変化していくかを具体的に示す。各段階で変化が生じた要素は四角括弧（［］）で囲って示す。なお、以下の記述において、｛｝内の要素は、図３に示すようなメモリ管理テーブル１１１及び図４に示すようなパフォーマンス管理テーブル１２１における各列の要素を示している。例えば、
ｋ          ＝｛１，２，３，４，５，６｝
Ｐ＿ｋ      ＝｛２，０，０，１，０，０｝
との記述は、
機能モジュール番号１の機能モジュールの拡張優先度が２
機能モジュール番号２の機能モジュールの拡張優先度が０
機能モジュール番号３の機能モジュールの拡張優先度が０
機能モジュール番号４の機能モジュールの拡張優先度が１
機能モジュール番号５の機能モジュールの拡張優先度が０
機能モジュール番号６の機能モジュールの拡張優先度が０
であることを示している。
＜初期段階＞
ｋ          ＝｛１，２，３，４，５，６｝
Ｐ＿ｋ      ＝｛２，０，０，１，０，０｝
ＵＭ＿ｋ    ＝｛２０，３０，１０，１０，２０，５０｝
ＵＣ＿ｋ    ＝｛１０，１５，５，１０，５，５｝
ＥＭ        ＝８４
ＥＣ        ＝３５
Ｎ＿ｋ      ＝｛０，０，０，０，０，０｝
Ｌ＿ｋ      ＝｛１０，０，４５，１０，５，０｝
ＰＯＲＧ＿ｋ＝｛２，０，０，１，０，０｝
１回目のステップ１乃至ステップ４の処理では、ｋ＝１の機能モジュールが、ステップ３における処理の対象となる。
＜第１段階処理後＞
ｋ          ＝｛１，２，３，４，５，６｝
Ｐ＿ｋ      ＝｛［１］，０，０，１，０，０｝
ＵＭ＿ｋ    ＝｛２０，３０，１０，１０，２０，５０｝
ＵＣ＿ｋ    ＝｛１０，１５，５，１０，５，５｝
ＥＭ        ＝［６４］
ＥＣ        ＝［２５］
Ｎ＿ｋ      ＝｛［１］，０，０，０，０，０｝
Ｌ＿ｋ      ＝｛１０，０，４５，１０，５，０｝
ＰＯＲＧ＿ｋ＝｛２，０，０，１，０，０｝
１回目のステップ１乃至ステップ４の処理により、各変数の値は上記のように変更される。そして、２回目のステップ１乃至ステップ４の処理では、ｋ＝１の機能モジュールが、ステップ３における処理の対象となる。
＜第２段階処理後＞
ｋ          ＝｛１，２，３，４，５，６｝
Ｐ＿ｋ      ＝｛［０］，０，０，１，０，０｝
ＵＭ＿ｋ    ＝｛２０，３０，１０，１０，２０，５０｝
ＵＣ＿ｋ    ＝｛１０，１５，５，１０，５，５｝
ＥＭ        ＝［４４］
ＥＣ        ＝［１５］
Ｎ＿ｋ      ＝｛［２］，０，０，０，０，０｝
Ｌ＿ｋ      ＝｛１０，０，４５，１０，５，０｝
ＰＯＲＧ＿ｋ＝｛２，０，０，１，０，０｝
２回目のステップ１乃至ステップ４の処理により、各変数の値は上記のように変更される。そして、３回目のステップ１乃至ステップ４の処理では、ｋ＝４の機能モジュールが、ステップ３における処理の対象となる。
＜第３段階のＳ７処理後＞
ｋ          ＝｛１，２，３，４，５，６｝
Ｐ＿ｋ      ＝｛０，０，０，［０］，０，０｝
ＵＭ＿ｋ    ＝｛２０，３０，１０，１０，２０，５０｝
ＵＣ＿ｋ    ＝｛１０，１５，５，１０，５，５｝
ＥＭ        ＝［３４］
ＥＣ        ＝［５］
Ｎ＿ｋ      ＝｛２，０，０，［１］，０，０｝
Ｌ＿ｋ      ＝｛１０，０，４５，１０，５，０｝
ＰＯＲＧ＿ｋ＝｛２，０，０，１，０，０｝
３回目のステップ１乃至ステップ３の処理により、各変数の値は上記のように変更される。
＜第３段階処理後＞
ｋ          ＝｛１，２，３，４，５，６｝
Ｐ＿ｋ      ＝｛０，［２］，０，［１］，０，０｝
ＵＭ＿ｋ    ＝｛２０，３０，１０，１０，２０，５０｝
ＵＣ＿ｋ    ＝｛１０，１５，５，１０，５，５｝
ＥＭ        ＝［３４］
ＥＣ        ＝［５］
Ｎ＿ｋ      ＝｛２，０，０，１，０，０｝
Ｌ＿ｋ      ＝｛１０，０，４５，１０，５，０｝
ＰＯＲＧ＿ｋ＝｛２，０，０，１，０，０｝
３回目のステップ４の処理により、全てのｋに対するＰ＿ｋが０となったため、初期値にリセットされる。
＜第４段階のＳ４処理後＞
ｋ          ＝｛１，２，３，４，５，６｝
Ｐ＿ｋ      ＝｛０，２，０，１，０，０｝
ＵＭ＿ｋ    ＝｛２０，３０，１０，１０，２０，５０｝
ＵＣ＿ｋ    ＝｛１０，１５，５，１０，５，５｝
ＥＭ        ＝３４
ＥＣ        ＝５
Ｎ＿ｋ      ＝｛２，０，０，１，０，０｝
Ｌ＿ｋ      ＝｛１０，０，４５，１０，５，０｝
ＰＯＲＧ＿ｋ＝｛２，０，０，１，０，０｝
４回目のステップ１の処理で、条件を満たすｋが存在しなくなったため、処理が終了する。図６に、本実施例において、モジュール選定手段１４０が最終的な機能モジュールの選定数を決定した結果を格納したモジュール選定テーブル１４１を示す。
【００２７】
モジュール着脱手段１５０は、モジュール選定テーブル１４１に従って、機能モジュールの着脱を行う。すなわち、モジュール選定テーブル１４１に記載された機能モジュールについては、その選定数に相当する数のインスタンスを有効化する。一方、モジュール選定テーブル１４１に記載されていない機能モジュールは無効化する。これにより、ユーザが選択したオプションやパラメータを実現するために必要な機能モジュールに対してのみ、必要なリソースが割り当てられるため、リソースが有効的に活用される。
【００２８】
＜実施例２＞
続いて、実施例２として、モジュール選定手段１４０が上述のステップ１乃至ステップ４を繰り返し実行することにより、選定数がどのように変化していくかを表す簡単な動作例を示す。説明の簡略化のため、管理する機能モジュールを１つとし、リソースの使用量を単に使用量、使用できるリソースの空き容量を単に空き容量と表現する。また、各段階は上述の処理の１サイクル分を表している。各段階で変化が生じた要素は四角括弧（［］）で囲って示す。
＜初期段階＞
空き容量８０
モジュールＡ：拡張優先度２、使用量２５、選定数０
モジュールＢ：拡張優先度１、使用量１５、選定数０
＜第１段階処理後＞
空き容量［５５］
モジュールＡ：拡張優先度［１］、使用量２５、選定数［１］
モジュールＢ：拡張優先度１、使用量１５、選定数０
＜第２段階処理後＞
空き容量［３０］
モジュールＡ：拡張優先度［０］、使用量２５、選定数［２］
モジュールＢ：拡張優先度１、使用量１５、選定数０
＜第３段階のＳ７処理後＞
空き容量［１５］
モジュールＡ：拡張優先度０、使用量２５、選定数２
モジュールＢ：拡張優先度［０］、使用量１５、選定数［１］
＜第３段階処理後＞
空き容量１５
モジュールＡ：拡張優先度［２］、使用量２５、選定数２
モジュールＢ：拡張優先度［１］、使用量１５、選定数１
ここで、拡張アルゴリズムの最後のステップで全ての拡張優先度が０となるため、初期値で置換えられる。
＜第４段階処理後＞
空き容量  ［０］
モジュールＡ：拡張優先度２、使用量２５、選定数２
モジュールＢ：拡張優先度［０］、使用量１０、選定数［２］
ここで、空き容量が０となるため、処理を終了する。
【００２９】
なお、空き容量、拡張優先度、使用量の関係次第では、上述の例のように「拡張優先度の比率」＝「選定数」とはならないことがある。すなわち、本アルゴリズムは、拡張優先度が低くても、空き使用量があれば拡張する。
【００３０】
もし複数の機能モジュールをセットで拡張したい場合には、モジュール選定手段１４０は、モジュール選定テーブル１４１を図７のように生成することができる。すなわち、セットで拡張したい機能モジュールについては、それらの機能モジュール番号、拡張優先度を統合する。すなわち、同じ機能モジュール番号及び拡張優先度を設定する。また、選定数上限値はいずれか低い方の値に統一する。さらに、メモリ使用量及びＣＰＵ使用率は、それらの機能モジュールのメモリ使用量及びＣＰＵ使用率を加算した値に変更する。図７は、前処理モジュールと先読みモジュールとをセットで拡張した場合のモジュール選定テーブル１４１の例である。例えば、複数の機能モジュール間に関係性があり、それらをセットで拡張しないと拡張の効果が得られないような場合に、このような処理を行うことができる。
【００３１】
なお、図７は、１つの前処理モジュールと、１つの先読みモジュールが関係性を有する場合のモジュール選定テーブル１４１の例を示している。一方、複数のモジュールの対応関係が１：１でない場合、例えば１つのモジュールＡに対して２つのモジュールＢを組み合わせる必要がある場合もある。この場合は、メモリ使用量及びＣＰＵ使用率は、モジュールＡとモジュールＢのメモリ使用量及びＣＰＵ使用率を１：２の割合で加算した値に変更する。また、例えばモジュールＢの選定数が１の場合は、モジュール数としては２拡張するといった追加的処理を行うことができる。
【００３２】
図８は、本実施例にかかる数値制御装置１００により、機能モジュールにリソースが割り当てられた状態を示している。このように、本実施例では、ユーザが選択した機能モジュールに対して、拡張優先度に応じたリソースが割り当てられる。一方、ユーザが選択していない機能モジュールに対しては、リソースの割り当てが行われない。
【００３３】
図９は、従来の数値制御装置と、本実施例にかかる数値制御装置１００とのリソース割当結果を比較した図である。図９の左図は、従来の数値制御装置によるリソース割当結果を示している。この方法は、１つのプログラム内に様々な機能モジュールが同梱され、全ての機能モジュールにリソースが割り当てられているので、汎用性に富むというメリットがある。一方、個々の機能モジュールのパフォーマンスの限界は低い。図９の中図及び右図は、本実施例にかかる数値制御装置１００によるリソース割当結果を示している。この方法では、図９の中図に示すように、ユーザが選択しない機能モジュールに対してはリソースを割り当てない。その代わりに、ユーザが選択した機能モジュールに対しては、拡張優先度に応じたリソースを割り当てる。これにより、ユーザに機能選択の自由度を損なうことなく、ユーザの選択した機能のパフォーマンスを最大化することができる。これにより、ユーザの選択した機能においては、処理速度の向上、加工の停止頻度の抑制、加工精度の向上などのメリットが得られる。
【００３４】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。本発明はその発明の範囲内において、実施の形態の任意の構成要素の変形、もしくは実施の形態の任意の構成要素の省略が可能である。
【符号の説明】
【００３５】
１００  数値制御装置
１１０  メモリ管理手段
１１１  メモリ管理テーブル
１２０  パフォーマンス管理手段
１２１  パフォーマンス管理テーブル
１３０  機械構成入力手段
１３１  機械構成テーブル
１４０  モジュール選定手段
１４１  モジュール選定テーブル
１５０  モジュール着脱手段
【図１】
2018185734.tif 000003
【図２】
2018185734.tif 000004
【図３】
2018185734.tif 000005
【図４】
2018185734.tif 000006
【図５】
2018185734.tif 000007
【図６】
2018185734.tif 000008
【図７】
2018185734.tif 000009
【図８】
2018185734.tif 000010
【図９】
2018185734.tif 000011
【図１０】
2018185734.tif 000012