(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下、実施の形態を図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
【0012】
実施の形態1.
***構成の説明***
[ハードウェア構成例]
図1は、本実施の形態に係るデータ処理装置10のハードウェア構成例を示す。
【0013】
データ処理装置10は、外部のデータ処理機器である外部データ処理機器(不図示)とデータ処理の実行環境が異なっている。データ処理装置10は、外部データ処理機器で実行されるデータ処理である実行データ処理を実行する。実行環境とは、前述の通り、プロセッサ、その他ハードウェア、OS(Operating System)等のデータ処理を実行するためのハードウェア環境及びソフトウェア環境である。
データ処理装置10の動作手順は、データ処理方法に相当する。また、データ処理装置10の動作を実現するプログラムは、データ処理プログラムに相当する。
データ処理装置10は、例えば汎用PCである。本実施の形態では、汎用PCであるデータ処理装置10が、CNC機器での工作機械の動作の制御をシミュレートするために、CNC機器で実行される制御ソフトウェアを実行する例を説明する。本実施の形態で説明する例では、CNC機器が外部データ処理機器に相当する。また、工作機械の制御のための制御ソフトウェアが実行データ処理に相当する。
【0014】
データ処理装置10は、ハードウェアとして、
図1に示すように、プロセッサ11、メモリ12、表示装置13、入力装置14及びストレージ15を備える。
これらハードウェアのうち少なくともプロセッサ11、メモリ12及びストレージ15は、CNC機器のプロセッサ、メモリ及びストレージとは性能、仕様等が異なる。また、データ処理装置10には、CNC機器に搭載されている、アンプとのインタフェース等のハードウェアも搭載されていない。
また、データ処理装置10はOS30を備えるが、OS30もCNC機器のOSとは性能、仕様等が異なる。例えば、CNC機器のOSはリアルタイムOSであるが、データ処理装置10のOS30はリアルタイムOSではない。
このようなハードウェア及びOSの違いにより、データ処理装置10とCNC機器との間で実行環境の違いが生じる。
また、データ処理装置10は、機能構成として、後述するようにシミュレーション実行部20を備える。
ストレージ15には、シミュレーション実行部20の機能を実現するプログラム、OS30及び制御ソフトウェア40が記憶されている。制御ソフトウェア40は、CNC機器で実行される制御ソフトウェアである。制御ソフトウェア40は、実行ファイル(バイナリデータ)の状態でストレージ15に記憶されている。また、制御ソフトウェア40には、複数のAPI(Application Programming Interface)が含まれ、各APIには1つ以上の内部データ処理が含まれる。つまり、制御ソフトウェア40には、複数の内部データ処理が含まれる。
シミュレーション実行部20の機能を実現するプログラム、OS30及び制御ソフトウェア40は、ストレージ15からメモリ12にロードされる。そして、プロセッサ11がこれらを実行する。
また、ストレージ15には、シミュレーション実行部20がAPIの分類に使用する分類リストが記憶されている。
メモリ12には、シミュレーション実行部20が制御ソフトウェア40を実行して生成された解析データを格納するための領域が確保されている。
表示装置13は、制御ソフトウェア40の実行結果として解析データが描画された描画データを表示する。
入力装置14は、データ処理装置10のユーザから指示を受け付ける。入力装置14は、例えば、データ処理装置10のユーザからシミュレーション開始の指示を受け付ける。
【0015】
[機能構成例]
図2は、本実施の形態に係るデータ処理装置10の機能構成例を示す。
【0016】
シミュレーション描画部21は、制御ソフトウェア40の実行によりシミュレートされる工作機械の挙動を描画し、描画データを表示装置13に出力する。
【0017】
制御部22は、ストレージ15から制御ソフトウェア40を取得し、また、差分吸収部23が制御ソフトウェア40を実行するための制御を行う。
【0018】
差分吸収部23は、制御ソフトウェア40の複数の内部データ処理のうちの少なくともいずれかを実行して、工作機械の動作のシミュレーションを行う。差分吸収部23は、制御ソフトウェア40の実行にあたり、CNC機器の実行環境とデータ処理装置10の実行環境との差分を吸収する。
【0019】
OS30は、データ処理装置10上で動作するOSである。
【0020】
[差分吸収部23の内部構成例]
図3は、差分吸収部23の内部構成例を示す。
【0021】
API分類部231は、OS及びハードウェア処理のAPIの名称を解析する。APIの名称に基づき、APIのカテゴリーを識別し、APIを複数のカテゴリーのいずれかに分類する。
【0022】
例えば、API分類部231は、複数のAPIを、第1のカテゴリー、第2のカテゴリー及び第3のカテゴリーのいずれかに分類する。以下、第1のカテゴリーに分類されるAPIを第1のAPIという。また、第2のカテゴリーに分類されるAPIを第2のAPIという。また、第3のカテゴリーに分類されるAPIを第3のAPIという。
API分類部231は、CNC機器のOSが実行するAPIと同じAPIがOS30で管理されている場合に、当該APIを第1のAPIと判別する。第1のAPIに含まれる内部データ処理は実行を省略することができない。
第2のAPIと第3のAPIは、省略可能内部データ処理が含まれているAPIである。省略可能内部データ処理は、CNC機器とデータ処理装置10との間の実行環境の違いによりCNC機器で制御ソフトウェア40を実行する際には実行が必要であるがデータ処理装置10で制御ソフトウェア40を実行する際には実行の省略が可能な内部データ処理である。
第2のAPIに含まれる省略可能内部データ処理は、CNC機器に固有の内部データ処理であるが、データ処理装置10で実行した場合には常にエラー終了又は常に正常終了することが確定している内部データ処理である。
また、第3のAPIに含まれる省略可能内部データ処理は、CNC機器でもデータ処理装置10でも実行される内部処データ処理であるが、データ処理装置10が制御ソフトウェア40を実行する際には実行の省略が可能な内部データ処理である。
API分類部231は抽出部に相当する。また、API分類部231で行われる処理は抽出処理に相当する。
【0023】
OS代替処理部232は、第1のAPIを実行する。
【0024】
システム固有値処理部233は、第2のAPIを実行する。
システム固有値処理部233は、第2のAPIを実行する際に、第2のAPIに含まれる省略可能内部データ処理の実行を省略する。
【0025】
簡易API処理部234は、第3のAPIを処理する。
簡易API処理部234は、第3のAPIを実行する際に、第3のAPIに含まれる省略可能内部データ処理の実行を省略する。
【0026】
省略可能内部データ処理は、実行を省略してもシミュレーション精度への影響が無いデータ処理である。このため、システム固有値処理部233は、第2のAPIの実行の際に省略可能内部データ処理の実行を省略する。また、簡易API処理部234は、第3のAPIの実行の際に省略可能内部データ処理の実行を省略する。
省略可能内部データ処理は、例えば、工作機械を物理的に動かすためにアンプへ指示を出して、モータを制御する処理である。CNC機器は、制御ソフトウェア40を解釈してアンプに指令を出し、モータを作動させて工作機械を動かす。データ処理装置10におけるシミュレーションでは、アンプに指令が出たこと、モータにより工作機械が動いていることを表現する描画をシミュレーション描画部21が生成できればよい。このように、シミュレーションでは、CNC機器で工作機械を制御する際に発生する物理的な動作は必要無いため、アンプへ指示を出力する等の内部データ処理を省略することが可能である。
【0027】
なお、システム固有値処理部233及び簡易API処理部234を合わせて実行部235という。実行部235により行われる処理は実行処理に相当する。
【0028】
***動作の説明***
[動作の概要]
図4は、本実施の形態に係るシミュレーション実行部20の動作の概要を示すフローチャートである。
ユーザが入力装置14にシミュレーションの開始を指示すると、シミュレーション描画部21が動作を開始する。
【0029】
ユーザからシミュレーションの開始が指示されると、シミュレーション描画部21は、ステップS10において、制御ソフトウェア40の実行が完了しているか否かを判定する。
シミュレーション描画部21は、メモリ12上の制御ソフトウェア40の解析データを全て処理し終えていれば、制御ソフトウェア40の実行が完了していると判定する。
制御ソフトウェア40の実行が完了していれば(ステップS10でYES)は、シミュレーション描画部21は処理を終了する。
一方、制御ソフトウェア40の実行が完了していなければ(ステップS10でNO)は、処理がステップS11に進む。
【0030】
ステップS11では、シミュレーション描画部21が、制御ソフトウェア40の解析データがメモリ12上に存在するかを判定する。
メモリ12上に解析データが存在すれば(ステップS11でYES)、処理がS17に進む。一方、メモリ12上に解析データが存在しなければ(ステップS11でNO)、処理がステップS12に進む。
【0031】
ステップS12では、シミュレーション描画部21が制御部22を起動する。
【0032】
次に、ステップS13では、制御部22が制御ソフトウェア40を解析する。
そして、制御部22は、制御ソフトウェア40の解析の結果、ステップS14で、差分吸収部23を起動する。
【0033】
次に、ステップS15において、差分吸収部23が制御ソフトウェア40を実行する。
そして、差分吸収部23は、ステップS16において、ステップS14の実行結果を示す解析データをメモリ12に格納する。
【0034】
ステップS17では、シミュレーション描画部21が、メモリ12に格納された解析データに対応する描画データを生成し、描画データを表示装置13に出力する。
【0035】
[API分類部231の動作例]
図5は、差分吸収部23のAPI分類部231の動作例を示すフローチャートである。
また、
図6は、制御ソフトウェア40に含まれるAPIの例と、API分類部231の各APIに対する動作例を示す。
【0036】
本実施の形態では、以下のルールでAPIが定義されているものとする。
(1)名称が全て英数小文字で構成されるAPIは第1のAPIである。
(2)名称に英数小文字以外の要素が含まれるAPIは第2のAPI又は第3のAPIである。第2のAPI又は第3のAPIは、名称が複数の単語を含み、先頭の単語は全て英数小文字で構成され、後続の単語の先頭の文字は英大文字である。
(3)第3のAPIは分類リストに先頭の単語が記載されている。
なお、上記の「英数小文字」とは、英小文字のみ又は英小文字と数字のみを意味する。
【0037】
図7は、分類リストの例を示す。
分類リストには、第3のAPIの名称の先頭の単語が列記されている。
【0038】
図5において、ステップS20では、API分類部231は、制御ソフトウェア40に含まれる、呼び出し対象のAPIの名称を解析する。
ここでは、API分類部231は、
図6に示すdatacopy41、semaphoreControl42及びncUnitId43の3つのAPIの名称を解析するものとする。
なお、datacopy41は、メモリ12の特定の領域のデータを当該メモリ12の別の領域にコピーするAPIである。
semaphoreControl42は、セマフォによって複数タスクの同時実行を制御し、実行優先度が高いタスクのみに実行許可を与え、それ以外のタスクは実行を待機させるAPIである。
ncUnitId43は、CNC機器に固有に割り振られた識別番号を読み取り、読み取った識別番号を返すAPIである。
【0039】
ステップS20での解析の結果、解析対象のAPIが第1のAPIである場合(ステップS21でYES)、すなわち、解析対象のAPIの名称が全て英数小文字で構成されていた場合は、処理がステップS22に進む。一方、解析対象のAPIが第1のAPI
でない場合(ステップS21でNO)、すなわち、APIの名称に英数小文字以外の要素が含まれている場合は、処理がステップS23に進む。
【0040】
API分類部231が
図6のdatacopy41を解析した場合は、処理がステップS22に進む。一方、API分類部231が
図6のsemaphoreControl42及びncUnitId43を解析した場合は、処理がS23に進む。
【0041】
ステップS22では、API分類部231は、OS30で管理される、第1のAPIの実行をOS代替処理部232に指示する。
図6の例では、API分類部231は、OS30で管理される、datacopy41と同じAPIであるdatacopy47の実行をOS代替処理部232に指示する。
【0042】
ステップS23では、API分類部231は、解析対象のAPIが第2のAPIに該当するか否かを判定する。
具体的には、API分類部231は、ストレージ15に保存された分類リストを参照して、解析対象のAPIが第2のAPIに該当するか否かを判定する。前述したように、分類リストには、第3のAPIの名称の先頭の単語が列記されている。このため、解析対象のAPIの名称の先頭の単語が分類リストに含まれていなければ、解析対象のAPIは第2のAPIに該当する。
【0043】
解析対象のAPIが第2のAPIである場合(ステップS23でYES)は、処理がステップS24に進む。
一方、解析対象のAPIが第2のAPIでない場合(ステップS23でNO)、すなわち、解析対象のAPIが第3のAPIである場合は、処理がステップS25に進む。
【0044】
図7の分類リストでは「nc」が記載されている。このため、API分類部231は、分類リストに従い、先頭の単語が「nc」であるncUnitId43は第3のAPIであると判定する。一方、「semaphore」は、分類リストに記載されていない。このため、API分類部231は、semaphoreControl42は第2のAPIであると判定する。
このため、API分類部231がsemaphoreControl42を解析した場合は、処理がステップS24に進む。一方、API分類部231がncUnitId43を解析した場合は、処理がステップS25に進む。
【0045】
ステップS24では、API分類部231は、実装済みライブラリで管理される第2のAPIの実行をシステム固有値処理部233に指示する。
図6の例では、差分吸収部23の実装済みライブラリ230で管理される、semaphoreControl42に対応するAPIであるsemaphoreControl45の実行を指示する。
OS30にはsemaphoreControl42に対応するAPIであるsemaphoreControl48が存在するが、API分類部231は、システム固有値処理部233にsemaphoreControl45の実行を指示する。
【0046】
ステップS25では、API分類部231は、実装済みライブラリで管理される第3のAPIの実行を簡易API処理部234に指示する。
図6の例では、差分吸収部23の実装済みライブラリ230で管理される、ncUnitId43に対応するAPIであるncUnitId46の実行を指示する。
【0047】
API分類部231は、以上の処理を制御ソフトウェア40に含まれるすべてのAPIに対して行う。
【0048】
[OS代替処理部232、システム固有値処理部233及び簡易API処理部234の動作例]
図8は、
図5のステップS22でAPI分類部231から第1のAPIの実行を指示された場合のOS代替処理部232の動作例を示すフローチャートである。
【0049】
先ず、ステップS31において、OS代替処理部232は、OS30で管理されている第1のAPIを呼び出す。
図6の例では、OS代替処理部232は、datacopy47を呼び出す。
【0050】
次に、ステップS32において、OS代替処理部232は、呼び出した第1のAPIに含まれる全ての内部データ処理を実行する。
【0051】
最後に、ステップS33において、OS代替処理部232は、ステップS32の実行結果を示す解析データを生成し、生成した解析データをメモリ12に格納する。
【0052】
図9は、
図5のステップS24でAPI分類部231から第2のAPIの実行を指示された場合のシステム固有値処理部233の動作例を示すフローチャートである。
【0053】
先ず、ステップS41において、システム固有値処理部233は、実装済みライブラリ230で管理されている第2のAPIを呼び出す。
図6の例では、システム固有値処理部233は、semaphoreControl45を呼び出す。
【0054】
次に、ステップS42において、システム固有値処理部233は、呼び出した第2のAPIに含まれる複数の内部データ処理のうち省略可能内部データ処理を判別する。
【0055】
次に、ステップS43において、システム固有値処理部233は、ステップS42で判別した省略可能内部データ処理を除く第2のAPIに含まれる内部データ処理を実行する。
【0056】
最後に、ステップS44において、システム固有値処理部233は、ステップS43の実行結果を示す解析データを生成し、生成した解析データをメモリ12に格納する。
【0057】
図10は、
図5のステップS25でAPI分類部231から第3のAPIの実行を指示された場合の簡易API処理部234の動作例を示すフローチャートである。
【0058】
先ず、ステップS51において、簡易API処理部234は、実装済みライブラリ230で管理されている第3のAPIを呼び出す。
図6の例では、簡易API処理部234は、ncUnitId46を呼び出す。
【0059】
次に、ステップS52において、簡易API処理部234は、呼び出した第3のAPIに含まれる複数の内部データ処理のうち省略可能内部データ処理を判別する。
【0060】
次に、ステップS53において、簡易API処理部234は、ステップS52で判別した省略可能内部データ処理を除く第3のAPIに含まれる内部データ処理を実行する。
【0061】
最後に、ステップS54において、簡易API処理部234は、ステップS53の実行結果を示す解析データを生成し、生成した解析データをメモリ12に格納する。
【0062】
図11は、
図9に示したシステム固有値処理部233の動作例と
図10に示した簡易API処理部234の動作例を具体的に説明する図である。
【0063】
システム固有値処理部233は、semaphoreControl45の実行にあたって省略可能な内部データ処理を判別する。
CNC機器では制御ソフトウェア40はリアルタイムOS上で動作している。制御ソフトウェア40の処理のリアルタイム性を保証するために、制御ソフトウェア40内のsemaphoreControl42には、タスク状態確認、タスク起動許可及びタスク起動という3つの内部データ処理が含まれる。semaphoreControl42に対応するsemaphoreControl45でも、
図11に示すように、タスク状態確認451、タスク起動許可452及びタスク起動453という3つの内部データ処理が含まれる。
しかし、データ処理装置10でのシミュレーションではリアルタイム性の保証は必要ない。このため、システム固有値処理部233はリアルタイム性を保証するための内部データ処理であるタスク状態確認451及びタスク起動許可452を省略可能と判定する。
この結果、システム固有値処理部233は、タスク起動453のみを実行する。
【0064】
簡易API処理部234は、ncUnitId46の実行にあたって省略可能な内部データ処理を判別する。
CNC機器で制御ソフトウェア40が実行されるとncUnitId43の動作として、ハードウェアの状態の確認と、ハードウェアの状態を示すハードウェア値の取得と、取得されたハードウェア値の応答が行われる。このように、制御ソフトウェア40内のncUnitId43には、ハードウェア状態確認、ハードウェア値取得及びハードウェア値応答という3つの内部データ処理が含まれる。ncUnitId43に対応するncUnitId46でも、
図11に示すように、ハードウェア状態確認461、ハードウェア値取得462及びハードウェア値応答463という3つの内部データ処理が含まれる。
しかし、データ処理装置10でのシミュレーションでは、ハードウェア状態確認461及びハードウェア値取得462の対象となるハードウェアは存在しない。また、仮に、そのようなハードウェアが存在しても、シミュレーションでは、実際に当該ハードウェアに状態を確認する必要はなく、また、当該ハードウェアからハードウェア値を取得する必要はない。このため、簡易API処理部234はハードウェア状態確認461、ハードウェア値取得462を省略可能と判定する。
この結果、簡易API処理部234は、ハードウェア値応答463のみを実行する。
【0065】
***実施の形態の効果の説明***
以上のように、本実施の形態によれば、実行環境の違いから発生するオーバヘッドを削減することができる。そして、オーバヘッドの削減により、シミュレーションの実行速度を改善することができる。
【0066】
また、本実施の形態では、差分吸収部23が、CNC機器に搭載されたハードウェアとOSの処理を代替している。このため、本実施の形態によれば、CNC機器の制御ソフトウェア40の元となるソースコードを修正することなく、制御ソフトウェア40を汎用PCに移植することが可能である。
また、差分吸収部23は、CNC機器に搭載されたハードウェアとOSの処理を適切に簡略化したライブラリを持ち、従来方式によるCNC機器のエミュレーション方式と同等の処理の忠実さを保ちつつ、従来方式よりも高速に動作することができる。
【0067】
***ハードウェア構成の補足説明***
最後に、データ処理装置10のハードウェア構成の補足説明を行う。
図1に示すプロセッサ11は、プロセッシングを行うIC(Integrated Circuit)である。
プロセッサ11は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等である。
図1に示すメモリ12は、RAM(Random Access Memory)である。
図1に示すストレージ15は、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)等である。
図1に示す表示装置13は、LCD(Liquid Crystal Display)等のディスプレイである。
図1に示す入力装置14は、キーボード、マウス等である。
【0068】
シミュレーション描画部21、制御部22及び差分吸収部23の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、メモリ12、ストレージ15、プロセッサ11内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、シミュレーション描画部21、制御部22及び差分吸収部23の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、シミュレーション描画部21、制御部22及び差分吸収部23の機能を実現するプログラムが格納された可搬記録媒体を流通させてもよい。
【0069】
また、シミュレーション描画部21、制御部22及び差分吸収部23の「部」を、「回路」又は「工程」又は「手順」又は「処理」又は「サーキットリー」に読み替えてもよい。
また、データ処理装置10は、処理回路により実現されてもよい。処理回路は、例えば、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)である。
この場合は、シミュレーション描画部21、制御部22及び差分吸収部23は、それぞれ処理回路の一部として実現される。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
API分類部(231)は、外部のデータ処理機器である外部データ処理機器で実行されるデータ処理である実行データ処理に含まれる内部データ処理のうち、外部データ処理機器とデータ処理装置(10)との間の実行環境の違いにより外部データ処理機器で実行データ処理を実行する際には実行が必要であるがデータ処理装置(10)で実行データ処理を実行する際には実行の省略が可能な内部データ処理を、省略可能内部データ処理として抽出する。実行部(235)は、API分類部(231)により抽出された省略可能内部データ処理の実行を省略して実行データ処理を実行する。