(57)【特許請求の範囲】
【請求項１】
制御対象の制御を行う制御系システムと、当該制御系システムに代えて前記制御対象の制御を行うことが可能な待機系システムとを備える二重化システムであって、
前記制御系システムおよび前記待機系システムの各々は、ＣＰＵユニットと、ネットワークユニットと、前記ＣＰＵユニットおよび前記ネットワークユニットを通信可能に接続するバスとを備え、
前記ネットワークユニットは、
前記ネットワークユニットを制御するＣＰＵと、
他方の前記ネットワークユニットに対してデータを送信する送信ＤＭＡＣと、
他方の前記ネットワークユニットからデータを受信する受信ＤＭＡＣと、
前記バスを介して前記ＣＰＵユニットとの間でデータの送受信を行うバス用ＤＭＡＣと、
データを記憶するメモリと、
を備え、
前記受信ＤＭＡＣは、他方の前記ネットワークユニットから受信した前記データを前記メモリ内の予め定められた領域に転送し、当該転送の完了を前記ＣＰＵに割込みにより通知し、
前記割込みは、優先度が可変であることを特徴とする、二重化システム。
【請求項２】
前記制御系システムにおける前記ＣＰＵユニットと、前記制御系システムにおける前記ネットワークユニットの前記ＣＰＵおよび前記送信ＤＭＡＣと、前記待機系システムにおける前記ネットワークユニットの前記送信ＤＭＡＣ、前記受信ＤＭＡＣ、および前記バス用ＤＭＡＣと、前記待機系システムにおける前記ＣＰＵユニットとは、同時に動作することを特徴とする、請求項１に記載の二重化システム。
【請求項３】
前記送信ＤＭＡＣは、複数のデータを連結して他方の前記ネットワークユニットに送信することを特徴とする、請求項１または２に記載の二重化システム。
【請求項４】
前記送信ＤＭＡＣは、前記連結した複数のデータの送信を中断する機能を有することを特徴とする、請求項３に記載の二重化システム。
【請求項５】
前記送信ＤＭＡＣの送信に対して他方の前記ネットワークユニットから応答がない場合において、
前記送信ＤＭＡＣは、前記応答がないときに他方の前記ネットワークユニットに送信したデータを再送信することを特徴とする、請求項１から４のいずれか１項に記載の二重化システム。
【請求項６】
前記ＣＰＵユニットから前記ＣＰＵへの割込みによる通知の優先度は、前記ＣＰＵに対する前記転送の完了の割込みによる通知の優先度よりも高いことを特徴とする、請求項１から５のいずれか１項に記載の二重化システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば水処理プラントの監視制御を行うシステム等において、通信ネットワークの異常が発生した時に監視制御を行う系の切替えを行う二重化システムに関する。
【背景技術】
【０００２】
二重化システムは、互いに並列に動作可能な２系統のＣＰＵ（Central Processing Unit）を備えるシステムであり、システムダウンによって甚大な損害が生じ得る高度な信頼性が要求されるプロセス制御等の用途に広く使用されている。
【０００３】
具体的には、二重化システムは、制御系システムおよび待機系システムの２系統のシステムを備えている。制御系システムは、演算手段を有する第１のＣＰＵと、外部機器との通信手段を有する第１のネットワーク機能とを備えている。待機系システムは、演算手段を有する第２のＣＰＵと、外部機器との通信手段を有する第２のネットワーク機能とを備えている。通常は、制御系システムが制御対象の制御を行っているが、制御系システムに異常が発生した場合は、第２のネットワーク機能が第１のネットワーク機能から異常情報を受信し、制御系システムから待機系システムに系を切替える。これにより、システムダウンを防止し、制御系システムの動作を待機系システムが継続することができる。
【０００４】
制御系システムの動作を待機系システムが継続するためには、制御系システムと待機系システムとが同じ状態になる（すなわち、制御系システムと待機系システムとを同期する）必要がある。制御系システムと待機系システムとを同じ状態にするために、制御系システムは、当該制御系システムにおけるＣＰＵのプログラム演算結果を、ネットワーク機能を介して待機系システムに送信している。
【０００５】
近年の二重化システムでは、制御データの大容量化に伴ってプログラム演算結果であるデータが増加し、システム間でデータの送信に要する時間が長くなるという問題があった。
【０００６】
従来、ＤＭＡＣ（Direct Memory Access Controller）を用いてデータの転送を行う二重化システムが開示されている（例えば、特許文献１参照）。特許文献１では、他の系のシステムからデータを受信した場合において、ＣＰＵが途中で処理を行うことなく、ＤＭＡＣが受信したデータをメモリに転送する。これにより、システム間の通信に係るオーバーヘッドを軽減し、速度性能を向上させている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−７０６４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献１では、各システム間を接続する手段が、割込みの専用線と共有メモリに接続する線とに分かれている方式に限定されており、通常のネットワーク通信で用いられるシリアル通信によってシステム間を接続することができないという問題があった。
【０００９】
また、二重化システムでは、高度な信頼性を保障するために、他の通信機器からシステムが異常または正常であるかを確認する処理、他の通信機器からの送信に対して応答を送信する処理、およびデータの送信ができなかった場合に同じデータを再送信する処理等が必要である。これらの処理を特許文献１で行う場合は、他の通信機器からシステムが異常または正常であるかを確認する処理を追加する必要があり、データの送信に要する時間が長くなるという問題があった。
【００１０】
本発明は、このような問題を解決するためになされたものであり、データの送信に要する時間を短縮してデータの送信に係る効率を向上させることが可能な二重化システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記の課題を解決するために、本発明による二重化システムは、制御対象の制御を行う制御系システムと、当該制御系システムに代えて制御対象の制御を行うことが可能な待機系システムとを備える二重化システムであって、制御系システムおよび待機系システムの各々は、ＣＰＵユニットと、ネットワークユニットと、ＣＰＵユニットおよびネットワークユニットを通信可能に接続するバスとを備え、ネットワークユニットは、ネットワークユニットを制御するＣＰＵと、他方のネットワークユニットに対してデータを送信する送信ＤＭＡＣと、他方のネットワークユニットからデータを受信する受信ＤＭＡＣと、バスを介してＣＰＵユニットとの間でデータの送受信を行うバス用ＤＭＡＣと、データを記憶するメモリとを備え、受信ＤＭＡＣは、他方のネットワークユニットから受信したデータをメモリ内の予め定められた領域に転送し、当該転送の完了をＣＰＵに割込みにより通知し、割込みは、優先度が可変であることを特徴とする。
【発明の効果】
【００１２】
本発明によると、二重化システムは、制御対象の制御を行う制御系システムと、当該制御系システムに代えて制御対象の制御を行うことが可能な待機系システムとを備える二重化システムであって、制御系システムおよび待機系システムの各々は、ＣＰＵユニットと、ネットワークユニットと、ＣＰＵユニットおよびネットワークユニットを通信可能に接続するバスとを備え、ネットワークユニットは、ネットワークユニットを制御するＣＰＵと、他方のネットワークユニットに対してデータを送信する送信ＤＭＡＣと、他方のネットワークユニットからデータを受信する受信ＤＭＡＣと、バスを介してＣＰＵユニットとの間でデータの送受信を行うバス用ＤＭＡＣと、データを記憶するメモリとを備え、受信ＤＭＡＣは、他方のネットワークユニットから受信したデータをメモリ内の予め定められた領域に転送し、当該転送の完了をＣＰＵに割込みにより通知し、割込みは、優先度が可変であるため、データの送信に要する時間を短縮してデータの送信に係る効率を向上させることが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１による二重化システムの構成の一例を示すブロック図である。
【図２】本発明の実施の形態１によるメモリのヘッダ領域の一例を示す図である。
【図３】本発明の実施の形態１による受信ＤＭＡＣの機能を説明するための図である。
【図４】本発明の実施の形態１による二重化システムの動作の一例を示すシーケンス図である。
【図５】本発明の実施の形態１による二重化システムの動作の一例を示すシーケンス図である。
【図６】本発明の実施の形態１による各メモリおよび各ＦＩＦＯの初期状態を説明するための図である。
【図７】本発明の実施の形態１による制御系システムにおけるＣＰＵユニットからネットワークユニットにデータを転送した時の各メモリおよび各ＦＩＦＯの状態を説明するための図である。
【図８】本発明の実施の形態１による送信ＦＩＦＯにデータを転送した時の各メモリおよび各ＦＩＦＯの状態を説明するための図である。
【図９】本発明の実施の形態１による待機系システムのネットワークユニットから制御系システムのネットワークユニットへの応答前の各メモリおよび各ＦＩＦＯの状態を説明するための図である。
【図１０】本発明の実施の形態１による待機系システムのネットワークユニットから制御系システムのネットワークユニットへの応答後の各メモリおよび各ＦＩＦＯの状態を説明するための図である。
【図１１】本発明の実施の形態２による二重化システムの動作の一例を示すシーケンス図である。
【図１２】本発明の実施の形態２による二重化システムの動作の一例を示すシーケンス図である。
【図１３】本発明の実施の形態２による送信ＦＩＦＯに３回目のデータの転送を開始する前の各メモリおよび各ＦＩＦＯの状態を説明するための図である。
【図１４】本発明の実施の形態２による送信ＦＩＦＯに３回目のデータの転送を開始した後の各メモリおよび各ＦＩＦＯの状態を説明するための図である。
【図１５】本発明の実施の形態３による二重化システムの動作の一例を示すシーケンス図である。
【図１６】本発明の実施の形態３による二重化システムの動作の一例を示すシーケンス図である。
【図１７】本発明の実施の形態３による二重化システムの動作の一例を示すシーケンス図である。
【図１８】本発明の実施の形態３による送信ＦＩＦＯに５回目のデータの転送を開始した後の各メモリおよび各ＦＩＦＯの状態を説明するための図である。
【図１９】本発明の実施の形態３による待機系システムのネットワークユニットから制御系システムのネットワークユニットへの２回目の応答後の各メモリおよび各ＦＩＦＯの状態を説明するための図である。
【図２０】本発明の実施の形態３による送信ＦＩＦＯに６回目のデータの転送を開始した後の各メモリおよび各ＦＩＦＯの状態を説明するための図である。
【図２１】本発明の実施の形態４による二重化システムの動作の一例を示すシーケンス図である。
【図２２】本発明の実施の形態４による二重化システムの動作の一例を示すシーケンス図である。
【発明を実施するための形態】
【００１４】
本発明の実施の形態について、図面に基づいて以下に説明する。
【００１５】
＜実施の形態１＞
まず、本発明の実施の形態１による二重化システムの構成について説明する。
【００１６】
図１は、本実施の形態１による二重化システム１００の構成の一例を示すブロック図である。
【００１７】
図１に示すように、二重化システム１００は、制御系システム１０１ａと待機系システム１０１ｂとを備えている。制御系システム１０１ａは、制御対象を制御するためのプログラムを実行する。待機系システム１０１ｂは、制御系システム１０１ａに異常が発生した場合において、制御系システム１０１ａに代わって制御対象を制御するためのプログラムを実行する。
【００１８】
制御系システム１０１ａは、ＣＰＵユニット１０２ａと、ネットワークユニット１０３ａと、ユニット間接続バス１０４ａとを備えている。待機系システム１０１ｂは、ＣＰＵユニット１０２ｂと、ネットワークユニット１０３ｂと、ユニット間接続バス１０４ｂとを備えている。なお、制御系システム１０１ａと待機系システム１０１ｂとは同じ構成であるため、以下では代表して制御系システム１０１ａの構成について説明する。
【００１９】
ＣＰＵユニット１０２ａは、ＣＰＵ１１０ａと、メモリ１１１ａと、バス用ＤＭＡＣ１１２ａとを備えている。ＣＰＵ１１０ａ、メモリ１１１ａ、およびバス用ＤＭＡＣ１１２ａは、バス１１３ａで互いに通信可能に接続されている。
【００２０】
ネットワークユニット１０３ａは、ＣＰＵ１２０ａと、メモリ１２１ａと、バス用ＤＭＡＣ１２２ａと、送信制御部１２３ａと、受信制御部１２４ａとを備えている。
【００２１】
メモリ１２１ａは、データ領域とヘッダ領域とを有している。図２に示すように、ヘッダ領域には、宛先番号１３０、シーケンス番号１３１、確認応答番号１３２、フレーム種別１３３、データ量１３４、およびチェックサム１３５を各々設定するための領域が設けられている。また、メモリ１２１ａは、２ポート設けられており、バス用ＤＭＡＣ１２２ａおよびＣＰＵ１２０ａの各々から同時にアクセスが可能である。
【００２２】
送信制御部１２３ａは、送信ＤＭＡＣ１２５ａと送信ＦＩＦＯ（First in, First out）１２６ａとを備えている。
【００２３】
送信ＤＭＡＣ１２５ａは、送信ＦＩＦＯ１２６ａの空き数を確認する機能と、メモリ１２１ａから送信ＦＩＦＯ１２６ａにデータおよびそのヘッダ情報（ヘッダ領域に設定された情報）を転送する機能と、当該転送する機能が動作中または停止中であるかを示す機能とを有している。
【００２４】
送信ＦＩＦＯ１２６ａは、本領域にデータおよびそのヘッダ情報が書き込まれると、当該データおよびそのヘッダ情報を送信先のネットワークユニット１０３ｂの受信ＦＩＦＯ１２８ｂに送信する機能を有している。
【００２５】
受信制御部１２４ａは、受信ＤＭＡＣ１２７ａと受信ＦＩＦＯ１２８ａとを備えている。受信ＤＭＡＣ１２７ａは、図３に示すように、フレーム種別宛先アドレス１４０および割込み番号１４１をフレーム種別ごとに有している。ＣＰＵ１２０ａは、フレーム種別アドレス１４０に対応するレジスタに任意の値を書き込む（設定する）ことが可能である。受信ＤＭＡＣ１２７ａは、ネットワークユニット１０３ｂからデータを受信した時に、受信ＦＩＦＯ１２８ａのヘッダ情報に含まれるフレーム種別１３３に応じて、フレーム種別宛先アドレス１４０が示すメモリ１２１ａのデータ領域にデータを送信する機能を有している。
【００２６】
制御系システム１０１ａのＣＰＵユニット１０２ａにおけるバス用ＤＭＡＣ１１２ａの機能は、処理回路により実現される。すなわち、制御系システム１０１ａのＣＰＵユニット１０２ａは、メモリ１１１ａに格納されたデータをメモリ１２１ａに転送するための処理回路を備える。処理回路は、メモリ１１１ａに格納されるプログラムを実行する図示しないＣＰＵ（中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、ＤＳＰ（Digital Signal Processor）ともいう）である。
【００２７】
制御系システム１０１ａのＣＰＵユニット１０２ａにおけるバス用ＤＭＡＣ１１２ａの機能は、ソフトウェア、ファームウェア、またはソフトウェアとファームウェアとの組み合わせにより実現される。ソフトウェアまたはファームウェアは、プログラムとして記述され、メモリ１１１ａに格納される。処理回路は、メモリ１１１ａに記憶されたプログラムを読み出して実行することにより、バス用ＤＭＡＣ１１２ａの機能を実現する。すなわち、制御系システム１０１ａのＣＰＵユニット１０２ａは、メモリ１１１ａに格納されたデータをメモリ１２１ａに転送するステップが結果的に実行されることになるプログラムを格納するためのメモリ１１１ａを備える。また、これらのプログラムは、バス用ＤＭＡＣ１１２ａの手順または方法をコンピュータに実行させるものであるともいえる。ここで、メモリとは、例えば、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、フラッシュメモリー、ＥＰＲＯＭ（Erasable Programmable Read Only Memory）、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）等の不揮発性または揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ（Digital Versatile Disk）等が該当する。
【００２８】
制御系システム１０１ａのネットワークユニット１０３ａにおけるバス用ＤＭＡＣ１２２ａ、送信制御部１２３ａ、受信制御部１２４ａ、送信ＤＭＡＣ１２５ａ、送信ＦＩＦＯ１２６ａ、受信ＤＭＡＣ１２７ａ、および受信ＦＩＦＯ１２８ａの各機能は、処理回路により実現される。すなわち、制御系システム１０１ａのネットワークユニット１０３ａは、メモリ１２１ａに格納されたデータをメモリ１１１ａに転送し、待機系システム１０１ｂのネットワークユニット１０３ｂへのデータの送信を制御し、待機系システム１０１ｂのネットワークユニット１０３ｂからのデータの受信を制御し、メモリ１２１ａに格納されたデータを送信ＦＩＦＯ１２６ａに転送し、メモリ１２１ａから転送されたデータを待機系システム１０１ｂのネットワークユニット１０３ｂに送信し、受信ＦＩＦＯ１２８ａが受信したデータをメモリ１２１ａに転送し、待機系システム１０１ｂのネットワークユニット１０３ｂからのデータを受信するための処理回路を備える。処理回路は、メモリ１２１ａに格納されるプログラムを実行する図示しないＣＰＵ（中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、ＤＳＰともいう）である。
【００２９】
制御系システム１０１ａのネットワークユニット１０３ａにおけるバス用ＤＭＡＣ１２２ａ、送信制御部１２３ａ、受信制御部１２４ａ、送信ＤＭＡＣ１２５ａ、送信ＦＩＦＯ１２６ａ、受信ＤＭＡＣ１２７ａ、および受信ＦＩＦＯ１２８ａの各機能は、ソフトウェア、ファームウェア、またはソフトウェアとファームウェアとの組み合わせにより実現される。ソフトウェアまたはファームウェアは、プログラムとして記述され、メモリ１２１ａに格納される。処理回路は、メモリ１２１ａに記憶されたプログラムを読み出して実行することにより、各機能を実現する。すなわち、制御系システム１０１ａのネットワークユニット１０３ａは、メモリ１２１ａに格納されたデータをメモリ１１１ａに転送するステップ、待機系システム１０１ｂのネットワークユニット１０３ｂへのデータの送信を制御するステップ、待機系システム１０１ｂのネットワークユニット１０３ｂからのデータの受信を制御するステップ、メモリ１２１ａに格納されたデータを送信ＦＩＦＯ１２６ａに転送するステップ、メモリ１２１ａから転送されたデータを待機系システム１０１ｂのネットワークユニット１０３ｂに送信するステップ、受信ＦＩＦＯ１２８ａが受信したデータをメモリ１２１ａに転送するステップ、待機系システム１０１ｂのネットワークユニット１０３ｂからのデータを受信するステップが結果的に実行されることになるプログラムを格納するためのメモリ１２１ａを備える。また、これらのプログラムは、バス用ＤＭＡＣ１２２ａ、送信制御部１２３ａ、受信制御部１２４ａ、送信ＤＭＡＣ１２５ａ、送信ＦＩＦＯ１２６ａ、受信ＤＭＡＣ１２７ａ、および受信ＦＩＦＯ１２８ａの手順または方法をコンピュータに実行させるものであるともいえる。ここで、メモリとは、例えば、ＲＡＭ、ＲＯＭ、フラッシュメモリー、ＥＰＲＯＭ、ＥＥＰＲＯＭ等の不揮発性または揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等が該当する。
【００３０】
次に、二重化システム１００の動作について説明する。
【００３１】
図４，５は、二重化システム１００の動作の一例を示すシーケンス図であり、制御系システム１０１ａのＣＰＵユニット１０２ａから待機系システム１０１ｂのＣＰＵユニット１０２ｂに対して大量のデータを複数回に分けて送信するときの動作を示している。なお、図４と図５との境界はＢＬ１で示されている。
【００３２】
図４，５において、ステップＳ１０１〜ステップＳ１０４は制御系システム１０１ａにおけるＣＰＵユニット１０２ａのバス用ＤＭＡＣ１１２ａの動作を示し、ステップＳ１１１〜ステップＳ１１６は制御系システム１０１ａにおけるネットワークユニット１０３ａのＣＰＵ１２０ａの動作を示し、ステップＳ１２１〜ステップＳ１２３は制御系システム１０１ａにおけるネットワークユニット１０３ａの送信ＤＭＡＣ１２５ａの動作を示し、ステップＳ１３１〜ステップＳ１３３は待機系システム１０１ｂにおけるネットワークユニット１０３ｂの受信ＤＭＡＣ１２７ｂの動作を示し、ステップＳ１４１およびステップＳ１４２は待機系システム１０１ｂにおけるネットワークユニット１０３ｂの送信ＤＭＡＣ１２５ｂの動作を示し、ステップＳ１５１〜ステップＳ１５４は待機系システム１０１ｂにおけるネットワークユニット１０３ｂのＣＰＵ１２０ｂの動作を示し、ステップＳ１６１およびステップＳ１６２は待機系システム１０１ｂにおけるネットワークユニット１０３ｂのバス用ＤＭＡＣ１２２ｂの動作を示し、ステップＳ１７１は待機系システム１０１ｂにおけるＣＰＵユニット１０２ｂのＣＰＵ１１０ｂの動作を示している。
【００３３】
図６は、メモリ１１１ａ、メモリ１２１ａ、送信ＦＩＦＯ１２６ａ、および受信ＦＩＦＯ１２８ｂの初期状態を示す図である。
【００３４】
まず、ＤＡＴＡ１の送信について説明する。
【００３５】
ＤＡＴＡ１の送信は、ステップＳ１０１、ステップＳ１１１、ステップＳ１１３、ステップＳ１２１、ステップＳ１３１、ステップＳ１４１、ステップＳ１５１、ステップＳ１５２、ステップＳ１６１、およびステップＳ１７１の処理を実行することによって実現される。
【００３６】
ステップＳ１０１において、ＣＰＵユニット１０２ａは、制御系システム１０１ａと待機系システム１０１ｂとを同期するためのＤＡＴＡ１を、ネットワークユニット１０３ａに転送する。具体的には、ＣＰＵユニット１０２ａのバス用ＤＭＡＣ１１２ａは、メモリ１１１ａに格納されているＤＡＴＡ１を、ユニット間接続バス１０４ａを介してネットワークユニット１０３ａのメモリ１２１ａに転送する。このとき、ＤＡＴＡ１は、メモリ１２１ａの送信ＤＭＡＣ１２５ａがアクセス可能なデータ領域に格納される。そして、バス用ＤＭＡＣ１１２ａは、メモリ１２１ａにＤＡＴＡ１を転送した後に、ネットワークユニット１０３ａのＣＰＵ１２０ａに対してバス通信した旨を割込みにより通知する。
【００３７】
図７は、ＣＰＵユニット１０２ａからネットワークユニット１０３ａにＤＡＴＡ１を転送した時のメモリ１１１ａ、メモリ１２１ａ、送信ＦＩＦＯ１２６ａ、および受信ＦＩＦＯ１２８ｂの状態を示す図である。図７に示すように、メモリ１２１ａにはＤＡＴＡ１が格納されている。
【００３８】
ステップＳ１１１において、ネットワークユニット１０３ａのＣＰＵ１２０ａは、ＣＰＵユニット１０２ａのバス用ＤＭＡＣ１１２ａからバス通信した旨の割込みの通知を受けると、送信ＦＩＦＯ１２６ａの空き数が１以上であり、かつ送信ＤＭＡＣ１２５ａの動作が停止中であることを確認する。具体的には、ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数の情報、および送信ＤＭＡＣ１２５ａの動作が動作中または停止中であるかの情報を送信ＤＭＡＣ１２５ａから取得し、取得した情報に基づいて上記の確認を行う。
【００３９】
上記の確認後、ＣＰＵ１２０ａは、メモリ１２１ａのヘッダ領域（ステップＳ１０１でメモリ１２１ａに格納されたＤＡＴＡ１に対応するヘッダ領域）において、宛先番号１３０として「待機系システム１０１ｂのネットワークユニット１０３ｂのＩＤ」を設定し（書き込み）、シーケンス番号１３１として「１」を設定し、確認応答番号１３２として「無し」を設定し、フレーム種別１３３として「トラッキングデータフレーム１」を設定し、データ量１３４として「ＤＡＴＡ１のデータ量」を設定する。その後、ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数を−１とし（空き数を５から４に変更し）、送信ＤＭＡＣ１２５ａを起動する。
【００４０】
ステップＳ１２１において、送信ＤＭＡＣ１２５ａは、メモリ１２１ａのヘッダ領域（ステップＳ１０１でメモリ１２１ａに格納されたＤＡＴＡ１に対応するヘッダ領域）において、チェックサム１３５を生成する。そして、送信ＤＭＡＣ１２５ａは、メモリ１２１ａに格納されているＤＡＴＡ１およびそのヘッダ情報を、送信ＦＩＦＯ１２６ａに転送する。図８は、送信ＦＩＦＯ１２６ａにＤＡＴＡ１を転送した時のメモリ１１１ａ、メモリ１２１ａ、送信ＦＩＦＯ１２６ａ、および受信ＦＩＦＯ１２８ｂの状態を示す図である。
【００４１】
送信ＦＩＦＯ１２６ａは、メモリ１２１ａから転送されたＤＡＴＡ１およびそのヘッダ情報を、ネットワークユニット１０３ｂの受信ＦＩＦＯ１２８ｂに送信する。転送終了後、送信ＤＭＡＣ１２５ａは、転送終了の旨をＣＰＵ１２０ａに割込みにより通知し、動作を停止する。
【００４２】
ステップＳ１３１において、ネットワークユニット１０３ｂの受信ＤＭＡＣ１２７ｂは、受信ＦＩＦＯ１２８ｂがＤＡＴＡ１およびそのヘッダ情報を受信したことを確認するとともに、ヘッダ情報に含まれるチェックサム１３５を参照して正常なデータを受信したことを確認する。その後、受信ＤＭＡＣ１２７ｂは、ヘッダ情報に含まれるフレーム種別１３３を参照し、フレーム種別１３３に対応するメモリ１２１ｂ内のフレーム種別宛先アドレス１４０にＤＡＴＡ１を転送する。なお、フレーム種別宛先アドレス１４０は、後にバス用ＤＭＡＣ１２２ｂを起動したときに、メモリ１２１ｂに格納されたデータをＣＰＵユニット１０２ｂに転送可能なアドレスに予め設定されているものとする。これにより、後のステップＳ１５２の処理を短時間で行うことが可能となる。受信ＤＭＡＣ１２７ｂは、ＤＡＴＡ１をメモリ１２１ｂに転送した後、当該転送が完了した旨をＣＰＵ１２０ｂに割込みにより通知し、フレーム種別宛先アドレス１４０を更新する（他のアドレスを設定する）。
【００４３】
ステップＳ１５１において、ＣＰＵ１２０ｂは、メモリ１２１ｂに格納されたＤＡＴＡ１のヘッダ情報に含まれるシーケンス番号１３１が「１」であることを確認することにより、ＤＡＴＡ１を正常に受信したことを認識する。その後、ＣＰＵ１２０ｂは、ＤＡＴＡ１を正常に受信した旨をネットワークユニット１０３ａに応答すべく応答データを生成する。このとき、ＣＰＵ１２０ｂは、応答データのヘッダ情報において、宛先番号１３０として「制御系システム１０１ａのネットワークユニット１０３ａのＩＤ」を設定し、シーケンス番号１３１として「無し」を設定し、確認応答番号１３２として「１」を設定し、フレーム種別１３３として「応答フレーム」を設定し、データ量１３４として「受信した回数」を設定する。その後、ＣＰＵ１２０ｂは、送信ＤＭＡＣ１２５ｂを起動する。
【００４４】
ステップＳ１５２において、ＣＰＵ１２０ｂは、メモリ１２１ｂに格納されたＤＡＴＡ１をメモリ１１１ｂに転送するために、バス用ＤＭＡＣ１２２ｂを起動する。
【００４５】
ステップＳ１６１において、バス用ＤＭＡＣ１２２ｂは、メモリ１２１ｂに格納されたＤＡＴＡ１をメモリ１１１ｂに転送する。
【００４６】
ステップＳ１７１において、ＣＰＵユニット１０２ｂは、ネットワークユニット１０３ｂから転送されメモリ１１１ｂに格納されたＤＡＴＡ１の内容を確認し、ＤＡＴＡ１に係る全ての情報を受信した後、制御系システム１０１ａのＣＰＵユニット１０２ａと同じ状態となるように（ＣＰＵユニット１０２ａとＣＰＵユニット１０２ｂとの同期をとるために）、データ情報（ここでは、ＤＡＴＡ１の情報）を展開する。
【００４７】
上記の動作を行うことにより、制御系システム１０１ａから待機系システム１０１ｂにＤＡＴＡ１が送信される。次に、当該ＤＡＴＡ１の送信に関連して実行する動作について説明する。
【００４８】
ステップＳ１４１において（ステップＳ１５２とほぼ同じタイミングで）、送信ＤＭＡＣ１２５ｂは、ステップＳ１５１でＣＰＵ１２０ｂが生成した応答データを、ネットワークユニット１０３ａの受信ＦＩＦＯ１２８ａに送信する。
【００４９】
その後、ネットワークユニット１０３ａの受信ＤＭＡＣ１２７ａは、受信した応答データのヘッダ情報に含まれるフレーム種別１３３が「応答フレーム」であることを確認して、応答データを受信した旨をＣＰＵ１２０ａに割込みにより通知する。
【００５０】
ステップＳ１１３において、ＣＰＵ１２０ａは、応答データを受信した旨が割込みにより通知されると、ヘッダ情報に含まれる確認応答番号１３２が「１」であることを確認することにより、応答データを正常に受信したことを認識する。その後、ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数を＋１とする（空き数を３から４に変更する）。図９は、応答データを受信する前のメモリ１１１ａ、メモリ１２１ａ、送信ＦＩＦＯ１２６ａ、および受信ＦＩＦＯ１２８ｂの状態を示している。また、図１０は、応答データを受信した後のメモリ１１１ａ、メモリ１２１ａ、送信ＦＩＦＯ１２６ａ、および受信ＦＩＦＯ１２８ｂの状態を示している。図９，１０に示すように、本実施の形態１では、送信ＦＩＦＯ１２６ａの空き数を増加させることにより、送信ＦＩＦＯ１２６ａの空きが常にあるため、制御系システム１０１ａから待機系システム１０１ｂへのデータの送信動作が中断されることはない。
【００５１】
上記では、ＤＡＴＡ１の送信に関する動作について説明した。次に、ＤＡＴＡ２の送信に関する動作について説明する。
【００５２】
ＤＡＴＡ２の送信は、ステップＳ１０２、ステップＳ１１２、ステップＳ１１５、ステップＳ１２１、ステップＳ１３２、ステップＳ１４２、ステップＳ１５３、ステップＳ１５４、およびステップＳ１６１の処理を実行することによって実現される。以下では、ＤＡＴＡ１の送信に関する動作と異なる動作について説明し、ＤＡＴＡ１の送信に関する動作と同様の動作については説明を省略する。
【００５３】
ステップＳ１１２において、ＣＰＵ１２０ａは、メモリ１２１ａのヘッダ領域（ステップＳ１０２でメモリ１２１ａに格納されたＤＡＴＡ２に対応するヘッダ領域）において、シーケンス番号１３１として「２」を設定する。
【００５４】
ステップＳ１５３において、ＣＰＵ１２０ｂは、ＤＡＴＡ２を正常に受信した旨をネットワークユニット１０３ａに応答すべく応答データを生成する。このとき、ＣＰＵ１２０ｂは、応答データのヘッダ情報において、確認応答番号１３２として「２」を設定する。
【００５５】
上記の動作を行うことにより、制御系システム１０１ａから待機系システム１０１ｂにＤＡＴＡ２が送信される。また、図４に示すように、ステップＳ１０２はステップＳ１２１と並列して動作し、ステップＳ１２２はステップＳ１１３、ステップＳ１４１、ステップＳ１５２と並列して動作している。これにより、二重化システム１００全体のオーバーヘッドを少なくすることが可能となる。
【００５６】
以上のことから、本実施の形態１によれば、制御系システム１０１ａにおけるＣＰＵ１１０ａ、ＣＰＵ１２０ａ、および送信ＤＭＡＣ１２５ａと、待機系システム１０１ｂにおける受信ＤＭＡＣ１２７ｂ、送信ＤＭＡＣ１２５ｂ、ＣＰＵ１２０ｂ、およびバス用ＤＭＡＣ１２２ｂとを並列に動作させることにより、送信の動作に要する時間を短縮することができる。従って、制御系システム１０１ａから待機系システム１０１ｂにデータを高速に送信することができ、データの送信に係る効率を向上させることが可能となる。
【００５７】
＜実施の形態２＞
本発明の実施の形態２では、ＣＰＵユニット１０２ａとネットワークユニット１０３ａ
（ＣＰＵユニット１０２ｂとネットワークユニット１０３ｂ）との間におけるデータの転送速度（バス転送速度）が、ネットワークユニット１０３ａとネットワークユニット１０３ｂとの間におけるデータの転送速度（ネットワーク転送速度）よりも速い場合について説明する。
【００５８】
図１１，１２は、本実施の形態２による二重化システムの動作の一例を示すシーケンス図である。なお、図１１と図１２との境界はＢＬ２で示されている。
【００５９】
図１１，１２において、ステップＳ１８１〜ステップＳ１８９は、ＣＰＵ１２０ａの動作を示している。その他の構成および動作については、実施の形態１と同様であるため、ここでは説明を省略する。
【００６０】
ステップＳ１８１において、ＣＰＵ１２０ａは、バス用ＤＭＡＣ１１２ａからバス通信した旨の割込みの通知を受けると、送信ＦＩＦＯ１２６ａの空き数が１以上であり、かつ送信ＤＭＡＣ１２５ａの動作が動作中であることを確認する。また、ＣＰＵ１２０ａは、メモリ１２１ａのヘッダ領域（ステップＳ１０２でメモリ１２１ａに格納されたＤＡＴＡ２に対応するヘッダ領域）において、宛先番号１３０として「待機系システム１０１ｂのネットワークユニット１０３ｂのＩＤ」を設定し、シーケンス番号１３１として「２」を設定し、確認応答番号１３２として「無し」を設定し、フレーム種別１３３として「トラッキングデータフレーム１」を設定し、データ量１３４として「ＤＡＴＡ２のデータ量」を設定する。
【００６１】
このとき、ＣＰＵ１２０ａは、送信ＤＭＡＣ１２５ａを起動しない。すなわち、送信ＤＭＡＣ１２５ａは、メモリ１２１ａに格納されているＤＡＴＡ２およびそのヘッダ情報を、送信ＦＩＦＯ１２６ａに転送しない。
【００６２】
ステップＳ１８２において、ＣＰＵ１２０ａは、送信ＤＭＡＣ１２５ａから転送終了の旨の割込みの通知を受けると、送信ＦＩＦＯ１２６ａの空き数が１以上であり、かつ送信ＤＭＡＣ１２５ａの動作が停止中であることを確認する。その後、ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数を−１とし、送信ＤＭＡＣ１２５ａを起動する。
【００６３】
ステップＳ１８３において、ＣＰＵ１２０ａは、バス用ＤＭＡＣ１１２ａからバス通信した旨の割込みの通知を受けると、送信ＦＩＦＯ１２６ａの空き数が１以上であり、かつ送信ＤＭＡＣ１２５ａの動作が動作中であることを確認する。また、ＣＰＵ１２０ａは、メモリ１２１ａのヘッダ領域（ステップＳ１０３でメモリ１２１ａに格納されたＤＡＴＡ３に対応するヘッダ領域）において、宛先番号１３０として「待機系システム１０１ｂのネットワークユニット１０３ｂのＩＤ」を設定し、シーケンス番号１３１として「３」を設定し、確認応答番号１３２として「無し」を設定し、フレーム種別１３３として「トラッキングデータフレーム１」を設定し、データ量１３４として「ＤＡＴＡ３のデータ量」を設定する。
【００６４】
このとき、ＣＰＵ１２０ａは、送信ＤＭＡＣ１２５ａを起動しない。すなわち、送信ＤＭＡＣ１２５ａは、メモリ１２１ａに格納されているＤＡＴＡ３およびそのヘッダ情報を、送信ＦＩＦＯ１２６ａに転送しない。
【００６５】
ステップＳ１８４において、ＣＰＵ１２０ａは、バス用ＤＭＡＣ１１２ａからバス通信した旨の割込みの通知を受けると、送信ＦＩＦＯ１２６ａの空き数が３であり、かつ送信ＤＭＡＣ１２５ａの動作が動作中であることを確認する。また、ＣＰＵ１２０ａは、メモリ１２１ａのヘッダ領域（ステップＳ１０４でメモリ１２１ａに格納されたＤＡＴＡ４に対応するヘッダ領域）において、宛先番号１３０として「待機系システム１０１ｂのネットワークユニット１０３ｂのＩＤ」を設定し、シーケンス番号１３１として「４」を設定し、確認応答番号１３２として「無し」を設定し、フレーム種別１３３として「トラッキングデータフレーム１」を設定し、データ量１３４として「ＤＡＴＡ４のデータ量」を設定する。
【００６６】
このとき、ＣＰＵ１２０ａは、送信ＤＭＡＣ１２５ａを起動しない。すなわち、送信ＤＭＡＣ１２５ａは、メモリ１２１ａに格納されているＤＡＴＡ４およびそのヘッダ情報を、送信ＦＩＦＯ１２６ａに転送しない。
【００６７】
また、ＣＰＵ１２０ａは、送信ＤＭＡＣ１２５ａの動作中にＣＰＵユニット１０２ａから連続してデータ（ＤＡＴＡ３およびＤＡＴＡ４）が転送されてきたため、次に送信ＤＭＡＣ１２５ａを起動する際には、ＤＡＴＡ３およびＤＡＴＡ４の２つのデータをメモリ１２１ａから送信ＦＩＦＯ１２６ａに転送できるように設定する。設定後、ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数が転送するデータ数よりも大きい値であることを確認する。なお、ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数よりも転送するデータ数の方が大きい値である場合は、送信ＦＩＦＯ１２６ａの空き数分のデータだけ転送できるようにする。
【００６８】
ステップＳ１８５において、ＣＰＵ１２０ａは、応答データを受信した旨が割込みにより通知されると、ヘッダ情報に含まれる確認応答番号１３２が「１」であることを確認することにより、応答データを正常に受信したことを認識する。その後、ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数を＋１とする。
【００６９】
ステップＳ１８６において、ＣＰＵ１２０ａは、送信ＤＭＡＣ１２５ａから転送終了の旨の割込みの通知を受けると、送信ＦＩＦＯ１２６ａの空き数が４であって、当該空き数が転送するデータ数よりも大きい値であり、かつ送信ＤＭＡＣ１２５ａの動作が停止中であることを確認する（図１３参照）。その後、ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数を−２とし、送信ＤＭＡＣ１２５ａを起動する（図１４参照）。図１３は、ステップＳ１８６の動作前のメモリ１１１ａ、メモリ１２１ａ、送信ＦＩＦＯ１２６ａ、および受信ＦＩＦＯ１２８ｂの状態を示している。また、図１４は、ステップＳ１８６の動作後のメモリ１１１ａ、メモリ１２１ａ、送信ＦＩＦＯ１２６ａ、および受信ＦＩＦＯ１２８ｂの状態を示している。図１３，１４において、送信ＦＩＦＯ１２６ａでは、ＤＡＴＡ１は送信済みであるため空きとみなされる。本実施の形態２では、バス転送速度とネットワーク転送速度との差によって送信ＦＩＦＯ１２６ａの空き数が少なくなるため、送信ＦＩＦＯ１２６ａの空き数を参照することによりデータが上書きされることを防いでいる。
【００７０】
以上のことから、本実施の形態２によれば、複数のデータを連結して転送することによって、二重化システム１００全体のオーバーヘッドを少なくすることが可能となる。また、制御系システム１０１ａから待機系システム１０１ｂにデータを高速に送信することができ、データの送信に係る効率を向上させることが可能となる。
【００７１】
＜実施の形態３＞
本発明の実施の形態３では、制御系システム１０１ａから待機系システム１０１ｂにデータを送信することができなかった場合に、送信できなかったデータを再送信する場合について説明する。
【００７２】
図１５〜１７は、本実施の形態３による二重化システムの動作の一例を示すシーケンス図である。なお、図１５と図１６との境界はＢＬ３で示され、図１６と図１７との境界はＢＬ４で示されている。
【００７３】
図１５〜１７において、ステップＳ１９１〜ステップＳ２０７はＣＰＵ１２０ａの動作を示し、ステップＳ２１１〜ステップＳ２１６は送信ＤＭＡＣ１２５ｂの動作を示し、ステップＳ２２１〜ステップＳ２２９はＣＰＵ１２０ｂの動作を示している。その他の構成および動作については、実施の形態１と同様であるため、ここでは説明を省略する。
【００７４】
ステップＳ１２２において、送信ＤＭＡＣ１２５ａは、メモリ１２１ａに格納されているＤＡＴＡ２およびそのヘッダ情報を、送信ＦＩＦＯ１２６ａに転送する。転送終了後、送信ＤＭＡＣ１２５ａは、転送終了の旨をＣＰＵ１２０ａに割込みにより通知し、動作を停止する。
【００７５】
ここで、送信ＦＩＦＯ１２６ａは、メモリ１２１ａから転送されたＤＡＴＡ２およびそのヘッダ情報を、ネットワークユニット１０３ｂの受信ＦＩＦＯ１２８ｂに送信するが、ノイズの影響によって受信ＦＩＦＯ１２８ｂにはＤＡＴＡ２およびそのヘッダ情報が届いていないものとする。このように、データがネットワークユニット１０３ｂに届かない場合は、図４のステップＳ１３２、ステップＳ１５３、ステップＳ１５４、およびステップＳ１４２の動作を行うことができない。
【００７６】
ステップＳ１９１において、ＣＰＵ１２０ａは、応答データを受信した旨が割込みにより通知されると、ヘッダ情報に含まれる確認応答番号１３２が「１」であることを確認することにより、応答データを正常に受信したことを認識する。その後、ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数を＋１とする。
【００７７】
なお、ステップＳ１９１の処理中に、ＣＰＵ１２０ａは、バス用ＤＭＡＣ１１２ａからバス通信した旨の割込みの通知を受ける場合がある。このような場合において、ＰＵ１２０ａは、応答データを受信した旨の割込みによる通知よりも、バス通信した旨の割込みによる通知の方が、優先度が高くなるように予め設定しておくことによって、応答データを受信した旨の割込みによる通知を受けたときの処理（ステップＳ１９１の処理）を中断し、バス通信した旨の割込みによる通知を受けたときの処理（ステップＳ１９２の処理）に移行する。
【００７８】
ステップＳ１９２において、ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数が１以上であり、かつ送信ＤＭＡＣ１２５ａの動作が停止中であることを確認する。また、ＣＰＵ１２０ａは、メモリ１２１ａのヘッダ領域（ステップＳ１０３でメモリ１２１ａに格納されたＤＡＴＡ３に対応するヘッダ領域）において、宛先番号１３０として「待機系システム１０１ｂのネットワークユニット１０３ｂのＩＤ」を設定し、シーケンス番号１３１として「３」を設定し、確認応答番号１３２として「無し」を設定し、フレーム種別１３３として「トラッキングデータフレーム１」を設定し、データ量１３４として「ＤＡＴＡ３のデータ量」を設定する。その後、ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数を−１とし、送信ＤＭＡＣ１２５ａを起動する。
【００７９】
ステップＳ１９３において、ＣＰＵ１２０ａは、送信ＤＭＡＣ１２５ａを起動した後、中断したステップＳ１９１の処理を再開する。
【００８０】
上記より、割込みの優先度を変更することによって、二重化システム１００全体のオーバーヘッドを少なくすることが可能となる。
【００８１】
次に、ＤＡＴＡ２の送信の失敗後、ＤＡＴＡ２を再送信するまでの動作について説明する。
【００８２】
ステップＳ２２１において、ＣＰＵ１２０ｂは、メモリ１２１ｂに格納されたＤＡＴＡ３のヘッダ情報に含まれるシーケンス番号１３１が「３」であることを確認する。このとき、ＣＰＵ１２０ｂは、シーケンス番号１３１が「１」のデータ（ＤＡＴＡ１）を受信した後に、シーケンス番号１３１が「２」のデータではなく、シーケンス番号１３１が「３」のデータ（ＤＡＴＡ３）を受信したことから、データの受信が異常であると判断する。
【００８３】
そして、ＣＰＵ１２０ｂは、データの受信が異常である旨をネットワークユニット１０３ａに応答すべく応答データを生成する。このとき、ＣＰＵ１２０ｂは、応答データのヘッダ情報において、宛先番号１３０として「制御系システム１０１ａのネットワークユニット１０３ａのＩＤ」を設定し、シーケンス番号１３１として「無し」を設定し、確認応答番号１３２として「１」を設定し、フレーム種別１３３として「応答フレーム」を設定し、データ量１３４として「受信した回数」を設定する。その後、ＣＰＵ１２０ｂは、送信ＤＭＡＣ１２５を起動する。なお、ステップＳ２２２およびステップＳ２２３についても同様の処理を行う。
【００８４】
ステップＳ２１１において、送信ＤＭＡＣ１２５ｂは、ステップＳ２２１でＣＰＵ１２０ｂが生成した応答データを、ネットワークユニット１０３ａの受信ＦＩＦＯ１２８ａに送信する。なお、ステップＳ２１２およびステップＳ２１３についても同様の処理を行う。
【００８５】
ステップＳ１９６において、ＣＰＵ１２０ａは、応答データを受信した旨が割込みにより通知されると、ヘッダ情報に含まれる確認応答番号１３２が「１」であることを確認する。このとき、ステップＳ１９１で確認応答番号１３２が「１」である応答データを受信しているため、今回（ステップＳ１９６）は２度目の確認応答番号１３２が「１」である応答データを受信したことになる。同じ確認応答番号１３２を受信した場合は、次の番号以降のシーケンス番号１３１のデータの送信、すなわちシーケンス番号１３１が「２」以降のデータの送信は失敗であると判断する。ここでは、ＤＡＴＡ２およびＤＡＴＡ３の送信が失敗であると判断する。
【００８６】
上記の判断の後、ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数を−２とする。図１８は、ステップＳ１９６の動作前（５回目のデータの転送を開始した後）のメモリ１１１ａ、メモリ１２１ａ、送信ＦＩＦＯ１２６ａ、および受信ＦＩＦＯ１２８ｂの状態を示している。また、図１９は、ステップＳ１９６の動作後（２回目の応答後）のメモリ１１１ａ、メモリ１２１ａ、送信ＦＩＦＯ１２６ａ、および受信ＦＩＦＯ１２８ｂの状態を示している。図１８において、送信ＦＩＦＯ１２６ａでは、ＤＡＴＡ１は送信済みであるため空きとみなされる。また、図１９において、送信ＦＩＦＯ１２６ａでは、ＤＡＴＡ１は送信済みであるため空きとみなされ、ＤＡＴＡ２およびＤＡＴＡ３が送信済みであると認識されて空きとみなされる。図１９に示すように、送信ＦＩＦＯ１２６ａの空き数が３となり、ＣＰＵユニット１０２ａから４つのデータが送られている状態となっている。従って、ＣＰＵ１２０ａは、次に送信ＤＭＡＣ１２５ａを起動する際には、ＤＡＴＡ２、ＤＡＴＡ３、およびＤＡＴＡ４の３つのデータをメモリ１２１ａから送信ＦＩＦＯ１２６ａに転送できるように設定する。
【００８７】
ステップＳ１９７において、ＣＰＵ１２０ａは、転送終了の旨が割込みにより通知されると、再び送信ＤＭＡＣ１２５ａを起動する。その後、送信ＤＭＡＣ１２５ａは、メモリ１２１ａに格納されているＤＡＴＡ２〜４およびそれらのヘッダ情報を、送信ＦＩＦＯ１２６ａに転送する（ステップＳ１２６〜ステップＳ１２８）。送信ＦＩＦＯ１２６ａは、メモリ１２１ａから転送されたＤＡＴＡ２〜４およびそれらのヘッダ情報を、ネットワークユニット１０３ｂの受信ＦＩＦＯ１２８ｂに送信する。その後、ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数を−３とし、空き数を０とする。図２０は、ステップＳ１９７の動作後（６回目のデータの転送を開始した後）のメモリ１１１ａ、メモリ１２１ａ、送信ＦＩＦＯ１２６ａ、および受信ＦＩＦＯ１２８ｂの状態を示している。図２０において、送信ＦＩＦＯ１２６ａでは、ＤＡＴＡ４，５は送信中であり、ＤＡＴＡ２〜４は送信を開始したため、空きは０となる。
【００８８】
ステップＳ１９８において、ＣＰＵ１２０ａは、応答データを受信した旨が割込みにより通知されると、ヘッダ情報に含まれる確認応答番号１３２が「１」であることを確認する。今回（ステップＳ１９８）は、ステップＳ１９１およびステップＳ１９６に続いて、確認応答番号１３２が「１」のデータを受信したことになる（３度目）。ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数を＋１とする。
【００８９】
以上のことから、本実施の形態３によれば、送信に失敗したデータの再送信を行うことが可能となる。
【００９０】
＜実施の形態４＞
本発明の実施の形態４では、制御系システム１０１ａから待機系システム１０１ｂに系を切替える場合について説明する。
【００９１】
図２１，２２は、本実施の形態４による二重化システムの動作の一例を示すシーケンス図である。なお、図２１と図２２との境界はＢＬ５で示されている。
【００９２】
図２１，２２において、ステップＳ２３１はバス用ＤＭＡＣ１１２ａの動作を示し、ステップＳ２４１〜ステップＳ２４４はＣＰＵ１２０ａの動作を示し、ステップＳ２５１およびステップＳ２５２は送信ＤＭＡＣ１２５ａの動作を示し、ステップＳ２６１は受信ＤＭＡＣ１２７ｂの動作を示し、ステップＳ２７１は送信ＤＭＡＣ１２５ｂの動作を示し、ステップＳ２８２およびステップＳ２８３はＣＰＵ１２０ｂの動作を示し、ステップＳ２９１はバス用ＤＭＡＣ１２２ｂの動作を示し、ステップＳ３０１はＣＰＵ１１０ｂの動作を示している。その他の構成および動作については、実施の形態２と同様であるため、ここでは説明を省略する。なお、以下では、ＣＰＵユニット１０２ａにおいて、ＤＡＴＡ５の転送後（ステップＳ１０５の後）に何らかの異常が発生したため、制御系システム１０１ａから待機系システム１０１ｂに系を切替える場合について説明する。
【００９３】
ステップＳ２３１において、バス用ＤＭＡＣ１１２ａは、系の切替え要求をＣＰＵ１２０ａに送信する。
【００９４】
ステップＳ２４１において、ＣＰＵ１２０ａは、送信ＤＭＡＣ１２５ａが動作中であるか否かを確認し、動作中であれば送信ＤＭＡＣ１２５ａに対して停止要求を行う。このとき、ＤＡＴＡ４の送信は中断されるため、ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数を＋１とする。
【００９５】
ステップＳ２５１において、送信ＤＭＡＣ１２５ａは、ＣＰＵ１２０ａからの停止要求を受けて、ＤＡＴＡ３を転送した後に動作を停止する。
【００９６】
ステップＳ２４２において、ＣＰＵ１２０ａは、送信ＤＭＡＣ１２５ａから転送終了の旨の割込みの通知を受けると、メモリ１２１ａのヘッダ領域において、宛先番号１３０として「待機系システム１０１ｂのネットワークユニット１０３ｂのＩＤ」を設定し、シーケンス番号１３１として「４」を設定し、確認応答番号１３２として「無し」を設定し、フレーム種別１３３として「系切替えフレーム」を設定し、データ量１３４として「系切替え情報のデータ量」を設定する。その後、ＣＰＵ１２０ａは、送信ＦＩＦＯ１２６ａの空き数を−１とし（空き数を５から４に変更し）、送信ＤＭＡＣ１２５ａを起動する。
【００９７】
ステップＳ２５２において、送信ＤＭＡＣ１２５ａは、メモリ１２１ａのヘッダ領域（系切替え情報に対応するヘッダ領域）において、チェックサム１３５を生成する。そして、送信ＤＭＡＣ１２５ａは、メモリ１２１ａに格納されている系切替え情報およびそのヘッダ情報を、送信ＦＩＦＯ１２６ａに転送する。
【００９８】
送信ＦＩＦＯ１２６ａは、メモリ１２１ａから転送された系切替え情報およびそのヘッダ情報を、ネットワークユニット１０３ｂの受信ＦＩＦＯ１２８ｂに送信する。転送終了後、送信ＤＭＡＣ１２５ａは、転送終了の旨をＣＰＵ１２０ａに割込みにより通知し、動作を停止する。
【００９９】
ステップＳ２６１において、受信ＤＭＡＣ１２７ｂは、受信ＦＩＦＯ１２８ｂが系切替え情報およびそのヘッダ情報を受信したことを確認するとともに、ヘッダ情報に含まれるチェックサム１３５を参照して正常なデータを受信したことを確認する。その後、受信ＤＭＡＣ１２７ｂは、ヘッダ情報に含まれるフレーム種別１３３を参照し、フレーム種別１３３に対応するメモリ１２１ｂ内のフレーム種別宛先アドレス１４０に系切替え情報を転送する。なお、フレーム種別宛先アドレス１４０は、後にバス用ＤＭＡＣ１２２ｂを起動したときに、メモリ１２１ｂに格納された系切替え情報をＣＰＵユニット１０２ｂに転送可能なアドレスに予め設定されているものとする。これにより、後のステップＳ２８２の処理を短時間で行うことが可能となる。受信ＤＭＡＣ１２７ｂは、系切替え情報をメモリ１２１ｂに転送した後、当該転送が完了した旨をＣＰＵ１２０ｂに割込みにより通知し、フレーム種別宛先アドレス１４０を更新する（他のアドレスを設定する）。
【０１００】
ステップＳ２８２において、ＣＰＵ１２０ｂは、メモリ１２１ｂに格納された系切替え情報のヘッダ情報に含まれるシーケンス番号１３１が「４」であることを確認することにより、系切替え情報を正常に受信したことを認識する。その後、ＣＰＵ１２０ｂは、系切替え情報をＣＰＵユニット１０２ｂのメモリ１１１ｂに転送すべく、バス用ＤＭＡＣ１２２ｂを起動する。
【０１０１】
なお、ステップＳ２８２において、データを受信した旨の割込みによる通知よりも、系を切替える旨の割込みによる通知の方が、優先度が高くなるように予め設定しておくことによって、ステップＳ２８３におけるＤＡＴＡ３の転送処理を中断し、系の切替えの通知を早く行うことが可能となる。
【０１０２】
ステップＳ２９１において、バス用ＤＭＡＣ１２２ｂは、メモリ１２１ｂに格納された系切替え情報をメモリ１１１ｂに転送する。
【０１０３】
ステップＳ３０１において、ＣＰＵユニット１０２ｂは、ネットワークユニット１０３ｂから転送されメモリ１１１ｂに格納された系切替え情報の内容を確認し、最後に制御系システム１０１ａと同期がとれた状態を最新の状態として、制御系システム１０１ａから待機系システム１０１ｂに系を切替える。
【０１０４】
系を切替えた後の待機系システム１０１ｂは、ステップＳ２８３において、ＣＰＵ１２０ｂは、系の切替えが正常に行われた旨をネットワークユニット１０３ａに応答すべく応答データを生成する。このとき、ＣＰＵ１２０ｂは、応答データのヘッダ情報において、宛先番号１３０として「制御系システム１０１ａのネットワークユニット１０３ａのＩＤ」を設定し、シーケンス番号１３１として「無し」を設定し、確認応答番号１３２として「１」を設定し、フレーム種別１３３として「系切替え応答フレーム」を設定し、データ量１３４として「系切替え応答データ」を設定する。その後、ＣＰＵ１２０ｂは、送信ＤＭＡＣ１２５ｂを起動する。
【０１０５】
以上のことから、本実施の形態４によれば、ステップＳ２８２において系の切替えに関する処理の優先度を高めることによって、系の切替えを高速に行うことが可能となる。
【０１０６】
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。
【符号の説明】
【０１０７】
１，１００  二重化システム、１０１ａ  制御系システム、１０１ｂ  待機系システム、１０２ａ，１０２ｂ  ＣＰＵユニット、１０３ａ，１０３ｂ  ネットワークユニット、１０４ａ，１０４ｂ  ユニット間接続バス、１１０ａ，１１０ｂ  ＣＰＵ、１１１ａ，１１１ｂ  メモリ、１１２ａ，１１２ｂ  バス用ＤＭＡＣ、１１３ａ，１１３ｂ  バス、１２０ａ，１２０ｂ  ＣＰＵ、１２１ａ，１２１ｂ  メモリ、１２２ａ，１２２ｂ  バス用ＤＭＡＣ、１２３ａ，１２３ｂ  送信制御部、１２４ａ，１２４ｂ  受信制御部、１２５ａ，１２５ｂ  送信ＤＭＡＣ、１２６ａ，１２６ｂ  送信ＦＩＦＯ、１２７ａ，１２７ｂ  受信ＤＭＡＣ、１２８ａ，１２８ｂ  受信ＦＩＦＯ、１２９ａ，１２９ｂ  バス、１３０  宛先番号、１３１  シーケンス番号、１３２  確認応答番号、１３３  フレーム種別、１３４  データ量、１３５  チェックサム、１４０  フレーム種別宛先アドレス、１４１  割込み番号。
【図１】
0006381501.tif 000002
【図２】
0006381501.tif 000003
【図３】
0006381501.tif 000004
【図４】
0006381501.tif 000005
【図５】
0006381501.tif 000006
【図６】
0006381501.tif 000007
【図７】
0006381501.tif 000008
【図８】
0006381501.tif 000009
【図９】
0006381501.tif 000010
【図１０】
0006381501.tif 000011
【図１１】
0006381501.tif 000012
【図１２】
0006381501.tif 000013
【図１３】
0006381501.tif 000014
【図１４】
0006381501.tif 000015
【図１５】
0006381501.tif 000016
【図１６】
0006381501.tif 000017
【図１７】
0006381501.tif 000018
【図１８】
0006381501.tif 000019
【図１９】
0006381501.tif 000020
【図２０】
0006381501.tif 000021
【図２１】
0006381501.tif 000022
【図２２】
0006381501.tif 000023