(57)【要約】【課題】モーダル命令が正しく設定されているか否かを容易に確認できる数値制御装置、制御プログラム及び記録媒体を提供する。【解決手段】数値制御装置の不揮発メモリには、工作機械の軸移動命令があった時に必要とされるモーダルＧコードが設定された第１モーダル情報テーブル１３２１が記憶されている。ＣＰＵによって読み込まれたブロックに、軸移動に関連するモーダルＧコードが設定されている場合、そのモーダルＧコードが属するモーダルグループに対して指令フラグ「１」が設定される。次ブロックにて軸移動の命令があった場合、第１モーダル情報テーブル１３２１に設定された指令フラグに「０」がある場合、指令フラグが「０」であるモーダルＧコードの記載漏れの疑いがある。この場合ディスプレイに警告が表示される。よってユーザはモーダルＧコードの設定漏れを容易に確認できる。【選択図】図４
2009080591.tif 000002
【特許請求の範囲】
【請求項１】
ＮＣデータでブロック毎に記述されたＮＣプログラムに基づいて、工作機械を制御する数値制御装置において、
前記ＮＣデータをブロック毎に読み込む読込手段と、
当該読込手段に読み込まれた前記ＮＣデータの内容を解析する解析手段と、
前記工作機械の動作命令に関連するモーダル命令の候補を予め記憶するモーダル候補記憶手段と、
前記解析手段によって解析されたブロックに、前記モーダル命令が設定されているか否かを判断するモーダル判断手段と、
当該モーダル判断手段によって、前記モーダル命令が設定されていると判断された場合に、前記モーダル命令が設定されたことを記憶するモーダル設定記憶手段と、
前記解析手段によって解析された内容が、前記動作命令であった場合に、前記モーダル候補記憶手段において、前記モーダル設定記憶手段に記憶された設定に基づき、前記動作命令に関連する前記モーダル命令の候補の全てが設定されているか否かを判断するモーダル設定判断手段と、
当該モーダル設定判断手段によって、前記動作命令に関連する前記モーダル命令の候補のうち少なくとも何れかが設定されていないと判断された場合に報知する報知手段と
を備えたことを特徴とする数値制御装置。
【請求項２】
前記モーダル設定判断手段によって、前記動作命令に関連する前記モーダル命令の候補の全てが、前記モーダル設定手段によって設定されていると判断された場合、又は前記報知手段によって報知された場合に、前記モーダル設定手段による設定を解除する設定解除手段を備えたことを特徴とする請求項１に記載の数値制御装置。
【請求項３】
前記報知手段は、前記動作命令に関連する前記モーダル命令の候補のうち、前記モーダル設定手段によって設定されていない前記モーダル命令を表示する表示装置であることを特徴とする請求項１又は２に記載の数値制御装置。
【請求項４】
前記モーダル候補記憶手段は、複数の前記動作命令毎に、前記モーダル命令の候補を記憶していることを特徴とする請求項１乃至３の何れかに記載の数値制御装置。
【請求項５】
前記動作命令は、軸移動、補間移動、円弧補間、固定サイクルのうち少なくとも何れかに関連する命令であることを特徴とする請求項１乃至４の何れかに記載の数値制御装置。
【請求項６】
工作機械の数値制御を行う数値制御装置を機能させる制御プログラムであって、
ＮＣデータをブロック毎に読み込む第１ステップと、
当該第１ステップで読み込んだ前記ＮＣデータの内容を解析する第２ステップと、
当該第２ステップで解析されたブロックに、モーダル命令が設定されているか否かを判断する第３ステップと、
当該第３ステップで、前記モーダル命令が設定されていると判断した場合に、前記モーダル命令が設定されたことをモーダル設定記憶手段に記憶する第４ステップと、
前記第２ステップで解析された内容が、前記工作機械の動作命令であった場合に、前記動作命令に関連するモーダル命令の候補を予め記憶するモーダル候補記憶手段において、前記モーダル設定記憶手段に記憶された設定に基づき、前記動作命令に関連する前記モーダル命令の候補の全てが設定されているか否かを判断する第５ステップと、
当該第５ステップで、前記動作命令に関連する前記モーダル命令の候補のうち何れかが設定されていないと判断された場合に報知する第６ステップと
からなることを特徴とする制御プログラム。
【請求項７】
請求項６に記載の制御プログラムを記録したことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値制御装置、制御プログラム及び記録媒体に関し、詳細には、ＮＣプログラムに基づいて工作機械を制御する数値制御装置、制御プログラム及び記録媒体に関する。
【背景技術】
【０００２】
従来から、ＮＣプログラムに基づいて工作機械を制御する数値制御装置が知られている。数値制御装置を自動運転させる場合、その指令モードとして、モーダルＧコード（モーダル命令）が使用されることが多い。モーダルＧコードは、一度指令されると、他のＧコードが指令されるまで有効なＧコードである。例えば、電源投入時またはリセット時にモーダルＧコードをパラメータで設定する方法が知られている（例えば、特許文献１参照）。この方法によって、電源投入時もしくはリセット時から工作機械に合致したモーダル状態で動作させることができる。
【０００３】
ところで、このような数値制御装置では、１つの設定による加工が終了して次の設定による加工処理を開始する際には、簡易なプログラムで工作機械を初期状態に設定することが望ましい。そこで例えば、１つの制御指令コードによってモーダルデータの指令状態を初期状態に設定することができる数値制御装置が知られている（例えば、特許文献２参照）。
【特許文献１】特開平４−１４８３０４号公報
【特許文献２】特開２００７−２６３２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献２に記載の数値制御装置では、モーダルＧコードを初期化する際の手間は改善されるが、モーダルＧコードが正しく初期化されているか否かのチェックがなされていない。モーダルＧコードの設定のチェック方法としては、工作機械に付属する表示装置に表示されたＮＣプログラムの目視によるチェックや、工作機械の制御軸を移動させずにプログラムを実行させるマシンロック運転によるチェック等がある。しかし自分で入力したプログラムを自分でチェックするため、プログラムミスの発見を完全に行うのは難しいという問題点があった。
【０００５】
本発明は、上記課題を解決するためになされたものであり、モーダル命令が正しく設定されているか否かを容易に確認できる数値制御装置、制御プログラム及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、請求項１に係る発明の数値制御装置は、ＮＣデータでブロック毎に記述されたＮＣプログラムに基づいて、工作機械を制御する数値制御装置において、前記ＮＣデータをブロック毎に読み込む読込手段と、当該読込手段に読み込まれた前記ＮＣデータの内容を解析する解析手段と、前記工作機械の動作命令に関連するモーダル命令の候補を予め記憶するモーダル候補記憶手段と、前記解析手段によって解析されたブロックに、前記モーダル命令が設定されているか否かを判断するモーダル判断手段と、当該モーダル判断手段によって、前記モーダル命令が設定されていると判断された場合に、前記モーダル命令が設定されたことを記憶するモーダル設定記憶手段と、前記解析手段によって解析された内容が、前記動作命令であった場合に、前記モーダル候補記憶手段において、前記モーダル設定記憶手段に記憶された設定に基づき、前記動作命令に関連する前記モーダル命令の候補の全てが設定されているか否かを判断するモーダル設定判断手段と、当該モーダル設定判断手段によって、前記動作命令に関連する前記モーダル命令の候補のうち少なくとも何れかが設定されていないと判断された場合に報知する報知手段とを備えている。
【０００７】
また、請求項２に係る発明の数値制御装置は、請求項１に記載の発明の構成に加え、前記モーダル設定判断手段によって、前記動作命令に関連する前記モーダル命令の候補の全てが、前記モーダル設定手段によって設定されていると判断された場合、又は前記報知手段によって報知された場合に、前記モーダル設定手段による設定を解除する設定解除手段を備えている。
【０００８】
また、請求項３に係る発明の数値制御装置は、請求項１又は２に記載の発明の構成に加え、前記報知手段は、前記動作命令に関連する前記モーダル命令の候補のうち、前記モーダル設定手段によって設定されていない前記モーダル命令を表示する表示装置であることを特徴とする。
【０００９】
また、請求項４に係る発明の数値制御装置は、請求項１乃至３の何れかに記載の発明の構成に加え、前記モーダル候補記憶手段は、複数の前記動作命令毎に、前記モーダル命令の候補を記憶していることを特徴とする。
【００１０】
また、請求項５に係る発明の数値制御装置は、請求項１乃至４の何れかに記載の発明の構成に加え、前記動作命令は、軸移動、補間移動、円弧補間、固定サイクルのうち少なくとも何れかに関連する命令であることを特徴とする。
【００１１】
また、請求項６に係る発明の制御プログラムは、工作機械の数値制御を行う数値制御装置を機能させる制御プログラムであって、ＮＣデータをブロック毎に読み込む第１ステップと、当該第１ステップで読み込んだ前記ＮＣデータの内容を解析する第２ステップと、当該第２ステップで解析されたブロックに、モーダル命令が設定されているか否かを判断する第３ステップと、当該第３ステップで、前記モーダル命令が設定されていると判断した場合に、前記モーダル命令が設定されたことをモーダル設定記憶手段に記憶する第４ステップと、前記第２ステップで解析された内容が、前記工作機械の動作命令であった場合に、前記動作命令に関連するモーダル命令の候補を予め記憶するモーダル候補記憶手段において、前記モーダル設定記憶手段に記憶された設定に基づき、前記動作命令に関連する前記モーダル命令の候補の全てが設定されているか否かを判断する第５ステップと、当該第５ステップで、前記動作命令に関連する前記モーダル命令の候補のうち何れかが設定されていないと判断された場合に報知する第６ステップとからなる。
【００１２】
また、請求項７に係る発明の記録媒体は、請求項６に記載の制御プログラムを記録している。
【発明の効果】
【００１３】
請求項１に係る発明の数値制御装置では、読込手段がＮＣデータをブロック毎に読み込む。解析手段は、読み込まれたＮＣデータの動作命令を解析する。モーダル判断手段は、解析手段によって解析されたブロックにモーダル命令が設定されているか否かを判断する。モーダル判断手段がモーダル命令が設定されていると判断した場合、モーダル設定記憶手段には、モーダル命令が設定されたことが記憶される。またモーダル候補記憶手段には、工作機械の動作命令に関連するモーダル命令の候補が予め記憶されている。そしてモーダル設定判断手段は、解析手段によって解析された内容が動作命令であった場合に、モーダル候補記憶手段において、モーダル設定記憶手段に記憶された設定に基づき、動作命令に関連する前記モーダル命令の候補の全てが設定されているか否かを判断する。ここで動作命令に関連するモーダル命令の候補のうち何れかが設定されていないと判断された場合、モーダル命令が正常に設定されていない可能性がある。そこで報知手段はユーザに報知する。これによりユーザはモーダル命令が正しく設定されているか否かを容易かつ速やかに確認できる。
【００１４】
また、請求項２に係る発明の数値制御装置では、請求項１に記載の発明の効果に加え、モーダル設定判断手段によって、動作命令に関連するモーダル命令の候補の全てが、モーダル設定手段によって設定されていると判断された場合、又は報知手段によって報知された場合に、設定解除手段がモーダル設定手段による設定を解除する。つまり次のブロックで前回のモーダル状態と異なるモーダル状態が設定される場合に、設定解除手段による設定が解除されるので、新たなモーダル命令を設定することができる。これによりＮＣデータの動作指令に関連するモーダル命令が同一又は前ブロックで設定されているか否かを正確にチェックできる。
【００１５】
また、請求項３に係る発明の数値制御装置では、請求項１又は２に記載の発明の効果に加え、報知手段である表示装置には、動作命令に関連するモーダル命令の候補のうち、モーダル設定手段によって設定されていないモーダル命令が表示される。表示されたモーダル命令は設定漏れの可能性があるので、それらのモーダル命令について確認すればよい。つまりチェックすべきモーダル命令が明確となるので、短時間で効率的にチェックできる。
【００１６】
また、請求項４に係る発明の数値制御装置では、請求項１乃至３の何れかに記載の発明の効果に加え、モーダル候補記憶手段には、複数の動作命令毎に、モーダル命令の候補が記憶されている。従って、ある特定の動作命令に関連するモーダル命令の候補を一括して設定できる。
【００１７】
また、請求項５に係る発明の数値制御装置では、請求項１乃至４の何れかに記載の発明の効果に加え、軸移動、補間移動、円弧補間、固定サイクルのうち少なくとも何れかの動作命令関連するモーダル命令をチェックできる。
【００１８】
また、請求項６に係る発明の制御プログラムでは、第１ステップにて、ＮＣデータがブロック毎に読み込まれる。第２ステップにて、第１ステップで読み込まれたＮＣデータの内容が解析される。第３ステップにて、第２ステップで解析されたブロックに、モーダル命令が設定されているか否かが判断される。第４ステップにて、第３ステップで、モーダル命令が設定されていると判断された場合に、モーダル命令が設定されたことがモーダル設定記憶手段に記憶される。第５ステップにて、第２ステップで解析された内容が工作機械の動作命令であった場合に、動作命令に関連するモーダル命令の候補を予め記憶するモーダル候補記憶手段において、モーダル設定記憶手段に記憶された設定に基づき、動作命令に関連するモーダル命令の候補の全てが設定されているか否かが判断される。第６ステップにて、第５ステップで、動作命令に関連する前記モーダル命令の候補のうち何れかが設定されていないと判断された場合、モーダル命令が正常に設定されていない可能性があるので、ユーザに報知される。これによりモーダル命令が正しく設定されているか否かを容易に確認できる。
【００１９】
また、請求項７に係る発明の記録媒体は、請求項６に記載の制御プログラムを記録しているので、その記録媒体を介すことによって請求項６に記載の制御プログラムを数値制御装置に実行させることができる。これによりモーダル命令が正しく設定されているか否かを容易に確認できる数値制御装置を提供できる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の一実施形態である数値制御装置１について、図面を参照して説明する。数値制御装置１は、ワークの切削加工を行う工作機械３０（図１参照）を数値制御するものである。そして作成されたＮＣプログラム中にモーダルＧコードが正しく設定されているか否かのモーダルチェックを容易にできる点に本発明の特徴を有する。なお、「モーダルＧコード」とは、本発明の「モーダル命令」に相当するものであり、一度指令されると他のＧコードが指令されるまで有効なＧコードである。
【００２１】
はじめに、数値制御装置１の構成について、図１を参照して説明する。図１は、数値制御装置１の電気的構成を示すブロックである。数値制御装置１は、中央演算処理装置であるＣＰＵ１０を備える。ＣＰＵ１０には、各種プログラムを記憶するＲＯＭ１１と、各種データ等を一時的に記憶するＲＡＭ１２と、ワーク加工に係るＮＣプログラム等を記憶する不揮発メモリ１３と、外部との通信を行う入出力インタフェイス１４と、外部に信号を出力する出力インタフェイス１５とが接続されている。
【００２２】
入出力インタフェイス１４には、工作機械３０の操作パネル（図示外）に設けられたキーボード２１と、モーダルチェックの画面に切り替えるチェックボタン２２と、モーダルチェックを開始させるチェック開始ボタン２３と、モーダルチェックの警告を解除する解除ボタン２４と、各種画面を表示するディスプレイ２５とが各々接続されている。
【００２３】
出力インタフェイス１５には、工作機械３０の各種駆動源が接続されている。工作機械３０の駆動源は、ワークを固定するテーブル（図示外）をＸ軸方向に移動させるＸ軸モータ４１を駆動するＸ軸駆動回路３１と、Ｙ軸方向に移動させるＹ軸モータ４２を駆動するＹ軸駆動回路３２と、主軸ヘッド（図示外）をＺ軸方向に移動させるＺ軸モータ４３を駆動するＺ軸駆動回路３３と、主軸ヘッドに回転可能に支持された主軸（図示外）を回転させる主軸モータ４４を駆動する主軸駆動回路３４とである。これらの駆動回路が出力インタフェイス１５に接続されている。以上の構成からなる数値制御装置１では、キーボード２１で作成されたＮＣプログラムに基づき、工作機械３０の各種駆動源を制御することにより、テーブル上のワークが所望の形状に加工される。
【００２４】
次に、ＲＯＭ１１の記憶領域について、図２を参照して説明する。図２は、ＲＯＭ１１の概念図である。ＲＯＭ１１には、ＮＣプログラムを１ブロック毎に読み込んで解析し、工作機械３０の各種駆動源を制御するメインの制御プログラムを記憶する制御プログラム記憶領域１１１と、ＮＣプログラム中にモーダルＧコードが正しく設定されているかのチェックを行うための「モーダルチェックプログラム」を記憶するモーダルチェックプログラム記憶領域１１２等が各々設けられている。このモーダルチェックプログラムが本発明の「制御プログラム」に相当する。
【００２５】
次に、不揮発メモリ１３の記憶領域について、図３を参照して説明する。図３は、不揮発メモリ１３の概念図である。不揮発メモリ１３には、ＮＣプログラムを記憶するＮＣプログラム記憶領域１３１と、複数のモーダルＧコードが動作命令毎に分類して設定された４つのモーダル情報テーブル（図４〜図７参照）と、ＮＣコードの特定の動作命令が各々設定された２つの動作情報テーブル（図８，図９参照）とを記憶する情報テーブル記憶領域１３２等が各々設けられている。
【００２６】
次に、情報テーブル記憶領域１３２に記憶された各種テーブルについて、図４〜図９を参照して説明する。図４は、第１モーダル情報テーブル１３２１の概念図であり、図５は、第２モーダル情報テーブル１３２２の概念図であり、図６は、第３モーダル情報テーブル１３２３の概念図であり、図７は、第４モーダル情報テーブル１３２４の概念図であり、図８は、工具交換情報テーブル１３２５の概念図であり、図９は、主軸回転情報テーブル１３２６の概念図である。
【００２７】
図３に示す情報テーブル記憶領域１３２には、第１モーダル情報テーブル１３２１（図４参照）と、第２モーダル情報テーブル１３２２（図５参照）と、第３モーダル情報テーブル１３２３（図６参照）と、第４モーダル情報テーブル１３２４（図７参照）と、工具交換情報テーブル１３２５（図８参照）と、主軸回転情報テーブル１３２６（図９参照）等が各々記憶されている。
【００２８】
まず、第１モーダル情報テーブル１３２１について説明する。図４に示すように、第１モーダル情報テーブル１３２１には、「軸移動」の命令があった時に必要とされるモーダルＧコードが６つのグループに分類されて各々設定されている。これら６つのグループは、軸移動の際に通常設定される６つの動作条件に各々対応している。具体的には、「送り」に関するモーダルＧコードを集めたＧ０モーダルグループと、「工具径補正」に関するモーダルＧコードを集めたＧ４０モーダルグループと、「工具長補正」に関するモーダルＧコードを集めたＧ４９モーダルグループと、「ワーク座標系設定」に関するモーダルＧコードを集めたＧ５４モーダルグループと、「プログラム座標回転」に関するモーダルＧコードを集めたＧ６９モーダルグループと、「絶対値指令方式、又は相対値指令方式」に関するモーダルＧコードを集めたＧ９０モーダルグループが各々設定されている。
【００２９】
Ｇ０モーダルグループには、Ｇ０（位置決め：早送り）、Ｇ１（直線補間：切削送り）、Ｇ２（円弧補間：時計回り），Ｇ３（円弧補間：反時計回り）のモーダルＧコードが各々設定されている。Ｇ４０モーダルグループには、Ｇ４０（工具径キャンセル）、Ｇ４１（工具径補正：進行方向左）、Ｇ４２（工具径補正：進行方向右）のモーダルＧコードが各々設定されている。Ｇ４９モーダルグループには、Ｇ４９（工具長補正キャンセル）、Ｇ４３，Ｇ４４（工具長補正モード）のモーダルＧコードが各々設定されている。
【００３０】
Ｇ５４モーダルグループには、Ｇ５４（ワーク座標系１）、Ｇ５５（ワーク座標系２）、Ｇ５６（ワーク座標系３）、Ｇ５７（ワーク座標系４）、Ｇ５８（ワーク座標系５）、Ｇ５９（ワーク座標系６）のモーダルＧコードが各々設定されている。ワーク座標系設定では、ＮＣ工作機械の現在位置を、同一ブロック内で指令した各制御軸の値にプリセットできる。Ｇ６９モーダルグループには、Ｇ６９（座標回転モード）、Ｇ６８（座標回転モード）のモーダルＧコードが各々設定されている。Ｇ９０モーダルグループには、Ｇ９０（アブソリュート：絶対値指令方式）、Ｇ９１（インクレメンタル：相対値指令方式）のモーダルＧコードが各々設定されている。
【００３１】
さらに、これら６つのモーダルグループには、そのグループに属するモーダルＧコードがＮＣプログラムの中で指令されたか否かを記憶するための指令フラグが設定される。指令有りの場合は「１」、指令無しの場合は「０」が各々設定される。そしてＮＣプログラムの任意のブロックに、軸移動に関する動作命令が設定された場合、第１モーダル情報テーブル１３２１に設定された６つのモーダルグループにそれぞれ属する６種類のモーダルＧコードが、その動作命令と同一ブロック、若しくは前ブロックに記載されていれば正常である。つまり、軸移動に関する動作命令が設定された場合、６つのモーダルグループの指令フラグが全て「１」になっていれば正常である。
【００３２】
次に、第２モーダル情報テーブル１３２２について説明する。図５に示すように、第２モーダル情報テーブル１３２２には、「補間移動」の命令があった時に必要とされるＧ６４モーダルグループと、Ｆ指令（送り速度）とが各々設定されている。Ｇ６４モーダルグループには、Ｇ６４（切削モード）、Ｇ６１（イグザクトストップモード）のモーダルＧコードが各々設定されている。そしてＧ６４モーダルグループ及びＦ指令にも、ＮＣプログラムの中で指令されたか否かを記憶するために指令フラグが設定される。指令有りの場合は「１」、指令無しの場合は「０」が各々設定される。そしてＮＣプログラムの任意のブロックに、補間移動に関する動作命令が設定されている場合、第２モーダル情報テーブル１３２２に設定されたＧ６４モーダルグループに属するモーダルＧコードと、Ｆ指令とが、その動作命令と同一ブロック、若しくは前ブロックに記載されていれば正常である。つまり、補間移動に関する動作命令が設定された場合は、Ｇ６４モーダルグループとＦ指令の指令フラグが何れも「１」になっていれば正常である。
【００３３】
次に、第３モーダル情報テーブル１３２３について説明する。図６に示すように、第３モーダル情報テーブル１３２３には、「円弧補間」の命令があった時に必要とされるＧ１７モーダルグループが設定されている。Ｇ１７モーダルグループには、Ｇ１７（ＸＹ平面選択）、Ｇ１８（ＹＺ平面選択）、Ｇ１９（ＺＸ平面選択）のモーダルＧコードが各々設定されている。そしてＧ１７モーダルグループにも、ＮＣプログラムの中で指令されたか否かを記憶するために指令フラグが設定される。指令有りの場合は「１」、指令無しの場合は「０」が各々設定される。そしてＮＣプログラムの任意のブロックに、円弧補間に関する動作命令が設定されている場合、第３モーダル情報テーブル１３２３に設定されたＧ１７モーダルグループに属するモーダルＧコードが、その動作命令と同一ブロック、若しくは前ブロックに記載されていれば正常である。つまり、円弧補間に関する動作命令が設定された場合は、Ｇ１７モーダルグループの指令フラグが「１」になっていれば正常である。
【００３４】
次に、第４モーダル情報テーブル１３２４について説明する。図７に示すように、第４モーダル情報テーブル１３２４には、「固定サイクル」の命令があった時に必要とされるＧ９８モーダルグループが設定されている。Ｇ９８モーダルグループには、Ｇ９８（イニシャル点レベル復帰）、Ｇ９９（Ｒ点レベル復帰）のモーダルＧコードが各々設定されている。そしてＧ９８モーダルグループにも、ＮＣプログラムの中で指令されたか否かを記憶するために指令フラグが設定される。指令有りの場合は「１」、指令無しの場合は「０」が各々設定される。そしてＮＣプログラムの任意のブロックに、円弧補間に関する動作命令が設定されている場合、第２モーダル情報テーブル１３２２に設定されたＧ９８モーダルグループに属するモーダルＧコードが、その動作命令と同一ブロック、若しくは前ブロックに記載されていれば正常である。つまり、固定サイクルに関する動作命令が設定された場合は、Ｇ９８モーダルグループの指令フラグが「１」になっていれば正常である。
【００３５】
次に、工具交換情報テーブル１３２５について説明する。図８に示すように、工具交換情報テーブル１３２５には、「工具交換命令」（Ｍ６）があった時に必要とされるＴ指令（工具番号指令）が設定されている。そしてＴ指令にも、ＮＣプログラムの中で指令されたか否かを記憶するために指令フラグが設定される。指令有りの場合は「１」、指令無しの場合は「０」が各々設定される。そしてＮＣプログラムの任意のブロックに、工具交換命令に関する動作命令が設定されている場合、Ｔ指令が、その動作命令と同一ブロック、若しくは前ブロックに記載されていれば正常である。つまり、工具交換に関する動作命令が設定された場合は、Ｔ指令の指令フラグが「１」になっていれば正常である。
【００３６】
次に、主軸回転情報テーブル１３２６について説明する。図９に示すように、主軸回転情報テーブル１３２６には、「主軸回転命令」（Ｍ３，Ｍ４）があった時に必要とされるＳ指令（回転数指令）が設定されている。そしてＳ指令にも、ＮＣプログラムの中で指令されたか否かを記憶するために指令フラグが設定される。指令有りの場合は「１」、指令無しの場合は「０」が各々設定される。そしてＮＣプログラムの任意のブロックに、主軸回転命令に関する動作命令が設定されている場合、Ｓ指令が、その動作命令と同一ブロック、若しくは前ブロックに記載されていれば正常である。つまり、主軸回転に関する動作命令が設定された場合は、Ｓ指令の指令フラグが「１」になっていれば正常である。
【００３７】
次に、ディスプレイ２５に表示されるチェック画面２５１と、警告画面２５２とについて、図１０を参照して説明する。図１０は、ディスプレイ２５に表示されたチェック画面２５１と、警告画面２５２とを示す概念図である。工作機械３０の操作パネル（図示外）に設けられたチェックボタン２２（図１参照）を押下すると、ディスプレイ２５の画面が左右に分割され、左側にチェック画面２５１が表示され、右側に警告画面２５２が表示される。さらにキーボード２１の操作によって、チェック対象とするＮＣプログラムがチェック画面２５１に表示される。次いで、チェック開始ボタン２３を押下すると、チェック画面２５１に表示されたＮＣプログラムのモーダルチェックが実行される。モーダルチェックでは、シーケンス番号の若い方から１ブロック毎に順に読み込まれ、モーダルＧコードが正常に設定されているかのチェックがなされる。
【００３８】
チェック画面２５１において、現在チェックされているブロックは、四角い枠６０に囲まれて表示される。これによりユーザは、現在チェック中のブロックを容易に認識できる。そして、ＮＣプログラムのチェック中に、モーダルＧコードの記載漏れの疑いがある場合、警告画面２５２に記載漏れの疑いのあるモーダルＧコードの候補が全て表示され、チェックが一時停止される。これによりユーザは現在チェック中のブロックにおいて、モーダルＧコードの設定ミスの疑いがあることがわかる。さらに警告画面２５２に表示された候補の中から記載漏れの疑いのあるモーダルＧコードを確認できる。よってプログラムの修正を速やかに行うことができる。
【００３９】
次に、ＣＰＵ１０によるモーダルチェックの制御について、図１１乃至図１３のフローチャートを参照して説明する。図１１は、ＣＰＵ１０によるモーダルチェックのフローチャートであり、図１２は、図１１の続きを示すフローチャートでり、図１３は、図１１の続きを示すフローチャートである。ここでは、図１０に示すチェック画面２５１に表示されたＮＣプログラムをチェックする場合について説明する。
【００４０】
まず、工作機械３０の操作パネル（図示外）に設けられたチェックボタン２２（図１参照）が押下されると、ディスプレイ２５にチェック画面２５１と、警告画面２５２とが各々表示される。チェック画面２５１には、不揮発メモリ１３のＮＣプログラム記憶領域１３１（図３参照）に記憶されたＮＣプログラムのうち選択されたＮＣプログラムが読み込まれて表示される。そして、チェック開始ボタン２３が押下されると、ＲＯＭ１１のモーダルチェックプログラム記憶領域１１２（図２参照）に記憶されたモーダルチェックプログラムが呼び出され、ＣＰＵ１０によるモーダルチェックが開始される。
【００４１】
はじめに、各種データの初期化が行われる（Ｓ１）。ここでは、不揮発メモリ１３の情報テーブル記憶領域１３２に記憶された各種テーブル（図４〜図９参照）の指令フラグが全て「０」にされ、「設定無し」の状態に設定される。次いで、シーケンス番号Ｎ０１の１ブロックが読み込まれる（Ｓ２）。続いて、その読み込まれたＮＣデータの内容が解析される（Ｓ３）。シーケンス番号Ｎ０１のＮＣデータは、「Ｇ９０Ｇ５４」であるので、「絶対値指令方式でワーク座標系１のモーダル状態を設定せよ。」との内容の指示である。
【００４２】
次いで、解析された１ブロックの中に、モーダルＧコードが有るか否かが判断される（Ｓ４）。シーケンス番号Ｎ０１には、「Ｇ９０」と「Ｇ５４」の２つのモーダルＧコードが設定されている。従って、１ブロック中にモーダルＧコードが有るので（Ｓ４：ＹＥＳ）、第１モーダル情報テーブル１３２１のＧ９０モーダルグループと、Ｇ５４モーダルグループとが「指令有り」に設定される（Ｓ６）。つまり、Ｇ５４モーダルグループの指令フラグと、Ｇ９０モーダルグループの指令フラグとに「１」が各々設定される（図４参照）。さらに、解析されたＮＣデータに動作命令が有るか否かが判断される（Ｓ７）。「Ｇ９０」「Ｇ５４」は、何れもモーダルＧコードであって動作命令ではないので（Ｓ７：ＮＯ）、Ｓ２に戻る。
【００４３】
次いで、シーケンス番号Ｎ０２が読み込まれる（Ｓ２）。シーケンス番号Ｎ０２のＮＣデータは、「Ｚ１００」である。続いて、その読み込まれたＮＣデータの内容が解析される（Ｓ３）。さらに、解析された１ブロックの中に、モーダルＧコードが有るか否かが判断される（Ｓ４）。シーケンス番号Ｎ０２には、モーダルＧコードが設定されていないので（Ｓ４：ＮＯ）、図１２のフローチャートに移り、シーケンス番号Ｎ０２に、工具交換命令であるＭ６が有るか否かが判断される（Ｓ９）。Ｍ６はないので（Ｓ９：ＮＯ）、次いで主軸回転命令であるＭ３，Ｍ４が有るかが判断される（Ｓ１２）。Ｍ３，Ｍ４もないので（Ｓ１２：ＮＯ）、次いで、Ｍ３０であるか否かが判断される（Ｓ１５）。Ｍ３０ではないので（Ｓ１５：ＮＯ）、図１１のフローチャートのＳ７に移行する。
【００４４】
次いで、解析されたＮＣデータに動作命令が有るか否かが判断される（Ｓ７）。「Ｚ１００」は、「Ｚ１００に軸を移動させなさい。」との内容の指示である。つまり、軸を移動させる動作命令であるので（Ｓ７：ＹＥＳ）、図１３のフローチャートに移り、その動作命令に関連する全てのモーダルグループが「指令有り」になっているか否かが判断される（Ｓ１７）。ここで、軸移動の命令があったので、第１モーダル情報テーブル１３２１に設定された６つのモーダルグループにそれぞれ属する６種類のモーダルＧコードが、その動作命令と同一ブロック、若しくは前ブロックに記載されていれなければならない。
【００４５】
従って、もし、６つのモーダルグループの指令フラグが全て「１」になっている場合（Ｓ１７：ＹＥＳ）、６種類のモーダルＧコードが、その動作命令と同一ブロック、若しくは前ブロックに記載されていることになる。この場合、軸移動命令に関するモーダルＧコードは正しく設定されているので、次ブロックのチェックを継続する（Ｓ２）。
【００４６】
ところが、本実施例では、図４に示すように、指令フラグ「１」が設定されているのは、Ｇ９０モーダルグループと、Ｇ５４モーダルグループとのみであって、その他のモーダルグループの指令フラグは「０」である。つまり、軸移動命令に関連する全てのモーダルグループが「指令有り」になっていないので（Ｓ１７：ＮＯ）、軸移動に関するモーダルＧコードの設定ミスの疑いがある。そこで、警告画面２５２に警告メッセージが表示されると共に、指令フラグが「０」のモーダルグループに属する全てのモーダルＧコードが表示される（Ｓ１８）。これにより、ユーザは現在チェック中のブロックにおいて、モーダルＧコードの設定ミスの疑いがあることがわかる。さらに警告画面２５２に表示された候補（図１０参照）の中から、記載漏れの疑いのあるモーダルＧコードを確認できる。よってプログラムの修正を速やかに行うことができる。
【００４７】
続いて、操作パネルの解除ボタン２４が押下されて、警告が解除されたか否かが判断される（Ｓ１９）。解除されない間は（Ｓ１９：ＮＯ）、Ｓ１８に戻って、警告画面２５２に警告が継続して表示される。ユーザは警告を無視してチェックを再開させるために、解除ボタン２４を押下する。そして解除ボタン２４が押下され、警告が解除された場合（Ｓ１９：ＹＥＳ）、警告画面２５２に表示されていた内容が消去される（Ｓ２０）。そして、図１１のフローチャートのＳ２に戻り、次ブロックのチェックを継続する（Ｓ２）。
【００４８】
次に、シーケンス番号Ｎ０３のＮＣデータが読み込まれる（Ｓ２）。シーケンス番号Ｎ０３のＮＣデータは、「Ｍ６Ｔ１」である。続いて、その読み込まれたＮＣデータの内容が解析される（Ｓ３）。次いで、解析された１ブロックの中に、モーダルＧコードが有るか否かが判断される（Ｓ４）。シーケンス番号Ｎ０３には、モーダルＧコードが無いので（Ｓ４：ＮＯ）、図１２のフローチャートに移り、シーケンス番号Ｎ０３に、工具交換命令であるＭ６が有るか（Ｓ９）か否かが判断される。シーケンス番号Ｎ０３には、「Ｍ６」のコードが設定されているので（Ｓ９：ＹＥＳ）、同一ブロック内に工具番号指令であるＴ指令が有るか否かが判断される（Ｓ１０）。シーケンス番号Ｎ０３にはＴ指令が有るので（Ｓ１０）、工具交換情報テーブル（図８参照）のＴ指令に対して、指令フラグ「１」が設定される（Ｓ１１）。なお、同一ブロック内にＴ指令がない場合は（Ｓ１０：ＮＯ）、工具交換情報テーブルのＴ指令の指令フラグは、そのまま変更されない。
【００４９】
次いで、図１１のフローチャートに移り、解析されたＮＣデータに動作命令が有るか否かが判断される（Ｓ７）。「Ｍ６Ｔ１」は「工具番号１番の工具を工具交換せよ。」との動作命令であるので（Ｓ７：ＹＥＳ）、図１３のフローチャートに移り、工具交換命令に必須となるＴ指令が、「指令有り」になっているか否かが判断される（Ｓ１７）。図８に示すように、工具交換情報テーブル１３２５のＴ指令の指令フラグには「１」が設定されているので、Ｔ指令が、その動作命令と同一ブロックに記載されている。この場合、Ｍ６指令に対して、Ｔ指令が正しく設定されている。よって、Ｓ２に戻り、次ブロックのチェックを継続する（Ｓ２）。
【００５０】
次に、シーケンス番号Ｎ０４のＮＣデータが読み込まれる（Ｓ２）。シーケンス番号Ｎ０４のＮＣデータは「Ｍ３」である。続いて、その読み込まれたＮＣデータの内容が解析される（Ｓ３）。次いで、読み込まれた１ブロックの中にモーダルＧコードが有るか否かが判断される（Ｓ４）。シーケンス番号Ｎ０４には、モーダルＧコードが無いので（Ｓ４：ＮＯ）、図１２のフローチャートに移り、さらにシーケンス番号Ｎ０４に、Ｍ６が有るか（Ｓ９）か否かが判断される。シーケンス番号Ｎ０４には、Ｍ６が無いので（Ｓ９：ＮＯ）、シーケンス番号Ｎ０４に、主軸回転命令であるＭ３，Ｍ４が有るか（Ｓ１２）か否かが判断される。シーケンス番号Ｎ０４には、「Ｍ３」のコードが設定されているので（Ｓ１２：ＹＥＳ）、さらに同一ブロック内に回転数指令であるＳ指令が有るか否かが判断される（Ｓ１３）。シーケンス番号Ｎ０４にはＳ指令がないので（Ｓ１３：ＮＯ）、主軸回転情報テーブル１３２６のＳ指令の指令フラグは、そのまま変更されない。なお、Ｓ指令がある場合は（Ｓ１３：ＹＥＳ）、主軸回転情報テーブル１３２６のＳ指令の指令フラグには、「１」が設定される（Ｓ１４）。
【００５１】
次いで、図１１のフローチャートに移り、解析されたＮＣデータに動作命令が有るか否かが判断される（Ｓ７）。「Ｍ３」は「主軸を回転せよ。」との動作命令であるので（Ｓ７：ＹＥＳ）、図１３のフローチャートに移り、主軸回転命令に必須となる回転数指令（Ｓ指令）が、「指令有り」になっているか否かが判断される（Ｓ１７）。図９に示すように、主軸回転情報テーブル１３２６の工具交換命令の指令フラグには「０」が設定されているので、Ｓ指令は、その動作命令と同一ブロックに記載されていない。この場合、Ｍ３，Ｍ４指令に対して、Ｓ指令が正しく設定されていないので、警告画面２５２に警告メッセージが表示されると共に、Ｓコードが表示される（Ｓ１８）。これによりユーザは現在チェック中のブロックにおいて、Ｓ指令の記載漏れの疑いがあることがわかるので、プログラムの修正を速やかに行うことができる。
【００５２】
続いて、操作パネルの解除ボタン２４が押下されて、警告が解除されたか否かが判断される（Ｓ１９）。解除されない間は（Ｓ１９：ＮＯ）、Ｓ１８に戻って、警告画面２５２に警告が表示される。ユーザは警告を無視してチェックを再開させるために、解除ボタン２４を押下する。解除ボタン２４が押下され、警告が解除された場合（Ｓ１９：ＹＥＳ）、警告画面２５２に表示されていた警告メッセージと、記載漏れの疑いのあるＳコードとが消去される（Ｓ２０）。そして、図１１のフローチャートのＳ２に戻り、次ブロックのチェックを継続する。
【００５３】
こうしてシーケンス番号Ｎ０５以降において上記処理が繰り返され、最後のブロックが読み込まれ（Ｓ２）、内容が解析される（Ｓ３）。最後のブロックは、終了コードであるＭ３０であるので（Ｓ４：ＮＯ、Ｓ９：ＮＯ、Ｓ１２：ＮＯ、Ｓ１５：ＹＥＳ）、チェック対象であるＮＣプログラムを最後までチェックしたことになるので、モーダルチェックが終了する。
【００５４】
なお、以上の説明において、図１１のフローチャートのＳ２を処理を実行するＣＰＵ１０が本発明の「読込手段」に相当し、Ｓ３の処理を実行するＣＰＵ１０が本発明の「解析手段」に相当し、Ｓ４の処理を実行するＣＰＵ１０が本発明の「モーダル判断手段」に相当し、Ｓ１７の処理を実行するＣＰＵ１０が本発明の「モーダル設定判断手段」に相当する。さらに、不揮発メモリ１３の情報テーブル記憶領域１３２が本発明の「モーダル候補記憶手段」と「モーダル設定記憶手段」に相当する。また、図１０に示すディスプレイ２５が本発明の「表示装置」に相当する。
【００５５】
以上説明したように、本実施形態の数値制御装置１では、作成したＮＣプログラムにおいて、モーダルＧコードが正しく設定されているか否かのモーダルチェックを行うことができる。不揮発メモリ１３には、「軸移動」、「補間移動」等の工作機械３０の動作命令があった時に必要とされるモーダルＧコードが分類された各種テーブルが記憶されている。例えば、不揮発メモリ１３に記憶された第１モーダル情報テーブル１３２１には、「軸移動」の命令があった時に必要とされるモーダルＧコードが６つのグループに分類されて各々設定されている。
【００５６】
ＣＰＵ１０によって読み込まれた１ブロック内に、軸移動に関連するモーダルＧコードが設定されている場合、そのモーダルＧコードが属するモーダルグループに対して、指令フラグ「１」が設定される。そして次ブロックにて軸移動の命令があった場合、第１モーダル情報テーブル１３２１に設定された６つのモーダルグループの指令フラグが全て「１」になっていれば、軸移動に関するモーダルＧコードは正しく設定されている。その反対に、６つのモーダルグループのうち何れかの指令フラグが「０」になっている場合、モーダルＧコードの記載漏れの疑いがある。この場合、ディスプレイ２５の警告画面２５２に警告が表示される。これによりユーザは現在チェック中のブロックにおいて、モーダルＧコードの設定漏れがあることがわかる。さらに警告画面２５２には、指令フラグが「０」になっているモーダルグループに属するモーダルＧコードが表示されるので、その表示された候補の中から、記載漏れの疑いのあるモーダルＧコードを確認できる。よってプログラムの修正を速やかに行うことができる。
【００５７】
なお、本発明の数値制御装置は、上記実施形態に限らず、各種の変形が可能なことはいうまでもない。例えば、上記実施形態で示したモーダルＧコードに加え、他のモーダルＧコードのチェックを行うようにしてもよい。また、特定のモーダルＧコードのみをチェックするようにしてもよい。また、上記実施例は、Ｓ１９において、特定のモーダルを一度解除した後も、同一命令がＮＣプログラム上にあると、再度警告を表示してしまうため、一度警告を行ない解除操作を行なったものは、Ｓ２０において、情報テーブル記憶領域１３２上に解除操作を１度行なったことを示す別のフラグ「２」を記憶して、次ブロック以降のチェックにおいて、警告表示および、解除操作をしないようにすると良い。
【００５８】
また、上記実施形態の変形例として、作成されるＮＣプログラムの中で、所定のパラメータに値を書き込んだり、読み出したりする際に使用されるＲ／Ｗマクロ変数について本発明を適用することもできる。例えば、Ｒ／Ｗマクロ変数が読み込まれる際に、そのＲ／Ｗマクロ変数に既に値が書き込まれているか否かのチェックを行うことができる。
【００５９】
そこで、上記実施形態の変形例として、Ｒ／Ｗマクロ変数の設定が正しく行われているか否かのチェックを行うマクロチェックについて、本発明の概念を適用した数値制御装置の変形例について、図面を参照して説明する。図１４は、マクロ情報テーブル１３２７の概念図であり、図１５は、ディスプレイ２５に表示されたチェック画面２５３と、警告画面２５４とを示す概念図であり、図１６は、ＣＰＵ１０によるマクロチェックのフローチャートである。
【００６０】
なお、変形例である数値制御装置は、上記実施形態の数値制御装置１の構成（図１参照）とほぼ同じであるので、上記実施形態と同符号を付して説明を省略する。そして、不揮発メモリ１３に記憶されたマクロ情報テーブル１３２７と、ディスプレイ２５に表示されるチェック画面２５３、及び警告画面２５４と、ＣＰＵ１０によるマクロチェックの制御とを中心に説明する。
【００６１】
まず、不揮発メモリ１３に記憶されたマクロ情報テーブル１３２７について説明する。図１４に示すように、マクロ情報テーブル１３２７には、図１５に示すＮＣプログラム中に設定された複数のＲ／Ｗマクロ変数「♯１００」、「♯１０１」、「♯１０２」、「♯１０３」…が記憶されている。これらＲ／Ｗマクロ変数には、ＮＣプログラムを実行する過程において、各種設定値が各々書き込まれるようになっている。さらにこれらＲ／Ｗマクロ変数には、値が書き込み済み（以下、ＷＲＩＴＥ済みと呼ぶ。）であることを記憶するための書込フラグが設定される。あるＲ／Ｗマクロ変数がＷＲＩＴＥ済みである場合は、書込フラグ「１」が設定され、ＷＲＩＴＥ済みでない場合は書込フラグ「０」が設定される。このようなマクロ情報テーブル１３２７により、どのＲ／Ｗマクロ変数がＷＲＩＴＥ済みであるか否かを容易に判別できる。
【００６２】
次に、ディスプレイ２５に表示されるチェック画面２５３と、警告画面２５４とについて、図１５を参照して説明する。工作機械３０の操作パネル（図示外）に設けられたマクロチェックボタン（図示外）を押下すると、ディスプレイ２５の下側を除く大部分に、チェック画面２５３が表示され、下側に警告画面２５４が表示される。チェック画面２５３には、チェック対象であるＮＣプログラムが表示される。次いで、チェック開始ボタン２３を押下すると、チェック画面２５１に表示されたＮＣプログラムのマクロチェックが実行される。マクロチェックでは、シーケンス番号の若い方から１ブロック毎に順に読み込まれ、Ｒ／Ｗマクロ変数が正常に設定されているかのチェックがなされる。
【００６３】
また、現在チェックされているブロックは、四角い枠６１に囲まれて表示される。これによりユーザは、現在チェック中のブロックを容易に認識できる。そしてＮＣプログラムのチェック中に、ある特定のＲ／Ｗマクロ変数について読み込み命令（以下、ＲＥＡＤ命令と呼ぶ）があった場合に、そのＲ／Ｗマクロ変数について既に書き込み命令（以下、ＷＲＩＴＥ命令と呼ぶ）があったか否かのチェックを行う。ＷＲＩＴＥ命令がされていないＲ／Ｗマクロ変数について値を読み込むことはできない。例えば、シーケンス番号Ｎ０６番において、値が書き込まれていない♯１０３についてＲＥＡＤ命令があった場合、警告画面２５４に警告表示がされると共に、「♯１０３は、ＷＲＩＴＥされていません。」というメッセージが表示される。これによりユーザは現在チェック中であるシーケンス番号Ｎ０６番において、♯１０３に設定ミスがあることがわかる。よってプログラムの修正を速やかに行うことができる。
【００６４】
次に、ＣＰＵ１０によるマクロチェックの制御について、図１６のフローチャートを参照して説明する。ここでは、図１５に示すチェック画面２５３に表示されたＮＣプログラムをチェックする場合について説明する。
【００６５】
まず、工作機械３０の操作パネル（図示外）に設けられたマクロチェックボタン（図示外）が押下されると、ディスプレイ２５にチェック画面２５３と、警告画面２５４とが各々表示される。チェック画面２５３には、不揮発メモリ１３のＮＣプログラム記憶領域１３１（図３参照）に記憶されたＮＣプログラムのうち特定のＮＣプログラムが読み込まれて表示される。そして、チェック開始ボタン２３が押下されると、ＲＯＭ１１に記憶されたマクロチェックプログラムが呼び出され、ＣＰＵ１０によるマクロチェックが開始される。
【００６６】
はじめに、各種データの初期化が行われる（Ｓ３１）。ここでは、不揮発メモリ１３のマクロ情報テーブル１３２７の各Ｒ／Ｗマクロ変数に書き込まれた値が全て初期化される。次いで、シーケンス番号Ｎ０１の１ブロックが読み込まれる（Ｓ３２）。続いて、その読み込まれたＮＣデータの内容が解析される（Ｓ３３）。さらにその解析された内容が、Ｒ／Ｗマクロ変数の値を読み込むＲＥＡＤ命令であるか否かが判断される（Ｓ３４）。シーケンス番号Ｎ０１のＮＣデータは、「♯１００＝５０」である。これは、「♯１００に５０を書き込みなさい。」という内容のＷＲＩＴＥ命令である。従って、ＲＥＡＤ命令ではないので、（Ｓ３４：ＮＯ）、続いて、Ｒ／Ｗマクロ変数の値を書き込むＷＲＩＴＥ命令であるか否かが判断される（Ｓ３９）。「♯１００＝５０」は、ＷＲＩＴＥ命令であるので（Ｓ３９：ＹＥＳ）、マクロ情報テーブル１３２７の♯１００に対して、「５０」が書き込まれる（Ｓ４０）。さらに♯１００がＷＲＩＴＥ済みであることを設定するために、♯１００の書き込みフラグに「１」が設定され（Ｓ４１）、Ｓ３２に戻る。
【００６７】
次いで、シーケンス番号Ｎ０２が読み込まれる（Ｓ３２）。続いて、その読み込まれたＮＣデータの内容が解析される（Ｓ３３）。さらにその解析された内容が、Ｒ／Ｗマクロ変数の値を読み込むＲＥＡＤ命令であるか否かが判断される（Ｓ３４）。シーケンス番号Ｎ０２のＮＣデータは、「♯１０１＝５２」である。これは、「♯１０１に５０を書き込みなさい。」という内容のＷＲＩＴＥ命令である。従って、ＲＥＡＤ命令ではないので、（Ｓ３４：ＮＯ）、続いて、Ｒ／Ｗマクロ変数の値を書き込むＷＲＩＴＥ命令であるか否かが判断される（Ｓ３９）。「♯１０１＝５２」は、ＷＲＩＴＥ命令であるので（Ｓ３９：ＹＥＳ）、マクロ情報テーブル１３２７の♯１０１に対して、「５２」が書き込まれる（Ｓ４０）。さらに♯１０１がＷＲＩＴＥ済みであることを設定するために、♯１０１の書き込みフラグに「１」が設定され（Ｓ４１）、Ｓ３２に戻る。
【００６８】
次いで、シーケンス番号Ｎ０３が読み込まれる（Ｓ３２）。続いて、その読み込まれたＮＣデータの内容が解析される（Ｓ３３）。さらにその解析された内容が、Ｒ／Ｗマクロ変数の値を読み込むＲＥＡＤ命令であるか否かが判断される（Ｓ３４）。シーケンス番号Ｎ０３のＮＣデータは、「♯１０２＝［♯１００＋♯１０１／２］」である。これは、「♯１０２に［♯１００＋♯１０１／２］の値を書き込みなさい。」という内容のＷＲＩＴＥ命令である。従って、ＲＥＡＤ命令ではないので、（Ｓ３４：ＮＯ）、続いて、Ｒ／Ｗマクロ変数の値を書き込むＷＲＩＴＥ命令であるか否かが判断される（Ｓ３９）。「♯１０１＝５０」は、ＷＲＩＴＥ命令であるので（Ｓ３９：ＹＥＳ）、マクロ情報テーブル１３２７の♯１０２に対して、「♯１００＋♯１０１／２」が書き込まれる（Ｓ４０）。さらに♯１０２がＷＲＩＴＥ済みであることを設定するために、♯１０２の書き込みフラグに「１」が設定され（Ｓ４１）、Ｓ３２に戻る。
【００６９】
次いで、シーケンス番号Ｎ０４が上記同様に読み込まれて解析される（Ｓ３２、Ｓ３３）。なお、シーケンス番号Ｎ０４は、「Ｇ９０Ｇ０」であり、Ｒ／Ｗマクロ変数のＲＥＡＤ命令でも、ＷＲＩＴＥ命令でもないので（Ｓ３４：ＮＯ、Ｓ３９ＮＯ）、マクロ情報テーブル１３２７には何も設定されず、シーケンス番号Ｎ０４のチェックが終了する。次いで、Ｍ３０であるか否かが判断される（Ｓ４２）。Ｍ３０ではないので（Ｓ４２：ＮＯ）、Ｓ３２に戻る。
【００７０】
次いで、シーケンス番号Ｎ０５が読み込まれる（Ｓ３２）。続いて、その読み込まれたＮＣデータの内容が解析される（Ｓ３３）。さらにその解析された内容が、Ｒ／Ｗマクロ変数の値を読み込むＲＥＡＤ命令であるか否かが判断される（Ｓ３４）。シーケンス番号Ｎ０５のＮＣデータは、「Ｇ０Ｘ［♯１００］Ｙ［♯１０１］」である。これは、「Ｘ［♯１００］Ｙ［♯１０１］に軸を位置決めしなさい。」という内容であって、♯１００と♯１０１とを読み込むＲＥＡＤ命令である。従って、ＲＥＡＤ命令であるので、（Ｓ３４：ＹＥＳ）、続いて、♯１００と♯１０１とについて、既にＷＲＩＴＥ済みであるか否かが判断される（Ｓ３５）。ところが、図１４に示すように、マクロ情報テーブル１３２７の♯１００，♯１０１には、「５０」、「５２」が既に書き込まれており、何れも書込フラグ「１」が設定されている。従って、何れもＷＲＩＴＥ済みであるので（Ｓ３５：ＹＥＳ）、続いて、Ｒ／Ｗマクロ変数がＷＲＩＴＥ命令であるか否かが判断される（Ｓ３９）。ここでは、ＲＥＡＤ命令であるので（Ｓ３９：ＮＯ）、次いで、Ｍ３０であるか否かが判断される（Ｓ４２）。Ｍ３０ではないので（Ｓ４２：ＮＯ）、Ｓ３２に戻る。
【００７１】
次いで、シーケンス番号Ｎ０６が読み込まれる（Ｓ３２）。続いて、その読み込まれたＮＣデータの内容が解析される（Ｓ３３）。さらにその解析された内容が、Ｒ／Ｗマクロ変数の値を読み込むＲＥＡＤ命令であるか否かが判断される（Ｓ３４）。シーケンス番号Ｎ０６のＮＣデータは、「Ｇ０Ｚ［♯１０３］」である。これは、「Ｚ［♯１０３］に軸を位置決めしなさい。」という内容である。従って、♯１０３を読み込むためのＲＥＡＤ命令であるので（Ｓ３４：ＹＥＳ）、続いて、♯１０３について、既にＷＲＩＴＥ済みであるか否かが判断される（Ｓ３５）。ここで、図１４に示すように、マクロ情報テーブル１３２７の♯１０３には値が書き込まれておらず、書込フラグ「０」が設定されているので、ＷＲＩＴＥ済みではない（Ｓ３５：ＮＯ）。値が書き込まれていない♯１０３から値を読み込むことはできないので、Ｒ／Ｗマクロ変数の設定ミスである可能性が高い。
【００７２】
そこで、警告画面２５４に警告表示がされると共に、「♯１０３は、ＷＲＩＴＥされていません。」とうメッセージが表示される（Ｓ３６）。これによりユーザは現在チェック中であるシーケンス番号Ｎ０６番において、♯１０３に設定ミスがあることがわかる。続いて、操作パネルの解除ボタン２４が押下されて、警告が解除されたか否かが判断される（Ｓ３７）。解除されない間は（Ｓ３７：ＮＯ）、Ｓ３６に戻って、警告画面２５４に警告が継続して表示される。ユーザは警告を無視してチェックを再開させるために、解除ボタン２４を押下する。そして解除ボタン２４が押下され、警告が解除された場合（Ｓ３７：ＹＥＳ）、警告画面２５４に表示されていた内容が消去される（Ｓ３８）。続いて、Ｒ／Ｗマクロ変数がＷＲＩＴＥ命令であるか否かが判断される（Ｓ３９）。ここでは、ＲＥＡＤ命令であるので（Ｓ３９：ＮＯ、Ｓ４２：ＮＯ）、Ｓ３２に戻る。
【００７３】
こうしてシーケンス番号Ｎ０６以降において上記処理が繰り返され、最後のブロックが読み込まれ（Ｓ３２）、内容が順次解析され（Ｓ３３）、チェックが進行する。最後のブロックは、終了コードであるＭ３０であるので（Ｓ３４：ＮＯ、３９：ＮＯ、Ｓ４２：ＹＥＳ）、チェック対象であるＮＣプログラムを最後までチェックしたことになるので、マクロチェックが終了する。
【００７４】
なお、♯１０３の設定が間違いでないケースとして、♯１０３を操作パネルで設定している場合や、シーケンス番号Ｎ１１のように運転すると、♯１１０が１加算されるようにカウンタとして使用している場合等がある。
【００７５】
以上説明したように、数値制御装置１の変形例では、Ｒ／Ｗマクロ変数が読み込まれる際に、そのＲ／Ｗマクロ変数に既に値が書き込まれているか否かのマクロチェックを行うことができる。不揮発メモリ１３には、マクロ情報テーブル１３２７が記憶されている。マクロ情報テーブル１３２７には、ＮＣプログラム中に設定された複数のＲ／Ｗマクロ変数が記憶されている。これらＲ／Ｗマクロ変数には、ＮＣプログラムを実行する過程において、各種設定値が各々書き込まれる。さらにこれらＲ／Ｗマクロ変数には、値が書き込み済みであることを記憶するための書込フラグが設定される。従って、ＮＣプログラムを読み込む際に、あるＲ／Ｗマクロ変数のＲＥＡＤ命令があった場合に、そのＲ／Ｗマクロ変数の書込フラグが設定されていない場合は、値が書き込まれていないので、Ｒ／Ｗマクロ変数の設定ミスである可能性が高い。この場合、警告画面２５４に警告表示されるので、ユーザはそのＲ／Ｗマクロ変数について設定ミスがあることを容易かつ速やかに認識できる。
【００７６】
なお、上記実施形態及び変形例において、モーダルチェックプログラム、マクロチェックプログラムを記憶する記録媒体としては、ＲＯＭ、ＲＡＭ等の素子の他、種々の形態が考えられる。例えば、ＣＤ−ＲＯＭ、フロッピー（登録商標）等でもよく、カードスロットへ挿入可能なプログラムカートリッジ等でもよく、インターネット上のファイルサーバであってもよい。
【産業上の利用可能性】
【００７７】
本発明の数値制御装置は、ＮＣプログラム中にモーダル命令を設定して工作機械を制御する数値制御装置に適用可能である。
【図面の簡単な説明】
【００７８】
【図１】数値制御装置１の電気的構成を示すブロック図である。
【図２】ＲＯＭ１１の概念図である。
【図３】不揮発メモリ１３の概念図である。
【図４】第１モーダル情報テーブル１３２１の概念図である。
【図５】第２モーダル情報テーブル１３２２の概念図である。
【図６】第３モーダル情報テーブル１３２３の概念図である。
【図７】第４モーダル情報テーブル１３２４の概念図である。
【図８】工具交換情報テーブル１３２５の概念図である。
【図９】主軸回転情報テーブル１３２６の概念図である。
【図１０】ディスプレイ２５に表示されたチェック画面２５１と、警告画面２５２とを示す概念図である。
【図１１】ＣＰＵ１０によるモーダルチェックのフローチャートである。
【図１２】図１１の続きのフローチャートである。
【図１３】図１１の続きのフローチャートである。
【図１４】マクロ情報テーブル１３２７の概念図である。
【図１５】ディスプレイ２５に表示されたチェック画面２５３と、警告画面２５４とを示す概念図である。
【図１６】ＣＰＵ１０によるマクロチェックのフローチャートである。
【符号の説明】
【００７９】
１    数値制御装置
１０    ＣＰＵ
１１    ＲＯＭ
１３    不揮発メモリ
２５    ディスプレイ
３０    工作機械
１１２    モーダルチェックプログラム記憶領域
１３２    情報テーブル記憶領域
１３２１  第１モーダル情報テーブル
１３２２  第２モーダル情報テーブル
１３２３  第３モーダル情報テーブル
１３２４  第４モーダル情報テーブル
【図１】
2009080591.tif 000003
【図２】
2009080591.tif 000004
【図３】
2009080591.tif 000005
【図４】
2009080591.tif 000006
【図５】
2009080591.tif 000007
【図６】
2009080591.tif 000008
【図７】
2009080591.tif 000009
【図８】
2009080591.tif 000010
【図９】
2009080591.tif 000011
【図１０】
2009080591.tif 000012
【図１１】
2009080591.tif 000013
【図１２】
2009080591.tif 000014
【図１３】
2009080591.tif 000015
【図１４】
2009080591.tif 000016
【図１５】
2009080591.tif 000017
【図１６】
2009080591.tif 000018