(57)【要約】【課題】  固有のアドレスが設定された複数のモジュールが通信バスに接続される、マルチドロップ方式の通信システムにおいて、異なるモジュールに同じアドレスが重複して設定されると、レスポンスを返すモジュールが一定せず、また衝突が発生して処理を続行することが出来なくなるという課題を解決する。【解決手段】  自身のアドレスを受信したときにプリレスポンスを出力し、所定時間内に他のモジュールからのプリレスポンスを受信するか、自身が送信したプリレスポンスとの衝突を検出したときに、通信を中止するようにする。また、起動後最初に自身のアドレスを受信したときは、プリレスポンスを返さないようにする。アドレスが重複設定されたモジュールが自動的に切り離されるので、処理を続行することができる。【選択図】                    図１
2008005191.tif 000002
【特許請求の範囲】
【請求項１】
固有のアドレスが設定された複数のモジュールが通信バスに接続され、この固有のアドレスを用いてモジュールを指定し、通信を行う通信システムにおいて、
モジュールを指定するアドレスを前記通信バスに出力するメインモジュールと、
受信したアドレスが自身のアドレスと一致したときにプリレスポンスを出力し、このアドレスの受信から所定の期間内に、他のモジュールからのプリレスポンスを受信するか、または衝突を検知したときに通信を中止するスレーブモジュールと、
を具備したことを特徴とする通信システム。
【請求項２】
前記スレーブモジュールは、起動してから最初に自身のアドレスを受信したときに、プリレスポンスを出力しないようにしたことを特徴とする請求項１記載の通信システム。
【請求項３】
前記通信バスは、制御システムにおけるＩ／Ｏバスであることを特徴とする請求項１若しくは請求項２記載の通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アドレスが重複していることを検出し、重複したアドレスを有するモジュールの通信を自動的に中止することができる通信システムに関するものである。
【背景技術】
【０００２】
図４に、制御システムなどで用いられる通信システムの構成を示す。図４において、通信バスの一種であるＩ／Ｏバス３０には１台のマスタモジュール１０と３台のスレーブモジュール２０ａ、２０ｂ、２０ｃが接続され、その終端には終端部４０が接続されている。１１、２１ａ、２１ｂ、２１ｃはそれぞれマスタモジュール１０、スレーブモジュール２０ａ、２０ｂ、２０ｃに内蔵されている双方向性バッファであり、各モジュールはこれらの双方向性バッファを介してＩ／Ｏバス３０に接続されている。この通信システムは、いわゆるマルチドロップタイプのバスシステムを構成している。
【０００３】
スレーブモジュール２０ａ、２０ｂ、２０ｃにはそれぞれ固有のアドレスが設定されており、このアドレスを用いて、マスタモジュール１０とスレーブモジュール２０ａ、２０ｂ、２０ｃは相互に通信を行う。
【０００４】
スレーブモジュール２０ａと通信を行うために、マスタモジュール１０はスレーブモジュール２０ａのアドレスとコマンドをＩ／Ｏバス３０に出力する。このアドレスとコマンドを受信したスレーブモジュール２０ａは、アドレスから自分宛であることを判断し、コマンドで指示された作業を行ってレスポンスをマスタモジュール１０に返信する。このように、マスタモジュール１０はアドレスによってスレーブモジュールを特定し、処理を進める。
【０００５】
ステーションアドレスを誤って二重に設定したような場合でも、それに伴う重大な事態を未然に防止することができる通信装置の構成を示したものとして、例えば特許文献１に記載されたものがあった。
【０００６】
【特許文献１】特開平６−３０００１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、このような通信システムには、次のような課題があった。間違って異なるスレーブモジュールに同じアドレスが設定され、また故障等でアドレスが重複すると、複数のスレーブモジュールがマスタモジュールにレスポンスを返そうとする。通常Ｉ／Ｏバスは先に送信されたレスポンスのみ有効となるように設計されているが、どのスレーブモジュールのレスポンスが早くなるかは、スレーブモジュールが配置されている位置や、スレーブモジュールが内部処理を行ってレスポンスを返すまでの時間によって左右されるので、一意的には決まらない。そのため、応答するスレーブモジュールが状況によって異なってしまい、処理を続行することができなくなるという課題があった。
【０００８】
また、２つ以上のスレーブモジュールがほぼ同時にレスポンスを送信すると、レスポンスが衝突し、マスタモジュールはレスポンスを全く受信することができなくなり、やはり処理を続行することができなくなるという課題もあった。
【０００９】
各スレーブモジュールに固有の識別番号を付与し、マスタモジュールが診断通信でアドレスの重複を検出することも行われているが、診断通信のために負荷が増大し、またマスタモジュールは全てのスレーブモジュールの識別番号を記憶しておかなければならないために、システムが複雑になってしまうという課題もあった。
【００１０】
従って本発明の目的は、アドレスが重複してもその重複を検出して該当モジュールの通信を中止することにより、通信が妨害されることがない通信システムを提供することにある。
【課題を解決するための手段】
【００１１】
このような課題を達成するために、本発明のうち請求項１記載の発明は、
固有のアドレスが設定された複数のモジュールが通信バスに接続され、この固有のアドレスを用いてモジュールを指定し、通信を行う通信システムにおいて、
モジュールを指定するアドレスを前記通信バスに出力するメインモジュールと、
受信したアドレスが自身のアドレスと一致したときにプリレスポンスを出力し、このアドレスの受信から所定の期間内に、他のモジュールからのプリレスポンスを受信するか、または衝突を検知したときに通信を中止するスレーブモジュールと、
を具備したものである。アドレスが重複したモジュールは自動的に通信を中止するので、通信が妨害されることがない。
【００１２】
請求項２記載の発明は、請求項１記載の発明において、
前記スレーブモジュールは、起動してから最初に自身のアドレスを受信したときに、プリレスポンスを出力しないようにしたものである。新たに起動したモジュールのみ通信を中止するので、既接続のモジュールに影響を与えることがない。
【００１３】
請求項３記載の発明は、請求項１若しくは請求項２記載の発明において、
前記通信バスは、制御システムにおけるＩ／Ｏバスであることを特徴としたものである。信頼性が要求される制御システムにおいて、特に効果が大きい。
【発明の効果】
【００１４】
以上説明したことから明らかなように、本発明によれば次のような効果がある。
請求項１，２および３の発明によれば、自身のアドレスを受信したときにプリレスポンスを出力し、所定時間内に他のモジュールからのプリレスポンスを受信するか、自身が送信したプリレスポンスとの衝突を検出したときに、通信を中止するようにした。
【００１５】
スレーブアドレスのみでアドレスの重複を検出し、通信を中止できるので、複数のスレーブモジュールに同一アドレスが設定されても、他のモジュールの動作に影響を与えることがないという効果がある。また、重複設定だけでなく、故障によってアドレスが重複した場合でも、自律的に通信を中止するので、他のモジュールの動作を妨害しないという効果もある。
【００１６】
さらに、起動後最初に自身のアドレスを受信したときに、プリレスポンスを出力しないようにすることにより、追加されたモジュールのみ通信を中止し、既に動作しているスレーブモジュールの動作に影響を与えないという効果もある。
【発明を実施するための最良の形態】
【００１７】
以下本発明を図面を用いて詳細に説明する。図１は本発明に係る通信システムの一実施例を示す構成図である。なお、図４と同じ要素には同一符号を付し、説明を省略する。図１において、５０ａ、５０ｂ、５０ｃはスレーブモジュールであり、Ｉ／Ｏバス３０に接続されている。これらスレーブモジュール５０ａ、５０ｂ、５０ｃには、固有のアドレスが設定されている。なお、Ｉ／Ｏバス３０は通信バスに相当する。
【００１８】
５１ａ、５１ｂ、５１ｃはそれぞれスレーブモジュール２０ａ、２０ｂ、２０ｃに内蔵されている双方向性バッファであり、各スレーブモジュールはこの双方向性バッファを介してＩ／Ｏバス３０に接続される。
【００１９】
５２ａ、５２ｂ、５２ｃはそれぞれスレーブモジュール５０ａ、５０ｂ、５０ｃに内蔵されているプリレスポンス出力部であり、Ｉ／Ｏバス３０にプリレスポンスを出力する。５３ａ、５３ｂ、５３ｃはそれぞれスレーブモジュール５０ａ、５０ｂ、５０ｃに内蔵されているプリレスポンス検出部であり、Ｉ／Ｏバス３０に出力されたプリレスポンスまたは衝突を検出する。
【００２０】
次に、図２に基づいてこの実施例の通信手順を説明する。図２において、先ず、マスタモジュール１０はスレーブモジュールのアドレスとコマンドをＩ／Ｏバス３０に出力する。スレーブモジュール５０ａ、５０ｂ、５０ｃはこのアドレスとコマンドを受信し、受信したアドレスが自身のものであるとプリレスポンスを出力し、所定の時間内にプリレスポンスを受信しないと、レスポンスをＩ／Ｏバス３０に出力する。
【００２１】
なお、プリレスポンスは、プリレスポンスであることがわかるだけでよいので、極短いメッセージで足りる。そのため、通信負荷が増大して問題になることはない。また、プリレスポンス同士の衝突の可能性も低い。
【００２２】
図３はスレーブアドレスの動作を説明するためのフローチャートである。このフローチャートに基づいて、この実施例の動作を詳しく説明する。なお、この説明では、スレーブモジュール５０ａが自身のアドレスを受信したとして説明するが、他のスレーブモジュールが自身のアドレスを受信した場合も、応答するスレーブアドレスが異なるだけで、動作は同じである。
【００２３】
図３において、工程（Ｐ３−１）でスレーブモジュール５０ａが自身のアドレスを検出すると、工程（Ｐ３−２）でスレーブモジュール５０ａは起動後最初に自身のアドレスを受信したかを判断し、最初のアドレス受信でないと工程（Ｐ３−３）に移行し、プリレスポンス出力部５２ａはプリレスポンスをＩ／Ｏバス３０に出力する。最初のアドレス受信であると工程（Ｐ３−３）をスキップして、プリレスポンスを出力しない。
【００２４】
次に、プリレスポンス検出部５３ａは、所定の期間内に他のスレーブモジュールがプリレスポンスを出力するか衝突が発生したかどうかを検出する。工程（Ｐ３−４）でプリレスポンスを検出するか、また衝突が発生したかをチェックし、プリレスポンスの検出あるいは衝突が発生すると工程（Ｐ３−５）に移行して通信を中止し、プリレスポンスを検出せずかつ衝突の発生もないと、工程（Ｐ３−６）に移行してレスポンスをＩ／Ｏバス３０に出力する。
【００２５】
なお、プリレスポンス検出部５３ａがプリレスポンスを検出する期間は、起動直後のスレーブモジュールを除く全てのスレーブモジュールがプリレスポンスを出力することができる程度の時間に設定する。また、衝突が発生したかどうかは、自身が出力したプリレスポンスを正しく検出できたか否かで判断する。
【００２６】
図１において、スレーブモジュール５０ａと５０ｂがＩ／Ｏバス３０に接続されて正常に通信が行われている状態で、スレーブモジュール５０ｃが新たにＩ／Ｏバス３０に接続された場合を考察する。スレーブモジュール５０ｃが接続される前は正常に通信が行われていたので、スレーブモジュール５０ａと５０ｂは異なったアドレスが設定されていることがわかる。
【００２７】
スレーブモジュール５０ｃのアドレスが５０ａ、５０ｂのアドレスと異なっているとする。マスタモジュール１０がスレーブモジュール５０ｃのアドレスを指定すると、最初のアクセスなのでスレーブモジュール５０ｃはプリレスポンスを出力しない。スレーブモジュール５０ａ、５０ｂは自身のアドレスと異なるので、やはりプリレスポンスを出力しない。プリレスポンス検出部５３ｃはプリレスポンスを検出しないので、スレーブモジュール５０ｃはレスポンスを出力する。
【００２８】
２回目以降は、メインモジュール１０のアドレス送信に応じて、プリレスポンス出力部５２ｃのみがプリレスポンスを出力する。プリレスポンス検出部５３ｃは他のスレーブモジュールのプリレスポンスを検出しないので、スレーブモジュール５０ｃはレスポンスを出力する。このようにして、通信が正常に行われる。
【００２９】
次に、スレーブモジュール５０ｃのアドレスが、スレーブモジュール５０ｂのアドレスと重複して設定されたとする。メインモジュール１０がスレーブモジュール５０ｃのアドレスを指定すると、最初のアクセスなのでスレーブモジュール５０ｃはプリレスポンスを出力せず、スレーブモジュール５０ｂのみがプリレスポンスを出力する。プリレスポンス検出部５３ｃは自身と異なるプリレスポンスを検出するので、通信を中止する。スレーブモジュール５０ｂはプレレスポンスを受信しないので、レスポンスを出力する。
【００３０】
スレーブモジュール５０ｃが通信を中止したので、メインモジュール１０が再度スレーブモジュール５０ｂのアドレスを指定すると、スレーブモジュール５０ｂのみがプリレスポンスを出力する。このため、スレーブモジュール５０ａ、５０ｂに対する通信は正常に行われる。
【００３１】
なお、この説明では２つのスレーブモジュールに同じアドレスが設定された場合について考察したが、３つ以上のスレーブモジュールに同じアドレスが設定された場合でも、同様にして重複設定されたスレーブモジュールの通信が中止され、残りのモジュール間の通信は正常に行われる。また、故障等によって２つ以上のスレーブモジュールのアドレスが重複した場合も、同様にしてアドレスが重複設定されたスレーブモジュールが切り離されるので、他のモジュール間の通信は正常に行うことができる。
【００３２】
なお、この実施例では、設置された後最初に自身のアドレスが指定されたときはプリレスポンスを出力しないようにしたが、最初からプリレスポンスを出力するようにしてもよい。すなわち、図３フローチャートで工程（Ｐ３−２）を削除し、全て工程（Ｐ３−３）を実行するようにしてもよい。
【００３３】
工程（Ｐ３−２）があると、最後に設置されたスレーブモジュールのみ通信中止になるのに対して、工程（Ｐ３−２）がなく、最初からプリレスポンスを出力するようにすると、アドレスが重複した全てのスレーブモジュールが通信を中止する。
【００３４】
通信を中止するスレーブモジュールを少なくすることができる点で工程（Ｐ３−２）がある方が優れているが、構成が簡単になる点では、工程（Ｐ３−２）がない方が優れている。また、故障などによってアドレスが重複した場合は、工程（Ｐ３−２）の有無に関わらずアドレスが重複した全てのスレーブモジュールが通信を中止する。
【００３５】
なお、この実施例では通信バスとしてＩ／Ｏバスを使用したが、他のマルチドロップタイプの通信バスでもよい。また、アドレスを出力するマルチモジュールと受信するスレーブモジュールを別モジュールとしたが、マスタモジュールとスレーブモジュールを兼ね備えたモジュールであってもよい。この場合は、アドレスを出力する場合はマスタモジュールになり、受信する場合はスレーブモジュールになる。
【図面の簡単な説明】
【００３６】
【図１】本発明の一実施例を示す構成図である。
【図２】通信の手順を示す図である。
【図３】本発明の一実施例の動作を示すフローチャートである。
【図４】従来の通信システムの構成図である。
【符号の説明】
【００３７】
１０  マスタモジュール
３０  Ｉ／Ｏバス
４０  終端部
５０ａ、５０ｂ、５０ｃ  スレーブモジュール
５２ａ、５２ｂ、５２ｃ  プリレスポンス出力部
５３ａ、５３ｂ、５３ｃ  プリレスポンス検出部
【図１】
2008005191.tif 000003
【図２】
2008005191.tif 000004
【図３】
2008005191.tif 000005
【図４】
2008005191.tif 000006