"第1コントローラと、第2コントローラと、外部機器と接続可能なI/Oモジュールと、前記第1コントローラが実装される第1スロット、前記第2コントローラが実装される第2スロット、および、前記I/Oモジュールが実装される複数のスロット、を備えた入出力バスと、を備え、前記第1コントローラおよび前記第2コントローラのそれぞれは、制御部と、前記入出力バスへデータを出力するおよび前記入出力バスからデータが入力されるインタフェース部と、前記制御部および前記インタフェース部からアクセス可能なメモリと、を備え、前記入出力バスはパラレルバス、シリアルバス、および、LANケーブルのいずれかであることを特徴とする二重化制御装置。前記I/Oモジュールは、外部機器とインタフェースする外部機器インタフェース部と、前記入出力バスとインタフェースするためのインタフェース部と、前記インタフェース部を介してデータの読み書きが可能で、且つ、自分自身でも読み書きが可能なメモリと、を備えたことを特徴とする請求項1記載の二重化制御装置。前記第1コントローラおよび前記第2コントローラの制御部は、前記入出力バスに実装されたスロット位置でプライマリ側とセカンダリ側とを判断する手段と、相手の運転モード等から自分が稼動系か待機系かを判断する手段と、稼動系であれば、前記I/Oモジュールにデータを入出力する手段と、ユーザ制御プログラムを実行する手段と、待機系と実行結果データを等値化するために待機系のメモリに実行結果データを書き込む手段と、自分の運転モードを待機系のメモリに書き込み、且つ、相手の運転モードを待機系のメモリから読み出す手段と、待機系であれば、相手から書き込まれた運転モードをメモリから読み出し次の運転モードを判定する手段と、自分を稼動系として運転継続する手段と、を備えることを特徴とした請求項1又は請求項2記載の二重化制御装置。従来の二重化機能を備えたコントローラは、専用の二重化制御部により高速で大量の二重化情報のやりとりを可能とするため、二重化制御部の構成が複雑になり且つ比較的高価になる。そのため小規模なプラントや製造ライン等の産業分野で使用されるコントローラでは、高価な仕組みを採用することが困難であった。本発明は、上記事情を鑑みて成されたものであって、構成が複雑になることを回避し、安価な二重化制御装置を提供することを目的とする。実施形態による二重化制御装置は、第1コントローラと、第2コントローラと、外部機器と接続可能なI/Oモジュールと、前記第1コントローラが実装される第1スロット、前記第2コントローラが実装される第2スロット、および、前記I/Oモジュールが実装される複数のスロット、を備えた入出力バスと、を備え、前記第1コントローラおよび前記第2コントローラのそれぞれは、制御部と、前記入出力バスへデータを出力するおよび前記入出力バスからデータが入力されるインタフェース部と、前記制御部および前記インタフェース部からアクセス可能なメモリと、を備え、前記入出力バスはパラレルバスである。以下、実施形態について、図面を参照して説明する。図1に、本実施形態の二重化制御装置の一構成例を示す。本実施形態に係る二重化制御装置は、プライマリ側コントローラ10と、セカンダリ側コントローラ11と、I/O出力モジュール12と、I/O入力モジュール13と、入出力バス1と、を備えている。プライマリ側コントローラ10、セカンダリ側コントローラ11と、I/O出力モジュール12と、I/O入力モジュール13とは、それぞれが入出力バス1に設けたスロットに実装され、入出力バス1により互いに信号を送受信することが可能に構成されている。プライマリ側コントローラ10は、入出力バス1への信号の送信および入出力バス1からの信号の受信を行うためのインタフェース部101と、メモリMEMP100と、インタフェース部101およびメモリMEMP100を制御するCPU部102と、を備えている。メモリMEMP100は、インタフェース部101と接続されている。したがって、プライマリ側コントローラ10は、セカンダリ側コントローラ11、I/O出力モジュール12、および、I/O入力モジュール13から受信されるデータの書き込み、および、データの読み出しが可能である。またCPU部102からメモリMEMP100へのデータの書き込みおよびメモリMEMS110からCPU部102へのデータの読み出しも可能である。インタフェース部101とCPU部102とは、内部バス103で接続されている。CPU部102は、内部バス103、インタフェース部101および入出力バス1を介して、他のモジュール11、12、13のメモリMEMS110、MEMO120、MEMI130を直接読み書きすることができる。CPU部102は、入出力バス1に実装されたスロット位置で、プライマリ側であるかセカンダリ側であるかを判断する手段図示せずと、相手の運転モード等から自身が稼動系であるか待機系であるかを判断する手段図示せずと、を備えている。プライマリ側コントローラ10、すなわち、CPU部102が、稼動系コントローラに搭載される場合には、さらに、I/O入力モジュール12、13にデータを入出力する手段図示せずと、ユーザ制御プログラムを実行する手段図示せずと、待機系コントローラと実行結果データを等値化するために待機系コントローラのメモリに実行結果データを書き込む手段図示せずと、自身の運転モードを待機系コントローラのメモリに書き込み、且つ、相手の運転モードを待機系コントローラのメモリから読み出す手段図示せずと、を備える。CPU部102が、待機系コントローラに搭載される場合には、さらに、自分の運転モードを自分のメモリに書き込み、相手から自分のメモリに書き込まれた相手の運転モードを読み出し次の運転モードを判定する手段図示せずと、自分を稼動系として運転する手段図示せずとを備える。セカンダリ側コントローラ11は、プライマリ側コントローラ10と同様の構成である。すなわち、セカンダリ側コントローラ11は、入出力バス1への信号の送信および入出力バス1からの信号の受信を行うためのインタフェース部111と、メモリMEMS110と、インタフェース部111およびメモリMEMS110を制御するCPU部112と、を備えている。メモリMEMS110は、インタフェース部111と接続されている。したがって、セカンダリ側コントローラ11は、プライマリ側コントローラ10、I/O出力モジュール12、および、I/O入力モジュール13から受信されるデータの書き込み、および、データの読み出しが可能である。またCPU部112からメモリMEMS110へのデータの書き込みおよびメモリMEMS110からCPU部112へのデータの読み出しも可能である。インタフェース部111とCPU部112とは、内部バス113で接続されている。CPU部112は、内部バス113、インタフェース部111および入出力バス1を介して、他のモジュール10、12、13のメモリMEMP100、MEMO120、MEMI130を直接読み書きすることができる。CPU部112は、入出力バス1に実装されたスロット位置で、プライマリ側であるかセカンダリ側であるかを判断する手段図示せずと、相手の運転モード等から自身が稼動系であるか待機系であるかを判断する手段図示せずと、を備えている。ここでの判断方法については初期化処理として後に説明する。セカンダリ側コントローラ10、すなわち、CPU部112が、稼動系コントローラに搭載される場合には、さらに、I/O入力モジュール12、13にデータを入出力する手段図示せずと、ユーザ制御プログラムを実行する手段図示せずと、待機系コントローラと実行結果データを等値化するために待機系コントローラのメモリに実行結果データを書き込む手段図示せずと、自身の運転モードを待機系コントローラのメモリに書き込み、且つ、相手の運転モードを待機系コントローラのメモリから読み出す手段図示せずと、を備える。CPU部112が、待機系コントローラに搭載される場合には、さらに、自分の運転モードを自分のメモリに書き込み、相手から自分のメモリに書き込まれた相手の運転モードを読み出し次の運転モードを判定する手段図示せずと、自分を稼動系として運転する手段図示せずとを備える。上記プライマリ側コントローラ10およびセカンダリ側コントローラ11は、入出力バス1のプライマリ側用スロットとセカンダリ側用スロットに実装し、その他のスロットにはI/Oモジュールを実装する。入出力バス1は、コントローラやI/O入力モジュール、I/O出力モジュールを実装するための複数のスロット1-1~1-Nを備えている。スロット1-1は、プライマリ側コントローラ10を実装し、スロット1-2は、セカンダリ側コントローラ11を実装する。スロット1-3以降のスロットには、I/O出力モジュール12やI/O入力モジュール13を実装可能としている。入出力バス1は、例えば、PCIPeripheralComponentInterconnectバスやISAIndustryStandardArchitectureバス等のパラレルバスである。なお、入出力バス1は、シリアルバスであってもよく、イーサネット登録商標ケーブル等のローカルエリアネットワークLANケーブルであってもよい。I/O出力モジュール12には、入出力バス1とインタフェースを行うためのインタフェース部121と、外部出力機器14へデータを出力する出力インタフェース部122と、インタフェース部121を介してプライマリ側コントローラ10およびセカンダリ側コントローラ11からデータの読み書きが可能で、且つ、出力インタフェース部122からもデータの読み書きが可能なメモリMEMO120と、を備えている。メモリMEMO120は、インタフェース部121と、出力インタフェース部122とに接続されている。出力インタフェース部122は、常時、メモリMEMO120に書き込まれた出力データを外部出力機器14へ出力する。I/O入力モジュール13には、入出力バス1とインタフェースを行うためのインタフェース部131と、外部入力機器15からのデータが入力される入力インタフェース部132と、インタフェース部131を介してプライマリ側コントローラ10およびセカンダリ側コントローラ11からデータの読み書きが可能で、且つ、入力インタフェース部132からもデータの読み書きが可能なメモリMEMI130と、を備えている。メモリMEMI130は、インタフェース部131と入力インタフェース部132とに接続されている。及び、入力インタフェース部132は、常時、外部入力機器15から入力された入力データをメモリMEMI130に書き込む。図4に、入出力バス1のI/O空間40とスロット1-1~1-Nの割り付けの一例を示す。スロット1-1~1-Nそれぞれに、一定のI/O空間が割り当てられ、該当スロットの空間内に該当スロットのインタフェース部に接続されたメモリMEMP100、MEMS110、MEMO120、MEMI130が割り付けられている。スロット1-1のメモリ空間には、プライマリ側コントローラ10のメモリMEMP100が割り付けられ、スロット1-2のメモリ空間には、セカンダリ側コントローラ11のメモリMEMS110が割り付けられている。スロット1-3以降には、実装されているI/O出力モジュール12のメモリMEMO120、I/O入力モジュール13のメモリMEMI130が各々割り付けられている。スロット1-1とスロット1-2のI/O空間に割り付けられているメモリ空間は、二重化情報部46、47として、稼動系コントローラと待機系コントローラとで二重化情報のやりとりを行うためのメモリとして使用する。I/O空間の二重化情報部46、47は、自身の運転モードを明示するメモリ410と、相手の運転モードを明示するメモリ411と、実行結果を等値化するために相手から実行結果データ書き込まれるメモリ412と、を含む。これら二重化情報部46、47は、稼動系コントローラと待機系コントローラとの間で相手のコントローラから互いに読み書きができ、自信のコントローラ内でも読み書きができる。スロット1-3以降のスロットに割り付けられたI/O空間に割り付けられているメモリMEMO120、MEMI130は、I/O出力モジュール12のメモリMEMO120であれば、出力レジスタ部48で構成され、各出力レジスタ0~Mに稼動系コントローラから出力データが書き込まれ、この出力レジスタの出力データは、出力インタフェース部122により外部出力機器14に出力される。I/O入力モジュール13のメモリMRMI130であれば、入力レジスタ部49で構成され、各入力レジスタ0~Nには、入力インタフェース部132により外部入力機器15から入力した入力データが書き込まれ、稼動系コントローラから入力データとして読み出される。上記のように、プライマリ側コントローラ10およびセカンダリ側コントローラ11は、I/O空間にアクセスすることで、プライマリ側コントローラ10、セカンダリ側コントローラ11、I/O出力モジュール12、および、I/O入力モジュール13に具備されたインタフェース部101、111、121、131に接続されたメモリMEMP100、MEMS110、MEMO120、MEMI130に自由にアクセスできる。図2は、プライマリ側コントローラ10が稼動系コントローラで、セカンダリ側コントローラ11が待機系コンロトーラである場合の、データの流れの一例を示している。稼動系コントローラ10から、I/O出力モジュール12へ出力データを出力する時のデータの流れ2-1は、先ず、CPU部102からデータが、内部バス103を介してインタフェース部101へ出力される。インタフェース部101へ出力されたデータは、更に、入出力バス1を通って、I/O出力モジュール12のインタフェース部121に出力される。次に、インタフェース部121を介して、メモリMEMO120の出力レジスタ部48の各出力レジスタ413、414、415、416に書き込まれる。更に、常時、出力インタフェース部122により、出力レジスタ部48の各出力レジスタ413、414、415、416に書き込まれた出力データを、外部出力機器14に出力する2-2。次に、稼動系コントローラ10により、I/O入力モジュール13の入力データを入力する時のデータの流れ2-3について説明する。先ず、CPU部102から、入力するレジスタの読み出しを要求すると、読み出し要求が、内部バス103を介して、インタフェース部101へ出力され、更に、入出力バス1を通って、I/O入力モジュール13のインタフェース部131に出力される。インタフェース部131が読み出し要求に従って、メモリMEMI130の入力レジスタ部49の各入力レジスタ417、418、419、420から読み出した入力データを、今度は、入出力バス1を介して、稼動系コントローラ10のインタフェース部101へ入力し、インタフェース部101から、内部バス103を介して、CPU部102へ入力データが入力される。更に、常時、入力インタフェース部132により、外部入力機器15から入力した入力データを、入力レジスタ部49の各出力レジスタ417、418、419、420に書き込む2-4。次に、稼動系コントローラ10から、待機系コントローラ11のメモリMEMS110にデータを書き込む時のデータの流れ2-5の一例を説明する。先ず、CPU部102から、出力データが、内部バス103を介して、インタフェース部101へ出力され、更に、入出力バス1を通って、待機系コントローラ11のインタフェース部111に出力される。次に、インタフェース部111を介して、メモリMEMS110に書き込まれる。更に、メモリMEMS110に書き込まれたデータはCPU部112により読み出し可能である2-6。次に、稼動系コントローラ10から、待機系コントローラ11のデータを読み出す時のデータの流れ2-7の一例を説明する。先ず、CPU部102からメモリの読み出しを要求すると、読み出し要求が、内部バス103を介して、インタフェース部101へ出力され、更に、入出力バス1を通って、待機系コントローラ11のインタフェース部111に出力される。次に、インタフェース部111が読み出し要求に従って、メモリMEMS110から読み出したデータを、今度は、入出力バス1を介して、コントローラ10のインタフェース部101へ入力し、インタフェース部101から、内部バス103を介して、CPU部102へデータが読み込まれる。なお、CPU部112から自身のメモリMEMS110へデータの書き込むことも可能である2-8。図3は、セカンダリ側コントローラ11が稼動系コントローラで、プライマリ側コントローラ10が待機系コントローラである場合のデータの流れの一例を示している。稼動系コントローラ11から、I/O出力モジュール12へ出力データを出力する時のデータの流れ3-1の一例について説明する。先ず、CPU部112から、出力データが、内部バス113を介して、インタフェース部111へ出力され、更に、入出力バス1を通って、I/O出力モジュール12のインタフェース部121に出力される。次に、インタフェース部121を介して、メモリMEMO120の出力レジスタ部48の各出力レジスタ413、414、415、416に書き込まれる。更に、常時、出力インタフェース部122により、出力レジスタ部48の各出力レジスタ413、414、415、416に書き込まれた出力データを、外部出力機器14に出力する3-2。次に、稼動系コントローラ11から、I/O入力モジュール13の入力データを入力する時のデータの流れ3-3の一例について説明する。先ず、CPU部112から、入力するレジスタの読み出しを要求すると、読み出し要求が、内部バス113を介して、インタフェース部111へ出力され、更に、入出力バス1を通って、I/O入力モジュール13のインタフェース部131に出力される。次に、インタフェース部131が読み出し要求に従って、メモリMEMI130の入力レジスタ部49の各入力レジスタ417、418、419、420から読み出した入力データを、今度は、入出力バス1を介して、コントローラ11のインタフェース部111へ入力し、インタフェース部111から、内部バス113を介して、CPU部112へ入力データが入力される。更に、常時、入力インタフェース部132により、外部入力機器15から入力した入力データを、入力レジスタ部49の各出力レジスタ417、418、419、420に書き込む3-4。次に、稼動系コントローラ11から、待機系コントローラ10のメモリMEMP100にデータを書き込む時のデータの流れ3-5の一例について説明する。先ず、CPU部112から、出力データが、内部バス113を介して、インタフェース部111へ出力され、更に、入出力バス1を通って、待機系コントローラ10のインタフェース部101に出力される。次に、インタフェース部101を介して、メモリMEMP100に書き込まれる。更に、メモリMEMP100に書き込まれたデータはCPU部102で読み出し可能である3-6。次に、稼動系コントローラ11から、待機系コントローラ10のデータを読み出す時のデータの流れ3-7の一例について説明する。先ず、CPU部112からメモリの読み出しを要求すると、読み出し要求が、内部バス113を介して、インタフェース部111へ出力され、更に、入出力バス1を通って、待機系コントローラ10のインタフェース部101に出力される。次に、インタフェース部101が読み出し要求に従って、メモリMEMP100から読み出したデータを、今度は、入出力バス1を介して、稼動系コントローラ11のインタフェース部111へ入力し、インタフェース部111から、内部バス113を介して、CPU部112へデータが読み込まれる。図5は、プライマリ側コントローラ10およびセカンダリ側コントローラ11のCPU部102、112において、稼動系と待機系との選択する初期化処理ステップ5-1の一例を示すフローチャートである。プライマリ側コントローラ10およびセカンダリ側コントローラ11のCPU部102、112は、最初に自分がプライマリ側であるかセカンダリ側であるかを判断し、相手の運転モードにより自分を稼動系に立ち上げるか、待機系に立ち上げるかを以下のように判断する。先ず、相手監視時間をクリアするステップ5-2。次に相手のメモリの二重化情報部46、47から相手の運転モードを読み出すステップ5-3。次に、相手の運転モードが稼動系の運転であれば既に稼動系で運転中であれば、待機系処理ステップ7-1へ移行するステップ5-4。次に、自分がプライマリ側であれば稼動系処理ステップ6-1へ移行するステップ5-5。次に、相手監視時間を更新するステップ5-6。相手監視時間が所定の時間をオーバーしていなければ、再度、相手のメモリの二重化情報部46、47から相手の運転モードを読み出し、同じ動作を繰り返す。相手監視時間が所定の時間をオーバーしていれば、稼動系処理ステップ6-1へ移行するステップ5-7。図6は、プライマリ側コントローラ10およびセカンダリ側コントローラ11のCPU部102、112に実装されている稼動系処理ステップ6-1と二重化トラッキング処理ステップ6-7と停止処理ステップ6-12との一例を示すフローチャートである。稼動系処理ステップ6-1と二重化トラッキング処理ステップ6-7とはスキャン周期に従って定期的に実行される。稼動系処理ステップ6-1では、先ず、自分の運転モード稼動系を示す運転モードを相手待機系側のメモリの二重化情報部46、47の相手の運転モードメモリ411に書き込むステップ6-2。次に、I/O入力モジュール13のメモリMRMIメモリ49から入力データを読み出すステップ6-3。次に、読み出した入力データを元にユーザ制御プログラムを実行するステップ6-4。次に、ユーザ制御プログラムの実行で得られた出力データをI/O出力モジュール12のメモリMEMO120メモリ48へ書き込むステップ6-5。以上の処理の中で異常が発生していなければ、二重化トラッキング処理ステップ6-7へ移行し、異常が発生していれば、停止処理ステップ6-12へ移行する。二重化トラッキング処理ステップ6-7では、先ず、相手待機系側のメモリの二重化情報部46、47の自分の運転モードメモリ410から運転モードを読み出し、相手が待機系の運転モードであればステップ6-9、稼動系処理ステップ6-1でユーザ制御プログラムを実行した時の実行結果データを、相手待機系側のメモリの二重化情報部46、47の等値化用の実行結果データメモリ412へ書き込み、稼動系と待機系との実行状態を等値化する。次に、次のスキャン周期に達するまで実行を待ち、次のスキャン周期に達したら、繰り返し稼動系処理を実行するステップ6-11。停止処理ステップ6-12では、自分の停止モードを相手のメモリの二重化情報部46、47の相手の運転モードメモリ411へ書き込むステップ6-13。次に、再スタートの要求がなければ停止処理を最初から実行し、再スタート要求があれば、図5で示した初期化処理ステップ5-1から実行を開始するステップ6-14。図7は、プライマリ側コントローラ10およびセカンダリ側コントローラ11のCPU部102、112での待機系処理ステップ7-1の一例を示すフローチャートである。待機系処理ステップ7-1では、先ず、自分のメモリの二重化情報部46、47の自分の運転モードメモリ410に自分の運転モード待機系を示す運転モードを書き込む、ステップ7-2。この運転モードは、稼動系コントローラの稼動系処理ステップ6-1の中で読み出されるステップ6-8。次に、自分メモリの二重化情報部46,47の相手の運転モードメモリ411から、相手の運転モードを読み出すステップ7-3。相手が、稼動系を示す運転モードであれば、待機系処理を繰り返し実行するステップ7-4。相手が、停止を示す運転モードであれば、自分のメモリの二重化情報46、47の等値化用の実行結果データメモリ412から等値化のための実行結果データを読み出し自分の実行データに取り込むステップ7-5。次に稼動系処理ステップ6-1へ移行し、稼動系としてコントローラを実行する。図8は、上記二重化制御装置における通常の二重化運転の一例を説明するタイミングチャートを示す。稼動系側コントローラ810は、スキャン周期89に従って定周期で稼動系処理ステップ6-1を実行する。稼動系処理ステップ6-1では、先ず、タイミング81において、自分の運転モードを待機系側コントローラ811の二重化情報部813の相手の運転モードメモリ411に書き込む820。次に、タイミング82において、稼動系側コントローラ810はI/O入力モジュール13から入力データを読み出すステップ6-3。次に、タイミング83において、入力データを入力情報としてユーザ制御プログラムを実行するステップ6-4。次に、タイミング84において、ユーザ制御プログラムで生成した出力データを、I/O出力モジュール12へ書き込むステップ6-5。次に、タイミング85において、待機系側コントローラ811の二重化情報部813の自分の運転モードメモリ410から、待機系側コントローラ811の運転モードを読み出す823ステップ6-8。待機系側コントローラ811の運転モードが、待機系を示す運転モードであれば、次に、タイミング86において、ユーザ制御プログラムの実行結果データを等値化するために、待機系側811の二重化情報部813の等値化用の実行結果データメモリ412へ書き込む824ステップ6-10。待機系側コントローラ811は、少なくとも、スキャン周期89よりも短い周期で、待機系処理ステップ7-1を一定周期で実行する。待機系処理ステップ7-1では、先ず、タイミング87において、自分の二重化情報部813の自分の運転モードメモリ410に、待機モードを示す運転モードを書き込む821ステップ7-2。次に、タイミング88において、自分の二重化情報部813の相手の運転モードメモリ411から、相手の運転モードを読み出す822ステップ7-3。相手の運転モードが稼動系を示す運転モードであれば、次の周期でも上記の待機系処理ステップ7-1を繰り返し実行する。以上のように、稼動系側810は、一定周期で、I/Oデータの入出力タイミング82、84とユーザ制御プログラムを実行しタイミング83、制御対象を制御しながら、二重化情報である自分の運転モードと等値化用の実行結果データとを待機系側コントローラ811に書き込むタイミング81、86ことで、二重化の稼動系の運転を維持している。一方、待機系側コントローラ811は、常時、待機系側コントローラ810から書き込まれる運転モードを監視しタイミング88、及び、同時に稼動系側コントローラ810から書き込まれる等値化用の実行結果データ412を保持し、いつでも稼動系側コントローラ810に切り替われるように二重化の待機系の運転を維持している。なお、二重化運転中においても、稼動系側コントローラ810から待機系側811のメモリをアクセスするのみで、待機系側コントローラ811は、稼動系側コントローラ810のメモリをアクセスしないため、メモリアクセスの経路である入出力バス1とインタフェース部101、111、121、131との負荷を低減することが可能となり、それを構成する回路を簡素化することが可能である。図9は、稼動系側コントローラ811での異常発生による二重化の切り替わりのタイミングチャートを示す。稼動系側コントローラ810は、あるスキャン周期91の稼動系処理ステップ6-1において、タイミング82、84でのI/Oデータの入出力ステップ6-3、6-5やタイミング83でのユーザ制御プログラムの実行ステップ6-4で、異常を検出するとタイミング92、直ちに停止処理ステップ6-1295へ移行する。停止処理ステップ6-12では、先ず、タイミング93において停止モードを示す運転モードを、相手待機系側コントローラの二重化情報部813の相手の運転モードメモリ411に書き込むステップ6-13。稼動系側コントローラ810は、次に、新たな再スタート要求がなければ、この停止モードを維持する。一方、待機系側コントローラ811は、待機系処理ステップ7-1の中で、タイミング96において、自分の二重化情報部813の相手の運転モードメモリ411から、相手の運転モードを読み出しステップ7-3、相手が停止モードを示していれば、タイミング98において自分の二重化情報部813の実行結果データメモリ412から、相手が等値化用に書き込んだユーザ制御プログラムの実行結果データを読み出し、自分の実行データに取り込みステップ7-5、タイミング910より直ちに、稼動系処理ステップ6-1へ移行し稼動系側911として運転を継続実行する。以上のように、図1で示したハード構成と、図4で示したスロットとI/O空間との割り付けとを備え、図5で示した初期化処理の手段と、図6で示した稼動系処理と二重化トラッキング処理と停止処理の手段と、図7で示した待機系処理の手段を備え、それらを組み合わせることで、専用の二重化制御部を必要としない、簡易で安価な二重化制御装置を実現することが可能になった。すなわち、本実施形態によれば、構成が複雑になることを回避し、安価な二重化制御装置を提供することができる。本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。"