JP3606281B2 - プログラマブルコントローラ及びcpuユニット並びに特殊機能モジュール及び二重化処理方法 - Google Patents
プログラマブルコントローラ及びcpuユニット並びに特殊機能モジュール及び二重化処理方法 Download PDFInfo
- Publication number
- JP3606281B2 JP3606281B2 JP2003156654A JP2003156654A JP3606281B2 JP 3606281 B2 JP3606281 B2 JP 3606281B2 JP 2003156654 A JP2003156654 A JP 2003156654A JP 2003156654 A JP2003156654 A JP 2003156654A JP 3606281 B2 JP3606281 B2 JP 3606281B2
- Authority
- JP
- Japan
- Prior art keywords
- cpu unit
- special function
- active
- function module
- standby
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/058—Safety, monitoring
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/14—Plc safety
- G05B2219/14015—Dual plc's, processors and dual I-O
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/15—Plc structure of the system
- G05B2219/15118—Shared memory
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
- Safety Devices In Control Systems (AREA)
- Hardware Redundancy (AREA)
Description
【発明の属する技術分野】
この発明は、プログラマブルコントローラ及びCPUユニット並びに特殊機能モジュール及び二重化処理方法に関するものである。
【0002】
【発明の背景】
ファクトリーオートメーション(FA)の制御装置として、プログラマブルコントローラ(PLC)が用いられている。このPLCは、複数のユニットから構成される。すなわち、電源供給源の電源ユニット,PLC全体の制御を統率するCPUユニット,FAの生産装置や設備装置の適所に取り付けたスイッチやセンサの信号を入力する入力ユニット,アクチュエータなどに制御出力を出す出力ユニット,通信ネットワークに接続するための通信ユニットなどの各種のユニットを適宜組み合わせて構成される。
【0003】
PLCのCPUユニットにおける制御は、入力ユニットで入力した信号をCPUユニットのIOメモリに取り込み(INリフレッシュ)、予め登録されたユーザプログラム記述言語(例えばラダー言語)で組まれたユーザプログラムに基づき論理演算をし(演算実行)、その演算実行結果をIOメモリに書き込んで出力ユニットに送り出し(OUTリフレッシュ)、その後、通信ユニットを介して通信ネットワーク上の他のPLCとデータ送受信を行ったりCPUユニットに備えられた通信ポートを介して外部の機器とデータ送受信などを行ったりする(周辺処理)ことをサイクリックに繰り返し処理するようになる。なお、INリフレッシュとOUTリフレッシュを一括して行う(I/Oリフレッシュ)場合もある。
【0004】
ところで、CPUユニットは、通常、上記したユーザプログラムを格納するRAMやシステムプログラムを格納するROMや、上記した演算処理等を実行するMPUや、演算実行する際に使用するRAM(共有メモリ,IOメモリ,ワークメモリ)等を備えて構成される。これに対し、CPUユニット内に、インテリジェントな高機能ボードである特殊機能モジュール(INNERボード,インナーボード,サブボードと称されることもあり、以下「インナーボード」と称する)を着脱可能に実装したタイプのものもある。このインナーボードは、例えば外部機器と通信するための専用の処理を実行するように作成されたプログラムを実行する機能を持ち、インナーボードが上記した演算処理等の一部を実施することにより、制御の高速化・高度化を図ることができるようになっている。
【0005】
また、システムの安全性,信頼性を向上するため、PLCを構成する各ユニットを二重化することが行われる。例えば、本発明が対象とするCPUユニットを二重化する場合、CPUユニットを2個設けるとともに、それら2つのCPUユニットをCPU間バスにより接続する。そして、それら2個のCPUユニットは、基本的に同一の機能を持ったものであり、それぞれのCPUユニットに格納された同じ内容のユーザプログラムを実行する。
【0006】
そして、2台のCPUユニットのうち、一方がアクティブのCPUユニットとなって、実際にサイクリックな処理を行い、メモリに対して読み書きを行ったり、外部のI/O機器等との間で制御データ(I/Oデータ)の送受を行い、FAネットワークシステムの制御を司る。また、他方のCPUユニットはスタンバイのCPUユニットとなり、待機中は、アクティブのユーザプログラムと同一の内容のユーザプログラムを実行するものの、演算実行結果をIOメモリへ反映することはない。そして、アクティブのCPUユニットから処理結果等を受信し、スタンバイのCPUユニットのメモリの更新を行う。これにより、スタンバイのCPUユニットとアクティブのCPUユニットのメモリの同一性が確保される。
【0007】
そして、アクティブのCPUユニットが故障した場合には、スタンバイのCPUユニットがアクティブのCPUユニットに切り替わって実際の制御等の動作を行う。従って、CPUユニットに故障が発生しても、すぐにシステムが停止することなく、継続して運転できるので信頼性が向上する。
【0008】
上記した二重化システムでは、CPUユニットのIOメモリなどは、2つのCPUユニット間で同一性が確保されて二重化システムが保証される。しかしながら、上記したインナーボードを実装したタイプのCPUユニットの場合、CPUユニットの本体側で持つメモリの同一性は維持されるものの、インナーボードまで二重化することができていなかった。
【0009】
この発明は、特殊機能モジュールを実装したCPUユニットを2台備えたプログラマブルコントローラにおいて、特殊機能モジュールも含めて二重化システムを構築することのできるプログラマブルコントローラ及びCPUユニット並びに特殊機能モジュール及び二重化処理方法を提供することを目的とする。
【0010】
【課題を解決するための手段】
この発明によるプログラマブルコントローラは、同一の内容のユーザプログラムを備えた2つのCPUユニットを備え、前記2つのCPUユニットは、相手の状態を確認可能とし、一方がアクティブとなるとともに他方がスタンバイとなり、前記アクティブのCPUユニットがダウンした場合には、前記スタンバイのCPUユニットがアクティブに切り替わって運転を継続するプログラマブルコントローラにおいて、前記2つのCPUユニットは、前記アクティブのCPUユニットが前記同一のユーザプログラムを実行するとともに、その実行結果が制御に反映され、前記スタンバイのCPUユニットが、前記アクティブのユーザプログラムと同一の内容のユーザプログラムを実行するものの、実行結果を出力しないようにした、ホットスタンバイ方式で動作するように構成され、前記2つのCPUユニットは、それぞれ着脱可能に装着され、同一の演算処理を実行する特殊機能モジュールを備えるとともに、それら各特殊機能モジュールは、前記アクティブのCPUユニットに実装されたものがアクティブの特殊機能モジュールとなり、前記スタンバイのCPUユニットに実装されたものがスタンバイの特殊機能モジュールとなるように構成され、前記アクティブの特殊機能モジュールは、前記同一の演算処理を実行するとともに、その演算処理の結果を前記アクティブのCPUユニットに渡し、前記アクティブのCPUユニットともに制御を司り、前記スタンバイ側の特殊機能モジュールは、前記同一の演算処理を実行するとともに、その演算処理の結果を前記アクティブのCPUユニットに渡すようにした。これにより、特殊機能モジュールも含めて二重化対応ができ、より安全で高機能・高信頼性のプログラマブルコントローラとなる。
【0011】
そして、好ましくは、上記構成を前提とし、さらに、前記2つのCPUユニットと、それぞれに実装された前記特殊機能モジュールとの間のデータ交換は、共有メモリを介して行い、前記2つの特殊機能モジュールは、前記2つのCPUユニットと非同期で演算実行するとともに、その演算実行中は前記共有メモリに格納されるI/Oデータの書き込みを行わず、前記演算実行により得られた前記I/Oデータは、実装されたCPUユニットとの同期処理中に前記CPUユニットに転送するように構成することである。
【0012】
係るプログラマブルコントローラを構築するための本発明に係るCPUユニットとしては、例えば、演算処理を実行する特殊機能モジュールを装着可能なホットスタンバイ方式での二重化対応のCPUユニットであって、ユーザプログラムに基づく制御を実行するアクティブと、前記ユーザプログラムを実行するが、その実行結果に基づいて前記制御を実行しないスタンバイの2つのモードを取り、前記スタンバイの時に相手のCPUユニットがダウンしたことを検知すると、アクティブに切り替わって運転を継続するCPUユニットにおいて、自己に実装された前記特殊機能モジュールとの間のデータ交換は、共有メモリを介して行い、前記2つのモードのいずれの場合も、前記ユーザプログラムの演算実行を含むサイクリックな処理を実行後、前記特殊機能モジュールとの間で同期をとってデータの送受を行うインナーサービス処理機能を備え、そのインナーサービス処理機能は、自己に実装された前記特殊機能モジュールの演算実行により得られたI/Oデータを前記共有メモリに格納させるようにした。
【0013】
さらに、上記したプログラマブルコントローラを構築するための本発明に係る特殊機能モジュールは、ユーザプログラムに基づく制御を実行するアクティブのCPUユニットとして動作するモードと、前記ユーザプログラムを実行するが、その実行結果に基づいて前記制御を実行しないスタンバイのCPUユニットとして動作するモードのいずれかのモードで動作するホットスタンバイ方式での二重化対応のCPUユニットに着脱可能に実装される特殊機能モジュールであって、前記特殊機能モジュールは、自己が装着された前記二重化対応のCPUユニットがアクティブのCPUユニットとして動作するモードの場合はアクティブの特殊機能モジュールとして動作する機能を持ち、自己が装着された前記二重化対応のCPUユニットがスタンバイのCPUユニットとして動作するモードの場合はスタンバイの特殊機能モジュールとして動作する機能を持つとともに、アクティブとスタンバイのいずれの場合も同一の演算処理を演算実行するようにし、前記特殊機能モジュールと前記CPUユニットとの間のデータ交換は、共有メモリを介して行い、前記特殊機能モジュールは、実装されるCPUユニットと非同期で前記演算実行するとともに、その演算実行中に得られたI/Oデータをその演算実行中は前記共有メモリに書き込みを行わず、前記演算実行中に得られたI/Oデータは、実装されたCPUユニットとの同期処理中に前記共有メモリに書き込むように構成した。
【0014】
さらに本発明に係る二重化処理方法では、演算実行する特殊機能モジュールを備えたCPUユニットを2台備えるとともに、その2台のCPUユニットがホットスタンバイ方式で動作する二重化システムを構成するプログラマブルコントローラにおける二重化処理方法であって、前記2台のCPUユニットは、ユーザプログラムに基づく制御を実行するアクティブのCPUユニットとして動作するモードと、前記ユーザプログラムを実行するが、その実行結果に基づいて前記制御を実行しないスタンバイのCPUユニットとして動作するモードのいずれかのモードで動作するようにし、前記2つの特殊機能モジュールは、前記アクティブのCPUユニットに実装されたものがアクティブの特殊機能モジュールとなり、前記スタンバイのCPUユニットに実装されたものがスタンバイの特殊機能モジュールとなるようにし、前記アクティブの特殊機能モジュールは、前記同一の演算処理を実行するとともに、その演算処理の結果を前記アクティブのCPUユニットに渡し、前記アクティブのCPUユニットともに制御を司り、前記スタンバイ側の特殊機能モジュールは、前記同一の演算処理を実行するとともに、その演算処理の結果を前記スタンバイのCPUユニットに渡すようにし、前記アクティブ側のCPUユニットまたはそれに実装される前記特殊機能モジュールに異常が生じた場合に、前記スタンバイのCPUユニット並びに特殊機能モジュールがアクティブに切り替わるように制御することである。
【0015】
そして、係る構成を前提とし、さらに前記2つのCPUユニットと、それぞれに実装された前記特殊機能モジュールとの間のデータ交換は、共有メモリを介して行い、前記2つの特殊機能モジュールは、前記2つのCPUユニットと非同期で演算実行し、その演算実行中は前記共有メモリに格納されるI/Oデータの書き込みを行わず、前記演算実行により得られた前記I/Oデータは、実装されたCPUユニットとの同期処理中に前記CPUユニットに転送するようにすると良い。
【0016】
ここで、演算実行結果の前記メモリへの書き込みは、CPUユニットが行っても良いし、CPUユニットからの命令に従って特殊機能モジュールに行わせるようにしてもよい。
【0017】
この発明によれば、2つの特殊機能モジュールは、それぞれ非同期で同一内容のプログラムを演算実行する。また、二重化システムが構築され、処理対象のデータも等しいので、最終的な演算結果も一致する。
【0018】
そして、好ましくは、前記CPUユニットに実装された前記特殊機能モジュールは、自己の演算実行結果と、相手のCPUユニットに実装された前記特殊機能モジュールの演算実行結果を取得するとともに、それら取得した2つの演算実行結果を比較し、不一致の場合には、演算処理の遅れている特殊機能モジュールは演算を進める補正処理を実行し、2つの特殊機能モジュールの進行を等しくするように構成することである。
【0019】
また、係るプログラマブルコントローラを構築するためのCPUユニットとしては、前記I/Oデータの前記共有メモリへの格納は、自己に実装された特殊機能モジュールと相手のCPUユニットに実装された特殊機能モジュールの演算実行結果を一致させたことを条件に行うようにすることである。
【0020】
このように、補正処理を行わせることにより、補正処理を行う都度2つの特殊機能モジュールにおける演算処理の進行状態が一致するので、書き込まれる演算結果のデータも等しくなる。
【0021】
さらに、本発明に係るプログラマブルコントローラでは、前記アクティブの特殊機能モジュールは、外部からの命令により、前記アクティブの特殊機能モジュールのメモリに格納されている変数データまたは,パラメータデータが変更された場合に、前記アクティブのCPUユニットに対して二重化イニシャル処理を要求する機能を備え、前記アクティブのCPUユニットは、前記メモリの少なくとも変更された内容を取得するとともに、前記スタンバイの特殊機能モジュールに向けて出力し、前記アクティブの特殊機能モジュールのメモリ内容と、前記スタンバイの特殊機能モジュールのメモリ内容とを一致させる機能を備えることである。なお、特殊機能モジュールのメモリに格納されている変数データとは、例えば、演算実行などによりサイクリックに書き換えられるデータのことである。また、特殊機能モジュールのメモリに格納されているパラメータデータとは、演算実行などによってサイクリックに書き換わらずに、ツールなどにより外部から書き換えられるデータのことであり、例えば、特殊機能モジュールのシステム設定に関するデータや特殊機能モジュール用のユーザプログラムなどが該当する。
【0022】
アクティブ側の特殊機能モジュールは、演算処理中にツールなどを用いて外部からメモリの記憶内容が変更されることがある。係る場合でも、二重化イニシャル処理を行うことにより、その変更内容をスタンバイ側の特殊機能モジュール側に伝達することができ、同一性が確保できる。なお、「前記スタンバイの特殊機能モジュールに向けて出力し」とは、実施の形態ではスタンバイのCPUユニットを経由でスタンバイの特殊機能モジュールに伝送するようにしているが、直接特殊機能モジュールに伝達する仕組みを構築し、それにより伝送するようにしてももちろん良い。
【0023】
【発明の実施の形態】
図1は、本発明に係るプログラマブルコントローラ(PLC)の一実施の形態を示している。本発明に係るPLC10は、複数のユニットから構成され、各ユニットが二重化されている。すなわち、PLC10を構成する各ユニットに対して電源供給をする2台の電源ユニット11や、ユーザプログラムを演算実行したり、I/Oリフレッシュや周辺処理をサイクリックに実行する機能を持つ第1,第2CPUユニット12,13や、それら第1,第2CPU12,13の動作を制御するデュプレックスユニット16や、入出力機器を接続するI/Oユニット17等を備えている。
【0024】
そして、これらのユニットは、システムバス19を介して接続される(図2参照)。もちろん、このPLC10において上記したユニットの他にも実装可能なユニットは存在し、必要に応じて連結するユニットを増減する。
【0025】
このPLC10では、電源ユニット11と、第1,第2CPUユニット12,13が二重化されている。すなわち、2台の電源ユニット11は、並列接続によってPLC10の各ユニットへ電源供給を行っている。このため、その一方の電源ユニット11が故障・異常等して電源供給ができなくなると、他方の電源ユニット11が各ユニットに対して電源供給を継続して行うようになる。
【0026】
また、第1,第2CPUユニット12,13は、同一内容のユーザプログラムを実行するもので、実際のシステム稼動時には、何れか一方が制御系(アクティブ)となり、他方がスタンバイとなる。そして、制御系となったCPUユニットが行ったユーザプログラムの演算結果が、制御に反映(I/Oユニットを介して外部機器へ出力)される。また、スタンバイのCPUユニット側でも同一内容のユーザプログラムは実行されるが、その結果が出力されない。さらに、スタンバイのCPUユニットは、制御系のCPUユニットから演算実行結果を受け取り、自己のメモリの更新などの所定の処理を実行する。これにより、スタンバイのCPUユニットは、制御系のCPUユニットと同じ状態を維持する。従って、制御系のCPUユニットが異常によりダウンした場合には、直ぐにスタンバイであったCPUユニットが制御系に切り替わり、制御動作を実行することができ、ホットスタンバイ方式での二重化システムが実現される。
【0027】
そして、第1,第2CPUユニット12,13の切替は、二重化コントロールユニットたるデュプレックスユニット16により行われる。つまり、デュプレックスユニット16は、図2に示すように、二重化制御回路16aを備え、この二重化制御回路16aにより、バス切替器18を操作してバスの切替えを行ったり、第1,第2CPUユニット12,13間での同期制御を行ったりする。さらに、このデュプレックスユニット16を介して、第1,第2CPUユニット12,13間でデータ交換が行われる。
【0028】
また、本実施の形態では、第1,第2CPUユニット12,13には、第1,第2インナーボード14,15がそれぞれ内装される。具体的には、各CPUユニットに用意されたスロットに装着することにより、機械的に組み込まれるとともに、バスを介してCPUユニットとデータ交換ができるようになる。そして、この第1,第2インナーボード14,15も、アクティブとスタンバイの何れかを択一的に取る。つまり、実装されたCPUユニットがアクティブの場合には、インナーボードもアクティブとなり、実装されたCPUユニットがスタンバイの場合には、インナーボードもスタンバイとなる。
【0029】
以下の説明では、便宜上第1CPUユニット12,第1インナーボード14がアクティブとなり、第2CPUユニット13,第2インナーボード15がスタンバイとなっているものとして説明する。第1,第2CPUユニット12,13と同様に、第1インナボード14と第2インナーボード15も同じ機能を持ち、同一の処理を実行する。そして、当然のことながら、第1,第2CPUユニット12,13のハードウェア構成は、同一の構成を採り、第1,第2インナーボード14,15のハードウェア構成も同一の構成を採る。
【0030】
具体的には、図2に示すように、第1,第2CPUユニット12,13は、ユーザプログラムを格納するユーザメモリ12a,13aと、そのユーザメモリ12a,13aに格納されたユーザプログラムを演算実行したり、I/Oリフレッシュや周辺処理をサイクリックに実行するMPU12b,13bと、その演算実行時にワークエリアとして使用するRAM12c,13cと、IOメモリ12d,13d並びにI/F−ASIC12e,13eを備えている。
【0031】
また、第1,第2インナーボード14,15は、インナーボード用のシステムプログラム等が格納されたROM14a,15aと、対応するCPUユニットと通信を行うとともに、そのROM14a,15aに格納されたシステムプログラムを実行するMPU14b,15bと、インナーボード上で実行されるインナーボード用のユーザプログラムが格納されるとともに、そのシステムプログラムの実行中にワークエリア等として使用されるRAM14c,15cを有している。
【0032】
そして、上記したROM14a,15a,MPU14b,15b並びにRAM14c,15cは、バス14d,15dを介して接続されている。さらに、このバス14d,15dを介して第1,第2インナーボード14,15と、第1,第2CPUユニット12,13のI/F−ASIC12e,13eとが接続されている。さらに、第1,第2インナーボード14,15のMPU14b,15bと、I/F−ASIC12e,13eとの間は、割り込み信号ライン14e,15eが設けられている。
【0033】
また、IOメモリ12d,13dは、通常の制御データであるI/Oデータを記憶するIOメモリとしての機能に加え、第1,第2CPUユニット12,13と、それに実装される第1,第2インナーボード14,15との間での共有メモリとして機能する。そして、第1,第2CPUユニット12,13のI/F−ASIC12e,13eは、それぞれ第1,第2CPUユニット12,13内のMPU12b,13bと、第1,第2インナーボード14,15内のMPU14b,15bが、対応する第1,第2CPUユニット12,13内のIOメモリ12d,13dにアクセスする際の調停を行う機能を有する。これにより、IOメモリ12d,13dを介して、対応するインナーボードとCPUユニット間でデータの交換が行える。
【0034】
また、上記したように第1,第2CPUユニット12,13並びに第1,第2インナーボード14,15は、一方がアクティブとなり、他方がスタンバイとなる。
【0035】
すなわち、アクティブ側の第1CPUユニット12における処理は、CPU間同期処理、つまり、第2CPUユニット13と同期を取って、互いに各種の処理を実行する。そして、係る各種の処理としては、ユーザプログラムを演算実行する処理や、I/Oリフレッシュ処理や、周辺サービス処理や、インナーボードサービス処理等があり、係る処理をサイクリックに実行する。
【0036】
また、スタンバイ側の第2CPUユニット13における処理は、基本的には第1CPUユニット12と同様で、ユーザプログラム等を実行するとともに、演算実行した結果をIOメモリ13dに格納する。具体的には、CPU間同期処理、つまり、第1CPUユニット12と同期を取って、互いに各種の処理を実行する。そして、係る各種の処理としては、ユーザプログラムを演算実行する処理や、周辺サービス処理や、インナーボードサービス処理等があり、係る処理をサイクリックに実行する。このように、アクティブ側の第1CPUユニット12と比較すると、I/Oリフレッシュ処理が実行されない。そして、IOメモリ13dのデータは、アクティブ側の第1CPUユニット12のIOメモリ13dの内容が反映され、両者の記憶内容は一致する。
【0037】
アクティブ側の第1インナーボード14は、第1CPUユニット12との間で同期処理が行われ、上記した第1CPUユニット12におけるインナーボードサービス処理の際に、所定の処理を実行し、実行結果を返す。つまり、IOメモリ12dの共有メモリエリアを使用してデータ交換を行う。
【0038】
スタンバイ側の第2インナーボード15は、第2CPUユニット13と同期処理が行われ、IOメモリ13dの共有メモリエリアのデータ(第1CPUユニット12側の演算結果等が反映されている)を読み出して、所定の処理を実行する。また、第2インナーボード15は自己の演算処理をした結果をIOメモリ13dの共有メモリエリアに格納する。
【0039】
第2CPUユニット13側でのデータ交換の流れは、図2にも示すように、一方通行的に行われる。つまり、第1CPUユニット12側から、第1CPUユニット12のIOメモリ12dの記憶内容(CPUユニット用データ及びインナーボード用データ)が、第2CPUユニット13のIOメモリ13dの所定の記憶エリアに転送され、格納される。そして、インナーボード用データは、I/F−ASIC13eを介して第2インナーボード15に渡される。そして、その渡されたインナーボード用データに基づいて、第2インナーボード15は演算実行等をする。
【0040】
これにより、IOメモリ13dは、IOメモリ12dと同一性が保証されるため、第2CPUユニット13並びに第2インナーボード15も、第1CPUユニット12,第1インナーボード14と同一の処理が実行され、基本的に演算結果も同じになる。従って、アクティブ側の第1CPUユニット12及びまたは第1インナーボード14側で故障等が生じた場合には、その時点で第2CPUユニット13及び第2インナーボード15がアクティブに切り替わる。そして、このように第2CPUユニット13,第2インナーボード15がアクティブとなると、それらが上記したアクティブの処理を実行する。これより、そのままスムーズに運転・制御を継続して実行できる。
【0041】
そして、各CPUユニット並びにインナーボードにおける処理は、図3に示すフローチャートのようになる。まず、アクティブの第1CPUユニット12は、電源ON時処理を実行する(ST1)。この電源ON時処理は、例えば、RAM12cの初期化を行ない、I/Oユニットの接続状態を認識し、IOメモリ12dのクリアなどを行う。
【0042】
そして、正常に起動したならば、ラダー実行処理を行う(ST2)。つまり、ユーザメモリ12aに格納されたユーザプログラムを順次演算実行する。次いで、I/Oリフレッシュ処理を行う(ST3)。つまり、IOメモリ12dにおける予め割り付けられた入力ユニット用のデータエリアのデータを入力ユニットから受信したデータで更新したり、出力ユニット用のデータエリアのデータを出力ユニットへ送出したりする。これにより、センサその他の入力機器からの入力データを取得したり、ラダー実行処理をして得られた演算結果(出力データ等)を制御対象機器に与えることができる。また、このI/Oリフレッシュの結果、つまり、更新されたIOメモリ12dの内容は、I/F−ASIC12eによりスタンバイ側の第2CPUユニット13のIOメモリ13dにも書き込まれる。
【0043】
次いで、第2CPUユニット13との間で同期を取るとともに、アクティブの第1インナーボード14との間で同期処理を開始し(ST4)、INNERサービス処理を実行する(ST5)。このINNERサービス処理は、後述する第1インナーボード14が演算して得られた演算結果を取得したり、イベント処理の要求を出力たりする。そして、一連の処理が終了すると、同期処理を終了後(ST6)、周辺サービス処理を実行する(ST7)。この周辺サービスとしては、通信ユニットなど特殊な機能を司るユニットに対するデータ交換処理などがある。以後、上記したステップ2から7を1つのサイクルとして、サイクリックに繰り返し実行する。
【0044】
一方、アクティブの第1インナーボード14は、電源ON時処理を実行する(ST11)。この電源ON時処理は、例えば、RAM14cの初期化等を行う。
【0045】
次いで、演算処理を実行する(ST12)。すなわち、RAM14cに格納されたそのインナーボード用のユーザプログラムを実行する。この演算処理は、第1CPUユニット12のラダー実行などと非同期に行われる。そして、第1CPUユニット12からの同期命令信号を受けると、同期を開始し(ST13)、演算結果の転送処理(ST14),サイクリック処理(ST15)並びにイベント処理(ST16)を実行する。この各処理は、第1CPUユニット12のINNERサービス期間(ST5)に実行される。そして、同期処理が終了する(ST17)とステップ12に戻り、演算処理を開始する。また、ステップ12の演算実行している間は、第1インナーボード14側からのIOメモリ12d上の制御データであるI/Oデータへの書き込みを禁止している。なお、ステップ12の演算実行中に第1CPUユニット12から同期命令信号を受けなかった場合は、演算実行終了状態で同期命令信号の受信待ちとなる。
【0046】
なお、上記した第1インナーボード14と第1CPUユニット12との間の同期運転は、共有メモリを用いたデータ転送により実行され、第1インナーボード14における同期運転中の各処理の詳細については、後述する。
【0047】
一方、スタンバイ側の第2CPUユニット13は、基本的には第1CPUユニット12と同様で、まず、電源ON時処理を行った後(ST21)、ラダー実行処理を行う(ST22)。次いで、I/Oリフレッシュを行うことなく、第1CPUユニット12との間で同期を取るとともに、スタンバイの第2インナーボード15との間で同期処理を開始し(ST23)、INNERサービス処理を実行する(ST24)。このINNERサービス処理は、後述する第1インナーボード14が演算して得られた演算結果を取得したり、イベント処理の要求を出力たりする。そして、一連の処理が終了すると、同期処理を終了後(ST25)、周辺サービス処理を実行する(ST26)。
【0048】
また、スタンバイの第2インナーボード15は、電源ON時処理を実行する(ST31)。この電源ON時処理は、例えば、RAM15cの初期化等を行う。
【0049】
次いで、演算処理を実行する(ST32)。すなわち、RAM15cに格納されたそのインナーボード用のユーザプログラムを実行する。この演算処理は、第2CPUユニット13のラダー実行などと非同期に行われるもので、演算内容は、第1インナーボード14と同様である。なお、ステップ32の演算実行中に第2CPUユニット13から同期命令信号を受けなかった場合は、演算実行終了状態で同期命令信号の受信待ちとなる。
【0050】
そして、第2CPUユニット13からの同期命令信号を受けると、同期を開始し(ST33)、演算結果の転送処理(ST34),サイクリック処理(ST35)並びにイベント処理(ST36)を実行する。この各処理は、第2CPUユニット13のINNERサービス期間(ST24)に実行される。そして、同期処理が終了する(ST37)とステップ32に戻り、演算処理を開始する。
【0051】
インナーボード14,15の演算実行時のIOメモリ12d,13d上の制御データであるI/Oデータへの書き込みを許容すると、両者でデータの同一性を損なうおそれがある。そこで、演算実行時のIOメモリ12d,13d上の制御データであるI/Oデータへの書き込みを禁止し、一定のタイミング(サイクリック処理(ST15)またはイベント処理(ST16))で演算した結果、IOメモリ12d,13d上の制御データであるI/Oデータを共有メモリを用いてCPUユニットへ転送する。CPUユニットは、その転送されたデータに基づいて、IOメモリ12d,13d上の制御データであるI/Oデータを書き込むようにしている。
【0052】
次に、各処理ステップの具体的な処理手順を説明する。まず、本実施の形態では、同期処理は、共通メモリ(IOメモリ12d,13d)を利用したコマンドレスポンスにより、相手方との間でデータの転送を行うことにより、実行する。ここで、上記した同期処理に使用するIOメモリ12d,13dの所定エリアに割り付けられたCPUユニット−インナーボードI/Fエリアについて説明する。このエリアは、CPUユニットとインナーボードのステータス並びにCPUユニット−インナーボード間のコマンドレスポンスに使用するもので、図4に示すようなメモリ割り付け構造となっている。CPUユニットとインナーボードは、自己に付いてのエリアに対してはリード/ライト(R/W)することができ、相手のエリアに対してはリード(R)のみができるようになっている。
【0053】
そして、CPUステータスエリアは、CPUユニットが書き込み(ライト)するエリアで、インナーボードは、このCPUステータスエリアの所定のフラグにより演算やタスクの起動・停止が行われる。具体的には、図5に示すような構造となっている。ここで、「INNERボード運転可/不可フラグ」は、インナーボードが運転する(0)か運転不可(1)かを特定するフラグである。つまり、インナーボードは、各サイクル(「演算実行/演算結果転送/イベント/サイクリック」)の最初に上記フラグをチェックし、「1」ならば演算を行わない。なお、このフラグが「1」になるのは、例えば、CPUが待機中であったり、他機運転待ち中であったり、後述する二重化イニシャル中(スタンバイ側)等のように、アクティブ側とスタンバイ側でデータの同一性が保証できない状態のときである。
【0054】
また、このCPUステータスエリアには、相手に転送するデータの格納エリアの先頭アドレスと、データサイズが書き込まれる。これにより、ここで指定される先頭アドレスとデータサイズから、転送すべきデータエリアを特定し、転送処理を行う。
【0055】
また、INNERステータスエリアは、インナーボードが書き込み(ライト)するエリアで、CPUユニットは、このINNERステータスエリアの所定のフラグにより後述する二重化イニシャル起動・二重化照合を行う。具体的には、図6に示すような構造となっている。ここで、「二重化イニシャル要求フラグ」は、インナーボードが動的に二重化イニシャルを起動したい時に使用するフラグであり、アクティブ側のインナーボード(第1インナーボード14)の変数データやパラメータデータの内容をスタンバイ側のインナーボード(第2インナーボード15)に転送したい場合に1にする。なお、スタンバイ側のインナーボードからの二重化イニシャル要求は無視される。また、二重化の運転開始時は、無条件で二重化イニシャルが行われるので、実際には、二重化運転中に2重化イニシャルを行いたい場合に「1」を設定すれば良い。
【0056】
照合データエリアは、第1,第2インナーボード14,15が同期運転するために、各種内部状態が一致しているかを照合するために使用するエリアである。予め、この照合データエリアに格納する内容を定義しておき、各インナーボード(MPU14b,15b)は、その定義された内容を書き込む。これにより、第1,第2CPUユニット12,13は、照合データエリアに格納されたデータ同士を比較し、一致していない(照合エラー)の場合には、2重化照合異常となり、二重化運転ができなくなる。なお、この照合データの比較タイミングは、電源ON時のインナーボード認識時や、二重化イニシャル時である。
【0057】
さらにまた、CPU−INNERコマンドレスポンスエリアは、CPUユニット―インナーボード間のコマンド/レスポンスに使用するエリアであり、図7に示すようなメモリエリアの割り付けとなっている。そして、ここで使用するコマンド/レスポンスとしては、図8に示すようなものがある。そして、係るエリア並びにコマンド/レスポンスを使用して、以下に示す具体的な処理手順のもと、同期処理を行う。
【0058】
すなわち、同期処理開始ステップ(ST4,ST23)は、まず、第1,第2CPUユニット12,13が、それぞれ第1,第2インナーボード14,15に対して、割り込み信号ライン14e,15eを使用して同期開始の割り込み通知を発する。次いで、同期開始コマンドを発行する。つまり、IOメモリ12d,13d上に割り当てられた共有メモリのCPU−INNERコマンドレスポンスエリアの該当エリアに、所定のコマンド(0001)を書き込むことにより行う(図9参照)。なお、同期開始コマンドには、インナーボード用フリーランニングカウンタを付加し、このカウンタによりインナーボードの時計合わせを行う。
【0059】
上記した同期開始の割り込み通知を受けた第1,第2インナーボード14,15は、同期開始処理(ST13,ST33)を実行する。つまり、対応するIOメモリ12d,13dをアクセスし、コマンドを取得後、同期開始コマンドのレスポンスを返す。このとき返すレスポンスとしては、
▲1▼演算結果転送・イベント・サイクリックを行う場合(8001)
▲2▼演算結果転送・イベント・サイクリックを行わない場合(4001)
の2種類がある。なお、上記▲2▼のレスポンスは、インナーボードの演算実行の進行が、前回のサイクルから変化が無い場合、つまり、転送する必要の無い場合に返す。そして、この▲2▼のレスポンスを取得したCPUユニットは、それ以後の演算結果転送・イベント・サイクリックに関する各処理ステップに関する処理をスキップする。なお、通常であれば、アクティブ側とスタンバイ側は、同一の処理をしているため、ここで返すレスポンスの内容は同じになるが、仮に両者が一致しない場合には、アクティブ側のインナーボードからのレスポンスの内容が正しいとして処理をする。
【0060】
上記した同期開始処理を実行(▲1▼のレスポンスを返送)後は、演算結果転送処理を実行する。本実施の形態では、ホットスタンバイ方式で二重化を実現しているため、インナーボード14,15の演算実行時のIOメモリ12d,13dへの書き込みを許容すると、両者でデータの同一性を損なうおそれがある。そこで、演算実行時のIOメモリ12d,13dへの書き込みを禁止し、一定のタイミングで演算結果の転送を行い、所定の条件のもとで、IOメモリ12d,13dへ書き込む。
【0061】
このとき、第1CPUユニット12と、第2CPUユニット13は同期をとっており、第1CPUユニット12側では、スタンバイの第2CPUユニット13並びに第2インナーボード15の状態(メモリ内容,第1インナーボードのステップ14の実行による現在の演算結果)を取得することができる。また、第2CPUユニット13側では、第1CPUユニット12からの転送処理により、アクティブの第1CPUユニット12並びに第1インナーボード14の状態(メモリ内容,第1インナーボードのステップ14の実行による現在の演算結果)を取得することができる。
【0062】
従って、第1インナーボード14の演算結果と第2インナーボード15の演算結果を比較すると、両インナーボード14,15の演算の進行度合いの一致・不一致を比較できる。すなわち、第1,第2インナーボード14,15は共に同じ演算処理を実行する。従って、互いのプログラムの処理速度が等しく、同一命令を処理すると、その演算結果は等しくなる。そこで、演算結果の一致/不一致を確認し、不一致の場合には、一致させるべく処理速度を調整する補正処理を行うことにより、その補正処理後は、第1,第2インナーボード14,15が同一ステップの命令まで処理する状態(演算の進行を一致させた状態)になる。このように補正処理を適宜行うことにより、第1,第2インナーボード14,15の処理の進行状態を毎サイクル単位で合わせることができ、第2インナーボード15がアクティブに切り替わったとしても、演算結果に伴い出力する制御量などが第1インナーボード14の時から急に変わることなく、スムーズな切替が行える。
【0063】
そして、この演算の進行を一致させる演算結果補正処理は、図10に示すようになっている。つまり、以下に示す(1)から(8)までの処理を実行する。ここで、括弧書きの数字は、図10に示す各処理ステップに対応する。
【0064】
(1)アクティブの第1CPUユニット12は、アクティブ及びスタンバイIの第1,第2インナーボード14,15に対して演算結果転送開始コマンドを発行する。具体的には、図11に示すように、共有メモリの所定エリアにコマンド「0002」を書き込む処理を実行する。この共有メモリの所定エリアに書き込まれたコマンド「0002」は、I/F−ASIC12eによりスタンバイ側の第2CPUユニット13の共有メモリの所定エリアにも書き込まれる。このような処理によって、アクティブの第1CPUユニット12は、第1、第2インナボードに対して、演算結果転送開始コマンドを発行することができる。
【0065】
(2)アクティブおよびスタンバイの第1,第2インナーボード14,15は、演算結果転送開始レスポンスを発行する。この開始レスポンスと同時に、データエリアに演算結果情報を設定する。この演算結果情報は、演算実行状況を示す情報(具体的には、インナーボード用のユーザプログラムの実行処理がどこまで進んでいるかを示す情報のことで、例えば、ユーザプログラムのステップ番号などが相当する)で、インナーボードを設計する際に定義する。つまり、図11に示すように、コマンド「8002」を書き込むとともに、演算情報を登録する。
【0066】
(3)アクティブの第1CPUユニット12は、アクティブおよびスタンバイの第1,第2インナーボード14,15の演算結果転送開始レスポンスを受け取ると、スタンバイ側の演算結果情報を自機の演算結果情報にコピーし、さらにアクティブ側の演算結果情報をスタンバイ側に転送する。
【0067】
(4)そして、アクティブの第1CPUユニット12は、第1,第2インナーボードに対して、演算結果補正開始コマンドを発行する。具体的には、図12に示すように、アクティブの第1CPUユニット2は、共有メモリの所定エリアにコマンド「0003」を書き込むことにより行う。この共有メモリの所定エリアに書き込まれたコマンド「0003」は、I/F−ASIC12eによりスタンバイ側の第2CPUユニット13の共有メモリの所定エリアにも書き込まれる。このような処理によって、アクティブの第1CPUユニット12は、第1、第2インナボードに対して、演算結果補正開始コマンドを発行することができる。
【0068】
(5)アクティブおよびスタンバイの第1,第2インナーボード14,15は、演算結果補正開始コマンドを受け取ると、自機および他機の演算結果をもとに演算の進行を補正する。つまり、進行の遅いインナーボードが、進行の早いインナーボードに進行を合わせるベく、所定の演算を実行する。例えば、演算結果情報が、ユーザプログラムのステップ番号の場合で説明すると次のようになる。第1インナーボード14のユーザプログラムがステップN1まで実行され、第2インナーボード15のユーザプログラムがステップN2(N2はN1より小さい数とする)まで実行された状態で演算の進行を補正する場合は、進行の遅い第2インナーボード15は、ステップN1までユーザプログラムを実行することで第1インナボード14の進行に合わせる。
【0069】
(6)アクティブおよびスタンバイの第1、第2インナボード14,15は、演算結果補正開始レスポンスを発行する(図12参照)。演算結果補正開始レスポンスを発行するとは、具体的には、演算が進んでいたインナーボードは、自機コマンドエリアにレスポンス「8003」を書き込み、遅れていた側のインナーボードは、補正演算の完了後、自機コマンドエリアにレスポンス「8003」を書き込むことである。
【0070】
(7)アクティブの第1CPUユニット12は、アクティブおよびスタンバイ側の演算結果補正レスポンスを受け取ると、アクティブおよびスタンバイの第1,第2インナーボードに演算結果反映許可コマンドを発行する。具体的には、アクティブの第1CPUユニット2は、共有メモリの所定エリアに演算結果反映許可コマンドを書き込むことにより行う。この共有メモリの所定エリアに書き込まれた演算結果反映許可コマンドは、I/F−ASIC12eによりスタンバイ側の第2CPUユニット13の共有メモリの所定エリアにも書き込まれる。このような処理によって、アクティブの第1CPUユニット12は、第1、第2インナボードに対して、演算結果反映許可コマンドを発行することができる。
【0071】
(8)アクティブおよびスタンバイの第1,第2インナーボード14,15は、演算結果反映許可コマンドを受け取ると演算結果を反映する。そして処理完了で、演算結果反映許可レスポンスを返す。
【0072】
つまり、第1,第2インナーボードから演算結果補正処理が発行されると、演算結果補正が完了し、両者の進行状態が一致することになるので、その状態でインナーボードの演算結果をIOメモリに格納する。そして、係る(1)から(8)の演算結果転送開始から演算結果反映許可のCPU−INNERコマンドレスポンスエリアのデータの変化の手順の一例を示すと、図13から図19に示すようになる。なお、各図において、ACTがアクティブ側でSTBがスタンバイ側である。そして、その処理においてデータの変化があるエリアは網掛けで示し、アクティブ側からの転送によって書き込まれたデータは下線で示す。
【0073】
各処理を簡単に説明すると、演算結果転送開始処理(図13)では、アクティブの第1CPUユニット12が、IOメモリ12dに用意されたSTB用(スタンバイ側用)のCPU−INNERコマンドレスポンスエリア(+80)と、ACT用(アクティブ側用)のCPU−INNERコマンドレスポンスエリア(+336)に、演算結果転送開始を意味するコマンド(0002)を書き込む。すると、+80に書き込まれたコマンドは、I/F−ASIC12eによりスタンバイの第2CPUユニット13のCPU−INNERコマンドレスポンスエリア(+80)に、同じコマンド(0002)が書き込まれる。
【0074】
このコマンド(0002)を取得したインナーボードは、CPU−INNERコマンドレスポンスエリアにレスポンス(8002)を返すとともに、それぞれ自己の演算結果情報を格納する(図14)。具体的には、アクティブの第1インナーボードは、CPU−INNERコマンドレスポンスエリア(+336)にレスポンス(8002)を書き込むとともに、続くエリアに自己の演算結果情報を格納する。一方、スタンバイの第2インナーボードは、CPU−INNERコマンドレスポンスエリア(+80)にレスポンス(8002)を書き込むとともに、続くエリアに自己の演算結果情報を格納する。
【0075】
次いで、他機の演算結果情報をコピーする(図15)。つまり、第1CPUユニット12は、STB用INNER、つまりスタンバイの第2インナーボードの演算結果を取得し、自己のCPU−INNERコマンドレスポンスエリアの所定エリアに格納するとともに、ACT用INNER、つまりアクティブの第1インナーボードの演算結果を第2CPUユニットのIOメモリ13dのCPU−INNERコマンドレスポンスエリアの所定エリアに転送する。
【0076】
次に、演算結果補正開始処理(図16)では、アクティブの第1CPUユニット12が、IOメモリ12dに用意されたSTB用(スタンバイ側用)のCPU−INNERコマンドレスポンスエリア(+80)と、ACT用(アクティブ側用)のCPU−INNERコマンドレスポンスエリア(+336)に、演算結果補正開始を意味するコマンド(0003)を書き込む。すると、+80に書き込まれたコマンドは、I/F−ASIC12eによりスタンバイの第2CPUユニット13のCPU−INNERコマンドレスポンスエリア(+80)に、同じコマンド(0003)が書き込まれる。
【0077】
すると、各インナーボードは、CPUユニットからの演算結果補正開始コマンドを受け取ると、自己の演算結果情報と相手側インナーボードの演算結果情報をもとに演算結果補正を開始し、終了後にレスポンス(8003)を返す(図17)。
【0078】
このレスポンス(8003)を受けて、アクティブの第1CPUユニット12が、IOメモリ12dに用意されたSTB用(スタンバイ側用)のCPU−INNERコマンドレスポンスエリア(+80)と、ACT用(アクティブ側用)のCPU−INNERコマンドレスポンスエリア(+336)に、演算結果反映許可を意味するコマンド(0004)を書き込む。すると、+80に書き込まれたコマンドは、I/F−ASIC12eによりスタンバイの第2CPUユニット13のCPU−INNERコマンドレスポンスエリア(+80)に、同じコマンド(0004)が書き込まれる(図18)。
【0079】
この許可を受けて、第1,第2インナーボード14,15は、許可レスポンス(8004)を返すとともに、演算結果を共有メモリであるIOメモリの所定エリアに書き込む(図19)。
【0080】
次に、サイクリック処理を説明する。ステップ15,35のインナーボードのサイクリック処理は、処理開始を同期によって合わせるが、実際の処理は、アクティブ側とスタンバイ側でそれぞれが実行し、両者間でサイクリックデータのやり取りは行わない。具体的には、図20に示すように、CPU−INNERコマンドレスポンスエリアに、サイクリック実効開始を通知するコマンド(0005)を書き込むことにより開始される。なお、当該コマンド(0005)は、I/F−ASIC12eによりスタンバイ側の第2CPUユニット13のCPU−INNERコマンドレスポンスエリアに書き込まれる。このサイクリック処理を実行することでCPUユニットとインナーボードとの間で周期的なデータ交換が可能となる。
【0081】
次に、イベント処理を説明する。ステップ16,36のイベント処理は、以下の手順により行われる。すなわち、CPUユニット→インナーボード宛てイベントは、アクティブ側CPUユニットがアクティブ側CPU−INNERコマンドレスポンスエリアにイベント実行開始コマンドを書き込むことにより、スタンバイ側のCPU−INNERコマンドレスポンスエリアにもイベント実行開始コマンドが転送されることで、第1,第2インナーボード14,15でともに実行する。なお、スタンバイ側からのレスポンスはCPUユニットで破棄する。このイベント処理を実行することでCPUユニットとインナーボードとの間で非周期的なデータ交換が可能となる。
【0082】
一方、インナーボード→CPUユニット宛てイベントは、そのイベント処理がタイムスライスで数サイクルにまたがって処理される可能性がある。つまり、1回のサイクルで完結しないことがある。そのため、イベント実行終了もコマンドで通知する。
【0083】
具体的には、図21に示すように、CPUユニットがイベント実行開始を通知するコマンド(0006)を書き込み、それを受けたインナーボードがレスポンス(8006)を返すことにより開始される。そして、図22に示すように、CPUユニットがイベント実行終了を通知するコマンド(0007)を書き込み、それを受けたインナーボードがレスポンス(8007)を返すことにより終了する。なお、何れのコマンドもI/F−ASIC12eによりスタンバイ側の第2CPUユニット13のCPU−INNERコマンドレスポンスエリアに書き込まれる。
【0084】
さらに、図23に示すように、CPUユニットが同期終了を通知するコマンド(0008)を書き込み(ST6,ST25)、それを受けたインナーボードがレスポンス(8008)を返すこと(ST17,ST37)により終了する。
【0085】
次に、二重化イニシャル処理について説明する。上記したように、通常の運転状態においては、同期運転により第1インナーボード14と第2インナーボード15のデータの同一性が確保される。ところで、ツールなどを用いてアクティブ側の第1インナーボード14のRAM14c上に格納されている変数データやパラメータデータが外部から変更されたり、アクティブの第1CPUユニット12のユーザプログラムやIOメモリ12d上のデータ(I/Oリフレッシュの対象となるデータやCPUユニットのシステム設定に関するデータ)が外部から変更されることがある。すると、スタンバイ側の第2CPUユニット13や第2インナーボード15では、係るツールによる変更は無いので、第1,第2インナーボード14,15間及び第1,第2CPUユニット12,13間でのデータの同一性が保てなくなる。
【0086】
そこで、二重化イニシャル処理を行い、第1インナーボード14の変数メモリ及びパラメータデータ等を第2インナーボード15側に転送するとともに第1CPUユニット12のユーザプログラム等を第2CPUユニット13に転送し、両者の同一性を確保する。このイニシャル処理は、図24に示すように、通常の同期運転によるINNERサービス処理(ST5,ST24),イベント(ST16,ST36)の実行後に行う(ST8,ST18,ST27,ST38)。
【0087】
そして,係るINNERサービス処理のさらに詳細な手順としては,図25に示すようになる。すなわち、イベント処理が終了すると、(10)アクティブの第1CPUユニット12は、ユーザプログラムやIOメモリ12d上のデータが外部から変更されたか否かをチェックし、第1インナーボード14は、変数データやパラメータデータが外部から変更されたか否かをチェックする。
【0088】
(11)第1インナーボード14が、外部から変更ありと判断すると、第1CPUユニット12に対して二重化イニシャル要求を通知する。この通知は、二重化イニシャル要求フラグ(図6参照)を立てることにより行う。(12)第1CPUユニット12は、第1インナーボード14からの係る要求の有無を監視する(実際にはフラグをチェック)。
【0089】
そして、(13)この二重化イニシャル要求の通知を受けた場合には、二重化イニシャルを開始する。なお、第1CPUユニット12が、自己のユーザプログラムやIOメモリ12d上のデータが外部から変更された場合も二重化処理を開始する。そして、係る第1CPUユニット12,第1インナーボード14のいずれでも変更が無い場合には、二重化イニシャル処理をせずに終了する。
【0090】
(14)二重化イニシャルが開始されると、第1CPUユニット12はデータ転送に使用するエリア(二重化イニシャル転送データ格納エリア)をアクティブの第1インナーボード14に通知する。この二重化イニシャル転送データ格納エリアは、二重化イニシャル時に伝送データを格納するエリアである。なお、この二重化イニシャル転送データ格納エリアは、第1CPUユニット12,第1インナーボード14の両方から読み書きが可能となっている。そして、係る通知を行ったならば、第1インナーボード14からの応答を待つ。
【0091】
(15)第1インナーボード14は、第1CPUユニット12に対して、書き込み開始アドレスとデータサイズを通知するとともに、当該アドレス位置にデータを書き込む。そして、データの書き込みが終了すると、第1CPUユニット12に書き込み終了通知をする。
【0092】
(16)この通知を受けた第1CPUユニット12は、スタンバイの第2インナーボード15に対して取得した書き込み開始アドレスとデータサイズを通知し、第2インナーボード15からの読み出し終了コマンドを待つ。
【0093】
(17)スタンバイの第2インナーボードは、第1CPUユニット12からの通知に基づき、第1インナーボード14側で変更されたデータを読み出す。そして、データを全て読み出したらならば、データ読み出し終了をアクティブの第1CPUユニット12へ通知する。
(18)第1CPUユニット12は、第2インナーボード15からの読み出し終了通知を確認したならば、二重化イニシャルを終了する。
【0094】
以上の図25を用いたINNERサービス処理の説明は、二重化イニシャル処理におけるアクティブ側インナーボードからスタンバイ側インナーボードへの変数データ及びパラメータデータの転送についてのみである。二重化イニシャル処理におけるアクティブCPUからスタンバイCPUへのデータ転送は、アクティブCPUが自己のユーザメモリ上のユーザプログラムをスタンバイCPUのユーザメモリに書き込むことで実現できる。
【0095】
ところで、上記した(17)における第2インナーボード15のデータ読み出しは、実際にはデータの転送を行うことにより実行する。そして、本実施の形態では、分割データ転送と一括データ転送の2種類の転送方法を用意している。何れを使用するかは、インナーボードを設計する際に定義する。
【0096】
一括データ転送は、二重化システムで運転するとアクティブ側とスタンバイ側の演算実行が同じように動作するために、1サイクルで転送を完了させる必要があるときに行う転送方法である。インナーボードでは、変数データが、一括データ転送で転送されるべきデータである。
【0097】
分割データ転送は、アクティブ側とスタンバイ側の第1,第2インナーボード14,15における演算実行に影響が無く複数サイクルで転送しても問題ないときの転送方法である。インナーボードでは、パラメータデータが、分割データ転送で転送されるべきデータである。
【0098】
上記した分割/一括転送は、CPU−INNERコマンドレスポンスエリアを介して行い、通常サイクル動作の後に実行することは既に述べたとおりであり、具体的な共有メモリにおけるコマンド−レスポンスによるデータ転送処理は、図26以降に示すようになる。
【0099】
一括データ転送は、図26から図32に示すような処理手順で行う。つまり、まずCPUユニットが、コマンドレスポンスエリアの所定エリアに、一括データ転送を指示するコマンド(0100)を書き込むとともに、使用する一括転送データ格納エリアを指定する(図26(a))。この一括転送データ格納エリアは、本実施の形態では1番と2番の2箇所を用意しており、このエリア指定ではいずれかのエリア(1or2)を指定する。これが、図25における処理(14)に対応する。
【0100】
これを受けて、インナーボードは、開始アドレス(絶対アドレス/相対アドレスの何れでも可)と、共有メモリにデータサイズ(byte単位/word単位等)を格納するとともに、現在の状態(転送未完:4100,転送完了:8100)をレスポンスとして返す(図26(b),(c))。これが、図25における処理(15)に対応する。
【0101】
次いで、転送完了のコマンド(8100)を受け取ると、アクティブの第1CPUユニット12は、受け取った第1インナーボードのデータ(パラメータデータ,変数データなど)をスタンバイの第2CPUユニット13を経由してスタンバイの第2インナーボード15に渡す処理を行う。このとき、転送するデータに付いて第1CPUユニット12はチェックなどは行わず、そのまま転送する。
【0102】
つまり、図27(a)に示すように、アクティブの第1CPUユニット12は、転送するデータが格納された転送元エリア(1or2)を指定するとともに、開始アドレスとサイズを書き込む。すると、相手側からレスポンス(8101)を受ける。
【0103】
そして、一括転送の具体的なデータの変更履歴としては、図28以降のようになる。各図において、データを変更した部分(書き込んだ部分)を網掛けで示し、各図のタイトル中の括弧内は、係る網掛け部分のデータの変更者を示している。まず、図28に示すように、アクティブの第1CPUユニットが、転送エリア1(0001)を用いて一括転送データを行うコマンド(0100)を入力する。
【0104】
これを受けて、図29に示すように、アクティブの第1インナーボード14が、レスポンス(8100)を書き込むとともに、開始アドレス並びにサイズを格納する。このレスポンスの格納と同時に、転送すべきデータは所定エリアに格納される。
【0105】
次に、アクティブの第1CPUユニット12は、図30に示すように、取得した開始アドレス・サイズを所定エリアにコピーする。これが図25の処理(16)に対応する。
【0106】
すると、I/F−ASIC12eにより、スタンバイ側の共有メモリの所定エリアに、コマンド(0101)と、使用エリア(0001)並びに開始アドレスとサイズが書き込まれる。このとき、実際のデータも転送される。これが、図25の処理(17)に対応する。
【0107】
また、上記図30に示すコピーの完了と同時に、第1CPUユニット12は、次の転送のためのコマンド(0100)を入力するとともに、転送エリア(0002)を指定する(図31参照)。このとき指定するエリアは、前回と異なるエリアとする。このように、一括転送データ格納エリアを使い分けることで、データが上書きされたり、消去されたりするのを避けることができる。
【0108】
このコマンド入力に伴い、スタンバイの第2インナーボード15は、CPUユニット→インナーボード一括データ転送レスポンス(8101)を返し、アクティブの第1インナーボード14は、インナーボード→CPUユニット一括データ転送レスポンス(8100)を返すことになる(図32参照)。
【0109】
一方、分割データ転送は、アクティブのインナーボードのパラメータデータの内容をCPUユニットを経由してスタンバイのインナーボードに渡すことで実現する。この処理は、コマンドレスポンスを用いて実行する。
【0110】
なお、二重化イニシャル処理は、上記したように、ツールなどによる外部からの変更を受けた場合はもちろんであるが、例えば、電源ON時などにも実行される。
【0111】
【発明の効果】
以上のように、この発明では、特殊機能モジュールを実装したCPUユニットを2台備えたプログラマブルコントローラにおいて、特殊機能モジュールも含めて二重化システムを構築することができる。
【図面の簡単な説明】
【図1】本発明の一実施の形態を示す図である。
【図2】本発明の一実施の形態の要部を示す図である。
【図3】CPUユニット並びにインナーボードの機能を示すフローチャートである。
【図4】CPUユニット−INNERボードI/Fエリアのデータ構造の一例を示す図である。
【図5】CPUステータスエリアのデータ構造の一例を示す図である。
【図6】INNERボードステータスエリアのデータ構造の一例を示す図である。
【図7】CPU−INNERコマンドレスポンスエリアのデータ構造の一例を示す図である。
【図8】CPU−INNERコマンドレスポンスエリアで使用するコマンド/レスポンスの一例を示す図である。
【図9】同期開始処理における具体的な処理例を示す図である。
【図10】演算結果補正処理の処理手順の一例を示す図である。
【図11】演算結果転送開始処理における具体的な処理例を示す図である。
【図12】演算結果補正開始処理における具体的な処理例を示す図である。
【図13】演算結果転送処理における具体的な処理例を示す図である。
【図14】演算結果転送処理における具体的な処理例を示す図である。
【図15】演算結果転送処理における具体的な処理例を示す図である。
【図16】演算結果転送処理における具体的な処理例を示す図である。
【図17】演算結果転送処理における具体的な処理例を示す図である。
【図18】演算結果転送処理における具体的な処理例を示す図である。
【図19】演算結果転送処理における具体的な処理例を示す図である。
【図20】サイクリック処理における具体的な処理例を示す図である。
【図21】イベント実行処理における具体的な処理例を示す図である。
【図22】イベント実行処理における具体的な処理例を示す図である。
【図23】同期終了処理における具体的な処理例を示す図である。
【図24】CPUユニット並びにインナーボードの機能(二重化イニシャル処理)を示すフローチャートである。
【図25】CPUユニット並びにインナーボードの二重化イニシャル処理を示すフローチャートである。
【図26】一括データ転送処理における具体的な処理例を示す図である。
【図27】一括データ転送処理における具体的な処理例を示す図である。
【図28】一括データ転送処理における具体的な処理例を示す図である。
【図29】一括データ転送処理における具体的な処理例を示す図である。
【図30】一括データ転送処理における具体的な処理例を示す図である。
【図31】一括データ転送処理における具体的な処理例を示す図である。
【図32】一括データ転送処理における具体的な処理例を示す図である。
【符号の説明】
10 PLC
11 電源ユニット
12 第1CPUユニット
12a ユーザメモリ
12b MPU
12c RAM
12d IOメモリ
12e I/F−ASIC
13 第2CPUユニット
13a ユーザメモリ
13b MPU
13c RAM
13d IOメモリ
13e I/F−ASIC
14 第1インナーボード
14a ROM
14b MPU
14c RAM
14d バス
14e 割り込み信号ライン
15 第2インナーボード
15a ROM
15b MPU
15c RAM
15d バス
15e 割り込み信号ライン
16 デュプレックスユニット
16a二重化制御回路
17 I/Oユニット
18 バス切替器
19 システムバス
Claims (9)
- 同一の内容のユーザプログラムを備えた2つのCPUユニットを備え、前記2つのCPUユニットは、相手の状態を確認可能とし、一方がアクティブとなるとともに他方がスタンバイとなり、前記アクティブのCPUユニットがダウンした場合には、前記スタンバイのCPUユニットがアクティブに切り替わって運転を継続するプログラマブルコントローラにおいて、
前記2つのCPUユニットは、前記アクティブのCPUユニットが前記同一のユーザプログラムを実行するとともに、その実行結果が制御に反映され、前記スタンバイのCPUユニットが、前記アクティブのユーザプログラムと同一の内容のユーザプログラムを実行するものの、実行結果を出力しないようにした、ホットスタンバイ方式で動作するように構成され、
前記2つのCPUユニットは、それぞれ着脱可能に装着され、同一の演算処理を実行する特殊機能モジュールを備えるとともに、それら各特殊機能モジュールは、前記アクティブのCPUユニットに実装されたものがアクティブの特殊機能モジュールとなり、前記スタンバイのCPUユニットに実装されたものがスタンバイの特殊機能モジュールとなるように構成され、
前記アクティブの特殊機能モジュールは、前記同一の演算処理を実行するとともに、その演算処理の結果を前記アクティブのCPUユニットに渡し、前記アクティブのCPUユニットともに制御を司り、
前記スタンバイ側の特殊機能モジュールは、前記同一の演算処理を実行するとともに、その演算処理の結果を前記スタンバイのCPUユニットに渡すようにしたことを特徴とするプログラマブルコントローラ。 - 前記2つのCPUユニットと、それぞれに実装された前記特殊機能モジュールとの間のデータ交換は、共有メモリを介して行い、
前記2つの特殊機能モジュールは、前記2つのCPUユニットと非同期で演算実行するとともに、その演算実行中に得られたI/Oデータをその演算実行中は前記共有メモリに書き込みを行わず、
前記演算実行中に得られたI/Oデータは、実装されたCPUユニットとの同期処理中に前記共有メモリに書き込むことを特徴とする請求項1に記載のプログラマブルコントローラ。 - 前記CPUユニットに実装された前記特殊機能モジュールは、自己の演算実行結果と、相手のCPUユニットに実装された前記特殊機能モジュールの演算実行結果を取得するとともに、それら取得した2つの演算実行結果を比較し、不一致の場合には、演算処理の遅れている特殊機能モジュールは演算を進める補正処理を実行し、2つの特殊機能モジュールの進行を等しくするようにしたことを特徴とする請求項1または2に記載のプログラマブルコントローラ。
- 前記アクティブの特殊機能モジュールは、外部からの命令により、前記アクティブの特殊機能モジュールのメモリに格納されている変数データまたは,パラメータデータが変更された場合に、前記アクティブのCPUユニットに対して二重化イニシャル処理を要求する機能を備え、
前記アクティブのCPUユニットは、前記二重化イニシャル処理を要求された場合、前記メモリの少なくとも変更された内容を取得するとともに、前記スタンバイの特殊機能モジュールに向けて出力し、前記アクティブの特殊機能モジュールのメモリ内容と、前記スタンバイの特殊機能モジュールのメモリ内容とを一致させる機能を備えたことを特徴とする請求項1から3の何れか1項に記載のプログラマブルコントローラ。 - 演算処理を実行する特殊機能モジュールを装着可能なホットスタンバイ方式での二重化対応のCPUユニットであって、
ユーザプログラムに基づく制御を実行するアクティブと、前記ユーザプログラムを実行するが、その実行結果に基づいて前記制御を実行しないスタンバイの2つのモードを取り、前記スタンバイの時に相手のCPUユニットがダウンしたことを検知すると、アクティブに切り替わって運転を継続するCPUユニットにおいて、
自己に実装された前記特殊機能モジュールとの間のデータ交換は、共有メモリを介して行い、
前記2つのモードのいずれの場合も、前記ユーザプログラムの演算実行を含むサイクリックな処理を実行後、前記特殊機能モジュールとの間で同期をとってデータの送受を行うインナーサービス処理機能を備え、
そのインナーサービス処理機能は、自己に実装された前記特殊機能モジュールの演算実行により得られたI/Oデータを前記共有メモリに格納させるものであることを特徴とするCPUユニット。 - 前記I/Oデータの前記共有メモリへの格納は、
自己に実装された特殊機能モジュールと相手のCPUユニットに実装された特殊機能モジュールの演算実行結果を一致させたことを条件に行うようにしたことを特徴とする請求項5に記載のCPUユニット。 - ユーザプログラムに基づく制御を実行するアクティブのCPUユニットとして動作するモードと、前記ユーザプログラムを実行するが、その実行結果に基づいて前記制御を実行しないスタンバイのCPUユニットとして動作するモードのいずれかのモードで動作するホットスタンバイ方式での二重化対応のCPUユニットに着脱可能に実装される特殊機能モジュールであって、
前記特殊機能モジュールは、自己が装着された前記二重化対応のCPUユニットがアクティブのCPUユニットとして動作するモードの場合はアクティブの特殊機能モジュールとして動作する機能を持ち、自己が装着された前記二重化対応のCPUユニットがスタンバイのCPUユニットとして動作するモードの場合はスタンバイの特殊機能モジュールとして動作する機能を持つとともに、アクティブとスタンバイのいずれの場合も同一の演算処理を演算実行し、その演算処理の結果をそれぞれが接続されたCPUユニットに渡すようにし、
前記特殊機能モジュールと前記CPUユニットとの間のデータ交換は、共有メモリを介して行い、
前記特殊機能モジュールは、実装されるCPUユニットと非同期で前記演算実行するとともに、その演算実行中に得られたI/Oデータをその演算実行中は前記共有メモリに書き込みを行わず、
前記演算実行中に得られたI/Oデータは、実装されたCPUユニットとの同期処理中に前記共有メモリに書き込むことを特徴とする特殊機能モジュール。 - 演算実行する特殊機能モジュールを備えたCPUユニットを2台備えるとともに、その2台のCPUユニットがホットスタンバイ方式で動作する二重化システムを構成するプログラマブルコントローラにおける二重化処理方法であって、
前記2台のCPUユニットは、ユーザプログラムに基づく制御を実行するアクティブのCPUユニットとして動作するモードと、前記ユーザプログラムを実行するが、その実行結果に基づいて前記制御を実行しないスタンバイのCPUユニットとして動作するモードのいずれかのモードで動作するようにし、
前記2つの特殊機能モジュールは、前記アクティブのCPUユニットに実装されたものがアクティブの特殊機能モジュールとなり、前記スタンバイのCPUユニットに実装されたものがスタンバイの特殊機能モジュールとなるようにし、
前記アクティブの特殊機能モジュールは、前記同一の演算処理を実行するとともに、その演算処理の結果を前記アクティブのCPUユニットに渡し、前記アクティブのCPUユニットともに制御を司り、
前記スタンバイ側の特殊機能モジュールは、前記同一の演算処理を実行するとともに、その演算処理の結果を前記スタンバイのCPUユニットに渡すようにし、
前記アクティブ側のCPUユニットまたはそれに実装される前記特殊機能モジュールに異常が生じた場合に、前記スタンバイのCPUユニット並びに特殊機能モジュールがアクティブに切り替わるように制御することを特徴とする二重化処理方法。 - 演算実行する特殊機能モジュールを備えたCPUユニットを2台備えるとともに、その2台のCPUユニットがホットスタンバイ方式で動作する二重化システムを構成するプログラマブルコントローラにおける二重化処理方法であって、
前記2台のCPUユニットは、ユーザプログラムに基づく制御を実行するアクティブのCPUユニットとして動作するモードと、前記ユーザプログラムを実行するが、その実行結果に基づいて前記制御を実行しないスタンバイのCPUユニットとして動作するモードのいずれかのモードで動作するようにし、
前記2つの特殊機能モジュールは、前記アクティブのCPUユニットに実装されたものがアクティブの特殊機能モジュールとなり、前記スタンバイのCPUユニットに実装されたものがスタンバイの特殊機能モジュールとなり、
前記アクティブの特殊機能モジュールは、前記同一の演算処理を実行するとともに、その演算処理の結果を前記アクティブのCPUユニットに渡し、前記アクティブのCPUユニットともに制御を司り、
前記スタンバイ側の特殊機能モジュールは、前記同一の演算処理を実行するとともに、その演算処理の結果を前記スタンバイのCPUユニットに渡すようにし、
前記2つのCPUユニットと、それぞれに実装された前記特殊機能モジュールとの間のデータ交換は、共有メモリを介して行い、
前記2つの特殊機能モジュールは、前記2つのCPUユニットと非同期で演算実行し、
演算実行中に得られたI/Oデータをその演算実行中は前記共有メモリに書き込みを行わず、
前記演算実行中に得られたI/Oデータは、実装されたCPUユニットとの同期処理中に前記共有メモリに書き込むことを特徴とする二重化処理方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003156654A JP3606281B2 (ja) | 2002-06-07 | 2003-06-02 | プログラマブルコントローラ及びcpuユニット並びに特殊機能モジュール及び二重化処理方法 |
DE10325069A DE10325069B4 (de) | 2002-06-07 | 2003-06-03 | Programmierbare Steuerung mit CPU-Einheiten und Spezialfunktionsmodulen sowie Verfahren zur Aufdopplung |
US10/455,738 US7428659B2 (en) | 2002-06-07 | 2003-06-04 | Programmable controller with CPU units and special-function modules and method of doubling up |
CNB031438954A CN1271481C (zh) | 2002-06-07 | 2003-06-07 | 可编程控制器、cpu单元、特殊功能模块以及双重化处理方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002203285 | 2002-06-07 | ||
JP2003156654A JP3606281B2 (ja) | 2002-06-07 | 2003-06-02 | プログラマブルコントローラ及びcpuユニット並びに特殊機能モジュール及び二重化処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004062872A JP2004062872A (ja) | 2004-02-26 |
JP3606281B2 true JP3606281B2 (ja) | 2005-01-05 |
Family
ID=30002365
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003156654A Expired - Fee Related JP3606281B2 (ja) | 2002-06-07 | 2003-06-02 | プログラマブルコントローラ及びcpuユニット並びに特殊機能モジュール及び二重化処理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7428659B2 (ja) |
JP (1) | JP3606281B2 (ja) |
CN (1) | CN1271481C (ja) |
DE (1) | DE10325069B4 (ja) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE20315676U1 (de) * | 2003-10-11 | 2003-12-11 | Kronotec Ag | Paneel, insbesondere Bodenpaneel |
JP2005267111A (ja) * | 2004-03-17 | 2005-09-29 | Hitachi Ltd | 記憶制御システム及び記憶制御システムの制御方法 |
JP4666258B2 (ja) * | 2006-01-11 | 2011-04-06 | 横河電機株式会社 | データアクセスシステム |
JP4650441B2 (ja) * | 2007-03-15 | 2011-03-16 | 三菱電機株式会社 | 数値制御装置及び数値制御システム |
JP4826557B2 (ja) * | 2007-07-27 | 2011-11-30 | オムロン株式会社 | 二重化plc |
JP4953997B2 (ja) * | 2007-09-14 | 2012-06-13 | 山洋電気株式会社 | 多軸駆動用ドライバ |
JP2009093392A (ja) * | 2007-10-09 | 2009-04-30 | Meidensha Corp | データ等価の制御方法とそのシステム及びプログラマブルコントローラ |
US7979739B2 (en) * | 2007-11-13 | 2011-07-12 | Hewlett-Packard Development Company, L.P. | Systems and methods for managing a redundant management module |
JP5243113B2 (ja) * | 2008-06-19 | 2013-07-24 | 株式会社日立製作所 | 演算処理装置多重化制御システム |
JP4709268B2 (ja) * | 2008-11-28 | 2011-06-22 | 日立オートモティブシステムズ株式会社 | 車両制御用マルチコアシステムまたは内燃機関の制御装置 |
RU2453910C2 (ru) * | 2009-04-08 | 2012-06-20 | Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Юго-Западный государственный университет" (ЮЗГУ) | Вычислительная открытая развиваемая асинхронная модульная система |
US8051323B2 (en) * | 2010-01-21 | 2011-11-01 | Arm Limited | Auxiliary circuit structure in a split-lock dual processor system |
US20110179255A1 (en) * | 2010-01-21 | 2011-07-21 | Arm Limited | Data processing reset operations |
US8108730B2 (en) * | 2010-01-21 | 2012-01-31 | Arm Limited | Debugging a multiprocessor system that switches between a locked mode and a split mode |
JP5540928B2 (ja) * | 2010-06-21 | 2014-07-02 | 富士電機株式会社 | プログラマブルコントローラシステムおよびそのアプリケーション起動方法 |
JP5583046B2 (ja) * | 2011-02-10 | 2014-09-03 | 株式会社東芝 | 二重化制御装置 |
JP4877423B1 (ja) * | 2011-03-15 | 2012-02-15 | オムロン株式会社 | Plcのcpuユニット、plc用システムプログラムおよびplc用システムプログラムを格納した記録媒体 |
JP4752983B1 (ja) * | 2011-03-15 | 2011-08-17 | オムロン株式会社 | Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体 |
JP5845629B2 (ja) * | 2011-05-24 | 2016-01-20 | オムロン株式会社 | Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体 |
JP5079168B1 (ja) | 2011-12-27 | 2012-11-21 | 三菱電機株式会社 | 電源装置 |
US9594612B2 (en) * | 2013-06-28 | 2017-03-14 | Arista Networks, Inc. | System and method of a hardware shadow for a network element |
US10248601B2 (en) * | 2014-03-27 | 2019-04-02 | Honeywell International Inc. | Remote terminal unit (RTU) with universal input/output (UIO) and related method |
JP6375666B2 (ja) * | 2014-03-31 | 2018-08-22 | 株式会社ジェイテクト | Plcおよびplc用のプログラミングツール |
JP6340886B2 (ja) * | 2014-04-10 | 2018-06-13 | 株式会社ジェイテクト | プログラマブルロジックコントローラ用プログラムの作成支援装置及びプログラマブルロジックコントローラ用プログラムの作成支援方法 |
WO2015162760A1 (ja) | 2014-04-24 | 2015-10-29 | 三菱電機株式会社 | Plcユニット及びプログラマブルロジックコントローラ |
KR101916678B1 (ko) * | 2014-04-28 | 2018-11-08 | 엘에스산전 주식회사 | 피엘씨 |
KR101702945B1 (ko) * | 2014-12-17 | 2017-02-06 | 삼성중공업 주식회사 | 분산 제어 시스템 및 그 제어 방법 |
KR101870492B1 (ko) | 2015-06-22 | 2018-06-22 | 엘에스산전 주식회사 | Plc 시스템 |
CN107942894B (zh) * | 2016-10-13 | 2019-12-10 | 中国石油天然气集团公司 | 主输入输出子模块及其诊断方法、可编辑逻辑控制器 |
GB2555628B (en) * | 2016-11-04 | 2019-02-20 | Advanced Risc Mach Ltd | Main processor error detection using checker processors |
JP6903275B2 (ja) * | 2017-09-14 | 2021-07-14 | オムロン株式会社 | 制御装置および制御方法 |
US11475723B2 (en) * | 2017-12-29 | 2022-10-18 | Robert Bosch Gmbh | Determining a fault in an electronic controller |
US20240171177A1 (en) * | 2021-04-23 | 2024-05-23 | Fanuc Corporation | Plc device and recording medium |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4428044A (en) * | 1979-09-20 | 1984-01-24 | Bell Telephone Laboratories, Incorporated | Peripheral unit controller |
DE3328405A1 (de) * | 1983-08-05 | 1985-02-21 | Siemens AG, 1000 Berlin und 8000 München | Steuerorgane eines fehlertoleranten mehrrechnersystems |
EP0306211A3 (en) * | 1987-09-04 | 1990-09-26 | Digital Equipment Corporation | Synchronized twin computer system |
CA2003338A1 (en) * | 1987-11-09 | 1990-06-09 | Richard W. Cutts, Jr. | Synchronization of fault-tolerant computer system having multiple processors |
US5204952A (en) * | 1988-07-18 | 1993-04-20 | Northern Telecom Limited | Duplex processor arrangement for a switching system |
US4965717A (en) * | 1988-12-09 | 1990-10-23 | Tandem Computers Incorporated | Multiple processor system having shared memory with private-write capability |
US5086429A (en) * | 1990-04-10 | 1992-02-04 | Honeywell Inc. | Fault-tolerant digital computing system with reduced memory redundancy |
US5226152A (en) * | 1990-12-07 | 1993-07-06 | Motorola, Inc. | Functional lockstep arrangement for redundant processors |
JPH05173986A (ja) | 1991-12-24 | 1993-07-13 | Matsushita Electric Works Ltd | プログラマブルコントローラ |
JP3348176B2 (ja) * | 1993-05-14 | 2002-11-20 | オムロン株式会社 | プログラマブルコントローラ |
ES2115822T3 (es) * | 1993-10-11 | 1998-07-01 | Siemens Ag | Modulo de procesamiento para un sistema de automatizacion modular. |
JPH0973304A (ja) | 1995-09-04 | 1997-03-18 | Toshiba Fa Syst Eng Kk | プログラマブルコントローラの制御システム |
FR2744260B1 (fr) * | 1996-01-30 | 1998-03-27 | Aeg Schneider Automation | Systeme d'automatisme securise |
US5777874A (en) * | 1996-02-12 | 1998-07-07 | Allen-Bradley Company, Inc. | Programmable controller backup system |
CA2309926A1 (en) * | 1997-11-14 | 1999-05-27 | Erik Muench | Method for maintaining the synchronized execution in fault resilient/fault tolerant computer systems |
US6223304B1 (en) * | 1998-06-18 | 2001-04-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Synchronization of processors in a fault tolerant multi-processor system |
US6393582B1 (en) * | 1998-12-10 | 2002-05-21 | Compaq Computer Corporation | Error self-checking and recovery using lock-step processor pair architecture |
JP3662444B2 (ja) | 1999-06-09 | 2005-06-22 | 三菱電機株式会社 | プログラマブルコントローラおよび切替信号生成装置 |
JP2001022414A (ja) * | 1999-07-09 | 2001-01-26 | Toshiba Corp | プロセスコントローラ、そのデータ転送方法およびプラント |
JP4465824B2 (ja) * | 2000-07-06 | 2010-05-26 | 富士電機システムズ株式会社 | コントローラシステム |
US6604177B1 (en) * | 2000-09-29 | 2003-08-05 | Hewlett-Packard Development Company, L.P. | Communication of dissimilar data between lock-stepped processors |
US6928583B2 (en) * | 2001-04-11 | 2005-08-09 | Stratus Technologies Bermuda Ltd. | Apparatus and method for two computing elements in a fault-tolerant server to execute instructions in lockstep |
US7085959B2 (en) * | 2002-07-03 | 2006-08-01 | Hewlett-Packard Development Company, L.P. | Method and apparatus for recovery from loss of lock step |
JP4625620B2 (ja) * | 2003-10-10 | 2011-02-02 | 株式会社日立製作所 | フェイルセイフ制御装置 |
-
2003
- 2003-06-02 JP JP2003156654A patent/JP3606281B2/ja not_active Expired - Fee Related
- 2003-06-03 DE DE10325069A patent/DE10325069B4/de not_active Expired - Lifetime
- 2003-06-04 US US10/455,738 patent/US7428659B2/en active Active
- 2003-06-07 CN CNB031438954A patent/CN1271481C/zh not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE10325069A1 (de) | 2004-01-29 |
CN1271481C (zh) | 2006-08-23 |
DE10325069B4 (de) | 2012-05-24 |
US7428659B2 (en) | 2008-09-23 |
JP2004062872A (ja) | 2004-02-26 |
US20040025078A1 (en) | 2004-02-05 |
CN1477468A (zh) | 2004-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3606281B2 (ja) | プログラマブルコントローラ及びcpuユニット並びに特殊機能モジュール及び二重化処理方法 | |
US5615403A (en) | Method for executing I/O request by I/O processor after receiving trapped memory address directed to I/O device from all processors concurrently executing same program | |
US6687851B1 (en) | Method and system for upgrading fault-tolerant systems | |
JP3156083B2 (ja) | フォルトトレラント・コンピュータ装置 | |
JPH052571A (ja) | プロセス制御システムにおいて一次データベースと二次データベースの両端相互検証を実行する方法 | |
JPH09128354A (ja) | 多重化コンピュータシステム | |
JPH08272753A (ja) | 二重化構成をもつシステム制御装置 | |
JP2006178659A (ja) | フォールト・トレラント・コンピュータシステムと、そのための割り込み制御方法 | |
US20060242461A1 (en) | Method and system of copying a memory area between processor elements for lock-step execution | |
JP3424968B2 (ja) | 計算機システム及びプロセッサチップ及び障害復旧方法 | |
JPH06242979A (ja) | 二重化コンピュータ装置 | |
JP3332098B2 (ja) | 二重化プロセッサ装置 | |
KR20020059481A (ko) | 대형 시스템에서의 이중화 장치 및 방법 | |
JPH0736720A (ja) | 二重化コンピュータ装置 | |
JPH01118921A (ja) | 二重化デイスク制御方法 | |
JPH03268007A (ja) | シーケンスコントローラ | |
JP3144113B2 (ja) | 二重化制御システムの切換方法 | |
JPH08202570A (ja) | 二重化プロセス制御装置 | |
JP3679412B6 (ja) | 故障から立直りが速い/故障に対する耐性がある計算処理 | |
JPS62214465A (ja) | 2重化コントロ−ラの制御方法 | |
JPS62179044A (ja) | 複合計算機システム | |
JPH07200282A (ja) | 無中断プログラム更新方式 | |
JPH0137781B2 (ja) | ||
JP2003140706A (ja) | 多重化並列処理装置 | |
JPH0916441A (ja) | メモリダンプシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040512 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20040512 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20040615 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040622 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040820 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040914 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040927 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3606281 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071015 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081015 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091015 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101015 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101015 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111015 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111015 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121015 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121015 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131015 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |