(57)【要約】      （修正有）【課題】制御デバイスの物理メモリの割付情報等を一元管理し、その不正使用や重複使用を未然に検知／防止することのできる制御システム設定管理システムを提供する。【解決手段】制御デバイスＤｅｖ．Ａの物理メモリの割付情報を記述した設定データを保持するための共有ストレージ６と、その共有ストレージにアクセスし、設定データを読み書きする複数種のツールＴｏｏｌ．Ａ〜Ｅと、を備える。ツールは、物理メモリに対するメモリ割付を行うに際し、すでに設定された割付情報を読み出し、メモリエリアにエリア重複エラーを生じているか否かを判断する判断手段と、判断手段でエリア重複エラーが検出されないことを条件に、そのツールが行なったメモリ割付の情報を前記共有ストレージの設定データに追加する手段と、判断手段でエリア重複エラーが検出されないことを条件に、そのツールが行なったメモリ割付に基づくデバイスに対する設定を行なう手段とを備えた。【選択図】図１
2008059532.tif 000002
【特許請求の範囲】
【請求項１】
制御デバイスの物理メモリの割付情報を記述した設定データを保持するための共有ストレージと、
その共有ストレージにアクセスし、前記設定データを読み書きする複数種のツールと、を備え、
前記ツールは、
前記物理メモリに対するメモリ割付を行うに際し、前記共有ストレージに保持されたすでに設定された割付情報を読み出し、その読み出した割付情報に基づいて前記メモリ割付を行なおうとするメモリエリアにエリア重複エラーを生じているか否かを判断する判断手段と、
その判断手段でエリア重複エラーが検出されないことを条件に、そのツールが行なったメモリ割付の情報を前記共有ストレージの設定データに追加する手段と、
その判断手段でエリア重複エラーが検出されないことを条件に、そのツールが行なったメモリ割付に基づくデバイスに対する設定を行なう手段と、を備えたことを特徴とする制御システム設定管理システム。
【請求項２】
前記ツールが行なう前記物理メモリに対するメモリ割付は、機種の種別により自動的に割り付けられるものと、ユーザが独自に物理メモリエリアの占有宣言するもののいずれかを含むことを特徴とする請求項１に記載の制御システム設定管理システム。
【請求項３】
前記共有ストレージに格納される設定データは、複数のデバイス間にまたがり物理メモリをリンクさせて利用する制御システムにおける前記デバイス間のメモリのリンク情報も含み、
前記判断手段は、前記リンク情報に基づき、前記メモリ割付を行なおうとするメモリエリアにエリア重複エラーを生じているか否かを判断する機能を備えたことを特徴とする請求項１または２に記載の制御システム設定管理システム。
【請求項４】
前記共有ストレージに格納される設定データは、メモリ割付ごとに用途属性を持たせ、
前記判断手段は、割付エリアが重複している場合に、その用途属性に基づき重複を許すか否かの判断を行なう機能を備えたことを特徴とする請求項１から３のいずれか１項に記載の制御システム設定管理システム。
【請求項５】
前記物理メモリに割付けられた変数情報を記録し、変数情報に物理メモリの割付情報をリンクさせることにより、前記複数のツールが物理メモリとそのエリアに属する変数情報を共有できるようにすることを特徴とする請求項１から４のいずれか１項に記載の制御システム設定管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システム設定管理システムに関す、より具体的には、制御デバイスが有する物理メモリの、割付情報と変数情報やデバイス間にまたがって関係する物理メモリを管理するシステムに関する
【背景技術】
【０００２】
ＦＡ（ファクトリーオートメーション）で用いられるＰＬＣ（プログラマブルコントローラ）は、スイッチやセンサなどの入力機器のＯＮ／ＯＦＦ情報を入力し、ラダー言語などで書かれたシーケンスプログラム（ユーザプログラム）に沿って論理演算を実行する。そして、ＰＬＣは、得られた演算結果にしたがって、リレー，バルブ，アクチュエータなどの出力機器に対し、ＯＮ／ＯＦＦ情報の信号を出力することで制御が実行される。
【０００３】
ＰＬＣなどの制御デバイスは、ビルディングブロック方式で、IＯや通信制御デバイス、リモートＩＯ制御デバイス、専用コントローラなどを組み合わせてコントローラとして利用するのが一般的である。各デバイスは、ユニットとも称される。
【０００４】
ところで、制御デバイスが有する物理メモリは、その制御デバイス自身のプログラミング用として利用される以外に、各ＩＯへの割付、通信制御デバイスへの割付、リモートＩＯ制御デバイスへの割付、各専用コントローラへの割付等に利用されたり、各ユニットの設定に利用されたりする。
【０００５】
これらの物理メモリの割付は、ツールソフトウェアが動作するコンピュータシステム上の各ツールソフトウェアによって、制御デバイスへの割付設定、通信制御デバイスへの割付設定、リモートＩＯ制御デバイスへの割付設定、専用コントローラへの割付設定への割付設定などにより決定される。
【０００６】
一方これらデバイスのプログラミングや設定を行なうツールソフトウェアは、制御デバイスが有する物理メモリに対して、独自変数を割り当て、個々のプログラミングの利便性を向上させている。
【０００７】
一方、複数台のＰＬＣ等の制御装置をネットワークに接続し、それら複数の制御装置がデータを共有しながら協調・同期制御等を実行することがある。この方式の１つとしてデータリンク方式と称されるものもある。このデータリンク方式は、複数の制御装置間で、サイクリックにデータを交換（リンク）する方式である。
【０００８】
例えば、制御装置としての各ノードにそれぞれメモリテーブルを持たせ、互いにデータを交換することで各テーブルの内容を同じにすることによりデータの共有をする。このとき、データを交換するためのアクセスは、互いにメモリアドレス（物理アドレス）を指定して行なうようにしている。さらに、そのテーブルは、制御装置以外の別のツールにより一括して設定する。この方式では、ユーザプログラム開発時に通信を意識しないで済むというメリットが有る。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従来、制御デバイスが有する物理メモリの割付先や変数は、制御システム全体の設計過程で机上定義され、これに基づいて各種デバイスの設定（Ｃｏｎｆｉｇｕｒａｔｉｏｎ）やプログラミングが個別に用意されたツールソフトウェアで行われる。ツールソフトウェアは机上定義されたデータに基づけば、物理メモリを他のデバイスがどのように利用しているかを気にすることなく、自由度の高いプログラミングや割付が行える半面、次のような問題を含んでいる。
【００１０】
制御システムの設計変更により机上定義が変更されると、他のデバイスで予期せぬ物理メモリや変数の不正使用や不正な重複使用を招き易い。制御システムの保守において、障害の原因となった物理メモリや変数の割付先の解読が必要な場合、複数のツールソフトウェアで検索したり机上の設計データを検索する必要があるなど、迅速な対応が行えない。特にデータリンク機能を利用する場合、障害の原因となった物理メモリや変数はデータリンクの機能により該当デバイスとは別のデバイスにリンクされたエリアでの問題が原因となることが多く、デバイスにまたがってメモリの利用用途を解読していく必要がある。各種デバイスが必要となる物理メモリアドレス以外に、ユーザが物理エリアを特定用途として占有したい場合がある。この場合他の物理アドレスの割付と重複していないかどうかなどの管理が困難である。
【００１１】
この発明の目的は、様々なツールソフトウェアが個別に生成・管理するデータによって決定される制御デバイスの物理メモリの割付情報や変数情報、複数のデバイスにまたがるメモリ割付情報を、任意のタイミングで取得・設定・反映でき、その不正使用や不正な重複使用を未然に検知／防止することのできる制御システム設定管理システムを提供することにある。
【課題を解決するための手段】
【００１２】
（１）この発明による制御システム設定管理システムは、制御デバイスの物理メモリの割付情報を記述した設定データを保持するための共有ストレージと、その共有ストレージにアクセスし、前記設定データを読み書きする複数種のツールと、を備える。そして、ツールは、物理メモリに対するメモリ割付を行うに際し、共有ストレージに保持されたすでに設定された割付情報を読み出し、その読み出した割付情報に基づいて前記メモリ割付を行なおうとするメモリエリアにエリア重複エラーを生じているか否かを判断する判断手段と、その判断手段でエリア重複エラーが検出されないことを条件に、そのツールが行なったメモリ割付の情報を前記共有ストレージの設定データに追加する手段と、その判断手段でエリア重複エラーが検出されないことを条件に、そのツールが行なったメモリ割付に基づくデバイスに対する設定を行なう手段と、を備えた。
【００１３】
（２）ツールが行なう前記物理メモリに対するメモリ割付は、機種の種別により自動的に割り付けられるものと、ユーザが独自に物理メモリエリアの占有宣言するもののいずれかを含む。
【００１４】
（３）共有ストレージに格納される設定データは、複数のデバイス間にまたがり物理メモリをリンクさせて利用する制御システムにおける前記デバイス間のメモリのリンク情報も含み、判断手段は、前記リンク情報に基づき、前記メモリ割付を行なおうとするメモリエリアにエリア重複エラーを生じているか否かを判断する機能を備えるように構成できる。
【００１５】
（４）共有ストレージに格納される設定データは、メモリ割付ごとに用途属性を持たせ、判断手段は、割付エリアが重複している場合に、その用途属性に基づき重複を許すか否かの判断を行なう機能を備えたことを特徴とする請求項１から３のいずれか１項に記載の制御システム設定管理システム。
【００１６】
（５）物理メモリに割付けられた変数情報を記録し、変数情報に物理メモリの割付情報をリンクさせることにより、複数のツールが物理メモリとそのエリアに属する変数情報を共有できるようにするとよい。
【００１７】
複数のツールは、ＰＬＣを構成する各ユニット（デバイス）や、ＰＬＣを含むネットワークに接続された機器（プログラマブル表示器等）等に対して各種の設定を行なう設定ツール（アプリケーションプログラム）である。このツールは、コンピュータにインストールされてツール装置して機能する。複数のツールは、それぞれ別々のコンピュータに実装されても良いし、同一のコンピュータに実装されてもよい。共有ストレージは、ツールと同じコンピュータに実装されていてもよいし、ツールとは別の装置（ストレージ・サーバ）として実現されてもよい。
【００１８】
ＰＬＣは通常複数のユニット（デバイス）より構成され、ユニットごとに設定ツールが異なるが、各ユニットがＰＬＣ本体（制御デバイス）の物理メモリエリアを占有する。またデバイス間にまたがるデータリンク設定、ユーザが独自にプログラム用に占有したいなどメモリの利用は多岐にわたる。
【００１９】
そこで、各ツールで設定する物理メモリエリアの割付け情報を共有ストレージに格納し、その格納したデータを各ツールでアクセス可能とすることから、物理メモリの管理をツール間で一元化でき、重複エラーとなるようなメモリ割付けを事前に検出し、回避することができる。つまり、物理理メモリの利用状況、メモリへの割り当て変数が机上定義されたデータに頼らずツール上で一覧表示できる。制御プログラム等で使用したアドレス、変数がどの割り当てに含まれるかを瞬時に把握することができ、アドレスの不正使用や不正な２重使用などプログラムミスを早期に発見できる。
【００２０】
さらに、複数のデバイスにまたがるメモリエリアをリンクさせたり、メモリエリアとそのメモリに含まれる変数をリンクさせたり、メモリに用途情報を持たせて用途間違えのチェックができるようにすることで、各ツールソフトウェアは、物理メモリのアドレスを指定するとその用途や割付先、変数が即座にガイドとしてユーザに提供（表示）できる。デバイスにまたがるメモリのリンクを行っている場合、一方のＰＬＣのメモリアドレスからリンク先のＰＬＣのアドレスやその仕様状況が容易に把握でき、デバック時に複数のデバイス間でインターロックがうまくいかないなどの原因を容易に把握できる。デバイス（ユニット）の構成変更などによりメモリ割り当てが変更された場合、関連する変数のアドレスが自動的に変更されミスの低減が図れる。
【発明の効果】
【００２１】
本発明では、様々なツールソフトウェアが個別に生成・管理するデータによって決定される制御デバイスの物理メモリの割付情報や変数情報、複数のデバイスにまたがるメモリ割付情報等を、共有ストレージに登録することで一元管理でき、その不正使用や不正な重複使用を未然に検知／防止することができる。
【発明を実施するための最良の形態】
【００２２】
図１は、システム構成図の一例を示している。図１に示すシステムは、複数のＰＬＣ１と、ネットワーク構成図を作成したり、そのＰＬＣ１を構成するデバイスに対し、ユーザプログラムや設定ファイルの作成・更新等を行なったりする制御システム設定装置２と、表示器３と、制御機器４とが、ネットワーク５に接続されている。この制御システム設定装置２は、上記の処理を実施するためのアプリケーションプログラム（専用ツール）や設定データをインストールしたパーソナルコンピュータである。本実施形態では、制御システム設定装置２はネットワーク５を介して各装置・機器に接続するようにしたが、ＲＳ−２３２Ｃ等のシリアルインタフェースを用いて各装置・機器に直接接続するようにしても良い。
【００２３】
ＰＬＣ１を構成する制御デバイス（Ｄｅｖ．Ａ）が有する物理メモリは、制御デバイス自身のプログラミング用として利用される以外に、各ＩＯへの割付，通信制御デバイス（Ｄｅｖ．Ｂ）への割付，リモートＩＯ制御デバイス（Ｄｅｖ．Ｃ）への割付等に利用され、各ユニットの設定や、制御デバイス（Ｄｅｖ．Ａ）から各ユニットをプログラムで利用、および専用コントローラや表示器などとの連携用に利用される。これらの物理メモリの割付は、ツールソフトウェアが動作するコンピュータシステム（ＰＣ．１、ＰＣ．２、ＰＣ．３）上の各ツールソフトウェア（Ｔｏｏｌ．Ａ，Ｔｏｏｌ．Ｂ，Ｔｏｏｌ．Ｃなど）によって、制御デバイス（Ｄｅｖ．Ａ）への割付設定(Ｃｆｇ．Ａ)、通信制御デバイス（Ｄｅｖ．Ｂ）への割付設定(Ｃｆｇ．Ｂ)、リモートＩＯ制御デバイス（Ｄｅｖ．Ｃ）への割付設定（Ｃｆｇ．Ｃ）などにより決定される。
【００２４】
一方、これらデバイスのプログラミングや設定を行なう各種のツールは、制御デバイス（Ｄｅｖ．Ａ）が有する物理メモリに対して、独自変数を割り当て（Ｐｒｊ．Ａ，Ｐｒｊ．Ｂ，Ｐｒｊ．Ｃなど）、個々のプログラミングの利便性を向上している。
【００２５】
ＰＬＣ１は、複数のデバイスを用意し、それらを相互に連結したり、バックプレーンユニットに取り付けたりすることで構成される。デバイスは、ユニットとも称される。図示したＰＬＣ１は、メイン制御デバイス（Ｄｅｖ．Ａ），ＩＯユニット，通信制御デバイス（Ｄｅｖ．Ｂ），リモートＩＯ制御デバイス（Ｄｅｖ．Ｃ）から構成される。
【００２６】
本実施形態では、３つの制御システム設定装置２が、ネットワーク５に接続される。各制御システム設定装置２には、１個又は２個の専用ツールがインストールされている。しかし、制御システム設定装置２の設置数は任意であり、１つの制御システム設定装置２にインストールする専用ツールの実装数も任意である。専用ツールは、制御デバイスへの割付やプログラミング、リモートＩＯの管理デバイスへの割付などを行なうツールソフトウェアである。一例を示すと、ツールＡはユーザプログラムを作成するためのツールであり、ツールＢはネットワーク構成・システム構成を作成するためのツールであり、ツールＣはリモートＩＯの設定ツールであり、ツールＤは専用コントローラの設定ツールであり、ツールＥは表示器のプログラミングツールである。各ツールは、物理メモリのアドレスにつけた名称を記述した変数データである“Ｐｒｊ．ｎ”と、物理メモリの割付先およびデバイス間のメモリリンクの関係を記述した設定データである“Ｃｆｇ．ｎ”と、を記憶保持している。
【００２７】
表示器３は、プログラマブル表示器（ＰＴ）であり、ＰＬＣ１の制御内容等を表示したり、ＰＬＣ１に対して各種の設定をしたりするための機器である。
【００２８】
他の制御機器４は、ネットワーク５上に接続された他の制御機器である。また、ネットワーク５は、ＰＬＣ１と制御システム設定装置２とを接続するための接続環境であり、イーサネット（登録商標）などにより実現できる。
【００２９】
共有ストレージ６は、各ツールからアクセスされデータの読み書きが行なわれるメモリマップデータベースを記憶保持するための記憶装置であり、いずれかの制御システム設定装置２を構成するコンピュータの内部或いは外部記憶装置として実現したり、ネットワーク５上に独立したデータベースサーバとして実現したりする。メモリマップデータベースは、“制御デバイスの物理メモリの割付情報”と“デバイス間のメモリ割付の関係情報と変数情報を記述したテーブル”の集合体である。詳細は後述する。
【００３０】
この共有ストレージ６に格納されたメモリマップ情報は、メモリマップ管理ツール８によって入力・編集・表示することができる。このメモリマップ管理ツール８は、制御システム設定装置２にインストールされた各ツールの一部の機能として組み込まれるようにしてもよい。
【００３１】
データベースマネジメントシステム７は、共有ストレージ６のメモリマップデータベースへのデータベースインタフェースである。データベースマネジメントシステム７は、各ツールからの要求に従い、各情報をユニークに特定するための各種のキーを発行したり、当該要求に応じてメモリマップデータベースを構築したりする。このデータベースマネジメントシステム７は、いずれかの制御システム設定装置２を構成するコンピュータに実装されたり、ネットワーク５に接続された他のコンピュータに実装されたりする。データベースマネジメントシステム７は、共有ストレージ６と同一の装置に実装されても良いし、異なる装置に実装されても良い。
【００３２】
共有ストレージ６内のメモリマップデータベースには、プロジェクト情報と、デバイス情報と、メモリマップ情報と、メモリ割付情報と、メモリリンクテーブルと、変数情報と、が格納される。各情報のデータ構造は、図２，図３に示すようになっている。
【００３３】
プロジェクト情報は、プロジェクトキーと、プロジェクト名と、プロジェクト個別情報と、を関連づけたテーブル構造となっている（図２（ａ）参照）。プロジェクトキーは、プロジェクトを識別するための識別子であり、ツールからの要求に従いデータベースマネジメントシステム７が生成する。このプロジェクトキーは、ユニークに存在し、一旦生成されると変更不可となる。プロジェクト名は、プロジェクトの代表名であり、ユーザが任意に設定できる。プロジェクト個別情報は、プロジェクトに必要な属性情報である。
【００３４】
デバイス情報は、デバイスキーと、プロジェクトキーと、デバイス名と、デバイス個別情報と、を関連づけたテーブル構造となっている（図２（ｂ）参照）。デバイスキーは、デバイスを識別するための識別子であり、ツールからの要求に従いデータベースマネジメントシステム７が生成する。このデバイスキーは、ユニークに存在し、一旦生成されると変更不可となる。デバイス名は、ユーザが任意にデバイスに設定した代表名である。デバイス個別情報は、デバイスに必要な属性情報であり、例えばデバイス機種情報，コメントなどがある。なお、このデバイス情報のテーブルにおけるプロジェクトキーは、図２（ａ）に示すプロジェクト情報のテーブルのプロジェクトキーのリファレンスであり、プロジェクトテーブルより選択する。
【００３５】
メモリマップ情報は、マップキーと、プロジェクトキーと、デバイスキーと、マップ名と、タイプと、マップ個別情報と、を関連づけたテーブル構造となっている（図２（ｃ）参照）。マップキーは、メモリマップを識別するための識別子であり、ツールからの要求に従いデータベースマネジメントシステム７が生成する。このマップキーは、ユニークに存在し、一旦生成されると変更不可となる。マップ名は、ユーザが任意にデバイスに設定した代表名である。マップ個別情報は、メモリマップに必要な属性情報であり、例えばユニット機種情報、コメント、ユニット号機番号などがある。なお、このマップ情報のテーブルにおけるプロジェクトキー，デバイスキーは、それぞれ図２（ａ）に示すプロジェクト情報のテーブルのプロジェクトキーのリファレンス，図２（ｂ）に示すデバイス情報のテーブルのデバイスキーのリファレンスであり、各テーブルより選択する。
【００３６】
メモリ割付情報は、割付キーと、プロジェクトキーと、デバイスキーと、マップキーと、割付名と、用途と、エリアと、開始アドレスと、終了アドレスと、リンク先キーと、割付個別情報と、を関連づけたテーブル構造となっている（図３（ａ）参照）。割付キーは、メモリ割付を識別するための識別子であり、ツールからの要求に従いデータベースマネジメントシステム７が生成する。この割付キーは、ユニークに存在し、一旦生成されると変更不可となる。割付名は、ユーザが任意にメモリ割付に設定した代表名である。用途は、その割付されたメモリ領域に格納されるデータの用途・種類を特定するものである。用途は、“入力”，“出力”，“入出力”，“システム予約”等があり、リスト表示された規定値より選択される。エリアは、メモリのエリア種別であり、ＤＭ（ＤａｔａＭｅｍｏｒｙ），ＣＩＯ（Ｃｈａｎｎｅｌ  Ｉ／Ｏ）などがある。開始アドレス並びに終了アドレスは、それぞれ割り付けさめたメモリ領域の範囲を特定するための割付エリア開始アドレスと割付エリア終了アドレスである。割付個別情報は、割付に必要な属性情報である。なお、このメモリ割付情報のテーブルにおけるプロジェクトキー，デバイスキー，マップキーは、それぞれ図２（ａ）に示すプロジェクト情報のテーブルのプロジェクトキーのリファレンス，図２（ｂ）に示すデバイス情報のテーブルのデバイスキーのリファレンスであり、図２（ｃ）に示すメモリマップ情報のテーブルのマップキーのリファレンスであり、各テーブルより選択する。また、リンク先キーは、以下に示すメモリリンクテーブルのテーブルのリンクキーのリファレンスであり、これもそのテーブルから選択する。
【００３７】
メモリリンクテーブルは、複数のＰＬＣ間でデータリンクを行なうための情報を格納するもので、リンクキーと、リンク番号と、リンク名と、割付元キーと、割付先キーと、リンク個別情報と、を関連づけたテーブル構造となっている（図３（ｂ）参照）。リンクキーは、リンクを識別するための識別子であり、ツールからの要求に従いデータベースマネジメントシステム７が生成する。このリンクキーは、ユニークに存在し、一旦生成されると変更不可となる。リンク番号は、１つのリンクグループに含まれるリンクの数であり、データベースマネジメントシステム７が生成する。リンク名は、ユーザが任意にリンクに設定した代表名である。リンク個別情報は、リンクに必要な属性情報であり、コメントや最終更新日などがある。割付元キーは、送信元となるデータが格納されるメモリ領域を特定する割付キー（図２（ｄ）のメモリ割付情報のテーブルの割付キーのリファレンス）であり、係るメモリ割付情報のテーブルより選択する。同様に、割付先キーは、送信先となるデータが格納されるメモリ領域を特定する割付キー（図３（ａ）のメモリ割付情報のテーブルの割付キーのリファレンス）であり、係るメモリ割付情報のテーブルより選択する。
【００３８】
変数情報は、変数キーと、プロジェクトキーと、デバイスキーと、カテゴリと、変数名と、アドレスと、データ型と、サイズと、割付キーと、変数個別情報、を関連づけたテーブル構造となっている（図３（ｃ）参照）。変数キーは、変数を識別するための識別子であり、ツールからの要求に従いデータベースマネジメントシステム７が生成する。この変数キーは、ユニークに存在し、一旦生成されると変更不可となる。カテゴリは、変数が属するカテゴリ（グループ）を登録する。変数をカテゴリ（グループ）に分けて管理する為の名称である。変数名は、ユーザが任意に変数の名称である。アドレスは、変数の示すメモ盛りのアドレスである。データ型は、データ型を登録し、規定値より選択する。サイズは、データ型が何個分あるかを規定するもので、任意に設定できる。割付キーは、変数が含まれるメモリ割付の割付キーである。変数個別情報は、変数に必要な属性情報であり、こる。なお、このメモリ割付情報のテーブルにおけるプロジェクトキー，デバイスキー，マップキーは、それぞれ図２（ａ）に示すプロジェクト情報のテーブルのプロジェクトキーのリファレンス，図２（ｂ）に示すデバイス情報のテーブルのデバイスキーのリファレンスであり、図２（ｃ）に示すメモリマップ情報のテーブルのマップキーのリファレンスであり、各テーブルより選択する。また、リンク先キーは、以下に示すメモリリンクテーブルのテーブルのリンクキーのリファレンスであり、コメントや最終更新日などがある。
【００３９】
以下、実際の各種の処理を実行する手順を説明しつつ、各処理部の機能を説明する。図４，図５は、ＰＬＣ設定ツール（Ｔｏｏｌ．Ａ）の処理機能を示すフローチャートである。
【００４０】
まず、ユーザが制御システム設定装置２の入力装置を操作して、新規プロジェクトを生成する。つまり、ＰＬＣ設定ツールの処理がプロジェクト名の入力を促し、ユーザがプロジェクト名を入力することで、システム構成ツールで共通のプロジェクト名を設定する（Ｓ１）。一例として、プロジェクト名が、“ＰＪ１”とする。
【００４１】
ＰＬＣ設定ツールは、この設定されたプロジェクト名を共有ストレージ６のメモリマップデータベースに設定する（Ｓ２）。このときあわせてプロジェクト生成日時やコメントなどを登録してもよい。具体的には、ＰＬＣ設定ツールは、データベースマネジメントシステム７に対してプロジェクト名を渡し、新規登録要求をする。データベースマネジメントシステム７は、受け取ったプロジェクト名に対するプロジェクトキーを生成し、共有ストレージ６のメモリマップデータベース中のプロジェクト情報テーブルに、プロジェクトキーとプロジェクト名を関連付けて登録する。データベースマネジメントシステム７は、登録が完了するとＰＬＣ設定ツールに対し、生成したプロジェクトキー（例えば、“Ｐ＿Ｋｅｙ１”）を返す。
【００４２】
図６は、処理ステップＳ２を実行することで生成されるプロジェクト情報テーブルの一例を示している。図示するように、ＰＬＣ設定ツールから渡されたプロジェクト名“ＰＪ１”と、システムが生成したプロジェクトキー“Ｐ＿Ｋｅｙ１”と、が関連付けて登録される。さらに、図示の例では、プロジェクト個別情報として、そのプロジェクト情報を登録した日時データが関連付けて記憶されている。この登録した日時データは、例えば、データベースマネジメントシステム７が登録処理をする際に内部時計を参照し、そのときの日時データを記録することで記憶保持できる。
【００４３】
次に、ＰＬＣ設定ツールは、ＰＬＣの名前、機種情報通信設定などをユーザに入力させる（Ｓ３）。たとえば、ＰＬＣ名が“ＰＬＣ−１”、機種が“ＣＳ１Ｈ”と入力されたものとする。
【００４４】
ＰＬＣ設定ツールは、この入力情報を共有ストレージ６のメモリマップデータベース中のデバイス情報テーブルに登録する（Ｓ４）。ここでプロジェクトキーは、ＰＬＣ設定ツールが、プロジェクト登録時に取得したプロジェクトキー（Ｐ＿Ｋｅｙ１）を渡す。データベースマネジメントシステム７は、受け取ったデバイス名に対するデバイスキーを生成し（ここでは“Ｄ＿Ｋｅｙ１”）、受け取った情報とともにデバイス情報テーブルに格納する。また、データベースマネジメントシステム７は、生成したデバイスキーをＰＬＣ設定ツールに返す。
【００４５】
図７は、処理ステップＳ３を実行することで生成されるデバイス情報テーブルの一例を示している。図示するように、システムが生成したデバイスキー“Ｄ＿Ｋｅｙ１”と、ＰＬＣ設定ツールから渡されたプロジェクトキー“Ｐ＿Ｋｅｙ１”並びにデバイス名“ＰＬＣ１”と、が関連付けて登録される。さらに、図示の例では、デバイス個別情報として、デバイスのタイプ“ＣＳ１Ｈ”（この情報もＰＬＣ設定ツールから渡される）が関連付けて記憶されている。
【００４６】
次いで、ＰＬＣ設定ツールは、ＰＬＣの種類により決まるメモリのシステム予約エリアをメモリマップ情報テーブル等に登録する（Ｓ５）。つまり、ＰＬＣの機種が決まると、これに対応してこの機種が制御デバイスの物理メモリのどのメモリエリアをどのように占有するかが決まる。そこで、ＰＬＣ設定ツールは、この情報をデータベースマネジメントシステム７経由で共有ストレージ６のメモリマップデータベース内のメモリマップ情報テーブル、および、メモリ割付情報エリアに登録する。具体的には、まず、メモリマップ情報テーブルには、システム領域としてメモリを占有したことを登録する。つまり、図８に示すように、プロジェクトキー及びデバイスキーは、それぞれデータベースマネジメントシステム７から取得したキーを登録する。マップ名は、ユーザからの入力を受けてＰＬＣ設定ツールが独自につける。ここでは“Ｓｙｓｔｅｍ１”とする。またタイプは、システム領域として占有するので、“Ｓｙｓｔｅｍ”としている。なお、メモリマップ個別情報は特に必要でないので入力しなくてよい。これらの登録を行なうと、データベースマネジメントシステム７は、マップキーを生成し、メモリマップ情報テーブルに登録するとともに、ＰＬＣ設定ツールに返す。ここでは“Ｍ＿Ｋｅｙ１”が返させる。
【００４７】
また、ＰＬＣの機種により占有されるメモリエリアはいくつかのエリアに別れて存在する。たとえばＤＭ１００００チャネルから１２０００チャネル、およびＣＩＯ２０００チャネルからＣＩＯ２５００チャネル、およびＣＩＯ３０００からＣＩＯ３５００チャネルを占有するとする。すると、メモリ割付情報テーブルは、図９に示すようになる。この場合、プロジェクトキー、デバイスキー、マップキーはそれぞれデータベースマネジメントシステム７から渡されたものを使う。割付名はシステム予約内容がわかりやすい名前をＰＬＣ設定ツールで自動生成或いはユーザ入力により設定する。図示の例ではＳｙｓ１，Ｓｙｓ２，Ｓｙｓ３としている。用途はあらかじめ決められた用途種別より選択する。ここではシステム領域であり、かつＩｎのエリア（Ｓ＿Ｉ）かＯｕｔのエリアか（Ｓ＿Ｏ）などを登録する。リンクキーはこの段階では使わないので登録しない。この処理ステップＳ５まで実行することにより、ＰＬＣ（制御デバイス）の登録が完了する。
【００４８】
ＰＬＣにはいくつかのユニットを取り付けて制御を行なう。そこで、次にユニット（デバイス）の登録を行なう。すなわち、プロジェクト名、ＰＬＣ名を引数に、ＰＬＣＩＯ構成を作成するツールを起動する（Ｓ６）。なお、係るツールは、ＰＬＣの設定ツールの一部の機能として実現されていても良いし、別ツールであってもかまわない。
【００４９】
係るツールの起動後、ユニット（デバイス）の追加・更新処理を実行する（Ｓ７）。このユニットの追加・更新処理は、具体的には、図５に示すフローチャートを実行することになる。ツールは、ユーザからのユニットの追加・変更処理の入力を受け付けると（Ｓ１０）、その処理内容を判断する（Ｓ１１）。処理内容が変更の場合、ツールは、変更されたデバイスの機種情報やユニット登録情報を変更する（Ｓ１２）。また、処理内容が追加の場合、ツールは、ユーザが指定したＰＬＣで利用するデバイスの機器種別を特定する（Ｓ１３）。
【００５０】
ユニット（デバイス）は、単純なＩＯユニットから、高機能なＩＯユニット、さらには通信やコントロールを行なうＣＰＵ高機能ユニットなどがあり、それぞれによって、メモリの占有のしかたが異なる。また、デバイスの種類により自動的に使用するメモリエリアが決まるものもあれば、ユーザの入力に伴いツールによりエリアが確定されるものもある。
【００５１】
そこで、ツールは、追加・変更された処理対象のデバイスのメモリ割付が自動で行なえるか否かを判断する（Ｓ１４）。そして、処理対象のデバイスのメモリ割付が自動的に行なえる場合、ツールは、特定した機種の情報をメモリマップデータベースに登録する（Ｓ１５）。次いで、ツールは、ユニット（デバイス）により割り付けられたメモリ情報をメモリマップデータベースのメモリマップ情報テーブルに登録する（Ｓ１６）。このとき、合わせてメモリの用途（ＩＮ、ＯＵＴなど）も合わせて登録する。
【００５２】
単純なＩＯユニットではユニット型式が決まると、スロット番号の若い順にＣＩＯの０チャネル目からメモリエリアを占有する。例えば、ＡＣ１６点入力ユニット（ＣＳ１Ｗ−ＩＡ１１１）をスロット０、リレー接点１６点出力ユニット（ＣＳ１Ｗ−ＯＣ２０１）をスロット２にさすと、それぞれＣＩＯ０チャネル、ＣＩＯ１チャネルの１６点をそれぞれ占有する。
【００５３】
このように機器の種別により自動的にメモリ割付が確定するものの場合、そのメモリマップ情報を登録する（図１０参照）。プロジェクトキー、デバイスキーは、データベースマネジメントシステム７から得たプロジェクトのキー、デバイスキーを登録する。マップ名はマップを示す名前をツールでつける。例えば、ユニットであることと、機種名、スロット番号などをつけておく。（ＵＮＩＴ＿ＣＳ１Ｗ＿ＩＡ１１１＿０， ｕｎｉｔ＿ＣＳ１Ｗ＿ＯＣ２０１＿１）タイプのＩＯユニットは、通常のＩＯユニットであるのでＩＯＵｎｉｔを登録する。マップ情報には機種情報などを登録しておく。これらの情報をデータベースマネジメントシステム７に登録すると、データベースマネジメントシステム７はマップキーを生成し、これをデータベースに登録するとともに、マップキーをツールに返す。
【００５４】
次に、占有したエリアの情報をメモリ割付情報としてデータベースに登録する（図１１参照）。プロジェクトキー、デバイスキー、マップキーはそれぞれ、データベースマネジメントシステム７から取得したキー情報を登録する。割付名はユーザに理解しやすい名前をツールでつける。例えばメモリマップ情報でつけた“名前＋各エリアの意味を表す名前”をつける。上記の例では占有するエリアは１つだけなのでメモリマップ情報でつけた名前をそのまま使用している。用途は、ユニットでＩｎ、Ｏｕｔを示すＵ＿Ｉ／Ｕ＿Ｏなどをつけている。エリア、開始アドレス、終了アドレスはそれぞれ占有するエリアの種別と占有アドレスを登録する。データベースマネジメントシステム７は、これらの情報をもとに割付キー情報を生成し、登録の要求を発行したツールに返す。
【００５５】
一方、自動割付ができない場合、ツールは、プロジェクト名、ＰＬＣ名、ユニット情報を引数に専用ツールを起動する（Ｓ１７）。この専用ツールは、たとえば図１中のＴｏｏｌ．Ｃ，Ｄ，Ｅなどである。この処理ステップ１７の具体的な処理機能は、図１２に示すフローチャートを実行するようになっている。
【００５６】
機種個別のツールは、プロジェクト名、ＰＬＣ機種名、ユニット情報などを起動元ツールから引き継ぐ（Ｓ２１）。なお、係る情報は、ユーザからの入力により取得しても良い。機種個別のツールは、取得した情報をもとにメモリマップデータベースに接続する（Ｓ２２）。
【００５７】
機種個別のツールは、ユーザからの入力に従いユニットの構成情報を取得し（Ｓ２３）、構成から確定するＰＬＣのメモリ割付情報をメモリデータベース６に登録された既存のメモリ割付情報と比較する（Ｓ２４）。この段階では、機種個別のツールで生成されたメモリ割付情報は、そのツール内の記憶装置（一時記憶メモリ）に格納され、メモリデータベースへの登録は行なわれていない。
【００５８】
メモリデータベース６から読み出した既存のメモリ割付情報と、機種個別のツールで生成し登録しようとしているメモリ割付情報とで、割付けしたメモリエリアの重複の有無並びに、用途の不正使用の有無をチェックする（Ｓ２５，Ｓ２６）。メモリエリアには、重複できるエリアと重複してはいけないエリアがある。そこで、“メモリエリアの重複”は、“重複してはいけないエリア”に対し、両者がメモリ割付を行なっている場合を意味する。この“エリア重複エラー”の有無の判断は、たとえば重複してはいけないエリアをメモリマップデータベースに登録しておき、機種個別のツールがその登録された情報を読み出して利用することにより行なえる。係るエリアのメモリマップデータベースへの登録は、例えばＰＬＣ設定ツールにより行なう。
【００５９】
また、重複を認めているメモリエリアであっても、例えば、他のツールが出力すべきエリアに出力する等、用途の違いがある場合には、“用途不正”となる。この用途不正か否かの判断は、予め用途不正となる条件を各ツールに登録しておき、比較する２つのメモリ割付情報においてエリアが重複している箇所の用途を抽出し、係る用途不正となる条件を具備するか否かを判断すればよい。
【００６０】
処理ステップＳ２５，Ｓ２６の分岐判断のいずれかが適合した場合（Ｓ２５，Ｓ２６でＹｅｓ）、ユーザに設定ミスを警告する（Ｓ２７）。この警告は、重複エラーか用途不正かの設定ミスの種類と、設定ミスを生じているエリアを特定する情報などを合わせて報知する。この警告により、ユーザは、メモリの重複や、用途の違いを生じていることを知ることができるので、メモリ割付の再設定を行なう。つまり、処理ステップＳ２３に戻り、処理を実行する。
【００６１】
一方、設定ミスが生じていない場合（Ｓ２５，Ｓ２６が共にＮｏ）、機種個別のツールは、確定したＰＬＣのメモリ割付情報をメモリマップデータベースに追加する。この際、用途情報も入力する。なお、実際の登録処理は、データベースマネジメントシステム７を介して行なう（Ｓ２８）。また、機種個別のツールは、対応するデバイスに対し、メモリ割付け情報をダウンロードする（Ｓ２９）。
【００６２】
この機種固有のツールを用いた登録処理を、具体例を挙げつつ説明する。ユニット（デバイス）によっては、機器種別に基づく占有エリアに登録するだけでは占有するエリアが決まらず、別途ユーザによるユニット設定パラメータの入力に基づき割付エリアが確定するものがある。例えばプロセスコントロールユニットの場合、ユニットの設定で、ＰＬＣとのデータのやり取りのための送受信エリアをプロセスコントローラの設定ツールで登録し、この情報をプロセスコントロールユニットに設定する。すると、プロセスコントロールのユニットでは設定されたエリアをもとにＰＬＣのラダーと通信する。ところが、プロセスコントロールユニットは独自のツールによって設定されるため、ＰＬＣ設定ツールからはプロセスコントロールがどのエリアを設定したのかわからないので、プロセスコントロールユニット用のツールで割り付けたエリアを別の用途に使ってしまう可能性がある。
【００６３】
ユニット（デバイス）がデバイス情報テーブルに追加され、専用ツール起動を行なうと、プトジェクトキー、ＰＬＣのデバイスキー、ユニット形式などの情報を引き継いでプロセスコントロールユニット設定ツールが起動される。
【００６４】
プロセスコントロールユニット設定ツールでは引き継がれた情報を元にメモリマップデータベースにアクセスし、ＰＬＣ名、形式、ユニット情報をもとに、ツールのプロジェクトを自動生成する。このあと、プロセスコントロールのプログラムを登録する。プロセスコントロールでは後述するユーザリンクテーブルを登録することにより、ＰＬＣとプロセスコントロールのデータ交換をＰＬＣのメモリ上で行なうことができる。ここではユーザがプロセスコントロール上のタグＡがＰＬＣ上のＣＩＯ０エリアに書き込みをするような設定をしたとする。この場合、プロセスコントロールユニット設定ツールはメモリ割付情報テーブルを検索し、ＣＩＯ０のエリアが使われていないかどうかチェックする。すると、このエリアはＵＮＩＴ＿ＣＳ１Ｗ＿ＩＡ１１１＿０によってすでに使われていることがわかる。次に、このエリアの用途をチェックしてみると、このエリアはＵ＿Ｉ、つまりＰＬＣに対する入力のエリアであることがわかる。したがって、プロセスコントロールユニットがＰＬＣへの出力として設定したユーザリンクテーブルのタグＡの割付は用途が重複しており、エラーであることがわかる。したがってこの時点でユーザにエラーを通知でき、メモリ割付のエラーを瞬時に発見できる。このように、各ツールでメモリの割付を行なう際、メモリの重複や、用途の違いなどを各ツールで事前にチェックできる。
【００６５】
次に、データリンクの設定について説明する。データリンクは複数のＰＬＣ間で通信を使ってお互いのメモリエリアを自動的に更新し、他のＰＬＣのメモリ状況が常に自分のＰＬＣに反映されるものである。図１３に示すように、３つのＰＬＣ（ＰＬＣ１，ＰＬＣ２，ＰＬＣ３）がデータリンクの設定を行なっている場合、ＰＬＣ１のＣＩＯ０００〜ＣＩＯ０００９のメモリエリアＭ１１に格納されたデータは、ＰＬＣ２のＣＩＯ０００〜ＣＩＯ０００９のメモリエリアＭ１２と、ＰＬＣ３のＣＩＯ０００〜ＣＩＯ０００９のメモリエリアＭ１３とに格納される。これにより、ＰＬＣ１が持つデータを、ＰＬＣ２とＰＬＣ３も共有する。同様に、ＰＬＣ２のＣＩＯ０１０〜ＣＩＯ００１９のメモリエリアＭ２２に格納されたデータはＰＬＣ１とＰＬＣ３も共有し、ＰＬＣ３のＣＩＯ０２０〜ＣＩＯ００２９のメモリエリアＭ３３に格納されたデータはＰＬＣ１とＰＬＣ２も共有する。
【００６６】
このデータリンクの設定を行なう場合、共有するメモリエリアについてメモリ割付けをする必要があるが、係る割付けをしようとするメモリエリアが他のツールによる設定などですでに割付られたメモリエリアと重複等している場合にそのままにすると誤動作するおそれがある。そこで、上述したデバイスについての機種固有のツールを用いた登録処理の際に行なう“メモリ割付の設定のチェック”を、メモリリンクの設定の際にも行なうようにした。係るチェック処理を実行するデータリンク設定ツールの機能は、図１４に示すフローチャートのようになる。
【００６７】
データリンク設定ツールは、プロジェクト名などを起動元ツールから引き継ぐ（Ｓ３１）。なお、係る情報は、ユーザからの入力により取得しても良い。データリンク設定ツールは、取得した情報をもとにメモリマップデータベースに接続する（Ｓ３２）。
【００６８】
データリンク設定ツールは、ユーザからの入力に従いネットワークに接続されてデータリンクを行なうデバイスに設定する、各通信ユニットごとに共有するメモリ割付並びにリンク情報を取得し（Ｓ２３）、構成から確定するＰＬＣのメモリ割付情報をメモリデータベース６に登録された既存のメモリ割付情報と比較する（Ｓ３４）。
【００６９】
メモリデータベース６から読み出した既存のメモリ割付情報と、データリンク設定ツールで生成しメモリマップデータベースに登録しようとしているメモリ割付情報とで、割付けしたメモリエリアの重複の有無並びに、用途の不正使用の有無をチェックする（Ｓ３５，Ｓ３６）。“エリア重複エラー”の有無の判断並びに“用途不正”の有無の判断は、上記の機種個別のツールにおける判断と同様である。
【００７０】
処理ステップＳ３５，Ｓ３６の分岐判断のいずれかが適合した場合（Ｓ３５，Ｓ３６でＹｅｓ）、ユーザに設定ミスを警告する（Ｓ３７）。この警告は、重複エラーか用途不正かの設定ミスの種類と、設定ミスを生じているエリアを特定する情報などを合わせて報知する。この警告により、ユーザは、メモリの重複や、用途の違いを生じていることを知ることができるので、メモリ割付の再設定を行なう。つまり、処理ステップＳ３３に戻り、処理を実行する。
【００７１】
一方、設定ミスが生じていない場合（Ｓ３５，Ｓ３６が共にＮｏ）、データリンク設定ツールは、構成上より確定したＰＬＣのメモリ割付情報をメモリマップデータベースに追加する。この際、用途情報も入力する。なお、実際の登録処理は、データベースマネジメントシステム７を介して行なう（Ｓ３８）。また、データリンク設定ツールは、対応するデバイスに対し、データリンク構成情報をダウンロードする（Ｓ３９）。
【００７２】
次に具体例を挙げて説明する。例えば３つのＰＬＣ（ＰＬＣ１、ＰＬＣ２、ＰＬＣ３）間でデータリンクの設定を行なう場合、まずＰＬＣの情報がデバイス情報として登録されている必要がある。この情報はＰＬＣ設定ツール（Ｔｏｏｌ．Ａ）で登録するか、データリンク設定ツール（Ｔｏｏｌ．Ｂ）により登録される（図１５参照）。ここで、プロジェクトキーはＰＬＣ設定ツールで登録されたキーを使用する。データリンクを行なうためには通信ユニットが必要であり、このユニットもまた、通信設定のためのメモリ情報を占有する。
【００７３】
また、図１６に示すように、メモリマップ情報テーブルには、ＰＬＣ１，ＰＬＣ２，ＰＬＣ３についてのデータリンクのメモリマップとして、マップキー＝“Ｍ＿Ｋｅｙ８”，“Ｍ＿Ｋｅｙ９”，“Ｍ＿Ｋｅｙ１０”が登録される。これら３つのメモリマップ情報は、マップ名が“ＣＬＫ＿ＤＬＫ”と同じであり、タイプがデータリンクを示すＤＬＫであるため、同一のデータリンクを構成するものであることがわかる。
【００７４】
図１７は、メモリ割付情報テーブルの具体例を示している。図１５に示したように、３つのＰＬＣ間でデータリンクを行なうため、各ＰＬＣでは、それぞれ３つのメモリエリアが割り付けられる。つまり、ＰＬＣ１は、割付キー＝“Ｏ＿Ｋ１１”，“Ｏ＿Ｋ１２”，“Ｏ＿Ｋ１３”の３つのメモリエリアが割り付けられ、ＰＬＣ２は、割付キー＝“Ｏ＿Ｋ１４”，“Ｏ＿Ｋ１５”，“Ｏ＿Ｋ１６”の３つのメモリエリアが割り付けられ、ＰＬＣ３は、割付キー＝“Ｏ＿Ｋ１７”，“Ｏ＿Ｋ１８”，“Ｏ＿Ｋ１９”の３つのメモリエリアが割り付けられる。割付キー＝“Ｏ＿Ｋ１１”，“Ｏ＿Ｋ１４”，“Ｏ＿Ｋ１７”では、それぞれのＣＩＯの０から９までのメモリエリアが割り付けられ、割付キー＝“Ｏ＿Ｋ１２”，“Ｏ＿Ｋ１５”，“Ｏ＿Ｋ１８”では、それぞれのＣＩＯの１０から１９までのメモリエリアが割り付けられ、割付キー＝“Ｏ＿Ｋ１３”，“Ｏ＿Ｋ１６”，“Ｏ＿Ｋ１９”では、それぞれのＣＩＯの２０から２９までのメモリエリアが割り付けられている。本実施形態の場合、データリンクで割り付けられるメモリエリアはＣＩＯ０〜９，ＣＩＯ１０〜１９，ＣＩＯ２０〜２９であり、このメモリエリアはすでに他のツールによって割り付けられたメモリエリアと重複していないため、設定ミスによるエラー警告を受けることなく、そのまま登録される。もちろん、すでに登録されたメモリエリアに重複する等の設定ミスがあった場合には、データリンクの割付情報はデータベースには登録されない。
【００７５】
図１８に示すように、データリンクテーブルは、送信元キー、送信先キーとして、それぞれ割り付けキーを設定する。２つのリンクがある場合はリンク番号に１、２と順番をつける。方向は、送信元がＲｅａｄエリア（送信先から送信元へのデータ送信）かＷｒｉｔｅ（割付元から割付先へのデータ送信）か、双方向かでＲ、Ｗ，ＲＷを設定する。リンク名はわかりやすい名前をツールでつけることができる。たとえばノード番号を使ってリンクの方向性がわかるよう１ｔｏ２Ｒ（ノード１からノード３へのＲｅａｄエリア）などとつければよい。
【００７６】
これにより、メモリの検索時、メモリ割付テーブルで指定したアドレスがデータリンクエリアの場合、これがどのデバイスからつながっているのかがわかる。例えば、ＰＬＣ１のＣＩＯ１０をメモリ割付テーブルで検索すると、ＤＬＫ＿ＣＩＯ＿ＲＣＶ１エリアで用途がＤ＿Ｉ、つまりデータリンクのレシーブエリアとなる。これがどのエリアにつながっているかを見る場合、Ｌ＿Ｋ２をキーにしてメモリリンクテーブルを検索する。すると、割付先キーがＯ＿Ｋ１５となり、これはメモリ割付テーブルでＤ＿Ｋｅｙ２のＭ＿Ｋｅｙ９のＣＩＯ２０であることがわかり、Ｄ＿Ｋｅｙ２からデバイス情報テーブルをもとにＰＬＣ２（ＣＪ１Ｈ）であることがわかる。
【００７７】
図１９は、変数の登録処理を示している。ユーザがプログラミングを行なう際に、変数を用いてプログラミングすると、アドレスが変更した場合に、変数テーブルのみを変更すればよく、プログラムの変更をする必要がないため便利である。そして、変数を登録する場合もメモリマップによる用途チェックが可能である。
【００７８】
変数の登録処理は、ＰＬＣ設定ツール（プログラミングツール）を起動する。そして、そのＰＬＣ設定ツールが、処理対象のプロジェクト名をユーザからの入力もしくは既存プロジェクト保存ファイルよりロードして取得する（Ｓ４１）。ＰＬＣ設定ツールは、取得した情報をもとにメモリマップデータベースに接続する（Ｓ４２）。
【００７９】
ＰＬＣ設定ツールは、ユーザから入力された該当ＰＬＣに対する変数名、変数アドレス情報を取得し（Ｓ４３）、入力されたアドレスとメモリデータベース６に登録された既存のメモリ割付情報とを比較する（Ｓ４４）。
【００８０】
ＰＬＣ設定ツールは、入力されたアドレスが使用不可エリアか否かを判断する（Ｓ４５）。使用不可エリアは、例えばシステムのワークエリアなどであり、ＰＬＣ設定ツールが知識として持っている。変数アドレスが、使用不可エリアの場合（Ｓ４５でＹｅｓ）、ユーザに設定ミスを警告する（Ｓ４７）。この警告により、ユーザは、使用不可エリアに変数アドレスを割り付けようとしていることがわかるので、メモリの重複や、用途の違いを生じていることを知ることができるので、メモリ割付の再設定を行なう。つまり、処理ステップＳ４９に飛び、“全ての変数登録完了か？”の分岐判断でＮｏとなるので処理ステップＳ４３に戻り処理を実行する。
【００８１】
一方、変数アドレスが使用不正エリアでない場合（Ｓ４５でＮｏ）、ユーザは、処理中の変数を他のツールと共有しても良いか否かを判断する（Ｓ４６）。係る判断は、ユーザが行なうが、その判断結果を入力することで、ＰＬＣ設定ツールは、ユーザの判断結果を認識する。そして、共有しても良い場合には、処理ステップＳ４８に進み、ＰＬＣ設定ツールは、変数情報をメモリマップデータベースに登録する。これにより他のツールからも変数を共有して利用できる（Ｓ４８）。
【００８２】
これにより、プログラミングに必要な変数を登録する際、変数のアドレスや用途を入力すると、このアドレスがシステム予約エリアを使っていないか、他のユニットから入力されるエリアを出力用に使っていないかなどを入力時にチェックできる。
【００８３】
図２０は、変数情報テーブルの一例を示している。例えばユーザが“ＣＩＯ２０００”のメモリエリアに“Ｉｎｐｕｔ１”という名の変数を登録しようとした場合、ユーザが変数テーブルを入力した段階で、メモリ割付テーブルをチェックする。このとき、ＣＩＯ２０００−ＣＩＯ２５００はシステムにより入力のエリアとして予約されていることがわかる。そこで、プログラミングツールは「設定された変数エリアはシステムの入力エリアとして予約されています。登録を続けますか？」といったようにユーザに警告を発する。ユーザが登録を行なうことを選択した場合は変数テーブルに登録される。プロジェクトキー、デバイスキー、変数名、アドレス、データ型、サイズ、コメントを入力してメモリマップデータベースに登録すると、データベースマネジメントシステム７ユニークな変数キーを返す。カテゴリはルートを現す“￥”を登録する。割付キーはこの場合は利用しないので空白となる。ユニットを登録するとメモリエリアを登録すると同時に、変数エリアを自動で登録することも可能である。
【００８４】
図２１から図２４は、メモリエリアの管理ツール（メモリマップ管理ツール）８の機能を示している。メモリマップ管理ツール８は、メモリマップデータベースにアクセスしてメモリ割付情報を取得し、その結果を図２５に示すように、ビジュアルに表示するツールである。これによりユーザは視覚的にどのエリアが何に使われているかを知ることができる。
【００８５】
まず、メモリマップ管理ツール８を起動し、ユーザからの入力に従い、処理対象のプロジェクト名ＰＬＣ機種名を取得する（Ｓ５１）。次いで、メモリマップ管理ツール８は、取得したプロジェクト名，ＰＬＣ機種名をもとにメモリマップデータベースに接続し、メモリ割付一覧情報を取得する（Ｓ５２，Ｓ５３）。管理ツールは、取得したメモリ割付け一覧情報に基づき、そのメモリ情報を表示装置に表示する（Ｓ５４）。表示レイアウトの一例を示すと、図２５のようになる。図示するように、どのメモリエリアがどの種類データで割付けされているかが一目でわかる。
【００８６】
さらに本実施形態のメモリマップ管理ツール８は、ユーザからの選択処理に基づき “ユーザ定義エリア登録”，“エリア詳細情報表示”，“エリアリンク情報の表示”，“そのまま処理終了”のいずれかの処理を実行する機能を有する（Ｓ５５からＳ５９）。
【００８７】
“ユーザ定義エリア登録”処理，“エリア詳細情報表示”処理，“エリアリンク情報の表示”処理は、それぞれ図２２，図２３，図２４に示すフローチャートを実行するようになっている。
【００８８】
ユーザ定義エリア登録処理は、ユーザが定義したエリアをメモリ情報として登録するための処理である。メモリマップ管理ツールは、ユーザ定義エリア情報を入力する画面を表示しユーザにメモリ割付定義を入力させる（Ｓ６１）。次いで、メモリマップ管理ツールは、入力内容をもとにメモリマップデータベースをチェックする（Ｓ６２）。つまり、入力されたメモリ割付定義で規定されるアドレスが使用不可エリアになっているか否かを判断する（Ｓ６３）。ユーザ定義エリア、使用不可エリアの場合（Ｓ６３でＹｅｓ）、ユーザに設定ミスを警告する（Ｓ６４）。この警告により、ユーザは、使用不可エリアにユーザ定義エリアを割り付けようとしていることがわかるので、メモリ割付の再設定を行なう（Ｓ６１）。
【００８９】
ユーザ定義エリアが使用不可エリアでない場合（Ｓ６３でＮｏ）、他のツールと共有（メモリの重複が発生していないか）を判断する（Ｓ６５）。メモリの共有が発生している場合、ユーザは、係るメモリの重複を許容するか否かを判断する（Ｓ６６）。係る判断は、例えば重複している内容を表示装置に表示し、それを見てユーザが判断し、判断結果をツールに入力するコトニより行なう。
【００９０】
他のツールと共有していない場合（Ｓ６５）並びに重複を許容する場合（Ｓ６６がＹｅｓ）、ツールは、ユーザ割付情報をメモリマップデータベースに登録する（Ｓ６７）。そして、ツールは、その登録内容をメモリ情報表示エリア（図２５参照）に反映する。一方、他のツールとメモリエリアを共有する状態が発生し、しかも、重複を許容しない場合（Ｓ６６でＮｏ）、処理ステップＳ６１に戻りユーザ定義エリアの再割付を行なう。
【００９１】
これにより、例えば、プログラムのレシピ情報を格納するエリアとしてＤＭ１００００から１０００チャネルを予約しておきたい場合、これらを登録することができる（図２６，図２７参照）。つまり、今までのメモリマップ情報、メモリ割付情報の登録と同様に各情報を登録する。ツールは、登録の過程で該当エリアに重複がないかどうかを確認する。メモリ割付情報の用途はユーザが出力エリアとして割り付けしたことを示すＡ＿Ｏを登録する。登録が完了すると、これらの情報はさらに別のメモリ情報登録の際の確認情報として利用できる。
【００９２】
図２３は、エリア詳細情報の表示機能を示している。ユーザは、メモリエリア一覧画面で詳細情報を表示したいエリアを選択するため、メモリマップ管理ツールは、選択されたエリアを認識する（Ｓ７１）。メモリマップ管理ツールは、選択されたエリア情報をもとに、エリアの用途、割付元ユニット情報、変数情報などをメモリマップデータベースから取得し（Ｓ７２）、取得した詳細情報を表示する（Ｓ７３）。
【００９３】
図２４は、メモリエリアリンク情報の検索・表示処理機能を示すフローチャートである。ユーザは、メモリエリア一覧画面でリンク情報を表示したいエリア選択するため、メモリマップ管理ツールは、選択されたエリアを認識する（Ｓ８１）。メモリマップ管理ツールは、選択されたエリア情報をもとに、メモリマップデータベースから該当エリアがリンク情報を持つかどうかを確認する（Ｓ８２）。そして、選択エリアがリンク情報を持っている場合（Ｓ８３でＹｅｓ）には、選択されたエリア情報をもとに、メモリマップデータベースからリンク先のデバイス情報、メモリ割付情報を取得し（Ｓ８４）、表示画面のデバイスを取得したデバイスに切り替え、メモリ割付情報を再表示し、取得したリンク先割付情報を表示する（Ｓ８５）。一方、選択エリアがリンク情報を持っていない場合（Ｓ８３がＮｏ）には、その旨を報知し、処理を終了する（Ｓ８６）。
【００９４】
図２８は、ＰＬＣ設定ツール（プログラミングツール）におるアドレスチェック機能を示すフローチャートである。プログラミングツールではラダーやＳＴ，ＦＢなどのプログラミング言語を用いてプログラミングをしていく。メモリの情報を入力したり、メモリに情報を出力したりプログラムを組むが、このアドレスチェック機能を実行することで、メモリ割付情報テーブルをチェックすることにより該当エリアが利用できるかどうかを事前に確認できる。たとえば、プログラムによりＣＩＯ０のエリアにＯｕｔするようなプログラムを記述すると、このエリアはＵＮＩＴ＿ＣＳ１Ｗ＿ＩＡ１１１＿０により入力エリアとして登録されていることから、プログラムミスであることが判断され、ユーザに通知される。
【００９５】
係る機能を実現するための処理は、以下の通りである。ＰＬＣ設定ツールは、プログラミングツールでプロジェクト名、ＰＬＣ名をもとにメモリマップデータベースに接続する（Ｓ９１）。
【００９６】
ユーザがプログラミング時に使用するアドレス情報を入力するため、ＰＬＣ設定ツールは、そのアドレス情報を取得し、その取得したアドレスに基づきメモリマップデータベース上にアクセスし該当するアドレスのメモリ割付情報を取得する（Ｓ９２，Ｓ９３）。そして、ＰＬＣ設定ツールは、取得したメモリ割付情報や用途情報などを表示するとともに、アドレス用途エラーの有無を判断する（Ｓ９５）。そして、用途エラーがあった場合には、ユーザに設定ミスを警告する。（Ｓ９６）。
【図面の簡単な説明】
【００９７】
【図１】本発明おけるシステム概要図の一例を示す図である。
【図２】メモリマップデータベースのデータ構造の一例を示す図である。
【図３】メモリマップデータベースのデータ構造の一例を示す図である。
【図４】ＰＬＣ設定ツール処理を示すフローチャートである。
【図５】ユニット追加・更新処理を示すフローチャートである。
【図６】プロジェクト情報テーブルの具体例を示す図である。
【図７】デバイス情報テーブルの具体例を示す図である。
【図８】メモリマップ情報テーブルの具体例を示す図である。
【図９】メモリ割付情報テーブルの具体例を示す図である。
【図１０】メモリマップ情報テーブルの具体例を示す図である。
【図１１】メモリ割付情報テーブルの具体例を示す図である。
【図１２】機器個別のツール処理を示すフローチャートである。
【図１３】データリンクを説明する図である。
【図１４】データリンク設定ツール処理を示すフローチャートである。
【図１５】デバイス情報テーブルの具体例を示す図である。
【図１６】メモリマップ情報テーブルの具体例を示す図である。
【図１７】メモリ割付情報テーブルの具体例を示す図である。
【図１８】データリンクテーブルの具体例を示す図である。
【図１９】変数の登録処理を示すフローチャートである。
【図２０】変数情報テーブルの具体例を示す図である。
【図２１】メモリエリアの管理ツール処理を示すフローチャートである。
【図２２】ユーザ定義エリアの登録処理を示すフローチャートである。
【図２３】エリア詳細情報の表示処理を示すフローチャートである。
【図２４】エリアリンク情報の表示処理を示すフローチャートである。
【図２５】メモリマップ表示レイアウトの一例を示す図である。
【図２６】メモリマップ情報テーブルの具体例を示す図である。
【図２７】メモリ割付情報テーブルの具体例を示す図である。
【図２８】アドレスチェック処理を示すフローチャートである。
【符号の説明】
【００９８】
１  ＰＬＣ
２  制御システム設定装置
３  表示器
４  制御機器
５  ネットワーク
６  共有ストレージ
７  データベースマネジメントシステム
８  メモリマップ管理ツール
【図１】
2008059532.tif 000003
【図２】
2008059532.tif 000004
【図３】
2008059532.tif 000005
【図４】
2008059532.tif 000006
【図５】
2008059532.tif 000007
【図６】
2008059532.tif 000008
【図７】
2008059532.tif 000009
【図８】
2008059532.tif 000010
【図９】
2008059532.tif 000011
【図１０】
2008059532.tif 000012
【図１１】
2008059532.tif 000013
【図１２】
2008059532.tif 000014
【図１３】
2008059532.tif 000015
【図１４】
2008059532.tif 000016
【図１５】
2008059532.tif 000017
【図１６】
2008059532.tif 000018
【図１７】
2008059532.tif 000019
【図１８】
2008059532.tif 000020
【図１９】
2008059532.tif 000021
【図２０】
2008059532.tif 000022
【図２１】
2008059532.tif 000023
【図２２】
2008059532.tif 000024
【図２３】
2008059532.tif 000025
【図２４】
2008059532.tif 000026
【図２５】
2008059532.tif 000027
【図２６】
2008059532.tif 000028
【図２７】
2008059532.tif 000029
【図２８】
2008059532.tif 000030