(57)【要約】【課題】ＰＬＣ等に用いるＬＤプログラムをＦＢＤプログラムに変換する際に、変換作業の負荷を軽減すると共に信頼性を高め、かつ汎用性を実現する。【解決手段】機能ブロック抽出部３１は、ＬＤプログラムデータ（ＸＭＬ文書）２３から機能ブロックを抽出し、機能ブロックによる階層構造データを生成する（ステップＳ４０２）。ＬＤ／ＦＢＤ変換部３２は、機能ブロックによる階層構造データを用いて、機能ブロック毎にＬＤプログラムをＦＢＤプログラムに変換し、機能ブロック毎のＦＢＤ部品を生成する（ステップＳ４０３）。ＦＢＤプログラム生成部３３は、機能ブロック毎のＦＢＤ部品どうしを配線し、ＦＢＤプログラムデータ（ＸＭＬ文書）２４を生成する（ステップＳ４０４）。【選択図】図３
2010020635.tif 000002
【特許請求の範囲】
【請求項１】
複数の変数を組み合わせて所定のシーケンス処理を実現するＬＤ（Ｌａｄｄｅｒ  Ｄｉａｇｒａｍ）プログラムをＦＢＤ（Ｆｕｎｃｔｉｏｎ  Ｂｌｏｃｋ  Ｄｉａｇｒａｍ）プログラムに変換するプログラミング言語変換装置において、
マークアップ言語で表現したＬＤプログラムから、互いに共通する前記変数を有するラダー群からなる機能ブロックを抽出し、前記抽出した機能ブロックから、さらに互いに共通する前記変数を有するラダー群からなる下層の機能ブロックを階層的に順次抽出し、階層構造データを生成する機能ブロック抽出部と、
前記機能ブロック抽出部により生成された階層構造データを用いて、前記機能ブロック毎に、その機能ブロックのＬＤプログラムを構成するＬＤ機能要素を、ＦＢＤプログラムを構成するＦＢ機能要素に置き替え、前記機能ブロック毎のＦＢＤ部品を生成するＬＤ／ＦＢＤ変換部と、
前記ＬＤ／ＦＢＤ変換部により生成された機能ブロック毎のＦＢＤ部品間を配線し、マークアップ言語で表現したＦＢＤプログラムを生成するＦＢＤプログラム生成部と、
を備えたことを特徴とするプログラミング言語変換装置。
【請求項２】
複数の変数を組み合わせて所定のシーケンス処理を実現するＬＤプログラムをＦＢＤプログラムに変換するプログラミング言語変換方法において、
マークアップ言語で表現したＬＤプログラムから、互いに共通する前記変数を有するラダー群からなる機能ブロックを抽出する第１のステップと、
前記第１のステップにより抽出した機能ブロックから、さらに互いに共通する前記変数を有するラダー群からなる下層の機能ブロックを階層的に順次抽出する第２のステップと、
前記第１のステップ及び第２のステップを繰り返すことにより、階層構造データを生成する第３のステップと、
前記第３のステップにより生成した階層構造データを用いて、前記機能ブロック毎に、その機能ブロックのＬＤプログラムを構成するＬＤ機能要素を、ＦＢＤプログラムを構成するＦＢ機能要素に置き替え、前記機能ブロック毎のＦＢＤ部品を生成する第４のステップと、
前記第４のステップにより生成した機能ブロック毎のＦＢＤ部品間を配線し、マークアップ言語で表現したＦＢＤプログラムを生成する第５のステップと、
を有することを特徴とするプログラミング言語変換方法。
【請求項３】
請求項２に記載のプログラミング言語変換方法において、
前記第１のステップは、マークアップ言語で表現したＬＤプログラムのうちの基準となるラダーを選択し、前記基準となるラダーの変数を使用している他のラダーを特定し、前記他のラダーを機能ブロックとして抽出し、
前記第２のステップは、前記第１のステップにより抽出した機能ブロックから、前記基準となるラダーの入力変数を出力変数として使用しているラダーを、新たに基準となるラダーとして選択し、前記新たに基準となるラダーの変数を使用している他のラダーを特定し、前記他のラダーを下層の機能ブロックとして抽出し、前記新たに基準となるラダーの選択及び下層の機能ブロックの抽出を階層的に行う、
ことを特徴とするプログラミング言語変換方法。
【請求項４】
請求項２または３に記載のプログラミング言語変換方法において、
前記第４のステップは、前記第３のステップにより生成した階層構造データから、下層の機能ブロックを選択し、前記下層の機能ブロック毎に、その機能ブロックのＬＤプログラムを構成するＬＤ機能要素を、ＦＢＤプログラムを構成するＦＢ機能要素に置き替えてＦＢ図を生成し、前記ＦＢ図から入力変数、出力変数及び一次遅れ変数を設定すると共に、画面表示を隠蔽する変数を設定し、前記機能ブロック毎のＦＢＤ部品を生成する、
ことを特徴とするプログラミング言語変換方法。
【請求項５】
請求項４に記載のプログラミング言語変換方法において、
前記第５のステップは、前記第４のステップにより生成した機能ブロック毎のＦＢＤ部品間を、前記設定した入力変数、出力変数及び一次遅れ変数に基づいて配線し、マークアップ言語で表現したＦＢＤプログラムを生成する、
ことを特徴とするプログラミング言語変換方法。
【請求項６】
複数の変数を組み合わせて所定のシーケンス処理を実現するＬＤプログラムをＦＢＤプログラムに変換するプログラミング言語変換プログラムであって、コンピュータに、
マークアップ言語で表現したＬＤプログラムから、互いに共通する前記変数を有するラダー群からなる機能ブロックを抽出する処理と、
前記抽出した機能ブロックから、さらに互いに共通する前記変数を有するラダー群からなる下層の機能ブロックを階層的に順次抽出する処理と、
前記抽出する処理を繰り返すことにより、階層構造データを生成する処理と、
前記生成した階層構造データを用いて、前記機能ブロック毎に、その機能ブロックのＬＤプログラムを構成するＬＤ機能要素を、ＦＢＤプログラムを構成するＦＢ機能要素に置き替え、前記機能ブロック毎のＦＢＤ部品を生成する処理と、
前記生成した機能ブロック毎のＦＢＤ部品間を配線し、マークアップ言語で表現したＦＢＤプログラムを生成する処理と、
を実行させるプログラミング言語変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ：プログラマブルロジックコントローラ）等に用いるプログラミング言語の変換装置、変換方法及び変換プログラムに関し、特に、ＬＤ（Ｌａｄｄｅｒ  Ｄｉａｇｒａｍ）言語で記述されたＬＤプログラムをＦＢＤ（Ｆｕｎｃｔｉｏｎ  Ｂｌｏｃｋ  Ｄｉａｇｒａｍ）言語で記述されたＦＢＤプログラムに変換する技術に関する。
【背景技術】
【０００２】
従来、ＰＬＣやモーションコントローラ等の制御装置を動作させるためのプログラムとして、ＬＤ言語により記述されたＬＤプログラムが用いられている。このＬＤプログラムは、制御装置によって制御対象を制御するための手順が示されており、シーケンス制御専用のプログラマブル言語である、いわゆるラダーによって記述されたプログラムであり、パーソナルコンピュータや専用のプログラミング装置を用いて設計及び製作される。
【０００３】
しかしながら、ＬＤプログラムは、ラダーの仕様が制御装置メーカ間で統一されておらず、プログラミングを行うためには特殊な知識や経験が必要になることから、その扱いが特殊であり容易ではない。そこで、このようなＬＤプログラムの特殊性を緩和して扱いが容易になるように、例えば、ＷＷＷブラウザからＬＤプログラムを設計及び製作することができる仕組みや（特許文献１，２を参照）、ラダーだけでなくＣ言語等の汎用言語を用いてプログラミングを行う仕組み（特許文献３を参照）など、様々な技術が開発されている。
【０００４】
一方、ＩＥＣ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｅｌｅｃｔｒｏｔｅｃｈｎｉｃａｌ  Ｃｏｍｍｉｓｓｉｏｎ）により、ＰＬＣ等の制御装置に用いるプログラミング言語として、ＦＢＤの標準規格が検討されてきている。このＦＢＤにより記述されたＦＢＤプログラムは、図形を用いたグラフィカルなプログラムである。また、ＦＢＤは、一般に、ラダーに比べて構造化及びモジュール化に有利であることから、ラダーに代わる言語として期待されている。
【０００５】
しかしながら、ＰＬＣ等の制御装置の分野では、従来から使い慣れているラダーを用いてＬＤプログラムを設計及び製作するのが一般的である。このため、構造化及びモジュール化の利点を有効に活用するためには、設計及び製作したプログラム成果物であるＬＤプログラムを、ＦＢＤプログラムへ移行させる必要がある。
【０００６】
【特許文献１】特開２００４−４６６１８号公報
【特許文献２】特開２００２−１８９５０８号公報
【特許文献３】特開２００７−３３４４６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来、ＬＤプログラムからＦＢＤプログラムへの移行は、設計者がＬＤプログラムを解析し、ＦＢＤプログラムへ変換するという手作業によって行われていた。このため、変換作業に多大な時間がかかり手間になっていた。また、手作業では変換過程の中でミスが生じる可能性があることから、ＬＤプログラムからＦＢＤプログラムへの変換が必ずしも正確に行われるとは限らず、信頼性の面で不安があった。
【０００８】
また、前述したように、ラダーの仕様は、制御装置メーカ間で統一されていないことから、ＬＤプログラムからＦＢＤプログラムへの変換作業は、統一して行うことができない。このため、可能な限り汎用的な変換作業ができることが望まれていた。
【０００９】
そこで、本発明は上記課題を解決するためになされたものであり、その目的は、ＰＬＣ等に用いるＬＤプログラムをＦＢＤプログラムに変換する際に、変換作業の負荷を軽減すると共に信頼性を高め、かつ汎用性を実現可能なプログラミング言語変換装置、変換方法及び変換プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明によるプログラミング言語変換装置は、複数の変数を組み合わせて所定のシーケンス処理を実現するＬＤプログラムをＦＢＤプログラムに変換するプログラミング言語変換装置において、マークアップ言語で表現したＬＤプログラムから、互いに共通する前記変数を有するラダー群からなる機能ブロックを抽出し、前記抽出した機能ブロックから、さらに互いに共通する前記変数を有するラダー群からなる下層の機能ブロックを階層的に順次抽出し、階層構造データを生成する機能ブロック抽出部と、前記機能ブロック抽出部により生成された階層構造データを用いて、前記機能ブロック毎に、その機能ブロックのＬＤプログラムを構成するＬＤ機能要素を、ＦＢＤプログラムを構成するＦＢ機能要素に置き替え、前記機能ブロック毎のＦＢＤ部品を生成するＬＤ／ＦＢＤ変換部と、前記ＬＤ／ＦＢＤ変換部により生成された機能ブロック毎のＦＢＤ部品間を配線し、マークアップ言語で表現したＦＢＤプログラムを生成するＦＢＤプログラム生成部と、を備えたことを特徴とする。
【００１１】
また、本発明によるプログラミング言語変換方法は、複数の変数を組み合わせて所定のシーケンス処理を実現するＬＤプログラムをＦＢＤプログラムに変換するプログラミング言語変換方法において、マークアップ言語で表現したＬＤプログラムから、互いに共通する前記変数を有するラダー群からなる機能ブロックを抽出する第１のステップと、前記第１のステップにより抽出した機能ブロックから、さらに互いに共通する前記変数を有するラダー群からなる下層の機能ブロックを階層的に順次抽出する第２のステップと、前記第１のステップ及び第２のステップを繰り返すことにより、階層構造データを生成する第３のステップと、前記第３のステップにより生成した階層構造データを用いて、前記機能ブロック毎に、その機能ブロックのＬＤプログラムを構成するＬＤ機能要素を、ＦＢＤプログラムを構成するＦＢ機能要素に置き替え、前記機能ブロック毎のＦＢＤ部品を生成する第４のステップと、前記第４のステップにより生成した機能ブロック毎のＦＢＤ部品間を配線し、マークアップ言語で表現したＦＢＤプログラムを生成する第５のステップと、を有することを特徴とする。
【００１２】
また、本発明によるプログラミング言語変換方法は、前記第１のステップが、マークアップ言語で表現したＬＤプログラムのうちの基準となるラダーを選択し、前記基準となるラダーの変数を使用している他のラダーを特定し、前記他のラダーを機能ブロックとして抽出し、前記第２のステップが、前記第１のステップにより抽出した機能ブロックから、前記基準となるラダーの入力変数を出力変数として使用しているラダーを、新たに基準となるラダーとして選択し、前記新たに基準となるラダーの変数を使用している他のラダーを特定し、前記他のラダーを下層の機能ブロックとして抽出し、前記新たに基準となるラダーの選択及び下層の機能ブロックの抽出を階層的に行う、ことを特徴とする。
【００１３】
また、本発明によるプログラミング言語変換方法は、前記第４のステップが、前記第３のステップにより生成した階層構造データから、下層の機能ブロックを選択し、前記下層の機能ブロック毎に、その機能ブロックのＬＤプログラムを構成するＬＤ機能要素を、ＦＢＤプログラムを構成するＦＢ機能要素に置き替えてＦＢ図を生成し、前記ＦＢ図から入力変数、出力変数及び一次遅れ変数を設定すると共に、画面表示を隠蔽する変数を設定し、前記機能ブロック毎のＦＢＤ部品を生成する、ことを特徴とする。
【００１４】
また、本発明によるプログラミング言語変換方法は、前記第５のステップが、前記第４のステップにより生成した機能ブロック毎のＦＢＤ部品間を、前記設定した入力変数、出力変数及び一次遅れ変数に基づいて配線し、マークアップ言語で表現したＦＢＤプログラムを生成する、ことを特徴とする。
【００１５】
また、本発明によるプログラミング言語変換プログラムは、複数の変数を組み合わせて所定のシーケンス処理を実現するＬＤプログラムをＦＢＤプログラムに変換するプログラミング言語変換プログラムであって、コンピュータに、マークアップ言語で表現したＬＤプログラムから、互いに共通する前記変数を有するラダー群からなる機能ブロックを抽出する処理と、前記抽出した機能ブロックから、さらに互いに共通する前記変数を有するラダー群からなる下層の機能ブロックを階層的に順次抽出する処理と、前記抽出する処理を繰り返すことにより、階層構造データを生成する処理と、前記生成した階層構造データを用いて、前記機能ブロック毎に、その機能ブロックのＬＤプログラムを構成するＬＤ機能要素を、ＦＢＤプログラムを構成するＦＢ機能要素に置き替え、前記機能ブロック毎のＦＢＤ部品を生成する処理と、前記生成した機能ブロック毎のＦＢＤ部品間を配線し、マークアップ言語で表現したＦＢＤプログラムを生成する処理と、を実行させることを特徴とする。
【発明の効果】
【００１６】
以上説明したように、本発明によれば、ＰＬＣ等に用いるＬＤプログラムをＦＢＤプログラムに変換する際に、変換作業の負荷を軽減すると共に信頼性を高め、かつ汎用性を実現することが可能となる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明を実施するための最良の形態について、図面を参照して説明する。
まず、本発明の概要について説明する。本発明は、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）等のマークアップ言語で表現したＬＤプログラムを、ＸＭＬ等のマークアップ言語で表現したＦＢＤプログラムに変換する仕組みに特徴がある。
【００１８】
図１は、変換元のＬＤプログラムから変換先のＦＢＤプログラムへの変換処理について、一連の流れを説明する図である。図１において、変換元ＬＤプログラムを変換先ＦＢＤプログラムに変換する一連の流れの中で、ＸＭＬ文書が介在している。すなわち、本発明の実施形態は、変換作業の一連の流れの中でＸＭＬ文書を介在させる処理、すなわち、ＸＭＬで表現したＬＤプログラムを、ＸＭＬで表現したＦＢＤプログラムに変換する処理（変換処理Ｓ２）に特徴がある。
【００１９】
変換元ＬＤプログラムは、制御装置メーカが独自に提供するＬＤ言語の仕様に従って生成されたプログラムである。この変換元ＬＤプログラムは、画一的な仕様の下で生成されたものではないから、制御装置メーカによって異なるプログラムとなる。
【００２０】
ＸＭＬで表現したＬＤプログラムは、変換元ＬＤプログラムを、所定の変換処理Ｓ１によって変換したプログラムである。ここで、変換元ＬＤプログラムが制御装置メーカによって異なるプログラムであるから、変換処理Ｓ１も、変換元ＬＤプログラムの種類によって異なる処理となる。しかし、ＸＭＬで表現したＬＤプログラムは、変換元ＬＤプログラム及び変換処理Ｓ１とは異なり、統一され画一的な表現形態のプログラムである。例えば、ＸＭＬで表現したＬＤプログラムαが、ある制御装置メーカの仕様による変換元ＬＤプログラムから変換されたプログラムとし、ＸＭＬで表現したＬＤプログラムβが、他の制御装置メーカの仕様による変換元ＬＤプログラムから変換されたプログラムであるとする。この場合、両者の変換元ＬＤプログラムが同じ動作を実現するプログラムであって、表現形態のみが異なるときには、ＸＭＬで表現したＬＤプログラムαとＸＭＬで表現したＬＤプログラムβとは同一の表現形態となり、同一のプログラムとなる。
【００２１】
ＸＭＬで表現したＦＢＤプログラムは、ＸＭＬで表現したＬＤプログラムを本発明の実施形態による変換処理Ｓ２によって変換したプログラムである。ここで、ＸＭＬで表現したＬＤプログラムは、統一され画一的な表現形態のプログラムであるから、ＸＭＬで表現したＦＢＤプログラムも、統一され画一的な表現形態のプログラムである。
【００２２】
変換先ＦＢＤプログラムは、ＸＭＬで表現したＦＢＤプログラムを、所定の変換処理Ｓ３によって変換したプログラムである。ここで、変換先ＦＢＤプログラムは、制御装置メーカが独自に提供するＦＢＤ言語に従って生成されるＦＢＤプログラムである。したがって、この変換先ＦＢＤプログラムは、画一的な仕様の下で生成されるものではないから、制御装置メーカによって異なるプログラムとなり、変換処理Ｓ３も、変換先ＦＢＤプログラムの種類によって異なる処理となる。
【００２３】
このように、本発明の実施形態では、制御装置メーカによって異なる変換元ＬＤプログラムを、制御装置メータによって異なる変換先ＦＢＤプログラムに変換する一連の流れの中で、ＸＭＬ文書を介在させる。具体的には、変換元ＬＤプログラムを、共通仕様による表現形態のＬＤプログラムに変換し（変換処理Ｓ１）、そして、共通仕様による表現形態のＦＢＤプログラムに変換し（変換処理Ｓ２）、さらに、変換先ＦＢＤプログラムに変換するようにした（変換処理Ｓ３）。この変換処理Ｓ２は、制御装置メーカ間で異なることのない画一的な処理として規定することができるから、全体の流れの中で、汎用的に使用することができる。
【００２４】
〔ＰＬＣプログラミング言語変換装置の構成〕
次に、本発明の実施形態によるＰＬＣプログラミング言語変換装置の構成について説明する。図２は、本発明の実施形態によるＰＬＣプログラミング言語変換装置のハードウェア構成を示すブロック図であり、図３は、図２に示すＰＬＣプログラミング言語変換装置の機能構成を示すブロック図である。このＰＬＣプログラミング言語変換装置１は、ＸＭＬで表現したＬＤプログラムを、ＸＭＬで表現したＦＢＤプログラムに変換する装置である。尚、ＸＭＬで表現したＬＤプログラムは、図１に示した変換処理Ｓ１により、変換元ＬＤプログラムから予め変換されているものとする。
【００２５】
図２を参照して、このＰＬＣプログラミング言語変換装置１は、例えばパーソナルコンピュータであり、ＣＰＵ１０、ＲＡＭ１１、ＲＯＭ１２、ＨＤ（ハードディスク）１３、通信インタフェース１４、表示インタフェース１５及び操作インタフェース１６を備えている。ＣＰＵ１０は、ＲＡＭ１１及びＲＯＭ１２を含めて制御部３０を構成し、制御部３０によってＰＬＣプログラミング言語変換装置１全体が統括制御される。ＲＡＭ１１は、各種プログラムやデータ等を一時的に記憶する書き換え可能な記憶部であり、ＲＯＭ１２には、ＣＰＵ１０による基本的な処理を実行するためのプログラム及びデータ等が予め記憶されている記憶部である。
【００２６】
通信インタフェース１４は、図示しないインターネット等の通信ネットワークを介して他のコンピュータやサーバ等との間で通信を行う。表示インタフェース１５は、画面表示用のデータを制御部３０から入力し、例えば、ＸＭＬで表現したＬＤプログラム及びＸＭＬで表現したＦＢＤプログラム等を表示装置２に出力する。操作インタフェース１６は、オペレータによるキーボード３及びマウス４の操作に従って、操作データを制御部３０に出力する。
【００２７】
ＨＤ１３は、ＯＳ（オペレーティングシステム）２０、画面制御プログラム２１、言語変換プログラム２２、ＬＤプログラムデータ（ＸＭＬ文書）２３及びＦＢＤプログラムデータ（ＸＭＬ文書）２４等を記憶する記憶部である。ここで、ＬＤプログラムデータ（ＸＭＬ文書）２３は、ＸＭＬで表現したＬＤプログラムであり、ＦＢＤプログラムデータ（ＸＭＬ文書）２４は、ＸＭＬで表現したＦＢＤプログラムである。
【００２８】
ＯＳ２０は、ＰＬＣプログラミング言語変換装置１をコンピュータとして動作させるための基本的な機能を提供するプログラムである。画面制御プログラム２１は、ＸＭＬで表現したＬＤプログラム及びＸＭＬで表現したＦＢＤプログラムを表示装置２に表示したり、オペレータによるキーボード３及びマウス４の操作に従って、必要なデータを表示装置２に表示したり等、表示装置２の画面にデータを表示する表示インタフェース１５を制御するプログラムである。
【００２９】
言語変換プログラム２２は、ＨＤ１３に記憶されたＬＤプログラムデータ（ＸＭＬ文書）２３を読み出し、後述する言語変換処理を行い、ＦＢＤプログラムデータ（ＸＭＬ文書）２４を生成してＨＤ１３に格納するプログラムである。
【００３０】
また、ＯＳ２０は、ＣＰＵ１０によって読み出されて実行されることにより、コンピュータの基本的な機能として、ＲＡＭ１１、ＲＯＭ１２及びＨＤ１３のメモリ管理に関する機能、通信インタフェース１４の通信制御に関する機能、表示インタフェース１５の表示制御に関する機能、操作インタフェース１６の操作入力制御に関する機能等を実現する。そして、このＯＳ２０がＣＰＵ１０によって実行された状態で、言語変換プログラム２２等が実行される。
【００３１】
尚、ＯＳ２０、画面制御プログラム２１、言語変換プログラム２２等は、例えば、図示しない通信ネットワークに接続されたサーバ等からネットワークケーブルを介してＨＤ１３にダウンロードされるようにしてもよく、また、ＣＤ−ＲＯＭ等の記憶媒体に記憶してから当該記憶媒体を介して、ＨＤ１３に読み込まれるようにしてもよい。
【００３２】
制御部３０は、前述したとおり、ＣＰＵ１０、ＲＡＭ１１及びＲＯＭ１２により構成され、ＣＰＵ１０がＨＤ１３に記憶された言語変換プログラム２２をＲＡＭ１１に読み出して実行することにより、図３に示すような機能構成となる。
【００３３】
すなわち、図２に示した制御部３０が言語変換プログラム２２を実行することにより、ＰＬＣプログラミング言語変換装置１は、図３に示すように、機能ブロック抽出部３１、ＬＤ／ＦＢＤ変換部３２及びＦＢＤプログラム生成部３３を備えることになる。
【００３４】
〔ＰＬＣプログラミング言語変換装置の処理〕
次に、図２及び図３に示したＰＬＣプログラミング言語変換装置１の処理について説明する。図４は、ＰＬＣプログラミング言語変換装置１による言語変換処理の全体の流れを示すフローチャートである。
【００３５】
まず、ＰＬＣプログラミング言語変換装置１の機能ブロック抽出部３１は、ＨＤ１３からＬＤプログラムデータ（ＸＭＬ文書）２３を読み出し（ステップＳ４０１）、ＬＤプログラムデータ（ＸＭＬ文書）２３から機能ブロックを抽出し、機能ブロックによる階層構造データを生成する（ステップＳ４０２）。
【００３６】
ＬＤ／ＦＢＤ変換部３２は、機能ブロック抽出部３１により生成された、機能ブロックによる階層構造データを入力し、機能ブロック毎にＬＤプログラムをＦＢＤプログラムに変換し、機能ブロック毎のＦＢＤ部品を生成する（ステップＳ４０３）。
【００３７】
ＦＢＤプログラム生成部３３は、ＬＤ／ＦＢＤ変換部３２により生成された、機能ブロック毎のＦＢＤ部品を入力し、機能ブロック毎のＦＢＤ部品どうしを配線し、ＦＢＤプログラムデータ（ＸＭＬ文書）２４を生成する（ステップＳ４０４）。そして、ＦＢＤプログラム生成部３３は、ＦＢＤプログラムデータ（ＸＭＬ文書）２４をＨＤ１３に格納する（ステップＳ４０５）。これにより、言語変換処理が終了する。
【００３８】
〔機能ブロック化及び階層構造生成処理〕
次に、図４に示したステップＳ４０２の機能ブロック化及び階層構造生成処理について詳細に説明する。図５は、機能ブロック化及び階層構造生成処理を示すフローチャートである。機能ブロック抽出部３１は、図５に示す処理により、ＬＤプログラムデータ（ＸＭＬ文書）２３から機能ブロックを抽出し、階層構造データを生成する。
【００３９】
図６は、ＨＤ１３から読み出されたＬＤプログラムデータ（ＸＭＬ文書）２３の一部を、ラダーの形態にて表現した図であり、オリジナルのＬＤプログラムを示している。尚、このＬＤプログラムは、以下の説明を簡単にするために、ＬＤプログラムデータ（ＸＭＬ文書）２３をラダーの形態にて便宜的に表現したものである。後述する図７、図８、図１１及び図１２につても同様である。図６において、左端の１００〜１６０は、ＬＤプログラムデータ（ＸＭＬ文書）２３を構成する複数のラダーのうち、１行のラダーのラダー番号を示している。ａ４，ｂ１，ｂ２，ｂ等は各要素の入出力アドレスを示しており、各記号は、要素の種類（ａ接点、ｂ接点、コイル等）を示している。以下、説明を簡単にするため、ａ４，ｂ１，ｂ２，ｂ等を、入出力状態が反映される変数として扱う。例えば、ａ４，ｂ１，ｂ２は入力変数であり、ｂは出力変数である。以下、図６に示すＬＤプログラムデータ（ＸＭＬ文書）２３の例を参照して説明する。
【００４０】
まず、機能ブロック抽出部３１は、ＨＤ１３から読み出したＬＤプログラムデータ（ＸＭＬ文書）２３について、基準となるラダーが１行のみ存在するか否かを判定する（ステップＳ５０１）。基準となるラダーが１行のみ存在すると判定した場合（ステップＳ５０１：Ｙ）、ステップＳ５０７へ移行する。一方、基準となるラダーが２行以上存在すると判定した場合（ステップＳ５０１：Ｎ）、最も下に位置する（ラダー番号の大きい）ラダー（の行）を、基準となるラダーとして特定する（ステップＳ５０２）。図６の例では、機能ブロック抽出部３１は、ＬＤプログラムデータ（ＸＭＬ文書）２３について、基準となるラダーが２行以上存在すると判定し（ステップＳ５０１：Ｎ）、最も下に位置するラダー番号１６０のラダーを、基準となるラダーとして特定する（ステップＳ５０２）。以下、ラダー番号ｎのラダーをラダーｎという。
【００４１】
機能ブロック抽出部３１は、基準となるラダー１６０に基づいて、ＬＤプログラムデータ（ＸＭＬ文書）２３を構成するラダーから機能ブロック（１）を抽出する（ステップＳ５０３）。具体的には、機能ブロック抽出部３１は、基準となるラダー１６０の変数を使用しているラダーを特定し、その特定したラダーをラダー番号の順番に整列させ、整列後のラダー群を機能ブロック（１）として抽出する。
【００４２】
図７は、機能ブロック（１）の抽出処理を説明する図である。機能ブロック抽出部３１は、基準となるラダー１６０の変数ａ４，ａ３，ａ２，ａ１，ａを特定し、まず、変数ａを注目する変数として変数ａを使用しているラダーを、ラダー１５０からラダー１００へ順番にラダー毎に判定して特定する。変数ａ１，ａ２，ａ３，ａ４についても同様の処理を行い、その変数を使用しているラダーを特定する。図６に示したＬＤプログラムデータ（ＸＭＬ文書）２３の場合は、図７のように、ラダー１００，１１０，１２０，１３０，１４０が特定され、これらのラダー郡は、機能ブロック（１）すなわち機能ブロックＡとして抽出される。ラダー１５０は、基準となるラダー１６０の変数ａ４，ａ３，ａ２，ａ１，ａが使用されていないから、機能ブロック（１）すなわち機能ブロックＡのラダーには含まれず、機能ブロックＡの上の位置に移動される。つまり、機能ブロック抽出部３１は、ステップＳ５０３において、ラダー１００，１１０，１２０，１３０，１４０，１６０からなる機能ブロックＡを抽出する。尚、ラダー１５０は、次回のステップＳ５０３の処理により、機能ブロックＢとなる。
【００４３】
図５に戻って、機能ブロック抽出部３１は、抽出した機能ブロック（１）の中で、基準となるラダーが１行のみ存在するか否かを判定する（ステップＳ５０４）。基準となるラダーが１行のみ存在すると判定した場合（ステップＳ５０４：Ｙ）、ステップＳ５０１へ移行する。一方、基準となるラダーが２行以上存在すると判定した場合（ステップＳ５０４：Ｎ）、抽出した機能ブロック（１）の中で、新たに基準となるラダー（の行）を特定する（ステップＳ５０５）。そして、機能ブロック抽出部３１は、新たに基準となるラダーに基づいて、機能ブロック（２）を抽出する（ステップＳ５０６）。
【００４４】
図８は、機能ブロック（２）の抽出処理を説明する図である。機能ブロック抽出部３１は、ステップＳ５０２において基準となったラダー１６０の入力変数ａ１を注目する変数として、その変数ａ１を出力変数として使用しているラダーを特定する。すなわち、注目する変数ａを演算するラダーを特定し、そのラダーを、新たに基準となるラダーとして特定する。そして、機能ブロック抽出部３１は、ステップＳ５０３の処理と同様の処理を機能ブロックＡの中で行い、機能ブロック（２）を抽出する。つまり、図８の例では、機能ブロック抽出部３１は、ステップＳ５０６において、ラダー１６０が機能ブロックＡ１となり、ラダー１２０，１３０，１４０が機能ブロックＡ２となる。
【００４５】
機能ブロック抽出部３１は、ステップＳ５０６において、機能ブロックＡ１，Ａ２を抽出した後、ステップＳ５０４へ移行する。同様にして、機能ブロック（１）の中で、機能ブロック（２）の抽出を繰り返す。図８の例では、機能ブロック（２）として、機能ブロックＡ１，Ａ２，Ａ３，Ａ４が抽出される。ここで、機能ブロック抽出部３１は、ステップＳ５０４において、機能ブロック（１）の中で、基準となるラダーが１行のみ存在すると判定した場合（ステップＳ５０４：Ｙ）、そのラダーを機能ブロック（２）として抽出し、ステップＳ５０１へ移行する。
【００４６】
尚、図５に示したフローチャートには、機能ブロック（１）及び機能ブロック（２）を抽出する処理が示されているが、機能ブロック（２）の中から、さらに機能ブロック（３）が抽出される。すなわち、機能ブロックは階層的に抽出される。
【００４７】
機能ブロック抽出部３１は、ステップＳ５０１において、基準となるラダーが１行のみ存在すると判定した場合（ステップＳ５０１：Ｙ）、そのラダーを機能ブロック（１）として抽出し、ステップＳ５０７へ移行する。機能ブロック抽出部３１は、ステップＳ５０１〜ステップＳ５０６の処理により得られた機能ブロック（１）（２）等から、階層構造を生成する（ステップＳ５０７）。これにより、機能ブロック化及び階層構造生成処理は終了する。
【００４８】
図９は、階層構造を説明する図であり、図９に示す階層構造が、ステップＳ５０７において機能ブロック抽出部３１により生成される。図９に示す機能ブロックによる階層構造は、オリジナルのＬＤプログラムであるＬＤプログラムデータ（ＸＭＬ文書）２３が、共通する変数が使用されているラダーからなる機能ブロックＡ，Ｂ等に区分されている。また、機能ブロックＡが、共通する変数が使用されているラダーからなる機能ブロックＡ１，Ａ２，Ａ３，Ａ４に区分されている。
【００４９】
ここで、機能ブロックＡ，Ｂ等は、機能ブロック（１）に相当するレベル１に位置しており、機能ブロックＡ１，Ａ２，Ａ３，Ａ４は、機能ブロック（２）に相当するレベル２に位置している。同様にして、機能ブロック（３）が存在する場合は、点線で示しているように、機能ブロックＡ２が、共通する変数が使用されているラダーからなる機能ブロックＡ２−１，Ａ２−２に区別されている。
【００５０】
尚、図９に示した階層構造において、最下層の機能ブロックを上から順番に並べたＬＤプログラムは、オリジナルのＬＤプログラムであるＬＤプログラムデータ（ＸＭＬ文書）２３を構成するラダーを、機能ブロック毎に組み替えたＬＤプログラムである。すなわち、機能が密接に関係するラダーを機能ブロックとしてまとめて組み替えたＬＤプログラムである。但し、ラダー内の各変数は組み替えられていない。
【００５１】
このように、機能ブロック抽出部３１は、ＨＤ１３から読み出したＬＤプログラムデータ（ＸＭＬ文書）２３から、共通する変数が使用されている機能ブロックを抽出し、抽出した機能ブロックの中で、共通する変数が使用されている機能ブロックをさらに抽出し、この処理を繰り返すことにより、機能ブロックによる階層構造を生成する。
【００５２】
〔ＦＢＤ部品生成処理〕
次に、図４に示したステップＳ４０３のＦＢＤ部品生成処理について詳細に説明する。図１０は、ＦＢＤ部品生成処理を示すフローチャートである。ＬＤ／ＦＢＤ変換部３２は、図１０に示す処理により、機能ブロックによる階層構造データに対して、機能ブロック毎にＬＤプログラムをＦＢＤプログラムに変換し、機能ブロック毎のＦＢＤ部品を生成する。
【００５３】
まず、ＬＤ／ＦＢＤ変換部３２は、ＦＢＤ部品が生成されていない未処理の機能ブロックが存在するか否かを判定する（ステップＳ１００１）。最初は全ての機能ブロックが未処理であるから、未処理の機能ブロックが存在するものと判定される。ＬＤ／ＦＢＤ変換部３２は、後述するステップＳ１００２からステップＳ１００８までの処理を繰り返した後、未処理の機能ブロックが存在しないと判定した場合（ステップＳ１００１：Ｎ）、ＦＢＤ部品生成処理は終了する。
【００５４】
ＬＤ／ＦＢＤ変換部３２は、未処理の機能ブロックが存在すると判定した場合（ステップＳ１００１：Ｙ）、ＬＤプログラムの階層構造における下層の機能ブロックの中から、未処理の１つの機能ブロックを任意に選択する（ステップＳ１００２）。例えば、ＬＤ／ＦＢＤ変換部３２は、図９に示すように、オリジナルのＬＤプログラムを基点として、その下層レベルにおける機能ブロックの中から、１つの機能ブロックを選択する。まず、ＬＤ／ＦＢＤ変換部３２は、オリジナルのＬＤプログラムの入れ子であるレベル１の機能ブロックＡ及び機能ブロックＢを判定する。そして、機能ブロックＡについて、機能ブロックＡの入れ子であるレベル２の機能ブロックＡ１〜Ａ４を判定し、さらに、機能ブロックＡ２については、その入れ子である機能ブロックＡ２−１，Ａ２−２を判定する。そして、上から順番に枝毎に最下層の機能ブロックを判定する。つまり、レベル２の機能ブロックＡ１にはレベル３の入れ子が存在しないから、最下層の機能ブロックは機能ブロックＡ１となる。また、レベル２の機能ブロックＡ２にはレベル３の入れ子が存在し、そのレベル３の機能ブロックＡ２−１，Ａ２−２にはレベル４の入れ子が存在しないから、最下層の機能ブロックは機能ブロックＡ２−１，Ａ２−２となる。このように、最下層の機能ブロックとして機能ブロックＡ１，Ａ２−１，Ａ２−２，Ａ３，Ａ４，・・・が判定される。ここで、未処理の１つの機能ブロックがレベル２の機能ブロックの中からを選択される場合には、ＬＤ／ＦＢＤ変換部３２は、レベル２の機能ブロックが最下層でない機能ブロックＡ２について、その入れ子である機能ブロックＡ２−１，Ａ２−２を機能ブロックＡ２に置き替える。そして、ＬＤ／ＦＢＤ変換部３２は、機能ブロックＡ１，Ａ２，Ａ３，Ａ４等の中から、１つの機能ブロックを選択する。尚、ここではレベル２の機能ブロックの中から未処理の１つの機能ブロックを選択する例を示したが、本発明はレベル２に限定されるものではなく、階層化された機能ブロックの数や枝の数等に応じて、レベルを決定するようにしてもよい。また、同じレベルから未処理の１つの機能ブロックを選択する例を示したが、必ずしも同じレベルである必要はなく、異なるレベルの機能ブロックを選択するようにしてもよい。
【００５５】
ＬＤ／ＦＢＤ変換部３２は、ステップＳ１００２にて選択した機能ブロックについて、その機能ブロックに含まれるＬＤ機能要素をＦＢ機能要素に置き替える（ステップＳ１００３）。これにより、ＬＤプログラムの機能ブロックは、ＦＢＤプログラムのＦＢ図に置き替えられる。
【００５６】
図１１は、ＬＤ機能要素をＦＢ機能要素に置き替える処理を説明する図であり、図１２は、ＬＤプログラムの機能ブロックＡ２をＦＢＤプログラムのＦＢ図Ａ２に置き替える処理を説明する図である。尚、図１２に示すＦＢ図Ａ２は、説明を簡単にするために、ＦＢＤプログラムデータ（ＸＭＬ文書）をＦＢＤの形態にて便宜的に表現したものである。図１１に示すように、例えばコイル、リレーのＬＤ機能要素を、２入力１出力のＦＢ機能要素に置き替える。図１２において、機能ブロックＡ２に含まれるラダー１２０の入力変数ａ１１４のα接点と、入力変数ａ１１３のａ接点との間でＡＮＤ演算する場合、機能ブロックＡ２における入力変数ａ１１４，ａ１１３のＬＤ機能要素を、ＦＢ図Ａ２に示すようなＦＢ機能要素（入力変数をａ１１４，ａ１１３として２入力のＡＮＤ演算を行い、演算結果を１出力の出力変数としている要素）に置き替える。このようにして、機能ブロックＡ２を構成するラダー１２０，１３０，１４０に含まれるＬＤ機能要素の全てをＦＢ機能要素に置き替えることにより、ＬＤプログラムの機能ブロックＡ２がＦＢＤプログラムのＦＢ図Ａ２に置き替えられる。
【００５７】
ＬＤ／ＦＢＤ変換部３２は、ステップＳ１００３において機能ブロックから置き替えたＦＢ図について、入力変数を設定する（ステップＳ１００４）。図１２の例では、ａ１１４，ａ１１３，ａ１１２，ａ１２，ａ１３が入力変数として設定される。ここで設定された入力変数は、そのＦＢ図全体の入力情報であり、ＦＢＤ部品の入力情報になる。このようにして設定された入力変数は、後述するＦＢＤ配線処理において、ＦＢＤ部品を配線するときに出力変数に接続するための参照情報として用いられる。
【００５８】
ＬＤ／ＦＢＤ変換部３２は、ステップＳ１００３において機能ブロックから置き替えたＦＢ図について、出力変数を設定する（ステップＳ１００５）。図１２の例では、ａ１１，ａ１１１，ａ１が出力変数として設定される。ここで設定された出力変数は、そのＦＢ図全体の出力情報であり、ＦＢＤ部品の出力情報になる。このようにして設定された出力変数は、後述するＦＢＤ配線処理において、ＦＢＤ部品を配線するときに入力変数に接続するための参照情報として用いられる。
【００５９】
ＬＤ／ＦＢＤ変換部３２は、ステップＳ１００３において機能ブロックから置き替えたＦＢ図について、一次遅れ変数を、オペレータの操作入力に従って設定する（ステップＳ１００６）。一次遅れ変数とは、出力変数にて変数値が確定する前に参照される入力変数である。具体的には、ＬＤプログラムにおいて、一次遅れ変数である入力変数を含む第１のラダー、及び、その一次遅れ変数である入力変数に反映する出力変数を含む第２のラダーがこの順番で存在する場合、前者のラダーの入力変数には、後者のラダーの出力変数の変数値が次のスキャンで反映される。したがって、前者のラダーの入力変数は、その変数値が１スキャン遅れて反映されるため、一次遅れ変数となる。
【００６０】
オペレータは、ＬＤプログラムを参照しながら一次遅れ変数を判断し、その変数を操作入力することにより、ＬＤ／ＦＢＤ変換部３２が一次遅れ変数を設定する。尚、ＬＤ／ＦＢＤ変換部３２は、ＬＤプログラムを用いて、入出力変数の順番を考慮し、一次遅れ変数を自動的に選択して設定するようにしてもよい。このようにして設定された一次遅れ変数は、後述するＦＢＤ配線処理において、ＦＢＤ部品を配線するときに出力変数に接続するための参照情報として用いられる。
【００６１】
ＬＤ／ＦＢＤ変換部３２は、ステップＳ１００３において機能ブロックから置き替えたＦＢ図について、オペレータの操作入力により、予め設定された入出力変数を隠蔽する（ステップＳ１００７）。ここで、隠蔽とは、生成されるＦＢＤ部品が画面に表示されたときに、その変数を表示しないようにすることをいう。オペレータは、隠蔽する入出力変数として、一つの機能ブロック内に存在する変数のみを設定し、複数の機能ブロック間で相互に関連する変数は設定しない。尚、ＬＤ／ＦＢＤ変換部３２は、一つの機能ブロック内に存在する変数であるか、複数の機能ブロック間で相互に関連する変数であるかを判定し、隠蔽する入出力変数を自動的に設定して隠蔽するようにしてもよい。
【００６２】
前述したステップＳ１００１〜ステップＳ１００７の処理を行うことにより、ステップＳ１００１にて選択した機能ブロックに対応するＦＢＤ部品が完成する（ステップＳ１００８）。そして、処理がステップＳ１００１へ移行し、ＬＤ／ＦＢＤ変換部３２は、全ての下層の機能ブロックに対応するＦＢＤ部品を完成させると、ＦＢＤ部品生成処理が終了する。
【００６３】
このように、ＬＤ／ＦＢＤ変換部３２は、機能ブロック抽出部３１により生成された階層構造データに対して、下層の機能ブロック毎にＬＤ機能要素をＦＢ機能要素に変換し、入力変数、出力変数及び一次遅れ変数を設定し、さらに隠蔽する入出力変数を設定することにより、その機能ブロックに対応するＦＢＤ部品を生成する。これにより、全ての下層の機能ブロックに対応するＦＢＤ部品を完成することができる。また、入力変数、出力変数及び一次遅れ変数を設定するようにしたから、後述するＦＢＤ配線処理においてこれらの変数を参照することにより、ＦＢＤ部品どうしを配線することができる。また、隠蔽する入出力変数を設定するようにしたから、画面上にＦＢＤプログラムを表示したときに、隠蔽の設定がされた変数は表示されず、全体として見やすいプログラムとなる。
【００６４】
〔ＦＢＤ配線処理〕
次に、図４に示したステップＳ４０４のＦＢＤ配線処理について詳細に説明する。図１３は、ＦＢＤ配線処理を示すフローチャートである。ＦＢＤプログラム生成部３３は、図１３に示す処理により、機能ブロック毎のＦＢＤ部品どうしを配線し、ＦＢＤプログラムデータ（ＸＭＬ文書）２４を生成する。
【００６５】
まず、ＦＢＤプログラム生成部３３は、ＬＤ／ＦＢＤ変換部３２により生成された、機能ブロック毎のＦＢＤ部品を入力し、未配線のＦＢＤ部品が存在するか否かを判定する（ステップＳ１３０１）。最初は全てのＦＢＤ部品が未配線であるから、未配線のＦＢＤ部品が存在するものと判定される。ＦＢＤプログラム生成部３３は、後述するステップＳ１３０２からステップＳ１３１０までの処理を繰り返した後、未配線のＦＢＤ部品が存在しないと判定した場合（ステップＳ１３０１：Ｎ）、ＦＢＤ配線処理は終了する。
【００６６】
ＦＢＤプログラム生成部３３は、未配線のＦＢＤ部品が存在すると判定した場合（ステップＳ１３０１：Ｙ）、未配線のＦＢＤ部品の中から任意に１つのＦＢＤ部品を特定し、図５に示した処理にて得られた階層構造データに基づいて、そのＦＢＤ部品のグループを選択する（ステップＳ１３０２）。ここで、グループとは、機能ブロックによる階層構造において、上位に同じ機能ブロックを有する場合の下位のＦＢＤ部品の集合をいう。例えば、図９において、機能ブロックＡ１，Ａ２，Ａ３，Ａ４に対応するＦＢＤ部品の集合は、機能ブロックＡのグループに属することになる。つまり、ＦＢＤプログラム生成部３３は、図９の例において、特定したＦＢＤ部品が機能ブロックＡ１に対応するＦＢＤ部品である場合、レベル１の機能ブロックＡのグループを選択する。
【００６７】
ＦＢＤプログラム生成部３３は、ステップＳ１３０２にて選択したグループに属するＦＢＤ部品群の中から、中心となるＦＢＤ部品（中心ＦＢＤ部品）を選択する（ステップＳ１３０３）。具体的には、ＦＢＤプログラム生成部３３は、ＦＢＤ部品群のそれぞれのＦＢＤ部品について、入出力変数に基づいて関連付けを行い、入力変数と出力変数とを接続線で結んだときの接続線の数をカウントする。そして、ＦＢＤ部品毎の接続線の数のうち、最も接続線の数が多いＦＢＤ部品を中心ＦＢＤ部品として選択する。
【００６８】
ＦＢＤプログラム生成部３３は、ステップＳ１３０３にて選択した中心ＦＢＤ部品を、そのグループのＦＢＤプログラムが表示される画面を図面とした場合に、その図面の中央に配置する（ステップＳ１３０４）。例えば、中心ＦＢＤ部品の図面内の配置位置データとして、図面の中央の座標データを設定する。
【００６９】
ＦＢＤプログラム生成部３３は、グループに属するＦＢＤ部品について、未選択のＦＢＤ部品が存在するか否かを判定する（ステップＳ１３０５）。最初は、全てのＦＢＤ部品が未選択であるから、未選択のＦＢＤ部品が存在するものと判定される。ＦＢＤプログラム生成部３３は、後述するステップＳ１３０７からステップＳ１３１０までの処理を繰り返した後、未選択のＦＢＤ部品が存在しないと判定した場合（ステップＳ１３０５：Ｎ）、グループ内の配線は完了したものとして（ステップＳ１３０６）、ステップＳ１３０１へ移行する。
【００７０】
ＦＢＤプログラム生成部３３は、未選択のＦＢＤ部品が存在すると判定した場合（ステップＳ１３０５：Ｙ）、未選択のＦＢＤ部品の中から任意に１つのＦＢＤ部品を選択する（ステップＳ１３０７）。
【００７１】
ＦＢＤプログラム生成部３３は、ステップＳ１３０７にて選択したＦＢＤ部品が一次遅れ変数を有する場合、その一次遅れ変数を確定するＦＢＤ部品を特定し、特定したＦＢＤ部品を、選択したＦＢＤ部品の右側に配置し、一次遅れ変数と特定したＦＢＤ部品の出力変数とを配線する（ステップＳ１３０８）。
【００７２】
ＦＢＤプログラム生成部３３は、ステップＳ１３０７にて選択したＦＢＤ部品の入力変数について、その入力変数を確定するＦＢＤ部品を特定し、特定したＦＢＤ部品を、選択したＦＢＤ部品の左側に配置し、入力変数と特定したＦＢＤ部品の出力変数とを配線する（ステップＳ１３０９）。
【００７３】
ＦＢＤプログラム生成部３３は、ステップＳ１３０７にて選択したＦＢＤ部品の出力変数について、その出力変数を参照するＦＢＤ部品を特定し、特定したＦＢＤ部品を、選択したＦＢＤ部品の右側に配置し、出力変数と特定したＦＢＤ部品の入力変数とを配線する（ステップＳ１３１０）。そして、ステップＳ１３０５へ移行する。
【００７４】
このように、ステップＳ１３０７からステップＳ１３１０までの処理を繰り返すことにより、グループに属する全てのＦＢＤ部品の配線が行われ、図面の中央に配置された中心ＦＢＤ部品を中心として、グループのＦＢＤプログラムが生成される。そして、ステップＳ１３０１へ移行し、他のグループについても同様の処理を行い、ＦＢＤ配線処理が終了する。
【００７５】
以上のように、本発明の実施形態によるＰＬＣプログラミング言語変換装置１によれば、機能ブロック抽出部３１が、ＬＤプログラムデータ（ＸＭＬ文書）２３から機能ブロックを抽出して階層構造データを生成し、ＬＤ／ＦＢＤ変換部３２が、階層構造データにおける機能ブロック毎にＬＤプログラムをＦＢＤプログラムに変換し、機能ブロック毎のＦＢＤ部品を生成し、ＦＢＤプログラム生成部３３が、機能ブロック毎のＦＢＤ部品どうしを配線し、ＦＢＤプログラムデータ（ＸＭＬ文書）２４を生成するようにした。これにより、従来の手作業による時間及び手間の問題を解消することができ、変換作業に伴うミスも無くすことができる。したがって、ＬＤプログラムからＦＢＤプログラムへの変換作業の負荷を低減することができ、変換作業の信頼性を高めることができる。
【００７６】
また、本発明の実施形態によるＰＬＣプログラミング言語変換装置１によれば、制御装置メーカ間で統一されていない変換元ＬＤプログラムから変換先ＦＢＤプログラムへ変換するために、変換元ＬＤプログラムを、統一したＬＤプログラムデータ（ＸＭＬ文書）２３に前もって変換させ、このＬＤプログラムデータ（ＸＭＬ文書）２３をＬＤプログラムデータ（ＸＭＬ文書）２３に変換するようにした。そして、ＬＤプログラムデータ（ＸＭＬ文書）２３は、変換先ＦＢＤプログラムに変換される。したがって、制御装置メーカ間で統一されていない変換元ＬＤプログラムであっても、制御装置メーカ間で統一された仕様によるＬＤプログラムデータ（ＸＭＬ文書）２３に変換すれば、ＬＤプログラムデータ（ＸＭＬ文書）２３からＦＢＤプログラムデータ（ＸＭＬ文書）２４に画一的に変換することができる。つまり、変換元ＬＤプログラムから変換先ＦＢＤプログラムへの変換過程の中に、制御装置メーカ間で統一され汎用的に使用できる変換手法を組み込むことができる。これにより、ＬＤプログラムからＦＢＤプログラムへの変換を、汎用的に実現することができる。
【００７７】
以上、実施形態を挙げて本発明を説明したが、本発明は前記実施形態に限定されるものではなく、その技術思想を逸脱しない範囲で種々変形可能である。例えば、図６、図７、図８、図１２に示したＬＤプログラム等、及び図９に示した階層構造は、本発明の実施形態を説明するための例示に過ぎず、本発明はこれらに限定されることはない。
【００７８】
また、前記実施の形態ではＸＭＬ文書を例にして説明したが、本発明はこれに限定されるものではなく、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）、ＳＧＭＬ（Ｓｔａｎｄａｒｄ  Ｇｅｎｅｒａｌｉｚｅｄ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）、ＲＴＦ（Ｒｉｃｈ  Ｔｅｘｔ  Ｆｏｒｍａｔ）、ＴｅＸ等のマークアップ言語による文書であればよい。
【図面の簡単な説明】
【００７９】
【図１】変換元のＬＤプログラムから変換先のＦＢＤプログラムへの変換処理について、一連の流れを説明する図である。
【図２】本発明の実施形態によるＰＬＣプログラミング言語変換装置のハードウェア構成を示すブロック図である。
【図３】本発明の実施形態によるＰＬＣプログラミング言語変換装置の機能構成を示すブロック図である。
【図４】言語変換処理の全体の流れを示すフローチャートである。
【図５】機能ブロック化及び階層構造生成処理を示すフローチャートである。
【図６】ＬＤプログラム（オリジナル）を表現した図である。
【図７】機能ブロック（１）の抽出処理を説明する図である。
【図８】機能ブロック（２）の抽出処理を説明する図である。
【図９】機能ブロックによる階層構造を説明する図である。
【図１０】ＦＢＤ部品生成処理を示すフローチャートである。
【図１１】ＬＤ機能要素をＦＢ機能要素に置き替える処理を説明する図である。
【図１２】ＬＤプログラムの機能ブロックをＦＢＤプログラムのＦＢ図に置き替える処理を説明する図である。
【図１３】ＦＢＤ配線処理を示すフローチャート図である。
【符号の説明】
【００８０】
１  ＰＬＣプログラミング言語変換装置
２  表示装置
３  キーボード
４  マウス
１０  ＣＰＵ
１１  ＲＡＭ
１２  ＲＯＭ
１３  ＨＤ
１４  通信インタフェース
１５  表示インタフェース
１６  操作インタフェース
２０  ＯＳ
２１  画面制御プログラム
２２  言語変換プログラム
２３  ＬＤプログラムデータ（ＸＭＬ文書）
２４  ＦＢＤプログラムデータ（ＸＭＬ文書）
３０  制御部
３１  機能ブロック抽出部
３２  ＬＤ／ＦＢＤ変換部
３３  ＦＢＤプログラム生成部
【図１】
2010020635.tif 000003
【図２】
2010020635.tif 000004
【図３】
2010020635.tif 000005
【図４】
2010020635.tif 000006
【図５】
2010020635.tif 000007
【図６】
2010020635.tif 000008
【図７】
2010020635.tif 000009
【図８】
2010020635.tif 000010
【図９】
2010020635.tif 000011
【図１０】
2010020635.tif 000012
【図１１】
2010020635.tif 000013
【図１２】
2010020635.tif 000014
【図１３】
2010020635.tif 000015