(57)【要約】【課題】  共用時間帯内でメッセージ送信が許される局を、システム全体においてメッセージを偏り無く消化することが出来るようにして決定する。【解決手段】  バス使用権要求部２１は、自局の現在の状況（未送信メッセージ数等）に基づいて自局の優先順位データを動的に作成し、この動的優先順位データを付加したバス使用権要求をブロードキャストで送信する。優先順位データ格納部２２は、自局及びバス使用権要求を送信した全ての他局の優先順位データを記憶する。調停部２３は、優先順位データ格納部２２に記憶した優先順位データに基づいてバス使用権の調停を行う。例えば、全ての優先順位データの中で自局の優先順位データが最も優先順位が高い場合、調停勝利と判定し、バス使用権を獲得する。【選択図】図３
2006148815.tif 000002
【特許請求の範囲】
【請求項１】
共通シリアルバスを介して複数のノードが通信を行うネットワークシステムの通信サイクルを、各ノード毎に送信タイミングを割り当てられる専用時間帯と、各ノード間の調停で選ばれたノードが送信する共用時間帯に分け、
各ノードは、前記専用時間帯において自ノードに割り当てられた送信タイミングにおいて、前記共用時間帯に送信すべき種類のデータに関して未送信データがある場合には、自局の現在の状況に基づいて自局の優先順位データを動的に作成し、該動的優先順位データを付加したバス使用権要求をブロードキャストで送信し、
各ノードは、前記送信されたバス使用権要求を受信する毎に、該バス使用権要求に付加されている前記動的優先順位データを記憶し、
その後、前記専用時間帯においてバス使用権要求を送信した各ノードは、前記記憶した全ての動的優先順位データに基づいて各々独立してバス使用権の調停を行い、
調停に勝ったノードが、前記共用時間帯においてデータ送信することを特徴とするシリアルバス使用権の分散調停方法。
【請求項２】
前記動的優先順位データは、少なくとも自局の前記未送信データの数に基づいて作成されることを特徴とする請求項１記載のシリアルバス使用権の分散調停方法。
【請求項３】
前記動的優先順位データは、前記ネットワークに接続されるノード数を前記未送信データ数に乗じて、該乗算結果に自局の局番を加算することで求めることを特徴とする請求項２記載のシリアルバス使用権の分散調停方法。
【請求項４】
前記ネットワークシステムは、産業用途のネットワークシステムであり、
前記各ノードは、前記専用時間帯において自ノードに割り当てられた送信タイミングで制御データ交換も行い、該制御データ交換の定周期性が求められるシステムであることを特徴とする請求項１〜３の何れかに記載のシリアルバス使用権の分散調停方法。
【請求項５】
共通シリアルバスを使って複数のノードが通信を行い、その通信サイクルは、各ノード毎に送信タイミングを割り当てられる専用時間帯と、１又は少数のノードがデータ送信する共用時間帯に分けられているネットワークシステムにおける前記ノードであって、
前記専用時間帯において自ノードに割り当てられた送信タイミングにおいて、前記共用時間帯に送信すべき種類のデータに関して未送信データがある場合には、自局の現在の状況に基づいて自局の優先順位データを動的に作成し、該動的優先順位データを付加したバス使用権要求をブロードキャストで送信するバス使用権要求手段と、
前記専用時間帯において送信されたバス使用権要求を受信する毎に、該バス使用権要求に付加されている前記動的優先順位データを記憶する優先順位データ記憶手段と、
該記憶した全ての前記動的優先順位データに基づいてバス使用権の調停を行う調停手段とを有し、
該調停に勝った場合、前記共用時間帯においてデータ送信することを特徴とするノード。
【請求項６】
前記バス使用権要求手段は、自ノード内に溜まっている未送信データ数を計数する計数手段と、該計数手段で計数した未送信データ数と自局番とを組み合わせて前記優先順位データを作成する優先順位データ作成手段とを有することを特徴とする請求項５記載のノード。
【請求項７】
共通シリアルバスを使って複数のノードが通信を行い、その通信サイクルは、各ノード毎に送信タイミングを割り当てられる専用時間帯と、１又は少数のノードがデータ送信する共用時間帯に分けられているネットワークシステムにおける前記ノードにおけるコンピュータに、
前記専用時間帯において自ノードに割り当てられた送信タイミングにおいて、前記共用時間帯に送信すべき種類のデータに関して未送信データがある場合には、自局の現在の状況に基づいて自局の優先順位データを動的に作成し、該動的優先順位データを付加したバス使用権要求をブロードキャストで送信する機能と、
前記専用時間帯において送信されたバス使用権要求を受信する毎に、該バス使用権要求に付加されている前記動的優先順位データを記憶する機能と、
該記憶した全ての前記動的優先順位データに基づいてバス使用権の調停を行う機能と、
該調停に勝った場合、前記共用時間帯においてデータ送信する機能と、
を実現させる為のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シリアルバスに複数の局が接続されてなるネットワークシステムにおいて、当該シリアルバス使用権の調停方法に関する。
【背景技術】
【０００２】
従来より、ネットワークに接続された複数の局（ノード）間でデータ交換を行うためのネットワークシステムには様々なものがある。複数の局が同時にデータを送信しようとする場合に、通信路上で送信データが衝突しないように、バス使用権の調停を行う必要がある。
【０００３】
例えば、IEEE802.3のEthernet（登録商標）ではCSMA/CD(Carrier Sense Multiple Access with Collision Detection)で通信路が空いていることを確認してから送信を行い、IEEE1394ではルートノードでの調停で勝ったノードが送信を行い、トークンリングやトークンパッシングではトークンを所有しているノードが送信を行う。
【０００４】
また、特許文献１記載の発明では、トークンに情報を付加することにより、トークン１周で送信できる局を１局に制限している。さらに、特許文献２記載の発明では、パラレルバスシステムではあるが、局毎に送信済みの情報を持つことにより、バス使用権を公平に分配できるようにしている。
【特許文献１】特開平１１-２１５１６７号公報
【特許文献２】特開２００１-０７５９１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ここで、ＦＡ（ファクトリ・オートメーション）やＰＬＣ（プログラマブルコントローラ）等の産業用分野のシステムにおいて、複数のＣＰＵモジュール、複数のＩ／Ｏモジュールがシリアルバスに接続され、このシリアルバスを介して各モジュール間で相互にデータ交換を行うネットワークシステムが知られている。
【０００６】
ネットワークシステムにおけるデータ交換には、常時交換されるデータと、必要に応じて交換されるデータがあるが、上記産業用分野のネットワークシステムでは、前者に制御用のデータを、後者に状態監視の支援データ等を割り当てることが多い。制御用データは、それをもとに機械を動かしているので、定周期性が強く求められる。制御用データ交換のタイミングが一定でないと、機械の動きが滑らかでなくなり、最悪の場合に異常な動作を起こしかねないためである。尚、制御用データはＣＰＵモジュール−Ｉ／Ｏモジュール間、支援データ等はＣＰＵモジュール間で交換されるデータである。
【０００７】
このため、上記産業用分野のネットワークシステムにおけるデータ交換では、通信サイクルを、制御用データ交換用の時間帯と支援データ交換用の時間帯とに固定的に分けて、制御用データの定周期性を確保する必要がある。ここで、支援データ交換処理は、制御用データ交換処理とは異なり、支援データの量や該支援データによって要求される処理の内容次第で、支援データ交換処理時間が変わり、非常に時間が掛かる場合もある。この為、支援データ交換用時間帯において支援データ交換を行う局数が多いと、支援データ交換用時間帯内で支援データの交換を終了させることができず、支援データ交換用時間帯をはみ出してしまい、制御用データ交換用時間帯に影響を与え、定周期性を崩してしまう可能性がある。それ故、何らかの方法でデータ交換用時間帯内で送信する局数を制限する（例えば１局のみとする）必要がある。
【０００８】
しかし、前述のEthernet（登録商標）では、時間によって区分するという概念が無いので、そもそも局数を制限する機構は無く、トークンリングやトークンパッシングや上記特許文献２の発明の調停方法も同様である。このため、支援データの交換が一時的に集中した場合に、制御データの交換の周期が乱れてしまう。さらに、Ethernet（登録商標）やIEEE1394ではバス使用権を公平に分配する仕組みは無い。このため、複数の支援ツールをネットワークにつなげたときに、特定の機器が高い優先でのデータ交換をし、他の機器のデータ交換を妨げてしまうことがある。トークンリングやトークンパッシングでは公平に分配することはできるが、定周期性を守ることができない。
【０００９】
これに対して、特許文献１記載の発明では、時間帯内での送信局数の制限をすることはできるが、送信局数の制限を集中的に行う専用局が必要であり、この専用局との間でトークンを毎回交換する必要がある。
【００１０】
また、特許文献２の発明の調停方法は、適用対象システムがパラレルバスに限定されてしまい、取り扱いが簡単で安価なシリアルバスに適用することができない。すなわち、まず、特許文献２の発明は、概略的には、ベースボード上の32bitパラレルバスを、コネクタ削減の為に8bitパラレル化し、それに「送信機会を均等に分配」の機能をつけたものである。特許文献２の発明では、バス使用権要求は常時(ベースボード上のモジュールが勝手に)行っており、そのバス使用権要求の取り込みをパラレルで行っている。その為に、特許文献２の発明では、各ノードと共通バス（データ線）以外に、調停ノードと調停バスと調停信号線が設けられている。上記特許文献２の発明をシリアルネットワークに適用しようとした場合、パラレルでは使えた“データ線以外の制御線”（調停バスと調停信号線）は使えないので、特許文献２の手法を単純にシリアルバスに適用することはできない。
【００１１】
更に、上記局数を制限すること（ここでは、１周期毎に１局のみとする）に関しては、例えば、複数のノードが「ノード単位」で共通バスを平等に使用できるようにすることが考えられる。しかし、複数ノードで構成されたシステムで、各ノード内で処理される複数のタスクが各々複数のバス使用権を要求し、特定のノードが特に多くのバス使用権の要求を行う場合、ノード単位で共通バスを平等に使用すると、特定のノードでバス使用権要求が溜まっていき、最後には溢れてしまう。溢れない場合でも、そのノードで溜まったバス使用権要求により、処理が滞ってしまう。処理が滞ったノードがシステムで重要でないならば問題は小さいが、重要であるからこそバス使用権を大量に要求する場合が多い。従って、この様にバス使用権要求が偏ると、システム全体の処理を滞らせる。
【００１２】
以上述べた様に、送信局数の制限を集中的に行う専用局を設けることなく、データ交換用時間帯内で送信する局数を制限することが要望され、更にこの制限方法は、システム全体でメッセージを偏り無く消化することが出来るようにすることが要望される。
【００１３】
本発明の課題は、例えば上述した産業用分野のシステムにおいて、状態監視の支援データ等のような必要に応じて交換されるデータに関して、送信局数の制限を集中的に行う専用局等を必要とすることなく、共用時間帯内でデータ送信が許される局数を制限することができ、更に、システムの状態に応じて共通バスを使用させるノードを動的に決定すること、例えば各局の未送信メッセージ数に基づいて決定することで、システム全体においてメッセージを偏り無く消化することが出来るようになるシリアルバス使用権の分散調停方法、そのプログラム等を提供することである。
【課題を解決するための手段】
【００１４】
本発明のシリアルバス使用権の分散調停方法は、共通シリアルバスを介して複数のノードが通信を行うネットワークシステムの通信サイクルを、各ノード毎に送信タイミングを割り当てられる専用時間帯と、各ノード間の調停で選ばれたノードが送信する共用時間帯に分け、各ノードは、前記専用時間帯において自ノードに割り当てられた送信タイミングにおいて、前記共用時間帯に送信すべき種類のデータに関して未送信データがある場合には、自局の現在の状況に基づいて自局の優先順位データを動的に作成し、該動的優先順位データを付加したバス使用権要求をブロードキャストで送信し、各ノードは、前記送信されたバス使用権要求を受信する毎に、該バス使用権要求に付加されている前記動的優先順位データを記憶し、その後、前記専用時間帯においてバス使用権要求を送信した各ノードは、前記記憶した全ての動的優先順位データに基づいて各々独立してバス使用権の調停を行い、調停に勝ったノードが、前記共用時間帯においてデータ送信するものである。
【００１５】
上記シリアルバス使用権の分散調停方法では、まず、各ノードが、受信した全ての優先順位データに基づいて各々独立してバス使用権の調停を行うので、専用局を必要としない。更に、上記優先順位データは、自局の現在の状況を反映させた値となるように動的に算出される。
【００１６】
例えば、上記優先順位データは、少なくとも自局の前記未送信データの数に基づいて作成される。これにより、基本的には、未送信データ数が多い局ほど優先順位が高くなり、バス使用権を獲得し易くなる。
【００１７】
また、例えば、上記優先順位データは、前記ネットワークに接続されるノード数を前記未送信データ数に乗じて、該乗算結果に自局の局番を加算することで求める。これにより、ある通信サイクルにおいてある局で作成される優先順位データは、システム全体において一意な値となる。すなわち、複数の局が同じ値の優先順位データを作成することで調停がうまくいかなくなるような事態は生じない。
【発明の効果】
【００１８】
本発明によるシリアルバス使用権の分散調停方法、そのプログラム、ノード等によれば、産業用分野のシステム等において、状態監視の支援データ等のような必要に応じて交換されるデータに関して、送信局数の制限を集中的に行う専用局等を必要とすることなく、データ交換用時間帯内で送信する局数を制限することができ、更に、システムの状態に応じて共通バスを使用させるノードを動的に決定すること、例えば各局の未送信メッセージ数に基づいて決定することで、システム全体においてメッセージを偏り無く消化することが出来るようになる。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して、本発明の実施の形態について説明する。
図１に、本例によるネットワークシステム全体の概略構成図を示す。
図示のネットワークシステムは、基本的にはＴＤＭＡ方式により各ノード間でデータ交換を行うシステムであり、特にＰＬＣ（プログラマブルコントローラ）等の産業用途制御システムである。
【００２０】
図示の例では、シリアルバス５に複数のノード１，２，３，４が接続されているネットワークシステムを示す。ここでは、ノード１がマスタ局、他のノード２，３，４はスレーブ局であるものとし、以下、マスタ局１、スレーブ局２，３，４と記すものとする。
【００２１】
上記ネットワークシステムの通信サイクルは、各ノード毎にデータ送信タイミングを割り当てられる専用時間帯と、任意の１又は少数のノードがデータ送信する共用時間帯に分けられている。この専用時間帯に各ノードが送信するデータは、例えば制御用データ等のように定周期性が強く求められるものである。一方、共用時間帯に送信されるデータは、例えば状態監視の支援データ（メッセージ）等である。上述してあるように、支援データ等を送信するノード数が多いと、共用時間帯をはみ出してしまい、専用時間帯に影響を与え、定周期性を崩してしまう可能性があるので、上記の通り、共用時間帯にデータ（メッセージ）送信するノード数を、１又は少数に制限している。以下の説明では、共用時間帯にデータ（メッセージ）送信できるノード数は１つとするが、この例に限らず、複数（少数）としてもよい。
【００２２】
本発明の基本的な特徴は、この共用時間帯にデータ送信できるノードの決定方法にあり、各ノードが各々独立してバス使用権の調停を行う分散型調停方法を用いることで、上記特許文献１のような専用局が必要なくなると共に、更に自局の現在の状況（溜まっている未送信メッセージ数等）に基づいて自局の優先順位データを動的に作成してこれを他局に通知することで、上記分散型調停において、例えば未送信メッセージ数が多い局が調停に勝利し易くなるので、システム全体として、溜まったメッセージ数の偏りを無くすことが出来る。これより、システムとしてのバランスも良くなり、特定のノードの処理が滞って、その影響が全体に波及することもなくなる。
【００２３】
図２は、上記各ノードのハードウェア構成図である。
図２に示すノード１０は、ＣＰＵ１１、プログラムメモリ部１２、メモリ部１３、伝送制御部１４、サイクルタイマ１５、センドタイマ１６等を有する。メモリ部１３は、データメモリ部１３ａ、送信バッファ１３ｂ、受信バッファ１３ｃ等の記憶領域を有する。
【００２４】
ＣＰＵ１１は、プログラムメモリ部１２に格納されているプログラム、データメモリ部１３ａに格納されている各種データを用いて、後述するフローチャート図（図５、図６、図７等のフローチャート）に示す処理を実行する。
【００２５】
図３は、この様なフローチャートに示す処理に係わる各種機能を示す機能ブロック図である。図３には、上記基本的な特徴に係わる機能部のみを示す。
図３において、バス使用権要求部２１は、上記専用時間帯において自ノードに割り当てられた送信タイミングにおいて、上記共用時間帯に送信すべき種類のデータ（状態監視の支援データ（メッセージ）等）に関して未送信データがある場合には、自局の現在の状況（未送信メッセージ数等）に基づいて自局の優先順位データを動的に作成し、この動的優先順位データを付加したバス使用権要求をブロードキャストで送信する。
【００２６】
優先順位データ格納部２２は、上記専用時間帯において、各局が送信したバス使用権要求を受信する毎に、このバス使用権要求に付加されている優先順位データを記憶する。尚、バス使用権要求はブロードキャストで送信することから、自局が送信したバス使用権要求も受信して、その優先順位データを記憶する。優先順位データは、例えばそのバス使用権要求の送信元のノードの局番等と対応付けて記憶する。
【００２７】
その後、上記共用時間帯に入ると、調停部２３は、優先順位データ格納部２２に記憶した優先順位データに基づいてバス使用権の調停を行い、調停勝利又は敗北を決定する。すなわち、例えば、自局の優先順位データを、全ての他局の優先順位データと比較して、自局の優先順位データの値が最も大きい場合には調停勝利と判定し、それ以外は調停敗北と判定する。
【００２８】
自局の調停部２３が調停勝利と判定したノードのみが、共用時間帯においてデータ（未送信メッセージ等）を送信できる。
また、図３には、上記バス使用権要求部２１において優先順位データを作成する為の構成の一例を示してある。すなわち、バス使用権要求部２１は、例えば、自ノード内に溜まっている未送信メッセージの数を計数する計数部２１ａと、この計数部２１ａで計数した未送信メッセージ数と自局番とを組み合わせて優先順位データを作成する優先順位データ作成部２１ｂとを有する。
【００２９】
上記構成により、本例のネットワークシステムでは、専用局を必要とせずに支援データ交換用の時間帯における送信局数を制限することが出来ると共に、この送信局数の制限は、優先順位データをシステムの状態に応じて動的に決定するものであって、特に各局の未送信メッセージ数に基づいて決定することで、未送信メッセージ数が多い局ほど優先的にメッセージ送信できるので、ネットワークシステム全体としてメッセージを偏り無く消化することが出来るようになる。
【００３０】
尚、専用局とは上記マスタ局１のことではなく、上記特許文献１の“送信局数の制限を集中的に行う専用局”のことである。
また、本例のノードは、上記図３に示す特徴だけでなく、更に以下に述べる特徴を有していても良い。尚、以下に述べる特徴については、既に、本出願人が、特願2003-395940号（以下、先願という）において提案している。
【００３１】
すなわち、特に図示しないが、ノード１０は、マスタ局である場合には、自局のサイクルタイマ１５に基づく通信サイクルの切れ目に同期化フレームを送信する第１の同期化部を有し、スレーブ局である場合には、受信した同期化フレームの遅延を補償して自局のサイクルタイマ１５をマスタ局のサイクルタイマ１５と同期化させる第２の同期化部を有する。更に、マスタ局／スレーブ局とも、自局のサイクルタイマ１５とセンドタイマ１６とに基づいて自局のデータ送信タイミングを決定する送信タイミング決定部を有する。更に詳しくは、全てのスレーブ局が各々サイクルタイマ１５を保有し、これをマスタ局のサイクルタイマ１５と同期させて動作させる。例えば、当該ネットワークシステムの通信サイクルが周期Ｔであるものとし、同期化フレームの受信遅延時間をｔ（予め求めて登録しておく）とすると、同期化フレームを受信したら、“Ｔ−ｔ”をサイクルタイマ１５に再設定して再起動する。
【００３２】
そして、各局毎に自局のサイクルタイマ１５を元にセンドタイマ１６を起動して、センドタイマ１６のタイムアップ時点を自局のデータ送信タイミングとする。すなわち、自局のサイクルタイマ１５のタイムアップをトリガとしてセンドタイマ１６を起動する。尚、センドタイマ１６の設定値は、各局毎に互いに重複しないように設定する（例えば局番に基づいて設定する）。
【００３３】
上記の構成により、同期化フレームの受信までに掛かる時間が長くても影響されず、自局の送信タイミングが他局の送信タイミングと重なることはない。また同期化フレームが途中で消失したサイクルにおいても従来のようにそのサイクルにおける送信ができなくなってしまうという問題が生じることはない。また、マスタ局のダウンや脱落等により任意のスレーブ局が新たなマスタ局となった場合でも、このスレーブ局（新マスタ局）はマスタ機能の引継ぎの際には同期化されたサイクルタイマ１５のタイミングを継続して通信サイクルも継続する。したがって、従来のように周期ずれが発生するという問題は生じることはない。
【００３４】
各局は、この様に決定されたデータ送信タイミングで、自局の制御用データ等を送信すると共に、上記バス使用権要求を送信する。
尚、上記センドタイマ１６がタイムアップしたら、第２の設定値（当該タイムアップ時点から専用時間帯の終わりまでの時間であり、予めユーザが求めて登録しておくことができる）を、センドタイマ１６に設定して再起動し、これにより再びセンドタイマ１６がタイムアップしたら、上記調停部２３による調停処理が行われる。
【００３５】
尚、ノード１０はコンピュータの一種であると定義できる。
尚、送信するデータは、一旦送信バッファ１３ｂに格納された後、伝送制御部１４によってシリアルバス５上に流される。また、伝送制御部１４によって受信したデータは、一旦受信バッファ１３ｃに格納された後、ＣＰＵ１１によって処理される。
【００３６】
以下、上記ネットワークシステムの各ノードの処理動作について、図４〜図７を参照して、より詳細に説明するが、図４〜図７に示す一例は、上記先願による送信タイミング決定方法を用いるものとして説明するが、これは一例であり、この例に限らず、従来の他の送信タイミング決定方法を用いてもよい。但し、上記先願による送信タイミング決定方法を用いる場合には、上述した効果も併せて得られることになる。
【００３７】
図４に、図１のネットワークシステムにおける各局の動作タイミングを示す。ここでは、簡単に説明する為、マスタ局１とスレーブ局２，３のみを示すが、勿論、スレーブ局数は３以上であってよい。
【００３８】
図４に示すように、図１のネットワークシステムでは、概略的には、周期Ｔの１サイクルを、各ノード毎に送信タイミングを割り当てられる専用時間帯と、各ノード間の調停で選ばれたノードが送信する共用時間帯に分けている。そして、各ノードは、専用時間帯では自ノードに割り当てられる送信タイミング（タイムスロット）において、制御データを送信すると共に、もし送信すべき支援データ（メッセージ等）がある場合には、他の全ての局に対して（例えばブロードキャストで）、共用時間帯におけるバス使用権要求を出す。そして、もしバス使用権調停に勝利した場合には、共用時間帯においてメッセージを送信する。
【００３９】
図４に示す概略的な動作に対応するマスタ局、スレーブ局の処理フローチャートを、それぞれ、図５（ａ）、（ｂ）、図６（ａ）〜（ｃ）に示す。
ここで、図４、図５（ａ）、（ｂ）、図６（ａ）〜（ｃ）に示す概略的な動作自体は、本出願人が既に出願している特願２００３−３９５９４０号（以下、先願と記す）における図７、図８（ａ）、（ｂ）、図９（ａ）〜（ｃ）と略同様であってよい。本手法が先願と異なる点は、図７の処理にある（先願の図１０や図１１とは異なる）。すなわち、先願ではバス使用権を各局に公平に分配することを目的としていたのに対して、本手法では、メッセージを偏り無く消化することが出来るようにすることを目的としている点で異なる。
【００４０】
但し、以下、図５（ａ）、（ｂ）、図６（ａ）〜（ｃ）に示す処理についても、図４を参照しつつ説明する。
図５は、マスタ局の処理フローチャート図であり、図５（ａ）はサイクルタイマ割込処理、図５（ｂ）はデータ受信割込処理を示す。
【００４１】
図５（ａ）に示す処理は、マスタ局において自己のサイクルタイマ１５がタイムアップする毎に割込処理として実行される。すなわち、マスタ局は、サイクルタイマ１５がタイムアップすると、サイクルタイマの停止（ステップＳ１１）、サイクルタイマに周期Ｔを設定して起動（ステップＳ１２，Ｓ１３）、同期化フレームを送信（ステップＳ１４）、センドタイマ１６に送信タイミングを設定して起動（ステップＳ１５，Ｓ１６）、という各処理を実行する。尚、処理順序は必ずしもこの順番でなくてもよく、また並行して処理を行ってもよい。また、必ずしもサイクルタイマ１５を逐一停止して周期Ｔを再設定する必要性はなく、上記処理は単なる一例を示しているに過ぎない。
【００４２】
図５（ｂ）に示す処理は、データ／要求受信毎に実行される割込処理であり、受信データの取り込みを実行し（ステップＳ２１）、バス使用権要求があった場合にはこれを取り込む処理（ステップＳ２２）が行われる。
【００４３】
図６は、スレーブ局の処理であり、図６（ａ）はサイクルタイマ割込処理、図６（ｂ）は同期化フレーム受信割込処理、図６（ｃ）はデータ受信割込処理である。
図６（ａ）に示すステップＳ３１〜Ｓ３５の処理は、上記ステップＳ１１〜Ｓ１６の処理とほぼ同じであるが、異なる点は、ステップＳ１４の同期化フレーム送信処理は行わないことである。
【００４４】
図６（ｂ）は、同期化フレーム受信によって生じる割り込み処理である同期化フレーム受信割込処理のフローチャート図である。
図６（ｂ）において、スレーブ局は、同期化フレームを受信すると、サイクルタイマ１５を停止し（ステップＳ５１）、「予め設定される同期化フレーム受信までの想定時間（遅延時間）を周期Ｔから引いた時間（Ｔ−遅延）」をサイクルタイマ１５に再設定して再起動する（ステップＳ４２，Ｓ４３）。
【００４５】
図６（ｃ）のステップＳ５１，Ｓ５２の処理は、図５（ｂ）の処理と同じであるので、説明は省略する。
図７は、センドタイマ１６のタイムアップによる割込み処理のフローチャート図であり、これはマスタ局もスレーブ局も同じ処理となる。
【００４６】
まず、図７のステップＳ６３，Ｓ６４の処理によって、図４に示すように、１サイクル内にセンドタイマ１６は２回タイムアップするので、各ノード（マスタ局、各スレーブ局）は、それぞれ、自局のセンドタイマ１６がタイムアップすると、まず、これが１回目か２回目かを判定する（ステップＳ６１）。判定方法としては、例えばセンドタイマ１６のタイムアップ時に当該図７の処理後にセットされサイクルタイマ１５のタイムアップでリセットされるフラグを用意して、これを参照すればよい。これによって、１回目のタイムアップ時にはフラグはリセットされており、２回目はセットされているので、これによりステップＳ６１の判定が行える。
【００４７】
上記ステップＳ６１の判定により、もし１回目であればステップＳ６２〜Ｓ６８の処理を実行し、もし２回目であればステップＳ６９〜Ｓ７２の処理を実行する。
センドタイマ１６の１回目のタイムアップの際には、センドタイマを停止し（ステップＳ６２）、当該タイムアップ時点から共用時間帯の始まりまでの時間（予め各局毎に求められて記憶されている）をセンドタイマ１６に再設定して再起動し（ステップＳ６３，Ｓ６４）、制御データを送信する（ステップＳ６５）。また、他局に送信すべき支援データ（メッセージ）がある為に共用時間帯においてバスを使用したい場合には（ステップＳ６６、ＹＥＳ）、自局の現在の状況（未送信メッセージ数等）に基づいて動的に優先順位データを作成し（ステップＳ６７）、この優先順位データを付加したバス使用権要求を送信する（ステップＳ６８）。このバス使用権要求送信は、ブロードキャストで行い、全局でその要求を受信して要求があったことを認識する。どの局からの要求であるのかを判断するには、要求フレームに要求元の局番を付加しても良いし、受信時のセンドタイマ１６の値から逆算(ＴＤＭＡなので送信タイミングと局番は１対１)しても良い。
【００４８】
上述したようにバス使用権要求はブロードキャストで行うので、自局が送信した要求も受信する。当然、他の局がバス使用権要求を出した場合には、このバス使用権要求を受信するので、図５（ｂ）のステップＳ２２または図６（ｃ）のステップＳ５２のバス使用権要求取り込み処理を行うが、その際、例えば各バス使用権要求に含まれる要求送信元の局番号と上記優先順位データとを取り出して記憶しておく。
【００４９】
次に、センドタイマ１６の２回目のタイムアップの際、すなわち共用時間帯の開始時点では、まず、バス使用権要求の調停処理を実行する（ステップＳ６９）。これは、上記記憶しておいた全ての優先順位データ同士を比較して、最も優先順位が高い（例えば、後述する例では、優先順位データの値が最も大きい）優先順位データを求めるものである。そして、この最上位の優先順位データの送信元の局番号が、自局の局番号であった場合には（ステップＳ７０，ＹＥＳ）、自局のメッセージを送信できる（ステップＳ７１）。勿論、最上位の優先順位データの送信元の局番号が、自局の局番号では無い場合には（ステップＳ７０，ＮＯ）、自局のメッセージは送信できない。メッセージを送信出来た場合も出来なかった場合も、最後に、今回取り込んだバス使用権要求を消去して、本処理は終了する。
【００５０】
尚、自局がバス使用権要求を送信しないサイクルでは、ステップＳ６９〜Ｓ７２の処理を省略してもよい。
尚、ここで、上記ステップＳ６３のセンドタイマ１６の再設定について、一例を用いて説明するならば、例えば周期Ｔが20msであり、これを前半の10msを専用時間帯、後半の10msを共用時間帯に割り当て、専用時間帯におい各局毎のデータ送信に割り当てる時間（TDMA幅；タイムスロット）が1msだとする。図１のシステムを例にし、スレーブ局２，３，４、マスタ局１の順にデータを送信する場合、0〜1msは同期化フレーム、1〜2msはスレーブ局２のデータ送信、2〜3msはスレーブ局３のデータ送信、3〜4msはスレーブ局４のデータ送信、4〜5msはマスタ局１のデータ送信の為に割り当てられる時間となる。例えばスレーブ局４を例にすると、自データの送信タイミングは3msからであるので、センドタイマ１６の設定値は3msである。よって、センドタイマ１６の１回目のタイムアップ時に再設定する値は、7msとなる（専用時間帯の10msから3msを引けば、7msとなる）。
【００５１】
尚、別途３つ目のタイマを用意し、このタイマに専用時間帯の長さ（上記の例では10ms）を設定して、サイクルタイマ１５のタイムアップ毎に起動するようにしてもよいが、この場合、タイマが１つ余分に必要になるので、ここではセンドタイマ１６を利用している。
【００５２】
上記ステップＳ６７の処理、すなわち自局の現在の状況（未送信メッセージ数等）に基づいて動的に優先順位データを作成する処理について、以下、詳細に説明する。
当該優先順位データ作成方法は、基本的には未送信メッセージの数で優先順位を上下できるように優先順位データを作成すれば良いが、優先順位がネットワークシステム全体において一意（ユニーク）であることが望ましい。つまり、ある通信サイクルにおいて、複数の局が同じ値の優先順位データを作成することが無いようにすることが望ましい。そこで未送信メッセージ数と自局番と組み合わせれば、複数ノードで未送信メッセージ数が一致しても局番は異なるので、優先順位は一意と成る。未送信メッセージ数と自局番とを組み合わせた優先順位データの算出方法は、例えば優先順位＝「未送信メッセージ数×局数＋自局番」とすることが良い。勿論、この例に限らず、各局が個別に算出する優先順位が、ネットワークシステム全体において一意となるような算出方法であれば何でも良い。あるいは、必ずしも一意なものとならなくてもよい。
【００５３】
ここでは、上記の式を用いるものとし、例えば一例として局番が０〜１５までの１６個の局がネットワークに接続されている場合では、優先順位＝「未送信メッセージ数×１６＋自局番」となる。
【００５４】
以上の様に動的に優先順位データを作成して、これを用いて上記調停を行うことにより、未送信メッセージの溜まったノードが優先してバスを使用することが可能になる。
一例として、局番０〜１５までの１６の局がネットワークに接続されたシステムにおいて、あるとき、局番０，１、２の３局がそれぞれ３，２、１個の未送信メッセージを溜めている場合を例にして以下に具体例を説明する。ここでは、上記“優先順位＝「未送信メッセージ数×局数＋自局番」”の式を用いるものとするので、優先順位データの値が最も大きい局が、調停に勝利することになる。尚、以下の説明では、局番０の局は局０、局番１の局は局１、局番２の局は局２と記すものとする。また、尚、以下の処理中に新たな未メッセージは発生しないものとする。
【００５５】
上記一例においては、最初のバス使用権要求の際には、局０は優先順位データ４８(３×１６＋０)を、局１は３３(２×１６＋１)を、局２は１８(１×１６＋２)を、それぞれ送信する。優先順は大きい順なので局０が最優先となり調停に勝利するので、局０がバスを使用して自局のメッセージを送信する。局０がバスを使用して未送信メッセージを１つ消化すると、局０の溜めている未送信メッセージは２個になる。
【００５６】
次のバス使用権要求の際には、局０は優先順位データ３２(２×１６＋０)を、局１は３３(２×１６＋１)を、局２は１８(１×１６＋２)を、それぞれ送信する。優先順は大きい順なので局１が最優先となりバスを使用する。局１がバスを使用して未送信メッセージを１つ消化すると、局１の溜めている未送信メッセージは１個になる。
【００５７】
次のバス使用権要求の際には、局０は優先順位データ３２(２×１６＋０)を、局１は１７(１×１６＋１)を、局２は１８(１×１６＋２)を、それぞれ送信する。優先順は大きい順なので局０が最優先となりバスを使用する。局０がバスを使用して未送信メッセージを１つ消化すると、局０の溜めている未送信メッセージは１個になる。
【００５８】
次のバス使用権要求の際には、局０は優先順位データ１６(１×１６＋０)を、局１は１７(１×１６＋１)を、局２は１８(１×１６＋２)を、それぞれ送信する。優先順は大きい順なので局２が最優先となりバスを使用する。局２がバスを使用して未送信メッセージを１つ消化すると、局２の溜めている未送信メッセージは０個になる。
【００５９】
よって、次のバス使用権要求の際には、局２はバス使用権要求を行わないので、局０は優先順位データ１６(１×１６＋０)を、局１は１７(１×１６＋１)を、それぞれ送信する。優先順は大きい順なので局１が最優先となりバスを使用する。局１がバスを使用して未送信メッセージを１つ消化すると、局１の溜めている未送信メッセージは０個になる。
【００６０】
よって、次のバス使用権要求の際には、局０のみが優先順位データ１６(１×１６＋０)を送信する。他にバス使用権要求はないので局０がバスを使用する。局０がバスを使用して未送信メッセージを１つ消化すると、局０の溜めている未送信メッセージは０個になる。
【００６１】
尚、未送信メッセージの“数”ではなく、全未送信メッセージのデータ量の総和を用いるようにしてもよい。
以上の様に、溜めている未送信メッセージ数が同数ならば局番の大きい順にバス使用権を獲得できるが、未送信メッセージ数が異なれば未送信メッセージ数の大きい順にバス使用権を獲得でき、システム全体として、溜まったメッセージ数の偏りを無くすことが出来る。
【００６２】
これにより、例えば、特定のノードが非常に多くのメッセージを送信したい場合、この特定ノードが優先的に（未送信メッセージ数がある程度減少するまでは何度も連続して）バス使用権を獲得できるので、この特定のノードでのメッセージ溢れの発生を防止することが出来る。また、特定のノードの処理が滞って、その影響がシステム全体に波及することもなくなる。また、この様に未送信メッセージ数が多いノードが優先的にメッセージ送信できることで未送信メッセージ数を減らしていけば、各ノードに溜まる未送信メッセージ数がほぼ同じとなり、システムとしてのバランスも良くなる。また、上記特定のノードが非常に多くの未送信メッセージを溜めることになる状況としては、例えば、システムの支援ツールを１つのノードに複数台繋げてメッセージを大量に発行する場合が考えられるが、この様な状況でも、本手法ではメッセージ量に応じてバス使用権が分配されるので、安心して使うことができる。あるいは上記支援ツールの代わりに高速なネットワークとのゲートウェイを繋げる場合も考えられるが、高速ネットワークから来る大量のメッセージ量に応じてバス使用権が分配されるので、メッセージが溢れることが無くなる。
【図面の簡単な説明】
【００６３】
【図１】本例によるネットワークシステム全体の概略構成図である。
【図２】図１に示す各ノードのハードウェア構成図である。
【図３】各ノードの機能ブロック図である。
【図４】図１のネットワークシステムにおける各局の動作タイミングを示す図である。
【図５】マスタ局の処理フローチャート図であり、（ａ）はサイクルタイマ割込処理、（ｂ）はデータ受信割込処理を示す。
【図６】スレーブ局の処理フローチャート図であり、（ａ）はサイクルタイマ割込処理、（ｂ）は同期化フレーム受信割込処理、（ｃ）はデータ受信割込処理である。
【図７】センドタイマのタイムアップによる割込み処理のフローチャート図である。
【符号の説明】
【００６４】
１  マスタ局
２，３，４  スレーブ局
５  シリアルバス
１０  ノード
１１  ＣＰＵ
１２  プログラムメモリ部
１３  メモリ部
１３ａ  データメモリ部
１３ｂ  送信バッファ
１３ｃ  受信バッファ
１４  伝送制御部
１５  サイクルタイマ
１６  センドタイマ
２１  バス使用権要求部
２１ａ  計数部
２１ｂ  優先順位データ作成部
２２  優先順位データ格納部
２３  調停部
【図１】
2006148815.tif 000003
【図２】
2006148815.tif 000004
【図３】
2006148815.tif 000005
【図４】
2006148815.tif 000006
【図５】
2006148815.tif 000007
【図６】
2006148815.tif 000008
【図７】
2006148815.tif 000009