(57)【要約】【課題】プログラムの変換を効率的且つ正確に行うことができるプログラム変換装置を提供する。【解決手段】プログラム変換装置１は、処理プログラムの各実行命令を記憶部内のアドレスと対応付けて記憶する原プログラム記憶部１１と、実行命令を原プログラム記憶部１１内の対応するアドレスから読み出して実行する実行処理部１２と、実行命令のアドレスを実行順にアドレス記憶部１４に格納する監視処理部１３と、格納されたアドレスの並びを確認して、アドレスが同じ順番で一定数以上並んでいる部分が、予め設定された数以上あるか否かを確認し、該当部分の各アドレスを抽出する抽出処理部１５と、抽出アドレスに対応した各実行命令を実行させるサブルーチンたる第２プログラムと、第２プログラムに対応したメインルーチンたる第１プログラムとを生成する変換処理部１７と、生成した各プログラムを記憶する生成プログラム記憶部１９とを備える。【選択図】図１
2006048201.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ異なる複数の実行命令を含んだ、一連の処理を行うためのプログラムであり、該各実行命令を予め設定された順序に従い順次実行させるとともに、該各実行命令の一部については複数回実行させるように構成された処理プログラムを基に、メインルーチンとなる第１プログラムと、サブルーチンとなる第２プログラムとを生成して、前記処理プログラムを、該第１プログラム及び第２プログラムからなる新たな処理プログラムに変換する装置であって、
変換前の前記処理プログラムを記憶する記憶部であり、前記各実行命令を該記憶部内のアドレスと対応付けてそれぞれ記憶する原プログラム記憶部と、
前記実行命令を該実行命令が格納された前記原プログラム記憶部内のアドレスから、前記実行順序に従い順次読み出して、前記処理プログラムを実行する実行処理部と、
前記アドレスを記憶するアドレス記憶部と、
前記実行処理部における処理を監視して、該実行処理部により順次実行される実行命令の前記アドレスを、該実行命令が実行される順番に前記アドレス記憶部に格納する監視処理部と、
前記アドレス記憶部に格納されたアドレスを基に、その並びを確認して、該アドレスが同じ順番で一定数以上並んでいる部分が、予め設定された数以上あるか否かを確認し、該設定数以上あることを確認した場合には、該当部分の各アドレスをその並びのまま抽出する抽出処理部と、
前記抽出処理部によって抽出されたアドレス、及び前記原プログラム記憶部に格納された処理プログラムを基に、前記抽出アドレスに対応した各実行命令を該抽出アドレスが並んだ順番で順次実行させるように構成された前記第２プログラムと、前記一連の処理を実行させるとともに、該一連の処理の内、前記抽出アドレスに対応した各実行命令により順次実行される処理については、前記第２プログラムで実行させるように構成された前記第１プログラムとを生成して、前記変換前の処理プログラムを、該生成した第１プログラム及び第２プログラムからなる新たな処理プログラムに変換する変換処理部と、
前記変換処理部によって生成された第１プログラム及び第２プログラムを記憶する生成プログラム記憶部とを備えてなることを特徴とするプログラム変換装置。
【請求項２】
前記変換処理部は、前記第２プログラムを、プログラム可能な論理回路を動作させるためのプログラムとして生成するように構成されてなることを特徴とする請求項１記載のプログラム変換装置。
【請求項３】
前記生成プログラム記憶部に格納された第１プログラム及び第２プログラムを、該第１プログラムについては記憶装置に、該第２プログラムについては前記論理回路に書き込む書込処理部を更に備えてなることを特徴とする請求項２記載のプログラム変換装置。
【請求項４】
それぞれ異なる処理内容を実行させるように構成された複数のサブルーチンと、該各サブルーチンをそれぞれ実行させて予め設定された一連の処理を行わせるように構成されたメインルーチンとからなる処理プログラムを、プログラム可能な論理回路を動作させるための論理回路用プログラムを含んだ新たな処理プログラムに変換する装置であって、
変換前の前記処理プログラムを記憶する記憶部であり、前記各サブルーチンを該記憶部内のアドレスと対応付けてそれぞれ記憶する原プログラム記憶部と、
前記原プログラム記憶部に格納されたメインルーチンを実行するとともに、前記サブルーチンを該サブルーチンが格納された前記原プログラム記憶部内のアドレスから読み出して実行する実行処理部と、
前記アドレスを記憶するアドレス記憶部と、
前記実行処理部における処理を監視して、該実行処理部により実行されるサブルーチンの前記アドレスを、該サブルーチンが実行される度に前記アドレス記憶部に格納する監視処理部と、
前記アドレス記憶部に格納されたアドレスを基に、該各アドレス毎の数をそれぞれ計数して、予め設定された数を超えたアドレスがあるか否かを確認し、該設定数を超えたアドレスがあることを確認した場合には、そのアドレスを抽出する抽出処理部と、
前記抽出処理部によって抽出されたアドレス、及び前記原プログラム記憶部に格納された処理プログラムを基に、該抽出アドレスに対応したサブルーチンを前記論理回路用プログラムに変換するとともに、前記一連の処理の内、前記抽出アドレスに対応したサブルーチンにより実行される処理を、前記変換した論理回路用プログラムで実行させるように構成された新たなメインルーチンに前記メインルーチンを変換して、前記変換前の処理プログラムを、該変換後の論理回路用プログラム及びメインルーチン、並びに未変換の前記各サブルーチンからなる新たな処理プログラムに変換する変換処理部と、
前記変換処理部によって変換された論理回路用プログラム及びメインルーチンを少なくとも記憶する変換プログラム記憶部とを備えてなることを特徴とするプログラム変換装置。
【請求項５】
前記変換プログラム記憶部に格納された論理回路用プログラム及びメインルーチンを、該論理回路用プログラムについては前記論理回路に、該メインルーチンについては記憶装置に書き込む書込処理部を更に備えてなることを特徴とする請求項４記載のプログラム変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、予め設定された一連の処理を実行するための処理プログラムを、同一の処理内容を実行するための新たな処理プログラムに変換するプログラム変換装置に関する。
【背景技術】
【０００２】
一般に、ＮＣ工作機械などの機械や装置の制御装置は、ＣＰＵ，ＲＯＭ及びＲＡＭを備えており、ＣＰＵが、ＲＯＭやＲＡＭに予め格納されたシステム制御プログラムなどを、当該ＲＯＭやＲＡＭから読み出して実行することにより、前記機械や装置を制御するように構成されている。
【０００３】
しかしながら、ＣＰＵによる実行処理は、その実行速度がＣＰＵの性能に大きく依存するため、低性能なＣＰＵを用いた場合には、応答遅れを生じるなど高速に処理することができず、システム制御を精度良く行うことができないという問題があり、高性能なＣＰＵを用いた場合には、製造コストが高くなるという問題があった。
【０００４】
そこで、近年では、システム制御プログラムの一部を、例えば、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）などのプログラム可能な論理回路に書き込み、ＣＰＵにより実行されていた処理の一部を、当該論理回路により実行させるといったことが提案されている。このようにすれば、論理回路による処理速度がＣＰＵに比べて高速であることから、システム制御プログラム全体を高速に処理することが可能となり、システム制御を精度良く行うことができる。
【０００５】
そして、論理回路へのプログラムの書き込みは、従来、次のようにして行われており、まず、オペレータが、Ｃ言語などのソフトウェアプログラム言語で作成されたシステム制御プログラム中において、一定回数以上繰り返されて実行される処理を探し出し、当該繰り返し処理となっている部分のプログラムを抽出する。
【０００６】
この後、抽出したプログラムをサブルーチン化するとともに、元のシステム制御プログラムについては、当該システム制御プログラムから繰り返し処理の部分を削除して、当該繰り返し処理を前記サブルーチンで実行させるように構成されたメインルーチンに変換する。ついで、サブルーチン化したプログラムのプログラム言語を、適宜変換装置などを用いて、論理回路を動作させるためのハードウェア記述言語に変換し、変換後のプログラムを論理回路に書き込む一方、メインルーチンのプログラムをＲＯＭなどに書き込む。
【０００７】
これにより、システム制御プログラムは、そのメインルーチン部分の処理がＣＰＵにより実行され、サブルーチン部分（繰り返し処理の部分）の処理が論理回路により実行されるようになる。また、繰り返し部分の処理をサブルーチン化して、論理回路により実行するようにしているので、メインルーチンのプログラムデータ量を小さくしたり、システム制御プログラムの処理速度をより効果的に向上させるといった効果を得ることもできる。
【０００８】
【非特許文献１】藤田昌宏著，「Ｄｅｓｉｇｎ  Ｗａｖｅ  Ｍａｇａｚｉｎｅ」，２００３年２月号，ＱＣ出版，２００３年２月１日，ｐ．２０−ｐ．２５
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところが、上述のように、オペレータが、システム制御プログラム全体の中から、一定回数以上繰り返されて実行される処理のプログラムを抽出してサブルーチン化したり、抽出したプログラムのプログラム言語をハードウェア記述言語に変換したり、当該繰り返し処理をサブルーチンで実行させるように、元のシステム制御プログラムを変換していたのでは、これらの作業に時間がかかり、効率的でないという問題や、プログラムの変換時などに何らかの間違いをすると、システム制御に異常を生じるという問題があった。
【００１０】
本発明は、以上の実情に鑑みなされたものであって、プログラムの変換を効率的且つ正確に行うことができるプログラム変換装置の提供をその目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するための本発明は、
それぞれ異なる複数の実行命令を含んだ、一連の処理を行うためのプログラムであり、該各実行命令を予め設定された順序に従い順次実行させるとともに、該各実行命令の一部については複数回実行させるように構成された処理プログラムを基に、メインルーチンとなる第１プログラムと、サブルーチンとなる第２プログラムとを生成して、前記処理プログラムを、該第１プログラム及び第２プログラムからなる新たな処理プログラムに変換する装置であって、
変換前の前記処理プログラムを記憶する記憶部であり、前記各実行命令を該記憶部内のアドレスと対応付けてそれぞれ記憶する原プログラム記憶部と、
前記実行命令を該実行命令が格納された前記原プログラム記憶部内のアドレスから、前記実行順序に従い順次読み出して、前記処理プログラムを実行する実行処理部と、
前記アドレスを記憶するアドレス記憶部と、
前記実行処理部における処理を監視して、該実行処理部により順次実行される実行命令の前記アドレスを、該実行命令が実行される順番に前記アドレス記憶部に格納する監視処理部と、
前記アドレス記憶部に格納されたアドレスを基に、その並びを確認して、該アドレスが同じ順番で一定数以上並んでいる部分が、予め設定された数以上あるか否かを確認し、該設定数以上あることを確認した場合には、該当部分の各アドレスをその並びのまま抽出する抽出処理部と、
前記抽出処理部によって抽出されたアドレス、及び前記原プログラム記憶部に格納された処理プログラムを基に、前記抽出アドレスに対応した各実行命令を該抽出アドレスが並んだ順番で順次実行させるように構成された前記第２プログラムと、前記一連の処理を実行させるとともに、該一連の処理の内、前記抽出アドレスに対応した各実行命令により順次実行される処理については、前記第２プログラムで実行させるように構成された前記第１プログラムとを生成して、前記変換前の処理プログラムを、該生成した第１プログラム及び第２プログラムからなる新たな処理プログラムに変換する変換処理部と、
前記変換処理部によって生成された第１プログラム及び第２プログラムを記憶する生成プログラム記憶部とを備えてなることを特徴とするプログラム変換装置に係る。
【００１２】
この発明によれば、まず、原プログラム記憶部内に、変換対象となる、所定の一連の処理を行うための処理プログラムが格納される。この処理プログラムは、それぞれ異なる複数の実行命令を含み、当該各実行命令を所定の順序に従い順次実行させるとともに、当該各実行命令の一部については複数回実行させるように構成されており、当該各実行命令が記憶部内のアドレスと対応付けられてそれぞれ格納される。尚、このような処理プログラムの一例として、ＮＣ工作機械といった機械や装置を制御するためのシステム制御プログラムなどを挙げることができる。
【００１３】
そして、実行処理部により、実行命令が原プログラム記憶部内の対応するアドレスから、前記実行順序に従い順次読み出されて、処理プログラムが実行されると、当該実行処理部における処理を監視する監視処理部により、実行処理部によって順次実行される実行命令の前記アドレスが、その実行順にアドレス記憶部に格納される。
【００１４】
この後、抽出処理部により、アドレス記憶部に格納されたアドレスを基に、その並びが確認されて、当該アドレスが同じ順番で一定数以上並んでいる部分が所定数以上あるか否かが確認され、所定数以上あることが確認された場合には、該当部分の各アドレスがその並びのまま抽出される。一方、所定数以上あることが確認されなかった場合には、上記一連の処理が終了する。尚、前記一定数及び所定数は、処理プログラムの処理内容やプログラムデータ量などに応じて適宜設定されている。また、抽出されるアドレスの数が多くなると、変換処理部によって生成される第２プログラムのデータ量が大きくなり、後述する論理回路の記憶容量を越える恐れがあるため、同じ順番で並ぶ（抽出される）アドレスの数に上限値を設定して、同じ順番且つ一定数（下限値）以上上限値以下の数でアドレスが並んでいる部分が所定数以上あるか否かを確認するように構成することが好ましい。
【００１５】
抽出処理部によってアドレスが抽出されると、変換処理部により、当該抽出処理部によって抽出されたアドレス、及び原プログラム記憶部に格納された処理プログラムを基に、前記抽出アドレスに対応した各実行命令を当該抽出アドレスが並んだ順番で順次実行させるように構成されたサブルーチンたる第２プログラムと、前記一連の処理を実行させるとともに、当該一連の処理の内、前記抽出アドレスに対応した各実行命令により順次実行される処理については前記第２プログラムで実行させるように構成されたメインルーチンたる第１プログラムとが生成されて、前記変換前の処理プログラムが、当該生成された第１プログラム及び第２プログラムからなる新たな処理プログラムに変換される。
【００１６】
そして、変換処理部によって生成された第１プログラム及び第２プログラムは、当該変換処理部により、生成プログラム記憶部に格納される。
【００１７】
尚、前記変換処理部は、前記第２プログラムを、例えば、ＦＰＧＡなどのプログラム可能な論理回路を動作させるためのプログラムとして生成するように構成されていることが好ましく、前記プログラム変換装置は、前記生成プログラム記憶部に格納された第１プログラム及び第２プログラムを、該第１プログラムについては、例えば、ＲＯＭやＲＡＭなどの記憶装置に、該第２プログラムについては前記論理回路に書き込む書込処理部を更に備えて構成されていることが好ましい。
【００１８】
また、本発明は、
それぞれ異なる処理内容を実行させるように構成された複数のサブルーチンと、該各サブルーチンをそれぞれ実行させて予め設定された一連の処理を行わせるように構成されたメインルーチンとからなる処理プログラムを、プログラム可能な論理回路を動作させるための論理回路用プログラムを含んだ新たな処理プログラムに変換する装置であって、
変換前の前記処理プログラムを記憶する記憶部であり、前記各サブルーチンを該記憶部内のアドレスと対応付けてそれぞれ記憶する原プログラム記憶部と、
前記原プログラム記憶部に格納されたメインルーチンを実行するとともに、前記サブルーチンを該サブルーチンが格納された前記原プログラム記憶部内のアドレスから読み出して実行する実行処理部と、
前記アドレスを記憶するアドレス記憶部と、
前記実行処理部における処理を監視して、該実行処理部により実行されるサブルーチンの前記アドレスを、該サブルーチンが実行される度に前記アドレス記憶部に格納する監視処理部と、
前記アドレス記憶部に格納されたアドレスを基に、該各アドレス毎の数をそれぞれ計数して、予め設定された数を超えたアドレスがあるか否かを確認し、該設定数を超えたアドレスがあることを確認した場合には、そのアドレスを抽出する抽出処理部と、
前記抽出処理部によって抽出されたアドレス、及び前記原プログラム記憶部に格納された処理プログラムを基に、該抽出アドレスに対応したサブルーチンを前記論理回路用プログラムに変換するとともに、前記一連の処理の内、前記抽出アドレスに対応したサブルーチンにより実行される処理を、前記変換した論理回路用プログラムで実行させるように構成された新たなメインルーチンに前記メインルーチンを変換して、前記変換前の処理プログラムを、該変換後の論理回路用プログラム及びメインルーチン、並びに未変換の前記各サブルーチンからなる新たな処理プログラムに変換する変換処理部と、
前記変換処理部によって変換された論理回路用プログラム及びメインルーチンを少なくとも記憶する変換プログラム記憶部とを備えてなることを特徴とするプログラム変換装置に係る。
【００１９】
この発明によれば、上記と同様に、まず、原プログラム記憶部内に、変換対象となる処理プログラムが格納される。この処理プログラムは、それぞれ異なる処理内容を実行させる複数のサブルーチンと、各サブルーチンをそれぞれ実行させて所定の一連の処理を行わせるメインルーチンとから構成されており、当該各サブルーチンが記憶部内のアドレスと対応付けられてそれぞれ格納される。
【００２０】
そして、実行処理部により、原プログラム記憶部に格納されたメインルーチンが実行されるとともに、サブルーチンが当該原プログラム記憶部内の対応するアドレスから読み出されて実行されると、当該実行処理部における処理を監視する監視処理部により、実行処理部によって実行されるサブルーチンの前記アドレスが、当該サブルーチンが実行される度にアドレス記憶部に格納される。
【００２１】
この後、抽出処理部により、アドレス記憶部に格納されたアドレスを基に、当該各アドレス毎の数がそれぞれ計数されて、所定数を超えたアドレスがあるか否かが確認され、所定数を超えたアドレスがあることが確認された場合には、そのアドレスが抽出される。一方、所定数を超えたアドレスがあることが確認されなかった場合には、上記一連の処理が終了する。尚、前記所定数は、処理プログラムの処理内容などに応じて適宜設定されている。
【００２２】
抽出処理部によってアドレスが抽出されると、変換処理部により、当該抽出処理部によって抽出されたアドレス、及び原プログラム記憶部に格納された処理プログラムを基に、当該抽出アドレスに対応したサブルーチンが、例えば、ＦＰＧＡなどのプログラム可能な論理回路を動作させるための論理回路用プログラムに変換されるとともに、前記一連の処理の内、前記抽出アドレスに対応したサブルーチンにより実行される処理が、前記論理回路用プログラムで実行されるように構成された新たなメインルーチンに前記メインルーチンが変換されて、前記変換前の処理プログラムが、当該変換後の論理回路用プログラム及びメインルーチン、並びに未変換の前記各サブルーチンからなる新たな処理プログラムに変換される。
【００２３】
そして、変換処理部によって変換された少なくとも論理回路用プログラム及びメインルーチンは、当該変換処理部により、変換プログラム記憶部に格納される。
【００２４】
尚、前記プログラム変換装置は、前記変換プログラム記憶部に格納された論理回路用プログラム及びメインルーチンを、該論理回路用プログラムについては前記論理回路に、該メインルーチンについては、例えば、ＲＯＭやＲＡＭなどの記憶装置に書き込む書込処理部を更に備えて構成されていることが好ましい。
【発明の効果】
【００２５】
このように、本発明に係るプログラム変換装置によれば、各実行命令の前記アドレスが同じ順番で一定数以上並んでいる部分が所定の設定数以上ある場合に、当該部分の各実行命令により実行される処理を繰り返し処理と判断して、当該繰り返し処理をサブルーチン化した第２プログラムを生成するとともに、当該繰り返し処理については第２プログラムで処理を実行させるように構成された、メインルーチンとなる第１プログラムを生成することにより、変換対象の処理プログラムを、第１プログラム（メインルーチン）及び第２プログラム（サブルーチン）からなる新たな処理プログラムに自動的に変換するので、効率的且つ正確に変換処理を行うことができる。
【００２６】
また、所定の設定数を超えたサブルーチンの前記アドレスがある場合に、当該サブルーチンにより実行される処理を繰り返し処理と判断して、当該繰り返し処理のプログラムを論理回路用プログラムに変換するとともに、当該繰り返し処理については論理回路用プログラムで処理を実行させるように構成された新たなメインルーチンに、変換前のメインルーチンを変換することにより、変換対象の処理プログラムを、当該変換後の論理回路用プログラム及びメインルーチン、並びに未変換の各サブルーチンからなる新たな処理プログラムに自動的に変換するので、この場合においても、変換処理を効率的且つ正確に実施することができる。
【００２７】
また、変換処理部が、第２プログラムを、プログラム可能な論理回路を動作させるためのプログラムとして生成するように構成すれば、生成された第２プログラムのプログラム言語を、論理回路に対応したプログラム言語に改めて変換しなくても良いので、効率的であり、また、論理回路用の正確なプログラムを得ることができる。
【００２８】
また、プログラム変換装置に書込処理部を更に設けて構成すれば、生成プログラム記憶部に格納された第１プログラム及び第２プログラムや、変換プログラム記憶部に格納された論理回路用プログラム及びメインルーチンを、適宜記憶装置や論理回路に自動的に書き込むことが可能となるので、当該書込処理を効率的に実施することができる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の具体的な実施形態について、添付図面に基づき説明する。尚、図１は、本発明の一実施形態に係るプログラム変換装置の概略構成を示したブロック図である。
【００３０】
図１に示すように、本例のプログラム変換装置１は、ＣＰＵ，ＲＯＭ，ＲＡＭ及びハードディスクなどから構成され、原プログラム記憶部１１，実行処理部１２，監視処理部１３，アドレス記憶部１４，抽出処理部１５，抽出アドレス記憶部１６，変換処理部１７，生成プログラム記憶部１８及び書込処理部１９を備える。
【００３１】
前記原プログラム記憶部１１には、変換対象となる、所定の一連の処理を行うための処理プログラムが格納される。この処理プログラムは、例えば、Ｃ言語などのソフトウェアプログラム言語で作成された後、機械語に変換されたＮＣ工作機械のシステム制御プログラムであり、それぞれ異なる複数の実行命令を含み、当該各実行命令を図２に示すような所定の順序に従い順次実行させるとともに、当該各実行命令の一部については複数回繰り返して実行させるように構成されている。そして、図３に示すように、前記各実行命令や、その実行に当たり必要なデータなどは、記憶部内のアドレスと対応付けられてそれぞれ格納されている。
【００３２】
前記実行処理部１２は、前記実行命令を当該実行命令が格納された原プログラム記憶部１１内のアドレスから、前記実行順序に従い順次読み出して、前記処理プログラムを実行する処理を行う。
【００３３】
前記監視処理部１３は、実行処理部１２における処理を監視して、当該実行処理部１２により順次実行される実行命令の前記アドレスを、当該実行命令が実行される順番に前記アドレス記憶部１４に格納する処理を行う。尚、アドレス記憶部１４に格納されたアドレスのデータ構成は、図４に示すようなデータテーブルとなっている。
【００３４】
前記抽出処理部１５は、アドレス記憶部１４に格納されたアドレスを基に、その並びを確認して、当該アドレスが同じ順番且つ一定範囲内の数（例えば、５個以上１００個以下）で並んでいる部分が、予め設定された数以上（例えば、３個以上）あるか否かを確認し、当該設定数以上あることを確認した場合には、該当部分の各アドレスをその並びのまま抽出して、抽出したアドレスを前記抽出アドレス記憶部１６に格納する処理を行う。尚、前記一定範囲及び予め設定された数は、当該処理プログラムの処理内容やプログラムデータ量などに応じて適宜設定される。また、同じ順番で並ぶ（抽出される）アドレスの数に上限値を設定しているのは、抽出されるアドレスの数が多くなると、変換処理部１７により後述のようにして生成される第２プログラムのデータ量が大きくなり、論理回路２２の記憶容量を越える恐れがあるからである。
【００３５】
例えば、図４に示したアドレス例では、同じ順番で並んだアドレスとして、アドレス３及びアドレス４と、アドレス６，アドレス７，アドレス８，アドレス９，アドレス１０及びアドレス１１とが挙げられ、アドレス３及びアドレス４については２個、アドレス６，アドレス７，アドレス８，アドレス９，アドレス１０及びアドレス１１については３個ある。したがって、前記一定範囲及び予め設定された数の条件を満たすアドレスとして、アドレス６，アドレス７，アドレス８，アドレス９，アドレス１０及びアドレス１１が抽出され、抽出アドレス記憶部１６に格納される。
【００３６】
前記変換処理部１７は、抽出アドレス記憶部１６に格納された抽出アドレス、原プログラム記憶部１１に格納された処理プログラムを基に、メインルーチンとなる第１プログラムと、サブルーチンとなる第２プログラムとを生成して、前記処理プログラムを、当該生成した第１プログラム及び第２プログラムからなる新たな処理プログラムに変換する処理を行う。
【００３７】
具体的には、変換処理部１７は、まず、原プログラム記憶部１１に格納された処理プログラム、及び抽出アドレス記憶部１６に格納された抽出アドレスを基に、当該処理プログラムの全ソースコード（Ｃ言語のプログラム）、及び前記抽出アドレスに対応した各実行命令を当該抽出アドレスが並んだ順番で順次実行させるためのソースコードを認識する。
【００３８】
ついで、認識した、抽出アドレスに対応した各実行命令のソースコードを、例えば、ＦＰＧＡなどのプログラム可能な論理回路２２を動作させるためのハードウェア記述言語に変換して前記第２プログラムを生成するとともに、認識した全ソースコードから、抽出アドレスに対応した各実行命令のソースコードを削除して、前記一連の処理を実行させるとともに、当該一連の処理の内、前記抽出アドレスに対応した各実行命令により順次実行される処理については、前記第２プログラムで実行させるように構成された前記第１プログラムを生成する。
【００３９】
これにより、例えば、図２に示した実行順序で実行される処理プログラムは、図５に示すように、メインルーチンたる第１プログラムとサブルーチンたる第２プログラムとによって当該各実行命令が順次実行されるような新たな処理プログラムに変換される。そして、変換処理部１７は、生成した第１プログラム及び第２プログラムを、前記生成プログラム記憶部１８に格納する。
【００４０】
前記書込処理部１９は、生成プログラム記憶部１８に格納された第１プログラム及び第２プログラムを基に、第１プログラムについては、そのプログラム言語をＣ言語から機械語に変換した後、ＲＯＭ２１に書き込む一方、第２プログラムについては、ハードウェア記述言語のプログラムを、前記論理回路２２に書き込むための書き込みデータに変換した後、当該論理回路２２に書き込む処理を行う。
【００４１】
以上のように構成された本例のプログラム変換装置１によれば、まず、原プログラム記憶部１１内に、変換対象となる、所定の一連の処理を行うための処理プログラムが格納される。尚、この処理プログラムは、それぞれ異なる複数の実行命令を含んでおり、当該各実行命令などが、記憶部内のアドレスと対応付けられてそれぞれ格納される。
【００４２】
そして、実行処理部１２により、実行命令が原プログラム記憶部１１内の対応するアドレスから、実行順序に従い順次読み出されて、処理プログラムが実行されると、当該実行処理部１２における処理を監視する監視処理部１３により、実行処理部１２によって順次実行される実行命令の前記アドレスが、その実行順にアドレス記憶部１４に格納される。
【００４３】
この後、抽出処理部１５により、アドレス記憶部１４に格納されたアドレスを基に、その並びが確認されて、当該アドレスが同じ順番且つ一定範囲内の数で並んでいる部分が所定数以上あるか否かが確認され、所定数以上あることが確認された場合には、該当部分の各アドレスがその並びのまま抽出されて抽出アドレス記憶部１６に格納される。一方、所定数以上あることが確認されなかった場合には、上記一連の処理が終了する。
【００４４】
抽出処理部１５によってアドレスが抽出されると、変換処理部１７により、抽出アドレス記憶部１６に格納された抽出アドレス、及び原プログラム記憶部１１に格納された処理プログラムを基に、前記抽出アドレスに対応した各実行命令を当該抽出アドレスが並んだ順番で順次実行させるように構成されたサブルーチンたる第２プログラムと、前記一連の処理を実行させるとともに、当該一連の処理の内、前記抽出アドレスに対応した各実行命令により順次実行される処理については前記第２プログラムで実行させるように構成されたメインルーチンたる第１プログラムとが生成されて、前記変換前の処理プログラムが、当該生成された第１プログラム及び第２プログラムからなる新たな処理プログラムに変換される。
【００４５】
そして、変換処理部１７によって生成された第１プログラム及び第２プログラムは、当該変換処理部１７により、生成プログラム記憶部１８に格納され、格納された第１プログラムは、書込処理部１９により、ＲＯＭ２１に書き込まれる一方、格納された第２プログラムは、論理回路２２に書き込まれる。
【００４６】
斯くして、本例のプログラム変換装置１によれば、各実行命令の前記アドレスが同じ順番且つ一定範囲内の数で並んでいる部分が所定の設定数以上ある場合に、当該部分の各実行命令により実行される処理を繰り返し処理と判断して、当該繰り返し処理をサブルーチン化した第２プログラムを生成するとともに、当該繰り返し処理については第２プログラムで処理を実行させるように構成された、メインルーチンとなる第１プログラムを生成することにより、変換対象の処理プログラムを、第１プログラム（メインルーチン）及び第２プログラム（サブルーチン）からなる新たな処理プログラムに自動的に変換するので、効率的且つ正確に変換処理を行うことができる。
【００４７】
また、第２プログラムを、論理回路２２を動作させるためのプログラムとして生成するように構成しているので、生成された第２プログラムのプログラム言語を、論理回路２２に対応したプログラム言語に改めて変換しなくても良いので、効率的であり、また、論理回路２２用の正確なプログラムを得ることができる。
【００４８】
また、書込処理部１９により、生成プログラム記憶部１８に格納された第１プログラム及び第２プログラムを、ＲＯＭ２１及び論理回路２２に自動的に書き込むようにしているので、当該書込処理を効率的に実施することができる。
【００４９】
以上、本発明の一実施形態について説明したが、本発明の採り得る具体的な態様は、何らこれに限定されるものではない。
【００５０】
例えば、前記プログラム変換装置１は、これを、図６に示すようなプログラム変換装置２として構成することもでき、この場合、プログラム変換装置２は、同図６に示すように、原プログラム記憶部３１，実行処理部３２，監視処理部３３，アドレス記憶部３４，抽出処理部３５，抽出アドレス記憶部３６，変換処理部３７，変換プログラム記憶部３８及び書込処理部３９を備える。
【００５１】
前記原プログラム記憶部３１には、変換対象となる処理プログラムが格納される。この処理プログラムは、例えば、Ｃ言語などのソフトウェアプログラム言語で作成された後、機械語に変換されたＮＣ工作機械のシステム制御プログラムであり、それぞれ異なる処理内容を実行させるように構成された複数のサブルーチンと、当該各サブルーチンを図７に示すような所定の順序に従い順次実行させるとともに、当該各サブルーチンの一部については複数回繰り返して実行させて、所定の一連の処理を行わせるように構成されたメインルーチンとからなる。尚、各サブルーチンは、少なくともその先頭部分が、図８に示すように、当該原プログラム記憶部３１内のアドレスと対応付けられてそれぞれ格納される。
【００５２】
前記実行処理部３２は、原プログラム記憶部３１に格納されたメインルーチンを実行するとともに、前記サブルーチンを当該サブルーチンが格納された原プログラム記憶部３１内のアドレスから読み出して実行する処理を行う。
【００５３】
前記監視処理部３３は、実行処理部３２における処理を監視して、当該実行処理部３２により順次実行されるサブルーチンの前記アドレスを、当該サブルーチンが実行される度に前記アドレス記憶部３４に格納する処理を行う。尚、アドレス記憶部３４に格納されたアドレスのデータ構成は、図９に示すようなデータテーブルとなっている。
【００５４】
前記抽出処理部３５は、アドレス記憶部３４に格納されたアドレスを基に、当該各アドレス毎の数をそれぞれ計数して、予め設定された数（例えば、３個以上）を超えたアドレスがあるか否かを確認し、当該設定数を超えたアドレスがあることを確認した場合には、そのアドレスを抽出して、抽出したアドレスを前記抽出アドレス記憶部３６に格納する処理を行う。尚、前記予め設定された数は、当該処理プログラムの処理内容などに応じて適宜設定される。
【００５５】
例えば、図９に示したアドレス例では、前記予め設定された数（３個以上）を超えたアドレスとして、アドレス３が抽出され、抽出アドレス記憶部３６に格納される。
【００５６】
前記変換処理部３７は、抽出アドレス記憶部３６に格納された抽出アドレス、原プログラム記憶部３１に格納された処理プログラムを基に、当該処理プログラムを、前記論理回路２２を動作させるための論理回路用プログラムを含んだ新たな処理プログラムに変換する処理を行う。
【００５７】
具体的には、変換処理部３７は、まず、原プログラム記憶部３１に格納された処理プログラム、及び抽出アドレス記憶部３６に格納された抽出アドレスを基に、メインルーチンのソースコード（Ｃ言語のプログラム）、及び前記抽出アドレスに対応したサブルーチンのソースコード（Ｃ言語のプログラム）を認識する。
【００５８】
ついで、認識したサブルーチンのソースコードを、ハードウェア記述言語に変換して前記論理回路用プログラムに変換するとともに、認識したメインルーチンのソースコードを基に、当該メインルーチンを、前記一連の処理の内、前記抽出アドレスに対応したサブルーチンにより実行される処理を、前記変換した論理回路用プログラムで実行させるように構成された新たなメインルーチンに変換する。
【００５９】
これにより、例えば、図７に示した実行順序で実行される処理プログラムは、変換後の前記論理回路用プログラム（サブルーチン３）及びメインルーチン、並びに未変換の前記各サブルーチン（サブルーチン１，サブルーチン２，サブルーチン４及びサブルーチン５）からなる新たな処理プログラムに変換される。そして、変換処理部３７は、変換した前記論理回路用プログラム及びメインルーチン、並びに未変換の前記各サブルーチンを、前記変換プログラム記憶部３８に格納する。
【００６０】
前記書込処理部３９は、変換プログラム記憶部３８に格納された論理回路用プログラム，メインルーチン及び未変換の各サブルーチンを基に、メインルーチンについては、メインルーチンのプログラム言語をＣ言語から機械語に変換した後、未変換の各サブルーチンについてはそのまま、ＲＯＭ２１に書き込む一方、論理回路用プログラムについては、ハードウェア記述言語のプログラムを、前記論理回路２２に書き込むための書き込みデータに変換した後、当該論理回路２２に書き込む処理を行う。
【００６１】
以上のように構成されたプログラム変換装置２によっても、所定の設定数を超えたサブルーチンの前記アドレスがある場合に、当該サブルーチンにより実行される処理を繰り返し処理と判断して、当該繰り返し処理のプログラムを論理回路用プログラムに変換するとともに、当該繰り返し処理については論理回路用プログラムで処理を実行させるように構成された新たなメインルーチンに、変換前のメインルーチンを変換することにより、変換対象の処理プログラムを、当該変換後の論理回路用プログラム及びメインルーチン、並びに未変換の各サブルーチンからなる新たな処理プログラムに自動的に変換するので、上記プログラム変換装置１と同様の効果を得ることができる。
【００６２】
また、上例では、書込処理部１９，３９が、生成プログラム記憶部１８に格納された第１プログラム及び第２プログラムや、変換プログラム記憶部３８に格納された論理回路用プログラム及びメインルーチンを、Ｃ言語から機械語に変換したり、ハードウェア記述言語を、前記論理回路２２に書き込むための書き込みデータに変換した後、ＲＯＭ２１や論理回路２２に書き込むように構成したが、これに限られるものではなく、変換処理部１７，３７が、第１プログラム及び第２プログラムや、論理回路用プログラム及びメインルーチンを、機械語や、論理回路２２に書き込むための書き込みデータで生成したり、変換するように構成しても良い。この場合、書込処理部１９，３９は、生成プログラム記憶部１８や変換プログラム記憶部３８に格納されたデータを、そのままＲＯＭ２１や論理回路２２に書き込むように構成される。
【００６３】
また、原プログラム記憶部１１，３１に格納される前記処理プログラムは、それぞれ異なる複数の実行命令を含んだメインルーチンと、それぞれ異なる複数の実行命令を含み、それぞれ異なる処理内容を実行させるサブルーチンとから構成されていても良い。この場合、メインルーチンの実行命令の中から繰り返し処理を抽出して論理回路用プログラム（新たなサブルーチン）を生成したり、あるサブルーチンの実行命令の中から繰り返し処理を抽出して論理回路用プログラム（新たなサブルーチン）を生成したり、繰り返して実行されるサブルーチンを論理回路用プログラムに変換することができる。
【００６４】
また、上例では、各実行命令が図２に示すような実行順序で実行される処理プログラム（即ち、繰り返し処理部（実行命令６，実行命令７，実行命令８，実行命令９，実行命令１０及び実行命令１１）が連続して３回繰り返される処理プログラム）の繰り返し処理部をサブルーチン化して論理回路２２用プログラムを生成するように構成したが、これに限られるものではなく、図１０に示すように、他の実行命令を挟んで計３回実行される実行命令６，実行命令７，実行命令８，実行命令９及び実行命令１０についても、同様に、サブルーチン化して論理回路２２用プログラムを生成することができる。
【００６５】
また、更に、各サブルーチンが図７に示すような実行順序で実行される処理プログラム（即ち、サブルーチン３が連続して３回繰り返される処理プログラム）の繰り返し処理部（サブルーチン）を論理回路２２用プログラムに変換するように構成したが、これに限られるものではなく、図１１に示すように、他のサブルーチンを挟んで計３回実行されるサブルーチン３についても、同様に、論理回路２２用プログラムに変換することができる。
【図面の簡単な説明】
【００６６】
【図１】本発明の一実施形態に係るプログラム変換装置の概略構成を示したブロック図である。
【図２】各実行命令の実行順序を示した説明図である。
【図３】本実施形態の原プログラム記憶部に格納された処理プログラムのデータ構成を示した説明図である。
【図４】本実施形態のアドレス記憶部に格納されたアドレスのデータ構成を示した説明図である。
【図５】本実施形態の変換処理部によって変換された処理プログラムを説明するための説明図である。
【図６】本発明の他の実施形態に係るプログラム変換装置の概略構成を示したブロック図である。
【図７】各サブルーチンの実行順序を示した説明図である。
【図８】他の実施形態の原プログラム記憶部に格納された処理プログラムのデータ構成を示した説明図である。
【図９】他の実施形態のアドレス記憶部に格納されたアドレスのデータ構成を示した説明図である。
【図１０】各実行命令の実行順序を示した説明図である。
【図１１】各サブルーチンの実行順序を示した説明図である。
【符号の説明】
【００６７】
１    プログラム変換装置
１１  原プログラム記憶部
１２  実行処理部
１３  監視処理部
１４  アドレス記憶部
１５  抽出処理部
１６  抽出アドレス記憶部
１７  変換処理部
１８  生成プログラム記憶部
１９  書込処理部
２１  ＲＯＭ
２２  論理回路
【図１】
2006048201.tif 000003
【図２】
2006048201.tif 000004
【図３】
2006048201.tif 000005
【図４】
2006048201.tif 000006
【図５】
2006048201.tif 000007
【図６】
2006048201.tif 000008
【図７】
2006048201.tif 000009
【図８】
2006048201.tif 000010
【図９】
2006048201.tif 000011
【図１０】
2006048201.tif 000012
【図１１】
2006048201.tif 000013