(57)【特許請求の範囲】
【請求項１】
ファンクションブロックダイアグラム（ＦＢＤ）部品を配置し、配置された前記ＦＢＤ部品同士を接続することによりプログラムを編集するプログラム編集部と、
編集された前記プログラムに対し、前記ＦＢＤ部品の位置情報および接続情報を基に、前記ＦＢＤ部品の実行順序を決定する実行順序決定部と、
前記プログラム編集部にて配置されている前記ＦＢＤ部品の前記位置情報および前記接続情報を管理する部品情報管理部と、
前記プログラム編集部における前記ＦＢＤ部品の配置の変更に伴う再コンパイルの実施の要否を判定する再コンパイル要否判定部と、を有し、
配置を変更させる前記ＦＢＤ部品が前記プログラム編集部において指定されると、前記部品情報管理部は、前記プログラム編集部で指定されたＦＢＤ部品の位置を変更させても前記実行順序が同一となる位置範囲を抽出し、
前記再コンパイル要否判定部は、前記指定されたＦＢＤ部品の配置変更後の位置情報が、前記部品情報管理部で抽出された前記位置範囲に含まれる場合、前記再コンパイルの実施を不要と判定することを特徴とするプログラミングツール。
【請求項２】
前記部品情報管理部は、前記指定されたＦＢＤ部品の位置を変更させても前記実行順序が同一となる前記位置範囲を報知するための出力処理を実施することを特徴とする請求項１に記載のプログラミングツール。
【請求項３】
前記プログラム編集部は、前記指定されたＦＢＤ部品の位置を変更させても前記実行順序が同一となる前記位置範囲の外への、前記指定されたＦＢＤ部品の移動を制限することを特徴とする請求項１または２に記載のプログラミングツール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラミングツール、特に、ファンクションブロックダイアグラム（ＦＢＤ）言語の記述によるプログラミングのためのプログラミングツールに関する。
【背景技術】
【０００２】
工場の製造ラインや個々の装置、プラント、オフィスビル等の現場にて、被制御機器をシーケンシャルに制御するためのプログラマブルロジックコントローラ（ＰＬＣ）が用いられている。ＰＬＣに格納しているプログラムを書き換えるには、コンピュータ上に専用のソフトウェアをインストールしたプログラム作成支援装置（プログラミングツール）を用いる。【０００３】
ＦＢＤ言語は、ＰＬＣが使用するループ制御プログラムなどのプログラミングに用いられている。国際電機標準会議（ＩＥＣ）が発行した標準規格ＩＥＣ６１１３１−３によると、ＦＢＤ言語は、ＰＬＣ用のプログラム言語の一つとして定義されている。ＦＢＤ言語を用いるプログラミングツールは、それぞれ所定の処理に対応するＦＢＤ部品（ファンクションあるいはファンクションブロック）を配置する。プログラミングツールは、データや信号の流れに沿ってＦＢＤ部品を結線することで、一連の処理を記述する。【０００４】
ＦＢＤ言語を用いて作成されたソフトウェアは、コンパイルによって、ＦＢＤ部品の位置情報および接続情報を基に処理の実行順序が決定される。プログラミングツールは、一連の処理の実行順序を決定することにより、ＦＢＤプログラムをＰＬＣで実行するために必要なデータ（実行データ）を生成する。また、プログラミングツールは、ＦＢＤプログラムの図形描画に関するデータ（図形データ）を、ＦＢＤプログラムの保守に利用している。プログラミングツールは、コンパイルを経たプロジェクトの実行データや図形データをＰＬＣに書き込む処理（ＰＣ書込）を実施する。【０００５】
ＦＢＤ言語を用いて作成されたソフトウェアは、コンパイルのあとにＦＢＤ部品の配置が変更されることで、未コンパイル状態となる場合がある。ユーザは、未コンパイル状態を解消するには、再コンパイルを実施することとなる。また、かかる再コンパイルを経たプロジェクトについて、実行データや図形データのＰＣ書込の実施により、ＰＬＣへの反映を要する場合もある。【０００６】
また、従来、ＦＢＤ言語を用いて作成されたソフトウェアについて、ＦＢＤプログラムの変更前後の比較のための手法として、テキスト変換を適用するものが知られている（例えば、特許文献１参照）。特許文献１の方法によると、プログラムにある全てのＦＢＤ部品について命令コードの数値情報（機械語）をテキスト変換し、両プログラムのテキスト情報を順次比較する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１０−１４９２０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１にあるように、プログラムの比較にテキスト変換を適用する方法では、まず、比較対象とするプログラムの双方について機械語へ変換する処理を要する。この時点で既に、コンパイルに相当する処理負担が必要となる。さらに、機械語を文字列へ変換する処理、文字列をテキストファイルに出力する処理を経て、両プログラムのテキストファイルを比較する。従来技術によると、ＦＢＤプログラムの比較には、多くの工程および処理を要し、時間がかかることとなる。【０００９】
例えば、ユーザは、制御プログラムのコンパイルおよびＰＣ書込により機器の動作を確認してからプログラムのドキュメントが必要となったときなどにおいて、制御プログラムの体裁を整えるためにＦＢＤ部品の配置変更を望む場合がある。従来技術のプログラミングツールでは、ＦＢＤ部品の配置を変更するとプログラムが直ちに未コンパイル状態となるため、ＦＢＤ部品の配置を少しでも変えるたびに再コンパイル、ＰＣ書込を要することが問題となる。【００１０】
本発明は、上記に鑑みてなされたものであって、ＦＢＤ部品の配置の変更によるプログラム編集の作業負担を軽減可能とするプログラミングツールを得ることを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、本発明は、ファンクションブロックダイアグラム（ＦＢＤ）部品を配置し、配置された前記ＦＢＤ部品同士を接続することによりプログラムを編集するプログラム編集部と、編集された前記プログラムに対し、前記ＦＢＤ部品の位置情報および接続情報を基に、前記ＦＢＤ部品の実行順序を決定する実行順序決定部と、前記プログラム編集部に配置されている前記ＦＢＤ部品の前記位置情報および前記接続情報を管理する部品情報管理部と、前記プログラム編集部における前記ＦＢＤ部品の配置の変更に伴う再コンパイルの実施の要否を判定する再コンパイル要否判定部と、を有し、配置を変更させる前記ＦＢＤ部品が前記プログラム編集部において指定されると、前記部品情報管理部は、前記プログラム編集部で指定されたＦＢＤ部品の位置を変更させても前記実行順序が同一となる位置範囲を抽出し、前記再コンパイル要否判定部は、前記指定されたＦＢＤ部品の位置変更後の位置情報が、前記部品情報管理部で抽出された前記位置範囲に含まれる場合、前記再コンパイルの実施を不要と判定することを特徴とする。
【発明の効果】
【００１２】
本発明にかかるプログラミングツールは、ＦＢＤ部品を移動させる前後において、処理の実行順序が変更するか否かに応じて、再コンパイルの要否を判定する。ＦＢＤ部品の配置変更を伴うプログラム編集について、処理の実行順序に変更が無ければ再コンパイルを不要とすることで、再コンパイルやＰＣ書込による作業負担を軽減させることができる。これにより、ＦＢＤ部品の配置の変更によるプログラム編集の作業負担を軽減できるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明の実施の形態１にかかるプログラミングツールの構成を示すブロック図である。
【図２】図２は、ＦＢＤ部品の配置を変更するときにおけるプログラミングツールの処理手順を説明するフローチャートである。
【図３】図３は、ＦＢＤ部品の実行順序を、規則にしたがって決定する方法を説明する図である。
【図４】図４は、ＦＢＤ部品の実行順序を決定した例を示す図である。
【図５】図５は、ＦＢＤ部品の実行順序が同一となる位置範囲の抽出についての詳細な手順を示すフローチャートである。
【図６】図６は、ＦＢＤプログラムの図形データの例を示す図である。
【図７】図７は、本発明の実施の形態２にかかるプログラミングツールの処理手順を説明するフローチャートである。
【図８】図８は、ＦＢＤ部品の実行順序が同一となる位置範囲を表示する例を示す図である。
【図９】図９は、本発明の実施の形態３にかかるプログラミングツールの処理手順を説明するフローチャートである。
【図１０】図１０は、設定された位置範囲の外へのＦＢＤ部品の移動の制限について説明する図である。
【発明を実施するための形態】
【００１４】
以下に、本発明にかかるプログラミングツールの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１５】
実施の形態１．
図１は、本発明の実施の形態１にかかるプログラミングツールの構成を示すブロック図である。プログラミングツール１０は、プログラミングツールソフトウェアがインストールされたコンピュータで実現される。プログラミングツール１０は、ＰＬＣで動作させるループ制御プログラムなどを編集するツールである。
【００１６】
プログラミングツール１０は、プログラム編集部１１、部品情報管理部１２、実行順序決定部１３および再コンパイル要否判定部１４を有する。プログラム編集部１１は、ファンクションブロックダイアグラム（ＦＢＤ）部品を配置し、配置されたＦＢＤ部品同士を接続することによりプログラムを編集する。
【００１７】
部品情報管理部１２は、プログラム編集部１１に接続されている。部品情報管理部１２は、プログラム編集部１１にて配置されているＦＢＤ部品の位置情報および接続情報を管理する。
【００１８】
実行順序決定部１３は、部品情報管理部１２に接続されている。実行順序決定部１３は、プログラム編集部１１で編集されたプログラムに対し、ＦＢＤ部品の位置情報および接続情報を基に、ＦＢＤ部品の実行順序を決定する。
【００１９】
再コンパイル要否判定部１４は、部品情報管理部１２に接続されている。再コンパイル要否判定部１４は、プログラム編集部１１におけるＦＢＤ部品の配置の変更に伴う再コンパイルの実施の要否を判定する。
【００２０】
図２は、ＦＢＤ部品の配置を変更するときにおけるプログラミングツールの処理手順を説明するフローチャートである。ＦＢＤ部品を用いて作成されたＦＢＤプログラムについて、ユーザは、プログラム編集部１１に配置されているＦＢＤ部品から、配置を変更するＦＢＤ部品を選択する（ステップＳ１）。ユーザは、配置を変更させるＦＢＤ部品をプログラム編集部１１において指定する。
【００２１】
ステップＳ１での選択を受けて、部品情報管理部１２は、プログラム編集部１１で指定されたＦＢＤ部品の位置を変更させても、ＦＢＤ部品の実行順序が同一となる位置範囲を抽出する（ステップＳ１０）。
【００２２】
ここで、ステップＳ１０における位置情報の抽出に関して、ＦＢＤ部品の実行順序の規則について説明する。図３は、ＦＢＤ部品の実行順序を、規則にしたがって決定する方法を説明する図である。
【００２３】
図３には、実線の矩形で示す１１個のＦＢＤ部品（Ａ〜Ｋ）を示している。処理グループは、互いに接続されたＦＢＤ部品からなる一連のＦＢＤ部品群とする。図３に示すプログラムは、５つの処理グループ（ａ），（ｂ），（ｃ），（ｄ），（ｅ）を含む。図３では、処理グループの境界を破線として示している。
【００２４】
処理グループ（ａ）は、１つのＦＢＤ部品（Ｈ）からなる。処理グループ（ｂ）は、１つのＦＢＤ部品（Ｉ）からなる。処理グループ（ｃ）は、互いに接続された６個のＦＢＤ部品（Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ）からなる。処理グループ（ｄ）は、互いに接続された２つのＦＢＤ部品（Ｊ，Ｋ）からなる。処理グループ（ｅ）は、１つのＦＢＤ部品（Ｇ）からなる。
【００２５】
ＦＢＤ部品の位置情報は、ＸＹ座標を用いて表される。プログラムにおける処理の実行順序は、Ｙ軸方向については上から下、Ｘ軸方向については左から右の順であるものとする。Ｙ軸方向の順位とＸ軸方向の順位とでは、Ｙ軸方向の順位を優先させるものとする。かかる位置情報に応じた順位規則を、第１規則とする。
【００２６】
第１規則にしたがって、各処理グループについて、処理グループを代表するＦＢＤ部品が決定される。図中黒塗り四角形で表す代表位置ＰＰａ，ＰＰｂ，ＰＰｃ，ＰＰｄ，ＰＰｅは、各処理グループ（ａ）〜（ｅ）の代表とされたＦＢＤ部品の左上座標を表すものとする。各ＦＢＤ部品において、左上座標とは、ＦＢＤ部品の中で最も上かつ最も左の位置の座標とする。
【００２７】
代表位置ＰＰａ，ＰＰｂ，ＰＰｅは、それぞれＦＢＤ部品（Ｈ），（Ｉ），（Ｇ）の左上座標である。代表位置ＰＰｃは、処理グループ（ｃ）に含まれる６個のＦＢＤ部品のうち、第１規則において最も上位であるＦＢＤ部品（Ｄ）の左上座標である。代表位置ＰＰｄは、処理グループ（ｄ）に含まれる２個のＦＢＤ部品のうち、第１規則において上位であるＦＢＤ部品（Ｊ）の左上座標である。各処理グループ（ａ）〜（ｅ）同士の実行順序は、代表位置ＰＰａ，ＰＰｂ，ＰＰｃ，ＰＰｄ，ＰＰｅの位置関係を第１規則にしたがって比較することにより決定される。
【００２８】
図４は、ＦＢＤ部品の実行順序を決定した例を示す図である。処理グループの実行順序は、代表位置ＰＰａ，ＰＰｂ，ＰＰｃ，ＰＰｄ，ＰＰｅの位置関係を第１規則にしたがって比較することで、（ａ），（ｂ），（ｄ），（ｃ），（ｅ）と決定される。
【００２９】
複数のＦＢＤ部品を含む処理グループにおいて、あるＦＢＤ部品へ入力を行うＦＢＤ部品が存在する場合は、かかる入力の接続ルートにおける上流のＦＢＤ部品から、実行順序が確定されるものとする。かかる接続情報に応じた順位規則を、第２規則とする。
【００３０】
例えば、処理グループ（ｃ）の代表とされたＦＢＤ部品（Ｄ）の入力側には、ＦＢＤ部品（Ｃ）が接続されている。ＦＢＤ部品（Ｃ）の入力側には、さらにＦＢＤ部品（Ａ）が接続されている。これらのＦＢＤ部品の間では、実行順序は、第２規則にしたがって、ＦＢＤ部品（Ａ），（Ｃ），（Ｄ）の順となる。
【００３１】
ＦＢＤ部品（Ｅ）の入力側には、ＦＢＤ部品（Ｃ），ＦＢＤ部品（Ｂ）が接続されている。ＦＢＤ部品（Ｃ）およびＦＢＤ部品（Ｂ）は、第２規則にしたがって、ＦＢＤ部品（Ｅ）より上位となる。ＦＢＤ部品（Ｃ）とＦＢＤ部品（Ｂ）の間では、第１規則にしたがって、ＦＢＤ部品（Ｃ）が上位となる。これらのＦＢＤ部品の間では、実行順序は、ＦＢＤ部品（Ｃ），（Ｂ），（Ｅ）の順となる。
【００３２】
ＦＢＤ部品（Ｅ）とＦＢＤ部品（Ｆ）の間では、第１規則および第２規則のいずれにおいても、ＦＢＤ部品（Ｅ）が上位となる。これにより、処理グループ（ｃ）内の各ＦＢＤ部品の実行順序は、ＦＢＤ部品（Ａ），（Ｃ），（Ｄ），（Ｂ），（Ｅ），（Ｆ）の順となる。
【００３３】
処理グループ（ｄ）のＦＢＤ部品（Ｊ）とＦＢＤ部品（Ｋ）との間では、第１規則にしたがって、ＦＢＤ部品（Ｊ）が上位となる。第１規則にしたがって順位の高い処理グループから処理が開始され、処理グループ内の全てのＦＢＤ部品の処理が完了すると、次に順位の高い処理グループの処理が開始される。これにより、図４に示すように、各処理グループ（ａ）〜（ｅ）のＦＢＤ部品（Ａ〜Ｋ）の実行順序が決定される。
【００３４】
図５は、ＦＢＤ部品の実行順序が同一となる位置範囲の抽出についての詳細な手順を示すフローチャートである。部品情報管理部１２は、指定されたＦＢＤ部品の配置を変更した場合に、実行順序に影響の及ぶＦＢＤ部品を抽出する（ステップＳ１１）。ＦＢＤプログラムでは、ＦＢＤ部品の実行順序にしたがって処理が実行される。ＦＢＤプログラムによるプロセスは、ＦＢＤブロックの実行順序によって制御されることとなる。ステップＳ１１について、実行順序に影響の及ぶ状況とは、ＦＢＤプログラムの実行によるプロセスの制御内容を変化させることがある状況を指すものとする。
【００３５】
例えば、部品情報管理部１２は、プログラム編集部１１での編集において描画された全てのオブジェクトのデータを保持しているものとする。部品情報管理部１２は、図２に示すステップＳ１で選択されたＦＢＤ部品から、接続情報を辿ることにより、当該ＦＢＤ部品に接続されているＦＢＤ部品を探索する。これにより、部品情報管理部１２は、選択されたＦＢＤ部品の所属する処理グループ内のＦＢＤ部品を特定する。さらに、部品情報管理部１２は、選択されたＦＢＤ部品の移動によって実行順序に影響のあるＦＢＤ部品を抽出する。
【００３６】
ここで、ステップＳ１１におけるＦＢＤ部品の抽出について、図６を参照して説明する。図６は、ＦＢＤプログラムの図形データの例を示す図である。図６に示す図形データは、例えば、プログラミングツール１０を構成するコンピュータが備えるディスプレイに表示される。
【００３７】
ＦＢＤ部品４０１，４０２，４０３は、処理グループ４１０に所属している。ＦＢＤ部品４０４，４０５，４０６，４０７は、処理グループ４１１に所属している。ＦＢＤ部品４０８，４０９は、処理グループ４１２に所属している。例えば、ＦＢＤ部品４０５が、ステップＳ１において指定されたＦＢＤ部品であるものとする。
【００３８】
ＦＢＤ部品４０５の入力端子ＩＮは、ＦＢＤ部品４０４の出力端子ＯＵＴ１に接続されている。ＦＢＤ部品４０６の入力端子ＩＮは、ＦＢＤ部品４０４の出力端子ＯＵＴ２に接続されている。第２規則によると、ＦＢＤ部品４０５およびＦＢＤ部品４０６の実行順序を確定するには、ＦＢＤ部品４０４の実行順序が確定していることを要する。
【００３９】
ＦＢＤ部品４０４の実行順序が確定すると、部品情報管理部１２は、ＦＢＤ部品４０５の左上座標と、ＦＢＤ部品４０６の左上座標とを比較し、第１規則に応じてＦＢＤ部品４０５の実行順序が確定する。次に、ＦＢＤ部品４０６の実行順序が確定する。
【００４０】
ＦＢＤ部品４０５の出力端子ＯＵＴは、ＦＢＤ部品４０７の入力端子ＩＮ１に接続されている。ＦＢＤ部品４０６の出力端子ＯＵＴは、ＦＢＤ部品４０７の入力端子ＩＮ２に接続されている。第２規則によると、ＦＢＤ部品４０５およびＦＢＤ部品４０６の実行順序が確定することで、ＦＢＤ部品４０７の実行順序が確定する。
【００４１】
処理グループ４１１内部における実行順序の決定において、ＦＢＤ部品４０４およびＦＢＤ部品４０７は、位置情報に関係なく、接続情報のみによって実行順序が確定する。これに対して、ＦＢＤ部品４０５およびＦＢＤ部品４０６は、位置情報および接続情報の双方によって実行順序が確定する。
【００４２】
部品情報管理部１２は、このように、位置情報および接続情報の双方が実行順序の確定に関係することとなるＦＢＤ部品を、ステップＳ１１において抽出する。部品情報管理部１２は、ＦＢＤ部品４０５の配置を変更した場合に、実行順序に影響の及ぶＦＢＤ部品として、ＦＢＤ部品４０６を抽出する。
【００４３】
次に、部品情報管理部１２は、処理グループ単位の位置情報を決定するＦＢＤ部品を、各処理グループから抽出する（ステップＳ１２）。処理グループ単位の位置情報を決定するＦＢＤ部品とは、処理グループに含まれるＦＢＤ部品のうち、処理グループを代表するＦＢＤ部品とする。処理グループ単位の位置情報を決定するＦＢＤ部品は、第１規則にしたがって決定される。
【００４４】
かかるＦＢＤ部品の抽出は、ステップＳ１においてＦＢＤ部品が選択された処理グループ以外の処理グループを対象とする。図６に示す例では、ＦＢＤ部品４０５が含まれる処理グループ４１１以外の処理グループ４１０，４１２が、ステップＳ１２における抽出の対象となる。処理グループ４１０からは、部品情報管理部１２は、ＦＢＤ部品４０１を抽出する。処理グループ４１２からは、部品情報管理部１２は、ＦＢＤ部品４０８を抽出する。
【００４５】
次に、部品情報管理部１２は、ステップＳ１１およびＳ１２で抽出した各ＦＢＤ部品の位置情報を抽出する（ステップＳ１３）。部品情報管理部１２は、ステップＳ１１で抽出したＦＢＤ部品４０６の左上座標を、ＦＢＤ部品４０６の位置情報として抽出する。部品情報管理部１２は、ステップＳ１２で抽出したＦＢＤ部品４０１の左上座標を、ＦＢＤ部品４０１の位置情報として抽出する。部品情報管理部１２は、ステップＳ１２で抽出したＦＢＤ部品４０８の左上座標を、ＦＢＤ部品４０８の位置情報として抽出する。
【００４６】
次に、部品情報管理部１２は、ステップＳ１で選択されたＦＢＤ部品を移動させても実行順序が同一となる位置範囲を抽出する（ステップＳ１４）。部品情報管理部１２は、ステップＳ１３で抽出した位置情報と、ステップＳ１において選択されたＦＢＤ部品の位置情報とを基に、ＦＢＤ部品を移動させても実行順序が同一となる範囲を抽出する。
【００４７】
図６に示す例では、ＦＢＤ部品４０５が位置範囲４２０内にて移動した場合、各処理グループ４１０，４１１，４１２の各ＦＢＤ部品の実行順序は、ＦＢＤ部品４０５の移動前および移動後において不変となる。ＦＢＤ部品４０５が位置範囲４２０の外へ移動した場合、各処理グループ４１０，４１１，４１２の各ＦＢＤ部品の実行順序は、ＦＢＤ部品４０５の移動前から移動後において変化することとなる。
【００４８】
位置範囲４２０は、第１規則において、ＦＢＤ部品４０１の左上座標より下位、かつＦＢＤ部品４０６の左上座標より上位である位置範囲である。部品情報管理部１２は、ＦＢＤ部品４０１，４０６，４０８について抽出された各位置情報と、ＦＢＤ部品４０５の位置情報とを基に、位置範囲４２０を抽出する。本実施の形態では、位置範囲４２０は、ＦＢＤ部品を移動させても実行順序が同一となる範囲をＹ軸方向において制限するものとして設定されている。各ＦＢＤ部品が配置されている態様などに応じて、位置範囲４２０は、実行順序が同一となる範囲を、Ｙ軸方向およびＸ軸方向の双方において制限することとしても良い。
【００４９】
部品情報管理部１２は、例えば、トポロジカルソートを利用して、ＦＢＤ部品の位置情報から、実行順序が同一となる位置範囲を算出する。なお、部品情報管理部１２は、ＦＢＤ部品を移動させても実行順序が同一となる範囲を、いずれのアルゴリズムによって求めることとしても良い。
【００５０】
図２に戻って、ユーザは、ステップＳ１で指定したＦＢＤ部品を、プログラム編集部１１にて移動させる（ステップＳ２）。部品情報管理部１２は、移動後のＦＢＤ部品の位置情報をプログラム編集部１１から取得する。
【００５１】
再コンパイル要否判定部１４は、ステップＳ２において配置が変更されたＦＢＤ部品の位置情報と、ステップＳ１０で抽出した位置範囲とを、部品情報管理部１２から取得する。再コンパイル要否判定部１４は、配置が変更されたＦＢＤ部品の位置情報と、実行順序が同一となる位置範囲とを比較する（ステップＳ３）。
【００５２】
再コンパイル要否判定部１４は、配置が変更されたＦＢＤ部品の位置情報が、実行順序が同一となる位置範囲に含まれるか否かを判断する（ステップＳ４）。図６に示す例では、再コンパイル要否判定部１４は、移動後におけるＦＢＤ部品４０５の左上座標が、位置範囲４２０に含まれるか否かを判断する。
【００５３】
配置が変更されたＦＢＤ部品の位置情報が、実行順序が同一となる位置範囲に含まれる場合（ステップＳ４、Ｙｅｓ）、再コンパイル要否判定部１４は、ステップＳ２によるＦＢＤ部品の配置変更に伴う再コンパイルは不要と判定する。
【００５４】
図６に示す例では、再コンパイル要否判定部１４は、ステップＳ１で指定されたＦＢＤ部品４０５の配置変更後の位置情報が、部品情報管理部１２で抽出された位置範囲４２０に含まれる場合、再コンパイルの実施が不要と判定する。再コンパイルが不要との判定に応じて、プログラム編集部１１は、ＦＢＤプログラムのコンパイル済みの状態を維持する（ステップＳ５）。
【００５５】
一方、配置が変更されたＦＢＤ部品の位置情報が、実行順序が同一となる位置範囲に含まれない場合（ステップＳ４、Ｎｏ）、再コンパイル要否判定部１４は、ステップＳ２によるＦＢＤ部品の配置変更に伴う再コンパイルは必要と判定する。
【００５６】
図６に示す例では、再コンパイル要否判定部１４は、ステップＳ１で指定されたＦＢＤ部品４０５の配置変更後の位置情報が、部品情報管理部１２で抽出された位置範囲４２０に含まれない場合、再コンパイルの実施が必要と判定する。再コンパイルが必要との判定に応じて、プログラム編集部１１は、ＦＢＤプログラムを未コンパイル状態へと変化させる（ステップＳ６）。これにより、プログラミングツール１０は、ＦＢＤ部品の配置変更における一連の処理を終了する。
【００５７】
本発明のプログラミングツール１０は、ＦＢＤ言語により記述されたプログラムにおいて、ＦＢＤ部品の配置変更によって処理の実行順序が変わるか否かを、ＦＢＤ部品の位置情報から判定する。プログラミングツール１０は、ＦＢＤ部品の配置を変更する場合であっても、配置変更の前後で各ＦＢＤ部品の実行順序が同一であれば、ＦＢＤプログラムのコンパイル済みの状態を維持する。プログラミングツール１０は、ＦＢＤ部品の配置変更があるたびにＦＢＤプログラムを常に未コンパイル状態へ変化させる場合に比べて、再コンパイル、およびＰＣ書込の実施による手間を軽減できる。
【００５８】
従来はＦＢＤプログラムの比較にはコンパイル相当の処理が必要であったのに対し、本発明では、ＦＢＤ部品の移動時に、ＦＢＤ部品の位置情報および接続情報から実行順序を決定し、実行順序の比較によってＦＢＤプログラムを比較可能とする。本発明によると、ＦＢＤプログラムの比較におけるコンパイル相当の処理を不要とすることで、ＦＢＤ部品の配置の変更における作業負担を軽減することができる。これにより、プログラミングツール１０は、ＦＢＤ部品の配置の変更によるプログラム編集の作業負担を軽減できるという効果を奏する。
【００５９】
プログラミングツール１０は、再コンパイルの要否判定において、接続情報および位置情報から実行順序を抽出する処理と、実行順序を比較する処理とによって、プログラムの比較を実現する。プログラミングツール１０は、機械語への変換等を要する従来技術による比較方法に比べて、プログラムの比較のための工程および処理を少なくできる。これにより、プログラミングツール１０は、プログラムの変更前後における比較処理を高速化することができる。ユーザは、プログラミングツール１０によって、再コンパイルの要否判定を容易に実施することができる。
【００６０】
ユーザは、例えば、制御プログラムのコンパイルおよびＰＣ書込により機器の動作を確認してからプログラムのドキュメントが必要となったときに、制御プログラムの体裁を整えることがある。ユーザは、制御プログラムの体裁を整える際に、ＦＢＤ部品の配置を変更するときの作業負担を大幅に軽減させることができる。
【００６１】
実施の形態２．
図７は、本発明の実施の形態２にかかるプログラミングツールの処理手順を説明するフローチャートである。実施の形態１と同一の部分には同一の符号を付し、重複する説明を適宜省略する。
【００６２】
実施の形態２にかかるプログラミングツールは、実施の形態１にかかるプログラミングツール１０（図１参照）と同様の構成を備える。さらに、実施の形態２では、部品情報管理部１２は、指定されたＦＢＤ部品の位置を変更させても実行順序が同一となる位置範囲をユーザに報知するための出力処理を実施する。
【００６３】
ＦＢＤ部品を用いて作成されたＦＢＤプログラムについて、ユーザは、プログラム編集部１１に配置されているＦＢＤ部品から、配置を変更するＦＢＤ部品を選択する（ステップＳ２１）。ユーザは、配置を変更させるＦＢＤ部品をプログラム編集部１１において指定する。
【００６４】
ステップＳ２１での選択を受けて、部品情報管理部１２は、プログラム編集部１１で指定されたＦＢＤ部品の位置を変更させても、ＦＢＤ部品の実行順序が同一となる位置範囲を抽出する（ステップＳ２２）。ステップＳ２２は、実施の形態１のステップＳ１０（図２参照）と同様とする。ステップＳ２２の詳細は、図３に示すステップＳ１０の詳細と同様とする。
【００６５】
部品情報管理部１２は、ステップＳ２２で抽出された位置範囲をディスプレイに表示するための出力処理を実施する。プログラミングツール１０は、ＦＢＤ部品の実行順序が同一となる位置範囲をディスプレイにて表示する（ステップＳ２３）。
【００６６】
図８は、ＦＢＤ部品の実行順序が同一となる位置範囲を表示する例を示す図である。プログラミングツール１０は、ＦＢＤプログラムの図形データを表示する画面において、ステップＳ２２で抽出した位置範囲４２０とそれ以外の位置範囲とを色分けする。また、プログラミングツール１０は、ステップＳ２２で抽出した位置範囲４２０と、それ以外の位置範囲との境界線を表示する。プログラミングツール１０は、ディスプレイでの表示によって、ＦＢＤ部品の実行順序が同一となる位置範囲をユーザに報知する。
【００６７】
ユーザは、ステップＳ２１で指定したＦＢＤ部品を、プログラム編集部１１にて移動させる（ステップＳ２４）。ユーザは、ＦＢＤ部品の実行順序が同一となる位置範囲を表示を見て認識した上で、ＦＢＤ部品を移動させることができる。
【００６８】
なお、プログラミングツール１０は、ＦＢＤ部品の実行順序が同一となる位置範囲４２０を、色分けおよび境界線のいずれか一方によって表示することとしても良い。プログラミングツール１０は、いずれの態様によって位置範囲４２０を示すこととしても良い。
【００６９】
再コンパイル要否判定部１４は、ステップＳ２４において配置が変更されたＦＢＤ部品の位置情報と、ステップＳ２２で抽出した位置範囲とを、部品情報管理部１２から取得する。再コンパイル要否判定部１４は、配置が変更されたＦＢＤ部品の位置情報と、実行順序が同一となる位置範囲とを比較する（ステップＳ２５）。再コンパイル要否判定部１４は、配置が変更されたＦＢＤ部品の位置情報が、実行順序が同一となる位置範囲に含まれるか否かを判断する（ステップＳ２６）。
【００７０】
配置が変更されたＦＢＤ部品の位置情報が、実行順序が同一となる位置範囲に含まれる場合（ステップＳ２６、Ｙｅｓ）、再コンパイル要否判定部１４は、ステップＳ２４によるＦＢＤ部品の配置変更に伴う再コンパイルは不要と判定する。再コンパイルが不要との判定に応じて、プログラム編集部１１は、ＦＢＤプログラムのコンパイル済みの状態を維持する（ステップＳ２７）。
【００７１】
一方、配置が変更されたＦＢＤ部品の位置情報が、実行順序が同一となる位置範囲に含まれない場合（ステップＳ２６、Ｎｏ）、再コンパイル要否判定部１４は、ステップＳ２４によるＦＢＤ部品の配置変更に伴う再コンパイルは必要と判定する。再コンパイルが必要との判定に応じて、プログラム編集部１１は、ＦＢＤプログラムを未コンパイル状態へと変化させる（ステップＳ２８）。
【００７２】
実施の形態２によると、ユーザは、配置を変更するＦＢＤ部品を選択したときに、当該ＦＢＤ部品を移動させた場合に再コンパイルが必要となる位置範囲と、再コンパイルが不要となる位置範囲とを明確に把握した上で、ＦＢＤプログラムの編集を実施することができる。例えば、ユーザは、なるべく再コンパイルが不要となるような配置変更を選択することで、制御プログラムの体裁を整えるときの作業負担をさらに軽減させることが可能となる。
【００７３】
プログラミングツール１０は、ＦＢＤ部品の実行順序が同一となる位置範囲をユーザに報知するために、いずれの手段を使用しても良い。部品情報管理部１２は、位置範囲を報知するための手段に応じた出力処理を実施可能であるものとする。ステップＳ２４において、プログラミングツール１０は、配置が変更されたＦＢＤ部品の位置情報が、実行順序が同一となる位置範囲に含まれないことを、例えば、ディスプレイにおけるダイアログの表示、警報音の出力などの手段によって報知しても良い。
【００７４】
プログラミングツール１０は、ＦＢＤ部品の実行順序が同一となる位置範囲を報知するか否かを、ユーザが任意に切り換え可能であるものとしても良い。ユーザは、再コンパイルが不要となる位置範囲の把握を望むか否かに応じて、報知の有無を任意に選択することができる。
【００７５】
実施の形態３．
図９は、本発明の実施の形態３にかかるプログラミングツールの処理手順を説明するフローチャートである。実施の形態１と同一の部分には同一の符号を付し、重複する説明を適宜省略する。
【００７６】
実施の形態３にかかるプログラミングツールは、実施の形態１にかかるプログラミングツール１０（図１参照）と同様の構成を備える。さらに、実施の形態３では、プログラム編集部１１は、指定されたＦＢＤ部品の位置を変更させても実行順序が同一となる位置範囲の外への、当該ＦＢＤ部品の移動を制限する。
【００７７】
ＦＢＤ部品を用いて作成されたＦＢＤプログラムについて、ユーザは、プログラム編集部１１に配置されているＦＢＤ部品から、配置を変更するＦＢＤ部品を選択する（ステップＳ３１）。ユーザは、配置を変更させるＦＢＤ部品をプログラム編集部１１において指定する。
【００７８】
ステップＳ３１での選択を受けて、部品情報管理部１２は、プログラム編集部１１で指定されたＦＢＤ部品の位置を変更させても、ＦＢＤ部品の実行順序が同一となる位置範囲を抽出する（ステップＳ３２）。ステップＳ３２は、実施の形態１のステップＳ１０（図２参照）と同様とする。ステップＳ３２の詳細は、図３に示すステップＳ１０の詳細と同様とする。ユーザは、ステップＳ３１で指定したＦＢＤ部品を、プログラム編集部１１にて移動させる（ステップＳ３３）。
【００７９】
ＦＢＤ部品の実行順序が同一となる位置範囲が設定されると、プログラム編集部１１は、当該ＦＢＤ部品について、設定された位置範囲の外への移動制限を設定する。
【００８０】
再コンパイル要否判定部１４は、ステップＳ３３において配置が変更されたＦＢＤ部品の位置情報と、ステップＳ３２で抽出した位置範囲とを、部品情報管理部１２から取得する。再コンパイル要否判定部１４は、配置が変更されたＦＢＤ部品の位置情報と、実行順序が同一となる位置範囲とを比較する（ステップＳ３４）。再コンパイル要否判定部１４は、配置が変更されたＦＢＤ部品の位置情報が、実行順序が同一となる位置範囲に含まれるか否かを判断する（ステップＳ３５）。
【００８１】
配置が変更されたＦＢＤ部品の位置情報が、実行順序が同一となる位置範囲に含まれる場合（ステップＳ３５、Ｙｅｓ）、プログラム編集部１１は、ステップＳ３３における移動を許可する。再コンパイル要否判定部１４は、ステップＳ３３によるＦＢＤ部品の配置変更に伴う再コンパイルは不要と判定する。再コンパイルが不要との判定に応じて、プログラム編集部１１は、ＦＢＤプログラムのコンパイル済みの状態を維持する（ステップＳ３６）。
【００８２】
一方、配置が変更されたＦＢＤ部品の位置情報が、実行順序が同一となる位置範囲に含まれない場合（ステップＳ３５、Ｎｏ）、プログラム編集部１１は、ステップＳ３１で選択されたＦＢＤ部品の移動を制限する（ステップＳ３７）。
【００８３】
図１０は、設定された位置範囲の外へのＦＢＤ部品の移動の制限について説明する図である。図１０では、図６や図８に示す処理グループ４１０，４１１，４１２の図示を省略している。例えば、プログラム編集部１１は、ＦＢＤ部品４０５について、ステップＳ３２での抽出によって設定された位置範囲４２０の外への移動を制限する。
【００８４】
プログラム編集部１１は、ＦＢＤ部品４０５の図形が位置範囲４２０の外へドラッグされている間、ＦＢＤ部品４０５のドロップの完了を阻止する。このようにして、プログラム編集部１１は、位置範囲４２０の外へのＦＢＤ部品４０５の移動を拒否する。
【００８５】
例えば、ステップＳ３３において、ユーザが、ＦＢＤ部品４０５について、位置範囲４２０の外の位置４３０へのドラッグを試みたとする。プログラム編集部１１は、位置４３０へのＦＢＤ部品４０５のドロップを完了させず、ＦＢＤ部品４０５を元の位置へ戻す。
【００８６】
プログラム編集部１１は、実行順序が同一となる位置範囲の外へのＦＢＤ部品の移動を制限することで、ステップＳ３３で移動が試みられたＦＢＤ部品を、実行順序が同一となる位置範囲内に留めさせる。これにより、プログラム編集部１１は、ＦＢＤプログラムのコンパイル済みの状態を維持する（ステップＳ３６）。なお、プログラミングツール１０は、実行順序が同一となる位置範囲の外へのＦＢＤ部品の移動を、ドロップの完了を阻止する以外のいずれの方法によって制限することとしても良い。
【００８７】
実施の形態３によると、プログラミングツール１０は、再コンパイルが必要となるＦＢＤ部品の配置変更を確実に制限することができる。これにより、ユーザは、再コンパイルが必要となる配置変更を排除することで、制御プログラムの体裁を整えるときの作業負担を抑制させることができる。
【００８８】
プログラミングツール１０は、実施の形態３におけるＦＢＤ部品の移動を制限するか否かを、ユーザが任意に切り換え可能であるものとしても良い。ユーザは、再コンパイルが必要となる配置変更の排除を望むか否かに応じて、ＦＢＤ部品の移動制限の有無を任意に選択することができる。
【符号の説明】
【００８９】
１０  プログラミングツール、１１  プログラム編集部、１２  部品情報管理部、１３  実行順序決定部、１４  再コンパイル要否判定部、４０１〜４０９  ＦＢＤ部品、４１０，４１１，４１２  処理グループ、４２０  位置範囲、４３０  位置、ＰＰａ，ＰＰｂ，ＰＰｃ，ＰＰｄ，ＰＰｅ  代表位置。
【図１】
0005777842.tif 000002
【図２】
0005777842.tif 000003
【図３】
0005777842.tif 000004
【図４】
0005777842.tif 000005
【図５】
0005777842.tif 000006
【図６】
0005777842.tif 000007
【図７】
0005777842.tif 000008
【図８】
0005777842.tif 000009
【図９】
0005777842.tif 000010
【図１０】
0005777842.tif 000011