(57)【要約】【課題】  送信する順番を固定しつつ、各スレーブがINフレームを送信するタイミングを過度に無駄な空き時間を生じないように設定すること【解決手段】  マスタの出したトリガフレームを受信した各スレーブが、設定された待機時間経過後にINフレームを送信する通信システムである。INフレームを送信するスレーブの順番は、スレーブのアドレスの小さい順にし、マスタは、ネットワークに接続され実際に使用されるスレーブのアドレスと、そのスレーブが送信するINフレームのIOデータのビットサイズを取得し、各スレーブがINフレームを送信するのに要する時間を求め、それに基づきあるアドレス(#n-1)のスレーブから送信されるINフレームが送信完了したタイミングで、次のアドレス(#n)のスレーブの送信タイミングを設定する。図(b)に示すように、#0,#2,#6からのINフレームは、その送信タイミングが前詰めされ全体のサイクルタイムが短縮される。【選択図】        図１１
2010021866.tif 000002
【特許請求の範囲】
【請求項１】
マスタと複数のスレーブとがネットワークにて接続され、前記マスタが、前記スレーブの送信タイミングの基準信号となるトリガフレームを送信し、そのトリガフレームを受信した前記スレーブが、そのトリガフレームを受信してから予め設定された待機時間を経過後、ＩＮフレームを送信する通信システムであって、
前記マスタは、
ネットワークを構成するスレーブのアドレスと、そのスレーブが送信するＩＮフレームのＩＯデータのビットサイズと、を関連付けた登録テーブルと、
その登録テーブルに格納された前記スレーブのアドレスに基づいて前記ＩＮフレームを送信するスレーブの順番を決定し、１番目からｎ−１番目までの各スレーブの前記登録テーブルに格納されたビットサイズから、それぞれのスレーブで送信されるＩＮフレーム全体のデータサイズを求めると共に、その求めた各ＩＮフレーム全体のデータサイズの総和から、それら１番目からｎ−１番目までのスレーブがＩＮフレームを送信するのに要する時間の総和を求め、その求めた時間に基づいてｎ番目に送信するスレーブについての待機時間を決定する待機時間決定手段と、
その待機時間決定手段で決定した各スレーブについての待機時間を当該スレーブに通知する通知手段と、を有し、
前記スレーブは、前記通知手段により通知され待機時間を記憶する記憶手段を有し、その記憶手段に記憶した待機時間に基づいて決定される送信タイミングで、ＩＮフレームの送信を行うようにした
ことを特徴とする通信システム。
【請求項２】
前記スレーブは、送信するＩＮフレームのＩＯデータのビットサイズを記憶保持し、
前記マスタは、ネットワークに接続されている全てのスレーブから、それぞれが記憶保持しているビットサイズと、アドレスとを関連付けたステータス情報を収集するステータス情報収集手段と、
そのステータス情報収集手段で収集したネットワークに接続されている全てのスレーブのステータス情報から前記登録テーブルを作成し、登録テーブル記憶部に格納する登録テーブル作成手段と、
を備えたことを特徴とする請求項１に記載の通信システム。
【請求項３】
前記マスタは、ネットワークに接続されている全てのスレーブについて、前記マスタからそれぞれのスレーブまでに存在するリピータの段数を取得するリピータ段数取得手段を備え、
前記前記待機時間決定手段は、前記待機時間を通知するスレーブとの間でリピータが存在している場合、前記リピータ段数取得手段で取得したリピータの段数とリピータを通過する際に生じるリピータ遅延時間に基づいて、リピータを通過することに伴い生じる総遅延時間を求め、前記１番目からｎ−１番目までのスレーブがＩＮフレームを送信するのに要する時間の総和から前記総遅延時間を減算してｎ番目に送信するスレーブについての待機時間を求めるものであることを特徴とする請求項１または２に記載の通信システム。
【請求項４】
マスタと複数のスレーブの存在するネットワーク上で、前記マスタが送信した前記スレーブの送信タイミングの基準信号となるトリガフレームを受信した前記スレーブが、そのトリガフレームを受信してから予め設定された待機時間を経過後、ＩＮフレームを送信する通信システムのためのマスタであって、
ネットワークを構成するスレーブのアドレスと、そのスレーブが送信するＩＮフレームのＩＯデータのビットサイズと、を関連付けた登録テーブルと、
その登録テーブルに格納された前記スレーブのアドレスに基づいて前記ＩＮフレームを送信するスレーブの順番を決定し、１番目からｎ−１番目までの各スレーブの前記登録テーブルに格納されたビットサイズから、それぞれのスレーブで送信されるＩＮフレーム全体のデータサイズを求めると共に、その求めた各ＩＮフレーム全体のデータサイズの総和から、それら１番目からｎ−１番目までのスレーブがＩＮフレームを送信するのに要する時間の総和を求め、その求めた時間に基づいてｎ番目に送信するスレーブについての待機時間を決定する待機時間決定手段と、
その待機時間決定手段で決定した各スレーブについての待機時間を当該スレーブに通知する通知手段と、
を備えたマスタ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、マスタと複数のスレーブとがネットワークにて接続され、マスタが、スレーブの送信タイミングの基準信号となるトリガフレームを送信し、そのトリガフレームを受信したスレーブが、そのトリガフレームを受信してから予め設定された待機時間（タイムドメイン値）を経過後、ＩＮフレームを送信する通信システム及びそれに用いられるマスタに関するもので、前記待機時間の設定に関する改良に関する。
【背景技術】
【０００２】
ＦＡ（ファクトリーオートメーション）で用いられるＰＬＣ（プログラマブルコントローラ）が加入されるネットワークシステムの一形態として、フィールドネットワークシステムがある。このフィールドネットワークシステムは、マスタとなるＰＬＣと、Ｉ／Ｏ機器やＩ／Ｏターミナル等の各種のスレーブが、制御系ネットワークの１つであるフィールドバスに接続されて構成される。このフィールドネットワークシステムでは、マスタとスレーブとが、マスタ−スレーブ通信を行い、ＩＯデータ等の送受を行ない、制御対象機器の制御を実行する。
【０００３】
マスタ並びにスレーブは、フィールドバスに対してマルチドロップ配線で接続され、マスタから出力された送信フレームは、フィールドバスに接続された全てのスレーブ（ノード局）に対して一斉に到達する。そして、各スレーブには個々にノードアドレスが設定されており、送信フレームには、宛先のノードアドレス（１または複数）を含む宛先データを付加しておく。これにより、各スレーブは、受信した送信フレームの宛先データを抽出し、自己宛の送信フレームか否かを判断し自己宛の場合にはその送信フレームを取り込み、自己宛でない場合には破棄するようになる。
【０００４】
また、スレーブからマスタへ向けて出力されるフレームも、同様に送信アドレスにマスタのノードアドレスが付加されることにより、マスタのみが受信することができる。さらに、例えば、特許文献２に開示された通信システムのように、所定の条件の下でネットワークを構成した場合、スレーブからマスタへ送信されるフレームのうち、本発明における最適化対象となるＩＮフレームには、ノードアドレスを付加しないフレームフォーマットをとることもできる。すなわち、ネットワーク上に存在するマスタが一台で、かつ、そのマスタがネットワークの階層において最上位に位置するようにした場合、必ずマスタにのみ送信されるフレーム（ＩＮフレーム、ＣＮフレーム）は、宛先アドレスをフレームに含ませる必要がない。つまり、ヘッダにフレーム種別を特定するための情報を含ませておくことで、ＩＮフレーム等の場合には、マスタ宛のフレームであることがわかるので、当該フレームを、マスタが受信する（他のスレーブは受信しない）ことができる。また、マスタとスレーブとの間にリピータが介在するネットワーク構成の場合、リピータは、上記フレーム内のフレーム種別を判定し、当該フレームがＩＮフレームであり、かつ当該リピータの下位ポートからの受信した場合は、リピータの上位側、つまりマスタが存在するポートに対して中継処理をすることで適切に伝送できる。このように宛先アドレスを含ませないようにすることで、宛先アドレスに要するフレーム長分だけ、サイクルタイムに大きく影響するＩＮフレームのフレーム長を短くできるため、結果としてサイクルタイムを短くすることができる。
【０００５】
ところで、係るスレーブからマスタに向けて出力されるフレームの送信タイミングであるが、各スレーブが一斉に送信すると、フィールドバス上で衝突が生じて通信不能となるので、予め各スレーブに対し異なる送信タイミングを設定しておく。そして、各スレーブは、マスタの出した要求（トリガフレーム）を受信してから、自己に設定された一定時間経過後に応答を返すようにする。
【０００６】
この各スレーブが返す応答のタイミング（タイムスロット）は、マスタが決定し、各スレーブに設定する。具体的には、送信する順番は、各スレーブに設定されたアドレス順（昇順）にする。これは、各スレーブから送られてくるフレーム（ＩＮフレーム）の順番を、毎サイクルで同じにしたいという要求を受け、アドレス順にすることでＩＮフレームの位置を固定化している。
【０００７】
また、スレーブから送信されるフレームは、サイズが固定のヘッダと、ＩＯの点数によりサイズが異なるビットデータとから構成される。各スレーブのビットデータは、１６ビットから２５６ビットと多岐にわたり、１６点単位（１６ビット，３２ビット，４８ビット，…）となる。そこで、最小単位（サイズ）となる１６点を基本とし、１６ビットのフレームを送信するのに必要な時間を１つのタイムスロットとする。よって、すべてのスレーブが１６点で、アドレスが＃０から＃６まで抜けることなく存在している場合、図１（ａ）に示すように、タイムスロットごとに定期的に各スレーブから送信される。１つのタイムスロットは、“ヘッダのサイズ”＋“１６ビット分のデータサイズ”のフレームを送信するために要する時間に合わせているので、無駄なく各スレーブが送信することができる。
【０００８】
一方、実際には、上述したように、各スレーブは、異なる点数のものが混在しているので、１６点の応答の場合には１つのタイムスロット、３２点の場合には２つのタイムスロット、６４の場合には４つのタイムスロットを使用する。つまり、スレーブ（ノードアドレス＝＃ｘ）のデータサイズが３２ビットの場合は、連続する２つのタイムスロット（＃ｎと＃（ｎ＋１））の領域を使用することになる。これに伴い、スレーブのアドレスとして＃（ｎ＋１）は使用できなくなる。その結果、例えば、スレーブアドレスが＃０，＃２，＃６の各スレーブから送信されるＩＮフレームが、３２ビット，６４ビット，１８ビットとすると、各ＩＮフレームの送信タイミングは、図１（ｂ）に示すようになる。そして、具体的な各スレーブの応答位置（トリガフレームから距離）は、
スレーブ＃０の応答位置＝０
スレーブ＃２の応答位置＝０＋（ヘッダ＋１６ビット）×２
スレーブ＃６の応答位置＝０＋（ヘッダ＋１６ビット）×（２＋４）
となる。マスタは、スレーブ検出時にスレーブアドレスとビットサイズから各スレーブの応答時間（各スレーブがトリガフレームを受信して応答を返すまでの時間）を算出して、各スレーブに通知する。係る構成からなる従来例としては、例えば特許文献１に開示された技術がある。
【０００９】
【特許文献１】特開２００４−２８０３０４号公報
【特許文献２】特開２００７−９７１５７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ＩＮフレームの順番を毎回同じにした場合、図１（ｂ）に示すように、あるＩＮフレームが送信完了してから、次にＩＮフレームが送信開始するまでに、時間が空き、効率が悪くなることがある。これは、３２ビット以上のデータを送信するＩＮフレームは、複数のタイムスロットを使用することになり、各タイムスロットは、ヘッダ＋１６ビット分のＩＮフレームを送信するために要する時間が設定されているのに対し、３２ビット以上のデータを送信するＩＮフレームには、ヘッダは１つのみ有しているので、１または複数のヘッダのサイズ分だけ無駄が生じる。
【００１１】
さらに、１つのタイムスロットの長さは、ヘッダ＋１６ビット分のデータを送信するのに必要な時間を基準とし、さらに、１つのＩＮフレームを送信する場合に生じるばらつきを考慮して所定のマージンを付加している。このばらつきの量は、ビットサイズの大小に対応するものでもなく、１つのフレームごとに起因するものである。従って、仮に３２ビットのデータを送信するＩＮフレームでは、１つのフレーム分のばらつきを考慮したマージンを設定する必要があるところ、２つのタイムスロットを使用するため２つのフレーム分のばらつきを考慮したマージンが加算されるので、結果として１つ分のばらつきに応じた時間が更に無駄に設定されることになる。
【００１２】
また、スレーブアドレスでタイムスロットが決定されるため、途中のノード（スレーブ）が存在しなくても前詰めされず無駄が生じる。一例を上げすると、図１（ｂ）の場合、＃５のスレーブが存在しないので、タイムスロット＃５の区間は、フレームが送信されない区間となる。
【００１３】
なお、このような無駄を省くため、フレームが詰まった通信サイクルを実現する場合、ネットワークに加入した順にＩＮフレームを並べる必要がある。例えば、＃３，＃０，＃２，＃４の順番で加入された場合は、図１（ｃ）に示すようになる。しかし、この方法では、ネットワークを構築するたびにＩＮフレームの順番が変わってしまい、それに伴い、Ｉ／Ｏ応答特性が変動するため、ＦＡ制御の信頼性が低下するので好ましくない。さらに、スレーブが加入するたびに通信サイクルが変動するという問題もある。
【００１４】
この発明は、送信する順番を固定しつつ、各スレーブがＩＮフレームを送信するタイミングを過度に無駄な空き時間（隙間）を生じることなく適切に設定することができる通信システム及びマスタを提供することを目的とする。
【課題を解決するための手段】
【００１５】
この発明による通信システムは、（１）マスタと複数のスレーブとがネットワークにて接続され、マスタが、スレーブの送信タイミングの基準信号となるトリガフレームを送信し、そのトリガフレームを受信したスレーブが、そのトリガフレームを受信してから予め設定された待機時間を経過後、ＩＮフレームを送信する通信システムである。そして、マスタは、ネットワークを構成するスレーブのアドレスと、そのスレーブが送信するＩＮフレームのＩＯデータのビットサイズと、を関連付けた登録テーブルと、その登録テーブルに格納されたスレーブのアドレスに基づいてＩＮフレームを送信するスレーブの順番を決定し、１番目からｎ−１番目までの各スレーブの登録テーブルに格納されたビットサイズから、それぞれのスレーブで送信されるＩＮフレーム全体のデータサイズを求めると共に、その求めた各ＩＮフレーム全体のデータサイズの総和から、それら１番目からｎ−１番目までのスレーブがＩＮフレームを送信するのに要する時間の総和を求め、その求めた時間に基づいてｎ番目に送信するスレーブについての待機時間を決定する待機時間決定手段と、その待機時間決定手段で決定した各スレーブについての待機時間を当該スレーブに通知する通知手段と、を有する。そして、スレーブは、通知手段により通知され待機時間を記憶する記憶手段を有し、その記憶手段に記憶した待機時間に基づいて決定される送信タイミングで、ＩＮフレームの送信を行うようにした。
【００１６】
アドレスに基づく送信するスレーブの順番であるが、実施形態では、小さいアドレスから昇順にしたが、降順でも良いし、予め決めた規則に基づいて決定するものでも良い。いずれにしても、予め規則を決めておくことで、送信する順番を固定化することである。待機時間は、実施形態では、タイムドメイン値に対応する。この待機時間に基づいて行われる通信は、実施形態の最適化モードでの動作に対応する。登録テーブルは、下記の（２）の発明等のように、実際にネットワークに接続されているスレーブから所望の情報を収集し、マスタが自動的に作成しても良いし、設定ツール装置等を用いてユーザが作成し、それをマスタにセットしても良い。設定ツール装置を用いて作成したものをマスタに登録する場合、その登録時には登録テーブルに格納されたスレーブが実際にネットワークに接続・加入していなくても良い。但し、実際にこの登録テーブルに格納された情報に基づいて待機時間を設定し、その待機時間に基づいてＩＮフレームの送信を行う際には、実際にスレーブが存在している必要がある。
【００１７】
本発明では、登録テーブルに格納されたスレーブのアドレスから、通信開始時におけるネットワークに存在するスレーブを知ることができ、換言すると、使用されていないアドレスを知ることができる。従って、登録テーブルに登録されたスレーブのアドレスに基づいて送信順番を決定することで、未使用の空きアドレスを排除することができる。しかも、待機時間決定手段により、各スレーブの送信タイミングは、前詰め（１つ前のスレーブの送信が完了するタイミングで自己のスレーブの送信タイミングになる）で設定されるので、無駄な隙間（空き時間）がなく、効率よく通信を行うように待機時間（タイムドメイン値）の設定を行うことができる。よって、全てのスレーブがＩＮフレームを送信し終わる通信サイクルも短くすることができる。
【００１８】
（２）スレーブは、送信するＩＮフレームのＩＯデータのビットサイズを記憶保持し、マスタは、ネットワークに接続されている全てのスレーブから、それぞれが記憶保持しているビットサイズと、アドレスとを関連付けたステータス情報を収集するステータス情報収集手段と、そのステータス情報収集手段で収集したネットワークに接続されている全てのスレーブのステータス情報から登録テーブルを作成し、登録テーブル記憶部に格納する登録テーブル作成手段と、を備えるとよい。このようにすると、実際にネットワークに格納されている全てのスレーブの情報を過不足無く収集することができるので、その後の待機時間の決定処理が、実際のネットワークに対応して正しく行うことができる。
【００１９】
（３）マスタは、ネットワークに接続されている全てのスレーブについて、マスタからそれぞれのスレーブまでに存在するリピータの段数を取得するリピータ段数取得手段を備え、待機時間決定手段は、待機時間を通知するスレーブとの間でリピータが存在している場合、リピータ段数取得手段で取得したリピータの段数とリピータを通過する際に生じるリピータ遅延時間に基づいて、リピータを通過することに伴い生じる総遅延時間を求め、１番目からｎ−１番目までのスレーブがＩＮフレームを送信するのに要する時間の総和から総遅延時間を減算してｎ番目に送信するスレーブについての待機時間を求めるものとすることができる。このようにすると、リピータが存在するネットワークにおいても、各スレーブから送信されたＩＮフレームは、マスタにタイミング良く受信されるようになり、送信タイミングの最適化を図ることができる。
【００２０】
（４）本発明のマスタは、マスタと複数のスレーブの存在するネットワーク上で、マスタが送信したスレーブの送信タイミングの基準信号となるトリガフレームを受信したスレーブが、そのトリガフレームを受信してから予め設定された待機時間を経過後、ＩＮフレームを送信する通信システムのためのマスタであって、ネットワークを構成するスレーブのアドレスと、そのスレーブが送信するＩＮフレームのＩＯデータのビットサイズと、を関連付けた登録テーブルと、その登録テーブルに格納されたスレーブのアドレスに基づいてＩＮフレームを送信するスレーブの順番を決定し、１番目からｎ−１番目までの各スレーブの登録テーブルに格納されたビットサイズから、それぞれのスレーブで送信されるＩＮフレーム全体のデータサイズを求めると共に、その求めた各ＩＮフレーム全体のデータサイズの総和から、それら１番目からｎ−１番目までのスレーブがＩＮフレームを送信するのに要する時間の総和を求め、その求めた時間に基づいてｎ番目に送信するスレーブについての待機時間を決定する待機時間決定手段と、その待機時間決定手段で決定した各スレーブについての待機時間を当該スレーブに通知する通知手段と、を備えた。
【発明の効果】
【００２１】
本発明は、送信する順番を固定しつつ、各スレーブがＩＮフレームを送信するタイミングを過度に無駄な空き時間（隙間）を生じることなく適切に設定することができる。
【発明を実施するための最良の形態】
【００２２】
図２は、本発明の好適な一実施の形態を実現するネットワークシステム全体を示している。図２に示すように、このネットワークシステムは、マスタ１０と、各種のスレーブ２０が、フィールドバス３０を介して接続されて構築されている。さらに、この例では、フィールドバス３０の適宜位置にリピータ３１が接続され、そのリピータ３１の下位側にもスレーブ２０が接続される構成を採っている。リピータ３１は、通過する信号に対して波形整形をするので、このようにリピータ３１を設けることで、ケーブル長を長くすることができる。マスタ１０は、実際にはＰＬＣを構成する１つのユニットであるマスタユニットにより構成される。また、図示省略するが、フィールドバス３０の先端には、終端装置が接続される。
【００２３】
図３は、マスタ１０の内部構造を示している。マスタ１０は、本発明との関係で言うと、フィールドバスに接続され、実際にデータの送受を行う通信インタフェース（物理層回路）１１と、その通信インタフェース１１を介してマスタ−スレーブ間通信をし、スレーブ２０との間でＩ／Ｏデータの送受を行ったり、所定のコマンドの送信並びにそれに基づくレスポンスの受信を行うマスタ通信ＡＳＩＣ１２と、各種の制御を行うＭＰＵ１３と、各種の制御実行時にワークエリア等として使用されるＲＡＭ１４と、上記制御を行うプログラムや、各種の設定データ等が格納されたＥＥＰＲＯＭ１５と、を備えている。さらに、マスタユニットの場合、図示省略するが、ＰＬＣを構成する他のユニット（ＣＰＵユニット等）と内部バスを介して通信を行うための内部バスインタフェースや、動作状態（通信状態）や異常／正常などを示すＬＥＤ表示部や、ユニットのアドレスの設定などを行うための設定スイッチ等を備えている。
【００２４】
ＭＰＵ１３が行う制御としては、ＣＰＵユニットその他のユニット等と通信したり、マスタ通信ＡＳＩＣ１２を動作させたりするようになっている。特に本発明との関係でいうと、フィールドバス３０に接続されたスレーブ２０を確認し、そのスレーブ２０の送信タイミング（タイムドメイン）を決定し、各スレーブに設定する機能を持つ。
【００２５】
本実施形態では、マスタ１０が決定する各スレーブの送信タイミング（マスタの出した要求（トリガフレーム）を受信してから各スレーブが送信するタイミング）は、各スレーブに設定されたアドレス順にしてＩＮフレームの位置を固定化することを基本とし、特許文献１等に用いられた前後に送信する送信フレーム間で通信していない無駄な時間を生じることを許容する通常モードと、係る無駄の発生を抑制し、効率よく通信する最適化モードを採るようにしている。
【００２６】
リピータ３１は、送信されてきたフレームを受信する処理，受信したフレームの波形整形をする処理，波形整形したフレームを送信する処理等を行うため、そこを通過する際に、一定の遅延が生じる。このリピータ３１における遅延時間は、ＦＡネットワークの規定により所定時間内になるように定められているので、どのメーカ・型式のリピータを使用したとしても、リピータを通過することにより生じる遅延時間は一律となる。そして、係る所定時間が、“リピータ遅延時間値”としてＥＥＰＲＯＭ１５に格納されている。
【００２７】
図４に示すように、スレーブ２０は、フィールドバスに接続され、実際にマスタ１０との間でＩ／Ｏデータや各種メッセージ等の送受を行う通信インタフェース（物理層回路）２１と、その通信インタフェース２１を介してマスタ−スレーブ間通信をし、Ｉ／Ｏデータの送受を行ったり、マスタ２０からの所定のコマンドの受信並びにそれに基づくレスポンスの送信を行うスレーブ通信ＡＳＩＣ２２と、各種の制御を行うＭＰＵ２３と、各種の制御実行時にワークエリア等として使用されるＲＡＭ２４と、上記制御を行うプログラムや、各種の設定データ，ＩＯデータ等が格納されたＥＥＰＲＯＭ２５と、を備えている。マスタ１０から送られてきた“タイムドメイン”は、スレーブ通信ＡＳＩＣ２２内のタイムドメイン記憶部２２ａ内に格納される。スレーブ通信ＡＳＩＣ２２は、そのタイムドメイン記憶部２２ａ内に格納されたタイムドメインに従って、マスタの出したトリガフレームを受信後、当該タイムドメイン経過後にフレーム（ＩＮフレーム）を送信する。
【００２８】
また、図示省略するが、動作状態（通信状態）や異常／正常などを示すＬＥＤ表示部や、スレーブ２０のアドレスの設定などを行うための設定スイッチや、電源回路等を備えている。また、スレーブ２０がＩ／Ｏターミナルの場合、ＩＯ機器を接続するための端子台等も備える。
【００２９】
次に、マスタが行う最適化モードによる送信タイミング（タイムドメイン）を決定する機能を説明する。まず、マスタ１０は、ＲＡＭ１４内に、送信タイミングを決定する際に必要となる各スレーブのアドレス（スレーブアドレス／ノードアドレス）と、送信フレームに含まれるＩＮデータのビットサイズを関連付けた登録テーブルを記憶保持する。この記憶保持する登録テーブルは、マスタ１０がネットワークに接続・加入されたスレーブと通信をして自動的に作成するようにしてもよいし、ユーザが設定ツール装置で作成したものをダウンロードすることでＲＡＭ１４内に格納するようにしても良い。
【００３０】
図５は、係る登録テーブルを自動的に作成する機能を示している。まず、マスタ１０のＭＰＵ１３は、接続可能な各アドレスについて、冗長性を考慮したタイムドメイン値を算出する（Ｓ１）。すなわち、本実施形態でも、図１に示すように、スレーブが送信するＩＮフレームは、ビットデータが１６ビットのものを基準とし、その基準となるＩＮフレームを送信するのに要する時間あるいはかかる時間に所定のマージンを付加した時間を、１つのタイムスロットの時間に設定し、＃ｎのアドレスのスレーブは、＃ｎのタイムスロットのタイミングでフレームを送信するようにしている。そして、ネットワークに接続可能なノード数（Ｎ）が決まっているので図１（ａ）に示すように、＃０，＃１，＃２，……，＃Ｎの各タイムスロットの送信開始時間であるタイムドメイン値を算出する。このとき求める各タイムドメイン値は、リピータの存在を考慮せず、マスタ１０に接続されたフィールドバス３０に直接接続されている（０段目）スレーブ２０に対するタイムドメイン値とする。なお、係る各アドレスに対するタイムドメイン値の算出処理は、たとえば特許文献１等に開示された技術を用いて行うことができる。
【００３１】
次に、ＭＰＵ１３は、ネットワークに新規なスレーブが追加されたか否かを判断する（Ｓ２）。これは、マスタ１０（ＭＰＵ１３）は、定期的にネットワークに接続されているスレーブを監視しており、新たにネットワークに加入されたスレーブの有無を判断する。
【００３２】
ＭＰＵ１３は、新たなスレーブの加入を検出した場合（Ｓ２でＹｅｓ）、ＭＰＵ１３は、そのスレーブに対してステータスリード（ＳＴＲ）メッセージを送り、当該スレーブが記憶するステータスを取得する。そして、マスタ１０（ＭＰＵ１３）は、取得したステータスに基づき、タイムドメイン値を算出し、ステータスライト（ＳＴＲ）メッセージにより、その求めたタイムドメイン値をそのスレーブ２０（スレーブ通信ＡＳＩＣ１２）に書き込む。本実施形態との関係でいうと、取得するステータスは、そのスレーブのアドレスと、入力点数（ビットデータサイズ）と、リピータ段数である。これらの情報は、スレーブ２０が自己のステータス情報として保有している。なお、リピータ段数は、この登録テーブル設定機能とは別に、事前にマスタ１０（ＭＰＵ１３）がリピータ段数調査用のメッセージフレーム（ビーコンフレーム）を送り、そのビーコンフレームを受信したスレーブは、自己のリピータ段数を認識し、ステータス情報を記憶する記憶部（ＲＡＭ２４等）に格納する。このビーコンフレームは、初期値としてリピータ段数情報として“０”を持ち、たとえば、ブロードキャスト等で送信され、リピータを通過する都度、リピータ段数が“＋１”インクリメントされて更新される。これにより、このビーコンフレームを受信したスレーブは、受信するまでに通過したリピータの数を認識することができ、その数をリピータ段数として、ステータス情報記憶部に格納する。係る技術は、たとえば、特開２００７−０９７１５７号公報等に開示されている。なお、このビーコンフレームのように、マスタ側からスレーブ側に向けて送信されたフレームに基づいてリピータ段数を求めるものに限ることはなく、これとは逆に、スレーブ側からマスタに向けてリピータ段数調査用のメッセージフレームを送信することでマスタが認識するようにしてもよい。つまり、上記のビーコンフレームと同様に、スレーブから送信されたリピータ段数調査用フレームは、初期値が０の“リピータ段数”の情報を持ち、リピータを通過する都度、リピータにてそのリピータ段数が“＋１”インクリメントされる。これにより、マスタは、受信したリピータ段数調査用フレームの送信元アドレスと、フレームに格納された“リピータ段数”の情報から、各スレーブまでの間に、幾つのリピータが存在しているかを認識することができる。
【００３３】
また、この処理ステップＳ３におけるスレーブのタイムドメイン値の決定は、通常モードにおける決定処理である。具体的には、ＭＰＵ１３は、リピータを介していない０段目（リピータ段数＝０）のスレーブに対しては、処理ステップＳ１で求めたアドレスと同じ番号のタイムスロットに割り当てられたタイムドメイン値を読み出し、その値をそのスレーブについてのタイムドメイン値に決定する。つまり、スレーブアドレスが＃ｎの場合、タイムスロット＃ｎに割り当てられたタイムドメイン値が、その＃ｎのスレーブのタイムドメイン値となる。また、リピータの下位に存在するスレーブの場合、ＭＰＵ１３は、リピータ遅延に基づく補正を行う。つまり、ＭＰＵ１３は、対象となるスレーブのリピータ段数を取得すると共に、ＥＥＰＲＯＭ１５に格納されたリピータ遅延時間値を読み出し、
補正値＝（リピータ段数×リピータ遅延時間値）×２
を求める。そして、その対象となるスレーブのアドレス（＃ｎ）に対応するタイムスロット＃ｎのタイムドメイン値（０段目の基準タイムドメイン値）から、上記の補正値を減算して補正タイムドメイン値を求め、求めた値をそのスレーブに対するタイムドメイン値とする。リピータを通過することで、リピータ遅延時間値だけ遅れるので、マスタからスレーブに向けて送られたトリガフレームが、スレーブに到達するまでにリピータを通過すると、通過した段数にリピータ遅延時間値を掛けた時間（下位方向総遅延時間）だけ遅れる。つまり、マスタから送信されたトリガフレームが、リピータを介さない０段目のスレーブに到達するときよりも、リピータの下位側に存在するスレーブに到着するタイミングが、そのリピータ段数に起因する下位方向総遅延時間だけ遅れる。よって、各スレーブのＩＮフレームの送信タイミングは、係るトリガフレームを受信した時点を基準に設定されたタイムドメイン値を経過後となるので、リピータの下位に存在するスレーブは、基準となる０段のタイムドメイン値に基づく期間よりも、上記の下位方向総遅延時間分だけ早く送信する必要がある。
【００３４】
同様に、スレーブから送信されたＩＮフレームがマスタに到着するまでにリピータを通過すると、その通過する都度、リピータ遅延時間値だけ遅れる。従って、そのリピータ遅延時間値にリピータ段数を掛けることで、スレーブから送信されたＩＮフレームがマスタに到着するまでの間に生じるリピータに起因する上位方向総遅延時間が求まる。そこで、ＩＮフレームの通信のみに着目した場合、その上位方向総遅延時間分だけ早めに送信することで、マスタに到着する（マスタ１０に直接接続されているフィールドバス３０を伝送される）際のタイミングは、処理ステップＳ１で求めた０段目のタイムドメイン値に従って、アドレス順にタイミング良く通信される。
【００３５】
よって、マスタから送信されるトリガフレームの伝送に基づく下位方向総遅延時間（リピータ段数×リピータ遅延時間値）と、スレーブから送信されるＩＮフレームの伝送に基づく上位方向総遅延時間（リピータ段数×リピータ遅延時間値）の両方向（往復）のリピータによる遅延を考慮し、０段目のタイムドメイン値に、上記の補正値だけ減算した値を、補正後のタイムドメイン値とすることで、各スレーブから送信されたＩＮフレームが、処理ステップＳ１で求めた０段目のタイムドメイン値に従って、アドレス順にタイミング良くマスタに到達する。なお、係るリピータ遅延時間を考慮した補正処理については、例えば、特許文献１や特開２００７−０９７１５７号公報等に開示された技術を適用することができる。
【００３６】
このようにして求められた、リピータの有無（ある場合には、その段数）を考慮して決定したタイムドメイン値は、上述したようにステータスライトフレームにより、対応するスレーブに送られる。
【００３７】
また、ＭＰＵ１３は、処理ステップＳ３を実行することでステータスリードフレームにて読み出したスレーブのビットサイズを、スレーブのアドレスと関連付けたスレーブ管理テーブルを作成（追加・更新）し、スレーブ管理テーブル記憶部１４ａに保管する（Ｓ４）。なお、処理ステップＳ２の分岐判断で、新たなスレーブが検出されなかった場合、上記の処理ステップＳ３，Ｓ４がスキップされる。
【００３８】
次いで、ＭＰＵ１３は、設定ツール装置や、ユーザープログラム（ラダープログラム）の実行に伴う“登録テーブル生成指示”のイベントがあったか否かを判断する（Ｓ５）。生成指示が無い場合、ＭＰＵ１３は、その他のマスタ処理を実行する（Ｓ７）。つまり、通常のマスタスレーブ通信を実行したり、他のユニットとの間でデータを送受したりする等の処理を行う。
【００３９】
一方、生成指示のイベントを受信した場合、ＭＰＵ１３は、スレーブ管理テーブル記憶部１４ａに格納されたスレーブ管理テーブルの情報から、登録テーブルを生成し、登録管理テーブル記憶部１４ｂに格納する（Ｓ６）。この生成する登録テーブルは、例えば図６に示すように、“スレーブのアドレス”と、“有効無効フラグ”と、“ビットデータサイズ”とを関連付けたテーブル構造となっている。
【００４０】
図６に示すように、アドレスの欄は、ＩＮ＃０からＩＮ＃Ｎまで用意される。スレーブから送信されてくるのはＩＮデータ（ＩＮフレーム）であるので、アドレスも、ＩＮ＃ｎとなっている。ＭＰＵ１３は、スレーブ管理テーブルに格納されたアドレスに対応するビットサイズを、登録テーブルの該当箇所に格納するとともに、そのアドレスの有効無効フラグを“有効”にする。また、ビットサイズが３２，４２，…のように、基本サイズとなる１６ビットよりも大きい場合、その大きさに合わせて連続するアドレスの有効無効フラグを“無効”にする。例えば、ＩＮ＃２のように、３２ビットの場合、２つのタイムスロットを占有する必要があるので、続くＩＮ＃３を“無効”にセットする。同様に、ＩＮ＃５のように、４８ビットの場合、３つのタイムスロットを占有する必要があるので、続くＩＮ＃６とＩＮ＃７を“無効”にセットする。
【００４１】
また、ＭＰＵ１３は、ネットワークに存在しない（スレーブ管理テーブルに登録されていない）アドレスについての有効無効フラグを、“無効”にセットする。さらに、有効無効フラグが“無効”のものについては、ビットデータサイズの欄は“０”としている。
【００４２】
このようにして生成した登録テーブルは、ＲＡＭ１４内に用意された登録テーブル記憶部１４ｂに格納される。その後、ＭＰＵ１３は、処理ステップＳ７に移行し、その他のマスタ処理を実行する。以後、ＭＰＵ１３は、上述した処理ステップＳ２からＳ７までの各処理を、繰り返し実行する。
【００４３】
このように、本実施形態では、登録テーブルを自動的に生成するようにしたが、設定ツール装置を用いてユーザがマニュアルで設定することもできる。図７，図８は、設定ツール装置を用いた登録テーブルの設定処理を説明する、設定ツール装置のモニタ画面の図である。図７に示すように、右側のネットワーク表示ウインドウＷ１に、登録テーブルを作成するネットワークのネットワーク構成図を描画する。このネットワーク構成図は、設定ツール装置をネットワークに直接或いはＰＬＣを介して接続し、当該ネットワークに加入しているノード（スレーブ）の情報を収集して作成・描画しても良いし、モニタの左側の機器リスト表示ウインドウＷ２に表示された部品リストの中から選択することで作成・描画しても良い。このネットワーク構成図の作成処理は、通常の設定ツール装置の機能として組み込まれているものを用いることができる。
【００４４】
このようにして、ネットワーク構成図が作成されたならば、図８に示すスレーブ情報登録ウインドウを開く。これは、図７のモニタ画面中の“編集”ボタンを選択し、プルダウンメニューを表示（図示省略）し、該当するメニューを指定することでモニタ画面に表示することができる。
【００４５】
このスレーブ情報登録ウインドウは、上側の未登録デバイス一覧表示ウインドウＷ３と、下側の登録デバイス一覧表示ウインドウＷ４を備え、当該スレーブ情報登録ウインドウを開いたときは、図７のネットワーク表示ウインドウＷ１に描画されていたネットワーク構成図を構成する各スレーブの情報（アドレス，型式等）が表示される。この状態で、各スレーブを選択し、図示省略するビットサイズ登録画面を表示し、そこにビットサイズを登録（入力）すると、登録デバイス一覧表示ウインドウＷ４に移行する。そして、すべてのスレーブに対するビットサイズの登録が完了すると、図８に示すように、すべてのスレーブが登録デバイス一覧表示ウインドウＷ４に表示され、設定ツール装置上での処理が完了する。
【００４６】
この状態で、設定ツール装置とマスタ（ＰＬＣ）を接続し、モニタ画面の下方に用意された“アップロード”ボタンをクリックすると、ノードアドレスと、ビットサイズを関連付けたテーブルがマスタにロードされ、マスタの登録テーブルに格納される。
【００４７】
図９は、最適化モードで動作する場合のマスタ１０（ＭＰＵ１３）の機能を示している。最適化モードへの移行は、登録テーブルの作成と同様に、設定ツール装置等による指示を受けたことに起因して行うようにする。もちろん、マスタ１０にモード切替スイッチを設け、スイッチ操作によって切り替えるようにしても良い。
【００４８】
ＭＰＵ１３は、ＲＡＭ１４に格納された登録テーブルを読み出す（Ｓ１１）。そして、ＭＰＵ１３は、読み出した登録テーブルに基づき、スレーブに設定する最適なタイムドメイン値を算出する（Ｓ１２）。このとき求める各タイムドメイン値は、通常モードの時と同様に、リピータの存在を考慮せず、マスタ１０に接続されたフィールドバス３０に直接接続されている（０段目）スレーブ２０に対するタイムドメイン値とする。具体的には、登録テーブル中の“有効フラグ”なアドレスと、そのアドレスのデータサイズを抽出し、まず、送信する順番は、有効フラグのアドレスを昇順に並ぶように決定する。これにより、たとえば、図６に示す例では、“ＩＮ＃１”のアドレスのスレーブは存在しないので、そのアドレスに対するタイムドメイン値の設定を行わない。もちろん、ＩＮ＃３やＩＮ＃６，ＩＮ＃７のように、ビットサイズが１６ビットよりも大きいフレームのために、その前のアドレスのスレーブに占有されているアドレスも、“無効フラグ”となっているので、そのアドレスについてのタイムドメイン値の設定も行われない。
【００４９】
さらに、ネットワーク上に存在するスレーブのアドレスと、そのスレーブが送信するＩＮフレームのビットサイズから、アドレス順に並んだ各ＩＮフレームを詰めて送信タイミングを規定するタイムドメイン値を設定する。具体的には、あるアドレス（＃ｎ−１）のスレーブから送信されるＩＮフレームが送信完了したタイミングで、次のアドレス（＃ｎ）のスレーブの送信タイミングを設定する。一例を示すと、図１１のように、＃０のスレーブから送信されるＩＮフレームのビットサイズが３２ビットで、＃２のスレーブから送信されるＩＮフレームのビットサイズが６４ビットで、＃６のスレーブから送信されるＩＮフレームのビットサイズが１６ビットとすると、通常モードでは、図１１（ａ）に示すように、＃０のスレーブから送信されるＩＮフレームは、３２ビットのため、＃１に割り当てられる領域まで占有するが、ヘッダは１つであるので、２つ分のタイムスロットから少なくともヘッドサイズの１つ分だけ短く、そのＩＮフレームが送信完了してから、＃２のスレーブからＩＮフレームが送信されてくるまでに、係るヘッダ１つ分の空き時間が生じる。同様に、＃２のスレーブから送信されるＩＮフレームは、６４ビットのビットサイズを有しているので、４つ分のタイムスロットを占有する。よって、＃２のスレーブから送信されるＩＮフレームは、４つ分のタイムスロットのから少なくともヘッドサイズの３つ分だけ短く、そのＩＮフレームが送信完了してから、＃６のスレーブのＩＮフレームが送信されるまでに、係るヘッダ１つ分の空き時間が生じる。
【００５０】
そこで、ＭＰＵ１３は、＃ｎのスレーブがＩＮフレームを送信完了したタイミングで、＃（ｎ＋１）のスレーブがＩＮフレームを送信するように、当該＃（ｎ＋１）のタイムドメイン値を決定する。具体的には、例えば図１１に示す例では、各スレーブがマスタからのトリガフレームを受信してから、ＩＮフレームを送信するタイミングである応答位置（タイムドメイン値）は、下記のサイズ分を通信するに要する時間経過後となる。もちろん、通信時間（実際の伝送や、スレーブ内での送受信処理等）のばらつきを考慮し、所定のマージンを付加するのは構わない。この求めた各スレーブに対するタイムドメイン値は、別途、ＲＡＭ１４等に格納するようにしても良いし、登録テーブルの追加情報として各アドレスに関連付けて格納しても良い。
スレーブ＃０の応答位置＝０
スレーブ＃２の応答位置＝０＋ヘッダ＋３２ビット
スレーブ＃６の応答位置＝０＋ヘッダ＋３２ビット＋ヘッダ＋６４ビット
【００５１】
次に、ＭＰＵ１３は、ネットワークに新規なスレーブが追加されたか否かを判断する（Ｓ１３）。つまり、マスタ１０（ＭＰＵ１３）は、定期的にネットワークに接続されているスレーブを監視しており、新たにネットワークに加入されたスレーブの有無を判断する。
【００５２】
ＭＰＵ１３は、新たなスレーブの加入を検出した場合（Ｓ１３でＹｅｓ）、ＭＰＵ１３は、そのスレーブに対するタイムドメイン値を求めるとともに、設定する（Ｓ１４）。具体的には、ＭＰＵ１３は、そのスレーブに対してステータスリード（ＳＴＲ）メッセージを送り、当該スレーブが記憶するステータスを取得する。ここで取得するステータスは、少なくとも“リピータ段数”についての情報である。本実施形態では、各スレーブが、自己のステータス情報として、アドレス，型式，ＩＮ／ＯＵＴの種類，ビットサイズその他のスレーブに関する情報に加え、ネットワークに加入された状態における自己の階層位置（リピータ段数）も保持するようにしているので、ＭＰＵ１３は、係るリピータ段数を、ステータスリードフレームを使って取得する。
【００５３】
そして、処理対象のスレーブのアドレスに基づき、Ｓ１２で求めた当該スレーブ（アドレス）についての０段目におけるタイムドメイン値に対し、上記のリピータ段数に基づく補正を行い、リピータ段数を考慮したタイムドメイン値を求める。このタイムドメイン値の補正処理は、上述した通常モードにおける処理ステップＳ３で行ったものと同様である。つまり、ＭＰＵ１３は、
補正後タイムドメイン値＝
タイムドメイン値−リピータ段数×リピータ遅延時間値×２
を、演算することで実際のタイムドメイン値を決定する。そして、決定したタイムドメイン値をステータスライトフレームを使い、該当するスレーブ２０のスレーブ通信ＡＳＩＣに書き込む。
【００５４】
その後、ＭＰＵ１３は、処理ステップＳ１５に移行し、その他のマスタ処理を実行する。以後、ＭＰＵ１３は、上述した処理ステップＳ１３からＳ１５までの各処理を、繰り返し実行する。
【００５５】
一方、スレーブ２０（ＭＰＵ２３）は、図１０に示すフローチャートを実行する機能を有する。すなわち、マスタからステータスライトフレームでスレーブ通信ＡＳＩＣ２２に対してパラメータ（タイムドメイン値）が書き込まれるまで待つ（Ｓ２１）。そして、タイムドメイン値が格納されたならば、ＭＰＵ２３は、スレーブ通信ＡＳＩＣ２２が、格納されたタイムドメイン値にしたがってＩＮフレームを返送する状態に遷移させる（Ｓ２２）。よって、以後、スレーブ通信ＡＳＩＣ２２は、マスタからトリガフレームを受信したスレーブ通信ＡＳＩＣ２２は、設定されたタイムドメイン値にしたがって、ＩＮフレームを送信する。つまり、マスタから通常モードのタイムドメイン値が設定された場合には、スレーブ２０は通常モードのタイミングでＩＮフレームを送信し、最適化モードのタイムドメイン値が設定された場合には、スレーブ２０は最適化モードのタイミングでＩＮフレームを送信することになる。
【００５６】
この処理ステップＳ２２による遷移が行われたならば、ＭＰＵ２３は、スレーブの処理を繰り返し実行する（Ｓ２３）。このスレーブの処理としては、ＲＡＭに記憶されるＩＯデータの読み書きや、接続されたＩＯ機器との通信や、マスタから送られてきたメッセージに対するレスポンスの作成・返信等がある。
【００５７】
上記の最適化モードの動作開始タイミングは、例えば以下のようにすることができる。通常、システム構築時は、任意にスレーブを追加したり削除したりする。そのため、登録したスレーブしか使用できない最適化モードでは使い勝手が悪いので、登録テーブルを使用しない通常モードでシステムを構築する。システムが完成後の本稼動時は、性能を向上させるため登録テーブルを使用する最適化モードで動作させる。また、同じシステムを複数作成する場合は、すでにシステムの構成は完成しているため、最初から最適化モードで動作させる。もちろん、これに限ることはなく、各種タイミングで最適化モードを実行させることができる。
【図面の簡単な説明】
【００５８】
【図１】従来の通信システムの問題点を説明する図である。
【図２】本発明に係る通信システムを実現するネットワーク構成の一例を示す図である。
【図３】マスタの内部構成の一例を示す図である。
【図４】スレーブの内部構成の一例を示す図である。
【図５】マスタのＭＰＵに実装されるステータス情報を収集し登録テーブルを作成する機能（ステータス情報収集手段＋登録テーブル作成手段）を示すフローチャートである。
【図６】登録テーブルのデータ構造の一例を示す図である。
【図７】設定ツール装置を用いて登録テーブルを登録する例を説明するモニタ画面である。
【図８】設定ツール装置を用いて登録テーブルを登録する例を説明するモニタ画面である。
【図９】最適化モードで動作するマスタのＭＰＵの機能を示すフローチャートである。
【図１０】スレーブのＭＰＵの機能を示すフローチャートである。動作原理を説明する図である。
【図１１】本発明の作用効果を説明する図である。
【符号の説明】
【００５９】
１０  マスタ
１１  通信インタフェース
１２  マスタ通信ＡＳＩＣ
１３  ＭＰＵ
１４  ＲＡＭ
１５  ＥＥＰＲＯＭ
２０  スレーブ
２１  通信インタフェース
２２  スレーブ通信ＡＳＩＣ
２３  ＭＰＵ
２４  ＲＡＭ
２５  ＥＥＰＲＯＭ
３０  フィールドバス
３１  リピータ
【図１】
2010021866.tif 000003
【図２】
2010021866.tif 000004
【図３】
2010021866.tif 000005
【図４】
2010021866.tif 000006
【図５】
2010021866.tif 000007
【図６】
2010021866.tif 000008
【図７】
2010021866.tif 000009
【図８】
2010021866.tif 000010
【図９】
2010021866.tif 000011
【図１０】
2010021866.tif 000012
【図１１】
2010021866.tif 000013