(57)【特許請求の範囲】
【請求項１】
流用元プログラム中の部品化を行う部品化対象プログラムで使用される流用元変数に付加し、前記部品化対象プログラムの挿入先の流用先プログラム全体で一意となるように識別子を生成する識別子生成手段と、
前記部品化対象プログラムに存在する前記流用元変数の名称と前記識別子とを組み合わせた名称を有する新規変数を前記流用先プログラムに追加するとともに、前記部品化対象プログラムの前記流用元変数と前記新規変数とを対応付けた変数対応付け情報を生成する新規変数生成手段と、
前記部品化対象プログラムで使用される前記流用元変数を、前記変数対応付け情報に基づいて前記新規変数に置換して、流用プログラムを生成する流用プログラム生成手段と、
前記流用プログラムを前記流用先プログラムに挿入するプログラム挿入手段と、
を備えることを特徴とするプログラム開発支援装置。
【請求項２】
前記部品化対象プログラムで使用される前記新規変数の読出しまたは書込みの使用状況を解析して、処理開始時に値の読出しを必要とする前記新規変数と、処理終了時に値が書込みされる前記新規変数とに分別する変数解析手段と、
前記流用プログラムを表示手段上でブロック表示にするとともに、読出し側の前記新規変数を前記ブロック内での入力ピンに表示し、書込み側の前記新規変数を前記ブロック内での出力ピンに表示する流用プログラムブロック表示手段と、
をさらに備えることを特徴とする請求項１に記載のプログラム開発支援装置。
【請求項３】
前記流用プログラムブロック表示手段は、前記入力ピンと前記出力ピンに表示される前記新規変数の名称を識別子と流用元変数とに分け、前記識別子をブロック名として前記ブロックに表示するとともに、前記入力ピンには、前記読み出し側の新規変数の名称のうちの前記流用元変数を表示し、前記出力ピンには、前記書込み側の新規変数の名称のうちの前記流用元変数を表示することを特徴とする請求項２に記載のプログラム開発支援装置。
【請求項４】
前記流用プログラムについて、前記識別子の名称、または前記流用プログラムで使用される前記新規変数の名称、種別もしくはデータ型を変更する編集画面を表示手段に表示させ、前記編集画面で編集された内容を前記流用プログラムに反映させる流用プログラム編集手段をさらに備えることを特徴とする請求項１に記載のプログラム開発支援装置。
【請求項５】
前記流用プログラムとファンクションブロックとの間の変換を行う流用プログラム−ファンクションブロック変換手段をさらに備えることを特徴とする請求項１に記載のプログラム開発支援装置。
【請求項６】
流用元プログラム中の部品化を行う部品化対象プログラムで使用される流用元変数に付加し、前記部品化対象プログラムの挿入先の流用先プログラム全体で一意となるように識別子を生成する工程と、
前記部品化対象プログラムに存在する前記流用元変数の名称と前記識別子とを組み合わせた名称を有する新規変数を前記流用先プログラムに追加する工程と、
前記部品化対象プログラムの前記流用元変数と前記新規変数とを対応付けた変数対応付け情報を生成する工程と、
前記部品化対象プログラムで使用される前記流用元変数を、前記変数対応付け情報に基づいて前記新規変数に置換して、流用プログラムを生成する工程と、
前記流用プログラムを前記流用先プログラムに挿入する工程と、
を含むことを特徴とするプログラム開発支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラム開発支援装置およびその方法に関するものである。
【背景技術】
【０００２】
ＦＡ（Factory  Automation）分野の制御装置としてプログラマブルコントローラ（以下、ＰＬＣという）が用いられている。このＰＬＣのプログラミングコストが、ＦＡシステムにおける開発コストの大部分を占めるようになってきている。
【０００３】
こうした中、ＰＬＣのプログラミングに関する標準規格ＩＥＣ６１１３１−３（ＪＩＳＢ３５０３）が策定された。ＩＥＣ６１１３１−３は単なるプログラミング言語の規格であるだけではなく、プログラムの構成要素、変数の定義も標準化されている。これによりメーカや機種に依存することなくソフトウェアの開発ができるようになった。
【０００４】
ＩＥＣ６１１３１−３が普及するにつれ、プログラムの開発において、プログラムの品質と開発効率を高めるためにプログラムの標準化、部品化、または構造化が進められている。標準化の一つの流れとして、プログラムのファンクションブロック（Function  Block：以下、ＦＢという）化がある。
【０００５】
ＰＬＣプログラムの構成要素には、プログラムと、複数のプログラムの集まりであるプロジェクトと、プログラム内の複数の命令をまとめて１つのブロックとしたＦＢと、がある。ＦＢは、実行するたびに動作するコードと、内部メモリの状態により制御処理を行うものである。ＦＢ内で使用される変数の種類には、入力変数、出力変数、内部変数および外部変数がある。
【０００６】
入力変数は、ＦＢの入力パラメータの役割を果たし、ＦＢ外から値を受け取るための変数である。出力変数は、ＦＢの出力パラメータの役割を果たし、ＦＢの演算結果の値をＦＢ外へ引き渡すための変数である。入力変数および出力変数は、プログラムの図上ではそれぞれ入力ピンおよび出力ピンとして表示される。
【０００７】
内部変数は、ＦＢ内やＦＢが存在するプログラム内でのみ使用できる変数であり、外部プログラムから値の参照や変更することはできない。
【０００８】
外部変数は、グローバル変数をＦＢ内から参照するための変数である。ここで、グローバル変数とは、ＦＢ内で使う変数ではなく、プロジェクトのどのプログラムからも参照できる変数のことである。外部変数は、同じ変数名のグローバル変数を参照し、この値を、外部変数が宣言されているプログラムで使用するための変数である。
【０００９】
ここで、プログラムをＦＢ化する場合、ＦＢ型の定義およびＦＢ内に存在する変数の種別を設定する必要があり、手続きが煩雑であった。そこで、この手続きの煩雑さを解消するＰＬＣのプログラム開発支援装置が提案されている（たとえば、特許文献１参照）。この特許文献１の手法によれば、プログラムのＦＢ化の際に自動でＦＢ型やＦＢ内に存在する変数の種別が自動で設定される。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００８−３３９１３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１に記載の技術では、ＦＢ内の変数は、入力変数、出力変数および内部変数のうちのいずれかに割り振られるのみである。すなわち、ＦＢ内で外部変数として使用される変数があっても、外部変数に自動で設定されないという問題点があった。そのため、流用元プログラムの変数である外部変数をＦＢ内で使用したい場合には、ＦＢの内部変数とのデータ交換のためのプログラムを作成しなければならなかった。
【００１２】
この発明は上記に鑑みてなされたもので、煩雑な手続きやプログラムを追加すること無しに、外部変数を含めてプログラムの部品化を簡単に行うことが可能なプログラム開発支援装置およびその方法を得ることを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、この発明にかかるプログラム開発支援装置は、流用元プログラム中の部品化を行う部品化対象プログラムで使用される流用元変数に付加し、前記部品化対象プログラムの挿入先の流用先プログラム全体で一意となるように識別子を生成する識別子生成手段と、前記部品化対象プログラムに存在する前記流用元変数の名称と前記識別子とを組み合わせた名称を有する新規変数を前記流用先プログラムに追加するとともに、前記部品化対象プログラムの前記流用元変数と前記新規変数とを対応付けた変数対応付け情報を生成する新規変数生成手段と、前記部品化対象プログラムで使用される前記流用元変数を、前記変数対応付け情報に基づいて前記新規変数に置換して、流用プログラムを生成する流用プログラム生成手段と、前記流用プログラムを前記流用先プログラムに挿入するプログラム挿入手段と、を備えることを特徴とする。
【発明の効果】
【００１４】
この発明によれば、流用元プログラムで使用されている流用元変数は、流用先プログラムにおいて一意となる変数名に置換され、流用先プログラムに変数として追加されるようにしたので、既存の流用元プログラムにある処理を流用しながらも、流用先プログラムごとに変数の状態を持つことができ、ＦＢ化によるプログラムの流用と同等の動作を得ることができる。また、追加された新規変数は、流用先プログラムの変数として追加されるため、流用先プログラム内の別の箇所でそのまま使用できる。そのため、データ交換のプログラミングが不要になるという効果を有する。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施の形態１によるプログラム開発支援装置の構成の一例を模式的に示すブロック図である。
【図２】図２は、実施の形態１によるプログラム開発支援方法の処理手順の一例を示すフローチャートである。
【図３】図３は、実施の形態１によるプログラム開発支援方法の処理手順の一例を模式的に示す図である。
【図４】図４は、従来のプログラムをＦＢ化する際の様子を模式的に示す図である。
【図５】図５は、実施の形態２によるプログラム開発支援装置の構成の一例を模式的に示すブロック図である。
【図６】図６は、実施の形態２によるプログラム開発支援方法の処理手順の一例を示すフローチャートである。
【図７】図７は、流用プログラム中の変数の使用状況を示す図である。
【図８】図８は、流用プログラムのブロック表示の一例を示す図である。
【図９】図９は、実施の形態３によるプログラム開発支援方法の処理手順の一例を示すフローチャートである。
【図１０】図１０は、流用プログラムのブロック表示の一例を示す図である。
【図１１】図１１は、実施の形態４によるプログラム開発支援装置の構成の一例を模式的に示すブロック図である。
【図１２】図１２は、編集画面の一例を示す図である。
【図１３】図１３は、実施の形態４による流用プログラムの変更処理の様子を模式的に示す図である。
【図１４】図１４は、実施の形態４による流用プログラムの変更処理の様子を模式的に示す図である。
【図１５】図１５は、実施の形態５によるプログラム開発支援装置の構成の一例を模式的に示すブロック図である。
【図１６】図１６は、実施の形態５による部品化した流用プログラムをＦＢに変換する処理手順の一例を示すフローチャートである。
【図１７】図１７は、実施の形態５によるＦＢを部品化したプログラムに変換する処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下に添付図面を参照して、この発明にかかるプログラム開発支援装置およびその方法の好適な実施の形態を詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
【００１７】
実施の形態１．
実施の形態１では、既に作成されているプログラム中で、多く流用されることが見込まれる部分を部品化して、再利用可能な構成とするプログラム開発支援装置およびその方法について説明する。
【００１８】
図１は、実施の形態１によるプログラム開発支援装置の構成の一例を模式的に示すブロック図である。プログラム開発支援装置１０は、入力部１１と、表示部１２と、プログラム部品化情報取得部１３と、識別子生成部１４と、新規変数生成部１５と、流用プログラム生成部１６と、プログラム挿入部１７と、これらの各処理部を制御する制御部１８と、を備える。
【００１９】
入力部１１は、キーボードまたはポインティングデバイスなどのユーザとの間の入力インタフェースである。表示部１２は、液晶表示装置などのユーザに対して情報を表示する装置である。
【００２０】
プログラム部品化情報取得部１３は、プログラムを部品化するに当たって必要なプログラム部品化情報を取得する。プログラム部品化情報として、たとえばユーザによって指定される流用したい部品化対象プログラムを含む流用元プログラムと、流用元プログラム中の部品化対象プログラムと、部品化対象プログラムの挿入先である流用先プログラムの挿入位置と、を挙げることができる。プログラム部品化情報取得部１３は、流用元プログラムを、たとえば流用元プログラムが格納されたプログラマブルコントローラ、またはデータベースなどから取得する。また、部品化対象プログラムは、流用元プログラムから部品化したい箇所がユーザによって入力部１１を介して選択されることによって取得される。流用先プログラム挿入位置は、ユーザによって入力部１１を介して流用先プログラム中の挿入位置が選択されることによって取得される。
【００２１】
識別子生成部１４は、選択された部品化対象プログラムで、流用先のプログラム全体で一意となる識別子を生成する。
【００２２】
新規変数生成部１５は、選択された部品化対象プログラムに存在する変数を解析し、所定の規則にしたがって選択される変数に対して、変数の名称に識別子生成部１４で生成された識別子を組み合わせて新規変数を生成する。また、新規変数生成部１５は、生成した新規変数を流用先プログラムに追加し、部品化対象プログラムに元々含まれている変数と、追加した新規変数と、を対応付ける変数対応付け情報を生成する。なお、この実施の形態１では、新規変数生成部１５は、ＬＤ命令またはＬＤＩ命令の引数になっている変数と、ＭＯＶ命令の第２引数になっている変数を、置換対象の変数として抽出する。
【００２３】
流用プログラム生成部１６は、新規変数生成部１５によって生成された変数対応付け情報に基づいて部品化対象プログラム中の変数を新規変数に置換し、流用プログラムを生成する処理を行う。
【００２４】
プログラム挿入部１７は、流用プログラム生成部１６によって生成された流用プログラムを、流用先プログラムのユーザによって選択された領域に挿入する。
【００２５】
つぎに、このような構成のプログラム開発支援装置１０におけるプログラム開発支援方法について説明する。図２は、実施の形態１によるプログラム開発支援方法の処理手順の一例を示すフローチャートである。また、図３は、実施の形態１によるプログラム開発支援方法の処理手順の一例を模式的に示す図である。なお、ここでは、流用元プログラムと流用先プログラムがプログラム開発支援装置１０によって読込まれた状態にあるものとする。
【００２６】
まず、ユーザによって入力部１１を介して流用元プログラム中の部品化したい箇所が範囲選択される（ステップＳ１１）。図３（ａ）は、ラダー形式で記述された流用元プログラム中で流用したい箇所である部品化対象プログラムＰ１がユーザによって選択された状態を示している。なお、ここでは、流用元プログラム中の部品化したい箇所の範囲選択を行っているが、たとえば流用元プログラムの部品化したい箇所をメモリに一時的に記憶させることで範囲選択を行ってもよい。
【００２７】
ついで、選択された部品化対象プログラムＰ１を部品化して、流用先プログラムに挿入する処理を実行する指示を与え（ステップＳ１２）、流用先プログラム中の部品化対象プログラムＰ１を挿入する位置を取得する（ステップＳ１３）。
【００２８】
部品化対象プログラムＰ１の流用先プログラムでの挿入位置が取得または選択されると、識別子生成部１４は、部品化対象プログラムＰ１内で使用される変数に付加する識別子を生成する（ステップＳ１４）。ついで、新規変数生成部１５は、流用元プログラム内の変数（以下、流用元変数ということがある）に、ステップＳ１４で生成された識別子を付加した新規変数を生成する（ステップＳ１５）。ここでは、たとえば、新規変数は、「識別子￥」＋「変数」という形とすることができる。なお、これは一例であり、他の形式であってもよい。この生成された新規変数は、流用先プログラムに追加される。
【００２９】
また、新規変数生成部１５は、流用するプログラムで使われている変数の読出し、書込みなどの使用状況を解析し、部品化対象プログラムＰ１中で新規変数に置換する流用元変数を抽出する（ステップＳ１６）。図３（ｂ）は、図３（ａ）のプログラムをリスト表示したプログラムＰ２を示している。置換対象とするか否かの基準はつぎの通りである。ＬＤ命令またはＬＤＩ命令の引数になっている変数と、ＭＯＶ命令の第２引数になっている変数と、が置換対象の変数である。これは、ＬＤ命令で実行条件が成立した場合にのみＭＯＶ命令が実行されるため、いつでもＭＯＶ命令が実行されるわけではないからである。出力に関しては無い場合に出力先の値を維持するだけでよい。その結果、図３（ｂ）における変数の使用状況の解析と置換対象の判断はつぎのように行われる。命令文３０１では、ＬＤ命令の引数となっている変数ＦＬＡＧ１は置換対象と判断される。命令文３０２では、ＭＯＶ命令の第２引数となっている変数ＶＡＲ１が置換対象と判断される。命令文３０３では、変数ＦＬＡＧ１が置換対象と判断される。命令文３０４では、変数ＶＡＲ２が置換対象と判断される。
【００３０】
ついで、新規変数生成部１５は、部品化対象プログラムＰ１中の流用元変数と、識別子を付加して生成される新規変数と、を対応付ける変数対応付け情報を生成する（ステップＳ１７）。図３（ｃ）は、変数対応付け情報の一例を示している。このように、変数対応付け情報では、部品化対象プログラムＰ１内で使用される流用元変数のうち、新規変数に置換されるものが、新規変数と対応付けされる。
【００３１】
その後、流用プログラム生成部１６は、変数対応付け情報に基づいて、部品化対象プログラムＰ１中の流用元変数を新規変数に置換し、流用プログラムを生成する（ステップＳ１８）。図３（ｄ）は、置換した流用プログラムＰ３を示している。
【００３２】
ついで、プログラム挿入部１７は、ステップＳ１８で生成された流用プログラムＰ３をステップＳ１２で指定された流用先プログラムの挿入位置に挿入する（ステップＳ１９）。そしてプログラム挿入部１７は、流用プログラムＰ３を挿入した流用先プログラムにおいて、流用プログラムＰ３の挿入位置の直前に、入力変数への入力インタフェースとなるプログラムを追加し、挿入位置の直後に、出力変数からの出力インタフェースのプログラムを追加する（ステップＳ２０）。図３（ｅ）は、入出力インタフェースプログラムを追加した流用プログラムを示している。ここでは、流用プログラムＰ３の直前に入力インタフェースとなるプログラムＰ４が追加され、流用プログラムＰ３の直後に出力インタフェースとなるプログラムＰ５が追加されている。以上によって、プログラムの部品化処理が終了する。
【００３３】
図４は、従来のプログラムをＦＢ化する際の様子を模式的に示す図であり、（ａ）はＦＢ化するプログラムを示し、（ｂ）はＦＢ化した後のプログラムを示す。特許文献１によるＦＢ化では、プログラムをＦＢ化する場合、ＦＢ型の定義やＦＢ内に存在する変数の種別が自動設定されるが、ＦＢ内の変数は、外部変数に自動で設定されることがない。そのため、流用元のプログラムの変数をＦＢ内で使用したい場合、たとえば図４（ａ）のＦＢのロジックとなるプログラムＰ１０１の例では、「ＩＮ１」を変数に使用したい場合、には、図４（ｂ）に示されるように、ＦＢ  Ｐ１０２の内部変数とのデータ交換のためのプログラムＰ１０３を作成しなければならなかった。
【００３４】
一方、実施の形態１では、流用元プログラムで使用されている流用元変数は、流用先プログラムにおいて一意となる変数名に置換され、流用先プログラムに変数として追加される。そのため、追加された変数は、流用先プログラム内の別の箇所でもそのまま使用することができる。このように、実施の形態１による方法では、従来のプログラムのＦＢ化の際に必要であったデータ化交換のためのプログラムＰ１０３が不要になるという効果を有する。また、新規変数の一部に流用元変数の名称を含むようにしたので、名称に付けた変数の意図が失われず、作成された流用プログラム内の処理の可読性を維持することができるという効果も有する。
【００３５】
さらに、プログラムをＦＢ化すると、ＦＢ型の定義やＦＢ内に存在する変数の種別の設定が必要であるが、実施の形態１のように部品化するのみの場合には、ＦＢ型の定義やＦＢ内に存在する変数の種別の設定を行う必要がないという効果を有する。
【００３６】
実施の形態２．
実施の形態２では、実施の形態１で得られる部品化されたプログラムをブロック化表示することができるプログラム開発支援装置およびその方法について説明する。
【００３７】
図５は、実施の形態２によるプログラム開発支援装置の構成の一例を模式的に示すブロック図である。このプログラム開発支援装置１０は、実施の形態１のプログラム開発支援装置に、変数解析部１９と、流用プログラムブロック表示部２０と、をさらに備える。
【００３８】
変数解析部１９は、流用プログラム中で使用される変数の読出し、書込みなどの状態である使用状況を解析して、処理開始時に値の読出しを必要とする変数と、処理終了時に値が書込みされる変数と、に分別する。
【００３９】
流用プログラムブロック表示部２０は、変数解析部１９による解析の結果、読出しが必要とされる側の変数を入力ピンとし、書込みされる側の変数を出力ピンとして、流用プログラム生成部１６で生成された流用プログラムを、ブロック表示する。具体的には、プログラムがラダープログラム、すなわちシーケンスプログラムで構成される場合には、流用プログラムをプログラム中に矩形で表示し、矩形のプログラムブロック中の左側に入力ピンを配置し、右側に出力ピンを配置する。なお、その他の構成要素は、実施の形態１と同一であるので、その説明を省略する。
【００４０】
つぎに、このような構成のプログラム開発支援装置１０におけるプログラム開発支援方法について説明する。図６は、実施の形態２によるプログラム開発支援方法の処理手順の一例を示すフローチャートである。ここでは、流用プログラム生成部１６で生成された流用プログラムをブロック化して表示する処理について説明する。
【００４１】
まず、変数解析部１９は、流用するプログラムで使用されている変数の読出し、書込みなどの使用状況を解析する（ステップＳ３１）。たとえば、命令の引数において、読出しとなっている引数と書込みとなっている引数とを予め命令ごとに定義しておき、その定義に基づいて、流用プログラム中の命令の引数となっている変数の使用状況を取得する。
【００４２】
具体的な解析手順について図３（ｂ）のプログラムＰ２を用いて説明する。命令文３０１では、ＬＤ命令の引数となっている変数ＦＬＡＧ１は読出しと判断される。命令文３０２では、ＭＯＶ命令の第１引数となっている変数ＩＮ１や読出しと判断され、第２引数となっている変数ＶＡＲ１は書込みと判断される。命令文３０３では、変数ＦＬＡＧ１が読出しと判断される。命令文３０４では、第１引数となっている変数ＶＡＲ１が読出しと判断され、第２引数となっている変数ＶＡＲ２が書込みと判断される。
【００４３】
図７は、流用プログラム中の変数の使用状況を示す図である。この図に示されるように、変数ＦＬＡＧ１は、読出しとして使用されているため、流用プログラムではＦＢでいう入力変数の使われ方をしていると判断される。変数ＩＮ１は、読出しとして使用されており、流用先プログラムで変数置換されないため、ＦＢでいう外部変数の使われ方をしていると判断される。変数ＶＡＲ１は、読出しと書込みの両方に使用されているため、流用プログラムではＦＢでいう内部変数の使われ方をしていると判断される。変数ＶＡＲ２は、書込みとして使用されているため、流用プログラムではＦＢでいう出力変数の使われ方をしていると判断される。なお、図７では、流用プログラムＰ３に変換する前の部品化対象プログラムＰ２のリストを例に挙げているので、各変数には識別子がついていないが、実際には、識別子、この例では「ＰＢ１￥」、が付加されている。
【００４４】
つぎに、流用プログラムブロック表示部２０は、ステップＳ３１の解析の結果から、入力ピンとなる変数と出力ピンとなる変数を抽出し、流用プログラムをブロック表示し、その流用プログラム中に抽出した入力ピンと出力ピンを表示する（ステップＳ３２）。入力ピンとなる変数は、読出しのみとして使用されている変数、すなわち入力変数であり、出力ピンとなる変数は、書込みのみとして使用されている変数、すなわち出力変数である。このとき、入力ピンと出力ピンは、それぞれ識別子が付加された変数名称としてブロック中に表示される。
【００４５】
たとえば、図７の例では、変数ＦＬＡＧ１は、読出しのみに使用されている入力変数であり、入力ピンに表示されるが、出力ピンには表示されないことになる。変数ＩＮ１は、内部変数的に使用されているので、入力ピンおよび出力ピンには表示されない。変数ＶＡＲ１は、読出しと書込みの両方に使用されているので、入力ピンおよび出力ピンには表示されない。変数ＶＡＲ２は、書込みにのみ使用されている出力変数であり、出力ピンには表示されるが、入力ピンには表示されないことになる。
【００４６】
図８は、流用プログラムのブロック表示の一例を示す図であり、（ａ）は流用プログラムを示し、（ｂ）は（ａ）の流用プログラムをブロック表示した例を示している。図８（ａ）と図７から、流用プログラムＰ３中では、符号３２１で示される変数ＰＢ１￥ＦＬＡＧ１が入力変数の使われ方をしているので、入力ピンとなり、符号３２２で示される変数ＰＢ１￥ＶＡＲ２が出力変数の使われ方をしているので、出力ピンとなる。そして、図８（ｂ）に示されるように、流用プログラムＰ３をブロック表示し、そのブロック４０１の左側に入力ピンとして変数ＰＢ１￥ＦＬＡＧ１を配置し、右側に出力ピンとして変数ＰＢ１￥ＶＡＲ２を配置する。以上によって、流用プログラムのブロック化処理が終了する。
【００４７】
実施の形態２では、部品化された流用プログラムから入力変数と出力変数とを抽出し、流用プログラムをＦＢと同様にブロック化して表示し、その中に入力変数を入力ピンとして表示し、出力変数を出力ピンとして表示するようにした。これによって、ＦＢと同等の操作で流用ができ、使用容易性が向上するという効果を有する。
【００４８】
実施の形態３．
実施の形態２では、流用プログラムをブロック表示する際に、識別子を付加した変数名で入力ピンと出力ピンとをブロック中に配置した。実施の形態３では、これとは異なる方法で流用プログラムをブロック表示する場合を説明する。
【００４９】
実施の形態３によるプログラム開発支援装置１０の構成は、実施の形態２のものと同様である。ただし、流用プログラムブロック表示部２０は、ブロック表示する際に、入力ピンと出力ピンの変数の名称を、識別子とこれ以外の流用元変数名に分ける。そして、識別子をブロック名としてブロックに表示し、読出し側の流用元変数名を入力ピンに表示し、書込み側の流用元変数名を出力ピンに表示する。その他の構成要素は、実施の形態１，２と同一であるので、その説明を省略する。
【００５０】
つぎに、このような構成のプログラム開発支援装置１０におけるプログラム開発支援方法について説明する。図９は、実施の形態３によるプログラム開発支援方法の処理手順の一例を示すフローチャートである。ここでは、流用プログラム生成部１６で生成された流用プログラムをブロック化して表示する処理について説明する。
【００５１】
まず、変数解析部１９は、実施の形態２と同様に、流用するプログラムで使用されている変数の読出し、書込みなどの使用状況を解析する（ステップＳ５１）。
【００５２】
つぎに、流用プログラムブロック表示部２０は、ステップＳ５１の解析の結果から、入力ピンとなる変数と出力ピンとなる変数を抽出し（ステップＳ５２）、入力ピンと出力ピンに表示する変数の変数名を、識別子とこれ以外に分ける（ステップＳ５３）。
【００５３】
その後、流用プログラムブロック表示部２０は、流用プログラムをブロック表示し、このブロックに名称として識別子も表示する（ステップＳ５４）。また、流用プログラムブロック表示部２０は、識別子以外の流用元変数名を、この流用プログラム中に抽出した入力ピンと出力ピンとして表示する（ステップＳ５５）。具体的には、読出しに使用されている抽出された新規変数の流用元変数を入力ピンに表示し、書込みに使用されている抽出された新規変数の流用元変数を出力ピンに表示する。以上によって、処理が終了する。
【００５４】
図１０は、流用プログラムのブロック表示の一例を示す図であり、（ａ）は流用プログラムを示し、（ｂ）は（ａ）の流用プログラムをブロック表示した例を示している。図８（ｂ）と比較して、図１０（ｂ）では、ブロック４０１の上部に識別子４１１が表示され、入力ピンと出力ピンは、識別子が除去された変数名として表示されている。
【００５５】
実施の形態３では、部品化した流用プログラムをブロック化する際に、識別子をブロックの名称とし、新規変数から識別子を除去した流用元変数を入力ピンと出力ピンの表示名とした。これによって、流用プログラムの使用において、識別子がＦＢインスタンス名のように表示され、またピンの名称が流用元変数で表示されるので、ＦＢと同等の使い勝手となり、実施の形態２の場合に比してさらに使用容易性が向上するという効果を有する。
【００５６】
実施の形態４．
実施の形態４では、流用プログラムで使用する変数の名称や種別、データ型を変更することができるプログラム開発支援装置およびその方法について説明する。
【００５７】
図１１は、実施の形態４によるプログラム開発支援装置の構成の一例を模式的に示すブロック図である。このプログラム開発支援装置１０は、実施の形態２または実施の形態３のプログラム開発支援装置１０に、流用プログラム編集部２１をさらに備える。
【００５８】
流用プログラム編集部２１は、流用プログラムの編集画面を表示部１２に表示するとともに、編集画面にユーザによって入力部１１を介して設定された内容を流用プログラムに反映させる機能を有する。具体的には、流用プログラム編集部２１は、流用プログラム中の識別子の名称と、流用プログラム中で使用されている変数名と、を取得し、編集画面に表示する。図１２は、編集画面の一例を示す図である。この図に示されるように、編集画面５００には、識別子の名称５１０と、流用プログラム中の変数をリスト表示した変数リスト５２０と、が含まれる。変数リスト５２０は、取得した変数名５２１と、この変数名のデータ型５２２と、この変数名について変数解析部１９で取得した使用状況に基づいて判断される変数種別５２３と、を有する。変数名５２１と変数種別５２３に関しては、流用プログラム編集部２１で予め入力されるが、データ型５２２については、空白としておいてもよいし、変数名５２１について予めデータ型が定義されている場合にはこの値を取得して入力されるようにしてもよい。
【００５９】
編集画面５００の識別子の名称５１０と変数リスト５２０とは、ともに編集可能な構成となっている。そのため、入力部１１を介してユーザが変更することが可能である。そして、ユーザによって編集画面５００の内容が確定されると、流用プログラム編集部２１は、その内容が流用プログラムとこれに基づいて作成されるブロックに反映する。なお、その他の構成要素は、実施の形態１〜３と同一であるので、その説明を省略する。
【００６０】
図１３と図１４は、実施の形態４による流用プログラムの変更処理の様子を模式的に示す図である。図１３（ａ）に示されるように、識別子の名称５１０が「ＰＢ１」の場合の流用プログラムの構造（ｂ）と、流用プログラムから生成されるブロック（ｃ）を示している。ここで、図１４（ａ）に示されるように、編集画面５００で識別子の名称５１０を「ＰＢ２」と変更することによって、（ｂ）に示されるように流用プログラムの識別子が「ＰＢ２」に変更される。また、ブロック表示においても、ブロックの名称が「ＰＢ２」へと変更される。このように、編集画面５００での編集内容を容易に流用プログラムとブロックに反映させることができる。
【００６１】
実施の形態４では、流用プログラムの内容の変更を編集画面５００で行い、その結果を流用プログラムと流用プログラムから生成されるブロックに反映させるようにした。これによって、従来ではＦＢ化で必要だった定義のプログラムの変更が不要になるという効果を有する。また、流用元のプログラムまで変更されることがなくなり、流用したプログラムを再利用しやすくなるという効果を有する。
【００６２】
実施の形態５．
実施の形態５では、部品化した流用プログラムをＦＢに変換する場合、またはＦＢを部品化した流用プログラムに変換する場合について説明する。
【００６３】
図１５は、実施の形態５によるプログラム開発支援装置の構成の一例を模式的に示すブロック図である。このプログラム開発支援装置１０は、実施の形態４のプログラム開発支援装置１０に、流用プログラム−ＦＢ変換部２２をさらに備える。
【００６４】
流用プログラム−ＦＢ変換部２２は、ユーザによって選択された部品化されたプログラムをＦＢに変換したり、または逆にユーザによって選択されたＦＢを部品化されたプログラムに変換したりする機能を有する。なお、プログラムの一部をＦＢに変換する技術と、ＦＢをプログラムに変換する技術については、公知であるので、その説明を省略する。また、その他の構成要素は、実施の形態１〜４と同一であるので、その説明を省略する。
【００６５】
図１６は、実施の形態５による部品化した流用プログラムをＦＢに変換する処理手順の一例を示すフローチャートである。まず、ユーザによって、部品化したプログラムが選択される（ステップＳ７１）。ついで、流用プログラム−ＦＢ変換部２２は、ステップＳ７１で選択された部品化したプログラムを、従来のプログラムの一部をＦＢに変換する方法にしたがって、ＦＢに変換する（ステップＳ７２）。以上によって、処理が終了する。
【００６６】
図１７は、実施の形態５によるＦＢを部品化したプログラムに変換する処理手順の一例を示すフローチャートである。まず、ユーザによって、部品化したプログラムに変換したいＦＢが選択される（ステップＳ９１）。ついで、流用プログラム−ＦＢ変換部２２は、ステップＳ９１で選択したＦＢを、従来のＦＢをプログラムの一部に変換する方法にしたがって、部品化したプログラムに変換する（ステップＳ９２）。以上によって、処理が終了する。
【００６７】
実施の形態５では、既存のＦＢを当該流用プログラムの効果が得られるように変換されるので、ソフトウェア資産を有効活用することができるという効果を有する。
【００６８】
なお、上述した説明では、部品化する対象として、ラダープログラムすなわちシーケンスプログラムを例に挙げたが、これに限定されるものではない。たとえば、ＳＴ（Structured  Text）やＦＢＤ（Function  Block  Diagram）言語などのＩＥＣ６１１３１−３に準拠したプログラム言語に対しても適用することができる。
【産業上の利用可能性】
【００６９】
以上のように、この発明にかかるプログラム開発支援装置は、あるプログラム中の使用頻度の高いプログラムの再利用に有用である。
【符号の説明】
【００７０】
１０  プログラム開発支援装置、１１  入力部、１２  表示部、１３  プログラム部品化情報取得部、１４  識別子生成部、１５  新規変数生成部、１６  流用プログラム生成部、１７  プログラム挿入部、１８  制御部、１９  変数解析部、２０  流用プログラムブロック表示部、２１  流用プログラム編集部、２２  流用プログラム−ＦＢ変換部。
【図１】
0005777837.tif 000002
【図２】
0005777837.tif 000003
【図３】
0005777837.tif 000004
【図４】
0005777837.tif 000005
【図５】
0005777837.tif 000006
【図６】
0005777837.tif 000007
【図７】
0005777837.tif 000008
【図８】
0005777837.tif 000009
【図９】
0005777837.tif 000010
【図１０】
0005777837.tif 000011
【図１１】
0005777837.tif 000012
【図１２】
0005777837.tif 000013
【図１３】
0005777837.tif 000014
【図１４】
0005777837.tif 000015
【図１５】
0005777837.tif 000016
【図１６】
0005777837.tif 000017
【図１７】
0005777837.tif 000018