(57)【要約】【課題】マルチドロップの配線形態をとっているフィールドバスシステムであっても、異なる入出力点数のスレーブの混在を許容するフィールドバスシステムを提供すること【解決手段】スレーブ２０に格納された入出力点数を含むステータス情報に基づいて決定されるＩＮフレームのフレーム長と、ＩＮフレームを送信するスレーブの順番に基づいて算出される各ＩＮフレームの送信タイミングを、各スレーブのレジスタに記憶する。マスタからのＯＵＴ＿ｆｒａｍｅを各スレーブが受信するとタイマを起動し、そのタイマ値がレジスタに格納された送信タイミングになると、各ＩＮスレーブが自己のＩＮフレームを送信する。送信タイミングは、等間隔ではなく、フレーム長に応じて決定しているので、各Ｉｎ＿ｆｒａｍｅが衝突することなく送信可能となる。【選択図】        図１１
2004280304.tif 000002
【特許請求の範囲】
【請求項１】
マスタと、複数のスレーブが、フィールドバスに接続され、前記マスタからはＯＵＴデータを一括して前記スレーブへ転送し、前記スレーブは自局の決められた時間帯にＩＮデータを返送するようにしたフィールドバスシステムであって、
前記マスタは、前記スレーブに格納された入出力点数を含むステータス情報を読み出し、
その読み出した前記ステータス情報に基づいて対応する各スレーブがＩＮデータを送信するためのＩＮフレームのフレーム長と、前記ＩＮフレームを送信するスレーブの順番から各ＩＮフレームの送信タイミングを決定し、前記マスタは、対応するスレーブにその決定したＩＮフレームの送信タイミングを設定し、
前記スレーブは、前記一括して転送されてきた前記ＯＵＴデータを受信後、前記設定された送信タイミングになると、自己のＩＮフレームを送信することを特徴とするフィールドバスシステム。
【請求項２】
前記スレーブは、同一のＩＮデータのフレームを連続して送信する多連送モードを有し、
前記ステータス情報は、前記多連送モードか否かの情報を含み、
前記マスタは、前記多連送モードで送信されてきた複数のＩＮデータの内の少なくとも１つを正常に受信したときにＩＮデータの転送を正常完了するようにしたことを特徴とする請求項１に記載にフィールドバスシステム。
【請求項３】
前記フィールドバスにリピータが挿入されている場合に、フレームがそのリピータを通過する際に生じるリピート遅延時間を考慮して、前記ＩＮフレームの送信タイミングが設定されることを特徴とする請求項１または２に記載のフィールドバスシステム。
【請求項４】
マスタと複数のスレーブとがフィールドバスに接続されて、マスタとスレーブとの間でＯＵＴデータとＩＮデータとを通信するフィールドバスシステムにおけるフレームの通信方法であって、
前記マスタは、前記スレーブに格納された入出力点数を含むステータス情報を読み出し、
その読み出した前記ステータス情報に基づいて、各スレーブがＩＮデータを送信するためのＩＮフレームのフレーム長と、前記ＩＮフレームを送信するスレーブの順番から各ＩＮフレームの送信タイミングを決定し、
前記マスタは、対応する各スレーブにその決定したＩＮフレームの送信タイミングとＯＵＴデータとをそれぞれ一括で送信し、
前記スレーブは、前記マスタから送られてきた自己の前記送信タイミングを取得して記憶手段に記憶保持するとともに、前記一括して転送されてきた前記ＯＵＴデータのうち自己宛てのＯＵＴデータを受信し、
前記スレーブは、その後、前記記憶保持した送信タイミングになると、自己のＩＮフレームを送信し、
前記マスタは、各スレーブからのＩＮデータを受信することを特徴とする通信方法。
【請求項５】
マスタからＯＵＴデータを一括してスレーブへ転送し、前記スレーブでは自局の決められた時間帯にＩＮデータを返送するようにしたフィールドバスシステムに接続するためのマスタであって、
フィールドバスに接続された前記スレーブに格納された入出力点数を含むステータス情報を読み出す機能と、
その読み出した前記ステータス情報に基づいて決定される各スレーブがＩＮデータを送信するためのＩＮフレームのフレーム長と、前記ＩＮフレームを送信するスレーブの順番から算出される各ＩＮフレームの送信タイミングを、対応するスレーブに通知する機能を備えたことを特徴とするマスタ。
【請求項６】
前記フィールドバスシステムは、１つのスレーブから転送されるＩＮデータのフレームを連続して送信する多連送モードを許容したものであり、
前記多連送モードで送信されてきた複数のＩＮデータの内の少なくとも１つを正常に受信したときにＩＮデータの転送を正常完了する機能を備えたことを特徴とする請求項５の記載にマスタ。
【請求項７】
マスタからＯＵＴデータを一括してスレーブへ転送し、前記スレーブでは自局の決められた時間帯にＩＮデータを返送するようにしたフィールドバスシステムに接続するためのスレーブであって、
入出力点数等のステータス情報を記憶保持し、
前記マスタからステータス読み出し要求に対して、前記ステータス情報を返送する機能と、
前記マスタから送られてくる自己のＩＮデータを送信するためのＩＮフレームの送信タイミングを記憶手段に格納する機能と、
前記マスタから一括して転送されてきたＯＵＴデータを受信後、前記記憶手段に格納された送信タイミングになった際に、ＩＮフレームを送信する機能を備えたことを特徴とするスレーブ。
【請求項８】
前記スレーブは、同一のＩＮデータのフレームを連続して送信する多連送モードを実行する機能を有し、
前記ステータス情報は、前記多連送モードで送信するか否かの情報を含むことを特徴とする請求項７に記載のスレーブ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、フィールドバスシステム及び通信方法並びにマスタ及びスレーブに関するもので、特にマルチドロップの配線形態をとるフィールドバスシステムに適したものである。
【０００２】
【従来の技術】
ＦＡ（ファクトリーオートメーション）で用いられるＰＬＣ（プログラマブルコントローラ）は、スイッチやセンサなどの入力機器のＯＮ／ＯＦＦ情報を入力し、ラダー言語などで書かれたシーケンスプログラム（ユーザプログラム）に沿って論理演算を実行する。そして、ＰＬＣは、得られた演算結果にしたがって、リレー，バルブ，アクチュエータなどの出力機器に対し、ＯＮ／ＯＦＦ情報の信号を出力することで制御が実行される。
【０００３】
係るＰＬＣの一形態として、各機能ごとに生成されたユニットを複数用意し、電気，機械的に連結して構成するものがある。係るタイプを構成するためのユニットとしては、電源ユニット，ＣＰＵユニット，Ｉ／Ｏユニット，マスタユニット等各種のものがある。ＰＬＣを構成するＩ／Ｏユニットが有する接続端子には、ＰＬＣの近くの場所に存在する入力機器や出力機器の接続線をつなぐ。
【０００４】
そして、上記したマスタユニットは、フィールドバス等の制御系ネットワークに接続され、その制御系ネットワークに接続された各種のスレーブと制御系ネットワークを介して通信可能となっている。このフィールドバスにおける配線は、マルチドロップ配線になっていて、ひとつのフィールドバスにマスタユニットと複数のスレーブとが接続できるようになっている。各スレーブは接続端子を有していて、その接続端子には、ＰＬＣから比較的に遠い場所に存在する入力機器や出力機器がつながれる。そしてマスタユニットは、各スレーブとの間でフィールドバス通信をしてフレームを送受信することにより、各スレーブにつながれている入力機器の入力信号（ＩＮデータ）を受け取るとともに、出力信号（ＯＵＴデータ）を各スレーブに対して送信する。このマルチドロップ配線の上での通信の詳細を説明すると、マスタユニットから出力された送信フレームは、フィールドバスに接続された全てのスレーブ（ノード）に対して一度に到達する。そして、各スレーブには個々にノードアドレスが設定されており、送信フレームには、宛先のノードアドレスを含む宛先データを付加しておく。これにより、各スレーブは、受信した送信フレームの宛先データを抽出し、自己宛の送信フレームか否かを判断し自己宛の場合にはその送信フレームを取り込み、自己宛でない場合には破棄するようになる。
【０００５】
また、スレーブからマスタユニットへ向けて出力されるフレームも、同様に送信アドレスにマスタユニットのノードアドレスが付加されることにより、マスタユニットのみが受信することができる。そして、係るスレーブからマスタユニットに向けて出力されるフレームの送信タイミングであるが、各スレーブが一斉に送信すると、フィールドバス上で衝突が生じて通信不能となるので、予め指定された送信タイミングで、各スレーブが順次フレームを送信するような通信プロトコルをとっている。
【０００６】
そして、この種の通信プロトコルにおけるマスタとスレーブのデータの送受は、例えば特許文献１に示された「ＰＬＣのリモートＩ／Ｏシステム及びＰＬＣのリモートＩ／Ｏシステムの実行方法」などがある。この特許文献１に開示された方法を簡単に説明すると、図１に示すように、マスタユニットから一括送受信方式によりＯＵＴデータフレームを送信する。このＯＵＴデータは、送信アドレスで指定される所定のＯＵＴスレーブに受信される。なお、１つのＯＵＴデータフレーム中のＯＵＴデータ領域には、複数のＯＵＴスレーブ用のＯＵＴデータが格納されており、各ＯＵＴフレームは、ＯＵＴデータ領域中の自己用のＯＵＴデータの格納位置がわかっているため、当該格納位置のＯＵＴデータを取得する。
【０００７】
一方、各ＩＮスレーブは、マスタユニットから一括送受信方式によりＯＵＴデータフレームを受信すると、フレーム長と物理的遅延とを考慮してフレーム同士が重ならないような基本アイドルタイム毎の各々のタイミングで、ＩＮデータフレームＩＦ０〜ＩＦ２をマスタユニットに送信する。
【０００８】
マスタユニットでは、基本アイドルタイムに基づく各スレーブ毎のタイムスロット内でＩＮデータフレームＩＦ０〜ＩＦ２を受信し、各ＩＮデータフレームＩＦ０〜ＩＦ２のヘッダであるスタートビットに基づいてＩＮデータＩＮ０〜ＩＮ２を取込む。基本アイドルタイムを適切に設定することにより、各ＩＮスレーブからのＩＮデータの重なりを防止して、確実にＩＮデータを送受することができる。
【０００９】
【特許文献１】
特開平０９−１２８０１９
【００１０】
【発明が解決しようとする課題】
しかしながら、上記した従来のマルチドロップ方式のネットワークの場合、以下に示す問題がある。すなわち、フレーム長が通常の８点に合わせて設定された固定であるので、１６点その他の多点スレーブや、１〜２点といった少点数スレーブなど多様なスレーブユニットを混在させることができなかった。
【００１１】
また、フレーム長が固定の状態で多点スレーブに適用する場合には、複数回に分けて送信することにより対応できる。すなわち、仮に１６点とすると、上位の８点分を最初に送り、次に下位の８点分を送信するというように２回に分けて送信することができる。そして、マスタ側では、２回に分けて受信したデータを合成し、１つのＩＮデータとして扱うようになる。しかし、そのようにすると１回目と２回目の間にデータが変更された場合には、異なるタイミングのデータから１つのＩＮデータが生成されてしまい、データの同期性を保証できないという問題がある。
【００１２】
さらに、フレーム長を多点スレーブに適用するように固定しているので、少点数スレーブの場合は、点数が少ないので通常のスレーブ（多点スレーブ）に合わせたフレーム長でもデータを送信することは可能であるが、多点スレーブの点数と少点スレーブの点数の差だけ使用しないデータエリアが存在するので無駄が生じることになり、好ましくない。
【００１３】
さらにまた、フィールドバスに接続するスレーブの数が増加すると、フィールドバスを構成するケーブル長も長くなり、波形整形を行うリピータを挿入する必要が生じる。しかし、リピータを通過する際に、遅延が生じるので、局遅延の大きなリピータを幹線に挿入すると、基本アイドルタイム内でフレームを送信することができなくなる。従って、係るリピータを使用することができず、ネットワーク構成に制限が生じる。また、リピータでの局遅延を考慮して基本アイドルタイムを設定すると、リピータを介さないで通信するＩＮスレーブからのＩＮデータでは、基本アイドルタイム内でデータを送信していない期間が長くなり、伝送効率が悪くなる。
【００１４】
この発明は、伝送の効率がよいＯＵＴデータ一括転送＆ＩＮデータ転送一括ポーリングを特徴とするプロトコルでマルチドロップの配線形態をとっているフィールドバスシステムであっても、スレーブの情報量，ノード数，耐ノイズ性をアプリケーションの要求に応じて柔軟に対応させることが出来るフィールドバスシステム及び通信方法並びにマスタ及びスレーブを提供することを目的とする。
【００１５】
【課題を解決するための手段】
上記した目的を達成するための本発明に係る通信方法は、マスタと複数のスレーブがフィールドバスに接続され、マスタとスレーブとの間でＯＵＴデータとＩＮデータとを通信するようにしたフィールドバスシステムにおけるフレームの通信方法を前提とする。そして、前記マスタは、まず、前記スレーブに格納された入出力点数を含むステータス情報を読み出す。そして、その読み出した前記ステータス情報に基づいて、各スレーブがＩＮデータを送信するためのＩＮフレームのフレーム長と、前記ＩＮフレームを送信するスレーブの順番から各ＩＮフレームの送信タイミングを決定し、いったん記憶する。そして前記マスタは、対応するスレーブにその決定したＩＮフレームの送信タイミングの情報を、ＯＵＴデータを送信するフレーム中に含めて送信する。前記スレーブは、前記マスタから送られてきた前記送信タイミングを取得するとともに記憶手段に記憶保持する。いっぽう送信されてきた前記ＯＵＴデータのなかから自己宛のＯＵＴデータがあれば取得する。このＯＵＴフレームを正常に受信した後、前記記憶保持した送信タイミングになると、自己のＩＮフレームを、マスタへ送信する。
【００１６】
係る方法を実施するのに適した本発明に係るフィールドバスシステムでは、例えば、マスタと、複数のスレーブが、フィールドバスに接続され、前記マスタからはＯＵＴデータを一括して前記スレーブへ転送し、前記スレーブは自局の決められた時間帯にＩＮデータを返送するようにしたフィールドバスシステムであって、前記マスタは、前記スレーブに格納された入出力点数を含むステータス情報を読み出し、その読み出した前記ステータス情報に基づいて決定される各スレーブがＩＮデータを送信するためのＩＮフレームのフレーム長と、前記ＩＮフレームを送信するスレーブの順番から各ＩＮフレームの送信タイミングを決定し、前記マスタは、対応するスレーブにその決定したＩＮフレームの送信タイミングを設定し、前記スレーブは、前記一括して転送されてきた前記ＯＵＴデータを受信後、前記設定された送信タイミングになると、自己のＩＮフレームを送信するように構成することである。
【００１７】
さらに、この方法を実施するのに適した本発明に係るマスタとしては、フィールドバスに接続されたスレーブに格納された入出力点数を含むステータス情報を読み出す機能と、その読み出した前記ステータス情報に基づいて決定される各スレーブがＩＮデータを送信するためのＩＮフレームのフレーム長と、前記ＩＮフレームを送信するスレーブの順番から算出される各ＩＮフレームの送信タイミングを、対応するスレーブに通知する機能を備えることである。
【００１８】
また、この方法を実施するのに適した本発明に係るスレーブとしては、入出力点数等のステータス情報を記憶保持し、前記マスタからステータス読み出し要求に対して、前記ステータス情報を返送する機能と、前記マスタから送られてくる自己のＩＮデータを送信するためのＩＮフレームの送信タイミングを記憶手段に格納する機能と、前記マスタから一括して転送されてきたＯＵＴデータを受信後、前記記憶手段に格納された送信タイミングになった際に、ＩＮフレームを送信する機能を備えることである。
【００１９】
送信タイミングは、実施の形態では、ＩＮ＿ｆｒａｍｅタイムドメインに対応する。また、マスタが持つ送信タイミングを通知する機能は、実施の形態では、ステータス書き込みコマンドを送信する機能に対応する。
【００２０】
例えばスレーブの入出力点数が異なると、ＩＮデータを送信するために必要なＩＮフレーム（ＩＮ＿ｆｒａｍｅ）の過不足の無いフレーム長も異なる。そこで、マスタはスレーブが持つ入出力点数のように、フレーム長に影響のあるステータス情報を読み出し、それに基づいて、各スレーブがＩＮフレームを送信するのにかかる時間を求めることができる。そして、ＩＮフレームの送信順がわかると、各スレーブは、ＯＵＴデータ（ＯＵＴ＿ｆｒａｍｅ）を受信してからどのくらいの時間経過後にＩＮフレームを送信すればよいかを求めることができる。そこで、各スレーブごとに送信タイミングを求め、各スレーブに求めた送信タイミングを通知する。
【００２１】
スレーブは、通知を受けた送信タイミングを記憶保持しておき、実際のＩＯデータの送受に際しては、各スレーブは、前記マスタから一括して転送されてきたＯＵＴデータを受信後、タイマなどの計時手段などを用いて送信タイミングになるのを監視し、送信タイミングになったならば、自己のＩＮフレームを送信する。送信タイミングは、複数のスレーブが同時期にＩＮフレームを送信しないように調整されているため、衝突することなく他のノード（マスタ）に伝達できる。しかも、送信タイミングの設定は、マスタ側から行うため、例えば多点スレーブの場合には、送信に要する時間が長くなるので、その多点スレーブの次に送信するスレーブの送信タイミングは、遅めに設定することにより、必要以上に各ＩＮフレームの送信間隔が長くなることを抑制しつつ、異なる入出力点数のスレーブの混在を許容することができる。
【００２２】
また、本発明に係るフィールドバスシステムの別の解決手段としては、上記したフィールドバスシステムを前提とし、前記スレーブは、同一のＩＮデータのフレームを連続して送信する多連送モードを有し、前記ステータス情報は、前記多連送モードか否かの情報を含み、前記マスタは、前記多連送モードで送信されてきた複数のＩＮデータの内の少なくとも１つを正常に受信したときにＩＮデータの転送を正常完了するように構成することもできる。もちろん、係る多連送モードに対する対応は無くても良い。
【００２３】
そして、このシステムを構築するために適した本発明に係るマスタとしては、多連送モードで送信されてきた複数のＩＮデータの内の少なくとも１つを正常に受信したときにＩＮデータの転送を正常完了する機能を備えることである。
【００２４】
また、このシステムを構築するために適した本発明に係るスレーブとしては、同一のＩＮデータのフレームを連続して送信する多連送モードを実行する機能を有し、前記ステータス情報は、前記多連送モードで送信するか否かの情報を含むことである。
【００２５】
もちろん、通信相手のスレーブが多連送モードか否かはステータス情報に格納されており、多連送モードの場合には、それだけそのスレーブがＩＮフレームを送信するのに必要な時間が長くなるので、それに応じて、それ以降のスレーブの送信タイミングを遅らせる。係る調整は、実際のＩＮフレームの送信をするのに先立ち行われる。
【００２６】
これにより、ノイズ等が多く通信環境が悪い箇所においても、複数回同じＩＮフレームを送信することにより、少なくとも１つはマスタに伝達させることができる。そして、本発明では、同一内容のデータが複数回受信されるが、そのうちの１つでも正常に受信したものがあれば、それを正規のＩＮデータとして処理するようにしたので、確実にマスタはＩＮフレームを取得できる。
【００２７】
さらにまた、本発明に係るフィールドバスシステムでは、前記フィールドバスにリピータが挿入されている場合に、フレームがそのリピータを通過する際に生じるリピート遅延時間を考慮して、前記ＩＮフレームの送信タイミングが設定されるとよい。
【００２８】
フィールドバスのケーブル長が長くなると、波形が歪み、伝送エラーになる確率が増えてくる。そこで、係る場合にはリピータを設置するが、そのリピータを通過する際に遅延が生じる。そこで、係る遅延も考慮して送信タイミングを設定することにより、ＩＮフレームの衝突が発生することなく、伝送することができる。
【００２９】
【発明の実施の形態】
図２は、本発明の好適な一実施の形態を実現するシステム全体を示している。図２に示すように、ＰＬＣ１０と各種のスレーブ２０が、フィールドバス３０を介して接続されネットワークシステムを構築している。
【００３０】
ＰＬＣ１０は、ＣＰＵユニット１１やマスタユニット１２などの各機能ごとに生成されたユニットを連結することにより構成されている。その各ユニットはＰＬＣバス（内部バスとも言う。図示せず）につながれていて、ＰＬＣの各ユニット間でバス通信をしてデータ通信ができるようになっている。そして、このマスタユニット１２は、フィールドバス３０に接続され、そのフィールドバス３０に複数台の各スレーブ２０がマルチドロップ接続によってつながれて、マスタユニット１２と各スレーブ２０との間で通信を行うようになっている。さらに、マスタユニット１２は、ＰＬＣ１０の内部バスを介してＣＰＵユニット１１のＩＯメモリにアクセスし、ＩＯデータ等の読み書きを行うようになっている。
【００３１】
さらに説明すると、マスタユニット１２がスレーブ２０の接続端子につながれた入力機器からの入力信号（オン／オフ状態）をフィールドバス通信によって取り込んで、マスタユニット１２が取り込んだ入力信号（入力データ）を内部バス通信によってＣＰＵユニット１１に送信し、ＣＰＵユニット１１が入力信号を受け取る。ＣＰＵユニット１１は、その入力信号に基づいてユーザプログラムによって予め定められた論理演算をし、その演算結果を含んだ出力信号（出力データ）を、内部バスを介してマスタユニット１２に送信する。マスタユニットはその出力信号をフィールドバス通信によってスレーブに送信する。各ユニットでは受信した出力信号を接続端子に接続された出力機器に対して出力する。
【００３２】
なお、入力信号と出力信号をあわせてＩ／Ｏデータと呼ぶことがある。つまり、ＩＮデータは入力機器からスレーブへ、スレーブからマスタユニットへ、マスタユニットからＣＰＵユニットへと伝わる。また、ＯＵＴデータはＣＰＵユニットからマスタユニットへ、マスタユニットからスレーブへ、スレーブから出力機器へと伝わる。
【００３３】
マスタユニット１２は、図３に示すように、フィールドバスに接続され、実際にデータの送受を行う通信インタフェース１２ａと、その通信インタフェース１２ａを介してマスタ−スレーブ間通信をし、スレーブ２０との間でＩ／Ｏデータの送受を行ったり、所定のコマンドの送信並びにそれに基づくレスポンスの受信を行うマスタ用ＡＳＩＣ１２ｂと、各種の制御を行うＭＰＵ１２ｄと、各種の制御実行時にワークエリア等として使用されるＲＡＭ１２ｃと、上記制御を行うプログラムや、各種の設定データ等が格納されたＥＥＰＲＯＭ１２ｅと、ＣＰＵユニットなどと内部バスを介して通信を行うためのインタフェース１２ｈと、動作状態（通信状態）や異常／正常などを示すＬＥＤ表示部１２ｆ並びにアドレスの設定などを行うための設定スイッチ１２ｇを備えている。
【００３４】
ＭＰＵ１２ｄが行う制御としては、ＣＰＵユニット１１その他のユニット等と通信したり、マスタ用ＡＳＩＣ１２ｂを動作させたりするようになっている。特に本発明との関係でいうと、フィールドバス３０に接続されたスレーブ２０と通信をし、二重アドレスが発生していないかをチェックするようになっている。具体的な処理機能は後述する。
【００３５】
スレーブ２０は、図４に示すように、フィールドバスに接続され、実際にマスタユニット１２との間でＩ／Ｏデータや各種メッセージ等の送受を行う通信インタフェース２０ａと、その通信インタフェース２０ａを介して取得したマスタ−スレーブ間通信をし、Ｉ／Ｏデータの送受を行ったり、マスタユニット１２からの所定のコマンドの受信並びにそれに基づくレスポンスの送信を行うスレーブ用ＡＳＩＣ２０ｂと、各種の制御を行うＭＰＵ２０ｄと、上記制御を行うプログラムや、各種の設定データ，ＩＯデータ等が格納されたＥＥＰＲＯＭ２０ｅと、端子台の構造となっていて入力機器または出力機器（Ｉ／Ｏ機器）の配線を接続しＩ／Ｏデータの送受を行うＩ／Ｏ部２０ｊと、動作状態（通信状態）や異常／正常などを示すＬＥＤ表示部２０ｆ並びにノードアドレスの設定などを行うための設定スイッチ２０ｇを備えている。さらに、入力電圧（２４Ｖ）を５Ｖに降圧し、スレーブ２０内の各素子に電源供給する電源部２０ｉを備えている。なお、スレーブには３種類あって、それぞれ入力スレーブ、出力スレーブ、入出力スレーブがある。例えば入力スレーブは、入力機器を接続するのみであり、ＩＮデータを格納しＩＮデータを送信する構成となっている。
【００３６】
次に、本発明の要部となる通信プロトコルについて説明する。まず、上記したマスタユニット１２並びにスレーブ２０が発行するコマンドは、以下のようになっている。図５に示すように、本プロトコルの通信サイクルの開始タイミングはマスタ局であるマスタユニット１２が管理する。そして、通信サイクルはＯＵＴ＿ｆｒａｍｅから始まり，ＥＶＥ＿ｆｒａｍｅ，ＩＮ＿ｆｒａｍｅとつづく。各フレームの送信タイミングは、予め定められた時間監視により行う。
【００３７】
送信タイミングの時間監視の説明をすると、マスタユニットと各スレーブとの間の通信サイクルの開始タイミングは、ＯＵＴ＿ｆｒａｍｅの正常受信完了をもって合わせられる。つまり、通信同期のタイミングをＯＵＴ＿ｆｒａｍｅの正常受信完了タイミングとしているわけである。そして、それにつづくＥＶＥ＿ｆｒａｍｅ，ＩＮ＿ｆｒａｍｅのそれぞれのフレーム内容（通信データサイズ，通信タイミング，通信サイクルなど）は常に固定になっている。このようにマスタユニット１２とスレーブ２０との間では、毎周期で同じ通信サイクル、かつ通信タイミングで通信が行われる。なお、図示はしていないが、ＯＵＴ＿ｆｒａｍｅとＥＶＥ＿ｆｒａｍｅとの間に、互いの接続確認をするためのＣＮ＿ｆｒａｍｅを送信するサイクルを設けても良い。
【００３８】
ここで、ＯＵＴ＿ｆｒａｍｅは、マスタユニット１２からスレーブ２０へのＯＵＴデータ転送用フレームであって、このＯＵＴ＿ｆｒａｍｅに各スレーブに対して送信するＯＵＴデータが含まれている。また受信する側の各スレーブ２０にとっては、このＯＵＴ＿ｆｒａｍｅが通信サイクルの開始を表すフレームとなる。つまり、各スレーブ２０はこのＯＵＴ＿ｆｒａｍｅの受信完了時点から計時を開始すべく内部カウンタ（タイマ）を起動し、予め設定した送信タイミングで所定のフレームをマスタユニット１２に対して送信する。
【００３９】
そして、ＯＵＴ＿ｆｒａｍｅのデータ構造は、図６に示すようになっている。すなわち、ＯＵＴ＿ｆｒａｍｅは、「フレームヘッダ」と、マスタユニット１２から所定のスレーブ（ＯＵＴスレーブ）２０へ送る出力データである「ＯＵＴデータ」と、フレームチェックシーケンスである「ＣＲＣ」からなる。
【００４０】
さらに、フレームヘッダは、フレームの開始を示す「スタート」と、フレームの識別コード（プロトコル制御コード）を示す「コマンド」と、イベントフレームを送信許可するノードアドレスを登録する「ＥＶＥＮＴ送信許可アドレス」と、各スレーブでのＯＵＴデータ位置とＩＮフレーム送出位置の登録バージョンを登録する「ドメインバージョン」と、ＯＵＴデータのデータ長を登録する「レングス」とを備えている。
【００４１】
なお、ＣＮ＿ｆｒａｍｅも送信する場合には、フレームヘッダに、「コマンド」に続いて、接続確認フレーム（ＣＮ＿ｆｒａｍｅ）を送信許可するノードアドレスを登録する「ＣＮ＿ｆｒａｍｅ送信要求アドレス」を挿入するとよい。ＣＮ＿ｆｒａｍｅは、ネットワークに接続されているかどうかを確認するための接続確認用フレームである。必要に応じて、ＯＵＴ＿ｆｒａｍｅ中にＣＮ＿ｆｒａｍｅ送信要求アドレスを挿入し、その要求アドレスで指定されたスレーブが、レスポンスして返送するようにする。そのフレームのデータ構造を説明すると、スタート，コマンド，送信元アドレス．ＣＲＣからなっている。「スタート」はフレームの開始を示すもので、「コマンド」はフレーム識別コード，プロトコル制御コードであり、「送信元アドレス」はこのＣＮ＿ｆｒａｍｅを送信したスレーブに設定された送信元アドレスであり、「ＣＲＣ」はフレームチェックシーケンスである。そして、「コマンド」には、加入ステータス状態のどれかを特定する２ビットのコードが格納される。ここで、加入ステータス状態とは、「加入済みスレーブ」と「未加入スレーブ」がある。さらに「二重アドレスで待機中」を加えることもできる。
【００４２】
さてＯＵＴ＿ｆｒａｍｅの説明に戻ると、「ＯＵＴデータ」は、複数のブロック（＃０から＃ｎ）から構成される。一例としては、図７に示すようにＷＯＲＤ単位で定義することができる。なお、１つのブロックの任意ビット（図では１６ビット分）のＯＵＴデータが、１つのＯＵＴスレーブに対応している。しかしこれに限っていなく、例えばＯＵＴスレーブがもっと多くの出力データ（例えば３２ビット）を扱う多点スレーブの場合には、複数（例えば２個）のブロックを１つのＯＵＴブロックに割り当てることもある。そして、係る割り当ては、マスタユニット１２が行う。つまり、マスタは、各ＯＵＴスレーブ宛のＯＵＴデータをＯＵＴ＿ｆｒａｍｅのどこに、どれだけの点数を割り付けるかの管理を行っており、通常スレーブ用のＯＵＴデータは、ＯＵＴ＿ｆｒａｍｅの任意の場所に割り付けることができる。そしてＯＵＴスレーブのそれぞれは自局が受け取るＯＵＴデータの割り当場所を記憶している。
【００４３】
そして、係る割り当てに基づきマスタユニット１２とスレーブ２０（ＯＵＴスレーブ）との間で、以下に示す手順によりＯＵＴデータ転送が実行される。換言すると、マスタユニット１２のＭＰＵ１２ｄや、スレーブ２０のＭＰＵ２０ｄが、係る処理を実行する機能を有する。この点は、以下に示すその他のフレーム転送においても同様である。
【００４４】
まず、後述するＢｕｓ  Ｃｏｎｆｉｇｕｒａｔｉｏｎで送信バッファの各データ（Ｗｏｒｄ単位）とＯＵＴ＿ｆｒａｍｅでの位置の対応テーブルを作成する。つまり、どのＯＵＴスレーブ用のＯＵＴデータをどのブロックに格納して送信するかの関係を特定する。これは、例えば各ＯＵＴスレーブのステータス（通常，多点，少点数）を取得しておくことにより、各スレーブで必要なブロック数がわかるので、ノードアドレス順に先頭からその必要なブロック数分だけ順次割り当てることにより対応テーブルを作成できる。
【００４５】
次いで、マスタユニット１２は、送信起動により上記対応テーブルに従ってＯＵＴ＿ｆｒａｍｅを作成し、送信する。これにより、ＯＵＴ＿ｆｒａｍｅは、フィールドバス３０を介して各スレーブ２０に伝達される。
【００４６】
各スレーブ２０は、ＯＵＴ＿ｆｒａｍｅを正常受信すると、ＯＵＴデータ中のマスタが設定したＯＵＴデータ開始エリア（マスタが設定）から自局のＯＵＴデータサイズ（外部端子モード設定により決まる）だけのデータを取り出し、受信バッファに格納する。そしてＭＰＵ２０ｄとＡＳＩＣ２０ｂとの動作により、取り込んだＯＵＴデータをＩ／Ｏバッファに転送し、自局の接続端子を介して接続された出力機器に対してＯＵＴデータを出力することで、ＯＵＴデータリフレッシュが行われる（図８参照）。図示のように、例えば多点スレーブのＯＵＴスレーブ＃１のＯＵＴデータサイズが２ブロック分で、通常のＯＵＴスレーブ＃２のＯＵＴデータサイズが１ブロック分とすると、そのようにブロックサイズを設定しておくことにより、異なる点数のＯＵＴスレーブに対してもＯＵＴデータの送信が可能となる。
【００４７】
ＩＮ＿ｆｒａｍｅは、スレーブ（ＩＮスレーブ）２０からマスタユニット１２へのＩＮデータ転送用フレームである。どのスレーブがいつ、どれだけのデータサイズのＩＮ＿ｆｒａｍｅを転送するかは、Ｂｕｓ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ時にマスタユニット１２が設定する。
【００４８】
このＩＮ＿ｆｒａｍｅのデータ構造は、図９に示すようになっている。ここで、「スタート」はフレームの開始を示すもので、「コマンド」はフレーム識別をするために必要なコード，プロトコルの制御をするためのコードの情報が含まれている。「宛先アドレス」はこのフレームに格納されたＩＮデータを送信する宛先アドレスであり、「送信元アドレス」はこのＩＮデータを送信したノード（ＩＮスレーブ）に設定された送信元アドレスであり、「レングス」は送信するＩＮデータのデータ長であり、「ＩＮデータ」は送信する内容であるＩＮデータであり、「ＣＲＣ」はフレームチェックシーケンスである。
【００４９】
さらに、本実施の形態では、図９に示す通常のＩＮ＿ｆｒａｍｅに加えて、図１０に示す多連送フレームの送信も可能となっている。この多連送フレームは、はコマンド〜ＣＲＣまでの同じデータ列をｎ個だけ連続したものを１つのフレームとして送信する。つまり、ノイズ環境下でもＩＮデータを確実に転送するため、１つのスレーブから転送されるＩＮデータフレームを連続して送信し、マスタ側ではそれらの内のどれかを正常に受信したときにＩＮデータの転送を正常完了する。
【００５０】
通常のＩＮ＿ｆｒａｍｅと、多連送フレームのＩＮ＿ｆｒａｍｅは、各スレーブごとに選択することができ、さらに、多連送フレームにした場合の繰り返し数（ｎ）の値もスレーブごとに選択できる。各スレーブがどちらのフレーム（多連層の場合にはさらに「ｎ」の値）を用いるかは、例えば、マスタユニット１２が決定し、各スレーブ２０に通知することにより設定するようにすることもできるし、ツール或いは設定スイッチを操作することによりステータス情報として各スレーブ２０側で設定・保有し、マスタユニット１２はそのスレーブ２０のステータス情報を読み出すことにより認識するようにすることもできる。また、各スレーブ２０は、ＩＮ＿ｆｒａｍｅ中のコマンドに係る設定情報を格納する。
【００５１】
そして、このＩＮ＿ｆｒａｍｅを用いたＩＮデータの転送は、まずマスタユニット１２が、各ＩＮスレーブ２０が送信するＩＮ＿ｆｒａｍｅがＯＵＴ＿ｆｒａｍｅ以降のどの時間帯に送信され、どれだけのフレーム長（点数）を持っているかの管理を行っている。そして、ＩＮ＿ｆｒａｍｅ受信時、マスタユニット１２は、ＩＮ＿ｆｒａｍｅのフレームヘッダにある送信元アドレスによって、どのスレーブからのＩＮデータかを判別する。また、各スレーブ２０でのＩＮデータのラッチ（ＩＮリフレッシュ）は、ＯＵＴ＿ｆｒａｍｅの正常受信直後としている。従って、全ノードのＩＮデータの同時性を保証することが出来る。さらに、多点スレーブの場合でも、その多点の全てのデータを一回で送信できるので、データの同時性が確保できる。
【００５２】
ＩＮリフレッシュとは、スレーブ２０の接続端子につながれた入力機器のＯＮ／ＯＦＦ状態をＩ／Ｏバッファに取り込む動作をいう。なお、取り込んだＩＮデータは、送信バッファに送られＩＮ＿ｆｒａｍｅによってマスタユニット１２へと送られる。結局、各スレーブでＯＵＴ＿ｆｒａｍｅを正常受信完了すると、タイマ起動をするとともに、ＯＵＴスレーブの場合にはＯＵＴリフレッシュを始め、一方ＩＮスレーブの場合にはＩＮリフレッシュを始め、ＩＮ／ＯＵＴスレーブの場合はＩＮリフレッシュおよびＯＵＴリフレッシュを行う。
【００５３】
そして、具体的には、マスタユニット１２とスレーブ２０（ＯＵＴスレーブ）との間で、以下に示す手順によりＩＮデータ転送が実行される。すなわち、まずマスタユニット１２が、送信起動によりＯＵＴ＿ｆｒａｍｅを作成し、送信する。
【００５４】
各ＩＮスレーブ２０は、ＯＵＴ＿ｆｒａｍｅを正常受信したならば、ＩＮ＿ｆｒａｍｅタイムドメインのためのタイマを起動する。また、正常受信した時の自局のＩＮデータを内部バッファに取り込む。そして、ＩＮ＿ｆｒａｍｅタイムドメインを待って、内部バッファに格納しておいた自局のＩＮデータをＩＮ＿ｆｒａｍｅに乗せて送信する。つまりＩＮ＿ｆｒａｍｅをタイムドメインは、後述するように、Ｂｕｓ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ時にマスタユニットが設定したＯＵＴ＿ｆｒａｍｅを受信してから各スレーブがＩＮ＿ｆｒａｍｅを送信するまでの経過時間であり、各スレーブごとに設定される。従って、各スレーブは、ＯＵＴ＿ｆｒａｍｅの正常受信に伴い同時にタイマを起動させ、それぞれ設定された所定の時間が経過した際に、ＩＮ＿ｆｒａｍｅを送信することになる（図１１参照）。従って、各スレーブに設定するタイムドメインを、「多点スレーブか否か」や「多連送フレームか否か」などを考慮してフレーム長に合わせて適宜に設定することにより、各ＩＮ＿ｆｒａｍｅは、衝突することなく送信することができる。
【００５５】
一方、受信側（マスタユニット１２）は、ＣＲＣチェックを正常に行えたならばＩＮ＿ｆｒａｍｅを正常受信する。そして、送信元アドレスをチェックし、フレームに格納されたＩＮデータを受信バッファに格納する。
【００５６】
また、多連送フレームの場合には、ｎ回の受信のうち１回でも正常受信した場合には、その正常受信したデータをＩＮデータとし、受信バッファに格納する。つまり、通常この種の多連送フレームの場合、受信したデータが一致した場合に、データ化けなどが無い場合に、正規のものと判断するようにしたが、本実施の形態では、１つでも正常受信した場合には、それを正規のものと判断して記憶保持するようにした。なお、複数のＩＮ＿ｆｒａｍｅが正常受信されてもそれらのデータ間の一致チェックは行わないようにしている。従って、エラー処理は、多連送された全てのＩＮ＿ｆｒａｍｅがエラーだった場合のみとなる。このように複数のＩＮ＿ｆｒａｍｅ間の一致チェック処理を省略することにより、短時間で確実にＩＮデータの送信をするとができる。
【００５７】
ＥＶＥ＿ｆｒａｍｅは、通信サイクル中のメッセージデータ転送フレームである。いつどのノードが転送するかはマスタが決定し、ＯＵＴ＿ｆｒａｍｅ中のＥＶＥＮＴ送信許可アドレスに格納するノードアドレスで通知する。このＥＶＥ＿ｆｒａｍｅはコマンドフレームとレスポンスフレームの２フレームで１セットとなる。
【００５８】
このフレームのデータ構造は、図１２に示すようになっている。ここで、「スタート」はフレームの開始を示すもので、「コマンド」はフレーム識別コード，プロトコル制御コードであり、「宛先アドレス」はこのイベントデータを送信する宛先アドレスであり、「送信元アドレス」はこのイベントデータを送信したノードに設定された送信元アドレスであり、「レングス」は送信するイベントデータのデータ長であり、「イベントデータ」は送信する内容であるイベントデータであり、「ＣＲＣ」はフレームチェックシーケンスである。
【００５９】
そして、イベントデータ転送の用途としては、ステータス読み出しと書き込みのためのイベントデータ転送（マスタユニット１２からスレーブ２０宛）と、アプリケーションが使用するイベントデータ転送がある。
【００６０】
具体的には、マスタユニット１２とスレーブ２０（ＯＵＴスレーブ）との間で、以下に示す手順によりイベントデータ転送が実行される。すなわち、マスタユニット１２のファームウェアが、１つの通信サイクル内でどのノードがＥＶＥ＿ｆｒａｍｅを送信するかを、毎サイクル毎に決定（設定）する。
【００６１】
そこで、マスタユニット１２が、通信サイクル内でイベントデータ転送を行う場合には、図１３に示すように、まず、マスタユニット１２が送信するタイミングでＯＵＴ＿ｆｒａｍｅのイベント送信許可アドレスに自局ノードアドレスをのせて送信する（▲１▼）。このＯＵＴ＿ｆｒａｍｅを正常受信したスレーブ２０は、イベント送信許可アドレスが自局でないので、ＥＶＥ＿ｆｒａｍｅは送信しない。
【００６２】
また、上記した▲１▼で送信したＯＵＴ＿ｆｒａｍｅのイベント送信許可アドレスでマスタユニット１２のアドレスが指定されているため、マスタユニット１２は、ＯＵＴ＿ｆｒａｍｅ送信後、ＥＶＥ＿ｆｒａｍｅタイムドメインとなったらＥＶＥ＿ｆｒａｍｅを送信する（▲２▼）。
スレーブ２０が、上記▲２▼により発行されたＥＶＥ＿ｆｒａｍｅを正常受信すると、自局宛か否かを判断し、自局宛の場合には受信データを参照する。そして、レスポンスの要求があった場合には、レスポンスを返し（▲３▼）、無ければ受信したまま処理を終了する。
【００６３】
上記のレスポンスがＥＶＥ＿ｆｒａｍｅで返送されると、各ノードはそれを受信する。そして、マスタユニット１２はそのＥＶＥ＿ｆｒａｍｅを正常受信し、自局宛ならば受信データを参照する。
【００６４】
このようなＥＶＥ＿ｆｒａｍｅの送受が完了すると、各ＩＮスレーブは、上記したＩＮ＿ｆｒａｍｅの処理に従って、所定のタイミングでＩＮ＿ｆｒａｍｅを送信することになる（▲４▼）。
【００６５】
一方、スレーブ２０が通信サイクル内にイベントデータ転送を行うようにさせたい場合には、図１４に示すように、まずマスタユニット１２が、ＯＵＴ＿ｆｒａｍｅの送信前に送信許可を与えるスレーブのアドレスを決定し、そのアドレスをＯＵＴ＿ｆｒａｍｅのイベント送信許可アドレスに乗せて送信する（▲１▼）。
【００６６】
正常受信されたＯＵＴ＿ｆｒａｍｅで指定されたイベント送信許可アドレスが自局か否かを判断し、自局ならばＥＶＥ＿ｆｒａｍｅを送信する準備をするとともに、タイマを起動する。もちろん、自局でない場合には送信準備をしない。従って、図１３の場合には、ＯＵＴフレームのイベント送信許可アドレスで＃ｎが指定されているとすると、スレーブ＃ｍはＥＶＥ＿ｆｒａｍｅの送信準備をしないが、スレーブ＃ｎはＥＶＥ＿ｆｒａｍｅの送信準備をする。
【００６７】
次いで、ＯＵＴ＿ｆｒａｍｅ受信後、ＥＶＥ＿ｆｒａｍｅタイムドメインとなったら（上記タイマにより計測）、上記準備したＥＶＥ＿ｆｒａｍｅを送信する（▲２▼）。
この▲２▼で送信されたＥＶＥ＿ｆｒａｍｅを正常受信した各ノード（マスタユニットの場合もあれば他のスレーブの場合もある）は、送信先アドレスを確認し、自局宛ならば受信データを参照し、さらにレスポンスの要求があったら、レスポンスを返す。もちろん、自局宛でない場合にはなにもしない。
【００６８】
このようなＥＶＥ＿ｆｒａｍｅの送受が完了すると、各ＩＮスレーブは、上記したＩＮ＿ｆｒａｍｅの処理に従って、所定のタイミングでＩＮ＿ｆｒａｍｅを送信することになる（▲３▼）。
【００６９】
次に、Ｂｕｓ  Ｃｏｎｆｉｇｕｒａｔｉｏｎについて説明する。この処理は、ネットワーク初期化時に行うもので、図１５に示すフローチャートに従って実行する。すなわち、まず、マスタユニット１２は、ネットワークに存在しうる全てのスレーブに対し、ステータス読み出しコマンド送信する（ＳＴ１）。つまり、マスタユニット１２はイベントフレーム（ＥＶＥ＿ｆｒａｍｅ）を用いて、各スレーブが持つステータス情報を読み出す。
【００７０】
そして、ステップ１で応答のあったスレーブがフィールドバス（ネットワーク）に実際に接続されているスレーブとして認識する（ＳＴ２）。これにより、マスタユニットはバスの構成情報を作成する。そして、ステップ２で応答のあったスレーブの属性（ｉｎ，ｏｕｔ，点数，多連送ｉｎかなど）を記録する（ＳＴ３）。
【００７１】
次に、全てのＩＮフレーム長を確定し、ＯＵＴ＿ｆｒａｍｅ以降に、どのノードがいつＩＮ＿ｆｒａｍｅを送信すべきかを算出する（ＳＴ４）。すなわち、ステップ３で記憶した各スレーブの属性に基づき、ＩＮスレーブの点数並びに多連送する場合にはその回数を取得する。これにより、各ＩＮスレーブのＩＮ＿ｆｒａｍｅのフレーム長を求めることができる。そして、ＩＮ＿ｆｒａｍｅを送信するＩＮスレーブの送信順番（例えば、ノードアドレス順）を決めると、フレーム長から各ＩＮ＿ｆｒａｍｅの送信に要する時間がわかるので、それに一定マージンを付加することにより、ＯＵＴ＿ｆｒａｍｅを受信してから各ＩＮスレーブが送信開示するまでの待機時間（ＩＮ＿ｆｒａｍｅタイムドメイン）を算出することができる。
【００７２】
そして、ステップ２で応答のあったノード全てに対し、ステータス書き込みコマンドを送信する（ＳＴ５）。その際、スレーブ毎に、ステップ４で算出した値を元にＩＮ＿ｆｒａｍｅタイムドメイン［７：０］を書き込む。つまり、このスレーブ２０のレジスタに、図１６のようなＩＮ＿ｆｒａｍｅタイムドメインが設定される。
【００７３】
このＩＮ＿ｆｒａｍｅタイムドメインは、図１７に示すようにＯＵＴ＿ｆｒａｍｅを受信してから、自己のＩＮ＿ｆｒａｍｅを送信するまでの時間であり、この時間はタイマで計測するため、タイマ値をレジスタに設定する。そして、この時間（タイマ値）は、上記したように、自己が送信するより前に送信する各ＩＮ＿ｆｒａｍｅのフレーム長に基づく伝送時間に伝送遅延等の一定のマージンを加算することにより決定する。なお、この決定は、上記した説明ではマスタユニットで行うようにしたが、ツールを用いて算出し、そのツールで算出した値をマスタユニット１２にダウンロードし、マスタユニット１２はそのダウンロードした値に基づいて、各スレーブに対してステータス書き込みを行うようにしても良い。
【００７４】
なお、話は前後するが、スレーブ２０のレジスタに格納される情報としては、上記のようなＩＮ＿ｆｒａｍｅの送信タイミングを規定するＩＮ＿ｆｒａｍｅタイムドメイン以外にもあり、例えば、ＯＵＴデータ開始エリアがある（図１８参照）。このＯＵＴデータ開始エリアは、ＯＵＴ＿ｆｒａｍｅのどのブロックから自局のＯＵＴデータが始まるかを示す情報であり、ＯＵＴデータ開始エリアを先頭ＯＵＴブロック番号（＃０〜７９）で示す。なお、記述されたＯＵＴブロック番号から何ブロック分（１個の場合ももちろんある）を取得すればよいかは、自己の点数などから決定される。そして、このＯＵＴデータ開始エリアは、通常、マスタユニット１２からのステータスライトコマンドで設定される。そして、このＯＵＴデータ開始エリアの情報は、図６から図８などを説明したＯＵＴ＿ｆｒａｍｅの取得の際に利用する。
【００７５】
ところで、フィールドバスシステムには、フィールドバス３０の所定位置にリピータ３５を挿入し、そのリピータ３５の下流側にスレーブ２０を配置する構成をとるものがある。このリピータ３５は波形整形器であり、入力された波形が崩れた信号をＨｉｇｈ／Ｌｏｗのパルス波形に整形して出力する機能を有する。さらに、実際には、受信したフレームのヘッダとそれに続く設定値分のＭＡＲＫシンボル間の符号規則チェックを行い、ヘッダと符号則違反無しを確認後、波形整形し出力回線側へフレームをリピートする。なお、リピートを開始した後に符号則違反が発生した場合は、直ちにリピートを停止し、出力回線側をハイインピーダンス（ＴＸＥ＝０）にする。
【００７６】
このリピータ３５において処理されるのは、図１９（ａ）に示すように、リピータ３５の上流側から伝送されてきた伝送フレームを下流側にリピートする場合と、図１９（ｂ）に示すようにリピータ３５の下流側から伝送されてきた伝送フレームを上流側にリピートする場合がある。いずれの場合も、符号則チェックを行うことから、入力信号を受信してから出力信号を出力するまでに遅延（リピート遅延時間）が生じる（図２０参照）。
【００７７】
そこで、リピータ３５が介在するシステムの場合、係るリピート遅延時間も考慮して各ＩＮ＿ｆｒａｍｅの送信タイミングであるＩＮ＿ｆｒａｍｅのタイムドメインを設定すると良い。そして、実際のリピート遅延時間を考慮したＩＮ＿ｆｒａｍｅのタイムドメインは、以下のようにして決定することができる。なおフレームの送信タイミングは伝送レートの１ビット分であるＭＡＲＫ単位で規定する。図２１では、リピータが２段入った時の例を示す。
【００７８】
この図２１に示すフィールドバスシステムでは、マスタユニット１２から、各スレーブ２０にフレームを送信する場合（▲１▼）、いずれもリピータ３５′或いはリピータ３５″を２回通過する。また、スレーブ２０からマスタユニット１２に向けてフレームを送信する場合（▲２▼，▲３▼）には、マスタユニット１２に受信されるフレームは、リピータ３５′或いはリピータ３５″を２回通過し、それに伴い遅延が生じる。さらに、係るフレームは、フィールドバス３０を介して他のスレーブにも受信されるため、例えばスレーブ＃１から送信されたフレームは、さらに２回のリピータ３５′を通過し、合計４回のリピータを介してスレーブ＃２，＃４に受信される。
【００７９】
係るシステムにおけるＡ，Ｂ，Ｃの３つの観測点における各フレームのタイミングチャートは、図２２に示すようになる。ここで、観測点Ａは、２段のフレーム３５′，３５″の上流側の接続点であり、観測点Ｂは、スレーブ＃２，４に接続される２段のリピータ３５′の下流側の接続点であり、観測点Ｃは、スレーブ＃１，３に接続される２段のリピータ３５″の下流側の接続点である。
【００８０】
まず、マスタユニット１２に対するフレームの送受は、タイムチャートＡの観測点に示す通りである。つまり、マスタユニット１２は、ＯＵＴ＿ｆｒａｍｅ送信期間Ｔｏｕｔ中に、ＯＵＴ＿ｆｒａｍｅを出力する。具体的には、ＯＵＴ＿ｆｒａｍｅの起動後、Ｔ  ｄｅｌａｙ＿Ａだけ遅延後ＯＵＴ＿ｆｒａｍｅの送信を行う（▲１▼）。
【００８１】
このＯＵＴ＿ｆｒａｍｅは、スレーブ＃２，４に対しては２つのリピータ３５′を通過することにより発生するリピート遅延時間Ｔ  ｄｅｌａｙ＿Ｂだけ遅れて受信される。同様に、スレーブ＃１，３に対しては２つのリピータ３５″を通過することにより発生するリピート遅延時間Ｔ  ｄｅｌａｙ＿Ｃだけ遅れてＯＵＴ＿ｆｒａｍｅが受信される。なお、この例では、４つのリピータ３５′，３５″のリピート遅延時間は全て等しいので、Ｔ  ｄｅｌａｙ＿ＢとＴ  ｄｅｌａｙ＿Ｃの物理的な時間は等しくなっている。
【００８２】
このＯＵＴ＿ｆｒａｍｅの受信後、各スレーブは、それぞれ決められた所定時間経過後にＩＮ＿ｆｒａｍｅを送信する。この例では、まず、スレーブ＃１がＴｄｅｌａｙ＿Ｄだけ経過後にＩＮ＿ｆｒａｍｅを送信する（▲２▼）。このＩｎ＿ｆｒａｍｅは、スレーブ＃１に接続された２つのリピータ３５″を通過することにより、Ｔ  ｄｅｌａｙ＿Ｃだけ遅れてマスタユニット１２に到達する。さらに、２つのリピータ３５′を通過することにより、Ｔ  ｄｅｌａｙ＿Ｂだけ遅れてスレーブ＃２，４に到達する。
【００８３】
このスレーブ＃１の次にスレーブ＃２がＩｎ＿ｆｒａｍｅを送信するが、スレーブ＃１からのＩｎ＿ｆｒａｍｅを伝送中にスレーブ＃２がＩｎ＿ｆｒａｍｅを送信すると、フレームの衝突を生じるので好ましくない。そこで、図示の例では、ＩＮ＿ｆｒａｍｅがマスタユニット１２に到達した時点ではなく、全てのノード、つまりスレーブ＃２，４に到達するまでの期間が、スレーブ＃１からのＩｎ＿ｆｒａｍｅを送信する時間となり、スレーブ＃２のＩｎ＿ｆｒａｍｅにとってのＩＮ＿ｆｒａｍｅタイムドメインとなる。
【００８４】
そして、実際の送信は、そのＩｎ＿ｆｒａｍｅタイムドメイン経過後、Ｔ  ｄｅｌａｙ＿Ｄだけ遅れてスレーブ＃２がＩｎ＿ｆｒａｍｅを送信する。このＩｎ＿ｆｒａｍｅは、リピータ３５′を通過してＴ  ｄｅｌａｙ＿Ｂだけ遅れてマスタユニット１２に到達し、さらにリピータ３５″を通過してＴ  ｄｅｌａｙ＿Ｃだけ遅れてスレーブ＃１，＃３に到達する。
【００８５】
このように、各Ｉｎ＿ｆｒａｍｅを送信する都度、２つのリピータ３５′と２つのリピータ３５″通過するので、それぞれ遅れる。従って、スレーブ＃ｎの送信タイミングＴｉｎは、下記式により決定できる。
【００８６】
2004280304.tif 000003
【００８７】
なお、上記した計算式は、ＥＶＥ＿ｆｒａｍｅが発行されず、ＯＵＴ＿ｆｒａｍｅ受信後、すぐにＩｎ＿ｆｒａｍｅが発行される場合のものであり、Ｉｎ＿ｆｒａｍｅの送信前に他のフレームの送信を行う場合には、係る他のフレームを送信するに要する期間を加算する。
【００８８】
また、リピート遅延時間は、リピータの性能・仕様により求めることができる。なお、上記式によれば、スレーブとリピータとの接続関係は問わず、各スレーブから出力されるＩｎ＿ｆｒａｍｅ長と、送信順がわかれば、各スレーブの送信タイミングを求めることができる。
【００８９】
さらに、図２１の構成において、２つのリピータ３５′の間に、スレーブ＃５が設置された場合、スレーブ＃５からマスタユニット１２へ向けてＩｎ＿ｆｒａｍｅを出力した場合のリピート遅延時間を考えると、マスタユニット１２に伝達されるまでに、１つのリピータ３５′を通過するため、「Ｔ  ｄｅｌａｙ＿Ｂ×１／２」だけ遅延し、さらに、そのＩｎ＿ｆｒａｍｅがスレーブ＃１，３に伝達されるまでに「Ｔ  ｄｅｌａｙ＿Ｃ」だけ遅れる。また、スレーブ＃２，４に伝達される場合にも、１つのリピータ３５′を通過するため、「Ｔ  ｄｅｌａｙ＿Ｂ×１／２」だけ遅延するが、この遅延は、ＩＮ＿ｆｒａｍｅがマスタユニット１２に伝達される際に同時に発生する。従って、全体の遅延時間は、（Ｔ  ｄｅｌａｙ＿Ｂ×１／２）＋Ｔ  ｄｅｌａｙ＿Ｃとなる。
【００９０】
よって、より正確かつ無駄のないＩＮ＿ｆｒａｍｅタイムドメインを求めるためには、リピータとスレーブがどのように接続されているかの接続構成を把握し、各スレーブから出力された場合の遅延時間を算出し、それに基づいてＩＮ＿ｆｒａｍｅタイムドメインを求めると良い。但し、係る接続構成を把握するのは煩雑であるので、簡易的には、リピータの接続構成のみ取得し、直列に配置されたリピータの最下流に接続したスレーブからＩＮ＿ｆｒａｍを送信した場合の遅延時間を求め、最も大きい遅延時間を各Ｉｎ＿ｆｒａｍｅの送信における遅延時間と設定することである。
【００９１】
上記した各構成にすることにより、多点や少点数などの多様なスレーブが混在していても、スレーブ毎に最適なフレーム長に可変・設定することにより高速通信することができる。
【００９２】
【発明の効果】
以上のように、この発明では、スレーブの情報量，入出力点数等に応じて各Ｉｎ＿ｆｒａｍｅを送信する時間の割り当てを可変にすることにより、通信プロトコルをシステム構成に応じて柔軟に対応させることができる。
【図面の簡単な説明】
【図１】従来例を示す図である。
【図２】本実施の形態のフィールドバスシステムの一例を示す図である。
【図３】マスタユニットの内部構造を示すブロック図である。
【図４】スレーブの内部構造を示すブロック図である。
【図５】通信サイクルにおいて送受されるフレームを示す図である。
【図６】ＯＵＴ＿ｆｒａｍｅのデータ構造を示す図である。
【図７】ＯＵＴデータの内部構造の一例を示す図である。
【図８】ＯＵＴ＿ｆｒａｍｅの転送を説明する図である。
【図９】ＩＮ＿ｆｒａｍｅのデータ構造を示す図である。
【図１０】多連送モードを説明する図である。
【図１１】ＩＮ＿ｆｒａｍｅの転送を説明する図である。
【図１２】ＥＶＥ＿ｆｒａｍｅのデータ構造を示す図である。
【図１３】ＥＶＥ＿ｆｒａｍｅの転送を説明する図である。
【図１４】ＥＶＥ＿ｆｒａｍｅの転送を説明する図である。
【図１５】Ｂｕｓ  Ｃｏｎｆｉｇｕｒａｔｉｏｎを説明するフローチャートである。
【図１６】ＩＮ＿ｆｒａｍｅタイムドメインを格納するスレーブのレジスタ（記憶手段）のデータ構造の一例を示す図である。
【図１７】ＩＮ＿ｆｒａｍｅのタイムドメインを説明する図である。
【図１８】ＯＵＴデータ開始エリアを格納するスレーブのレジスタのデータ構造の一例を示す図である。
【図１９】リピータを説明する図である。
【図２０】リピート遅延時間を説明する図である。
【図２１】リピータを含むフィールドバスシステムにおけるフレームの伝送を説明する図である。
【図２２】図２１における観測点Ａ，Ｂ，Ｃのフレームの伝送タイミングを示すタイミングチャートである。
【符号の説明】
１０  ＰＬＣ
１１  ＣＰＵユニット
１２  マスタユニット
１２ａ  通信インタフェース
１２ｂ  マスタ用ＡＳＩＣ
１２ｃ  ＲＡＭ
１２ｄ  ＭＰＵ
１２ｅ  ＥＥＰＲＯＭ
１２ｆ  ＬＥＤ表示部
１２ｇ  設定スイッチ
１２ｈ  インタフェース
２０  スレーブ
２０ａ  通信インタフェース
２０ｂ  スレーブ用ＡＳＩＣ
２０ｄ  ＭＰＵ
２０ｅ  ＥＥＰＲＯＭ
２０ｆ  ＬＥＤ表示部
２０ｇ  設定スイッチ
２０ｉ  電源部
２０ｊ  Ｉ／Ｏ部
３０  フィールドバス
３５，３５′，３５″  リピータ
【図１】
2004280304.tif 000004
【図２】
2004280304.tif 000005
【図３】
2004280304.tif 000006
【図４】
2004280304.tif 000007
【図５】
2004280304.tif 000008
【図６】
2004280304.tif 000009
【図７】
2004280304.tif 000010
【図８】
2004280304.tif 000011
【図９】
2004280304.tif 000012
【図１０】
2004280304.tif 000013
【図１１】
2004280304.tif 000014
【図１２】
2004280304.tif 000015
【図１３】
2004280304.tif 000016
【図１４】
2004280304.tif 000017
【図１５】
2004280304.tif 000018
【図１６】
2004280304.tif 000019
【図１７】
2004280304.tif 000020
【図１８】
2004280304.tif 000021
【図１９】
2004280304.tif 000022
【図２０】
2004280304.tif 000023
【図２１】
2004280304.tif 000024
【図２２】
2004280304.tif 000025