(57)【特許請求の範囲】
【請求項１】
ネットワークに接続される複数の制御装置間で変数データを共有する分散制御システムと、前記複数の制御装置のためのプログラミングツールとを備えたシステムであって、
前記プログラミングツールは、
前記複数の制御装置がそれぞれ使用する変数データを特定する論理名と、その変数データのサイズと、を対応付けたテーブルをその変数データを出力する制御装置と関連づけて記憶する変数データベースと、
前記変数データベースをアクセスして、前記変数データを出力する制御装置との関連づけから、その変数データを出力する制御装置を特定し、その特定した制御装置における出力変数の変数データを格納するエリアにおけるその変数データを格納する位置を特定するための前記エリアの先頭からのオフセット値からなる相対アドレスを、１番目に格納する変数データの前記オフセット値は０とし、ｎ番目に格納する変数データの前記オフセット値は１番目からｎ−１番目までに格納した各変数データのサイズの総和となるように求め、その求めた相対アドレスを論理名と関連付けて前記変数データベースに格納する静的名前解決手段と、
前記相対アドレスを含む変数データベースを前記制御装置にダウンロードする手段と、を備え
前記制御装置は、
ネットワークを介して前記他の制御装置との間で、データ交換をする通信部と、
前記通信部から出力する出力変数の変数データを格納する自ノードエリア記憶部と、
前記通信部を介して他の制御装置から送られてきた入力変数の変数データを格納する他ノードエリア記憶部と、
前記自ノードエリア記憶部並びに前記他ノードエリア記憶部に格納された変数データをアクセスするために用いる絶対アドレスからなる記憶位置情報が格納される間接参照テーブルと、
前記変数データを特定する論理名と、その論理名についての前記記憶位置情報が格納された前記間接参照テーブル内の格納領域を特定する格納領域特定情報と、を対応付けた対応テーブルと、
を備え、
前記他ノードエリア記憶部は、前記他の制御装置ごとに連続した格納領域が設定され、
前記複数の制御装置のうち同一の論理名の変数データを前記出力変数としてもつ制御装置は、その制御装置の前記自ノードエリア記憶部におけるその変数データを格納する格納位置を、その自ノードエリア記憶部の先頭アドレスに前記プログラミングツールから与えられるその変数データについての相対アドレスを加算して、その変数データを格納する前記自ノードエリア記憶部の格納位置を特定する前記記憶位置情報を求め、求めた記憶位置情報を前記間接参照テーブルに記憶する自ノードエリア記憶部用の変換手段を備え、
前記複数の制御装置のうち前記同一の論理名の変数データを前記入力変数としてもつ制御装置は、その制御装置の前記他ノードエリア記憶部に設定された前記出力変数としてもつ制御装置用の前記格納領域における格納位置を、その格納領域の先頭アドレスに前記プログラミングツールから与えられるその変数データについての相対アドレスを加算して、その変数データを格納する前記他ノードエリア記憶部の格納位置を特定する前記記憶位置情報を求め、求めた記憶位置情報を前記間接参照テーブルに記憶する他ノードエリア記憶部用の変換手段を備えたことを特徴とするシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、プログラミングツール及び複数の制御装置を備えたシステムに関するものである。より具体的には、複数のノード，制御装置，プロセッサ間でデータの共有を図るシステム（例えば、分散制御システム等）における当該データの共有化の処理の改良に関する。
【０００２】
【従来の技術】
複数台のＰＬＣ等の制御装置をネットワークに接続し、それら複数の制御装置がデータを共有しながら協調・同期制御等を実行することがある。データは、スイッチやセンサなどの制御機器の接点の状態としての入力データや、制御装置が制御する被制御装置の状態としての出力データが含まれている。その場合、各制御装置がこのようなデータを共有するためには、それぞれのＩ／Ｏを物理的に繋ぐか、つまり、制御機器や被制御装置を、制御装置側の入出力端子に電気的結線するか、データを共有するためのユーザプログラムを別途作成し、それを実行させる方式が知られている。
【０００３】
また、各制御装置がデータを共有するための別の方式としては、データリンク方式と称されるものもある。このデータリンク方式は、複数の制御装置間で、サイクリックにデータを交換（リンク）する方式である。例えば、制御装置としての各ノードにそれぞれメモリテーブルを持たせ、互いにデータを交換することで各テーブルの内容を同じにすることによりデータの共有をする。このとき、データを交換するためのアクセスは、互いにメモリアドレス（物理アドレス）を指定して行うようにしている。さらに、そのテーブルは、制御装置以外の別のツールにより一括して設定する。この方式では、ユーザプログラム開発時に通信を意識しないで済むというメリットが有る。
【０００４】
なお、各ノードごとで互いに自ノードで必要なデータだけを、そのデータを持つ相手のノード間でデータ交換することでデータ共有し、自ノードで不必要なデータは共有しないようにした方式もある。
【０００５】
【発明が解決しようとする課題】
しかしながら、上記した従来方式では、以下に示す問題が有る。すなわち、前者のユーザプログラムを用いた方式では、制御装置（ＰＬＣ）を動作させるラダープログラム中に通信ロジックを埋め込む必要が有り、ユーザプログラム開発が複雑となり、さらには、メンテナンスも困難となる。
【０００６】
また、後者のデータリンク方式の場合には、データをリンクする際のメモリエリアの割り付け設定自体が面倒となる。一旦メモリエリアの割り付けを設定した後に、そのメモリエリアの割り付けの変更が有ると、割り付け設定のやり直しがいちいち必要となる。しかも、新たな制御装置をネットワークに追加する場合には、メモリエリアの再割り付けの変更が、ネットワークに既に接続されている制御装置にまで及ぶこともあり、システムの停止をしなければならないという問題があった。
【０００７】
この発明は、通信処理を意識することなく、共有するデータへのアクセスが容易に行え、係るアクセスするための開発並びにその後のシステム変更に応じた修正も容易に行え、システム稼動中に停止することなく新たなノード・制御装置等をネットワークに接続することができ、論理名・変数データの参照の照合を効率よく解決することができるシステムを提供することを目的としている。
【０００８】
【課題を解決するための手段】
この発明に係るプログラミングツールは、ネットワークに接続される複数の制御装置間で変数データを共有する分散制御システムと、前記複数の制御装置のためのプログラミングツールとを備えたシステムである。そして前記プログラミングツールは、前記複数の制御装置がそれぞれ使用する変数データを特定する論理名と、その変数データのサイズと、を対応付けたテーブルをその変数データを出力する制御装置と関連づけて記憶する変数データベースと、前記変数データベースをアクセスして、前記変数データを出力する制御装置との関連づけから、その変数データを出力する制御装置を特定し、その特定した制御装置における出力変数の変数データを格納するエリアにおけるその変数データを格納する位置を特定するための前記エリアの先頭からのオフセット値からなる相対アドレスを、１番目に格納する変数データの前記オフセット値は０とし、ｎ番目に格納する変数データの前記オフセット値は１番目からｎ−１番目までに格納した各変数データのサイズの総和となるように求め、その求めた相対アドレスを論理名と関連付けて前記変数データベースに格納する静的名前解決手段と、前記相対アドレスを含む変数データベースを前記制御装置にダウンロードする手段を備え、
前記通信部から出力する出力変数の変数データを格納する自ノードエリア記憶部と、
前記通信部を介して他の制御装置から送られてきた入力変数の変数データを格納する他ノードエリア記憶部と、
前記自ノードエリア記憶部並びに前記他ノードエリア記憶部に格納された変数データをアクセスするために用いる絶対アドレスからなる記憶位置情報が格納される間接参照テーブルと、
前記変数データを特定する論理名と、その論理名についての前記記憶位置情報が格納された前記間接参照テーブル内の格納領域を特定する格納領域特定情報と、を対応付けた対応テーブルと、
を備え、
前記他ノードエリア記憶部は、前記他の制御装置ごとに連続した格納領域が設定され、
前記複数の制御装置のうち同一の論理名の変数データを前記出力変数としてもつ制御装置は、その制御装置の前記自ノードエリア記憶部におけるその変数データを格納する格納位置を、その自ノードエリア記憶部の先頭アドレスに前記プログラミングツールから与えられるその変数データについての相対アドレスを加算して、その変数データを格納する前記自ノードエリア記憶部の格納位置を特定する前記記憶位置情報を求め、求めた記憶位置情報を前記間接参照テーブルに記憶する自ノードエリア記憶部用の変換手段を備え、
前記複数の制御装置のうち前記同一の論理名の変数データを前記入力変数としてもつ制御装置の前記他ノードエリア記憶部に設定された前記出力変数としてもつ制御装置用は、その制御装置の前記格納領域における格納位置を、その格納領域の先頭アドレスに前記プログラミングツールから与えられるその変数データについての相対アドレスを加算して、その変数データを格納する前記他ノードエリア記憶部の格納位置を特定する前記記憶位置情報を求め、求めた記憶位置情報を前記間接参照テーブルに記憶する他ノードエリア記憶部用の変換手段を備えるようにした。
【００１０】
ここで、共有するデータを格納する記憶部は、実施の形態では「リンクメモリ１５」に相当する。記憶部の記憶位置情報は、実施の形態では「アドレス，ポインタ」等に相当する。各変換手段は、実施の形態では「静的名前解決結果変換部２５」に相当する。
【００１２】
本発明によれば、静的名前解決は、プログラミングツール内で名前解決するので、制御装置間での通信が不要となり処理時間は短くなる。そして、その解決して得られた相対関連情報を制御装置にダウンロードすることにより、制御装置が持つ関連情報に組み込むことができる。すると、プログラミングツールで相対アドレスが生成されたデータ（変数）については、相対アドレスを実際に存在する位置情報に変更する処理を行えばよいので、制御装置間で実際に通信を行い、関連情報を取得する処理対象のデータ（変数）が少なくなる。よって、制御装置側でも、係る関連情報を生成する場合に、その処理時間が短くなる。
【００１３】
この発明の以上説明した構成要素は可能な限り組み合わせることができる。この発明による制御装置，プログラミングツールを構成する各手段，機能を専用のハードウェア回路によって実現することができるし、プログラムされたコンピュータによって実現することもできる。
【００１４】
【発明の実施の形態】
図１は、本発明の好適な一実施の形態を示している。同図に示すように、ＰＬＣ等の制御装置１とプログラミングツール３とが接続され、プログラミングツール３で作成されたユーザプログラムが、制御装置１にダウンロードされる。
【００１５】
各部の詳細な説明をする前に、本発明の前提，概要を説明する。上記した制御装置１は、複数個用意され、それぞれがネットワークに接続される。そして、それら複数の制御装置１がすべてのデータまたは必要なデータを共有しながら協調・同期制御等を実行する分散制御システムに適用される。
【００１６】
このようなデータをネットワークグローバル変数（以下、ネット変数と略）を用いて共有する仕組みを持つ制御装置をネットワークで接続し、そのネット変数の参照解決を制御装置１同士が自動的に行うため、個々の制御装置１毎に格納されている別々の制御プログラムを組合わせて容易に分散制御システムとして統合できる。
【００１７】
本形態における制御装置１は、制御装置１同士で変数情報を自動的に交換し、データ転送前に一括して変数をメモリ上に割り当てる仕組み（名前解決処理）を持ち、かつ電源ＯＮ時やネットワーク加入時にこの名前解決処理を実施する。この名前解決処理は、実際に制御装置１を動作させながら行うことから動的名前解決処理と称する。なお、具体的な動的名前解決処理のアルゴリズムは、後述する。
【００１８】
ところで、ネットワークに接続された各制御装置が持つ論理名（ネットワークグローバル変数）で定義されたすべてのデータについて動的に名前解決をするようにすると、通信を介して変数の情報を制御装置間で交換するので、通信が遅いと名前解決に要する時間が長くなる。同様のことは、処理対象となるネット変数の数が増えた場合も同様の問題が生じる。
【００１９】
一方、プログラミングツール３は、制御装置で実行されるプログラムを開発するための環境であり、ユーザがラダー言語などで作成したプログラムをコンパイルしたり、ライブラリをリンクしたりして制御装置で実行可能な形式に変換する機能を持つ。そして、プログラミングツール３上では、複数の制御装置１のプログラム，変数（データ）の情報を１つのプロジェクトとして管理する。
【００２０】
そこで、プログラミングツール３において、プロジェクトに含まれる複数の制御装置１のプログラムで使われている変数（データ）の情報が予めわかっているときには、プログラミングツール３上で名前解決を行う機能を持たせている。これを静的名前解決と称する。この静的名前解決は、動的名前解決と同様のアルゴリズムに従ってツール上で処理することもできるし、ツールがすべての変数を知っているので、ツール側で一括処理するようにしてもよい。そして、静的名前解決が行われなかった残りの変数については必要に応じて動的名前解決を行う。
【００２１】
なお、静的名前解決を行った場合でも、実際にネットワークに接続されていないため、各デバイス等の絶対アドレスは不明であるので、相対アドレスにより定義することになる。そこで、実際にネットワークに接続した際に、動的名前解決の実行に伴い、相対アドレスを絶対アドレスに変換する機能も設けた。
【００２２】
次に、各部の説明を行う。まず、制御装置１について説明する。制御装置１は、制御部１１と通信部１２を備えている。制御部１１は、ラダーシステムを実行し、制御装置（ＰＬＣなど）１本来の制御を行う。通信部１２は、ネットワークに接続され、他の制御装置と通信する機能を持つ。具体的には、ネットワーク接続し、所定の通信プロトコルによりデータの送受（本発明との関係で言えば、共通のデータ交換）を行う通信コントローラ１２ａと、その通信コントローラ１２ａで通信制御する際のプロトコル変換をする際にデータを一時記憶したり、プロトコル変換したり、送受信先を特定する際の情報（データベース）を記憶保持するＲＡＭ１２ｂを有している。
【００２３】
一方、制御部１１は、接続された機器への制御プログラムや、ネットワーク接続された別の制御装置１と協調動作する際の制御プログラムなどを格納したＲＯＭ１１ａと、そのＲＯＭ１１ａに格納されたプログラムを実行するＭＰＵ１１ｂ及びＭＰＵ１１ｂにて各種処理を実行する際に必要なデータ（管理データ）を記憶するＲＡＭ１１ｃを有している。このハードウェア構成自体は基本的に従来と同様である。
【００２４】
ここで本発明では、図２に概念図で示すように、それぞれのデータを論理名（ネットワークグローバル変数）で定義し、各制御装置（ＰＬＣ）１に組み込まれたユーザプログラム（オブジェクトコード）は、論理名を指定して共有するデータを取得するようにしている。これにより、各制御装置１は対応するデータが記憶された物理アドレスを意識することなく、データの共有ができ、しかも物理アドレスを意識しないので、一旦登録後、共有するデータを記憶する物理アドレスを自由に変更することができる。
【００２５】
この概念の一例を示すと、ある制御装置（１）１で、Ｓｗｉｔｃｈが定義（図示の場合、変数名：値が「Ｓｗｉｔｃｈ１」として定義）されているとする。すると、別の制御装置（３）１が、制御装置（１）１のＳｗｉｔｃｈ１のデータがほしい場合には、制御装置（３）１のユーザプログラムは、変数名である「Ｓｗｉｔｃｈ１」を指定するとともに、そのデータを取得する命令を実行することにより、Ｓｗｉｔｃｈ１に関連付けられた具体的なデータを取得することができる。換言すると、同一内容のデータは、同一の論理名で定義され、ネットワーク上はその論理名が唯一存在することになる。つまり、異なるデータに対しては別の論理名が付される。
【００２６】
そして、データ内容に変更があった場合には、所定の制御装置１がその内容を書き替えることで、そのデータを共有する他の制御装置１に記憶された内容も書き替えられることになる。
【００２７】
次に、上記した機能を実現するための具体的な構成について説明する。図３に示すように、ＲＡＭ１１ｃの内部にネットワークを介して論理的に共有するデータ（変数データ）を格納するためのリンクメモリ１５と、このリンクメモリ１５に格納された各変数データを参照するために用いる間接参照テーブル１６と、論理名とメモリアドレス（間接参照テーブル１６のアドレス）とを関連付けた変数データベース１７を有している。なお、各部の詳細な説明は後述する。
【００２８】
一方、ＭＰＵ１１ｂには、間接参照テーブル１６を介してリンクメモリ１５にアクセスする機能を備えたＰＬＣ１の制御動作を実行するための制御実行部１８と、変数データベース１７を管理し、その変数データベース１７に格納された情報に基づき間接参照テーブル１６を変更する論理名調停部１９を備えている。
【００２９】
次に各部について説明する。まず、リンクメモリ１５は、上記したようにネットワークを介して論理的に共有しているデータを格納するためのメモリであり、そのデータ構造は例えば図４に示すようになっている。すなわち、同一の論理名は、ネットワーク上で唯一存在し、それを各制御装置（ＰＬＣ）で共有するため、ある論理名についてのデータに対する更新等の処理は、ネットワーク上のある１つの制御装置が実行する権限を有し、他の制御装置はその１つの制御装置から送られるデータを取得することになる。つまり、ある論理名についてのデータについては、上記１つの制御装置がそのデータに付いて更新等する機能と、それを他の制御装置に与える機能を持つ。
【００３０】
従って、図示するように、上記の自分が更新等の機能を持つ論理名（公開している論理名）についてのデータを格納する自ノードエリアと、他の制御装置に元となるデータが格納された論理名についての、そのデータのコピーを格納する他ノードエリアが有る。本形態では、データの転送効率を向上させるためにリンクメモリ１５をノードごとに分割したが、これに限る必要はない。
【００３１】
さらに、共有する同一の論理名（変数名）のデータ（変数データ）を記憶するエリア内のオフセット値は、各ノードで共通にしている。つまり、ある論理名Ｘについての変数データｘがノード（１）の自ノードエリアのオフセット値Ｎから所定サイズ分だけ格納されている場合（後述する間接参照テーブルの該当するポインタはＮとなっている）、別のノードにおいては他ノードエリアの所定位置に格納されることになる。そして、この格納位置はノード（１）用の他ノードエリアのオフセット値Ｎから所定サイズ分のエリアに格納されることになる。つまり、自己が必要とする他ノードで公開された変数データを、自己の他ノードエリアに格納する場合、その公開している他ノードにおける自ノードエリアの先頭からのオフセット値と同一のオフセット値に格納することになる。このように、各ノードエリアでのオフセット値を公開側と利用側で一致させることにより、データ共通化を維持するための各種処理を容易に行えるようにしている。
【００３２】
なお、実際のデータの送受に関しては、上記の与える機能を持つ制御装置が出力しても良いし、他の制御装置が元となるデータを持つ制御装置に対してデータを読みに行き、取得しても良い。
【００３３】
また、変数データベース１７のデータ構造は、図５に示すように、「論理名」，「タイプ」，「サイズ」，「入出力属性」，「メモリアドレス」，「静的な前解決済みフラグ」，「データリンクエリアオフセット」並びに「ビット位置」を関連付けたテーブルとなっている。ここで「サイズ」はその論理名に関する情報のデータサイズであり、「入出力属性」は、論理名で特定されるデータの送受方向を特定するものである。
【００３４】
つまり、入出力属性が「出力」のものは、そのノード（ＰＬＣ）に格納された論理名に関する情報を他のノードに向けて出力することを意味する。そして、その入出力属性が出力となっている論理名についてのデータが、リンクメモリ１５の自ノードエリアの所定領域に格納される。
【００３５】
また、入出力属性が「入力」のものは、そのノードで使用等する論理名に関する情報が、他のノードから送られてきたものを取得することを意味する。そして、その入出力属性が入力となっている論理名についてのデータが、リンクメモリ１５の他ノードエリアの所定領域に格納される。
【００３６】
「メモリアドレス」は、その論理名についての実際のデータが格納されているリンクメモリ１５の位置を特定するポインタが記憶される間接参照テーブル内のアドレス情報を記憶するものである。そして、本形態では、間接参照テーブルのオフセットを用いている。従って、この変数データベース１７に格納されたメモリアドレスを参照して間接参照テーブル１６にアクセスするためには、その間接参照テーブル１６のベースアドレスに上記オフセットを加えた値となる。
【００３７】
また、本形態では、間接参照テーブル１６に格納されて特定させるリンクメモリ１５のアドレス（ポインタ）が４バイトで表現されることを想定しているので、この変数データベース１７のメモリアドレスには、４の倍数の値が格納される。
【００３８】
「静的名前解決済みフラグ」は、その変数についての名前解決が、後述するプログラミングツール３によって既に行われているか否かを区別するためのフラグであり、「ＦＡＬＳＥ」であれば未解決であるので、通常の動的名前解決を行う。また、「ＴＲＵＥ」であれば静的名前解決は行われているので、静的名前解決時に設定された相対アドレスを、絶対アドレスに変更する処理をすることになる。また、「リンクリンクエリアオフセット」は、静的名前解決を行った結果得られた変数の相対アドレスを格納する領域である。
【００３９】
そして、図示の例では、論理名が「Ｓｗｉｔｃｈ１」のメモリアドレスは「００００」となっているので、図６に示す間接参照テーブル１６の先頭（１番目）の記憶領域に格納されたポインタで示すリンクメモリ１５内のデータが、その「Ｓｗｉｔｃｈ１」についてのデータとなる。同様に、論理名が「Ｍｏｔｏｒ１」のメモリアドレスは「０００４」となっているので、図６に示す間接参照テーブル１６の２番目の記憶領域に格納されたポインタで示すリンクメモリ１５内のデータが、その「Ｍｏｔｏｒ１」についてのデータとなる。
【００４０】
また、間接参照テーブル１６のデータ構造は、図６に示すように、各論理名についてのデータが格納されたリンクメモリ１５内のポインタを記憶している。そして、本形態では、リンクメモリ１５内の記憶エリアを特定するポインタは、４バイトで特定されており、上位３バイトでワード位置を特定し、下位１バイトでそのワード位置内で目的とするデータが記憶されているビット位置を特定するようにしている。
【００４１】
そして、これら格納された各ポインタが、どの論理名についてのポインタかは、上記したように変数データベース１７に格納された論理名とメモリアドレスの相関により特定されている。換言すると、間接参照テーブル１６の先頭からｎ番目のポインタは、予め所定の論理名についてのポインタであることが登録されており、それは変数データベース１７の記憶内容（メモリアドレス）を変えない以上不変となる。
【００４２】
つまり、仮にある論理名についてのデータの記憶エリアを変更した場合、対応する間接参照テーブル１６のその論理名についてのポインタを記憶したエリアに格納されたポインタを新しいものに更新することにより対応する。この場合でも変数データベース１７の記憶内容は変更しないで済む。従って、制御装置が実際の制御を行うプログラムは、データ共有する論理名に付いて情報を知る必要ができた場合に、まず変数データベース１７に格納されたメモリアドレスにしたがって間接参照テーブル１６をアクセスしてポインタを取得する。次いでそのポインタで指し示されたデータを取得することになる。これにより、具体的な記憶エリアの変動の有無に関わらず、上記プログラムはデータを取得し、正しく動作することができる。
【００４３】
さらに本形態では、ＲＡＭ１１ｃ内に、上記した間接参照テーブル１６の記憶内容や、実際の論理名に対応したデータの送受を行い、データの共有化をスムーズかつ確実に行うため、Ｅｘｐｏｒｔ変数リスト２０，Ｉｍｐｏｒｔ変数リスト２１並びにＲｅｍｏｔｅ変数リスト２２を持たせるようにしている。これら各変数リスト２０〜２２は、変数データベース１７に格納された情報に基づいて作成されるもので、具体的には以下のようになっている。
【００４４】
まず、Ｅｘｐｏｒｔ変数リスト２０は、自ノードから出力するネットワークグローバル変数のリストである。そして、そのデータ構造は、図７に示すように、変数名（論理名）、変数のタイプ及びサイズ（バイト数）、並びにその変数のデータが格納されたリンクメモリ１５内の自ノードエリア（図４参照）のオフセットからなるテーブル（以下、「Ｅｘｐｏｒｔ変換情報テーブル」と称する）からなっている。
【００４５】
係るテーブルは、図５に示す変数データベース５の入出力属性の欄が「出力」のものを抽出し、さらに、メモリアドレスの欄から間接参照テーブル（図６）をアクセスして自ノードエリアのオフセット（自己が管理する論理名についてのデータを格納する領域）を取得することにより、図７に示すようなリストが作成できる。
【００４６】
一方、Ｉｍｐｏｒｔ変数リスト２１は、他ノードから入力するネットワークグローバル変数のリストであり、そのデータ構造は、図８に示すように、変数名（論理名）、変数のタイプ及びサイズ（バイト数）、その変数のデータが格納されたリンクメモリ１５内の他ノードエリア（図４参照）のオフセットに加え、さらに、その変数が有効か無効かを示すフラグを備えたテーブル（以下、「Ｉｍｐｏｒｔ変換情報テーブル」と称する）からなっている。
【００４７】
係るテーブルは、図５に示す変数データベース５の入出力属性の欄が「入力」のものを抽出し、さらに、メモリアドレスの欄から間接参照テーブル（図６）をアクセスして、リンクメモリ１５内の他ノードエリアのオフセット（他ノードから送られてきたデータを格納する領域）を取得することにより、図８に示すようなリストが作成できる。
【００４８】
さらに、Ｒｅｍｏｔｅ変数リスト２２は、受信した他ノード変数リストをノード別に分類して格納するものである。そのデータ構造は、図９に示すように、ノード番号とＥｘｐｏｒｔ変数リストの先頭ポインタを格納したテーブル（以下、「Ｒｅｍｏｔｅ変換情報テーブル」と称する）からなる。
【００４９】
上記した各テーブル情報は、プログラミング装置（ツール）３を用いて行われる。すなわち、図１０に示すように、各制御装置１がＬＡＮ２にネットワーク接続されて、すでにシステムが稼動しているとする。係る場合に、新たに制御装置（Ｘ）１′をネットワークに追加するに先立ち、制御装置（Ｘ）１′にプログラミング装置３を接続し、所定のデータ・情報をそのプログラミングツール３から制御装置（Ｘ）１′にダウンロードする。
【００５０】
具体的には、図１１に示すように、まずプログラミングツール３を用い、ユーザがラダーや高級言語などでソースプログラム３ａを作成する。このとき、複数の制御装置（１），（２），（３），…（Ｘ）で共有するデータは、各制御装置間で同じ論理名として定義するとともに、ネットワーク共有の属性をつけるようにする。
【００５１】
そして、プログラミングツール３のコンパイル機能３ｂを実行し、上記のようにして作成したソースプログラム３ａをコンパイルし、制御装置が本来の制御を実行するためのオブジェクトコード３ｃと、同一論理名のデータ共有をするために必要な変数データベース（図５参照）３ｄを生成する。
【００５２】
次いで、プログラミングツール３は、生成したオブジェクトコード３ｃと変数データベース３ｄを制御装置（Ｘ）１′にダウンロードする。そして、このダウンロードされたオブジェクトコードと変数データベースは、制御装置（Ｘ）１′の不揮発性メモリに格納される。
【００５３】
なお、上記したプログラミングツールは、図示の例では制御装置（Ｘ）１′に接続し、それに対してダウンロードする例を示したが、すでにネットワークに接続された各制御装置（１），（２），……に対しても、ネットワークに接続する前（際）に、プログラミングツールを接続し、所定のデータ・情報をダウンロードすることになる。
【００５４】
次に、論理名調停部１９について説明する。論理名調停部１９は、上記のようにダウンロードされた変数データベース１７に格納された情報に基づき、Ｅｘｐｏｒｔ変数リスト２０とＩｍｐｏｒｔ変数リスト２１を生成する機能を有する。具体的な生成処理は、上記したＥｘｐｏｒｔ変数リスト２０とＩｍｐｏｒｔ変数リスト２１の説明で記載した通りである。
【００５５】
すなわち、Ｅｘｐｏｒｔ変数リスト２０の作成は、図１２に示すフローチャートに示すように、オフセット値を０におき（ＳＴ１）、変数データベース１７をアクセスして入出力属性が出力になっている出力変数、つまり自ノードが他ノードに対して公開するネットワークグローバル変数を検索する（ＳＴ２）。
【００５６】
そして、検索される都度、その変数についてのＥｘｐｏｒｔ変換情報テーブルを格納するＥｘｐｏｒｔ変換テーブルを確保する（ＳＴ３，ＳＴ４）。そして、その確保したテーブル内に、変換データベース１７内に格納されている変数名，タイプ，サイズ情報を複写する（ＳＴ５）。
【００５７】
次いで、その変数のデータ（変数データ）を格納する自ノードエリアのオフセット情報を取得し、ステップ５，ステップ６で得られた情報を、Ｅｘｐｏｒｔ変数リストに追加する（ＳＴ７）。よって、１番目は、オフセットが０つまり自ノードエリアの先頭から登録することになる。
【００５８】
その後、現在のオフセット値に、変数サイズを加算して新たなオフセット値を求め（ＳＴ８）、ステップ２に戻る。以後、全ての出力変数を検索するまで上記処理を繰り返し実行する。これにより、自ノードエリアの先頭から各変数データを格納する領域が、空くことなく順番に確保される。
【００５９】
一方、Ｉｍｐｏｒｔリスト２１の作成は、図１３に示すフローチャートを実行する。すなわち、変数データベース１７より、入出力属性が入力になっている入力変数、つまり、自ノードで利用する他ノードのネットワークグローバル変数を検索する（ＳＴ１１）。
【００６０】
そして、検索される都度、その変数についてのＩｍｐｏｒｔ変換情報テーブルを格納するＩｍｐｏｒｔ変換テーブルを確保する（ＳＴ１２，ＳＴ１３）。そして、その確保したテーブル内に、変換データベース１７内に格納されている変数名，タイプ，サイズ情報を複写する（ＳＴ１４）。さらに、無効フラグをセットし（ＳＴ１５）、ステップ１４，ステップ１５で得られた情報を、Ｉｍｐｏｒｔ変数リストに追加する（ＳＴ１６）。その後、ステップ１１に戻る。以後、全ての入力変数を検索するまで上記処理を繰り返し実行する。
【００６１】
さらに、論理名調停部１９は、上記した両変換テーブルの作成機能に加え、以下に示す変換テーブルの更新その他の機能も有する。すなわち、制御装置１を既存の稼動中のネットワークに接続した場合、論理名調停部１９は、自己が保有するＥｘｐｏｒｔ変数リスト２０を、一斉同報し、他の制御装置との間でネットワークグローバル変数の情報を交換する。
【００６２】
すなわち、Ｅｘｐｏｒｔ変数リストを送信する側の論理名調停部１９は、図１４に示すように、まず、Ｅｘｐｏｒｔ変数リストを一斉同報により送信する（ＳＴ２１）。後述するように、この一斉同報を受けた受信側の他の制御装置（ノード）は応答信号を送信してくるので、その応答信号があったか否かを判断する（ＳＴ２２）。そして、応答信号があった場合には、その応答信号を発行した応答局を記録する（ＳＴ２３）。
【００６３】
タイムアウトするまで応答信号の受信の有無をチェックし（ＳＴ２４）、タイムアウトしたならばテーブル更新を完了する（ＳＴ２５）。これにより、Ｅｘｐｏｒｔ変数リストを送信したノードは、誰がＥｘｐｏｒｔ変数リストを受け取り、誰が受け取っていないかを判断できる。
【００６４】
なお、このＥｘｐｏｒｔ変数リストの送信タイミングとしては、上記したように新たにネットワークに追加・接続する時の他に、ユーザプログラム修正やコンパイル実行などによって変数データベース１７の記憶内容が変更された場合や、後述するオンラインエディットによって実行中の制御装置の変数データベース１７の記憶内容が変更された場合などにも行われる。そして、変更される都度、バージョンを更新していき、Ｅｘｐｏｒｔ変数リストを送信（一斉同報）する場合には、そのバージョン情報も併せて送るようにする。従って、受信側のノードは、Ｅｘｐｏｒｔ変数リストをはじめて受信する場合と、すでに受信している場合がある。なお、本発明では、このバージョン情報は必ずしも設けなくても良い。また、バージョン情報を用いたテーブルの同期方式については後述する。
【００６５】
一方、上記Ｅｘｐｏｒｔ変数リストを受信した既存の他のノード（制御装置）側は、図１５に示すフローチャートを実施する機能を有する。すなわち、Ｅｘｐｏｒｔ変数リストを受信したか否かを判断し（ＳＴ３１）、受信した場合には、Ｅｘｐｏｒｔ変数リストのバージョンが、以前に受信して記憶しているものと一致するか否かを判断する（ＳＴ３２）。
【００６６】
そして、一致していない場合には、Ｅｘｐｏｒｔ変数リストが更新されていると判断し、記憶しているテーブル（受信側のノードにとってのＩｍｐｏｒｔ変数リスト等）を更新する（ＳＴ３３）。なお、初めてＥｘｐｏｒｔ変数リストを受信する場合も、バージョンが不一致と判断し、テーブル更新をする。
【００６７】
そして、ステップ３３のテーブル更新後、並びにステップ３２の分岐判断でバージョンが一致している場合（更新不要）は、応答信号をＥｘｐｏｒｔ変数リストの送信元のノードに向けて送信し、処理を終了する（ＳＴ３４）。
【００６８】
さらに論理名調停部１９は、受信したＥｘｐｏｒｔ変数リストに基づいて、Ｒｅｍｏｔｅ変数リストを作成する機能を有する。すなわち、図１５に示す受信側の処理において、他ノードから送信されてきたＥｘｐｏｒｔ変数リストを受信したならば、それをＲｅｍｏｔｅ変数リストとしてノード別に管理する。つまり、受信したノードが必要とする変数データであるか否かに関係なく、全てのＥｘｐｏｒｔ変数リストに関する情報を一旦制御装置内に取り込み、記憶保持する。このリストは、不揮発性メモリに保持される。具体的には、図１６に示すように、ノード１から送られてきたＥｘｐｏｒｔ変数リストは、ノード１のテーブルエリアに格納される。
【００６９】
そして、論理名調停部１９は、上記のようにして得られたＲｅｍｏｔｅ変数リスト２２とＩｍｐｏｒｔ変数リスト２１に基づき、間接参照テーブル１６を作成・更新する。概念的に説明すると、Ｉｍｐｏｒｔ変数リスト２１に格納された自ノードで使用する変数名（論理名）をキーとして、Ｒｅｍｏｔｅ変数リスト２２を検索し、一致する変数名を取得し、その変数に関する変数データが格納された自ノードのリンクメモリ１５へのポインタを求め、それを該当する間接参照テーブル１６のメモリエリアに格納する。
【００７０】
また、上記した制御装置（Ｘ）１´のように、新たにネットワークに加入した場合には、Ｅｘｐｏｒｔ変数リストを受信していないノードに対してＥｘｐｏｒｔ変数リスト要求を行う。これにより、受信したＥｘｐｏｒｔ変数リストに基づき、上記したＲｅｍｏｔｅ変数リスト２２ひいては間接参照テーブル１６の作成・更新を行う。具体的には、図１７に示すフローチャートを実現する。
【００７１】
まず、Ｉｍｐｏｒｔ変数リスト２１を順番に検索し（ＳＴ４１，ＳＴ４２）、検索された変数名（論理名）ごとに以下の処理を行う。つまり、取得した変数名をキーにＲｅｍｏｔｅ変数リストを検索し、その変数を公開している制御装置のノードアドレス▲１▼と、その装置内のリンクメモリ内の自ノードエリアオフセット▲２▼を取得する（ＳＴ４３）。
【００７２】
次いで、リンクメモリの▲１▼に該当する他ノードエリア（その変数を公開しているノード用のエリア）のベースアドレス（先頭アドレス）を算出する（ＳＴ４４）。そして、そのベースアドレスに、ステップ４３で求めたオフセット▲２▼を加算した値▲３▼を求める（ＳＴ４５）。すなわち、対応するノードエリアでは、同一の論理名（変数名）の変数データを格納する領域のオフセット値を等しくしているので、上記求めた値▲３▼が、その変数データを記憶させるリンクエリアの先頭アドレスとなる。
【００７３】
次に、変数名に基づいて変数データベース１７を検索し、間接参照テーブル位置（その変数名のポインタを格納する箇所）を取得する（ＳＴ４６）。つまり、図５に示すメモリアドレスの欄に登録されたオフセットアドレスを取得する。そして、その取得したオフセットアドレスにしたがい、該当する間接参照テーブルの格納領域に、ステップ４５で算出した値▲３▼（リンクメモリ１５内の変数データを格納する領域の先頭位置を示すポインタ）を格納する。これにより、間接参照テーブルの更新が行える。
【００７４】
これにより、図５に示す変数データベース１７とすると、図１８に示すように、例えば論理名（変数名）が「Ｓｗｉｔｃｈ１」についての変数データのリンクメモリ１５内の格納領域が図示のようになっている場合、間接参照テーブル１６のＳｗｉｔｃｈ１の欄（オフセットアドレス００００：先頭）には、その格納領域の先頭のアドレス（ポインタ）が格納されることになる。
【００７５】
上記したように、論理名調停部１９により、各ノード（制御装置１）内の各リスト２０〜２２や間接参照テーブル１６の内容がその都度更新されることにより、リンクメモリ１５内に格納された変数データの内容や、変数データの格納領域が変更したとしても、ある変数名（論理名）についての間接参照テーブル１６の格納位置（オフセットアドレス）は不変（仮に変更した場合でも、変数データベースのメモリアドレスの欄を見ることにより知ることができる）であるので、制御実行部１８は、その間接参照テーブル１６を介してリンクメモリ１５にアクセスし、所望の変数データを取得し、正規の制御システムを実行することができる。そして、係る制御実行部１８の機能は、図１９に示すフローチャートのようになっている。
【００７６】
すなわち、まず初期化処理をした後（ＳＴ５１）、ＩＮリフレッシュをする（ＳＴ５２）。つまり、リンクメモリ１５の他ノードエリアに格納されたエリアネットワークグローバル変数（変数データ）の読み出しを行う。そして、ユーザプログラム（通常の制御）を実行し（ＳＴ５３）、ＯＵＴリフレッシュをする（ＳＴ５４）。つまり、リンクメモリ１５の自ノードエリアに、自己が公開するネットワークグローバル変数（変数データ）の書き込みを行う。次いで、周辺Ｉ／Ｆ処理を実行する（ＳＴ５５）。このように、リンクメモリ１５に対するアクセス（変数データの読み書き）をしつつ、ユーザプログラムを実行する処理を、システムが停止するまで繰り返し実行する（ＳＴ５６，ＳＴ５７）。なお、上記したリンクメモリ１５をアクセスしつつユーザプログラムを実行しているときの制御装置１，１′の概念図を示すと図２０のようになる（静的名前解決の部分は後述する）。
【００７７】
さらに、リンクメモリ１５に格納する実際の変数データの送受は、通信部１２を介して制御装置１（ノード）間で行われる。まず、概念的に説明すると、リンクメモリ１５内の自ノードエリアに割り付けられたデータ（変数データ）は、他ノードに一斉同報通信方式などで送信し、他ノードエリアに割り付けられたデータ（変数データ）は対応する他ノードから受信する。
【００７８】
つまり、図２１に示すように、リンクメモリが格納された制御部１１側のＲＡＭ１１ｃと、通信部１２側のＲＡＭ１２ｂとの間では、必要なデータを転送するようになっている。
【００７９】
そこで、図２０に示すように、リンクメモリ１５の自ノードエリアに割り付けられたデータは、一旦通信部１２の通信側ＲＡＭ１２ｂに複写転送され、各制御装置間では、その通信側ＲＡＭ１２ｂ同士（厳密には通信コントローラ１２ａを介して）で一斉同報に伴うデータ転送をすることにより、他のノード（制御装置）側に送信する。また、これを受信した他ノード側では、Ｅｘｐｏｒｔ変数リスト，Ｉｍｐｏｒｔ変数リストより算出した転送データサイズを基に、自ノードで必要なデータを通信部１２（通信側ＲＡＭ１２ｂ）から制御部１１（制御側ＲＡＭ１１ｃ）に転送する。なお、通信部１２側では、その受け取ったデータに基づいて所定の処理をするのは、上記した通りである。
【００８０】
また、制御装置内での通信部１２と制御部１１間でのデータの転送処理機能は、以下の通りとなっている。まず、本形態では、通信部１２は、制御部１１からの要求によりサイクリック通信サービスを開始するようになっている。すなわち、通信部１２は、制御部１１から受け取ったＩｍｐｏｒｔ変数リスト，Ｅｘｐｏｒｔ変数リストに基づいて通信パラメータを算出・設定し、サイクリック通信サービスを起動もしくは加入する。
【００８１】
また、サイクリックデータには、受信側が利用してよいデータ（有効なデータ）か、利用できないデータなのかを示す有効／無効情報が含まれている。この有効／無効情報は、送信側で設定する。そして、この有効／無効情報が「有効」のときには、受信側の通信部が受信したサイクリックデータを制御部側に転送しても良いと判断できる。
【００８２】
さらに、通信側ＲＡＭ１２ｂには、通信部１２の通信コントローラ１２ａ側からと、制御部１１側からの両方からアクセスできるようになっている。従って、何ら制御を行わないと、両方から同時に通信側ＲＡＭ１２ｂにアクセスすることが有るので、これを避けるため、本形態では制御部１１側が主体的になってデータ交換をするようにしている。つまり、制御部１１が通信部１２に対してアクセス許可・禁止を通知する。そして、通信部１２は、制御部１１が通信側ＲＡＭへのアクセスを許可している間のみアクセス可能となる。係る制御の具体的には、図２２（制御部），図２３（通信部）に示すフローチャートのようになる。
【００８３】
まず、制御部１１の機能としては、図２２に示すように、データのＲｅａｄ／Ｗｒｉｔｅ、つまり、通信側ＲＡＭ１２ｂへのアクセスを行う（ＳＴ６１）。そして、そのアクセス処理が完了すると、通信側にアクセス完了を通知する（ＳＴ６２）。このアクセス完了通知が、通信部１２に対するアクセス許可通知となる。
【００８４】
そして、通常のコントローラ処理（ユーザプログラムの実行）をする（ＳＴ６３）。また、再び通信側ＲＡＭ１２ｂにアクセスする必要が生じた場合には、アクセス要求通知を通信部１２に対して通知する（ＳＴ６４）。後述するように、この通知を受けた通信部１２は、アクセス許可通知を返送するので、制御部１１はその通信部１２からのアクセス許可通知を受信したか否かを判断し（ＳＴ６５）、許可通知を受信したならば、アクセスステータスクリアをし（ＳＴ６６）、ステップ６１に戻り、制御部１１が通信側ＲＡＭ１２ｂに対してアクセスする。
【００８５】
一方、通信部１２の機能は、図２３に示すように、まず、制御部１１からアクセス完了通知が送られてきたか否かを判断する（ＳＴ７１）。そして、係る完了通知を受信したならば、通信側ＲＡＭ１２ｂに対するアクセス（データのＲｅａｄ／Ｗｒｉｔｅ）をする（ＳＴ７２）。次いで、通信部１２からアクセス要求通知が送られてきたか否かを判断する（ＳＴ７３）。そして、送られてこない場合には、依然として通信部１２に通信側ＲＡＭ１２ｂへのアクセス権が有るため、必要に応じてアクセスする。
【００８６】
一方、アクセス要求通知を受け取ったならば、通信側ＲＡＭ１２ｂに対するアクセスを終了するとともに、アクセス許可通知を制御部１１に返送する（ＳＴ７４）。このとき、通信部１２では、受信データのノード単位の同時性を保証するため、１ノード分の転送中にアクセス要求通知を受信した場合には、その１ノード分の転送が完了した後でアクセス許可通知を返送することになる。なお、ステップ７４の通知により中断した後、制御部１１から再びアクセス完了通知を受け取ったならば、上記中断したノードの次のノードの通信側ＲＡＭ１２ｂへの転送を開始することになる。
【００８７】
次に、本発明の要部となる静的名前解決について説明する。この静的名前解決は、プログラミングツール３の静的名前解決部５（図１参照）により実行されるもので、基本的なアルゴリズムは上記した動的名前解決と同様である。まず、プログラミングツール３について説明する。良く知られているように、プログラミングツール３は、制御装置１で実行されるプログラムを開発するための環境であり、ユーザがラダー言語などで作成したプログラムをコンパイルしたり、ライブラリをリンクして制御装置１で実行可能な形式に変換する機能を持つ。
【００８８】
また、プログラミングツール３は、複数の制御装置１のプログラムを一括して管理できる。つまり、図２４に示すように、プログラミングツール上では、複数の制御装置１のプログラム／変数の情報を一つのプロジェクトとして管理することができる。
【００８９】
換言すると、プログラミングツール３では、複数の制御装置１のプログラムを１つのプロジェクトとして管理するので、どのプログラムがネット変数を読み書きしているかを知ることができる。実際には、コンパイル或いはリンク処理の際には、プロジェクトに含まれる複数の制御装置のプログラムで使われているネット変数の情報がわかるので、係るコンパイルまたはリンク時に静的名前解決部５が、解析して名前解決を行う。
【００９０】
静的名前解決部５の機能は、図２５に示すフローチャートのようになっている。すなわち、まずプロジェクトに含まれる制御装置の中の１つを選び処理対象とする（ＳＴ８１）。
【００９１】
そして、対象の制御装置についてのＥｘｐｏｒｔ変数リストを作成する（ＳＴ８２）。このＥｘｐｏｒｔ変数リスト作成の具体的な処理手順は、動的名前解決時に行ったものと同様であるので、その詳細な説明を所略する。そして、処理対象の制御対象を順次切り替えていき、Ｅｘｐｏｒｔ変数リスト未作成の制御対象に対し、当該リストを作成する（ＳＴ８３，ＳＴ８４）。
【００９２】
このようにして全ての制御装置についてＥｘｐｏｒ変数リストを作成したならばステップ８３の分岐判断はＹｅｓとなるのでステップ８５に進み、変数のアドレス割り付けを行う。つまり、プロジェクトに含まれる制御機器を１つずつ順に処理対象に選択しステップ８２で作成したＥｘｐｏｒｔ変数リストを参照し、ネット変数のアドレス割り付け、つまり名前解決を行う。そして、名前解決の結果（ネット変数に割り付けられたアドレス）をプログラミングツール３の変数データベース６に格納する（ＳＴ８５〜ＳＴ８８）。
【００９３】
この名前解決処理も、基本的には動的名前解決と同様の手順に従って行える。但し、動的名前解決の場合には、ネットワーク２を介して制御装置１間でネットネット変数の情報を交換しあって名前解決を行うために、絶対アドレスを求めることができるが、プログラミングツール３では、実際にネットワークに接続されていないため、リンクエリアのどの部分がどの制御装置のための領域であるかはわからないので、リンクエリア内での絶対アドレスを決定できない。そのため、静的名前解決では、各制御装置のリンクエリアの先頭からの相対アドレスでネット変数のアドレス割付けを行う。
【００９４】
つまり、プログラミングツール３内の変数データベースのデータ構造も、基本的に図５に示すものと同様になっており、動的名前解決と同様に名前解決した結果を各欄に格納する。そして、名前解決済みのネット変数については、変数データベース（図５）の「静的名前解決済フラグ」をＴＲＵＥにするとともに、相対アドレスを「データリンクオフセット」に格納する。
【００９５】
また、プロジェクト内で名前解決できなかったネット変数については、変数データベース６の「静的名前解決済フラグ」をＦＡＬＳＥにしておく。この場合、「データリンクオフセット」はデフォルトの０のままとなる。
【００９６】
このようにして、静的名前解決された結果（変数データベース６に格納されたデータ）は、ランタイムにダウンロードする。つまり、プログラミングツール３から制御装置１に対し、制御プログラムなどとともにダウンロードする。すると、制御装置１内の変数データベース１７には、変数データベース６内に格納されたデータが登録される。
【００９７】
そこで、動的名前解決時には、静的名前解決済みフラグが「ＦＡＬＳＥ」のネット変数について、上記した処理を実行する。また、静的名前解決済み（フラグが「ＴＲＵＥ」）のネット変数については、相対アドレスを絶対アドレスに変換する処理を行う。具体的には、図２６に示すように、静的名前解決結果に各エリアの先頭オフセットを加算することによりアドレスの変換を行い、得られた絶対アドレスに基づき、所定のデータを間接参照テーブルに格納する。係るアドレスの変換は、静的名前解決結果変換部２５が行う。
【００９８】
上記した実施の形態では、プログラミングツール３で静的名前解決可能なものはすべて解決をするようにしたが、本発明はこれに限ることはなく、一部に対してのみ静的名前解決を行うようにしても良い。
【００９９】
一例を示すと、デバッグ時などは、デバッグ完了した制御装置のネット変数は静的名前解決し、デバック途中のものは頻繁にプログラムが修正されるので、たとえ静的名前解決が可能であっても行わずに、動的名前解決をするようにする。これにより、結果としてプログラムの修正結果を制御装置１に反映して確認するまでの時間を短縮できる。
【０１００】
また、別の例としては、「ある論理名（変数）については、静的名前解決をしない」，「或る制御装置については静的名前解決をしない」などがある。いずれの場合も、プログラミングツール３にて、それぞれの単位（変数，制御装置等）で静的名前解決をするか否かの設定（例えば、フラグなどを用いて指定）を行うようにする。そして、静的名前解決部５は、該当するもののみコンパイル或いはリンク字に名前解決を図るようにする。
【０１０１】
さらに、上記した実施の形態では、動的名前解決を制御装置の起動時やネットワークへの加入時のように、制御プログラムが動き出す前に実施するようにしたが、本発明はこれに限ることはなく、例えば、制御プログラムを動かしつつ名前解決するようにしてもよい。これにより、システム起動時等の動的名前解決処理を省き、システムの起動を迅速に行えるようにすることもできる。その際、名前解決が終わるまでは、ネット変数の通信は行われないので、制御装置が危険な動作をしないように、ネット変数にはユーザが適切な初期値を設定しておくものとする。
【０１０２】
【発明の効果】
以上のように、この発明では、具体的なデータの記憶位置情報を知らなくても、論理名でアクセスすることができるので、通信処理を意識することなく、共有するデータへのアクセスが容易に行える。しかも、係る環境を得るために、記憶位置情報を動的に生成，変更するだけでなく、少なくとも一部のデータについては、予めプログラミングツール側で静的名前解決を行うことができるので、実際に制御装置間で通信を行って動的に記憶位置情報を生成する処理数が削減できる。よって、全体としてみると、効率よく・短時間で上記の環境を構築することができる。
【図面の簡単な説明】
【図１】本発明の一実施の形態を示すブロック図である。
【図２】本形態の機能の概要を説明する図である。
【図３】制御部の内部構造の一例を示す図である。
【図４】リンクメモリのデータ構造の一例を示す図である。
【図５】変数データベースのデータ構造の一例を示す図である。
【図６】間接参照テーブルのデータ構造の一例を示す図である。
【図７】Ｅｘｐｏｒｔ変数リストのデータ構造の一例を示す図である。
【図８】Ｉｍｐｏｒｔ変数リストのデータ構造の一例を示す図である。
【図９】Ｒｅｍｏｔｅ変数リストのデータ構造の一例を示す図である。
【図１０】ネットワークシステムの好適な一実施の形態を示す図である。
【図１１】プログラミング装置を用いた制御装置へのダウンロードの動作を説明する図である。
【図１２】論理名調停部の機能の一部であるＥｘｐｏｒｔ変数リストの作成機能を示すフローチャートである。
【図１３】論理名調停部の機能の一部であるＩｍｐｏｒｔ変数リストの作成機能を示すフローチャートである。
【図１４】Ｅｘｐｏｒｔ変数リストを配送する側の処理機能を説明するフローチャートである。
【図１５】Ｅｘｐｏｒｔ変数リストを受信する側の処理機能を説明するフローチャートである。
【図１６】Ｒｅｍｏｔｅ変数リストとＩｍｐｏｒｔ変数リストから間接参照テーブルを作成する機能を説明する図である。
【図１７】論理名調停部の機能の一部である間接参照テーブルの更新機能を示すフローチャートである。
【図１８】論理名調停部の機能の一部である間接参照テーブルの更新機能の具体例を示す概念図である。
【図１９】制御実行部の機能を示すフローチャートである。
【図２０】制御装置の実行フェーズの一例を示す図である。
【図２１】制御装置内の制御部側ＲＡＭと通信側ＲＡＭ間でのデータの転送を説明する図である。
【図２２】制御装置内の制御部側ＲＡＭと通信側ＲＡＭ間でのデータの転送のシーケンス（制御部側）を示すフローチャートである。
【図２３】制御装置内の制御部側ＲＡＭと通信側ＲＡＭ間でのデータの転送のシーケンス（通信部側）を示すフローチャートである。
【図２４】プロジェクトの管理単位構成を示す図である。
【図２５】静的名前解決部の機能を説明するフローチャートである。
【図２６】制御装置内で行われる相対アドレスと絶対アドレスの変換の一例を示す図である。
【符号の説明】
１  制御装置
２  ネットワーク
３  プログラミングツール
５  静的名前解決部
６  変数データベース
１１  制御部
１２  通信部
１５  リンクメモリ
１６  間接参照テーブル
１７  変数データベース
１８  制御実行部
１９  論理名調停部
２０  Ｅｘｐｏｒｔ変数リスト
２１  Ｉｍｐｏｒｔ変数リスト
２２  Ｒｅｍｏｔｅ変数リスト
２５  静的名前解決結果変換部
【図１】
0004207105.tif 000002
【図２】
0004207105.tif 000003
【図３】
0004207105.tif 000004
【図４】
0004207105.tif 000005
【図５】
0004207105.tif 000006
【図６】
0004207105.tif 000007
【図７】
0004207105.tif 000008
【図８】
0004207105.tif 000009
【図９】
0004207105.tif 000010
【図１０】
0004207105.tif 000011
【図１１】
0004207105.tif 000012
【図１２】
0004207105.tif 000013
【図１３】
0004207105.tif 000014
【図１４】
0004207105.tif 000015
【図１５】
0004207105.tif 000016
【図１６】
0004207105.tif 000017
【図１７】
0004207105.tif 000018
【図１８】
0004207105.tif 000019
【図１９】
0004207105.tif 000020
【図２０】
0004207105.tif 000021
【図２１】
0004207105.tif 000022
【図２２】
0004207105.tif 000023
【図２３】
0004207105.tif 000024
【図２４】
0004207105.tif 000025
【図２５】
0004207105.tif 000026
【図２６】
0004207105.tif 000027