以下に添付図面を参照して、この発明の実施の形態にかかるデータ中継制御装置、リンク間転送設定支援装置およびリンク間転送設定方法を詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。また、以下では、共有メモリ方式のサイクリック伝送と、共有メモリ方式のサイクリック伝送を行っている複数のネットワーク間でのデータ転送と、を説明した後、実施の形態について説明する。
サイクリック伝送とは、1つのネットワークで構成された複数ノード間で、転送元から転送先へ定周期間隔でデータを更新することで、データを共有する伝送方式である。サイクリック伝送は、共有メモリ方式の通信にて、同一のネットワークに接続された全てのノードに同じメモリ構成である共有メモリ領域を有しており、全てのノードが、各ノードから送信されたデータを、共有メモリ領域の予め定められたアドレス先へデータ転送することで実現される。
図1は、共有メモリ方式のサイクリック伝送の概念を模式的に示す図である。ネットワーク100には、複数のノード110,120,130が接続されている。各ノード110,120,130は、共有メモリ領域111,121,131を有している。ノード110が他のノード120,130に送信するデータを共有メモリ領域111の送信領域112に格納すると、ノード110は、ネットワーク100へ一定周期にデータを送信する。ノード120は、ネットワーク100からデータを受信すると共有メモリ領域121の受信領域122にノード110が送信したデータ113を格納する。同様に、ノード130も受信したデータ123を受信領域132に格納する。その結果、ノード110の送信データ113がノード120とノード130に伝送されることになる。同様にして、ノード120,130の送信データも他のノードに伝送される。
共有メモリ方式のサイクリック伝送では、同一ネットワーク上の全てのノードについて、共有メモリ領域の送信領域を予め定めたネットワーク範囲割付設定を有しており、一つのネットワークに対して、ネットワーク範囲割付設定は一つである。同一ネットワーク上の全ノードは、ネットワーク範囲割付設定をもとに、他ノードから受信したデータを自身が有する共有メモリ領域の受信領域に格納する。
図2は、ネットワーク範囲割付設定の一例を示す図である。ネットワーク範囲割付設定は、同一ネットワーク上の各ノードの識別子であるノード番号と、ノード番号に対応するノードの共有メモリ領域の送信領域の先頭アドレスを示す共有メモリ領域先頭アドレスと、ノード番号に対応するノードの共有メモリ領域の送信領域のサイズを示すサイズと、を含む。
共有メモリ方式でサイクリック伝送されているネットワークが複数存在するシステム構成の場合において、1つのネットワーク上のノードから別のネットワーク上のノードへデータを転送することを、この明細書ではリンク間転送と定義する。リンク間転送は、転送元と転送先を予め定めたリンク間転送設定を有し、複数のノードを有する制御装置(データ中継制御装置)で実現される。
図3は、共有メモリ方式のサイクリック伝送されているネットワークが複数存在するシステム構成の一例を模式的に示す図である。ここでは、制御装置500,510と複数ノード521,522を有するデータ中継制御装置520とが、1つのネットワーク540で接続され、制御装置530と複数ノード521,522を有するデータ中継制御装置520とがネットワーク540とは別のネットワーク550で接続された構成を有する。各制御装置500,510,530は、それぞれノード501,511,531を有する。また、データ中継制御装置520は、複数のノード521,522を有する。つまり、データ中継制御装置520のノード521には、ネットワーク540が接続され、ノード522にはネットワーク550が接続されている。データ中継制御装置520における複数のノード531,522間は、たとえばバス接続されており、リンク間転送設定523に基づいてデータ転送がなされる。
図4は、リンク間転送設定の一例を示す図である。リンク間転送設定は、データの転送元となるノードを示す転送元と、データの転送先となるノードを示す転送先と、転送元となるノードのデータの共有メモリ領域の格納先の先頭アドレスを示す転送元共有メモリ領域先頭アドレスと、転送先となるノードのデータの共有メモリ領域の格納先の先頭アドレスを示す転送先共有メモリ領域先頭アドレスと、転送するデータを格納する共有メモリ領域の大きさを示すサイズと、を含む。
複数ノードを有するデータ中継制御装置520は、たとえば図4のリンク間転送設定を基に、転送元のノード521の共有メモリ領域に格納されたデータを、転送先のノード522の共有メモリ領域に転送することで、リンク間転送を実現する。
図3でノードを有する制御装置として、プログラマブルコントローラやプログラマブル表示器などプログラムによって動作を制御するFA機器を挙げることができる。プログラムには、アドレス指定方式とラベル割付方式とがある。アドレス指定方式は、システムエンジニアがデータを格納するメモリアドレスを直接指定して表記するものである。一方のラベル割付方式は、データに任意のラベル名称、データ型、クラスをラベル情報として宣言し、ラベル情報から、ラベル名称、サイズ、メモリ領域の先頭アドレスに関連付けたテーブルを制御装置に設け、制御装置のデータを格納するメモリアドレスをラベル名称で間接的に指定して表記するものである。
図5は、ラベル定義テーブルの一例を示す図であり、(a)は、ラベル定義の一例を示す図であり、(b)は、ラベル割付情報の一例を示す図である。図5(a)に示されるように、ラベル定義は、ラベル名称、データ型、クラスを含む。ラベル名称は、システムエンジニアが任意に作成したラベルの名称を示す。データ型は、BOOL型、WORD型、構造体などや2進、10進などのデータ種別とデータサイズを示す。クラスは、制御装置内で有効となる範囲であるラベル(グローバルラベル)、プログラム部品(POU)内で有効となる範囲であるラベル(ローカルラベル)など、ラベルの有効範囲を示す。
図5(b)に示されるように、ラベル割付情報は、ラベル名称、サイズ、メモリ領域の先頭アドレスを含む。ラベル名称は、ラベル定義で定義されたラベル名称を示す。サイズは、ラベルのデータサイズを示す。メモリ領域の先頭アドレスは、ラベルのデータを格納するメモリ領域の先頭アドレスを示す。
システムエンジニアは、ラベル定義を設定し、プログラムの命令の引数やパラメータのイベントフラグなどにラベル名称を使用することで、ラベル割付情報のメモリ領域を意識することなくプログラミングが可能となる。
図6は、ラベル定義と関連付けしたネットワーク範囲割付設定の一例を示す図である。この図に示されるように、ラベル定義で定義したラベルを用いてネットワーク範囲割付設定を作成することで、間接的にメモリ領域の先頭アドレスをラベル名称で示すことが可能となる。
図7は、ラベル定義と関連付けしたリンク間転送設定の一例を示す図である。この図に示されるように、ラベル定義で定義したラベルを用いてリンク間転送設定を作成することによって、間接的にメモリ領域の先頭アドレスをラベル名称で示すことが可能となる。
つぎに、実施の形態によるデータ中継制御装置、リンク間転送設定支援装置およびリンク間転送設定方法について説明する。図8は、制御システムの構成の一例を示す図である。この制御システムは、制御装置10,20とデータ中継制御装置30とが、1つのネットワーク51で接続され、制御装置40とデータ中継制御装置30とが、ネットワーク51とは別のネットワーク52で接続された構成を有する。制御装置10,20,40は、それぞれノード11,21,41と、ラベルを使用したラベルプログラム(制御プログラム)12,22,42と、を有する。
データ中継制御装置30は、複数のノード31,32と、リンク間転送設定生成部33と、リンク間転送設定記憶部34と、リンク間転送制御部35と、を有する。図8では、データ中継制御装置30のノード31には、ネットワーク51が接続され、ノード32にはネットワーク52が接続されている。データ中継制御装置30の複数のノード31,32は、たとえばベースユニットに取り付けられ、ベースユニット内のバスなどの通信路によって互いに通信可能な構成となっている。
ネットワーク51を構成する各ノード11,21,31は共有メモリ方式のサイクリック伝送を行うため、各制御装置10,20は、同一ネットワーク51上の全ノード11,21,31について、共有メモリ領域の送信領域を予め定めたネットワーク割付範囲設定を有する。また、ネットワーク52を構成するノード32,41も共有メモリ方式のサイクリック伝送を行うため、制御装置40は、ネットワーク51のものとは異なるネットワーク範囲割付設定を有する。さらに、複数ノード31,32を有するデータ中継制御装置30は、それぞれのネットワーク51,52のネットワーク範囲割付設定を有する。
リンク間転送設定生成部33は、複数のネットワーク51,52のラベルプログラムで使用されるラベルのうち、演算後のデータの行き先となる動作に割り当てられているラベルと、演算前にデータを格納する動作に割り当てられているラベルと、を抽出し、これらのラベルから異なるネットワーク51,52間で共有メモリ領域にラベルをマッピングしてリンク間転送設定を自動生成する機能を有する。図8で、たとえばネットワーク51の共有メモリ領域に格納されたデータを、ネットワーク52の共有メモリ領域に転送するリンク間転送設定を自動生成する機能を有する。
リンク間転送設定記憶部34は、リンク間転送設定生成部33によって生成されたリンク間転送設定を記憶する。リンク間転送制御部35は、サイクリック伝送中にリンク間転送設定記憶部34に記憶されたリンク間転送設定に基づいて、一のネットワークに接続されるノード(たとえばネットワーク51のノード31)から他のネットワークに接続されるノード(たとえばネットワーク52のノード32)へとデータをリンク間転送する。
また、データ中継制御装置30のリンク間転送設定生成部33でリンク間転送設定を自動生成させるために必要な情報(パラメータ)は、リンク間転送設定支援装置によって生成される。リンク間転送設定支援装置は、後述するリンク間転送設定支援プログラムを有するパーソナルコンピュータなどによって構成され、制御システムを構成するいずれかの制御装置10,20,40またはデータ中継制御装置30に接続される。制御システムを構成する制御装置10,20,40とデータ中継制御装置30は、図8に示されるようにいずれもネットワーク51,52や、データ中継制御装置30内のバスを介して接続されているので、リンク間転送設定支援装置がいずれかの制御装置10,20,40またはデータ中継制御装置30に接続されると、すべての制御装置10,20,40とデータ中継制御装置30にアクセス可能となる。
図9は、リンク間転送設定支援装置のソフトウェア構成の一例を模式的に示す図である。このソフトウェアは、プログラミングソフトウェア200と、コンフィグレーションソフトウェア300と、システム構成管理ソフトウェア400とを、有する。
プログラミングソフトウェア200は、システム構成上の複数のネットワークで接続された、複数の制御装置で共有するデータに対してラベル定義し、プログラムを実行する制御装置に対して、ユーザによるラベルを使用したプログラム(ラベルプログラム)の作成環境を提供するソフトウェアである。
プログラミングソフトウェア200は、OS(Operating System)201上にユーザインタフェース部202、制御装置通信インタフェース部203、アプリケーション通信インタフェース部204が設けられ、さらにこれらの処理部の上にメイン処理部205が設けられている。また、プログラミングソフトウェア200は、プログラミング用データ206を管理している。
ユーザインタフェース部202は、システムエンジニアの操作および表示に関する処理を行う。システムエンジニアの操作内容は、ユーザインタフェース部202を介してメイン処理部205で処理され、必要に応じてプログラミング用データ206に反映される。
制御装置通信インタフェース部203は、プログラミングソフトウェア200と制御装置との間の通信を処理するものであり、プログラミング用データ206の内容が制御装置へ反映される。
アプリケーション通信インタフェース部204は、当該プログラミングソフトウェア200と、システム構成管理ソフトウェア400やコンフィグレーションソフトウェア300との間の通信を処理するものである。システムエンジニアの操作によって、プログラミング用データ206に関するデータがソフトウェア間で受け渡しされる。
メイン処理部205は、ユーザインタフェース部202からの入力などに基づいて処理を行い、たとえばプログラミング用データ206を生成する処理を行う。たとえば、システムエンジニアによって作成されたラベルを使用したプログラムから、ラベル割付情報にフラグを付加する処理を行う。
プログラミング用データ206は、ラベル定義テーブル207、プログラム208およびプログラム用パラメータ209を有する。ラベル定義テーブル207は、ラベル定義情報とラベル割付情報とを有する。ラベル定義情報は、たとえば図5(a)に示した構成を有するが、この実施の形態では、クラスとして、グローバルラベルとローカルラベルのほかに、複数ネットワークのシステム構成であるワークスペース上で有効となるラベル(システムラベル)が定義可能となっている。
ラベル割付情報は、プログラム208で用いられるラベル名称と、制御装置に設けられるメモリ内での格納位置とを関連付けたものである。図10は、ラベル割付情報の一例を示す図である。ラベル割付情報は、ラベル名称と、ラベル名称が付されたデータのサイズと、ラベル名称が付されたデータが格納される制御装置のメモリ領域の先頭アドレスと、ラベルのクラスがシステムクラスの場合のラベル名称が付されたデータの処理動作を示すフラグと、を有する。フラグには、ラベルのクラスがシステムでない場合(グローバルまたはローカルの場合)には何も付されない。また、ラベルのクラスがシステムの場合で、ラベルが演算後のデータの行き先となる動作に割当てられている場合には書込みフラグが設定され、ラベルが演算前にデータを格納する動作に割当てられている場合には読み込みフラグが設定される。
プログラム208は、各制御装置が行う処理を規定したものであり、たとえばシステムエンジニアによって作成される。プログラム208は、データに任意のラベル名称、データ型、クラスをラベル定義情報として宣言し、実制御装置80のデータを格納するメモリのメモリアドレスをラベル名称で間接的に指定してプログラム208中に表記するラベル方式が用いられるものとする。
プログラム用パラメータ209は、制御装置の動作を決めるパラメータであり、制御装置内で実行するプログラム208の指定や、制御装置がエラー検出した時の動作仕様などを定めるものである。
コンフィグレーションソフトウェア300は、各制御装置の構成を定義する。たとえば図8の制御装置10の場合には、ノード11とラベルプログラム12とを定義し、ノード11がネットワーク51に接続されているところまで管理する。ただし、この例では、ネットワーク51が接続している他の制御装置についてまでは管理しない。
コンフィグレーションソフトウェア300は、OS301上にユーザインタフェース部302、制御装置通信インタフェース部303、アプリケーション通信インタフェース部304が設けられ、さらにこれらの処理部の上にメイン処理部305が設けられている。また、コンフィグレーションソフトウェア300は、コンフィグレーション用データ306を管理している。
ユーザインタフェース部302は、システムエンジニアの操作および表示に関する処理を行う。システムエンジニアの操作内容は、ユーザインタフェース部302を介してメイン処理部305で処理され、必要に応じてコンフィグレーション用データ306に反映される。
制御装置通信インタフェース部303は、コンフィグレーションソフトウェア300と実制御装置80との間の通信を処理するものであり、システムエンジニアの操作によって、コンフィグレーション用データ306の内容を実制御装置80の実システム構成から自動生成する。
アプリケーション通信インタフェース部304は、当該コンフィグレーションソフトウェア300と、プログラミングソフトウェア200やシステム構成管理ソフトウェア400との間の通信を処理するものである。システムエンジニアの操作によって、コンフィグレーション用データ306に関するデータがソフトウェア間で受け渡しされる。
メイン処理部305は、ユーザインタフェース部302や制御装置通信インタフェース部303からの入力などに基づいて処理を行い、たとえばコンフィグレーション用データ306の内容を変更する処理を行う。
コンフィグレーション用データ306は、制御装置情報テーブル307と、プログラミング用データ割付設定308と、システム構成情報309と、ノード割付情報310と、共有メモリ領域情報311、コンフィグレーション用パラメータ312と、を有する。
制御装置情報テーブル307は、コンフィグレーションソフトウェア300に対応した制御装置の通信ノードとプログラムに関する情報の一覧であり、システム構成情報309と関連付けされる。制御装置情報テーブル307は、たとえば制御装置を構成するCPUユニットやネットワークユニットなどのユニットを識別する識別子と、ユニットの型番(商品)と、ユニット(商品)で使用できるプログラム仕様と、が一覧にされたものであり、ユーザが使用するプログラムでユニットの型番を一覧から選択可能な構成のものを使用することができる。
プログラミング用データ割付設定308は、プログラミング用データ206をシステム構成情報309に関連付けした情報である。
システム構成情報309は、共有メモリ方式でサイクリック伝送を行うネットワークに存在する複数の制御装置によって構成される一つのシステムを実現する制御装置の構成情報と環境情報を有する。システム構成情報は、1つの制御装置を構成するユニットと、各ユニットに設定される内容と、を含むものであり、たとえばラベルを格納するメモリの位置、ノードの位置やノードに接続されたネットワーク番号、局番などの情報を含む。
ノード割付情報310は、システムエンジニアがユーザインタフェース部302を介して制御装置情報テーブル307から選択した制御装置が持つノードをシステム構成情報309に割り付けたものである。
共有メモリ領域情報311は、制御装置が持つ共有メモリ領域をシステム構成情報309に割り付けたものである。具体的には、CPUユニットやネットワークユニットなどからなる1つの制御装置内でのメモリの割り付け状態を示すものである。共有メモリ領域は、システム構成内で一つ存在する。システム構成情報に割り付けられた制御装置の実メモリ領域の一部を共有メモリ領域として設定することで、システム構成内で同一の共有メモリ領域を有し、同一のデータを共有することが可能となる。
コンフィグレーション用パラメータ312は、複数の制御装置を1つのシステムとして動作させるパラメータであり、システム構成情報309の制御装置の識別子をシステム構成内で共有する情報を有する。
システム構成管理ソフトウェア400は、コンフィグレーションソフトウェア300で管理されるネットワークで、データ転送を行う複数のネットワーク間を接続する(リンク間転送を行う)ための設定を管理する。システム構成管理ソフトウェア400は、OS401上にユーザインタフェース部402、制御装置通信インタフェース部403、アプリケーション通信インタフェース部404が設けられ、さらにこれらの処理部の上にメイン処理部405が設けられている。また、システム構成管理ソフトウェア400は、システム構成管理データ406を管理している。
ユーザインタフェース部402は、システムエンジニアの操作および表示に関する処理を行う。システムエンジニアの操作内容は、ユーザインタフェース部402を介してメイン処理部405で処理され、必要に応じてシステム構成管理データ406に反映される。
制御装置通信インタフェース部403は、システム構成管理ソフトウェア400と実制御装置80との間の通信を処理するものであり、システムエンジニアの操作によって、システム構成管理データ406の内容を実制御装置80の実システム構成から自動生成する。
アプリケーション通信インタフェース部404は、当該システム構成管理ソフトウェア400と、プログラミングソフトウェア200やコンフィグレーションソフトウェア300との間の通信を処理するものである。システムエンジニアの操作によって、システム構成管理データ406に関するデータがソフトウェア間で受け渡しされる。
メイン処理部405は、ユーザインタフェース部402や制御装置通信インタフェース部403からの入力などに基づいて処理を行い、たとえばコンフィグレーション用データ306の内容を変更する処理を行う。
システム構成管理データ406は、ネットワーク共有ラベル情報テーブル407と、ネットワーク範囲割付設定データベース408と、ネットワークパラメータ409と、コンフィグレーション割付設定情報410を有している。
ネットワーク共有ラベル情報テーブル407は、コンフィグレーションソフトウェア300で作成したシステム構成間で共有するラベル情報の一覧を管理する。システムエンジニアによってラベルをシステム構成内の共有メモリ領域に割り付けた情報を有する。
ネットワーク範囲割付設定データベース408は、システム構成管理ソフトウェア400で管理する全てのネットワークについて、ネットワーク番号ごとに並べられたネットワーク範囲割付設定から構成されるものであり、各ネットワーク範囲割付設定を有する。ネットワーク範囲割付設定は、1つのネットワークを構成するノードとノードとの間の割付情報である。
ネットワークパラメータ409は、システム構成管理ソフトウェア400で管理するネットワークの設定である。ネットワークパラメータ409として、たとえば各通信ノードのノード番号、ネットワーク番号、ネットワーク種別、ネットワークグループなどを例示することができる。
コンフィグレーション割付設定情報410は、コンフィグレーションソフトウェア300で構成したコンフィグレーション用データ306を用いて、システム構成間のネットワーク接続を管理する。システムエンジニアは、アプリケーション通信インタフェース部404で取得したシステム構成を選択し、作業領域に構成したシステムを配置し、システム構成間をネットワークで接続する。
つぎに、このようなソフトウェア(リンク間転送設定支援装置)を利用したシステム構築について説明する。最初に、システムエンジニアは複数のグループに分かれて、システム構成単位でシステム構築を担当するのが一般的である。システムエンジニアは、グループ毎に制御装置を組み合わせて一つのシステムを構築し、コンフィグレーションソフトウェア300で、制御装置からシステム構成の情報を取得する。
図11は、コンフィグレーションソフトウェアでのコンフィグレーション用データの生成手順の一例を示すフローチャートである。また、図12は、システム構成情報の生成順序を模式的に示す図であり、図13は、各ステップでのシステム構成情報の一例を示す図である。
まず、コンフィグレーションソフトウェア300は、オンライン接続された制御装置に対して、制御装置のシステム構成の取得処理を行う(ステップS11)。具体的には、コンフィグレーションソフトウェア300は、制御装置に対して、制御装置のシステム構成を問い合わせる要求を送信し、制御装置は、要求に対してシステム構成を応答として返す(ステップS12)。ここで取得される制御装置のシステム構成は、たとえば制御装置がベースユニット60上のどの位置に、どの型番の製品(ユニット)が装着されているかを示すものである。そのため、図13(a)に示されるように、システム構成は、ベースユニット60上の位置であるベースユニット位置番号と、その位置に取り付けられている型名(ユニット名)とが対応付けられている。また、1番目の格納、2番目の格納、・・・などは、各ユニットに必要な情報が格納される。ユニットにプログラムが格納されている場合には、既に制御装置のシステム構成の割付がなされているので、その情報が1番目の格納、2番目の格納、・・・などに格納される。図12(a)と図13(a)の例では、ベースユニット位置番号No.1に型番が「CPU−001」のユニット61が装着され、ベースユニット位置番号No.2に型番が「NW−101」のユニット62が装着されている。なお、コンフィグレーションソフトウェア300は、この状態では、ユニットがCPUユニットであるのか、ネットワークユニットであるのかなどの識別を行うことができない(CPUユニットやネットワークユニットを識別する情報を得ていない)。
その後、コンフィグレーションソフトウェア300は、システム構成の取得が完了したかを判定する(ステップS13)。システム構成の取得が完了していない場合(ステップS13でNoの場合)には、ステップS11へと戻る。システム構成の取得が完了している場合(ステップS13でYesの場合)には、システム構成情報を自動生成する(ステップS14)。自動生成されるシステム構成情報は、図13(a)に示されるシステム構成をたとえばバイナリコードにしたものである。
その後、コンフィグレーションソフトウェア300は、各制御装置に問い合わせを行って、各制御装置の情報を取得する処理を行う(ステップS15,S16)。具体的には、コンフィグレーションソフトウェア300は、作成したシステム構成内の各制御装置の識別子を問い合わせる要求を送信すると、各制御装置は、それに対する応答として識別子を返す。ここでは、識別子とは、各ユニットのメモリ容量やノード数などの固有情報を特定するコードである。予め、使用されるユニットには識別子が割り当てられている。たとえば、1つのユニットの型番に対して、識別子が割り当てられる。識別子は、各ユニットのバージョン情報まで管理している。
ついで、コンフィグレーションソフトウェア300は、制御装置の情報の取得が完了したかを判定する(ステップS17)。制御装置の情報の取得が完了していない場合(ステップS17でNoの場合)には、ステップS15へと戻る。制御装置の情報の取得が完了している場合(ステップS17でYesの場合)には、コンフィグレーションソフトウェア300は、制御装置情報テーブル307から識別子が一致する制御装置の各ノードをシステム構成内の制御装置に割り当てる(ステップS18、図12(b))。この割り当てで、システム構成の各ユニットがCPUユニットであるのか、ネットワークユニットであるのかが識別可能となる。また、ここでは、図13(b)に示されるように、ネットワークユニットに対して、接続されるネットワークを識別するネットワーク番号、ネットワーク内での局番やIPアドレス、グループ番号などの通信を行うのに必要な情報がノードとして割り当てられる。
同様に、コンフィグレーションソフトウェア300は、制御装置情報テーブル307から識別子が一致する制御装置の共有メモリ領域のサイズ情報もシステム構成に割り当てる(ステップS19、図12(c))。ここでは、図13(c)に示されるように、使用できる共有メモリ領域の最大値が設定される。
ついで、コンフィグレーションソフトウェア300は、制御装置からプログラムを取得する処理を行う(ステップS20,S21)。具体的には、制御装置にプログラムの取得要求を送信し、各制御装置は、プログラムがある場合にはそれに対する応答としてプログラムを送信し、プログラムがない場合にはプログラムがない旨の応答を返す。
その後、コンフィグレーションソフトウェア300は、プログラムがある場合(ステップS22で有りの場合)には、ステップS20,S21で制御装置から取得したプログラムをシステム構成情報内の制御装置に割り当てる(ステップS23、図12(d))。また、プログラムがない場合(ステップS22で無しの場合)には、コンフィグレーションソフトウェア300は、システム構成内の制御装置に、新規プログラムを割り当てる(ステップS24、図12(d))。プログラムが割り当てられた後のシステム構成情報は、図13(d)のようになる。
その後またはステップS23の後、コンフィグレーションソフトウェア300は、システム構成内の全制御装置の割り当てが完了したか否かを判定し(ステップS25)、まだシステム構成内の制御装置の割り当てが完了していない場合(ステップS25でNoの場合)には、ステップS15へと戻り、上記した手順と同様に、他の制御装置に対しても、各ノードと共有メモリ領域とプログラムをシステム構成内の制御機器に割り当てる。また、ステップS25でシステム構成内の全制御装置の割り当てが完了した場合(ステップS25でYesの場合)には、処理が終了する。
以上では、システム構成の割り当て処理について説明したが、複数のグループに分かれた別のシステムエンジニアは、システム構成内の制御装置のプログラム作成を担当する。プログラムを担当するシステムエンジニアは、プログラミング用ソフトウェアを用いて各制御装置にラベルを使用したプログラムを作成する。
図14は、各制御装置のラベル定義とプログラムの一例を示す図である。この図では、図8に示される制御システムを構成する制御装置10,20,40を例に挙げている。このようにシステムエンジニアによって作成されたラベル定義13,23,43と、ラベルを使用してプログラミングしたラベルプログラム12,22,42は、プログラミングソフトウェア200のプログラミング用データ206に反映される。ここでは、各ラベル定義13,23,43とラベルプログラム12,22,42は、制御装置10,20,40ごとに作成される。なお、制御装置10,20,40のラベル名称「スイッチ1」のラベルの有効範囲は、複数ネットワークで接続されたシステム構成の各制御装置間で共有する範囲となるシステムクラスとされ、システム全体で共有される。
図15は、図14のシステムラベルを含むプログラムのデータ処理の一例を示す図である。プログラミングソフトウェア200は、図14のラベルプログラムにおいて、ラベルプログラムの命令の引数の位置やプログラマブル表示器のスイッチ、ランプなどのデータを扱うプログラム部品への割り当てや、パラメータのイベントフラグで、演算前にデータを格納する動作S32,S33となるか、演算後のデータの行き先となる動作S31となるかを判別し、各制御装置10,20,40のラベル割付情報を生成する。具体的には、演算後のデータの行き先となる動作のシステムラベルには書き込みラベルを付加し、演算前のデータの行き先となる動作のシステムラベルには読み込みフラグを付加する。
図16は、プログラミングソフトウェアによって自動生成されたラベル割付情報の一例を示す図である。図16(a)は、図8の制御装置10のラベル割付情報であり、(b)は、同じく制御装置20のラベル割付情報であり、(c)は、同じく制御装置40のラベル割付情報である。
たとえば、図14の制御装置10におけるラベル定義では、スイッチ1がシステムラベル14として宣言されており、同じくラベルプログラム12では、スイッチ1がコイル命令に使用されている。そのため、スイッチ1が演算後のデータの行き先となる動作(図15のステップS31)に割り当てられていることになり、プログラミングソフトウェア200は、図16(a)に示されるように、書き込みフラグ151の情報をラベル割付情報に付加する。
また、図14の制御装置20におけるラベル定義では、スイッチ1がシステムラベル24として宣言されており、同じくラベルプログラム22では、スイッチ1がA接点命令に使用されている。そのため、スイッチ1が演算前にデータを格納する動作(図15のステップS32)に割り当てられていることになり、プログラミングソフトウェア200は、図16(b)に示されるように、読み込みフラグ152の情報をラベル割付情報に付加する。他のラベル情報も同様に、制御装置のラベル定義とラベルプログラムから、書き込みフラグと読み込みフラグをラベル割付情報に付加するが、システムラベルではないラベルについては、フラグは付加されない。
さらに、プログラミングソフトウェア200は、ラベルプログラムの命令の引数の位置以外にも、プログラマブル表示器のスイッチ(ON/OFF後のデータの行き先となる動作)、ランプ(ON/OFF前にデータを格納する動作)などのデータを扱うプログラム部品への割り当てや、パラメータのイベントフラグから、演算前にデータを格納する動作か、演算後のデータの行き先となる動作かを判断して、書き込みフラグと読み込みフラグをラベル割付情報に付加する。
たとえば、図14の制御装置40のラベル定義43では、スイッチ1がシステムラベル44として宣言されており、同じくラベルプログラム42では、スイッチ1が表示器のランプ部品に使用されている。そのため、スイッチ1が演算前にデータを格納する動作(図15のステップS33)に割り当てられていることになり、プログラミングソフトウェア200は、図16(c)に示されるように、読み込みフラグ153の情報をラベル割付情報に付加する。
続いて、コンフィグレーションソフトウェア300は、プログラミングソフトウェア200から自動生成されたラベル割付情報を受け取り、ラベル割付情報の書き込みフラグが付加されたシステムラベルを、コンフィグレーションソフトウェア300で構成されたシステム構成内の共有メモリ領域の送信領域に割り当てる。
図17は、システムラベルの送信領域への割り当て処理の手順の概要を模式的に示す図である。まず、図17(a)に示されるように、あるネットワーク内の第1の制御装置の第1のノードは、ラベル割付情報の書き込みフラグが付加されたシステムラベルを共有メモリ領域に割り付ける。その後、第1の制御装置は、システム構成管理ソフトウェア400で構成したネットワーク構成にしたがってネットワーク上のつぎの第2のノードに共有メモリ領域の割付情報を転送する。
図17(b)に示されるように、第1のノードから共有メモリ領域の割付情報を受け取った第2の制御装置の第2のノードは、第1のノードと同様にシステム構成内のシステムラベルの書き込みフラグが付加されたラベル割付情報から、共有メモリ領域の送信領域にラベルを割り付けた情報を付加する。そして、システム構成管理ソフトウェアで構成したネットワーク構成にしたがって、つぎのノードに共有メモリ領域の送信領域の割付情報を転送する。
このような処理をネットワーク内のすべてのノードに対して行う。図17(c)に示されるように、ネットワーク内の最後の第Nの制御装置の第Nのノードは、図示しない第N−1のノードから共有メモリ領域の割付情報を受け取り、システム構成内のシステムラベルの書き込みフラグが付加されたラベル割付情報から、共有メモリ領域の送信領域にラベルを割り付けた情報を付加する。そして、システム構成管理ソフトウェアで構成したネットワーク構成にしたがって、第1のノードに共有メモリ領域の送信領域の割付情報を転送する。
ネットワーク内のすべてのノードが共有メモリ領域の送信領域を割り当てる処理を終了すると、各ノードは受信領域の割り当てを行う。これは、すべてのノードによって割り付けられた送信領域のうち、読み込みフラグが付加されたシステムラベルをシステム構成内の各制御装置の共有メモリ領域の受信領域に割り当てる。具体的には、自制御装置のラベル割付情報からフラグが設定されているラベル名称を取得し、他の制御装置のラベル割付情報に同じラベル名称で、同じデータ型のものが存在するかを確認する。同じデータ型で同じラベル名称のものには、読み込みフラグが付されている。そして、同じデータ型で同じラベル名称のものに対応する送信領域を受信領域に設定する。これによって、各ノードでは、それぞれ送信領域と受信領域のラベル割付が済んだ共有メモリ領域の割付情報(共有メモリ領域情報)が生成される。また、この共有メモリ領域情報から、システム構成内のネットワーク範囲割付情報が自動生成され、図1に示されるように、サイクリック伝送が実現される。
図18は、共有メモリ領域へのシステムラベルの割り付けの一例を模式的に示す図である。上記のように、制御装置内のメモリ領域の中の書き込みフラグを付したシステムラベルがネットワーク範囲割付設定の一部として設定される。また、このシステムラベルは、システム構成内の共有メモリ領域におけるその制御装置の送信領域として設定される。ネットワーク内のすべてのノードの送信領域が共有メモリ領域に設定され、他の制御装置の読み込みフラグを付加したシステムラベルに対応する送信領域を受信領域とすることで、共有メモリ領域情報が生成される。そして、共有メモリ領域情報の他の制御装置からの受信領域を、読み込みフラグを付加したシステムラベルとすることで、ネットワーク範囲割付設定が生成される。
つぎに、データ中継制御装置によるリンク間転送設定について説明する。図8に示すような複数ノード31,32を有するデータ中継制御装置30は、それぞれのネットワーク51,52に接続されたノード11,21,41の共有メモリ領域に、たとえば図16に示されるようなフラグが付加されたラベル割付情報を有する。そこで、データ中継制御装置30のリンク間転送設定生成部33は、複数のフラグが付加されたラベル割付情報から、一のネットワーク(たとえばネットワーク51)のシステムラベルと他のネットワーク(たとえばネットワーク52)のシステムラベルのラベル名とデータ型を比較し、一致するならば、転送元から転送先へデータを転送するリンク間転送設定を生成する。
図19は、リンク間転送設定の自動生成処理の手順の一例を示すフローチャートである。まず、データ中継制御装置30は、一のネットワークの共有メモリ領域に格納されているラベル割付情報中のラベルのフラグの確認を行う(ステップS51)。フラグがない場合(ステップS51で無しの場合)には、つぎのラベルの処理をする(ステップS52)。そして、つぎのラベルがあるかを判定し(ステップS53)、ラベルがある場合(ステップS53でYesの場合)には、ステップS51へと戻る。また、ラベルがない場合(ステップS53でNoの場合)には、リンク間転送設定の自動生成処理が終了する。
また、ステップS51でフラグがある場合(ステップS51で有りの場合)には、ラベル名の確認を行う(ステップS54)。この処理は、ステップS51でラベルの確認を行っているネットワークとは異なる他のネットワークの共有メモリ領域に格納されているラベル割付情報中のラベルに対応するラベル名が存在するかを確認するものである。
ラベル名が不一致の場合(ステップS54で不一致の場合)には、リンク間転送設定の作成を行わずに、ステップS52へと処理が移り、つぎのラベルの処理をする。ここで、ラベル名が不一致のラベルは、1つのネットワーク内でのみデータ共有されるラベルとなる。
また、ラベル名が一致する場合(ステップS54で一致の場合)には、つぎにデータ型を確認する(ステップS55)。この処理は、ステップS51でラベルの確認を行っているネットワークのラベルのデータ型が、他のネットワークのラベル割付情報中のラベル(ラベル名)のデータ型と一致しているかを確認するものである。
データ型が不一致の場合(ステップS55で不一致の場合)には、リンク間転送設定の作成を行わずに、ステップS52へと処理が移り、つぎのラベルの処理をする。ここで、データ型が不一致のラベルは、システムエンジニアのプログラムミスの可能性があるので、データ型が不一致である旨のエラーを転送元、転送先に送信し、つぎのラベルの処理をする。
また、データ型が一致する場合(ステップS55で一致の場合)には、転送元から転送先へリンク間転送設定を自動生成する(ステップS56)。つまり、転送元を書き込みフラグが付加されたラベルを有するネットワークに接続されるノードとし、転送先を読み込みフラグが付加されたラベルを有するネットワークに接続されるノードとする。その後は、ステップS52へと移って、フラグの確認が行われていないラベルがなくなるまでつぎのラベル処理を行う。
図20は、リンク間転送設定の一例を示す図である。この図に示されるように、リンク間転送設定は、転送元、転送先、転送元共有メモリ領域先頭アドレス、転送先共有メモリ領域先頭アドレス、およびサイズを有し、これらの情報をラベル割付情報から取得して生成する。なお、書き込みフラグがあるラベルのネットワークの方を転送元と規定し、読み込みフラグがあるラベルのネットワークの方を転送先と規定するものとする。
図21は、ネットワーク範囲割付設定の一例を示す図であり、(a)はたとえば図8のネットワーク51のネットワーク範囲割付設定であり、(b)は同じくネットワーク52のネットワーク範囲割付設定である。これらのネットワーク範囲割付設定は、上記したように共有メモリ領域の割り付けを行った後に作成されるものである。各ネットワークのネットワーク範囲割付設定は、ノード番号、共有メモリ領域先頭アドレス、フラグ、およびサイズを有する。
以上のようにして生成されたリンク間転送設定は、リンク間転送設定記憶部34に記憶される。また、データ中継制御装置30のリンク間転送制御部35は、リンク間転送設定に基づいて、転送元のネットワークの共有メモリ領域のデータを転送先のネットワークの共有メモリ領域へと転送する。図22は、データ中継制御装置によるリンク間転送の処理手順の流れを模式的に示す図である。まず、ネットワーク51のノード11でプログラム1のコイル命令がONし、スイッチ1にデータが格納される(ステップS71)。その後、ノード11は、ノード21、ノード31へスイッチ1のデータをサイクリック伝送する(ステップS72)。
ノード31は、サイクリック伝送によってスイッチ1のデータを受け取ると、スイッチ1のデータをネットワーク範囲割付設定に従って共有メモリ領域に格納する(ステップS73)。同様に、ノード21は、サイクリック伝送によってスイッチ1のデータを受け取ると、スイッチ1のデータをネットワーク範囲割付設定に従って共有メモリ領域に格納する。その結果、ノード21のプログラム2の接点A命令が立ち上がる(ステップS74)。
一方、ノード31は、リンク間転送設定範囲にデータ受信したことをリンク間転送制御部35に通知する(ステップS75)。リンク間転送制御部35は、リンク間転送設定に従い、転送元から転送先へデータをリンク間転送する(ステップS76)。これによって、ネットワーク51のノード31のネットワーク共有メモリ領域のスイッチ1のデータが、ネットワーク52のノード32のネットワーク共有メモリ領域のスイッチ1に転送される(ステップS77)。
ついで、ノード32は、ネットワーク51からのスイッチ1のデータを受け取ると、ネットワーク52へスイッチ1のデータをサイクリック伝送する(ステップS78)。そして、ノード41は、スイッチ1のデータを共有メモリ領域に格納し、これによって、ノード41のプログラム3のランプがONされる(ステップS79)。
なお、リンク間転送は、ステップS75の受信確認および受信通知を省略し、ステップS75のリンク間転送の実行を一定周期に実施することで、データ更新の定時性を保つことも可能である。
この実施の形態では、サイクリック伝送を行っている異なるネットワーク間を跨いでデータ転送をする場合にシステムラベルを設定し、ネットワーク間を跨いでデータ転送を行うラベルを用いたプログラムから、そのラベルに書込みフラグまたは読み込みフラグかを設定した。そして、システムフラグが設定されたデータから複数のネットワーク間でデータ転送を行うリンク間設定情報を、複数のネットワーク間を接続する複数通信ノードを有するデータ中継制御装置が行うようにした。これによって、人手による設定時のように、制御装置が実行するプログラムは正しいが、リンク間転送されるデータが誤っているために、制御装置が予期しない動作をしてしまうことを防ぐことができるという効果を有する。
また、システム構成やプログラムを変更する毎に、データ中継制御装置が自動でリンク間転送設定情報を再設定するので、システムエンジニアが転送元のネットワークでサイクリック伝送しているデータと、転送先のネットワークでサイクリック伝送しているデータとを把握して、どのデータをリンク間転送するのかをデータ中継制御装置に設定する手間が軽減されるという効果も有する。