(57)【特許請求の範囲】
【請求項１】
演算部と、パケットをネットワークに送信する送信部とネットワークからのパケットを受信する受信部とからなる通信部が少なくとも２つと、前記演算部と前記通信部間に設けられ通信経路の制御を行う冗長化通信制御部とを備え、ネットワークを介して１つ又は複数の制御対象を制御する情報処理装置において、
前記演算部は、前記制御対象への指令値を前記冗長化通信制御部へと送信し、前記制御対象への通信結果を前記冗長化通信制御部から受信し、
前記通信部は、前記冗長化通信制御部から受信した通信内容を、前記ネットワークを介して、前記制御対象に送信し、前記制御対象から受信した結果を前記冗長化通信制御部に送信し、
前記冗長化通信制御部は、前記ネットワークの経路の状態を判定する通信経路状態判定部と、前記演算部と少なくとも２つの前記通信部間の接続を切り替える冗長経路切替部とを備え、
前記１つ又は複数の制御対象と前記通信部とを接続する前記ネットワークは論理的なリングトポロジを有し、前記冗長経路切替部は、前記通信経路状態判定部による前記通信経路の状態判定に基づいて、前記通信部同士の接続経路及び前記通信部と前記演算部との通信経路を互いに異なる論理的なリングトポロジの通信経路に切り替え,
前記通信経路状態判定部は、前記ネットワークの通信経路の異常を判定する通信経路異常判定部と、前記ネットワークの通信経路の正常を判定する通信経路正常判定部とを有し、
前記通信部は、パケットを前記ネットワークに送信する送信部と、パケットを前記ネットワークから受信する受信部とを有し、
前記冗長経路切替部は、前記通信経路正常判定部が通信経路を正常と判定している場合は、前記演算部と一方の前記通信部とを接続すると共に、他方の前記通信部の受信部と送信部とを接続して論理的なリングトポロジの通信経路を構成し、前記通信経路異常判定部が通信経路を異常と判定している場合は、前記演算部を一方の前記通信部の送信部と接続すると共に他方の前記通信部の受信部と接続し、前記一方の通信部の受信部と前記他方の通信部の送信部とを接続して論理的なリングトポロジの通信経路を構成することを特徴とする情報処理装置。
【請求項２】
請求項１記載の情報処理装置において、前記制御対象は、前記情報処理装置の通信部との通信経路又は他の制御対象との通信経路に異常が発生した場合、前記パケットの転送先を変更するループバック機能部を備えたことを特徴とする情報処理装置。
【請求項３】
請求項１又は２記載の情報処理装置において、前記ネットワークはＥｔｈｅｒＣＡＴであることを特徴とする情報処理装置。
【請求項４】
請求項１乃至３のいずれか１項記載の情報処理装置において、前記通信経路異常判定部は、前記演算部と接続されている前記通信部からパケットを送信後に、前記パケットを送信した前記通信部のもう一方の前記通信部の前記受信部から通信内容を受信する前に、前記パケットを送信した前記通信部の前記受信部で受信した場合に、通信経路を異常と判定することを特徴とする情報処理装置。
【請求項５】
請求項１乃至４のいずれか１項記載の情報処理装置において、前記通信経路正常判定部は、前記演算部と接続されている前記通信部からパケットを送信後に、かつ、前記パケットを送信した前記通信部のもう一方の前記通信部の前記受信部から通信内容を受信してから、前記パケットを送信した前記通信部の前記受信部で受信した場合に、通信経路を正常と判定することを特徴とする情報処理装置。
【請求項６】
請求項１乃至３のいずれか１項記載の情報処理装置において、
前記ネットワークに接続される前記制御対象の数が既知である場合に、前記通信経路異常判定部は、全ての前記制御対象が受信した場合に所定の数を足す通信内容をパケットに付与し、パケットを受信時に前記制御対象の数と、パケットに付与された通信内容の数に基づいて求められる前記制御対象の数が不一致の場合、通信経路異常と判定することを特徴とする情報処理装置。
【請求項７】
請求項６記載の情報処理装置において、前記ネットワークに接続される前記制御対象の数が既知である場合に、前記通信経路正常判定部は、全ての前記制御対象が受信した場合に所定の数を足す通信内容をパケットに付与し、パケットを受信時に前記制御対象の数と、パケットに付与された通信内容の数に基づいて求められる前記制御対象の数が一致した場合に、通信経路を正常と判定することを特徴とする情報処理装置。
【請求項８】
請求項１乃至７のいずれか１項記載の情報処理装置において、前記冗長化通信制御部は通信を継続可能な条件を有し、継続可能な場合には通信を継続し、継続が不可である場合には前記制御対象を停止させることを特徴とする情報処理装置。
【請求項９】
請求項８記載の情報処理装置において、前記通信を継続可能な条件は、通信可能な前記制御対象の最低数、または通信不可な前記制御対象の最大数、または通信不可となっても通信を継続する前記制御対象の識別子であることを特徴とする情報処理装置。
【請求項１０】
請求項１乃至９のいずれか１項記載の情報処理装置において、前記冗長化通信制御部は、通信経路異常が少なくとも２箇所発生している場合に、通信経路異常の発生箇所を判定して前記制御対象の識別子を変換する識別子変換部を有することを特徴とする情報処理装置。
【請求項１１】
請求項１０記載の情報処理装置において、前記識別子はオートインクリメントアドレスであることを特徴とする情報処理装置。
【請求項１２】
情報処理装置と複数の制御対象とをネットワークを介して接続してなる制御用ネットワークシステムにおいて、
前記ネットワークは、パケットの通信経路が論理的なリングトポロジを有し、前記情報処理装置は、請求項１乃至１１のいずれか１項記載の情報処理装置であること特徴とする制御用ネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
リアルタイム通信用冗長化方式のネットワークに用いられる情報処理用ハードウェア及び情報処理用ソフトウェアを含む情報処理装置、及びその情報処理装置と制御対象と含む制御用ネットワークシステムに関する。
【背景技術】
【０００２】
単一の制御用計算機がネットワークを介して単一または複数の制御対象を制御する構成の制御システムがある。制御システムの一例として、単一の制御用計算機と複数の制御対象がリングトポロジで接続された制御用ネットワークシステムがある。この制御用ネットワークシステムでは、制御用計算機から送信された制御パケットは、複数の制御対象に順番に伝送される。制御パケットは複数の制御対象への制御指令を連結して構成される場合もある。ネットワークトポロジは、論理的なリングトポロジであればよい仕様もある。この場合、スタートポロジやバストポロジであっても、制御パケットが順番に制御対象を伝送していけばよい。このようなリングトポロジで構成する制御システムには、ＥｔｈｅｒＣＡＴ（登録商標）やＳＥＲＣＯＳ（登録商標）等がある。
【０００３】
制御用計算機から制御対象に対してされる制御処理は、一般的に所定の周期で所定の処理が繰り返される。この周期は制御処理に課せられた時間的制約となり、この時間的制約が制御システムに要求される性能や制御方式に起因して導かれる。したがって、制御用計算機と制御対象間の通信には、この時間的制約を満足する必要がある。一方、制御対象の診断や監視を目的とした統計情報等の取得においては時間的制約がないか、あるいは制約が緩い。
【０００４】
リアルタイムＥｔｈｅｒｎｅｔ（登録商標）であるＥｔｈｅｒＣＡＴ（ＩＥＣ６１７８４パート２のＣｏｍｍｕｎｉｃａｔｉｏｎ  Ｐｒｏｆｉｌｅ  Ｆａｍｉｌｙ  １２）では、制御用計算機であるマスタと制御対象に備え付けられるスレーブデバイス（以下、単に「スレーブ」と称する）でリングトポロジを構成する。一般に、スレーブは２つのＥｔｈｅｒｎｅｔポートを有し、スレーブのＥｔｈｅｒｎｅｔポートを逐次接続していくことでリングトポロジを構成する。ただし、マスタは、Ｅｔｈｅｒｎｅｔポートが１つであっても構わない。Ｅｔｈｅｒｎｅｔポートが１つのマスタを用いた制御用ネットワークシステムでは、リングネットワーク上の終端のスレーブが内部でパケットを折り返すことで、最終的にマスタの１つのＥｔｈｅｒｎｅｔポートにパケットを戻す。したがって、例えば、物理的（見た目）にはライントポロジを構成する場合であっても、パケットの通信経路に着目すれば、論理的なリングトポロジになっている。
【０００５】
このような制御システムは時間的制約に関わる要求がある一方で、制御処理を高信頼に実行するために追加の処置がなされることがある。特に、通信経路の異常発生時に制御処理が正しく実行されないことで多大な被害を及ぼす場合は、このような処置がなされる。単一の制御用計算機と複数の制御対象でリングトポロジを構成する場合は、そのような高信頼化の方法として通信経路の冗長化等の方法がある。
【０００６】
ＥｔｈｅｒＣＡＴにおけるマスタでは、マスタにＥｔｈｅｒｎｅｔの通信ポートを２つ持たせることで、リングトポロジへの接続を冗長化させる方式がとられる。物理的にＥｔｈｅｒＣＡＴマスタに２つの通信ポートを持たせた場合、冗長化の方法として２つの通信ポートの両方から同一のパケットを送信する方法が考えられる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−９６４６０号公報
【特許文献２】特開２００３−６０６６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の汎用的な方法でＥｔｈｅｒＣＡＴマスタを冗長化させた場合、主に以下の３つの問題が生じる。
【０００９】
第一に、ＥｔｈｅｒＣＡＴのリングネットワークが切断された状態では、ＥｔｈｅｒＣＡＴの時刻同期機能が十分な性能で機能しない問題がある。ここで、ＥｔｈｅｒＣＡＴの時刻同期機能の概略を説明する。ＥｔｈｅｒＣＡＴの時刻同期機能は、スレーブ間の通信遅延計測、各スレーブの時計のオフセット補償、各スレーブが有する時計の進み具合のドリフト補償という３段階で構成されている。このうち、各スレーブ間の通信遅延計測は、図１４に示すアルゴリズムを基本としている。図１４は、ＥｔｈｅｒＣＡＴスレーブＡ，Ｂ，Ｃの各スレーブＩＣ１５１において、パケットの通信経路と各スレーブの各ポートでの受信時刻を示している。図１４のＴａ，Ｔｂ，Ｔｃ，Ｔｄ，Ｔｅは、あるパケットの各ポートにおける受信時刻で、ｔｄｉｆｆはスレーブ間の通信遅延である。ｔｐは、ＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ１６０の処理時間である。ここで、スレーブＡに着目すれば、Ｔａ，Ｔｅは同じスレーブＩＣ１５１ａ上のクロックで計測しているが、スレーブＩＣ１５１ｂとは、クロックのオフセットやドリフトが異なるため、Ｔｂ，Ｔｄとそのまま比較することはできない。ここで、図１４のＴａ〜Ｔｅが計測可能で、ｔｐが既知であるとする。スレーブＣとスレーブＢ間の通信遅延ｔｄｉｆｆＢＣは、
ｔｄｉｆｆＢＣ  ＝（Ｔｄ−Ｔｂ）÷２
ただし、（Ｔｃ−Ｔｂ）と（Ｔｄ−Ｔｃ）は等しいとする。なお、ＥｔｈｅｒＣＡＴスレーブのプロセッサユニットは同種のものを利用していると仮定している。もし、プロセッサユニットが異なる場合は、ｔｐの違いを考慮する必要がある。
また、スレーブＢとスレーブＡ間の通信遅延ｔｄｉｆｆＡＢは、次式で求められる。
ｔｄｉｆｆＡＢ  ＝（（Ｔｅ−Ｔａ）−（Ｔｄ−Ｔｂ）−ｔｐ）÷２＋ｔｐ
ｔｄｉｆｆＢＡ  ＝ｔｄｉｆｆＡＢ−ｔｐ
なお、時刻同期機能に対応していないＥｔｈｅｒＣＡＴスレーブは単なる通信経路と見なされる。言い換えれば、固定の通信遅延でパケットを転送する必要がある。
【００１０】
このように時刻同期機能を実現する場合には、時刻同期用のパケットをリングネットワークで周回させる必要がある。言い換えると、あるスレーブにおいて往路と復路におけるパケットの受信時刻をもとに通信遅延を計算する。
【００１１】
ＥｔｈｅｒＣＡＴマスタにおいて、２つの通信ポートのそれぞれから時刻同期用のパケットを送信した場合、それぞれのパケットはリングネットワークを周回せず、送信した通信ポートとは別のもう一方の通信ポートで受信することとなる。したがって、時刻同期のための通信遅延の計算等ができない。
【００１２】
（ソフトウェアによる冗長化処理）
これとは別の冗長化の方法で、片方の通信ポートからのみパケットを送信し、パケットを送信するポートから最も遠いスレーブ（つまり、もう片方のポートと隣接するスレーブ）の内部でパケットを折り返すように設定する方法も考えられる。この場合、ネットワークの異常時には、片方の通信ポートから送信したパケットを同じ通信ポートで受信し、ＥｔｈｅｒＣＡＴマスタのソフトウェアを介して、もう片方の通信ポートからパケットを送信する。
【００１３】
しかしながら、このソフトウェア処理は、ＥｔｈｅｒＣＡＴスレーブのパケット転送処理に比較して長い遅延とジッタを生じる。時刻同期機能において、時刻同期機能に対応していないＥｔｈｅｒＣＡＴスレーブでは固定の通信遅延でパケットを転送する必要があるため、ネットワーク正常時の時刻同期機能と比較して、同期精度が低下する。
【００１４】
第二の問題としては、マスタから送信するコマンドの整合性を維持できない場合がある。特に、論理アドレスに対するコマンドとオートインクリメントアドレスに対するコマンドについて整合性を維持できない場合がある。
【００１５】
（論理アドレスに対するコマンドの整合性）
まず、論理アドレスに対するコマンドの問題について説明する。ＥｔｈｅｒＣＡＴの機能では、各スレーブの持つ任意のアドレス空間を、単一の仮想アドレス空間にマッピングすることができる。この仮想アドレスのことを論理アドレスと称する。
【００１６】
ＥｔｈｅｒＣＡＴマスタの通常の冗長化構成では、ネットワークに異常があった場合、２つの通信ポートのそれぞれからコマンドを含むパケットを送信する方法が考えられる。ステーションアドレス（個別のスレーブを指定するアドレス方法）など、各ＥｔｈｅｒＣＡＴスレーブに対するアドレスへのコマンドは、そのスレーブが２つの通信ポートのどちらに接続しているかを判定し、パケットを送ればよい。
【００１７】
しかしながら、論理アドレスに対するコマンドの場合、単独のコマンドで読み書きするアドレスが、異常によって分断されたネットワークのそれぞれのスレーブにマッピングされている場合がある。この場合、ＥｔｈｅｒＣＡＴマスタは論理アドレスの対応表を管理し、整合性をとりながら論理アドレスに対するコマンドの結果を結合させる必要がある。これは、ソフトウェアの開発を複雑化させる。
【００１８】
（オートインクリメントアドレスに対するコマンドの整合性）
また、オートインクリメントアドレスに対するコマンドにおいても問題が生じる。ＥｔｈｅｒＣＡＴのオートインクリメントアドレスは、パケットが到着する順番におけるＥｔｈｅｒＣＡＴスレーブのアドレッシングである。各スレーブは、オートインクリメントアドレスをアドレス指定とするパケットを受信した場合、そのアドレスが０と等しいかどうかを判定し、アドレスの値をインクリメントして、次のスレーブに転送する。図１２は、オートインクリメントアドレスで各スレーブを指定する場合を示す図である。図１２に示すように、制御用計算機１２０にネットワーク１２２を介して複数のスレーブ１２１が接続された制御用ネットワークシステムにおいて、例えば、４番目のスレーブ（ｎ＝４）に対して通信する場合はオートインクリメントアドレスを−３とする。
【００１９】
ネットワーク１２２に異常が起きた場合は、パケットの処理される順番が変化するため、開発者が意図したＥｔｈｅｒＣＡＴスレーブとは異なるスレーブで処理されるという問題が生じる。図１３は、ネットワーク１２２に異常が生じたときの各スレーブ１２１ａ〜１２１ｅのオートインクリメントアドレスを示す図である。図１３に示す構成では、制御用計算機１２０内の２つの通信ポートから同時にパケットを送信している。ｎ＝３のスレーブとｎ＝４のスレーブ間の経路異常によってネットワーク１２２が分断されているため、本来、４番目、５番目であるスレーブのオートインクリメントアドレスが変わっている。
【００２０】
第三の問題として、通信ポートを２ポート備えて冗長化した場合、２ポートを考慮してソフトウェアを開発しなければならない。異常時のコマンドの結合や時刻同期の実現など、従来の1ポートにおけるソフトウェア開発と比較して、より複雑化する。
【００２１】
以上をまとめると、汎用的なＥｔｈｅｒＣＡＴマスタの冗長化構成を有する従来の情報処理装置及びそれを用いた制御用ネットワークシステムでは、時刻同期の同期精度の低下、ＥｔｈｅｒＣＡＴコマンドの整合性の維持、２ポート構成によるソフトウェア開発の複雑化という課題がある。
【００２２】
本発明の目的は、上記課題を解決すべく、時刻同期の精度向上、ＥｔｈｅｒＣＡＴコマンドの整合性を維持し、２ポート構成によるソフトウェア開発を容易に行うことができるネットワークを構成する情報処理装置及びそれを用いた制御用ネットワークシステムを提供することにある。
【課題を解決するための手段】
【００２３】
上記目的を達成すべく本発明に係る情報処理装置は、演算部と、パケットをネットワークに送信する送信部とネットワークからのパケットを受信する受信部とからなる通信部が少なくとも２つと、前記演算部と前記通信部間に設けられ通信経路の制御を行う冗長化通信制御部とを備え、ネットワークを介して１つ又は複数の制御対象を制御する情報処理装置において、
前記演算部は、前記制御対象への指令値を前記冗長化通信制御部へと送信し、前記制御対象への通信結果を前記冗長化通信制御部から受信し、
前記通信部は、前記冗長化通信制御部から受信した通信内容を、前記ネットワークを介して、前記制御対象に送信し、前記制御対象から受信した結果を前記冗長化通信制御部に送信し、
前記冗長化通信制御部は、前記ネットワークの経路の状態を判定する通信経路状態判定部と、前記演算部と少なくとも２つの前記通信部間の接続を切り替える冗長経路切替部とを備え、
前記１つ又は複数の制御対象と前記通信部とを接続する前記ネットワークは論理的なリングトポロジを有し、前記冗長経路切替部は、前記通信経路状態判定部による前記通信経路の状態判定に基づいて、前記通信部同士の接続経路及び前記通信部と前記演算部との通信経路を互いに異なる論理的なリングトポロジの通信経路に切り替えることを特徴とする。
【００２４】
特に、前記通信部は、パケットを前記ネットワークに送信する送信部と、パケットを前記ネットワークから受信する受信部とを有し、前記冗長経路切替部は、前記通信経路正常判定部が通信経路を正常と判定している場合は、前記演算部と前記通信部の一方と接続すると共に、他方の前記通信部の受信部と送信部を接続して前記論理的なリングトポロジを構成し、前記通信経路異常判定部が通信経路を異常と判定している場合は、前記演算部の前記送信部と前記通信部の一方の前記送信部と接続すると共に、前記受信部と他方の前記通信部の送信部と接続し、前記受信部と前記演算部の受信部と接続して前記論理的なリングトポロジを構成するものであるのが好ましい。
【発明の効果】
【００２５】
本発明によれば、時刻同期の精度を向上させ、ＥｔｈｅｒＣＡＴコマンドの整合性を維持し、２ポート構成によるソフトウェア開発を容易に行うことができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の第一の実施形態の制御用ネットワークシステムの構成を示す概略図である。
【図２】図１の制御用計算機のハードウェア構成を示すブロック図である。
【図３】図２の冗長化通信制御部の機能構成を示すブロック図である。
【図４】ＥｔｈｅｒＣＡＴスレーブのハードウェア構成を示すブロック図である。
【図５】ＥｔｈｅｒＣＡＴのスレーブＩＣの機能構成を示すブロック図である。
【図６】図３の冗長化通信制御部の動作手順を示すフローチャートである。
【図７】ＥｔｈｅｒＣＡＴフレームのフォーマットを示す図である。
【図８】正常モード時の冗長経路切替部の内部の通信経路を示す図である。
【図９】異常モード時の冗長経路切替部の内部の通信経路を示す図である。
【図１０】通信経路正常時のパケット通信経路を示す図である。
【図１１】通信経路異常時のパケットの通信経路を示す図である。
【図１２】ネットワークの状態とオートインクリメントアドレスを示した図である。
【図１３】ネットワークの状態とオートインクリメントアドレスを示した図である。
【図１４】時刻同期における通信遅延の計測方法を説明するための図である。
【図１５】ネットワークの状態とオートインクリメントアドレスを示した図である。
【図１６】ネットワークの状態とオートインクリメントアドレスを示した図である。
【図１７】本発明の第二の実施形態の冗長化通信制御部の機能構成を示すブロック図である。
【図１８】第二の実施形態の制御用計算機のハードウェア構成を示すブロック図である。
【図１９】図１８の制御用計算機を用いた制御用ネットワークシステムの構成を示す概略図である。
【図２０】図１７の冗長化通信制御部の通信部の機能的な対応付けを説明するための図である。
【図２１】第二の実施形態において機能部の正常モード時の通信経路の一例を示す図である。
【図２２】第二の実施形態において機能部の異常モード時の通信経路の一例を示す図である。
【図２３】第二の実施形態において機能部の異常モード時の通信経路の一例を示す図である。
【図２４】第二の実施形態において機能部の異常モード時の通信経路の一例を示す図である。
【図２５】第二の実施形態において機能部の正常モード時の通信経路の一例を示す図である。
【図２６】冗長経路切替部の接続状態の状態遷移を示す図である。
【図２７】冗長経路切替部の実行手順を示す図である。
【図２８】本発明の第三の実施形態の冗長化通信制御部の機能構成を示すブロック図である。
【図２９】第三の実施形態におけるネットワークの状態を示す図である。
【発明を実施するための形態】
【００２７】
以下、本発明の好適な実施形態を添付図面に基づいて説明する。
【００２８】
図１は、本実施形態の情報処理装置を備えた制御用ネットワークシステムの構成を示す概略図である。図１に示すように、本実施形態の情報処理装置は、制御用ネットワーク１２２を介して接続された制御対象（スレーブ）１２１を制御する制御用計算機（マスタ）１２０として用いられる。
【００２９】
制御用計算機１２０は、制御用ネットワーク１２２と接続するための２つのＥｔｈｅｒｎｅｔ通信ポートを有し、制御用ネットワーク１２２を介して複数の制御対象１２１に接続される。制御対象１２１としては、サーボアンプとサーボモータによる構成が挙げられる。制御用ネットワーク１２２は、Ｅｔｈｅｒｎｅｔ（登録商標）である。なお、図１ではネットワークはリングトポロジとなっているが、論理的なリングトポロジであれば、ハードウェアの構成上、スタートポロジやライントポロジ等であってもよく、他に、これらのトポロジを組み合わせた複合型トポロジであってもよい。
【００３０】
図２は、制御用計算機１２０のハードウェア構成を示すブロック図である。図２に示すように、制御用計算機１２０は、バス１１０を介して互いに接続されるＣＰＵ１０１、メモリ１０８、不揮発性記憶媒体１０９及び冗長化通信制御部１０２と、冗長化通信制御部１０２に接続される物理層デバイス（ＰＨＹ）１０３とを備える。
【００３１】
演算部を構成するＣＰＵ１０１は、不揮発性記憶媒体１０９から実行処理プログラムをメモリ１０８に転送して実行する。実行処理プログラムとしては、オペレーティングシステム（以下、「ＯＳ」と称する）やＯＳ上で動作するアプリケーションプログラムがある。
【００３２】
冗長化通信制御部１０２は、ＣＰＵ１０１上で動作するプログラムから通信要求を受け取り、ＰＨＹ１０３を用いて制御用ネットワーク１２２に対して通信する。冗長化通信制御部１０２の実装例としては、ＦＰＧＡ、ＣＰＬＤ、ＡＳＩＣ、ゲートアレイ等のＩＣがある。
【００３３】
ＰＨＹ１０３は、制御用ネットワーク１２２との通信機能を実装した送受信機ＩＣである。ＰＨＹ１０３の提供する通信規格としてＥｔｈｅｒｎｅｔのＰＨＹ（物理層）チップがある。図２の構成では、ＰＨＹ１０３と冗長化通信制御部１０２が接続しているので、ＥｔｈｅｒｎｅｔのＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）層の処理は冗長化通信制御部１０２に含まれる。ただし、ＭＡＣ機能を提供するＩＣを冗長化通信制御部１０２とＰＨＹ１０３間に配置する構成や、ＭＡＣ機能を提供するＩＣとＰＨＹ１０３を組み合わせた通信用ＩＣと冗長化通信制御部１０２を接続する構成としてもよい。
【００３４】
バス１０４は、ＥｔｈｅｒｎｅｔのＭＡＣ層とＰＨＹ層を接続する通信規格のものであり、ＭＩＩ（Ｍｅｄｉａ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｉｎｔｅｒｆａｃｅ）、ＧＭＩＩ（Ｇｉｇａｂｉｔ  ＭＩＩ）、ＲＭＩＩ（Ｒｅｄｕｃｅｄ  ＭＩＩ）等が例示される。
【００３５】
メモリ１０８は、ＣＰＵ１０１が実行するプログラムを一時的に記憶する記憶媒体であり、不揮発性記憶媒体１０９から転送されたＯＳ、アプリケーションプログラム等を一時的に格納する。不揮発性記憶媒体１０９は、情報の記憶媒体で、ＣＰＵ１０１を動作させるためのプログラムの保存、プログラムの実行結果の保存を行う。
【００３６】
バス１１０は、ＣＰＵ１０１、メモリ１０８、不揮発性記憶媒体１０９、冗長化通信制御部１０２をそれぞれ接続する。バス１１０としては、ＰＣＩバス、ＩＳＡバス、ＰＣＩ  Ｅｘｐｒｅｓｓバス、システムバス、メモリバス等がある。
【００３７】
（冗長化通信制御部の構成）
図３は、冗長化通信制御部１０２の機能構成を示すブロック図である。図３に示すように、冗長化通信制御部１０２は、制御用ネットワーク１２２と接続される２つの通信部１３５ａ，１３５ｂと、バス１１０と接続されるバス接続部１３０と、通信経路の状態を判定する通信経路状態判定部１３２と、通信経路状態判定部１３２の判定結果に基づいて通信部１３５ａ，１３５ｂと演算部側に接続されるバス接続部１３０との間の通信経路を切り替える冗長経路切替部１３１とを備える。
【００３８】
バス接続部１３０は、バス１１０の通信仕様に応じてＣＰＵ１０１やメモリ１０８と通信する。バス接続部１３０は、冗長化通信制御部１０２内においては動作管理部１３８及び冗長経路切替部１３１と接続され、冗長経路切替部１３１とはパケットを送受信し、動作管理部１３８とは冗長化通信制御部１０２の制御情報、状態情報を通信する。
【００３９】
冗長経路切替部１３１は、パケットの通信経路を切り替えることのできる機能部であり、パケットの通信経路としてパケット生成部１３９、パケットフィルタ部１４０、通信部１３５と接続されている。また、冗長経路切替部１３１は、冗長経路切替部１３１内部の通信経路を切り替え、状態情報を取得するための動作管理部１３８と接続されている。
【００４０】
図８及び図９は、冗長経路切替部１３１内部の通信経路を示す図である。冗長経路切替部１３１は、動作管理部１３８からの指令によって、図８及び図９に示す通信経路の接続形態をとる。受信ラインＲｘ１８０はパケットフィルタ部１４０、送信ラインＴｘ１８１はパケット生成部１３９と接続している。ＣＰＵ１０１上で動作するアプリケーションから送信されるパケットデータは送信ラインＴｘ１８１を介して、冗長経路切替部１３１に送信される。一方、ネットワークから冗長経路切替部１３１が受信したパケットデータは受信ラインＲｘ１８０を介して、ＣＰＵ１０１上で動作するアプリケーションやメモリ１０８に転送される。受信ラインＲｘ１８４は、通信部１３５aの受信部１３７aと接続され、送信ラインＴｘ１８５は、通信部１３５aの送信部１３６aと接続されている。受信ラインＲｘ１８２は、通信部１３５ｂの受信部１３７ｂと接続され、送信ラインＴｘ１８３は、通信部１３５ｂの送信部１３６ｂと接続されている。
【００４１】
通信部１３５ａ，１３５ｂは、制御用ネットワーク１２２に接続され、制御用ネットワーク１２２の通信プロトコルに従って通信をする。図２の構成では、ＰＨＹ１０３が冗長化通信制御部１０２外にあるため、通信部１３５はＭＡＣ層の処理部に該当する。ただし、冗長化通信制御部１０２をＭＡＣ層、ＰＨＹ層を含めたＥｔｈｅｒｎｅｔ通信デバイスと接続する場合はＭＡＣ層との接続インターフェース部となり、また、ＰＨＹ機能まで含めて冗長化通信制御部１０２に包含してもよい。通信部１３５ａは、パケット生成部１３９から伝送されたパケットを送信する通信ポートであり、通信部１３５ｂは、リングネットワークを構成する終端のスレーブからのパケットを受信して、折り返す通信ポートである。説明の便宜上、通信部１３５ａと通信部１３５ｂを区別しているが、２つのＰＨＹ１０３のどちらから優先的にパケットを送信するかにおいて制約はない。
【００４２】
送信部１３６は、通信部１３５における送信機能部であり、制御用計算機１２０から制御用ネットワーク１２２に対してパケットを送信する。受信部１３７は、通信部１３５における受信機能部であり、制御用ネットワーク１２２から送信されたパケットを受信する。
【００４３】
動作管理部１３８は、冗長化通信制御部１０２の動作の制御や、状態をバス１１０に提示し、冗長経路切替部１３１の機能を制御するための機能部である。具体例としては、機能レジスタが挙げられる。ＣＰＵ１０１上で動作するプログラムはバス１１０を介して動作管理部１３８の機能レジスタにアクセスすることにより、冗長化通信制御部１０２の動作の制御、状態の取得を実行する。動作管理部１３８で設定可能な項目として、パケットを送信する通信部１３５ａ，１３５ｂの選択、システムの想定するスレーブ数、通信経路の状態判定基準、冗長経路切替部１３１の経路切替等が挙げられる。また、取得可能な情報として、制御用ネットワーク１２２に接続しているスレーブ数、異常の有無が発生していると考えられる通信経路の場所に関する情報等がある。
【００４４】
通信経路状態判定部１３２は、制御用ネットワーク１２２が途中で切断されている等の異常を判定する通信経路異常判定部１３３と、制御用ネットワーク１２２が正常に通信しているか等を判定する通信経路正常判定部１３４とを備え、通信経路異常判定部１３３及び通信経路正常判定部１３４での判定結果を動作管理部１３８に通知する。通信経路状態判定部１３２は、通信経路の状態を判定するために、受信部１３７ａ，１３７ｂからの受信経路に接続され、パケットを監視する。
【００４５】
パケット生成部１３９は、通信経路状態判定部１３２の要求に応じて、バス接続部１３０から送信されるパケット内容の変更や、新規パケットの送信をする。通信経路状態判定部１３２からは、通信経路の状態を判定するためにこれらの要求がなされる。ただし、送信するパケットを修正又は追加しない場合は、バス接続部１３０から受信したデータをそのまま送信する。なお、バス接続部１３０から直接パケットを冗長経路切替部１３１へ送信する場合は、バス接続部１３０とパケット生成部１３９の送信データ信号のどちらかを選択的に冗長経路切替部１３１へ送信する構成としてもよい。
【００４６】
パケットフィルタ部１４０は、予め指定された条件に一致するＥｔｈｅｒＣＡＴテレグラムを通信経路状態判定部１３２へ通知する。通信経路状態判定部１３２は、パケットフィルタ部１４０から受信した内容を元に通信経路の状態を判定する。
【００４７】
図４は、制御対象１２１のハードウェア構成を示すブロック図である。図４に示すように、制御対象１２１は、通信機能を実現するための通信用ハードウェアを備える。通信用ハードウェア１５０は、ＣＰＵ１０１と、スレーブＩＣ１５１と、不揮発性記憶媒体１０９と、２つのＰＨＹ１０３とを備える。図示はしないが、実際の構成では、ＣＰＵ１０１には周辺デバイスが接続され、センサやアクチュエータを制御する。スレーブＩＣ１５１は、ＩＥＣ６１１５８、ＩＥＣ６１７８４パート２のＣｏｍｍｕｎｉｃａｔｉｏｎ  Ｐｒｏｆｉｌｅ  Ｆａｍｉｌｙ  １２で定義されるＥｔｈｅｒＣＡＴ仕様に準拠したスレーブ専用のＩＣである。
【００４８】
（スレーブＩＣ１５１の構成）
図５は、スレーブＩＣ１５１の機能構成を示すブロック図である。図５に示すように、スレーブＩＣ１５１は、ＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  ＵＮＩＴ（以下「ＥＰＵ」と略する）１６０と、複数の通信ポート（図５では４つ：通信ポート０〜３）とを備える。各通信ポート毎に、ループバック機能部１６２と自動転送部１６１とが設けられ、複数のループバック機能部１６２とＥＰＵ１６０は周回的に接続されている。
【００４９】
ＥＰＵ１６０は、ＥｔｈｅｒＣＡＴ仕様に準拠して、通信処理を実行するＩＣである。ＥＰＵ１６０は、バス１６３を介して制御用ネットワーク１２２に接続され、ＣＰＵ１０１へのＥｔｈｅｒＣＡＴに関する情報を通知し、ＣＰＵ１０１はＥＰＵ１６０の設定を行う。各通信ポートは、ＥｔｈｅｒＣＡＴで定義される物理仕様（例えば、Ｅｔｈｅｒｎｅｔ、あるいはＥＢＵＳ等）で隣接するスレーブと接続される。
【００５０】
自動転送部１６１は、受信したパケットをループバック機能部１６２へ転送する。ループバック機能部１６２は、ＥＰＵ１６０からの設定及びループバック機能部１６２が接続する通信経路の接続状態によって、通信ポートへパケットを送信するか、隣接するループバック機能部１６２へパケットを転送する。パケットの転送方向は、互いに接続されたループバック機能部１６２を一方向に周回する方向であり、例えば、通信ポート０→通信ポート３→通信ポート１→通信ポート２→通信ポート０の順である。
【００５１】
ループバック機能部１６２は、制御用計算機１２０から送信される通信内容に基づいてＥＰＵ１６０によって設定される。その設定内容の例としては、常に通信ポートへパケットを送信するＯｐｅｎモード、常に隣接するループバック機能部１６２へパケットを転送するＣｌｏｓｅモード、接続している通信ポートの設定状態によってパケットの送信経路を切り替えるＡｕｔｏモード、接続している通信ポートの設定状態によってパケットの送信経路を切り替えるが、通信経路を再度確立する場合は明示的にＥｔｈｅｒＣＡＴマスタから指定する必要のあるＡｕｔｏ  Ｃｌｏｓｅモードがある。
【００５２】
Ａｕｔｏモードでは、通信ポートを介して隣接する制御用計算機１２０又は制御対象１２１と通信が確立している場合は、ループバック機能部１６２は通信ポートへパケットを送信する。他方、制御用計算機１２０又は制御対象１２１との通信経路が形成されていないか、通信経路中に異常又は故障があり、隣接する制御用計算機１２０又は制御用対象１２１との通信が確立していない場合は、ループバック機能部１６２は隣接するループバック機能部１６２へパケットを転送する。
【００５３】
（ＥｔｈｅｒＣＡＴフレームとワーキングカウンタ（ＷＫＣ）の説明）
図７は、ＥｔｈｅｒＣＡＴのパケット（フレーム）構成を示す図である。図７に示すように、ＥｔｈｅｒＣＡＴフレーム１７０は、Ｅｔｈｅｒｎｅｔヘッダ１７１と、ＥｔｈｅｒＣＡＴの通信内容を格納するデータ領域１７２と、データ領域１７２内のデータが正しいかどうかを検査するためのフレームチェックシーケンス（ＦＣＳ：Ｆｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ）１７３とで構成される。ＥｔｈｅｒＣＡＴにおける、Ｅｔｈｅｒｎｅｔヘッダ１７１のＴｙｐｅフィールドは０ｘ８８Ａ４である。
【００５４】
ＥｔｈｅｒＣＡＴのデータ領域１７２は、ＥｔｈｅｒＣＡＴヘッダ１７４と、１つ又は複数のＥｔｈｅｒＣＡＴテレグラム１７５とで構成される。ＥｔｈｅｒＣＡＴテレグラム１７５は、テレグラムヘッダ１７６と、テレグラムデータ１７７と、ワーキングカウンタ１７８（ＷＫＣ）とで構成される。ワーキングカウンタ１７８は、そのテレグラムを処理すべきスレーブで正しく処理されるたびに、スレーブによって所定の数だけカウントアップされるフィールドである。
【００５５】
（動的シーケンス）
制御用計算機１２０の冗長化通信制御部１０２による動作手順について説明する。図６は、冗長化通信制御部１０２の動作手順を示すフローチャートである。
【００５６】
図６に示すように、まず、冗長経路切替部１３１の内部状態を図８に示す正常モードに設定する（ステップＳ００１）。ここで、正常モードとは、制御用ネットワーク１２２に経路異常がなく、図８に示すように、一方の通信ポートの送信ラインＴｘ１８５と受信ラインＲｘ１８４が共にＣＰＵ側の送信ラインＴｘ１８１及び受信ラインＲｘ１８０にパケットを送受信するように設定され、他方の通信ポートの送信ラインＴｘ１８３と受信ラインＲｘ１８２が冗長経路切替部１３１内で互いに接続されて制御対象１２１側へパケットを折り返す接続状態としている。
【００５７】
正常モードに設定後、冗長化通信制御部１０２は、環状の制御用ネットワーク１２２に接続されているＥｔｈｅｒＣＡＴスレーブの数を計測する（ステップＳ００２）。スレーブ数を計測する方法として、すべてのスレーブが処理すべきレジスタに対するＢＲＤ（Ｂｒｏａｄｃａｓｔ  Ｒｅａｄ）コマンドを発行し、そのワーキングカウンタを見る方法がある。このコマンドは動作管理部１３８の要求にしたがって発行され、パケット生成部１３９がパケットを生成し、送信する。なお、スレーブの数は、システムを構成する際に予め定義している（本実施形態では５つ）。従って、予定スレーブ数と、上記のＢＲＤコマンドを発行して得られたスレーブ数を比較し、スレーブ数が一致すれば、次のステップＳ００３に進む。もし、スレーブ数が異なれば、すでに通信経路の異常が発生していると考えられるため、各スレーブのリンクロストエラーカウンターや、コマンド発行によるスレーブ数を参考に通信経路異常の原因を追究する。
【００５８】
スレーブ数のカウント後、冗長化通信制御部１０２の動作管理を設定する（ステップＳ００３）。具体的には、動作管理部１３８に対して、通信経路状態の判定方法や使用する通信ポートの選択等の各種事前設定をする。また、全てのスレーブをＡｕｔｏモードにする。これにより、通信経路の異常時には、その通信経路と接続するループバック機能部１６２は、隣接する通信ポートへパケットを転送する。
【００５９】
冗長化通信制御部１０２の設定後、ＥｔｈｅｒＣＡＴの正規の手順に従って、アプリケーションに応じたリアルタイム通信を実行する（ステップＳ００４）。リアルタイム通信中では、通信経路状態判定部１３２は、冗長経路切替部１３１が正常モードで動作しているかを確認する（ステップＳ００５）。正常モードで動作していれば、通信経路異常判定部１３３は、通信経路に異常が発生したかを判定する（ステップＳ００６）。
【００６０】
通信経路の異常判定方法と正常判定方法について説明する。
（異常判定方法その１）
図１０は、正常時の通信経路を示す図であり、図１１は、異常時の通信経路を示す図である。図１０に示すように、通信経路正常時では、冗長経路切替部１３１から送信されるパケットは、例えば、一方の通信部１３５ａ、各制御対象１２１、他方の通信部１３５ｂに転送され、一度冗長経路切替部１３１を経由し、他方の通信部１３５ｂ、各制御対象１２１、一方の通信部１３５ａに転送されて、再度冗長経路切替部１３１に戻る。
【００６１】
しかし、２つの制御対象１２１，１２１間に異常があった場合等の通信経路異常時では、冗長経路切替部１３１から送信されるパケットは、例えば、一方の通信部１３５ａに接続された制御対象１２１のループバック機能部の経路転送機能により、通信部１３５ａへ転送され、冗長経路切替部１３１に戻る。すなわち、通信経路異常時では、冗長経路切替部１３１から送信されたパケットが一度冗長経路切替部１３１を経由することなく、冗長経路切替部１３１へ戻ってくる。
【００６２】
異常判定の第一の方法として、異常判定部は、冗長経路切替部１３１が通信部１３５ｂからパケットを受信する前に、通信部１３５ａからパケットを受信したかどうかをみる。異常判定部は、通信部１３５ｂでパケットを受信せず、通信部１３５ａで受信した場合に、通信経路を異常と判定する。なお、図１１ではパケットの通信方向を示し、ＰＨＹ１０３は省略している。
【００６３】
（異常判定方法その２）
第二の異常判定の方法として、全てのスレーブが処理すべきレジスタに対するＢＲＤコマンドをＥｔｈｅｒＣＡＴフレームに付与し、そのフレームのワーキングカウンタを見る方法がある。ＥｔｈｅｒＣＡＴフレームのワーキングカウンタの値が、事前に取得、確認したスレーブ数よりも小さければ通信経路を異常と判定する。
【００６４】
（通信経路異常時の対応）
図６のフローチャートに戻り、通信経路に異常が発生してないといなければ（ステップＳ００６→Ｎ）、ＥｔｈｅｒＣＡＴ通信をそのまま継続する（ステップＳ００４）。もし、通信経路異常判定部１３３が通信経路に異常があると判定した場合（ステップＳ００６→Ｙ）、動作管理部１３８は、冗長経路切替部１３１の内部状態を異常モードに切り替え、図９に示す内部経路の接続をする（ステップＳ００７）。異常モード時の内部経路は、図９に示すように、一方の通信ポートの受信ラインＲｘ１８２が演算部側の受信ラインＲｘ１８０にパケットを送信し、演算部側の送信ラインＴｘ１８１が他方の通信ポートの送信ラインＴｘ１８５にパケットを送信し、演算部側に接続されない一方の通信ポートの送信ラインＴｘ１８３と他方の通信ポートＲｘ１８４が互いに接続されて制御対象１２１側へパケットを折り返す経路となる。
【００６５】
冗長経路切替部１３１の内部経路を異常モードに切り替えると同時に、バス１１０の通信手段を用いて、ＣＰＵ１０１上で動作するプログラム等に、冗長切替経路１３１の内部経路を切り替えたことを通知する。バス１１０の通信手段には割込み通知等の手段がある。この通知を受けたプログラムでは、通信経路上に異常が生じていることをユーザやオペレータに通知することで、ユーザやオペレータは異常を復旧させるために通信ケーブルの置換等の対策を実施することができる。
【００６６】
（通信経路異常の発生箇所の特定方法）
通信経路異常の発生箇所の特定方法は、全てのスレーブが処理すべきレジスタに対するＢＲＤコマンドのワーキングカウンタの値を利用する。例えば、図１３に示すように、アドレスｎ＝３のスレーブ１２１ｃとアドレスｎ＝４のスレーブ１２１ｄの間で通信経路異常が発生した場合、３番目のスレーブ１２１ｃでパケットを折り返すネットワークを構成することから、アドレスｎ＝１，２，３のスレーブ１２１ａ，１２１ｂ，１２１ｃを経由したＥｔｈｅｒＣＡＴテレグラムのワーキングカウンタは３となり、スレーブ１２１ｃとスレーブ１２１ｄ間の通信経路で異常が起きていると判定する。
【００６７】
或いは、各スレーブの各通信ポートのロストリンクカウンタレジスタを読み、非ゼロの値が取得された通信ポートが接続する通信経路が異常であると判定する。なお、ロストリンクカウンタレジスタは読み込みと同時に、書込みによってレジスタ値をクリアする必要がある。以上の方法によって、通信経路の異常が起きたと判定した場所を動作管理部１３８へと通知し、ＣＰＵ１０１上で動作するプログラム等に提示する。
【００６８】
（正常判定方法その１）
図６のフローチャートに戻り、冗長経路切替部１３１が異常モードで動作していれば（ステップＳ００５→Ｎ）、通信経路正常判定部１３４は、通信経路の異常が復旧したかを判定する（ステップＳ００８）。
【００６９】
正常判定の第一の方法として、通信部１３５ａからパケットを送信した後に通信部１３５ｂでパケットを受信したかどうかをみる。図１０に示すように、通信経路正常判定部１３４は、パケットを通信部１３５ａが受信する前に通信部１３５ｂが受信したことを確認すれば、通信経路を正常と判定する。
【００７０】
（正常判定方法その２）
正常判定の第二の方法として、全てのスレーブが処理すべきレジスタに対するＢＲＤコマンドをＥｔｈｅｒＣＡＴフレームに付与し、そのワーキングカウンタを見る方法がある。最初に受信した通信部１３５でのＥｔｈｅｒＣＡＴフレームのワーキングカウンタの値と、事前に取得、確認したスレーブ数が等しい場合に通信経路を正常と判定する。例えば、通信部１３５ａからパケットを送信した後に、通信部１３５ｂでパケットを受信し、かつ、ＥｔｈｅｒＣＡＴフレームのワーキングカウンタの値と、事前に取得、確認したスレーブ数が等しい場合に通信経路を正常と判定する。あるいは、通信部１３５ａからパケットを送信した後に、通信部１３５ａでパケットを受信し、かつ、ＥｔｈｅｒＣＡＴフレームのワーキングカウンタの値と、事前に取得、確認したスレーブ数が等しい場合に通信経路を正常と判定する。ただし、後者の場合、通信部１３５ｂに接続する通信経路に異常が発生していることが考えられる。図８に示す正常モードの通信経路の接続にしてもよいが、正常とは判定せずに異常という判定としてもよい。
【００７１】
通信経路が復旧していなければ（ステップＳ００８→Ｎ）、ＥｔｈｅｒＣＡＴ通信をそのまま継続する（ステップＳ００４）。もし、異常が復旧していると判定すれば（ステップＳ００８→Ｙ）、冗長経路切替部１３１は、内部状態を正常モードに切り替え、図８に示す内部経路の接続をする（ステップＳ００９）。このとき、同時にバス１１０の通信手段を用いて、ＣＰＵ１０１上で動作するプログラム等に、内部状態を切り替えたことを通知する。この通知を受けたプログラムでは、通信経路上が復旧したかどうかをユーザやオペレータに通知することで、ユーザやオペレータは正常復帰したことを確認することができる。
【００７２】
正常モードでの通信又は異常モードでの通信の両方において、ＣＰＵ１０１からＥｔｈｅｒＣＡＴ通信の終了命令があった場合（ステップＳ０１０）はＥｔｈｅｒＣＡＴ通信を終了する。なお、図６では、冗長経路の切り替え後に終了命令の有無を確認しているが、終了命令の有無の確認はいずれのタイミングでもよい。例えば、ステップＳ００４の前に終了命令の有無を確認してもよい。
【００７３】
（本実施形態の効果）
本実施形態の制御用計算機１２０を用いて構成した制御用ネットワークシステムでは、通信経路に異常が発生した場合に、異常発生箇所直近の制御対象１２１がパケットを折り返し転送すると共に冗長経路切替部１３１が内部の通信経路を変更してソフトウェア処理を介さずに異常発生箇所を経由しない論理的トポロジのネットワークを形成することができる。これにより、制御用計算機１２０内では、一定遅延でパケットを転送でき、通信経路に異常が発生している場合でも時刻同期アルゴリズムを実行することができる。
【００７４】
論理アドレスに対するコマンドを送信する場合でも、通信経路異常によって分断されたネットワークのそれぞれへパケットを送信する必要がなく、冗長化通信制御部１０２内で折り返す通信経路を構成するために単一のパケットがリングネットワーク上を転送する。従って、論理アドレス空間のマッピングにおいて、異なるスレーブがそれぞれの分断されたネットワーク上に配置されていても、期待する正しい結果がテレグラムに格納される。本実施形態の制御用計算機１２０を用いた制御用ネットワークでは、制御対象１２１の順番が変化しないため、オートインクリメントアドレスを変更する必要がない。
【００７５】
図１５は、正常モード時の各制御対象のオートインクリメントアドレスを示す図である。図中、ＥｔｈｅｒｎｅｔＣＡＴフレームの通信経路を実線で示し、制御対象１２１は２つの通信ポートが有効であるとする。図１５に示すように、オートインクリメントアドレスは、ＥｔｈｅｒＣＡＴフレームがＥＰＵ１６０を通過するごとにインクリメントされる。
【００７６】
図１６は、異常モード時の各制御対象のオートインクリメントアドレスを示す図である。図中、点線は異常が起きている通信経路を示す。図１６に示すように、異常モード時においても、ＥｔｈｅｒＣＡＴフレームが通過するＥＰＵ１６０の順序は変わらない。したがって、オートインクリメントアドレスは正常時と同様に指定可能である。
【００７７】
制御用計算機１２０に搭載されるソフトウェアの開発においては、冗長化通信制御部１０２の初期設定のみが追加の処理となるだけであり、通信経路の状態にあわせた内部の経路切替等の冗長化に関する処理は冗長化通信制御部１０２内で自動的になされる。そのため、従来の単一の通信ポートと同様のソフトウェア開発をすればよく、ネットワーク冗長化のためのソフトウェア開発の負荷を低減することができる。
【００７８】
以上、本実施形態の制御用計算機１２０によれば、冗長化によるリアルタイム通信の高信頼化を図ることができる。
【００７９】
［第二の実施形態］
次に、第二の実施形態について説明する。図１８は、本実施形態の制御用計算機１８０のハードウェア構成を示すブロック図である。図１９は、図１８の制御用計算機１８０用いて構成する制御用ネットワークシステムを示す概略図である。図１８及び図１９に示すように、本実施形態の制御用計算機１８０は通信ポートを４つ有しており、物理的には２つの通信ポートを互いに接続したリングネットワーク１２２ａ，１２２ｂを２つを備える制御用ネットワークを構成する。
【００８０】
図１７は、本実施形態の冗長化通信制御部１８１のハードウェア構成を示すブロック図である。図１７で使用される符号は、特に断りのない限り、図３で説明した機能や要素等と同一である。図１７に示すように、本実施形態の冗長化通信制御部１８１は、図３の冗長化通信制御部１０２と比較して、４つの通信部１３５ａ，１３５ｂ，１３５ｃ、１３５ｄを備えた点において異なる。
【００８１】
（論理的な通信部の説明）
通信部１３５ａは、パケット生成部１３９から伝送されたパケットを送信する通信ポートであり、通信部１３５ａが備える送信部１３６ａ及び受信部１３７ａはそれぞれ送信ラインＴｘ２０１及び受信ラインＲｘ２００と接続している。通信部１３５ｂは、通信部１３５ａと制御用ネットワーク１２２ａを構成する終端のＥｔｈｅｒＣＡＴスレーブからのパケットを受信する通信ポートであり、通信部１３５ｂが備える送信部１３６ｂ及び受信１３７ｂはそれぞれ送信ラインＴｘ２０３及び受信ラインＲｘ２０２と接続している。通信部１３５ｃは、通信部１３５ｂが受信したパケットを制御用ネットワーク１２２ｂに送信する通信ポートであり、通信部１３５ｃが備える送信部１３６ｃ及び受信部１３７ｃはそれぞれ送信ラインＴｘ２０５及び受信ラインＲｘ２０４と接続している。通信部１３５ｄは、通信部１３５ｃと制御用ネットワーク１２２ｂを構成する終端のＥｔｈｅｒＣＡＴスレーブからのパケットを受信する通信ポートであり、通信部１３５ｄが備える送信部１３６ｄ及び受信部１３７ｄはそれぞれ送信ラインＴｘ２０７及び受信ライン、Ｒｘ２０６と接続している。送信ラインＴｘ２０１，２０３，２０５，２０７及び受信ラインＲｘ２００，２０２，２０４，２０６の冗長経路切替部１８２の内部で通信経路については、動作管理部１３８からの指令によって、図２１〜図２５に示すような通信経路を形成する。
【００８２】
（通信部の物理的な配置と論理的な配置の関連付け）
通信部の物理的な位置と機能的構成の通信部１３５ａ〜１３５ｄの対応関係は、静的に関連付けてもよい。或いは、事前にパケットを特定の通信部から送信して、順番にパケットを受信した通信部を順次通信部１３５ｂ〜１３５ｄに関連付けてもよい。図２０を用いて、この関連付けの方法を説明する。
【００８３】
図２０に示すように、例えば、物理的な位置が明らかな通信部Ａ、Ｂ、Ｃ、Ｄに対して、はじめに通信部Ａからパケットを送信したとする。このとき、通信部Ａを図１７に示す通信部１３５ａとする。次に通信部Ｃにて、このパケットを受信した場合（ステップＳ０２０）、通信部Ｃが図１７の通信部１３５ｂとなる。通信部Ｃにて受信したパケットを、残りの通信ポートのどちらかに転送する。ここでは通信部Ｂを選択し、パケットを送信する（ステップＳ０２１）。このとき、通信部Ｂを図１７の通信部１３５ｃとする。このパケットは、ネットワークの配線が正しければ通信部Ｄで受信する（ステップＳ０２２）。通信部Ｄで受信したパケットは、冗長経路切替部１８２を図２０に示したように結線し、通信部Ｄから送信する（ステップＳ０２３）。なお、ここで通信部Ｄは図１７の通信部１３５ｄとなる。以上のようにして、ネットワークの配線が正しいという前提のもとに、パケットを送信し、その受信の順番をみることで物理的な通信部Ａ〜Ｄと論理的な通信部１３５ａ〜１３５ｄを対応付けることができる。
【００８４】
この仕組みを用いることで、ネットワークがリングネットワークとして確立されていないことを検出することできる。ネットワークの未確立は、誤配線の場合や、通信経路上に異常が発生している場合が考えられる。例えば、図２０において、最初に通信部Ａから送信したパケットを再び通信部Ａで受信した場合は、通信部Ａに接続されたネットワークがライントポロジに構成されているか通信部Ａに接続されたネットワーク上に異常が発生していると判定できる。この検出された情報を動作管理部１３８からＣＰＵ１０１上のプログラムに通知することで、ユーザやオペレータが、通信ケーブルの接続確認、通信ケーブルの置換等の対策をとることができる。
【００８５】
（動的シーケンス）
本実施形態の冗長化通信制御部１８１による動作手順は図６と同様である。ただし、Ｓ００１の正常モードの設定、ステップＳ００６、ステップＳ００８の通信経路の状態判定方法、ステップＳ００７、ステップＳ００９の冗長経路の切り替えが異なる。通信経路の状態は、制御用ネットワーク１２２ａと制御用ネットワーク１２２ｂのそれぞれで判定する。
【００８６】
はじめに、ステップＳ００１の正常モードの設定では、冗長経路切替部１８２の通信経路の接続状態を図２１又は図２５の構成にする。
【００８７】
（異常判定方法その１）
ステップＳ００６の第一の異常判定の方法として、通信部１３５ａからパケットを送信後に、通信部１３５ｂでパケットを受信する前に、通信部１３５ａでパケットを受信したかどうかをみる。通信部１３５ｂでパケットを受信せず、通信部１３５ａで受信した場合に、制御用ネットワーク１２２ａの通信経路を異常と判定する。同様に、通信部１３５ｃからパケットを送信後に、通信部１３５ｄでパケットを受信する前に、通信部１３５ｃでパケットを受信したかどうかをみる。通信部１３５ｄでパケットを受信せず、通信部１３５ｃで受信した場合に、制御用ネットワーク１２２ｂの通信経路を異常と判定する。
【００８８】
（異常判定方法その２）
第二の異常判定の方法としては、全てのスレーブが処理すべきレジスタに対するＢＲＤコマンドをＥｔｈｅｒＣＡＴフレームに付与し、そのワーキングカウンタをみる。ＥｔｈｅｒＣＡＴフレームのワーキングカウンタの値が、事前に取得、確認したスレーブ数よりも小さければ通信経路を異常と判定する。この場合、制御用ネットワーク１２２ａと制御用ネットワーク１２２ｂのそれぞれのネットワークに接続しているスレーブの数を事前に把握している必要がある。制御用ネットワーク１２２ａに接続するスレーブ数をＮａ、制御用ネットワーク１２２ｂに接続するスレーブ数をＮｂとした場合に、ＥｔｈｅｒＣＡＴフレームのワーキングカウンタの値がＮａよりも小さければ、少なくとも制御用ネットワーク１２２ａの通信経路を異常と判定し、Ｎａより大きくＮｂより小さければ制御用ネットワーク１２２ｂの通信経路を異常と判定する。
【００８９】
（正常判定方法その１）
ステップＳ００８の第一の正常判定の方法としては、通信部１３５ａからパケットを送信後に、通信部１３５ｂでパケットを受信した後に、通信部１３５ａでパケットを受信したかどうかをみる。通信部１３５ｂで受信した後に通信部１３５ａで受信すれば、通信経路を正常と判定する。同様に、通信部１３５ｃからパケットを送信後に、通信部１３５ｄでパケットを受信した後に、通信部１３５ｃでパケットを受信したかどうかをみる。通信部１３５ｄでパケットを受信してから、通信部１３５ｃで受信した場合に、制御用ネットワーク１２２ｂの通信経路を正常と判定する。
【００９０】
（正常判定方法その２）
第二の正常判定の方法としては、全てのスレーブが処理すべきレジスタに対するＢＲＤコマンドをＥｔｈｅｒＣＡＴフレームに付与し、そのワーキングカウンタを見る方法がある。ＥｔｈｅｒＣＡＴフレームのワーキングカウンタの値と、事前に取得、確認したスレーブ数が等しい場合に通信経路を正常と判定する。冗長化経路切替部１８２の内部経路が図２５に示す構成の場合は、通信部１３５ａで受信したＥｔｈｅｒＣＡＴフレームのワーキングカウンタと一方のリングネットワーク１２２ａのスレーブ数Ｎａが等しい場合に、そのネットワーク１２２ａの通信経路を正常と判定する。また、通信部１３５ｃで受信したＥｔｈｅｒＣＡＴフレームのワーキングカウンタと他方リングネットワーク１２２ｂのスレーブ数Ｎｂが等しい場合に、そのリングネットワーク１２２ｂの通信経路を正常と判定する。
【００９１】
（冗長経路切替部の経路の接続状態）
ステップＳ００７とステップＳ００９における冗長経路切替部１８２内部の通信経路の接続状態は、２つのリングネットワーク１２２ａ，１２２ｂのそれぞれの通信経路の状態によって異なる。動作管理部１３８が制御する冗長経路切替部１８２内の接続状態の切り替えについて図２６に基づいて説明する。
【００９２】
図２６は、冗長経路切替部１８２内部の接続状態の状態遷移を示す図である。図２６中、Ｓ０３０は正常モード、Ｓ０３１は一方のリングネットワーク１２２ａのみが異常の状態、Ｓ０３２は他方のリングネットワーク１２２ｂのみが異常の状態、Ｓ０３３は２つのネットワーク１２２ａ，１２２ｂの両方が異常の状態を示す。冗長経路切替部１８２内の通信経路は、Ｓ０３０では図２１又は図２５に示す経路、Ｓ０３１では図２２に示す経路、Ｓ０３２では図２３に示す経路、Ｓ０３３では図２４に示す経路となる。
【００９３】
遷移条件となる事象Ｓ０３４は一方のリングネットワーク１２２ａを異常と判定することで、Ｓ０３５は他方のリングネットワーク１２２ｂを異常と判定すること、Ｓ０３６は一方のリングネットワーク１２２ａを正常と判定すること、Ｓ０３７は他方のリングネットワーク１２２ｂを正常と判定することである。
【００９４】
（効果）
本実施形態の制御用計算機１８０は、通信部１３５を４つ備えたことにより、２つの物理的なリングネットワーク１２２ａ，１２２ｂのそれぞれで通信経路の異常が発生した場合でも、ＥｔｈｅｒＣＡＴによるリアルタイム通信を継続することができる。
【００９５】
本実施形態の制御用計算機によれば、通信ポートを２つよりも多くした制御用ネットワークを構成しても、第一の実施形態と同様に、冗長化によるリアルタイム通信の高信頼化を図ることができる。
【００９６】
なお、本実施形態では通信部１３５ａ〜１３５ｄを４つとしたが、４つより多くの通信部を用いた場合でも同様の効果を得ることができる。また、通信部の数が奇数の場合は、１つの通信部に接続されるネットワークはライントポロジとなり、残りの偶数の通信部においては、２つの通信部ごとにリングネットワークを構成し、本発明の効果を得ることができる。
【００９７】
［第三の実施形態］
次に、第三の実施形態について説明する。図２８は、本実施形態の制御用計算機が備える冗長化通信制御部１９１のハードウェア構成の一実施形態である。図２８で使用される符号は、特に断りのない限り、図３で説明した機能や要素等と同一である。図２８の冗長化通信制御部を具備する制御用計算機のハードウェア構成は図２と同様である。
【００９８】
図２８に示すように、冗長化通信制御部１９１は、図３の冗長化通信制御部１０２と比較して、パケット生成部内にオートインクリメントアドレス変換部を設けた点において異なる。オートインクリメントアドレス変換部１４１は、オートインクリメントアドレスに対するコマンドにおいて、通信経路の状態に応じてオートインクリメントアドレスを変更する。
【００９９】
本実施形態では、制御用計算機を用いた制御用ネットワークシステムは第一の実施形態と同様でありが、動作管理部１３８による冗長経路切替部１９２の通信経路の接続状態の切り替えの基準や通信経路状態判定部１３２の判定手順が異なる。本実施形態では、特に、２箇所以上の通信経路の異常が発生する場合を想定する。なお、本実施形態の制御用計算機のハードウェア構成は図２と同様である。
【０１００】
図２７は、本実施形態の冗長化通信制御部１９１による動作手順を示すフローチャートである。図６に示した冗長化通信制御部の動作手順との違いは、ステップＳ００３、Ｓ０４０、Ｓ０４１、Ｓ０４２、Ｓ０４３である。また、ステップＳ００８で通信経路異常が復旧したかどうかを判定し、復旧していない場合の対応が異なる。
【０１０１】
ステップＳ００３の冗長化通信制御部１９１の動作管理では、ＣＰＵ１０１上で動作するプログラムは、動作管理部１３８に対してＥｔｈｅｒＣＡＴ通信の継続可能条件を設定する。設定する条件として、正常に通信可能なスレーブ数、又は通信不可能な場合でもＥｔｈｅｒＣＡＴ通信を継続可能とするスレーブの識別子等である。
【０１０２】
Ｓ００６において通信経路を異常と判定した場合は、Ｓ０４０において異常に関する情報を取得する。取得する情報は通信経路の異常発生箇所が例示される。特に第三の実施形態では２ヶ所以上の通信経路異常を想定する。
【０１０３】
（異常発生箇所の取得方法）
図２９は、制御用ネットワークに異常が２箇所発生した場合の異常発生箇所の判定方法を説明するための図である。図２９では、制御対象１２１ｂと制御対象１２１ｃ間の通信経路、及び制御対象１２１ｄと制御対象１２１ｅ間の通信経路に異常が生じた場合について説明する。
【０１０４】
まず、送信するＥｔｈｅｒＣＡＴフレームに全てのスレーブが処理すべきレジスタに対するＢＲＤコマンドをＥｔｈｅｒＣＡＴフレームに付与する。１箇所以上の通信経路で異常が発生した場合は、通信部１３５ｂでパケットを受信する前に通信部１３５ａでパケットを受信する。この受信の順番をもって通信経路の異常発生を検知し、通信部１３５ａで受信した前記のＢＲＤコマンドのワーキングカウンタを見る。このワーキングカウンタの値Ｗａは、通信部１３５ａに最も近い経路異常２１０ａまでのスレーブの数Ｎａを反映する。図２９の場合では、ワーキングカウンタは２である。従って、ワーキングカウンタの値が２であることにより、経路異常２１０ａの発生箇所を制御対象１２１ｂと制御対象１２１ｃ間の通信経路上と判定することができる。
【０１０５】
次に、通信部１３５ａで受信したパケットは、冗長経路切替部１９２によって通信部１３５ｂへ折り返し、送信する。このパケットは再び通信部１３５ｂで受信する。このときにＢＲＤコマンドのワーキングカウンタの値Ｗｂが、事前に取得、確認したスレーブ数Ｎと等しければ、通信経路異常の発生箇所は１箇所と判定することができる。もし、ＷｂがＮよりも小さければ通信経路異常の発生箇所は少なくとも２箇所と判定する。図２９の場合では、Ｗｂは３となり、ＷｂとＷａの差分が、通信部１３５ｂから、通信部１３５ｂに最も近い経路異常２１０ｂまでのスレーブの数Ｎｂを反映する。図２９の場合では、３−２＝１である。したがって、経路異常２１０ｂの発生箇所を制御対象１２１ｅと制御対象１２１ｄ間の通信経路上と判定する。
【０１０６】
次に、ステップＳ０４０で取得した情報と、ステップＳ００３で設定した継続可能な条件から、ＥｔｈｅｒＣＡＴ通信が継続可能かどうかを判定する（ステップＳ０４１）。例えば、継続可能な条件が通信可能なスレーブの最低数Ｎｃ１であれば、ＮａとＮｂの和がＮｃ１以上であれば継続可能と判定する。また、継続可能な条件が通信不可な最大スレーブ数Ｎｃ２であれば、事前に取得、確認したスレーブ数ＮからＮａとＮｂを引いた差分がＮｃ２以下であれば、継続可能と判定する。あるいは、継続可能な条件が「正常時のオートインクリメントアドレスがＡであるスレーブとは通信不可となっても継続する」であれば、ステップＳ０４０で通信経路異常の発生箇所を特定できているため、アドレスＡのスレーブと通信が可能かどうかを判定することができる。したがって、この情報をもってＥｔｈｅｒＣＡＴ通信が継続可能かどうかを判定する。
【０１０７】
ステップＳ０４１において、ＥｔｈｅｒＣＡＴ通信が継続可能でないと判定した場合は、継続不能であることをＣＰＵ１０１上で動作するプログラムに通知する（ステップＳ０４２）。継続不能であることを通知する通知方法としては割込み等がある。
【０１０８】
次に、Ｓ０４３において、動作管理部１３８は通信可能な全スレーブに対して停止するためのコマンドを送信し、システムを停止させる。なお、ステップＳ０４３では、動作管理部１３８がスレーブを停止させずに、Ｓ０４２で通知を受けたＣＰＵ１０１上のプログラムがスレーブを停止させるコマンドを発行してもよい。スレーブにおいては、通信不可時に動作を停止できるように、ウォッチドッグタイマなどの仕組みを用いて、マスタとの通信が所定期間不可であれば停止するように予め設定する必要がある。
【０１０９】
（オートインクリメントアドレスの変換）
通信経路異常が２箇所以上発生した場合、図２９に示すようにオートインクリメントアドレスが変化する。制御対象１２１ｅを指定するオートインクリメントアドレスは、正常時では−４（５番目のスレーブ）であるが、図２９のように通信経路異常２１０ａ，２１０ｂが発生している場合は−２（３番目のスレーブ）に変わる。ＣＰＵ１０１上で動作するプログラムに、この変化を意識させないためにオートインクリメントアドレス変換部１４１は、通信経路の異常を考慮してＥｔｈｅｒＣＡＴテレグラム上のオートインクリメントアドレスを変換する。事前に取得し確認したスレーブ数Ｎ、通信部１３５ａに接続して通信可能なスレーブ数Ｎａ、通信部１３５ｂに接続して通信可能なスレーブ数Ｎｂを用いて、通信経路が正常の場合に指定するｎ番目（最初のスレーブは１）のスレーブのオートインクリメントアドレスＡｎは次のようになる。
【０１１０】
Ａｎ  ＝  −ｎ＋１  （ｎ＜＝Ｎａの場合）
Ａｎ  ＝  −Ｎａ＋１−（ｎ−（Ｎ−Ｎｂ））（ｎ＞Ｎ−Ｎｂの場合）
Ａｎ  ＝  通信不可  （Ｎａ＜ｎ＜＝Ｎ−Ｎｂの場合）
アドレス先が通信不可のスレーブの場合（Ｎａ＜ｎ＜＝Ｎ−Ｎｂの場合）は、ＣＰＵ１０１上で動作するプログラムに対して通信できないことを通知する。通知方法としては割込み等が例示される。
【０１１１】
図２９に示すように、例えば、制御対象１２１ｂと制御対象１２１ｃ間で経路異常２１０ａ、及び制御対象１２１ｄと制御対象１２１ｅ間で経路異常２１０ｂが発生した場合、Ｎ＝５、Ｎａ＝２、Ｎｂ＝１である。２番目のスレーブ（ｎ＝２）の場合、２＜＝Ｎａであるので、アドレスＡ２は−２＋１＝−１となる。５番目のスレーブ（ｎ＝５）の場合、５＞Ｎ−Ｎｂであるので、アドレスＡ５は、−２＋１−（５−（５−１））＝−２となる。
【０１１２】
（３箇所以上の通信経路の異常に関して）
本実施形態では通信経路異常の発生箇所が少なくとも２箇所あることはわかるが、正確な通信経路異常の発生箇所の数はわからない。しかしながら、ＥｔｈｅｒＣＡＴ通信の継続が可能かどうかは、ＥｔｈｅｒＣＡＴスレーブと通信可能かどうかで判定するため、発生箇所の正確な数は必要ではない。
【０１１３】
本実施形態のステップＳ００８にて、通信経路の状態が復旧していない場合は、ステップＳ００６において通信経路異常が発生したかどうかを判定する。この判定は、通信経路異常が発生している場合に、さらに別の通信経路異常が発生する可能性があるために行われる。
【０１１４】
本実施形態によれば、通信経路異常が２箇所以上発生した場合でも、ＥｔｈｅｒＣＡＴ通信を継続できるような条件下においては、システムを継続できる。また、ＥｔｈｅｒＣＡＴ通信の継続が不可である状態になった場合は、冗長化通信制御部１９１、あるいは冗長化通信制御部１９１によって継続不可であることを通知されたＣＰＵ１０１上のプログラムが適切にシステムを停止することができる。すなわち、冗長化によるリアルタイム通信の高信頼化を提供することができる。
【符号の説明】
【０１１５】
１０１  ＣＰＵ
１０２，１８１，１９１冗長化通信制御部
１２０  制御用計算機
１２１  制御対象
１２２  制御用ネットワーク
１３１，１８２，１９２  冗長経路切替部
１３２  通信経路状態判定部
１３３  通信経路異常判定部
１３４  通信経路正常判定部
１３５ａ〜１３５ｄ  通信部
１３６ａ〜１３６ｄ  送信部
１３７ａ〜１３７ｄ  受信部
１４１  オートインクリメントアドレス変換部
１５１  スレーブＩＣ
１６０  ＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ（ＥＰＵ）
１６１  自動転送部
１６２  ループバック機能部
【図１】
0005394283.tif 000002
【図２】
0005394283.tif 000003
【図３】
0005394283.tif 000004
【図４】
0005394283.tif 000005
【図５】
0005394283.tif 000006
【図６】
0005394283.tif 000007
【図７】
0005394283.tif 000008
【図８】
0005394283.tif 000009
【図９】
0005394283.tif 000010
【図１０】
0005394283.tif 000011
【図１１】
0005394283.tif 000012
【図１２】
0005394283.tif 000013
【図１３】
0005394283.tif 000014
【図１４】
0005394283.tif 000015
【図１５】
0005394283.tif 000016
【図１６】
0005394283.tif 000017
【図１７】
0005394283.tif 000018
【図１８】
0005394283.tif 000019
【図１９】
0005394283.tif 000020
【図２０】
0005394283.tif 000021
【図２１】
0005394283.tif 000022
【図２２】
0005394283.tif 000023
【図２３】
0005394283.tif 000024
【図２４】
0005394283.tif 000025
【図２５】
0005394283.tif 000026
【図２６】
0005394283.tif 000027
【図２７】
0005394283.tif 000028
【図２８】
0005394283.tif 000029
【図２９】
0005394283.tif 000030