(57)【要約】【課題】制御装置とＩＯマスタが冗長化された制御システムにおいて、稼働系のＩＯマスタに故障が発生した場合でも制御装置の稼働／待機の切り替えを発生させずにシステムの稼働を継続できるようにする。【解決手段】冗長化された制御装置をデータ同期化バスで接続する。各ＩＯマスタには、データ入出力装置から受信したデータを接続先の制御装置へ転送させる。待機系の制御装置には、ＩＯマスタから受信したデータをデータ同期化バスを介して稼働系の制御装置に転送させる。稼働系の制御装置には、稼働系のＩＯマスタが故障していなければ当該ＩＯマスタにより転送されたデータを用い、稼働系のＩＯマスタの何れかが故障していれば待機系の制御装置により転送されたデータのうちの該当するものを用いて所定の演算を実行させる。【選択図】図９
2015207240.tif 000002
【特許請求の範囲】
【請求項１】
データ入出力装置から送信されたデータを用いて機器制御のための所定の演算を行う稼働系の制御装置と、
待機系の制御装置と、
前記稼働系の制御装置と前記待機系の制御装置の間のデータ通信を仲介する制御装置間通信手段と、
前記データ入出力装置と前記稼働系の制御装置に接続された稼働系の中継装置と、
前記データ入出力装置と前記待機系の制御装置に接続された待機系の中継装置と、
を有し、
前記待機系の制御装置は、前記待機系の中継装置を介して前記データ入出力装置から受信したデータを、前記制御装置間通信手段を介して前記稼働系の制御装置へ転送し、
前記稼働系の制御装置は、前記稼働系の中継装置について停止の有無を判定し、停止していなければ当該中継装置を介して前記データ入出力装置から受信したデータを用いて前記所定の演算を実行し、停止していれば前記制御装置間通信手段を介して前記待機系の制御装置から受信したデータを用いて前記所定の演算を実行する
ことを特徴とする制御システム。
【請求項２】
前記２つの制御装置の各々は、前記制御装置間通信手段を介したデータ通信により前記所定の演算の演算結果の等値化を行った後に当該等値化済の演算結果を表すデータを前記データ入出力装置へ送信し、
前記待機系の中継装置は、前記稼働系の中継装置との通信により当該稼働系の中継装置の停止を検出した場合に、前記待機系の制御装置から受信したデータを前記データ入出力装置へ転送することを特徴とする請求項１に記載の制御システム。
【請求項３】
稼働系および待機系の中継装置よりなる中継装置対を複数有し、中継装置対毎に異なるデータ入出力装置から送信されたデータの中継を行い、
前記稼働系の制御装置は、前記複数の稼働系の中継装置の各々について停止の有無を判定し、停止していなければ当該中継装置により転送されたデータを用いて前記所定の演算を実行し、故障していれば、停止していると判定された中継装置と対になる待機系の中継装置により前記待機系の制御装置へ転送され、前記制御装置間通信手段を介して前記待機系の制御装置から転送されたデータを用いて前記所定の演算を実行する
ことを特徴とする請求項１または請求項２に記載の制御システム。
【請求項４】
前記所定の演算の実行に先立って、前記２つの制御装置の各々は、前記制御装置間通信手段を介したデータ通信により前記所定の演算の実行開始タイミングの同期を行うとともに、各データ入出力装置との通信により各データ入出力装置からのデータ収集タイミングの同期を行うことを特徴とする請求項１〜３の何れか１項に記載の制御システム。
【請求項５】
制御装置間通信手段を介して互いにデータ通信し、一方は稼働系となって機器制御のための所定の演算を行い、他方は待機系となるとともに、各々異なる中継装置を介してデータ入出力装置とデータ通信する制御装置対を形成する制御装置において、
待機系として動作している状況下で前記データ入出力装置から受信したデータを、前記制御装置間通信手段を介して稼働系の制御装置へ転送する転送手段と、
自装置と前記データ入出力装置のデータ通信を中継する中継装置の停止の有無を判定する判定する判定手段と、
稼働系として動作している状況下で、自装置と前記データ入出力装置のデータ通信を中継する中継装置は停止していないと前記判定手段により判定された場合には当該中継装置を介して受信したデータを用いて前記所定の演算を実行し、停止していると判定された場合には前記制御装置間通信手段を介して前記他方の制御装置から受信したデータを用いて前記所定の演算を実行する演算実行手段と、
を有することを特徴とする制御装置。
【請求項６】
制御装置間通信手段を介して互いにデータ通信する２つの制御装置であって、一方は稼働系となって機器制御のための所定の演算を行い、他方は待機系となる制御装置の何れかに接続され、接続先の制御装置とデータ入出力装置との間のデータ通信を中継する中継装置において、
前記２つの制御装置のうちの他方と前記データ入出力装置とに接続された他の中継装置との通信により前記他の中継装置の停止を監視する監視手段と、
自装置が待機系であり、かつ前記他の中継装置の停止を前記監視手段により検出した場合に、接続先の制御装置から受信したデータを前記データ入出力装置へ転送する転送制御手段と、
を有することを特徴とする中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、機器を制御する制御装置を含み、当該制御装置とデータ入出力装置とのデータ通信を仲介する中継装置をさらに含む制御システムに関する。
【背景技術】
【０００２】
この種の制御システムの一例としては、工場や各種プラント等の産業施設において各種操業を制御するために敷設されるシステムが挙げられる。制御システムに含まれる制御装置は、産業施設内に設置されたセンサからのデータの収集やその収集結果に応じた電動機等の駆動制御のための演算を行う。このような制御装置としては、プログラマブルロジックコントローラ（以下、ＰＬＣ）やＤＣＳ（Distributed Control
System：分散型制御システム或いは分散型制御装置）が用いられる。ＤＣＳはＰＬＣに比較して信頼性が高く、一般的なＦＡ（Factory Automation）システムでは制御装置としてＰＬＣが用いられることが多く、高信頼性を要求されるプラント設備では制御装置としてＤＣＳが用いられることが多い。上記センサからのデータの収集や電動機等への指令の入力にはデータ入出力装置が用いられ、データ入出力装置の駆動或いはデータ入出力装置と制御装置との間のデータ通信の中継にはＩＯマスタと呼ばれる通信モジュール（中継装置）が用いられる。なお、以下では、制御システムにおいて制御装置とＩＯマスタとの間のデータ通信を仲介する通信網を「マスタ／スレーブ間ネットワーク」と呼び、ＩＯマスタとデータ入出力装置とのデータ通信を仲介する通信網（シリアルバスでも良い）を「ＩＯネットワーク」と呼ぶ。
【０００３】
この種の制御システムでは制御装置やＩＯマスタの故障等に起因する操業停止を回避するために、これらの装置の冗長化が行われることが一般的である（例えば、特許文献１参照）。制御装置の冗長化とは、２台の制御装置を設け、その一方を稼働系、他方を待機系として動作させることを言う。稼働系の制御装置はセンサ等からのデータの収集や機器制御を行う。待機系の制御装置は、稼働系の制御装置の停止に備え、稼働系が停止するとき（或いは停止したとき）には、稼働系として動作し、監視データの収集や機器制御を継続する。ここで、稼働系の制御装置の停止の具体例としては、何らかの故障や不具合の発生に起因する予期せぬ停止や、保守メンテナンス等による予め計画された停止などが考えられる。待機系の制御装置はこれら２種類の停止の両方に備える。ＩＯマスタの冗長化とは、上記２つの制御装置の各々を別個のＩＯマスタを介してＩＯネットワークに接続することをいう。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１８５３０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来、制御装置とＩＯマスタの両方が冗長化された制御システムでは、稼働系の制御装置が停止した場合（或いは停止する場合）は勿論、稼働系の制御装置に接続されている何れかのＩＯマスタが停止した場合（或いは停止する場合）も、制御装置についての稼働系／待機系の切り替えを行っていた。以下では、稼働系の制御装置とデータ入出力装置との間のデータ通信を中継するＩＯマスタを「稼働系のＩＯマスタ」と呼び、待機系の制御装置とデータ入出力装置との間のデータ通信を中継するＩＯマスタを「待機系のＩＯマスタ」と呼ぶ。
【０００６】
稼働系の停止の検知（例えば、稼働系における故障発生の検知）から稼働系／待機系の切り替えが完了するまでの期間は、機器制御のための演算は停止する。このため、例えば、制御対象の機器に印加する電圧をその演算の実行毎に所定量ずつ引き上げて行く演算の場合、図１１のように、故障等による稼働系の停止の検知から稼働系／待機系の切り替えが完了するまでの期間では電圧値のインクリメントが停止してしまい、操業に重大な影響を与えてしまう虞がある。
【０００７】
この発明は以上のような事情に鑑みてなされたものであり、制御装置を含むとともに当該制御装置とデータ入出力装置とのデータ通信を仲介する中継装置を含み、制御装置と中継装置の両者が冗長化された制御システムにおいて、稼働系の中継装置が停止する場合であっても、制御装置についての稼働系／待機系の切り替えを発生させずにシステムの稼働を継続できるようにする技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明は、データ入出力装置から送信されたデータを用いて機器制御のための所定の演算を行う稼働系の制御装置と、待機系の制御装置と、前記稼働系の制御装置と前記待機系の制御装置の間のデータ通信を仲介する制御装置間通信手段と、前記データ入出力装置と前記稼働系の制御装置に接続された稼働系の中継装置と、前記データ入出力装置と前記待機系の制御装置に接続された待機系の中継装置と、を有する制御システムの各制御装置に以下の処理を実行させる。待機系の制御装置には、待機系の中継装置を介して前記データ入出力装置から受信したデータを、制御装置間通信手段を介して当該稼働系の制御装置へ転送する処理を実行させる。一方、稼働系の制御装置には、稼働系の中継装置について停止の有無を判定し、停止していなければ当該中継装置を介してデータ入出力装置から受信したデータを用いて所定の演算を実行し、停止していれば制御装置間通信手段を介して待機系の制御装置から受信したデータ（すなわち、データ入出力装置から送信され、待機系の中継装置を介して待機系の制御装置へ転送され、制御装置間通信手段を介して待機系の制御装置から稼働系の制御装置へ転送されたデータ）を用いて所定の演算を実行する処理を実行させる。
【０００９】
この制御システムにおいては、稼働系の中継装置が停止しても、稼働系の制御装置は待機系の制御装置経由で転送されたデータを用いて所定の演算を実行することができる。このため、本発明の制御システムにおいては、制御装置についての稼働系／待機系の切り替えを、稼働系の中継装置の停止を理由として行う必要はない。つまり、本発明によれば、稼働系の中継装置が停止した場合（或いは停止する場合）であっても、制御装置についての稼働系／待機系の切り替えを発生させることなく、データ入力装置からのデータ収集を止めずにシステムの稼働を継続することが可能になる。なお、稼働系および待機系の中継装置よりなる中継装置対を上記制御システムに複数設け、中継装置対毎に異なるデータ入出力装置から送信されたデータの中継を行うようにしても良い。この場合、稼働系の制御装置には、複数の稼働系の中継装置の各々について停止の有無を判定し、停止していなければ当該中継装置により転送されたデータを用いて所定の演算を実行し、停止していれば、停止していると判定された中継装置と対になる待機系の中継装置により待機系の制御装置へ転送され、制御装置間通信手段を介して当該待機系の制御装置から当該稼働系の制御装置へ転送されたデータを用いて所定の演算を実行する処理を実行させるようにすれば良い。
【００１０】
より好ましい態様においては、前記２つの制御装置の各々は、前記制御装置間通信手段を介したデータ通信により前記所定の演算の演算結果の等値化を行った後に当該等値化済の演算結果を表すデータを何れかの中継装置対に接続されたデータ入出力装置へ送信する。そして、前記演算結果を表すデータの宛先となるデータ入出力装置に接続されている待機系の中継装置は、自装置と対になる他方の中継装置（すなわち、稼働系の中継装置）との通信により当該他方の中継装置の停止を検出した場合に、待機系の制御装置から受信したデータをその宛先のデータ入出力装置へ転送する。このような態様によれば、稼働系の中継装置の何れかが停止した場合（或いは停止する場合）であっても、制御装置についての稼働系／待機系の切り替えを発生させることなく、データ入出力装置へのデータ出力を止めずにシステムの稼働を継続することが可能になる。
【００１１】
さらに別の好ましい態様においては、前記所定の演算の実行に先立って、前記２つの制御装置の各々は前記制御装置間通信手段を介したデータ通信により前記所定の演算の実行開始タイミングの同期を行うとともに、各データ入出力装置と通信し当該データ入出力装置からのデータ収集タイミングの同期を行うことを特徴とする。このような態様によれば、稼働系と待機系の各々における上記演算の実行タイミングのズレやデータ入出力装置からのデータ収集タイミングのズレに起因した不具合（稼働系／待機系の切り替え時に演算結果が突変する等）の発生を回避することが可能になる。
【００１２】
また、上記課題を解決するために、本発明は、制御装置間通信手段を介して互いにデータ通信し、一方は稼働系となって機器制御のための所定の演算を行い、他方は待機系となるとともに、各々異なる中継装置を介してデータ入出力装置に接続された制御装置対を形成する制御装置に、以下の転送手段、判定手段および演算実行手段を設けることを特徴とする。転送手段は、待機系として動作している状況下で動作する手段である。この転送手段はデータ入出力装置から受信したデータを、制御装置間通信手段を介して稼働系の制御装置へ転送する。判定手段および演算実行手段は稼働系として動作している状況下で動作する手段である。判定手段は、自装置とデータ入出力装置のデータ通信を中継する中継装置の停止の有無を判定する。そして、演算実行手段は、自装置とデータ入出力装置のデータ通信を中継する中継装置は停止していないと判定手段により判定された場合には当該中継装置を介して受信したデータを用いて所定の演算を実行し、停止していると判定された場合には制御装置間通信手段を介して他方の制御装置から受信したデータを用いて所定の演算を実行する。
【００１３】
また、上記課題を解決するために、本発明は、制御装置間通信手段を介して互いにデータ通信する２つの制御装置であって、一方は稼働系となって機器制御のための所定の演算を行い、他方は待機系となる制御装置の何れかに接続され、接続先の制御装置とデータ入出力装置との間のデータ通信を中継する中継装置に、以下の監視手段、および転送手段を設けることを特徴とする。監視手段は、前記２つの制御装置のうちの他方と前記データ入出力装置とに接続された他の中継装置との通信により前記他の中継装置の停止を監視する。転送制御手段は、自装置が待機系であり、かつ前記他の中継装置の停止を前記監視手段により検出した場合に、接続先の制御装置から受信したデータを前記データ入出力装置へ転送する。これら制御装置と中継装置の各々を組み合わせて制御システムを構築することで本発明の制御システムを構築することができる。
【００１４】
また、上記課題を解決するために、本発明は、ＣＰＵ（Central Processing Unit）などの一般的なコンピュータを、制御装置間通信手段を介して互いにデータ通信し、一方は稼働系となって機器制御のための所定の演算を行い、他方は待機系となる制御装置対を形成する制御装置として機能させるプログラムであって、当該コンピュータを上記判定手段および上記演算実行手段として機能させるプログラムを提供する。このようなプログラムにしたがってコンピュータを作動させることで、当該コンピュータを本発明の制御装置として機能させることが可能になるからである。
【００１５】
また、本発明は、コンピュータを、制御装置間通信手段を介して互いにデータ通信する２つの制御装置であって、一方は稼働系となって機器制御のための所定の演算を行い、他方は待機系となる制御装置の何れかに接続され、接続先の制御装置とデータ入出力装置との間のデータ通信を中継する中継装置として機能させるプログラムであって、当該コンピュータを、上記監視手段および上記転送制御手段として機能させるプログラム、を提供する。このようなプログラムにしたがってＣＰＵなどの一般的なコンピュータを作動させることで、当該コンピュータを本発明の中継装置として機能させることが可能になるからである。
【発明の効果】
【００１６】
本発明によれば、制御装置を含むとともに当該制御装置とデータ入出力装置とのデータ通信を中継する中継装置を含み、制御装置と中継装置の両者が冗長化された制御システムにおいて、稼働系の中継装置が停止する（或いは停止した）場合であっても、制御装置についての稼働系／待機系の切り替えを発生させずにシステムの稼働を継続することが可能になる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態の制御システム１の構成例を示す図である。
【図２】制御システム１に含まれる制御装置１０の構成例を示す図である。
【図３】制御装置１０の制御部１１０が制御プログラム１３４２にしたがって実行するタクト同期処理を説明するための図である。
【図４】稼働系の制御装置１０の揮発性記憶部１３２に格納される管理テーブルの一例を示す図である。
【図５】稼働系の制御装置１０の制御部１１０が制御プログラム１３４２にしたがって実行するデータ切り替え処理の流れを示すフローチャートである。
【図６】制御システム１に含まれるＩＯマスタ２００の構成例を示す図である。
【図７】待機系の制御装置１０に接続されているＩＯマスタ２００の制御部２１０が中継制御プログラム２４４２にしたがって実行する転送制御処理の流れを示すフローチャート。
【図８】制御装置１０およびＩＯマスタ２００の動作例を示す図である。
【図９】制御装置１０およびＩＯマスタ２００の動作例を示す図である。
【図１０】本実施形態の効果を説明するための図である。
【図１１】制御装置とＩＯマスタの両者が冗長化された従来の制御システムの問題点を説明するための図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照し、この発明の実施形態について説明する。
（Ａ：構成）
図１は、本発明の一実施形態の制御システム１の構成例を示す図である。制御システム１は、工場などの産業施設内に敷設され、当該産業施設における操業を制御するためのコンピュータシステムである。図１に示すように、制御システム１は、制御装置１０Ａおよび制御装置１０Ｂの２つの制御装置を含んでいる。制御装置１０Ａおよび制御装置１０Ｂの各々は何れもＰＬＣである。図１に示すように、制御装置１０Ａはマスタ／スレーブ間ネットワーク６０Ａに接続されており、制御装置１０Ｂはマスタ／スレーブ間ネットワーク６０Ｂに接続されている。マスタ／スレーブ間ネットワーク６０ＡにはＩＯマスタ２００＿１ＡとＩＯマスタ２００＿２Ａが接続されており、マスタ／スレーブ間ネットワーク６０ＢにはＩＯマスタ２００＿１ＢとＩＯマスタ２００＿２Ｂが接続されている。
【００１９】
以下では、マスタ／スレーブ間ネットワーク６０Ａに接続されている制御装置を「Ａ系の制御装置」と呼び、同マスタ／スレーブ間ネットワーク６０Ａに接続されているＩＯマスタを「Ａ系のＩＯマスタ」と呼ぶ。同様に、マスタ／スレーブ間ネットワーク６０Ｂに接続されている制御装置を「Ｂ系の制御装置」と呼び、同マスタ／スレーブ間ネットワーク６０Ｂに接続されているＩＯマスタを「Ｂ系のＩＯマスタ」と呼ぶ。図１に示す制御システム１では制御装置１０Ａが「Ａ系の制御装置」であり、制御装置１０Ｂが「Ｂ系の制御装置」である。また、ＩＯマスタ２００＿１ＡとＩＯマスタ２００＿２Ａは「Ａ系のＩＯマスタ」であり、ＩＯマスタ２００＿１ＢとＩＯマスタ２００＿２Ｂは「Ｂ系のＩＯマスタ」である。
【００２０】
図１に示すように、ＩＯマスタ２００＿１ＡとＩＯマスタ２００＿１ＢはＩＯネットワーク４０＿１に接続されている。ＩＯネットワーク４０＿１にはデータ入出力装置５０＿１およびデータ入出力装置５０＿２が接続されている。ＩＯマスタ２００＿１Ａは、データ入出力装置５０＿１およびデータ入出力装置５０＿２の各々と制御装置１０Ａとの間のデータ通信を中継する中継装置である。同様に、ＩＯマスタ２００＿１Ｂは、データ入出力装置５０＿１およびデータ入出力装置５０＿２の各々と制御装置１０Ｂとの間のデータ通信を中継する中継装置である。以下では、ＩＯネットワーク４０＿１に接続されている一群の装置（すなわち、ＩＯマスタ２００＿１ＡおよびＩＯマスタ２００＿１Ｂとデータ入出力装置５０＿１およびデータ入出力装置５０＿２）を「ＩＯマスタ局２０＿１」と総称する場合がある。
【００２１】
ＩＯマスタ２００＿２ＡとＩＯマスタ２００＿２ＢはＩＯネットワーク４０＿２に接続されている。ＩＯネットワーク４０＿２にはデータ入出力装置５０＿３およびデータ入出力装置５０＿４が接続されている。ＩＯマスタ２００＿２Ａは、データ入出力装置５０＿３およびデータ入出力装置５０＿４の各々と制御装置１０Ａとの間のデータ通信を中継する中継装置である。同様に、ＩＯマスタ２００＿２Ｂは、データ入出力装置５０＿３およびデータ入出力装置５０＿４の各々と制御装置１０Ｂとの間のデータ通信を中継する中継装置である。以下では、ＩＯネットワーク４０＿２に接続されている一群の装置（すなわち、ＩＯマスタ２００＿２ＡおよびＩＯマスタ２００＿２Ｂとデータ入出力装置５０＿３およびデータ入出力装置５０＿４）を「ＩＯマスタ局２０＿２」と総称する場合がある。
【００２２】
図１に示す制御システム１では、ＩＯマスタ局２０＿１とＩＯマスタ局２０＿２の各々には、夫々を一意に示す識別子（局番号）が予め割り当てられている。そして、データ入出力装置５０＿１およびデータ入出力装置５０＿２の各々にはＩＯネットワーク４０＿１においてこれら各装置を一意に識別する識別子（例えば、ＩＯネットワーク内アドレス）が予め割り当てられており、データ入出力装置５０＿３およびデータ入出力装置５０＿４の各々にも、ＩＯネットワーク４０＿２においてこれら各装置を一意に識別するＩＯネットワーク内アドレスが割り当てられている。制御装置１０Ａおよび制御装置１０Ｂの各々は、データ入出力装置５０＿１〜５０＿４の何れかを相手装置としてデータの送信を行う場合、その相手装置を局番号とＩＯネットワーク内アドレスの組み合わせで指定する。
【００２３】
図１に示すように制御装置１０Ａと制御装置１０Ｂはデータ同期化バス３０を介して互いに接続されている。データ同期化バス３０は制御装置１０Ａと制御装置１０Ｂの間のデータ通信を仲介する制御装置間通信手段の役割を果たす。制御システム１では、制御装置１０Ａと制御装置１０Ｂのうちの一方が稼働系として振る舞い、他方は待機系として振る舞う。例えば、制御装置１０Ａと制御装置１０Ｂのうち先に電源を投入された方が稼働系として振る舞うといった具合である。そして、制御装置１０Ａと制御装置１０Ｂの各々は自装置の稼働状態（稼働系であるのか、それとも待機系であるのか）と故障の有無等とを示す状態データをデータ同期化バス３０を介して他方へ送信する処理を周期的に実行する。例えば、制御装置１０Ａが稼働系である場合、制御装置１０Ｂは、データ同期化バス３０を介して受信した状態データを解析して制御装置１０Ａの停止（故障に起因する予期せぬ停止や保守メンテナンス等による計画的な停止）を検知すると、以降、稼働系として振る舞う。一方、制御装置１０Ａは、データ同期化バス３０を介して受信した状態データを解析して制御装置１０Ｂが稼働系としての動作を開始したことを検知すると、以降、待機系として振る舞う。
【００２４】
つまり、本実施形態の制御システム１は、制御装置が冗長化されているとともに、データ入出力装置と制御装置との間のデータ通信を中継する中継装置（ＩＯマスタ）が冗長化された制御システムである。なお、本実施形態では、制御装置１０Ａと制御装置１０Ｂのハードウェア構成は同一であるため、以下では、制御装置１０Ａと制御装置１０Ｂの両者を区別する必要がない場合には「制御装置１０」と表記する。ＩＯマスタ局２０＿１とＩＯマスタ局２０＿１についても各々のハードウェア構成は同一であるため、ＩＯマスタ局２０＿１とＩＯマスタ局２０＿２の各々を区別する必要がない場合には、「ＩＯ局マスタ２０」と表記する。そして、ＩＯマスタ局２０に含まれる２つのＩＯマスタについてもハードウェア構成は同一であるため、各々を区別する必要がない場合には「ＩＯマスタ２００」と表記する。
【００２５】
制御装置とＩＯマスタとが冗長化された従来の制御システムでは、稼働系の制御装置そのものが停止する場合だけでなく、稼働系のＩＯマスタの何れかが停止する場合も、制御装置１０についての稼働系／待機系の切り替えが行われた。これに対して、本実施形態では、データ同期化バス３０を介した通信の不通等によって稼働系の故障が検出された場合など稼働系の制御装置そのものが停止する場合には稼働系／待機系の切り替えは行われるものの、稼働系のＩＯマスタ２００の停止が発生したとしても制御装置１０についての稼働系／待機系の切り替えは行われない。本実施形態では、制御装置１０およびＩＯマスタ２００の各々に本実施形態の特徴を顕著に示す処理を実行させることで、稼働系のＩＯマスタ２００が停止したとしても、制御装置１０についての稼働系／待機系の切り替えを発生させずにシステムの稼働を継続することが可能となっている。以下、本実施形態の特徴を顕著に示す制御装置１０およびＩＯマスタ２００を中心に説明する。また、以下では、稼働系のＩＯマスタ２００が停止する場合の具体例として稼働系のＩＯマスタに何らかの故障が発生する場合を取りあげるが、保守メンテナンス等により稼働系のＩＯマスタが停止する場合も同様である。
【００２６】
（Ａ−１：制御装置１０の構成）
図２は、制御装置１０のハードウェア構成の一例を示す図である。図２に示すように制御装置１０は、制御部１１０、通信インタフェース（以下、「Ｉ／Ｆ」と略記）部１２０、記憶部１３０、およびこれら構成要素間のデータ授受を仲介するバス１４０を含んでいる。制御部１１０は例えばＣＰＵである。制御部１１０は、記憶部１３０（より正確には不揮発性記憶部１３４）に格納されている制御プログラム１３４２を実行することで制御装置１０の制御中枢として機能する。制御部１１０が制御プログラム１３４２にしたがって実行する処理の詳細については後に明らかにする。また、制御部１１０は、前述したデータ同期化バス３０に接続されている。
【００２７】
通信Ｉ／Ｆ部１２０は、例えばＮＩＣ（Network Interface Card）であり、マスタ／スレーブ間ネットワークに接続されている。より詳細に説明すると、制御装置１０Ａの通信Ｉ／Ｆ部１２０はマスタ／スレーブ間ネットワーク６０Ａに接続されており、制御装置１０Ｂの通信Ｉ／Ｆ部１２０はマスタ／スレーブ間ネットワーク６０Ｂに接続されている。通信Ｉ／Ｆ部１２０は、接続先のマスタ／スレーブ間ネットワークを介して送信されてくるデータを受信し制御部１１０に引き渡す一方、制御部１１０から引き渡されたデータを当該マスタ／スレーブ間ネットワークに送出する。
【００２８】
記憶部１３０は、図２に示すように、揮発性記憶部１３２と不揮発性記憶部１３４を含んでいる。揮発性記憶部１３２は例えばＲＡＭ（Random Access Memory）などの揮発性メモリである。揮発性記憶部１３２は制御プログラム１３４２を実行する際のワークエリアとして制御部１１０によって利用される。また、揮発性記憶部１３２には、当該揮発性記憶部１３２を有する制御装置１０が稼働系として動作しているのかそれとも待機系として動作しているのかを示す稼働／待機フラグが格納される。不揮発性記憶部１３４は例えばフラッシュＲＯＭ（Read Only Memory）などの不揮発性メモリである。不揮発性記憶部１３４には、制御プログラム１３４２と機器制御のためのアプリケーションプログラム（図２では図示略）が予め格納されている。これらプログラムの役割は以下の通りである。
【００２９】
不揮発性記憶部１３４に記憶されているアプリケーションプログラムは、機器制御のための所定の演算を、データ入出力装置から送信されてくるデータを入力データとして制御部１１０に実行させるプログラムである。制御プログラム１３４２は、当該アプリケーションプログラムを一定の周期（以下、当該周期のことを「タクト」と呼ぶ）で周期的に実行する処理、およびタクトの開始タイミング等を稼働系と待機系とで同期させるタクト同期処理を制御部１１０に実行させるプログラムである。制御プログラム１３４２は、制御装置１０の電源（図示省略）を契機としてその実行が開始される。
【００３０】
上記アプリケーションプログラムを繰り返し実行する際の単位であるタクトには、データ入出力装置５０＿１〜５０＿４の各々からのデータ入力、上記演算の実行、演算結果の等値化および等値化済の演算結果を表すデータの送達の各処理が含まれる。そして、１タクトの時間長Ｔは、データ入出力装置５０＿１〜５０＿４の各々からのデータ収集、上記演算の実行、演算結果の等値化および等値化済の演算結果を表すデータの送達に要する時間長よりも充分に長く設定されている。
【００３１】
制御部１１０が制御プログラム１３４２にしたがって実行するタクト同期処理の処理内容は以下の通りである。なお、以下に説明する例では、制御装置１０Ａが稼働系であるとする。制御装置１０Ａにおける最初のタクトの開始の際に制御装置１０Ａの制御部１１０は、図３に示すように、データ同期化バス３０を介して制御装置１０Ｂに同期フレームＳＦを送信する。以降、制御装置１０Ａの制御部１１０はタイマを用いて時間Ｔの経過を計測し、時間Ｔが経過する毎に新たなタクトを開始するとともに当該タイマをリセットする。
【００３２】
図３に示すように、上記の要領で制御装置１０Ａから制御装置１０Ｂへ送信された同期フレームＳＦがその送信時刻から時間Δｔ（ただし、Δｔはタクトの時間長Ｔに比較して充分に短い）だけ遅れて制御装置１０Ｂに到達したとする。制御装置１０Ｂの制御部１１０は、データ同期化バス３０を介して同期フレームＳＦを受信すると、図３に示すように、最初のタクトを開始するとともに、データ同期化バス３０を介して確認応答フレームＡＦを返信する。また、待機系の制御装置１０の制御部１１０もタイマを用いてタクトの周期的な実行を開始する。この時点では制御装置１０Ａにおけるタクトの開始タイミングと制御装置１０Ｂにおけるタクトの開始タイミングはΔｔだけズレている。
【００３３】
図３に示すように、上記の要領で制御装置１０Ａから制御装置１０Ｂへ送信された同期フレームＳＦがその送信時刻から時間Δｔだけ遅れて（すなわち、最初のタクトの開始時点から時間２Δｔ経過後に）制御装置１０Ｂに到達したとする。制御装置１０Ａの制御部１１０は、確認応答フレームＡＦを受信すると、その受信時刻と最初のタクトの開始時刻との時間差（図３に示す例では、２Δｔ）を求め、当該時間差の半分の値を示す遅延時間通知フレームＤＦを次のタクトの開始の際にデータ同期化バス３０を介して制御装置１０Ｂへ送信する。
【００３４】
制御装置１０Ｂの制御部１１０は、遅延時間通知フレームＤＦの示す値（図３に示す例では、Δｔ）の分だけタイマのカウント値を大きな値に書き換える。その結果、当該タイマのタイムアウトがΔｔだけ早まる。これにより、以降のタクトの開始タイミングが稼働系と待機系とで揃うことになる。このようなタクトの開始タイミングの同期を行うのは、稼働系／待機系の切り替えの際にタクトの開始タイミングのズレに起因する演算結果の突変などの不具合が生じないようにするためである。なお、図３では詳細な図示を省略したが、データ入出力装置５０＿１〜５０＿４の各々は、１タクトにおいて互いに重複しないタイミングで制御装置１０にデータを送信する。稼働系および待機系の各制御装置１０の制御部１１０は、データ入出力装置５０＿１〜５０＿４の各々との間でも同様に同期フレームＳＦ、確認応答フレームＡＦおよび遅延時間通知フレームＤＦを用いた通信を行い、１タクトにおける各データ入出力装置のデータ送信タイミング（制御装置１０から見ればデータ収集タイミング）を稼働系と待機系とで同期させる。各データ入出力装置からのデータ収集タイミングのズレに起因する演算結果の突変を回避するためである。
【００３５】
待機系の制御装置１０においては、制御プログラム１３４２にしたがって作動している制御部１１０は、前述した１タクトにおけるデータ入力処理において稼働系へのデータ転送処理を実行する。このデータ転送処理では、制御部１１０は、通信Ｉ／Ｆ部１２０を介して受信したデータの全てをデータ同期化バス３０を介して稼働系の制御装置１０へ転送する。一方、稼働系の制御装置１０においては、制御プログラム１３４２にしたがって作動している制御部１１０は、前述した１タクトにおけるデータ入力処理において稼働系のＩＯマスタ２００と通信し、各ＩＯマスタ局２０に含まれるＩＯマスタ２００についての故障の有無を表す管理テーブルを生成して揮発性記憶部１３２に書き込む。
【００３６】
図４は、上記管理テーブルの一例を示す図である。
図４に示すように、管理テーブルには、制御システム１に含まれるＩＯマスタ局２０の各々を一意に示す局番号に対応付けて、その局番号の示すＩＯマスタ局２０に含まれるＡ系およびＢ系の各ＩＯマスタ２００の故障の有無を示す故障フラグ（値が”ＦＡＬＳＥ”であれば故障がないこと（すなわち停止していないこと）を意味し、値が”ＴＲＵＥ”であれば故障があること（すなわち、停止していること）を意味する）が系毎に格納される。本実施形態では、ＩＯマスタ局２０＿１の局番号は”１”であり、ＩＯマスタ局２０＿２の局番号は”２”である。例えば、図４に示す管理テーブルは、ＩＯマスタ２００＿１Ａ、２１０＿１Ｂおよび２１０＿２Ｂには故障は無く、ＩＯマスタ２００＿２Ａには何らかの故障が有ることを表している。
【００３７】
そして、１タクトにおける演算実行処理では、稼働系の制御装置１０の制御部１１０は、図５に示す入力データ切り替え処理を制御プログラム１３４２にしたがって実行し、上記所定の演算を実行する。図５は入力データ切り替え処理の流れを示すフローチャートである。図５に示すように、制御部１１０は、稼働系のＩＯマスタ２００の何れかに故障が有るか否かを上記管理テーブルを参照して判定する（ステップＳＡ１００）。例えば、制御装置１０Ａが稼働系であれば、当該制御装置１０Ａの制御部１１０は各局番号に対応付けて管理テーブル（図４参照）に格納されているＡ系のフラグが全て”ＦＡＬＳＥ”であれば、稼働系のＩＯマスタ２００に故障はないと判定し、ステップＳＡ１００の判定結果は“Ｎｏ”となる。これに対して、Ａ系のフラグの何れかが“ＴＲＵＥ”であれば、ステップＳＡ１００の判定結果は“Ｙｅｓ”となる。
【００３８】
ステップＳＡ１００の判定結果が“Ｎｏ”であれば、制御部１１０は、稼働系の各ＩＯマスタ２００により転送されたデータを入力データとし（ステップＳＡ１１０）、上記アプリケーションプログラムにしたがって所定の演算を実行する（ステップＳＡ１３０）。これに対して、ステップＳＡ１００の判定結果が“Ｙｅｓ”であれば、制御部１１０は、故障のない稼働系のＩＯマスタ２００から転送されたデータ、および故障している稼働系のＩＯマスタ２００と対になる待機系のＩＯマスタ２００により転送されたデータ（すなわち、待機系の制御装置１０から転送されたデータ）を入力データとし（ステップＳＡ１２０）、上記ステップＳＡ１３０の処理を実行する。なお、待機系の制御装置１０においては、１タクトにおける演算実行処理において待機系のＩＯマスタ２００により転送されたデータを用いて上記所定の演算を実行しても良いが、後述する等値化処理が行われるため、上記所定の演算の実行を省略しても良い。待機系の制御装置１０に上記所定の演算を実行させるようにすれば、制御システム１は所謂ホットスタンバイ方式の制御システムとなり、上記所定の演算の実行を省略すれば、制御システム１は所謂ウォームスタンバイ方式の制御システムとなる。
【００３９】
等値化処理とは、稼働系の制御装置１０における演算結果を表すデータをデータ同期化バス３０を介して待機系の制御装置１０に送信し、待機系の制御装置１０に記憶させる（待機系において上記演算を実行する場合には、その演算結果を表すデータを上記稼働系における演算結果を表すデータで上書きする）処理である。そして、稼働系および待機系の各制御装置１０の各々において制御プログラム１３４２にしたがって作動している制御部１１０は、上記所定の演算の演算結果を表すデータをデータ入出力装置５０＿１〜５０＿４の何れかに与える必要がある場合には、上記等値化済の演算結果を表すデータをその宛先のデータ入出力装置へ送信する。
以上が制御装置１０の構成である。
【００４０】
（Ａ−２：ＩＯマスタ２００の構成）
次いで、図６を参照しつつＩＯマスタ２００の構成を説明する。
図６は、ＩＯマスタ２００の構成例を示す図である。図６に示すように、ＩＯマスタ２００は、制御部２１０、第１通信Ｉ／Ｆ部２２０、第２通信Ｉ／Ｆ部２３０、記憶部２４０、およびこれら構成要素間のデータ授受を仲介するバス２５０を含んでいる。制御部２１０は、制御装置１０における制御部１１０と同様にＣＰＵである。制御部２１０は記憶部２４０（より正確には不揮発性記憶部２４４）に記憶されている中継制御プログラム２４４２を実行することによりＩＯマスタ２００の制御中枢として機能する。中継制御プログラム２４４２にしたがって制御部２１０が実行する処理の詳細については後に明らかにする。
【００４１】
第１通信Ｉ／Ｆ部２２０および第２通信Ｉ／Ｆ部２３０は、制御装置１０における通信Ｉ／Ｆ部１２０と同様にＮＩＣである。第１通信Ｉ／Ｆ部２２０はマスタ／スレーブ間ネットワークに接続されており、第２通信Ｉ／Ｆ部２３０はＩＯネットワークに接続されている。より詳細に説明すると、Ａ系のＩＯマスタ２００の第１通信Ｉ／Ｆ部２２０はマスタ／スレーブ間ネットワーク６０Ａに接続されており、Ｂ系のＩＯマスタ２００の第１通信Ｉ／Ｆ部２２０はマスタ／スレーブ間ネットワーク６０Ｂに接続されている。ＩＯマスタ局２０＿１に含まれるＩＯマスタ２００の第２通信Ｉ／Ｆ部２３０はＩＯネットワーク４０＿１に接続されており、ＩＯマスタ局２０＿２に含まれるＩＯマスタ２００の第２通信Ｉ／Ｆ部２３０はＩＯネットワーク４０＿２に接続されている。第１通信Ｉ／Ｆ部２２０は、マスタ／スレーブ間ネットワークを介して自局宛てに送信されてくるデータを受信して制御部２１０に引き渡す一方、制御部２１０から引き渡されたデータを当該ネットワークへ送出する。第２通信Ｉ／Ｆ部２３０は、ＩＯネットワークから自装置の属する系の制御装置１０宛てに送信されてくるデータを受信して制御部２１０へ引き渡す一方、制御部２１０から引き渡されたデータを当該ネットワークへ送出する。
【００４２】
記憶部２４０は、図６に示すように、揮発性記憶部２４２と不揮発性記憶部２４４を含んでいる。揮発性記憶部２４２は制御装置１０における揮発性記憶部１３２と同様に揮発性メモリであり、不揮発性記憶部２４４は制御装置１０における不揮発性記憶部１３４と同様に不揮発性メモリである。揮発性記憶部２４２は、中継制御プログラム２４４２を実行する際のワークエリアとして制御部２１０によって利用される。不揮発性記憶部２４４には、中継制御プログラム２４４２が予め格納されている。制御部２１０は、ＩＯマスタ２００の電源投入（図示略）を契機として中継制御プログラム２４４２を揮発性記憶部２４２に読み出しその実行を開始する。
【００４３】
中継制御プログラム２４４２にしたがって作動している制御部２１０は、第２通信Ｉ／Ｆ部２３０から引き渡されたデータを第１通信Ｉ／Ｆ部２２０に引き渡す処理を実行する。すなわち、第２通信Ｉ／Ｆ部２３０に接続されているＩＯネットワークを介してデータ入出力装置から自装置の属する系の制御装置宛てに送信されてくるデータは無条件に、第１通信Ｉ／Ｆ部２２０に接続されているマスタ／スレーブ間ネットワークを介して当該ネットワークに接続されている制御装置へ転送される。この点は従来のＩＯマスタと同様である。
【００４４】
加えて、中継制御プログラム２４４２にしたがって作動している制御部２１０は、同じ系に属する制御装置１０とマスタ／スレーブ間ネットワークを介して通信し、当該制御装置１０から稼働／待機フラッグを取得して揮発性記憶部２４２に書き込む処理と、同じＩＯマスタ局に属する他系のＩＯマスタへＩＯネットワークを介して自装置の故障の有無を示す状態データを送信する処理を周期的に実行する。つまり、中継制御プログラム２４４２にしたがって作動している制御部２１０は、同じＩＯマスタ局に属する他系のＩＯマスタから受信した状態データを参照して当該他のＩＯマスタの稼働状態を監視する監視手段の役割を果たす。なお、稼働系のＩＯマスタ２００（すなわち、揮発性記憶部２４２に記憶されている稼働／待機フラグの値が稼働系を示す値のＩＯマスタ２００）の制御部２１０は、自装置の稼働状態を示す状態データと当該ＩＯマスタ２００と対になる他のＩＯマスタ２００の状態データとを、自装置と同じ系に属する制御装置１０へ当該制御装置１０からの要求に応じて（或いは周期的に）送信する処理も実行する。
【００４５】
そして、中継制御プログラム２４４２にしたがって作動している制御部２１０は、第１通信Ｉ／Ｆ部２２０を介して自局宛てのデータを受信したことを契機として、図７に示す転送制御処理を実行する。図７に示すように、この転送制御処理では、制御部２１０は、まず、揮発性記憶部２４２に記憶されている稼働／待機フラグを参照し、自装置が稼働系のＩＯマスタ２００であるか否かを判定する（ステップＳＢ１００）。ステップＳＢ１００の判定結果が“Ｙｅｓ”であれば、制御部２１０は第１通信Ｉ／Ｆ部２２０を介して受信したデータを第２通信Ｉ／Ｆ部２３０に与え（ステップＳＢ１２０）、当該転送制御処理を終了する。
【００４６】
これに対して、ステップＳＢ１００の判定結果が“Ｎｏ”であれば、制御部２１０は、自装置と対になるＩＯマスタ２００（すなわち、稼働系のＩＯマスタ）が故障しているか否かを、当該ＩＯマスタから受信した状態データを参照して判定する（ステップＳＢ１１０）。ステップＳＢ１１０の判定結果が“Ｙｅｓ”であれば、制御部２１０はステップＳＢ１２０の処理を実行して本転送制御処理を終了する。逆に、ステップＳＢ１１０の判定結果が“Ｎｏ”であれば、制御部２１０はステップＳＢ１２０の処理を実行することなく、本転送制御処理を終了する。このため、本実施形態では、稼働系のＩＯマスタ２００に何らかの故障が発生しても、制御装置１０についての稼働系／待機系の切り替えを行うことなくデータ入出力装置へのデータ出力を継続し、システムの稼働を継続することができる。
以上がＩＯマスタ２００の構成である。
【００４７】
（Ｂ：動作）
以下、データ入出力装置５０＿１から出力されたデータを使用して所定の演算を行い、その演算結果を表すデータをデータ入出力装置５０＿１に与える場合を例にとって制御装置１０およびＩＯマスタ２００の動作を説明する。なお、以下では、制御装置１０Ａが稼働系であり、制御装置１０Ｂが待機系である場合について説明する。また、以下に説明する動作例ではタクトの開始タイミングおよび各タクトにおけるデータ収集タイミングの同期は完了している場合について説明する。
【００４８】
（Ｂ−１：稼働系のＩＯマスタ２００が故障していない場合の動作）
まず、データ入出力装置５０＿１と制御装置１０Ａとの間のデータ通信を中継するＩＯマスタ２００＿１Ａ、およびデータ入出力装置５０＿１と制御装置１０Ｂとの間のデータ通信を中継するＩＯマスタ２００＿１Ｂの何れにも故障が発生しない場合の動作例を図８を参照しつつ説明する。データ入出力装置５０＿１は、各タクトの予め定められた送信タイミングにおいて、当該データ入出力装置５０＿１に接続されている機器から取得したデータ（以下、入力データ）を制御装置１０Ａおよび制御装置１０Ｂの各々へ宛てて送信する（図８：Ｓ１００ＡおよびＳ１００Ｂ）。なお、データ入出力装置５０＿１から制御装置１０Ａへ送信される入力データと、データ入出力装置５０＿１から制御装置１０Ｂへ送信される入力データは同一内容のデータであるが、以下では、前者を「入力データＡ」と呼び、後者を「入力データＢ」と呼ぶ。
【００４９】
ＩＯマスタ２００＿１Ａの制御部２１０は、制御装置１０Ａ宛てに送信されたデータ（本動作例では、入力データＡ）をＩＯネットワーク４０＿１を介して受信すると、無条件に、当該データをマスタ／スレーブ間ネットワーク６０Ａを介して制御装置１０Ａに転送する（図８：Ｓ２００Ａ）。同様に、ＩＯマスタ２００＿１Ｂの制御部２１０は、制御装置１０Ｂ宛てに送信されたデータ（本動作例では、入力データＢ）をＩＯネットワーク４０＿１を介して受信すると、無条件に、当該データをマスタ／スレーブ間ネットワーク６０Ｂを介して制御装置１０Ｂに転送する（図８：Ｓ２００Ｂ）。
【００５０】
前述したように本動作例では制御装置１０Ａが稼働系であり、制御装置１０Ｂは待機系である。このため、制御装置１０Ｂの制御部１１０は、通信Ｉ／Ｆ部１２０を介して入力データＢを受信すると、当該入力データＢをデータ同期化バス３０を介して制御装置１０Ａに転送する（図８：ステップＳ３００）。その結果、制御装置１０Ａは、入力データＡと入力データＢの両方を取得するのであるが、本実施形態では稼働系のＩＯマスタ（すなわち、ＩＯマスタ２００＿１Ａ）には故障は発生していないため、制御装置１０Ａの制御部１１０が実行するデータ切り替え処理のステップＳＡ１００の判定結果はＮｏとなり、ステップＳＡ１１０の処理が実行される。つまり、制御装置１０Ａの制御部１１０は、稼働系のＩＯマスタ２００により転送されたデータ（すなわち、入力データＡ）を用いて所所定の処理を実行し（ステップＳＡ１３０）、データ入出力装置５０＿１に与える出力データを生成する。
【００５１】
上記の要領で出力データの生成を完了すると、制御装置１０Ａの制御部１１０は前述した等値化処理を行う。すなわち、制御部１１０は、上記出力データをデータ同期化バス３０を介して制御装置１０Ｂへ送信し（図８：Ｓ４００）、記憶させる。そして、制御装置１０Ａの制御部１１０はデータの宛先として局番号＝１およびデータ入出力装置５０＿１のＩＯネットワーク内アドレスを指定し、上記出力データをマスタ／スレーブ間ネットワーク６０Ａに送出する（図８：Ｓ５００Ａ）。同様に、制御装置１０Ｂの制御部１１０はデータの宛先としてデータ入出力装置５０＿１を指定し、制御装置１０Ａから受け取った出力データをマスタ／スレーブ間ネットワーク６０Ｂに送出する（図８：Ｓ５００Ｂ）。以下では、制御装置１０Ａからデータ入出力装置５０＿１へ送信される出力データを「出力データＡ」と呼び、制御装置１０Ｂからデータ入出力装置５０＿１へ送信される出力データを「出力データＢ」と呼ぶ。
【００５２】
出力データＡおよび出力データＢでは、宛先の局番号として１が指定されている。このため、出力データＡはＩＯマスタ２００＿１Ａによって受信され、出力データＢはＩＯマスタ２００＿１Ｂによって受信される。ＩＯマスタ２００＿１Ａの制御部２１０は出力データＡの受信を契機として転送制御処理（図７参照）を実行し、ＩＯマスタ２００＿１Ｂの制御部２１０は出力データＢの受信を契機として同転送制御処理を実行する。本動作例では、ＩＯマスタ２００＿１ＡおよびＩＯマスタ２００＿１Ｂの何れにも故障は発生しておらず、ＩＯマスタ２００＿１Ａが稼働系である。このため、ＩＯマスタ２００＿１Ａの制御部２１０の実行する転送制御処理では、ステップＳＢ１００の判定結果は“Ｙｅｓ”となり、ステップＳＢ１２０の処理が実行される。これに対して、ＩＯマスタ２００＿１Ｂの制御部２１０の実行する転送制御処理では、ステップＳＢ１００の判定結果は“Ｎｏ”となり、ステップＳＢ１１０の判定結果も“Ｎｏ”となるため、ステップＳＢ１２０の処理が実行されることはない。したがって、本動作例では、図８に示すようにＩＯマスタ２００＿１Ａによって出力データＡがデータ入出力装置５０＿１へ転送される（Ｓ６００）。以上がＩＯマスタ２００＿１ＡおよびＩＯマスタ２００＿１Ｂの何れにも故障が発生しない場合の動作である。
【００５３】
（Ｂ−２：稼働系のＩＯマスタ２００に故障が発生した場合の動作）
次いで、図８におけるＳ６００の処理の実行直後に稼働系のＩＯマスタ２００（すなわち、ＩＯマスタ２００＿１Ａ）に故障が発生した場合の動作を図９を参照しつつ説明する。なお、本実施形態の制御システム１では、稼働系のＩＯマスタ２００に故障が発生しても、制御装置１０についての稼働系／待機系の切り替えは行われないのであるから、ＩＯマスタ２００＿１Ａの故障発生後も、制御装置１０Ａが稼働系であり、制御装置１０Ｂは待機系である。
【００５４】
ＩＯマスタ２００＿１Ａに故障が発生したタクトの次のタクトでは、データ入出力装置５０＿１は、ＩＯマスタ２００＿１Ａの故障を検出し、当該タクトの予め定められたタイミングにおいて入力データＢを制御装置１０Ｂのみへ宛てて送信する（図９：Ｓ１００Ｂ）。なお、上記のような故障検出をデータ入出力装置５０＿１に行わせず、制御装置１０Ａ宛ての入力データＡの送信も行わせても良いが、ＩＯマスタ２００＿１Ａは故障しているため、当該入力データＡが制御装置１０Ａに転送されることはない。
【００５５】
ＩＯマスタ２００＿１Ｂは、前述した図８の場合と同様に入力データＢを制御装置１０Ｂへ転送し（図９：Ｓ２００Ｂ）、制御装置１０Ｂも前述した図８の場合と同様に入力データＢを制御装置１０Ａへ転送する（図９：Ｓ３００）。制御装置１０Ａの制御部１１０は、図８の場合と同様にデータ切り替え処理を実行するのであるが、本動作例ではＩＯマスタ２００＿１Ａが故障している。このため、ステップＳＡ１００の判定結果は“Ｙｅｓ”となり、ステップＳＡ１２０の処理が実行される。つまり、制御装置１０Ａの制御部１１０は、ＩＯマスタ２００＿１Ａと対になるＩＯマスタ２００により転送されたデータ（すなわち、制御装置１０Ｂ経由で転送された入力データＢ）を用いて所定の演算を実行し（ステップＳＡ１３０）、データ入出力装置５０＿１に与える出力データを生成する。このように本実施形態では、稼働系のＩＯマスタ２００に故障が発生しても制御装置１０についての稼働系／待機系の切り替えは行われないのであるが、何ら問題なく上記所定の処理を実行し、上記出力データを生成することができる。
【００５６】
上記の要領で出力データの生成を完了すると、制御装置１０Ａの制御部１１０は前述した等値化処理を行い（Ｓ４００）、制御装置１０Ｂの制御部１１０はデータの宛先として局番号＝１およびデータ入出力装置５０＿１のＩＯネットワーク内アドレスを指定して出力データＢをマスタ／スレーブ間ネットワーク６０Ｂに送出する（Ｓ５００Ｂ）。なお、制御装置１０Ａからマスタ／スレーブ間ネットワーク６０Ａへの出力データＡの送出を行っても良いが、ＩＯマスタ２００＿１Ａは故障しているため、当該出力データＡがＩＯマスタ２００＿１Ａによって受信されることはない。
【００５７】
図８の場合と同様に、ＩＯマスタ２００＿１Ｂの制御部２１０は出力データＢの受信を契機として転送制御処理（図７参照）を実行する。本動作例では、ＩＯマスタ２００＿１Ａは故障しているため、ＩＯマスタ２００＿１Ｂの制御部２１０の実行する転送制御処理では、ステップＳＢ１１０の判定結果は“Ｙｅｓ”となり、制御装置１０ＢにおいてステップＳＢ１２０の処理が実行される。したがって、本動作例では、図９に示すようにＩＯマスタ２００＿１Ｂによって出力データＢがデータ入出力装置５０＿１へ転送される（Ｓ６００）。このようにデータ入出力装置５０＿１への出力データの伝達も何ら問題なく実行される。
以上がＩＯマスタ２００＿１Ａに故障が発生した場合の動作である。
【００５８】
以上説明したように本実施形態によれば、稼働系のＩＯマスタ２００に故障が発生しても、制御装置１０についての稼働系／待機系の切り替えを発生させることなくデータ入出力装置に対するデータの入出力を継続し、システムの稼働を継続することができる。したがって、アプリケーションプログラムにしたがって制御部１１０に実行させる演算が、制御対象の機器に印加する電圧をその実行毎に所定量ずつ引き上げて行くような演算であっても、図１０に示すように、稼働系のＩＯマスタ２００の故障（停止）に起因して上記インクリメントが停滞することはない。
【００５９】
（Ｃ：変形）
以上本発明の一実施形態について説明したが、この実施形態に以下の変形を加えても勿論良い。
（１）上記実施形態の制御システム１には、稼働系および待機系の各制御装置に各々接続される２つのＩＯマスタ２００よりなるＩＯマスタ対を含むＩＯマスタ局２０が２つ含まれていたが、本発明の制御システムに含まれるＩＯマスタ局は１つであっても良く、また、３つ以上であっても良い。また、上記実施形態では各ＩＯマスタ局のＩＯネットワークに２つのデータ入出力装置が接続されていたが、各ＩＯネットワークに接続されるデータ入出力装置の数は１つであっても良く、また、３つ以上であっても良い。さらに、各ＩＯマスタ局のＩＯネットワークに接続されるデータ入出力装置の数が同じである必要もない。また、上記実施形態では本発明の中継装置の一例としてＩＯマスタを説明したが、ルータやリピータに本発明を適用しても良い。
【００６０】
（２）上記実施形態では、制御装置１０に本実施形態の特徴を顕著に示す処理を実行させるとともに、ＩＯマスタ２００にも本実施形態の特徴を顕著に示す処理を実行させることで、稼働系のＩＯマスタ２００が停止しても、制御装置１０についての稼働系／待機系を切り替えることなく、データ入出力装置に対するデータの入出力を継続できるようにする場合について説明した。しかし、データ入出力装置からはデータを収集するのみでデータ入出力装置に対するデータ出力を行う必要がない場合には、ＩＯマスタとしては従来のＩＯマスタを用い、制御装置のみ本実施形態の制御装置１０を用いるようにしても良い。
【００６１】
（３）上記実施形態の制御装置１０或いはＩＯマスタ２００の夫々を単体で市場に流通させても良い。制御装置とＩＯマスタとが冗長化された既存の制御システムにおける制御装置を上記の要領で提供される制御装置１０に置き換え、同制御システムにおけるＩＯマスタを上記の要領で提供されるＩＯマスタ２００に置き換えることで、制御装置とＩＯマスタとが冗長化された既存の制御システムを上記実施形態の制御システム１に手軽に再構築することが可能になるからである。
【００６２】
（４）上記実施形態では、制御装置１０の制御部１１０に本実施形態の特徴を顕著に示す処理を実行させる制御プログラム１３４２が制御装置１０の不揮発性記憶部１３４に予め記憶されていたが、当該プログラムをＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）やフラッシュＲＯＭなどのコンピュータ読み取り可能な記録媒体に書き込んで配布しても良く、また、インターネットなどの電気通信回線経由のダウンロードにより配布しても良い。このようにして配布されるプログラムを一般的なプログラマブルロジックコントローラにインストールし、その制御部（例えば、ＣＰＵ）を当該プログラムにしたがって作動させることで、当該プログラマブルロジックコントローラを本実施形態の制御装置１０として機能させることができるからである。中継制御プログラム２４４２についても同様に、コンピュータ読み取り可能な記録媒体に書き込んで配布しても良く、また、電気通信回線経由のダウンロードにより配布しても良い。
【００６３】
（５）上記実施形態では産業施設内に敷設される制御システムへの本発明の適用例を説明したが、本発明の適用対象は制御システムに限定されるものではなく、情報系システムであっても良い。例えば上記データ入力装置は銀行などのオンラインシステムにおける現金自動預け払い装置であり、上記制御装置は所謂勘定系データベースの更新制御を行う装置であっても良い。要は、データ入出力装置からデータを収集しその収集結果に応じて機器の制御を行う制御装置と、当該制御装置とデータ入出力装置との間のデータ通信を中継する中継装置とを含み、当該制御装置と当該中継装置とが共に冗長化された通信システムであれば良い。また、上記実施形態では制御装置間通信手段としてデータ同期化バス３０を用いたが、所謂等値化ケーブルを制御装置間通信手段として用いても良く、無線ＬＡＮインタフェースなどの無線通信手段を制御装置間通信手段として用いても良い。
【符号の説明】
【００６４】
１…制御システム、１０，１０Ａ、１０Ｂ…制御装置、２０，２０＿１，２０＿２…ＩＯマスタ局、２００，２００＿１Ａ、２００＿１Ｂ、２００＿２Ａ，２００＿２Ｂ…ＩＯマスタ、３０…データ同期化バス、４０＿１，４０＿２…ＩＯネットワーク、５０＿１，５０＿２，５０＿３，５０＿４…データ入出力装置、６０Ａ，６０Ｂ…マスタ／スレーブ間ネットワーク、１１０，２１０…制御部、１２０…通信Ｉ／Ｆ部、２２０…第１通信Ｉ／Ｆ部、２３０…第２通信Ｉ／Ｆ部、１３０，２４０…記憶部、１３２，２４２…揮発性記憶部、１３４，２４４…不揮発性記憶部、１３４２…制御プログラム、２４４２…中継制御プログラム、１４０，２５０…バス。
【図１】
2015207240.tif 000003
【図２】
2015207240.tif 000004
【図３】
2015207240.tif 000005
【図４】
2015207240.tif 000006
【図５】
2015207240.tif 000007
【図６】
2015207240.tif 000008
【図７】
2015207240.tif 000009
【図８】
2015207240.tif 000010
【図９】
2015207240.tif 000011
【図１０】
2015207240.tif 000012
【図１１】
2015207240.tif 000013