(57)【要約】  既存のプログラムを、変数を使用したプログラムに置換するために、前記既存のプログラムにおいて記述されたアドレスを抽出し、前記抽出した各アドレスに対してそれぞれ固有の変数を割り当て、前記アドレスと該アドレスに対応する変数とを関連付けた変数対応情報を作成する変数情報作成手段と、前記既存のプログラムにおいて記述されたアドレスを前記変数対応情報に基づいて前記変数に置換して、前記既存のプログラムを前記変数を使用したプログラムに置換する置換手段と、を備える。
2008102426.tif 000002
【特許請求の範囲】
【請求項１】
既存のプログラムを、変数を使用したプログラムに置換するプログラマブルコントローラの周辺装置であって、
前記既存のプログラムにおいて記述されたアドレスを抽出し、前記抽出した各アドレスに対してそれぞれ固有の変数を割り当て、前記アドレスと該アドレスに対応する変数とを関連付けた変数対応情報を作成する変数情報作成手段と、
前記既存のプログラムにおいて記述されたアドレスを前記変数対応情報に基づいて前記変数に置換して、前記既存のプログラムを前記変数を使用したプログラムに置換する置換手段と、
を備えることを特徴とするプログラマブルコントローラの周辺装置。
【請求項２】
前記変数として、前記抽出したアドレスに対する説明記述であるコメントの名称を割り当てること、
を特徴とする請求項１に記載のプログラマブルコントローラの周辺装置。
【請求項３】
前記変数情報作成手段は、前記変数対応情報として、前記既存のプログラムにおいて記述されたアドレスと該アドレスの種別とを関連付けたアドレス種別情報に基づいて、前記アドレスと前記変数とにさらに前記アドレスの種別を関連付けた変数対応情報を作成すること、
を特徴とする請求項１に記載のプログラマブルコントローラの周辺装置。
【請求項４】
前記アドレスの種別がグローバル種別とローカル種別であり、
前記アドレスと前記変数と前記アドレスの種別とを関連付けた変数対応情報から、前記グローバル種別に関連付けられた変数およびアドレスを抽出し、該抽出した変数とアドレスとを関連付けたグローバル種別変数情報を作成するグローバル種別変数情報作成手段を備えること、
を特徴とする請求項３に記載のプログラマブルコントローラの周辺装置。
【請求項５】
前記アドレスの種別がグローバル種別とローカル種別であり、
前記アドレスと前記変数と前記アドレスの種別とを関連付けた変数対応情報から、前記ローカル種別に関連付けられた変数を抽出し、前記アドレスの種別がローカル種別である変数の情報であるローカル種別変数情報を作成するローカル種別変数情報作成手段を備えること、
を特徴とする請求項３に記載のプログラマブルコントローラの周辺装置。
【請求項６】
既存のプログラムを、変数を使用したプログラムに置換する置換方法であって、
前記既存のプログラムにおいて記述されたアドレスを抽出し、前記抽出した各アドレスに対してそれぞれ固有の変数を割り当て、前記アドレスと該アドレスに対応する変数とを関連付けた変数対応情報を作成する変数情報作成工程と、
前記既存のプログラムにおいて記述されたアドレスを前記変数対応情報に基づいて前記変数に置換して、前記既存のプログラムを前記変数を使用したプログラムに置換する置換工程と、
を含むことを特徴とする置換方法。
【請求項７】
請求項６に記載の置換方法をプログラマブルコントローラの周辺装置に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラの周辺装置、置換方法およびプログラムに関するものであり、特に、プログラマブルロジックコントローラ（以下、ＰＬＣと呼ぶ場合がある）のシーケンスプログラムの作成作業、編集作業の簡略化を実現するプログラマブルコントローラの周辺装置、置換方法およびプログラムに関するものである。
【背景技術】
【０００２】
従来、ＰＬＣのシーケンスプログラムの作成、編集が可能なＰＬＣの周辺装置においては、シーケンスプログラムのプログラムを作成する際に、ＰＬＣ内部のメモリのアドレスを記述してシーケンスプログラムのプログラムコードを作成していた。【０００３】
しかしながら、最近、ＰＬＣ内部のメモリのアドレスの代わりに変数を用いたプログラムの作成方法が行われるようになってきた。すなわち、ＰＬＣ内部のメモリのアドレスを直接シーケンスプログラムに記述するのではなくて、該ＰＬＣ内部のメモリのアドレスを変数に置き換えて記述するプログラムの作成方法が行われるようになってきた。このようなシーケンスプログラムの作成方法では、たとえばシーケンスプログラムのコードにおいて、「ＬＤ  Ｘ０」と記述する代わりに、「ＬＤ  （変数）」と記述される。【０００４】
【特許文献１】特開２０００−２４２３１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、シーケンスプログラムの作成においては、プログラム作成作業の簡略化のために、過去に作成した既存のシーケンスプログラム資産を再利用して新たなシーケンスプログラムの作成が行われている。【０００６】
シーケンスプログラムは、コンパイルが行われてＰＬＣで使用される。過去に作成した既存のシーケンスプログラム資産を再利用して作成した新たなシーケンスプログラムにおいては、このコンパイルする際に、既存のシーケンスプログラム資産におけるアドレスを、新たに使用されるＰＬＣにおけるアドレスに割当て直す必要がある。【０００７】
そこで、上述したような変数を使用したシーケンスプログラムのプロジェクトを作成する際、変数を使用していない既存のシーケンスプログラム資産を再利用する場合には、まず変数を使用していない既存のシーケンスプログラム資産をコピーする。そして、コピーしたシーケンスプログラム内の入出力アドレス（入出力デバイス）をグローバル変数として宣言し、内部メモリアドレス（内部デバイス）をローカル変数として宣言して、シーケンスプログラム内のデバイスを変数へ置換する必要があった。【０００８】
グローバル変数とは、所定のプロジェクト内の全てのプログラム内で使用可能な変数であり、プロジェクト内の個々のプログラムに依存しない変数である。すなわち、グローバル変数を用いることにより、変数の値をプロジェクト内の全てのプログラムで共有することができる。また、ローカル変数とは、変数を定義したプログラム内でのみ使用可能な変数であり、プロジェクト内の個々のプログラムに依存した変数である。すなわち、ローカル変数は、変数の値をプロジェクト内の他のプログラムと共有する必要がない場合に使用される。そして、グローバル変数とローカル変数とを使い分けることにより、複数人によるプログラムの編集作業を効率的に行うことができるというメリットがある。【０００９】
これらの置換作業は、シーケンスプログラムの作成者が手作業で行わなければならず、この置換作業はアドレスの重複が生じないように考慮しながら行う必要がある。このため、この置換作業は複雑かつ時間を要する作業であり、変数を使用していないシーケンスプログラム資産の再利用を効率的に行うことができない、という問題があった。【００１０】
また、グローバル変数およびローカル変数のアドレスの割付において、メモリに対するアドレスの割付を自動的に行う技術が提案されている（たとえば、特許文献１参照）。しかしながら、この文献のような従来の技術においては、変数を使用していない既存のシーケンスプログラム資産の再利用に関する技術は考慮されていない。【００１１】
本発明は、上記に鑑みてなされたものであって、変数を使用していない既存のシーケンスプログラムを、変数を使用したシーケンスプログラムに自動で効率良く変換することが可能なプログラマブルコントローラの周辺装置、置換方法およびプログラムを得ることを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、本発明にかかるプログラマブルコントローラの周辺装置は、既存のプログラムにおいて記述されたアドレスを抽出し、抽出した各アドレスに対してそれぞれ固有の変数を割り当て、アドレスと該アドレスに対応する変数とを関連付けた変数対応情報を作成する変数情報作成手段と、既存のプログラムにおいて記述されたアドレスを変数対応情報に基づいて変数に置換して、既存のプログラムを変数を使用したプログラムに置換する置換手段と、を備えることを特徴とする。
【発明の効果】
【００１３】
本発明にかかるプログラマブルコントローラの周辺装置は、既存のプログラムにおいて記述されたアドレスを抽出し、抽出した各アドレスに対してそれぞれ固有の変数を割り当て、アドレスと該アドレスに対応する変数とを関連付けた変数対応情報を自動で作成し、この変数対応情報に基づいて、既存のプログラムにおいて記述されたアドレスを変数に自動で置換して、既存のプログラムを、変数を使用したプログラムに自動で置換することができる。これにより、本発明にかかるプログラマブルコントローラの周辺装置によれば、既存のシーケンスプログラムを、変数を使用したシーケンスプログラムに自動で効率良く変換することが可能である、という効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の実施の形態にかかるプログラム作成システムの構成の一例を示す図である。
【図２】図２は、流用元プロジェクトデータの流用元シーケンスプログラムの一例を示す図である。
【図３】図３は、流用元プロジェクトデータのデバイスコメントの一例を示す図である。
【図４】図４は、本発明の実施の形態にかかるプログラム作成装置におけるプログラム作成部の機能構成を示すブロック図である。
【図５】図５は、本発明の実施の形態にかかるプログラム作成装置におけるアドレス種別テーブルの一例を示す図である。
【図６】図６は、本発明の実施の形態にかかるプログラム作成装置における変数テーブルの一例を示す図である。
【図７】図７は、本発明の実施の形態にかかるプログラム作成装置におけるグローバル変数テーブルの一例を示す図である。
【図８】図８は、本発明の実施の形態にかかるプログラム作成装置におけるローカル変数テーブルの一例を示す図である。
【図９】図９は、流用元シーケンスプログラムを、変数を使用したシーケンスプログラムに変換したシーケンスプログラムの一例を示す図である。
【図１０】図１０は、本発明の実施の形態にかかるプログラム作成装置における記憶部の構成を示すブロック図である。
【図１１】図１１は、本発明の実施の形態にかかるプログラム作成装置における変数テーブルの作成処理を説明するためのフローチャートである。
【図１２】図１２は、本発明の実施の形態にかかるプログラム作成装置における変数テーブルの作成方法を説明するための図である。
【図１３】図１３は、本発明の実施の形態にかかるプログラム作成装置におけるプログラムの置換処理を説明するためのフローチャートである。
【図１４】図１４は、本発明の実施の形態にかかるプログラム作成装置におけるシーケンスプログラムの変換を説明する図である。
【図１５】図１５は、本発明の実施の形態にかかるプログラム作成装置におけるグローバル変数宣言処理を説明するためのフローチャートである。
【図１６】図１６は、本発明の実施の形態にかかるプログラム作成装置におけるグローバル変数テーブルの作成を説明する図である。
【図１７】図１７は、本発明の実施の形態にかかるプログラム作成装置におけるローカル変数宣言処理を説明するためのフローチャートである。
【図１８】図１８は、本発明の実施の形態にかかるプログラム作成装置におけるローカル変数テーブルの作成を説明する図である。
【図１９】図１９は、本発明の実施の形態にかかるプログラム作成装置の機能を説明する図である。
【図２０】図２０は、本発明の実施の形態にかかるプログラム作成装置の機能を説明する図である。
【図２１】図２１は、本発明の実施の形態にかかるプログラム置換方法およびプログラム作成方法のプログラムを実行可能なコンピュータ装置の概略構成の一例を示すブロック図である。
【符号の説明】
【００１５】
１  プログラム作成装置
３  入力装置
５  表示装置
７  外部記憶装置
１１  プログラム作成部
１３  記憶部
１５  通信部
１７  制御部
７１  流用元プロジェクトデータ
７２  流用元シーケンスプログラム
７３  デバイスコメント
１１１  変数テーブル作成部
１１２  グローバル変数テーブル作成部
１１３  ローカル変数テーブル作成部
１１４  置換処理部
１１５  プログラム作成部
１３１  プログラムメモリ
１３２  データメモリ
１３３  流用後プロジェクトメモリ
１３４  グローバル変数テーブル
１３５Ａ  シーケンスプログラムＡ
１３５Ｂ  シーケンスプログラムＢ
１３６Ａ  ローカル変数テーブルＡ
１３６Ｂ  ローカル変数テーブルＢ
１３７  アドレス種別テーブル
１３８  変数テーブル
１３９  流用後プロジェクトデータ
２０１  入力装置
２０２  表示装置
２０３  ＣＰＵ
２０４  メモリ
２０５  記憶装置
２０６  媒体駆動装置
２０７  ネットワークインターフェース
２０８  バス
【発明を実施するための最良の形態】
【００１６】
以下に、本発明にかかるプログラマブルコントローラ（ＰＬＣ）の周辺装置、置換方法およびプログラムの実施の形態を図面に基づいて詳細に説明する。なお、本発明は以下の記述により限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。【００１７】
実施の形態
図１は、本発明にかかるＰＬＣの周辺装置としての機能を備えた、本発明の実施の形態にかかるプログラム作成システムの構成の一例を示す図である。本実施の形態にかかるプログラム作成システムは、図１に示すように、ＰＬＣの周辺装置であるプログラム作成装置１と、入力装置３と、表示装置５と、外部記憶装置７と、を備えて構成されている。【００１８】
従来のプログラム作成装置において、変数を使用していない既存のシーケンスプログラム資産を再利用して変数を使用した新たなシーケンスプログラムのプロジェクトを作成するには、まず、変数を使用していない既存のシーケンスプログラム資産を新規のプロジェクトへコピーする。つぎに、コピーしたシーケンスプログラム内の入出力アドレス（入出力デバイス）をグローバル変数として宣言し、内部メモリアドレス（内部デバイス）をローカル変数として宣言して、シーケンスプログラム内のデバイスを変数へ置換する。【００１９】
従来の置換作業は、シーケンスプログラムの作成者が手作業で行わなければならず、また、アドレスの重複が生じないように考慮しながら行う必要があり、複雑かつ時間を要する作業であった。このため、シーケンスプログラムの作成者の作業の負担が大きく、変数を使用していないシーケンスプログラム資産の再利用を効率的に行うことができなかった。【００２０】
これに対して、本実施の形態にかかるプログラム作成装置１では、この置換作業を自動的に行うことができる。これにより、本実施の形態にかかるプログラム作成装置１では、シーケンスプログラムの作成者の手を煩わせることなく、変数を使用していないシーケンスプログラム資産を再利用して、新たなシーケンスプログラムのプロジェクトを効率的に作成することができる。ここで、本実施の形態にかかるプログラム作成装置１は、図１に示すようにプログラム作成部１１と、記憶部１３と、通信部１５と、制御部１７と、を備えて構成される。【００２１】
入力装置３は、プログラム作成装置に対する操作を指示する操作指示情報などを入力する操作指示情報入力手段である。表示装置５は、シーケンスプログラムやプログラム作成装置１における処理データなどの各種情報を表示する表示手段である。【００２２】
外部記憶装置７は、過去に作成した流用元プロジェクトデータ７１を記憶する記憶手段である。この外部記憶装置７には、流用元プロジェクトデータ７１として、変数を使用していない流用元シーケンスプログラム７２と、該流用元シーケンスプログラム７２の付属データでありシーケンスプログラムに使用されたアドレス（デバイス）に対するコメントであるデバイスコメント７３と、が記憶されている。【００２３】
図２は、流用元プロジェクトデータ７１の流用元シーケンスプログラム７２の一例を示す図である。この流用元シーケンスプログラム７２は、後述するように既存のシーケンスプログラム資産を再利用して新たなシーケンスプログラムを作成する際の、流用元となるシーケンスプログラムである。図２に示すように、この流用元シーケンスプログラム７２には、プログラムのステップと、該ステップに対応したコードと、が記述されている。たとえば図２においては、「ステップ０」には、コード「ＬＤ  Ｘ０」が記述され、「ステップ１」には、コード「ＳＥＴ  Ｍ１」が記述されている。このように、流用元シーケンスプログラム７２は、変数を使用せずに、アドレスを直接記述したプログラムである。【００２４】
図３は、流用元プロジェクトデータ７１のデバイスコメント７３の一例を示す図である。このデバイスコメント７３は、後述するように既存のシーケンスプログラム資産を再利用して新たなシーケンスプログラムを作成する際の、流用元となるデバイスコメントである。図３に示すように、このデバイスコメント７３には、流用元シーケンスプログラム７２において記述されたアドレスと、該アドレスに関するコメントと、が記述されている。たとえば図３においては、「アドレスＸ０」に対しては、該アドレスが意味する内容である「起動スイッチ」が記述され、「アドレスＹ１」に対しては、該アドレスが意味する内容である「起動ランプ」が記述されている。【００２５】
図４は、プログラム作成部１１の機能構成を示すブロック図である。プログラム作成部１１は、図４に示すように、変数テーブル作成部１１１と、グローバル変数テーブル作成部１１２と、ローカル変数テーブル作成部１１３と、置換処理部１１４と、プログラム作成部１１５と、を備える。【００２６】
プログラム作成部１１が、変数を使用していない既存のシーケンスプログラム資産を再利用して変数を使用した新たなシーケンスプログラムのプロジェクトを作成する場合には、まず変数テーブル作成部１１１が既存の流用元シーケンスプログラム７２とデバイスコメント７３とを外部記憶装置７から記憶部１３にコピーする。【００２７】
つぎに、変数テーブル作成部１１１は、コピーした既存の流用元シーケンスプログラム７２のコード中のアドレスについて、記憶部１３に予め記憶された図５に示すようなアドレス種別テーブル（アドレス種別情報）を検索することにより、流用元シーケンスプログラム７２のコード中のアドレスの種別を判別する。図５は、アドレス種別テーブルの一例を示す図である。アドレス種別は、グローバルとローカルとの二種類に分類される。このアドレス種別テーブルには、シーケンスプログラムにおいて使用されるアドレスと、該アドレスのアドレス種別（グローバルまたはローカル）と、が対応付けられて記憶されている。【００２８】
そして、変数テーブル作成部１１１は、既存の流用元シーケンスプログラム７２のコード中のアドレスと、判別したアドレス種別（グローバルまたはローカル）と、デバイスコメント７３と、に基づいて、図６に示すようなアドレスと該アドレスに対応する変数とを関連付けて保持する変数テーブル（変数情報）を作成し、記憶部１３に記憶させる。図６は、変数テーブルの一例を示す図である。図６においては、変数名としてデバイスコメント７３に含まれる「コメント」の名称をそのまま流用して使用している。【００２９】
グローバル変数テーブル作成部１１２は、変数テーブル作成部１１１において作成した図６に示すような変数テーブルから、アドレス種別がグローバル種別である変数名および該変数名に対応するアドレスを抽出し、図７に示すような該抽出した変数とアドレスとを関連付けたグローバル種別変数情報であるグローバル変数テーブルを作成してグローバル変数宣言を行う。図７は、グローバル変数テーブルの一例を示す図である。グローバル変数テーブルには、図７に示すように、アドレス種別がグローバル種別であるアドレス（デバイス）およびこれに対応する変数名が保持されている。このグローバル変数テーブルは、変数を使用していない既存のシーケンスプログラムのアドレス（デバイス）を変数に置換して作成した新たなシーケンスプログラム、またはこの新たなシーケンスプログラムを用いて作成した新たなシーケンスプログラムのコンパイルを行う際に用いられる。【００３０】
ローカル変数テーブル作成部１１３は、変数テーブル作成部１１１において作成した図６に示すような変数テーブルから、アドレス種別がローカル種別である変数名を抽出し、図８に示すようなローカル変数テーブル（アドレスの種別がローカル種別である変数の情報であるローカル種別変数情報）を作成してローカル変数宣言を行う。図８は、ローカル変数テーブルの一例を示す図である。ローカル変数テーブルには、図８に示すように、アドレス種別がローカル種別である変数名が保持されている。このローカル変数テーブルは、変数を使用していない既存のシーケンスプログラムのアドレス（デバイス）を変数に置換して作成した新たなシーケンスプログラム、またはこの新たなシーケンスプログラムを用いて作成した新たなシーケンスプログラムのコンパイルを行う際に用いられる。【００３１】
置換処理部１１４は、変数テーブル作成部１１１において作成した図６に示すような変数テーブルに基づいて、既存の流用元シーケンスプログラム７２のコード中のアドレスを、各アドレスに対してそれぞれ固有の変数で置換することにより、既存の流用元シーケンスプログラム７２を、変数を使用したシーケンスプログラムへ置換する（変換する）。図９は、図２に示す流用元シーケンスプログラム７２を、変数を使用したシーケンスプログラムに変換したシーケンスプログラムの一例を示す図である。【００３２】
ここで、既存の流用元シーケンスプログラム７２のコード中のアドレスを変数で置換する際に、置換処理部１１４は図３に示すようなデバイスコメント７３に記述された各アドレスに対する説明記述である「コメント」の名称を「変数」の名称（変数名）として使用する。また、デバイスコメント７３においてアドレスに対する「コメント」が記述されていない場合は、予め指定された固定文字または都度指示される固定文字を該アドレスを置換する「変数」の名称（変数名）として使用する。【００３３】
プログラム作成部１１５は、変数を使用したシーケンスプログラムを流用して、または新規にシーケンスプログラムを作成するプログラム作成手段である。【００３４】
記憶部１３は、プログラム作成装置１における処理を行うための各種プログラムや処理時に生成されるシーケンスプログラム、データなどを記憶する記憶手段である。図１０は、記憶部１３の構成を示すブロック図である。記憶部１３は、図１０に示すように、プログラム作成装置１における処理を行うための各種プログラムを記憶するプログラムメモリ１３１と、プログラム作成装置１における処理時に生成されるデータを記憶するデータメモリ１３２と、プログラム作成装置１において既存の流用元シーケンスプログラム７２を流用して新たに作成または編集したシーケンスプログラムのプロジェクトを記憶する流用後プロジェクトメモリ１３３と、を備える。【００３５】
また、流用後プロジェクトメモリ１３３は、流用後プロジェクトデータ１３９を記憶しており、該流用後プロジェクトデータ１３９には、たとえばグローバル変数テーブル１３４と、既存の流用元シーケンスプログラム７２を流用して新たに作成または編集したシーケンスプログラムＡ１３５Ａと、シーケンスプログラムＡ１３５に対応するローカル変数テーブルＡ１３６Ａと、既存の流用元シーケンスプログラム７２を流用して新たに作成または編集したシーケンスプログラムＢ１３５Ｂと、シーケンスプログラムＢ１３５Ｂに対応するローカル変数テーブルＢ１３６Ｂと、アドレス種別テーブル１３７と、変数テーブル１３８と、を記憶している。また、記憶部１３は、外部記憶装置７から既存の流用元シーケンスプログラム７２およびデバイスコメント７３をコピーした際には、これらをデータメモリ１３２に記憶する。【００３６】
通信部１５は、プログラム作成装置１の外部に接続した外部記憶装置７との間で情報の入出力を行う情報入出力手段である。制御部１７は、プログラム作成装置１全体の制御を行う。【００３７】
つぎに、このように構成された本実施の形態にかかるプログラム作成システムを用いて、過去に作成した既存のシーケンスプログラム資産を再利用して新たなシーケンスプログラムを作成する際の処理について説明する。まず、図１１を参照しながら、変数テーブルの作成処理について説明する。図１１は、本実施の形態にかかるプログラム作成装置１における変数テーブルの作成処理を説明するためのフローチャートである。【００３８】
本実施の形態にかかるプログラム作成装置１において変数テーブルを作成するには、まず、プログラム作成部１１の変数テーブル作成部１１１が、既存の流用元シーケンスプログラム７２とデバイスコメント７３とを、外部記憶装置７から記憶部１３のデータメモリ１３２にコピーする（ステップＳ１０１）。つぎに、変数テーブル作成部１１１は、記憶部１３のデータメモリ１３２にコピーした流用元シーケンスプログラム７２の先頭行から検索を開始して、流用元シーケンスプログラム７２のコードに含まれるアドレス（デバイス）の抽出を行う（ステップＳ１０２）。【００３９】
そして、変数テーブル作成部１１１は、変数テーブルを参照して、抽出したアドレス（デバイス）が変数テーブルに未登録であるか否かを判断する（ステップＳ１０３）。抽出したアドレス（デバイス）が変数テーブルに未登録である場合には（ステップＳ１０３肯定）、該アドレス（デバイス）を変数テーブルに登録する（ステップＳ１０４）。そして、変数テーブル作成部１１１は、記憶部１３に予め記憶されたアドレス種別テーブル１３７から該アドレス（デバイス）を検索してアドレスの種別（グローバルまたはローカル）を判別し、アドレスの種別（グローバルまたはローカル）を変数テーブルに登録する（ステップＳ１０５）。【００４０】
つぎに、変数テーブル作成部１１１は、記憶部１３のデータメモリ１３２にコピーしたデバイスコメント７３を検索して、該アドレスに対するコメントの有無を判断する（ステップＳ１０６）。アドレスに対するコメントが存在する場合は（ステップＳ１０６肯定）、該当するコメントの名称を該アドレスに対応する変数（名）として変数テーブルに登録する（ステップＳ１０７）。一方、アドレスに対するコメントが存在しない場合は（ステップＳ１０６否定）、予め指定された固定文字または都度指示される固定文字を該アドレスに対応する変数（名）として変数テーブルに登録する（ステップＳ１０８）。【００４１】
そして、変数（名）の登録後、変数テーブル作成部１１１は、流用元シーケンスプログラム７２のコードに含まれる全てのアドレス（デバイス）の抽出が終了して変数テーブルに登録されているか否か判断する（ステップＳ１０９）。流用元シーケンスプログラム７２のコードに含まれる全てのアドレス（デバイス）が変数テーブルに登録されていない場合は（ステップＳ１０９否定）、ステップＳ１０２に戻って流用元シーケンスプログラム７２のコードに含まれるアドレス（デバイス）の抽出を繰り返す。また、流用元シーケンスプログラム７２のコードに含まれる全てのアドレス（デバイス）が変数テーブルに登録されている場合は（ステップＳ１０９肯定）、一連の変数テーブルの作成処理が終了する。【００４２】
また、ステップＳ１０３に戻って、抽出したアドレス（デバイス）が変数テーブルに登録されている場合には（ステップＳ１０３否定）、そのままステップＳ１０９に進む。変数テーブル作成部１１１は、流用元シーケンスプログラム７２のコードに含まれる全てのアドレス（デバイス）の抽出が終了して変数テーブルに登録されているか否か判断する（ステップＳ１０９）。【００４３】
そして、流用元シーケンスプログラム７２のコードに含まれる全てのアドレス（デバイス）が変数テーブルに登録されていない場合は（ステップＳ１０９否定）、ステップＳ１０２に戻って流用元シーケンスプログラム７２のコードに含まれるアドレス（デバイス）の抽出を繰り返す。また、流用元シーケンスプログラム７２のコードに含まれる全てのアドレス（デバイス）が変数テーブルに登録されている場合は（ステップＳ１０９肯定）、一連の変数テーブルの作成処理が終了する。【００４４】
以上のような処理を行うことにより、本実施の形態にかかるプログラム作成装置１においては、図１２に示すように流用元プロジェクトデータ７１の流用元シーケンスプログラム７２とアドレス種別テーブル１３７とに基づいて、変数テーブル１３８を作成することができる。図１２は、本実施の形態にかかるプログラム作成装置１における変数テーブルの作成方法を説明するための図である。【００４５】
つぎに、上記のようにして作成した変数テーブル１３８に基づいて、既存の流用元シーケンスプログラム７２のコード中のアドレスを、該アドレスに対応する変数で置換する際の処理について図１３を参照しながら説明する。図１３は、本実施の形態にかかるプログラム作成装置１におけるプログラムの置換処理を説明するためのフローチャートである。【００４６】
本実施の形態にかかるプログラム作成装置１においてプログラムの置換処理を行うには、まずプログラム作成部１１の置換処理部１１４が、記憶部１３にコピーした流用元シーケンスプログラム７２の先頭行から検索を開始して、流用元シーケンスプログラム７２のコードに含まれるアドレス（デバイス）の抽出を行う（ステップＳ２０１）。つぎに、置換処理部１１４は、抽出したアドレス（デバイス）を変数テーブルにおいて検索し、変数テーブルから該アドレス（デバイス）に対応する変数（名）を抽出する（ステップＳ２０２）。【００４７】
そして、置換処理部１１４は、抽出した流用元シーケンスプログラム７２のアドレス（デバイス）を該変数に置き換える置換処理を行い、置換処理を行ったシーケンスプログラムをたとえばシーケンスプログラムＡ１３５Ａとして流用後プロジェクトメモリ１３３に記憶させる（ステップＳ２０３）。置換処理後、置換処理部１１４は、流用元シーケンスプログラム７２の全てのアドレス（デバイス）を、対応する変数に置換が完了したか否かを判断する（ステップＳ２０４）。【００４８】
ここで、流用元シーケンスプログラム７２内の全てのアドレス（デバイス）の変数への置換が完了していないと判断した場合は（ステップＳ２０４否定）、ステップＳ２０１に戻る。一方、流用元シーケンスプログラム７２内の全てのアドレス（デバイス）の変数への置換が完了したと判断した場合は（ステップＳ２０４肯定）、一連の変数テーブルの作成処理が終了する。【００４９】
以上のような処理を行うことにより、本実施の形態にかかるプログラム作成装置１においては、図１４に示すように流用元プロジェクトデータ７１の流用元シーケンスプログラム７２と変数テーブル１３８とに基づいて、流用元プロジェクトデータ７１の流用元シーケンスプログラム７２におけるアドレス（デバイス）を自動で変数に置換することができる。そして、流用元プロジェクトデータ７１を、変数を使用したシーケンスプログラムに置換することができる。すなわち、本実施の形態にかかるプログラム作成装置１によれば、変数を使用していない既存のシーケンスプログラムを、変数を使用したシーケンスプログラムに自動で置換（変換）することができる。図１４は、本実施の形態にかかるプログラム作成装置１におけるシーケンスプログラムの置換（変換）を説明する図である。【００５０】
つぎに、上記のようにして作成した変数テーブル１３８に基づいて、グローバル変数テーブルを作成してグローバル変数宣言を行う処理について図１５を参照しながら説明する。図１５は、本実施の形態にかかるプログラム作成装置１におけるグローバル変数宣言処理を説明するためのフローチャートである。【００５１】
本実施の形態にかかるプログラム作成装置１においてグローバル変数宣言処理を行うには、まずプログラム作成部１１のグローバル変数テーブル作成部１１２が、アドレス種別がグローバル種別である変数（名）および該変数に対応するアドレス（デバイス）を変数テーブル１３８から抽出する（ステップＳ３０１）。つぎに、グローバル変数テーブル作成部１１２は、抽出した変数（名）および該変数に対応するアドレス（デバイス）をグローバル変数テーブル１３４に登録する（ステップＳ３０２）。【００５２】
登録後、グローバル変数テーブル作成部１１２は、変数テーブル１３８に含まれる全てのグローバル種別である変数（名）および該変数に対応するアドレス（デバイス）をグローバル変数テーブル１３４に登録したか否かを判断する（ステップＳ３０３）。【００５３】
ここで、変数テーブル１３８に含まれる全てのグローバル種別である変数（名）および該変数に対応するアドレス（デバイス）をグローバル変数テーブル１３４に登録していないと判断した場合には（ステップＳ３０３否定）、ステップＳ３０１に戻る。一方、変数テーブル１３８に含まれる全てのグローバル種別である変数（名）および該変数に対応するアドレス（デバイス）をグローバル変数テーブル１３４に登録したと判断した場合は（ステップＳ３０３肯定）、一連のグローバル変数宣言処理が終了する。【００５４】
以上のような処理を行うことにより、本実施の形態にかかるプログラム作成装置１においては、図１６に示すように変数テーブル１３８に基づいてグローバル変数テーブル１３４を自動で作成し、または新たな変数（名）および該変数（名）に対応するアドレス（デバイス）をグローバル変数テーブル１３４に追加してグローバル変数宣言を行うことができる。図１６は、本実施の形態にかかるプログラム作成装置１におけるグローバル変数テーブルの作成を説明する図である。【００５５】
つぎに、上記のようにして作成した変数テーブル１３８に基づいて、ローカル変数テーブルを作成してローカル変数宣言を行う処理について図１７を参照しながら説明する。図１７は、本実施の形態にかかるプログラム作成装置１におけるローカル変数宣言処理を説明するためのフローチャートである。【００５６】
本実施の形態にかかるプログラム作成装置１においてローカル変数宣言処理を行うには、まずプログラム作成部１１のローカル変数テーブル作成部１１３が、アドレス種別がローカル種別である変数（名）を変数テーブル１３８から抽出する（ステップＳ４０１）。つぎに、ローカル変数テーブル作成部１１３は、抽出した変数（名）をたとえばローカル変数テーブルＡ１３６Ａに登録する（ステップＳ４０２）。【００５７】
登録後、ローカル変数テーブル作成部１１３は、変数テーブル１３８に含まれる全てのローカル種別である変数（名）をローカル変数テーブルＡ１３６Ａに登録したか否かを判断する（ステップＳ４０３）。【００５８】
ここで、変数テーブル１３８に含まれる全てのローカル種別である変数（名）をローカル変数テーブルＡ１３６Ａに登録していないと判断した場合には（ステップＳ４０３否定）、ステップＳ４０１に戻る。一方、変数テーブル１３８に含まれる全てのローカル種別である変数（名）をローカル変数テーブルＡ１３６Ａに登録したと判断した場合は（ステップＳ４０３肯定）、一連のローカル変数宣言処理が終了する。【００５９】
以上のような処理を行うことにより、本実施の形態にかかるプログラム作成装置１においては、図１８に示すように変数テーブル１３８に基づいて、シーケンスプログラムＡ１３５Ａに対応するローカル変数テーブルＡ１３６Ａを作成し、ローカル変数宣言を行うことができる。図１８は、本実施の形態にかかるプログラム作成装置１におけるローカル変数テーブルの作成を説明する図である。【００６０】
また、本実施の形態にかかるプログラム作成装置１においては、プログラム作成部１１５は、上記のようにして置換・変換した、変数を使用したシーケンスプログラムＡ１３５Ａを流用して、新たなシーケンスプログラムＢ１３５Ｂを作成し、たとえばシーケンスプログラムＢ１３５Ｂとして流用後プロジェクトメモリ１３３に記憶させることができる。このとき、上記と同様にして、グローバル宣言処理を行い、グローバル変数テーブル１３４に新たなアドレス（デバイス）を追記することができる。また、上記と同様にして、新たなシーケンスプログラムＢ１３５Ｂに対応するローカル変数テーブルＢ１３６Ｂを作成し、ローカル変数宣言を行うことができる。【００６１】
これにより、本実施の形態にかかるプログラム作成装置１においては、図１９に示すように、変数を使用したシーケンスプログラムＡ１３５Ａを流用して、変数を使用した新たなシーケンスプログラムＢ１３５Ｂを作成することができる。図１９は、本実施の形態にかかるプログラム作成装置１の機能を説明する図である。【００６２】
すなわち、本実施の形態にかかるプログラム作成装置１によれば、図２０に示すように、流用元プロジェクトデータ７１の流用元シーケンスプログラム７２およびデバイスコメント７３と、変数テーブル１３８と、に基づいて、流用後プロジェクトデータ１３９のシーケンスプログラムＡ１３５Ａ、ローカル変数テーブルＡ１３６Ａおよびグローバル変数テーブル１３４を自動で作成、更新することができる。【００６３】
そして、流用後プロジェクトデータ１３９のシーケンスプログラムＡ１３５Ａ、ローカル変数テーブルＡ１３６Ａおよびグローバル変数テーブル１３４と、変数テーブル１３８と、に基づいて、流用後プロジェクトデータ１３９のシーケンスプログラムＢ１３５Ｂ、ローカル変数テーブルＢ１３６Ｂおよびグローバル変数テーブル１３４を作成、更新することができる。図２０は、プログラム作成装置１の機能を説明する図である。【００６４】
上述したように、本実施の形態にかかるプログラム作成装置１は、ＰＬＣのシーケンスプログラムを作成、編集するＰＬＣの周辺装置である。このプログラム作成装置１においては、シーケンスプログラム内において入出力アドレス（入出力デバイス）やＰＬＣの内部メモリアドレス（内部デバイス）などのアドレス（デバイス）の代わりに、変数を用いてシーケンスプログラムの作成を行うことができる。すなわち、アドレスを直接シーケンスプログラムに記述するのではなく、該アドレスを変数に置き換えて記述したシーケンスプログラムの作成を行うことができる。【００６５】
また、このプログラム作成装置１では、過去に作成した既存のシーケンスプログラム資産を再利用して新たなシーケンスプログラムを作成することができる。ここで、このプログラム作成装置１では、過去に作成したシーケンスプログラム資産を再利用して新たなシーケンスプログラムのプロジェクトを作成する際に、変数を使用した既存のシーケンスプログラム資産を再利用して、変数を使用した新たなシーケンスプログラムを作成することができる。また、このプログラム作成装置１では、変数を使用していない既存のシーケンスプログラム資産を再利用して、変数を使用した新たなシーケンスプログラムを作成することができる。【００６６】
そして、本実施の形態にかかるプログラム作成装置１では、変数を使用していない既存のシーケンスプログラム資産に記述されたアドレス（デバイス）を自動的に変数に置換して、変数を使用したシーケンスプログラムに変換することができる。【００６７】
なお、上記においては、入力装置および表示装置をプログラム作成装置の外部に配置した構成としているが、プログラム作成装置が入力装置および表示装置を備えた構成とすることもできる。また、上記においては、プログラム作成装置と外部記憶装置とを直接接続した構成としているが、ネットワークを介してプログラム作成装置と外部記憶装置とを接続する構成とすることも可能である。また、上記においては、既存の流用元プロジェクトデータ７１を外部記憶装置７に記憶する形態について説明したが、流用元プロジェクトデータ７１をプログラム作成装置１内の記憶部に１３に記憶する構成とすることもできる。【００６８】
また、上述したプログラム置換方法およびプログラム作成方法を、これらの方法の処理手順が格納されたプログラムとして構成し、このプログラムを図２１に示すようにＣＰＵ、記憶装置等を有するコンピュータ（プログラマブルコントローラの周辺装置）で実行することによって実現することができる。【００６９】
図２１は上述したプログラム置換方法およびプログラム作成方法のプログラムを実行可能なコンピュータ装置の概略構成の一例を示すブロック図である。このコンピュータ装置は、入力装置２０１、表示装置２０２、ＣＰＵ（Central Processing Unit：中央処理ユニット）２０３、メモリ２０４、記憶装置２０５、媒体駆動装置２０６、ネットワークインターフェース２０７及びバス２０８を備えて構成されている。【００７０】
ここで、入力装置２０１はキーボード、マウス、タッチパネル、スキャナ等により構成され、情報の入力に使用される。表示装置２０２は、種々の出力情報や入力装置２０１からの入力された情報などを表示出力させる。ＣＰＵ２０３は、種々のプログラムを動作させる。メモリ２０４は、ＣＰＵ２０３によって実行されるプログラムが展開され、またそのプログラムがＣＰＵ２０３によって実行されるときに一時的に作成される情報等が記憶される。記憶装置２０５は、プログラムやプログラム実行時の一時的な情報等を保持する。媒体駆動装置２０６は、プログラムやデータ等を記憶した記録媒体を装着してそれらを読み込み、メモリ２０４または記憶装置２０５へ格納するのに用いられる。ネットワークインターフェース２０７は、コンピュータ装置とネットワークとを接続するためのものである。バス２０８は、上記各部を接続する。【００７１】
また、上記においては、ＰＬＣのシーケンスプログラムを作成する場合を例に説明したが、本発明はＰＬＣのシーケンスプログラムの作成に限定されるものではなく、シーケンスプログラムの作成全般に適用可能である。
【産業上の利用可能性】
【００７２】
以上のように、本発明にかかるプログラマブルコントローラの周辺装置は、変数を使用していない既存のシーケンスプログラム資産を再利用して新たなシーケンスプログラムを作成する場合に有用である。
【図１】
2008102426.tif 000003
【図２】
2008102426.tif 000004
【図３】
2008102426.tif 000005
【図４】
2008102426.tif 000006
【図５】
2008102426.tif 000007
【図６】
2008102426.tif 000008
【図７】
2008102426.tif 000009
【図８】
2008102426.tif 000010
【図９】
2008102426.tif 000011
【図１０】
2008102426.tif 000012
【図１１】
2008102426.tif 000013
【図１２】
2008102426.tif 000014
【図１３】
2008102426.tif 000015
【図１４】
2008102426.tif 000016
【図１５】
2008102426.tif 000017
【図１６】
2008102426.tif 000018
【図１７】
2008102426.tif 000019
【図１８】
2008102426.tif 000020
【図１９】
2008102426.tif 000021
【図２０】
2008102426.tif 000022
【図２１】
2008102426.tif 000023
【手続補正書】
【提出日】平成19年11月12日(2007.11.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
既存のプログラムを、変数を使用したプログラムに置換するプログラマブルコントローラの周辺装置であって、
前記既存のプログラムにおいて記述されたアドレスを抽出し、前記抽出した各アドレスに対してそれぞれ固有の変数を割り当て、前記既存のプログラムにおいて記述されたアドレスと該アドレスの種別とを関連付けたアドレス種別情報に基づいて、前記アドレスと前記アドレスに対応する変数と前記アドレスの種別とを関連付けた変数対応情報を作成する変数情報作成手段と、
前記既存のプログラムにおいて記述されたアドレスを前記変数対応情報に基づいて前記変数に置換して、前記既存のプログラムを前記変数を使用したプログラムに置換する置換手段と、
を備えることを特徴とするプログラマブルコントローラの周辺装置。
【請求項２】
前記アドレスの種別がグローバル種別とローカル種別であり、
前記アドレスと前記変数と前記アドレスの種別とを関連付けた変数対応情報から、前記グローバル種別に関連付けられた変数およびアドレスを抽出し、該抽出した変数とアドレスとを関連付けたグローバル種別変数情報を作成するグローバル種別変数情報作成手段を備えること、
を特徴とする請求項１に記載のプログラマブルコントローラの周辺装置。
【請求項３】
前記アドレスの種別がグローバル種別とローカル種別であり、
前記アドレスと前記変数と前記アドレスの種別とを関連付けた変数対応情報から、前記ローカル種別に関連付けられた変数を抽出し、前記アドレスの種別がローカル種別である変数の情報であるローカル種別変数情報を作成するローカル種別変数情報作成手段を備えること、
を特徴とする請求項１に記載のプログラマブルコントローラの周辺装置。
【請求項４】
既存のプログラムを、変数を使用したプログラムに置換する置換方法であって、
前記既存のプログラムにおいて記述されたアドレスを抽出し、前記抽出した各アドレスに対してそれぞれ固有の変数を割り当て、前記既存のプログラムにおいて記述されたアドレスと該アドレスの種別とを関連付けたアドレス種別情報に基づいて、前記アドレスと前記アドレスに対応する変数と前記アドレスの種別とを関連付けた変数対応情報を作成する変数情報作成工程と、
前記既存のプログラムにおいて記述されたアドレスを前記変数対応情報に基づいて前記変数に置換して、前記既存のプログラムを前記変数を使用したプログラムに置換する置換工程と、
を含むことを特徴とする置換方法。
【請求項５】
請求項４に記載の置換方法をプログラマブルコントローラの周辺装置に実行させるプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラの周辺装置、置換方法およびプログラムに関するものであり、特に、プログラマブルロジックコントローラ（以下、ＰＬＣと呼ぶ場合がある）のシーケンスプログラムの作成作業、編集作業の簡略化を実現するプログラマブルコントローラの周辺装置、置換方法およびプログラムに関するものである。
【背景技術】
【０００２】
従来、ＰＬＣのシーケンスプログラムの作成、編集が可能なＰＬＣの周辺装置においては、シーケンスプログラムのプログラムを作成する際に、ＰＬＣ内部のメモリのアドレスを記述してシーケンスプログラムのプログラムコードを作成していた。
【０００３】
しかしながら、最近、ＰＬＣ内部のメモリのアドレスの代わりに変数を用いたプログラムの作成方法が行われるようになってきた。すなわち、ＰＬＣ内部のメモリのアドレスを直接シーケンスプログラムに記述するのではなくて、該ＰＬＣ内部のメモリのアドレスを変数に置き換えて記述するプログラムの作成方法が行われるようになってきた。このようなシーケンスプログラムの作成方法では、たとえばシーケンスプログラムのコードにおいて、「ＬＤ  Ｘ０」と記述する代わりに、「ＬＤ  （変数）」と記述される。
【０００４】
【特許文献１】特開２０００−２４２３１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、シーケンスプログラムの作成においては、プログラム作成作業の簡略化のために、過去に作成した既存のシーケンスプログラム資産を再利用して新たなシーケンスプログラムの作成が行われている。
【０００６】
シーケンスプログラムは、コンパイルが行われてＰＬＣで使用される。過去に作成した既存のシーケンスプログラム資産を再利用して作成した新たなシーケンスプログラムにおいては、このコンパイルする際に、既存のシーケンスプログラム資産におけるアドレスを、新たに使用されるＰＬＣにおけるアドレスに割当て直す必要がある。
【０００７】
そこで、上述したような変数を使用したシーケンスプログラムのプロジェクトを作成する際、変数を使用していない既存のシーケンスプログラム資産を再利用する場合には、まず変数を使用していない既存のシーケンスプログラム資産をコピーする。そして、コピーしたシーケンスプログラム内の入出力アドレス（入出力デバイス）をグローバル変数として宣言し、内部メモリアドレス（内部デバイス）をローカル変数として宣言して、シーケンスプログラム内のデバイスを変数へ置換する必要があった。
【０００８】
グローバル変数とは、所定のプロジェクト内の全てのプログラム内で使用可能な変数であり、プロジェクト内の個々のプログラムに依存しない変数である。すなわち、グローバル変数を用いることにより、変数の値をプロジェクト内の全てのプログラムで共有することができる。また、ローカル変数とは、変数を定義したプログラム内でのみ使用可能な変数であり、プロジェクト内の個々のプログラムに依存した変数である。すなわち、ローカル変数は、変数の値をプロジェクト内の他のプログラムと共有する必要がない場合に使用される。そして、グローバル変数とローカル変数とを使い分けることにより、複数人によるプログラムの編集作業を効率的に行うことができるというメリットがある。
【０００９】
これらの置換作業は、シーケンスプログラムの作成者が手作業で行わなければならず、この置換作業はアドレスの重複が生じないように考慮しながら行う必要がある。このため、この置換作業は複雑かつ時間を要する作業であり、変数を使用していないシーケンスプログラム資産の再利用を効率的に行うことができない、という問題があった。
【００１０】
また、グローバル変数およびローカル変数のアドレスの割付において、メモリに対するアドレスの割付を自動的に行う技術が提案されている（たとえば、特許文献１参照）。しかしながら、この文献のような従来の技術においては、変数を使用していない既存のシーケンスプログラム資産の再利用に関する技術は考慮されていない。
【００１１】
本発明は、上記に鑑みてなされたものであって、変数を使用していない既存のシーケンスプログラムを、変数を使用したシーケンスプログラムに自動で効率良く変換することが可能なプログラマブルコントローラの周辺装置、置換方法およびプログラムを得ることを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、本発明にかかるプログラマブルコントローラの周辺装置は、既存のプログラムを、変数を使用したプログラムに置換するプログラマブルコントローラの周辺装置であって、前記既存のプログラムにおいて記述されたアドレスを抽出し、前記抽出した各アドレスに対してそれぞれ固有の変数を割り当て、前記既存のプログラムにおいて記述されたアドレスと該アドレスの種別とを関連付けたアドレス種別情報に基づいて、前記アドレスと前記アドレスに対応する変数と前記アドレスの種別とを関連付けた変数対応情報を作成する変数情報作成手段と、前記既存のプログラムにおいて記述されたアドレスを前記変数対応情報に基づいて前記変数に置換して、前記既存のプログラムを前記変数を使用したプログラムに置換する置換手段と、を備えることを特徴とする。
【発明の効果】
【００１３】
本発明にかかるプログラマブルコントローラの周辺装置は、既存のプログラムにおいて記述されたアドレスを抽出し、抽出した各アドレスに対してそれぞれ固有の変数を割り当て、アドレスと該アドレスに対応する変数とを関連付けた変数対応情報を自動で作成し、この変数対応情報に基づいて、既存のプログラムにおいて記述されたアドレスを変数に自動で置換して、既存のプログラムを、変数を使用したプログラムに自動で置換することができる。これにより、本発明にかかるプログラマブルコントローラの周辺装置によれば、既存のシーケンスプログラムを、変数を使用したシーケンスプログラムに自動で効率良く変換することが可能である、という効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下に、本発明にかかるプログラマブルコントローラ（ＰＬＣ）の周辺装置、置換方法およびプログラムの実施の形態を図面に基づいて詳細に説明する。なお、本発明は以下の記述により限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。
【００１５】
実施の形態
図１は、本発明にかかるＰＬＣの周辺装置としての機能を備えた、本発明の実施の形態にかかるプログラム作成システムの構成の一例を示す図である。本実施の形態にかかるプログラム作成システムは、図１に示すように、ＰＬＣの周辺装置であるプログラム作成装置１と、入力装置３と、表示装置５と、外部記憶装置７と、を備えて構成されている。
【００１６】
従来のプログラム作成装置において、変数を使用していない既存のシーケンスプログラム資産を再利用して変数を使用した新たなシーケンスプログラムのプロジェクトを作成するには、まず、変数を使用していない既存のシーケンスプログラム資産を新規のプロジェクトへコピーする。つぎに、コピーしたシーケンスプログラム内の入出力アドレス（入出力デバイス）をグローバル変数として宣言し、内部メモリアドレス（内部デバイス）をローカル変数として宣言して、シーケンスプログラム内のデバイスを変数へ置換する。
【００１７】
従来の置換作業は、シーケンスプログラムの作成者が手作業で行わなければならず、また、アドレスの重複が生じないように考慮しながら行う必要があり、複雑かつ時間を要する作業であった。このため、シーケンスプログラムの作成者の作業の負担が大きく、変数を使用していないシーケンスプログラム資産の再利用を効率的に行うことができなかった。
【００１８】
これに対して、本実施の形態にかかるプログラム作成装置１では、この置換作業を自動的に行うことができる。これにより、本実施の形態にかかるプログラム作成装置１では、シーケンスプログラムの作成者の手を煩わせることなく、変数を使用していないシーケンスプログラム資産を再利用して、新たなシーケンスプログラムのプロジェクトを効率的に作成することができる。ここで、本実施の形態にかかるプログラム作成装置１は、図１に示すようにプログラム作成部１１と、記憶部１３と、通信部１５と、制御部１７と、を備えて構成される。
【００１９】
入力装置３は、プログラム作成装置に対する操作を指示する操作指示情報などを入力する操作指示情報入力手段である。表示装置５は、シーケンスプログラムやプログラム作成装置１における処理データなどの各種情報を表示する表示手段である。
【００２０】
外部記憶装置７は、過去に作成した流用元プロジェクトデータ７１を記憶する記憶手段である。この外部記憶装置７には、流用元プロジェクトデータ７１として、変数を使用していない流用元シーケンスプログラム７２と、該流用元シーケンスプログラム７２の付属データでありシーケンスプログラムに使用されたアドレス（デバイス）に対するコメントであるデバイスコメント７３と、が記憶されている。
【００２１】
図２は、流用元プロジェクトデータ７１の流用元シーケンスプログラム７２の一例を示す図である。この流用元シーケンスプログラム７２は、後述するように既存のシーケンスプログラム資産を再利用して新たなシーケンスプログラムを作成する際の、流用元となるシーケンスプログラムである。図２に示すように、この流用元シーケンスプログラム７２には、プログラムのステップと、該ステップに対応したコードと、が記述されている。たとえば図２においては、「ステップ０」には、コード「ＬＤ  Ｘ０」が記述され、「ステップ１」には、コード「ＳＥＴ  Ｍ１」が記述されている。このように、流用元シーケンスプログラム７２は、変数を使用せずに、アドレスを直接記述したプログラムである。
【００２２】
図３は、流用元プロジェクトデータ７１のデバイスコメント７３の一例を示す図である。このデバイスコメント７３は、後述するように既存のシーケンスプログラム資産を再利用して新たなシーケンスプログラムを作成する際の、流用元となるデバイスコメントである。図３に示すように、このデバイスコメント７３には、流用元シーケンスプログラム７２において記述されたアドレスと、該アドレスに関するコメントと、が記述されている。たとえば図３においては、「アドレスＸ０」に対しては、該アドレスが意味する内容である「起動スイッチ」が記述され、「アドレスＹ１」に対しては、該アドレスが意味する内容である「起動ランプ」が記述されている。
【００２３】
図４は、プログラム作成部１１の機能構成を示すブロック図である。プログラム作成部１１は、図４に示すように、変数テーブル作成部１１１と、グローバル変数テーブル作成部１１２と、ローカル変数テーブル作成部１１３と、置換処理部１１４と、プログラム作成部１１５と、を備える。
【００２４】
プログラム作成部１１が、変数を使用していない既存のシーケンスプログラム資産を再利用して変数を使用した新たなシーケンスプログラムのプロジェクトを作成する場合には、まず変数テーブル作成部１１１が既存の流用元シーケンスプログラム７２とデバイスコメント７３とを外部記憶装置７から記憶部１３にコピーする。
【００２５】
つぎに、変数テーブル作成部１１１は、コピーした既存の流用元シーケンスプログラム７２のコード中のアドレスについて、記憶部１３に予め記憶された図５に示すようなアドレス種別テーブル（アドレス種別情報）を検索することにより、流用元シーケンスプログラム７２のコード中のアドレスの種別を判別する。図５は、アドレス種別テーブルの一例を示す図である。アドレス種別は、グローバルとローカルとの二種類に分類される。このアドレス種別テーブルには、シーケンスプログラムにおいて使用されるアドレスと、該アドレスのアドレス種別（グローバルまたはローカル）と、が対応付けられて記憶されている。
【００２６】
そして、変数テーブル作成部１１１は、既存の流用元シーケンスプログラム７２のコード中のアドレスと、判別したアドレス種別（グローバルまたはローカル）と、デバイスコメント７３と、に基づいて、図６に示すようなアドレスと該アドレスに対応する変数とを関連付けて保持する変数テーブル（変数情報）を作成し、記憶部１３に記憶させる。図６は、変数テーブルの一例を示す図である。図６においては、変数名としてデバイスコメント７３に含まれる「コメント」の名称をそのまま流用して使用している。
【００２７】
グローバル変数テーブル作成部１１２は、変数テーブル作成部１１１において作成した図６に示すような変数テーブルから、アドレス種別がグローバル種別である変数名および該変数名に対応するアドレスを抽出し、図７に示すような該抽出した変数とアドレスとを関連付けたグローバル種別変数情報であるグローバル変数テーブルを作成してグローバル変数宣言を行う。図７は、グローバル変数テーブルの一例を示す図である。グローバル変数テーブルには、図７に示すように、アドレス種別がグローバル種別であるアドレス（デバイス）およびこれに対応する変数名が保持されている。このグローバル変数テーブルは、変数を使用していない既存のシーケンスプログラムのアドレス（デバイス）を変数に置換して作成した新たなシーケンスプログラム、またはこの新たなシーケンスプログラムを用いて作成した新たなシーケンスプログラムのコンパイルを行う際に用いられる。
【００２８】
ローカル変数テーブル作成部１１３は、変数テーブル作成部１１１において作成した図６に示すような変数テーブルから、アドレス種別がローカル種別である変数名を抽出し、図８に示すようなローカル変数テーブル（アドレスの種別がローカル種別である変数の情報であるローカル種別変数情報）を作成してローカル変数宣言を行う。図８は、ローカル変数テーブルの一例を示す図である。ローカル変数テーブルには、図８に示すように、アドレス種別がローカル種別である変数名が保持されている。このローカル変数テーブルは、変数を使用していない既存のシーケンスプログラムのアドレス（デバイス）を変数に置換して作成した新たなシーケンスプログラム、またはこの新たなシーケンスプログラムを用いて作成した新たなシーケンスプログラムのコンパイルを行う際に用いられる。
【００２９】
置換処理部１１４は、変数テーブル作成部１１１において作成した図６に示すような変数テーブルに基づいて、既存の流用元シーケンスプログラム７２のコード中のアドレスを、各アドレスに対してそれぞれ固有の変数で置換することにより、既存の流用元シーケンスプログラム７２を、変数を使用したシーケンスプログラムへ置換する（変換する）。図９は、図２に示す流用元シーケンスプログラム７２を、変数を使用したシーケンスプログラムに変換したシーケンスプログラムの一例を示す図である。
【００３０】
ここで、既存の流用元シーケンスプログラム７２のコード中のアドレスを変数で置換する際に、置換処理部１１４は図３に示すようなデバイスコメント７３に記述された各アドレスに対する説明記述である「コメント」の名称を「変数」の名称（変数名）として使用する。また、デバイスコメント７３においてアドレスに対する「コメント」が記述されていない場合は、予め指定された固定文字または都度指示される固定文字を該アドレスを置換する「変数」の名称（変数名）として使用する。
【００３１】
プログラム作成部１１５は、変数を使用したシーケンスプログラムを流用して、または新規にシーケンスプログラムを作成するプログラム作成手段である。
【００３２】
記憶部１３は、プログラム作成装置１における処理を行うための各種プログラムや処理時に生成されるシーケンスプログラム、データなどを記憶する記憶手段である。図１０は、記憶部１３の構成を示すブロック図である。記憶部１３は、図１０に示すように、プログラム作成装置１における処理を行うための各種プログラムを記憶するプログラムメモリ１３１と、プログラム作成装置１における処理時に生成されるデータを記憶するデータメモリ１３２と、プログラム作成装置１において既存の流用元シーケンスプログラム７２を流用して新たに作成または編集したシーケンスプログラムのプロジェクトを記憶する流用後プロジェクトメモリ１３３と、を備える。
【００３３】
また、流用後プロジェクトメモリ１３３は、流用後プロジェクトデータ１３９を記憶しており、該流用後プロジェクトデータ１３９には、たとえばグローバル変数テーブル１３４と、既存の流用元シーケンスプログラム７２を流用して新たに作成または編集したシーケンスプログラムＡ１３５Ａと、シーケンスプログラムＡ１３５に対応するローカル変数テーブルＡ１３６Ａと、既存の流用元シーケンスプログラム７２を流用して新たに作成または編集したシーケンスプログラムＢ１３５Ｂと、シーケンスプログラムＢ１３５Ｂに対応するローカル変数テーブルＢ１３６Ｂと、アドレス種別テーブル１３７と、変数テーブル１３８と、を記憶している。また、記憶部１３は、外部記憶装置７から既存の流用元シーケンスプログラム７２およびデバイスコメント７３をコピーした際には、これらをデータメモリ１３２に記憶する。
【００３４】
通信部１５は、プログラム作成装置１の外部に接続した外部記憶装置７との間で情報の入出力を行う情報入出力手段である。制御部１７は、プログラム作成装置１全体の制御を行う。
【００３５】
つぎに、このように構成された本実施の形態にかかるプログラム作成システムを用いて、過去に作成した既存のシーケンスプログラム資産を再利用して新たなシーケンスプログラムを作成する際の処理について説明する。まず、図１１を参照しながら、変数テーブルの作成処理について説明する。図１１は、本実施の形態にかかるプログラム作成装置１における変数テーブルの作成処理を説明するためのフローチャートである。
【００３６】
本実施の形態にかかるプログラム作成装置１において変数テーブルを作成するには、まず、プログラム作成部１１の変数テーブル作成部１１１が、既存の流用元シーケンスプログラム７２とデバイスコメント７３とを、外部記憶装置７から記憶部１３のデータメモリ１３２にコピーする（ステップＳ１０１）。つぎに、変数テーブル作成部１１１は、記憶部１３のデータメモリ１３２にコピーした流用元シーケンスプログラム７２の先頭行から検索を開始して、流用元シーケンスプログラム７２のコードに含まれるアドレス（デバイス）の抽出を行う（ステップＳ１０２）。
【００３７】
そして、変数テーブル作成部１１１は、変数テーブルを参照して、抽出したアドレス（デバイス）が変数テーブルに未登録であるか否かを判断する（ステップＳ１０３）。抽出したアドレス（デバイス）が変数テーブルに未登録である場合には（ステップＳ１０３肯定）、該アドレス（デバイス）を変数テーブルに登録する（ステップＳ１０４）。そして、変数テーブル作成部１１１は、記憶部１３に予め記憶されたアドレス種別テーブル１３７から該アドレス（デバイス）を検索してアドレスの種別（グローバルまたはローカル）を判別し、アドレスの種別（グローバルまたはローカル）を変数テーブルに登録する（ステップＳ１０５）。
【００３８】
つぎに、変数テーブル作成部１１１は、記憶部１３のデータメモリ１３２にコピーしたデバイスコメント７３を検索して、該アドレスに対するコメントの有無を判断する（ステップＳ１０６）。アドレスに対するコメントが存在する場合は（ステップＳ１０６肯定）、該当するコメントの名称を該アドレスに対応する変数（名）として変数テーブルに登録する（ステップＳ１０７）。一方、アドレスに対するコメントが存在しない場合は（ステップＳ１０６否定）、予め指定された固定文字または都度指示される固定文字を該アドレスに対応する変数（名）として変数テーブルに登録する（ステップＳ１０８）。
【００３９】
そして、変数（名）の登録後、変数テーブル作成部１１１は、流用元シーケンスプログラム７２のコードに含まれる全てのアドレス（デバイス）の抽出が終了して変数テーブルに登録されているか否か判断する（ステップＳ１０９）。流用元シーケンスプログラム７２のコードに含まれる全てのアドレス（デバイス）が変数テーブルに登録されていない場合は（ステップＳ１０９否定）、ステップＳ１０２に戻って流用元シーケンスプログラム７２のコードに含まれるアドレス（デバイス）の抽出を繰り返す。また、流用元シーケンスプログラム７２のコードに含まれる全てのアドレス（デバイス）が変数テーブルに登録されている場合は（ステップＳ１０９肯定）、一連の変数テーブルの作成処理が終了する。
【００４０】
また、ステップＳ１０３に戻って、抽出したアドレス（デバイス）が変数テーブルに登録されている場合には（ステップＳ１０３否定）、そのままステップＳ１０９に進む。変数テーブル作成部１１１は、流用元シーケンスプログラム７２のコードに含まれる全てのアドレス（デバイス）の抽出が終了して変数テーブルに登録されているか否か判断する（ステップＳ１０９）。
【００４１】
そして、流用元シーケンスプログラム７２のコードに含まれる全てのアドレス（デバイス）が変数テーブルに登録されていない場合は（ステップＳ１０９否定）、ステップＳ１０２に戻って流用元シーケンスプログラム７２のコードに含まれるアドレス（デバイス）の抽出を繰り返す。また、流用元シーケンスプログラム７２のコードに含まれる全てのアドレス（デバイス）が変数テーブルに登録されている場合は（ステップＳ１０９肯定）、一連の変数テーブルの作成処理が終了する。
【００４２】
以上のような処理を行うことにより、本実施の形態にかかるプログラム作成装置１においては、図１２に示すように流用元プロジェクトデータ７１の流用元シーケンスプログラム７２とアドレス種別テーブル１３７とに基づいて、変数テーブル１３８を作成することができる。図１２は、本実施の形態にかかるプログラム作成装置１における変数テーブルの作成方法を説明するための図である。
【００４３】
つぎに、上記のようにして作成した変数テーブル１３８に基づいて、既存の流用元シーケンスプログラム７２のコード中のアドレスを、該アドレスに対応する変数で置換する際の処理について図１３を参照しながら説明する。図１３は、本実施の形態にかかるプログラム作成装置１におけるプログラムの置換処理を説明するためのフローチャートである。
【００４４】
本実施の形態にかかるプログラム作成装置１においてプログラムの置換処理を行うには、まずプログラム作成部１１の置換処理部１１４が、記憶部１３にコピーした流用元シーケンスプログラム７２の先頭行から検索を開始して、流用元シーケンスプログラム７２のコードに含まれるアドレス（デバイス）の抽出を行う（ステップＳ２０１）。つぎに、置換処理部１１４は、抽出したアドレス（デバイス）を変数テーブルにおいて検索し、変数テーブルから該アドレス（デバイス）に対応する変数（名）を抽出する（ステップＳ２０２）。
【００４５】
そして、置換処理部１１４は、抽出した流用元シーケンスプログラム７２のアドレス（デバイス）を該変数に置き換える置換処理を行い、置換処理を行ったシーケンスプログラムをたとえばシーケンスプログラムＡ１３５Ａとして流用後プロジェクトメモリ１３３に記憶させる（ステップＳ２０３）。置換処理後、置換処理部１１４は、流用元シーケンスプログラム７２の全てのアドレス（デバイス）を、対応する変数に置換が完了したか否かを判断する（ステップＳ２０４）。
【００４６】
ここで、流用元シーケンスプログラム７２内の全てのアドレス（デバイス）の変数への置換が完了していないと判断した場合は（ステップＳ２０４否定）、ステップＳ２０１に戻る。一方、流用元シーケンスプログラム７２内の全てのアドレス（デバイス）の変数への置換が完了したと判断した場合は（ステップＳ２０４肯定）、一連の変数テーブルの作成処理が終了する。
【００４７】
以上のような処理を行うことにより、本実施の形態にかかるプログラム作成装置１においては、図１４に示すように流用元プロジェクトデータ７１の流用元シーケンスプログラム７２と変数テーブル１３８とに基づいて、流用元プロジェクトデータ７１の流用元シーケンスプログラム７２におけるアドレス（デバイス）を自動で変数に置換することができる。そして、流用元プロジェクトデータ７１を、変数を使用したシーケンスプログラムに置換することができる。すなわち、本実施の形態にかかるプログラム作成装置１によれば、変数を使用していない既存のシーケンスプログラムを、変数を使用したシーケンスプログラムに自動で置換（変換）することができる。図１４は、本実施の形態にかかるプログラム作成装置１におけるシーケンスプログラムの置換（変換）を説明する図である。
【００４８】
つぎに、上記のようにして作成した変数テーブル１３８に基づいて、グローバル変数テーブルを作成してグローバル変数宣言を行う処理について図１５を参照しながら説明する。図１５は、本実施の形態にかかるプログラム作成装置１におけるグローバル変数宣言処理を説明するためのフローチャートである。
【００４９】
本実施の形態にかかるプログラム作成装置１においてグローバル変数宣言処理を行うには、まずプログラム作成部１１のグローバル変数テーブル作成部１１２が、アドレス種別がグローバル種別である変数（名）および該変数に対応するアドレス（デバイス）を変数テーブル１３８から抽出する（ステップＳ３０１）。つぎに、グローバル変数テーブル作成部１１２は、抽出した変数（名）および該変数に対応するアドレス（デバイス）をグローバル変数テーブル１３４に登録する（ステップＳ３０２）。
【００５０】
登録後、グローバル変数テーブル作成部１１２は、変数テーブル１３８に含まれる全てのグローバル種別である変数（名）および該変数に対応するアドレス（デバイス）をグローバル変数テーブル１３４に登録したか否かを判断する（ステップＳ３０３）。
【００５１】
ここで、変数テーブル１３８に含まれる全てのグローバル種別である変数（名）および該変数に対応するアドレス（デバイス）をグローバル変数テーブル１３４に登録していないと判断した場合には（ステップＳ３０３否定）、ステップＳ３０１に戻る。一方、変数テーブル１３８に含まれる全てのグローバル種別である変数（名）および該変数に対応するアドレス（デバイス）をグローバル変数テーブル１３４に登録したと判断した場合は（ステップＳ３０３肯定）、一連のグローバル変数宣言処理が終了する。
【００５２】
以上のような処理を行うことにより、本実施の形態にかかるプログラム作成装置１においては、図１６に示すように変数テーブル１３８に基づいてグローバル変数テーブル１３４を自動で作成し、または新たな変数（名）および該変数（名）に対応するアドレス（デバイス）をグローバル変数テーブル１３４に追加してグローバル変数宣言を行うことができる。図１６は、本実施の形態にかかるプログラム作成装置１におけるグローバル変数テーブルの作成を説明する図である。
【００５３】
つぎに、上記のようにして作成した変数テーブル１３８に基づいて、ローカル変数テーブルを作成してローカル変数宣言を行う処理について図１７を参照しながら説明する。図１７は、本実施の形態にかかるプログラム作成装置１におけるローカル変数宣言処理を説明するためのフローチャートである。
【００５４】
本実施の形態にかかるプログラム作成装置１においてローカル変数宣言処理を行うには、まずプログラム作成部１１のローカル変数テーブル作成部１１３が、アドレス種別がローカル種別である変数（名）を変数テーブル１３８から抽出する（ステップＳ４０１）。つぎに、ローカル変数テーブル作成部１１３は、抽出した変数（名）をたとえばローカル変数テーブルＡ１３６Ａに登録する（ステップＳ４０２）。
【００５５】
登録後、ローカル変数テーブル作成部１１３は、変数テーブル１３８に含まれる全てのローカル種別である変数（名）をローカル変数テーブルＡ１３６Ａに登録したか否かを判断する（ステップＳ４０３）。
【００５６】
ここで、変数テーブル１３８に含まれる全てのローカル種別である変数（名）をローカル変数テーブルＡ１３６Ａに登録していないと判断した場合には（ステップＳ４０３否定）、ステップＳ４０１に戻る。一方、変数テーブル１３８に含まれる全てのローカル種別である変数（名）をローカル変数テーブルＡ１３６Ａに登録したと判断した場合は（ステップＳ４０３肯定）、一連のローカル変数宣言処理が終了する。
【００５７】
以上のような処理を行うことにより、本実施の形態にかかるプログラム作成装置１においては、図１８に示すように変数テーブル１３８に基づいて、シーケンスプログラムＡ１３５Ａに対応するローカル変数テーブルＡ１３６Ａを作成し、ローカル変数宣言を行うことができる。図１８は、本実施の形態にかかるプログラム作成装置１におけるローカル変数テーブルの作成を説明する図である。
【００５８】
また、本実施の形態にかかるプログラム作成装置１においては、プログラム作成部１１５は、上記のようにして置換・変換した、変数を使用したシーケンスプログラムＡ１３５Ａを流用して、新たなシーケンスプログラムＢ１３５Ｂを作成し、たとえばシーケンスプログラムＢ１３５Ｂとして流用後プロジェクトメモリ１３３に記憶させることができる。このとき、上記と同様にして、グローバル宣言処理を行い、グローバル変数テーブル１３４に新たなアドレス（デバイス）を追記することができる。また、上記と同様にして、新たなシーケンスプログラムＢ１３５Ｂに対応するローカル変数テーブルＢ１３６Ｂを作成し、ローカル変数宣言を行うことができる。
【００５９】
これにより、本実施の形態にかかるプログラム作成装置１においては、図１９に示すように、変数を使用したシーケンスプログラムＡ１３５Ａを流用して、変数を使用した新たなシーケンスプログラムＢ１３５Ｂを作成することができる。図１９は、本実施の形態にかかるプログラム作成装置１の機能を説明する図である。
【００６０】
すなわち、本実施の形態にかかるプログラム作成装置１によれば、図２０に示すように、流用元プロジェクトデータ７１の流用元シーケンスプログラム７２およびデバイスコメント７３と、変数テーブル１３８と、に基づいて、流用後プロジェクトデータ１３９のシーケンスプログラムＡ１３５Ａ、ローカル変数テーブルＡ１３６Ａおよびグローバル変数テーブル１３４を自動で作成、更新することができる。
【００６１】
そして、流用後プロジェクトデータ１３９のシーケンスプログラムＡ１３５Ａ、ローカル変数テーブルＡ１３６Ａおよびグローバル変数テーブル１３４と、変数テーブル１３８と、に基づいて、流用後プロジェクトデータ１３９のシーケンスプログラムＢ１３５Ｂ、ローカル変数テーブルＢ１３６Ｂおよびグローバル変数テーブル１３４を作成、更新することができる。図２０は、プログラム作成装置１の機能を説明する図である。
【００６２】
上述したように、本実施の形態にかかるプログラム作成装置１は、ＰＬＣのシーケンスプログラムを作成、編集するＰＬＣの周辺装置である。このプログラム作成装置１においては、シーケンスプログラム内において入出力アドレス（入出力デバイス）やＰＬＣの内部メモリアドレス（内部デバイス）などのアドレス（デバイス）の代わりに、変数を用いてシーケンスプログラムの作成を行うことができる。すなわち、アドレスを直接シーケンスプログラムに記述するのではなく、該アドレスを変数に置き換えて記述したシーケンスプログラムの作成を行うことができる。
【００６３】
また、このプログラム作成装置１では、過去に作成した既存のシーケンスプログラム資産を再利用して新たなシーケンスプログラムを作成することができる。ここで、このプログラム作成装置１では、過去に作成したシーケンスプログラム資産を再利用して新たなシーケンスプログラムのプロジェクトを作成する際に、変数を使用した既存のシーケンスプログラム資産を再利用して、変数を使用した新たなシーケンスプログラムを作成することができる。また、このプログラム作成装置１では、変数を使用していない既存のシーケンスプログラム資産を再利用して、変数を使用した新たなシーケンスプログラムを作成することができる。
【００６４】
そして、本実施の形態にかかるプログラム作成装置１では、変数を使用していない既存のシーケンスプログラム資産に記述されたアドレス（デバイス）を自動的に変数に置換して、変数を使用したシーケンスプログラムに変換することができる。
【００６５】
なお、上記においては、入力装置および表示装置をプログラム作成装置の外部に配置した構成としているが、プログラム作成装置が入力装置および表示装置を備えた構成とすることもできる。また、上記においては、プログラム作成装置と外部記憶装置とを直接接続した構成としているが、ネットワークを介してプログラム作成装置と外部記憶装置とを接続する構成とすることも可能である。また、上記においては、既存の流用元プロジェクトデータ７１を外部記憶装置７に記憶する形態について説明したが、流用元プロジェクトデータ７１をプログラム作成装置１内の記憶部１３に記憶する構成とすることもできる。
【００６６】
また、上述したプログラム置換方法およびプログラム作成方法を、これらの方法の処理手順が格納されたプログラムとして構成し、このプログラムを図２１に示すようにＣＰＵ、記憶装置等を有するコンピュータ（プログラマブルコントローラの周辺装置）で実行することによって実現することができる。
【００６７】
図２１は上述したプログラム置換方法およびプログラム作成方法のプログラムを実行可能なコンピュータ装置の概略構成の一例を示すブロック図である。このコンピュータ装置は、入力装置２０１、表示装置２０２、ＣＰＵ（Central  Processing  Unit：中央処理ユニット）２０３、メモリ２０４、記憶装置２０５、媒体駆動装置２０６、ネットワークインターフェース２０７及びバス２０８を備えて構成されている。
【００６８】
ここで、入力装置２０１はキーボード、マウス、タッチパネル、スキャナ等により構成され、情報の入力に使用される。表示装置２０２は、種々の出力情報や入力装置２０１からの入力された情報などを表示出力させる。ＣＰＵ２０３は、種々のプログラムを動作させる。メモリ２０４は、ＣＰＵ２０３によって実行されるプログラムが展開され、またそのプログラムがＣＰＵ２０３によって実行されるときに一時的に作成される情報等が記憶される。記憶装置２０５は、プログラムやプログラム実行時の一時的な情報等を保持する。媒体駆動装置２０６は、プログラムやデータ等を記憶した記録媒体を装着してそれらを読み込み、メモリ２０４または記憶装置２０５へ格納するのに用いられる。ネットワークインターフェース２０７は、コンピュータ装置とネットワークとを接続するためのものである。バス２０８は、上記各部を接続する。
【００６９】
また、上記においては、ＰＬＣのシーケンスプログラムを作成する場合を例に説明したが、本発明はＰＬＣのシーケンスプログラムの作成に限定されるものではなく、シーケンスプログラムの作成全般に適用可能である。
【産業上の利用可能性】
【００７０】
以上のように、本発明にかかるプログラマブルコントローラの周辺装置は、変数を使用していない既存のシーケンスプログラム資産を再利用して新たなシーケンスプログラムを作成する場合に有用である。
【図面の簡単な説明】
【００７１】
【図１】図１は、本発明の実施の形態にかかるプログラム作成システムの構成の一例を示す図である。
【図２】図２は、流用元プロジェクトデータの流用元シーケンスプログラムの一例を示す図である。
【図３】図３は、流用元プロジェクトデータのデバイスコメントの一例を示す図である。
【図４】図４は、本発明の実施の形態にかかるプログラム作成装置におけるプログラム作成部の機能構成を示すブロック図である。
【図５】図５は、本発明の実施の形態にかかるプログラム作成装置におけるアドレス種別テーブルの一例を示す図である。
【図６】図６は、本発明の実施の形態にかかるプログラム作成装置における変数テーブルの一例を示す図である。
【図７】図７は、本発明の実施の形態にかかるプログラム作成装置におけるグローバル変数テーブルの一例を示す図である。
【図８】図８は、本発明の実施の形態にかかるプログラム作成装置におけるローカル変数テーブルの一例を示す図である。
【図９】図９は、流用元シーケンスプログラムを、変数を使用したシーケンスプログラムに変換したシーケンスプログラムの一例を示す図である。
【図１０】図１０は、本発明の実施の形態にかかるプログラム作成装置における記憶部の構成を示すブロック図である。
【図１１】図１１は、本発明の実施の形態にかかるプログラム作成装置における変数テーブルの作成処理を説明するためのフローチャートである。
【図１２】図１２は、本発明の実施の形態にかかるプログラム作成装置における変数テーブルの作成方法を説明するための図である。
【図１３】図１３は、本発明の実施の形態にかかるプログラム作成装置におけるプログラムの置換処理を説明するためのフローチャートである。
【図１４】図１４は、本発明の実施の形態にかかるプログラム作成装置におけるシーケンスプログラムの変換を説明する図である。
【図１５】図１５は、本発明の実施の形態にかかるプログラム作成装置におけるグローバル変数宣言処理を説明するためのフローチャートである。
【図１６】図１６は、本発明の実施の形態にかかるプログラム作成装置におけるグローバル変数テーブルの作成を説明する図である。
【図１７】図１７は、本発明の実施の形態にかかるプログラム作成装置におけるローカル変数宣言処理を説明するためのフローチャートである。
【図１８】図１８は、本発明の実施の形態にかかるプログラム作成装置におけるローカル変数テーブルの作成を説明する図である。
【図１９】図１９は、本発明の実施の形態にかかるプログラム作成装置の機能を説明する図である。
【図２０】図２０は、本発明の実施の形態にかかるプログラム作成装置の機能を説明する図である。
【図２１】図２１は、本発明の実施の形態にかかるプログラム置換方法およびプログラム作成方法のプログラムを実行可能なコンピュータ装置の概略構成の一例を示すブロック図である。
【符号の説明】
【００７２】
１  プログラム作成装置
３  入力装置
５  表示装置
７  外部記憶装置
１１  プログラム作成部
１３  記憶部
１５  通信部
１７  制御部
７１  流用元プロジェクトデータ
７２  流用元シーケンスプログラム
７３  デバイスコメント
１１１  変数テーブル作成部
１１２  グローバル変数テーブル作成部
１１３  ローカル変数テーブル作成部
１１４  置換処理部
１１５  プログラム作成部
１３１  プログラムメモリ
１３２  データメモリ
１３３  流用後プロジェクトメモリ
１３４  グローバル変数テーブル
１３５Ａ  シーケンスプログラムＡ
１３５Ｂ  シーケンスプログラムＢ
１３６Ａ  ローカル変数テーブルＡ
１３６Ｂ  ローカル変数テーブルＢ
１３７  アドレス種別テーブル
１３８  変数テーブル
１３９  流用後プロジェクトデータ
２０１  入力装置
２０２  表示装置
２０３  ＣＰＵ
２０４  メモリ
２０５  記憶装置
２０６  媒体駆動装置
２０７  ネットワークインターフェース
２０８  バス
【国際調査報告】
2008102426.tif 000024
2008102426.tif 000025