(58)【調査した分野】(Int.Cl.,DB名)
前記機械構成入力手段は、有効化すべき前記機能モジュールと、前記機能モジュールそれぞれの前記選定数、優先度及び選定数上限値と、を設定した前記機械構成テーブルを生成する
請求項1記載の数値制御装置。
【発明の概要】
【発明が解決しようとする課題】
【0006】
このように特許文献1は、特定の機能に特化したモジュールを搭載した数値制御装置を開示している。しかしながら、このようなモジュールの利用にあたってどのようにリソース管理を行うかについては、特許文献1には具体的に説明していない。
【0007】
実際、従来の数値制御装置のコントロールソフトウェアは、全ての機能を1つのメモリマップ上に割り当てる(
図10参照)。しかしながら、割り当てられた機能モジュールのうち実際に使用されるものは、汎用的な機能を除けば、オプションやパラメータによってユーザに選択された特定機能に関連するものだけである。すなわち、従来の数値制御装置は各機能のリソースを静的に決定するため、使用しない機能であってもRAM上に常駐することなる。これにより、不要なメモリ領域が消費されたり、CPUの負荷を増加させたりといった問題が生じる。
【0008】
一方、工作機械の数値制御装置においても、汎用OSのように、動的にモジュールを着脱したり、1つのアプリケーションを同時に複数実行させたりすることも技術的には実現可能である。しかしながら、このような構成を採用すると、数値制御装置が搭載するリソースが限界近くまで使用されてしまい、レスポンスが低下したり、最悪の場合はアプリケーションの動作が停止したりするという問題が生じる。汎用OSとは異なり、数値制御装置のような組込みソフトウェアにおいては、このような問題の発生は許されない。
【0009】
このようなジレンマのもと、従来の数値制御装置は次のような課題を有している。静的なリソース割当てを行っているため、不要な機能のリソースを動的に有効活用できず、拡張性に乏しく、独自性の高い機械が設計しにくい。ハードウェアによりこれを解決しようとすると、要求スペックが上昇しコストが増大する。一方、ソフトウェアによりこれを解決する手法として、優先度の低い機能に関するモジュールを削減した専用ソフトウェアを作成することが考えられる。しかしながら、このような手法は機種ごとに異なるソフトウェアを開発する必要があることから、開発管理コストの増大を招く。また、数値制御装置においては使用できる機能が制限されることとなり、利便性が低下する。
【0010】
本発明はこのような問題点を解決するためになされたものであり、最適なリソース管理を行うことが可能な数値制御装置を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明の一実施の形態にかかる数値制御装置は、複数の機能モジュールにリソースを割り当てる数値制御装置であって、ユーザが選択したオプション又はパラメータに応じ、有効化すべき前記機能モジュールを設定した機械構成テーブルを生成する機械構成入力手段と、メモリ使用量を管理するメモリ管理テーブルを生成するメモリ管理手段と、CPU使用率を管理するパフォーマンス管理テーブルを生成するパフォーマンス管理手段と、前記機械構成テーブル、前記メモリ管理テーブル及び前記パフォーマンス管理テーブルに基づいて前記機能モジュールの選定数を決定し、モジュール選定テーブルを生成するモジュール選定手段と、前記モジュール選定テーブルにおいて決定された前記機能モジュールの前記選定数に従って前記機能モジュールの着脱を行うモジュール着脱手段と、を有する。
【0012】
本発明の一実施の形態にかかる数値制御装置は、前記機械構成入力手段は、有効化すべき前記機能モジュールと、前記機能モジュールそれぞれの前記選定数、優先度及び選定数上限値と、を設定した前記機械構成テーブルを生成する。
【0013】
本発明の一実施の形態にかかる数値制御装置は、前記メモリ管理手段は、前記メモリ使用量と、空きメモリ量と、を管理する前記メモリ管理テーブルを生成する。
【0014】
本発明の一実施の形態にかかる数値制御装置は、前記パフォーマンス管理手段は、前記CPU使用率と、空きCPU使用率と、を管理する前記パフォーマンス管理テーブルを生成する。
【発明の効果】
【0015】
本発明によれば、最適なリソース管理を行うことが可能な数値制御装置を提供することができる。
【発明を実施するための形態】
【0017】
以下、図面を用いて本発明の実施の形態を説明する。まず、
図1のブロック図を用いて、本発明の実施の形態にかかる数値制御装置100の構成について説明する。
数値制御装置100は、メモリ管理手段110、パフォーマンス管理手段120、機械構成入力手段130、モジュール選定手段140、モジュール着脱手段150を有する。
【0018】
機械構成入力手段130は、ユーザが選択したオプションやパラメータに関する情報を取得する。典型的な数値制御装置100は、特定の機能を有効化/無効化するオプションの選択や、有効化した機能のパフォーマンスを左右するパラメータの設定などをユーザに行わせるためのインタフェースを有している。すなわち、オプションによりリソース使用量の大枠が決定され、パラメータによりその範囲内で実際にどこまでリソースが使用されるかが決定されることになる。機械構成入力手段130は、このようなインタフェースを介して数値制御装置100に設定されたオプションやパラメータの内容を、図示しない記憶領域から読み込む。具体的なパラメータの例としては、加工プログラムの先読みモジュールが先読み可能なブロック数を設定させるものがある。短い線分が連続するような加工においては、多ブロックの先読みを行うことでパフォーマンスが向上する。
【0019】
機械構成入力手段130は、ユーザが選択したオプションやパラメータに関する情報に基づいて、機械構成テーブル131を生成する。
図2に示すように、機械構成テーブル131は、ユーザが選択(有効化)した機能に応じて、その機能を実現するために必要な機能モジュール、当該機能モジュールの選定数、拡張優先度、選定数上限値を定義したテーブルである。各項目の意味を以下に説明する。
選定数:リソースを割り当てるべき機能モジュール名と、そのインスタンスの数を示す値である。機械構成入力手段130は、オプションやパラメータで指定された仕様と、その仕様を満たすために必要な機能モジュール及びその最低限の選定数と、の対応関係をあらかじめ記憶している。機械構成入力手段130は、ユーザが選択したオプション及びパラメータに応じて、必要な機能モジュール及びその最低限の選定数を特定し、機械構成テーブル131に初期値としてセットする。
選定数上限値:機能モジュールの選定数を幾つまで拡張できるかを示す値である。機械構成入力手段130は、機能モジュールごとに、システム上選定可能なモジュール数の上限値をあらかじめ記憶している。システム上の上限値は、主にシステムが保有するリソースの量に基づいてあらかじめ決定される。なお、選定数上限値は、ユーザの設定により下げることも可能として良い。
拡張優先度:機能モジュールごとの、リソース割り当てにおける優先度を示す値である。この項目はユーザが設定可能な項目であり、ユーザは、強化したいと考える機能に対して、より高い優先度を設定することができる。ここで設定した拡張優先度に従って、後述の処理により、最終的な選定数が決定される。
【0020】
メモリ管理手段110は、機械構成テーブル131に基づいて、メモリ管理テーブル111を生成する。
図3に示すメモリ管理テーブル111は、機械構成テーブル131で定義された機械構成のもとで必要となるメモリ量と、空きメモリ量とを管理するためのテーブルである。メモリ管理手段110は、機能モジュールを1つ選定する毎に必要となるメモリ使用量FUN_Mxをあらかじめ記憶している。なお、使用可能な総メモリ量MAX_Mはハードウェア構成によって決定される。また、ユーザ設定により、使用可能な総メモリ量MAX_Mのうち、リソースの割当に使用せずに残しておくべきメモリ量RSV_Mを指定できるよう構成しても良い。このとき、機械構成テーブル131にセットされた全ての機能モジュールにメモリを割り当てた場合の空きメモリ量REM_Mは、次式で定義できる。空きメモリ量REM_Mは、後述の拡張処理において使用可能なメモリ量となる。
REM_M = MAX_M − (FUN_M1+…) − RSV_M
【0021】
パフォーマンス管理手段120は、機械構成テーブル131に基づいて、パフォーマンス管理テーブル121を生成する。
図4に示すパフォーマンス管理テーブル121は、機械構成テーブル131で定義された機械構成のもとで必要となるCPU使用率と、空きCPU使用率とを管理するためのテーブルである。パフォーマンス管理手段120は、機能モジュールを1つ選定する毎に必要となるCPU使用率FUN_Uxをあらかじめ記憶している。なお、CPU使用率の上限MAX_Uは100%とする。また、ユーザ設定により、CPU使用率の上限MAX_Uのうち、リソースの割当に使用せずに残しておくべきCPU使用率RSV_Uを指定できるよう構成しても良い。また、CPUのスペックによる処理能力の差を調整するための係数をKとする。一般に、係数Kは、CPUの処理能力はもとより、機能モジュールとCPUの種類との組み合わせなどにより決定される。このとき、機械構成テーブル131にセットされた全ての機能モジュールにCPU使用率を割り当てた場合の空きCPU使用率REM_Uは、次式で定義できる。空きCPU使用率REM_Uは、後述の拡張処理において使用可能なCPU使用率となる。
REM_U = 100 −K × (FUN_U1+…) − RSV_U
【0022】
モジュール選定手段140は、機械構成テーブル131、メモリ管理テーブル111、パフォーマンス管理テーブル121に基づいて、最終的な機能モジュールの選定数を決定する処理を行う。
図5のフローチャートを用いて、モジュール選定手段140が行う処理について説明する。
<ステップ1>
S1:モジュール選定手段140は、機械構成テーブル131、メモリ管理テーブル111、パフォーマンス管理テーブル121を取得する。
S2:拡張優先度の初期値を記憶する。
S3:モジュール選定手段140は、拡張優先度>0、かつメモリ使用量<空きメモリ量、かつCPU使用率<空きCPU使用率、かつ選定数<選定数上限値となる機能モジュール番号xを取得する。
S4:xが存在する場合、S5に遷移する。xが存在しない場合は処理を終了する。
<ステップ2>
S5:モジュール選定手段140は、拡張優先度が最大の機能モジュール番号yを特定する。
S6:モジュール選定手段140は、yの中で、拡張優先度の初期値が最大である機能モジュール番号zを取得する。
<ステップ3>
S7:モジュール選定手段140は、zに該当する機能モジュールの選定数を+1し、空きメモリ量及び空きCPU使用率を再計算する。そして当該機能モジュールの拡張優先度を−1する。
<ステップ4>
S8:モジュール選定手段140は、全ての機能モジュールの拡張優先度が0であるか判定する。0である場合はS9に遷移する。その他の場合はS3に遷移する。
S9:モジュール選定手段140は、全ての機能モジュールの拡張優先度を初期値に書き換える。その後、S3に遷移する。
【0023】
モジュール選定手段140は、上記ステップ1乃至ステップ4の一連の処理により最終的な機能モジュールの選定数を決定したならば、その結果をモジュール選定テーブル141に格納する。
図6に、モジュール選定テーブル141の一例を示す。
【0024】
上記ステップ1乃至ステップ4の処理は、次のようにも表現できる。以下の記述におけるS1乃至S9は、上記ステップ1乃至ステップ4のS1乃至S9にそれぞれ対応する。各変数の定義は以下の通りである。
k=1,2,…,n : 機能モジュール番号
M_k : 機能モジュールk
P_k : M_kの拡張優先度
UM_k : M_kのメモリ使用量
UC_k : M_kのCPU使用率
EM : 空きメモリ量
EC : 空きCPU使用率
N_k : M_kの選定数
L_k : M_kの選定数上限値
PORG_k : P_kの初期値
Φ : 空集合
<ステップ1>
S1:モジュール選定手段140は、機械構成テーブル131、メモリ管理テーブル111、パフォーマンス管理テーブル121を取得する。
S2:PORG_k:=P_kとする。
S3:A={a|aはP_k>0、かつUM_k≦EM、かつUC_k≦EC、かつN_k<L_kをみたすk}とする。
S4:A=Φの場合、処理を終了する。
<ステップ2>
S5:B={b|bはb∈A、かつP_bが最大となるk}とする。
S6:集合Bの要素の中で、PORG_kが最大となるkをmとする。
<ステップ3>
S7:N_m:=N_m+1,EM:=EM−UM_m,EC:=EC−UC_m,P_m:=P_m−1とする。
<ステップ4>
S8:D={d|dはP_k>0をみたすk}とする。
D=Φの場合、S9へ遷移する。その他の場合はS3に遷移する。
S9:全てのkに対してP_k:=PORG_kとする。
その後、S3に遷移する。
【0025】
すなわちモジュール選定手段140は、拡張優先度の高さ(値の大きさ)に応じ、優先度の比率に従って、可能な限り機能モジュールの選定数を増やす。モジュール選定手段140は、最高の優先度を持つ機能モジュールをチェックし、拡張可能であれば選定数を1加算し、拡張したモジュールについては優先度を1下げる操作を、繰り返し実行する。拡張優先度が全て0になると、拡張優先度を初期値に戻して、再度一連の処理を繰り返す。モジュール選定手段140は、空きメモリ量、空きCPU使用率に対して拡張できる機能モジュールが1つも無くなった場合に処理を終了する。
【0026】
<実施例1>
実施例1として、モジュール選定手段140が上述のステップ1乃至ステップ4を繰り返し実行することにより、k、P_k、UM_k、UC_k、EM、EC、N_k、PORG_kがそれぞれどのように変化していくかを具体的に示す。各段階で変化が生じた要素は四角括弧([])で囲って示す。なお、以下の記述において、{}内の要素は、
図3に示すようなメモリ管理テーブル111及び
図4に示すようなパフォーマンス管理テーブル121における各列の要素を示している。例えば、
k ={1,2,3,4,5,6}
P_k ={2,0,0,1,0,0}
との記述は、
機能モジュール番号1の機能モジュールの拡張優先度が2
機能モジュール番号2の機能モジュールの拡張優先度が0
機能モジュール番号3の機能モジュールの拡張優先度が0
機能モジュール番号4の機能モジュールの拡張優先度が1
機能モジュール番号5の機能モジュールの拡張優先度が0
機能モジュール番号6の機能モジュールの拡張優先度が0
であることを示している。
<初期段階>
k ={1,2,3,4,5,6}
P_k ={2,0,0,1,0,0}
UM_k ={20,30,10,10,20,50}
UC_k ={10,15,5,10,5,5}
EM =84
EC =35
N_k ={0,0,0,0,0,0}
L_k ={10,0,45,10,5,0}
PORG_k={2,0,0,1,0,0}
1回目のステップ1乃至ステップ4の処理では、k=1の機能モジュールが、ステップ3における処理の対象となる。
<第1段階処理後>
k ={1,2,3,4,5,6}
P_k ={[1],0,0,1,0,0}
UM_k ={20,30,10,10,20,50}
UC_k ={10,15,5,10,5,5}
EM =[64]
EC =[25]
N_k ={[1],0,0,0,0,0}
L_k ={10,0,45,10,5,0}
PORG_k={2,0,0,1,0,0}
1回目のステップ1乃至ステップ4の処理により、各変数の値は上記のように変更される。そして、2回目のステップ1乃至ステップ4の処理では、k=1の機能モジュールが、ステップ3における処理の対象となる。
<第2段階処理後>
k ={1,2,3,4,5,6}
P_k ={[0],0,0,1,0,0}
UM_k ={20,30,10,10,20,50}
UC_k ={10,15,5,10,5,5}
EM =[44]
EC =[15]
N_k ={[2],0,0,0,0,0}
L_k ={10,0,45,10,5,0}
PORG_k={2,0,0,1,0,0}
2回目のステップ1乃至ステップ4の処理により、各変数の値は上記のように変更される。そして、3回目のステップ1乃至ステップ4の処理では、k=4の機能モジュールが、ステップ3における処理の対象となる。
<第3段階のS7処理後>
k ={1,2,3,4,5,6}
P_k ={0,0,0,[0],0,0}
UM_k ={20,30,10,10,20,50}
UC_k ={10,15,5,10,5,5}
EM =[34]
EC =[5]
N_k ={2,0,0,[1],0,0}
L_k ={10,0,45,10,5,0}
PORG_k={2,0,0,1,0,0}
3回目のステップ1乃至ステップ3の処理により、各変数の値は上記のように変更される。
<第3段階処理後>
k ={1,2,3,4,5,6}
P_k ={0,[2],0,[1],0,0}
UM_k ={20,30,10,10,20,50}
UC_k ={10,15,5,10,5,5}
EM =[34]
EC =[5]
N_k ={2,0,0,1,0,0}
L_k ={10,0,45,10,5,0}
PORG_k={2,0,0,1,0,0}
3回目のステップ4の処理により、全てのkに対するP_kが0となったため、初期値にリセットされる。
<第4段階のS4処理後>
k ={1,2,3,4,5,6}
P_k ={0,2,0,1,0,0}
UM_k ={20,30,10,10,20,50}
UC_k ={10,15,5,10,5,5}
EM =34
EC =5
N_k ={2,0,0,1,0,0}
L_k ={10,0,45,10,5,0}
PORG_k={2,0,0,1,0,0}
4回目のステップ1の処理で、条件を満たすkが存在しなくなったため、処理が終了する。
図6に、本実施例において、モジュール選定手段140が最終的な機能モジュールの選定数を決定した結果を格納したモジュール選定テーブル141を示す。
【0027】
モジュール着脱手段150は、モジュール選定テーブル141に従って、機能モジュールの着脱を行う。すなわち、モジュール選定テーブル141に記載された機能モジュールについては、その選定数に相当する数のインスタンスを有効化する。一方、モジュール選定テーブル141に記載されていない機能モジュールは無効化する。これにより、ユーザが選択したオプションやパラメータを実現するために必要な機能モジュールに対してのみ、必要なリソースが割り当てられるため、リソースが有効的に活用される。
【0028】
<実施例2>
続いて、実施例2として、モジュール選定手段140が上述のステップ1乃至ステップ4を繰り返し実行することにより、選定数がどのように変化していくかを表す簡単な動作例を示す。説明の簡略化のため、管理する機能モジュールを1つとし、リソースの使用量を単に使用量、使用できるリソースの空き容量を単に空き容量と表現する。また、各段階は上述の処理の1サイクル分を表している。各段階で変化が生じた要素は四角括弧([])で囲って示す。
<初期段階>
空き容量80
モジュールA:拡張優先度2、使用量25、選定数0
モジュールB:拡張優先度1、使用量15、選定数0
<第1段階処理後>
空き容量[55]
モジュールA:拡張優先度[1]、使用量25、選定数[1]
モジュールB:拡張優先度1、使用量15、選定数0
<第2段階処理後>
空き容量[30]
モジュールA:拡張優先度[0]、使用量25、選定数[2]
モジュールB:拡張優先度1、使用量15、選定数0
<第3段階のS7処理後>
空き容量[15]
モジュールA:拡張優先度0、使用量25、選定数2
モジュールB:拡張優先度[0]、使用量15、選定数[1]
<第3段階処理後>
空き容量15
モジュールA:拡張優先度[2]、使用量25、選定数2
モジュールB:拡張優先度[1]、使用量15、選定数1
ここで、拡張アルゴリズムの最後のステップで全ての拡張優先度が0となるため、初期値で置換えられる。
<第4段階処理後>
空き容量 [0]
モジュールA:拡張優先度2、使用量25、選定数2
モジュールB:拡張優先度[0]、使用量10、選定数[2]
ここで、空き容量が0となるため、処理を終了する。
【0029】
なお、空き容量、拡張優先度、使用量の関係次第では、上述の例のように「拡張優先度の比率」=「選定数」とはならないことがある。すなわち、本アルゴリズムは、拡張優先度が低くても、空き使用量があれば拡張する。
【0030】
もし複数の機能モジュールをセットで拡張したい場合には、モジュール選定手段140は、モジュール選定テーブル141を
図7のように生成することができる。すなわち、セットで拡張したい機能モジュールについては、それらの機能モジュール番号、拡張優先度を統合する。すなわち、同じ機能モジュール番号及び拡張優先度を設定する。また、選定数上限値はいずれか低い方の値に統一する。さらに、メモリ使用量及びCPU使用率は、それらの機能モジュールのメモリ使用量及びCPU使用率を加算した値に変更する。
図7は、前処理モジュールと先読みモジュールとをセットで拡張した場合のモジュール選定テーブル141の例である。例えば、複数の機能モジュール間に関係性があり、それらをセットで拡張しないと拡張の効果が得られないような場合に、このような処理を行うことができる。
【0031】
なお、
図7は、1つの前処理モジュールと、1つの先読みモジュールが関係性を有する場合のモジュール選定テーブル141の例を示している。一方、複数のモジュールの対応関係が1:1でない場合、例えば1つのモジュールAに対して2つのモジュールBを組み合わせる必要がある場合もある。この場合は、メモリ使用量及びCPU使用率は、モジュールAとモジュールBのメモリ使用量及びCPU使用率を1:2の割合で加算した値に変更する。また、例えばモジュールBの選定数が1の場合は、モジュール数としては2拡張するといった追加的処理を行うことができる。
【0032】
図8は、本実施例にかかる数値制御装置100により、機能モジュールにリソースが割り当てられた状態を示している。このように、本実施例では、ユーザが選択した機能モジュールに対して、拡張優先度に応じたリソースが割り当てられる。一方、ユーザが選択していない機能モジュールに対しては、リソースの割り当てが行われない。
【0033】
図9は、従来の数値制御装置と、本実施例にかかる数値制御装置100とのリソース割当結果を比較した図である。
図9の左図は、従来の数値制御装置によるリソース割当結果を示している。この方法は、1つのプログラム内に様々な機能モジュールが同梱され、全ての機能モジュールにリソースが割り当てられているので、汎用性に富むというメリットがある。一方、個々の機能モジュールのパフォーマンスの限界は低い。
図9の中図及び右図は、本実施例にかかる数値制御装置100によるリソース割当結果を示している。この方法では、
図9の中図に示すように、ユーザが選択しない機能モジュールに対してはリソースを割り当てない。その代わりに、ユーザが選択した機能モジュールに対しては、拡張優先度に応じたリソースを割り当てる。これにより、ユーザに機能選択の自由度を損なうことなく、ユーザの選択した機能のパフォーマンスを最大化することができる。これにより、ユーザの選択した機能においては、処理速度の向上、加工の停止頻度の抑制、加工精度の向上などのメリットが得られる。
【0034】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。本発明はその発明の範囲内において、実施の形態の任意の構成要素の変形、もしくは実施の形態の任意の構成要素の省略が可能である。
【解決手段】数値制御装置100は、複数の機能モジュールにリソースを割り当てる。数値制御装置100は、ユーザが選択したオプション又はパラメータに応じ、有効化すべき機能モジュールを設定した機械構成テーブル131を生成する機械構成入力手段130と、メモリ使用量を管理するメモリ管理テーブル111を生成するメモリ管理手段110と、CPU使用率を管理するパフォーマンス管理テーブル121を生成するパフォーマンス管理手段120と、機械構成テーブル131、メモリ管理テーブル111及びパフォーマンス管理テーブル121に基づいて機能モジュールの選定数を決定し、モジュール選定テーブル141を生成するモジュール選定手段140と、機能モジュールの選定数に従って機能モジュールの着脱を行うモジュール着脱手段150と、を有する。