(57)【要約】【課題】複数のプログラマブルコントローラの間で制御ネットワークを介して授受される信号の通信処理を自動生成可能なプログラミングツールを得る。【解決手段】複数のプログラマブルコントローラ２で実行するプログラム１０１を記述したエディタ１０２と、プログラム１０１をコンパイル処理するコンパイラ１０３と、を備えている。コンパイラ１０３は、複数のプログラマブルコントローラ２の間で授受される信号の通信処理を自動生成するとともに、エディタ１０２に記述されたプログラム１０１を複数のプログラマブルコントローラ２の各々で実行可能な形式である実行モジュール１０４に変換する。【選択図】図１
2005251116.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラマブルコントローラで実行するプログラムを記述したエディタと、
前記プログラムをコンパイル処理するコンパイラと、
を備えたプログラミングツールであって、
前記コンパイラは、前記複数のプログラマブルコントローラの間で授受される信号の通信処理を自動生成するとともに、前記エディタに記述されたプログラムを前記複数のプログラマブルコントローラの各々で実行可能な形式である実行モジュールに変換することを特徴とするプログラミングツール。
【請求項２】
前記複数のプログラマブルコントローラは、互いに機種が異なるプログラマブルコントローラを含み、
前記コンパイラは、前記複数のプログラマブルコントローラの各機種に応じた実行モジュールを生成することを特徴とする請求項１に記載のプログラミングツール。
【請求項３】
前記複数のプログラマブルコントローラの実行モジュールを、前記各プログラマブルコントローラに対して一括してダウンロードするダウンローダを備えたことを特徴とする請求項１または請求項２に記載のプログラミングツール。
【請求項４】
前記複数のプログラマブルコントローラの実行状態を一括してモニターするモニターを備えたことを特徴とする請求項１から請求項３までのいずれか１項に記載のプログラミングツール。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、発電システム、水処理システム、または産業システムなどのプラント制御を行うプログラマブルコントローラで実行するプログラムを作成するためのプログラミングツールに関し、特に、複数のプログラマブルコントローラの間で制御ネットワークを介して授受される信号の通信処理を自動生成することのできるプログラミングツールに関するものである。
【背景技術】
【０００２】
従来のプログラミングツールにおいては、複数のプログラマブルコントローラの１台毎にプログラミングが行われているので、必然的に、各プログラマブルコントローラ間の信号授受に関しては、人手による設計が行われている（たとえば、参考文献１参照）。
【０００３】
【特許文献１】特開平９−２８８５６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来のプログラミングツールでは、複数のプログラマブルコントローラの１台毎にプログラミングする必要があるため、たとえば、ネットワークで接続された各プログラマブルコントローラ間で授受される信号については、人手による設計が必要になり、多大な労力を費やすという課題があった。
また、各プログラマブルコントローラのプログラムが個別のシートに記載されるので、各プログラマブルコントローラ間の関係が把握しにくいという課題があった。
【０００５】
この発明は、上記のような課題を解決するためになされたものであり、複数のプログラマブルコントローラの間で制御ネットワークを介して授受される信号の通信処理を自動生成することのできるプログラミングツールを得ることを目的とする。
また、複数のプログラマブルコントローラのプログラミングを一括して行うことのできるプログラミングツールを得ることを目的とする。
【課題を解決するための手段】
【０００６】
この発明によるプログラミングツールは、複数のプログラマブルコントローラで実行するプログラムを記述したエディタと、プログラムをコンパイル処理するコンパイラと、を備えたプログラミングツールであって、コンパイラは、複数のプログラマブルコントローラの間で授受される信号の通信処理を自動生成するとともに、エディタに記述されたプログラムを複数のプログラマブルコントローラの各々で実行可能な形式である実行モジュールに変換するものである。
【発明の効果】
【０００７】
この発明によれば、複数のプログラマブルコントローラの間で制御ネットワークを介して授受される信号の通信処理を自動生成することができる。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
図１はこの発明の実施の形態１に係るプログラミングツール１を適用した一般的なプラント監視制御システム全体を示すブロック構成図である。
図１において、プラント監視制御システムは、パーソナルコンピュータなどで実行されるプログラミングツール１と、プラント（図示せず）の制御を行う複数のプログラマブルコントローラ２と、複数のＨＭＩ（ヒューマン・マシン・インターフェース）装置３と、制御ネットワーク４と、ネットワーク５とを備えている。
【０００９】
プログラミングツール１は、プログラム１０１と、エディタ１０２と、コンパイラ１０３と、実行モジュール１０４とを備えている。
エディタ１０２は、各プログラマブルコントローラ２で実行するプログラム１０１を記述している。
【００１０】
プログラム１０１をコンパイル処理するコンパイラ１０３は、各プログラマブルコントローラ２の間で授受される信号の通信処理を自動生成するとともに、エディタ１０２に記述されたプログラム１０１を各プログラマブルコントローラ２上で実行可能な形式である実行モジュール１０４に変換する。
【００１１】
プログラマブルコントローラ２で実行するプログラム１０１は、プログラミングツール１のエディタ１０２上で作成された後、コンパイラ１０３を用いてコンパイルされて実行モジュール１０４に変換され、プログラミングツール１から生成される。
【００１２】
ＨＭＩ装置３は、プログラマブルコントローラ２で収集したプラント内の情報（温度、速度、スイッチ状態など）を監視するとともに、プログラマブルコントローラ２に対して制御用の指令を与える。
制御ネットワーク４は、各プログラマブルコントローラ２と各ＨＭＩ装置３との間のデータ授受を行うとともに、各プログラマブルコントローラ２の間の信号授受を行う。
ネットワーク５は、プログラミングツール１と各プログラマブルコントローラ２との間のデータ授受を行う。
【００１３】
次に、図２〜図５を参照しながら、図１内のプログラミングツール１を用いたこの発明の実施の形態１によるプログラミング作業処理について詳細に説明する。
図２はこの発明の実施の形態１で使用されるシステム構成定義画面を示す説明図、図３はこの発明の実施の形態１で使用されるプログラム例を示す説明図、図４はこの発明の実施の形態１により動作するコンパイラ１０３の処理手順を示すフローチャート、図５はこの発明の実施の形態１で生成される実行モジュール１０４を示すブロック構成図である。
【００１４】
最初に、プログラミングツール１内のエディタ１０２上で、システム構成（図２参照）を定義する。
図２の例では、制御ネットワーク４上に、３台のＨＭＩ装置３と、４台のプログラマブルコントローラ２と、を接続するシステム構成を想定している。
【００１５】
図２のように定義されたプログラマブルコントローラ２には、１台毎に識別するための名称６が定義されている。
ここでは、各プログラマブルコントローラ２の名称６として、「ＰＬＣ１」、「ＰＬＣ２」、「ＰＬＣ３」、「ＰＬＣ４」が与えられている。
【００１６】
ここで、制御ネットワーク４を介した各プログラマブルコントローラ２の間のデータ授受には、サイクリック通信が使用されるものとする。
続いて、各プログラマブルコントローラ２が出力可能なサイクリック通信エリア内のアドレス７が定義される。
【００１７】
図２の例では、各プログラマブルコントローラ２の出力可能なエリアのアドレス７として、ＰＬＣ１の「Ｂ０〜Ｂ９９（＝１００点）」、ＰＬＣ２の「Ｂ１００〜Ｂ１９９（＝１００点）」、ＰＬＣ３の「Ｂ２００〜Ｂ２９９（＝１００点）」、ＰＬＣ４の「Ｂ３００〜Ｂ３９９（＝１００点）」が定義されている。
【００１８】
次に、具体的なプログラム１０１（図３参照）を作成する。
なお、プログラム１０１は、いわゆるＰＯＬ（Ｐｒｏｂｌｅｍ  Ｏｒｉｅｎｔｅｄ  Ｌａｎｇｕａｇｅ）と呼ばれる問題向き言語を使用してプログラミングされるが、ＰＯＬ言語については、一般に周知なので、ここでは詳述を省略する。
【００１９】
このときのプログラミングは、実際にどの処理をどのプログラマブルコントローラ２で実行させるかについて、全く意識することなく行われる。
システム全体で必要な処理、すなわち、この例では４台（ＰＬＣ１〜ＰＬＣ４）のプログラマブルコントローラ２で実行すべき全処理は、同一プログラム内に記載される。
【００２０】
こうして、すべての処理の記載が完了した後、図３のように処理を分割し、どのプログラマブルコントローラ２に実行させるかの定義を行う。
図３の例では、選択範囲８（破線枠参照）内の処理をＰＬＣ１のプログラマブルコントローラ２で実行させ、選択範囲９（破線枠参照）内の処理をＰＬＣ３のプログラマブルコントローラ２で実行させるように定義される。
【００２１】
たとえば、選択範囲８においては、論理和ゲート８ａ、ＰＩＤ演算部８ｂ、減衰器８ｃ、排他的論理和ゲート８ｄおよび論理積ゲート８ｅが定義され、選択範囲９においては、乗算器９ａが定義されている。
また、ＰＬＣ１、ＰＬＣ３の各プログラマブルコントローラ２の間で、制御ネットワーク４を介して授受される信号として、排他的論理和ゲート８ｄおよび論理積ゲート８ｅの出力信号１０、１１が必要となる。
【００２２】
なお、プログラム１０１の全体は、複数のシートで構成されるが、図３においては、プログラム１０１の一部のみが示されているものとする。
したがって、プログラム１０１の他のシート上においても、ＰＬＣ１、ＰＬＣ３のプログラマブルコントローラ２で実行する処理も存在する。また、ＰＬＣ２、ＰＬＣ４のプログラマブルコントローラ２で実行する処理は、他のシートに記載されている。
【００２３】
こうして、各プログラマブルコントローラ２に対するすべての定義が完了した後、コンパイラ１０３は、プログラマブルコントローラ２で実行可能な実行モジュール１０４を生成するためのコンパイル処理を行う。
このときのコンパイル処理動作は、図４のフローチャートにしたがって実行される。
【００２４】
図４において、コンパイル処理がスタートすると、まず、プログラム１０１内に記載されている命令（図３の例では、ＰＩＤ演算部８ｂの命令など）の間を接続している結線情報を解析する（ステップＳ１）。
【００２５】
続いて、各命令に対して、実際に実行するプログラマブルコントローラ２に分割し（ステップＳ２）、プログラマブルコントローラ２の間で授受される信号（図３の例では、信号１０、１１）を抽出する（ステップＳ３）。
【００２６】
次に、抽出された信号に関して、図２のシステム構成で定義したサイクリックアドレス７のマップ情報を収集し（ステップＳ４）、マップ情報から、各プログラマブルコントローラ２が出力可能なサイクリックエリアのアドレスを自動的にアサインする（ステップＳ５）。
【００２７】
たとえば、図３において、信号１０に対しては、アドレス「Ｂ０」がアサインされ、信号１１に対しては、アドレス「Ｂ１」がアサインされる。
これらの信号１０、１１は、いずれも、ＰＬＣ１のプログラマブルコントローラ２から出力されるため、ＰＬＣ１のプログラマブルコントローラ２の出力可能エリア内のアドレス「Ｂ０〜Ｂ９９」（図２参照）にアサインされる。
【００２８】
図４に戻り、今回の処理が複数のプログラマブルコントローラ２の最後であるか否かを判定し（ステップＳ６）、最後である（すなわち、ＹＥＳ）と判定されれば、図４の処理ルーチンを終了する。
【００２９】
一方、ステップＳ６において、プログラマブルコントローラ２の最後ではない（すなわち、ＮＯ）と判定されれば、プログラマブルコントローラ２毎のコンパイル処理を実行し（ステップＳ７）、実行モジュールを生成して（ステップＳ８）、図４の処理ルーチンを終了する。
【００３０】
なお、ステップＳ７におけるコンパイル処理に関しては、一般的な処理なので、ここでは詳述を省略する。
こうして、すべてのプログラマブルコントローラ２についてのコンパイル処理が完了すれば、ステップＳ６において、最後である（すなわち、ＹＥＳ）と判定され、全体のコンパイル処理が完了する。
【００３１】
こうして、図４のコンパイル処理が完了した結果、図５に示す通り、実行モジュール１０４として、ＰＬＣ１用実行モジュール、ＰＬＣ２用実行モジュール、ＰＬＣ３用実行モジュール、ＰＬＣ４用実行モジュール、の４個のモジュールが生成される。
【００３２】
このように、１個のプログラム１０１内に複数のプログラマブルコントローラ２のプログラムを記述することが可能となり、また、各プログラマブルコントローラ間で授受されるデータ信号に関しても、制御ネットワーク４を介したデータ授受を自動で行うコンパイラ１０３により、アドレスを自動アサインすることが可能となる。
これにより、各プログラマブルコントローラ間の信号授受を考えながらプログラマブルコントローラ毎にプログラム１０４を設計する必要がなくなるので、容易にプログラミングを行うことができ、労力を軽減することができる。
また、各プログラマブルコントローラ間で授受される信号のアドレスアサインをマニュアル設計し、且つその設計結果を各作業者が参照しながらプログラミングを行うという非効率且つ不確実な作業が不要となるので、作業効率の向上および作業の精度向上を実現することができる。
【００３３】
実施の形態２．
なお、上記実施の形態１では、４台のプログラマブルコントローラ２がすべて同一機種である場合を例にとり、各プログラマブルコントローラ２の機種の違いについて特に考慮しなかったが、プログラミングツール内のコンパイラにおいて、互いに機種が異なるプログラマブルコントローラ２に対し、各機種に応じた実行モジュールを自動的に生成するようにしてもよい。
【００３４】
図６はこの発明の実施の形態２に係るプログラミングツール１Ａを適用した一般的なプラント監視制御システム全体を示すブロック構成図であり、プログラマブルコントローラ２Ａ、２Ｂが、互いに異なる機種Ａ、Ｂに設定された例を示している。
図６において、前述（図１参照）と同様のものについては、前述と同一符号を付して、または、符号の後に「Ａ」を付して詳述を省略する。
【００３５】
この場合、４台のプログラマブルコントローラのうち、２台のプログラマブルコントローラ２Ａが機種Ａに設定され、他の２台のプログラマブルコントローラ２Ｂが機種Ｂに設定されている。
ここで、機種Ａ、Ｂの定義は、システム構成定義のエディタ１０２Ａで行われる。
【００３６】
次に、図７のフローチャートを参照しながら、図６内のコンパイラ１０３Ａによるこの発明の実施の形態２のコンパイル処理動作について説明する。
図７において、ステップＳ１１〜Ｓ１８は、前述（図４参照）のステップＳ１〜Ｓ８と同様の処理である。
この場合、機種判別ステップＳ２０が追加された点と、機種Ａ、Ｂ、・・・Ｘ毎のコンパイル処理ステップＳ１７Ａ、Ｓ１７Ｂ、・・・、Ｓ１７Ｘを有する点のみが前述と異なる。
【００３７】
まず、前述と同様のステップＳ１１〜Ｓ１６により、すべてのプログラマブルコントローラについて、結線情報の解析、分割、信号の抽出、サイクリックアドレスのアサイン処理を行う。
【００３８】
ステップＳ１６において、すべてのプログラマブルコントローラに対して処理が終了した（すなわち、ＹＥＳ）と判定されれば、図７の処理ルーチンを終了し、未処理のプログラマブルコントローラが存在する（すなわち、ＮＯ）と判定されれば、未処理のプログラマブルコントローラの機種を判別する（ステップＳ２０）。
【００３９】
ステップＳ２０において、機種Ａと判別されれば、コンパイル処理ステップＳ１７Ａを実行し、機種Ｂと判別されれば、コンパイル処理ステップＳ１７Ｂを実行、以下同様に、機種Ｘと判別されれば、コンパイル処理ステップＳ１７Ｘを実行する。
最後に、機種毎の実行モジュール１０４Ｂを生成して（ステップＳ１８）、図７の処理ルーチンを終了する。
【００４０】
このように、複数の機種のプログラマブルコントローラ２Ａ、２Ｂなどが混在したシステム構成（図６参照）においても、コンパイル時にプログラマブルコントローラの機種を判別し（ステップＳ２０）、機種に応じたコンパイル処理（ステップＳ１７Ａ〜Ｓ１７Ｘ）を実行することにより、各機種に応じた実行モジュール１０４Ｂを自動的に生成（ステップＳ１８）することができる。
また、複数機種に対して、同一のプログラム１０１Ｂ内でのプログラミングを可能とし、コンパイル時に自動的に機種を判別してコンパイルすることにより、容易にプログラミングを行うことができる。
【００４１】
実施の形態３．
なお、上記実施の形態１、２では、各プログラマブルコントローラの実行モジュールのダウンロードについて特に言及しなかったが、各プログラマブルコントローラに対して一括してダウンロードしてもよい。
【００４２】
図８はこの発明の実施の形態３に係るプログラミングツール１Ｂを適用した一般的なプラント監視制御システム全体を示すブロック構成図である。
図８において、前述（図１、図６参照）と同様のものについては、前述と同一符号を付して、または、符号の後に「Ｂ」を付して詳述を省略する。
【００４３】
この場合、プログラミングツール１Ｂは、一括ダウンロード機能を有するダウンローダ１０５を備えている。
ダウンローダ１０５は、システム定義情報から各プログラマブルコントローラ２Ａ、２Ｂの機種Ａ、Ｂを判別し、各プログラマブルコントローラの機種に応じた通信プロトコルを使用して、プログラマブルコントローラ２Ａ、２Ｂに対する実行モジュール１０４Ｂのダウンロードを一括して行う（破線矢印参照）。
【００４４】
これにより、複数機種Ａ、Ｂが混在するシステムにおいても、プログラマブルコントローラ２Ａ、２Ｂの機種を気にすることなく、一括してダウンロードすることが可能となり、操作が容易となる。
また、図１のように、複数機種が混在しないシステムに適用しても、同等の作用効果を奏することは言うまでもない。
【００４５】
実施の形態４．
なお、上記実施の形態１〜３では、プログラム状態をリアルタイムにモニターする機能について考慮しなかったが、プログラマブルコントローラで実行されているプログラム状態（各信号のリアルタイム値）をモニターする機能をプログラミングツール内に設けてもよい。
【００４６】
図９はこの発明の実施の形態４に係るプログラミングツール１Ｃを適用した一般的なプラント監視制御システム全体を示すブロック構成図である。
図９において、前述（図１、図６、図８参照）と同様のものについては、前述と同一符号を付して、または、符号の後に「Ｃ」を付して詳述を省略する。
【００４７】
この場合、プログラミングツール１Ｃは、複数のプログラマブルコントローラ２Ａ、２Ｂの実行状態を一括してモニターするためのモニター１０６を備えている。
モニター１０６は、プログラマブルコントローラ２Ａ、２Ｂで実行されているプログラム１０１Ｃの状態、すなわち、各信号のリアルタイム値をモニターする。
【００４８】
図１０はモニター１０６に表示されるプログラム状態（リアルタイム値）の画面例を示す説明図であり、前述（図３参照）のプログラム例に対応させて示している。
図１０において、前述と対応する部分については、前述と同一符号を付して、または符号の後に「Ｃ」を付して示している。
図１０のように、モニター１０６には、各プログラム要素（論理和ゲート８ａなど）の入出力信号の値「１」、「０」、「１０」、「２０」が表示される。
【００４９】
このように、プログラミングツール１Ｃにモニター１０６を設けることにより、作成したプログラム１０１Ｃと同一の画面（図１０参照）で、各信号のリアルタイム値をモニターすることができる。
また、図９のように、複数のプログラマブルコントローラ２Ａ、２Ｂを一括してプログラミングおよびモニターを可能に構成することにより、各プログラマブルコントローラ間のデータ授受を含めたトータルでのモニターが可能となり、実際のプラントの操業状態の確認やプログラムのデバッグなどの作業を容易にすることができる。
【図面の簡単な説明】
【００５０】
【図１】この発明の実施の形態１に係るプログラミングツールを適用した一般的なプラント監視制御システム全体を示すブロック構成図である。
【図２】この発明の実施の形態１で使用されるシステム構成定義画面を示す説明図である。
【図３】この発明の実施の形態１で使用されるプログラム例を示す説明図である。
【図４】この発明の実施の形態１により動作するコンパイラの処理手順を示すフローチャートである。
【図５】この発明の実施の形態１で生成される実行モジュールを示すブロック構成図である。
【図６】この発明の実施の形態２に係るプログラミングツールを適用した一般的なプラント監視制御システム全体を示すブロック構成図である。
【図７】この発明の実施の形態２により動作するコンパイラの処理手順を示すフローチャートである。
【図８】この発明の実施の形態３に係るプログラミングツールを適用した一般的なプラント監視制御システム全体を示すブロック構成図である。
【図９】この発明の実施の形態４に係るプログラミングツールを適用した一般的なプラント監視制御システム全体を示すブロック構成図である。
【図１０】この発明の実施の形態４で動作するモニターに表示されるプログラム状態の画面例を示す説明図である。
【符号の説明】
【００５１】
１、１Ａ、１Ｂ、１Ｃ  プログラミングツール、２、２Ａ、２Ｂ  プログラマブルコントローラ、３  ＨＭＩ装置、４  制御ネットワーク、５  ネットワーク、６  機種名称、７  サイクリックアドレス（出力可能エリア）、８、８Ｃ  ＰＬＣ１の選択範囲、９、９Ｃ  ＰＬＣ３の選択範囲、１０、１１  信号、１０１、１０１Ａ、１０１Ｂ、１０１Ｃ  プログラム、１０２、１０２Ａ、１０２Ｂ、１０２Ｃ  エディタ、１０３、１０３Ａ、１０３Ｂ、１０３Ｃ  コンパイラ、１０４、１０４Ａ、１０４Ｂ、１０４Ｃ  実行モジュール、１０５、１０５Ｃ  ダウンローダ、１０６  モニター。
【図１】
2005251116.tif 000003
【図２】
2005251116.tif 000004
【図３】
2005251116.tif 000005
【図４】
2005251116.tif 000006
【図５】
2005251116.tif 000007
【図６】
2005251116.tif 000008
【図７】
2005251116.tif 000009
【図８】
2005251116.tif 000010
【図９】
2005251116.tif 000011
【図１０】
2005251116.tif 000012