(57)【特許請求の範囲】
【請求項１】
シーケンスプログラム内の回路全体から共通のロジック部分を抽出し、抽出した共通のロジック部分に含まれる回路部品について、同じ位置の回路部品に対するデバイス割付が全ての共通のロジック部分で一致しているか否かを示す付属情報を生成する共通判定部と、
前記共通判定部が抽出した共通のロジック部分と前記付属情報とに基づいてプログラムコンポーネントを生成するプログラムコンポーネント生成部と、
前記シーケンスプログラム内の前記共通のロジック部分の各々を、前記プログラムコンポーネントと前記プログラムコンポーネントの入出力引数に接続する回路部品とで置き換える置換部と、
を備え、
前記プログラムコンポーネント生成部は、同じ位置の回路部品に対するデバイス割付が全ての前記共通のロジック部分で一致している回路部品である第１の回路部品の中のユーザに指定された第１の回路部品に対してデバイス割付を行う入出力引数と、前記第１の回路部品に該当しない回路部品である第２の回路部品にデバイス割付を行う入出力引数と、を有するプログラムコンポーネントを生成する、
ことを特徴とするプログラム作成支援装置。
【請求項２】
前記共通判定部が抽出した共通のロジック部分をプログラムコンポーネントの候補として表示装置に表示させる検索結果表示処理部、
を備え、
前記プログラムコンポーネント生成部は、前記プログラムコンポーネントの候補の中からユーザによって選択された共通のロジック部分と前記付属情報とに基づいてプログラムコンポーネントを生成する、
ことを特徴とする請求項１に記載のプログラム作成支援装置。
【請求項３】
前記第１の回路部品の中から、前記共通のロジック部分が前記プログラムコンポーネント生成部で生成されるプログラムコンポーネントに置き換えられた後に入出力引数を用いたデバイス割付が必要な第１の回路部品をユーザに選択させる選択受付部、
を備えることを特徴とする請求項１または２に記載のプログラム作成支援装置。
【請求項４】
前記プログラムコンポーネント生成部が前記プログラムコンポーネントを生成して前記置換部が前記共通のロジック部分を前記プログラムコンポーネントで置き換える前に、前記共通のロジック部分が前記プログラムコンポーネントと前記プログラムコンポーネントの入出力引数に接続する回路部品とで置き換えられた後の前記シーケンスプログラムの構成を確認するための画面を表示装置に表示させる確認表示処理部、
を備えることを特徴とする請求項１から３のいずれか一つに記載のプログラム作成支援装置。
【請求項５】
シーケンスプログラムの作成を支援するプログラム作成支援装置が実行するプログラム作成支援方法であって、
シーケンスプログラム内の回路全体から共通のロジック部分を抽出する第１のステップと、
前記第１のステップで抽出した共通のロジック部分に含まれる回路部品について、各共通のロジック部分の同じ位置の回路部品に対するデバイス割付が全ての共通のロジック部分で一致しているか否かを示す付属情報を生成する第２のステップと、
前記第１のステップで抽出した共通のロジック部分と前記付属情報とに基づいてプログラムコンポーネントを生成する第３のステップと、
前記シーケンスプログラム内の前記共通のロジック部分を前記プログラムコンポーネントと前記プログラムコンポーネントの入出力引数に接続する回路部品とで置き換える第４のステップと、
を含み、
前記第３のステップでは、同じ位置の回路部品に対するデバイス割付が全ての前記共通のロジック部分で一致している回路部品である第１の回路部品の中のユーザに指定された第１の回路部品に対してデバイスを割付けるための入出力引数と、前記第１の回路部品に該当しない回路部品である第２の回路部品に対してデバイスを割付けるための入出力引数と、を有するプログラムコンポーネントを生成する、
ことを特徴とするプログラム作成支援方法。
【請求項６】
シーケンスプログラム内の回路全体から共通のロジック部分を抽出する第１のステップと、
前記第１のステップで抽出した共通のロジック部分に含まれる回路部品について、各共通のロジック部分の同じ位置の回路部品に対するデバイス割付が全ての共通のロジック部分で一致しているか否かを示す付属情報を生成する第２のステップと、
前記第１のステップで抽出した共通のロジック部分と前記付属情報とに基づいてプログラムコンポーネントを生成する第３のステップと、
前記シーケンスプログラム内の前記共通のロジック部分を前記プログラムコンポーネントと前記プログラムコンポーネントの入出力引数に接続する回路部品とで置き換える第４のステップと、
をコンピュータに実行させ、
前記第３のステップは、同じ位置の回路部品に対するデバイス割付が全ての前記共通のロジック部分で一致している回路部品である第１の回路部品の中のユーザに指定された第１の回路部品に対してデバイスを割付けるための入出力引数と、前記第１の回路部品に該当しない回路部品である第２の回路部品に対してデバイスを割付けるための入出力引数と、を有するプログラムコンポーネントを生成する処理を含む、
ことを特徴とするプログラム作成支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シーケンスプログラムの作成を支援するプログラム作成支援装置、プログラム作成支援方法およびプログラム作成支援プログラムに関する。
【背景技術】
【０００２】
プログラマブルロジックコントローラ（ＰＬＣ：Programmable  Logic  Controller）は、シーケンスプログラムに従って動作を行い、工場などに設置されている被制御機器を制御する制御装置である。【０００３】
シーケンスプログラムの主要な記述言語としてラダー言語がある。ラダー言語は、リレー回路を模したグラフィカルな表現によるプログラミング言語であり、接点およびコイルといった制御信号を伝搬する回路部品を配置し、それらの接続関係を指定することによって、プログラムを作成できる。なお、制御信号はＰＬＣの内部メモリに割り付けられるが、この内部メモリは「デバイス」と呼ばれる。また、ラダー言語で記述されたシーケンスプログラムはラダープログラムと呼ばれる。ラダープログラムにおいては、ＸおよびＹといった記号と数値とを組み合わせてデバイスを表現し、接点およびコイルのそれぞれにデバイスを割り付けることで信号伝搬を表現している。【０００４】
ここで、近年、生産設備の大規模化が進んでおり、これに伴いＰＬＣが制御する被制御機器の数が増加し、シーケンスプログラムも大規模化している。そのため、シーケンスプログラムを効率良く作成できるようにするための技術が提案されている。【０００５】
例えば、特許文献１に記載の発明では、１つのシーケンスプログラムにおいて同じ回路パターンが複数回使用されることに着目し、シーケンスプログラムを効率良く作成できるようにしている。具体的には、特許文献１に記載の発明では、作成済みのシーケンスプログラムから共通の回路パターンを抽出して部品化を行い、部品化された回路パターンであるプログラム部品をその後のシーケンスプログラムの作成などで再利用できるようにしている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第５７６９９００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載の発明では、プログラム部品の定義、すなわち入出力引数の定義を、自動的に決定する。具体的には、共通の回路パターン内の回路部品（接点、コイル等）に対する全てのデバイス割付が、入出力引数から渡されるものとして、プログラム部品の入出力引数が定義される。よって、例えば、共通回路パターン内に接点が５個、コイルが３個存在する場合、当該共通回路パターンから生成したプログラム部品は、入力引数が５個（＝接点数）、出力引数が３個（＝コイル数）となる。【０００８】
ところで、共通回路パターンの抽出元となる複数の回路において、デバイス割付が同じ回路部品については、引数として外部からデバイス割付を渡す必要が無く、プログラム部品の引数を省略することが可能である。また、シーケンスプログラムにおいては、使用するプログラム部品の入出力引数の数が少ないほど、可読性および保守性が高くなり、また、プログラム容量を削減することが可能である。しかしながら、特許文献１に記載の発明では、プログラム部品の入出力引数の数を削減すること、すなわち、シーケンスプログラムの可読性および保守性の改善について考慮されていないという問題があった。【０００９】
本発明は、上記に鑑みてなされたものであって、シーケンスプログラムの可読性および保守性を高めることが可能なプログラム作成支援装置を得ることを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明にかかるプログラム作成支援装置は、シーケンスプログラム内の回路全体から共通のロジック部分を抽出し、抽出した共通のロジック部分に含まれる回路部品について、同じ位置の回路部品に対するデバイス割付が全ての共通のロジック部分で一致しているか否かを示す付属情報を生成する共通判定部、を備える。また、プログラム作成支援装置は、共通判定部が抽出した共通のロジック部分と付属情報とに基づいてプログラムコンポーネントを生成するプログラムコンポーネント生成部と、シーケンスプログラム内の共通のロジック部分の各々を、プログラムコンポーネントとプログラムコンポーネントの入出力引数に接続する回路部品とで置き換える置換部と、を備える。プログラムコンポーネント生成部は、同じ位置の回路部品に対するデバイス割付が全ての共通のロジック部分で一致している回路部品である第１の回路部品の中のユーザに指定された第１の回路部品に対してデバイス割付を行う入出力引数と、第１の回路部品に該当しない回路部品である第２の回路部品にデバイス割付を行う入出力引数と、を有するプログラムコンポーネントを生成する。
【発明の効果】
【００１１】
本発明にかかるプログラム作成支援装置は、シーケンスプログラムの可読性および保守性を高めることができるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】実施の形態にかかるプログラム作成支援装置によるプログラム部品の生成動作の概要を示す図
【図２】実施の形態にかかるプログラム作成支援装置を含んで構成されるプログラム作成システムの構成を示す図
【図３】実施の形態にかかるプログラム作成支援装置の動作の一例を示すフローチャート
【図４】プログラム部品の入出力引数の生成指定画面の一例を示す図
【図５】置換処理実行後のシーケンスプログラムの確認用画面の一例を示す図
【図６】実施の形態にかかるプログラム作成支援装置のハードウェア構成を示す図
【発明を実施するための形態】
【００１３】
以下に、本発明の実施の形態にかかるプログラム作成支援装置、プログラム作成支援方法およびプログラム作成支援プログラムを図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１４】
以下の実施の形態において、「共通回路パターンＧ」と「共通のロジック部分Ｈ」とを以下のように区別して説明を行う。
・共通回路パターンＧ：シーケンスプログラムに共通して現れるロジックのパターン。
・共通のロジック部分Ｈ：共通回路パターンＧが現れるシーケンスプログラムの箇所（領域）。
以下の説明では、プログラム作成支援装置が取り扱うシーケンスプログラムがラダープログラムであるものとする。
【００１５】
実施の形態．
まず、本実施の形態にかかるプログラム作成支援装置の動作の概要について説明する。本実施の形態にかかるプログラム作成支援装置は、少なくとも以下に示す２つの機能を有し、これらの機能を用いて、ユーザによるシーケンスプログラムの作成を支援する。
【００１６】
第１の機能は、シーケンスプログラムの回路全体から部品化可能な共通のロジック部分Ｈを検索して表示する機能である。シーケンスプログラムであるラダープログラムは、接点またはコイルに相当する命令と、数値演算などに相当する応用命令とで構成されている。したがって、プログラム作成支援装置は、接点に相当する命令である接点相当命令、コイルに相当する命令であるコイル相当命令、および数値演算などに相当する応用命令のロジックのみで共通している共通回路パターンＧと、プログラム箇所（共通のロジック部分Ｈ）とを検索し表示する。検索された共通回路パターンＧが、プログラムコンポーネントであるプログラム部品（マクロ、サブルーチンなど）の候補である。
【００１７】
第２の機能は、第１の機能で検索した共通回路パターンＧの何れかがユーザによって選択されると、選択された共通回路パターンＧをプログラム部品に変換（部品化を実行）して登録する機能である。また、第２の機能は、第１の機能で検索した共通のロジック部分Ｈを、登録したプログラム部品のインスタンスで置き換えることで、シーケンスプログラムを自動的に部品化する。
【００１８】
ここで、上記の第１の機能において共通のロジック部分Ｈを検索する際、プログラム作成支援装置は、回路中の接点およびコイルといった各回路部品に対するデバイス割付が一致するかどうかという情報を保持しておく。つまり、抽出した共通回路パターンＧにおいて、その元となる共通のロジック部分Ｈの全てで、同じ座標に配置された回路部品に対するデバイス割付が一致するかどうかを付属情報として保持しておく。ここでの座標は、回路部品の回路パターン内の位置を示す。よって、同じ座標に配置された回路部品とは、共通回路パターンＧ内の同じ場所に配置された回路部品である。
【００１９】
また、上記の第２の機能においてプログラム部品を生成する際、プログラム作成支援装置は、第１の機能で共通のロジック部分Ｈを検索する際に保持しておいた付属情報に基づいて、プログラム部品の引数を決定する。具体的には、プログラム作成支援装置は、共通のロジック部分Ｈの間で、同じ座標に配置されているがデバイス割付が一致しない回路部品が存在する場合、この回路部品にデバイスを割付けるための引数を有するプログラム部品を生成する。
【００２０】
これにより、プログラム作成支援装置が生成するプログラム部品の入出力引数が必要以上に多くなるのを防止することができ、シーケンスプログラムの可読性および保守性を高めることができる。また、シーケンスプログラムの容量を削減することができる。
【００２１】
図１は、実施の形態にかかるプログラム作成支援装置によるプログラム部品の生成動作の概要を示す図である。
【００２２】
図１のフェーズ（Ａ）に示すように、プログラム作成支援装置は、シーケンスプログラム内から共通のロジック部分Ｈを抽出する。ここでは、プログラム作成支援装置は、回路ブロック２ａ〜４ａの配置されているブロックを共通のロジック部分Ｈとして抽出する。
【００２３】
さらに、図１のフェーズ（Ｂ）に示すように、プログラム作成支援装置は、回路ブロック２ａ〜４ａのロジックに基づいて、部品化可能な共通回路パターンＧを設定する。換言すると、プログラム作成支援装置は、回路ブロック２ａ〜４ａに共通なロジックを共通回路パターンＧに設定する。これにより、プログラム作成支援装置は、回路ブロック２ａ〜４ａを共通回路パターンＧとして扱う。
【００２４】
このとき、プログラム作成支援装置は、抽出した回路ブロック２ａ〜４ａにおいて、同じ座標の回路部品に対するデバイス割付が一致するかどうかを確認し、確認結果を示す情報（デバイス割付が一致するか否かを示す情報）を保持する。図１に示した例では、回路ブロック２ａ〜４ａの左上に位置する回路部品の座標を（０，０）とし、この部品の右隣に位置する回路部品の座標を（１，０）、さらに右隣に位置する回路部品の座標を（２，０）としている。また、左上に位置する回路部品の一つ下に位置する回路部品の座標を（０，１）、この部品の右隣に位置する回路部品の座標を（１，１）、さらに右隣に位置する回路部品の座標を（２，１）としている。なお、各回路部品の位置を示す座標の決め方はこれに限定されない。また、各回路部品の配置を座標で示すことは必須ではない。回路ブロック内の各回路部品の配置が分かるのであれば座標以外の情報を用いて各回路部品の配置を示してもよい。
【００２５】
図１に示した例では、座標が（０，０）および（１，１）の回路部品に対するデバイス割付が回路ブロック２ａ〜４ａの間で一致しておらず、その他の座標の回路部品に対するデバイス割付は回路ブロック２ａ〜４ａの間で一致している。そのため、プログラム作成支援装置は、フェーズ（Ｂ）において、座標が（０，０）および（１，１）の回路部品に対するデバイス割付が回路ブロック２ａ〜４ａの間で一致しておらず、座標が（１，０）、（２，０）、（０，１）および（２，１）の回路部品に対するデバイス割付が回路ブロック２ａ〜４ａの間で一致していることを示す情報を生成して保持する。なお、これ以降の説明では、必要に応じて、デバイス割付が全ての共通のロジック部分Ｈ（図１では回路ブロック２ａ〜４ａ）の間で一致している回路部品を第１の回路部品と称し、第１の回路部品に該当しない回路部品を第２の回路部品と称する。
【００２６】
次に、図１のフェーズ（Ｃ）に示すように、プログラム作成支援装置は、フェーズ（Ｂ）で生成して保持している情報に基づいて、プログラム部品の入出力引数の生成指定画面である画面１０１を表示装置に表示させる。そして、プログラム作成支援装置は、入出力引数を生成する回路部品の選択をユーザから受け付ける。ここで、デバイス割付が不一致の回路部品、すなわち、デバイス割付が回路ブロック２ａ〜４ａの間で完全には一致していない第２の回路部品については、必ず入出力引数を生成することとする。そのため、図１に示した画面１０１では、座標が（０，０）の回路部品および座標が（１，１）の回路部品については入出力引数を必ず生成することがユーザに分かるような表示を行い、ユーザによる選択操作を受け付けない構成としている。
【００２７】
プログラム作成支援装置は、入出力引数を生成する第１の回路部品のユーザによる選択が終了すると、フェーズ（Ｄ）に移行する。すなわち、プログラム作成支援装置は、入出力引数を生成する第１の回路部品の選択を終了する操作をユーザから受け付けると、プログラム部品への置き換え後のイメージ確認画面である画面１０２を表示装置に表示させる。図１に例示した画面１０２では、プログラム部品への置き換えを行う前のシーケンスプログラムを左側に表示し、プログラム部品への置き換えを行った後のシーケンスプログラムを右側に表示する構成としている。また、画面１０２では、どの回路ブロックがプログラム部品に置き換えられたのかが分かるように、プログラム部品と回路ブロックとを対応付けた表示内容としている。画面１０２の右側の表示内容は、フェーズ（Ｃ）においてユーザから受け付けた操作内容に従う。図１に例示した画面１０２では、座標が（２，０）の回路部品であるコイルに対する引数の生成がユーザにより選択された場合のプログラム部品が表示されている。
【００２８】
ユーザは、画面１０２を確認後、プログラム部品の生成および回路ブロックのプログラム部品への置き換えを行う場合、画面１０２の右下の「ＯＫ（実行）」ボタンを押下する。また、ユーザは、画面１０２を確認後、入出力引数を生成する回路部品の選択を再度行う場合、画面１０２の右下の「キャンセル」ボタンを押下する。「キャンセル」ボタンが押下されると、プログラム作成支援装置は、フェーズ（Ｃ）に戻る。
【００２９】
プログラム作成支援装置は、画面１０２の「ＯＫ（実行）」ボタンが押下されると、図１のフェーズ（Ｅ）に移行してプログラム部品であるＦＢ（Function  Block）を生成する。このとき、プログラム作成支援装置は、フェーズ（Ｄ）で表示装置に表示させた画面１０２の右側に示された構成のプログラム部品を生成する。
【００３０】
そして、プログラム部品の生成が終了すると、プログラム作成支援装置は、図１のフェーズ（Ｆ）に移行し、フェーズ（Ａ）で抽出した回路ブロック２ａ〜４ａを、フェーズ（Ｅ）で生成したプログラム部品に置き換えて回路ブロック２ｂ〜４ｂとする。
【００３１】
このような手順により、プログラム作成支援装置は、シーケンスプログラムからプログラム部品を生成し、さらに、シーケンスプログラムの回路ブロックのうち、生成したプログラム部品に置き換えが可能な回路ブロックをプログラム部品に置き換える。また、プログラム作成支援装置は、生成したプログラム部品を保持しておき、他のシーケンスプログラムの編集、他のシーケンスプログラムの開発などを行う際に使用できるようにする。
【００３２】
図２は、実施の形態にかかるプログラム作成支援装置を含んで構成されるプログラム作成システムの構成を示す図である。プログラム作成システム１００は、プログラム作成支援装置１、シーケンスプログラム作成装置２、シーケンスプログラム編集装置３および表示装置５を備える。なお、本実施の形態では、プログラム作成支援装置１、シーケンスプログラム作成装置２、シーケンスプログラム編集装置３および表示装置５が個別の装置であるものとして説明を行うが、これらの各装置が有する各機能を１つの装置、例えばパーソナルコンピュータなどの計算機システムで実現するようにしてもよい。
【００３３】
プログラム作成支援装置１は、上述したように、シーケンスプログラムから共通のロジック部分Ｈを抽出し、ユーザからの指示に従いプログラム部品を生成する。
【００３４】
シーケンスプログラム作成装置２は、シーケンサとも呼ばれるＰＬＣ（Programmable  Logic  Controller）システムなどで動作させるシーケンスプログラムを作成する装置である。シーケンスプログラム作成装置２は、作成したシーケンスプログラムをプログラム作成支援装置１に入力する。
【００３５】
シーケンスプログラム編集装置３は、プログラム作成支援装置１でプログラム部品に置き換えられたシーケンスプログラムを用いてシーケンスプログラムの編集を行う装置である。表示装置５は、液晶モニタなどであり、プログラム作成支援装置１からの指示に従って、シーケンスプログラム、共通回路パターンＧ、プログラム部品などを表示する。
【００３６】
プログラム作成支援装置１は、プログラム入力部１１と、プログラム格納部１２と、共通判定部１３と、検索結果記憶部１４と、検索結果表示処理部１５と、指示入力部１６と、プログラム部品登録部１７と、プログラム部品格納部１８と、部品化処理部１９と、出力部２０と、部品定義表示処理部２１と、部品化イメージ表示処理部２２とを備えている。
【００３７】
プログラム入力部１１は、シーケンスプログラム作成装置２から入力されるシーケンスプログラムを受け取り、受け取ったシーケンスプログラムをプログラム格納部１２に送る。
【００３８】
プログラム格納部１２は、共通のロジック部分Ｈが検索されるシーケンスプログラム（部品化対象のプログラム）を記憶しておくメモリなどである。プログラム格納部１２は、プログラム入力部１１からシーケンスプログラムを受け取ると、受け取ったシーケンスプログラムを保持する。また、プログラム格納部１２は、シーケンスプログラム編集装置３から要求を受けるなどした場合、要求されたシーケンスプログラムを出力部２０へ出力する。出力部２０へ出力されたシーケンスプログラムは、出力部２０からシーケンスプログラム編集装置３に受け渡される。また、プログラム格納部１２は、保持しているシーケンスプログラムを構成している回路ブロックのうち、プログラム部品の生成に用いられた回路ブロックが後述する部品化処理部１９によってプログラム部品に置き換えられる処理である置換処理が行われた場合、置換処理後のシーケンスプログラムを保持する。
【００３９】
共通判定部１３は、プログラム格納部１２に格納されているシーケンスプログラムを読み込んで、その中に共通のロジック部分Ｈがあるか否かを判定する。共通判定部１３は、共通のロジック部分Ｈがある場合、共通のロジック部分Ｈにおける共通のロジックを共通回路パターンＧとして抽出する。換言すると、共通判定部１３は、共通のロジック部分Ｈに配置されている回路パターンに共通して現れるロジックのパターンを共通回路パターンＧとして抽出する。なお、プログラム作成支援装置１は、シーケンスプログラムに共通のロジック部分Ｈが存在しているかを判定する際、公知のコードクローン検出手法などを利用する。コードクローン検出手法とは、プログラムを表すソースコードの中から、類似しているコード片を探し出す方法である。ソースコードを構成している、類似しているコード片がコードクローンと呼ばれる。
【００４０】
また、共通判定部１３は、共通のロジック部分Ｈ全てで、同じ座標に配置された回路部品に対するデバイス割付が一致するかどうかを確認し、確認結果を示す情報として、共通回路パターンＧの付属情報を生成する。共通判定部１３は、複数の共通のロジック部分Ｈに含まれる複数の回路部品のそれぞれについて、デバイス割付が全ての共通のロジック部分Ｈで一致しているか否かを確認し、確認結果を示す付属情報を生成する。付属情報は、共通のロジック部分Ｈに含まれる複数の回路部品のそれぞれについての確認結果を示す。例えば、共通のロジック部分Ｈが４つの回路部品＃１〜回路部品＃４を含む場合、付属情報は、回路部品＃１に対するデバイス割付が全ての共通のロジック部分Ｈで一致しているか否かの情報と、回路部品＃２に対するデバイス割付が全ての共通のロジック部分Ｈで一致しているか否かの情報と、回路部品＃３に対するデバイス割付が全ての共通のロジック部分Ｈで一致しているか否かの情報と、回路部品＃４に対するデバイス割付が全ての共通のロジック部分Ｈで一致しているか否かの情報と、を含んで構成される。
【００４１】
検索結果記憶部１４は、共通判定部１３が抽出した共通回路パターンＧの情報および付属情報を、検索結果として記憶しておくメモリなどである。すなわち、検索結果記憶部１４は、共通判定部１３で共通回路パターンＧが抽出されると、抽出された共通回路パターンＧの構成を示す情報と付属情報とを受け取り、受け取った各情報を検索結果として保持する。以下、共通回路パターンＧの構成を示す情報を構成情報と称する。
【００４２】
検索結果表示処理部１５は、検索結果記憶部１４が保持している検索結果を、一覧形式で表示装置５に表示させる。検索結果表示処理部１５は、表示中の検索結果内からユーザによって部品化する共通回路パターンＧが選択されると、選択された共通回路パターンＧの構成情報および付属情報を、共通回路パターンＧに関する情報として部品定義表示処理部２１に送る。
【００４３】
指示入力部１６は、ユーザによって入力される指示を受け取り、指示内容を示す情報を検索結果表示処理部１５、部品定義表示処理部２１および部品化イメージ表示処理部２２の一部または全てに出力する。ユーザによる指示は、検索に関する指示である検索指示、部品化に関する指示である部品指定指示、引数生成要否指示および部品化確定指示、または出力に関する指示である出力指示、などである。
【００４４】
検索指示は、シーケンスプログラム内から共通回路パターンＧを検索させる指示であり、指示入力部１６から共通判定部１３に送られる。部品指定指示は、検索結果の中から部品化する共通回路パターンＧを指定する指示であり、指示入力部１６から検索結果表示処理部１５に送られる。引数生成要否指示は、共通回路パターンＧに対するプログラム部品の入出力引数の生成要否を指定する指示であり、指示入力部１６から部品定義表示処理部２１に送られる。部品化確定指示は、シーケンスプログラム内の一部の回路ブロックをプログラム部品に置き換えた後のイメージの確認結果を基に、部品化を確定するかキャンセルするかを指定する指示である。部品化確定指示は、指示入力部１６から部品化イメージ表示処理部２２に送られる。出力指示は、シーケンスプログラムを外部装置であるシーケンスプログラム編集装置３などに出力させる指示であり、指示入力部１６から出力部２０に送られる。
【００４５】
プログラム部品登録部１７は、後述する部品化イメージ表示処理部２２からプログラム部品の定義情報が送られてくると、送られてきた定義情報に基づいて、共通回路パターンＧをプログラム部品に変換して部品化を行う。すなわち、プログラム部品登録部１７は、共通回路パターンＧおよび定義情報に基づいてプログラムコンポーネントであるプログラム部品を生成するプログラムコンポーネント生成部である。また、プログラム部品登録部１７は、生成したプログラム部品をプログラム部品格納部１８に登録する。
【００４６】
プログラム部品格納部１８は、プログラム部品登録部１７からの指示に従ってプログラム部品を格納するメモリなどである。プログラム部品格納部１８は、プログラム部品登録部１７から受け取ったプログラム部品を保持する。プログラム部品格納部１８は、部品化処理部１９がシーケンスプログラムの回路ブロックをプログラム部品に置換する処理を行う際、保持しているプログラム部品を部品化処理部１９に出力する。
【００４７】
部品化処理部１９は、プログラム格納部１２に格納されているシーケンスプログラムの中の共通のロジック部分Ｈを、プログラム部品格納部１８が保持しているプログラム部品に置き換える。部品化処理部１９は、置換後のシーケンスプログラムをプログラム格納部１２に記憶させる。
【００４８】
出力部２０は、指示入力部１６から出力指示が送られてきた場合、出力指示で指定されたシーケンスプログラムをプログラム格納部１２から読み出して外部装置であるシーケンスプログラム編集装置３に出力する。シーケンスプログラム編集装置３に加えて他の外部装置が出力部２０に接続されている場合、出力部２０は、出力指示で指定されたシーケンスプログラムを、出力指示で指定された外部装置に出力する。
【００４９】
部品定義表示処理部２１は、検索結果表示処理部１５から送られてきた共通回路パターンＧに関する情報に基づき、プログラム部品の入出力引数の生成指定画面（図１に示した画面１０１に相当）を表示装置５に表示させる。部品定義表示処理部２１は、プログラム部品の入出力引数の生成指定画面を表示させた状態で、生成する入出力引数の指定をユーザより受け付ける。部品定義表示処理部２１は、生成する入出力引数のユーザによる指定が終了すると、ユーザによる指定結果に基づいてプログラム部品の定義情報を生成し、生成した定義情報を部品化イメージ表示処理部２２に送る。
【００５０】
部品化イメージ表示処理部２２は、部品定義表示処理部２１から送られてきたプログラム部品の定義情報に基づき、共通のロジック部分Ｈをプログラム部品に置換後のシーケンスプログラムのイメージ（確認用画面）を作成し、表示装置５に表示させる。具体的には、部品化イメージ表示処理部２２は、図１に示した画面１０２に相当する画面を表示装置５に表示させる。また、部品化イメージ表示処理部２２は、置換後のシーケンスプログラムの確認用画面を表示装置５に表示させた状態で、実際に置換を行うか否かの判断結果の入力をユーザより受け付ける。部品化イメージ表示処理部２２は、置換を行うことを示す判断結果の入力を受け付けると、部品定義表示処理部２１から受け取ったプログラム部品の定義情報をプログラム部品登録部１７に送る。一方、部品化イメージ表示処理部２２は、置換を行わないことを示す判断結果の入力を受け付けると、判断結果を部品定義表示処理部２１に通知する。通知を受けた部品定義表示処理部２１は、プログラム部品の入出力引数の生成指定画面を表示装置５に再度表示させて、生成する入出力引数の指定をユーザより受け付ける。
【００５１】
図３は、実施の形態にかかるプログラム作成支援装置１の動作の一例を示すフローチャートである。図３のフローチャートは、プログラム作成支援装置１が、シーケンスプログラムからプログラム部品を作成し、共通のロジック部分Ｈをプログラム部品に置き換えたシーケンスプログラムを生成する場合の処理手順を示す。
【００５２】
プログラム作成支援装置１は、シーケンスプログラムをプログラム格納部１２で保持しているものとする。すなわち、プログラム作成支援装置１のプログラム入力部１１が、シーケンスプログラム作成装置２からシーケンスプログラムを受け取り、受け取ったシーケンスプログラムをプログラム格納部１２に格納する処理が完了しているものとする。
【００５３】
プログラム作成支援装置１は、共通のロジック部分Ｈの検索指示を受け付けて、プログラム部品化処理を開始する（ステップＳ１）。すなわち、ユーザによって、指示入力部１６から共通回路パターンＧ（共通のロジック部分Ｈ）の検索指示が入力されると、検索指示は、指示入力部１６から共通判定部１３に送られる。これにより、プログラム作成支援装置１はプログラム部品化処理を開始する。
【００５４】
共通判定部１３は、指示入力部１６から検索指示を受け取ると、プログラム格納部１２が保持しているシーケンスプログラムから共通回路パターンＧを抽出する。共通判定部１３は、例えば、シーケンスプログラムから共通のロジック部分Ｈを抽出し、この共通のロジック部分Ｈに配置されている回路ブロック（図１に示した回路ブロック２ａ〜４ａなど）から共通回路パターンＧを抽出する（ステップＳ２）。また、共通判定部１３は、抽出した共通のロジック部分Ｈを構成する各回路部品について、回路部品に対するデバイス割付が全ての共通のロジック部分Ｈで一致しているか否かを確認し、確認結果を示す付属情報を生成する。付属情報は、共通のロジック部分Ｈを構成する回路部品のそれぞれが、第１の回路部品および第２の回路部品のどちらに該当するかを示す情報である。
【００５５】
共通判定部１３は、共通回路パターンＧの抽出および付属情報の生成が終了すると、抽出した共通回路パターンＧの構成情報および付属情報と、この共通回路パターンＧの件数とを対応付けして検索結果記憶部１４に格納する（ステップＳ３）。
【００５６】
また、共通判定部１３は、共通のロジック部分Ｈの場所と、共通のロジック部分Ｈが抽出されたシーケンスプログラムを識別する情報であるプログラム識別情報とを対応付けして部品化処理部１９に送る。共通のロジック部分Ｈの場所は、たとえば、ラダープログラムの行番号である。
【００５７】
検索結果記憶部１４は共通判定部１３から情報を受け取ると、受け取った情報を記憶する。検索結果表示処理部１５は、共通判定部１３から出力された情報が検索結果記憶部１４に格納されると、検索結果記憶部１４が保持している情報に基づいて、共通判定部１３により抽出された共通回路パターンＧの構成および件数を表示装置５に一覧表示させる。表示装置５は、例えば、図１に示した共通回路パターンＧと、その件数（図１では３件）を表示する（ステップＳ４）。共通判定部１３から出力された情報が検索結果記憶部１４に格納されたか否かは、例えば、検索結果表示処理部１５が検索結果記憶部１４の状態を定期的に確認することにより把握する。なお、共通判定部１３が、情報を検索結果記憶部１４に格納したことを検索結果表示処理部１５に通知してもよい。
【００５８】
ステップＳ４を実行後、プログラム作成支援装置１は、ユーザによって、部品化する共通回路パターンＧが選択されるのを待つ。指示入力部１６は、部品化する共通回路パターンＧの選択をユーザより受け付けると（ステップＳ５）、選択された共通回路パターンＧを示す部品指定指示を生成して検索結果表示処理部１５に送る。検索結果表示処理部１５は、部品指定指示が示す共通回路パターンＧの構成情報および付属情報を検索結果記憶部１４から読み出して、部品定義表示処理部２１に送る。
【００５９】
部品定義表示処理部２１は、共通回路パターンＧの構成情報および付属情報を検索結果表示処理部１５から受け取ると、受け取った情報に基づいて、ステップＳ５でユーザに選択された共通回路パターンＧに対応するプログラム部品の入出力引数の生成指定画面を表示装置５に表示させる（ステップＳ６）。部品定義表示処理部２１は、ステップＳ６において、例えば、図４に示した内容の画面をプログラム部品の入出力引数の生成指定画面として表示装置５に表示させる。図４は、プログラム部品の入出力引数の生成指定画面の一例を示す図である。プログラム部品の入出力引数の生成指定画面は、プログラム部品の入出力引数として生成する引数をユーザに指定させる場合に表示される。すなわち、プログラム作成支援装置１は、プログラム部品の入出力引数として生成する引数の指定をユーザから受け付ける場合にプログラム部品の入出力引数の生成指定画面を表示装置５に表示させる。図４に例示したプログラム部品の入出力引数の生成指定画面（以下、画面１０１と記載する）は、「座標」、「回路記号」、「デバイス割付の一致・不一致」および「入出力引数の生成要否」を含む。「座標」は、共通回路パターンＧに含まれる各回路部品の共通回路パターンＧにおける位置を示す。「回路記号」は、同じ行の「座標」が示す位置に存在する回路部品の種類を示す。「デバイス割付の一致・不一致」は、同じ行の「座標」が示す位置に存在する回路部品に対するデバイス割付が、共通のロジック部分Ｈの全てにおいて一致しているか否かを示す。すなわち、「デバイス割付の一致・不一致」は、同じ行の「座標」が示す位置に存在する回路部品が第１の回路部品および第２の回路部品のどちらに該当するのかを示す。「デバイス割付の一致・不一致」が「一致」となっている回路部品（第１の回路部品）については、回路部品に割付けられているデバイスを合わせて表示するようにしている。例えば、座標が（１，０）の回路部品に割付けられているデバイスは「Ｍ２」である。「入出力引数の生成要否」は、同じ行の「座標」が示す位置に存在する回路部品にデバイスを割付けるための入出力引数を生成するか否かを示す。ユーザは、表示装置５に画面１０１が表示されている状態のときに、マウスなどの入力装置を操作して「入出力引数の生成要否」の項目にチェックを入れる、またはチェックを外すことで、生成する入出力引数の指定を変更する。ただし、「デバイス割付の一致・不一致」が「不一致」となっている回路部品（第２の回路部品）については入出力引数の生成が必須である。そのため、プログラム作成支援装置１は、「デバイス割付の一致・不一致」が「不一致」となっている回路部品の「入出力引数の生成要否」はチェックが入った状態で固定とし、ユーザによるチェックを外す操作を受け付けることはしない。
【００６０】
ステップＳ６を実行後、プログラム作成支援装置１は、図４に示した画面１０１を表示装置５に表示させた状態で、ユーザによって、プログラム部品の生成する入出力引数が選択され、選択操作が終了するのを待つ。指示入力部１６は、ユーザによる選択操作が終了すると、すなわち、生成する入出力引数の選択をユーザより受け付けると（ステップＳ７）、選択された入出力引数を示す引数生成要否指示を生成して部品定義表示処理部２１に送る。指示入力部１６は、例えば、図４では記載を省略している選択操作終了ボタンがユーザにより押下された場合、引数生成要否指示を生成する。ここでは、図４に示した画面１０１の内容に従って引数生成要否指示を生成するものとして説明を続ける。すなわち、ユーザが、座標（２，０）のコイルに対してデバイスを割付けるための入出力引数の生成を指定したものとして説明を続ける。この場合、引数生成要否指示は、座標（０，０）のａ接点、座標（２，０）のコイルおよび座標（１，１）のｂ接点にそれぞれに対してデバイスを割付けるための入出力引数の生成を指定する情報を含む。なお、上記のステップＳ６およびＳ７を実行する部品定義表示処理部２１および指示入力部１６は、第１の回路部品の中から、共通のロジック部分Ｈがプログラム部品に置き換えられた後に入出力引数を用いたデバイス割付が必要な第１の回路部品をユーザに選択させる選択受付部を構成する。
【００６１】
部品定義表示処理部２１は、引数生成要否指示を受け取ると、受け取った引数生成要否指示と、検索結果表示処理部１５から受け取って保持している共通回路パターンＧの構成情報とを、部品化イメージ表示処理部２２に送る。
【００６２】
部品化イメージ表示処理部２２は、部品定義表示処理部２１から引数生成要否指示と、共通回路パターンＧの構成情報とを受け取ると、受け取った情報を保持する。また、部品化イメージ表示処理部２２は、部品定義表示処理部２１から受け取った情報と、プログラム格納部１２で保持されているシーケンスプログラムとに基づいて、共通のロジック部分Ｈをプログラム部品に置き換えた後のシーケンスプログラムの確認用画面を表示装置５に表示させる（ステップＳ８）。部品化イメージ表示処理部２２は、ステップＳ８において、例えば、図５に示した内容の画面を置換処理実行後のシーケンスプログラムの確認用画面として表示装置５に表示させる。図５は、置換処理実行後のシーケンスプログラムの確認用画面の一例を示す図である。置換処理実行後のシーケンスプログラムの確認用画面は、共通のロジック部分Ｈがプログラム部品で置き換えられた後のシーケンスプログラムの構成を確認するための画面である。すなわち、部品化イメージ表示処理部２２は、プログラム部品で置き換えられた後のシーケンスプログラムの構成を確認するための画面を表示装置５に表示させる確認表示処理部である。図５に示した置換処理実行後のシーケンスプログラムの確認用画面（以下、画面１０２と記載する）は、置換前のシーケンスプログラムと、置換後のシーケンスプログラムとを横に並べた構成である。画面１０２の左側が、共通のロジック部分Ｈをプログラム部品に置き換える前のシーケンスプログラム（置換前のプログラム）、画面１０２の右側が、共通のロジック部分Ｈをプログラム部品に置き換えた後のシーケンスプログラム（置換後のプログラム）である。部品化イメージ表示処理部２２は、置換前のシーケンスプログラムのサイズおよび置換後のシーケンスプログラムのサイズを計算して画面１０２に表示させてもよい。この場合、共通のロジック部分Ｈをプログラム部品に置換することによるプログラムサイズの削減効果をユーザが事前に知ることが可能となり、置換を実行するか否かの判断材料とすることができる。図５では、１つの共通のロジック部分Ｈについて、プログラム部品に置き換えた後のシーケンスプログラムの構成を表示する画面の例を示したが、複数の共通のロジック部分Ｈについて、プログラム部品に置き換えた後のシーケンスプログラムの構成を表示するようにしてもよい。また、部品化イメージ表示処理部２２は、ユーザからの操作に従い画面１０２の表示を上下にスクロールさせ、共通のロジック部分Ｈのすべてについて、プログラム部品に置き換えた後のシーケンスプログラムの構成をユーザが確認できるようにしてもよい。
【００６３】
ステップＳ８を実行後、プログラム作成支援装置１は、図５に示した画面１０２を表示装置５に表示させた状態で、ユーザによって、プログラム部品による共通のロジック部分Ｈの置き換えを実行するか否かが選択されるのを待つ（ステップＳ９）。指示入力部１６は、画面１０２の右下の「ＯＫ（実行）」ボタンが押下されると、すなわち、プログラム部品による共通のロジック部分Ｈの置き換えの実行が選択されると（ステップＳ９：実行）、部品化確定指示を生成して部品化イメージ表示処理部２２に送る。また、指示入力部１６は、画面１０２の右下の「キャンセル」ボタンが押下されると、すなわち、プログラム部品による共通のロジック部分Ｈの置き換えを実行しないことが選択されると（ステップＳ９：キャンセル）、キャンセル指示を生成して部品化イメージ表示処理部２２に送る。
【００６４】
部品化イメージ表示処理部２２は、キャンセル指示を受け取ると、受け取ったキャンセル指示を部品定義表示処理部２１に送り、画面１０２の表示装置５への表示を終了する。部品定義表示処理部２１は、部品化イメージ表示処理部２２経由でキャンセル指示を受け取った場合、画面１０１を表示装置５に表示させる。そして、部品定義表示処理部２１は、ユーザによって、プログラム部品の生成する入出力引数が選択され、選択操作が終了するのを再度待つ。このように、図５に示した画面１０２の右下の「キャンセル」ボタンがユーザにより押下された場合、プログラム作成支援装置１は、ステップＳ７に戻る。
【００６５】
一方、部品化イメージ表示処理部２２は、部品化確定指示を受け取ると、部品定義表示処理部２１から受け取って保持しておいた情報、具体的には、引数生成要否指示と、共通回路パターンＧの構成情報とをプログラム部品登録部１７に送る。
【００６６】
プログラム部品登録部１７は、部品化イメージ表示処理部２２から引数生成要否指示と、共通回路パターンＧの構成情報とを受け取ると、ステップＳ５で選択された共通回路パターンＧをプログラム部品に変換する（ステップＳ１０）。具体的には、プログラム部品登録部１７は、部品化イメージ表示処理部２２から受け取った、共通回路パターンＧの構成情報が表す共通回路パターンＧを、引数生成要否指示が示す入出力引数を有するプログラム部品に変換することでプログラム部品を作成する。プログラム部品登録部１７は、変換したプログラム部品をプログラム部品格納部１８に格納する（ステップＳ１１）。このように、ユーザによって選択された共通回路パターンＧが、プログラム部品としてプログラム部品格納部１８に格納される。
【００６７】
プログラム部品格納部１８は、プログラム部品登録部１７からプログラム部品を受け取ると、受け取ったプログラム部品を記憶する。部品化処理部１９は、プログラム部品登録部１７により作成されたプログラム部品がプログラム部品格納部１８に格納されると、プログラム格納部１２が保持しているシーケンスプログラムの中にある共通のロジック部分Ｈを、プログラム部品格納部１８に格納されているプログラム部品に置き換える（ステップＳ１２）。部品化処理部１９は、共通のロジック部分Ｈをプログラム部品で置き換える際に、置き換えたプログラム部品の入出力引数の割付を行う。このとき、部品化処理部１９は、共通判定部１３から受け取って保持しておいた情報、具体的には、共通のロジック部分Ｈの場所と、共通のロジック部分Ｈが抽出されたシーケンスプログラムのプログラム識別情報とに基づいて、プログラム識別情報が示すシーケンスプログラムの共通のロジック部分Ｈをプログラム部品に置き換える。具体的には、部品化処理部１９は、プログラム識別情報に基づいて、プログラム格納部１２内から部品化対象のシーケンスプログラムを抽出する。そして、部品化処理部１９は、抽出したシーケンスプログラムの共通のロジック部分Ｈにある回路パターンを、プログラム部品格納部１８が保持しているプログラム部品で置き換える。プログラム部品がプログラム部品格納部１８に格納されたか否かは、例えば、部品化処理部１９がプログラム部品格納部１８の状態を定期的に確認することにより把握する。なお、プログラム部品登録部１７が、プログラム部品をプログラム部品格納部１８に格納したことを部品化処理部１９に通知してもよい。
【００６８】
シーケンスプログラムの少なくとも一部がプログラム部品によって置き換えられた後、置換後のシーケンスプログラムは、プログラム格納部１２に格納される。この後、ユーザが指示入力部１６に出力指示を入力すると、この出力指示は指示入力部１６から出力部２０に送られる。出力部２０は、出力指示で指定されたシーケンスプログラムをプログラム格納部１２から抽出してシーケンスプログラム編集装置３に送る。これにより、シーケンスプログラム編集装置３では、ユーザの指示に従ってシーケンスプログラムの編集が行われる。
【００６９】
プログラム作成支援装置１は、図３のステップＳ１２を実行した後、ステップＳ４に戻って動作を継続するようにしてもよい。この場合、検索結果表示処理部１５は、ステップＳ４において共通回路パターンＧの構成および件数を表示装置５に一覧表示させる際、過去に実行したステップＳ５で選択された共通回路パターンＧ、すなわち、プログラム部品への部品化が済んでいる共通回路パターンＧについては一覧表示に含めないようにする。
【００７０】
なお、本実施の形態では、ユーザによって指定された共通回路パターンＧを部品化したが、プログラム部品登録部１７は、共通判定部１３で抽出された全ての共通回路パターンＧを部品化してもよい。この場合、プログラム作成支援装置１は、例えば、図３に示したステップＳ６〜Ｓ９の処理を繰り返し実行し、全ての共通回路パターンＧについてステップＳ６〜Ｓ９の処理が終了すると、ステップＳ１０〜Ｓ１２を実行する。
【００７１】
また、本実施の形態において、プログラム作成支援装置１は、上記のステップＳ６およびＳ７において、プログラム部品の入出力引数をユーザに選択させるようにしたが、ユーザによる選択を受け付けない構成としてもよい。すなわち、共通回路パターンＧに含まれる回路部品のうち、共通のロジック部分Ｈの全てでデバイス割付が一致している回路部品（第１の回路部品）については入出力引数を生成しないこととして、プログラム部品の入出力引数の数が最小となるようにしてもよい。この場合、プログラム作成支援装置１は、上記のステップＳ５に続いてステップＳ１０を実行する。このとき、検索結果表示処理部１５は、ステップＳ５でユーザに選択された共通回路パターンＧの構成情報および付属情報を検索結果記憶部１４から読み出して、プログラム部品登録部１７に送る。
【００７２】
また、本実施の形態では、プログラム作成支援装置１が取り扱うシーケンスプログラムがラダープログラムである場合の例について説明したが、シーケンスプログラムをラダープログラムに限定するものではない。
【００７３】
また、プログラム作成支援装置１は、特許文献１に記載の発明と同様に、共通回路パターンＧとして抽出するブロックのサイズをユーザに指定させるようにしてもよい。
【００７４】
以上のように、本実施の形態にかかるプログラム作成支援装置１は、シーケンスプログラムを解析して構成が同じ回路パターンが複数存在するか否かを確認し、構成が同じ回路パターンである共通回路パターンＧを抽出し、抽出した共通回路パターンＧを表すプログラム部品を生成する。そして、プログラム作成支援装置１は、シーケンスプログラムに含まれる共通回路パターンＧを、生成したプログラム部品に置き換える。また、プログラム作成支援装置１は、共通回路パターンＧを抽出した後、共通回路パターンＧに含まれる回路部品のそれぞれについて、抽出した全ての共通回路パターンＧの間でデバイス割付が一致するか否かを確認し、確認結果を示す付属情報を生成する。そして、プログラム作成支援装置１は、プログラム部品を生成する際、全ての共通回路パターンＧの間でデバイス割付が一致している第１の回路部品については、ユーザから指示された場合を除いて、デバイス割付を行うための入出力引数を生成しないこととした。これにより、プログラム部品の入出力引数の数を削減できる。この結果、シーケンスプログラムの可読性および保守性を高めることが可能となる。
【００７５】
次に、プログラム作成支援装置１のハードウェア構成について説明する。図６は、実施の形態にかかるプログラム作成支援装置１のハードウェア構成を示す図である。プログラム作成支援装置１は、ＣＰＵ（Central  Processing  Unit）９１、ＲＯＭ（Read  Only  Memory）９２、ＲＡＭ（Random  Access  Memory）９３、通信インタフェース９４および入力部９５を有している。プログラム作成支援装置１では、これらのＣＰＵ９１、ＲＯＭ９２、ＲＡＭ９３、通信インタフェース９４および入力部９５がバスラインＢを介して接続されている。入力部９５は、マウスやキーボードを備えて構成される。また、ＲＯＭ９２にはプログラム９０が格納されている。プログラム９０は、ＣＰＵ９１が共通判定部１３、検索結果表示処理部１５、プログラム部品登録部１７、部品化処理部１９、部品定義表示処理部２１および部品化イメージ表示処理部２２として動作するためのプログラムである。通信インタフェース９４は、プログラム作成支援装置１がシーケンスプログラム作成装置２、シーケンスプログラム編集装置３などの他の機器との間で通信用の信号を送受信するための処理回路であり、例えばネットワークインタフェースカードである。バスラインＢには表示装置５も接続されている。
【００７６】
図２に示したプログラム作成支援装置１の各構成要素のうち、共通判定部１３、検索結果表示処理部１５、プログラム部品登録部１７、部品化処理部１９、部品定義表示処理部２１および部品化イメージ表示処理部２２は、ＣＰＵ９１およびＲＯＭ９２により実現される。すなわち、ＣＰＵ９１が、ＲＯＭ９２に格納されたプログラム９０をＲＯＭ９２から読み出して実行することにより、上記の各構成要素が実現される。
【００７７】
また、図２に示したプログラム作成支援装置１のプログラム格納部１２、検索結果記憶部１４およびプログラム部品格納部１８は、ＲＡＭ９３により実現される。図２に示したプログラム作成支援装置１のプログラム入力部１１および出力部２０は通信インタフェース９４により実現される。図２に示したプログラム作成支援装置１の指示入力部１６は、入力部９５により実現される。
【００７８】
なお、ここでは、プログラム作成支援装置１の共通判定部１３、検索結果表示処理部１５、プログラム部品登録部１７、部品化処理部１９、部品定義表示処理部２１および部品化イメージ表示処理部２２として動作するためのプログラム（プログラム９０）が予めＲＯＭ９２に格納されているものとしたがこれに限定されない。上記のプログラム９０は、ＣＤ（Compact  Disc）−ＲＯＭ、ＤＶＤ（Digital  Versatile  Disc）−ＲＯＭなどの記録媒体に書き込まれた状態でユーザに供給され、プログラム作成支援装置１を実現するハードウェアにユーザがインストールを行う形態であってもよい。この場合、プログラム作成支援装置１を実現するハードウェアは、記録媒体からプログラムを読み出すための読み取り装置、または、読み取り装置を接続するためのインタフェース回路を含む構成となる。また、上記のプログラム９０は、インターネットなどの通信回線を介して提供される形態であってもよい。
【００７９】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【００８０】
１  プログラム作成支援装置、２  シーケンスプログラム作成装置、３  シーケンスプログラム編集装置、５  表示装置、２ａ〜４ａ，２ｂ〜４ｂ  回路ブロック、１１  プログラム入力部、１２  プログラム格納部、１３  共通判定部、１４  検索結果記憶部、１５  検索結果表示処理部、１６  指示入力部、１７  プログラム部品登録部、１８  プログラム部品格納部、１９  部品化処理部、２０  出力部、２１  部品定義表示処理部、２２  部品化イメージ表示処理部、１００  プログラム作成システム。
【要約】
プログラム作成支援装置（１）は、シーケンスプログラム内の回路全体から共通のロジック部分を抽出し、抽出した共通のロジック部分に含まれる回路部品について、同じ位置の回路部品に対するデバイス割付が全ての共通のロジック部分で一致しているか否かを示す付属情報を生成する共通判定部（１３）と、共通のロジック部分と付属情報とに基づいてプログラムコンポーネントを生成するプログラムコンポーネント生成部（プログラム部品登録部（１７））と、シーケンスプログラム内の共通のロジック部分の各々を、プログラムコンポーネントとプログラムコンポーネントの入出力引数に接続する回路部品とで置き換える置換部（部品化処理部（１９））と、を備え、プログラムコンポーネント生成部は、同じ位置の回路部品に対するデバイス割付が全ての共通のロジック部分で一致している回路部品については、ユーザが入出力引数を生成するか否かを選択することができる。【図１】
0006664563.tif 000002
【図２】
0006664563.tif 000003
【図３】
0006664563.tif 000004
【図４】
0006664563.tif 000005
【図５】
0006664563.tif 000006
【図６】
0006664563.tif 000007