(57)【要約】【課題】複数の制御プログラム（制御ブロック）に影響する恐れがある修正箇所を短時間で認識することが可能なバージョン管理装置及び管理方法を得る。【解決手段】バージョン管理装置２Ａ内の流用プログラム検索部２３は、バージョン管理データベース２２内で制御プログラム関連情報１５内の流用元情報１２０に基づく検索処理を行い、検索対象プログラム情報が指示するユーザ指定の制御プログラムに関連する検索結果情報（一覧データ）を得る。バージョン管理装置２Ａ内の不具合波及プログラム一覧表示部２４は、流用プログラム検索部７で作成した一覧データに基づいて、ユーザが理解容易な制御プログラムの一覧を表示データとして画面に表示する。【選択図】図１
2011059918.tif 000002
【特許請求の範囲】
【請求項１】
所定の制御対象を制御する制御プログラムを管理するバージョン管理装置であって、
所定の制御プログラム開発装置によって開発された制御プログラムを登録制御プログラムとして制御プログラム関連情報と関連づけて登録するバージョン管理データベースを備え、
前記登録制御プログラムは流用元制御プログラムに基づき前記所定の制御プログラム開発装置によって開発された制御プログラムを含み、
前記制御プログラム関連情報は、前記登録制御プログラム用の識別情報であるバージョン情報、前記登録制御プログラムの前記流用元制御プログラム用の識別情報である流用元情報、及び前記登録制御プログラムにおける前記流用元制御プログラムからの変更内容を示す変更情報を含み、
前記バージョン管理装置は、
前記バージョン管理データベース内に登録された登録制御プログラム内の一の登録制御プログラムを指示する情報を検索対象プログラム情報とし、前記バージョン管理データベース内で前記制御プログラム関連情報に基づく検索処理を行い、前記検索対象プログラム情報の指示する制御プログラムに対し、所定の関連性要件を満足する前記登録制御プログラムを指示する検索結果情報を得るプログラム情報検索部と、
前記検索結果情報に基づき表示データを表示する検索情報表示部とをさらに備える、
バージョン管理装置。
【請求項２】
請求項１記載のバージョン管理装置であって、
前記検索結果情報は、前記バージョン管理データベースに登録された登録制御プログラムのうち、前記検索対象プログラム情報が指示する制御プログラムを起点として順次検索され、第１の関連性要件を満足する所定数の流用元制御プログラム及び該所定数の流用元制御プログラムの少なくとも一つを、直接あるいは間接の流用元制御プログラムとして有し、かつ第２の関連性要件を満足する高関連性登録制御プログラムを指示する情報を含み、
前記所定の関連性要件は前記第１及び第２の関連性要件を含み、
前記表示データは前記所定数の流用元制御プログラム及び前記高関連性登録制御プログラムそれぞれの前記バージョン情報を含む、
バージョン管理装置。
【請求項３】
少なくとも一つの制御ブロックから構成され、所定の制御対象を制御する制御プログラムを管理するバージョン管理装置であって、
所定の制御プログラム開発装置によって開発された制御プログラム内の制御ブロックを登録制御ブロックとして制御ブロック関連情報と関連づけて登録するバージョン管理データベースを備え、
前記登録制御ブロックは流用元制御ブロックに基づき前記所定の制御プログラム開発装置によって開発された制御ブロックを含み、
前記制御ブロック関連情報は、前記登録制御ブロック用の識別情報であるバージョン情報、前記登録制御ブロックの前記流用元制御ブロック用の識別情報である流用元情報、及び前記登録制御ブロックにおける前記流用元制御ブロックからの変更内容を示す変更情報を含み、
前記バージョン管理装置は、
前記バージョン管理データベース内に登録された一の登録制御ブロックを指示する情報を検索対象ブロック情報とし、前記バージョン管理データベース内で前記制御ブロック関連情報に基づく検索処理を行い、前記検索対象ブロック情報の指示する制御ブロックに対し、所定の関連性を満足する前記登録制御ブロックを指示する検索結果情報を得るブロック情報検索部と、
前記検索結果情報に基づき表示データを表示する検索情報表示部とをさらに備える、
バージョン管理装置。
【請求項４】
請求項３記載のバージョン管理装置であって、
前記検索結果情報は、前記バージョン管理データベースに登録された前記登録制御ブロックのうち、前記検索対象ブロック情報が指示する制御ブロックを起点として順次検索され、第１の関連性要件を満足する所定数の流用元制御ブロック、及び該所定数の流用元制御ブロックの少なくとも一つを、直接あるいは間接の流用元制御ブロックと有し、かつ第２の関連性要件を満足する高関連性登録制御ブロックを含み、
前記所定の関連性要件は前記第１及び第２の関連性要件を含む、
バージョン管理装置。
【請求項５】
請求項４記載のバージョン管理装置であって、
前記表示データは前記所定数の流用元制御ブロック及び前記高関連性登録制御ブロックそれぞれの前記ブロックバージョン情報を含む、
バージョン管理装置。
【請求項６】
請求項４記載のバージョン管理装置であって、
前記検索情報表示部は、
前記高関連性登録制御ブロックそれぞれの内容と前記検索対象プログラム情報が指示する制御ブロックの内容との差分データを順次取得する差分抽出部と、
前記差分抽出部で取得された差分データを前記表示データとして表示する差分データ表示部とを含む、
バージョン管理装置。
【請求項７】
バージョン管理データベースを用いて制御プログラムを管理するバージョン管理方法であって、
前記バージョン管理データベースは、所定の制御プログラム開発装置によって開発された制御プログラムを登録制御プログラムとして制御プログラム関連情報と関連づけて登録し、
前記登録制御プログラムは流用元制御プログラムに基づき前記所定の制御プログラム開発装置によって開発された制御プログラムを含み、
前記制御プログラム関連情報は、前記登録制御プログラム用の識別情報であるバージョン情報、前記登録制御プログラムの前記流用元制御プログラム用の識別情報である流用元情報、及び前記登録制御プログラムにおける前記流用元制御プログラムからの変更内容を示す変更情報を含み
(a) 前記バージョン管理データベース内に登録された登録制御プログラム内の一の登録制御プログラムを指示する情報を検索対象プログラム情報とするステップと、
(b) 前記バージョン管理データベース内で前記制御プログラム関連情報に基づく検索処理を行い、前記検索対象プログラム情報の指示する制御プログラムに対し、所定の関連性要件を満足する登録制御プログラムを指示する検索結果情報を得るステップと、
(c) 前記検索結果情報に基づき表示データを表示するステップとを備える、
バージョン管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＦＡコントローラの制御プログラムを管理用に用いられる制御プログラム用のバージョン管理装置及びバージョン管理方法に関する。
【背景技術】
【０００２】
従来の制御プログラム用のバージョン管理方法および装置では、現在の制御プログラムについてのソースプログラムの内容と版数が増加したときのソースプログラムの内容を比較して変更差分をバージョン管理データベースに保管する。特定のバージョンのアプリケーションを構成するソースコードを取得する場合は、ソースジェネレータにより、一括してソースプログラムを再現する処理を行っていた。このような処理は、例えば、特許文献１に開示されている。
【０００３】
また、ソースプログラムの修正時に、そのソースプログラムを使用している装置の一覧を得る方法として、部品単位で管理する方法がある。ソースプログラムを部品単位でサーバに格納し、部品にトレースＩＤを付加して、配布の履歴情報を記録することにより、修正が影響する装置の一覧を取得する制御プログラム用バージョン管理処理が行われていた。このような処理は、例えば、特許文献２に開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−３２７８７８号公報（段落[０００６]，[０００７]，図１）
【特許文献２】特開２００８−２２６００５号公報（段落[００１２]，図１）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
工場の製造装置に使用される制御プログラムは、既存の制御プログラムを流用して開発することが多い。新しい（製造）装置用の制御プログラムを作成する場合、既存の制御プログラムを編集対象の制御プログラムとしてコピーして、新しい装置のシステム構成に合わせてデバイス番号の付け替え等を含む編集作業を編集対象の制御プログラムに対して行う。また、制御プログラムの一つである、シーケンスプログラムで使用されるラダー言語には、回路ブロックと呼ばれるひとかたまりの単位（制御ブロック）があり、この制御ブロック単位でコピーして流用することが多い。なお、本明細書中で述べる「デバイス」とは、制御プログラム（制御ブロック）中に記述され、センサの入出力値をメモリ上に格納する対象（デバイス番号がメモリのアドレスに相当）を意味する。
【０００６】
このような制御プログラム用の従来のバージョン管理方法および装置において、あるバージョンの制御プログラムで発生した不具合の修正において、同様の修正を他の装置の制御プログラム（別バージョンの制御プログラム）にも反映しようとする場合を考える。この場合、特許文献１で開示された処理では単純に変更差分のみを管理しているため、デバイス番号の変更のような、ロジックの変更でなく流用のための変更について考慮されず、該当ロジックがそのプログラムに含まれているか否かを制御プログラムごとに目視により確認しなければならないという問題点があった。
【０００７】
さらに、これらの制御プログラムは流用の度にデバイス番号の付け替えなどの変更が行われるため、目視による確認に時間がかかるという問題点もあった。また、流用時に変更が行われるため、複数回の変更が繰り返され、ソフトウェアツールによる自動判別が困難であると問題もあった。
【０００８】
また、特許文献２で開示された処理は、制御プログラムに加えた修正を他の装置に反映させることができるが、修正を反映できる範囲は、同一制御プログラムを配布した装置に限定されており、共通するロジックをコピーして作成された場合でも最終的に異なる制御プログラムとなった場合は影響範囲を特定することはできない。
【０００９】
この発明は、上記問題点を解決するためになされたもので、複数の制御プログラム（制御ブロック）に影響する恐れがある修正箇所を短時間で認識することが可能な制御プログラム用のバージョン管理装置及び管理方法を得ることを目的とする。
【課題を解決するための手段】
【００１０】
この発明に係る請求項１記載のバージョン管理装置は、所定の制御対象を制御する制御プログラムを管理するバージョン管理装置であって、所定の制御プログラム開発装置によって開発された制御プログラムを登録制御プログラムとして制御プログラム関連情報と関連づけて登録するバージョン管理データベースを備え、前記登録制御プログラムは流用元制御プログラムに基づき前記所定の制御プログラム開発装置によって開発された制御プログラムを含み、前記制御プログラム関連情報は、前記登録制御プログラム用の識別情報であるバージョン情報、前記登録制御プログラムの前記流用元制御プログラム用の識別情報である流用元情報、及び前記登録制御プログラムにおける前記流用元制御プログラムからの変更内容を示す変更情報を含み、前記バージョン管理装置は、前記バージョン管理データベース内に登録された登録制御プログラム内の一の登録制御プログラムを指示する情報を検索対象プログラム情報とし、前記バージョン管理データベース内で前記制御プログラム関連情報に基づく検索処理を行い、前記検索対象プログラム情報の指示する制御プログラムに対し、所定の関連性要件を満足する前記登録制御プログラムを指示する検索結果情報を得るプログラム情報検索部と、前記検索結果情報に基づき表示データを表示する検索情報表示部とをさらに備える。
【発明の効果】
【００１１】
この発明における請求項１記載のバージョン管理装置において、プログラム情報検索部は、バージョン管理データベース内で制御プログラム関連情報に基づく検索処理を行い、検索対象プログラム情報の指示する制御プログラムに関連する検索結果情報を得る。
【００１２】
このため、バージョン管理装置のユーザは、表示データを検索情報表示部から参照することにより、検索対象プログラム情報の指示する制御プログラムに所定の関連性を有する検索結果情報（制御プログラム）を短時間で認識することができる効果を奏する。
【００１３】
その結果、所定の修正を行った制御プログラムに関連性のある、バージョン管理データベースに登録された他の制御プログラムを短時間で認識することができる効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】この発明の実施の形態１であるバージョン管理装置の構成を示すブロック図である。
【図２】実施の形態１のバージョン管理装置によって管理される制御プログラムにおける制御プログラム関連情報の構成を模式的に示す説明図である。
【図３】制御プログラム関連情報におけるバージョン情報の格納状態を具体的に示した説明図である。
【図４】制御プログラム関連情報における流用元情報の格納状態の具体例を示した説明図である。
【図５】制御プログラム関連情報における変更情報の格納状態の具体例を示した説明図である。
【図６】実施の形態１の制御プログラム開発装置内の変更判定部の処理内容を示すフローチャートである。
【図７】実施の形態１のバージョン管理装置における流用プログラム検索部の処理内容を示すフローチャートである。
【図８】一覧データ及び一時領域への制御プログラム登録例を模式的に示す説明図である。
【図９】この発明の実施の形態２であるバージョン管理装置の構成を示すブロック図である。
【図１０】実施の形態２のバージョン管理装置によって管理される制御プログラムにおける制御ブロック関連情報の構成を模式的に示す説明図である。
【図１１】制御ブロック関連情報におけるブロック変更情報の具体例を模式的に示す説明図である。
【図１２】この発明の実施の形態３であるバージョン管理装置の構成を示すブロック図である。
【図１３】この発明の実施の形態３のバージョン管理装置における変更差分抽出部の処理内容を示すフローチャートである。
【発明を実施するための形態】
【００１５】
＜実施の形態１＞
図１はこの発明の実施の形態１である制御プログラム用のバージョン管理装置の構成を示すブロック図である。同図に示すように、実施の形態１のバージョン管理装置２Ａは、制御プログラム開発装置１Ａ（所定の制御プログラム開発装置）と組合せてバージョン管理システムを構成している。
【００１６】
制御プログラム開発装置１Ａは、流用情報設定部１１、制御プログラムエディタ１２及び変更判定部１３から構成され、制御プログラムエディタ１２により編集中制御プログラム１４に対する編集（エディタ）を行いながら、変更判定部１３により制御プログラム関連情報１５を得る。すなわち、制御プログラム開発装置１Ａは、制御プログラムエディタ１２による制御プログラムエディタ機能に加え、流用情報設定部１１及び変更判定部１３を有している。
【００１７】
一方、実施の形態１のバージョン管理装置２Ａは、バージョン管理登録部２１、流用プログラム検索部２３（プログラム情報検索部）及び不具合波及プログラム一覧表示部２４から構成され、バージョン管理データベース２２を有している。すなわち、バージョン管理装置２Ａは、バージョン管理登録部２１によるバージョン登録機能に加え、流用プログラム検索部２３及び不具合波及プログラム一覧表示部２４を有する点を特徴としている。
【００１８】
なお、流用元制御プログラム３は流用元制御プログラム用バージョン情報４が付加されており、必要に応じて制御プログラム開発装置１Ａにおける制御プログラム開発時に流用される可能性のある既存の制御プログラムを意味する。また、流用元制御プログラム３及び流用元制御プログラム用バージョン情報４は共にバージョン管理データベース２２に登録されている。
【００１９】
図２は実施の形態１のバージョン管理装置２Ａのバージョン管理データベース２２内に管理される制御プログラムの制御プログラム関連情報の構成を模式的に示す説明図である。
【００２０】
制御プログラム実行時において制御対象となる一般的な製造設備は複数のユニットによって構成される。例えば、製造設備が加工機の場合、主機能である加工ユニットの他、加工物であるワークを搬入、搬出するロード・アンロードユニット、加工のための工具を交換するツール交換ユニット、加工状況を外部の管理サーバに送信する通信ユニットなど、複数のユニットから構成される。通常は、これらの複数のユニット毎に制御プログラムが個別に作成され、製造設備全体では、複数の制御プログラムで構成されていることが多い。
【００２１】
設計者が新規製造設備を制御対象とした少なくとも一つの制御プログラムを開発する場合、通常は、新規製造設備の構成にもっとも近い既存の製造装置を制御対象とした既存の制御プログラムを流用して開発することが多い。これは、既に動作確認がなされた既存の制御プログラムのロジックを流用することにより、開発期間、開発工数を必要最小限に抑えるためである。
【００２２】
ここで、設計者は、既存のプロジェクトデータ（１つの装置を動かすための複数の制御プログラムの固まりである制御プログラム群）から、もっとも近い制御プログラムを見つけ出し、当該制御プログラムをコピーして新規設備用の制御プログラムを開発する。
【００２３】
一般的なバージョン管理装置を用いている場合、ツリー状にプロジェクトデータが管理されているが、上述した既存の制御プログラムの流用に基づく設備開発においては、バージョンツリーの親ノード以外にツリーのあちこちに格納されたプロジェクトデータ内の制御プログラムを流用して新規に制御プログラムが作成される。
【００２４】
以下、図２を参照して、制御プログラム関連情報１５を構成するバージョン情報、流用元情報、変更情報の格納内容について説明する。
【００２５】
前述したように、流用元制御プログラム３にはバージョン情報４が付加されている。バージョン情報４は図２で示す制御プログラム関連情報１５内のバージョン情報１１０の部分に相当する。すなわち、バージョン情報１１０は、プログラムＩＤ１１１、バージョン番号１１２及び作成者ＩＤ１１３から構成される。
【００２６】
制御プログラム関連情報１５は、図２に示すように、バージョン情報１１０、流用元情報１２０及び変更情報１３０から構成される。
【００２７】
バージョン情報１１０は、前述したように、プログラムＩＤ１１１、バージョン番号１１２及び作成者ＩＤ１１３から構成され、対応する制御プログラムの識別情報となる。
【００２８】
流用元情報１２０は、流用元プログラムＩＤ１２１から構成され、対応する流用元制御プログラムの識別情報となる。
【００２９】
変更情報１３０は、変更要素数１３１、変更要素情報ＣＥ１〜ＣＥｎ（ｎ≧１）から構成され、対応する制御プログラムにおける流用元制御プログラムからの変更内容を示す。変更要素情報ＣＥ１は変更種別１３３及び変更レベル１３４から構成され、変更要素情報ＣＥ２〜ＣＥｎそれぞれについても変更要素情報ＣＥ１と同様に変更種別１３３及び変更レベル１３４から構成されるが、図２では詳細な図示を省略している。
【００３０】
まず、図１で示した制御プログラム開発装置１Ａの動作を説明する。流用情報設定部１１は、設備開発者が開発済みの既存の制御プログラムを流用する場合、バージョン管理データベース２２からバージョン情報４（制御プログラム関連情報１５）が付加された流用元制御プログラム３として読み込む。
【００３１】
すると、流用情報設定部１１は、読み込んだ流用元制御プログラム３（バージョン情報４）に基づき、バージョン情報１１０、流用元情報１２０及び変更情報１３０からなる制御プログラム関連情報１５が付加された編集中制御プログラム１４を生成して、制御プログラムエディタ１２に渡す。なお、流用情報設定部１１による設定時の制御プログラム関連情報１５内の変更情報１３０は空である。
【００３２】
制御プログラムエディタ１２は、設備開発者の操作によって編集中制御プログラム１４を編集するが、このとき、流用元制御プログラム３から変更が行われた場合、変更判定部１３によって変更情報１３０の編集処理が行われる。
【００３３】
すなわち、変更判定部１３は制御プログラムエディタ１２の編集処理において編集中プログラム１４に加えられた変更内容を制御プログラム関連情報１５内の変更情報１３０として随時追加する編集処理を行う。
【００３４】
次に、流用情報設定部１１の動作と制御プログラム関連情報１５におけるバージョン情報、流用元情報について説明する。
【００３５】
流用情報設定部１１は、流用元制御プログラム３をコピーして編集中制御プログラム１４とする。次に、流用情報設定部１１は、編集中制御プログラム１４に付加する制御プログラム関連情報１５内のバージョン情報１１０を作成する。
【００３６】
バージョン情報１１０の作成処理として、まず、バージョン情報１１０のプログラムＩＤ１１１を新規生成して設定する。ここで、プログラムＩＤ１１１は、制御プログラム開発装置１Ａおよびバージョン管理装置２Ａで一意に識別できるＩＤである。プログラムＩＤ１１１として、例えば、ＵＵＩＤ（Universally Unique Identifier）やＧＵＩＤ（Globally Unique Identifier）のように同じ識別子が生成される可能性が極めて小さい疑似乱数を用いた１２８ｂｉｔの識別子が使用できる。また、プログラムＩＤ１１１として、一意に識別できる十分なサイズを持つ整数値を使用してもよい。また、一意に識別できる十分な長さを持つ文字列を使用してもよい。
【００３７】
次に、流用情報設定部１１は、バージョン情報１１０のバージョン番号１１２を新規生成して設定する。ここで、通常、バージョン番号１１２は、整数値であり、流用元制御プログラム３のバージョン情報４のバージョン番号１１２を取得し、その数値に“１”を加えて、編集中制御プログラム１４のバージョン番号１１２に設定するなどの処理を行う。バージョン番号１１２は、整数値の他に、整数値を“．”（ドット）で区切った整数値列を用いる、整数値や整数値列にＡ，Ｂ，Ｃなどの英字の並びを付加したものを使用してもよい。また、文字列でもよい。
【００３８】
次に、流用情報設定部１１は、バージョン情報１１０の作成者ＩＤ１１３を新規生成して設定する。ここで、作成者ＩＤ１１３は、制御プログラム開発装置を使用して制御プログラムを編集しているユーザ（以下、単に「ユーザ」と称する場合あり）を識別するＩＤであり、前述したプログラムＩＤ１１１と同様に、ＵＵＤＩや、ＧＵＩＤや、整数値や、文字列を用いてもよい。
【００３９】
図３はバージョン情報１１０の格納状態を具体的に示した説明図である。同図に示すように、プログラムＩＤ１１１として、ＧＵＩＤの１２８ｂｉｔ値の１６進数表記で“２Ｆ５８８８２７Ｃ６８３”の値を設定している。また、バージョン番号１１２の例として、整数値をドットで区切った文字列“１．１”を設定している。また、作成者ＩＤ１１３として、ＧＵＩＤの１２８ｂｉｔ値の１６進数表記で“３８Ｆ１４ＦＡ６７９ＦＥ”の値が入っている。なお、上記したプログラムＩＤ１１１及び作成者ＩＤ１１３の例は、同一の実行環境では上位８０ｂｉｔは同一の値となるため、下位４８ｂｉｔのみ具体例を示している。以降で述べる具体例も同様である。
【００４０】
このように、編集中制御プログラム１４に付加する制御プログラム関連情報１５内にバージョン情報１１０を設けることにより、制御プログラム開発装置１Ａ及びバージョン管理装置２Ａの使用時において、常に制御プログラムを一意に識別でき、かつ、バージョン情報１１０から、バージョン番号１１２、作成者ＩＤ１１３を特定することができる。
【００４１】
また、バージョン情報１１０には、上述したプログラムＩＤ１１１、バージョン番号１１２及び作成者ＩＤ１１３の情報以外に、コメント、日付、会社名、開発プロジェクト名などの情報を付加することも可能である。これらの情報もプログラム特定時のキーワードとして使用できる。
【００４２】
図４は流用元情報１２０の格納状態の具体例を示した説明図である。流用元情報１２０における流用元プログラムＩＤ１２１として、ＧＵＩＤの１２８ｂｉｔ値の１６進数表記で“Ｆ２２６Ｂ８１Ｂ６Ｆ１２”の値を設定している。この値は流用元制御プログラム３のバージョン情報４に格納されたプログラムＩＤの値をそのまま設定する。また、流用元情報１２０として、流用元プログラムＩＤ１２１以外の情報として、流用時の日付、流用時のコメントなどを付加してもよい。
【００４３】
次に、制御プログラムエディタ１２及び変更判定部１３の動作と編集中制御プログラム１４に付加される制御プログラム関連情報１５内の変更情報１３０について説明する。
【００４４】
ユーザは制御プログラムエディタ１２を用いて編集中制御プログラム１４を編集する。ここで、編集操作としては、命令の追加、命令の削除、デバイス名の変更、デバイス番号の変更、定数値の変更、などがある。制御プログラムエディタ１２は適宜、編集情報を変更判定部１３に付与しながら編集中制御プログラム１４に対する編集操作を行う。
【００４５】
変更判定部１３は、制御プログラムエディタ１２による編集操作内容に応じて編集中制御プログラム１４の制御プログラム関連情報１５における変更情報１３０の内容を編集する。ここで、変更情報１３０として設定する情報は、前述した「命令の追加」、「命令の削除」、「デバイス名の変更」、「デバイス番号の変更」、「定数値の変更」などである。ここで、変更判定部１３は、同一の変更（変更種別１３３及び変更レベル１３４が同一内容の変更）が加えられた場合に、項目（変更要素情報ＣＥ）を追加する必要はない。
【００４６】
図２を用いて説明したように、制御プログラム関連情報１５内の変更情報１３０は、変更要素数１３１及び変更があった場合は少なくとも一つの変更要素情報ＣＥ（ＣＥ１，・・・ＣＥｎ）からなる。また、変更要素情報ＣＥは変更種別１３３及び変更レベル１３４からなる。
【００４７】
ここで、変更種別１３３は、例えば制御プログラムがラダープログラムで作成される場合、デバイス番号の変更、接点の追加または削除、出力コイルなどの命令の追加または削除などが該当する。ここで、制御プログラムのロジック変更を伴う、命令の追加または命令の削除に関する変更については、変更内容として追加または削除された回数を保存してもよい。またこれ以外に、日付、変更に関するコメントなどを保存してもよい。また、変更要素情報ＣＥは、変更の種類に応じて複数個保存することができる。
【００４８】
図５は変更情報１３０の格納状態の具体例を示した説明図である。同図に示すように、変更要素数１３１には整数“２”が格納され、変更要素数は全部で２個であることが示される。
【００４９】
変更要素情報ＣＥ１の変更種別１３３は、制御プログラム流用時の装置の構成変更に伴うデバイス番号変更であることを示している。変更レベル１３４は、番号変更だけでロジックの変更が無いことを示している。
【００５０】
また、変更要素情報ＣＥ２は、変更種別１３３が「命令（の）追加」であり、制御プログラムの流用時に装置の構成が変わっているため、変更レベル１３４が「ＬＤ命令追加」とされている。「ＬＤ命令追加」は、例えばセンサ追加などにより、ＬＤ命令の追加がなされたことを示している。したがって、変更要素情報ＣＥ２の変更レベル１３４は、命令が追加され、ロジックが変更されたことを示す。
【００５１】
図６は実施の形態１の制御プログラム開発装置１Ａ内の変更判定部１３の処理内容を示すフローチャートである。変更判定部１３は、編集中制御プログラム１４において内容変更が行われた際に制御プログラムエディタ１２から呼び出され、以下で示す処理を実行する。
【００５２】
まず、ステップＳ１１において、制御プログラムエディタ１２の変更内容を判定して、エディタ操作に伴う編集中制御プログラム１４の変更内容を取得する。
【００５３】
次に、ステップＳ１２において、変更種別がデバイス番号の変更であった場合（YES)は）はステップＳ１３に移行し、デバイス番号の変更で無かった場合（NO)はステップＳ１４に移行する。
【００５４】
ステップＳ１３において、制御プログラム関連情報１５の変更情報１３０として「デバイス番号変更」を指示する変更要素情報ＣＥを追加して終了する。この際、既に「デバイス番号変更」を指示する変更要素情報ＣＥが存在する場合は、新たに追加する必要はない。すなわち、「デバイス番号変更」については１回のみ変更要素情報ＣＥとして追加する。
【００５５】
一方、ステップＳ１２において、デバイス番号の変更で無かった場合(NO)に実行されるステップＳ１４において、編集中制御プログラム１４における「命令の追加」の有無を判定し、命令の追加があった場合（YES）は、ステップＳ１５に移行し、命令の追加が無かった場合(NO)は、ステップＳ１６に移行する。
【００５６】
ステップＳ１５において、変更情報１３０として「命令の追加」を指示する変更要素情報ＣＥを追加して終了する。この際、同一内容の変更種別１３３及び変更レベル１３４を指示する変更要素情報ＣＥが既に存在する場合、当該変更要素情報ＣＥの変更種別１３３として、「命令の追加」に付随する変更回数を“１”増加させて終了する。なお、同時に同一内容の「命令の追加」が複数回行われた場合、上記変更回数をその個数だけ増加させてもよい。
【００５７】
一方、ステップＳ１４において、命令の追加が無かった場合(NO)に実行されるステップＳ１４において、編集中制御プログラム１４における命令の削除の有無を判定し、命令の削除があった場合(YES)は、ステップＳ１７に移行し、命令の削除が無かった場合(NO)は処理を終了する。
【００５８】
ステップＳ１７において、変更情報１３０として「命令の削除」を指示する変更要素情報ＣＥを追加して処理を終了する。既に、同一内容の変更種別１３３及び変更レベル１３４を指示する変更要素情報ＣＥが既に存在する場合、変更要素情報ＣＥの変更種別１３３として、「命令の削除」に付随する変更回数を“１”増加させて終了する。同時に同一内容の「命令の削除」が複数回行われた場合、変更回数をその個数だけ増加させてもよい。
【００５９】
このように、制御プログラムエディタ１２に連動して動作する変更判定部１３によって、編集中制御プログラム１４に行われた編集操作の記録である変更内容を少ないデータ量からなる制御プログラム関連情報１５として保存することができる。この変更判定部１３は、プログラムエディタ１２とは独立に編集中制御プログラム１４の内容を随時監視して変更を検知する方法として実装することも可能である。
【００６０】
このように、制御プログラムエディタ１２に連動して動作する変更判定部１３の処理によって、バージョン管理装置２Ａでプログラム修正の影響範囲を特定するときに必要とされる、制御プログラム関連情報１５における変更情報１３０が、ユーザの特別な入力手段によらず、ユーザが制御プログラムエディタ１２を用いて編集中制御プログラム１４に対する通常の編集操作中に自動的に設定される。
【００６１】
次に、実施の形態１のバージョン管理装置２Ａの動作を説明する。バージョン管理装置２Ａは、前述したように、バージョン管理登録部２１、バージョン管理データベース２２、流用プログラム検索部２３、及び不具合波及プログラム一覧表示部２４から構成される。
【００６２】
ユーザが制御プログラム開発装置１Ａによる編集中制御プログラム１４に対する編集を終了して新規に開発した制御プログラムを完成すると、バージョン管理登録部２１により、完成した編集中制御プログラム１４がバージョン管理装置２Ａ内のバージョン管理データベース２２内の登録制御プログラムとして制御プログラム関連情報１５と共に格納される。
【００６３】
すなわち、バージョン管理装置２Ａ内のバージョン管理登録部２１は、バージョン情報１１０、流用元情報１２０及び変更情報１３０からなる制御プログラム関連情報１５が付加された完成後の編集中制御プログラム１４を、登録制御プログラムとしてバージョン管理データベース２２に保存する。
【００６４】
このとき、登録制御プログラムとして保存される編集中制御プログラム１４のコードについては先行技例に見られるように変更差分のみを保存してもよい。通常、バージョン管理データベースは、ＣＶＳ（Concurrent Versions System）やＲＣＳ（Revision Control System）にあるような木構造で編集中制御プログラム１４を登録制御プログラムとして保存する。これらの登録制御プログラムは、チェックイン動作（バージョン管理装置２Ａへの登録処理）、チェックアウト動作（バージョン管理装置２Ａからの読み足処理）で変更、取り出しが可能である。また、前記のような木構造でなくても制御プログラムの各バージョンの保管が可能であれば問題ない。
【００６５】
図７は実施の形態１のバージョン管理装置２Ａにおける流用プログラム検索部２３の処理内容を示すフローチャートである。以下、同図を参照して、流用プログラム検索部２３の処理手順を説明する。
【００６６】
なお、バージョン管理データベース２２には、制御プログラム開発装置１Ａを用いて開発された登録制御プログラムの内容及びこれに付加される制御プログラム関連情報１５が複数組予め格納されている。
【００６７】
まず、ステップＳ２１において、ユーザが検索を所望する制御プログラムのＩＤを指示する検索対象プログラム情報を取得する。なお、検索対象プログラム情報はユーザが所定の入力手段等を用いて指定することができる。そして、検索結果情報を格納する一覧データをクリアし、まず、ユーザ指定の制御プログラムのＩＤを一覧データに登録する。
【００６８】
次に、ステップＳ２２において、バージョン管理データベース２２内の複数の登録制御プログラムのうち、検索対象となる登録制御プログラムにおける流用元制御プログラムＩＤを取得する。ステップＳ２１直後においては、検索対象プログラム情報の指示する制御プログラムが現検索対象の制御プログラムとなる。この際、現検索対象となる制御プログラムが一から新規に開発されたプログラムである場合、流用元制御プログラムＩＤが存在しないことになる。
【００６９】
そして、ステップＳ２３において、現検索対象の制御プログラムの流用元プログラムＩＤの存在の有無を判定し、流用元プログラムＩＤが存在しない場合、ステップＳ３１に移行し、流用元プログラムＩＤが存在する場合に次段のステップＳ２４に移行する。すなわち、ステップＳ２３において、現検索対象の制御プログラムが他の制御プログラムの流用によって作成された制御プログラムでない場合は、流用元情報１２０内の流用元プログラムＩＤ１２１内に流用元制御プログラムＩＤが存在しないため、ステップＳ３１に移行することになる。
【００７０】
ステップＳ２３で流用元制御プログラムＩＤが有るとされた場合に実行されるステップＳ２４において、流用元制御プログラムの制御プログラム関連情報１５を参照して、検索対象プログラム情報が指示するユーザ指定の制御プログラムからの「命令の追加」の変更回数が「第１の設定数」以上であるか否かを判定し、「第１の設定数」以上の場合はステップＳ３１に移行し、「第１の設定数」未満の場合は次段のステップＳ２５に移行する。
【００７１】
ステップＳ２４で「命令の追加」の変更回数が「第１の設定数」未満であるされた場合に実行されるステップＳ２５において、現検索対象の制御プログラムの制御プログラム関連情報１５等を参照して、「命令の削除」の変更回数が「第２の設定数」以上であるか否かを判定し、「第２の設定数」以上の場合はステップＳ３１に移行し、「第２の設定数」未満の場合は次段のステップＳ２６に移行する。
【００７２】
なお、第１及び第２の設定数はユーザが指定することができ、同一の値でも異なる値でも良い。ここで「命令の追加」の変更回数とは、上述したように、変更種別１３３が命令の追加となる全ての変更要素情報ＣＥにおける追加回数の合計を意味し、「命令の削除」の変更回数とは、変更種別１３３が命令の削除となる全ての変更要素情報ＣＥにおける削除回数の合計を意味する。
【００７３】
また、ユーザ指定の制御プログラムから第１の流用元制御プログラム、第２の流用元制御プログラムと検索されている場合、ユーザ指定の制御プログラムから第２の流用元制御プログラムとの間における「命令の追加」の変更回数が第１の設定数との比較対象となる。この場合、「命令の追加」の変更回数は、第１及び第２の流用元制御プログラムの制御プログラム関連情報１５それぞれを参照して、計算されることになる。
【００７４】
同様にして、ユーザ指定の制御プログラムから第２の流用元制御プログラムとの間における「命令の削除」の変更回数が第２の設定数との比較対象となる。
【００７５】
ステップＳ２５で「命令の削除」の変更回数が「第２の設定数」未満であるされた場合に実行されるステップＳ２６において、一覧データに検索対象の登録制御プログラムを登録する。
【００７６】
すなわち、ユーザ指定の登録制御プログラムに対し直接あるいは間接の流用元制御プログラムＩＤが存在し、かつ「命令の追加」の変更回数がユーザが設定した第１の設定数に達せず、かつ「命令の削除」の変更回数がユーザが設定した第２の設定数に達しないという関連性要件（第１の関連性要件）を満足する場合、ステップＳ２６において一覧データに検索対象の制御プログラムＩＤを追加する。そして、流用元制御プログラムＩＤが新たに現検索対象の登録制御プログラムのＩＤとされ、ステップＳ２２に戻る。
【００７７】
以降、ステップＳ２３で流用元制御プログラムＩＤが無い、ステップＳ２４で「命令の追加」の変更回数が第１の設定数以上、あるいはステップＳ２５で「命令の削除」の変更回数が第２の設定数以上となるまで、ステップＳ２２〜Ｓ２６が繰り返される。
【００７８】
その結果、ステップＳ３１の実行時には、ユーザ指定の登録制御プログラムに関し、直接あるいは間接の流用元制御プログラムであり、かつ上記第１の関連性の要件を満足する制御プログラム、すなわち、ユーザ指定の登録制御プログラムに関し同一のロジックを持つと判断される一連の制御プログラムＩＤが一覧データに登録される。
【００７９】
図８は一覧データ及び一時領域への制御プログラム登録例を模式的に示す説明図である。同図において、矢印は「流用」関係を示し、矢印の先端部分に位置する制御プログラムが根元部分に位置する制御プログラムに対する流用元制御プログラムとなる。
【００８０】
検索対象プログラム情報が指示するユーザ指定の登録制御プログラムが制御プログラムＣＡであり、制御プログラムＣＢ，ＣＣ，ＣＤの順で流用元制御プログラムＩＤが順次検索され、それぞれが「命令の追加」の変更回数、「命令の削除」の変更回数に関する上記第１の関連性要件を満足した場合、図８に示すように、一覧データ５１内に制御プログラムＣＡ〜ＣＤが登録される。
【００８１】
次に、ステップＳ３１以降の処理により、バージョン管理データベース２２内において一覧データ５１に登録された上記一連の制御プログラム群から派生する、複数の同一ロジックを持つ制御プログラムを検索する。
【００８２】
すなわち、バージョン管理装置２Ａのバージョン管理データベース２２に登録されている全ての登録制御プログラムそれぞれを対象に以下のステップＳ３２〜Ｓ３８の処理を行う。
【００８３】
まず、ステップＳ３１において、バージョン管理データベース２２内の全ての登録制御プログラムのうち、検索対象起点となる一の制御プログラムを設定し、まず、検索対象起点となる制御プログラムのＩＤを一時領域に格納する。
【００８４】
次に、ステップＳ３２において、バージョン管理データベース２２内の複数の登録制御プログラムのうち、検索対象となる登録制御プログラムにおける流用元制御プログラムＩＤを取得する。ステップＳ３１直後においては、検索対象起点となる制御プログラムが現検索対象の制御プログラムとなる。
【００８５】
そして、ステップＳ３３において、現検索対象の制御プログラムにおける流用元制御プログラムＩＤの有無を判定し、流用元制御プログラムＩＤが存在しない場合、ステップＳ３７に移行し、流用元制御プログラムＩＤが存在する場合に次段のステップＳ３４に移行する。
【００８６】
ステップＳ３３で流用元制御プログラムＩＤが有るとされた場合に実行されるステップＳ３４において、流用元制御プログラムの制御プログラム関連情報１５に基づき、「命令の追加」の変更回数が「第３の設定数」以上であるか否かを判定し、「第３の設定数」以上の場合はステップＳ３７に移行し、「第３の設定数」未満の場合は次段のステップＳ３５に移行する。
【００８７】
ステップＳ３４で「命令の追加」の変更回数が「第３の設定数」未満であるされた場合に実行されるステップＳ３５において、流用元制御プログラムの制御プログラム関連情報１５に基づき、「命令の削除」の変更回数が「第４の設定数」以上であるか否かを判定し、「第４の設定数」以上の場合はステップＳ３７に移行し、「第４の設定数」未満の場合は次段のステップＳ３６に移行する。なお、ステップＳ３３〜Ｓ３５の処理は、第１〜第４の設定数を除き、先に述べたステップＳ２２〜Ｓ２５と実質的に同内容の処理となる。
【００８８】
ステップＳ３５で「命令の削除」の変更回数が「第４の設定数」未満であるされた場合に実行されるステップＳ３６において、一時領域に流用元制御プログラムＩＤを追加する。
【００８９】
すなわち、現検索対象の登録制御プログラムにおいて流用元制御プログラムＩＤが存在し、かつ、命令の追加の変更回数がユーザが設定した第３の設定数に達せず、かつ命令の削除の変更回数がユーザが設定した第４の設定数に達しないという関連性要件（第２の関連性要件）を満足する場合、ステップＳ３６において一時領域に当該流用元制御プログラムのＩＤを追加する。そして、この流用元制御プログラムＩＤが新たに現検索対象の制御プログラムＩＤとされ、ステップＳ３２に戻る。
【００９０】
以降、ステップＳ３３で流用元制御プログラムＩＤが無い、ステップＳ３４で「命令の追加」の変更回数が第３の設定数以上、あるいはステップＳ３５で「命令の削除」の変更回数が第４の設定数以上となるまで、ステップＳ３２〜Ｓ３６が繰り返される。
【００９１】
その結果、ステップＳ３７の実行時には、ステップＳ３１で設定されたバージョン管理データベース２２内の検索対象起点となる制御プログラムに関し、直接あるいは間接の流用元制御プログラムであり、かつ上記第２の関連性の要件を満足する制御プログラムＩＤが一時領域に登録される。
【００９２】
すなわち、ステップＳ３１で設定された検索対象起点となる制御プログラムに関し、同一のロジックを持つと判断される一連の制御プログラムＩＤが一時領域に登録される。
【００９３】
その後、ステップＳ３７において、一時領域に保存した全ての制御プログラムＩＤと一覧データに登録された全ての制御プログラムＩＤとを比較し、同一のプログラムＩＤが少なくとも一つ存在すれば（一致有り）、一時領域と一覧データに登録された制御プログラムは関連性が高いと判断し、ステップＳ３８に移行する。一方、ステップＳ３７において、一時領域と一覧データとの間で一致するプログラムＩＤが一つも存在しない場合（一致無し）は一覧データに登録された制御プログラムと一時領域に登録された制御プログラムとは関連性が低い判断し、検索対象起点の登録制御プログラムに関する処理は終了し、ステップＳ３１に移行する。
【００９４】
ステップＳ３７で一時領域と一覧データとの間で一致する制御プログラムＩＤが少なくとも一つ存在するとされた場合に実行されるステップＳ３８において、一時領域に存在する制御プログラムＩＤをすべて一覧データに追加登録する。このとき、重複したプログラムＩＤは１つのみ登録される。その後、ステップＳ３１に移行する。
【００９５】
例えば、図８に示すように、ステップＳ３１で決定した検索対象起点の流用元制御プログラムＣＢ１であり、ＣＢ２，ＣＢ３，ＣＢの順で流用元制御プログラムＩＤが順次検索され、それぞれが「命令の追加」の変更回数、「命令の削除」の変更回数に関する第２の関連性の要件を満足し、一時領域５２に格納されていた場合を考える。この場合、一覧データ５１，一時領域５２間において、制御プログラムＣＢが共通するため、一時領域５２内の制御プログラムＣＢ１〜ＣＢ３も新たに一覧データ５１に登録される。
【００９６】
ステップＳ３１において、バージョン管理データベース２２内に新たに検索対象起点の登録制御プログラムが存在する場合は、新たな検索対象起点の登録制御プログラムについて、ステップＳ３２〜Ｓ３８の処理を実行し、バージョン管理データベース２２内に新たな検索対象起点の登録制御プログラムが無くなるまで、検索対象起点の登録制御プログラムを代えながらステップＳ３２〜Ｓ３８を繰り返す。そして、ステップＳ３１において、バージョン管理データベース２２内に新たな検索対象起点の登録制御プログラムが無くなると、処理を終了する。
【００９７】
このようにして、バージョン管理データベース２２に格納される全ての登録制御プログラムにおいて、ユーザ指定の登録制御プログラムに対し、同一のロジックを持つと判断される一連の制御プログラムが一覧データに登録される。
【００９８】
次に、不具合波及プログラム一覧表示部２４（検索情報表示部）の動作を説明する。不具合波及プログラム一覧表示部２４は、流用プログラム検索部７で作成した一覧データに基づいて、ユーザが理解容易な制御プログラムの一覧を表示データとして画面に表示する。表示データとして少なくとも制御プログラムが識別可能なバージョン情報１１０の情報が必要となる。このとき、一覧データに登録された制御プログラムについて、プログラムの名称、バージョン番号の他に、作成者名、プログラムコメント、流用時コメント、変更内容などを表示データとして同時に表示してもよい。
【００９９】
このような構成の実施の形態１の制御プログラム用バージョン管理装置によれば、制御プログラム開発装置１Ａにおいて流用元制御プログラムの一部を修正して新たに制御プログラムを開発した時、同様な修正を必要とする同様なロジックを有する制御プログラムを検索する必要性が生じた場合、以下の処理が行える。すなわち、ユーザはバージョン管理装置２Ａを用いてユーザ指定の登録制御プログラムに基づき高速に検索して修正すべきプログラムの候補一覧を表示データとして不具合波及プログラム一覧表示部２４により表示させることができる。
【０１００】
したがって、ユーザはバージョン管理装置２Ａを活用することにより、修正を短時間でミス無く全てのプログラムに反映させることができる利点がある。
【０１０１】
このように、実施の形態１の制御プログラム用バージョン管理装置は、プログラム情報検索部である流用プログラム検索部２３は、バージョン管理データベース２２内で制御プログラム関連情報１５内の流用元情報１２０に基づく検索処理を行い、検索対象プログラム情報が指示するユーザ指定の制御プログラムに対し所定の関連性要件を満足する登録制御プログラムを指示する検索結果情報（一覧データ）を得ている。
【０１０２】
検索結果情報は、バージョン管理データベース２２に登録された登録制御プログラムのうち、検索対象プログラム情報が指示する制御プログラムを起点として順次検索され、上記第１の関連性要件を満足する所定数の流用元制御プログラム（図８の制御プログラムＣＢ〜ＣＤに相当）及び該所定数の流用元制御プログラムの少なくとも一つ（図８の制御プログラムＣＢに相当）を、直接あるいは間接の流用元制御プログラムとして有し、かつ上記第２の関連性要件を満足する高関連性登録制御プログラム（図８の制御プログラムＣＢ１〜ＣＢ３に相当）を指示する情報を含んでいる。なお、所定の関連性要件は、実施の形態１における図８の例の場合、制御プログラムＣＢ〜ＣＤについてステップＳ２４，Ｓ２５に関する上記第１の関連性要件、制御プログラムＣＢ２，ＣＢ３，ＣＢについては上記ステップＳ３４，Ｓ３５に関する上記第２の関連性要件が相当する。
【０１０３】
このため、実施の形態１の制御プログラム用バージョン管理装置のユーザは、表示データを不具合波及プログラム一覧表示部２４から参照することにより、検索対象プログラム情報が指示する制御プログラムに所定の関連性要件を満足する制御プログラムを短時間で認識することができる効果を奏する。
【０１０４】
その結果、所定の修正を行った制御プログラムに関連性があり、プログラム上の不具合波及の可能性が高い、バージョン管理データベース２２に登録された他の制御プログラムを短時間で認識することができる効果を奏する。
【０１０５】
したがって、複数バージョンの制御プログラムの中から同一のロジックを含む関連性の高い他の制御プログラムを高速に特定でき、複数の装置に跨る不具合修正を複数の制御プログラムを修正することより容易に行うことができる。
【０１０６】
＜実施の形態２＞
図９はこの発明の実施の形態２である制御プログラム用のバージョン管理装置の構成を示すブロック図である。同図に示すように、実施の形態２のバージョン管理装置２Ｂは制御プログラム開発装置１Ｂと共にバージョン管理システムを構成する。
【０１０７】
制御プログラム開発装置１Ｂは、流用情報設定部３１、制御プログラムエディタ１２及び変更判定部３３から構成され、制御プログラムエディタ１２により編集中制御ブロック１６を含む編集中制御プログラム１４に対する編集を行いながら、流用情報設定部３１及び変更判定部３３により制御プログラム関連情報１５及び制御ブロック関連情報１７を得る。
【０１０８】
制御プログラム開発装置１Ｂは、制御プログラムエディタ１２による制御プログラムエディタ機能に加え、流用情報設定部３１及び変更判定部３３を有している。変更判定部３３は、制御プログラム全体の変更だけでなく、制御プログラムを構成する制御ブロックの変更をも判定する。
【０１０９】
一方、バージョン管理装置２Ｂは、バージョン管理登録部４１、流用ブロック検索部４３及び不具合波及ブロック一覧表示部４４（検索情報表示部）から構成され、バージョン管理データベース４２を有している。
【０１１０】
すなわち、バージョン管理装置２Ｂは、バージョン管理登録部４１によるバージョン登録機能に加え、流用ブロック検索部４３及び不具合波及ブロック一覧表示部４４を有する点を特徴としている。流用ブロック検索部４３は流用プログラム検索部２３のように制御プログラムの流用元を遡る検索だけでなく、制御プログラムを構成する制御ブロックの流用元を遡る検索も行う。また、不具合波及ブロック一覧表示部４４は、制御プログラムによる表示データの一覧表示だけでなく、制御ブロックによる表示データの表示も行う。
【０１１１】
なお、流用元制御プログラム３は流用元制御プログラム用バージョン情報４が付加されており、さらに、流用元制御プログラム３内の流用元制御ブロック５は流用元制御ブロック用バージョン情報６が付加されている。流用元制御プログラム３及び流用元制御ブロック５は、必要に応じて制御プログラム開発装置１Ｂに流用される可能性のある制御プログラム及び制御ブロックを意味する。流用元制御プログラム３及び流用元制御ブロック５は流用元制御ブロック５及び流用元制御ブロック用バージョン情報６と共にバージョン管理データベース４２内に格納されている。
【０１１２】
また、図１０は実施の形態２のバージョン管理装置２Ｂによって管理される制御ブロック関連情報１７の構成を模式的に示す説明図である。
【０１１３】
制御ブロック関連情報１７は、制御プログラム関連情報１５が制御プログラムを対象としているのに対し、制御プログラムに含まれる制御ブロックを対象としている。
【０１１４】
以下、図１０を参照して、制御ブロック関連情報１７に関するブロックバージョン情報、ブロック流用元情報、ブロック変更情報の格納内容について説明する。
【０１１５】
前述したように、流用元制御ブロック５には流用元制御ブロック用バージョン情報６が付加されている。流用元制御ブロック用バージョン情報６は図１０の制御ブロック関連情報１７におけるブロックバージョン情報２１０部分に相当する。すなわち、ブロックバージョン情報２１０として、親プログラムＩＤ２１１、ブロックＩＤ２１２、ブロックバージョン番号２１３、及びブロック作成者ＩＤ２１４を有している。
【０１１６】
編集中制御ブロック１６に対応付けて設けられる制御ブロック関連情報１７は、図１０に示すように、ブロックバージョン情報２１０、ブロック流用元情報２２０及びブロック変更情報２３０から構成される。
【０１１７】
ブロックバージョン情報２１０は、親プログラムＩＤ２１１、ブロックＩＤ２１２、ブロックバージョン番号２１３及びブロック作成者ＩＤ２１４から構成され、対応の制御ブロックの識別情報となる。親プログラムＩＤ２１１は当該制御ブロックを含む親制御プログラムのプログラムＩＤを示している。ブロックＩＤ２１２は当該制御ブロック自体のＩＤ、ブロックバージョン番号２１３は制御ブロック自体のバージョン、ブロック作成者ＩＤ２１４は制御ブロックの作成者を特定する情報を示している。
【０１１８】
ブロック流用元情報２２０は、流用元制御プログラムＩＤ２２１及び流用元ブロックＩＤ２２２から構成され、対応する流用元制御ブロックの識別情報となる。流用元制御プログラムＩＤ２２１は流用元となる制御ブロックを含む制御プログラムのＩＤを示し、流用元ブロックＩＤ２２２は流用元なる制御ブロックのＩＤを示している。
【０１１９】
ブロック変更情報２３０は、ブロック変更要素数２３１、変更要素情報ＢＣＥ１〜ＢＣＥｎ（ｎ≧２）から構成される。変更要素情報ＢＣＥ１は変更種別１３３及び変更レベル１３４から構成される。変更要素情報ＢＣＥ２〜ＢＣＥｎそれぞれについても変更要素情報ＢＣＥ１と同様に構成されるが、図１０では詳細を省略している。ブロック変更要素数２３１は流用元制御ブロックからの変更要素数を示し、ブロック変更種別２３３は流用元制御ブロックからの変更種別を示し、ブロック変更レベル２３４はそのレベルを示している。
【０１２０】
したがって、対象が制御プログラムから制御ブロックに変更された点を除き、ブロックＩＤ２１２、ブロックバージョン番号２１３、及びブロック作成者ＩＤ２１４は、制御プログラム関連情報１５のプログラムＩＤ１１１、バージョン番号１１２及び作成者ＩＤ１１３と同趣旨の情報となる。
【０１２１】
同様にして、流用元ブロックＩＤ２２２は流用元制御プログラムＩＤ１２１と同趣旨の同情報となり、ブロック変更要素数２３１、ブロック変更種別２３３及びブロック変更レベル２３４は、変更要素数１３１、変更種別１３３及び変更レベル１３４と同趣旨の情報となる。
【０１２２】
図１１はブロック変更情報２３０の具体例を模式的に示す説明図である。同図に示すように、ブロック変更要素数２３１には整数“１”が格納され、変更要素数は全部で１個であることが示される。
【０１２３】
変更要素情報ＢＣＥ１のブロック変更種別２３３は、制御ブロックプログラム流用時から命令の追加があったことを示している。ブロック変更レベル２３４は「ＬＤ命令の追加」であることを示している。
【０１２４】
このような構成において、制御プログラム開発装置１Ｂの流用情報設定部３１は、実施の形態１の流用情報設定部１１の処理に加え、流用元制御ブロック用バージョン情報６が付加された流用元制御ブロック５を読み込み、制御プログラムエディタ１２に、制御ブロック及び流用元バージョン情報６の制御ブロックＩＤを渡す。
【０１２５】
制御プログラムエディタ１２は、渡された流用元制御ブロック５を編集中制御ブロック１６として作業エリアに保存する。
【０１２６】
一方、流用情報設定部３１は編集中制御ブロック１６の制御ブロック関連情報１７を作成する。なお、流用情報設定部２１による設定時の制御ブロック関連情報１７内の変更情報１３０は空である。
【０１２７】
変更判定部３３は、実施の形態１と同様に、制御プログラムエディタ１２から呼び出され、実施の形態１の変更判定部１３による制御プログラム単位の変更箇所及び内容判定に加え、さらに、制御ブロック単位で変更箇所及び内容の判定を行う。すなわち、変更判定部３３は制御プログラム関連情報１５の編集処理に加え、制御ブロック関連情報１７の編集処理を行う。
【０１２８】
すなわち、実施の形態２の制御プログラム開発装置１Ｂにおける変更判定部３３の処理内容は、図６で示す実施の形態１の変更判定部１３の処理に加え、ステップＳ１１〜Ｓ１７の処理を制御ブロック単位の動作として併せて行う。
【０１２９】
なお、編集中制御プログラム１４において、新たに制御ブロックが作成された場合、変更判定部３３は流用元制御ブロックがない制御ブロックとして、当該新しい制御ブロックに対して制御ブロック関連情報１７を新たに生成する。
【０１３０】
実施の形態２のバージョン管理装置２Ｂは、前述したように、バージョン管理登録部４１と、バージョン管理データベース４２と、流用ブロック検索部４３と、不具合波及ブロック一覧表示部４４からなる。
【０１３１】
ユーザが制御プログラム開発装置１Ｂによる編集中制御プログラム１４内の編集中制御ブロック１６に対する編集が終了すると、内部に編集中制御ブロック１６を有する編集中制御プログラム１４がバージョン管理装置２Ｂ内のバージョン管理データベース４２内の登録制御プログラムとして格納される。この際、編集中制御プログラム１４及び編集中制御ブロック１６に関連して制御プログラム関連情報１５及び制御ブロック関連情報１７も併せてバージョン管理データベース４２内に格納される。
【０１３２】
すなわち、バージョン管理装置２Ａ内のバージョン管理登録部４１は、制御プログラム関連情報１５及び制御ブロック関連情報１７が付加された編集中制御プログラム１４及び編集中制御ブロック１６を登録制御プログラム及び登録制御ブロックとしてバージョン管理データベース４２に保存する。そして、制御プログラム関連情報１５は登録制御プログラムに対応して、バージョン情報１１０、流用元情報１２０及び変更情報１３０を有し、制御ブロック関連情報１７は登録制御ブロックに対応してブロックバージョン情報２１０、ブロック流用元情報２２０及びブロック変更情報２３０を有している。
【０１３３】
流用ブロック検索部４３は、検索対象が制御プログラムから制御ブロックに変更されている点を除き、実施の形態１の流用プログラム検索部２３と同様に、バージョン管理装置２Ｂのバージョン管理データベース４２に保存された登録制御プログラム内に登録制御ブロックの中から同一ロジックを持つ制御ブロックの一覧を検索する。
【０１３４】
不具合波及ブロック一覧表示部４４は、流用ブロック検索部４３で作成した一覧データに基づいて、ユーザが理解容易な制御ブロックの一覧を表示データとして、画面に表示する。表示データとして一覧データに格納された制御ブロックを識別可能なブロックバージョン情報２１０が基本的に用いられる。このとき、該当する制御ブロックの名称、バージョン番号の他に、作成者名、制御ブロックのコメント、流用時コメント、変更内容などを同時に表示データとして表示してもよい。
【０１３５】
流用ブロック検索部４３の処理は、図７で示す実施の形態１の流用プログラム検索部２３によるステップＳ２１〜Ｓ２６及びＳ３１〜Ｓ３８の処理を制御ブロック単位に行うことにより実現される。
【０１３６】
例えば、ステップＳ２１ではユーザが検索を所望する制御ブロックのＩＤを指示する検索対象ブロック情報を取得し、ステップＳ２２では流用元制御ブロックＩＤを取得することになり、ステップＳ２６では一覧データに流用元制御ブロックＩＤを追加することになる。同様に、ステップＳ３１はバージョン管理装置２Ｂに登録されている全制御プログラムの全制御ブロックを検索対象起点となる制御ブロックとして繰り返す処理となり、ステップＳ３２は現検索対象の制御ブロックにおける流用元制御ブロックＩＤの取得処理となり、ステップＳ３６〜Ｓ３８の「制御プログラムＩＤ」部分は「制御ブロックＩＤ」に置き換わる。
【０１３７】
ここで、シーケンサのプログラミング言語として、ラダープログラムの他に、ＩＬ（Instruction List）、ＳＦＣ（Sequential Function Chart）、ＦＢＤ（Function Block Diagram）、ＳＴ（Structured Text）などがある。
【０１３８】
ラダーは、制御ブロックの単位として、設定とコイルが線によって接続された固まりであるラングを制御ブロックとして扱うことができる。ＩＬは、制御ブロックの単位として、データの入力である接点入力のコード、例えばＬＤ命令から、データの出力であるコイルのコード、例えばＯＵＴ命令までの一連のブロックを制御ブロックとして扱うことができる。ＳＦＣはステップ及びステップの中に記載されたサブプログラムを制御ブロックとして扱うことができる。ＦＢＤはファンクション及びファンクションの中に記載されたサブプログラムを制御ブロックとして扱うことができる。ＳＴは行またはサブプログラムを制御ブロックとして扱うことができる。
【０１３９】
このような構成によれば、制御ブロックの一部を修正した時に、他に同様のロジックが存在し、同様の修正が必要になった場合、バージョン管理装置２Ｂが高速に検索して修正すべき制御ブロックの候補一覧を出力することができる。
【０１４０】
このように、制御プログラムが、複数の制御プログラムの一部の制御ブロックをコピー流用して作成されている場合、制御ブロックを単位として検索することで、他の制御ブロックを目視でチェックすることなく、ユーザは修正を短時間でミス無く全てのブロックに反映させることができる利点がある。
【０１４１】
このように、実施の形態２のバージョン管理装置２Ｂにおいて、ブロック情報検索部である流用ブロック検索部４３は、バージョン管理データベース４２内で制御ブロック関連情報１７内のブロック流用元情報２２０に基づく検索処理を行い、検索対象ブロック情報が指示するユーザ指定の制御ブロックに関連する検索結果情報（一覧データ）を得ている。
【０１４２】
このため、バージョン管理装置２Ｂのユーザは、表示データを不具合波及プログラム一覧表示部２４Ｋら参照することにより、検索対象ブロック情報の指示する制御ブロックに対し所定の関連性を満足する制御ブロックを指示する検索結果情報（一覧データ）を短時間で認識することができる効果を奏する。
【０１４３】
その結果、所定の修正を行った制御ブロックに関連性のある、バージョン管理データベースに登録された他の制御ブロックを短時間で認識することができる効果を奏する。
【０１４４】
また、検索結果情報（一覧データ）は、バージョン管理データベース４２に登録された登録制御プログラム内の制御ブロックのうち、検索対象ブロック情報が指示する制御ブロックを起点として順次検索され、上記第１の関連性要件を満足する所定数の流用元制御ブロック及び該所定数の流用元制御ブロックの少なくとも一つを、直接あるいは間接の流用元制御ブロックとして有し、かつ上記第２の関連性要件を満足する高関連性登録制御ブロックを指示する情報を含んでいる。
【０１４５】
このため、実施の形態１の制御プログラム用バージョン管理装置のユーザは、表示データを不具合波及プログラム一覧表示部４４から参照することにより、検索対象ブロック情報が指示する制御ブロックに対し所定の関連性要件を満足する制御ブロックを短時間で認識することができる効果を奏する。
【０１４６】
その結果、所定の修正を行った制御ブロックに関連性のある、プログラム（ブロック）上の不具合波及の可能性が高い、バージョン管理データベース４２に登録された他の制御ブロックを短時間で認識することができる効果を奏する。
【０１４７】
＜実施の形態３＞
図１２はこの発明の実施の形態３であるバージョン管理装置の構成を示すブロック図である。同図に示すように、バージョン管理装置２Ｃは、制御プログラム開発装置１Ｂと共にバージョン管理システムを構成している。
【０１４８】
制御プログラム開発装置１Ｂは、実施の形態２と同様、流用情報設定部３１、制御プログラムエディタ１２及び変更判定部３３から構成される。
【０１４９】
一方、実施の形態３のバージョン管理装置２Ｃは、バージョン管理登録部４１、バージョン管理データベース４２、流用ブロック検索部４３及び不具合波及ブロック一覧表示部４４に加え、流用ブロック検索部４３及び不具合波及ブロック一覧表示部４４間に変更差分抽出部２５を追加している。
【０１５０】
変更差分抽出部２５（差分抽出部）は、変更された箇所の表示だけを行うために、変更箇所を検索する機能を有する。実施の形態３においては、不具合波及ブロック一覧表示部４４及び変更差分抽出部２５によって検索情報表示部を構成する。
【０１５１】
図１３はこの発明の実施の形態３のバージョン管理装置２Ｃにおける変更差分抽出部２５の処理内容を示すフローチャートである。変更差分抽出部２５は、流用ブロック検索部４３が出力した一覧データに基づいて、ユーザが指定した制御ブロックと、同一ロジックを持つブロックの差分データを得るものである。
【０１５２】
同図を参照して、まず、ステップＳ４１で、表示データをクリアする。
【０１５３】
次に、ステップＳ４２で流用ブロック検索部４３が作成した流用元制御ブロックの一覧データを取得する。この一覧データの内容については実施の形態２と同様である。
【０１５４】
次に、ステップＳ４３で一覧データ内の全制御ブロックに対して繰り返し表示データの作成を行う。具体的には、一覧データ内の制御ブロック（ユーザ指定の制御ブロックは除く）のうち一の制御ブロックを差分処理対象の制御ブロックとしてステップＳ４４で順次抽出して、以降のステップＳ４４〜Ｓ４６の処理を行う。以下、ステップＳ４４〜Ｓ４６の処理について説明する。
【０１５５】
ステップＳ４４で一覧データから差分処理対象の制御ブロックＩＤである流用元制御ブロックＩＤを取得する。
【０１５６】
次に、ステップＳ４５でユーザが指定した制御ブロックのコードと、ステップＳ４４で取得した流用元制御ブロックＩＤが指示する制御ブロックのコードを読み出し、両コードの差分を取って差分データを得る。なお、ユーザが指定した制御ブロックとは、図７のステップＳ２１において検索対象ブロック情報が指示する制御ブロックを意味する。
【０１５７】
ここで、差分を取る処理は、一般に差分を得るためにしようされるツール、例えばＵＮＩＸ（登録商標）のｄｉｆｆのような機能を利用することができる。また、シーケンサで使用されるラダープログラムはグラフィカルな表示言語であるため、上記のｄｉｆｆではなく、左右対称に比較できる表示形式を用いてもよい。
【０１５８】
その後、ステップＳ４６において、ステップＳ４５で取得した差分データを表示データに追加する。この際、ユーザが指定した制御ブロック及びステップＳ４４で取得した流用元制御ブロックのＩＤを併せて表示データとして追加する方が望ましい。
【０１５９】
このような構成によれば、同一ロジックを含む制御ブロックに関する差分データのみを表示することになる。したがって、プログラム全体の差分データを表示する場合に比べ、必要な箇所のみ表示できることになる。このように、必要な箇所のみ表示すれば、修正を行う場合、迅速に修正箇所の特定と修正方法の判断ができるという利点がある。
【０１６０】
このように、実施の形態３のバージョン管理装置２Ｃは、変更差分抽出部２５及び不具合波及ブロック一覧表示部４４によって検索情報表示部を構成している。変更差分抽出部２５は、一覧データに格納された高関連性登録制御ブロックそれぞれの内容と検索対象ブロック情報が指示する制御ブロックの内容との差分データを順次取得している。不具合波及ブロック一覧表示部４４は、変更差分抽出部２５で取得された差分データを表示データとして表示している。
【０１６１】
その結果、実施の形態３の制御プログラム用バージョン管理装置のユーザは、表示データを参照することにより、流用する制御ブロック間の変更部分内容を特化して認識することができるため、変更確認作業を効率的に行うことができる効果を奏する。
【０１６２】
なお、実施の形態３では図９で示した実施の形態２を基本とした構成を示したが、同様にして図１で示した実施の形態１を基本として構成も同様に実現可能である。この場合、変更差分抽出部２５は、ユーザが指定した制御プログラムのコードと流用元制御プログラムのコードの差分を取って差分データを得ることになる。
【０１６３】
＜その他＞
実施の形態１〜実施の形態３では、バージョン管理装置２Ａ〜２Ｃとして説明したが、バージョン管理装置２Ａ〜２Ｃの流用プログラム検索部２３及び流用ブロック検索部４３の処理内容を中心として、バージョン管理データベースを用いて少なくとも一つの制御ブロックを有する制御プログラムを管理するバージョン管理方法として適用することも可能である。
【０１６４】
例えば、実施の形態１の流用プログラム検索部２３及び不具合波及プログラム一覧表示部２４の処理内容を基本として、以下のステップ(a) 〜(c) からなるバージョン管理方法が実現可能である。
【０１６５】
ステップ(a)は、バージョン管理データベース２２内に登録された登録制御プログラム内の一の登録制御プログラムである制御プログラムを検索対象プログラム情報とする（図７のステップＳ２１に相当）。
【０１６６】
ステップ(b)は、 バージョン管理データベース２２内で制御プログラム関連情報１５に基づく検索処理を行い、上記検索対象プログラム情報の指示する制御プログラムに対し、所定の関連性を有する登録制御プログラムを指示する検索結果情報（一覧データ）を得る（図７のステップＳ２２〜Ｓ３８に相当）。
【０１６７】
ステップ(c) は、上記検索結果情報に基づき表示データを表示する（不具合波及プログラム一覧表示部２４による処理）。
【０１６８】
上述したバージョン管理方法はステップ(b) において、バージョン管理データベース２２内で制御プログラム関連情報に基づく検索処理を行い、検索対象プログラム情報の指示する制御プログラムに関連する検索結果情報を得る。
【０１６９】
このため、バージョン管理方法のユーザは、表示データを参照することにより、検索対象プログラム情報の指示する制御プログラムに所定の関連性を有する制御プログラムを短時間で認識することができる効果を奏する。
【０１７０】
その結果、所定の修正を行った制御プログラムに関連性のある、バージョン管理データベースに登録された他の制御プログラムを短時間で認識することができる効果を奏する。
【０１７１】
また、実施の形態１〜実施の形態３では、制御プログラム（制御ブロック）を検索対象とするバージョン管理装置２Ａ〜２Ｃを示したが、応用技術として、少なくとも一つのブロックから構成される一般的なプログラムについてのバージョン管理装置に適用することも可能である。
【０１７２】
なお、実施の形態１〜実施の形態３で述べたバージョン管理装置は、例えば、主記憶装置、演算装置、入力装置、二次記憶装置及び出力装置等から構成され、これらの装置が共通バスを介して共通に接続されるような構成のコンピュータ装置により実現することができる。
【０１７３】
このようなコンピュータ装置において、例えば、実施の形態１の制御プログラム開発装置１Ａ及びバージョン管理装置２Ａの場合、流用情報設定部１１、制御プログラムエディタ１２、変更判定部１３、バージョン管理登録部２１、及び流用プログラム検索部２３は、演算装置がコンピュータを機能させるプログラムに基づき動作することによって実現可能である。上記プログラムは主記憶装置あるいは二次記憶装置に格納可能である。
【０１７４】
また、編集中制御プログラム１４、制御プログラム関連情報１５の保存装置、バージョン管理データベース２２は、主記憶装置あるいは二次記憶装置によって実現可能である。
【符号の説明】
【０１７５】
１Ａ，１Ｂ  制御プログラム開発装置、２Ａ〜２Ｃ  バージョン管理装置、３  流用元制御プログラム、４  流用元制御プログラム用バージョン情報、５  流用元制御ブロック、６  流用元制御ブロック用バージョン情報、１１，３１  流用情報設定部、１２  制御プログラムエディタ、１３，３３  変更判定部、１４  編集中制御プログラム、１５  制御プログラム関連情報、１６  編集中制御ブロック、１７  制御ブロック関連情報、２１，４１  バージョン管理登録部、２２，４２  バージョン管理データベース、２３  流用プログラム検索部、２４  不具合波及プログラム一覧表示部、２５  変更差分抽出部、４３  流用ブロック検索部、４４  不具合波及ブロック一覧表示部。
【図１】
2011059918.tif 000003
【図２】
2011059918.tif 000004
【図３】
2011059918.tif 000005
【図４】
2011059918.tif 000006
【図５】
2011059918.tif 000007
【図６】
2011059918.tif 000008
【図７】
2011059918.tif 000009
【図８】
2011059918.tif 000010
【図９】
2011059918.tif 000011
【図１０】
2011059918.tif 000012
【図１１】
2011059918.tif 000013
【図１２】
2011059918.tif 000014
【図１３】
2011059918.tif 000015