以下に、本発明の実施の形態にかかる数値制御装置を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、実施の形態1にかかる数値制御装置1の構成を示す図である。数値制御装置1は、工作機械を制御する装置であって、マルチコアプロセッサ2を有する。マルチコアプロセッサ2は、第1コアプロセッサ21と、第2コアプロセッサ22と、第3コアプロセッサ23と、第4コアプロセッサ24とを含む。第1コアプロセッサ21、第2コアプロセッサ22、第3コアプロセッサ23及び第4コアプロセッサ24は、複数のコアプロセッサの一例である。
数値制御装置1は、記憶部3を更に有する。記憶部3の例は、半導体メモリである。例えば、記憶部3の一部は不揮発性メモリである。記憶部3は、マルチコアプロセッサ2に含まれるコアプロセッサの個数を示す情報を含むリソース情報を記憶する。記憶部3は、工作機械を構成するハードウェアに関する機械構成情報を更に記憶する。記憶部3は、マルチコアプロセッサ2によって実行される処理がソフトウェアが用いられて実行される場合の当該ソフトウェアの構成を示すソフトウェア構成情報を更に記憶する。ソフトウェア構成情報は、数値制御装置1の内部で実行される複数の処理ブロックと、当該複数の処理ブロックの各々の実行周期及び実行時間とを示す情報である。処理ブロックは、処理関数である。
記憶部3は、複数の処理パターンを示す処理パターン情報を更に記憶する。複数の処理パターンの各々は、上記の処理を構成する複数のサブ処理のうちの実行される順序の変更が許可されない複数のサブ処理を実行の順序が変更されることなく実行させる処理パターンである。
数値制御装置1は、リソース情報、機械構成情報及びソフトウェア構成情報をもとに、処理パターン情報が示す複数の処理パターンのなかから、マルチコアプロセッサ2が上記の処理を実行する際の処理時間が、複数のコアプロセッサのうちのひとつのコアプロセッサが上記の処理を実行する際の処理時間より短くなる処理パターンを選択するパターン決定部4を更に有する。パターン決定部4は、選択された処理パターンを複数のコアプロセッサが上記の処理を実行する際の処理パターンと決定する。実施の形態1では、リソース情報、機械構成情報、ソフトウェア構成情報及び処理パターン情報は、記憶部3に記憶されている情報である。
例えば、パターン決定部4は、リソース情報、機械構成情報及びソフトウェア構成情報をもとに、複数の処理パターンのなかから、マルチコアプロセッサ2が上記の処理を実行する際の処理時間が最短となる処理パターンを選択し、選択された処理パターンを複数のコアプロセッサが上記の処理を実行する際の処理パターンと決定する。
例えば、パターン決定部4は、複数のサブ処理の各々の処理時間を事前に計測し、計測された処理時間を利用して、複数の処理パターンのなかから、マルチコアプロセッサ2が上記の処理を実行する際の処理時間が最短となる処理パターンを選択し、選択された処理パターンを複数のコアプロセッサが上記の処理を実行する際の処理パターンと決定する。
数値制御装置1は、パターン決定部4によって決定された処理パターンにしたがって、上記の処理を構成する複数のサブ処理を分散させて複数のコアプロセッサに割り当てる割り当て部5を更に有する。第1コアプロセッサ21、第2コアプロセッサ22、第3コアプロセッサ23及び第4コアプロセッサ24の各々は、割り当て部5によって割り当てられたサブ処理を実行する。
数値制御装置1は、モータ制御アンプ11に接続されている。モータ制御アンプ11は、複数のモータ12に接続されており、複数のモータ12の各々を制御する。複数のモータ12の各々は、工作機械の一部である。図1では、説明を簡単に行うために、ひとつのモータ12のみが示されている。複数のモータ12の各々は、制御対象物の軸を回転させる。つまり、モータ制御アンプ11は、複数の制御対象物の各々の軸の回転を制御する。
数値制御装置1は、数値制御装置1によって実行された演算の結果を表示する機能を有する表示器13にも接続されている。表示器13は、データ入力装置を有していてもよい。データ入力装置は、キーボードを有していてもよい。数値制御装置1は、デジタルインプット情報とアナログインプット情報との一方又は双方を工作機械から受信すると共に、デジタルアウトプット情報とアナログアウトプット情報との一方又は双方を工作機械に送信する入出力装置14にも接続されている。以下では、「入出力装置14」は「I/O装置14」と記載される場合がある。図面では、「入出力装置14」は「I/O装置14」と記載されている。数値制御装置1は、数値制御装置1を通信ネットワークに接続するネットワーク装置15にも接続されている。
図2は、実施の形態1にかかる数値制御装置1によって実行される処理を示す図である。図2には、モータ制御アンプ11、表示器13、I/O装置14及びネットワーク装置15も示されている。数値制御装置1は、加工プログラム31を読込んで、加工プログラム31に記述されているGコードを読み取る加工プログラム読込み処理32を実行する。加工プログラム31は、複数の指令文を含む。数値制御装置1は、加工プログラム読込み処理32において、1行毎に指令文を読込んでもよいし、1度に複数の行の指令文を読込んでもよい。
数値制御装置1は、加工プログラム読込み処理32を実行した後、読込まれた加工プログラム31を解析する加工プログラム解析処理33を実行する。加工プログラム31には、Gコードと呼ばれる移動指令と系統間での同期指令とを含む機能コードが含まれている。加工プログラム31には、例えば工具の先端位置を決める座標位置も記述されている。数値制御装置1は、加工プログラム解析処理33において、移動指令、同期指令及び工具の座標位置をもとに、モータ12に対して最終的に指令する座標位置を計算する。
例えば、加工プログラム31に工具の径補正と工具の先端位置を決める座標位置とが記述されている場合、数値制御装置1は、加工プログラム解析処理33において、読込まれた座標位置を指定された工具番号の工具の径補正分移動させた補正位置を計算する。数値制御装置1は、加工プログラム解析処理33において、補正位置である工具の先端位置に対して座標変換を行い、モータ12の制御位置を算出する。数値制御装置1は、複数のモータ12の各々について制御位置を算出する。
次に、数値制御装置1は、加工プログラム解析処理33において計算されたモータ12の制御位置に一定の周期毎に送り速度に対応した移動量を加算して補間位置を計算する補間処理34を実行する。数値制御装置1は、補間処理34では、補間位置を計算するだけでなく、多系統の処理を実行する場合にはひとつの系統と他の系統とについて同期処理を実行する。
例えば、同期処理は、他の系統の状態を確認して、ひとつの系統について次の補間処理を行ってよいか否かを判定する待ち合わせ処理である。例えば、同期処理は、ひとつの系統の軸の移動量と他の系統の軸の移動量とを合算して加工プログラム31において指令された移動量を扱う場合、他系統の軸の移動量を示す情報を取得してひとつの系統の軸の移動量を決めて補間位置を計算する処理である。
次に、数値制御装置1は、補間処理34において得られた補間位置に対して例えば移動平均フィルタ処理又は加速度を一定にする処理を実行し、制御対象物の速度が滑らかになるように、モータ12への指令位置を計算する加減速処理35を実行する。
次に、数値制御装置1は、加減速処理35において計算されたモータ12への指令位置をモータ12への指令に設定する軸制御処理36を実行する。モータ制御アンプ11は、指令をもとにモータ12を制御する。例えば、モータ制御アンプ11は、モータ12に流れる電流値を制御する。
数値制御装置1は、数値制御装置1の内部のデータを表示器13に表示させるHMI処理37も実行する。当該データは、数値制御装置1の内部で行われた演算によって得られたデータを含む。HMI処理37は、ユーザからの入力を受け付ける処理を含む。HMI処理37では、処理の実行が早ければ早いだけユーザへの応答性が上がる。数値制御装置1は、工作機械へのデータの出力と、工作機械からの信号を受け付けるためのラダー処理とを含むI/O制御処理38も実行する。数値制御装置1は、I/O制御処理38をI/O装置14を介して実行する。数値制御装置1は、ネットワーク装置15を介して数値制御装置1の外部の物とデータの送受信を行う通信処理39も実行する。数値制御装置1の外部の物には、工作機械は含まれない。
加工プログラム読込み処理32、加工プログラム解析処理33、補間処理34、加減速処理35、軸制御処理36、HMI処理37、I/O制御処理38及び通信処理39は、マルチコアプロセッサ2によって実行される処理である。加工プログラム読込み処理32、加工プログラム解析処理33、補間処理34、加減速処理35、軸制御処理36、HMI処理37、I/O制御処理38及び通信処理39の各々は、サブ処理の例である。
図3は、実施の形態1にかかる数値制御装置1がサブ処理を複数のコアプロセッサに割り当てる際の動作を説明するための図である。上述の通り、サブ処理のひとつの例は、図2を用いて説明した複数の処理のひとつである。記憶部3は、マルチコアプロセッサ2によって実行される処理をどのように分割して各サブ処理をどのタイミングで実行するのかを特定する処理パターンを示す処理パターン情報41を記憶している。処理パターン情報41は、複数の処理パターンを示す。複数の処理パターンを示す処理パターン情報41は、あらかじめ用意されている。
記憶部3は、数値制御装置1が有するマルチコアプロセッサ2を構成するコアプロセッサの個数を示す情報を含むリソース情報42を更に記憶している。リソース情報42には、通信ネットワーク又は通信バスを介して数値制御装置1に接続されている他の数値制御装置又は計算装置に含まれていて使用可能な演算装置の個数を示す情報が含まれていてもよい。演算装置の例は、プロセッサである。
記憶部3は、工作機械を構成するハードウェアに関する機械構成情報43を更に記憶している。例えば、機械構成情報43には、工作機械に含まれている軸の個数を示す情報と、系統数を示す情報と、機械タイプを示す情報と、数値制御装置1に接続されているI/O装置の個数を示す情報とのうちの一部又は全部が含まれている。機械タイプを示す情報は、例えば工作機械が旋盤又はマシニングセンタであることを示す情報である。
記憶部3は、マルチコアプロセッサ2によって実行される処理がソフトウェアが用いられて実行される場合の当該ソフトウェアの構成を示すソフトウェア構成情報44を更に記憶している。例えば、ソフトウェア構成情報44は、数値制御装置1の内部で実行される複数の処理ブロックと、当該複数の処理ブロックの各々の実行周期及び実行時間とを示す情報である。処理ブロックは、処理関数である。
パターン決定部4は、リソース情報42、機械構成情報43及びソフトウェア構成情報44をもとに、処理パターン情報41が示す複数の処理パターンのなかから、マルチコアプロセッサ2が処理を実行する際の処理時間が、複数のコアプロセッサのうちのひとつのコアプロセッサが上記の処理を実行する際の処理時間より短くなる処理パターンを決定する。例えば、パターン決定部4は、リソース情報42、機械構成情報43及びソフトウェア構成情報44をもとに、複数の処理パターンのなかから、マルチコアプロセッサ2が上記の処理を実行する際の処理時間が最短となる処理パターンを選択し、選択された処理パターンを複数のコアプロセッサが上記の処理を実行する際の処理パターンと決定する。
割り当て部5は、パターン決定部4によって決定された処理パターンにしたがって、複数のサブ処理を、分散させて、マルチコアプロセッサ2が有する第1コアプロセッサ21と、第2コアプロセッサ22と、第3コアプロセッサ23と、第4コアプロセッサ24とに割り当てる。
実施の形態1では、加工プログラムにおける指令系統がひとつであり、比較的短い線分長で記載された加工プログラムを実行する場合と、加工プログラムにおける指令系統が二つ以上ある多軸多系統制御を行っている場合とで、処理パターンを決定して複数のサブ処理を分散させて複数のコアプロセッサの各々に割り当てる例を示す。
図4は、ひとつのコアプロセッサが複数のサブ処理を実行する場合において加工プログラム解析処理を所定周期時間を超えて実行する場合の例を示す図である。図4は、制御対象の軸の個数及び系統数は比較的少ないが、比較的短い線分長で記載された加工プログラムにおいて自由曲面の作成を指令する場合の処理の例を示している。自由曲面を加工する際、工作機械の動作速度を一定に保つ必要があり、加工プログラムの読込み処理と、加工プログラムの解析処理とを一定の処理時間内に完了する必要がある。つまり、リアルタイム性が求められる。図4は、リアルタイムで行わなければならない処理である軸制御処理、加減速処理、補間処理、加工プログラム読込み処理及び加工プログラム解析処理の合計時間が所定周期時間を超えている様子を示している。リアルタイムで行わなければならない処理は、一定の処理時間内に実行完了しなければいけない処理である。
図5は、ひとつのコアプロセッサが複数のサブ処理を実行する場合において補間処理を所定周期時間を超えて実行する場合の例を示す図である。図5は、制御対象の軸の個数及び系統数が比較的多いが、加工プログラム読込み処理及び加工プログラム解析処理を一定の処理時間内に完了する必要がない場合の例を示す図である。
図5は、例えば数値制御装置1が4系統で16個の軸を制御する場合において、リアルタイムで行われなければならない軸制御処理、加減速処理及び補間処理の合計時間が所定周期時間を超えている様子を示している。リアルタイムで行わなければならない処理が所定周期時間で行われない場合、従来、所定周期時間を延ばし、制御の応答性についての要求を低下させる対応がとられる。又は、従来、リアルタイムで行われなければならない処理の負荷を軽減してリアルタイムで行わなければならない処理を所定周期時間以内で実行することにより、制御の応答性についての要求を保つ対応がとられる。
図6は、実施の形態1にかかる数値制御装置1において処理が分散されて複数のコアプロセッサに割り当てられて処理が実行される処理パターンの第1の例を示す図である。図6は、複数の処理パターンのうちのひとつの処理パターンを示している。図6が示す処理パターンでは、制御対象の軸についての複数の処理と、系統についての複数の処理とが分割されている。複数のサブ処理は分散され、複数のサブ処理の各々は複数のコアプロセッサのいずれかに割り当てられている。以下では、系統についての複数のサブ処理は「系統処理」と記載される場合がある。
具体的には、図6が示す処理パターンは、第1コアプロセッサが、軸制御処理のうちの共通処理を実行すると共に、第1軸から第4軸までの各軸についての軸制御処理を実行することを示している。図6が示す処理パターンは、第2コアプロセッサが第5軸から第8軸までの各軸についての軸制御処理を実行し、第3コアプロセッサが第9軸から第12軸までの各軸についての軸制御処理を実行し、第4コアプロセッサが第13軸から第16軸までの各軸についての軸制御処理を実行することを更に示している。
図6が示す処理パターンでは、各コアプロセッサに割り当てられる軸の個数は同じである。しかしながら、複数の軸の各々についての制御処理時間をもとに、各コアプロセッサにおける処理時間が均等になるように、コアプロセッサに割り当てる軸の個数をコアプロセッサ毎に異なる個数としてもよい。
図6が示す処理パターンは、第1コアプロセッサが、系統処理のうちの共通処理を実行すると共に、1系統目についての処理を実行することを更に示している。図6が示す処理パターンは、第2コアプロセッサが2系統目についての処理を実行し、第3コアプロセッサが3系統目についての処理を実行し、第4コアプロセッサが4系統目についての処理を実行することを更に示している。
図6が示す処理パターンでは、各コアプロセッサに割り当てられる系統の個数は同じである。しかしながら、数値制御装置1が4系統以上の処理を実行する場合、複数の系統の各々についての処理時間をもとに、各コアプロセッサにおける処理時間が均等になるように、コアプロセッサに割り当てる系統の個数をコアプロセッサ毎に異なる個数としてもよい。
図7は、実施の形態1にかかる数値制御装置1において処理が分散されて複数のコアプロセッサに割り当てられて処理が実行される処理パターンの第2の例を示す図である。図7も、複数の処理パターンのうちのひとつの処理パターンを示している。図7が示す処理パターンは、第1コアプロセッサが、軸制御処理のうちの共通処理を実行することと、第1軸から第8軸までの各軸についての処理を実行することとを示している。図7が示す処理パターンは、第1コアプロセッサが、1系統目についての系統処理を実行することと、2系統目についての系統処理を実行することとを更に示している。
図7が示す処理パターンは、第2コアプロセッサが、第9軸から第16軸までの各軸についての処理を実行することと、3系統目についての系統処理を実行することと、4系統目についての系統処理を実行することとを更に示している。図7が示す処理パターンは、第3コアプロセッサが、I/O制御処理、HMI処理及び通信処理を実行することを更に示している。I/O制御処理、HMI処理及び通信処理は、リアルタイムに実行されなくてもよい処理である。図7が示す処理パターンは、第4コアプロセッサが、別タスク処理及び別関数処理を実行することを更に示している。別タスク処理及び別関数処理は、図2において示されていないサブ処理である。
図7が示す処理パターンは、リソースの半分を軸処理及び系統処理に割り当てている。リソースは、複数のコアプロセッサを意味する。しかしながら、軸処理及び系統処理に割り当てられるコアプロセッサの個数は、変更されてもよい。処理パターンは、軸処理及び系統処理が割り当てられるコアプロセッサの個数に対応して用意される。
図8は、実施の形態1にかかる数値制御装置1において処理が分散されて複数のコアプロセッサに割り当てられて処理が実行される処理パターンの第3の例を示す図である。図8も、複数の処理パターンのうちのひとつの処理パターンを示している。図8が示す処理パターンは、ひとつのタスクのサブ処理がひとつのコアプロセッサに割り当てられて実行される処理パターンである。
図8が示す処理パターンは、第1コアプロセッサが軸制御処理と加減速処理とを実行し、第2コアプロセッサが補間処理を実行することを示している。図8が示す処理パターンは、第3コアプロセッサが加工プログラム読込み処理と加工プログラム解析処理とを実行し、第4コアプロセッサがI/O制御処理、HMI処理及び通信処理を実行することを更に示している。軸制御処理、加減速処理及び補間処理といったリアルタイムに実行する必要があるサブ処理が割り当てられるコアプロセッサの個数は変更されてもよい。処理パターンは、リアルタイムに実行する必要があるサブ処理が割り当てられるコアプロセッサの個数に対応して用意される。
図8が示す処理パターンは、独立して計算することができる複数のサブ処理が並列に実行される処理パターンである。更に言うと、図8が示す処理パターンは、ひとつの周期において、各タスクのサブ処理の実行順が変わらない処理パターンである。
パターン決定部4は、複数の処理パターンから処理の負荷を分散するための処理パターンをひとつ選択する。パターン決定部4は、複数のコアプロセッサの各々が実行するサブ処理を特定する処理パターンを決定する。具体的には、パターン決定部4は、リソース情報に含まれるマルチコアプロセッサ2を構成するコアプロセッサの個数をもとに、複数の処理パターンから当該個数のコアプロセッサがサブ処理を実行することになる複数の処理パターンを選択する。
実施の形態1では、パターン決定部4は、4個のコアプロセッサが処理を実行することになる処理パターンを選択する。コアプロセッサの個数が8である場合、パターン決定部4は、8個のコアプロセッサが処理を実行することになる処理パターンを選択する。
図9は、実施の形態1にかかる数値制御装置1によって実行される複数のサブ処理の各々の処理時間及び実行周期を示す図である。サブ処理の内容を示す処理関数及び処理タスク毎に、処理時間が予め計測される。図9には、共通の処理が必要な時間である共通処理時間t1と、単位処理当たりの処理時間t2とが示されている。単位処理当たりの処理時間t2の例は、ひとつの軸当たり又はひとつの系統当たりの処理時間である。
図9において、加工プログラム読込み処理については、処理時間t2は、ひとつの加工プログラムを読込む際の処理時間である。加工プログラム解析処理については、処理時間t2は、ひとつの加工プログラムを解析する際の処理時間である。図9には、図2に示されていないサブ処理A、サブ処理B及びサブ処理Cについての処理時間及び実行周期も示されている。図9における実行周期は、単位周期の倍数で示されている。
マルチコアプロセッサが処理を実行する際のオーバヘッド時間が、時間t3であると仮定する。この場合、機械構成情報に含まれる系統数がnであり、軸の個数がmであるとき、系統数に依存する処理時間t_kは下記の式(1)で表現され、軸の個数に依存する処理時間t_jは下記の式(2)で表現される。
t_k=t1_k+t2_k×n+t3_k ・・・(1)
t_j=t1_j+t2_j×m+t3_j ・・・(2)
添え字_kは系統数に依存する時間を表し、添え字_jは軸の個数に依存する時間を表している。
各処理関数及び処理タスクの処理時間は、事前に数値制御装置1とは別の数値制御装置で計測されていてもよい。各処理関数及び処理タスクの処理時間は、数値制御装置1が処理時間を計測する計測手段を有していて、計測手段が数値制御装置1の立ち上がり時に各処理の処理時間を計測してソフトウェア構成情報に処理時間テーブルを含めてもよい。パターン決定部4は、計測手段の機能を有していてもよい。
図10は、実施の形態1にかかる数値制御装置1が有するパターン決定部4の動作の手順の一例を示すフローチャートである。パターン決定部4は、ステップS1において、リソース情報からマルチコアプロセッサ2を構成するコアプロセッサの個数を示す情報を取得する。パターン決定部4は、ステップS2において、ステップS1において取得された情報が示す個数に対応する処理パターンを抽出する。抽出された処理パターンの例は、図6から図8が示す処理パターンである。
パターン決定部4は、ステップS3において、ステップS2において抽出されたひとつの処理パターンについて、機械構成情報とソフトウェア構成情報とをもとに各タスクの処理時間を計算し、当該処理パターンで実行周期にかかる処理時間を計算する。パターン決定部4は、ステップS4において、ステップS2において抽出されたすべての処理パターンの処理時間が計算されたか否かを判定する。パターン決定部4は、抽出されてすべての処理パターンの処理時間が計算されていないと判定した場合(ステップS4でNo)、ステップS3の動作を行う。
パターン決定部4は、抽出されたすべての処理パターンの処理時間が計算されたと判定した場合(ステップS4でYes)、ステップS5において、抽出された処理パターンのなかから、マルチコアプロセッサ2が処理を実行する際の処理時間が、複数のコアプロセッサのうちのひとつのコアプロセッサが上記の処理を実行する際の処理時間より短くなる処理パターンを選択する。ステップS5において、パターン決定部4は、選択することによってマルチコアプロセッサ2が実行する処理パターンを決定する。
系統数が比較的少なく、比較的短い線分長で記載された加工プログラムで所定周期以内に加工プログラム解析処理も実行する必要がある場合、例えば、パターン決定部4は、所定の周期を2周期として実行周期にかかる処理時間を計算する。図6が示す処理パターンでは、軸制御処理及び補間処理の個数がコアプロセッサの個数より少ないので、処理を分散してもコアプロセッサが処理を行わない空き時間が発生する。
図7が示す処理パターンでは、図6が示す処理パターンに比べて空き時間は少なくなり、処理時間は図6が示す処理パターンにおける処理時間より短い。図8が示す処理パターンでは、軸制御処理、加減速処理、補間処理、加工プログラム読込み処理及び加工プログラム解析処理の処理時間のバランスが図6及び図7が示す処理パターンにおける処理時間のバランスよりよく、処理時間も比較的短い。
パターン決定部4は、図6から図8が示す3個の処理パターンのなかで処理時間が最も短い図8が示す処理パターンを選択する。割り当て部5は、パターン決定部4によって決定された処理パターンをもとに、軸制御処理と加減速処理とを第1コアプロセッサに割り当て、補間処理を第2コアプロセッサに割り当てる。加えて、割り当て部5は、加工プログラム読込み処理と加工プログラム解析処理とを第3コアプロセッサに割り当て、I/O制御処理、HMI処理及び通信処理を第4コアプロセッサに割り当てる。
数値制御装置1が、加工プログラムにおける指令系統が4系統であって軸の個数が16個である多軸多系統制御を行う場合、例えば、パターン決定部4は、所定周期を2周期として実行周期にかかる処理時間を計算する。図6が示す処理パターンでは、各コアプロセッサに4軸の軸制御処理を割り当てることができると共に、各コアプロセッサに1系統の補間処理を割り当てることができる。そのため、図6が示す処理パターンは、処理時間を比較的短くすることができる。
図7が示す処理パターンでは、リアルタイムで処理を実行する必要があるコアプロセッサの個数が2個である。そのため、図6が示す処理パターンでは4つのコアプロセッサで処理を実行していた軸制御処理、および、補間処理を図7が示す処理パターンでは、2つのコアプロセッサで処理を実行することになるため、図7が示す処理パターンでの処理時間は、図6が示す処理パターンでの処理時間より長くなる。
図8が示す処理パターンは、系統数及び軸数に比例して大きくなった軸制御処理及び補間処理を第1コアプロセッサ及び第2コアプロセッサに割り当てるパターンである。このケースでは、処理時間は、図6が示す処理パターンでの処理時間よりも長く、図7が示す処理パターンでの処理時間よりも短い。
パターン決定部4は、図6から図8が示す3個の処理パターンのなかで処理時間が最も短い図6が示す処理パターンを選択する。割り当て部5は、パターン決定部4によって選択された処理パターンをもとに、共通処理と、第1軸及び1系統目の処理とを第1コアプロセッサに割り当てる。割り当て部5は、第2軸及び2系統目の処理を第2コアプロセッサに割り当て、第3軸及び3系統目の処理を第3コアプロセッサに割り当て、第4軸及び4系統目の処理を第4コアプロセッサに割り当てる。
上述の通り、実施の形態1にかかる数値制御装置1は、リソース情報、機械構成情報及びソフトウェア構成情報をもとに、処理パターン情報が示す複数の処理パターンのなかから、マルチコアプロセッサ2が実行する処理の時間が、上記の複数のコアプロセッサのうちのひとつのコアプロセッサが上記の処理を実行する場合の処理時間より短くなる処理パターンを選択する。数値制御装置1は、選択された処理パターンを複数のコアプロセッサが上記の処理を実行する際の処理パターンと決定する。
例えば、数値制御装置1は、リソース情報、機械構成情報及びソフトウェア構成情報をもとに、複数の処理パターンのなかから、マルチコアプロセッサ2が実行する処理の時間が最短となる処理パターンを選択する。数値制御装置1は、選択された処理パターンを複数のコアプロセッサが上記の処理を実行する際の処理パターンと決定する。
数値制御装置1は、決定された処理パターンにしたがって、上記の処理を構成する複数のサブ処理を分散させて複数のコアプロセッサに割り当てる。複数の処理パターンの各々は、上記の処理を構成する複数のサブ処理のうちの実行される順序の変更が許可されない複数のサブ処理を順序が変更されることなく実行させる処理パターンである。
したがって、数値制御装置1は、実行される処理が複数のサブ処理に分割された場合に複数のサブ処理のうちの実行される順序の変更が許可されない複数のサブ処理を処理の順序が変更されることなく実行することができる。加えて、数値制御装置1は、ひとつのコアプロセッサが上記の処理を実行する際の処理時間より短い処理時間で上記の処理を実行することができる。
実施の形態2.
図11は、実施の形態2にかかる数値制御装置1Aの構成を示す図である。数値制御装置1Aは、第1コアプロセッサ21、第2コアプロセッサ22及び第3コアプロセッサ23を含むマルチコアプロセッサ2Aと、記憶部3Aと、パターン決定部4とを有する。第1コアプロセッサ21、第2コアプロセッサ22及び第3コアプロセッサ23及びパターン決定部4の各々は、実施の形態1において説明された構成要素である。記憶部3Aは、実施の形態1の記憶部3と同様に、処理パターン情報、リソース情報、機械構成情報及びソフトウェア構成情報を記憶する。
数値制御装置1Aは、通信ネットワーク16を介して他の数値制御装置1Bに接続されている。他の数値制御装置1Bは、数値制御装置1Aと同様な装置である。数値制御装置1Aは、複数のサブ処理の一部を他の数値制御装置1Bに割り当てると共に、当該複数のサブ処理の残部を数値制御装置1Aに割り当てる割り当て部5Aを更に有する。割り当て部5Aは、数値制御装置1Aのマルチコアプロセッサ2Aが当該残部を実行する期間に、当該一部を他の数値制御装置1Bに実行させる。他の数値制御装置1Bは、パターン決定部4及び割り当て部5Aを有していない。
実施の形態2では、加工プログラムの指令系統数が2個以上であり、制御軸の個数が32個であり、制御系統数が8系統である多軸多系統制御が行われる場合を想定する。実施の形態2では、当該場合において、数値制御装置1Aがひとつの処理パターンを選択して、処理を、マルチコアプロセッサ2Aを構成する複数のコアプロセッサと、他の数値制御装置1Bに分散させる例を説明する。
図12は、実施の形態2にかかる数値制御装置1Aと他の数値制御装置1Bとにおいて処理が実行される処理パターンの第1の例を示す図である。図12が示す処理パターンは、数値制御装置1Aの第1コアプロセッサが、I/O制御処理と、第1軸から第16軸までの各軸についての軸制御処理と、第1軸から第16軸までの各軸についての加減速処理とを実行することを示している。
図12が示す処理パターンは、数値制御装置1Aの第2コアプロセッサが、HMI処理と、1系統から4系統までの各系統についての補間処理とを実行することを更に示している。図12が示す処理パターンは、数値制御装置1Aの第3コアプロセッサが、通信処理と、加工プログラム読込み処理と、加工プログラム解析処理とを実行することを更に示している。
図12が示す処理パターンは、他の数値制御装置1Bの第1コアプロセッサが、I/O制御処理と、第17軸から第32軸までの各軸についての軸制御処理と、第17軸から第32軸までの各軸についての加減速処理とを実行することを更に示している。図12が示す処理パターンは、他の数値制御装置1Bの第2コアプロセッサが、HMI処理と、5系統から8系統までの各系統についての補間処理とを実行することを更に示している。図12が示す処理パターンは、他の数値制御装置1Bの第3コアプロセッサが、通信処理と、加工プログラム読込み処理と、加工プログラム解析処理とを実行することを更に示している。
図12が示す処理パターンでは、数値制御装置1Aにおいて実行される処理の軸の個数及び系統数は、他の数値制御装置1Bにおいて実行される処理の軸の個数及び系統数と同じである。しかしながら、数値制御装置1Aにおいて実行される処理の軸の個数及び系統数は、他の数値制御装置1Bにおいて実行される処理の軸の個数及び系統数と異なっていてもよい。
処理の負荷が比較的大きい1系統及び2系統の補間処理が数値制御装置1Aにおいて行われ、3系統から8系統までの補間処理が他の数値制御装置1Bにおいて実行される処理パターンが用意されてもよい。同様に、数値制御装置1Aにおいて実行される処理の軸の個数と他の数値制御装置1Bにおいて実行される処理の軸の個数とが異なる処理パターンが用意されてもよい。
図13は、実施の形態2にかかる数値制御装置1Aと他の数値制御装置1Bとにおいて処理が実行される処理パターンの第2の例を示す図である。図13が示す処理パターンは、数値制御装置1Aの第1コアプロセッサが、I/O制御処理と、補間処理とを実行することを示している。
図13が示す処理パターンは、数値制御装置1Aの第2コアプロセッサが、HMI処理と、補間処理とを実行することを更に示している。図13が示す処理パターンは、数値制御装置1Aの第3コアプロセッサが、通信処理と、加工プログラム読込み処理と、加工プログラム解析処理とを実行することを更に示している。
図13が示す処理パターンは、他の数値制御装置1Bの第1コアプロセッサが、I/O制御処理と、軸制御処理と、加減速処理とを実行することを更に示している。図13が示す処理パターンは、他の数値制御装置1Bの第2コアプロセッサが、HMI処理と、軸制御処理と、加減速処理とを実行することを更に示している。図13が示す処理パターンは、他の数値制御装置1Bの第3コアプロセッサが、通信処理と、軸制御処理と、加減速処理とを実行することを更に示している。
加工プログラム読込み処理及び加工プログラム解析処理は、数値制御装置1Aにおいて実行されるのではなく、他の数値制御装置1Bにおいて実行されてもよい。上述の通り、数値制御装置1Aは通信ネットワーク16を介して他の数値制御装置1Bに接続されている。データの通信にかかる処理負荷を軽減するために、HMI処理と通信処理との一方又は双方は、数値制御装置1Aと他の数値制御装置1Bとのうちの一方において実行されてもよい。
パターン決定部4は、処理パターン情報が示す複数の処理パターンのなかから、処理の負荷を分散するために、ひとつの処理パターンを選択する。リソース情報は、演算装置の個数が数値制御装置1Aと他の数値制御装置1Bとの2個であることを示す情報を含んでいる。リソース情報は、数値制御装置1A及び他の数値制御装置1Bの各々が3個のコアプロセッサを有することを示す情報を含んでいる。
パターン決定部4は、まず、リソース情報をもとに、すべての演算装置に含まれるコアプロセッサの個数を特定し、特定された個数をもとに、複数の処理パターンのなかで、当該個数に対応する処理パターンを絞り込む。パターン決定部4は、リソース情報をもとに処理パターンを絞り込むことができない場合、つまり想定された個数のリソースが存在しない場合、すべての演算装置に含まれるコアプロセッサの個数より少ない個数のコアプロセッサが処理を実行することになる処理パターンを選択する。
例えばすべての演算装置に含まれるコアプロセッサの個数が6個で、対応する処理パターンが存在しない場合、パターン決定部4は、すべての演算装置に含まれるコアプロセッサの個数が5個である場合の処理パターンを選択する。
実施の形態2では、パターン決定部4は、処理パターンをコアプロセッサの個数をもとに選択し、そのなかから処理時間が一番短い処理パターンを選択する。しかしながら、パターン決定部4は、コアプロセッサの個数をもとに処理パターンを選択しなくてもよい。例えば、パターン決定部4は、コアプロセッサの個数を問わず複数の処理パターンの各々の処理時間を計算し、処理時間が一番短い処理パターンを選択してもよい。
複数の演算装置が処理を分散して実行する場合においても、複数の演算装置の各々において、各処理関数及び処理タスクの処理時間があらかじめ計測され、更に通信処理にかかる時間も含めて、リアルタイムに実行することが必要な軸制御処理、加減速処理及び補間処理の処理時間が計算される。例えば、パターン決定部4は、計算の結果をもとに、処理時間が一番短い処理パターンを選択する。割り当て部5Aは、複数のサブ処理を数値制御装置1Aと他の数値制御装置1Bとに割り当てて、割り当てたサブ処理を数値制御装置1A及び他の数値制御装置1Bに含まれるコアプロセッサに実行させる。
上述の通り、数値制御装置1Aは、決定された処理パターンにしたがって、上記の処理を構成する複数のサブ処理を分散させて数値制御装置1Aと他の数値制御装置1Bとに含まれる複数のコアプロセッサに割り当てる。したがって、数値制御装置1Aは、上記の複数のコアプロセッサのうちのひとつのコアプロセッサが上記の処理を実行する場合の処理時間より短い時間で上記の処理を実行することができる。加えて、数値制御装置1Aは、従来より多い個数の軸の制御と従来より多い系統数の制御とを行うことができる。
実施の形態2では、他の数値制御装置1Bは割り当て部5Aを有していない。しかしながら、他の数値制御装置1Bは割り当て部5Aを有していてもよい。数値制御装置1Aは、数値制御装置1Aに含まれるパターン決定部4によって決定された処理パターンを示す情報を他の数値制御装置1Bに出力し、他の数値制御装置1Bに含まれる割り当て部5Aが、当該処理パターンをもとに、当該処理パターンのなかの実行すべきサブ処理を分散させて他の数値制御装置1Bに含まれる複数のコアプロセッサに割り当ててもよい。
他の数値制御装置1Bは、複数のコアプロセッサを有する計算装置に置き換えられてもよい。
実施の形態3.
図14は、実施の形態3にかかる数値制御装置50の構成を示す図である。数値制御装置50は、工作機械を制御する装置であって、マルチコアプロセッサ2を有する。マルチコアプロセッサ2は、第1コアプロセッサ21と、第2コアプロセッサ22と、第3コアプロセッサ23と、第4コアプロセッサ24とを含む。第1コアプロセッサ21、第2コアプロセッサ22、第3コアプロセッサ23及び第4コアプロセッサ24は、複数のコアプロセッサの一例である。
数値制御装置50は、マルチコアプロセッサ2によって実行される処理を分割し、分割を行うことによって得られた複数の1次サブ処理の個数が複数のコアプロセッサの個数より多い場合、複数の1次サブ処理を一部と残部に分割し、一部を分割して複数の2次サブ処理を得る分割部51を更に有する。
数値制御装置50は、分割部51によって得られた複数の1次サブ処理の残部と、複数の2次サブ処理とを、分散させて複数のコアプロセッサに割り当てる割り当て部52を更に有する。割り当て部52は、複数の2次サブ処理の各々についての実行順を保持させる。
加えて、割り当て部52は、第1の1次サブ処理を分割することによって得られる第1の2次サブ処理と第2の2次サブ処理との間に、第2の1次サブ処理を分割することによって得られる第3の2次サブ処理を割り込ませる。割り当て部52は、第1の2次サブ処理、第3の2次サブ処理及び第2の2次サブ処理を、この順に、複数のコアプロセッサのうちのひとつのコアプロセッサに割り当てる。
さらに、割り当て部52は、第3の1次サブ処理を分割することによって得られる第4の2次サブ処理と第5の2次サブ処理との間に、第2の1次サブ処理を分割することによって得られる第6の2次サブ処理を割り込ませる。割り当て部52は、第4の2次サブ処理、第6の2次サブ処理及び第5の2次サブ処理を、この順に、複数のコアプロセッサのうちの別のひとつのコアプロセッサに割り当てる。
数値制御装置50は、記憶部53を更に有する。記憶部53の例は、半導体メモリである。記憶部53の一部は、不揮発性メモリである。
以下に、数値制御装置50が行う動作について説明する。図15は、実施の形態3にかかる数値制御装置50が有するマルチコアプロセッサ2に含まれるコアプロセッサの個数が制御対象物の軸の個数より少ない場合の処理パターンの第1の例を示す図である。実施の形態3では、マルチコアプロセッサに含まれるコアプロセッサの個数が4個であり、制御対象物の軸の個数が5個である場合を想定する。
図15が示す処理パターンは、第1軸及び第5軸の軸制御処理を第1コアプロセッサに割り当て、第2軸の軸制御処理を第2コアプロセッサに割り当て、第3軸の軸制御処理を第3コアプロセッサに割り当て、第4軸の軸制御処理を第4コアプロセッサに割り当てる処理パターンである。軸制御処理は、第1軸から第5軸までの各軸についての共通処理を含む。補間処理も、第1軸から第5軸までの各軸についての共通処理を含む。図15が示す処理パターンは、軸制御処理が実行された後に補間処理を実行させる処理パターンである。
図15が示す処理パターンでは、補間処理における共通処理を実行するために、第5軸の軸制御処理が実行されている間、第2コアプロセッサ、第3コアプロセッサ及び第4コアプロセッサについて、空き時間が発生する。空き時間は、無駄な時間である。
図16は、実施の形態3にかかる数値制御装置50が有するマルチコアプロセッサ2に含まれるコアプロセッサの個数が制御対象物の軸の個数より少ない場合の処理パターンの第2の例を示す図である。軸制御処理のうちの共通処理以外の各軸の処理は、処理の独立性が高い。そのため、各軸の処理をひとつのコアプロセッサに割り当てて実行させることができる。
しかしながら、ひとつの軸の処理を複数の処理に分割して分割後の複数の処理を並列に実行させようとしても、当該ひとつの軸の前半の処理についての結果を後半の処理で使用することがあるので、上記の分割後の複数の処理を並列に実行させることはできない。図16は、複数の1次サブ処理のひとつの例である第5軸の軸制御処理が2次サブ処理Aから2次サブ処理Dまでの4個の2次サブ処理に分割され、2次サブ処理BからDまでの3個の2次サブ処理を実行することができない様子を示している。
図17は、実施の形態3にかかる数値制御装置50が有するマルチコアプロセッサ2に含まれるコアプロセッサの個数が制御対象物の軸の個数より少ない場合の処理パターンの第3の例を示す図である。図17が示す処理パターンでは、第1軸の軸制御処理は第1コアプロセッサに割り当てられており、第2軸の軸制御処理は第2コアプロセッサに割り当てられており、第3軸の軸制御処理は第3コアプロセッサに割り当てられており、第4軸の軸制御処理は第4コアプロセッサに割り当てられている。図17が示す処理パターンでは、第1軸、第2軸及び第3軸の各軸についての軸制御処理は、2次サブ処理Aと、2次サブ処理Aが実行された後に実行される2次サブ処理Bとに分割されている。
図17が示す処理パターンでは、第5軸についての軸制御処理は、2次サブ処理Aと、2次サブ処理Aが実行された後に実行される2次サブ処理Bと、2次サブ処理Bが実行された後に実行される2次サブ処理Cと、2次サブ処理Cが実行された後に実行される2次サブ処理Dとの4個の2次サブ処理に分割されている。図17が示す処理パターンでは、第1軸についての2次サブ処理Aが第1コアプロセッサによって実行された後に、第5軸についての2次サブ処理Aが第1コアプロセッサに割り当てられて第1コアプロセッサによって実行される。第5軸についての2次サブ処理Aが実行された後に、第1軸についての2次サブ処理Bが第1コアプロセッサによって実行される。
図17が示す処理パターンでは、第2軸についての2次サブ処理Aが第2コアプロセッサによって実行された後に、第5軸についての2次サブ処理Bが第2コアプロセッサに割り当てられて第2コアプロセッサによって実行される。第5軸についての2次サブ処理Bが実行された後に、第2軸についての2次サブ処理Bが第2コアプロセッサによって実行される。
第3軸についての2次サブ処理Aが第3コアプロセッサによって実行された後に、第5軸についての2次サブ処理Cが第3コアプロセッサに割り当てられて第3コアプロセッサによって実行される。第5軸についての2次サブ処理Cが実行された後に、第3軸についての2次サブ処理Bが第3コアプロセッサによって実行される。第4軸についての軸制御処理が第4コアプロセッサによって実行された後に、第5軸についての2次サブ処理Dが第4コアプロセッサに割り当てられて第4コアプロセッサによって実行される。
上述の通り、図17が示す処理パターンでは、第1軸、第2軸及び第3軸の各軸についての1次サブ処理である軸制御処理は、2次サブ処理Aと、2次サブ処理Aが実行された後に実行される2次サブ処理Bとに分割されている。第1コアプロセッサ、第2コアプロセッサ及び第3コアプロセッサの各々については、2次サブ処理Aと2次サブ処理Bとの間に第5軸についてのひとつの2次サブ処理が割り当てられている。
図17が示す処理パターンでは、第1軸から第5軸までの各軸についての複数の2次サブ処理は、複数の2次サブ処理によって構成される1次サブ処理の先頭から順に実行される。そのため、図17が示す処理パターンは、複数の2次サブ処理のうちの実行される順序の変更が許可されない複数の2次サブ処理を実行の順序が変更されることなく実行させる処理パターンである。つまり、図17が示す処理パターンでは、実行の順序が保たれる。
更に言うと、各2次サブ処理が実行されることによって得られたデータは、記憶部53に記憶される。そのため、図17が示す処理パターンでは、第1軸から第5軸までの各軸についての複数の2次サブ処理は、記憶部53に記憶されたデータが利用されることによって、複数の2次サブ処理によって構成される1次サブ処理の先頭から順に実行される。
上述の通り、実施の形態3にかかる数値制御装置50は、マルチコアプロセッサ2によって実行される処理を分割し、分割を行うことによって得られた複数の1次サブ処理の個数が複数のコアプロセッサの個数より多い場合、複数の1次サブ処理の一部を分割して複数の2次サブ処理を得る。
数値制御装置50は、得られた複数の1次サブ処理のうちの一部以外である残部の1次サブ処理と、複数の2次サブ処理とを、分散させて複数のコアプロセッサに割り当てる。数値制御装置50は、複数の2次サブ処理の各々についての実行順を保持させる。
数値制御装置50は、第1の1次サブ処理を分割することによって得られる第1の2次サブ処理と第2の2次サブ処理との間に、第2の1次サブ処理を分割することによって得られる第3の2次サブ処理を割り込ませる。数値制御装置50は、第1の2次サブ処理、第3の2次サブ処理及び第2の2次サブ処理を、この順に、複数のコアプロセッサのうちのひとつのコアプロセッサに割り当てる。
数値制御装置50は、第3の1次サブ処理を分割することによって得られる第4の2次サブ処理と第5の2次サブ処理との間に、第2の1次サブ処理を分割することによって得られる第6の2次サブ処理を割り込ませる。数値制御装置50は、第4の2次サブ処理、第6の2次サブ処理及び第5の2次サブ処理を、この順に、複数のコアプロセッサのうちの別のひとつのコアプロセッサに割り当てる。
したがって、数値制御装置50は、分割を行うことによって得られた複数の1次サブ処理の個数が複数のコアプロセッサの個数より多い場合、以下の効果を得る。すなわち、数値制御装置50は、空き時間をできるだけ作ることなく、マルチコアプロセッサ2によって実行される処理を、ひとつのコアプロセッサが当該処理を実行する場合の処理時間より短い処理時間で実行することができる。
図18は、実施の形態1にかかる数値制御装置1が有するパターン決定部4及び割り当て部5の一部又は全部の機能がプロセッサ81によって実現される場合のプロセッサ81を示す図である。つまり、パターン決定部4及び割り当て部5の一部又は全部の機能は、メモリ82に格納されるプログラムを実行するプロセッサ81によって実現されてもよい。プロセッサ81は、CPU(Central Processing Unit)、処理装置、演算装置、マイクロプロセッサ、又はDSP(Digital Signal Processor)である。図18には、メモリ82も示されている。
パターン決定部4及び割り当て部5の一部又は全部の機能がプロセッサ81によって実現される場合、当該一部又は全部の機能は、プロセッサ81と、ソフトウェア、ファームウェア、又は、ソフトウェア及びファームウェアとの組み合わせにより実現される。ソフトウェア又はファームウェアはプログラムとして記述され、メモリ82に格納される。プロセッサ81は、メモリ82に記憶されたプログラムを読み出して実行することにより、パターン決定部4及び割り当て部5の一部又は全部の機能を実現する。
パターン決定部4及び割り当て部5の一部又は全部の機能がプロセッサ81によって実現される場合、数値制御装置1は、パターン決定部4及び割り当て部5の一部又は全部によって実行されるステップが結果的に実行されることになるプログラムを格納するためのメモリ82を有する。メモリ82に格納されるプログラムは、パターン決定部4及び割り当て部5の一部又は全部が実行する手順又は方法をコンピュータに実行させるものであるともいえる。
メモリ82は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable Read Only Memory)、EEPROM(登録商標)(Electrically Erasable Programmable Read-Only Memory)等の不揮発性もしくは揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク又はDVD(Digital Versatile Disk)等である。
図19は、実施の形態1にかかる数値制御装置1が有するパターン決定部4及び割り当て部5の一部又は全部が処理回路91によって実現される場合の処理回路91を示す図である。つまり、パターン決定部4及び割り当て部5の一部又は全部は、処理回路91によって実現されてもよい。
処理回路91は、専用のハードウェアである。処理回路91は、例えば、単一回路、複合回路、プログラム化されたプロセッサ、並列プログラム化されたプロセッサ、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)、又はこれらを組み合わせたものである。
パターン決定部4及び割り当て部5の一部は、残部とは別個の専用のハードウェアであってもよい。
パターン決定部4及び割り当て部5の複数の機能について、当該複数の機能の一部がソフトウェア又はファームウェアで実現され、当該複数の機能の残部が専用のハードウェアで実現されてもよい。このように、パターン決定部4及び割り当て部5の複数の機能は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせによって実現することができる。
実施の形態2にかかる数値制御装置1Aが有するパターン決定部4及び割り当て部5Aの一部又は全部の機能は、上記のプロセッサ81と同等の機能を有するプロセッサによって実現されてもよい。その場合、実施の形態2にかかる数値制御装置1Aは、当該プロセッサと、パターン決定部4及び割り当て部5Aの一部又は全部によって実行されるステップが結果的に実行されることになるプログラムを格納するためのメモリとを有する。当該メモリは、上記のメモリ82と同等の機能を有するメモリである。実施の形態2にかかる数値制御装置1Aが有するパターン決定部4及び割り当て部5Aの一部又は全部は、上記の処理回路91と同等の機能を有する処理回路によって実現されてもよい。
実施の形態3にかかる数値制御装置50が有する分割部51及び割り当て部52の一部又は全部の機能は、上記のプロセッサ81と同等の機能を有するプロセッサによって実現されてもよい。その場合、実施の形態3にかかる数値制御装置50は、当該プロセッサと、分割部51及び割り当て部52の一部又は全部によって実行されるステップが結果的に実行されることになるプログラムを格納するためのメモリとを有する。当該メモリは、上記のメモリ82と同等の機能を有するメモリである。実施の形態3にかかる数値制御装置50が有する分割部51及び割り当て部52の一部又は全部は、上記の処理回路91と同等の機能を有する処理回路によって実現されてもよい。
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。