(57)【要約】【課題】制御プログラムの管理を容易に実行できる数値制御装置を提供する。【解決手段】数値制御装置は、制御プログラムと、制御プログラムに実装された実装機能を示す第一バージョン及び制御プログラムに実装された実装機能のうち有効な有効機能を示す第二バージョンを含むバージョンを、フラッシュメモリに記憶する。数値制御装置は、指令を受け付ける（Ｓ５３）。数値制御装置は、受け付けられた指令に対応する処理を有効機能によって実行することが可能か否かを、第二バージョンに基づいて判定する（Ｓ５９）。数値制御装置は、有効機能によって処理を実行することが可能と判定した時（Ｓ５９：ＹＥＳ）、有効機能に基づいて処理を実行する（Ｓ６１）。【選択図】図６
2018055211.tif 000002
【特許請求の範囲】
【請求項１】
制御プログラムに基づいて駆動する数値制御装置であって、
前記制御プログラムを記憶する第一記憶部と、
前記制御プログラムに実装された実装機能を示す第一バージョン、及び、前記制御プログラムに実装された実装機能のうち有効な有効機能を示す第二バージョンを含むバージョンを記憶する第二記憶部と、
指令を受け付ける第一受付手段と、
前記第一受付手段によって受け付けられた前記指令に対応する処理を前記有効機能によって実行することが可能か否かを、前記第二バージョンに基づいて判定する第一判定手段と、
前記第一判定手段によって、前記有効機能によって前記処理を実行することが可能と判定した時、前記有効機能に基づいて前記処理を実行する実行手段と
を備えたことを特徴とする数値制御装置。
【請求項２】
前記第一判定手段によって、前記有効機能によって前記処理を実行することが不可能と判定した時、使用者に通知する通知手段を更に備えたことを特徴とする請求項１に記載の数値制御装置。
【請求項３】
更新制御プログラムを受け付ける第二受付手段と、
前記第二受付手段によって受け付けられた前記更新制御プログラムに実装された実装機能を示す第一更新バージョン、及び、前記更新制御プログラムに実装された前記実装機能のうち有効な有効機能を示す第二更新バージョンを取得する取得手段と、
前記第二受付手段によって受け付けられた前記更新制御プログラムを、前記制御プログラムとして前記第一記憶部に記憶する制御手段と、
前記第二記憶部に記憶した前記第一バージョンを、前記取得手段によって取得した前記第一更新バージョンに更新する第一更新手段と、
前記第二記憶部に記憶した前記第二バージョンを更新する指示を受け付けたか判定する第二判定手段と、
前記第二判定手段によって、前記第二バージョンを更新する指示を受け付けたと判定した時、前記第二記憶部に記憶した前記第二バージョンを、前記取得手段によって取得した前記第二更新バージョンに更新する第二更新手段と、
前記第二受付手段によって、前記第二バージョンを更新する指示を受け付けないと判定した時、前記第二記憶部に記憶した前記第二バージョンの更新を禁止する禁止手段と
を備えたことを特徴とする請求項１又は２に記載の数値制御装置。
【請求項４】
前記第二記憶部に記憶した前記第二バージョンを前記第一バージョンに更新する指示を受け付ける第三受付手段と、
前記第三受付手段によって前記指示を受け付けた時、前記第二記憶部に記憶した前記第二バージョンを前記第一バージョンに更新する第三更新手段と
を備えたことを特徴とする請求項１から３の何れかに記載の数値制御装置。
【請求項５】
前記バージョンは、
前記実装機能に対応する値であって、前記実装機能の追加に伴い昇順で増加する第一値で示される前記第一バージョンと、
前記第一値以下の第二値で示される前記第二バージョンと
を含み、
前記第一判定手段は、
前記第二値の第一バージョンに対応する前記実装機能を、前記第二バージョンによって示される前記有効機能として特定し、特定された前記有効機能によって前記処理を実行することが可能か判定することを特徴とする請求項１から４の何れかに記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は数値制御装置に関する。
【背景技術】
【０００２】
数値制御装置の制御プログラムのバージョンを管理する様々な方向が提案されている。特許文献１は、制御器の制御プログラムの更新方法を開示する。配信サーバは、制御プログラムのバージョン毎に更新プログラムを複数記憶する。更新プログラムは、機能が追加及び修正されたモジュールを含む。配信サーバは、制御器の制御プログラムのバージョン情報を、集中管理装置から受信する。配信サーバは、受信したバージョン情報よりも新しく、且つ、制御器が実行するモジュールについて機能が追加及び修正された更新プログラムを特定し、集中管理装置に送信する。集中管理装置は、受信した更新プログラムを制御器に送信する。制御器は、受信した更新プログラムに基づいて、機能が追加及び修正されたモジュールを実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４７９９１１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
配信サーバが集中管理装置を介して制御器に送信する更新プログラムのバージョンは、最新のバージョンに限らない。制御器が実行するモジュールによっては、古いバージョンの更新プログラムを配信サーバが送信する時もある。その理由は、最新のバージョンの更新プログラムにおいて機能が追加及び修正されたモジュールが、制御器が備えていない機器を使用して実行される時がある為である。このため配信サーバは、最新のバージョンの更新プログラムだけでなく、古いバージョンの更新プログラムも記憶する必要がある。従って、複数の更新プログラムを記憶することになるので、更新プログラムの管理が煩雑になる時がある。
【０００５】
本発明の目的は、制御プログラムの管理を容易に実行できる数値制御装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明に係る数値制御装置は、制御プログラムに基づいて駆動する数値制御装置であって、前記制御プログラムを記憶する第一記憶部と、前記制御プログラムに実装された実装機能を示す第一バージョン、及び、前記制御プログラムに実装された実装機能のうち有効な有効機能を示す第二バージョンを含むバージョンを記憶する第二記憶部と、指令を受け付ける第一受付手段と、前記第一受付手段によって受け付けられた前記指令に対応する処理を前記有効機能によって実行することが可能か否かを、前記第二バージョンに基づいて判定する第一判定手段と、前記第一判定手段によって、前記有効機能によって前記処理を実行することが可能と判定した時、前記有効機能に基づいて前記処理を実行する実行手段とを備えたことを特徴とする。
【０００７】
数値制御装置は、制御プログラム、第一バージョン、及び、第二バージョンを記憶部に記憶する。数値制御装置は、受け付けた指令に対応する処理を有効機能によって実行することが可能かを、第二バージョンに基づいて判定する。数値制御装置は、実行することが可能と判定した時、有効機能に基づいて処理を実行する。このように、数値制御装置は、一つの制御ブログラムのバージョンとして第一バージョン及び第二バージョンを記憶することによって、制御プログラムの実装機能のうち有効機能以外の機能の実行を制限できる。従って、数値制御装置は、制御プログラムを有効機能毎に複数記憶する必要がない。このため、数値制御装置は、制御プログラムを容易に管理できる。
【０００８】
本発明において、前記第一判定手段によって、前記有効機能によって前記処理を実行することが不可能と判定した時、使用者に通知する通知手段を更に備えてもよい。該時、数値制御装置は、指令に対応する処理を有効機能によって実行できないことを、使用者に通知できる。
【０００９】
本発明において、更新制御プログラムを受け付ける第二受付手段と、前記第二受付手段によって受け付けられた前記更新制御プログラムに実装された実装機能を示す第一更新バージョン、及び、前記更新制御プログラムに実装された前記実装機能のうち有効な有効機能を示す第二更新バージョンを取得する取得手段と、前記第二受付手段によって受け付けられた前記更新制御プログラムを、前記制御プログラムとして前記第一記憶部に記憶する制御手段と、前記第二記憶部に記憶した前記第一バージョンを、前記取得手段によって取得した前記第一更新バージョンに更新する第一更新手段と、前記第二記憶部に記憶した前記第二バージョンを更新する指示を受け付けたか判定する第二判定手段と、前記第二判定手段によって、前記第二バージョンを更新する指示を受け付けたと判定した時、前記第二記憶部に記憶した前記第二バージョンを、前記取得手段によって取得した前記第二更新バージョンに更新する第二更新手段と、前記第二受付手段によって、前記第二バージョンを更新する指示を受け付けないと判定した時、前記第二記憶部に記憶した前記第二バージョンの更新を禁止する禁止手段とを備えてもよい。該時、数値制御装置は、制御プログラムを更新制御プログラムに更新する時、第二バージョンを更新するか選択できる。数値制御装置は、第二バージョンを更新する指示を受け付けたと判定した時、更新制御プログラムの第二更新バージョンによって、第二バージョンを更新する。一方、数値制御装置は、第二バージョンを更新する指示を受け付けないと判定した時、第二バージョンの更新を禁止する。これによって、数値制御装置は、実装機能が追加された更新制御プログラムによって制御プログラムを更新する時でも、有効機能を元のまま維持できる。
【００１０】
本発明において、前記第二記憶部に記憶した前記第二バージョンを前記第一バージョンに更新する指示を受け付ける第三受付手段と、前記第三受付手段によって前記指示を受け付けた時、前記第二記憶部に記憶した前記第二バージョンを前記第一バージョンに更新する第三更新手段とを備えてもよい。該時、数値制御装置は、実装機能と有効機能とを一致させることができる。従って、使用者は、実装機能を全て用いて数値制御装置に処理を実行させることができる。
【００１１】
本発明において、前記バージョンは、前記実装機能に対応する値であって、前記実装機能の追加に伴い昇順で増加する第一値で示される前記第一バージョンと、前記第一値以下の第二値で示される前記第二バージョンとを含み、前記第一判定手段は、前記第二値の第一バージョンに対応する前記実装機能を、前記第二バージョンによって示される前記有効機能として特定し、特定された前記有効機能によって前記処理を実行することが可能か判定してもよい。該時、数値制御装置は、第一バージョン及び第二バージョンを簡易な方法で管理できる。
【図面の簡単な説明】
【００１２】
【図１】工作機械１の斜視図。
【図２】数値制御装置４０と工作機械１の電気的構成を示すブロック図。
【図３】バージョン及びテーブル４４Ａを説明する図。
【図４】バージョン設定処理のフローチャート。
【図５】バージョン変更処理のフローチャート。
【図６】指令実行処理のフローチャート。
【発明を実施するための形態】
【００１３】
本発明の実施形態を図面を参照し説明する。以下説明は、図中に矢印で示す左右、前後、上下を使用する。工作機械１の左右方向、前後方向、上下方向は夫々、工作機械１のＸ軸方向、Ｙ軸方向、Ｚ軸方向である。図１に示す工作機械１は、被削材（図示略）の切削加工と旋削加工ができる複合機である。
【００１４】
＜工作機械１の構造＞
図１を参照し、工作機械１の構造を説明する。工作機械１は基台２、Ｙ軸移動機構（図示略）、Ｘ軸移動機構（図示略）、Ｚ軸移動機構（図示略）、移動体１５、立柱５、主軸ヘッド６、主軸（図示略）、被削材支持装置８、数値制御装置４０（図２参照）等を備える。基台２は架台１１、主軸基台１２、右側基台１３、左側基台１４等を備える。架台１１は前後方向に長い略直方体状の構造体である。主軸基台１２は前後方向に長い略直方体状に形成し、架台１１上面後方に設ける。右側基台１３は架台１１上面右前方に設ける。左側基台１４は架台１１上面左前方に設ける。右側基台１３と左側基台１４は夫々、上面に被削材支持装置８を支持する。
【００１５】
Ｙ軸移動機構は主軸基台１２上面に設け、Ｙ軸モータ６２（図２参照）等を備える。Ｙ軸移動機構はＹ軸モータ６２の駆動により、略平板状の移動体１５をＹ軸方向に移動する。Ｘ軸移動機構は移動体１５上面に設け、Ｘ軸モータ６１（図２参照）等を備える。Ｘ軸移動機構はＸ軸モータ６１の駆動により、立柱５をＸ軸方向に移動する。立柱５は、Ｙ軸移動機構、移動体１５、Ｘ軸移動機構により、基台２上をＸ軸方向とＹ軸方向に移動可能である。Ｚ軸移動機構は立柱５前面に設け、Ｚ軸モータ６３（図２参照）等を備える。Ｚ軸移動機構はＺ軸モータ６３の駆動により、主軸ヘッド６をＺ軸方向に移動する。主軸（図示略）は主軸ヘッド６内部に設け、主軸下部に工具装着穴（図示略）を備える。工具装着穴は工具を装着する。故に、Ｘ軸移動機構、Ｙ軸移動機構、Ｚ軸移動機構は夫々、主軸に装着した工具を、Ｘ軸方向、Ｙ軸方向、Ｚ軸方向に移動できる。主軸は主軸ヘッド６上部に設けた主軸モータ６６（図２参照）で回転する。
【００１６】
数値制御装置４０（図２参照）は制御箱の内側に格納する。数値制御装置４０はＮＣプログラムに基づき工作機械１の動作を制御する。ＮＣプログラムはＧコード、Ｍコードの指令で構成する行を複数行有する。工作機械１を覆うカバーは外壁面に操作盤１０（図２参照）を備える。操作盤１０は操作部１７、表示部１８、接続口１９（図２参照）を備える。操作部１７は数値制御装置４０の各種設定を行う。表示部１８は各種画面、メッセージ、アラーム等を表示する。接続口１９は外部記憶媒体４６Ａ（図２参照）を装着する端子を含む。外部記憶媒体４６Ａの一例はＵＳＢメモリである。
【００１７】
被削材支持装置８は右側基台１３と左側基台１４の上面に固定する。被削材支持装置８はＡ軸台２０、左側支持台２７、右側駆動機構部２８、回転台２９、Ｃ軸駆動部５０等を備える。Ａ軸台２０は、傾斜角度が０度で上面が水平面となる平面視略長方形状の板状部である。左側支持台２７は、Ｘ軸方向に対して平行な支軸（図示略）を回転可能に支持する。左側支持台２７の底部は、左側基台１４の上面に固定する。
【００１８】
右側駆動機構部２８はＡ軸台２０右側に位置する。右側駆動機構部２８は内側にＡ軸モータ６４（図２参照）等を格納する。Ａ軸モータ６４が回転すると、Ａ軸台２０は支軸を中心に回転する。Ａ軸台２０を回転する軸はＡ軸である。右側駆動機構部２８は工具に対して被削材を、Ａ軸を中心として回転できる。Ａ軸台２０はＡ軸回りに任意角度で傾くことで、主軸に装着する工具に対して被削材を任意方向に傾けることができる。
【００１９】
回転台２９はＡ軸台２０上面略中央に回転可能に設ける。回転台２９は円盤状を有する。Ｃ軸駆動部５０はＡ軸台２０下面に設け且つＡ軸台２０の略中央に設けた穴（図示略）を介して回転台２９と連結する。Ｃ軸駆動部５０は内部に回転軸（図示略）、Ｃ軸モータ６５（図２参照）等を備える。回転軸は回転台２９に対して直交する方向に延びる。回転軸は回転台２９に固定する。Ｃ軸モータ６５は回転軸に固定する。故に、Ｃ軸モータ６５が回転軸を回転すると、回転台２９はＺ軸方向に平行な軸を中心に回転可能である。回転台２９を回転する軸はＣ軸である。回転台２９上面の冶具２００は、被削材を固定する。Ｃ軸駆動部５０は工具に対して被削材を、Ｃ軸を中心として回転できる。
【００２０】
＜電気的構成＞
図２を参照し数値制御装置４０と工作機械１の電気的構成を説明する。数値制御装置４０はＣＰＵ４１、ＲＯＭ４２、ＲＡＭ４３、フラッシュメモリ４４、入出力部４５、外部インタフェース（Ｉ／Ｆ）４６、駆動回路５１〜５６を備える。工作機械１はＸ軸モータ６１、Ｙ軸モータ６２、Ｚ軸モータ６３、Ａ軸モータ６４、Ｃ軸モータ６５、主軸モータ６６を備える。
【００２１】
ＣＰＵ４１は工作機械１の動作を制御する。ＣＰＵ４１はフラッシュメモリ４４に記憶した制御プログラムを実行する。ＲＯＭ４２は各種設定情報を記憶する。ＲＡＭ４３は各種処理実行中に発生する各種データを記憶する。フラッシュメモリ４４は、ブートプログラム、制御プログラム、バージョン、ＮＣプログラム、テーブル４４Ａ（図３参照、後述）を記憶する。ブートプログラムは、数値制御装置４０の電源投入時に起動する。バージョンは、制御プログラムの版数を示す文字列である。バージョンの詳細は後述する。入出力部４５は駆動回路５１〜５６、操作部１７、表示部１８との間で各種信号の入出力を行う。駆動回路５１とＸ軸モータ６１、駆動回路５２とＹ軸モータ６２、駆動回路５３とＺ軸モータ６３、駆動回路５４とＡ軸モータ６４、駆動回路５５とＣ軸モータ６５、駆動回路５６と主軸モータ６６は夫々接続する。駆動回路５１〜５６はＣＰＵ４１が出力するパルス信号を、モータ６１〜６６に出力する。モータ６１〜６６は何れもサーボモータである。外部Ｉ／Ｆ４６は、接続口１９に装着した外部記憶媒体４６Ａから情報を読み出す為のインタフェース素子である。例えばＣＰＵ４１は、外部記憶媒体４６Ａに記憶した制御プログラムとバージョンを、外部Ｉ／Ｆ４６により読み出す。
【００２２】
以下、フラッシュメモリ４４に記憶した制御プログラム、バージョンを「導入済プログラム」「導入済バージョン」という。外部記憶媒体４６Ａに記憶した制御プログラム、バージョンを「更新プログラム」「更新バージョン」という。
【００２３】
＜バージョン＞
図３を参照し、バージョンについて具体例を挙げて説明する。図３のバージョン「ＷＢ００．０５．００１Ｆ０３．０００」は、第一共通識別子「ＷＢ００．」、第一バージョン「０５．００１」、第二共通識別子「Ｆ」、第二バージョン「０３．０００」が順番に配列した文字列である。
【００２４】
第一共通識別子は、制御ブログラムの種別を識別する文字列である。第一共通識別子は、種別毎に共通の文字列（例えば、「ＷＡ００．」「ＷＡ０１．」「ＷＢ００．」「ＷＢ０１．」「ＷＣ００．」等）を有する。第二共通識別子は、後述する第一バージョンと第二バージョンとの境界位置を明示する為の文字である。第二共通識別子は全てのバージョンで共通である。
【００２５】
第一バージョンは、制御プログラムに実装された機能（以下、「実装機能」という。）を示す。第一バージョンは、実装機能の追加に伴い昇順で増加する。第一バージョンは、第一メインバージョン、ピリオド「．」、第一サブバージョンが、左から順番に配列した文字列である。第一メインバージョンは、ピリオド「．」に対して左側の二桁の数字である。第一メインバージョンは、相対的に大きい規模の機能の追加に伴い、昇順で増加する。第一サブバージョンは、ピリオド「．」に対して右側の三桁の数字である。第一サブバージョンは、相対的に小さい規模の機能の追加に伴い、昇順で増加する。第一サブバージョンは、第一メインバージョンが更新した時にリセットし、「０００」に戻る。
【００２６】
具体例を挙げて説明する。バージョン「ＷＢ００．０５．００１Ｆ０３．０００」の第一バージョンは「０５．００１」である。第一メインバージョンは「０５」であり、第一サブバージョンは「００１」である。第一バージョン「０５．００１」の制御プログラムには、実装機能「機能１〜機能５、機能５−１」が実装されている。該時、制御プログラムは、機能１〜機能５、機能５−１を実行するためのプログラムコードを含む。
【００２７】
図３において、第一バージョンは「０５．００１」となる前に次のように複数回更新されている。第一バージョン「０１．０００」〜「０３．０００」間の更新の詳細は省略する。実装機能「機能１〜機能３」が実装された第一バージョン「０３．０００」の制御プログラムに対し、規模の大きい「機能４」を追加で実装したものが第一バージョン「０４．０００」である（Ｓ１）。実装機能「機能１〜機能４」が実装された第一バージョン「０４．０００」の制御プログラムに対し、規模の大きい「機能５」を追加で実装したものが第一バージョン「０５．０００」である（Ｓ２）。実装機能「機能１〜機能５」が実装された第一バージョン「０５．０００」の制御プログラムに対し、規模の小さい「機能５−１」を追加で実装したものが第一バージョン「０５．００１」である（Ｓ３）。
【００２８】
上記の各実装機能は、例えば、工作機械１において駆動可能な軸の種類が夫々相違する。具体的には次の通りである。機能１は、Ｘ軸方向の早送り指令を実行する機能を示す。機能２は、Ｙ軸方向の早送り指令を実行する機能を示す。機能３は、Ｚ軸方向の早送り指令を実行する機能を示す。機能４は、Ａ軸方向の早送り指令を実行する機能を示す。機能５は、Ｃ軸方向の早送り指令を実行する機能を示す。機能５−１は、早送り指令と切削送り指令を実行する機能を示す。上記において、早送り指令とは、工具の移動経路に関係無く軸毎に最高速で目的位置まで移動する指令である。切削送り指令とは、正確な切削経路をたどりながら移動する指令である。
【００２９】
各実装機能を上記のように定義した時、例えば第一バージョン「０５．００１」の制御プログラムは、Ｘ軸（機能１）、Ｙ軸（機能２）、Ｚ軸（機能３）、Ａ軸（機能４）、Ｃ軸（機能５）のそれぞれの早送り送り指令及び切削送り指令（機能５−１）を実行するためのプログラムコードを含む。
【００３０】
フラッシュメモリ４４は、バージョンの更新時に追加した機能（以下、「追加機能」という。）を第一バージョン毎に示すテーブル４４Ａを記憶する。ＣＰＵ４１は、テーブル４４Ａに基づいて、第一バージョンから追加機能、実装機能を特定できる。
【００３１】
第二バージョンは、制御プログラムに実装された実装機能のうち有効な機能（以下、「有効機能」という。）を示す。第二バージョンは、第二メインバージョン、ピリオド「．」、及び、第二サブバージョンが、左から順番に配列した文字列である。第二メインバージョンは、ピリオド「．」に対して左側の二桁の数字である。第二サブバージョンは、ピリオド「．」に対して右側の三桁の数字である。第二メインバージョンは、第一バージョンの第一メインバージョンに対応する。第二サブバージョンは、第一バージョンの第一サブバージョンに対応する。第二バージョンが示す有効機能は、同一の文字列を有する第一バージョンの実装機能に対応する。第二バージョンは、常に第一バージョン以下の値となる。
【００３２】
具体例を挙げて説明する。バージョン「ＷＢ００．０５．００１Ｆ０３．０００」の第二バージョンは、「０３．０００」である。第二メインバージョンは「０３」であり、第二サブバージョンは「０００」である。「０３．０００」と同一の文字列を有する第一バージョンの実装機能は、機能１〜機能３である。このため、第二バージョン「０３．０００」が示す有効機能は、機能１〜機能３となる。つまり、バージョン「ＷＢ００．０５．００１Ｆ０３．０００」の制御プログラムは、機能１〜機能５、機能５−１を実行するためのプログラムコードを含んでいるにも関わらず、機能１〜機能３の実行のみに制限され、機能４、機能５、機能５−１の実行は禁止される。
【００３３】
以下、図２に示すように、フラッシュメモリ４４に記憶した導入済バージョンの第一バージョン及び第二バージョンを、「第一導入済バージョン」「第二導入済バージョン」という。外部記憶媒体４６Ａに記憶した更新バージョンの第一バージョン及び第二バージョンを、「第一更新バージョン」「第二更新バージョン」という。
【００３４】
＜制御プログラムの修正＞
バージョンの更新の過程で、機能が追加で実装されると同時に、更新時点で判明している制御プログラムの不具合等が修正する時がある。例えば図３に示す例では、第一バージョンを「０３．０００」から「０４．０００」に更新する過程（Ｓ１）で、制御プログラムを修正する。以下、この修正を「修正１」という。第一バージョン「０４．０００」の制御プログラムには、修正１が含まれる。第一バージョンを「０４．０００」から「０５．０００」に更新する過程（Ｓ２）で、制御プログラムを修正する。以下、この修正を「修正２」という。第一バージョン「０５．０００」の制御プログラムには、修正１、修正２が含まれる。第一バージョンを「０５．０００」から「０５．００１」に更新する過程（Ｓ３）で、制御プログラムを修正する。以下、この修正を「修正３」「修正４」という。第一バージョン「０５．００１」の制御プログラムには、修正１〜修正４が含まれる。
【００３５】
なお、制御プログラムの実装機能のうち実行可能な機能を、第二バージョンが示す有効機能に制限した場合でも、上記の修正は制限されない。このため、例えばＣＰＵ４１は、バージョン「ＷＢ００．０５．００１Ｆ０３．０００」の制御プログラムを、「修正１〜修正４」が修正された状態で実行する。
【００３６】
＜バージョン設定処理＞
図４を参照しバージョン設定処理を説明する。ＣＰＵ４１は、接続口１９（図２参照）に外部記憶媒体４６Ａを装着したことを検出した時、フラッシュメモリ４４のうち、ブートプログラムから呼び出すプログラム開始番地のアドレスに記憶した導入済プログラムを実行することによりバージョン設定処理を開始する。
【００３７】
ＣＰＵ４１は、フラッシュメモリ４４に記憶した導入済バージョンを読み出す（Ｓ１１）。以下、Ｓ１１の処理により読み出した導入済バージョンの第一導入済バージョンを、「Ｖ１ａ」と表記する。Ｓ１１の処理により読み出した導入済バージョンの第二導入済バージョンを、「Ｖ２ａ」と表記する。ＣＰＵ４１は、外部記憶媒体４６Ａに記憶した更新プログラムを読み出す（Ｓ１３）。ＣＰＵ４１は、読み出した更新プログラムを、ＲＡＭ４３に一時的に記憶する。ＣＰＵ４１は、外部記憶媒体４６Ａに記憶した更新バージョンを読み出す（Ｓ１５）。以下、Ｓ１５の処理により読み出した更新バージョンの第一更新バージョンを、「Ｖ１ｂ」と表記する。Ｓ１５の処理により読み出した更新バージョンの第二更新バージョンを、「Ｖ２ｂ」と表記する。
【００３８】
ＣＰＵ４１は、Ｓ１３の処理により読み出してＲＡＭ４３に記憶した更新プログラムを、新たな導入済プログラムとして、フラッシュメモリ４４に記憶する（Ｓ１７）。この時、新たな導入済プログラムを上書きすると、実行中の導入済プログラムが制御不能となってしまうので、導入済プログラムとは異なる領域に記憶する。ＣＰＵ４１は、処理をＳ２３に進める。この時、電源投入時に起動するブートプログラムから呼び出すプログラム開始番地のアドレスも新たな導入済プログラムの開始番地に変更する。
【００３９】
ＣＰＵ４１は、Ｓ１１の処理により読み出した導入済バージョンの第一導入済バージョンＶ１ａと、Ｓ１５の処理により読み出した更新バージョンの第一更新バージョンＶ１ｂが相違すると判定した時（Ｓ２３：ＹＥＳ）、処理をＳ２５に進める。ＣＰＵ４１は、第一更新バージョンＶ１ｂを、新たな第一導入済バージョンとして、Ｖ１ａの代わりにフラッシュメモリ４４に記憶し、第一導入済バージョンを更新し、第二導入済バージョンを更新せず、Ｖ２ａのまま維持する（Ｓ２５）。ＣＰＵ４１は、処理をＳ２９に進める。
【００４０】
ＣＰＵ４１は、第一導入済バージョンＶ１ａと第一更新バージョンＶ１ｂが一致すると判定した時（Ｓ２３：ＮＯ）、処理をＳ２７に進める。ＣＰＵ４１は、第一導入済バージョンを更新せず、Ｖ１ａのまま維持し、第二導入済バージョンを更新せず、Ｖ２ａのまま維持する（Ｓ２７）。ＣＰＵ４１は、処理をＳ２９に進める。
【００４１】
使用者は、第二導入済バージョンの更新を所望する時、操作部１７を介して所定の第一操作を入力する。ＣＰＵ４１は、操作部１７を介して第一操作を検出したか判定する（Ｓ２９）。ＣＰＵ４１は、第一操作を検出したと判定した時（Ｓ２９：ＹＥＳ）、処理をＳ３５に進める。ＣＰＵ４１は、Ｓ１１の処理により読み出した第二導入済バージョンＶ２ａと第二更新バージョンＶ２ｂが相違するか判定する（Ｓ３５）。第二導入済バージョンＶ２ａと第二更新バージョンＶ２ｂが相違すると判定した時（Ｓ３５：ＹＥＳ）、処理をＳ３７に進める。ＣＰＵ４１は、第二更新バージョンＶ２ｂを、新たな第二導入済バージョンとして、Ｖ２ａの代わりにフラッシュメモリ４４に記憶し、第二導入済バージョンを更新し、第一導入済バージョンを更新せず、Ｖ１ａ又はＶ２ａのまま維持する（Ｓ３７）。ＣＰＵ４１は、バージョン設定処理を終了する。
【００４２】
ＣＰＵ４１は、操作部１７を介して第一操作を検出しないと判定した時（Ｓ２９：ＮＯ）、処理をＳ３９に進める。ＣＰＵ４１は、第二導入済バージョンＶ２ａと第二更新バージョンＶ２ｂが一致すると判定した時（Ｓ３５：ＮＯ）、処理をＳ３９に進める。ＣＰＵ４１は、第二導入済バージョンと第一導入済バージョンを更新せず、Ｖ１ａ又はＶ２ａのまま維持する（Ｓ３９）。ＣＰＵ４１は、バージョン設定処理を終了する。
【００４３】
＜バージョン変更処理＞
図５を参照し、バージョン変更処理を説明する。ＣＰＵ４１は、操作部１７を介した操作を検出した時、フラッシュメモリ４４に記憶した導入済プログラムを実行することによりバージョン変更処理を開始する。
【００４４】
使用者は、導入済プログラムのバージョンの第二導入済バージョンを、第一導入済バージョンに更新することを所望する時、操作部１７を介して所定の第二操作を入力する。ＣＰＵ４１は、操作部１７を介して第二操作を検出したか判定する（Ｓ７１）。ＣＰＵ４１は、第二操作を検出しないと判定した時（Ｓ７１：ＮＯ）、バージョン変更処理を終了する。
【００４５】
ＣＰＵ４１は、第二操作を検出したと判定した時（Ｓ７１：ＹＥＳ）、処理をＳ７３に進める。ＣＰＵ４１は、フラッシュメモリ４４に記憶した導入済バージョンを読み出す（Ｓ７３）。以下、Ｓ７３の処理により読み出した導入済バージョンの第一導入済バージョン及び第二導入済バージョンを、夫々、バージョン設定処理（図４参照）の時と同様「Ｖ１ａ」「Ｖ２ａ」と表記する。ＣＰＵ４１は、第一導入済バージョンＶ１ａを、新たな第二導入済バージョンとして、Ｖ２ａの代わりにフラッシュメモリ４４に記憶し、第二導入済バージョンを更新する（Ｓ７５）。該時、第一導入済バージョンと第二導入済バージョンとは一致する。ＣＰＵ４１は、第一導入済バージョンを更新せず、Ｖ１ａのまま維持する（Ｓ７５）。ＣＰＵ４１はバージョン変更処理を終了する。
【００４６】
＜指令実行処理＞
図６を参照し、指令実行処理を説明する。ＣＰＵ４１は、フラッシュメモリ４４に記憶したＮＣプログラムに基づいてモータ６１〜６６を駆動する動作の開始指示を、操作部１７を介して検出した時、フラッシュメモリ４４に記憶した制御プログラムを実行することにより指令実行処理を開始する。ＮＣプログラムに含まれる指令は、制御プログラムの実装機能により全て実行可能であることを前提とする。
【００４７】
ＣＰＵ４１は、フラッシュメモリ４４に記憶した導入済バージョンを読み出す（Ｓ５１）。以下、Ｓ５１の処理により読み出した導入済バージョンの第一導入済バージョン及び第二導入済バージョンを、夫々、バージョン設定処理（図４参照）の時と同様「Ｖ１ａ」「Ｖ２ａ」と表記する。ＣＰＵ４１は、ＲＡＭ４３に記憶した変数ｎ（ｎは整数）に１を設定する。ＣＰＵ４１は、フラッシュメモリ４４に記憶したＮＣプログラムのｎ行目の指令を取得する（Ｓ５３）。以下、ＮＣプログラムのｎ行目の指令を、「Ｘ（ｎ）」と表記する。ＣＰＵ４１は、Ｓ５３の処理により取得した指令Ｘ（ｎ）に基づき、指令に対応するモータ６１〜６６の駆動方法を解析する（Ｓ５５）。
【００４８】
ＣＰＵ４１は、Ｓ５１の処理により読み出した第一導入済バージョンＶ１ａと第二導入済バージョンＶ２ａが一致するか判定する（Ｓ５７）。Ｖ１ａとＶ２ａが一致する時、第一導入済バージョンが示す実装機能と第二導入済バージョンが示す有効機能とは一致するので、制御プログラムに実装された実装機能は全て実行可能である。ＣＰＵ４１は、Ｖ１ａとＶ２ａが一致すると判定した時（Ｓ５７：ＹＥＳ）、処理をＳ６１に進める。
【００４９】
Ｓ５７にてＶ１ａとＶ２ａが一致しない時、制御プログラムの実装機能に有効機能以外の機能が含まれるので、実行が禁止された実装機能が存在する。ＣＰＵ４１は、Ｖ１ａとＶ２ａが一致しないと判定した時（Ｓ５７：ＮＯ）、処理をＳ５９に進める。
【００５０】
ＣＰＵ４１は、第二導入済バージョンが示す有効機能を、テーブル４４Ａ（図３参照）に基づいて特定する。具体的には次の通りである。ＣＰＵ４１は、テーブル４４Ａのうち、第二導入済バージョンＶ２ａ以下の値の第一バージョンの夫々に対応する追加機能を累積する。累積した追加機能は、第二導入済バージョンと同値の第一導入済バージョンに対応する実装機能を示す。ＣＰＵ４１は、累積した追加機能を、第二導入済バージョンが示す有効機能として特定する。つまり、ＣＰＵ４１は、第二導入済バージョンと同値の第一導入済バージョンの実装機能を、第二導入済バージョンが示す有効機能として特定する。例えば、図３に示す例において、第二導入済バージョンが「０３．０００」の時、テーブル４４Ａにおいて「０３．０００」以下の第一バージョン「０１．０００」「０２．０００」「０３．０００」に対応する追加機能「機能１」（第一バージョン「０１．０００」）、「機能２」（第一バージョン「０２．０００」）、「機能３」（第一バージョン「０３．０００」）を、有効機能として特定する。
【００５１】
ＣＰＵ４１は、指令Ｘ（ｎ）が特定した有効機能に該当するか否か判断する（Ｓ５９）。ＣＰＵ４１は、指令Ｘ（ｎ）が特定した有効機能であると判定した時（Ｓ５９：ＹＥＳ）、処理をＳ６１に進める。ＣＰＵ４１は、指令Ｘ（ｎ）に対応する駆動方法でモータ６１〜６６を駆動し（Ｓ６１）、処理をＳ６５に進める。
【００５２】
ＣＰＵ４１は、指令Ｘ（ｎ）が特定した有効機能ではないと判定した時（Ｓ５９：ＮＯ）、処理をＳ６３に進める。ＣＰＵ４１は、指令Ｘ（ｎ）は実行できない旨を使用者に通知するアラーム画面を、表示部１８に表示する（Ｓ６３）。ＣＰＵ４１は処理をＳ６５に進める。
【００５３】
ＣＰＵ４１は、ＮＣプログラムの全ての指令に対してＳ６１又はＳ６３の処理を実行したか判定する（Ｓ６５）。ＣＰＵ４１は、処理を実行していない指令が残存すると判定した時（Ｓ６５：ＮＯ）、ｎに１を加算し更新する（Ｓ６７）。ＣＰＵ４１は処理をＳ５３に戻す。ＣＰＵ４１は、更新したｎに応じた指令Ｘ（ｎ）を取得し（Ｓ５３）、処理を繰り返す。ＣＰＵ４１は、ＮＣプログラムの全ての指令に対応する処理を実行したと判定した時（Ｓ６５：ＹＥＳ）、指令実行処理を終了する。
【００５４】
＜本実施形態の主たる作用、効果＞
数値制御装置４０のＣＰＵ４１は、導入済プログラム、及び、導入済バージョン（第一導入済バージョン及び第二導入済バージョン）をフラッシュメモリ４４に記憶する。ＣＰＵ４１は、ＮＣプログラムの指令Ｘ（ｎ）に対応する処理（モータ６１〜６６の駆動）を、第二導入済バージョンが示す有効機能により実行することが可能か判定する（Ｓ５９）。ＣＰＵ４１は、実行可能と判定した時（Ｓ５９：ＹＥＳ）、指令Ｘ（ｎ）に対応する処理を実行する（Ｓ６１）。このように、ＣＰＵ４１は、一つの導入済ブログラムの導入済バージョンとして、第一導入済バージョンと第二導入済バージョンを記憶することにより、制御プログラムに実装された実装機能のうち有効機能以外の機能を禁止できる。従って、更新プログラムを有効機能毎に複数保持する必要がない。このため、工作機械製造メーカは、制御プログラムを容易に管理できる。
【００５５】
なお、ＣＰＵ４１は、制御プログラムに実装された実装機能のうち有効機能以外の機能を禁止しても、制御プログラムに対する修正は全て有効とする。このため、ＣＰＵ４１は、不具合等を修正した最新の制御プログラムを実行しつつ、実装機能のうち有効機能以外の機能を禁止できる。
【００５６】
ＣＰＵ４１は、第二導入済バージョンが示す有効機能により、指令Ｘ（ｎ）を実行できないと判定した時（Ｓ５９：ＮＯ）、アラーム画面を表示部１８に表示する（Ｓ６３）。該時、ＣＰＵ４１は、指令に対応する処理を有効機能により実行できないことを、使用者に通知できる。
【００５７】
ＣＰＵ４１は、外部記憶媒体４６Ａに記憶した更新プログラムを読み出し（Ｓ１３）、新たな導入済プログラムとしてフラッシュメモリ４４に記憶する（Ｓ１７）。ＣＰＵ４１は、第一操作を検出したと判定した時（Ｓ２９：ＹＥＳ）、導入済バージョンと更新バージョンの夫々の第二バージョン（Ｖ２ａ、Ｖ２ｂ）を比較する。ＣＰＵ４１は、第二導入済バージョンＶ２ａと第二更新バージョンＶ２ｂが相違すると判定した時（Ｓ３５：ＹＥＳ）、第二更新バージョンＶ２ｂを、新たな第二導入済バージョンとして、Ｖ２ａの代わりにフラッシュメモリ４４に記憶し、第二導入済バージョンを更新する（Ｓ３７）。このため、使用者は、第一操作を入力することにより、第二導入済バージョンの更新を数値制御装置４０に指示できる。ＣＰＵ４１は、第一操作を検出しないと判定した時（Ｓ２９：ＮＯ）、第二導入済バージョンを更新せず維持する（Ｓ３９）。このため、ＣＰＵ４１は、機能が追加で実装された更新プログラムにより導入済プログラムを更新する時でも、有効機能を元のまま維持できる。
【００５８】
ＣＰＵ４１は、第二操作を検出したと判定した時（Ｓ７１：ＹＥＳ）、第一導入済バージョンを、新たな第二導入済バージョンとしてフラッシュメモリ４４に記憶し、第二導入済バージョンを更新する（Ｓ７５）。該時、ＣＰＵ４１は、実装機能と有効機能とを一致させることができる。従って、使用者は、実装機能を全て用いて数値制御装置４０に処理を実行させることができる。
【００５９】
第一バージョンは、制御プログラムの実装機能を示す。第一バージョンは、実装機能の追加に伴い昇順で増加する。第二バージョンは、制御プログラムの実装機能のうち有効機能を示す。ＣＰＵ４１は、第二導入済バージョンと同値の第一導入済バージョンの実装機能を、第二導入済バージョンが示す有効機能として特定する。該時、ＣＰＵ４１は、第一バージョン及び第二バージョンを簡易な方法で管理できる。
【００６０】
＜変形例＞
本発明は上記実施形態に限らない。数値制御装置４０は、導入済プログラムと導入済バージョン（第一導入済バージョン及び第二導入済バージョン）を、異なる記憶媒体に記憶してもよい。例えば数値制御装置４０は、複数のフラッシュメモリ４４を備えてもよい。数値制御装置４０は、導入済プログラムと導入済バージョンとを、別のフラッシュメモリ４４に記憶してもよい。ＣＰＵ４１は、ＮＣプログラムの指令Ｘ（ｎ）を順番に実行するのでなく、操作部１７を介して使用者が入力した指令を、指令を検出する度に実行してもよい。
【００６１】
ＣＰＵ４１は、第二導入済バージョンが示す有効機能により、指令Ｘ（ｎ）を実行できないと判定した時（Ｓ５９：ＮＯ）、非図示のスピーカから警告音を出力してもよい。ＣＰＵ４１は、実行できない指令Ｘ（ｎ）を表示部１８に表示してもよい。ＣＰＵ４１は、指令Ｘ（ｎ）が実行可能な第二バージョンを、表示部１８に表示してもよい。
【００６２】
ＣＰＵ４１は、バージョン設定処理において、新たな導入済プログラムとして更新プログラムをフラッシュメモリ４４に記憶した後（Ｓ１７）、使用者が第一操作を入力した時（Ｓ２９：ＹＥＳ）、第二導入済バージョンを更新する（Ｓ３７）。これに対し、ＣＰＵ４１は、第二導入済バージョンの更新を、バージョン設定処理と異なる処理により実行してもよい。例えば、ＣＰＵ４１は、通常動作時において使用者が所定の第三操作を入力した時、第二導入済バージョンを更新してもよい。
【００６３】
ＣＰＵ４１は、第二操作を検出したと判定した時（Ｓ７１：ＹＥＳ）、新たな第二導入済バージョンとして第一導入済バージョンをフラッシュメモリ４４に記憶する（Ｓ７５）。これに対し、使用者は、第二操作の入力と同時に、所望する第二導入済バージョンを入力してもよい。ＣＰＵ４１は、新たな第二導入済バージョンとして、検出した第二導入バージョンをフラッシュメモリ４４に記憶してもよい。これにより、使用者は、第二導入済バージョンを任意の値に変更できる。
【００６４】
バージョンを構成する文字列（「第一共通識別子」「第一バージョン」「第二共通識別子」「第二バージョン」）の構成は、上記実施形態に限定されないことはいうまでもない。例えば、バージョンは、第一共通識別子及び第二共通識別子を含まず、第一バージョン及び第二バージョンのみの構成でもよい。
【００６５】
テーブル４４Ａは、第一バージョン毎に実装機能を示してもよい。具体的には、図３において、第一バージョン「０５．００１」に実装機能「機能１」〜「機能５」「機能５−１」を対応付けてテーブル４４に記憶してもよい。第一バージョン「０１・０００」〜「０５．０００」についての具体的な説明は省略する。尚、各実装機能は他に、使用する時に代金を支払う有料オプション機能であってもよい。
【００６６】
＜その他＞
導入済プログラム及び導入済バージョンを記憶するフラッシュメモリ４４は本発明の「第一記憶部」「第二記憶部」の一例である。Ｓ５３の処理を行うＣＰＵ４１は本発明の「第一受付手段」の一例である。Ｓ５９の処理を行うＣＰＵ４１は本発明の「第一判定手段」の一例である。Ｓ６１の処理を行うＣＰＵ４１は本発明の「実行手段」の一例である。
Ｓ６３の処理を行うＣＰＵ４１は本発明の「通知手段」の一例である。Ｓ１３の処理を行うＣＰＵ４１は本発明の「第二受付手段」の一例である。Ｓ１５の処理を行うＣＰＵ４１は本発明の「取得手段」の一例である。Ｓ１７の処理を行うＣＰＵ４１は本発明の「制御手段」の一例である。Ｓ２５の処理を行うＣＰＵ４１は本発明の「第一更新手段」の一例である。Ｓ２９の処理を行うＣＰＵ４１は本発明の「第二判定手段」の一例である。Ｓ３７の処理を行うＣＰＵ４１は本発明の「第二更新手段」の一例である。Ｓ３９の処理を行うＣＰＵ４１は本発明の「禁止手段」の一例である。Ｓ７１の処理を行うＣＰＵ４１は本発明の「第三受付手段」の一例である。Ｓ７５の処理を行うＣＰＵ４１は本発明の「第三更新手段」の一例である。
【符号の説明】
【００６７】
１        ：工作機械
４０      ：数値制御装置
４１      ：ＣＰＵ
４４      ：フラッシュメモリ
４４Ａ    ：テーブル
Ｖ１ａ    ：第一導入済バージョン
Ｖ１ｂ    ：第一更新バージョン
Ｖ２ａ    ：第二導入済バージョン
Ｖ２ｂ    ：第二更新バージョン
Ｘ（ｎ）        ：指令
【図１】
2018055211.tif 000003
【図２】
2018055211.tif 000004
【図３】
2018055211.tif 000005
【図４】
2018055211.tif 000006
【図５】
2018055211.tif 000007
【図６】
2018055211.tif 000008