(57)【特許請求の範囲】
【請求項１】
第１のファンクションブロックダイアグラムプログラムである第１のプログラムであって前記第１のプログラム内で互いに結線されている第１のプログラム部品の集合が横方向であるＸ軸方向に複数配置された前記第１のプログラムを、前記第１のプログラム部品の集合単位に分割し、前記第１のプログラムの各集合を実行順序が早い順に縦方向であるＹ軸方向に１列に並び替え、かつ第２のファンクションブロックダイアグラムプログラムである第２のプログラムであって前記第２のプログラム内で互いに結線されている第２のプログラム部品の集合が横方向であるＸ軸方向に複数配置された前記第２のプログラムを、前記第２のプログラム部品の集合単位に分割し、前記第２のプログラムの各集合を実行順序が早い順に前記Ｙ軸方向に１列に並び替える集合整列部と、
並び替えられた前記第１のプログラムの集合と、並び替えられた前記第２のプログラムの集合と、を比較することによって、前記第１のプログラムと前記第２のプログラムとの集合の差分を差分情報として検出する差分検出部と、
前記第１のプログラムおよび前記第２のプログラムを表示する表示装置の画面内で、前記並び替えられた、前記第１のプログラムの集合および前記第２のプログラムの集合を表示させ、且つ前記差分情報に基づいて前記第１のプログラムの集合に対応する前記第２のプログラムの集合が前記Ｙ軸方向で同じ高さで表示されるよう、前記第１のプログラムおよび前記第２のプログラムを左右に並べて表示させる第１の表示制御部と、
を備えることを特徴とするプログラム照合装置。
【請求項２】
前記第１の表示制御部は、前記差分情報に含まれる集合を他の集合と識別可能なよう表示する、
ことを特徴とする請求項１に記載のプログラム照合装置。
【請求項３】
前記集合整列部は、
前記第１のプログラムに含まれる集合を、Ｙ座標が小さい順番で前記Ｙ軸方向に並び替え、且つＹ座標が同じ集合に対しては、Ｘ座標が小さい順番で前記Ｙ軸方向に並び替え、
前記第２のプログラムに含まれる集合を、Ｙ座標が小さい順番で前記Ｙ軸方向に並び替え、且つＹ座標が同じ集合に対しては、Ｘ座標が小さい順番で前記Ｙ軸方向に並び替え、
前記差分検出部は、前記集合整列部が並べ替えた集合の配置に基づいて、前記差分情報を検出し、
前記第１の表示制御部は、前記集合整列部が並べ替えた集合の配置に基づいて、前記第１のプログラムおよび前記第２のプログラムを表示させる、
ことを特徴とする請求項１または２に記載のプログラム照合装置。
【請求項４】
前記第１のプログラムは、前記第１のプログラムに含まれる第１の集合の第１のプロパティ情報を有し、
前記第２のプログラムは、前記第２のプログラムに含まれる第２の集合の第２のプロパティ情報を有し、
前記差分情報は、前記第１のプロパティ情報と前記第２のプロパティ情報との差分であるプロパティ差分を含み、
前記第１の集合と前記第２の集合とが、前記画面において前記Ｙ軸方向で同じ高さで表示されている場合に、ユーザから前記第１のプロパティ情報および前記第２のプロパティ情報の表示指示を受付けると、前記プロパティ差分に基づいて、前記第１のプロパティ情報および前記第２のプロパティ情報を、前記第１のプロパティ情報と前記第２のプロパティ情報との差分となっている箇所が他の箇所に対して識別可能なよう前記画面に表示する第２の表示制御部をさらに備える、
ことを特徴とする請求項１から３のいずれか１つに記載のプログラム照合装置。
【請求項５】
前記画面内で左右に並べて表示されている前記第１のプログラムおよび前記第２のプログラムに対し、ユーザから前記第２のプログラム内の第３の集合に対して前記第１のプログラムへのマージ指示を受付けると、前記第１のプログラムに対し、前記第３の集合と前記Ｙ軸方向の高さが同じである第１の位置に前記第３の集合をマージするプログラムマージ部をさらに備え、
前記プログラムマージ部は、前記第１の位置に前記第３の集合を配置できない場合には、前記第３の集合のＹ座標に基づいて、前記第１のプログラム内の集合のＹ座標を補正する、
ことを特徴とする請求項１から４のいずれか１つに記載のプログラム照合装置。
【請求項６】
前記プログラムマージ部は、前記第１のプログラム内に前記第３の集合のＹ座標と同じＹ座標の第４の集合が含まれていて、前記第１の位置に前記第３の集合を配置できない場合には、前記第４の集合のＸ座標を補正する、
ことを特徴とする請求項５に記載のプログラム照合装置。
【請求項７】
前記プログラムマージ部は、ユーザによって、前記第２のプログラム内の第５の集合が指定され、且つ前記第１のプログラム内の第２の位置が指定されると、前記第５の集合を、前記第２の位置にマージする、
ことを特徴とする請求項５または６に記載のプログラム照合装置。
【請求項８】
前記プログラムマージ部は、マージされた箇所に基づいてマージ履歴を作成し、前記マージ履歴を前記画面に表示させる、
ことを特徴とする請求項５から７のいずれか１つに記載のプログラム照合装置。
【請求項９】
前記第１のプログラムは、既存の可動実績のある照合元プログラムであり、
前記第２のプログラムは、前記照合元プログラムに編集が加えられた照合先プログラムである、
ことを特徴とする請求項１から８のいずれか１つに記載のプログラム照合装置。
【請求項１０】
前記集合整列部は、
並び替えた、前記第１のプログラムに含まれる集合の左端を揃え、
並び替えた、前記第２のプログラムに含まれる集合の左端を揃える、
ことを特徴とする請求項３に記載のプログラム照合装置。
【請求項１１】
前記集合整列部は、
並び替えた、前記第１のプログラムに含まれる集合を前記Ｙ軸方向に等間隔で並べ、
並び替えた、前記第２のプログラムに含まれる集合を前記Ｙ軸方向に等間隔で並べる、
ことを特徴とする請求項３または１０に記載のプログラム照合装置。
【請求項１２】
第１のファンクションブロックダイアグラムプログラムである第１のプログラムであって前記第１のプログラム内で互いに結線されている第１のプログラム部品の集合が横方向であるＸ軸方向に複数配置された前記第１のプログラムを、前記第１のプログラム部品の集合単位に分割し、前記第１のプログラムの各集合を実行順序が早い順に縦方向であるＹ軸方向に１列に並び替え、かつ第２のファンクションブロックダイアグラムプログラムである第２のプログラムであって前記第２のプログラム内で互いに結線されている第２のプログラム部品の集合が横方向であるＸ軸方向に複数配置された前記第２のプログラムを、前記第２のプログラム部品の集合単位に分割し、前記第２のプログラムの各集合を実行順序が早い順に前記Ｙ軸方向に１列に並び替える集合整列ステップと、
並び替えられた前記第１のプログラムの集合と、並び替えられた前記第２のプログラムの集合と、を比較することによって、前記第１のプログラムと前記第２のプログラムとの集合の差分を差分情報として検出する差分検出ステップと、
前記第１のプログラムおよび前記第２のプログラムを表示する表示装置の画面内で、前記並び替えられた、前記第１のプログラムの集合および前記第２のプログラムの集合を表示させ、且つ前記差分情報に基づいて前記第１のプログラムの集合に対応する前記第２のプログラムの集合が前記Ｙ軸方向で同じ高さで表示されるよう、前記第１のプログラムおよび前記第２のプログラムを左右に並べて表示させる表示ステップと、
を含むことを特徴とするプログラム照合方法。
【請求項１３】
第１のファンクションブロックダイアグラムプログラムである第１のプログラムであって前記第１のプログラム内で互いに結線されている第１のプログラム部品の集合が横方向であるＸ軸方向に複数配置された前記第１のプログラムを、前記第１のプログラム部品の集合単位に分割し、前記第１のプログラムの各集合を実行順序が早い順に縦方向であるＹ軸方向に１列に並び替え、かつ第２のファンクションブロックダイアグラムプログラムである第２のプログラムであって前記第２のプログラム内で互いに結線されている第２のプログラム部品の集合が横方向であるＸ軸方向に複数配置された前記第２のプログラムを、前記第２のプログラム部品の集合単位に分割し、前記第２のプログラムの各集合を実行順序が早い順に前記Ｙ軸方向に１列に並び替える集合整列ステップと、
並び替えられた前記第１のプログラムの集合と、並び替えられた前記第２のプログラムの集合と、を比較することによって、前記第１のプログラムと前記第２のプログラムとの集合の差分を差分情報として検出する差分検出ステップと、
前記第１のプログラムおよび前記第２のプログラムを表示する表示装置の画面内で、前記並び替えられた、前記第１のプログラムの集合および前記第２のプログラムの集合を表示させ、且つ前記差分情報に基づいて前記第１のプログラムの集合に対応する前記第２のプログラムの集合が前記Ｙ軸方向で同じ高さで表示されるよう、前記第１のプログラムおよび前記第２のプログラムを左右に並べて表示させる表示ステップと、
をコンピュータに実行させることを特徴とするプログラム照合プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファンクションブロックダイアグラム言語で記述されたプログラムを照合するプログラム照合装置、プログラム照合方法、およびプログラム照合プログラムに関する。
【背景技術】
【０００２】
近年のＦＡ（Factory  Automation）分野ではシステムの大規模化が進んでおり、ＰＬＣ（プログラマブルロジックコントローラ：Programmable  Logic  Controller）が用いるシーケンスプログラムが大規模化かつ複雑化しているので、シーケンスプログラムの品質確保が重要となっている。【０００３】
シーケンスプログラムを作成する際には、シーケンスプログラムを新規に作成するよりも、既存の稼働実績のあるシーケンスプログラムを複製したうえで再利用する場合が多い。シーケンスプログラムを再利用する場合、既存のシーケンスプログラムへの処理の追加、不要な処理の削除、またはロジックの一部変更が実施される。その際に、品質確保の観点からシーケンスプログラムの変更箇所を明らかにすることが望ましい。【０００４】
編集先のプログラムである照合先プログラムの変更箇所を明らかにする場合、既存のシーケンスプログラムである照合元プログラムと、照合先プログラムとが比較されることで照合される。【０００５】
特許文献１に記載のプログラミング装置は、グラフィック言語であるファンクションブロックダイアグラム（ＦＢＤ：Function  Block  Diagram）言語に変換された２つのプログラムを比較して不一致部を表示画面に表示している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平９−２３０９１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記特許文献１の技術では、プログラム部品を画面の横方向、すなわちＸ軸方向に並べて画面表示しているので、横方向に長く作成されたプログラムを照合する場合には、１画面に表示可能なプログラムの部分が少なくなる。このため、ユーザが２つのプログラムを比較する際には、画面を何度も横スクロールする必要があり、照合結果の参照に手間がかかるという問題があった。【０００８】
本発明は、上記に鑑みてなされたものであって、ファンクションブロックダイアグラム言語で記述されたプログラムの照合結果を容易に参照することができるプログラム照合装置を得ることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明のプログラム照合装置は、第１のファンクションブロックダイアグラムプログラムである第１のプログラムであって第１のプログラム内で互いに結線されている第１のプログラム部品の集合が横方向であるＸ軸方向に複数配置された第１のプログラムを、第１のプログラム部品の集合単位に分割し、第１のプログラムの各集合を実行順序が早い順に縦方向であるＹ軸方向に１列に並び替え、かつ第２のファンクションブロックダイアグラムプログラムである第２のプログラムであって第２のプログラム内で互いに結線されている第２のプログラム部品の集合が横方向であるＸ軸方向に複数配置された第２のプログラムを、第２のプログラム部品の集合単位に分割し、第２のプログラムの各集合を実行順序が早い順にＹ軸方向に１列に並び替える集合整列部を備える。また、本発明のプログラム照合装置は、並び替えられた第１のプログラムの集合と、並び替えられた第２のプログラムの集合と、を比較することによって、第１のプログラムと第２のプログラムとの集合の差分を差分情報として検出する差分検出部を備える。また、本発明のプログラム照合装置は、第１のプログラムおよび第２のプログラムを表示する表示装置の画面内で、並び替えられた、第１のプログラムの集合および第２のプログラムの集合を表示させ、且つ差分情報に基づいて第１のプログラムの集合に対応する第２のプログラムの集合がＹ軸方向で同じ高さで表示されるよう、第１のプログラムおよび第２のプログラムを左右に並べて表示させる第１の表示制御部を備える。
【発明の効果】
【００１０】
本発明にかかるプログラム照合装置は、ファンクションブロックダイアグラム言語で記述されたプログラムの照合結果を容易に参照することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】実施の形態にかかるプログラム照合装置の構成を示す図
【図２】実施の形態にかかるプログラム照合装置が照合するＦＢＤプログラムの実行手順を説明するための図
【図３】実施の形態にかかるプログラム照合装置が実行する照合処理の処理手順を示すフローチャート
【図４】実施の形態にかかるプログラム照合装置が画面に表示させる照合対象プログラムの例を示す図
【図５】実施の形態にかかるプログラム照合装置が画面に表示させるプロパティ情報を説明するための図
【図６】実施の形態にかかるプログラム照合装置が実行するマージ処理の処理手順を示すフローチャート
【図７】実施の形態にかかるプログラム照合装置がマージする照合対象プログラムの第１の表示例を示す図
【図８】実施の形態にかかるプログラム照合装置がマージする照合対象プログラムの第２の表示例を示す図
【図９】実施の形態にかかるプログラム照合装置がマージする照合対象プログラムの第３の表示例を示す図
【図１０】実施の形態にかかるプログラム照合装置が作成するマージ履歴の作成方法を説明するための図
【図１１】実施の形態にかかるプログラム照合装置を実現するハードウエア構成を示す図
【発明を実施するための形態】
【００１２】
以下に、本発明の実施の形態にかかるプログラム照合装置、プログラム照合方法、およびプログラム照合プログラムを図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１３】
実施の形態．
図１は、実施の形態にかかるプログラム照合装置の構成を示す図である。プログラム照合装置１は、ＦＢＤ言語で記述されたＦＢＤプログラムを照合するコンピュータである。本実施の形態の照合は、ＦＢＤプログラムの変更箇所を明らかにする処理である。プログラム照合装置１は、２つのＦＢＤプログラムを照合する際に、ＦＢＤプログラムのＦＢＤ部品を実行順序が早い順に画面の縦方向に並べて比較する。
【００１４】
プログラム照合装置１は、データ保存部１０と、差分処理部１３と、プロパティ情報表示制御部１７と、差分表示制御部１６と、プログラムマージ部１８と、マージ履歴記憶部１９と、指示入力部２０と、プログラム入力部２１とを備えている。表示装置２は、差分表示制御部１６、プロパティ情報表示制御部１７、プログラムマージ部１８に接続されている。表示装置２の例は、液晶モニタである。
【００１５】
指示入力部２０は、差分処理部１３、プロパティ情報表示制御部１７、およびプログラムマージ部１８に接続されている。プログラム入力部２１は、データ保存部１０に接続されている。差分処理部１３は、データ保存部１０および差分表示制御部１６に接続されている。差分表示制御部１６は、プロパティ情報表示制御部１７およびプログラムマージ部１８に接続されている。マージ履歴記憶部１９は、プログラムマージ部１８に接続されている。
【００１６】
データ保存部１０は、ＦＢＤプログラムといったデータを保存するメモリなどである。データ保存部１０は、第１のプログラムである照合元プログラム１１と、第２のプログラムである照合先プログラム１２とを保存する。照合元プログラム１１は、既存の稼働実績のあるＦＢＤプログラムである。照合先プログラム１２は、照合元プログラム１１を複製したものに、編集が加えられたＦＢＤプログラムである。ＦＢＤプログラムが編集される際には、ＦＢＤ部品の追加、削除、または変更が行われる。ＦＢＤ部品の追加、削除、または変更が行われることによって、照合元プログラム１１と照合先プログラム１２との間に差分が発生する。なお、第１のプログラムには、照合元プログラム１１以外のプログラムが含まれていてもよく、第２のプログラムには、照合先プログラム１２以外のプログラムが含まれていてもよい。
【００１７】
プログラム入力部２１は、プログラムを作成するプログラム作成装置といった外部装置から送られてくる、照合元プログラム１１および照合先プログラム１２をデータ保存部１０に入力する。
【００１８】
ＰＬＣといった制御装置に用いられるシーケンスプログラムの記述には、プログラミング言語として、テキスト言語またはグラフィック言語が用いられる。グラフィック言語の中で、ＩＥＣ（国際電気標準会議：International  Electrotechnical  Commission）で規格化されているＦＢＤ言語は、処理に対応するＦＢＤ部品が結線されることによって、一連の処理が記述される。ＦＢＤ部品の単位は、ファンクションあるいはファンクションブロックである。ＦＢＤ言語はフリーフォーマットで記述可能なプログラミング言語であり、ＦＢＤ部品の実行順序は、ＦＢＤ部品が記載される座標の位置によって決まる。
【００１９】
ここで、ＦＢＤプログラムの実行手順について説明する。図２は、実施の形態にかかるプログラム照合装置が照合するＦＢＤプログラムの実行手順を説明するための図である。ＦＢＤプログラム１００は、複数のＦＢＤ部品を用いて構成されている。図２では、ＦＢＤ部品を「ＭＡ」、「ＭＢ」、「ＭＣ」、「ＭＤ」、「ＭＥ」、「ＭＦ」、「ＭＧ」、「ＭＨ」のように示している。
【００２０】
ＦＢＤプログラム１００は、２次元座標上の左上部を原点（０，０）とし、Ｙ軸方向（縦方向）については上から下、Ｘ軸方向（横方向）については左から右の順番でＦＢＤ部品が実行される。Ｙ軸方向とＸ軸方向の順番はＹ軸方向が優先される。
【００２１】
図２に示すＦＢＤプログラム１００の場合、以下の（１）から（８）の順番でＦＢＤ部品が実行される。
（１）「ＭＡ」のＦＢＤ部品
（２）「ＭＥ」のＦＢＤ部品
（３）「ＭＤ」のＦＢＤ部品
（４）「ＭＣ」のＦＢＤ部品
（５）「ＭＢ」のＦＢＤ部品
（６）「ＭＦ」のＦＢＤ部品
（７）「ＭＨ」のＦＢＤ部品
（８）「ＭＧ」のＦＢＤ部品
【００２２】
なお、「ＭＡ」から「ＭＨ」は、複数のＦＢＤ部品からなるＦＢＤ部品群（後述する集合）であってもよい。この場合も、図２で説明した順番と同じ順番でＦＢＤ部品群が実行される。
【００２３】
指示入力部２０は、プログラム照合装置１のユーザからの指示を受付けて、受付けた指示を差分処理部１３、プロパティ情報表示制御部１７、またはプログラムマージ部１８に入力する。プログラム照合装置１のユーザが、指示入力部２０に照合元プログラム１１および照合先プログラム１２の差分を表示させる指示を入力すると、指示入力部２０は、この指示を差分処理部１３に送る。
【００２４】
プログラム照合装置１のユーザが、指示入力部２０に照合元プログラム１１および照合先プログラム１２のプロパティを表示させる指示を入力すると、指示入力部２０は、この指示をプロパティ情報表示制御部１７に送る。また、プログラム照合装置１のユーザが、指示入力部２０に照合元プログラム１１および照合先プログラム１２のマージを実行させる指示を入力すると、指示入力部２０は、この指示をプログラムマージ部１８に送る。
【００２５】
差分処理部１３は、差分検出部１４と、集合整列部１５とを備えている。集合整列部１５は、データ保存部１０から照合元プログラム１１および照合先プログラム１２を読み出す。
【００２６】
集合整列部１５は、照合元プログラム１１を、照合元プログラム１１内で互いに結線されているＦＢＤ部品の集合単位に分割する。換言すると、集合整列部１５は、照合元プログラム１１内のＦＢＤ部品に対し、互いに結線されているＦＢＤ部品を、１つのＦＢＤ部品群に設定する。同様に、集合整列部１５は、照合先プログラム１２に配置されているＦＢＤ部品を、互いに結線されたＦＢＤ部品から構成された単位で分割する。本実施の形態では、集合整列部１５が分割したＦＢＤ部品の集まりを集合と呼ぶ。すなわち、集合は、互いに結線されたＦＢＤ部品の集まりである。このように、集合整列部１５は、照合元プログラム１１および照合先プログラム１２を、それぞれ集合単位に分割する。
【００２７】
集合整列部１５は、照合元プログラム１１の実行順序に従って、照合元プログラム１１内の集合を縦方向（Ｙ軸方向）に１列に並び替える。また、集合整列部１５は、照合先プログラム１２の実行順序に従って、照合先プログラム１２内の集合を縦方向に１列に並び替える。集合整列部１５は、実行順序の早い集合ほど、上側に並べる。集合整列部１５は、集合を並べ替えた結果を示す整列結果を差分検出部１４に送る。集合整列部１５から差分検出部１４に送られる整列結果には、照合元プログラム１１内の各集合の位置（画面内の座標）と、照合先プログラム１２内の各集合の位置（画面内の座標）とが含まれている。
【００２８】
差分検出部１４は、集合整列部１５によって集合が並び替えられた、照合元プログラム１１および照合先プログラム１２に基づいて、照合元プログラム１１と照合先プログラム１２との差分を検出する。すなわち、差分検出部１４は、集合整列部１５が並べ替えた集合の配置に基づいて、照合元プログラム１１と照合先プログラム１２との差分を検出する。差分検出部１４は、集合単位で、照合元プログラム１１と照合先プログラム１２との間に差分があるか否かを判定し、差分のある集合を抽出する。照合元プログラム１１と照合先プログラム１２との間の差分は、集合の追加、集合の削除、集合の変更の何れかである。
【００２９】
差分処理部１３は、例えば、照合元プログラム１１および照合先プログラム１２の一方にあって、他方に無い集合を抽出する。また、差分処理部１３は、照合元プログラム１１と照合先プログラム１２との間で集合の位置が異なる場合、すなわち処理順序が異なる場合、位置の異なる集合を抽出する。
【００３０】
また、差分処理部１３は、照合元プログラム１１の集合内の一部のＦＢＤ部品が編集され照合先プログラム１２が作成されている場合、編集によって発生したＦＢＤ部品の差分を抽出する。ＦＢＤ部品の差分には、ＦＢＤ部品自体の変更による差分と、ＦＢＤ部品のプロパティ情報の変更による差分とがある。差分検出部１４は、差分の検出結果である差分情報を差分表示制御部１６に送る。差分情報は、照合元プログラム１１と照合先プログラム１２との差分、すなわち差異点を示す情報である。差分情報では、差分検出部１４で抽出された集合の差分の内容、または差分検出部１４で抽出されたＦＢＤ部品の差分の内容が示されている。プロパティ情報は、ＦＢＤ部品のプロパティを示す情報である。
【００３１】
なお、以下の説明では、照合元プログラム１１および照合先プログラム１２をまとめて照合対象プログラムという場合がある。照合対象プログラムには、ＦＢＤ部品のプロパティ情報が含まれている。
【００３２】
第１の表示制御部である差分表示制御部１６は、集合整列部１５が集合を並べ替えた照合対象プログラムを、差分情報が特定の表示態様となるよう表示装置２に表示させる。差分表示制御部１６は、差分情報に基づいて、差分情報に含まれる集合およびＦＢＤ部品が、追加、削除、変更の何れであるかを識別可能なよう表示装置２に照合対象プログラムを表示させる。差分表示制御部１６は、例えば、集合およびＦＢＤ部品を色分けすることによって、集合およびＦＢＤ部品が、追加、削除、変更の何れであるかを識別可能なよう照合対象プログラムを強調表示させる。
【００３３】
第２の表示制御部であるプロパティ情報表示制御部１７は、プロパティ情報の表示指示を受付けると、差分表示制御部１６からプロパティ情報を抽出して、表示装置２に表示させる。具体的には、プロパティ情報表示制御部１７は、ユーザから指定された集合に含まれるＦＢＤ部品のプロパティ情報を、差分表示制御部１６の差分情報から読み出す。差分表示制御部１６の差分情報には、プロパティ情報の差分であるプロパティ差分も含まれているので、プロパティ情報表示制御部１７は、プロパティ情報の差分を読み出して、表示装置２に表示させ、照合先プログラム１２から照合先プログラム１２に含まれるＦＢＤ部品のプロパティ情報を抽出して表示装置２に表示させる。このとき、プロパティ情報表示制御部１７は、照合元プログラム１１に含まれるＦＢＤ部品のプロパティ情報と、照合先プログラム１２に含まれるＦＢＤ部品のプロパティ情報とを左右に並べて表示装置２の画面に表示させる。また、プロパティ情報表示制御部１７は、差分情報に基づいて、プロパティ情報の差分を表示装置２に強調表示させる。
【００３４】
プログラムマージ部１８は、照合対象プログラムのマージ指示を受付けると、照合元プログラム１１および照合先プログラム１２のマージを実行する。具体的には、プログラムマージ部１８は、照合元プログラム１１から編集が加えられた箇所を、照合先プログラム１２から抽出して照合元プログラム１１に反映させる。プログラムマージ部１８は、照合元プログラム１１と照合先プログラム１２との間で差分がある集合を、集合単位または一括してマージする。プログラムマージ部１８は、マージの履歴を作成し、マージ履歴記憶部１９に記憶させる。マージ履歴記憶部１９は、マージの履歴を記憶するメモリなどである。
【００３５】
図３は、実施の形態にかかるプログラム照合装置が実行する照合処理の処理手順を示すフローチャートである。指示入力部２０が、照合元プログラム１１および照合先プログラム１２の差分を表示させる指示を受付けると、この指示を差分処理部１３に送る。
【００３６】
集合整列部１５は、照合元プログラム１１を、データ保存部１０から読み出す（ステップＳ１０）。また、集合整列部１５は、照合先プログラム１２を、データ保存部１０から読み出す（ステップＳ２０）。なお、ステップＳ１０およびステップＳ２０の処理は、何れが先に実行されてもよい。
【００３７】
集合整列部１５は、照合対象プログラムを集合単位に分割する（ステップＳ３０）。具体的には、集合整列部１５は、照合元プログラム１１を集合単位に分割し、照合先プログラム１２を集合単位に分割する。
【００３８】
なお、集合整列部１５は、照合先プログラム１２をデータ保存部１０から読み出す前に、照合元プログラム１１を集合単位に分割してもよい。また、集合整列部１５は、照合元プログラム１１をデータ保存部１０から読み出す前に、照合先プログラム１２を集合単位に分割してもよい。
【００３９】
各集合の実行順序は、ＦＢＤ部品の実行順序と同様で、集合の左上部の（Ｘ，Ｙ）座標に依存して定まる。集合整列部１５は、集合を実行順序に従って、縦方向に並び替える（ステップＳ４０）。集合整列部１５は、照合元プログラム１１に含まれる集合が実行順となるよう、縦方向（Ｙ軸方向）に１列に並べ、照合先プログラム１２に含まれる集合が実行順となるよう、縦方向に１列に並べる。このとき、集合整列部１５は、照合元プログラム１１に含まれる集合と、この集合に対応する照合先プログラム１２に含まれる集合と、が同じ集合である場合には、同じＹ座標となるよう、すなわち同じ高さとなるよう各集合の位置を調整する。
【００４０】
差分検出部１４は、並び替えられた集合ごとに、照合元プログラム１１と照合先プログラム１２とを比較することによって、照合元プログラム１１と照合先プログラム１２との間の差分を検出する（ステップＳ５０）。差分検出部１４は、照合元プログラム１１と照合先プログラム１２とで同じＹ座標の集合同士を比較し、集合間の相違箇所を検出する。差分検出部１４が検出する差分は、集合の変更、削除、または追加である。すなわち、差分検出部１４は、照合元プログラム１１に対し、照合先プログラム１２の何れの集合が変更、削除、または追加されたかを検出する。
【００４１】
差分検出部１４は、並び替えられた集合と、差分情報を差分表示制御部１６に送る。差分表示制御部１６は、集合整列部１５が並べ替えた集合の配置に基づいて、照合対象プログラムを表示装置２に表示させる。すなわち、差分表示制御部１６は、並び替えられた集合と、差分情報に基づいて、照合対象プログラムを画面に表示させる。具体的には、差分表示制御部１６は、集合が並び替えられた照合元プログラム１１と、集合が並び替えられた照合先プログラム１２とを、表示装置２の画面の左右に並べて表示させる。このとき、差分表示制御部１６は、照合元プログラム１１の集合と、照合先プログラム１２の集合との差分がユーザによって視認可能なよう、表示装置２に画面表示させる（ステップＳ６０）。差分表示制御部１６は、差分のある集合に対して色分けなどを行うことによって、差分がユーザによって視認可能なよう表示させる。
【００４２】
図４は、実施の形態にかかるプログラム照合装置が画面に表示させる照合対象プログラムの例を示す図である。集合整列部１５は、照合元プログラム１１内の集合を実行順序に従って並べ替え、且つ並び替えた集合の左端を揃えるとともに縦方向に等間隔で並べる。また、集合整列部１５は、照合先プログラム１２内の集合を実行順序に従って並べ替え、且つ並び替えた集合の左端を揃えるとともに縦方向に等間隔で並べる。集合整列部１５は、照合元プログラム１１内の集合に対応する照合先プログラム１２内の集合が縦方向で同じ高さとなるよう、照合元プログラム１１および照合先プログラム１２を左右に並べる。
【００４３】
差分表示制御部１６は、比較された照合対象プログラムの集合全てを、並べ替えられた順序および位置となるよう画面１０１の左右に並べる。ここでは、差分表示制御部１６が、画面１０１の左半分である左領域５１Ａに照合元プログラム１１を表示させ、画面１０１の右半分である右領域５１Ｂに照合先プログラム１２を表示させた場合について説明する。なお、照合対象プログラムの集合が多すぎて画面１０１に全ての集合を表示できない場合、差分表示制御部１６は、照合対象プログラムの一部の集合を画面１０１に表示させてもよい。
【００４４】
照合元プログラム１１は、集合６１Ａ，６２Ａ，６３Ａを有し、照合先プログラム１２は、集合６１Ｂ，６３Ｂ，６４Ｂを有している。この場合において、照合元プログラム１１では、集合６１Ａ、集合６２Ａ、集合６３Ａの順番で処理が実行され、照合先プログラム１２では、集合６１Ｂ、集合６３Ｂ、集合６４Ｂの順番で処理が実行されるものとする。
【００４５】
また、集合６１Ａが、集合６１Ｂに対応し、集合６３Ａが、集合６３Ｂに対応している。すなわち、集合６１Ａと集合６１Ｂとは同じ構成であるがプロパティ情報が異なり、集合６３Ａと集合６３Ｂは同じものである。換言すると、左領域５１Ａの照合元プログラム１１が編集されて右領域５１Ｂの照合先プログラム１２が作成された際に、集合６１Ａ，６３Ａの構成は、編集されていない。一方、左領域５１Ａの照合元プログラム１１が編集されて右領域５１Ｂの照合先プログラム１２が作成された際に、集合６２Ａが削除され、集合６３Ｂの後に集合６４Ｂが追加されている。
【００４６】
差分表示制御部１６は、左領域５１Ａおよび右領域５１Ｂを同一画面上である画面１０１上に表示させる。具体的には、差分表示制御部１６は、集合６１Ａ，６２Ａ，６３Ａの左端を揃えた状態で画面１０１の左領域５１Ａに表示させ、集合６１Ｂ，６３Ｂ，６４Ｂの左端を揃えた状態で画面１０１の右領域５１Ｂに表示させる。このとき、集合６１ＡのＹ座標と集合６１ＢのＹ座標とが同じになり、集合６３ＡのＹ座標と集合６３ＢのＹ座標とが同じになるよう、左領域５１Ａおよび右領域５１Ｂが表示される。また、左領域５１Ａにおいて、集合６４Ｂに対応する領域は空欄となり、右領域５１Ｂにおいて、集合６２Ａに対応する領域は空欄となる。
【００４７】
差分表示制御部１６は、差分検出部１４からの差分情報に従って、変更されている集合は赤色、削除されている集合は青色、追加されている集合は緑色といったように色分けをして各集合を表示する。すなわち、差分表示制御部１６は、差分情報に基づいて、照合元プログラム１１と照合先プログラム１２との間の差分となっている集合を、色分け等によって他の集合に対して識別可能なよう強調表示する。本実施の形態の強調表示は、他の集合とは異なる態様の表示である。
【００４８】
なお、差分表示制御部１６は、集合が削除された領域に色を付してもよい。差分表示制御部１６は、変更前の集合および変更後の集合に対して、変更前および変更後のＦＢＤ部品に黄色といった、他とは異なる色を付す。なお、表示方法は、これらに限定されるものではない。
【００４９】
このように、プログラム照合装置１は、照合元プログラム１１内の集合６１Ａ，６２Ａ，６３Ａおよび照合先プログラム１２内の集合６１Ｂ，６３Ｂ，６４Ｂを画面１０１内で縦に並べるので、横方向に集合を並べて比較するよりも、多くの集合を表示できる。これにより、多くの照合結果を一画面に表示することができるので、ユーザによる照合結果の参照が容易になり、照合の作業時間を短縮できる。また、照合元プログラム１１と照合先プログラム１２との不一致箇所である差分を、ニーモニック表現ではなく、グラフィック言語そのもので表示できるので、ユーザが差分を容易に確認することが可能となる。
【００５０】
ユーザは、集合内のＦＢＤ部品の入力端子および出力端子が持つプロパティ情報の差異を比較したい場合がある。指示入力部２０は、ユーザからプロパティ情報の表示指示を受付けると、この表示指示をプロパティ情報表示制御部１７に送る。プロパティ情報表示制御部１７は、表示指示で指定されている集合のプロパティ情報を、差分表示制御部１６から読み出して表示装置２に表示させる。プロパティ情報の表示指示は、ユーザがマウスなどによって画面１０１内の集合を指定することによって、指示入力部２０に入力される。
【００５１】
図５は、実施の形態にかかるプログラム照合装置が画面に表示させるプロパティ情報を説明するための図である。画面１０２は、画面１０１と同様に照合対象プログラムを縦方向に表示した画面である。
【００５２】
ユーザによって画面１０２上の何れかの集合が指定された場合、プロパティ情報表示制御部１７は、画面１０２の代わりに、プロパティ情報を表示するための画面２０１を表示させる。すなわち、プロパティ情報表示制御部１７は、ＦＢＤプログラムの差分表示からプロパティ情報の差分表示にジャンプして切り替える。具体的には、プロパティ情報表示制御部１７は、指定された集合に含まれるＦＢＤ部品のプロパティ情報と、この集合と同じＹ座標の集合に含まれるＦＢＤ部品のプロパティ情報とを、画面２０１に表示させる。例えば、集合６１Ａが指定された場合、プロパティ情報表示制御部１７は、集合６１Ａと、この集合６１ＡのＹ座標と同じＹ座標を有している集合６１Ｂと、を含んだ領域４１のプロパティ情報を画面２０１に表示させる。
【００５３】
ＦＢＤ部品のうち、変更されるのは、入力端子または出力端子である。集合６１Ａ，６１Ｂは、何れも３つの入力端子と、１つの出力端子を有している。図５では、集合６１Ａ内の入力端子を、「bLabel114」、「bLabel155」、「bLabel116」で図示し、集合６１Ａ内の出力端子を「bLabel117」で図示している。また、図５では、集合６１Ｂ内の入力端子を、「bLabel114」、「bLabel115」、「bLabel116」で図示し、集合６１Ｂ内の出力端子を「bLabel117」で図示している。すなわち、集合６１Ｂでは、集合６１ＡのＦＢＤ部品４２である「bLabel155」が編集されて、ＦＢＤ部品４４である「bLabel115」となっている。また、集合６１Ｂでは、集合６１ＡのＦＢＤ部品４３である「bLabel117」が編集されて、ＦＢＤ部品４５である「bLabel117」となっている。この場合において、プロパティ情報表示制御部１７は、差分表示制御部１６が用いた差分情報に基づいて、編集の対象となったＦＢＤ部品４２〜４５を抽出し、ＦＢＤ部品４２〜４５のプロパティ情報を、他のＦＢＤ部品のプロパティ情報と異なる色で表示させる。すなわち、プロパティ情報表示制御部１７は、集合６１Ａに含まれるＦＢＤ部品のプロパティ情報と、集合６１Ｂに含まれるＦＢＤ部品のプロパティ情報との差分となっている箇所が他の箇所に対して識別可能なよう画面２０１に表示する。
【００５４】
このように、本実施の形態では、差分情報によって画面１０２と画面２０１とが紐付けがされている。したがって、差分表示制御部１６は、差分情報に基づいて、照合元プログラム１１と照合先プログラム１２との差分を表示でき、プロパティ情報表示制御部１７は、差分情報に基づいて、集合間のプロパティ情報の差分を表示できる。
【００５５】
第１の集合である集合６１Ａ、第２の集合である集合６１Ｂ、または領域４１がユーザによって指定された場合、プロパティ情報表示制御部１７は、集合６１Ａのプロパティ情報である第１のプロパティ情報と、集合６１Ｂのプロパティ情報である第２のプロパティ情報とを画面２０１に表示させる。領域４１は、集合６１Ａおよび集合６１Ｂを含んだ領域である。したがって、領域４１がユーザによって指定された場合とは、集合６１Ａおよび集合６１Ｂが指定された場合である。
【００５６】
プロパティ情報は、「ラベル名」と、「データ型」と、「コメント」と、が対応付けされた情報である。「ラベル名」は、ＦＢＤ部品のラベルの名称を示し、「データ型」は、ＦＢＤ部品のデータの型を示し、「コメント」は、ＦＢＤ部品の機能を示している。
【００５７】
図５の例では、集合６１Ａの「bLabel155」が編集されて、集合６１Ｂでは「bLabel115」となっているので、画面２０１において、「ラベル名」の「bLabel155」および「bLabel115」が、他の「ラベル名」と異なる色で表示されている。
【００５８】
また、図５の例では、「bLabel117」の「コメント」が「スイッチ点灯」から「スイッチ消灯」に編集されているので、画面２０１において、「コメント」の「スイッチ点灯」および「スイッチ消灯」が、他の「コメント」と異なる色で表示されている。
【００５９】
このように、プログラム照合装置１は、差分処理部１３にてプロパティ情報の差分を含んだ差分情報を検出しているので、照合対象プログラムの差分および集合間のプロパティ情報の差分を容易に表示することができる。また、プログラム照合装置１は、差分情報に基づいて、照合対象プログラムの差分を表示する画面１０２から、集合間のプロパティ情報の差分を表示する画面２０１に切替えているので、画面の切替えが容易となる。これにより、プロパティ情報の差異箇所の表示が容易になるので、照合結果の詳細な参照が簡単になり、照合の作業時間を短縮することができる。
【００６０】
プロパティ情報表示制御部１７は、変更された領域４１内で強調表示された入出力端子の何れかに対してクリック操作が実行されると、画面１０２を画面２０１へ変更するともに、クリック操作された入出力端子のプロパティ情報が表示されている画面２０１内の行にカーソルを移動させてもよい。すなわち、プロパティ情報表示制御部１７は、強調表示された入力端子を示すＦＢＤ部品４２，４４、および強調表示された出力端子を示すＦＢＤ部品４３，４５の何れかがクリック操作で指定されると、画面２０１内の指定された端子のプロパティ情報が表示されている行にカーソルを移動させてもよい。なお、画面１０２を切り替える手段および差分の表示方法はこれに限定されるものではない。また、プログラム照合装置１は、画面１０２と画面２０１とを同時に表示させてもよい。
【００６１】
つぎに、照合対象プログラムのマージ処理について説明する。図６は、実施の形態にかかるプログラム照合装置が実行するマージ処理の処理手順を示すフローチャートである。ユーザは、マージしたい集合を画面１０２で指定するとともに、画面１０２内に表示されているマージボタンを押下する。マージボタンは、マージの実行を指示するためのボタンである。ユーザによる集合の指定およびマージボタンの押下が、照合対象プログラムのマージ指示である。
【００６２】
指示入力部２０は、照合対象プログラムのマージ指示を受付けると、この指示をプログラムマージ部１８に送る。プログラムマージ部１８は、マージする集合を指定した情報を受付け（ステップＳ１１０）、マージボタンの押下を受付ける（ステップＳ１２０）。
【００６３】
プログラムマージ部１８は、ユーザによって指定されたマージ位置に応じて、照合元プログラム１１に対し、座標を補正する（ステップＳ１３０）。このとき、プログラムマージ部１８は、集合の編集内容に応じて、照合元プログラム１１に対し、集合のＸ座標およびＹ座標を補正する。また、プログラムマージ部１８は、ユーザによって指定された照合先プログラム１２内の集合の内容を、照合元プログラム１１内に反映する。照合元プログラム１１に対する集合のＸ座標およびＹ座標の補正については、後述する。
【００６４】
プログラムマージ部１８は、座標の補正位置に従って照合対象プログラムを再表示する（ステップＳ１４０）。すなわち、プログラムマージ部１８は、照合先プログラム１２内の集合に変更された照合元プログラム１１内の集合が、変更後の内容となるよう照合対象プログラムを画面１０２に表示させる。また、プログラムマージ部１８は、マージ履歴を作成してマージ履歴記憶部１９に記憶させる。
【００６５】
図７は、実施の形態にかかるプログラム照合装置がマージする照合対象プログラムの第１の表示例を示す図である。第１の表示例では、プログラム照合装置１が、照合対象プログラムをマージして表示する際に、照合元プログラム１１−１内の集合のＹ座標を補正して表示させる。図７から図１０では、ＦＢＤ部品の集合を「Ａ」、「Ｂ」、「Ｃ」、「Ｄ」、「Ｅ」、「Ｆ」、「Ｇ１」、「Ｇ２」、「Ｇ３」のように示している。
【００６６】
変更前（マージ前）の照合対象プログラムが、図７に示す照合対象プログラム１０３Ｘであるとする。照合対象プログラム１０３Ｘには、照合元プログラム１１−１および照合先プログラム１２−１が含まれている。ここでは、照合元プログラム１１−１に対して集合「Ｇ１」が追加されたものが、照合先プログラム１２−１である。なお、プログラム照合装置１は、照合対象プログラム１０３Ｘを表示装置２に表示させてもよいし、表示させなくてもよい。
【００６７】
差分処理部１３は、照合対象プログラム１０３Ｘの照合元プログラム１１−１および照合先プログラム１２−１を実行順序に従って縦方向に並び替える。差分表示制御部１６は、実行順序に従って縦方向に並び替えられた照合元プログラム１１−１と、実行順序に従って縦方向に並び替えられた照合先プログラム１２−１とを、照合対象プログラム２０２として表示装置２に表示させる。このとき、差分表示制御部１６は、差分検出部１４からの差分情報に基づいて、照合元プログラム１１−１と照合先プログラム１２−１との差分となっている集合を色分けなどによって強調表示する。
【００６８】
ここでは、照合元プログラム１１−１と照合先プログラム１２−１との差分は、集合「Ｇ１」である。この集合「Ｇ１」がユーザ操作によって押下（選択）され、マージボタン８１がユーザ操作によって押下されると、プログラムマージ部１８は、照合先プログラム１２−１の集合「Ｇ１」を照合元プログラム１１−１にマージする。これにより、プログラムマージ部１８は、照合先プログラム１２−１内の集合「Ｇ１」のＹ座標と、照合元プログラム１１−１内の集合「Ｇ１」のＹ座標とが同じになるよう、集合「Ｇ１」を照合先プログラム１２−１に挿入する。ここでは、プログラムマージ部１８は、照合先プログラム１２−１内で、集合「Ｃ」と集合「Ｄ」との間の位置である第１の位置に集合「Ｇ１」を挿入する。
【００６９】
さらに、プログラムマージ部１８は、変更後（マージ後）の照合対象プログラムである照合対象プログラム１０３Ｙを表示装置２に表示させる。このとき、プログラムマージ部１８は、照合先プログラム１２−１内の集合「Ｇ１」のＹ座標と、照合元プログラム１１−１内の集合「Ｇ１」のＹ座標とが同じになるよう、照合先プログラム１２−１内で集合「Ｇ１」を表示させる。ここでは、プログラムマージ部１８は、照合先プログラム１２−１内で、集合「Ｃ」と集合「Ｄ」との間のＹ座標となるよう、集合「Ｇ１」を表示させる。プログラムマージ部１８は、集合「Ｃ」、集合「Ｇ１」、集合「Ｄ」の実行順序が入れ替わらなければ、照合先プログラム１２−１内の集合「Ｇ１」のＸ座標を何れの位置としてもよい。プログラムマージ部１８は、例えば、照合先プログラム１２−１内の集合「Ｇ１」のＸ座標と、照合元プログラム１１−１内の集合「Ｇ１」のＸ座標とが同じになるよう、集合「Ｇ１」を表示させる。
【００７０】
なお、プログラムマージ部１８は、集合「Ｇ１」をマージして表示する際に、Ｙ座標に十分なスペースが無く、集合「Ｇ１」を配置できない場合には、集合「Ｇ１」のＹ座標に基づいて集合間のＹ座標を補正したうえでマージ用の集合「Ｇ１」を挿入し表示させる。例えば、照合元プログラム１１−１内の集合「Ｃ」と集合「Ｄ」との間に、集合「Ｇ１」を挿入するスペースが無い場合、プログラムマージ部１８は、集合「Ｄ」以降のＹ座標を下側に補正することによって、集合「Ｃ」と集合「Ｄ」との間にスペースを設け、このスペースに集合「Ｇ１」を挿入する。
【００７１】
図８は、実施の形態にかかるプログラム照合装置がマージする照合対象プログラムの第２の表示例を示す図である。第２の表示例では、プログラム照合装置１が、照合対象プログラムをマージして表示する際に、照合元プログラム１１−２内の集合のＸ座標を補正して表示させる。
【００７２】
変更前（マージ前）の照合対象プログラムが、図８に示す照合対象プログラム１０４Ｘであるとする。照合対象プログラム１０４Ｘには、照合元プログラム１１−２および照合先プログラム１２−２が含まれている。ここでは、照合元プログラム１１−２に対して集合「Ｇ２」が追加されたものが、照合先プログラム１２−２である。なお、プログラム照合装置１は、照合対象プログラム１０４Ｘを表示装置２に表示させてもよいし、表示させなくてもよい。
【００７３】
差分処理部１３は、照合対象プログラム１０４Ｘの照合元プログラム１１−２および照合先プログラム１２−２を実行順序に従って縦方向に並び替える。差分表示制御部１６は、実行順序に従って縦方向に並び替えられた照合元プログラム１１−２と、実行順序に従って縦方向に並び替えられた照合先プログラム１２−２とを、照合対象プログラム２０３として表示装置２に表示させる。このとき、差分表示制御部１６は、差分検出部１４からの差分情報に基づいて、照合元プログラム１１−２と照合先プログラム１２−２との差分となっている集合を色分けなどによって強調表示する。
【００７４】
ここでは、照合元プログラム１１−２と照合先プログラム１２−２との差分は、第３の集合である集合「Ｇ２」である。この集合「Ｇ２」がユーザ操作によって押下され、マージボタン８１がユーザ操作によって押下されると、プログラムマージ部１８は、照合先プログラム１２−２の集合「Ｇ２」を照合元プログラム１１−２にマージする。これにより、プログラムマージ部１８は、照合先プログラム１２−２内の集合「Ｇ２」のＹ座標と、照合元プログラム１１−２内の集合「Ｇ２」のＹ座標とが同じになるよう、集合「Ｇ２」を照合先プログラム１２−２に挿入する。ここでは、プログラムマージ部１８は、照合先プログラム１２−２内で、集合「Ｂ」と集合「Ｃ」との間に集合「Ｇ２」を挿入する。
【００７５】
さらに、プログラムマージ部１８は、変更後（マージ後）の照合対象プログラムである照合対象プログラム１０４Ｙを表示装置２に表示させる。このとき、プログラムマージ部１８は、照合先プログラム１２−２内の集合「Ｇ２」のＹ座標と、照合元プログラム１１−２内の集合「Ｇ２」のＹ座標とが同じになるよう、照合先プログラム１２−２内で集合「Ｇ２」を表示させる。ここでは、プログラムマージ部１８は、照合先プログラム１２−２内で、集合「Ｂ」と集合「Ｃ」との間のＹ座標となるよう、すなわち集合「Ｂ」および集合「Ｃ」と同じＹ座標となるよう集合「Ｇ２」を表示させる。ここでは、集合「Ｇ２」が第３の集合であり、集合「Ｂ」および集合「Ｃ」が第４の集合である。
【００７６】
プログラムマージ部１８は、集合「Ｇ２」をマージして表示する際に、Ｘ座標に十分なスペースが無く集合「Ｇ２」を配置できない場合には、集合間のＸ座標を補正してマージ用の集合を挿入し表示させる。すなわち、集合「Ｇ２」をマージして表示する際に、照合元プログラム１１−２内で、集合「Ｇ２」のＹ座標と同じＹ座標を有した集合がある場合、照合元プログラム１１−２内で集合「Ｇ２」を配置するＸ方向のスペースが足りない場合がある。このようにＸ座標に十分なスペースが無ければ、プログラムマージ部１８は、照合元プログラム１１−２内の集合間のＸ座標を補正してマージ用の集合「Ｇ２」を挿入し表示させる。
【００７７】
例えば、照合元プログラム１１−２内の集合「Ｂ」と集合「Ｃ」との間に、集合「Ｇ２」を挿入するスペースが無い場合、プログラムマージ部１８は、集合「Ｂ」を左側にずらすことによって、集合「Ｂ」と集合「Ｃ」との間にスペースを設け、このスペースに集合「Ｇ２」を挿入する。プログラムマージ部１８は、集合「Ｃ」を右側にずらすことによって、集合「Ｂ」と集合「Ｃ」との間にスペースを設け、このスペースに集合「Ｇ２」を挿入してもよい。このように、プログラム照合装置１は、集合「Ｇ２」を照合元プログラム１１にマージする場合、集合「Ｇ２」の実行順序が集合「Ｂ」と集合「Ｃ」との間になるよう、照合元プログラム１１−２内の集合のＸ座標およびＹ座標を補正したうえで集合「Ｇ２」を照合元プログラム１１に挿入して表示させる。
【００７８】
これにより、フリーフォーマットで記述可能なＦＢＤプログラムのマージが可能となり、マージを自動で行うことによって手作業でのマージが不要となる。これにより、マージのミスを削減することができるとともにマージの作業時間を短縮することができる。また、集合ごとにマージが実行されるので、ラダープログラムのように左右の母線への接続によって行が区別することができなくても、ＦＢＤプログラムのマージが可能となる。
【００７９】
図９は、実施の形態にかかるプログラム照合装置がマージする照合対象プログラムの第３の表示例を示す図である。第３の表示例では、プログラム照合装置１が、照合対象プログラムをマージして表示する際に、照合元プログラム１１−３内の集合のＸ座標およびＹ座標を補正して表示させる。
【００８０】
変更前（マージ前）の照合対象プログラムが、図９に示す照合対象プログラム１０５Ｘであるとする。照合対象プログラム１０５Ｘには、照合元プログラム１１−３および照合先プログラム１２−３が含まれている。ここでは、照合元プログラム１１−３に対して集合「Ｇ３」が追加され、集合「Ｅ」が削除されたものが、照合先プログラム１２−３である。なお、プログラム照合装置１は、照合対象プログラム１０５Ｘを表示装置２に表示させてもよいし、表示させなくてもよい。
【００８１】
差分処理部１３は、照合対象プログラム１０５Ｘの照合元プログラム１１−３および照合先プログラム１２−３を実行順序に従って縦方向に並び替える。差分表示制御部１６は、実行順序に従って縦方向に並び替えられた照合元プログラム１１−３と、実行順序に従って縦方向に並び替えられた照合先プログラム１２−３とを、照合対象プログラム２０４として表示装置２に表示させる。このとき、差分表示制御部１６は、差分検出部１４からの差分情報に基づいて、照合元プログラム１１−３と照合先プログラム１２−３との差分となっている集合を色分けなどによって強調表示する。
【００８２】
照合元プログラム１１−３と照合先プログラム１２−３との差分は、第５の集合である集合「Ｇ３」と、集合「Ｅ」である。集合「Ｇ３」がユーザ操作によって押下され、位置選択ボタン８２がユーザ操作によって押下され、集合「Ｇ３」の照合元プログラム１１−３内での挿入位置である第２の位置がユーザ操作によって押下されると、プログラムマージ部１８は、照合先プログラム１２−３の集合「Ｇ３」を照合元プログラム１１−３にマージする。これにより、プログラムマージ部１８は、照合先プログラム１２−３内の集合「Ｇ３」を、ユーザ操作によって指定されたＸ座標およびＹ座標の位置に挿入する。ここでは、プログラムマージ部１８は、照合先プログラム１２−３内で、集合「Ｆ」の下に集合「Ｇ３」を挿入する。
【００８３】
さらに、プログラムマージ部１８は、変更後（マージ後）の照合対象プログラムである照合対象プログラム１０５Ｙを表示装置２に表示させる。このとき、プログラムマージ部１８は、照合先プログラム１２−３内の集合「Ｇ３」が集合「Ｆ」の下になるよう、照合先プログラム１２−３内で集合「Ｇ３」を表示させる。
【００８４】
これにより、ユーザが、マージの位置を任意に選択できるので、照合先プログラム１２−３内の集合を照合元プログラム１１−３内の任意の位置に挿入できる。したがって、実行順序を変更する手間を削減することができ、作業時間を短縮することができる。
【００８５】
なお、マージ方法は図７から図９で説明した方法に限られるものではない。また、照合対象プログラム２０２〜２０４を表示する画面において、編集された全ての集合を一括して照合元プログラム１１−３にマージするためのボタンを設けてもよい。
【００８６】
つぎに、プログラムマージ部１８が作成するマージ履歴について説明する。図１０は、実施の形態にかかるプログラム照合装置が作成するマージ履歴の作成方法を説明するための図である。図１０では、ＦＢＤプログラムがマージされる際に作成されたマージ履歴例のイメージを示している。
【００８７】
プログラムマージ部１８は、マージを実行する際に、マージ履歴を作成してマージ履歴記憶部１９に記憶させる。マージ履歴は、マージが実行される際に、何れの集合が変更、削除、または追加されたかの情報を有している。
【００８８】
プログラムマージ部１８は、照合元プログラム１１−４と照合先プログラム１２−４との間でマージされた集合を抽出する。ここでは、照合元プログラム１１−４に対し、集合「Ｇ」が追加され、集合「Ｄ」が変更され、集合「Ｅ」が削除されたものが照合先プログラム１２−４である場合について説明する。この場合に、プログラムマージ部１８が、集合「Ｇ」、集合「Ｄ」、および集合「Ｅ」をマージすると、プログラムマージ部１８は、照合元プログラム１１−４に対して、集合「Ｇ」を追加し、集合「Ｄ」を変更し、集合「Ｅ」を削除する。さらに、プログラムマージ部１８は、集合「Ｇ」を追加したことを示す情報と、集合「Ｄ」を変更したことを示す情報と、集合「Ｅ」を削除したことを示す情報とを含んだマージ履歴を作成する。
【００８９】
マージ履歴は、集合「Ｄ」の変更内容を含むものとする。集合「Ｄ」の変更内容には、変更後の集合「Ｄ」の内容が含まれている。なお、集合「Ｄ」の変更内容には、変更前の集合「Ｄ」の内容が含まれていてもよいし含まれていなくてもよい。
【００９０】
また、マージ履歴には、マージされた集合を表示する際の表示色が含まれている。例えば、変更された集合「Ｄ」は赤色で表示されること、削除された集合「Ｅ」は青色で表示されること、および追加された集合「Ｇ」は緑色で表示されることが、マージ履歴内に格納される。なお、マージされた集合の表示方法はこれに限定されるものではない。
【００９１】
マージの数が多くなると、マージの操作ミスの要因となる場合があるが、プログラム照合装置１は、マージ履歴を作成して記憶しているので、ユーザは、マージ履歴に基づいて、マージの前後で変更された箇所を容易に調べることが可能となる。これにより、ユーザは、マージ前からの集合の変更箇所を調べる手間を削減することができる。また、ユーザは、マージの操作ミスが無かったかを容易に調べることができる。したがって、照合の作業時間を短縮することができる。
【００９２】
ここで、プログラム照合装置１のハードウエア構成について説明する。図１１は、実施の形態にかかるプログラム照合装置を実現するハードウエア構成を示す図である。プログラム照合装置１は、プロセッサ３０１、メモリ３０２、入力装置３０３、およびインタフェース回路３０４で実現される。プロセッサ３０１は、メモリ３０２、入力装置３０３、およびインタフェース回路３０４を制御する。入力装置３０３の例は、マウス、キーボード、タッチパネルである。入力装置３０３は、ユーザからの指示を受付けてプロセッサ３０１に入力する。インタフェース回路３０４は、プロセッサ３０１によるデータ処理の結果を表示装置２へ出力する。
【００９３】
プロセッサ３０１の例は、ＣＰＵ（Central  Processing  Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、ＤＳＰともいう）またはシステムＬＳＩ（Large  Scale  Integration）である。メモリ３０２の例は、ＲＡＭ（Random  Access  Memory）またはＲＯＭ（Read  Only  Memory）である。
【００９４】
プログラム照合装置１は、プロセッサ３０１が、メモリ３０２で記憶されているプログラム照合装置１の動作を実行するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、プログラム照合装置１の手順または方法をコンピュータに実行させるものであるともいえる。メモリ３０２は、プロセッサ３０１が各種処理を実行する際の一時メモリにも使用される。
【００９５】
プロセッサ３０１が実行するプログラムは、コンピュータで実行可能な、データ処理を行うための複数の命令を含むコンピュータ読取り可能かつ非遷移的な（non-transitory）記録媒体を有するコンピュータプログラムプロダクトであってもよい。プロセッサ３０１が実行するプログラムは、複数の命令がデータ処理を行うことをコンピュータに実行させる。
【００９６】
また、プログラム照合装置１を専用のハードウエアで実現してもよい。また、プログラム照合装置１の機能について、一部を専用のハードウエアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
【００９７】
このように、実施の形態によれば、プログラム照合装置１は、照合元プログラム１１の集合を左領域５１Ａに対して縦方向に並べ、照合先プログラム１２の集合を右領域５１Ｂに対して縦方向に並べて照合するので、多くの集合を画面表示することができる。これにより、ユーザは、ＦＢＤ言語で記述されたＦＢＤプログラムの照合結果を容易に参照することが可能となる。したがって、ユーザは、ＦＢＤプログラムを短時間で照合することが可能となる。
【００９８】
また、プログラム照合装置１が差分情報に基づいて、ユーザに指定された集合のプロパティ情報の差分を抽出して表示するので、ユーザは、プロパティ情報の差分を短時間で照合することが可能となる。
【００９９】
また、プログラム照合装置１が、ユーザに指定された集合を自動でマージするので、ユーザは、手作業でのマージが不要となる。これにより、ユーザは、マージの作業時間を短縮することができる。また、プログラム照合装置１が自動でマージ履歴を作成するので、ユーザは、マージ履歴の作成作業に要する時間を短縮することができる。
【０１００】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【０１０１】
１  プログラム照合装置、２  表示装置、１０  データ保存部、１１，１１−１〜１１−４  照合元プログラム、１２，１２−１〜１２−４  照合先プログラム、１３  差分処理部、１４  差分検出部、１５  集合整列部、１６  差分表示制御部、１７  プロパティ情報表示制御部、１８  プログラムマージ部、１９  マージ履歴記憶部、２０  指示入力部、２１  プログラム入力部、４２〜４５  ＦＢＤ部品、６１Ａ，６１Ｂ，６２Ａ，６３Ａ，６３Ｂ，６４Ｂ  集合、１０１，１０２，２０１  画面、１０３Ｘ，１０３Ｙ，１０４Ｘ，１０４Ｙ，１０５Ｘ，１０５Ｙ，２０２〜２０４  照合対象プログラム。
【要約】
プログラム照合装置（１）は、第１のＦＢＤプログラムである照合元プログラム（１１）を、互いに結線されているプログラム部品の集合単位に分割し、各集合を実行順序が早い順に縦方向であるＹ軸方向に１列に並び替え、かつ第２のＦＢＤプログラムである照合先プログラム（１２）を、互いに結線されているプログラム部品の集合単位に分割し、各集合を実行順序が早い順にＹ軸方向に１列に並び替える集合整列部（１５）と、並び替えられた照合元プログラム（１１）および照合先プログラム（１２）の集合の差分を差分情報として検出する差分検出部（１４）と、表示装置の画面内で、並び替えられた、照合元プログラム（１１）および照合先プログラム（１２）の集合を表示させる差分表示制御部（１６）と、を備える。【図１】
0006584724.tif 000002
【図２】
0006584724.tif 000003
【図３】
0006584724.tif 000004
【図４】
0006584724.tif 000005
【図５】
0006584724.tif 000006
【図６】
0006584724.tif 000007
【図７】
0006584724.tif 000008
【図８】
0006584724.tif 000009
【図９】
0006584724.tif 000010
【図１０】
0006584724.tif 000011
【図１１】
0006584724.tif 000012