(57)【要約】【課題】加工プログラム中に記述された、定時的に実行するプログラムを実行可能とした数値制御装置を提供する。【解決手段】ユーザが入力した加工プログラムが定時的に実行するプログラムかどうかを判別するリアルタイムプログラム判別部と、加工プログラムが定時的に実行するプログラムであれば、それを解析して２次データに変換するリアルタイムプログラム解析部と、２次データを解析し、その結果に基づき定時的な処理を実行し、実行の結果移動指令が発生すればドライブ制御部に出力し、Ｍコード指令等の入出力指令が発生すればＰＬＣ部に出力するリアルタイムプログラム実行制御部とを備える。【選択図】    図１
2004318549.tif 000002
【特許請求の範囲】
【請求項１】
ユーザが入力した加工プログラムを解析して２次データへ変換するプログラム解析部と、
その２次データが移動指令であれば移動量に変換してドライブ制御部に出力し、その２次データがＭコード等の入出力指令であればその指令をＰＬＣ部に出力するプログラム実行部と、
を備えた数値制御装置において、
前記加工プログラムが定時的に実行するプログラムかどうかを判別して定時的に実行するプログラムでなければ前記加工プログラムを前記プログラム解析部に渡すリアルタイムプログラム判別部と、
そのリアルタイムプログラム判別部が前記加工プログラムを定時的に実行するプログラムと判断して、前記加工プログラムを前記リアルタイムプログラム判別部から受けると前記加工プログラムを解析して、第２の２次データへ変換するリアルタイムプログラム解析部と、
その第２の２次データを解析し、その解析結果に基づき定時的な処理を実行し、実行の結果移動指令が発生すれば移動量に変換し、前記ドライブ制御部に出力し、Ｍコード等の入出力指令が発生すれば、その指令を前記ＰＬＣ部に出力するリアルタイムプログラム実行部と、
を備えたことを特徴とする数値制御装置。
【請求項２】
前記加工プログラムにＮＣリセットによる停止を指定しておけば、ＮＣリセットが発生したときに前記リアルタイムプログラム実行部が実行中の定時的な処理を停止し、前記加工プログラムにＮＣリセットによる停止を指定していなければ、ＮＣリセットが発生しても前記リアルタイムプログラム実行部が実行中の定時的な処理が継続することを特徴とする請求項１に記載の数値制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、工作機械等を制御する数値制御装置に関し、特に、定時的に実行するプログラムが加工プログラムに含まれているとき、それを定時的に実行させる数値制御装置に関するものである。
【０００２】
【従来の技術】
図３は、加工プログラムを逐次的に解析・実行する、従来の数値制御装置の構成を示す図である（例えば、特許文献１参照）。
【０００３】
【特許文献１】特開平１１−１６７４０４号公報（第５―５頁、第２図）
【０００４】
図において、１は、入力装置を使ってオペレータが入力した加工プログラムであり、ユーザプログラム格納部６に格納されている。２は、ユーザプログラム格納部６に格納された加工プログラム１を解析して、プログラム実行部３で処理可能な２次データへ変換するプログラム解析部である。プログラム実行部３は、２次データを解析し、その２次データが移動指令であれば移動量に変換してドライブ制御部４に出力し、その２次データがＭコード等の入出力指令であればその指令をＰＬＣ部５に出力する。ドライブ制御部４は、プログラム実行部３から移動量の指令を受けると、その指令に基づいてモータを制御する。ＰＬＣ部５は、機械の入出力を制御する。この図では、プログラム実行部３の解析したデータがドライブ制御部４とＰＬＣ部５に出力される例を示しているが、いずれか一方だけが接続されてその一方だけに出力されることもある。６は、ユーザが作成した加工プログラム１を含むユーザプログラム格納部であり、７は加工プログラム１を解析・処理するプログラム解析・処理部である。このユーザプログラム格納部６と、プログラム解析・処理部７が数値制御装置８を構成している。
【０００５】
次に動作について説明する。オペレータによって入力され、ユーザプログラム格納部６に格納された加工プログラムが複数あるとき、オペレータが実行したいそのいずれかのプログラムを選択し、起動ボタンを押すことにより動作が開始される。オペレータが起動ボタンを押下すると、選択された加工プログラム１の１行目がプログラム解析部２に出力されてその１行のデータが解析され、プログラム実行部３が処理可能な２次データへ変換する。プログラム解析部２は、プログラム実行部３へ２次データを渡すと、加工プログラム１の次の行を受け取ってその１行のデータの解析を開始する。プログラム実行部３は、プログラム解析部が出力した２次データを解析し、それがドライブ制御部４が制御する制御軸の移動指令であれば、移動量に変換し、ドライブ制御部４に指令を出力する。そして、ドライブ制御部４はその指令に基づきモータを制御する。２次データが、ＰＬＣが処理するＭコード等の入出力指令であれば、プログラム実行部３は、２次データをＰＬＣ部５で処理可能な指令に変換して、ＰＬＣ部５に指令を出力し、ＰＬＣ部５がその指令に基づき機械の入出力等を制御する。プログラム実行部３は、加工プログラムの１行分の指令の実行が完了すれば、次の行の実行が可能となり、次の行の実行を開始する。以上述べたように、従来の数値制御装置には、加工プログラムの先頭から１行づつ順番に解析し実行していくという逐次処理が用いられている。
【０００６】
【発明が解決しようとする課題】
しかし従来の数値制御装置では、ユーザが作成した加工プログラムが１行づつ順番に解析されて実行されるため、定時的に処理をするようなプログラム（以下リアルタイムプログラムという）を作成してもそれを実行することが出来なかった。このような処理を実行させたい場合、数値制御装置に内蔵されたＰＬＣ部を使用し、ラダープログラムを用いて定時的に動作するプログラムを作成する必要があった。この為、定時的に動作することが必要なアプリケーションを作成する場合、ＮＣプログラムの作成技術と、ラダープログラム言語の知識、ラダープログラムを作成するための知識及び開発ツールの習得等が必要になり、誰でも作成できるという訳にはいかなかった。また、１つの機能を実現するためにＮＣプログラム言語とラダープログラム言語という２つの異なる言語を使用しているためメンテナンス性が劣り、不具合が発生した時の修正に関しても容易にできなかった。
そこで本発明は、ユーザが作成する加工プログラムに、リアルタイムプログラムを記述しておけば、そのリアルタイムプログラムが指定された一定の周期で実行されるようにし、ラダープログラムを作成することなく定時的な処理（以下リアルタイム処理という）ができるようにすることを目的とする。
【０００７】
【課題を解決するための手段】
上記問題を解決するため、本発明は、ユーザが入力した加工プログラムを解析して２次データへ変換するプログラム解析部と、その２次データが移動指令であれば移動量に変換し、ドライブ制御部に出力し、その２次データがＭコード等の入出力指令であれば、その指令をＰＬＣ部に出力するプログラム実行部と、を備えた数値制御装置において、前記加工プログラムがリアルタイムプログラムかどうかを判別して定時的に実行するプログラムでなければ前記加工プログラムを前記プログラム解析部に渡すリアルタイムプログラム判別部と、そのリアルタイムプログラム判別部が前記加工プログラムをリアルタイムプログラムと判断して、前記加工プログラムを前記リアルタイムプログラム判別部から受けると前記加工プログラムを解析して、第２の２次データへ変換するリアルタイムプログラム解析部と、その第２の２次データを解析し、その解析結果に基づき定時的な処理を実行し、実行の結果移動指令が発生すれば移動量に変換し、前記ドライブ制御部に出力し、Ｍコード等の入出力指令が発生すれば、その指令を前記ＰＬＣ部に出力するリアルタイムプログラム実行部と、を備えたことを特徴としている。このため、リアルタイムプログラムが定周期で実行されるのである。
【０００８】
【発明の実施の形態】
図１は、本発明の数値制御装置の構成を示すブロック図である。ここで、１から８は図３と同一である。１ａは加工プログラム１中に記述されたリアルタイムプログラム、９は加工プログラム１がリアルタイムプログラムかどうかを判別するリアルタイムプログラム判別部、１０はリアルタイムプログラム解析部、１１はリアルタイムプログラム実行部である。
【０００９】
オペレータが数値制御装置８の起動ボタンを押下すると、その操作で選択された加工プログラム１の１行目がリアルタイムプログラム判別部９に出力され、１行分のプログラムがリアルタイムプログラムかどうかの判別が行われる。リアルタイムプログラムには、リアルタイム処理の内容を定義するリアルタイム処理定義指令と、その定義指令で定義されたリアルタイム処理を実行させるリアルタイム処理実行開始指令と、実行中のリアルタイム処理を停止させるリアルタイム処理停止指令がある。判別の結果、リアルタイムプログラムでなければ従来例と同様にその１行分のプログラムがプログラム解析部２に出力される。判別の結果、リアルタイムプログラムであればその１行分のプログラムをリアルタイムプログラム解析部１０に出力する。
【００１０】
リアルタイムプログラム解析部１０はリアルタイムプログラム判別部９から受けた１行分のプログラムをリアルタイムプログラム実行部が処理しやすい２次データに変換する。リアルタイムプログラム実行部１１はその２次データを次のように処理する。２次データがリアルタイム処理定義指令であれば、リアルタイム実行部１１はその２次データを解析し、解析結果を数値制御装置８内に記憶していく。一般に、リアルタイム処理で実行する内容を決定するためには、リアルタイム処理定義指令は１行だけのデータではなく、複数行のデータが必要であり、内容が決定されるまでは、加工プログラム１を１行づつリアルタイムプログラム解析部１０で解析し、２次データをリアルタイムプログラム実行部１１に出力し、リアルタイムプログラム実行部１１で２次データを解析し、解析結果を記憶していくということを繰り返す。
【００１１】
２次データがリアルタイム処理定義終了指令であれば、そこでリアルタイムプログラム実行部１１はリアルタイム処理の内容を決定する。この時点では、リアルタイム処理の内容が決定し、実行の準備ができただけであり、リアルタイム処理の実行はまだ開始されない。リアルタイムプログラム解析部で解析した２次データがリアルタイム処理実行開始指令であれば、その時点から、リアルタイム実行部１１はリアルタイム処理定義指令で定義され、それを解析、記憶した内容に基づき、リアルタイム処理の実行を開始する。リアルタイム処理は、数値制御装置８が備える定周期のクロックを基にした定周期で実行される。実行中に、軸の移動指令が発生すればその指令を移動量に変換してドライブ制御部４に出力し、Ｍコード等の入出力指令が発生すればその指令をＰＬＣ部５に出力する。リアルタイムプログラム解析部で解析した２次データがリアルタイム停止指令であれば、リアルタイム実行部１１は実行中のリアルタイム処理を停止する。リアルタイム処理を停止させることは、リアルタイム停止指令の他に、数値制御装置の動作をリセットするＮＣリセットによっても可能である。ＮＣリセットではリアルタイム処理を停止させないことも可能であり、ＮＣリセット時にリアルタイム処理を停止させるかどうかは、ユーザがリアルタイム処理定義指令開始時に指令で指定する。これにより、軸の位置を常に監視するようなＮＣリセットにより停止させたくないような処理と、工具の破損監視のようなＮＣプログラム実行中だけ処理を動作させ、ＮＣリセットでは停止させたい処理とのどちらにも対応が可能である。
【００１２】
図２は、リアルタイムプログラムの例である。ここで、Ｎ１１０のＤＥＦＲＥＡＬ指令から、Ｎ１７０のＥＮＤＲＥＡＬ指令までの区間の指令は、リアルタイムの処理内容を示すリアルタイム処理定義指令である。ＤＥＦＲＥＡＬ指令は同一ブロックにＰ（処理番号）、Ｌ（周期）、Ｒ（ＮＣリセットでの停止選択）の指令が可能である。ここで、Ｐは処理内容の識別をする処理番号である。Ｌはリアルタイム処理周期で、数値制御装置が備える定周期クロックの何回ごとにリアルタイム処理を実施するかを指令するもので、この指令によりリアルタイム処理実行の周期が選択できる。ＲはＮＣリセット時のリアルタイムプログラム停止の選択を指定するものであり、Ｒ１指令のとき、ＮＣリセット時にリアルタイムプログラムの実行を停止する。Ｒ０またはＲ指令なしの場合は、ＮＣリセット時は停止しない。リアルタイム処理の定義終了後、リアルタイム処理の実行を開始するには、リアルタイム処理実行開始指令のＳＴＡＲＴＲＥＡＬ  Ｐ（処理番号）を指令する。この指令を実行することにより、Ｐで指定された処理番号の処理の実行を開始する。Ｐで指定された処理番号の定義が未完の場合は、リアルタイムプログラム実行部でエラーとし、加工プログラムの実行を停止する。
【００１３】
この例で、処理番号１のリアルタイムプログラムの処理の内容を説明する。ここで、Ｎ１２０の行に指令されている＃３０００はＸ軸のワーク座標位置であり、Ｎ１４０の行に指令されているＭ５０はＸ軸の位置がある範囲（この例の場合１００〜２００の間）に入っていることをＰＬＣ部に通知するＭコード出力、Ｎ１６０の行に指令されているＭ５１はＸ軸の位置が１００〜２００の範囲外であることをＰＬＣ部に通知するＭコード出力である。Ｎ１１０のＤＥＦＲＥＡＬ  Ｐ１  Ｌ５  Ｒ０という指令は、このリアルタイムプログラムの処理番号を１番とし、定周期クロック５回に１回ごとに、Ｎ１７０のＥＮＤＲＥＡＬまでに指令された一連の処理を実行することを示している。また、Ｒ０指令がなされているので、ＮＣリセットでは、実行中の処理番号１の処理は停止しないことを示している。Ｎ１２０の指令は、Ｘ軸の位置を読み取り、それが１００より小さければＮ１６０に処理を移す指令である。Ｎ１６０に処理が移ると、Ｍ５１を出力する。Ｘ軸の位置が１００より大きければ、処理はＮ１２０の次のＮ１３０に移る。Ｎ１３０の指令は、Ｘ軸の位置を読み取り、それが２００より大きければ、Ｎ１６０に処理を移し、Ｍ５１を出力する。Ｘ軸の位置が２００より小さければＮ１４０に処理を移し、Ｍ５０を出力し、Ｎ１７０に処理を移す。リアルタイムプログラム解析部１０とリアルタイムプログラム実行部１１が、Ｎ１１０からＮ１７０までのプログラムを解析、実行すると、このＮ１１０からＮ１７０までの一連のプログラム指令の動作内容が、数値制御装置内に処理番号１として記憶される。Ｎ１８０のリアルタイム処理実行開始指令のＳＴＡＲＴＲＥＡＬ  Ｐ１が解析、実行されると、処理番号１の処理が開始され、リアルタイムにＸ軸の位置を監視し、Ｍ５０またはＭ５１を出力する処理を継続的に実行する。この例ではＮ１７０のＥＮＤＲＥＡＬ指令の直後にＮ１８０でＳＴＡＲＴＲＥＡＬ指令がなされているが、ＥＮＤＲＥＡＬ指令とＳＴＡＲＴＲＥＡＬ指令の間に別の加工プログラムを指令することも可能である。リアルタイムプログラムは１つの加工プログラムに複数の処理を記述し、起動させることも可能である。この例では、Ｎ２４０で処理番号２のリアルタイムプログラムが実行を開始する。実行中のリアルタイムプログラムを停止させるためには、リアルタイム処理停止指令の、ＳＴＯＰＲＥＡＬ  Ｐ（処理番号）を指令する。ＳＴＯＰＲＥＡＬ指令が解析、実行されると、指定された処理番号のリアルタイムプログラムの処理を停止する。
【００１４】
【発明の効果】
以上述べたように、本発明によれば、プログラム解析部とプログラム実行部とは並列に、リアルタイムプログラム解析部とリアルタイムプログラム実行部を設け、リアルタイムプログラム判別部がそのいずれかに加工プログラムを渡すようにしたので、ラダープログラム等の別のプログラムを作成することなく、加工プログラムの中に作成したリアルタイムプログラムを定時的に処理できるのである。このため、従来不可能であった、ＰＬＣ以外による高速周期のプログラムを作成できるようになり、ユーザが簡単に機能を追加したり、性能を向上させることが可能になるという効果がある。また、ＰＬＣの知識がないユーザであってもリアルタイムプログラムを作成することができるため、数値制御装置の新しい機能を開発することが可能になり、開発した機能の修正する場合も加工プログラムを修正する事で可能となるため容易になるという効果がある。
【図面の簡単な説明】
【図１】本発明の数値制御装置の構成を示すブロック図
【図２】リアルタイムプログラム例
【図３】従来の数値制御装置の構成を示すブロック図
【符号の説明】
１  加工プログラム
１ａリアルタイムプログラム
２  プログラム解析部
３  プログラム実行部
４  ドライブ制御部
５  ＰＬＣ部
６  ユーザプログラム格納部
７  プログラムの解析・処理部
８  数値制御装置
９  リアルタイムプログラム判別部
１０  リアルタイムプログラム解析部
１１  リアルタイムプログラム実行部
【図１】
2004318549.tif 000003
【図２】
2004318549.tif 000004
【図３】
2004318549.tif 000005