(57)【要約】【課題】稼働コントローラによるアプリケーションの実行時間や実行負荷の影響を受けることなく、演算データ（等値化データ）の収集処理を好適に実行することができる二重化システムを提供する。【解決手段】二重化システム（１０）は、稼働コントローラ（２０）と待機コントローラ（３０）を等値化バス（４０）により接続して構成される。稼働コントローラ（２０）がアプリケーションを実行し、アプリケーションによる等値化データが等値化バス（４０）を介して稼働コントローラ（２０）から待機コントローラ（３０）に伝送され、待機コントローラ（３０）が等値化データの収集処理を実行する。【選択図】図５
2018180723.tif 000002
【特許請求の範囲】
【請求項１】
稼働コントローラと待機コントローラが等値化バスにより接続された二重化システムであって、
前記稼働コントローラがアプリケーションを実行し、前記アプリケーションによる等値化データが前記等値化バスを介して前記稼働コントローラから前記待機コントローラに伝送され、前記待機コントローラが前記等値化データの収集処理を実行することを特徴とする二重化システム。
【請求項２】
前記待機コントローラは、前記等値化データをアドレス範囲毎に領域指定する収集アドレステーブルに基づいて、前記等値化データの収集処理を前記領域毎に実行することを特徴とする請求項１に記載の二重化システム。
【請求項３】
前記待機コントローラは、前記等値化データを優先度の高低に応じたアドレス範囲毎に領域指定する収集アドレステーブルに基づいて、前記等値化データの収集処理を前記優先度の高低に応じて前記領域毎に実行することを特徴とする請求項１または請求項２に記載の二重化システム。
【請求項４】
前記待機コントローラは、前記領域毎の前記等値化データにタイムスタンプが挿入されたフォーマットで前記等値化データの収集処理を実行することを特徴とする請求項２または請求項３に記載の二重化システム。
【請求項５】
前記稼働コントローラと前記待機コントローラの一方に異常が発生したとき、前記稼働コントローラと前記待機コントローラの他方は、前記アプリケーションを実行するとともに、前記等値化データの収集処理を実行することを特徴とする請求項１から請求項４のいずれかに記載の二重化システム。
【請求項６】
前記稼働コントローラと前記待機コントローラの他方は、前記等値化データをアドレス範囲毎に領域指定する収集アドレステーブルに基づいて、前記等値化データの収集処理を前記領域毎に実行することを特徴とする請求項５に記載の二重化システム。
【請求項７】
前記稼働コントローラと前記待機コントローラの他方は、前記等値化データを優先度の高低に応じたアドレス範囲毎に領域指定する収集アドレステーブルに基づいて、前記等値化データの収集処理を前記優先度の高低に応じて前記領域毎に実行することを特徴とする請求項５または請求項６に記載の二重化システム。
【請求項８】
前記稼働コントローラと前記待機コントローラの他方は、前記領域毎の前記等値化データにタイムスタンプが挿入されたフォーマットで前記等値化データの収集処理を実行することを特徴とする請求項６または請求項７に記載の二重化システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、二重化システムに関する。
【背景技術】
【０００２】
従来、稼働コントローラと待機コントローラを等値化バスにより接続した二重化システムが知られている。このような二重化システムでは、ユーザの作成したアプリケーションによって、アプリケーションの変数情報や入出力情報等の情報を収集し、コントローラ上のログ領域に格納しておくことで、二重化システムが誤動作した場合の要因解析に利用する場合がある（特許文献１）。
【０００３】
二重化システムでは、通常時には稼働コントローラがアプリケーションを実行し、稼働コントローラの異常時（故障時）には、待機コントローラが稼働コントローラに代わってアプリケーションを実行する。稼働コントローラがアプリケーションを実行した場合、当該アプリケーションによる演算データがユーザメモリに格納されるとともに、当該演算データが等値化データとして等値化バスを介して待機コントローラに伝送される。その結果、稼働コントローラと待機コントローラでアプリケーションによる演算データ（等値化データ）が共有される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１４６０４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
稼働コントローラは、システム管理機能によって、ユーザメモリに格納された演算データ（等値化データ）を収集してログ領域に格納する（ロギングを行う）。ところが、稼働コントローラは、予め定められた制御周期内に、アプリ帯域（アプリケーションの実行に用いる帯域）と、等値化帯域（等値化処理に用いる帯域）と、システム帯域（ロギングやその他の処理を実行するために用いる帯域）とを割り当てなければならない。このため、稼働コントローラによるアプリケーションの実行時間や実行負荷が大きい場合、制御周期内にシステム帯域（ロギング帯域）を十分に確保できず、収集対象となる演算データ（等値化データ）を削減せざるを得ない。その結果、二重化システムが誤動作した場合であってもその原因解明に至らないおそれがある。
【０００６】
本発明はかかる点に鑑みてなされたものであり、稼働コントローラによるアプリケーションの実行時間や実行負荷の影響を受けることなく、演算データ（等値化データ）の収集処理を好適に実行することができる二重化システムを提供することを目的の１つとする。
【課題を解決するための手段】
【０００７】
本実施形態の二重化システムは、その一態様では、稼働コントローラと待機コントローラが等値化バスにより接続された二重化システムであって、前記稼働コントローラがアプリケーションを実行し、前記アプリケーションによる等値化データが前記等値化バスを介して前記稼働コントローラから前記待機コントローラに伝送され、前記待機コントローラが前記等値化データの収集処理を実行することを特徴としている。
【発明の効果】
【０００８】
本発明によれば、稼働コントローラによるアプリケーションの実行時間や実行負荷の影響を受けることなく、演算データ（等値化データ）の収集処理を好適に実行することができる二重化システムを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態による二重化システムの構成を示すブロック図である。
【図２】収集アドレステーブルの一例を示す図である。
【図３】収集アドレステーブルの他の例を示す図である。
【図４】ログ領域に格納された演算データ（等値化データ）のフォーマットを示す図である。
【図５】稼働コントローラと待機コントローラの処理を示すタイミングチャートである。
【図６】稼働コントローラと待機コントローラのうち稼働コントローラに異常（故障）が発生して停止した場合の処理を示すタイミングチャートである。
【図７】稼働コントローラと待機コントローラの処理を示すフローチャートである。
【発明を実施するための形態】
【００１０】
図１〜図７を参照して、本実施形態による二重化システム１０について詳細に説明する。
【００１１】
図１に示すように、二重化システム１０は、稼働コントローラ２０と、待機コントローラ３０と、稼働コントローラ２０と待機コントローラ３０を接続する等値化バス４０とを有している。
【００１２】
二重化システム１０は、稼働コントローラ２０がアプリケーションを実行するときは待機コントローラ３０がアプリケーションを実行しないコールドスタンバイ方式を採用している。すなわち、二重化システム１０は、稼働コントローラ２０がアプリケーションを実行する機能を担い、待機コントローラ３０がアプリケーションによる演算データ（等値化データ）の収集処理を実行する機能を担うように、稼働コントローラ２０と待機コントローラ３０の機能を分けたことを特徴の１つとしている。
【００１３】
稼働コントローラ２０と待機コントローラ３０は、両コントローラ間に互換性を持たせるべく（稼働コントローラと待機コントローラの役割を逆転させられるように）、同一の構成を有している。以下の説明では、適宜、稼働コントローラ２０又は待機コントローラ３０が「自身が稼働コントローラと待機コントローラのいずれであるか？」という判断を行うことがあるが、これは、稼働コントローラ２０と待機コントローラ３０の互換性を１つの要因としている。
【００１４】
稼働コントローラ２０は、アプリケーション実行部２１と、ユーザメモリ２２と、等値化部２３と、等値化データ送受信領域２４と、等値化データ収集処理部２５と、ログ領域２６と、等値化データ収集制御部２７と、システム管理部２８とを有している。等値化データ収集処理部２５には、外部機器としてのエンジニアリングツール２９が接続されている。
【００１５】
アプリケーション実行部２１は、ユーザの作成したアプリケーションを実行する。
【００１６】
ユーザメモリ２２は、アプリケーション実行部２１が実行したアプリケーションによる演算データ（ユーザデータ）を格納する。
【００１７】
等値化部２３は、ユーザメモリ２２に格納された演算データを、等値化データとして、等値化データ送受信領域２４にコピーする。また、等値化部２３は、等値化データ送受信領域２４にコピーした等値化データを、等値化バス４０を介して待機コントローラ３０に向けて送信する。ここで、演算データと等値化データは同一の内容を有しており、以下ではこれを「演算データ（等値化データ）」又は「等値化データ（演算データ）」と記載することがある。
【００１８】
等値化データ収集処理部２５は、ユーザメモリ２２に格納された演算データ（等値化データ）を収集してこれをログ領域２６に格納する（書き込む）。等値化データ収集処理部２５は、演算データ（等値化データ）の収集処理を実行するための収集アドレステーブルを保持している。この収集アドレステーブルは、外部機器であるエンジニアリングツール２９から受信して等値化データ収集処理部２５にインストールされる。
【００１９】
図２は収集アドレステーブルの一例を示しており、演算データ（等値化データ）をアドレス範囲毎に領域指定することが可能になっている。図２では、アドレス下限“０ｘ００００００００”からアドレス上限“０ｘ０００００ＦＦＦ”のアドレス範囲が“領域Ｎｏ．１”で指定されており、アドレス下限“０ｘ００００１０００”からアドレス上限“０ｘ００００１ＦＦＦ”のアドレス範囲が“領域Ｎｏ．２”で指定されており、アドレス下限“０ｘ００００４０００”からアドレス上限“０ｘ００００５ＦＦＦ”のアドレス範囲が“領域Ｎｏ．３”で指定されている。この場合、等値化データ収集処理部２５は、演算データ（等値化データ）の収集処理を上記の領域毎に実行することができる。
【００２０】
図３は収集アドレステーブルの他の例を示しており、演算データ（等値化データ）を優先度の高低に応じたアドレス範囲毎に領域指定することが可能になっている。図３では、“領域Ｎｏ．１”に優先度“高”が設定されており、“領域Ｎｏ．２”に優先度“中”が設定されており、“領域Ｎｏ．３”に優先度“低”が設定されている。この場合、等値化データ収集処理部２５は、演算データ（等値化データ）の収集処理を上記の優先度の高低に応じて領域毎に実行することができる。
【００２１】
図４は、ログ領域２６に格納された演算データ（等値化データ）のフォーマットを示している。図４では、“領域Ｎｏ．１”から“領域Ｎｏ．３”の領域毎の演算データ（等値化データ）にタイムスタンプを挿入したものが収集データの一単位となっている。
【００２２】
等値化データ収集制御部２７は、等値化データ収集処理部２５による演算データ（等値化データ）の収集処理を制御する。より具体的に、等値化データ収集制御部２７は、「稼働コントローラと待機コントローラが通常動作しており、且つ、自身が待機コントローラであるとき」及び「相手方のコントローラの異常時（故障時）」には、等値化データ収集処理部２５に演算データ（等値化データ）の収集処理を実行させる。一方、等値化データ収集制御部２７は、「稼働コントローラと待機コントローラが通常動作しており、且つ、自身が稼動コントローラであるとき」は、等値化データ収集処理部２５に演算データ（等値化データ）の収集処理を実行させない。
【００２３】
システム管理部２８は、稼働コントローラ２０の各構成要素を統括的に制御する。
【００２４】
待機コントローラ３０は、アプリケーション実行部３１と、ユーザメモリ３２と、等値化部３３と、等値化データ送受信領域３４と、等値化データ収集処理部３５と、ログ領域３６と、等値化データ収集制御部３７と、システム管理部３８とを有している。等値化データ収集処理部３５には、外部機器としてのエンジニアリングツール３９が接続されている。
【００２５】
アプリケーション実行部３１は、ユーザの作成したアプリケーションを実行する。
【００２６】
ユーザメモリ３２は、アプリケーション実行部３１が実行したアプリケーションによる演算データ（ユーザデータ）を格納する。
【００２７】
等値化部３３は、等値化バス４０を介して稼働コントローラ２０から受信した等値化データ（演算データ）を、等値化データ送受信領域３４からユーザメモリ３２に展開して格納する。
【００２８】
等値化データ収集処理部３５は、ユーザメモリ３２に格納された等値化データ（演算データ）を収集してこれをログ領域３６に格納する（書き込む）。等値化データ収集処理部３５は、等値化データ（演算データ）の収集処理を実行するための収集アドレステーブルを保持している。この収集アドレステーブルは、外部機器であるエンジニアリングツール３９から受信して等値化データ収集処理部３５にインストールされる。等値化データ収集処理部３５が保持する収集アドレステーブルは、図２、図３に示すものと同一であるので、重複説明を省略する。ログ領域３６に格納された等値化データ（演算データ）のフォーマットは、図４に示すものと同一であるので、重複説明を省略する。
【００２９】
等値化データ収集制御部３７は、等値化データ収集処理部３５による等値化データ（演算データ）の収集処理を制御する。より具体的に、等値化データ収集制御部３７は、「稼働コントローラと待機コントローラが通常動作しており、且つ、自身が待機コントローラであるとき」及び「相手方のコントローラの異常時（故障時）」には、等値化データ収集処理部３５に等値化データ（演算データ）の収集処理を実行させる。一方、等値化データ収集制御部３７は、「稼働コントローラと待機コントローラが通常動作しており、且つ、自身が稼動コントローラであるとき」は、等値化データ収集処理部３５に等値化データ（演算データ）の収集処理を実行させない。
【００３０】
システム管理部３８は、待機コントローラ３０の各構成要素を統括的に制御する。
【００３１】
図１を参照して、稼働コントローラ２０と待機コントローラ３０による通常動作時の処理について説明する。
【００３２】
まず、稼働コントローラ２０と待機コントローラ３０が、エンジニアリングツール２９とエンジニアリングツール３９より、図２、図３に示すような収集アドレステーブルを受信して、等値化データ収集処理部２５と等値化データ収集処理部３５に展開する（処理１）。これにより、収集対象となるデータが格納されるアドレス範囲の情報が保持される。
【００３３】
次いで、稼働コントローラ２０のアプリケーション実行部２１が、ユーザの作成したアプリケーションを実行し、当該アプリケーションによる演算データ（ユーザデータ）がユーザメモリ２２に格納される（処理２）。
【００３４】
次いで、稼働コントローラ２０の等値化部２３が、ユーザメモリ２２に格納された演算データを、等値化データとして、等値化データ送受信領域２４にコピーする（処理３）。また、稼働コントローラ２０の等値化部２３が、等値化データ送受信領域２４にコピーした等値化データを、等値化バス４０を介して待機コントローラ３０に向けて送信する（処理４）。
【００３５】
次いで、稼働コントローラ２０における等値化処理が完了したことをイベントトリガとして、稼働コントローラ２０の等値化データ収集制御部２７が、自身が稼働コントローラであることから、等値化データ収集処理部２５に等値化データの収集処理を実行させないことを決定する（処理５）。
【００３６】
次いで、待機コントローラ３０の等値化部３３が、等値化バス４０を介して稼働コントローラ２０から受信した等値化データ（演算データ）を、等値化データ送受信領域３４からユーザメモリ３２に展開して格納する（処理６）。
【００３７】
次いで、待機コントローラ３０における等値化処理が完了したことをイベントトリガとして、待機コントローラ３０の等値化データ収集制御部３７が、自身が待機コントローラであることから、等値化データ収集処理部３５に等値化データの収集処理を実行させることを決定して（処理７）、等値化データ収集処理部３５にその旨の指示を出す（処理８）。
【００３８】
そして、待機コントローラ３０の等値化データ収集処理部３５が、図２、図３に示すような収集アドレステーブルに基づいて収集したデータを、図４に示すようなフォーマットでログ領域３６に格納する（処理９）。
【００３９】
図５は、稼働コントローラ２０と待機コントローラ３０の処理を示すタイミングチャートである。稼働コントローラ２０は、予め定められた制御周期内に、アプリ帯域（アプリケーションの実行に用いる帯域）と、等値化帯域（等値化処理に用いる帯域）と、システム帯域（他のコントローラと通信したり自身の状態を監視するための帯域）とを割り当てている。待機コントローラ３０は、予め定められた制御周期内に、等値化帯域（等値化処理に用いる帯域）と、データ収集帯域（等値化データの収集処理に用いる帯域）と、システム帯域（他のコントローラと通信したり自身の状態を監視するための帯域）とを割り当てている。このため、稼働コントローラ２０によるアプリケーションの実行時間や実行負荷が増大した場合であっても（制御周期内でアプリ帯域が占める割合が増大した場合であっても）、その悪影響を受けることなく、待機コントローラ３０の側でデータ収集帯域を十分に確保して、等値化データの収集処理を好適に実行することができる。
【００４０】
続いて、図６のタイミングチャートを参照して、稼働コントローラ２０と待機コントローラ３０のうち稼働コントローラ２０に異常（故障）が発生して停止した場合の処理について説明する。稼働コントローラ２０が停止すると、待機コントローラ３０が稼働コントローラ２０に代わって機能を発揮できるように稼働コントローラに遷移する。そして、待機コントローラ３０は、予め定められた制御周期内に、アプリ帯域（アプリケーションの実行に用いる帯域）と、データ収集帯域（等値化データの収集処理に用いる帯域）と、システム帯域（他のコントローラと通信したり自身の状態を監視するための帯域）とを割り当てる。すなわち、待機コントローラ３０は、それまで等値化帯域（等値化処理に用いる帯域）に割り当てていた領域を使用して、等値化データの収集処理を実行する。この場合、図５に示す通常動作時よりもデータ収集帯域が小さくなりやすいため、図３に示す収集アドレステーブルを使用して、等値化データの収集処理を優先度の高低に応じて領域毎に実行することができる。図３の例では、最も優先度が高い“領域Ｎｏ．１”だけに絞って等値化データの収集処理を実行することが可能である。優先度が高い等値化データとしては、例えば、自身のコントローラで実行していたアプリケーションに関するもの、故障が起きた場合の相手方のコントローラの状態を示すもの等が挙げられる。
【００４１】
同様に、稼働コントローラ２０と待機コントローラ３０のうち待機コントローラ３０に異常（故障）が発生して停止した場合、稼働コントローラ２０が、アプリケーションを実行するとともに、等値化データの収集処理を実行する。すなわち、稼働コントローラ２０と待機コントローラ３０の一方に異常が発生したとき、稼働コントローラ２０と待機コントローラ３０の他方が、アプリケーションを実行するとともに、等値化データの収集処理を実行するのである。
【００４２】
図７は、稼働コントローラと待機コントローラの処理を示すフローチャートである。図７のフローチャートにおける各処理の実行主体は、稼働コントローラ２０と待機コントローラ３０のいずれかである（各コントローラの状態等に応じて実行主体が変動し得る）。
【００４３】
ステップＳＴ１では、等値化データの送受信が完了したことをイベントトリガとして、コントローラの状態を取得する。
【００４４】
ステップＳＴ２では、自身が待機コントローラであるか否かを判定する。自身が待機コントローラである場合（ステップＳＴ２：Ｙｅｓ）はステップＳＴ３に進み、自身が待機コントローラでない場合（ステップＳＴ２：Ｎｏ）はステップＳＴ４に進む。
【００４５】
ステップＳＴ３では、自身が待機コントローラであることから、等値化データの収集処理を実行して、処理を終了する。
【００４６】
ステップＳＴ４では、待機コントローラ（つまり稼働コントローラである自身の相手方のコントローラ）が脱落状態（異常状態、故障状態）であるか否かを判定する。待機コントローラが脱落状態である場合（ステップＳＴ４：Ｙｅｓ）はステップＳＴ５に進み、待機コントローラが脱落状態でない場合（ステップＳＴ４：Ｎｏ）は処理を終了する。
【００４７】
ステップＳＴ５では、自身が稼働コントローラであるが、相手方の待機コントローラが脱落状態であることから、優先度に応じて等値化データの収集処理を実行する。
【００４８】
このように、本実施形態による二重化システム１０では、稼働コントローラ２０がアプリケーションを実行し、アプリケーションによる等値化データが等値化バス４０を介して稼働コントローラ２０から待機コントローラ３０に伝送され、待機コントローラ３０が等値化データの収集処理を実行する。これにより、稼働コントローラ２０によるアプリケーションの実行時間や実行負荷の影響を受けることなく、演算データ（等値化データ）の収集処理を好適に実行することができる。
【００４９】
なお、本発明は上記実施の形態に限定されず、種々変更して実施することが可能である。上記実施の形態において、添付図面に図示されている構成要素の大きさや形状、機能などについては、これに限定されず、本発明の効果を発揮する範囲内で適宜変更することが可能である。その他、本発明の目的の範囲を逸脱しない限りにおいて適宜変更して実施することが可能である。
【産業上の利用可能性】
【００５０】
本発明の二重化システムは、例えば、マルチＣＰＵを用いたデータの等値化コントローラに適用して好適である。
【符号の説明】
【００５１】
１０  二重化システム
２０  稼働コントローラ
２１  アプリケーション実行部
２２  ユーザメモリ
２３  等値化部
２４  等値化データ送受信領域
２５  等値化データ収集処理部
２６  ログ領域
２７  等値化データ収集制御部
２８  システム管理部
２９  エンジニアリングツール（外部機器）
３０  待機コントローラ
３１  アプリケーション実行部
３２  ユーザメモリ
３３  等値化部
３４  等値化データ送受信領域
３５  等値化データ収集処理部
３６  ログ領域
３７  等値化データ収集制御部
３８  システム管理部
３９  エンジニアリングツール（外部機器）
４０  等値化バス
【図１】
2018180723.tif 000003
【図２】
2018180723.tif 000004
【図３】
2018180723.tif 000005
【図４】
2018180723.tif 000006
【図５】
2018180723.tif 000007
【図６】
2018180723.tif 000008
【図７】
2018180723.tif 000009