(57)【特許請求の範囲】
【請求項１】
電子図書の作成と管理を行う装置を用いて、複数のブロックに分けて記述されたラダープログラムの変更点を検出するラダープログラム比較方法において、
前記装置が、前記ラダープログラムの変更前と変更後のソースファイルを読み込むステップと、
前記装置が、前記ソースファイルに記述された命令語とアドレスに基づいて、変更前と変更後の前記ソースファイルを比較し、変更前と変更後とで異なる行に比較結果記号を付けるステップと、
前記装置が、前記ソースファイルの比較結果に対し、前記比較結果記号と記憶部に記憶された変更区分ルールとに従い、変更区分を定めるステップと、
前記装置が、前記比較結果記号と記憶部に記憶された補正ルールとに従い、複数のブロックにまたがる前記ソースファイルの変更箇所を、この複数のブロックの中の１つまたは複数のブロックに振り分けて、前記ソースファイルの比較結果を補正するステップと、
を有し、
前記補正ルールは、
変更前と変更後とがマージされた前記ソースファイルを上から順に検索していき、前記比較結果記号に基づき、第１のブロック終了行と、前記第１のブロック終了行以降にある第２のブロック終了行と、前記第１のブロック終了行と前記第２のブロック終了行との間に存在する異なる差分状態の行とを検索し、
前記異なる差分状態の行と前記第２のブロック終了行とを、前記第１のブロック終了行に移動するルールであり、
前記第１のブロック終了行とは、前記比較結果記号のみからなる空白行であり、
前記第２のブロック終了行とは、前記第１のブロック終了行に付けられた前記比較結果記号と異なる前記比較結果記号のみからなる空白行であり、
前記異なる差分状態の行とは、前記第１のブロック終了行に付けられた前記比較結果記号と異なる前記比較結果記号が付けられている行、または前記比較結果記号が付けられていない行である、
ことを特徴とするラダープログラム比較方法。
【請求項２】
請求項１記載のラダープログラム比較方法において、
前記装置が、前記ソースファイルの比較結果の補正結果を基に、変更内容が表示された電子図書を作成するステップを有するラダープログラム比較方法。
【請求項３】
請求項２記載のラダープログラム比較方法において、
前記電子図書を作成するステップでは、前記装置が、前記電子図書に前記変更区分を図示するラダープログラム比較方法。
【請求項４】
請求項２記載のラダープログラム比較方法において、
前記電子図書を作成するステップでは、前記装置が、テキスト形式で変更箇所一覧を作成するラダープログラム比較方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プラント制御分野でのＣＡＤ（Computer Aided Design）によるラダープログラム設計において、変更前後のラダープログラムを比較する方法に関する。
【背景技術】
【０００２】
プログラマブルロジックコントローラ（programmable logic controller、以下「ＰＬＣ」と称する）によるシーケンス制御では、ＰＬＣがラダープログラムを実行して制御を行う。ラダープログラム設計において、既に設計が完了したラダープログラムに部分的な改造を実施することが多々ある。その際、設計者は、改造前のラダープログラムおよびそれを記載した図書（以下、「変更前図書」と称する）をベースに変更を施して、改造後のプログラムおよびそれを記載した図書（以下、「変更後図書」と称する）を作成する。また、変更後図書に対して、変更前はどのようになっていたかを明示した図書（以下、「改造図書」と称する）を作成し、製品の動作試験に使用する。改造箇所が多い場合などは、改造内容を別の図書（以下、「改造箇所集約図書」と称する）に記載することもある。
【０００３】
ラダープログラムを改造した場合には、変更点（差分）を把握する必要がある。従来は、目視で変更前図書と変更後図書を比較したり、変更前後のラダープログラムのニーモニック形式ファイルを既存のテキスト比較ツールで比較したりすることで変更点を把握し、改造図書および改造箇所集約図書を作成していた。ラダープログラムの変更点を把握する技術としては、例えば、特許文献１や特許文献２に開示されているものがある。特許文献２に記載の技術では、変更前後のプログラムのテキストファイルの内容を、ブロックごとに１行ずつ比較する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−０５８３６８号公報
【特許文献２】特開平１０−１４９２０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述した従来のラダープログラムの変更点の把握方法や改造図書および改造箇所集約図書の作成方法には、以下のような課題が存在している。
（１）変更点を目視で確認するため、変更点の抽出漏れが発生する。
（２）改造図書および改造箇所集約図書を手作業で作成するため、作業時間がかかる。
（３）既存のテキスト比較ツールでは変更点の抽出精度が悪いため、手作業や目視確認が多く必要になる。
（４）上記（１）〜（３）により、作成する改造図書および改造箇所集約図書の精度が悪くなると、製品の動作試験の精度にも影響があり、検査漏れや不具合見過ごしの可能性がある。
【０００６】
本発明は、ラダープログラムの変更箇所および変更内容を容易に精度よく把握することが可能な、ラダープログラム比較方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明によるラダープログラム比較方法は、次のような基本的構成を有する。
【０００８】
電子図書の作成と管理を行う装置を用いて、複数のブロックに分けて記述されたラダープログラムの変更点を検出するラダープログラム比較方法において、次に述べるステップを有する。すなわち、前記装置が、前記ラダープログラムの変更前と変更後のソースファイルを読み込むステップと、前記装置が、前記ソースファイルに記述された命令語とアドレスに基づいて、変更前と変更後の前記ソースファイルを比較し、変更前と変更後とで異なる行に比較結果記号を付けるステップと、前記装置が、前記ソースファイルの比較結果に対し、前記比較結果記号と記憶部に記憶された変更区分ルールとに従い、変更区分を定めるステップと、前記装置が、前記比較結果記号と記憶部に記憶された補正ルールとに従い、複数のブロックにまたがる前記ソースファイルの変更箇所を、この複数のブロックの中の１つまたは複数のブロックに振り分けて、前記ソースファイルの比較結果を補正するステップとを有する。
【発明の効果】
【０００９】
本発明によると、以下の効果が得られる。
（１）目視確認によるラダープログラムの変更点の調査作業が不要となり、変更点の抽出漏れがなくなる。
（２）自動的に抽出された変更点情報を元に、改造図書および改造箇所集約図書を機械的に容易に作成することができるので、作業時間が短縮できる。
（３）既存のテキスト比較ツールを使用したニーモニック形式ファイルでの変更点調査では誤検出するようなプログラムの変更に対しても、精度よく変更点を抽出できる。
（４）上記（１）〜（３）の効果により、品質の良い改造図書および改造箇所集約図書が作成できるため、動作検証作業の精度も高くなり、製品の品質向上に寄与する。
【図面の簡単な説明】
【００１０】
【図１】本発明によるラダープログラム比較方法の流れを表した図。
【図２】ラダー図の例を示す図。
【図３】ラダープログラム比較装置の構成を示す図。
【図４】ラダープログラム（ニーモニック形式）の記述例を示す図。
【図５】処理の流れおよびデータの流れを表す図。
【図６】一貫Ｎｏ．と座標を削除する前後のラダーソースを示す図。
【図７】ラダーソースの比較結果の出力例を示す図。
【図８】変更区分ルールの一例を示す表。
【図９】従来のラダーソースの比較結果において、複数のｃｉｒｃｕｉｔにまたがった差分が検出された場合の出力例を示す図。
【図１０】複数ｃｉｒｃｕｉｔ変更点補正ルールを説明するための図。
【図１１】ラダー図のシンボルの一例を示す図。
【図１２】ラダー命令語とラダー図シンボル対応定義情報の一例を示す図。
【図１３】ＣＡＤデータ上にシンボルを貼り付ける際のイメージを示す図。
【図１４】ラダー図シンボル配置座標定義情報の一例を示す図。
【図１５】パス結線処理を説明するための図。
【図１６】シンボル単位の変更内容を図示する方法の一例を示す図。
【図１７】プログラムのロジック単位の変更内容を図示する方法の一例を示す図。
【図１８】ｃｉｒｃｕｉｔ単位の変更内容を図示する方法の一例を示す図。
【図１９】変更箇所図示ルール定義情報の一例を示す図。
【図２０】変更箇所の検出から変更箇所一覧の出力までの処理フローの一例を示す図。
【図２１】変更箇所一覧の出力内容の一例を示す図。
【発明を実施するための形態】
【００１１】
本発明によるラダープログラム比較方法では、ラダープログラムの変更点（差分）を自動的に抽出し、改造図書および改造箇所集約図書を機械的に作成することで、変更箇所および変更内容を容易に把握することが可能である。
【００１２】
以下、本発明によるラダープログラム比較方法の実施形態を、図面を用いて詳細に説明する。以下では、ラダープログラムのソースファイルのことを、「ラダーソース」とも称する。
【００１３】
本実施例によるラダープログラム比較方法は、ラダープログラム比較装置により実行される。ラダープログラム比較装置は、コンピュータ（ＰＣ）によって構成されたシステムであり、電子図書の作成と管理を行う。ラダープログラム比較装置は、作成した図書や電子図書（例えば、ＣＡＤ図面）を格納する記憶装置、電子図書を表示するディスプレイなどの画面出力装置、およびキーボードやマウス（ポインティングデバイス）などの入力装置を有する。キーボードは、電子図書の作成する際の文字入力に使用し、マウスは、画面出力装置に出力された表示物を指示するために用いる。このコンピュータは、電子図書を作成するためのソフトウェアが動作している必要がある。本実施例では、このようなソフトウェアの一例としてＣＡＤ（Computer Aided Design）を用い、電子図書をＣＡＤ図面（ＣＡＤデータ）としている。
【００１４】
図１は、本実施例によるラダープログラム比較方法の流れを表した図である。上記ＰＣによりシステムが起動すると、作業者が変更前および変更後のラダープログラムのソースファイルを指定する。ＰＣは、指定されたソースファイルを入力して読み込むと、本実施例によるラダープログラム比較方法に従い、比較処理を実行して変更点（差分）を自動的に抽出し、変更点を図示した改造図書および改造箇所集約図書を機械的に作成する。ソースファイルは、記憶装置から入力してもよく、システム外部から入力してもよい。
【００１５】
図２は、ＰＬＣによるシーケンス制御などを実現するために使用されるラダープログラムを図示したラダー図の例である。ラダー図では、図の左側に接点部（動作条件）を、右側に回路部（出力）を表記する。本実施例では、このラダー図を、変更前と変更後のラダープログラムのソースファイルから機械的に作成し、ラダー図上に変更点を明示することで、改造図書および改造箇所集約図書を作成する。
【００１６】
図３は、本実施例によるラダープログラム比較装置の構成を示す図である。ラダープログラム比較装置は、制御部、出力部、入力部、および記憶部を有する。制御部は、上述したＰＣに構築することができ、出力部、入力部、および記憶部は、それぞれ上述した画面出力装置、入力装置、および記憶装置とすることができる。
【００１７】
制御部は、具体的には、プログラムに従って動作するＣＰＵ（Central Processing Unit）によって実現され、入力部からの入力を受け付け、出力部に処理のメイン画面などを表示させ、ラダープログラムの比較プログラムや図面作成用プログラム等を実行する。
【００１８】
記憶部は、シンボルメニュー情報、ラダー命令語とラダー図シンボル対応定義情報、ラダー図シンボル配置座標定義情報、および変更箇所図示ルール定義情報などを格納する。また、記憶部には、ラダープログラムの比較プログラムや図面作成用プログラムが記憶されており、変更区分ルール、および複数ｃｉｒｃｕｉｔ変更点補正ルールも記憶されている。
【００１９】
シンボルメニュー情報は、ＣＡＤのシンボルについてのデータである。ラダー命令語とラダー図シンボル対応定義情報、ラダー図シンボル配置座標定義情報、および変更箇所図示ルール定義情報については、それぞれ図１２、図１４、および図１９を用いて後述する。また、変更区分ルールと複数ｃｉｒｃｕｉｔ変更点補正ルールについては、それぞれ図８と図１０を用いて後述する。
【００２０】
図４は、本実施例で処理対象としているラダープログラム（ニーモニック形式）の記述例を示す図である。ラダープログラムは、「ｃｉｒｃｕｉｔ」と呼ばれるブロックに分けて記述される。
【００２１】
ｃｉｒｃｕｉｔ単位のブロックの１行目には、一貫Ｎｏ．として、「ｃｉｒｃｕｉｔ」という文字とｃｉｒｃｕｉｔの番号が記述される。ブロックの２行目以降は、行単位に、当該ｃｉｒｃｕｉｔ（ブロック）内の接点部の座標と命令語と条件アドレス、および回路部の座標と命令語と出力アドレスが記述される。
【００２２】
ラダープログラムは、このようにして、「ｃｉｒｃｕｉｔ」という文字により、ｃｉｒｃｕｉｔ単位のブロックに分けることができる。
【００２３】
図５は、本実施例での処理を機能単位に纏めて、処理の流れおよびデータの流れ（入出力情報）を表した図である。処理の流れはステップ１０１〜ステップ１０５に、データの流れは図５の左から右に示した。ステップ１０１では、ラダープログラム比較方法を実行するためのメイン画面を表示する。ステップ１０２では、変更前と変更後のラダーソースを加工する。ステップ１０３では、加工した変更前と変更後のラダーソースを比較する。ステップ１０４では、ラダーソースの比較結果に基づいて「追加」、「削除」、「変更」、または「移動」という変更区分を決定した後、比較結果を補正する。ステップ１０５では、変更前と変更後のラダーソースの比較結果（差分検出結果）を反映させて、図面（ＣＡＤデータ）を作成し、記憶部に格納する。ステップ１０３とステップ１０４は、ラダープログラムの比較プログラムによって実行され、ステップ１０５は、図面作成用プログラムによって実行される。既に述べたが、比較プログラムと図面作成用プログラムは、ラダープログラム比較装置が有する制御部によって実行される。ステップ１０１〜ステップ１０５の詳細は、以下に説明する。
【００２４】
図３に示したラダープログラム比較装置は、操作者がシステムを起動したことを検知すると、メイン画面を表示する（図５のステップ１０１）。次に、ラダープログラム比較装置は、操作者によって比較対象となる変更前（改造前）のラダーソースと変更後（改造後）のラダーソースが指定され、メイン画面に表示された「比較処理実行」ボタンが押されたことを検知すると、以下に述べる各処理を起動する。
【００２５】
まず、変更前と変更後のラダーソースを入力して読み込み、それぞれのラダーソースの加工処理を実行する（ステップ１０２）。ラダーソースの加工処理では、変更前と変更後のラダーソースの中から一貫Ｎｏ．と座標を削除する。例えば、ｃｉｒｃｕｉｔ単位に追加や削除があった場合、変更後のラダーソースでは、追加や削除があった箇所以降の一貫Ｎｏ．と座標にズレが発生する。差分検出を実施するにあたって、たった一箇所でも追加や削除があると、その箇所以降を全て「変更あり」と検出するのは正しい差分検出とは言えない。そのため、誤った差分検出を防止するために、一貫Ｎｏ．と座標を削除する必要がある。
【００２６】
図６は、一貫Ｎｏ．と座標を削除する前後のラダーソースを示す図である。図６の左に示したラダーソースから一貫Ｎｏ．と座標を削除すると、図６の右に示したラダーソースとなる。
【００２７】
比較対象となる変更前と変更後のラダーソースから一貫Ｎｏ．と座標を削除した後に、これらのラダーソースの比較処理を実行する（ステップ１０３）。なお、比較処理では、ラダーソースの中の空白行をｃｉｒｃｕｉｔの区切り目として扱う。
【００２８】
図７は、ラダーソースの比較結果の出力例を示す図である。図７の左には、比較対象である変更前と変更後のラダーソースを、図７の右には、比較結果の出力例を示している。比較結果は、変更前のラダーソースと変更後のラダーソースとがマージされており、行単位に「追加／削除」「移動」が判別できるようなテキスト形式で出力する。
【００２９】
図７において、比較結果の行には、「＜！」、「！＞」、「＜−」、および「−＞」という比較結果記号が付けられている。「＜！」は、変更前のラダーソースから削除された行、すなわち変更前のラダーソースにしか存在しない行を示す。「！＞」は、変更前のラダーソースに追加された行、すなわち変更後のラダーソースにしか存在しない行を示す。「＜−」は、移動した行を示し、変更前の位置を示している。「−＞」は、移動した行を示し、変更後の位置を示している。比較結果記号が付けられていない行は、変更前と変更後で一致している行である。
【００３０】
なお、この時点では「変更」の検出は行えないため、ｃｉｒｃｕｉｔ内の変更については「追加」と「削除」で表現される。また、ｃｉｒｃｕｉｔの中に含まれる「移動」は、「追加」「変更」「削除」のいずれかの組み合わせとして判定されるものとする。例えば、ある位置から削除されたブロックが他の位置に追加されていれば、このブロックは移動したものとして判定される。
【００３１】
従って、図７の比較結果のＡ１、Ａ２、Ａ３、およびＡ４で示された行は、それぞれ、命令単位の追加、ブロック単位の移動（削除）、命令単位の削除、およびブロック単位の移動（追加）があったと認識されたことを示している。
【００３２】
図７に示した例のように、変更前後でｃｉｒｃｕｉｔの数が不変（１対１）、ｃｉｒｃｕｉｔを１つ追加（０対１）、およびｃｉｒｃｕｉｔを１つ削除（１対０）の場合には、比較的に容易に比較結果を図面に反映することができる。しかし、複数のｃｉｒｃｕｉｔにまたがった差分が検出された場合には、図面への反映が難しくなる。
【００３３】
そこで、複数のｃｉｒｃｕｉｔにまたがった差分が存在する場合を考慮し、比較結果を図面に反映する前に、比較結果を補正する処理を行う（ステップ１０４）。比較結果を補正する処理では、ラダーソースの比較処理（ステップ１０３）で得られた比較結果に対して、変更区分ルールに従って、変更区分を決定する。これによって、変更点ごとに「追加」、「削除」、「変更」、または「移動」を判定できる。
【００３４】
図８は、変更区分ルールの一例を示す表である。ｃｉｒｃｕｉｔ内の行は、付けられた比較結果記号に応じて、変更区分ルールの判断条件に従い、変更区分が決定される。変更区分には、図８の例では、命令単位の削除および追加や、ｃｉｒｃｕｉｔ単位の削除、追加、変更、および移動（移動元および移動先）がある。
【００３５】
図９は、従来のラダーソースの比較結果において、複数のｃｉｒｃｕｉｔにまたがった差分が検出された場合の出力例を示す図である。図９の左には変更前のラダーソースを、中央には変更後のラダーソースを、右には比較結果の出力例を示している。比較結果の出力例では、変更前後のラダーソースがマージされている。
【００３６】
図９に示した例では、変更前のラダーソースから破線で囲まれた範囲内の行が削除され、変更後のラダーソースの２行目の「ＯＵＴ    Ｕ０３０  ２０」から１２行目の「ＬＡＮＤ  Ｑ０６８」までと、１５行目の「ＬＡＮＤ  Ｑ０６８」が追加されている。削除された行と追加された行は、ともに複数のｃｉｒｃｕｉｔにまたがっている。
【００３７】
既存のテキスト比較ツールでは、単純に文字列で比較するため、図９に示したように、変更後のラダーソースの２行目（Ｂ１で示された行）にある「ＯＵＴ    Ｕ０３０  ２０」は、比較結果ではＢ２で示された行に表示される。
【００３８】
しかし、Ｂ１で示された行にある「ＯＵＴ    Ｕ０３０  ２０」は、１行目の「ＬＤ      Ｒ７０２」と同じｃｉｒｃｕｉｔ内にあるため、比較結果においても「ＬＤ      Ｒ７０２」と同じｃｉｒｃｕｉｔ内に表示されるべきである。具体的には、「ＯＵＴ    Ｕ０３０  ２０」は、Ｂ３で示された行（＜！  ＭＯＶ  ＤＷ９Ｃ２  ＤＷＡ４９）の下に表示されるべきである。図９に示した既存のテキスト比較ツールを用いた例では、「ＬＤ      Ｒ７０２」とは異なるｃｉｒｃｕｉｔ内に表示されている。
【００３９】
このように、既存のテキスト比較ツールを使用した場合では、単純に文字列での比較が行われるため、本実施例が対象としているラダーソースのｃｉｒｃｕｉｔ単位のブロックによる比較は行えない。そこで、本実施例では、比較結果を補正することで（図５のステップ１０４）、ラダープログラムの比較に特化した比較の実現を図っている。
【００４０】
図１０は、本実施例における複数ｃｉｒｃｕｉｔ変更点補正ルールを説明するための図である。複数ｃｉｒｃｕｉｔ変更点補正ルールは、複数のｃｉｒｃｕｉｔにまたがって差分が検出された時の、比較結果の補正ルールである。図１０の左には補正前のラダーソースを、右には補正後のラダーソースを示している。なお、図１０のラダーソースでは、比較結果として出力した変更前後のラダーソースがマージされている。
【００４１】
複数ｃｉｒｃｕｉｔ変更点補正ルールは、複数のｃｉｒｃｕｉｔにまたがる変更箇所を、この複数のｃｉｒｃｕｉｔの中の１つまたは複数のｃｉｒｃｕｉｔに振り分けて、変更箇所の図面への反映を可能にするためのルールである。複数ｃｉｒｃｕｉｔ変更点補正ルールでは、変更前後がマージされたラダーソースを上から順に検索していき、ｃｉｒｃｕｉｔの区切り目とｃｉｒｃｕｉｔの中の比較結果記号に基づき、比較結果を補正する。以下、複数ｃｉｒｃｕｉｔ変更点補正ルールの一例について説明する。
【００４２】
補正前のラダーソースにおいて、比較結果の行を順に検索し、比較結果記号の「＜！」または「！＞」のみからなる行（比較結果記号の「＜！」または「！＞」が付けられているが、命令語とアドレスが記述されていない行）を探す。「＜！」または「！＞」のみからなる行は、ｃｉｒｃｕｉｔ終了行（空白行）であり、ｃｉｒｃｕｉｔの区切り目を表す。図１０では、Ｃ１で示された行に「＜！」のみからなる行があり、この行がｃｉｒｃｕｉｔ終了行である。以下の説明では、この行を第１のｃｉｒｃｕｉｔ終了行と呼ぶ。
【００４３】
次に、第１のｃｉｒｃｕｉｔ終了行の以降の行から、第１のｃｉｒｃｕｉｔ終了行に付けられた比較結果記号と異なる比較結果記号（ただし、「＜！」または「！＞」）のみからなる行を探す。図１０の例では、第１のｃｉｒｃｕｉｔ終了行には「＜！」が付けられているので、「！＞」のみからなる行を探す。図１０では、Ｃ３で示された行に「！＞」のみからなる行があり、この行がｃｉｒｃｕｉｔ終了行である。以下の説明では、この行を第２のｃｉｒｃｕｉｔ終了行と呼ぶ。
【００４４】
次に、第１のｃｉｒｃｕｉｔ終了行と第２のｃｉｒｃｕｉｔ終了行の間に存在し、第１のｃｉｒｃｕｉｔ終了行と異なる差分状態の行を検索する。第１のｃｉｒｃｕｉｔ終了行と異なる差分状態の行とは、第１のｃｉｒｃｕｉｔ終了行に付けられた比較結果記号と異なる比較結果記号が付けられている行、または比較結果記号が付けられていない行である。図１０の例では、Ｃ２で示された行に、第１のｃｉｒｃｕｉｔ終了行と異なる差分状態の行を見つけることができる。
【００４５】
次に、第１のｃｉｒｃｕｉｔ終了行と異なる差分状態の行と、第２のｃｉｒｃｕｉｔ終了行とを、第１のｃｉｒｃｕｉｔ終了行に移動して、ｃｉｒｃｕｉｔ内に収める。図１０の例では、Ｃ２とＣ３で示された行を、Ｃ１で示された行、すなわち補正後のラダーソースのＣ５で示された位置に移動する。
【００４６】
第２のｃｉｒｃｕｉｔ終了行の以降の行からも、同様にして、第２のｃｉｒｃｕｉｔ終了行と異なる差分状態の行（第２のｃｉｒｃｕｉｔ終了行に付けられた比較結果記号と異なる比較結果記号が付けられている行、または比較結果記号が付けられていない行）を検索する。図１０では、Ｃ４で示された行に比較結果記号が付けられていない行がある。従って、Ｃ４で示された行が第２のｃｉｒｃｕｉｔ終了行と異なる差分状態の行である。
【００４７】
図１０に示した例では、第２のｃｉｒｃｕｉｔ終了行と異なる差分状態の行（Ｃ４で示された行）は、変更前と変更後で一致している行、すなわち「変更前と変更後の両方に存在する」行である。このような行には、ラダーソース内の上下の一行と同じ比較結果記号を付加する。図１０の例では「！＞」を付加する。補正後のラダーソースのＣ７で示された位置にある行は、上下の一行と同じ比較結果記号（「！＞」）が付加された行である。
【００４８】
次に、第２のｃｉｒｃｕｉｔ終了行と異なる差分状態の行（Ｃ４で示された行）を、ラダーソース内の１つ上のｃｉｒｃｕｉｔ内に追加し、付加した比較結果記号（Ｃ７で示された位置にある行に付加した比較結果記号）と異なる比較結果記号を付加する。付加した比較結果記号と異なる比較結果記号とは、付加した比較結果記号が「！＞」の場合は「＜！」であり、「＜！」の場合は「！＞」である。図１０の例では、補正後のラダーソースのＣ６で示された位置にある行が、１つ上のｃｉｒｃｕｉｔ内に追加され、付加した比較結果記号（「！＞」）と異なる比較結果記号（「＜！」）が付加された行である。
【００４９】
以上のような複数ｃｉｒｃｕｉｔ変更点補正ルールに従って比較結果を補正することで、本実施例ではラダーソースのｃｉｒｃｕｉｔ単位のブロックによる比較を実現することができる。
【００５０】
図５のステップ１０５で実行する、変更前と変更後のラダーソースの比較結果（差分検出結果）の図面への反映について、図１１〜図２０を用いて説明する。図５のステップ１０５では、得られた比較結果を解析して、電子図書（ＣＡＤ図面）を作成する。まず、ラダー図を自動的に作成し、次に、作成したラダー図に比較結果の情報を図示する。ラダー図を作成する処理については、図１１〜図１５を用いて説明する。自動作成したラダー図に比較結果の情報を図示する処理については、図１６〜図２０を用いて説明する。
【００５１】
図１１は、ラダー図のシンボルの一例を示す図である。ラダー図のシンボルは、補正が完了した比較結果（差分検出結果）を元に、変更前と変更後をマージしたラダーソースからラダー図を作成し、そこに変更点を図示した改造図書を機械的に作成する際に使用する。図１１では、シンボルを「ラダー図シンボル形状」で表している。
【００５２】
シンボルは命令語に対応しており、シンボルごとにＩＤが決まっている。改造図書を機械的に作成する際には、ＩＤをキー情報にして電子図書（ＣＡＤ図面）上にシンボルを配置する。また、シンボルによっては、例えば条件アドレスや出力アドレスのような、シンボルに付随する属性を持つものもある。
【００５３】
ラダー図のシンボルには、結線すべき端子２０を持つものがある。図１１の例では、ラダー図シンボル形状に示した「×」が結線すべき端子２０を表している。
【００５４】
図１２は、ラダー命令語とラダー図シンボル対応定義情報の一例を示す図である。ラダー命令語とラダー図シンボル対応定義情報には、ＣＡＤデータとして登録されているシンボルデータと、そのシンボルのＩＤとの対応が定義されている。具体的には、図１２に示すように、シンボルによって表される素子１０ごとに、シンボルの名前または命令語１１と、シンボルのＩＤ１２と、シンボルの種別１３が定義されている。
【００５５】
シンボルをＣＡＤデータ上に配置する際には、シンボルの名前または命令語１１をキー情報にしてシンボルのＩＤ１２を取得し、該当するシンボルデータを特定する。また、配置の際の接続条件として、シンボルの種別１３を利用する。シンボルの種別１３は、例えば、「接点素子の下の座標に分岐素子が配置されることはない」や「出力素子が２つ横に並ぶことはない」などの条件に従い、シンボルを分類して、素子同士の接続を機械的に行うために必要となる。
【００５６】
図１３は、補正が完了した比較結果を参照して、ＣＡＤデータ上にシンボルを貼り付ける際のイメージを示す図である。ＣＡＤデータは、マトリックスのデータ形式を持ち、ラダーソースの記述順序に従って、まず左から右へ、次に上から下へ素子を配置する。マトリックスの行数は、一例として、ＣＡＤデータのシート１枚分に記載できるラダー図の行数に合わせて、１６行とする。この行数は、日本工業規格Ａ３横型のシートサイズに適度なスペースを持ってシンボルを配置することを考慮している。同様に、同一行の列方向に配置できるシンボルの最大数は、２３列とする。マトリックスの行と列の数は、シートのサイズに合わせて変えてもよい。
【００５７】
また、シンボルの配置の際には、図１２で示したシンボルの種別１３を接続の条件として参照する。図１３の例では、「ＬＤは必ず左端の列に配置される」や「ＳＰＰはＳＰＳの下に配置される」や「ＯＵＴは必ず右端の列に配置される」などの条件に従い、シンボルの種別１３を参照しながら、シンボルをマトリックスに配置する。
【００５８】
なお、シンボルの配置に際して、変更区分（図８参照）が「追加」のものについては、マトリックスへ配置しない。また、変更区分が「変更」のものについては、変更前のラダー図のシンボルをマトリックスへ配置し、変更後のラダー図のシンボルについては、マトリックスへ配置しない。マトリックスへ配置しなかったシンボルは、これらを纏めた形で別途マトリックスへ配置する。これは、「改造図書」と「改造箇所集約図書」に分けて図書を作成するために、データを別々に扱う必要があるからである。これについて、図２０の説明とともに後述する。
【００５９】
図１４は、ラダー図シンボル配置座標定義情報の一例を示す図である。ラダー図シンボル配置座標定義情報は、マトリックス上の座標（行番号と列番号）とＣＡＤデータ上の座標との対応を定義したものであり、具体的には、図１４に示すように、マトリックスの行番号とＣＡＤデータ上のＹ座標との対応、およびマトリックスの列番号とＣＡＤデータ上のＸ座標との対応とを定義する。マトリックス上の座標とＣＡＤデータ上の座標の対応は、予め定めておく。
【００６０】
図１３に示したように、各命令に対して配置するシンボルおよびシンボルのマトリックス上の座標（行番号と列番号）を決定した後、図１４に示すラダー図シンボル配置座標定義情報の定義に従って、ＣＡＤデータ上に配置する際の実座標を決定する。シンボルの配置座標を決定した後、結線すべき端子を持つ複数のシンボルが同一Ｘ座標または同一Ｙ座標に配置されている場合には、同一ｃｉｒｃｕｉｔ内のシンボル間を結線するパス結線処理を実行する。結線すべき端子を持つシンボルについては、図１１を用いて既に説明した。
【００６１】
図１５は、パス結線処理を説明するための図である。結線すべき端子２０を持つシンボルのうち、同一Ｘ座標を持つシンボルの結線すべき端子２０の間と、同一Ｙ座標を持つシンボルの結線すべき端子２０の間に線を引いて結線する。
【００６２】
図１６〜図１８は、改造図書に対して、変更内容を明示する方法を示している。補正後のラダーソース（図１０を参照）から変更区分を取得して、変更区分に従って変更内容（「追加」、「削除」、または「変更」の区分と、具体的な変更点）を図面上に記入して明示する。変更区分によっては、改造図書内に変更内容を図示するのが困難なため、改造箇所集約図書に変更内容を図示する。改造図書と改造箇所集約図書の間は、一貫Ｎｏ．で対応を確認する。
【００６３】
図１６は、シンボル単位の変更内容を図示する方法の一例を示す図である。シンボル単位の追加があった場合は、追加されたシンボルを青色の太い実線で囲み、改造図書に図示する。シンボル単位の削除があった場合は、削除されたシンボルを赤色の点線で囲み、改造図書に図示する。シンボル単位の変更があった場合は、変更前のシンボルを水色の細い実線で囲んで改造図書に図示するとともに、変更後のシンボルを水色の細い実線で囲んで改造箇所集約図書に図示する。
【００６４】
図１７は、プログラムのロジック単位の変更内容を図示する方法の一例を示す図である。ｃｉｒｃｕｉｔ内のロジックに追加や削除があった場合は、ｃｉｒｃｕｉｔ単位のブロックの「変更」と見なし、該当するブロック全体が変更されたものとして図示する。ｃｉｒｃｕｉｔ内のロジックに追加があった場合は、ロジックが追加される前のブロックを水色の細い実線で囲んで改造図書に図示するとともに、ロジックが追加された後のブロックを水色の細い実線で囲んで改造箇所集約図書に図示する。ｃｉｒｃｕｉｔ内のロジックに削除があった場合は、ロジックが削除される前のブロックを水色の細い実線で囲んで改造図書に図示するとともに、ロジックが削除された後のブロックを水色の細い実線で囲んで改造箇所集約図書に図示する。
【００６５】
図１８は、ｃｉｒｃｕｉｔ単位の変更内容を図示する方法の一例を示す図である。ｃｉｒｃｕｉｔ単位の追加があった場合は、ｃｉｒｃｕｉｔが追加される場所を青色の太い実線で囲んで改造図書に図示するとともに、追加されたｃｉｒｃｕｉｔを青色の太い実線で囲んで改造箇所集約図書に図示する。ｃｉｒｃｕｉｔ単位の削除があった場合は、削除されたｃｉｒｃｕｉｔを赤色の点線で囲んで改造図書に図示する。ｃｉｒｃｕｉｔ単位の変更（移動）があった場合は、変更前（移動前）のｃｉｒｃｕｉｔと変更後（移動後）のｃｉｒｃｕｉｔの位置とを、それぞれ黒色の細い実線で囲み、改造図書に図示する。
【００６６】
図１９は、変更箇所図示ルール定義情報の一例を示す図である。変更箇所図示ルール定義情報は、変更区分単位に、「どの位置に」「どの線種で」「どの色で」など、どのように変更内容を図示するかという図示ルールを定義したものである。図示ルールは予め定めておく。シンボルの配置およびシンボル間の結線が終了した後、変更箇所図示ルール定義情報に従って、変更区分ごとに変更内容を図示する。
【００６７】
図２０は、変更箇所の検出から変更箇所の図示（改造図書および改造箇所集約図書の作成）と変更箇所一覧の出力までの処理フローの一例を示す図である。図２０に示すように、変更区分が「追加」であるか否か、および変更区分が「変更」でありラダー図が「変更後」であるか否かにより、改造図書に出力するか改造箇所集約図書に出力するかが異なる。変更区分が「追加」の場合と、変更区分が「変更」でありラダー図が「変更後」である場合は、改造箇所集約図書に出力し、それ以外の場合は、改造図書に出力する。このため、図１３に示したマトリックス配置を改造図書の作成処理と改造箇所集約図書の作成処理とで別々に実施し、それぞれの図書に対してラダー図および変更内容を出力する。作成した改造図書、改造箇所集約図書、および電子図書（ＣＡＤデータ）は、記憶部に格納される。
【００６８】
ここまでは、自動作成したラダー図に比較結果（差分検出結果）の情報を図示する処理について説明した。本実施例では、比較結果の情報を図示するほかに、変更箇所の一覧を出力することもできる。
【００６９】
図２１は、変更箇所一覧の出力内容の一例を示す図である。変更箇所一覧には、本実施例による、変更前と変更後のラダーソースの比較（差分検出）を実施した結果をＣＡＤデータに反映した際の、変更箇所と変更内容とが出力される。図面化の際、変更があったシートＮｏ．とその変更区分をメモリ上に保持しておき、図面化処理の終了後にテキスト形式のファイルへ出力し、変更箇所一覧とする。変更箇所一覧として、テキスト形式で別途出力することで、変更箇所が更に分かりやすくなる。
【符号の説明】
【００７０】
１０…シンボルによって表される素子、１１…シンボルの名前または命令語、１２…シンボルのＩＤ、１３…シンボルの種別、２０…結線すべき端子、Ａ１、Ａ２、Ａ３、Ａ４…行を示す符号、Ｂ１、Ｂ２、Ｂ３…行を示す符号、Ｃ１、Ｃ２、Ｃ３、Ｃ４、Ｃ５、Ｃ６、Ｃ７…行を示す符号。
【図１】
0005595224.tif 000002
【図２】
0005595224.tif 000003
【図３】
0005595224.tif 000004
【図４】
0005595224.tif 000005
【図５】
0005595224.tif 000006
【図６】
0005595224.tif 000007
【図７】
0005595224.tif 000008
【図８】
0005595224.tif 000009
【図９】
0005595224.tif 000010
【図１０】
0005595224.tif 000011
【図１１】
0005595224.tif 000012
【図１２】
0005595224.tif 000013
【図１３】
0005595224.tif 000014
【図１４】
0005595224.tif 000015
【図１５】
0005595224.tif 000016
【図１６】
0005595224.tif 000017
【図１７】
0005595224.tif 000018
【図１８】
0005595224.tif 000019
【図１９】
0005595224.tif 000020
【図２０】
0005595224.tif 000021
【図２１】
0005595224.tif 000022