(57)【要約】【課題】  通信処理を意識することなく、共有するデータへのアクセスが容易に行える制御装置を提供すること【解決手段】  共有するデータの論理名を定義する。他の制御装置との間でデータ交換をする通信部と、ネットワークを介して共有するデータを格納するリンクメモリ１５と、論理名とリンクメモリに格納されたデータをアクセスするためのポインタを格納する間接参照テーブル１６と、論理名と、その論理名についてのポインタが格納された間接参照テーブル内のメモリアドレスを対応付けた変数データベース１７とを有する。制御実行部１８は、論理名に基づいて間接参照テーブルを介してリンクメモリにアクセスするので、具体的なデータ記憶位置は知らなくて良い。つまり、ユーザプログラムには、論理名が格納され、データが格納されたアドレス（ポインタ）は組み込む必要がない。【選択図】        図３
2009009607.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続された複数のノード間で共有するデータの論理名を定義し、
前記ノードの記憶部の所定の記憶領域に前記共有するデータを記憶保持し、
前記論理名と、その論理名に対応するデータを格納した前記記憶部の記憶位置情報を関連付けた関連情報を関連情報記憶部に記憶保持させ、
前記複数のノード間で、前記論理名，前記関連情報に基づいて前記共有するデータの送受を行い、
通信相手のノードの状態が変化した場合、その変化が前記関連情報に影響を与える時に、前記ネットワークに接続されたノードの処理を停止することなく連動して前記関連情報を変更するようにしたことを特徴とするネットワークシステム。
【請求項２】
ネットワークに接続された複数の制御装置間でデータを共有することのできる制御装置における制御方法であって、
前記制御装置に実装されたユーザプログラムが、記憶部に格納されたデータをアクセスするに際し、
前記データが格納された記憶位置情報と、そのデータにつけた論理名を関連付けた関連情報を記憶保持し、
前記ユーザプログラムは、論理名に基づく前記関連情報を取得し、前記記憶部へアクセスするようにしたことを特徴とする制御方法。
【請求項３】
前記関連情報は、記憶部に格納されたデータをアクセスするために用いる記憶位置情報が格納された間接参照テーブルと、
論理名と、その論理名についての記憶位置情報が格納された前記間接参照テーブル内の記憶位置情報を対応付けた対応テーブルとに分けて記憶保持され、
前記対応テーブルの内容が変更された場合に、ネットワークに接続された他の制御装置に前記対応テーブルの変更内容を通知する処理を行うようにしたことを特徴とする請求項２に記載の制御方法。
【請求項４】
前記関連情報は、記憶部に格納されたデータをアクセスするために用いる記憶位置情報が格納された間接参照テーブルと、
論理名と、その論理名についての記憶位置情報が格納された前記間接参照テーブル内の記憶位置情報を対応付けた対応テーブルとに分けて記憶保持され、
請求項３に記載の変更内容の通知を受けた制御装置は、その変更内容を解釈し、前記間接参照テーブルを更新する処理を行うことを特徴とする請求項２に記載の制御方法。
【請求項５】
前記関連情報は、記憶部に格納されたデータをアクセスするために用いる記憶位置情報が格納された間接参照テーブルと、
論理名と、その論理名についての記憶位置情報が格納された前記間接参照テーブル内の記憶位置情報を対応付けた対応テーブルとに分けて記憶保持され、
請求項３に記載の変更内容の通知を受けた制御装置は、その受信の際にその変更内容に対応する論理名のデータが自己に必要か否かを判断し、必要なもののみ記憶保持し、
次いで、その記憶保持した前記変更内容を解釈し、前記間接参照テーブルを更新する処理を行うことを特徴とする請求項２に記載の制御方法。
【請求項６】
前記関連情報は、記憶部に格納されたデータをアクセスするために用いる記憶位置情報が格納された間接参照テーブルと、
論理名と、その論理名についての記憶位置情報が格納された前記間接参照テーブル内の記憶位置情報を対応付けた対応テーブルとに分けて記憶保持され、
自己が利用する論理名に関する情報の送信を要求するメッセージをネットワーク上に送信し、
前記メッセージに応答して他の制御装置から送られてきた前記論理名に関する情報を受信し、
前記受信した情報に基づいて、前記間接参照テーブルを作成する処理を行うことを特徴とする請求項２に記載の制御方法。
【請求項７】
ネットワークに接続された他の制御装置間との間でデータを共有することのできる制御装置であって、
ネットワークを介して前記他の制御装置との間で、データ交換をする通信部と、
前記通信部で得た共有するデータを格納する記憶部と、
前記共有するデータは論理名で定義し、その論理名と、その論理名に対応するデータを格納した前記記憶部の記憶位置情報を関連付けた関連情報を格納する関連情報記憶部と、
前記論理名に基づいて前記関連情報記憶部にアクセスし、その論理名に対応する前記位置情報を取得するとともに対応するデータが記憶される前記記憶部の記憶領域にアクセスする機能を有する制御実行部と、
前記記憶部内の記憶位置情報の変更に基づき、前記関連情報記憶部の前記関連情報を更新する更新手段を備えたことを特徴とする制御装置。
【請求項８】
前記関連情報記憶部は、記憶部に格納されたデータをアクセスするために用いる記憶位置情報が格納された間接参照テーブルと、
論理名と、その論理名についての記憶位置情報が格納された前記間接参照テーブル内の記憶位置情報を対応付けた対応テーブルとを備えたことを特徴とする請求項７に記載の制御装置。
【請求項９】
前記対応テーブルの内容が変更された場合に、ネットワークに接続された他の制御装置に向けて前記対応テーブルの変更内容を送信する機能を備えたことを特徴とする請求項８に記載の制御装置。
【請求項１０】
他の制御装置からネットワークを介して受信した、前記他の制御装置に記憶された対応テーブルの変更内容を解釈し、自己の前記間接参照テーブルを更新する更新機能を備えたことを特徴とする請求項８または９に記載の制御装置。
【請求項１１】
自己の制御装置内で使用している論理名を他の制御装置に公開し、その他の制御装置にその論理名に対応するデータを提供する機能を備えたことを特徴とする請求項７乃至９のいずれか１項に記載の制御装置。
【請求項１２】
ネットワークに接続された他の制御装置で公開された論理名を利用し、公開されたその論理名に対応する提供されたデータを参照する機能を備えたことを特徴とする請求項７，８，１０，１１のいずれか１項に記載の制御装置。
【請求項１３】
前記対応テーブルの変更内容の通知を受信した際に、その通知が自己が利用する論理名についてのものであるか否かを判断し、自己が利用する論理名についての変更内容の通知のみ記憶保持する手段を有し、
前記更新機能は、前記記憶保持した変更内容に基づいて実行するように構成したことを特徴とする請求項１０に記載の制御装置。
【請求項１４】
自己が利用する論理名に関する情報の送信を要求するメッセージをネットワーク上に送信する手段と、
前記メッセージに応答して他の制御装置から送られてきた前記論理名に関する情報を受信するとともに、その受信した情報に基づいて、前記間接参照テーブルを作成する手段を備えたことを特徴とする請求項８に記載の制御装置。
【請求項１５】
接続されたプログラミング装置から受け取ったオンラインエディット要求を解釈し、その解釈に応じて対応テーブルの更新を行い、その更新に伴い前記間接参照テーブルを更新する機能を備えたことを特徴とする請求項８項乃至１４のいずれか１項に記載の制御装置。
【請求項１６】
前記間接参照テーブルを複数持ち、その複数の間接参照テーブルを適宜切り替えてそのうちの一つを使用状態にするように構成したことを特徴とする請求項１５に記載の制御装置。
【請求項１７】
複数のプロセッサが占有するローカルメモリを持ち、それらがバスで接続されているマルチプロセッサシステムにおいて、
前記各ローカルメモリ間のデータ交換を定期的に行うデータ転送処理部と、
それらのローカルメモリ内に格納されたデータをアクセスするために用いる間接参照テーブルと、
前記間接参照テーブルを介してデータをアクセスする機構を持つ制御実行部と、
論理名とローカルメモリアドレスの対応テーブルを管理し、その情報に基づき前記間接参照テーブルを変更する論理名調停部を備えたことを特徴とするマルチプロセッサシステム。
【請求項１８】
前記ノードは、複数のノード間で共有するデータの論理名をグループ化し、グループ名と更新情報を関連付けて保持するグループ管理情報を記憶保持し、
前記複数のノードに記憶保持された同一のグループ名に対する更新情報が不一致の場合に、前記関連情報に影響を与える時と判断し、前記関連情報の更新処理をするようにしたことを特徴とする請求項１に記載のネットワークシステム。
【請求項１９】
前記ネットワークに接続された複数の制御装置間で共有するデータの論理名をグループ化し、グループ名と更新情報とそのグループに対する所有権の有無情報を関連付けて保持するグループ管理情報を記憶保持し、
グループ名と更新情報が他の制御装置と不一致の場合に前記関連情報を更新し、一致する場合に前記関連情報の更新処理をしないことを特徴とする請求項請求項３または４に記載の制御方法。
【請求項２０】
前記ネットワークに接続された複数の制御装置間で共有するデータの論理名をグループ化し、グループ名と更新情報とそのグループに対する所有権の有無情報を関連付けて保持するグループ管理情報記憶手段を設け、
グループ名と更新情報が他の制御装置と不一致の時に、前記更新手段がそのグループに属するデータについての前記関連情報記憶部の前記関連情報を更新するための処理を実行するようにしたことを特徴とする請求項７または８に記載の制御装置。
【請求項２１】
前記所有権を有する制御装置であって、
同一のグループを持つ前記所有権のない他の制御装置に前記更新情報を送信する更新情報送信手段と、
前記他の制御装置から要求があったときのみ、そのグループに属するデータについての前記関連情報記憶部の前記関連情報を送信する関連情報送信手段を備えたことを特徴とする請求項２０に記載の制御装置。
【請求項２２】
前記所有権を有する制御装置であって、
同一のグループに属する共有するデータのうち、前記所有権を有する制御装置への入力変数となるデータについて、参照したか否かの参照情報を記憶する参照情報記憶手段を設け、
前記参照情報記憶手段に記憶された参照情報に基づき、何れの他の制御装置も未参照の場合にのみ、そのデータについて前記関連情報の更新処理をする機能を備えたことを特徴とする請求項２０または２１に記載の制御装置。
【請求項２３】
前記所有権のない制御装置であって、
同一のグループを持つ前記所有権の有る他の制御装置から送信されてくる前記更新情報を受信する受信手段と、
その受信手段で受信した前記更新情報と、自己が管理している更新情報とを照合し、異なる場合に前記所有権の有る他の制御装置に、そのグループに属するデータについての前記関連情報記憶部の前記関連情報の送信を要求する要求手段と、
その要求にともない送信されてきた前記関連情報に基づき、前記更新手段が自己が有する関連情報の更新をするようにしたことを特徴とする請求項２０に記載の制御装置。
【請求項２４】
同一のグループに属するデータを共有する各制御装置が、同一のデータを共有しているか否かを判断する判断手段と、
前記判断手段が、共有していないと判断した際に、前記同一のグループに属する共有するデータへのアクセスを禁止させる機能を備えたことを特徴とする請求項２０乃至２３の何れか１項に記載の制御装置。
【請求項２５】
更新停止命令操作手段を設け、
その更新停止命令操作手段から停止命令が発せられると、前記更新処理の実行を禁止する手段を設けたことを特徴とする請求項２０乃至２４の何れか１項に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステム及び制御方法並びに制御装置及びマルチプロセッサシステムに関するものである。より具体的には、複数のノード，制御装置，プロセッサ間でデータの共有を図るシステム（例えば、分散制御システム等）における当該データの共有化の処理の改良に関する。
【背景技術】
【０００２】
複数台のＰＬＣ等の制御装置をネットワークに接続し、それら複数の制御装置がデータを共有しながら協調・同期制御等を実行することがある。その場合、各制御装置がデータを共有するためには、それぞれのＩ／Ｏを物理的に繋ぐか、データを共有するためのユーザプログラムを用いることが有る。
【０００３】
また、各制御装置がデータを共有するための別の方式としては、データリンク方式と称されるものもある。このデータリンク方式は、複数の制御装置間で、サイクリックにデータを交換（リンク）する方式である。つまり、全てのノードが共通のテーブルを持ち、各制御機器は、そのテーブルを参照することによりデータの共有ができる。このとき、データへのアクセスは、メモリアドレス（物理アドレス）を指定して行うようにしている。さらに、そのテーブルは、制御装置以外の別のツールにより一括して設定する。この方式では、ユーザプログラム開発時に通信を意識しないで済むというメリットが有る。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記した従来方式では、以下に示す問題が有る。すなわち、前者のユーザプログラムを用いた方式では、制御装置（ＰＬＣ）を動作させるラダープログラム中に通信ロジックを埋め込む必要が有り、ユーザプログラム開発が複雑となり、さらには、メンテナンスも困難となる。
【０００５】
また、後者のデータリンク方式の場合には、データをリンクする際のメモリエリアの割り付け設定自体が困難となる。そして、ラダーで直接メモリアドレスをアクセスするようにユーザプログラムを組んでいる。従って、一旦メモリエリアの割り付けを設定した後に、そのメモリエリアの割り付けの変更が有ると、そのユーザプログラムの書き直しが必要となり煩雑となる。しかも、新たな制御装置をネットワークに追加する場合には、メモリエリアの再割り付け並びにそれに伴うユーザプログラムの変更が、ネットワークに既に接続されている制御装置に組み込まれた既存のユーザプログラムまで及び、システムの停止をしなければならないという問題があった。
【０００６】
本発明は、通信処理を意識することなく、共有するデータへのアクセスが容易に行え、係るアクセスするための開発並びにその後のシステム変更に応じた修正も容易に行え、システム稼動中に停止することなく新たなノード・制御装置等をネットワークに接続することができ、論理名・変数データの参照の照合を動的に解決することができることを目的としている。
【課題を解決するための手段】
【０００７】
この発明によるネットワークシステムでは、ネットワークに接続された複数のノード間で共有するデータの論理名を定義し、前記ノードの記憶部の所定の記憶領域に前記共有するデータを記憶保持し、前記論理名と、その論理名に対応するデータを格納した前記記憶部の記憶位置情報を関連付けた関連情報を関連情報記憶部に記憶保持させ、前記複数のノード間で、前記論理名，前記関連情報に基づいて前記共有するデータの送受を行い、通信相手のノードの状態が変化した場合、その変化が前記関連情報に影響を与える時に、前記ネットワークに接続されたノードの処理を停止することなく連動して前記関連情報を変更するようにした。
また、好ましくは、前記ノードは、複数のノード間で共有するデータの論理名をグループ化し、グループ名と更新情報を関連付けて保持するグループ管理情報を記憶保持し、前記複数のノードに記憶保持された同一のグループ名に対する更新情報が不一致の場合に、前記関連情報に影響を与える時と判断し、前記関連情報の更新処理をするように構成することである。
ノードの記憶部は、実施の形態では、「リンクメモリ」に相当する。記憶部の記憶位置情報は、実施の形態では、「アドレス，ポインタ」に相当する。ノードの処理は、実施の形態では、「ユーザプログラムの実行」に相当する。
ここで、通信相手のノードの状態が変化するとは、ネットワークに対する着脱や、再コンパイル等によりノードに記憶された情報が変化したり、物理的にネットワークに接続されていても、動作を停止・開始するなどの他、各種の状態の変化がある。つまり、ネットワークに新たに制御装置を追加した（プラグイン）場合などももちろん含む。
また、本発明に係る制御方法は、ネットワークに接続された複数の制御装置間でデータを共有することのできる制御装置における制御方法である。そして、前記制御装置に実装されたユーザプログラムが、記憶部に格納されたデータをアクセスするに際し、前記データが格納された記憶位置情報と、そのデータに付けた論理名を関連付けた関連情報を記憶保持し、前記ユーザプログラムは、論理名に基づく前記関連情報を取得し、前記記憶部へアクセスするようにした。
そして、上記方法を実現するために適した制御装置としては、ネットワークに接続された複数の制御装置間でデータを共有することのできる制御装置であって、他の制御装置との間で、データ交換をする通信部と、前記ネットワークを介して共有するデータを格納する記憶部と、前記共有するデータは論理名で定義し、その論理名と、その論理名に対応するデータを格納した前記記憶部の記憶位置情報を関連付けた関連情報を格納する関連情報記憶部と、前記論理名に基づいて前記関連情報記憶部にアクセスし、その論理名に対応する前記位置情報を取得するとともに対応するデータが記憶される前記記憶部の記憶領域にアクセスする機能を有する制御実行部と、前記記憶部内の記憶位置情報の変更に基づき、前記関連情報記憶部の前記関連情報を更新する更新手段を備えて構成した。
ここで、共有するデータを格納する記憶部は、実施の形態では、「リンクメモリ１５」に相当する。記憶部の記憶位置情報は、実施の形態では、「アドレス，ポインタ」等に相当する。関連情報記憶部は、実施の形態では、「間接参照テーブル１６と変数データベース１７」により実現している。記憶部内の記憶位置情報の変更は、追加・削除等を含む広い概念である。更新手段は、実施の形態では、「論理名調停部１９」に相当する。
そして、好ましくは前記関連情報記憶部は、記憶部に格納されたデータをアクセスするために用いる記憶位置情報が格納された間接参照テーブルと、論理名と、その論理名についての記憶位置情報が格納された前記間接参照テーブル内の記憶位置情報を対応付けた対応テーブルとを備えて構成することである。もちろん、係る構成は無くても良い。そして、記憶位置情報を対応付けた対応テーブルは、実施の形態では、「変数データベース」に相当する。
さらに、上記したグループ単位での更新処理をするネットワークシステムを構築するための好ましい制御装置としては、上記した各制御装置の発明を前提とし、前記ネットワークに接続された複数の制御装置間で共有するデータの論理名をグループ化し、グループ名と更新情報とそのグループに対する所有権の有無情報を関連付けて保持するグループ管理情報記憶手段を設け、グループ名と更新情報が他の制御装置と不一致の時に、前記更新手段がそのグループに属するデータについての前記関連情報記憶部の前記関連情報を更新するための処理を実行する機能を設けることである。
【０００８】
所有権有無情報は、実施の形態では、サーバ・クライアント属性に対応し、所有権が有る場合にサーバ属性となり、所有権がない場合はクライアント属性になる。また、更新情報は、グループの内容を変更・修正する都度付されるもので、同一のグループ名を持つ複数のグループが存在する場合に、それぞれの更新情報が同じ場合には、グループの内容は同じであることを保証する情報である。実施の形態では、ＩＤやバージョンに対応する。
【０００９】
さらに、前記所有権を有する制御装置であって、同一のグループを持つ前記所有権のない他の制御装置に前記更新情報を送信する更新情報送信手段と、前記他の制御装置から要求があったときのみ、そのグループに属するデータについての前記関連情報記憶部の前記関連情報を送信する関連情報送信手段を備えて構成するとよい。
【００１０】
また、前記所有権を有する制御装置であって、同一のグループに属する共有するデータのうち、前記所有権を有する制御装置への入力変数となるデータについて、参照したか否かの参照情報を記憶する参照情報記憶手段を設け、前記参照情報記憶手段に記憶された参照情報に基づき、何れの他の制御装置も未参照の場合にのみ、そのデータについて前記関連情報の更新処理をする機能を備えて構成しても良い。参照情報記憶手段は、実施の形態では、参照カウンタに対応する。そして、記憶する参照情報としては、参照回数に対応する数値でもよいし、参照したか否かを識別する「１／０」としても良い。この発明は、図５４に示すフローチャートを実行する実施の形態により実現されている。
【００１１】
また、前記所有権のない制御装置であって、同一のグループを持つ前記所有権の有る他の制御装置から送信されてくる前記更新情報を受信する受信手段と、その受信手段で受信した前記更新情報と、自己が管理している更新情報とを照合し、異なる場合に前記所有権の有る他の制御装置に、そのグループに属するデータについての前記関連情報記憶部の前記関連情報の送信を要求する要求手段と、その要求にともない送信されてきた前記関連情報に基づき、前記更新手段が自己が有する関連情報の更新をするようにしてもよい。
【００１２】
さらにまた、同一のグループに属するデータを共有する各制御装置が、同一のデータを共有しているか否かを判断する判断手段と、前記判断手段が、共有していないと判断した際に、前記同一のグループに属する共有するデータへのアクセスを禁止させる機能を備えて構成することもできる。これは、図５５に示すフローチャートを実行する実施の形態により実現されている。判断手段は、例えば、論理名，名前やデータ型が一致するか否かにより判断する。つまり、グループに含まれる共有するデータのうち一つでも名前，データ型などが一致しなかった場合は、グループ認証が失敗したと判断し、そのデータの使用を禁止する。アクセスを禁止させる手法としては、例えば、そのデータを呼び出すためのアドレスを無効にしたり、特定のアドレスに書き替えることにより実現できる。
【００１３】
さらにまた、更新停止命令操作手段を設け、その更新停止命令操作手段から停止命令が発せられると、前記更新処理の実行を禁止する手段を設けるとよい。更新停止命令操作手段は、実施の形態では、「名前解決のロックスイッチ」に相当する。この発明は、図５６に示すフローチャートを実行する実施の形態により実現される。更新処理が不要であることがわかっている場合に、係る更新停止命令操作手段を操作して停止命令を出力させることにより、更新処理が必要か否かの判断をする処理も行わずに、実際のプログラムの実行に移行できる。よって、より迅速な立ち上げが行える。
【００１４】
上記した各発明では、制御装置（ノード）が稼動するための制御実行部は、記憶部に格納されたデータをアクセスする場合、論理名に基づいて関連情報を取得することによりアクセスすることが可能となる。従って、制御実行部自体はその具体的なデータの記憶位置情報を知る必要はないので、たとえデータが格納された記憶位置が変更されたとしても、関連情報を修正するだけで対応でき、制御実行部側のユーザプログラム等は修正する必要がない。
【００１５】
また、ノード間（制御装置間）でのデータの送受も、論理名に基づいてデータの統一を図り、関連情報に基づき、各ノード・制御装置の記憶部のどの記憶領域に格納されたデータが必要とするデータかを簡単に知ることができ、データ転送も容易に行える。
【００１６】
さらに、グループ化してグループ単位で管理した場合には、同一のグループ名の更新情報が一致する場合には、各制御装置（ノード）が持つそのグループについての共有データに関する関連情報は一致しているとみなせる。従って、仮に新たにネットワークに追加したり、再コンパイル，オンラインエディットなどにより対応テーブル（変数データベース）の変更があった場合であっても、すでに各制御装置が同一の共有するデータを保有しているので、関連情報の更新処理を行う必要がなく、迅速に実際の制御装置の動作に移行できる。
【００１７】
また、本発明に係る制御方法では、前記関連情報は、記憶部に格納されたデータをアクセスするために用いる記憶位置情報が格納された間接参照テーブルと、論理名と、その論理名についての記憶位置情報が格納された前記間接参照テーブル内の記憶位置情報を対応付けた対応テーブル（変数データベース）とに分けて記憶保持され、前記対応テーブルの内容が変更された場合に、ネットワークに接続された他の制御装置に前記対応テーブルの変更内容を通知する処理を行うようにするとよい。
【００１８】
ここで、対応テーブルの内容が変更される場合は、既存の論理名についての内容が変更される場合はもちろんのこと、すでに存在していた論理名についての内容が消去される場合や、逆に例えば、プラグインなどにより新規追加された場合など、各種の態様がある（以下、同じ）。
【００１９】
係る方法を実施するために適した制御装置としては、例えば前記対応テーブルの内容が変更された場合に、ネットワークに接続された他の制御装置に向けて前記対応テーブルの変更内容を送信する機能を備えることである。
【００２０】
なお、対応テーブルの変更内容を送信するとは、対応テーブルのある論理名についてのデータそのものをそのまま送信する場合はもちろんのこと、そのうちの一部のデータを送信する場合も含む。さらには、間接参照テーブルの情報など他の情報も併せて送ることもかまわない。つまり、要は、テーブル内容が変更された論理名に関する所定の情報が送られればよい。これは、他の発明においても同様である。
また、本発明に係る別の制御方法では、前記関連情報は、記憶部に格納されたデータをアクセスするために用いる記憶位置情報が格納された間接参照テーブルと、論理名と、その論理名についての記憶位置情報が格納された前記間接参照テーブル内の記憶位置情報を対応付けた対応テーブルとに分けて記憶保持され、変更内容の通知を受けた制御装置は、その変更内容を解釈し、前記間接参照テーブルを更新する処理を行うことである。
係る方法を実施するために適した制御装置としては、例えば、他の制御装置からネットワークを介してその他の制御装置に記憶された対応テーブルの変更内容の通知を受信した際に、その変更内容を解釈し、自己の前記間接参照テーブルを更新する機能を備えることである。
係る構成にすることにより、新たに制御装置をネットワークに追加したり、再コンパイル，オンラインエディットなどにより対応テーブル（変数データベース）の変更があった場合に、スムーズにその変更が他の制御装置に送られる。また、その変更を受け取った制御装置側では、その変更内容に応じて関連情報等を更新することができる。よって、稼動中のシステムを停止することなく、データ修正が行え、また、個別に追加できるので、システム全体を一斉に更新する必要がなく、複数人によるインクリメンタル開発ができる。よって、開発環境が良好で、開発・デバッグ・システム修正などの期間を短縮することができる。
さらに、前記ネットワークに接続された複数の制御装置間で共有するデータの論理名をグループ化し、グループ名と更新情報とそのグループに対する所有権の有無情報を関連付けて保持するグループ管理情報を記憶保持し、グループ名と更新情報が他の制御装置と不一致の時に、前記関連情報を更新し、一致する場合には更新処理をしないようにすると良い。
このようにすると、仮に制御装置を新たにネットワークに追加したり、再コンパイル，オンラインエディットなどにより対応テーブル（変数データベース）の変更があった場合であっても、すでに各制御装置が同一の共有するデータを保有しているような場合には、グループ名と更新情報が一致するので、再度関連情報の更新処理を行う必要がなく、迅速に実際の制御装置の動作に移行できる。
さらに、受信した変更内容は、例えば一旦全てを自己の制御装置内に取り込んで記憶保持しても良いし、記憶容量を削減するためには、以下のように構成すると良い。もちろん、他の形態も採り得る。前記関連情報は、記憶部に格納されたデータをアクセスするために用いる記憶位置情報が格納された間接参照テーブルと、論理名と、その論理名についての記憶位置情報が格納された前記間接参照テーブル内の記憶位置情報を対応付けた対応テーブルとに分けて記憶保持され、請求項３に記載の変更内容の通知を受けた制御装置は、その受信の際にその変更内容に対応する論理名のデータが自己に必要か否かを判断し、必要なもののみ記憶保持し、次いで、その記憶保持した前記変更内容を解釈し、前記間接参照テーブルを更新する処理を行うようにすることである。
そして、係る方法を実施するのに適した装置としては、対応テーブルの変更内容の通知を受信した際に、その通知が自己が利用する論理名についてのものであるか否かを判断し、自己が利用する論理名についての変更内容の通知のみ記憶保持する手段を有し、前記更新機能は、前記記憶保持した変更内容に基づいて実行するように構成することである。このようにすると、自己に不要な情報は記憶保持しないので、必要な情報のみ記憶するための記憶容量を少なくすることができる。
また、前記関連情報は、記憶部に格納されたデータをアクセスするために用いる記憶位置情報が格納された間接参照テーブルと、論理名と、その論理名についての記憶位置情報が格納された前記間接参照テーブル内の記憶位置情報を対応付けた対応テーブルとに分けて記憶保持され、自己が利用する論理名に関する情報の送信を要求するメッセージをネットワーク上に送信し、前記メッセージに応答して他の制御装置から送られてきた前記論理名に関する情報を受信し、前記受信した情報に基づいて、前記間接参照テーブルを作成する処理を行うようにしてもよい。
そして、その発明を実施するのに適した装置としては、例えば、自己が利用する論理名に関する情報の送信を要求するメッセージをネットワーク上に送信する手段と、前記メッセージに応答して他の制御装置から送られてきた前記論理名に関する情報を受信するとともに、その受信した情報に基づいて、前記間接参照テーブルを作成する手段を備えるように構成するとよい。このようにすると、不要な情報の送受信が行われないので、トラフィックが良好となる。
さらに本発明に係る制御装置では、自己の制御装置内で使用している論理名を他の制御装置に公開し、その他の制御装置にその論理名に対応するデータを提供する機能を備えて構成することができる。つまり、論理名に対するデータを出力するのみの制御装置も可能となる。
また、逆にネットワークに接続された他の制御装置で公開された論理名を利用し、公開されたその論理名に対応する提供されたデータを参照する機能を備えて構成することもできる。つまり、論理名に対するデータを入力するのみの制御装置も可能となる。そして、自己の制御装置内で使用している論理名を他の制御装置に公開し、その他の制御装置にその論理名に対応するデータを提供する機能を備えた制御装置に従属する場合には、データを入出力する通常の機能を備えた装置となる。
さらにまた、接続されたプログラミング装置から受け取ったオンラインエディット要求を解釈し、その解釈に応じて対応テーブルの更新を行い、その更新に伴い前記間接参照テーブルを更新する機能を備えるように構成することができる。係る構成をすることにより、ネットワークに接続された稼動中の制御装置であっても、システムを停止することなくデータ更新ができる。
上記オンラインエディットをする場合において、前記間接参照テーブルを複数持ち、その複数の間接参照テーブルを適宜切り替えてそのうちの一つを使用状態にするように構成するとなおよい。
このようにすると、例えばオンラインエディットで修正した内容は、不使用中の間接参照テーブルに書き込み、その後、例えば、間接参照テーブルを参照していないときなどの所定のタイミングで新たに書き込んで更新された間接参照テーブルを使用状態に切り替えることにより、ユーザプログラム等が稼動中でも間接参照テーブルの書き替えが可能となり、停止している時間をできるだけ短くすることができる。
また、本発明に係るマルチプロセッサシステムでは、複数のプロセッサが占有するローカルメモリを持ち、それらがバスで接続されているマルチプロセッサシステムにおいて、前記各ローカルメモリ間のデータ交換を定期的に行うデータ転送処理部と、それらのローカルメモリ内に格納されたデータをアクセスするために用いる間接参照テーブルと、前記間接参照テーブルを介してデータをアクセスする機構を持つ制御実行部と、論理名とローカルメモリアドレスの対応テーブルを管理し、その情報に基づき前記間接参照テーブルを変更する論理名調停部を備えて構成することができる。複数のプロセッサは、実施の形態では、「ＭＰＵ」に相当する。
すなわち、上記した各発明は、ネットワークに接続された制御装置やノードについてデータ共有をする場合の発明であるが、論理名で共有するデータを定義し、論理名でアクセスする側は、具体的なデータの記憶位置を意識することなく動作することができる。そして、この複数のプロセッサを備えた発明においても、複数のプロセッサでデータ転送し共有する場合に、そのデータを論理名で定義することにより具体的なデータの記憶位置を意識することなく動作することができる。係る点で共通し、その作用効果も上記した各発明のものが得られる。さらに、この複数のプロセッサを備えた発明については、従属項は記載していないが、制御装置，制御方法と同様の従属項の機能を構成することができる。
【００２１】
この発明の以上説明した構成要素は可能な限り組み合わせることができる。この発明による制御装置を構成する各手段，機能を専用のハードウェア回路によって実現することができるし、プログラムされたコンピュータによって実現することもできる。この発明による制御方法は、コンピュータを動作させるソフトウェア（プログラム）によっても、専用のハードウェア回路によっても実現できる。
【発明を実施するための最良の形態】
【００２２】
本発明をより詳細に説明するにあたり、添付の図面に従ってこれを説明する。図１は、本発明に係る制御装置の好適な一実施の形態を示している。同図に示すように、制御装置は、制御部１１と通信部１２を備えている。制御部１１は、ラダーシステムを実行し、制御装置、つまりＰＬＣ１本来の制御を行う。通信部１２は、ネットワークに接続され、他の制御装置と通信する機能を持つ。具体的には、ネットワーク接続し、所定の通信プロトコルによりデータの送受（本発明との関係で言えば、共通のデータ交換）を行う通信コントローラ１２ａと、その通信コントローラ１２ａで通信制御する際のプロトコル変換をする際にデータを一時記憶したり、プロトコル変換したり、送受信先を特定する際の情報（データベース）を記憶保持するＲＡＭ１２ｂを有している。
【００２３】
一方、制御部１１は、接続された機器への制御プログラムや、ネットワーク接続された別のＰＬＣと協調動作する際の制御プログラムなどを格納したＲＯＭ１１ａと、そのＲＯＭ１１ａに格納されたプログラムを実行するＭＰＵ１１ｂ及びＭＰＵ１１ｂにて各種処理を実行する際に必要なデータ（管理データ）を記憶するＲＡＭ１１ｃを有している。このハードウェア構成自体は基本的に従来と同様である。
【００２４】
ここで本発明では、図２に概念図で示すように、それぞれのデータを論理名（ネットワークグローバル変数）で定義し、各制御装置（ＰＬＣ）１に組み込まれたユーザプログラム（オブジェクトコード）は、論理名を指定して共有するデータを取得するようにしている。これにより、各ＰＬＣ１は対応するデータが記憶された物理アドレスを意識することなく、データの共有ができ、しかも物理アドレスを意識しないので、一旦登録後、共有するデータを記憶する物理アドレスを自由に変更することができる。
【００２５】
この概念の一例を示すと、図２のように、あるＰＬＣ１（１）で、Ｓｗｉｔｃｈが定義（図示の場合、変数名：値が「Ｓｗｉｔｃｈ１」として定義）されているとする。すると、別の制御装置（ＰＬＣ１（３））が、制御装置（ＰＬＣ１（１））のＳｗｉｔｃｈ１のデータがほしい場合には、制御装置（ＰＬＣ１（３））のユーザプログラムは、変数名である「Ｓｗｉｔｃｈ１」を指定するとともに、そのデータを取得する命令を実行することにより、Ｓｗｉｔｃｈ１に関連付けられた具体的なデータを取得することができる。換言すると、同一内容のデータは、同一の論理名で定義され、ネットワーク上はその論理名が唯一存在することになる。つまり、異なるデータに対しては別の論理名が付される。
【００２６】
そして、データ内容に変更があった場合には、所定のＰＬＣがその内容を書き替えることで、そのデータを共有する他のＰＬＣに記憶された内容も書き替えられることになる。
【００２７】
次に、上記した機能を実現するための具体的な構成について説明する。図３に示すように、ＲＡＭ１１ｃの内部にネットワークを介して論理的に共有するデータ（変数データ）を格納するためのリンクメモリ１５と、このリンクメモリ１５に格納された各変数データを参照するために用いる間接参照テーブル１６と、論理名とメモリアドレス（間接参照テーブル１６のアドレス）とを関連付けた変数データベース１７を有している。なお、各部の詳細な説明は後述する。
【００２８】
一方、ＭＰＵ１１ｂには、間接参照テーブル１６を介してリンクメモリ１５にアクセスする機能を備えたＰＬＣ１の制御動作を実行するための制御実行部１８と、変数データベース１７を管理し、その変数データベース１７に格納された情報に基づき間接参照テーブル１６を変更する論理名調停部１９を備えている。
【００２９】
次に各部について説明する。まず、リンクメモリ１５は、上記したようにネットワークを介して論理的に共有しているデータを格納するためのメモリであり、そのデータ構造は例えば図４に示すようになっている。すなわち、同一の論理名は、ネットワーク上で唯一存在し、それを各制御装置（ＰＬＣ）で共有するため、ある論理名についてのデータに対する更新等の処理は、ネットワーク上のある１つの制御装置が実行する権限を有し、他の制御装置はその１つの制御装置から送られるデータを取得することになる。つまり、ある論理名についてのデータについては、上記１つの制御装置がそのデータに付いて更新等する機能と、それを他の制御装置に与える機能を持つ。
【００３０】
従って、図示するように、上記の自分が更新等の機能を持つ論理名（公開している論理名）についてのデータを格納する自ノードエリアと、他の制御装置に元となるデータが格納された論理名についてのそのデータのコピーを格納する他ノードエリアが有る。本形態では、データの転送効率を向上させるためにリンクメモリ１５をノードごとに分割したが、これに限る必要はない。
【００３１】
さらに、共有する同一の論理名（変数名）のデータ（変数データ）を記憶するエリア内のオフセット値は、各ノードで共通にしている。つまり、ある論理名Ｘについての変数データｘがノード（１）の自ノードエリアのオフセット値Ｎから所定サイズ分だけ格納されている場合（後述する間接参照テーブルの該当するポインタはＮとなっている）、別のノードにおいては他ノードエリアの所定位置に格納されることになる。そして、この格納位置はノード（１）用の他ノードエリアのオフセット値Ｎから所定サイズ分のエリアに格納されることになる。つまり、自己が必要とする他ノードで公開された変数データを、自己の他ノードエリアに格納する場合、その公開している他ノードにおける自ノードエリアの先頭からのオフセット値と同一のオフセット値に格納することになる。このように、各ノードエリアでのオフセット値を公開側と利用側で一致させることにより、データ共通化を維持するための各種処理を容易に行えるようにしている。
【００３２】
なお、実際のデータの送受に関しては、上記の与える機能を持つ制御装置が出力しても良いし、他の制御装置が元となるデータを持つ制御装置に対してデータを読みに行き、取得しても良い。
【００３３】
また、変数データベース１７のデータ構造は、図５に示すように、「論理名」と、「タイプ」と「サイズ」と「入出力属性」並びに「メモリアドレス」を関連付けたテーブルとなっている。ここで「サイズ」はその論理名に関する情報のデータサイズであり、「入出力属性」は、論理名で特定されるデータの送受方向を特定するものである。
【００３４】
つまり、入出力属性が「出力」のものは、そのノード（ＰＬＣ）に格納された論理名に関する情報を他のノードに向けて出力することを意味する。そして、その入出力属性が出力となっている論理名についてのデータが、リンクメモリ１５の自ノードエリアの所定領域に格納される。
【００３５】
また、入出力属性が「入力」のものは、そのノードで使用等する論理名に関する情報が、他のノードから送られてきたものを取得することを意味する。そして、その入出力属性が入力となっている論理名についてのデータが、リンクメモリ１５の他ノードエリアの所定領域に格納される。
【００３６】
「メモリアドレス」は、その論理名についての実際のデータが格納されているリンクメモリ１５の位置を特定するポインタが記憶される間接参照テーブル内のアドレス情報を記憶するものである。そして、本形態では、間接参照テーブル１６のオフセットを用いている。従って、この変数データベース１７に格納されたメモリアドレスを参照して間接参照テーブル１６にアクセスするためには、その間接参照テーブル１６のベースアドレスに上記オフセットを加えた値となる。
【００３７】
また、本形態では、間接参照テーブル１６に格納されて特定させるリンクメモリ１５のアドレス（ポインタ）が４バイトで表現されることを想定しているので、この変数データベース１７のメモリアドレスには、４の倍数の値が格納される。
【００３８】
そして、図示の例では、論理名が「Ｓｗｉｔｃｈ１」のメモリアドレスは「００００」となっているので、図６に示す間接参照テーブル１６の先頭（１番目）の記憶領域に格納されたポインタで示すリンクメモリ１５内のデータが、その「Ｓｗｉｔｃｈ１」についてのデータとなる。同様に、論理名が「Ｍｏｔｏｒ１」のメモリアドレスは「０００４」となっているので、図６に示す間接参照テーブル１６の２番目の記憶領域に格納されたポインタで示すリンクメモリ１５内のデータが、その「Ｍｏｔｏｒ１」についてのデータとなる。
【００３９】
また、間接参照テーブル１６のデータ構造は、図６に示すように、各論理名についてのデータ格納されたリンクメモリ１５内のポインタを記憶している。そして、本形態では、リンクメモリ１５内の記憶エリアを特定するポインタは、４バイトで特定されており、上位３バイトでワード位置を特定し、下位１バイトでそのワード位置内で目的とするデータが記憶されているビット位置を特定するようにしている。
【００４０】
そして、これら格納された各ポインタが、どの論理名についてのポインタかは、上記したように変数データベース１７に格納された論理名とメモリアドレスの相関により特定されている。換言すると、間接参照テーブル１６の先頭からｎ番目のポインタは、予め所定の論理名についてのポインタであることが登録されており、それは変数データベース１７の記憶内容（メモリアドレス）を変えない以上不変となる。
【００４１】
つまり、仮にある論理名についてのデータの記憶エリアを変更した場合、対応する間接参照テーブル１６のその論理名についてのポインタを記憶したエリアに格納されたポインタを新しいものに更新することにより対応する。この場合でも変数データベース１７の記憶内容は変更しないで済む。従って、制御装置が実際の制御を行うプログラムは、データ共有する論理名に付いて情報を知る必要ができた場合に、まず変数データベース１７に格納されたメモリアドレスにしたがって間接参照テーブル１６をアクセスしてポインタを取得する。次いでそのポインタで指し示されたデータを取得することになる。これにより、具体的な記憶エリアの変動の有無に関わらず、上記プログラムはデータを取得し、正しく動作することができる。
【００４２】
さらに本形態では、ＲＡＭ１１ｃ内に、上記した間接参照テーブル１６の記憶内容や、実際の論理名に対応したデータの送受を行い、データの共有化をスムーズかつ確実に行うため、Ｅｘｐｏｒｔ変数リスト２０，Ｉｍｐｏｒｔ変数リスト２１並びにＲｅｍｏｔｅ変数リスト２２を持たせるようにしている。これら各変数リスト２０〜２２は、変数データベース１７に格納された情報に基づいて作成されるもので、具体的には以下のようになっている。
【００４３】
まず、Ｅｘｐｏｒｔ変数リスト２０は、自ノードから出力するネットワークグローバル変数のリストである。そして、そのデータ構造は、図７に示すように、変数名（論理名）、変数のタイプ及びサイズ（バイト数）、並びにその変数のデータが格納されたリンクメモリ１５内の自ノードエリア（図４参照）のオフセットからなるテーブル（以下、「Ｅｘｐｏｒｔ変換情報テーブル」と称する）からなっている。
【００４４】
係るテーブルは、図５に示す変数データベース５の入出力属性の欄が「出力」のものを抽出し、さらに、メモリアドレスの欄から間接参照テーブル（図６）をアクセスして自ノードエリアのオフセット（自己が管理する論理名についてのデータを格納する領域）を取得することにより、図７に示すようなリストが作成できる。
【００４５】
一方、Ｉｍｐｏｒｔ変数リスト２１は、他ノードから入力するネットワークグローバル変数のリストであり、そのデータ構造は、図８に示すように、変数名（論理名）、変数のタイプ及びサイズ（バイト数）、その変数のデータが格納されたリンクメモリ１５内の他ノードエリア（図４参照）のオフセットに加え、さらに、その変数が有効か無効かを示すフラグを備えたテーブル（以下、「Ｉｍｐｏｒｔ変換情報テーブル」と称する）からなっている。
【００４６】
係るテーブルは、図５に示す変数データベース５の入出力属性の欄が「入力」のものを抽出し、さらに、メモリアドレスの欄から間接参照テーブル（図６）をアクセスして、リンクメモリ１５内の他ノードエリアのオフセット（他ノードから送られてきたデータを格納する領域）を取得することにより、図８に示すようなリストが作成できる。
【００４７】
さらに、Ｒｅｍｏｔｅ変数リスト２２は、受信した他ノード変数リストをノード別に分類して格納するものである。そのデータ構造は、図９に示すように、ノード番号とＥｘｐｏｒｔ変数リストの先頭ポインタを格納したテーブル（以下、「Ｒｅｍｏｔｅ変換情報テーブル」と称する）からなる。
【００４８】
上記した各テーブル情報は、プログラミング装置（ツール）を用いて行われる。すなわち、図１０に示すように、各制御装置１がＬＡＮ２にネットワーク接続されて、すでにシステムが稼動しているとする。係る場合に、新たに制御装置（Ｘ）１′をネットワークに追加するに先立ち、制御装置（Ｘ）１′にプログラミング装置３を接続し、所定のデータ・情報をそのプログラミング装置３から制御装置（Ｘ）１′にダウンロードする。
【００４９】
具体的には、図１１に示すように、まずプログラミング装置３を用い、ユーザがラダーや高級言語などでソースプログラム３ａを作成する。このとき、複数の制御装置（１），（２），（３），…（Ｘ）で共有するデータは、各制御装置間で同じ論理名として定義するとともに、ネットワーク共有の属性をつけるようにする。
【００５０】
そして、プログラミング装置３のコンパイル機能３ｂを実行し、上記のようにして作成したソースプログラム３ａをコンパイルし、制御装置が本来の制御を実行するためのオブジェクトコード３ｃと、同一論理名のデータ共有をするために必要な変数データベース（図５参照）３ｄを生成する。
【００５１】
次いで、プログラミング装置３は、生成したオブジェクトコード３ｃと変数データベース３ｄを制御装置（Ｘ）１′にダウンロードする。そして、このダウンロードされたオブジェクトコードと変数データベースは、制御装置（Ｘ）１′の不揮発性メモリに格納される。
【００５２】
なお、上記したプログラミング装置は、図示の例では制御装置（Ｘ）１′に接続し、それに対してダウンロードする例を示したが、すでにネットワークに接続された各制御装置（１），（２），……に対しても、ネットワークに接続する前（際）に、プログラミング装置を接続し、所定のデータ・情報をダウンロードすることになる。
【００５３】
次に、論理名調停部１９について説明する。論理名調停部１９は、上記のようにダウンロードされた変数データベース１７に格納された情報に基づき、Ｅｘｐｏｒｔ変数リスト２０とＩｍｐｏｒｔ変数リスト２１を生成する機能を有する。具体的な生成処理は、上記したＥｘｐｏｒｔ変数リスト２０とＩｍｐｏｒｔ変数リスト２１の説明で記載した通りである。
【００５４】
すなわち、Ｅｘｐｏｒｔ変数リスト２０の作成は、図１２に示すフローチャートに示すように、オフセット値を０におき（ＳＴ１）、変数データベース１７をアクセスして入出力属性が出力になっている出力変数、つまり自ノードが他ノードに対して公開するネットワークグローバル変数を検索する（ＳＴ２）。
【００５５】
そして、検索される都度、その変数についてのＥｘｐｏｒｔ変換情報テーブルを格納するＥｘｐｏｒｔ変換テーブルを確保する（ＳＴ３，ＳＴ４）。そして、その確保したテーブル内に、変換データベース１７内に格納されている変数名，タイプ，サイズ情報を複写する（ＳＴ５）。
【００５６】
次いで、その変数のデータ（変数データ）を格納する自ノードエリアのオフセット情報を取得し、ステップ５，ステップ６で得られた情報を、Ｅｘｐｏｒｔ変数リストに追加する（ＳＴ７）。よって、１番目は、オフセットが０つまり自ノードエリアの先頭から登録することになる。
【００５７】
その後、現在のオフセット値に、変数サイズを加算して新たなオフセット値を求め（ＳＴ８）、ステップ２に戻る。以後、全ての出力変数を検索するまで上記処理を繰り返し実行する。これにより、自ノードエリアの先頭から各変数データを格納する領域が、空くことなく順番に確保される。
【００５８】
一方、Ｉｍｐｏｒｔリスト２１の作成は、図１３に示すフローチャートを実行する。すなわち、変数データベース１７より、入出力属性が入力になっている入力変数、つまり、自ノードで利用する他ノードのネットワークグローバル変数を検索する（ＳＴ１１）。
【００５９】
そして、検索される都度、その変数についてのＩｍｐｏｒｔ変換情報テーブルを格納するＩｍｐｏｒｔ変換テーブルを確保する（ＳＴ１２，ＳＴ１３）。そして、その確保したテーブル内に、変換データベース１７内に格納されている変数名，タイプ，サイズ情報を複写する（ＳＴ１４）。さらに、無効フラグをセットし（ＳＴ１５）、ステップ１４，ステップ１５で得られた情報を、Ｉｍｐｏｒｔ変数リストに追加する（ＳＴ１６）。その後、ステップ１１に戻る。以後、全ての入力変数を検索するまで上記処理を繰り返し実行する。
【００６０】
さらに、論理名調停部１９は、上記した両変換テーブルの作成機能に加え、以下に示す変換テーブルの更新その他の機能も有する。すなわち、制御装置１を既存の稼動中のネットワークに接続した場合、論理名調停部１９は、自己が保有するＥｘｐｏｒｔ変数リスト２０を、一斉同報し、他の制御装置との間でネットワークグローバル変数の情報を交換する。
【００６１】
すなわち、Ｅｘｐｏｒｔ変数リストを送信する側の論理名調停部１９は、図１４に示すように、まず、Ｅｘｐｏｒｔ変数リストを一斉同報により送信する（ＳＴ２１）。後述するように、この一斉同報を受けた受信側の他の制御装置（ノード）は応答信号を送信してくるので、その応答信号があったか否かを判断する（ＳＴ２２）。そして、応答信号があった場合には、その応答信号を発行した応答局を記録する（ＳＴ２３）。
【００６２】
タイムアウトするまで応答信号の受信の有無をチェックし（ＳＴ２４）、タイムアウトしたならばテーブル更新を完了する（ＳＴ２５）。これにより、Ｅｘｐｏｒｔ変数リストを送信したノードは、誰がＥｘｐｏｒｔ変数リストを受け取り、誰が受け取っていないかを判断できる。
【００６３】
なお、このＥｘｐｏｒｔ変数リストの送信タイミングとしては、上記したように新たにネットワークに追加・接続する時の他に、ユーザプログラム修正やコンパイル実行などによって変数データベース１７の記憶内容が変更された場合や、後述するオンラインエディットによって実行中の制御装置の変数データベース１７の記憶内容が変更された場合などにも行われる。そして、変更される都度、バージョンを更新していき、Ｅｘｐｏｒｔ変数リストを送信（一斉同報）する場合には、そのバージョン情報も併せて送るようにする。従って、受信側のノードは、Ｅｘｐｏｒｔ変数リストをはじめて受信する場合と、すでに受信している場合がある。なお、本発明では、このバージョン情報は必ずしも設けなくても良い。また、バージョン情報を用いたテーブルの同期方式については後述する。
【００６４】
一方、上記Ｅｘｐｏｒｔ変数リストを受信した既存の他のノード（制御装置）側は、図１５に示すフローチャートを実施する機能を有する。すなわち、Ｅｘｐｏｒｔ変数リストを受信したか否かを判断し（ＳＴ３１）、受信した場合には、Ｅｘｐｏｒｔ変数リストのバージョンが、以前に受信して記憶しているものと一致するか否かを判断する（ＳＴ３２）。
【００６５】
そして、一致していない場合には、Ｅｘｐｏｒｔ変数リストが更新されていると判断し、記憶しているテーブル（受信側のノードにとってのＩｍｐｏｒｔ変数リスト等）を更新する（ＳＴ３３）。なお、初めてＥｘｐｏｒｔ変数リストを受信する場合も、バージョンが不一致と判断し、テーブル更新をする。
【００６６】
そして、ステップ３３のテーブル更新後、並びにステップ３２の分岐判断でバージョンが一致している場合（更新不要）は、応答信号をＥｘｐｏｒｔ変数リストの送信元のノードに向けて送信し、処理を終了する（ＳＴ３４）。
【００６７】
さらに論理名調停部１９は、受信したＥｘｐｏｒｔ変数リストに基づいて、Ｒｅｍｏｔｅ変数リストを作成する機能を有する。すなわち、図１５に示す受信側の処理において、他ノードから送信されてきたＥｘｐｏｒｔ変数リストを受信したならば、それをＲｅｍｏｔｅ変数リストとしてノード別に管理する。つまり、受信したノードが必要とする変数データであるか否かに関係なく、全てのＥｘｐｏｒｔ変数リストに関する情報を一旦制御装置内に取り込み、記憶保持する。このリストは、不揮発性メモリに保持される。具体的には、図１６に示すように、ノード１から送られてきたＥｘｐｏｒｔ変数リストは、ノード１のテーブルエリアに格納される。
【００６８】
そして、論理名調停部１９は、上記のようにして得られたＲｅｍｏｔｅ変数リスト２２とＩｍｐｏｒｔ変数リスト２１に基づき、間接参照テーブル１６を作成・更新する。概念的に説明すると、Ｉｍｐｏｒｔ変数リスト２１に格納された自ノードで使用する変数名（論理名）をキーとして、Ｒｅｍｏｔｅ変数リスト２２を検索し、一致する変数名を取得し、その変数に関する変数データが格納された自ノードのリンクメモリ１５へのポインタを求め、それを該当する間接参照テーブル１６のメモリエリアに格納する。
【００６９】
また、上記した制御装置（Ｘ）１´のように、新たにネットワークに加入した場合には、Ｅｘｐｏｒｔ変数リストを受信していないノードに対してＥｘｐｏｒｔ変数リスト要求を行う。これにより、受信したＥｘｐｏｒｔ変数リストに基づき、上記したＲｅｍｏｔｅ変数リスト２２ひいては間接参照テーブル１６の作成・更新を行う。具体的には、図１７に示すフローチャートを実現する。
【００７０】
まず、Ｉｍｐｏｒｔ変数リスト２１を順番に検索し（ＳＴ４１，ＳＴ４２）、検索された変数名（論理名）ごとに以下の処理を行う。つまり、取得した変数名をキーにＲｅｍｏｔｅ変数リストを検索し、その変数を公開している制御装置のノードアドレス(1) と、その装置内のリンクメモリ内の自ノードエリアオフセット(2) を取得する（ＳＴ４３）。
【００７１】
次いで、リンクメモリの(1) に該当する他ノードエリア（その変数を公開しているノード用のエリア）のベースアドレス（先頭アドレス）を算出する（ＳＴ４４）。そして、そのベースアドレスに、ステップ４３で求めたオフセット(2) を加算した値(3) を求める（ＳＴ４５）。すなわち、対応するノードエリアでは、同一の論理名（変数名）の変数データを格納する領域のオフセット値を等しくしているので、上記求めた値(3) が、その変数データを記憶させるリンクエリアの先頭アドレスとなる。
【００７２】
次に、変数名に基づいて変数データベース１７を検索し、間接参照テーブル位置（その変数名のポインタを格納する箇所）を取得する（ＳＴ４６）。つまり、図５に示すメモリアドレスの欄に登録されたオフセットアドレスを取得する。そして、その取得したオフセットアドレスにしたがい、該当する間接参照テーブルの格納領域に、ステップ４５で算出した値(3) （リンクメモリ１５内の変数データを格納する領域の先頭位置を示すポインタ）を格納する。これにより、間接参照テーブルの更新が行える。
【００７３】
これにより、図５に示す変数データベース１７とすると、図１８に示すように、例えば論理名（変数名）が「Ｓｗｉｔｃｈ１」についての変数データのリンクメモリ１５内の格納領域が図示のようになっている場合、間接参照テーブル１６のＳｗｉｔｃｈ１の欄（オフセットアドレス００００：先頭）には、その格納領域の先頭のアドレス（ポインタ）が格納されることになる。
【００７４】
上記したように、論理名調停部１９により、各ノード（制御装置１）内の各リスト２０〜２２や間接参照テーブル１６の内容がその都度更新されることにより、リンクメモリ１５内に格納された変数データの内容や、変数データの格納領域が変更したとしても、ある変数名（論理名）についての間接参照テーブル１６の格納位置（オフセットアドレス）は不変（仮に変更した場合でも、変数データベースのメモリアドレスの欄を見ることにより知ることができる）であるので、制御実行部１８は、その間接参照テーブル１６を介してリンクメモリ１５にアクセスし、所望の変数データを取得し、正規の制御システムを実行することができる。そして、係る制御実行部１８の機能は、図１９に示すフローチャートのようになっている。
【００７５】
すなわち、まず初期化処理をした後（ＳＴ５１）、ＩＮリフレッシュをする（ＳＴ５２）。つまり、リンクメモリ１５の他ノードエリアに格納されたエリアネットワークグローバル変数（変数データ）の読み出しを行う。そして、ユーザプログラム（通常の制御）を実行し（ＳＴ５３）、ＯＵＴリフレッシュをする（ＳＴ５４）。つまり、リンクメモリ１５の自ノードエリアに、自己が公開するネットワークグローバル変数（変数データ）の書き込みを行う。次いで、周辺Ｉ／Ｆ処理を実行する（ＳＴ５５）。このように、リンクメモリ１５に対するアクセス（変数データの読み書き）をしつつ、ユーザプログラムを実行する処理を、システムが停止するまで繰り返し実行する（ＳＴ５６，ＳＴ５７）。なお、上記したリンクメモリ１５をアクセスしつつユーザプログラムを実行しているときの制御装置１，１′の概念図を示すと図２０のようになる。
【００７６】
さらに、リンクメモリ１５に格納する実際の変数データの送受は、通信部１２を介して制御装置１（ノード）間で行われる。まず、概念的に説明すると、リンクメモリ１５内の自ノードエリアに割り付けられたデータ（変数データ）は、他ノードに一斉同報通信方式などで送信し、他ノードエリアに割り付けられたデータ（変数データ）は対応する他ノードから受信する。
【００７７】
つまり、図２１に示すように、リンクメモリが格納された制御部１１側のＲＡＭ１１ｃと、通信部１２側のＲＡＭ１２ｂとの間では、必要なデータを転送するようになっている。そこで、図２０に示すように、リンクメモリ１５の自ノードエリアに割り付けられたデータは、一旦通信部１２の通信側ＲＡＭ１２ｂに複写転送され、各制御装置間では、その通信側ＲＡＭ１２ｂ同士（厳密には通信コントローラ１２ａを介して）で一斉同報に伴うデータ転送をすることにより、他のノード（制御装置）側に送信する。また、これを受信した他ノード側では、Ｅｘｐｏｒｔ変数リスト，Ｉｍｐｏｒｔ変数リストより算出した転送データサイズを基に、自ノードで必要なデータを通信部１２（通信側ＲＡＭ１２ｂ）から制御部１１（制御側ＲＡＭ１１ｃ）に転送する。なお、通信部１２側では、その受け取ったデータに基づいて所定の処理をするのは、上記した通りである。
【００７８】
また、制御装置内での通信部１２と制御部１１間でのデータの転送処理機能は、以下の通りとなっている。まず、本形態では、通信部１２は、制御部１１からの要求によりサイクリック通信サービスを開始するようになっている。すなわち、通信部１２は、制御部１１から受け取ったＩｍｐｏｒｔ変数リスト，Ｅｘｐｏｒｔ変数リストに基づいて通信パラメータを算出・設定し、サイクリック通信サービスを起動もしくは加入する。
【００７９】
また、サイクリックデータには、受信側が利用してよいデータ（有効なデータ）か、利用できないデータなのかを示す有効／無効情報が含まれている。この有効／無効情報は、送信側で設定する。そして、この有効／無効情報が「有効」のときには、受信側の通信部が受信したサイクリックデータを制御部側に転送しても良いと判断できる。
【００８０】
さらに、通信側ＲＡＭ１２ｂには、通信部１２の通信コントローラ１２ａ側からと、制御部１１側からの両方からアクセスできるようになっている。従って、何ら制御を行わないと、両方から同時に通信側ＲＡＭ１２ｂにアクセスすることが有るので、これを避けるため、本形態では制御部１１側が主体的になってデータ交換をするようにしている。つまり、制御部１１が通信部１２に対してアクセス許可・禁止を通知する。そして、通信部１２は、制御部１１が通信側ＲＡＭへのアクセスを許可している間のみアクセス可能となる。係る制御の具体的には、図２２（制御部），図２３（通信部）に示すフローチャートのようになる。
【００８１】
まず、制御部１１の機能としては、図２２に示すように、データのＲｅａｄ／Ｗｒｉｔｅ、つまり、通信側ＲＡＭ１２ｂへのアクセスを行う（ＳＴ６１）。そして、そのアクセス処理が完了すると、通信側にアクセス完了を通知する（ＳＴ６２）。このアクセス完了通知が、通信部１２に対するアクセス許可通知となる。
【００８２】
そして、通常のコントローラ処理（ユーザプログラムの実行）をする（ＳＴ６３）。また、再び通信側ＲＡＭ１２ｂにアクセスする必要が生じた場合には、アクセス要求通知を通信部１２に対して通知する（ＳＴ６４）。後述するように、この通知を受けた通信部１２は、アクセス許可通知を返送するので、制御部１１はその通信部１２からのアクセス許可通知を受信したか否かを判断し（ＳＴ６５）、許可通知を受信したならば、アクセスステータスクリアをし（ＳＴ６６）、ステップ６１に戻り、制御部１１が通信側ＲＡＭ１２ｂに対してアクセスする。
【００８３】
一方、通信部１２の機能は、図２３に示すように、まず、制御部１１からアクセス完了通知が送られてきたか否かを判断する（ＳＴ７１）。そして、係る完了通知を受信したならば、通信側ＲＡＭ１２ｂに対するアクセス（データのＲｅａｄ／Ｗｒｉｔｅ）をする（ＳＴ７２）。次いで、通信部１２からアクセス要求通知が送られてきたか否かを判断する（ＳＴ７３）。そして、送られてこない場合には、依然として通信部１２に通信側ＲＡＭ１２ｂへのアクセス権が有るため、必要に応じてアクセスする。
【００８４】
一方、アクセス要求通知を受け取ったならば、通信側ＲＡＭ１２ｂに対するアクセスを終了するとともに、アクセス許可通知を制御部１１に返送する（ＳＴ７４）。このとき、通信部１２では、受信データのノード単位の同時性を保証するため、１ノード分の転送中にアクセス要求通知を受信した場合には、その１ノード分の転送が完了した後でアクセス許可通知を返送することになる。なお、ステップ７４の通知により中断した後、制御部１１から再びアクセス完了通知を受け取ったならば、上記中断したノードの次のノードの通信側ＲＡＭ１２ｂへの転送を開始することになる。
【００８５】
上記した実施の形態を基本とし、さらに以下に示す機能を追加することができる。まず、第１の追加機能として、オンラインエディット機能が有る。すなわち、プログラミング装置から送られてきたオンラインエディット要求を解釈し、変数データベース１７に論理名を追加または削除し、さらには、その変数データベース１７の変更内容に応じて自制御装置内の間接参照テーブル１６を変更する機能を有する。以下、各処理に分けて説明する。
【００８６】
まず、オンラインエディットにおけるネットワークグローバル変数の追加処理機能は、図２４に示すフローチャートのようになっている。すなわち、まず接続されたプログラミング装置からのネットワークグローバル変数追加要求を受理する（ＳＴ８１）。すると、まず追加される論理名の変数データの属性が、入力変数なのか出力変数なのかを判断する（ＳＴ８２）。
【００８７】
そして、入力変数の場合には、その変数がすでに他ノードで公開されている変数（既公開変数）であるか否かを判断する（ＳＴ８３）。公開されていない（未公開変数）場合には、現時点では当該変数のデータを取得して利用することができないので、その変数についてのＩｍｐｏｒｔ変数テーブルを作成し、有効／無効フラグを無効にセットした上でＩｍｐｏｒｔ変数リストに追加する（ＳＴ８４）。なお、この変数についてのフラグは、他ノードがそのネットワークグローバル変数を公開したときに有効に切り替わる。
【００８８】
そして、変数データベース１７のメモリアドレスに基づき、その変数に付いての情報を間接参照テーブルに追加する（ＳＴ８５）。一方、処理対象の入力変数が他ノードにおいてすでに公開されている場合には、変数データベースに基づいて間接参照テーブルに追加する（ＳＴ８５）。
【００８９】
一方、属性が出力変数の場合には、ステップ８２の分岐判断でステップ８６に進み、リンクメモリ１５の自ノードエリアに空き領域が有るか否かを判断する（ＳＴ８６）。つまり、変換データベース１７に格納されたその変数についてのデータサイズ分の空きメモリの有無を判断する。そして、空きがない場合には、追加することができないのでエラー処理をする。また、空きが有る場合には、その自ノードエリア内にその変数データを格納する領域（データサイズ分）を確保する（ＳＴ８７）。そして、その確保した領域のオフセット（先頭アドレス）をＥｘｐｏｒｔ変数テーブルの該当テーブルに格納するとともに、その確保した領域のオフセット（先頭アドレス）を間接参照テーブルに書き込む（ＳＴ８８）。さらに、作成したＥｘｐｏｒｔ変換テーブルをＥｘｐｏｒｔ変数リストへ追加する。その後、追加された変数情報のみを各ノードへＥｘｐｏｒｔ変換テーブルの送信により通知する（ＳＴ８９）。
【００９０】
また、オンラインエディットの削除処理機能は、図２５に示すフローチャートのようになっている。すなわち、まず接続されたプログラミング装置からのネットワークグローバル変数削除要求を受理する（ＳＴ９１）。すると、間接参照テーブル等から論理名についての変数情報を削除する（ＳＴ９２）。次いで、削除した変数データの属性が、入力変数なのか出力変数なのかを判断する（ＳＴ９３）。そして、属性が入力変数の場合には、他のノードへの影響はないのでそのまま処理を終了する。
【００９１】
また、出力変数の場合には、その変数データを利用する他のノードに影響を与えるので、各ノードに対して削除した変数名（論理名）を通知する（ＳＴ９４）。なお、この削除した変数名の通知を受けた各ノードでは、Ｉｍｐｏｒｔ変数リスト内のその変数についての有効／無効フラグを無効にする。
【００９２】
なお、オンラインエディットにおけるネットワークグローバル変数のデータサイズや属性などの変更に付いては、上記した削除処理を実行後あらためて追加処理をすることにより行える。
【００９３】
また、第２の追加機能として、上記のオンラインエディット機能を前提として、さらに間接参照テーブルを２バンク持ち、使用バンクと未使用バンクを適宜切り替えることにより、制御実行中断を最小限に抑えることができるように構成することもできる。
【００９４】
つまり、使用バンクの内容を未使用バンクにコピーしておき、変数データベース１７の内容が変更された場合、まず未使用バンクを更新し、その後制御実行部１８が使用中バンクを参照していないときに未使用バンクと使用バンクを切り替えるようにする。このようにすると、使用バンクに対する間接参照テーブルの更新中であっても、使用バンクは変更がないので、係る更新作業中に並列して制御実行部１８が使用中バンクを参照して処理ができる。よって、制御実行中断期間を可及的に短くすることができる。そして、係る処理機能を実現するための制御部の機能としては、図２６，図２７に示すフローチャートのようになる。
【００９５】
すなわち、制御実行部１８は、図２６に示すようにまず初期化処理をした後（ＳＴ１０１）、ＩＮリフレッシュをする（ＳＴ１０２）。つまり、リンクメモリ１５の他ノードエリアに格納されたエリアネットワークグローバル変数（変数データ）の読み出しを行う。このリンクメモリ１５へのアクセスは、使用バンクの間接参照テーブルに基づいてアドレスを特定し実行する。
【００９６】
そして、ユーザプログラム（通常の制御）を実行し（ＳＴ１０３）、ＯＵＴリフレッシュをする（ＳＴ１０４）。つまり、リンクメモリ１５の自ノードエリアに、自己が公開するネットワークグローバル変数（変数データ）の書き込みを行う。これも当然のことながら使用バンクの間接参照テーブルに格納されたポインタに基づいてリンクエリアの格納領域を特定し実行することになる。次いで、周辺Ｉ／Ｆ処理を実行する（ＳＴ１０５）。このステップ１０２からステップ１０５の間は、制御実行部１８が使用中バンクを参照している期間である。
【００９７】
この後、サイクルタイムだけ待機する（ＳＴ１０６）。このサイクルタイムの間は、制御実行部１８が使用中バンクを参照していない期間である。このように、リンクメモリ１５に対するアクセス（変数データの読み書き）をしつつ、ユーザプログラムを実行する処理を、システムが停止するまで繰り返し実行する（ＳＴ１０７，ＳＴ１０８）。このとき、一連の１回の処理が終わる都度一定時間待機する。
【００９８】
一方、間接参照テーブルの書き替え処理機能は、図２７に示すフローチャートのように、まず、使用バンクの間接参照テーブルの内容を未使用バンクにコピーする（ＳＴ１１１）。次いで、未使用バンクにコピーした間接参照テーブルを更新する（ＳＴ１１２）。そして、制御実行部１８がリンクリストを参照中か否かを判断する（ＳＴ１１３）。つまり、ステップ１０２からステップ１０５を実施中か否かを判断する。そして参照していない場合（ステップ１０６の待機中）には、使用中の間接参照テーブルを、コピーした間接参照テーブルと切り替えて処理を終了する（ＳＴ１１４）。
【００９９】
また第３の追加機能として、バージョン情報を用いたデータ管理機能が有る。すなわち、上記した実施の形態では、バージョンアップした変数テーブルのみを登録するようにしたが、本発明はこれに限ることはなく、変数データベースと送信データの両方にバージョン情報を付加し、変数データベースの変更内容を一斉同報で各ノードに送る。これにより、その変数データベースに付加されたバージョン情報と、その後に送信されたデータに付いているバージョン情報が、変数データベースのものと一致するか否かを判断し、一致するもののみ正規のデータと認め更新処理をすることもできる。
【０１００】
このようにすることにより、予め変数データベースを各ノードに対して送信してバージョンを知らせることにより、ネットワークに接続された全てのノードで同じバージョンの変数データを使うことが保証される。そして、係る処理機能を実現するための具体的な構成としては、例えば通信部１２の構成を図２８に示すようにすることである。
【０１０１】
すなわち、他のノードから送られてきたデータを受信部２５と、その受信部２５で受信したデータ（メッセージ）を受け取り、バージョンが正しいか否かを判断する選択手段２６と、その選択手段２６で判断する際の基準・辞書となる受信すべきノードアドレスとバージョン情報を保持する選択情報保持手段２７と、選択手段２６により真のデータ（バージョン等一致）と判断されたデータを保持するデータ保持部２８と、真のデータでないと判断された場合に送信元のノードに対してバージョンが不一致であることを通知する通知手段２９を備えている。さらに、自己が送信側の機能として、自己が公開している変数に関する情報を一旦記憶保持するデータ保持部３０と、そのデータ保持部３０に格納されたデータを他のノードに向けて送信する送信部３１を備えている。
【０１０２】
選択情報保持手段２７に格納・設定されるバージョン情報等は、その変数名（変数データ）の公開元のノードから送られる変数データベースのバージョン情報を受信し、登録することができる。そして、実際に送られてくるメッセージのフレームフォーマットが、図２８に示すように、送信元や宛先などの情報を格納したヘッダと、実際の送信内容であるデータの間に、そのデータのバージョン情報を登録するようにした。また、どのノードから送られてきたデータかは、ヘッダの送信元情報からわかる。
【０１０３】
さらに、選択手段２６の機能は、図２９に示すフローチャートのようになっている。つまり、受信部２５を介してメッセージを受信すると（ＳＴ１２１）、選択情報保持手段２７に格納された受信すべきノードアドレスとバージョン情報の設定と、受け取ったデータのバージョン等を比較し、設定と一致するか否かを判断する（ＳＴ１２２）。そして、一致している場合には、データ保持部２８に受信したメッセージを転送する（ＳＴ１２３）。なお、この転送されてデータ保持部２８に格納されたメッセージは、必要な箇所のデータが制御部１１側に送られ、それに基づいて変数リストや間接参照テーブルさらにはリストメモリのデータの更新等の必要な処理がなされる。一方、バージョン等が一致していない場合には、通知手段２９を介して送信元のノードに対して不一致を通知する（ＳＴ１２４）。この通知は、単にバージョンが不一致であることを通知しても良いし、選択情報保持手段２７に格納されているバージョン情報を併せて送るようにしてもよい。これを受けた送信元のノードは再度、正しいバージョンのデータ（Ｅｘｐｏｒｔ変数リスト）を再送したり、選択情報保持手段２７に格納すべき現在の正しいバージョン情報（変数データベース）を送るようになる。
【０１０４】
さらに別の追加機能としては、新たな制御装置を追加した際に、自動的に既存の制御装置との通信を開始し、各変数リストなどを交換し、論理的なデータの共有が可能な状態にする機能（プラグイン機能）を付加することができる。
【０１０５】
一方、上記した実施の形態では、各他のノードから送られてくるＥｘｐｏｒｔ変数リストの全てを一旦Ｒｅｍｏｔｅ変数リストとして制御装置内に取り込み、その後、Ｉｍｐｏｒｔ変数リストと照合して間接参照テーブルを作成するようにしたが、本発明はこれに限ることはなく、例えば、他ノードからＥｘｐｏｒｔ変数リストを受信する都度、自ノードのＩｍｐｏｒｔ変数リストと比較し、必要な情報のみ取り込むようにしても良い。そのようにすると、Ｒｅｍｏｔｅ変数リストを格納するためのメモリ容量を大幅に削減できる。よって、小型の制御装置その他のノードに適用可能となる。
【０１０６】
さらには、各ノードが自ノードで必要な変数名を問い合わせ、その変数名について公開しているノードから情報を取得するようにすることができる。これにより、大規模なＲｅｍｏｔｅ変数テーブルが不要となり、メモリ容量のさらなる削減が可能となり、ローコストな機器が開発できる。
【０１０７】
具体的には、図３０に示すように、ネットワークに複数のノード（制御装置１）が接続されており、それぞれＥｘｐｏｒｔ変数リスト２０及び、自ノードが必要なＩｍｐｏｒｔ変数リスト２１を持っている。そして、図３０の構成と図３等を比較すると明らかなように、間接参照テーブル１６やリンクメモリ１５も備えているが、Ｒｅｍｏｔｅ変数テーブルは保有していない。なお、図３０は、各ノードのＲＡＭの内部構造の一部を示しており、図３等に示す実施の形態と同様ＭＰＵやＲＯＭには必要な機能が格納されている。
【０１０８】
係る構成において、それぞれのノードは、Ｉｍｐｏｒｔ変数リスト２１に記述されている変数を全ノードに一斉同報で送信する（図示の例では、ノード（１）から送信された例を示している（図３０の(1) ）。この変数名問い合わせフレームを受信したノードは、自ノードのＥｘｐｏｒｔ変数リスト２０に該当する変数が存在するかどうかを検索する（図３０の(2) ）。そして、検索した結果、該当する変数が存在したら、自己のノードアドレスと変数アドレスを記述したフレームを、変数名問い合わせフレームを送信したノード（図３０の例ではノード（１））あてに回答する（図３０の(3) ）。
【０１０９】
これにより、ノードは、自己が利用する変数の情報を取得できるので、そのフレームをもとに間接参照テーブルを作成する。なお、間接参照テーブルを作成するプロセスは、上記した実施の形態と同様であるので、その詳細な説明を省略する。
【０１１０】
そして、上記した変数名の問い合わせフレームのフレームフォーマットの一例を示すと、例えば図３１（ａ）に示すように、Ｉｍｐｏｒｔ変数リストの全てを一括して送信することができる。この場合、複数のノードから複数のフレームで回答されることが多々ある。また、同図（ｂ）に示すように、１変数ごとにフレームを送信することもできる。この場合には、当然のことながら、回答フレームは１つとなる。そして、回答フレームのフレームフォーマットの一例を示すと、図３１（ｃ）のようになる。
【０１１１】
そして、Ｉｍｐｏｒｔ変数リストの全リストを一括して問い合わせる場合の機能としては、図３２に示すフローチャートのようになる。すなわち、まず全ノードあてに変数問い合わせフレームを送信する（ＳＴ１３１）。次いで、タイマをチェックしながら受信を待ち、そのフレームに対する回答があるか否かを判断し（ＳＴ１３２，ＳＴ１３４）、回答の受信があったならば、その回答の内容をもとに間接参照テーブルを作成する（ＳＴ１３３）。そして、一定時間待っても回答が来なければ、回答待ちタイムアウトとなり、間接参照テーブルの作成は終了する。なお、Ｉｍｐｏｒｔ変数リストに存在する変数名についての間接参照テーブルの作成ができていない場合には、その変数名を出力変数とするノードが現段階ではシステムに存在しないという判断になる。よって、Ｉｍｐｏｒｔ変数リストの有効／無効フラグは無効となる。
【０１１２】
また、Ｉｍｐｏｒｔ変数リストの１変数ずつを問い合わせる場合の機能は、図３３に示すフローチャートのようになる。すなわち、全ノードあてに変数問い合わせフレーム（１変数分）を送信する（ＳＴ１４１）。次いで、タイマをチェックしながら受信を待ち、そのフレームに対する回答があるか否かを判断し（ＳＴ１４２，ＳＴ１４４）、回答の受信があったならば、その回答の内容をもとに間接参照テーブルを作成する（ＳＴ１４３）。そして、一定時間待っても回答が来なければ、その変数についての回答待ちタイムアウトとなり、その変数についての間接参照テーブルは作成しない。つまり、現時点でその変数を出力変数とするノードはないと判断する。そして、全ての変数について、上記した処理を繰り返し実行し、全ての変数について送信したならば処理を終了するようになる（ＳＴ１４５）。
【０１１３】
本形態では、Ｒｅｍｏｔｅ変数リストに要したメモリ容量が不要となるというメリットの他に、トラフィックが大幅に減少するという効果もある。すなわち、例えば、新たにノードが追加された場合を想定すると、その追加したノードが、自己が必要とする変数（Ｉｍｐｏｒｔ変数リストに格納された変数）について、所定のフレームフォーマットで、変数名問い合わせを一斉同報で送信する。すると、該当する変数があったノードだけが、その変数についての回答フレームを送信することとなるので、全ノードが全データを送信する必要がなくトラフィックが大幅に減少される。
【０１１４】
さらに、本形態によれば、異なるデータに対して同一の変数名が存在（２重変数）した場合に、それを容易に検出することができる。すなわち、本発明では、ネットワーク上には同一の変数名は唯一存在することが前提となり、同一の変数名を出力変数とするノードは１つのみ存在する（０の場合もある）ことになる。そこで、本形態によれば、問い合わせされた変数名を出力変数とするノードが複数存在すると、一斉同報送信された問い合わせフレームを受信した各ノードがそれぞれ回答フレームを送信することになり、問い合わせをしたノードには、同じ変数の問い合わせに対して複数の回答フレームを受信することとなる。これによって変数の２重定義を検出することができる。
【０１１５】
図７に示すＥｘｐｏｒｔ変数リストに替えて、図３４に示すように、図７の変数リストにさらに「使用／未使用」エリアを追加している。この「使用／未使用」エリアは、その変数名の変数データが他のノードで利用・使用されているか否かを示すフラグであり、使用されている場合には「１」をセットし、未使用の場合には０をセットする。
【０１１６】
このようにすると、データリンク通信を行う場合には、図１以降に説明した基本の実施の形態では、Ｅｘｐｏｒｔ変数リストで示された変数全てをサイクリックに送信していたが、本方式では、「使用／未使用」エリアをチェックすることにより、全データを送信するのではなく、「使用」となった変数についてだけ送信することができる。これにより誰も使用していない無駄なデータを送信することによるネットワークのトラフィックを増大させることが抑制できる。
【０１１７】
そして、係るエリアに対するフラグのセットは、本形態のようにＩｍｐｏｒｔ変数リストに基づく問い合わせを行う場合に容易に実現できる。つまり、「使用／未使用」エリアの初期値を０にしておく。そして、Ｅｘｐｏｒｔ変数リストの検索を行う時に、問い合わせのあった変数が存在した場合に当該変数についての「使用／未使用」エリアに使用中を示す「１」をセットすることにより、実現できる。
【０１１８】
係る機能を実現するための処理部のフローチャートとしては、図３５に示すようにすることができる。すなわち、Ｉｍｐｏｒｔ変数リストの問い合わせフレームを受信したならば（ＳＴ１６１）、Ｅｘｐｏｒｔ変数リストを検索し、問い合わせがあった変数が存在するかどうか確認する（ＳＴ１６２，ＳＴ１６３）。そして、もし存在しなければ、応答を返さずに終了する。また、存在したならば、自ノードのアドレスと該当の変数のアドレスを記述した回答フレームで応答を返す（ＳＴ１６４）。そして、「使用／未使用」エリアに１をセットする（ＳＴ１６５）。なお、このステップ１６５を設けないフローチャート（ＳＴ１６１からＳＴ１６４）は、通常の処理機能を実現するためのフローチャートとなる。
【０１１９】
さらにまた、上記した図１以降の基本機能の実施の形態（方式(1) ）と、図３０以降に示す実施の形態（方式(2) ）を組み合わせて使用することもできる。すなわち、図１以降の実施の形態では、メモリ容量が十分あるノードで、立ち上げ時など複数のノードが一斉に間接参照テーブルを作成する時には、Ｅｘｐｏｒｔリストの送信たけでできるので効率がよい。また、システムの大部分のエリアをＩｍｐｏｒｔするようなノードにとっては、全ノードからＥｘｐｏｒｔリストをもらったほうが効率がよい。
【０１２０】
一方、すでにシステムでデータリンクが動作している時に、新たにノードが参加した場合には、図３０以降の実施の形態の方が、効率がよい。また、Ｉｍｐｏｒｔ変数リストが少ないノードでも、必要な変数のみ受信するので、効率がよい。このように、両実施の形態はそれぞれメリットがあるため、それらを混在させることにより、メリットの相乗効果が期待できる。そして、そのように混在した方式は、次に示すルールで行う。そして、係るルールを実現するため処理フローは、図３６に示すようになる。
【０１２１】
(1) 各ノードは間接参照テーブルの作成を始める前に、自ノードのＥｘｐｏｒｔリストを送信する（方式(1) ）；
(2) 各ノードはＲｅｍｏｔｅテーブルの容量が少なければ、受信したＥｘｐｏｒｔリストを破棄する；
(3) この段階で、間接参照テーブルが作成できていれば、ここで完了する；
(4) 間接参照テーブルが未完成（まだ解決していないＩｍｐｏｒｔ変数リストがある）の場合、方式(2) による問い合わせで間接参照テーブルを作成する；
(5) (4) の処理を実行しても未完成の場合、まだその変数を持っているノードが立ち上がっていないと判断し、データリンク動作に入る；
(6) データリンク動作中に途中で新たなノードが加わると、そのノードからＥｘｐｏｒｔリストが送られてくるので、Ｉｍｐｏｒｔ変数リストと照合し、存在すれば、間接参照テーブルを作成する；
(7) ノードがすでにネットワークでデータリンクが動作している時に立ち上がったならば（他ノードからみれば途中加入）、(1) と同様にまず自ノードのＥｘｐｏｒｔリストを送信する；
(8) 他ノードからはＥｘｐｏｒｔリストが送られてこないので、Ｉｍｐｏｒｔリストの大きさをチェックし、既定値（例えば１０００変数）より大きければ、方式(1) を実行し（全ノードに対してＥｘｐｏｒｔリストの送信を要求する）、既定値より少なければ、方式(2) で間接参照テーブルを作成する。
【０１２２】
ところで、上記した各実施の形態及び変形例（追加機能）では、ネットワーク接続された複数の制御装置間で共有する論理名を定義するだけで、ネットワークに接続されている制御装置間の通信を実行し、通信相手の制御装置の状態が変化（ネットワークに対する着脱，再コンパイルによる内容変更等）した場合であっても、制御を中断することなく共有する論理名とリンクメモリ内のアドレスの対応を解決することができる。
【０１２３】
そして、係る解決を図るため、リンクメモリ１５や間接参照テーブル１６を設けたが、本発明では係る構成は必ずしもなくても良い。そして、係る構成をなくした場合には、制御装置間で送受するメッセージ内に、図３７に示すように少なくとも論理名とそのデータを格納し、１通信ごとに変数データベースによりネットワークグローバル変数の格納アドレスを特定し、データ更新をすることになる（図３８参照）。この場合に、１つのメッセージ内に複数のネットワークグローバル変数の書き替え要求を含ませるようにしてもよい。
【０１２４】
なお、上記した各実施の形態では、変数データを格納するリンクメモリや、各種の変数リストなどの情報を不揮発性メモリに格納するようにした。具体的には、制御部１１内のＲＡＭ１１ｃの所定エリアに格納するようにした。但し、本発明はこれに限ることはなく、例えば図３９に示すように、制御部１１と通信部１２とは別に、記憶部１３を設け、その記憶部１３内にデータを格納するようにしても良い。そして、その記憶部１３は複数に分割してももちろん良い。
【０１２５】
また、上記した各実施の形態等は、何れも、入出力の両方の機能を持つ装置について説明したが、本発明はこれに限ることはなく、入力変数のみの制御装置（ノード）や、出力変数のみの制御装置（ノード）にも適用できる。係る各制御装置の場合、上記した各実施の形態で説明した機能のうち使用しないものを除くことにより容易に実現できる。すなわち、例えば入力変数のみの制御装置の場合には、Ｅｘｐｏｒｔ変数リストは不要となり、また、論理名調停部１９の機能としてもＥｘｐｏｒｔ変数リストを生成したりする機能をなくすことにより対応できる。
【０１２６】
さらにまた、上記した各構成は、制御装置間でのデータ通信に限らず、マルチＭＰＵ構成にも適用できる。すなわち、図示省略するが、各ＭＰＵが占有するローカルメモリを持ち、それらがシリアルバス或いはパラレルバスで接続されているマルチプロセッサシステム（マルチＭＰＵ）を前提とする。そして、各ローカルメモリ間のデータ交換を定期的に行うデータ転送処理部と、それらのローカルメモリ内に格納されたデータをアクセスするために用いる間接参照テーブルと、間接参照テーブルを介してデータをアクセスする機構を持つ制御実行部と、論理名とローカルメモリアドレスの対応テーブルを管理し、その情報に基づき間接参照テーブルを変更する論理名調停部を備えることにより実現できる。この場合に、ローカルメモリが、上記した実施の形態のリンクメモリに対応し、定期的に交換するデータが、上記した実施の形態における変数データとなる。
【０１２７】
そして、各処理部やテーブル等に基づき、適宜変数リンク等を作成することにより、データの共通化ができる。なお、具体的な処理機能は、上記した制御装置間におけるデータ共有と同様の処理により実現できるので、その詳細な説明を省略する。
【０１２８】
図４０は、本発明のさらに別の実施の形態を示している。上記した各実施の形態では、ネットワークグローバル変数で制御装置間を接続し、そのネットワークグローバル変数の名前解決を制御装置同士が自動的に行うため、個々の制御装置毎に格納されている別々のプログラミングツールを用いて開発された制御プログラムを容易にシステムとして統合することができる。これにより、複数人による同時並行開発やインクリメンタル開発を支援することができるという効果を奏する。この制御装置は、制御装置同士で変数情報を自動的に交換し、データ転送前に一括して変数をメモリ上に割り当てる仕組みを持ち、自動的に名前解決が行われる。そして、この名前解決は、電源ＯＮ時やネットワーク加入時に実施される。
【０１２９】
このように、各変数単位で名前解決を図っていたのに対し、本形態では、ネットワークグローバル変数をグループ化し、そのグループ単位でバージョン，ＩＤを管理するようにした。
【０１３０】
つまり、電源ＯＮ時やネットワーク加入時などの名前解決の必要なときに、各制御装置が持つグループ同士のバージョン（ＩＤ）を比較し、それが同一ならば、以前に一度名前解決したことが判定できるとともに、その後に内容の変更がないとみなせるので、そのグループに所属するネットワークグローバル変数については、新たな名前解決をしないようにする。
【０１３１】
係る構成をとることにより、実際に名前解決を行う処理数を減らすことができ、制御装置のプログラム実行開始までの時間を大幅に短縮することができる。特に、多くの場合、デバッグ，現場調整時に名前解決がなされるので、実際のシステム運用時における制御装置の電源ＯＮ時や 制御装置のネットワークへの脱着時には、バージョンチェックのみ実施すればよく、ネットワーク負荷が少なくなりシステムへの影響を最小化させることができる。すなわち、例えばネットワーク断線や接触不良により一度離脱した制御装置が再びネットワークに参加した場合に、上記した各実施の形態ではその都度名前解決が実施されるが、本形態では、バージョンチェックのみ実施することにより復旧できるので好ましい。なお、バージョンが一致しない場合には、そのグループに属するネットワークグローバル変数の名前解決をすることになるが、その具体的な処理は、上記した各実施の形態で説明した方法により実施する。
【０１３２】
なお、上記したグループのバージョン，ＩＤは、ユーザプログラム修正やコンパイル実行などによって変数データベース１７の記憶内容が変更された場合や、オンラインエディットによって実行中の制御装置の変数データベース１７の記憶内容が変更される都度、更新される。
【０１３３】
また、ネットワークグローバル変数をグループ化するに際し、目的別に変数をカテゴライズするとよい。そのようなグルーピングを行うことにより、同一グループのデータを使用する制御装置は、協調・同期制御等をしていると推定できるので、制御装置同士の関連が容易に理解できるようになる。例えば図４０に示す例では、グループＡに属するネットワークグローバル変数は、制御装置（１）と制御装置（２）が共有し、グループＢに属するネットワークグローバル変数は、制御装置（２）と制御装置（３）が共有していることがわかる。
【０１３４】
さらに、ネットワークグローバル変数のグループの所有者を明確にする。つまり、１つのグループに属するネットワークグローバル変数に対する変更は、所有者であるネットワーク上に存在するある１つの制御装置１（サーバ）が実行し、他の共有する制御装置１（クライアント）は、所有者の制御装置からデータを送信してもらうようにする。これにより、グループ（データ一つ一つではなく、意味のあるデータの束）は、それを所有している制御機器１の外部インタフェースとみなすことができ、一度開発した機能モジュール（制御装置、制御ソフトウェア及び制御対象ハードウェアも含む）を標準モジュールとして流用しやすくなる。
【０１３５】
図４１の例では、各制御装置１には、それぞれ外部インタフェースＩｎが接続されている。そして、制御装置（１）の１つのインタフェースＩ２は、複数のネットワークグローバル変数からなるグループＡとなっており、このグループＡは、制御装置（２）でも利用されている。なお、変数の特定は、グループ名とネットワーク変数名により行われる。これにより、グループ内に同一のネットワーク変数名がなければ、グループ名とネットワーク変数名により特定されるネットワークグローバル変数は、ネットワーク上で唯一存在することになる。
【０１３６】
上記のように、グループを、１つの制御機器１に所有させるとともに、その制御機器１の外部インタフェースとみなすようにしたことにより、標準モジュールの組み合わせによる装置開発，工場ラインの組み立てが容易になる。なお、インタフェースには、それを所有している制御装置１に対する入力変数か出力変数、またはその両方を含むことができる。また、グループ／インタフェースの概念を言語上で表現するときには、構造体やクラス、インタフェースに対応づけてもよい。そして、インタフェースにはクラス（型）とインスタンスの概念がある。
【０１３７】
次に、上記したグループ単位での名前解決をするための具体的な制御装置１の構成としては、図４２に示すようにすることができる。同図から明らかなように、本実施の形態では、図３に示す実施の形態を基本とし、さらにＲＡＭ１１ｃ内にグループ管理情報記憶部３５を設ける。
【０１３８】
このグループ管理情報記憶部３５は、ネットワークに接続された複数のノード（制御装置）間で共有するデータの論理名（ネットワークグローバル変数）をグループ化して保持する記憶部である。このグループ管理情報記憶部３５の内部構造（データ構造）は、図４３に示すように、グループ名と、そのグループのＩＤ（或いはバージョン）と、制御装置がそのグループについて所有権を持つサーバになるのか、利用する側のクライアントになるのかを特定するサーバ・クライアント属性と、そのグループに属する変数名に関する情報を格納するＥｘｐｏｒｔリスト及びＩｍｐｏｒｔリストを備えている。このＥｘｐｏｒｔリスト及びＩｍｐｏｒｔリストは、図７，図８に示した実施の形態と同様であるので、詳細な説明を省略する。また、その他の構成並びに作用効果は、上記した実施の形態と同様であるので、対応する部材に同一符号を付し、各機能の詳細な説明を省略する。
【０１３９】
次に、上記した制御装置１をネットワーク上に複数備えて構成されるシステムにおいて、名前解決をするアルゴリズムを説明する。この処理は、基本的には論理名調停部１９が実行する。
【０１４０】
繰り返し説明するが、本実施の形態の要部は、サーバ側の制御装置とクライアント側の制御装置が同じグループ名を持っている場合に、互いのＩＤを照合する。そして、同じＩＤならば一度名前解決を実行したことを判定し、そのグループに所属するネットワークグローバル変数については、新たな名前解決をスキップする。また、ＩＤが異なる場合に実際にネットワークグローバル変数についての新たな名前解決を実行する。
【０１４１】
すなわち、サーバ側の制御装置１がネットワークに加入したり、グループが変化した場合には、サーバ側の制御装置１は、グループ名とＩＤのペアを一斉同報によりネットワーク上に送信する。これにより、ネットワークに接続された他の制御装置１は、その一斉同報されたデータを受信するので、クライアント側の制御装置１は、グループ管理情報記憶部３５をアクセスし、サーバから送信されてきたグループ名を検索する。そして、同じグループ名があったら、次にＩＤを照合する。
【０１４２】
このとき、記憶しているＩＤと受信したＩＤが同じの場合には「名前解決要求なし」のレスポンスをサーバ側の制御装置１に返す。また、ＩＤが異なる場合は、「名前解決要求あり」のレスポンスをサーバ側の制御装置１に返す。
【０１４３】
上記のレスポンスを受信したサーバ側の制御装置は、「名前解決要求あり」のレスポンスを返してきたノードのみからなる「名前解決要求局リスト」を作成し、その「名前解決要求局リスト」にあるノード（制御装置）との間で、個々に名前解決を実行する。
【０１４４】
一方、クライアント側の制御装置１がネットワークに加入したり、グループが変化した場合には、クライアント側の制御装置１は、自己が利用するグループのグループ名を一斉同報し、サーバ側の制御装置１にグループ名とＩＤのペアを送信するように要求する。これを受けた所定のサーバ側の制御装置１は、グループ管理情報記憶部３５に格納された同じグループ名を持っているグループ名とＩＤのペアを返信する。
【０１４５】
次いで、サーバ側の制御装置から送られてきたグループ名とＩＤのペアに基づき、クライアント側の制御装置１は、グループ管理情報記憶部３５をアクセスし、サーバから送信されてきたグループ名を検索する。そして、同じグループ名があったら、次にＩＤを照合し、記憶しているＩＤと受信したＩＤが同じ場合には「名前解決要求なし」のレスポンスをサーバ側の制御装置１に返す。また、ＩＤが異なる場合は、「名前解決要求あり」のレスポンスをサーバ側の制御装置１に返す。
【０１４６】
そして、上記のレスポンスを受信したサーバ側の制御装置は、「名前解決要求あり」のレスポンスを返してきたノードのみからなる「名前解決要求局リスト」を作成し、その「名前解決要求局リスト」にあるノード（制御装置）との間で、個々に名前解決を実行する。従って、いずれの場合も、ＩＤが同じグループを保持している制御装置は、実際のネットワークグローバル変数の名前解決処理はスキップされる。
【０１４７】
次に、上記した全体の処理を実行するための各制御装置の具体的な機能を、サーバ側の制御装置がネットワークに加入などして、名前解決を行う可能性が生じた場合と、クライアント側の制御装置がネットワークに加入などして、名前解決を行う可能性が生じた場合のそれぞれについて、サーバ側とクライアント側に分けて説明する。
【０１４８】
グループ管理情報記憶部３５のサーバ・クライアント属性の欄が「サーバ」となっている制御装置が、そのグループについてのサーバとなる。そして、このサーバは、同じグループをインタフェースとし、サーバ・クライアント属性が「クライアント」となっている他の制御装置とＩＤ情報を交換する交換機能と、クライアント側からの要求があったときのみネットワークグローバル変数の変数データベース情報を他の制御装置と交換する交換機能を備えている。そして、２つの機能は、論理名調停部１９に組み込まれている。
【０１４９】
また、グループ管理情報記憶部３５のサーバ・クライアント属性の欄が「クライアント」となっている制御装置が、そのグループについてのクライアントとなる。クライアント属性である制御装置は、サーバ属性をもつ同じグループ名を所有する他制御装置から送信されてくるＩＤ情報を受信するＩＤ情報受信機能と、そのＩＤと自制御装置が管理しているＩＤとを照合し異なる場合にはサーバ側制御装置にネットワークグローバル変数の名前解決を要求する要求機能と、その後変数データベース情報をサーバ側制御装置と交換する交換機能とを備えている。そして、これらの各機能も、論理名調停部１９に組み込まれている。
【０１５０】
そして、サーバ側の制御装置が、ネットワークに加入したり、グループが変化したときの処理は、図４４に示すフローチャートからなる交換機能を実施する。
【０１５１】
ネットワークに加入したか否かを判断し、加入したならばグループ管理情報記憶部３５内に保持している全てのグループについて、グループ単位で以下に示す処理を実行する（ＳＴ１７１〜ＳＴ１７３）。
【０１５２】
まず、サーバ・クライアント属性を認識し、サーバ属性になっているか否かを判断する（ＳＴ１７４）。そして、クライアント属性の場合には、サーバ側の処理は不要であるので、ステップ１７２に戻り次のグループについての処理に移行する。
【０１５３】
一方、サーバ属性のグループの場合、名前解決要求局リスト作成処理を実行する（ＳＴ１７５）。つまり、上記したネットワークグローバル変数の名前解決が必要なノード（制御装置）をリストアップした「名前解決要求局リスト」を作成するために必要な一連の処理を実行するもので、具体的には、図４５に示すフローチャートを実施する。
【０１５４】
すなわち、この名前解決要求局リスト作成処理は、まず、処理対象となっているグループのグループ名とＩＤのペアを一斉同報で他ノード（ネットワークに接続された他の制御装置）へ送信する（ＳＴ１８０）。すると、後述するように、送信したグループを利用するクライアントとなっている制御装置は、「名前解決要求あり／なし」のレスポンスを返答してくるので、そのレスポンス（応答）の有無を判断し（ＳＴ１８１）、応答があった場合にはその内容を判断し（ＳＴ１８２）、名前解決要求ありの場合のみ、レスポンスを返答した応答局（制御装置）のネットワークアドレスを記録し、名前解決要求局リストを作成する（ＳＴ１８３）。なお、名前解決要求局リストは、応答局（名前解決の必要な制御装置）のネットワークアドレスを列挙したテーブルである。
【０１５５】
よって、ステップ１８２の分岐判断でＮｏとなるのは、制御装置からレスポンスは返ってきたものの、名前解決要求なし（ＩＤが一致）の場合であり、係る場合には応答局（クライアント側の制御装置）のネットワークアドレスは登録されないので、その後に行われる名前解決もされない。つまり、名前解決がスキップされる。
なお、他の制御装置からの応答がなく、一斉同報してから一定時間経過したならば、タイムアウトとなり名前解決要求局リスト作成処理を終了し、次の処理に移行する。
【０１５６】
上記した名前解決要求局リスト作成処理が実行され、名前解決要求局リストが作成されたならば、そのリストに従って、名前解決処理（ＳＴ１７８）を繰り返し実行する（ＳＴ１７６〜ＳＴ１７８）。そして、リストに登録された全ての制御装置との間で名前解決が行われたならば、ステップ１７７の分岐判断でＹｅｓになるので、ステップ１７２に戻り次のグループについての処理に移行する。
【０１５７】
また、ステップ１７８の名前解決処理は、具体的には図４６に示すフローチャートのようになっている。すなわち、名前解決要求局リストには、名前解決が必要な制御装置のネットワークアドレスが列挙されているので、順番に処理していく（ＳＴ１９１，ＳＴ１９２）。つまり、まず出力変数について名前解決を行い（ＳＴ１９３）、次いで、入力変数の名前解決を行う（ＳＴ１９４）。なお、出力変数と入力変数に対する処理は、逆でももちろん良い。
【０１５８】
そして、出力変数の名前解決処理は、図４７に示すように、まず、サーバ側の論理名調停部１９は、該当グループ名を指定し、Ｅｘｐｏｒｔ変数リストを送信する（ＳＴ２００）。この送信先は、処理対象のグループについて名前解決要求局リストに登録された制御装置である。つまり、制御装置と名前解決要求局リストにある制御装置間において、１対１のＰｅｅｒ−ｔｏ−Ｐｅｅｒ通信で変数データベース情報の交換を行う。
【０１５９】
後述するように、このＥｘｐｏｒｔ変数リストの送信を受けた受信側の他の制御装置（ノード）は応答信号を送信してくるので、その応答信号があったか否かを判断する（ＳＴ２０１）。そして、あった場合には、正常なレスポンスであるか否かを判断し（ＳＴ２０２）、テーブル更新を完了する（ＳＴ２０３）。これにより、Ｅｘｐｏｒｔ変数リストを送信した制御装置は、誰がＥｘｐｏｒｔ変数リストを受け取り、誰が受け取っていないかを判断できる。そして、タイムアウトするまで応答信号の受信の有無をチェックし（ＳＴ２０４）、タイムアウトしたならば出力変数の名前解決処理を終了する。また、受信した応答信号が正常レスポンスでない場合も処理を終了する。
【０１６０】
また、入力変数の名前解決は、図４８に示すように、まず、サーバ側の論理名調停部１９は、該当グループ名を指定し、相手が保持するＥｘｐｏｒｔ変数リストを問い合わせるフレームを作成し送信する（ＳＴ２１０）。この問い合わせに対し、上記相手の制御装置からは、回答として対応するＥｘｐｏｒｔ変数リストが送られてくるので、係る回答があったか否かを判断する（ＳＴ２１１）。そして、あった場合には、エラーでないことを確認し（ＳＴ２１２）、間接参照テーブルを作成する（ＳＴ２１３）。そして、タイムアウトするまで応答信号の受信の有無をチェックし（ＳＴ２１４）、タイムアウトしたならば入力変数の名前解決処理を終了する。また、受信した回答がエラーの場合も処理を終了する。このように入力変数の名前解決処理を含めることにより、グループ内に入力変数を含むことができるようにしている。
【０１６１】
さらに、上記ステップ２１３の間接参照テーブルの作成処理の具体的な処理アルゴリズムは、図４９に示すようになっている。すなわち、図１７に示す処理機能を基本とし、一部改良したものである。図４９に示すように、まず、受信した他ノード（制御装置）のＥｘｐｏｒｔリストを順番に検索し、そのリストに含まれる全ての変数について以下を繰り返す（ＳＴ２２０，ＳＴ２２１）。
【０１６２】
つまり、変数名で自ノードのＩｍｐｏｒｔリストを検索する（ＳＴ２２２，ＳＴ２２３）。その変数名が、存在しなければステップ２２３の分岐判断はＮｏとなるので、ステップ２２０に戻り次の処理に移行する。すなわち、その変数の処理はスキップすることになる。
【０１６３】
そして、変数の照合が行えたならば、Ｅｘｐｏｒｔリストから、その変数を公開している制御装置のノードアドレス(1) と、その装置内のリンクメモリ内の自ノードエリアオフセット(2) を取得し、記録する（ＳＴ２２４，ＳＴ２２５）。
【０１６４】
次いで、自ノードに保持しているＩｍｐｏｒｔリストを変数名で検索し、リンクメモリの(1) に該当する他ノードエリア（その変数を公開しているノード用のエリア）のベースアドレス（先頭アドレス）を算出する（ＳＴ２２６）。そして、そのベースアドレスに、ステップ２２５で求めたオフセット(2) を加算した値(3) を求める（ＳＴ２２７）。すなわち、対応するノードエリアでは、同一の論理名（変数名）の変数データを格納する領域のオフセット値を等しくしているので、上記求めた値(3) が、その変数データを記憶させるリンクエリアの先頭アドレスとなる。
【０１６５】
次に、変数名をキーにして、変数データベース１７を検索し、間接参照テーブル位置（その変数名のポインタを格納する箇所）を取得する（ＳＴ２２８）。つまり、その変数のメモリアドレスの欄に登録されたオフセットアドレスを取得する。そして、その取得したオフセットアドレスにしたがい、該当する間接参照テーブルの格納領域に、ステップ２２７で算出した値(3) （リンクメモリ１５内の変数データを格納する領域の先頭位置を示すポインタ）を格納する（ＳＴ２２９）。これにより、間接参照テーブルの更新が行える。
【０１６６】
一方、上記したようにサーバ側の制御装置が、ネットワークに加入したり、グループが変化したときに実行される既存のクライアント側の制御装置の処理は、図５０に示すフローチャートからなる交換機能を実施することになる。
【０１６７】
すなわち、メッセージの受信を待ち（ＳＴ２３０）、その受信したメッセージがグループ名，ＩＤのペアであるか否かを判断する（ＳＴ２３１）。そして、係るペアでない場合には、そのメッセージに従った処理を実行する。一方、係るペアの場合には、自制御装置１のグループ管理情報記憶部３５を検索し、保持している「グループ管理情報」に、サーバより送信されてきたグループ名があるか否かを判断する（ＳＴ２３２，ＳＴ２３３）。
【０１６８】
次いで、同じグループ名がない場合には処理を終了し、あった場合には、次にＩＤを照合する（ＳＴ２３４）。そして、ＩＤが同じであったら、「名前解決要求なし」のレスポンスをサーバ側に返す（ＳＴ２３５）。また、ＩＤが異なる場合は、「名前解決要求あり」のレスポンスをサーバ側に返す（ＳＴ２３６）。
【０１６９】
一方、上記したステップ２３６で「名前解決要求あり」のレスポンスを介した場合には、その後にサーバからのメッセージに従い、サーバ側の制御装置との間で名前解決処理をすることになる。この具体的な名前解決処理は、図５１に示すフローチャートに従って実行することになる。
【０１７０】
すなわち、まず、メッセージの受信を待ち（ＳＴ２４０）、メッセージを受信したならば、その種別を判断する（ＳＴ２４１）。そして、受信したメッセージがＥｘｐｏｒｔリストの場合には、受信したグループ名をキーとしてグループ管理情報記憶部３５を検索し、該当するグループがあるか否かを判断する（ＳＴ２４２，ＳＴ２４３）。該当グループがある場合には、図４９に示すフローチャートに従い間接参照テーブルを作成する（ＳＴ２４４）。その後、受信したメッセージの送信局であるサーバ側の制御装置に対し、正常に終了したことを示す正常応答を返し（ＳＴ２４５）、処理を終了する。なお、該当するグループがない場合には、送信局であるサーバ側の制御装置に対し、エラーを返し（ＳＴ２４６）、処理を終了する。
【０１７１】
一方、受信したメッセージがＥｘｐｏｒｔ問い合わせの場合には、受信したグループ名をキーとしてグループ管理情報記憶部３５を検索し、該当するグループがあるか否かを判断する（ＳＴ２４７，ＳＴ２４８）。該当グループがある場合には、そのグループについてのＥｘｐｏｒｔリストを、メッセージの送信局であるサーバ側の制御装置に向けて送信し（ＳＴ２４９）、処理を終了する。なお、該当するグループがない場合には、送信局であるサーバ側の制御装置に対し、エラーを返し（ＳＴ２４６）、処理を終了する。
【０１７２】
上記したサーバ側とクライアント側の各処理機能は、サーバ側の動作（ネットワーク加入，グループ変更等）に基づいて実行されるものについて説明したが、次にクライアント側の動作（ネットワーク加入，グループ変更等）に基づいて実行される各処理機能について説明する。
【０１７３】
まず、クライアント側の制御装置は、図５２に示すフローチャートからなるＩＤ要求機能を実施する。すなわち、ネットワークに加入したか否かを判断し、加入したならばグループ管理情報記憶部３５内に保持している全てのグループについて、グループ単位で以下に示すステップ２５３から２５９までの処理を実行する（ＳＴ２５０〜ＳＴ２５２）。
【０１７４】
つまり、サーバ・クライアント属性を認識し、クライアント属性になっているか否かを判断する（ＳＴ２５３）。そして、サーバ属性の場合には、クライアント側の処理は不要であるので、ステップ２７１に戻り次のグループについての処理に移行する。
【０１７５】
一方、クライアント属性のグループの場合、一斉同報により、該当グループのＩＤ回答を要求する（ＳＴ２５４）。このＩＤ回答要求に応答し、その該当グループについてのサーバはＩＤを送信してくるので、係る応答があるか否かを判断する（ＳＴ２５５）。そして、応答があった場合には、受信したＩＤと、自己が保有する該当グループのＩＤを比較し（ＳＴ２５６）、同じ場合には「名前解決要求なし」のレスポンスを返し（ＳＴ２５７）、ＩＤが違う場合には「名前解決要求あり」のレスポンスを返す（ＳＴ２５８）。なお、一定時間経過しても応答がない（タイムアウト）場合には、そのグループについての処理を終了する（ＳＴ２５９）。
【０１７６】
また、係るクライアントがネットワークに加入した場合などにおけるサーバ側の処理は、そのサーバ側の制御装置の論理名調停部１９が、図５３に示すフローチャートからなるＩＤ情報要求への返答機能を実施する。
【０１７７】
すなわち、クライアントから送られてくるＩＤ回答要求の受信を待つ（ＳＴ２６０，ＳＴ２６１）。そして、受信したならば、グループ管理情報記憶部３５をアクセスし、該当グループを探す（ＳＴ２６２）。そして、検索した該当グループの属性がサーバ属性であるか否かを判断し（ＳＴ２６３）、クライアント属性の場合には返信する必要がないのでステップ２６０に戻り次の受信を待つ。そして、サーバ属性の場合には、そのグループ名とＩＤのペアを送信元の制御装置に向けて返信する（ＳＴ２６４）。
【０１７８】
すると、この返信に対してクライアント側からは、上記した図５２のステップ２５７或いは２５８のレスポンス（応答）が返ってくるので、係る応答の有無を判断する（ＳＴ２６５）。そして、応答があった場合には、名前解決要求であるか否かを判断し（ＳＴ２６６）、名前解決要求の場合には、図４６に示す名前解決処理を実施する（ＳＴ２６７）。
なお、応答が「名前解決要求なし」の場合（ステップ２６６でＮｏ）と、応答がなくタイムアウトした場合（ステップ２６８でＹｅｓ）には、そのまま処理を終了する。
【０１７９】
図５４は、上記したグループ単位での名前解決を行う実施の形態における変形例を示している。この変形例は、サーバ側の制御装置において、グループに属するネットワークグローバル変数のうちその制御装置（サーバ）への入力変数となる変数については、ある１つの装置から入力され、複数の装置から入力されないようにしている。具体的には、参照カウンタを設け、参照カウンタが０（何れの装置も未参照）の場合に入力変数の名前解決を図るようにしている。
【０１８０】
具体的には、図５４と図４６を比較すると明らかなように、図４６に示した名前解決処理を基本とし、出力変数についての名前解決を実行した（ＳＴ１９３）後に、参照カウンタのカウント値を確認する（ＳＴ１９５）。そして、カウント値が０の場合には入力変数の名前解決を行う（ＳＴ１９４）。また、カウント値が０以外の場合には入力変数の名前解決をすることなくステップ１９１に戻り、名前解決要求局リストに登録された次の制御装置に対する処理に移行する。さらに、入力変数の名前解決をしたならば、参照カウンタをインクリメントする（ＳＴ１９６）。これにより、以後はその名前解決をした入力変数に対する名前解決はスキップされる（ステップ１９５で参照カウンタの値が０以外となるため）。この参照カウンタは、プログラミング装置などによりリセットできるようにしている。なお、その他の処理ステップは、図４６に示したものと同様であるので、同一ステップ番号を付し、その詳細な説明を省略する。
【０１８１】
図５５は、さらに別の実施の形態を示している。すなわち、上記したグループ管理する実施の形態を基本とし、グループに属するネットワークグローバル変数が全て同じでない場合に、該当制御装置内のアプリケーションプログラムから該当グループに属するネットワークグローバル変数のデータにアクセスすることを禁止する機能を付加している。すなわち、サーバ側とクライアント側のグループ名が一致しており名前解決を実行した結果、グループに含まれるネットワークグローバル変数のうち一つでも名前，データ型などが一致しなかった場合は、グループ認証が失敗したと判断し、間接参照テーブル内のアドレスを無効、またはエラー値を含む特定のアドレスに書き替える。
【０１８２】
具体的には、図４９に示す間接参照テーブル作成及び更新処理において、ステップ２７３，ステップ２７４でＮｏとなった際に継続処理を中断し、図５５に示すエラー処理を実行する機能を付加する。そして、このエラー処理は、該当グループのＥｘｐｏｒｔリストとＩｍｐｏｒｔリストを先頭から順に検索し（ＳＴ２８０）、変数名から変数名データベースを検索し、その変数の間接参照テーブル位置を取得する（ＳＴ２８２）。そして、取得した間接参照テーブル位置に、エラー値を含む無効アドレス或いは特定アドレスを格納する（ＳＴ２８３）。係る位置取得とアドレス格納の処理をリストの最後まで行ったならば処理を終了する（ＳＴ２８１）。
【０１８３】
図５６は、さらに別の追加機能（安全対策）を付与した実施の形態を示している。すなわち、本形態では、制御装置１にソフトウェアスイッチ，ロックボタン，ディップスイッチなどの名前解決のロックスイッチを設ける。そして、このスイッチをＯＮにすると、上記したグループ名，ＩＤが一致するか否かの判断をすることなく、名前解決処理はしないようにする。これにより、例えば名前解決をする必要がないことがわかっている場合に、係るスイッチをＯＮにすることにより、名前解決をするか否かの判断をする処理も行わずに、実際のプログラムの実行に移行できる。よって、より迅速な立ち上げが行える。
【０１８４】
具体的には、図５６に示すように、ロックスイッチの状態を検出し（ＳＴ２９０）、ロックスイッチがＯＮか否かを判断する（ＳＴ２９１）。そして、ＯＮならば、名前解決処理等の前処理をスキップし、実際のシステム稼動のためのプログラムの実行に移行する。また、ロックスイッチがＯＦＦの場合には、図４４等に示すＩＤ情報交換などの名前解決の必要性の有無の判断ならびに、必要に応じて名前解決処理を実行する（ＳＴ２９２）。なお、名前解決のロックスイッチは、制御装置の実行モードに自動的に連動するようにしてもよい。
【０１８５】
図５７は、さらに別の実施の形態を示している。本実施の形態は、上記したグループ管理情報に従ってグループ単位で名前解決処理をする制御装置に接続するプログラミング装置であり、図５７はそのプログラミング装置の機能を示している。
【０１８６】
すなわち、このプログラミング装置は、グループとそのグループに属するネットワークグローバル変数を管理し、グループ毎にユニークなＩＤを添付するＩＤ添付機能を備え、グループに属するネットワークグローバル変数の属性並びなど変数のバインディングに影響ある要素が変化した場合にグループのＩＤを更新するＩＤ更新機能を備えている。
【０１８７】
具体的には、まず処理対象の制御装置１のグループ管理情報記憶部３５に格納されているグループ管理情報をアップロードして一時退避する（ＳＴ３００）。そして、ユーザがプログラムを編集した後、その編集後のネットワークグローバル変数の情報からグループ管理情報を生成する（ＳＴ３０１，ＳＴ３０２）。
【０１８８】
次いで、ステップ３００で退避した以前のグループ管理情報を読み出し、ステップ３０２で生成したグループ管理情報と１グループずつ比較する（ＳＴ３０３）。そして、生成したグループが新グループか否かを判断する（ＳＴ３０４）。つまり、一時退避したグループ中に存在しない場合には、新グループとなるのでこの分岐判断はＹｅｓとなり、新しいＩＤを添付する（ＳＴ３０７）。これが、ＩＤ添付機能である。
【０１８９】
また、新グループでない場合には、その内容を比較し、同じか否かを判断する（ＳＴ３０５）。そして、同じ場合には、ステップ３０６に進み、古いＩＤをそのまま使用する。また、異なる場合には、ステップ３０５の分岐判断でＮｏとなるので、ステップ３０７に進み、新しいＩＤを添付する（ＳＴ３０７）。これが、ＩＤ更新機能である。そして、上記のようにしてＩＤの付与を行った新しいグループ管理情報を、制御装置へダウンロードして処理を終了する（ＳＴ３０８）。
【０１９０】
なお、上記した各実施の形態においては、何れもネットワークに接続された各制御装置が持つ論理名（ネットワークグローバル変数）で定義されたすべてのデータについて動的に名前解決をするように説明したが、本発明はこれに限ることはなく、一部について動的に名前解決をすることも含む。つまり、ネットワークに接続された制御装置間で通信を行い、論理名についての関連情報，記憶位置情報等の更新処理を行うのは、すべてのデータについて行っても良いし、一部のデータのみについて行っても良い。
【０１９１】
すなわち、プログラミングツールは、制御装置で実行されるプログラムを開発するための環境であり、ユーザがラダー言語などで作成したプログラムをコンパイルしたり、ライブラリをリンクしたりして制御装置で実行可能な形式に変換する機能を持つ。そして、プログラミングツール上では、複数の制御装置のプログラム，変数（データ）の情報を１つのプロジェクトとして管理する。従って、そのプログラミングツールは、プロジェクトに含まれる複数の制御装置のプログラムで使われている変数（データ）の情報がわかっているので、プログラミング上で名前解決を行うことができる。これを静的名前解決と称する。この静的名前解決は、動的名前解決と同様のアルゴリズムに従ってツール上で処理することもできるし、ツールがすべての変数を知っているので、ツール側で一括処理するようにしてもよい。そして、静的名前解決が行われなかったものについて動的名前解決を行う。
【０１９２】
産業上の利用可能性
本発明では、具体的なデータの記憶位置情報を知らなくても、論理名でアクセスすることができるので、通信処理を意識することなく、共有するデータへのアクセスが容易に行える。また、制御装置等を稼動するためのユーザプログラムは、記憶位置情報を組み込むことができるので、容易にプログラムを組むことができ、また、仮に後でデータを記憶する記憶位置が変更されても、ユーザプログラムまでは変更する必要がない（関連情報を修正するだけですむ）。よって、データをアクセスするための開発並びにその後のシステム変更に応じた修正も容易に行えるので好ましい。
【図面の簡単な説明】
【０１９３】
【図１】本発明に係る制御装置（ノード）の好適な一実施の形態を示すブロック図である。
【図２】本形態の機能の概要を説明する図である。
【図３】制御部の内部構造の一例を示す図である。
【図４】リンクメモリのデータ構造の一例を示す図である。
【図５】変数データベースのデータ構造の一例を示す図である。
【図６】間接参照テーブルのデータ構造の一例を示す図である。
【図７】Ｅｘｐｏｒｔ変数リストのデータ構造の一例を示す図である。
【図８】Ｉｍｐｏｒｔ変数リストのデータ構造の一例を示す図である。
【図９】Ｒｅｍｏｔｅ変数リストのデータ構造の一例を示す図である。
【図１０】ネットワークシステムの好適な一実施の形態を示す図である。
【図１１】プログラミング装置を用いた制御装置へのダウンロードの動作を説明する図である。
【図１２】論理名調停部の機能の一部であるＥｘｐｏｒｔ変数リストの作成機能を示すフローチャートである。
【図１３】論理名調停部の機能の一部であるＩｍｐｏｒｔ変数リストの作成機能を示すフローチャートである。
【図１４】Ｅｘｐｏｒｔ変数リストを配送する側の処理機能を説明するフローチャートである。
【図１５】Ｅｘｐｏｒｔ変数リストを受信する側の処理機能を説明するフローチャートである。
【図１６】Ｒｅｍｏｔｅ変数リストとＩｍｐｏｒｔ変数リストから間接参照テーブルを作成する機能を説明する図である。
【図１７】論理名調停部の機能の一部である間接参照テーブルの更新機能を示すフローチャートである。
【図１８】論理名調停部の機能の一部である間接参照テーブルの更新機能の具体例を示す概念図である。
【図１９】制御実行部の機能を示すフローチャートである。
【図２０】制御装置の実行フェーズの一例を示す図である。
【図２１】制御装置内の制御部側ＲＡＭと通信側ＲＡＭ間でのデータの転送を説明する図である。
【図２２】制御装置内の制御部側ＲＡＭと通信側ＲＡＭ間でのデータの転送のシーケンス（制御部側）を示すフローチャートである。
【図２３】制御装置内の制御部側ＲＡＭと通信側ＲＡＭ間でのデータの転送のシーケンス（通信部側）を示すフローチャートである。
【図２４】オンラインエディットの機能（変数追加）を説明するフローチャートである。
【図２５】オンラインエディットの機能（変数削除）を説明するフローチャートである。
【図２６】オンラインエディットの変更例における制御実行部のフローチャートを示す図である。
【図２７】オンラインエディットの変更例における間接参照テーブル書き替え処理機能を示すフローチャートを示す図である。
【図２８】バージョン情報チェック機能を備えた制御装置の要部である通信部の内部構造を示す図である。
【図２９】選択手段の機能を示すフローチャートである。
【図３０】本発明に係る制御装置の他の実施の形態を示す図である。
【図３１】図３０に示す実施の形態で使用されるメッセージフォーマットの一例を示す図である。
【図３２】図３０に示す実施の形態におけるＩｍｐｏｒｔ変数リストの問い合わせ（一括）に基づく処理機能を示すフローチャートである。
【図３３】図３０に示す実施の形態におけるＩｍｐｏｒｔ変数リストの問い合わせ（１変数ずつ）に基づく処理機能を示すフローチャートである。
【図３４】変形例を示す図である。
【図３５】図３４に示す変形例を実施する機能を示すフローチャートである。
【図３６】他の実施の形態の要部を示すフローチャートである。
【図３７】さらに別の実施の形態に用いられるメッセージのデータフォーマットの一例を示す図である。
【図３８】さらに別の実施の形態を説明する図である。
【図３９】さらに別の実施の形態を説明する図である。
【図４０】本発明の別の実施の形態であるグループ単位で名前解決を図る本形態の機能の概要を説明する図である。
【図４１】図４０に示す実施の形態の制御装置同士のインタフェース接続を示す模式図である。
【図４２】図４０に示す実施の形態で用いられる制御装置の制御部の内部構造の一例を示す図である。
【図４３】グループ管理情報記憶部のデータ構造の一例を示す図である。
【図４４】サーバがネットワークに加入等した等のサーバ側の制御装置の交換機能を示すフローチャートである。
【図４５】図４４に示すフローチャートの名前解決要求局リスト作成処理の具体的な処理アルゴリズムを示すフローチャートである。
【図４６】図４４に示すフローチャートの名前解決処理の具体的な処理アルゴリズムを示すフローチャートである。
【図４７】図４６に示す出力変数の名前解決処理の具体的な処理アルゴリズムを示すフローチャートである。
【図４８】図４６に示す入力変数の名前解決処理の具体的な処理アルゴリズムを示すフローチャートである。
【図４９】図４８に示す間接参照テーブル作成処理の具体的な処理アルゴリズムを示すフローチャートである。
【図５０】クライアント側の制御装置の交換機能を示すフローチャートである。
【図５１】名前解決をする際の具体的な処理手順を示すフローチャートである。
【図５２】クライアントがネットワークに加入等した等のクライアント側の制御装置の交換機能を示すフローチャートである。
【図５３】クライアントがネットワークに加入等した等のサーバ側の制御装置のＩＤ情報要求への返答機能を示すフローチャートである。
【図５４】変形例を示すフローチャートである。
【図５５】別の変形例を示すフローチャートである。
【図５６】さらに別の変形例を示すフローチャートである。
【図５７】プログラミング装置の機能を示すフローチャートである。
【符号の説明】
【０１９４】
１  制御装置
２  ネットワーク
１１  制御部
１２  通信部
１５  リンクメモリ
１６  間接参照テーブル
１７  変数データベース
１８  制御実行部
１９  論理名調停部
２０  Ｅｘｐｏｒｔ変数リスト
２１  Ｉｍｐｏｒｔ変数リスト
２２  Ｒｅｍｏｔｅ変数リスト
【図１】
2009009607.tif 000003
【図２】
2009009607.tif 000004
【図３】
2009009607.tif 000005
【図４】
2009009607.tif 000006
【図５】
2009009607.tif 000007
【図６】
2009009607.tif 000008
【図７】
2009009607.tif 000009
【図８】
2009009607.tif 000010
【図９】
2009009607.tif 000011
【図１０】
2009009607.tif 000012
【図１１】
2009009607.tif 000013
【図１２】
2009009607.tif 000014
【図１３】
2009009607.tif 000015
【図１４】
2009009607.tif 000016
【図１５】
2009009607.tif 000017
【図１６】
2009009607.tif 000018
【図１７】
2009009607.tif 000019
【図１８】
2009009607.tif 000020
【図１９】
2009009607.tif 000021
【図２０】
2009009607.tif 000022
【図２１】
2009009607.tif 000023
【図２２】
2009009607.tif 000024
【図２３】
2009009607.tif 000025
【図２４】
2009009607.tif 000026
【図２５】
2009009607.tif 000027
【図２６】
2009009607.tif 000028
【図２７】
2009009607.tif 000029
【図２８】
2009009607.tif 000030
【図２９】
2009009607.tif 000031
【図３０】
2009009607.tif 000032
【図３１】
2009009607.tif 000033
【図３２】
2009009607.tif 000034
【図３３】
2009009607.tif 000035
【図３４】
2009009607.tif 000036
【図３５】
2009009607.tif 000037
【図３６】
2009009607.tif 000038
【図３７】
2009009607.tif 000039
【図３８】
2009009607.tif 000040
【図３９】
2009009607.tif 000041
【図４０】
2009009607.tif 000042
【図４１】
2009009607.tif 000043
【図４２】
2009009607.tif 000044
【図４３】
2009009607.tif 000045
【図４４】
2009009607.tif 000046
【図４５】
2009009607.tif 000047
【図４６】
2009009607.tif 000048
【図４７】
2009009607.tif 000049
【図４８】
2009009607.tif 000050
【図４９】
2009009607.tif 000051
【図５０】
2009009607.tif 000052
【図５１】
2009009607.tif 000053
【図５２】
2009009607.tif 000054
【図５３】
2009009607.tif 000055
【図５４】
2009009607.tif 000056
【図５５】
2009009607.tif 000057
【図５６】
2009009607.tif 000058
【図５７】
2009009607.tif 000059
【手続補正書】
【提出日】平成20年10月14日(2008.10.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データのインリフレッシュ処理、アウトリフレッシュ処理、ユーザプログラム実行処理を繰り返すプログラマブルコントローラが複数台ネットワークに接続され、
すべてのプログラマブルコントローラにおけるデータについて、特定されるデータが同一のものに対しては同一の論理名とする定義をし、その定義されたデータを各プログラマブルコントローラで共有するネットワークシステムであって、
プログラマブルコントローラのそれぞれが、
そのプログラマブルコントローラが必要とするデータを所定の記憶領域に記憶保持する記憶部と、
前記論理名と、その論理名に対応するデータを格納した前記記憶部の記憶位置情報を関連付けた関連情報を記憶保持した関連情報記憶部と、
データ共有する通信先のプログラマブルコントローラとの間で、前記関連情報記憶部の論理名，関連情報に基づいて前記共有するデータの送受を行う通信部と、
前記関連情報の設定が変更された場合に、前記他のプログラマブルコントローラに対して、前記関連情報の変更内容を通知する通知手段と、
を備えたことを特徴とするネットワークシステム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、ネットワークシステムに関するものである。より具体的には、複数のノード，制御装置，プロセッサ間でデータの共有を図るシステム（例えば、分散制御システム等）における当該データの共有化の処理の改良に関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
この発明によるネットワークシステムでは、データのインリフレッシュ処理、アウトリフレッシュ処理、ユーザプログラム実行処理を繰り返すプログラマブルコントローラが複数台ネットワークに接続され、すべてのプログラマブルコントローラにおけるデータについて、特定されるデータが同一のものに対しては同一の論理名とする定義をし、その定義されたデータを各プログラマブルコントローラで共有するネットワークシステムであって、 プログラマブルコントローラのそれぞれが、そのプログラマブルコントローラが必要とするデータを所定の記憶領域に記憶保持する記憶部と、前記論理名と、その論理名に対応するデータを格納した前記記憶部の記憶位置情報を関連付けた関連情報を記憶保持した関連情報記憶部と、データ共有する通信先のプログラマブルコントローラとの間で、前記関連情報記憶部の論理名，関連情報に基づいて前記共有するデータの送受を行う通信部と、
前記関連情報の設定が変更された場合に、前記他のプログラマブルコントローラに対して、前記関連情報の変更内容を通知する通知手段と、を備えて構成した。
また、好ましくは、前記ノードは、複数のノード間で共有するデータの論理名をグループ化し、グループ名と更新情報を関連付けて保持するグループ管理情報を記憶保持し、前記複数のノードに記憶保持された同一のグループ名に対する更新情報が不一致の場合に、前記関連情報に影響を与える時と判断し、前記関連情報の更新処理をするように構成することである。
ノードの記憶部は、実施の形態では、「リンクメモリ」に相当する。記憶部の記憶位置情報は、実施の形態では、「アドレス，ポインタ」に相当する。ノードの処理は、実施の形態では、「ユーザプログラムの実行」に相当する。
ここで、通信相手のノードの状態が変化するとは、ネットワークに対する着脱や、再コンパイル等によりノードに記憶された情報が変化したり、物理的にネットワークに接続されていても、動作を停止・開始するなどの他、各種の状態の変化がある。つまり、ネットワークに新たに制御装置を追加した（プラグイン）場合などももちろん含む。
また、本発明に係る制御方法は、ネットワークに接続された複数の制御装置間でデータを共有することのできる制御装置における制御方法である。そして、前記制御装置に実装されたユーザプログラムが、記憶部に格納されたデータをアクセスするに際し、前記データが格納された記憶位置情報と、そのデータに付けた論理名を関連付けた関連情報を記憶保持し、前記ユーザプログラムは、論理名に基づく前記関連情報を取得し、前記記憶部へアクセスするようにした。
そして、上記方法を実現するために適した制御装置としては、ネットワークに接続された複数の制御装置間でデータを共有することのできる制御装置であって、他の制御装置との間で、データ交換をする通信部と、前記ネットワークを介して共有するデータを格納する記憶部と、前記共有するデータは論理名で定義し、その論理名と、その論理名に対応するデータを格納した前記記憶部の記憶位置情報を関連付けた関連情報を格納する関連情報記憶部と、前記論理名に基づいて前記関連情報記憶部にアクセスし、その論理名に対応する前記位置情報を取得するとともに対応するデータが記憶される前記記憶部の記憶領域にアクセスする機能を有する制御実行部と、前記記憶部内の記憶位置情報の変更に基づき、前記関連情報記憶部の前記関連情報を更新する更新手段を備えて構成した。
ここで、共有するデータを格納する記憶部は、実施の形態では、「リンクメモリ１５」に相当する。記憶部の記憶位置情報は、実施の形態では、「アドレス，ポインタ」等に相当する。関連情報記憶部は、実施の形態では、「間接参照テーブル１６と変数データベース１７」により実現している。記憶部内の記憶位置情報の変更は、追加・削除等を含む広い概念である。更新手段は、実施の形態では、「論理名調停部１９」に相当する。
そして、好ましくは前記関連情報記憶部は、記憶部に格納されたデータをアクセスするために用いる記憶位置情報が格納された間接参照テーブルと、論理名と、その論理名についての記憶位置情報が格納された前記間接参照テーブル内の記憶位置情報を対応付けた対応テーブルとを備えて構成することである。もちろん、係る構成は無くても良い。そして、記憶位置情報を対応付けた対応テーブルは、実施の形態では、「変数データベース」に相当する。
さらに、上記したグループ単位での更新処理をするネットワークシステムを構築するための好ましい制御装置としては、上記した各制御装置の発明を前提とし、前記ネットワークに接続された複数の制御装置間で共有するデータの論理名をグループ化し、グループ名と更新情報とそのグループに対する所有権の有無情報を関連付けて保持するグループ管理情報記憶手段を設け、グループ名と更新情報が他の制御装置と不一致の時に、前記更新手段がそのグループに属するデータについての前記関連情報記憶部の前記関連情報を更新するための処理を実行する機能を設けることである。