(57)【特許請求の範囲】
【請求項１】
プログラムに基づいて機械を数値制御する数値制御装置において、
複数のＣＰＵコアを有するマルチコアプロセッサを備え、
前記数値制御に係る複数の処理のそれぞれにあらかじめ重要度が割り当てられており、
割り当てられた前記重要度に基づいて、前記処理のそれぞれを複数のＣＰＵコアに対して割り当てることにより前記マルチコアプロセッサの負荷配分を行い、
複数の前記処理の内、少なくともプログラム指令解釈処理と補間処理とを異なる前記ＣＰＵコアに割り当てる、
ことを特徴とする数値制御装置。
【請求項２】
プログラムに基づいて機械を数値制御する数値制御装置において、
複数のＣＰＵコアを有するマルチコアプロセッサを備え、
前記数値制御に係る複数の処理のそれぞれにあらかじめ重要度が割り当てられており、
割り当てられた前記重要度に基づいて、前記処理のそれぞれを複数のＣＰＵコアに対して割り当てることにより前記マルチコアプロセッサの負荷配分を行い、
複数の前記処理の内、プログラム指令解釈処理を分散し、複数の特定の前記ＣＰＵコアに割り当てる、
ことを特徴とする数値制御装置。
【請求項３】
プログラムに基づいて機械を数値制御する数値制御装置において、
複数のＣＰＵコアを有するマルチコアプロセッサを備え、
前記数値制御に係る複数の処理のそれぞれにあらかじめ重要度が割り当てられており、
割り当てられた前記重要度に基づいて、前記処理のそれぞれを複数のＣＰＵコアに対して割り当てることにより前記マルチコアプロセッサの負荷配分を行い、
前記処理の起動時に前記ＣＰＵコア負荷を測定し、負荷の軽いものに重要度の高い前記処理を割り当てる、
ことを特徴とする数値制御装置。
【請求項４】
プログラムに基づいて機械を数値制御する数値制御装置において、
複数のＣＰＵコアを有するマルチコアプロセッサを備え、
前記数値制御に係る複数の処理のそれぞれにあらかじめ重要度が割り当てられており、
割り当てられた前記重要度に基づいて、前記処理のそれぞれを複数のＣＰＵコアに対して割り当てることにより前記マルチコアプロセッサの負荷配分を行い、
負荷割り当て時に試験運転を繰り返すことで前記ＣＰＵコアに対する前記処理の割り当ての最適化を行う、
ことを特徴とする数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値制御装置に関し、特に複数のＣＰＵコアで最適な負荷配分を行う数値制御装置に関する。
【背景技術】
【０００２】
複数のＣＰＵコアを備えた数値制御装置に係る従来技術として、例えば特許文献１，２には、機械の制御を行う際に実行される数値制御に係る処理を、ＰＭＣ処理やロボット制御処理を実行するＣＰＵコアとは異なるＣＰＵコア上で実行する方法が開示されている。特許文献１，２に開示される技術を用いることで、ＰＭＣ処理やロボット制御処理による負荷の上昇が数値制御処理の実行に与える影響を無くすことが可能となる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−２１１７２１号公報
【特許文献２】特開２０１４−０３５５６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
数値制御装置上で実行される数値制御処理は、主として一定時間ごとの移動軸指令を行う補間処理、プログラム指令の解釈を行うプログラム指令解釈処理（前処理）、補助機能処理や周辺機器制御処理などのその他の数値制御処理などが挙げられる。これら処理の中でも、プログラム指令解釈処理や補間処理は数値制御装置の性能に大きな影響を与える重要な処理として位置付けられている。しかしながら、上記特許文献１，２に開示される技術では、数値制御処理を１つのＣＰＵコア上で実行するように構成されているため、例えば金型加工などで用いられる微小線分の加工プログラム指令を処理する場合などに、プログラム指令解釈処理と補間処理の負荷が同じＣＰＵコアに集中するため、数値制御装置の性能を十分に発揮することができないという課題があった。
【０００５】
そこで本発明の目的は、数値制御に係る重要な処理について複数のＣＰＵコアへと負荷分散することで高性能化を図ることが可能な数値制御装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明では、マルチコアＣＰＵを搭載した数値制御装置において、負荷分散をして高性能化を図る。特に重要で、処理負荷の重いプログラム解釈処理（前処理）および補間処理を他の数値制御に係る処理とは異なるＣＰＵコアで実行する。プログラム解釈処理（前処理）および補間処理を割り当てるのに適したＣＰＵコアを選定する。
【００１１】
そして、本願の請求項１に係る発明は、プログラムに基づいて機械を数値制御する数値制御装置において、複数のＣＰＵコアを有するマルチコアプロセッサを備え、前記数値制御に係る複数の処理のそれぞれにあらかじめ重要度が割り当てられており、割り当てられた前記重要度に基づいて、前記処理のそれぞれを複数のＣＰＵコアに対して割り当てることにより前記マルチコアプロセッサの負荷配分を行い、複数の前記処理の内、少なくともプログラム指令解釈処理と補間処理とを異なる前記ＣＰＵコアに割り当てる、ことを特徴とする数値制御装置である。
【００１２】
本願の請求項２に係る発明は、プログラムに基づいて機械を数値制御する数値制御装置において、複数のＣＰＵコアを有するマルチコアプロセッサを備え、前記数値制御に係る複数の処理のそれぞれにあらかじめ重要度が割り当てられており、割り当てられた前記重要度に基づいて、前記処理のそれぞれを複数のＣＰＵコアに対して割り当てることにより前記マルチコアプロセッサの負荷配分を行い、複数の前記処理の内、プログラム指令解釈処理を分散し、複数の特定の前記ＣＰＵコアに割り当てる、ことを特徴とする数値制御装置である。
【００１３】
本願の請求項３に係る発明は、プログラムに基づいて機械を数値制御する数値制御装置において、複数のＣＰＵコアを有するマルチコアプロセッサを備え、前記数値制御に係る複数の処理のそれぞれにあらかじめ重要度が割り当てられており、割り当てられた前記重要度に基づいて、前記処理のそれぞれを複数のＣＰＵコアに対して割り当てることにより前記マルチコアプロセッサの負荷配分を行い、前記処理の起動時に前記ＣＰＵコア負荷を測定し、負荷の軽いものに重要度の高い前記処理を割り当てる、ことを特徴とする数値制御装置である。
【００１４】
本願の請求項４に係る発明は、プログラムに基づいて機械を数値制御する数値制御装置において、複数のＣＰＵコアを有するマルチコアプロセッサを備え、前記数値制御に係る複数の処理のそれぞれにあらかじめ重要度が割り当てられており、割り当てられた前記重要度に基づいて、前記処理のそれぞれを複数のＣＰＵコアに対して割り当てることにより前記マルチコアプロセッサの負荷配分を行い、負荷割り当て時に試験運転を繰り返すことで前記ＣＰＵコアに対する前記処理の割り当ての最適化を行う、ことを特徴とする数値制御装置である。
【発明の効果】
【００１５】
本発明により、重要な処理(前処理)に最大限の資源を割り当てることができ、数値制御装置の性能を発揮することができる。また、重要な処理（前処理、補間処理など）に最大限の資源を割り当てることができ、数値制御装置の性能を発揮することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態による数値制御装置の要部ブロック図である。
【図２】図１のマルチコアプロセッサの各コアへの処理の割り当てについて説明する図である。
【図３】数値制御処理の内で重要な処理を識別するために用いられる重要処理管理テーブルの例（１）を示す図である。
【図４】数値制御処理の内で重要な処理を識別するために用いられる重要処理管理テーブルの例（２）を示す図である。
【図５】図１の数値制御装置上で実行される数値制御処理のコアに対する割り当て処理のフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態を図面と共に説明する。
図１は、本発明の一実施形態におけるマルチコアプロセッサを有する数値制御装置の要部を説明するブロック図である。数値制御装置１には、複数のＣＰＵコアを備えたマルチコアプロセッサ１０と統合化周辺制御ＬＳＩ１６が実装され、更に、モータ制御部プロセッサ１８およびその周辺制御ＬＳＩ１９からなるモータ制御部１７と、モータ駆動用アンプ４の間の通信を行うアンプインタフェース部２０があり、それぞれ、内部バス２２により接続されている。マルチコアプロセッサ１０は、一例として４つのコア１１〜１４を有している。また、各コア１１〜１４間で情報を共有するためのコア間通信で用いられる共有メモリを有している。例えば、共有メモリとしてＤＲＡＭ１５が使用される。
【００１８】
マルチコアプロセッサ１０では、数値制御装置１と接続されたモータ駆動用アンプ４を制御するための加工プログラムを加工プログラム解析処理を実行することで解析し、解析結果に基づいて移動指令作成処理を実行して移動指令を作成し、前記移動指令を統合化周辺制御ＬＳＩ１６及び内部バス２２を経由して、モータ制御部１７の周辺制御ＬＳＩ１９の内部のＲＡＭ（図示せず）へ送信する。
モータ制御部１７のモータ制御部プロセッサ１８では、この内部のＲＡＭに書かれた移動指令を読み取り、モータ駆動用アンプ４へ送信するモータ制御用のデータを作成し、内部バス２２を経由してアンプインタフェース部２０の通信制御ＬＳＩ２１に前記データを書き込む。
【００１９】
アンプインタフェース部２０の通信制御ＬＳＩ２１では、通信制御ＬＳＩ２１の内部のＲＡＭに書き込まれたデータをモータ駆動用アンプ４に送信し、モータ駆動用アンプ４が工作機械に備わったモータ（図示せず）を駆動する。
また、マルチコアプロセッサ１０では、数値制御装置１と接続された機械（図示せず）からの入力データ等に基づいて所定のシーケンス制御用プログラムを実行するＰＭＣ処理も実行される。そして、ＰＭＣ処理結果に基づいて機械の各機械要素を制御するための信号を機械側Ｉ／Ｏユニット２に送信する。
表示器／ＭＤＩユニット３はディスプレイやキーボード等を備えた手動データ入力装置である。統合化周辺制御ＬＳＩ１６は、キーボードからの指令、データを受け付けてマルチコアプロセッサ１０へ渡すと共に、マルチコアプロセッサ１０上で実行される表示処理からの出力される表示指令をディスプレイへと出力する。
【００２０】
図２（ａ）（ｂ）は、本実施形態による数値制御装置１におけるＣＰＵのコアに対する処理の割り当てについて説明する図である。数値制御装置１が動作している状態において、機械を制御するための数値制御処理が起動される前段階では、数値制御装置１の全体を制御する基本的な動作を担うＯＳ処理や、数値制御装置１に接続されている各ハードウェアの制御を行う入出力ドライバ処理が各コア１１〜１４のいずれかに割り当てられて実行されるが（図２（ａ）の例では、ＯＳ処理は第１コア１１に、入出力ドライバ処理は第２コア１４に、それぞれ割り当てられている）、これらＯＳ処理や入出力ドライバ処理の多くは特定のコアで実行後、コアの変更が最小限になるように設計されている。
【００２１】
一方で、数値制御装置１における機械の制御時に実行される処理は、主として一定時間ごとの移動軸指令を行う補間処理、プログラム指令の解釈を行うプログラム指令解釈処理（前処理）、補助機能処理や周辺機器制御処理などのその他の数値制御処理が挙げられる。これら処理の中でも、プログラム指令解釈処理は数値制御装置１の性能に大きな影響を与える重要な処理である。また、補間処理は移動経路上の微小時間ごとの位置計算を行う処理であるためコアに対して大きな負荷をかける処理であり、これも重要な処理と言える。そこで、本発明では、これら２つの処理を異なるコアに割り当てることにより、重要な処理（プログラム指令解釈処理、補間処理）に最大限の計算資源を割り当て、数値制御装置の性能を発揮することができるようにする。
【００２２】
本実施形態による数値制御装置１では、数値制御処理を実行するアプリケーションが起動される際に、ＯＳ処理、入出力用ドライバ処理などがいずれのコア１１〜１４に割り当てられているのかを、ＯＳに標準で備えられている機能を用いて調査する。そして、ＯＳ処理や、入出力ドライバ処理が割り当てられていないコア（負荷の軽いコア）に対して、数値制御における重要な処理（プログラム指令解釈処理、補間処理）を割り当てる。また、重要な処理をコアに割り当てる際には、既に他の重要な処理が割り当てられているコアに対しては、新たに重要な処理を割り当てないようにすることで負荷の分散を計る（図２（ｂ）では、プログラム指令解釈処理は第２コア１２に、補間処理は第３コア１３に割り当てられる）。
重要な処理を割り当てるコアの選択は、上記したように現在の処理の割り当て状態に応じて選択するようにしてもよいし、各コアの負荷状態に応じて選択するようにしてもよい。また、あらかじめＯＳ処理、入出力ドライバ処理などが割り当てられるコアを調べておいて、それ以外の特定のコアに対して重要な処理を固定的に割り当てるようにしてもよい。
なお、重要な処理をコアに割り当てた後で、本運転を開始する前に自動的に試験運転を繰り返しながら各コアの負荷状況を監視して負荷が高くなったコアに割り当てられている処理の割り当てを他のコアへと変更することにより、各数値制御処理の割り当てを最適化するようにしても良い。
【００２３】
それぞれの数値制御処理が重要な処理であるか否かは、例えば各数値制御処理のプログラムに対してあらかじめ重要度を割り当てておいて、該重要度に基づいて各数値制御処理のプログラムが重要な処理であるか否かを判定するようにしてもよい。例えば、図３に示すように重要な数値制御処理の識別名（プログラム名、処理名など）が登録される重要処理管理テーブル２００を数値制御装置１のメモリ上に設け、数値制御処理を起動する際に重要処理管理テーブル２００を参照して該数値制御処理が重要処理管理テーブル２００に登録されている場合には当該数値制御処理が重要度の高い処理であると判定し、他の処理が割り当てられていない負荷の軽いコアに対して割り当てる方法が考えられる。また、図４に示すように、数値制御処理の識別名（プログラム名、処理名など）と重要度とを関連付けて登録している重要処理管理テーブル２００を数値制御装置１のメモリ上に設け、数値制御処理を起動する際に重要処理管理テーブル２００を参照して該数値制御処理の重要度を判別するようにしてもよい。
【００２４】
図５は、本実施形態の数値制御装置１上で数値制御処理のアプリケーションが起動する際に実行される処理を示すフローチャートである。
●［ステップＳＡ０１］数値制御処理のアプリケーションが実行されると、マルチコアプロセッサ１０の各コア１１〜１４で実行されている各処理の実行状況に係る情報をＯＳの標準機能を用いて取得する。取得する情報には、それぞれのコアで実行されている処理の名称、それぞれのコアの負荷状況などが含まれる。
●［ステップＳＡ０２］起動されるアプリケーションにより実行される数値制御処理が重要な処理であるのか否かを判定する。重要な処理である場合にはステップＳＡ０３へと処理を移行し、通常の処理である場合にはステップＳＡ０４へと処理を移行する。
【００２５】
●［ステップＳＡ０３］各ＣＰＵコア１１〜１４の内で、ＯＳ処理、入出力ドライバ処理、および他の数値制御処理の内で重要な数値制御処理、が割り当てられていないコアを、今回起動する数値制御処理の割当先のコアとして決定する。
●［ステップＳＡ０４］各ＣＰＵコア１１〜１４の内で、他の数値制御処理の内で重要な数値制御処理、が割り当てられていないコアを、今回起動する数値制御処理の割当先のコアとして決定する。
●［ステップＳＡ０５］起動されるアプリケーションにより実行される数値制御処理を、ステップＳＡ０３，ＳＡ０４で決定されたコアに割り当てる。
【００２６】
以上、本発明の実施の形態について説明したが、本発明は上述した実施の形態の例の
みに限定されることなく、適宜の変更を加えることにより様々な態様で実施することができる。
【００２７】
例えば、上記した実施形態ではプログラム指令解釈処理を１つの処理として１つのコアへと割り当てる例を示したが、プログラム指令解釈処理の中で並列に動作可能な処理がある場合（例えば、内部処理があらかじめスレッドなどのような並列処理用にプログラムされている場合、または、解釈対処となるプログラム指令に並列して実行能なものが含まれている場合）、並列に動作可能なそれぞれのプログラム指令解釈処理を複数のコアに対して分散して割り当てるようにしてもよい。その場合においても、並列に動作可能なそれぞれの各プログラム指令解釈処理が割り当てるコアとしては、ＯＳ処理や、入出力ドライバ処理などが割り当てられていないコアを選択するようにし、また、補間処理と同じコアには割り当てないようにする。このようにすることで、数値制御装置の性能を更に発揮することができる。
【符号の説明】
【００２８】
１  数値制御装置
２  機械側Ｉ／Ｏユニット
３  表示器／ＭＤＩユニット
４  モータ駆動用アンプ
１０  マルチコアプロセッサ
１１，１２，１３，１４  コア
１５  ＤＲＡＭ
１６  統合化周辺制御ＬＳＩ
１７  モータ制御部
１８  モータ制御部プロセッサ
１９  周辺制御ＬＳＩ
２０  アンプインタフェース部
２１  通信制御ＬＳＩ
２２  内部バス
２００  重要処理管理テーブル
【図１】
0006333796.tif 000002
【図２】
0006333796.tif 000003
【図３】
0006333796.tif 000004
【図４】
0006333796.tif 000005
【図５】
0006333796.tif 000006