(57)【要約】【課題】制御系ネットワークの冗長ノードにおける選択ノードの切り換えの場合に、被選択ノード内の通信装置における接続系統を予め診断しておいて切り換えの際の信頼性をより向上させる。【解決手段】接続機器に情報信号を伝送する信号バスと情報信号を処理する機能を備える制御部との間に接続されて一方が動作状態のときに他方が待機状態となって情報信号を中継する第１及び第２の通信部と、第１の通信部に設けられて信号バスからの応答を診断する第１の診断部と、第２の通信部に設けられて信号バスからの応答を診断する第２の診断部と、第１の通信部に設けられて第２の通信部に診断を要求し、診断結果を受領する第１の診断要求部と、第１の通信部に設けられて該通信部の動作状態における上記信号バスからの応答の診断結果が異常であって第２の通信部における信号バスからの応答の診断結果が正常であるとき、情報信号の中継を第１の通信部から第２の通信部に切換える第１の判断部と、を備える。【選択図】図１
2013201664.tif 000002
【特許請求の範囲】
【請求項１】
接続機器に情報信号を伝送する信号バスと前記情報信号を処理する機能を備える制御部との間に接続されて、一方が動作状態のときに他方が待機状態となって前記情報信号を中継する第１及び第２の通信部と、
前記第１の通信部に設けられて前記信号バスからの応答を診断する第１の診断部と、
前記第２の通信部に設けられて前記信号バスからの応答を診断する第２の診断部と、
前記第１の通信部に設けられて前記第２の通信部に診断を要求し、診断結果を受領する第１の診断要求部と、
前記第１の通信部に設けられて該通信部の動作状態における前記信号バスからの応答の診断結果が異常であって前記第２の通信部における前記信号バスからの応答の診断結果が正常であるとき、前記情報信号の中継を前記第１の通信部から前記第２の通信部に切換える第１の判断部と、
を備える冗長通信装置。
【請求項２】
更に、
前記第２の通信部に設けられて前記第１の通信部に診断を要求し、診断結果を受領する第２の診断要求部と、
前記第２の通信部に設けられて該通信部の動作状態における前記信号バスからの応答の診断が異常であって前記第１の通信部における前記信号バスからの応答の診断結果が正常であるとき、前記情報信号の中継を前記第２の通信部から前記第１の通信部に切換える第２の判断部と、
を備える請求項１に記載の冗長通信装置。
【請求項３】
前記信号バスは二重化されており、各信号バスに前記第１及び第２の通信部が接続される、請求項１又は２に記載の冗長通信装置。
【請求項４】
更に、前記第２の診断部の前記信号バスからの応答を診断する時間が、予め前記第１の通信部の動作に割り当てられた時間の空き時間よりも少ないとき、該信号バスからの応答の診断に代えて前記第２の通信部における異常の有無を診断する第３の診断部を備える、請求項１乃至３のいずれかに記載の冗長通信装置。
【請求項５】
前記第１の判断部は、前記第１の通信部における前記信号バスからの応答の診断結果が異常であるとき、前記第１の診断部に前記信号バスからの応答を再度診断させる、請求項１乃至４のいずれかに記載の冗長通信装置。
【請求項６】
前記信号バスからの応答は前記信号バスに接続された機器からの返信である、請求項１乃至５のいずれかに記載の冗長通信装置。
【請求項７】
請求項１乃至６のいずれかに記載の冗長通信装置を備えるプロセスコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御系ネットワークのノード等に用いられる通信装置に関し、特に二重化構造を有する冗長化ノードに好適な冗長通信装置に関する。
【背景技術】
【０００２】
例えば、生産設備、水処理設備、ビルの空調設備などの各種の制御プロセスに配置されたプロセス機器をネットワークを介して制御するためにプロセスコントローラ（プロセスを制御するコンピュータシステム）が使用される。このコントローラは制御プログラムを実行してプロセスの運転状態（プロセスデータ）を常時監視し、所要の制御が誤りなく行われるようにプロセスの制御パラメータを調節する。このような制御系ネットワークのノード（プロセスコントローラ等のネットワーク接続要素）には長時間に渡って故障なく動作することが要求される。ノードの信頼性を向上する手法としてノードの冗長化がある。冗長化には、例えば、並列冗長システムと待機冗長システムがある。
【０００３】
並列冗長システムは、同じ構成のノードを２つ以上同時に使用し、そのうち少なくとも一つが故障していなければ当該ノードの機能は維持される並列システムである。ｎ個のノードを並列冗長で使用するとノードの信頼度は改善されるが、ノードの平均寿命は１倍であり、ｎ倍にはならない。また、ｎ個のノードによる並列冗長システムの消費電力は１つのノードによる場合に比べてｎ倍に増える。
【０００４】
これに対し、待機冗長システムは、使用ノードは一台だけで残りのノードは待機させておき、使用ノードが故障すれば待機しているノードに直ちに切り換えるシステムである。待機冗長システムの信頼度は使用ノードから待機ノードへの切替えの信頼度が１ならば並列冗長システムより高くなり、待機冗長システムの平均寿命は並列冗長システムのｎ倍となる。また、消費電力も並列冗長システムと比べて少なくて済む利点がある。
【０００５】
例えば、特開２００４−６２３６２号公報（特許文献１）に記載のバスインタフェース装置は１つのＩＯバスに接続される２つの通信インターフェイス回路を備える冗長システムにより信頼性を向上している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−６２３６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
待機冗長システムは上述したような高い信頼性と低いランニングコストであるという利点を有するが、更に、制御系ネットワークが二重化（多重冗長化）されると、フィールド機器とプロセスコントローラ等のノード間で選択可能な通信経路が複数（複雑）になる。冗長ノード自体における不具合だけではなく、ノード、信号線路、フィールド機器等に至る接続系統の不具合をも考慮した冗長システムが望まれる。
【０００８】
例えば、冗長化ノードにおいて、アクティブ状態のノードから待機状態のノードに動作を切り換える場合、待機状態のノード内のネットワーク通信部がフィールド機器や通信系統等を含めて正常に機能することが保証されることが望ましい。
よって、本発明は制御系ネットワークの冗長ノードにおける選択ノードの切り換えの場合に、被選択ノード内の通信装置における接続系統を予め診断しておいて切り換えの際の信頼性をより向上させることを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を達成する本発明の冗長通信装置の一態様は、接続機器に情報信号を伝送する信号バスと上記情報信号を処理する機能を備える制御部との間に接続されて、一方が動作状態のときに他方が待機状態となって上記情報信号を中継する第１及び第２の通信部と、上記第１の通信部に設けられて上記信号バスからの応答を診断する第１の診断部と、上記第２の通信部に設けられて上記信号バスからの応答を診断する第２の診断部と、上記第１の通信部に設けられて上記第２の通信部に診断を要求し、診断結果を受領する第１の診断要求部と、上記第１の通信部に設けられて該通信部の動作状態における上記信号バスからの応答の診断結果が異常であって上記第２の通信部における上記信号バスからの応答の診断結果が正常であるとき、上記情報信号の中継を上記第１の通信部から上記第２の通信部に切換える第１の判断部と、を備える。
【００１０】
かかる構成とすることによって、第１の通信部がマスター側として正常に動作しているときに、スレーブ側としての第２の通信部、信号バス及び該信号バスへの接続機器の系統が正常に動作することを予め確認しておいて、第１の通信部側に異常が生じたときに第２の通信部側に動作を切り換えるのでマスター側からスレーブ側に制御動作を切り換えた際のエラー発生が可及的に回避される。また、第１の通信部がマスター側として正常に動作しているときに、第２の通信部系統の異常（故障）が検出された場合には予め修復することが可能となり、待機冗長通信装置の信頼性を向上することが可能となる。
【００１１】
また、更に、第三の通信部を設け、第２の通信部も異常であるときは正常な（第１の通信部と同様に構成されている）第３の通信部に動作を切り換えることが可能となる。それにより、第１及び第２の通信部の異常発生にも対応することができ、待機冗長通信装置の信頼性を更に向上することが可能となる。
【００１２】
また、本発明の冗長通信装置の一態様は、更に、上記第２の通信部に設けられて上記第１の通信部に診断を要求し、診断結果を受領する第２の診断要求部と、上記第２の通信部に設けられて該通信部の動作状態における上記信号バスからの応答の診断結果が異常であって上記第１の通信部における上記信号バスからの応答の診断結果が正常であるとき、上記情報信号の中継を上記第２の通信部から上記第１の通信部に切換える第２の判断部と、を備える。
【００１３】
かかる構成することによって、第２の通信部側にも第１の通信部側と同様に第２の診断要求部と第２の判断部とが備えられる。それにより、第１の通信部側から第２の通信部側に動作が切り換えられて、第２の通信部側がマスター側、第１の通信部側がスレーブ側として機能して運転を継続する。そして、第２の通信部側に異常が生じた場合に再度第１の通信部側がマスター側、第２の通信部側がスレーブ側として機能することを可能とする。
【００１４】
好ましくは、上記信号バスは二重化されており、各信号バスに上記第１及び第２の通信部が接続される。それにより、信号バス、第１及び第２の通信部が二重化され、通信系の冗長化によって信頼性が向上する。
【００１５】
好ましくは、冗長通信装置は、更に、上記第２の診断部の上記信号バスからの応答を診断する時間が、予め前記第１の通信部の動作に割り当てられた時間の空き時間よりも少ないとき、該信号バスからの応答の診断に代えて前記第２の通信部における異常の有無を診断する第３の診断部を備える。それにより、（空き時間時間不足により）第２の通信部から信号バスに接続された各機器の応答を確認できない場合（第２の通信部の接続系統の異常判別時間が足りない場合）であっても、少なくとも第２の通信部の動作の正常を判別可能とし、第１の通信部から第２通信部に切り換える場合のリスクを減少する。
【００１６】
好ましくは、上記第１の判断部は、上記第１の通信部における上記信号バスからの応答の診断結果が異常であるとき、上記第１の診断部に上記信号バスからの応答を再度診断させる。それにより、第１の通信部における異常の誤検出を可及的に回避して、本来必要のない第２の通信部への動作切替を回避可能とする。
【００１７】
好ましくは、上記信号バスからの応答は上記診断部からの応答要求に対する上記信号バスに接続された機器からの返信である。接続された機器には、フィールド機器、コントローラ、サーバ装置等が含まれる。
【００１８】
上述した冗長通信装置はプロセス制御系のネットワークに接続されるノードに適用して好都合である。例えば、制御系ネットワークのノードとしてのプロセスコントローラに上記冗長通信装置を適用した場合、スレーブ側の通信部の動作が予め正常であることが判断されているので、マスター側からスレーブ側への制御動作の移行が可及的に円滑に行われる。
【発明の効果】
【００１９】
本発明によれば、待機冗長通信装置において動作状態の通信部から待機状態の通信部への動作移行が円滑に行われる。
【図面の簡単な説明】
【００２０】
【図１】制御系ネットワークの例を説明する説明図である。
【図２】２つのコントローラで構成された冗長コントローラの例を説明する説明図である。
【図３】２つの通信部による冗長構成例を説明する説明図である。
【図４】冗長通信部の動作を説明するフローチャートである。
【図５】コントローラに割り当てられた信号バスアクセス可能時間と空き時間を説明する説明図である。
【図６】他の実施例を説明する説明図である。
【図７】他の実施例の通信部の構成例を説明する説明図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施の形態について図面を参照しつつ説明するが、以下の実施形態は特許請求の範囲に係る発明を限定するものではなく、また、実施形態の中で説明されている特徴の組み合わせのすべてが発明の解決手段に必須であるとは限らない。
なお、以下の実施形態では、本発明の冗長通信装置をプロセス制御系ネットワークのノードに適用したものを例に説明するが、本発明の冗長通信装置が適用されるものはこれに限られず、例えば、サブシステム（局所的なシステム）の通信インタフェース等にも使用できる。
【００２２】
＜定義＞
本明細書で使用する用語を以下のとおり定義する。
「ノード」：プロセス制御系ネットワークに接続されて一定の機能を発揮する要素であり、例えば、プロセス管理システムに含まれるサーバ、コントローラ、フィールド機器の各々を示す。
「フィールド機器」：プラントシステムにおける、計装盤や制御室からケーブルが出た機械周りの配線及び機器、圧力発信機、流量計、温度センサ等のセンサ類、圧力制御弁、流量制御弁、開閉弁等のバルブ類、ポンプ、ブロア、ファン等モータやアクチュエータ機器類それら制御盤内外に設置する機器（総称）をいう。
「プロセスデータ」：ノード（主にフィールド機器）から送信される測定値またはノードに対する設定値等のデータをいう。
「アクティブ状態」：装置の動作を許可された状態をいう。
「非アクティブ状態」：装置の動作が禁止された状態をいう。
「マスター側」：待機冗長装置において動作している装置側をいう。
「スレーブ側」：待機冗長装置において待機してい装置側をいう。
「サブシステム」：信号バスに接続する一つのコントローラ、サーバ、シリアル通信ユニットが管理する局所的な系統一般をいう。
【００２３】
＜プロセス管理システムの構成＞
図１に、本実施形態に係る制御系ネットワークの構成例（プロセス管理システム）を示す。同図に示すように、生産プロセスに配置された各種のフィール機器を制御する冗長コントローラ１０がユニバーサル（汎用）バス１とローカルバス２との間に接続されている。ユニバーサルバス１には、冗長コントローラ１０の他に、プロセスコントローラ１１及びスーパーバイザリステーション２０が相互に通信可能に接続されている。ローカルバス２には、冗長コントローラ１０の他に、Ｉ／Ｏサーバ３１、Ｉ／Ｏサーバ３２、及びシリアル通信ユニット３３が、相互に通信可能に接続されている。
【００２４】
ユニバーサルバス１は、汎用のコンピュータネットワーク規格、例えばイーサネット（登録商標）(Ethernet)により装置間を相互に接続するバスである。後述のように、ユニバーサルバス１は２つ（複数）の伝送路１ａ、１ｂによって冗長に構成されている。また、ローカルバス２も同様に２つ（複数）の伝送路２ａ、２ｂによって冗長に構成されている（後述の図２参照）。
【００２５】
スーパーバイザリステーション２０は、ユニバーサルバス１に接続する各種コントローラが管理するサブシステムから供給される測定信号等に基づいて、プロセスシステム全体の運転内容を監視し、各サブシステムに対する制御信号を送信するプロセス管理装置である。スーパーバイザリステーション２０は、ユニバーサルバス１に接続される冗長コントローラ１０やプロセスコントローラ１１、ローカルバス２に接続されるフィールド機器類の運転内容をモニタに表示可能に構成されている。
【００２６】
運用者は、表示内容を見ることにより、プロセス管理システム全体の運転内容を把握することが可能である。スーパーバイザリステーション２０は、運用者の操作指示に従って、システムに接続される装置やフィールド機器に対する制御内容を指示可能に構成されている。指示可能な制御内容としては、機器の起動操作や停止操作等が該当する。特に本実施形態において、スーパーバイザリステーション２０は、冗長コントローラ１０に対して、プライマリノード１００Ｐ及びセカンダリノード１００Ｓのうち、いずれか一方のノードがアクティブ状態になるよう、また、他方のノードが非アクティブ状態となるよう、切換指示可能に構成されている。
【００２７】
また、スーパーバイザリステーション２０等によって予め冗長コントローラ１０に指令（動作モード）を設定しておくことによって、冗長コントローラ１０は、プライマリノード１００Ｐ及びセカンダリノード１００Ｓのいずれかのノードで異常（あるいは所定の条件）が発生した場合に自動的に当該ノードを非アクティブに状態にし、他方のノードをアクティブ状態にする待機冗長制御を実行可能に構成されている。
【００２８】
冗長コントローラ１０は、互いに同一の構成を備えたプライマリノード（第１ノード）１００Ｐとセカンダリノード（第２ノード）１００Ｓとが並行して動作可能に構成されている。後述するようにプライマリノード１００Ｐとセカンダリノード１００Ｓの各々にはローカルバス２を介してフィールド機器等との通信を行う通信部が設けられる。そして、プライマリノード１００Ｐ側の通信部とセカンダリノード１００Ｓ側の通信部との相互間でも待機冗長制御を実行できるように構成されている。
【００２９】
冗長コントローラ１０は、例えば、いわゆるＯＰＣ(OLE for Process Control)規格に準拠したＯＰＣサーバであるＩ/Ｏサーバ３１及びＩ／Ｏサーバ３２に対するＯＰＣクライアントの一つとして位置付けられたコントローラである。冗長コントローラ１０の詳細な構成については、図２を参照して後述する。また、冗長コントローラ１０内部の通信部の詳細な構成については図３を参照して後述する。なお、実施形態では、冗長コントローラ１０は、ユニバーサルバス１の系統とローカルバス２の系統との間で情報を受け渡すためのゲートウェイとしても機能する。
【００３０】
プロセスコントローラ１１は、冗長コントローラ１０と同様に、自ら管理するローカルバスに接続された各種機器で構成されるサブシステムを管理する制御手段であり、必要に応じて設けられる。例えば、プロセスコントローラ１１としては、種々の機能を有する装置を適用可能であり、例えば、分散型コントロールシステム（ＤＣＳ：Distributed Control System）、プログラマブルロジックコントローラ（ＰＬＣ：Programmable Logic Controller）、ビルディングオートメーションシステム（ＢＡＳ：Building Automation System）等が挙げられる。
【００３１】
ローカルバス２は、汎用のコンピュータネットワーク規格、例えばイーサネット（登録商標）、ＶＬＢＵＳ（規格名称）、あるいは独自仕様の信号バス規格等により装置間を相互に接続する拡張バスである。ローカルバス２は、例えば工場内のコンピュータ機器を相互に接続する工場ＬＡＮ（Local Area Network）に相当する。
【００３２】
Ｉ／Ｏサーバ３１は、ローカルバス２に接続されるフィールド機器等に対するＯＰＣサーバの一つとして機能し、これら機器に対する監視及び管理を実施する管理装置である。Ｉ／Ｏサーバ３１は、ＯＰＣ規格に準拠した通信プロトコルで通信可能に構成されている。また、Ｉ／Ｏサーバ３１は、フィールド機器４１に直接接続されている。Ｉ／Ｏサーバ３１とフィールド機器４１とは、シリアル通信ケーブルにより相互に接続されている。
【００３３】
フィールド機器４１は、流量、圧力、温度等の所定の物理量を測定する測定ポイントとして機能可能に構成されている。測定ポイントとして機能するフィールド機器４１は、例えば、流量センサや圧力センサ、温度センサ等の各種センサである。またフィールド機器４１は、温度や流量等を制御する制御ポイントとして機能可能に構成されている。制御ポイントとして機能するフィールド機器４１は、例えば、温度調節器や圧力・流量・開閉制御弁等の各種弁装置、ポンプやブロア、ファン等のモータ、アクチュエータ機器類である。フィールド機器４１は、測定値を所定の規格の信号、例えば４〜２０ｍＡの直流信号に変換してＩ/Ｏサーバ３１に送信可能に構成されている。Ｉ/Ｏサーバ３１は、制御ポイントに対する設定値（設定温度、制御弁の開度、モータやアクチュエータ機器の駆動量）を所定の規格の信号、例えば４〜２０ｍＡの直流信号に重畳させて変換してフィールド機器４１に送信可能に構成されている。
【００３４】
Ｉ／Ｏサーバ３２は、ローカルバス２に接続される機器に対するＯＰＣサーバの一つとして機能する。Ｉ／Ｏサーバ３２は、ＯＰＣ規格に準拠した通信プロトコルで通信可能に構成されている。Ｉ／Ｏサーバ３２には、ＯＰＣクライアントの一つとして動作するプログラマブルロジックコントローラ（ＰＬＣ）４２が接続されている。プログラマブルロジックコントローラ４２は、特定の制御ポイントに対するリレー制御等を実行可能に構成されている。Ｉ／Ｏサーバ３２は、所定の設定値をシリアル信号に変換してプログラマブルロジックコントローラ４２に供給する。またプログラマブルロジックコントローラ４２から供給された測定値を必要に応じてローカルバス２に送信する。
【００３５】
Ｉ／Ｏサーバ３１及びＩ／Ｏサーバ３２は、自らが直接管理するフィールド機器４１やプログラマブルロジックコントローラ４２に動作異常を検出した場合や、自らの動作に不具合を生じている場合、アラート信号をローカルバス２経由でコントローラなどの上位装置に送出し、異常を通知する。
【００３６】
シリアル通信ユニット３３は、それぞれがＯＰＣクライアントとして動作するフィールド機器４３、４４、４５に接続されている。シリアル通信ユニット３３は、Ｉ/Ｏサーバ３１から供給された設定値をシリアル信号に変換してフィールド機器４３−４５に供給する。またフィールド機器４３−４５の測定値がローカルバス２経由で通知される。フィールド機器４３−４５は、前述したフィールド機器４１と同様の測定ポイントまたは制御ポイントとして機能し、それぞれの機器に割り当てられた物理量を測定して測定値を出力し、また、入力された設定値に基づいて動作するように構成されている。
【００３７】
シリアル通信ユニット３３は、自らが直接管理するフィールド機器４３−４５や自らの動作に不具合を生じている場合、アラート信号をローカルバス２経由でコントローラなどの上位装置に送出し、異常を通知する。
【００３８】
図２に、本実施形態における冗長コントローラ１０のブロック図を示す。なお、図２において図１と対応する部分には同一符号をし、かかる部分の説明は省略する。
図２に示すように、冗長コントローラ１０は、プライマリノード１００Ｐとセカンダリノード１００Ｓとを備えて構成されている。冗長コントローラ１０のプライマリノード１００Ｐ及びセカンダリノード１００Ｓは、ユニバーサルバス１とローカルバス２との間でプロセスデータの送受信を中継するゲートウェイとして機能する。また、プライマリノード１００Ｐ及びセカンダリノード１００Ｓの各々は、ローカルバス２に接続するノードを含むサブシステムを統合し制御するコントローラとして機能する。
プライマリノード１００Ｐは、通信部１１０Ｐ、制御部１２０Ｐ、通信部１３０Ｐ等を備える。セカンダリノード１００Ｓも同様に構成され、通信部１１０Ｓ、制御部１２０Ｓ、通信部１３０Ｓ等を備える。
【００３９】
通信部１１０Ｐは、冗長化されたユニバーサルバス１の信号線１ａを介してスーパーバイザリステーション２０やプロセスコントローラ１１と相互通信するための通信モジュールである。通信部１１０Ｓは、ユニバーサルバス１の信号線１ｂを介してスーパーバイザリステーション２０やプロセスコントローラ１１と相互通信するための通信モジュールである。通信部１１０Ｐ及び１１０Ｓは、ユニバーサルバス１のコンピュータネットワーク規格に準拠した物理的な通信条件に合致させて所定の通信プロトコル、例えば、イーサネット（登録商標）プロトコルでデータ入出力を行う。
【００４０】
制御部１２０Ｐ、１２０Ｓは、後述するように冗長コントローラの機能を発揮するコンピュータシステムと制御プログラムによって構成される。コンピュータシステムは市販のマイクロプロセッサで構成されている。制御部１２０Ｐ及び１２０Ｓは、特に図示しないが、冗長処理を行うために冗長処理部を備え、プライマリノードとセンダリノードとの間でそれぞれが記憶するプロセスデータの内容を同一にするデータの同期を行ったり、相手側のノードの動作状況を診断したり、自己のノードの動作状況を診断したりする。それにより、制御部１２０Ｐ及び１２０Ｓを交互に切り換えてもプロセス制御動作（運転）を継続することができるようにしている。この冗長処理部分の具体的な例は、例えば、特願２０１１−７３４０５号によって詳細に説明されている。本願発明は通信部１３０Ｐ、１３０Ｓにおける動作に特徴があるので制御部１２０Ｐ及び１２０Ｓの説明は機能的な説明に止める。
【００４１】
通信部１３０Ｐは、冗長化されたローカルバス２の２つの信号線２ａ及び２ｂを介してフィールド機器類から供給された測定値であるプロセスデータを受信し、フィールド機器類に対する設定値であるプロセスデータを出力する。同様に構成される通信部１３０Ｓも、ローカルバス２の２つの信号線２ａ及び２ｂを介してフィールド機器類から供給された測定値であるプロセスデータを受信し、フィールド機器類に対する設定値であるプロセスデータを出力する。通信部１３０Ｐ及び１３０Ｓは、ローカルバス２のコンピュータネットワーク規格に準拠した物理的な通信条件に合致させて所定の通信プロトコルでデータ入出力を行う。例えば、通信部１３０Ｐ、１３０Ｓは、ＯＰＣ規格に準拠したインターフェースを備えており、ＯＰＣ規格に準拠した通信プロトコルで通信するＩ／Ｏサーバ３１及び３２と通信可能に構成されている。
【００４２】
図２に示すように、通信部１１０Ｐ、１１０Ｓ、制御部１２０Ｐ、１２０Ｓ、通信部１３０Ｐ、１３０Ｓの各段間は内部バスにより同一ノード内の段間接続に加えて異ノード間の段間接続、いわゆるたすき掛け接続が追加されている。
すなわち、通信部１１０Ｐと制御部１２０Ｐとの相互間、通信部１１０Ｐと制御部１２０Ｓとの相互間が内部バスで接続される。通信部１１０Ｓと制御部１２０Ｐとの相互間、通信部１１０Ｓと制御部１２０Ｓとの相互間が内部バスで接続される。また、制御部１２０Ｐと通信部１３０Ｐとの相互間、制御部１２０Ｐと通信部１３０Ｓとの相互間が内部バスで接続される。制御部１２０Ｓと通信部１３０Ｐとの相互間、制御部１２０Ｓと通信部１３０Ｓとの相互間が内部バスで接続される。
それにより、信号が可及的に故障部位を迂回しつつ各段階で処理されるように構成される。内部バスの一例を挙げればＵＳＢ(Universal Serial Bus)であるが、これに限定されるものではない。
【００４３】
上記構成を持つ冗長コントローラ１０は、制御部１２０Ｐ及び１２０Ｓの各コンピュータシステムがそれぞれ所定のソフトウェアプログラムを実行することにより、非限定の例示として、特に以下の手段（あるいは機能）を実行可能に構成されている。
（１）第１ノード及び第２ノードのうち、いずれか一方をアクティブ状態とし、他方を非アクティブ状態とする手段。
（２）アクティブ状態となっているノードにおいてプロセスデータを収集し、収集したプロセスデータを非アクティブ状態となっているノードに転送する手段。
（３）非アクティブ状態となっているノードにおいて、プロセスデータの収集を禁止し、アクティブ状態となっているノードから転送されたプロセスデータを更新する手段。
（４）アクティブ状態となっているノードにおいて、このアクティブ状態のノードに割り当てられた信号バスへのアクセス許容時間の空き時間部分で非アクティブ状態となっている他のノードの通信部が信号バスに接続されたフィールド機器等との交信が可能であることを予め診断する手段（後述するように、この手段は本実施形態の特徴的な構成の一つである。）。
（５）アクティブ状態となっているノードにおいて所定の条件に達した場合には、アクティブ状態となっているノードを非アクティブ状態に切り換え、非アクティブ状態となっているノードをアクティブ状態に切り換える手段（待機冗長）。
上記した冗長コントローラ１０の手段（１）−（５）は、主に制御部１２０Ｐのコンピュータシステムと、制御部１２０Ｓのコンピュータシステムにおいて実行されるが、上記各部のうち一つまたは複数が協働することにより実現されてもよい。
【００４４】
待機冗長システムを活性化させる上記所定の条件とは、例えば、以下の（ａ）、（ｂ）の例が挙げられる。もっともこれらに限定されるものではない。
【００４５】
（ａ）アクティブ状態となっているノードにおいて動作不全（異常）が発生したことを推測可能な条件に達した場合。
例えば、自己のノードの動作を管理するＯＰＣサーバに異常を検出した場合、自己のノードで動作するいずれかのソフトウェアモジュールに異常を検出した場合、自己のノードのハードウェアに異常を検出した場合、アクティブ状態となっている相手側のノードから予め定められた一定期間（例えば１０秒間）以上、新たな診断データが送信されてこなかった場合、相手側のノードから自己のノードが動作不全となったことを報知してきた場合等である。
【００４６】
（ｂ）上位の機器監視装置であるスーパーバイザリステーション２０から、アクティブ状態とするノードと非アクティブ状態とするノードとの交替を指示された場合。
例えば、上位の管理サーバから強制的にアクティブ状態とするノードの切り換えを指示された場合等である。
【００４７】
図３は、通信部１３０Ｐ及び１３０Ｓの構成例を説明する説明図である。通信部１３０Ｐ及び１３０Ｓは同様に構成されるので主に通信部１３０Ｐについて説明する。以下の通信部の説明において符号の「Ｐ」と「Ｓ」とを読み替えることによって通信部１３０Ｓについての説明となる部分については通信部１３０Ｓの動作について説明を省略する。
通信部１３０Ｐは制御部１２０Ｐ及び１２０Ｓと信号バス２（２ａ，２ｂ）との相互間を双方向（下り方向、上り方向）に信号中継する。
通信部１３０Ｐはコンピュータシステムによって構成され、ＵＳＢインタフェース１３１Ｐ、ＵＳＢインタフェース１３２Ｐ、自己診断部１３３Ｐ、診断要求部１３０Ｐ、判断部１３５Ｐ、信号処理部１３６Ｐ、バスインタフェース１３７Ｐ、バスインタフェース１３８Ｐ等を備えている。このうち自己診断部１３３Ｐ、診断要求部１３０Ｐ、判断部１３５Ｐ、及び信号処理部１３６ＰはＣＰＵとプログラムによって構成される。通信部１３０Ｓも同様に構成される。
【００４８】
（下り方向のデータ伝送）
ＵＳＢインタフェース１３１Ｐは制御部１２０Ｐと接続されて指令信号やプロセスデータなどのデータ信号を伝送する。ＵＳＢインタフェース１３２Ｐは制御部１２０Ｓと接続されてデータ信号を伝送する。制御部１２０Ｐ及び制御部１２０ＳからＵＳＢインタフェースを介して伝送されたデータ信号は図示しないインタフェースのバッファメモリに一旦蓄積される。制御部１２０Ｐと通信部１３０Ｐから同じデータ信号が二重に供給されると、通信部の信号処理部（ＣＰＵ）は先に到来したデータ信号を使用し、後続のデータ信号は使用しない（破棄される）。通信部１３０ＳのＵＳＢインタフェースも同様に構成される。
【００４９】
ＣＰＵは信号処理部１３６Ｐにおいてデータ信号をローカルバス２用に規格化されたフォーマットに変換してインタフェース１３７Ｐ及び１３８Ｐに出力する。インタフェース１３７Ｐは所定フォーマットのバス信号を信号線２ａに出力する。このフォーマット信号は、例えば、受信機器側のアドレス（ＡＤＤＲ１）を含む。また、インタフェース１３８Ｐは上記フォーマットのバス信号を信号線２ｂに出力する。各バス信号は受信すべき機器側のアドレス（ＡＤＤＲ１）を含む。バス信号は二重化された信号線２ａ及び２ｂを伝搬して信号線に接続された各機器の入力インタフェース部に送られる。例えば、シリアル通信ユニット３３のインタフェース部が自己宛（ＡＤＤＲ１）のバス信号であることを判別するとこれを内部に取り込み、データ信号を復号する。シリアル通信ユニット３３のインタフェース部は信号線２ａ，２ｂから同じバス信号（データ信号）を受け取ると先に受信したデータ信号を使用し、後続のデータを破棄する。シリアル通信ユニット３３は受信したデータ信号の内部に存在する機器アドレスに該当するフィールド機器、例えば、フィールド機器４３にデータ信号を送出する。それにより、コントローラ１００Ｐ（あるいはコントローラ１００Ｓ、スパーバイザリステーション２０等）からのデータ信号（指令信号、プロセスパラメータ等）がフィールド機器４３に伝送される。通信部１３０Ｓも同様に構成される。
【００５０】
（上り方向のデータ伝送）
例えば、コントローラ側からの指令信号に応答してフィールド機器４３の測定ポイントで取得されたプロセスデータがデータ信号化されてシリアル通信ユニット３３に伝送される（マスター／スレーブ動作）。シリアル通信ユニット３３はデータ信号にコントローラ１００Ｐのアドレス等を加えてバス信号のフォーマットに変換し、インタフェース部から信号バス２（２ａ，２ｂ）にバス信号として出力する。コントローラ１００Ｐの通信部１３０Ｐのインタフェース部１３７Ｐ，１３８Ｐが信号バス２（２ａ，２ｂ）のバス信号を監視しており自己宛であると判別すると、それぞれバス信号を取り込む。同じバス信号が取り込まれると、先着のバス信号を使用し、後続のバス信号は廃棄される。バス信号は信号処理部１３６Ｐで復号され、データ信号としてＵＳＢインタフェース１３１Ｐから制御部１２０Ｐに出力される。また、データ信号としてＵＳＢインタフェース１３２Ｐから制御部１２０Ｓに出力される。
このようにして、通信部１３０Ｐは制御部と信号バス（接続機器）相互間の双方のデータ信号の中継を行っている。通信部１３０Ｓも同様に構成される。
【００５１】
上述したように、通信部１３０Ｐは、自己診断部１３３Ｐ、診断要求部１３０Ｐ、判断部１３５Ｐ、を備えている。これらの部分の機能はＣＰＵ、制御プログラムによって実現されている。通信部１３０Ｓも同様である。
【００５２】
自己診断部１３３Ｐは通信部１３０Ｐ自体の異常診断と自ノードの信号バスの異常診断（例えば、信号バス、接続機器からの応答の異常判別）を行う。
例えば、通信部１３０Ｐ自体の異常診断（プライマリ側通信部異常診断）は、ＣＰＵの動作を監視する図示しないモニタプログラムによって診断される。モニタプログラムは、例えば、通信部１３０ＰのＣＰＵが一定の周期でステータス信号のコードを予め定められた順番で変化させるかどうかを監視する（内部ロジック診断）。なお、ＣＰＵの動作モニタはこのようなものに限定されるものではなく、他の方法でコンピュータシステムを監視しても良い。通信部１３０Ｓでも同様である。
【００５３】
通信部１３０Ｐにおける異常診断は、例えば、通信部１３０Ｐと１３０Ｓを信号線で接続し、通信部１３０ＳのＣＰＵによって通信部１３０ＰのＣＰＵの動作を監視することによりなされる（相手側による診断）。また、通信部１３０Ｐに別途設けられたサブＣＰＵによって（メイン）ＣＰＵの監視を行うこともができる（自己診断）。通信部１３０ＰのＣＰＵ異常が検出された場合にはメモリ内にフラグが設定され、例えば、制御部１２０Ｐ及び１２０Ｓに通信部１３０Ｐのエラーが通知される。そして、通信部１３０Ｐがプライマリ側として動作しているとき、セカンダリ側の通信部１３０Ｓが正常動作であれば、信号バス２との通信機能が通信部１３０Ｐから１３０Ｓ側に切り換えられるようになる。
【００５４】
同様に、通信部１３０Ｓにおける異常診断（セカンダリ側通信部異常診断）は、例えば、通信部１３０Ｓと１３０Ｐを信号線で接続し、通信部１３０ＰのＣＰＵによって通信部１３０ＳのＣＰＵの動作を監視することにより行われる（相手側による診断）。また、通信部１３０Ｓに別途設けられたサブＣＰＵによって（メイン）ＣＰＵの監視を行うこともできる（自己診断）。通信部１３０ＳのＣＰＵ異常が検出された場合にはメモリ内にフラグが設定され、例えば、制御部１２０Ｓ及び１２０Ｐに通信部１３０Ｓのエラーが通知される。そして、通信部１３０Ｓがプライマリ側として動作しているとき、セカンダリ側となっている通信部１３０Ｐが正常動作であれば信号バス２との通信機能が通信部１３０Ｓから１３０Ｐ側に切り換えられるようになる。このセカンダリ側の通信部１３０Ｓの異常を診断する機能は第３の診断部（後述のステップＰ２７）に関連する。
【００５５】
自己診断部１３３Ｐによる信号バスの異常診断は、後述のように、通信部１３０Ｐのインタフェース１３７Ｐ及び１３８Ｐから信号バス２ａ、２ｂに接続された各機器に向けて当該機器のアドレスＡＤＤＲｎと応答指令を含む所定フォーマットのバス信号を送出し、当該機器からの該当機器のアドレスを含む応答（返信信号）の有無によって行われる。これを信号バス２（２ａ、２ｂ）の全接続機器について順次行う。各接続機器からの応答結果は内部メモリに記憶される。この信号バスの異常診断機能は第１の診断部に相当する。
【００５６】
同様に、通信部１３０Ｓにおいても自己診断部１３３Ｓが、自ノードの信号バスの異常診断（信号バス、接続機器からの応答の異常判別）を行う（この信号バスの異常診断機能は第２の診断部に相当する。）。上述のように、自己診断部１３３Ｓは通信部１３０Ｓ自体の異常診断を行う。自己診断部１３３Ｓが、例えば上記内部ロジック診断により異常を検出した場合にはメモリに異常検出フラグを設定する。自己診断部１３３Ｓの自己異常診断機能（セカンダリ側の自己診断）は第３の診断部（後述のステップＰ２７）に関連する。
【００５７】
診断要求部１３４Ｐは、通信部１３０Ｓ（セカンダリ側）に信号バスの異常診断を行うように求め、診断結果を通信部１３０Ｐ側に送るように指令する。通信部１３０Ｓ側から送られた診断結果を内部メモリに記憶する。通信部１３０Ｓの診断要求部１３４Ｓも同様である。
【００５８】
判断部１３５Ｐは、内部メモリに記憶された各機器からの応答結果を検査（診断）する。また、通信部１３０Ｓ側から送られてきた信号バスの診断結果（各機器の応答結果）と照合する。自身（通信部１３０Ｓ）のみ不具合（ＮＧ）の場合（バス診断の結果がＮＧであったＩＯモジュールがある。セカンダリ側にはＮＧがない）場合には自己の信号バス２（２，２）の再診断を行う。再診断の結果が不具合の場合には自身の信号バス通信機能異常と判断して、通信部１３０Ｐのプライマリ動作をセカンダリ側の通信部１３０Ｓに移動した後、通信部１３０Ｐを異常発生状態とする。通信部１３０Ｓの判断部部１３５Ｓも同様である。
【００５９】
信号処理部１３６Ｐは、上述したように、制御部１２０（１２０Ｐ，１２０Ｓ）から供給されるデータ信号をローカルバス２用に規格化されたフォーマットに変換してインタフェース１３７Ｐ及び１３８Ｐに出力する。また、インタフェース１３７Ｐ及び１３８Ｐにおいてローカルバス２から取得した自アドレス宛のバス信号からデータ信号を復号して制御部１２０Ｐ及び１２０Ｓに出力する。通信部１３０Ｓの信号処理部１３６Ｓも同様である。
【００６０】
上述したように、通信部１３０Ｐと１３０Ｓは同様に構成され、通信部１３０Ｓの各部の説明は通信部１３０Ｐの各部の符号の「Ｐ」を「Ｓ」にを読み替えることによって通信部１３０Ｓについての説明となるのであるが、実施例では、通常状態ではプライマリの通信部１３０Ｐ（コントローラ１００Ｐ）側をマスター動作とし、セカンダリの通信部１３０Ｓ（コントローラ１００Ｓ）側をスレーブ動作として説明している（更に後述する。）。この場合、スレーブ動作をする通信部１３０Ｓの診断要求部１３４Ｓ、判断部１３５Ｓは活性化されない（図３中に該当ブロックを点線で示す。）。逆に、冗長制御によって通信部１３０Ｐと１３０Ｓの動作選択が切り換えられ、通信部１３０Ｓ（コントローラ１００Ｓ）側がマスター動作となり、通信部１３０Ｐ（コントローラ１００Ｐ）側がスレーブ動作となる場合、通信部１３０Ｓの診断要求部１３４Ｓ、判断部１３５４Ｓが活性化され、通信部１３０Ｐの診断要求部１３４Ｐ、判断部１３５Ｐは活性化されないようになる。
【００６１】
図４は、待機冗長制御によって通信部１３０Ｐから通信部１３０Ｓに切り換える場合に、予め通信部１３０Ｓ側に切換え可能かどうかを判断するバス診断機能を説明するフローチャートである。
【００６２】
通信部１３０ＰのＣＰＵは、制御部１２０Ｐ（のＣＰＵ）からのバス診断指令や予め定められた周期で発生する診断を指令するイベント信号の発生によってバス診断ルーチンを実行する（ステップＰ２０）。当初の状態は、例えば、通信部１３０Ｐがマスター動作、通信部１３０Ｓがスレーブ動作をするように設定されている。
通信部１３０ＰのＣＰＵは自己のバス診断を実行する。通信部１３０ＰのＣＰＵのメモリには予めコントローラ１００Ｐが制御対象とする機器の信号バス２（２ａ，２ｂ）上のアドレス（ネットワークアドレス）ＡＤＤＲｎ等のデータ（Ｉ/Ｏモジュール設定データ）が記憶されている。
【００６３】
例えば、通信部１３０ＰのＣＰＵは、インタフェース１３７Ｐ及び１３８Ｐから信号バス２ａ、２ｂに接続されたシリアル通信機器３３に向けて当該機器のアドレスＡＤＤＲ１と応答指令を含む所定フォーマットのバス信号を送出し、シリアル通信装置３３からの応答信号（あるいは返信）を読み取る。次に、ＣＰＵはＩ/Ｏサーバ装置３２に向けて当該機器のアドレスＡＤＤＲ２と応答指令を含む所定フォーマットのバス信号を送出し、Ｉ/Ｏサーバ装置３２からの応答信号を読み取る。同様にして、ＣＰＵは信号バス２（２ａ、２ｂ）に接続されたコントローラ１００Ｐの制御対象となっている全接続機器について逐次応答指令を送出し、応答信号を読み取る。各接続機器からの応答結果は通信部１３０Ｐの内部メモリに記憶される。応答信号の有無によって通信部１３０Ｐ、信号バス２（２ａ，２ｂ）、バス接続機器３１〜３３…の相互間の接続に異常があるかどうかが判る。
【００６４】
例えば、バス診断の結果（応答の有無）は、以下のように記憶される（ステップＰ２２）。なお、Ａバスは信号バス２ａ系統、Ｂバスは信号バス２ｂ系統を意味する。
１  ＡＤＤＲ１  シリアル通信装置  Ａバス  ＯＫ，Ｂバス  ＯＫ
２  ＡＤＤＲ２  Ｉ/Ｏサーバ装置  Ａバス  ＯＫ，Ｂバス  ＯＫ
３  ＡＤＤＲ３  Ｉ/Ｏサーバ装置  Ａバス  ＮＧ，Ｂバス  ＯＫ
４  ＡＤＤＲ４  Ｉ/Ｏサーバ装置  Ａバス  ＯＫ，Ｂバス  ＯＫ
【００６５】
次に、ＣＰＵは、セカンダリ側の通信部１３０Ｓの診断を行えるかどうかを判断する条件を読み取る。この条件としては、例えば、（ａ）通信部１３０Ｓが冗長構成されている。（ｂ）通信部１３０ＳにＩ/Ｏモジュール設定データが設定される。（ｃ）冗長コントローラ１０に信号バスへのアクセス時間が割り当てられている。（ｄ）通信部１３０Ｓ側のＣＰＵが正常に動作中である（通信部１３０Ｐ側からの通信部１３０Ｓ側のＣＰＵ監視結果が正常である。）。（ｅ）割り当てられたアクセス時間に通信部１３０Ｓが信号バス２（２ａ，２ｂ）に接続された各接続機器（Ｉ/Ｏモジュール）の診断をする空き時間がある、等である（ステップＰ２４）。
【００６６】
図５は、信号バス２に接続される各コントローラのバス・アクセス制御を説明する図である。各コントローラには図示しない同期信号（時間信号）が供給されており、予め時間軸上に割り当てられたタイムスロット部分（アクセス許容時間）で信号バス２にアクセスするようになされている。例えば、コントローラ１０に割り当てられた時間は、その一部をプライマリコントローラ１００Ｐが占有しており、この時間内においてマスター・スレーブ動作によってコントローラ１００Ｐと信号バス２の接続機器との送受信が行われる。コントローラ１０に割り当てられたアクセス許容時間内の空き時間を利用してセカンダリコントローラ１００Ｓ側の通信部１３０Ｓの信号バスへの接続試験を行う。上記条件（ｅ）はこの空き時間に相当する。
【００６７】
通信部１３０ＰのＣＰＵは、上記条件から通信部１３０Ｓ側のバス診断が可能であるか判断する（ステップＰ２６）。診断できないと判断した場合（ステップＰ２６；Ｎｏ）、バス診断以外のセカンダリ側通信部の異常診断を行う。例えば、信号バス２に接続された各接続機器との応答診断に要するトータル時間がタイムスロットの空き時間を超える場合、上述したモニタプログラムを実行し、通信部１３０Ｓの動作の異常の有無を診断する。また、モニタプログラムが本ルーチンとは別途に常時動作している場合は、該当メモリのフラグ領域から通信部１３０Ｓの診断結果を読み取る。本ステップは第３の診断部に相当する（ステップＳ２７）。通信部１３０ＰのＣＰＵは、セカンダリ側通信部１３０Ｓの信号バスの診断実行不能と、セカンダリ側通信部１３０Ｓ自体の異常の有無とを制御部１２０Ｐに通知してバス診断ルーチンを終了する（ステップＰ２８）。
【００６８】
上記第３の診断部（ステップＳ２７）は第１の通信部から第２通信部に切り換える場合のリスクを減少する。例えば、制御部１２０Ｐあるいは通信部１３０ＰのＣＰＵはアクセス許容時間の空き時間が不足してセカンダリ側通信部の信号バス診断を実行できなくとも、セカンダリ側通信部自体に異常がなければ、プライマリ側通信部に異常が生じた場合にセカンダリ側通信部に切り換えることによってシステムダウンが回避される可能性は高いと判断する。また、セカンダリ側通信部の信号バスの診断実行不能とセカンダリ側通信部自体の異常とを判別した場合には、スーパーバイザリステーション２０等に異常報告を行ってセカンダリ側通信部の修理を促し、修理が終わるまでセカンダリ側通信部に切り換えないようにすることができる。
【００６９】
通信部１３０ＰのＣＰＵは、上記条件から通信部１３０Ｓ側のバス診断が可能であると判断した場合（ステップＰ２６；Ｙｅｓ）、セカンダリコントローラ１００Ｓの通信部１３０Ｓにバス診断を指令する（ステップＰ３０）。
【００７０】
通信部１３０ＳのＣＰＵは、診断指令を受けてバス診断ルーチンを実行する（ステップＳ２０）。なお、通信部１３０Ｓは信号バス２（２ａ，２ｂ）に接続されている制御対象となる全Ｉ/Ｏモジュールの設定データ（コンフィギュレーションデータ）を予め保持している。
【００７１】
通信部１３０ＳのＣＰＵは、インタフェース１３７Ｓ及び１３８Ｓから信号バス２ａ、２ｂに接続されたシリアル通信機器３３に向けて当該機器のアドレスＡＤＤＲ１と応答指令を含む所定フォーマットのバス信号を送出し、シリアル通信装置３３からの応答信号を読み取る。次に、ＣＰＵはＩ/Ｏサーバ装置３２に向けて当該機器のアドレスＡＤＤＲ２と応答指令を含む所定フォーマットのバス信号を送出し、Ｉ/Ｏサーバ装置３２からの応答信号を読み取る。同様にして、ＣＰＵは信号バス２（２ａ、２ｂ）に接続されたコントローラ１００Ｓの制御対象となっている全接続機器について逐次応答指令を送出し、応答信号を読み取る。各接続機器からの応答結果は通信部１３０Ｓの内部メモリに記憶される。応答の有無によって通信部１３０Ｓ、信号バス２（２ａ，２ｂ）、バス接続機器３１〜３３…の相互間の接続に異常があるかどうかが判る。
【００７２】
例えば、バス診断の結果（応答の有無）は、以下のように記憶される（ステップＳ２２）。
１  ＡＤＤＲ１  シリアル通信装置  Ａバス  ＯＫ，Ｂバス  ＯＫ
２  ＡＤＤＲ２  Ｉ/Ｏサーバ装置  Ａバス  ＯＫ，Ｂバス  ＯＫ
３  ＡＤＤＲ３  Ｉ/Ｏサーバ装置  Ａバス  ＯＫ，Ｂバス  ＯＫ
４  ＡＤＤＲ４  Ｉ/Ｏサーバ装置  Ａバス  ＯＫ，Ｂバス  ＯＫ
【００７３】
通信部１３０ＳのＣＰＵは、バス診断が終わると、バス診断の結果をプライマリ側の通信部１３０Ｐに送信する（ステップＳ２４）。その後、通信部１３０ＳのＣＰＵは待機状態に戻る（ステップＳ２６）。
【００７４】
通信部１３０ＰのＣＰＵは、セカンダリ側の通信部のバス診断接続試験の結果を受信し、内部メモリに記憶する（ステップＰ３２）。
通信部１３０ＰのＣＰＵは両通信部の信号バスの診断結果を照合する（ステップＰ３４）。両通信部１３０Ｐ及び１３０Ｓの診断結果が正常であるときは（ステップＰ３４；両側正常）、診断を終了し、診断結果（両方正常）を制御部１２０ＰのＣＰＵの通知し、終了する（ステップＰ４６）。
【００７５】
ＣＰＵは通信部１３０Ｐ側の診断結果のみに応答なし（ＮＧ，異常）が存在し、通信部１３０Ｓの診断結果に異常が存在しない場合（ステップＰ３４；Ｐ側異常）、ステップＰ２２と同様の手順で通信部１３０Ｓと信号バス２の接続を再診断する（ステップＰ３６）。信号バス２の再診断は、例えば、２回繰り返すこととしても良い。それにより、診断の確実を図る。再診断の結果が正常である場合には（ステップＰ３８；正常）、診断結果（両方正常）を制御部１２０ＰのＣＰＵの通知し、終了する（ステップＰ４６）。
【００７６】
通信部１３０ＰのＣＰＵは、再診断の結果が通信部１３０Ｐの異常である場合には（ステップＰ３８；異常）、通信部１３０Ｐのバス通信機能に異常があると判断する。通信部１３０Ｐのプライマリ動作を通信部１３０Ｓ側に移動するべく、通信部１３０ＳのＣＰＵにプライマリ動作の交代を指令する（ステップＳ４０）。また、通信部１３０ＰのＣＰＵは、通信部１３０Ｐの異常を制御部１２０ＰのＣＰＵに通知し、通信部１３０Ｐのプライマリ動作、セカンダリ動作を決定している内部レジスタのフラグをセカンダリ動作（スレーブ動作）に切り換える等のフェイル処理を行う（ステップＰ４２）。その後、通信部１３０Ｐは待機状態となる（ステップＰ４６）。
【００７７】
通信部１３０ＳのＣＰＵは、通信部１３０ＰのＣＰＵからプライマリ動作の交替を指令されると、プライマリの通信部として機能するべく内部レジスタのフラグをプライマリ動作（マスター動作）に切り換え、制御部１２０と信号バス２との通信が通信部１３０Ｓを介して行われるようにする等のプライマリ動作移行処理を行う（ステップＳ６０）。
【００７８】
通信部１３０ＰのＣＰＵは、通信部１３０Ｐの診断結果に異常がなく、通信部１３０Ｓの診断結果のみに異常がある場合（ステップＰ３４；Ｓ側異常）、通信部１３０Ｓ側にフェイル処理を行うように指令する。また、制御部１２０ＰのＣＰＵに通信部１３０Ｓの異常を通知する。なお、所定時間以上、例えば、３０秒以上連続して通信部１３０Ｓの異常が発生した場合に通信部１３０Ｓの異常であると判断しても良い（ステップＰ４４）。その後、通信部１３０ＰのＣＰＵは待機状態に戻る（ステップＰ４６）。
【００７９】
通信部１３０ＳのＣＰＵは、通信部１３０ＰのＣＰＵからフェイル処理を行うように指令を受けると、制御部１２０に異常を通知し、スーパーバイザリステーション２０に異常を通知させて修理対応を促す。また、必要により通信部１３０Ｓを非アクティブにしてエラー発生を防止する（ステップＳ４０）。
【００８０】
なお、通信部１３０Ｐと通信部１３０Ｐの診断結果の照合（ステップＰ３４）において、図示しないが、信号バス２（２ａ，２ｂ）に接続された機器の同じＩ/Ｏ部から両通信部に応答がない場合も考えられる。例えば、以下のようにＩ/Ｏサーバ装置（ＡＤＤＲ３）が両通信部に対して応答（返信）しない場合である。
（通信部１３０Ｐのバス診断結果）
１  ＡＤＤＲ１  シリアル通信装置  Ａバス  ＯＫ，Ｂバス  ＯＫ
２  ＡＤＤＲ２  Ｉ/Ｏサーバ装置  Ａバス  ＯＫ，Ｂバス  ＯＫ
３  ＡＤＤＲ３  Ｉ/Ｏサーバ装置  Ａバス  ＮＧ，Ｂバス  ＮＧ
４  ＡＤＤＲ４  Ｉ/Ｏサーバ装置  Ａバス  ＯＫ，Ｂバス  ＯＫ
（通信部１３０Ｓのバス診断結果）
１  ＡＤＤＲ１  シリアル通信装置  Ａバス  ＯＫ，Ｂバス  ＯＫ
２  ＡＤＤＲ２  Ｉ/Ｏサーバ装置  Ａバス  ＯＫ，Ｂバス  ＯＫ
３  ＡＤＤＲ３  Ｉ/Ｏサーバ装置  Ａバス  ＮＧ，Ｂバス  ＮＧ
４  ＡＤＤＲ４  Ｉ/Ｏサーバ装置  Ａバス  ＯＫ，Ｂバス  ＯＫ
【００８１】
このような場合の原因としては、Ｉ/Ｏサーバ装置（信号バスに接続された装置）におけるバス接続ケーブルコネクタの抜け、Ｉ/Ｏモジュールのコネクタ抜け等が考えられる。この状態では、ＮＧとなった原因が通信部のインタフェース部、信号バス２（２ａ，２ｂ）、バス接続装置のＩ/Ｏ部のいずれの故障（接続不良を含む）によるものか判断できない。そこで、例えば、通信部１３０ＰのＣＰＵは、接続診断を一時停止し、別途制御部１２０、スーパーバイザリステーション２０等に異常通知を行って該当部分の修理を促す。修理後に診断を続行する。また、異常を検出した旨制御部１２０等に通知して診断を終了してもよい。
【００８２】
以上のように、上記実施例では、待機冗長構成の通信部（プライマリ通信部１３０Ｐ、セカンダリ通信部１３０Ｓ）において、一方の通信部側から他方の通信部側に診断要求を行い、他方側がこれに応じてバス通信機能の自己診断を行うようにしているので一方の通信部に異常が発生した場合に正常に動作している他方の通信部に動作を円滑に切り換えることができる。
【００８３】
（他の実施例）
図６及び図７は、本発明の他の実施例を示している。図６及び図７において図２及び図３と対応する部分には同一符号を付し、当該部分の説明を省略する。
図６に示す構成においては、図２に示す構成において三番目の（ターシャリ）制御部１２０Ｔを設けた構成としている。
これに対応して、待機冗長動作をする通信部１３０Ｐ及び１３０Ｓは図７に示すように、３つのＵＳＢインタフェースＡ〜Ｃを備えた構成としている。同インタフェースを介してコントローラ１２０Ｐ〜１２０Ｔ側から通信部１３０Ｐに出力される下り方向の３つのデータ信号は先に届いたものが使用される。例えば、３つのデータ信号の内容に相違がある場合には、同じ内容のデータ信号の多数決によって決定することができる。３つのデータ信号が異なる場合には、データ信号を破棄してコントローラ側に再送を要求する。通信部１３０Ｐ側からコントローラ側に出力される上り方向のデータ信号は３つのコントローラ１２０Ｐ〜１２０Ｔに供給される。他の構成は図３の例と同様である。かかる構成においても、通信部１３０Ｐ及び１３０Ｓのうち一方をマスター（プライマリ）動作側とし、他方をスレーブ（セカンダリ）動作とする待機冗長制御を行うことが可能である。
【００８４】
なお、上述した本発明の実施例では、通信部が２つである冗長構成について説明したが、通信部を３つ、４つとして更に増やしても良い。そして、待機側の各通信部のバス接続試験を行うことによって、通信部の切換の際の確実性を増すことができる。
【００８５】
以上説明したように本発明の実施例では、冗長に構成された複数の通信部の各々が自己の通信部と信号バス（及び信号バスに接続された機器）との接続異常の有無を予め判別しているので、１つの通信部に異常が発生した場合に信号バス等との接続異常が発生していない他の通信部に速やかに切り換ることが可能となって切換の際の信頼性が向上する。また、待機冗長制御における切換時間（立ち上げ時間）を短縮することが可能となる。
【産業上の利用可能性】
【００８６】
本発明の冗長通信装置は、少なくとも２つの通信部が相手方の動作を診断し、また、自己のバス接続を診断するので一方の通信部に不具合が生じたときに他方の通信部に切り換えて良いかどうかが予め判るのでより信頼性の高い冗長通信装置を構成することが可能となる。よって、待機冗長コントローラ等の冗長制御系機器に用いて好都合である。
【符号の説明】
【００８７】
１  ユニバーサルネットワーク（ＬＡＮ）、２  ローカルバス（ＬＡＮ）、１０  冗長コントローラ、３１，３２  Ｉ/Ｏサーバ、３３  シリアル通信装置、１００Ｐ  プライマリコントローラ、１００Ｓ  セカンダリコントローラ、１１０Ｐ，１１０Ｓ  （ユニバーサルネットワークの）通信部、１２０Ｐ，１２０Ｓ  コントローラ、１３０Ｐ，１３０Ｓ  （ローカルバスの）通信部
【図１】
2013201664.tif 000003
【図２】
2013201664.tif 000004
【図３】
2013201664.tif 000005
【図４】
2013201664.tif 000006
【図５】
2013201664.tif 000007
【図６】
2013201664.tif 000008
【図７】
2013201664.tif 000009