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