JP5908068B2 - 待機冗長二重化装置 - Google Patents

待機冗長二重化装置 Download PDF

Info

Publication number
JP5908068B2
JP5908068B2 JP2014514305A JP2014514305A JP5908068B2 JP 5908068 B2 JP5908068 B2 JP 5908068B2 JP 2014514305 A JP2014514305 A JP 2014514305A JP 2014514305 A JP2014514305 A JP 2014514305A JP 5908068 B2 JP5908068 B2 JP 5908068B2
Authority
JP
Japan
Prior art keywords
data
controller
standby
cpu
calculation
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.)
Active
Application number
JP2014514305A
Other languages
English (en)
Other versions
JPWO2013168258A1 (ja
Inventor
明裕 野村
明裕 野村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2013168258A1 publication Critical patent/JPWO2013168258A1/ja
Application granted granted Critical
Publication of JP5908068B2 publication Critical patent/JP5908068B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B9/00Safety arrangements
    • G05B9/02Safety arrangements electric
    • G05B9/03Safety arrangements electric with multiple-channel loop, i.e. redundant control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/24Pc safety
    • G05B2219/24186Redundant processors are synchronised
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/24Pc safety
    • G05B2219/24187Redundant processors run identical programs
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/24Pc safety
    • G05B2219/24195Compare data in channels at timed intervals, for equality

Description

この発明は、一定周期で、CPU毎に異なる演算を行うマルチCPUを備えたコントローラを2重化した、待機冗長二重化装置に関するものである。
従来、マルチCPUを用いたデータの等値化コントローラとして、それぞれのCPUがシステムバスコントローラを持ち、各CPUが、システムバスコントローラを介してシステムバスに接続される構成を有するものとして、特許文献1に示すような待機冗長二重化装置が提案されている。
この装置では、システムバスコントローラを使用して、稼動側CPUから待機側CPUに等値化データを送信することで、2つのコントローラ間でのデータの等値化を実現している。
特開2002−149212号公報(段落0020−0022、図1、図3)
一定周期で異なる演算を行うマルチCPUを有する待機冗長二重化装置では、稼動側CPUから待機側CPUに等値化すべきデータを転送するためのバスが存在するが、特許文献1に示す等値化コントローラでは、それぞれのCPUにデータの等値化を行うためのバスコントローラが存在しているため、CPUの数が増えると、その数と同一のバスコントローラが必要となる。
これにより、回路規模が増大するという課題があった。
また、等値化データの送受信とI/Oボードとのデータの送受信を、同一のシステムバスを使用する構成とするために、等値化データの送受信とI/Oボードの送受信を同時に転送できず、データ転送のレスポンスを向上できないという課題があった。
この発明は、上記の課題を解決するためになされたものであり、CPUの数が増えても、バスコントローラの数は増えず、回路規模を抑えることが可能であり、また、等値化データのコントローラ間での送受信と、I/OボードとCPUとのデータの送受信の同時実行を可能とする待機冗長二重化装置を提供することを目的とする。
本発明に係る待機冗長二重化装置は、
2つのコントローラで構成し、一の前記コントローラが稼動側コントローラとして動作する時は、他方のコントローラは待機側コントローラとして動作する待機冗長二重化装置において、
各前記コントローラは、それぞれ内部に複数のCPUと、
メモリと、
I/Oボードと、
複数の前記CPUと、前記メモリと、前記I/Oボードとの間でデータを送受信するI/Oバスコントローラと、
前記稼動側コントローラから等値化データバスを介して前記待機側コントローラに、前記稼動側コントローラと前記待機側コントローラの装置状態を等値化するために使用する等値化データを送信する、前記I/Oバスコントローラから独立した等値化バスコントローラとを備え
前記等値化データは、各演算ルーチンの識別コードと版コードを有し、
前記待機側コントローラの各前記CPUは、前記識別コードと前記版コードを確認して各前記CPUに割り当てられた演算を実行するものである。
本発明に係る待機冗長二重化装置は、
各前記コントローラは、それぞれ内部に複数のCPUと、
メモリと、
I/Oボードと、
複数の前記CPUと、前記メモリと、前記I/Oボードとの間でデータを送受信するI/Oバスコントローラと、
前記稼動側コントローラから等値化データバスを介して前記待機側コントローラに、前記稼動側コントローラと前記待機側コントローラの装置状態を等値化するために使用する等値化データを送信する、前記I/Oバスコントローラから独立した等値化バスコントローラとを備え
前記等値化データは、各演算ルーチンの識別コードと版コードを有し、
前記待機側コントローラの各前記CPUは、前記識別コードと前記版コードを確認して各前記CPUに割り当てられた演算を実行するものなので、
複数のCPUが処理するデータの等値化処理において、CPU毎のバスコントローラを不要とすることができる。
また、等値化データバスとI/Oバスを独立のバスとし、それぞれのバスコントローラも独立しているので、等値化データの送受信とI/Oボードの送受信の同時送信が可能となり、処理の高速化を図ることができる。
本発明の実施の形態1に係る待機冗長二重化装置の構成を示す図である。 本発明の実施の形態1に係る待機冗長二重化装置の割込制御の構成を示す図である。 本発明の実施の形態1に係る待機冗長二重化装置のメモリの構成を示す図である。 本発明の実施の形態1に係る待機冗長二重化装置の等値化データ送信データの構成を示す図である。 本発明の実施の形態1に係る待機冗長二重化装置の稼動側コントローラのCPUa0の動作を示すフローチャートである。 本発明の実施の形態1に係る待機冗長二重化装置の稼動側コントローラのCPUa1の動作を示すフローチャートである。 本発明の実施の形態1に係る待機冗長二重化装置の待機側コントローラのCPUb0の動作を示すフローチャートである。 本発明の実施の形態1に係る待機冗長二重化装置の待機側コントローラのCPUb1の動作を示すフローチャートである。 本発明の実施の形態1に係る待機冗長二重化装置の動作を示すタイミング図である。 本発明の実施の形態1に係る待機冗長二重化装置の動作を示すタイミング図である。 本発明の実施の形態2に係る待機冗長二重化装置の稼動側コントローラのCPUa0の動作を示すフローチャートである。 本発明の実施の形態2に係る待機冗長二重化装置の稼動側コントローラのCPUa1の動作を示すフローチャートである。 本発明の実施の形態3に係る待機冗長二重化装置のメモリの構成を示す図である。 本発明の実施の形態3に係る待機冗長二重化装置の動作を示すタイミング図である。 本発明の実施の形態3に係る待機冗長二重化装置の動作を示すタイミング図である。 本発明の実施の形態4に係る待機冗長二重化装置のメモリの構成を示す図である。 本発明の実施の形態5に係る待機冗長二重化装置のメモリの構成を示す図である。 本発明の実施の形態6に係る待機冗長二重化装置の構成を示す図である。 本発明の実施の形態6に係る待機冗長二重化装置の等値化送信データの構成を示す図である。 本発明の実施の形態7に係る待機冗長二重化装置の構成を示す図である。 本発明の実施の形態7に係る待機冗長二重化装置の共通メモリの構成を示す図である。 本発明の実施の形態7に係る待機冗長二重化装置の個別メモリの構成を示す図である。 本発明の実施の形態8に係る待機冗長二重化装置の等値化データ送信データの構成を示す図である。
実施の形態1.
以下、本発明の実施の形態1を図を用いて説明する。
図1は、待機冗長二重化装置100(以下、装置100と称す)の構成を示す図である。
図において、装置100は、稼動側コントローラ10aと待機側コントローラ10bと等値化データバス20により構成される。
稼動側コントローラ10aの演算結果は、等値化データバス20を介して、待機側コントローラ10bへ通知される。
待機側コントローラ10bは、稼動側コントローラ10aと同じ構成であるため、稼動側コントローラ10aを主として各コントローラの構成を説明する。
本明細書では、2つのコントローラを稼動側コントローラ10a、待機側コントローラ10bとして固定して説明しているが、実際の運用では、稼動側コントローラ10aも待機側コントローラ10bも構成は等しく、それぞれの立場が入れ替わる場合がある。
稼動側コントローラ10aは、CPUボード1aと複数のI/Oボード2aとI/Oバス3aより構成される。CPUボード1aの演算ルーチンに必要な入力データは、I/Oバス3aを介してI/Oボード2aを読み出すことによって得られる。
また、CPUボード1aの演算ルーチンの演算結果である出力データは、I/Oバス3aを介してI/Oボード2aに書き込まれる。
装置100により制御される機器へのデータの出力は、稼動側コントローラ10a上のI/Oボード2aよりおこなわれる。
待機側コントローラ10bのI/Oボード2b側に出力データの書き込みをおこなっても機器へのデータ出力はI/Oボード2b内で切り離されており、待機側コントローラ10bから機器には出力データは伝わらない。
CPUボード1aは、CPUa0からCPUanまでの複数個のCPUと、メモリ11aと、等値化バスコントローラ12aと、I/Oバスコントローラ13aと、特許請求の範囲における起動制御部に相当する割込制御14aと、タイマ15aを備える。
CPUa0からCPUanまでの複数個のCPUは、それぞれ異なる演算を行う。
メモリ11aには、各CPUが演算に使用するデータが配置される。
I/Oバスコントローラ13aは、各CPUが使用するデータの読み出し要求または書き込み要求に従い、I/Oバス3aを経由してメモリ11aと複数のI/Oボード2aとの間でデータの送信を行う。
稼動側コントローラ10aの等値化バスコントローラ12aは、稼動側コントローラ10aの各CPUのおこなった演算の結果等を等値化データバス20を経由して待機側コントローラ10bの等値化バスコントローラ12bに送信する。
待機側コントローラ10bの等値化バスコントローラ12bは受信したデータを待機側コントローラ10bのメモリ11bに格納する。
また、割込制御14aは、CPUa0からCPUanまでのそれぞれのCPUに対して、割込信号バス16aを使用して割り込みを通知する。
更に、割込制御14aには、タイマ15aが接続されており、予め設定したCPUに一定間隔で割り込みを通知することができる。
図2は、割込制御14aの構成を示す図である。
割込制御14aには、CPUa0用からCPUan用の各割込通知レジスタが用意されており、例えば、CPUa0用の割込通知レジスタにデータをセットすると、CPUa0への割込信号17a0がONとなり、CPUa0に割り込みが通知される。
この割込通知レジスタと割込信号17a0〜17anがCPU毎に存在する。
CPUa0用の割込通知レジスタからCPUan用の割込通知レジスタは、相互に他のCPUからアクセス可能となっており、あるCPUから他のCPUに割り込みを通知することができる。
図3は、メモリ11aおよびメモリ11b内に記録するデータの構成を示す図である。
メモリ11aとメモリ11bは、同一の構成となるので、メモリ11aを用いて説明する。
入力データ11a1は、I/Oボード2aを読み出すことで得たデータである。
出力データ11a2はI/Oボード2aに書き込むデータである。
入力データ11a1と出力データ11a2は、I/Oボード2aと制御対象となる機器が送受信する際に使用する形式で記録されている。
また、メモリ11aには、CPUa0からCPUanがそれぞれ行う演算ルーチンp0から演算ルーチンpnが格納される。
演算ルーチンp0から演算ルーチンpnは、実際には、それぞれ入力データ11a1から、それぞれのCPUが演算に使用するデータを演算に適した形式に変換する処理(演算1)と、実際に演算する処理(演算2)と、演算結果をI/Oボード2aからの出力に適したデータ形式へ変換する処理(演算3)が含まれている。
また、メモリ11aには、CPUa0からCPUanがそれぞれ行う演算ルーチンp0からpnが使用する演算用のデータが、CPU毎に、演算データpd0から演算データpdnの順で配置される。
これらの演算データの具体的な内容を、CPUa0が使用する演算データpd0を用いて説明する。
演算データpd0は、実際には複数のデータで構成される。
これらのデータは、3種類のデータに分類される。
1種類目のデータは、入力データ11a1からCPUa0用の演算ルーチンp0が使用するデータを取得して、演算ルーチンp0の演算1によって演算2に適した形式に変換したデータである。
2種類目のデータは、演算ルーチンp0の演算2の結果得たデータと、その過去の蓄積データ群である。
3種類目のデータは、演算ルーチンp0の演算2による、演算結果のデータを、演算ルーチンp0の演算3によって、I/Oボード2aへの出力データ形式に変換したデータである。
更に、メモリ11aは、等値化データ送信バッファ11a3と、等値化データ受信バッファ11a4及び等値化データ受信バッファ11a5を有する。
等値化データ送信バッファ11a3は、このコントローラが稼動側コントローラ10aとして動作する際に使用される。
稼動側コントローラ10aの等値化バスコントローラ12aは、等値化データ送信バッファ11a3の内容を待機側コントローラ10bの等値化バスコントローラ12bに送信する。
また、送信時には等値化バスコントローラ12aは送信データの妥当性を確認するためのチェックサムを付与して送信する。
等値化データ受信バッファ11a4と等値化データ受信バッファ11a5は、各コントローラが待機側コントローラとして動作する際に使用される。
この点について、待機側コントローラ10bの動作として以下に説明する。
待機側コントローラ10bの等値化バスコントローラ12bは、稼動側コントローラ10aから受信したデータをチェックサムを用いて確認する。
そして受信データが妥当であると判断した場合は、受信データを等値化データ受信バッファ11b4又は等値化データ受信バッファ11b5に交互に格納し、不正と判断した場合は、受信データを破棄する。
この時、待機側の等値化バスコントローラ12bがデータの受信に使用していない他方の受信バッファは、待機側のCPUによってデータ処理に使用されている。
ここで説明を、稼動側コントローラ10aに戻す。
稼動側コントローラ10aのメモリ11aには、CPUa0からCPUanがそれぞれ行う演算ルーチンp0〜演算ルーチンpnの実行回数が、実行カウントpc0〜実行カウントpcnとして格納される。
このカウント値はオーバーフローしても異常とはならず、0から再カウントし直す。
図4は、等値化データ送信バッファ11a3内に格納される送信データの構成を示す図である。
CPUの識別番号と、各CPU用の演算ルーチンの結果を保存するために必要とされる演算データサイズと、その演算データの3つのデータを一組とし、CPUa0の演算ルーチンp0からCPUanの演算ルーチンpnまでの各組のデータが結合された構造となっている。
次に、稼動側コントローラ10aの動作について説明する。
図5は、稼動側コントローラ10aの動作を示すフローチャートである。
稼動側コントローラ10aのタイマ15aと割込制御14aに対して、予め、周期T間隔でCPUa0に割り込みが通知されるように設定しておく。
まず、この割り込み通知に基づき、稼動側コントローラ10aのCPUa0が処理を開始する。
最初に、ステップST1010において、タイマ15aからの周期Tに達したことを示す通知を解除する。
この解除により、次回のタイマ15aからの周期Tの通知に備える。
次に、ステップST1020において、I/Oボード2aからデータの入力を行う。
CPUa0は、I/Oバスコントローラ13aに対して、I/Oボード2aからの入力データの読み出し要求を行う。
I/Oバスコントローラ13aは、読み出し要求を受けて、I/Oバス3a経由で複数のI/Oボード2aよりデータを読み出し、メモリ11aに入力データ11a1として格納する。
次に、ステップST1030において、CPUa0は、他の各CPUに対して処理開始を通知する。割込制御14a上のCPUa1からCPUanに対応する各割込通知レジスタに対してそれぞれ所定の値を書き込む。
すると、割込制御14aは、割込信号17a1から割込信号17anをONにして、CPUa1からCPUanに対する割り込みの発生を通知する。
次に、ステップST1040において、CPUa0は、演算ルーチンp0の演算を行う。
この演算ルーチンp0には、先に述べたように、CPUa0が演算に使用するデータを演算に適した形式に変換する処理(演算1)と、実際に演算する処理(演算2)と、演算結果をI/Oボード2aからの出力に適したデータ形式へ変換する処理(演算3)が含まれている。
最初に、入力データ11a1内の、CPUa0が演算に使用するデータが、演算ルーチンp0の演算に適した形式にデータを変換されて演算データpd0として格納される。(演算1)
次に、本来の演算2の処理が動作し、演算結果が演算データpd0に追加して格納される。(演算2)
更に、演算2による演算結果をI/Oボード2aに適した形式に変換する処理(演算3)が動作し、変換後のデータが出力データ11a2に格納される。
次に、ステップST1050において、演算ルーチンp0の実行回数を示すメモリ11a上の実行カウントpc0の値を1つ増加させる。
次に、ステップST1060において、後述するCPUa1からCPUanまでの処理がすべて完了するまで待つ。
次に、ステップST1070において、CPUa1からCPUanまでの処理がすべて完了すると、各CPUの処理完了通知を解除し、次回の周期での処理完了通知に備えておく。
次に、ステップST1080において、演算データpd0から演算データpdnまでの演算1の結果のデータと演算2の結果のデータ(以下、「p0演算データ」と表記する)を結合して、図4で示す送信データを等値化データ送信バッファ11a3に格納する。
次に、ステップST1090において、CPUa0は、等値化バスコントローラ12aに対して、等値化データ送信バッファ11a3の送信データを、待機側コントローラ10bに送信するよう指示する。
等値化バスコントローラ12aは、CPUa0からの指示を受けて、等値化データ送信バッファ11a3のデータを待機側コントローラ10bに送信する。
次に、CPUa0は、ステップST1090における等値化バスコントローラ12aの送信完了を待たずにステップST1100の処理を指示する。
ステップST1100においては、I/Oボード2aへのデータの出力処理を行う。
CPUa0は、I/Oバスコントローラ13aに対して、メモリ11aの出力データ11a2からI/Oボード2aへの書き込み要求を行う。
I/Oバスコントローラ13aは、この書き込み要求を受けて、I/Oバス3a経由でI/Oボード2aに対してデータを書き込む。
図6は、稼動側コントローラ10aのCPUa1(〜CPUan)の動作を示すフローチャートである。
次に、CPUa0以外のCPUa1からCPUanまでの動作を図6を用いて説明する。
CPUa1からCPUanまでの各CPUの動作は同じなので、図6では、CPUa1を用いて説明する。
まず、CPUa0からの指令に基づく処理開始通知を受けてCPUa1が処理を開始すると、ステップST1110において、CPUa0からの処理開始通知を解除する。
この解除により、次回の通知に備える。
次に、ステップST1120において、CPUa1が行う演算ルーチンp1の演算を行う。この演算ルーチンp1には、先に述べたように、CPUa1が演算に使用するデータを演算に適した形式に変換する処理(演算1)と、実際に演算する処理(演算2)と、演算結果をI/Oボード2aからの出力に適したデータ形式へ変換する処理(演算3)が含まれている。
最初に、入力データ11a1の入力データの内の、CPUa1が演算に使用するデータが、演算ルーチンp1の演算に適した形式にデータを変換されて演算データpd1として格納される。(演算1)
次に、本来の演算2の処理が動作し、演算結果が演算データpd1に追加して格納される。
更に、演算2による演算結果をI/Oボード2aに適した形式に変換する処理(演算3)が動作し、変換後のデータが出力データ11a2に格納される。
次に、ステップST1130において、演算ルーチンp1の実行回数を示すメモリ11a上の実行カウントpc1の値を1つ増加させる。
次に、ステップST1140において、CPUa0に対して処理完了を通知する。
処理完了は、割込制御14aを介して通知しても良いし、メモリ11aを介して通知しても良い。
次に、待機側コントローラ10bの動作を説明する。待機側コントローラ10b上のタイマ15bと割込制御14bに対しても、稼動側コントローラ10aと同様に、予め、周期T間隔でCPUb0に割り込みが通知されるように設定しておく。
ただし、稼動側コントローラ10aと待機側コントローラ10bでタイミングが同期する仕組みはなく、非同期に動作する。
図7は、待機側コントローラ10bのCPUb0の動作を示すフローチャートである。
割込制御14bからの割り込み通知に基づき、待機側コントローラ10bのCPUb0が行う処理を図7を用いて説明する。
ステップST2010からステップST2030については、稼動側コントローラ10aのCPUa0が、図5のステップST1010からステップST1030で行う処理と同様である。
従って、CPUb0は、稼動側コントローラ10aのCPUa0と同様に、I/Oボード2bからデータを取得し、メモリ11bに入力データ11b1を記録し、自らデータ処理をし、他のCPUにも同様の処理を指示する。
ステップST2035において、CPUb0は、等値化バスコントローラ12bが現時点で等値化データを受信しているバッファと異なる方の等値化データ受信バッファの内容を確認し、データのCPU識別番号が0の部分から、当該データサイズを取得する。
次に、そのサイズ分の演算データを取得して、メモリ11b内の演算データpd0に展開する。
この時、等値化データと共通の部分(上述の演算1の結果のデータと演算2の結果のデータに相当する部分)は、等値化データで上書きされることになる。
なお、演算2の結果部分のデータは、更にその後のステップST2040の演算で上書きされることになる。
ステップST2040からステップST2070の処理及び、ステップST2100の処理は、図5において稼動側コントローラ10aのCPUa0が行うステップST1040からステップST1070及び、ステップST1100の処理と同様である。
但し、待機側コントローラ10bのI/Oボード2bは、このコントローラが待機側コントローラとして動作している間は、I/Oボード2b内において制御対象となる機器との接続を切り離しているので、機器に対して出力データは送信されない。
図8は、待機側コントローラのCPUb1(〜CPUbn)の動作を示すフローチャートである。
次に、CPUb0以外のCPUb1からCPUbnまでの動作を図8を用いて説明する。
CPUb1からCPUbnまでの各CPUの動作は同じなので、図8では、CPUb1を用いて説明する。
ステップST2110及び、ステップST2120からステップST2140の処理は、稼動側コントローラ10aのCPUa1が行う、図6におけるステップST1110及びステップST1120からステップST2140と同様である。
図6と異なる点は、ステップST2110の後に、ステップST2115の処理が追加されている点である。
ステップST2115においては、図7のステップST2035と同様に、CPUb1は、等値化バスコントローラ12bが現時点で等値化データを受信しているバッファと異なる方の等値化データ受信バッファの内容を確認し、データのCPU識別番号が1の部分から、当該データサイズを取得する。
そして、そのサイズ分の演算データを取得して、メモリ11b内の演算データpd1に展開する。
この時、等値化データと共通の部分(上述の演算1の結果のデータと演算2の結果のデータに相当する部分)は、等値化データで上書きされることになる。
なお、演算2の結果部分のデータは、更にその後のステップST2120の演算で上書きされることになる。
図9、図10は、これまで説明した装置100の動作をタイミング図としてまとめたものである。
各図内のそれぞれの矢印は信号やデータの送信を示す。
図9の矢印A1、A2は、ぞれぞれ図10の矢印A1、A2に繋がる。
2つの図を並べて見ると、稼動側コントローラ10aと、待機側コントローラ10bのタイミングを視覚的に理解できる。
本発明の実施の形態1に係る待機冗長二重化装置100によれば、複数のCPUが処理するデータの等値化処理において、CPU毎のバスコントローラを不要とすることができる。
また、等値化データバス20とI/Oバス3a、3bを独立のバスとし、それぞれのI/Oバスコントローラも独立しているので、等値化データの送受信とI/Oボードの送受信の同時送信が可能となり、処理の高速化を図ることができる。
実施の形態2.
以下、本発明の実施の形態2を図を用いて実施の形態1と異なる部分を中心に説明する。
実施の形態1では、各CPUへの処理の開始の通知として割込制御14a、14bを使用していた。
本実施の形態では、割り込みを使用せず、タイマにフラグを配置し、フラグのON/OFFを割り込みの通知信号として代用することとした。
図11は、本実施の形態に係る稼動側コントローラのCPUa0の動作を示すフローチャートである。
実施の形態1のCPUa0の動作を示す図5と、本実施の形態のCPUa0の動作を示す図11の差異は、まず、図5では、処理開始の割り込みが発生してから処理を開始している点である。
次に、図11においては、ステップST1005をループさせて処理開始フラグを監視している点である。
本実施の形態では、CPUa0がフラグの監視をするので、独立した割込制御は必要ない。
ステップST1005において、CPUa0が、処理開始を示すフラグがONになったことを確認すると、ステップST1010においてフラグを解除し、ステップST1020においてI/Oボードからのデータ入力処理を行う。
次に、ステップST1030において、タイマ内または、メモリ領域に備えた、他のCPUに処理の開始を指示する各フラグをONにする。
その他の処理は実施の形態1と同様である。
図12は、本実施の形態に係る稼動側コントローラのCPUa1(〜an)の動作を示すフローチャートである。
実施の形態1のCPUa1の動作を示す図6と、本実施の形態のCPUa1の動作を示す図12の差異は、まず、図6では、処理開始の割り込みが発生してから処理を開始している点である。
次に、図12においては、ステップST1105をループさせて処理開始フラグを監視している点である。
本実施の形態では、CPUa1がフラグの監視をするので、独立した割込制御は必要ない。
ステップST1105において、CPUa1が、処理開始を示すフラグがONになったことを確認すると、ステップST1110においてフラグを解除し、ステップST1120において演算p1を行う。
その他の処理は実施の形態1と同様である。
待機側コントローラ10bのフローチャートは明示しないが、同様にフラグを用いて処理を実現可能である。
本発明の実施の形態2に係る待機冗長二重化装置によれば、装置内に配置するフラグのON/OFFを割込通知信号の代用とすることで、特別な割込制御の必要がないシンプルな待機冗長二重化装置を提供できる。
実施の形態3.
以下、本発明の実施の形態3を図を用いて実施の形態2と異なる部分を中心に説明する。
図13は、本実施の形態に係る稼動側コントローラのメモリ311a内に記録するデータの構成を示す図である。
本実施の形態では、CPU数を超える演算データと演算ルーチンを準備する。
そして、各CPUに対して複数の演算ルーチンを割り当てる。
図において、「p」の後に続く数字が、当該演算ルーチンを実行するCPU番号であり、ハイフンに続く数字が、その番号のCPUに割り当てられた演算ルーチンの連番である。
図14、15は、本実施の形態に係る待機冗長二重化装置の各コントローラの動作状況を示すタイミング図である。
各図内のそれぞれの矢印は信号やデータの送信を示す。
図14の矢印A1、A2は、ぞれぞれ図15の矢印A1、A2に繋がる。
2つの図を並べて見ると、稼動側コントローラと、待機側コントローラのタイミングを視覚的に理解できる。
メモリ311aを上記のように構成することにより、図14、図15に示すように、稼動側コントローラ上のCPUa0において演算ルーチンp0−1から演算ルーチンp0−xの複数の演算を可能とし、同様にCPUa1からCPUanにおいて演算ルーチンp1−1から演算ルーチンpn−zの複数の演算を実行できる。
本実施の形態に係る待機冗長二重化装置によれば、メモリ311aの構成として、演算ルーチンを実行するCPU番号の属性データを設けることで、マルチCPU環境において、演算ルーチンに対して予め各CPUを振り分けて演算をさせることができる。
実施の形態4.
以下、本発明の実施の形態4を図を用いて実施の形態3と異なる部分を中心に説明する。
図16は、稼動側コントローラのメモリ411a内に記録するデータの構成の一部分を示す図である。
各演算ルーチンに対して、属性データとして実行CPU番号、起動周期設定、起動オフセット設定、実行カウント及び送信カウントの設定項目を設けている。
起動周期設定項目を用いることで、周期Tの倍数の周期で実行する演算ルーチンの実現を可能とする。
また、周期Tの倍数の周期で実行する演算ルーチンに対して、起動オフセット設定をすることができる。
起動オフセット設定は、演算ルーチンを実行するタイミングを周期Tを1として小数で設定する。
例えば、周期Tの4倍の周期で実行する演算ルーチンに対して、起動オフセットを0.25とすると、周期Tの4倍周期かつ、タイマに対して1/4周期分遅れて当該演算ルーチンを実行する。
本実施の形態では、上述のように周期Tの倍数の周期で動作する演算ルーチンが存在する。演算ルーチンの中には、異なった周期で動作するものが混在することとなる。
一方、等値化データは周期Tで送信されるため、周期T単位では動作しない演算ルーチンのデータは送信する必要はない。
よって、これらの演算ルーチンのデータの再送信を避けるため、実行カウントと送信カウントをメモリ411a内に追加して利用する。
稼動側コントローラのCPUa0が行う等値化送信データの作成時において、送信カウントと実行カウントを比較し、二つのカウントの値が異なる場合は、その演算ルーチンの演算データは等値化データとして送信すべきデータと判断して送信バッファに送信する。
もし、送信カウントと実行カウントを比較して、これらが一致する場合は、既にデータの送信は行われていて、当該演算ルーチンの新たな実行が行われていないと判断し、送信バッファへの送信はしない。
なお、送信カウントは、送信バッファへの送信処理完了後に実行カウントの値に書き換えるものとする。
本実施の形態に係る待機冗長二重化装置によれば、メモリ411a内に起動周期設定と起動オフセット設定を設けることで、周期Tの倍数の周期で、更に必要に応じて、演算ルーチン毎に起動オフセットを設定して演算を実行できる。
また、送信カウントを設け、実行カウントと比較することで、不要な等値化データの送信が削減され、等値化データの送受信時間を短くすることができる。
実施の形態5.
以下、本発明の実施の形態5を図を用いて実施の形態4と異なる部分を中心に説明する。
図17は、稼動側コントローラのメモリ511a内に記録するデータの構成の一部分を示す図である。
各CPUが実行する演算ルーチンに対して、起動継続可否設定を追加する。
起動継続可否設定が可の場合、演算が設定周期Tで完了しなかった場合でも、演算処理を一時保留とし、データの入出力をおこない、次の周期で動作を再開して継続する仕組みを追加する。
起動継続可否設定の追加により、演算処理を保留した演算ルーチンは、途中でデータの入出力が行われるが、この入出力動作が支障をきたさない場合、一定周期T内で動作する演算ルーチンと一定周期T内で動作しない演算ルーチンの共存が可能となる。
本実施の形態に係る待機冗長二重化装置によれば、処理時間が大きく異なる処理ルーチンが一部に存在する場合でも、全体の処理に影響を及ぼさない待機冗長二重化装置を提供できる。
実施の形態6.
以下、本発明の実施の形態6を図を用いて実施の形態1と異なる部分を中心に説明する。
図18は、待機冗長二重化装置600(以下、装置600と称す)の構成を示す図である。
稼動側コントローラ610aのCPUボード601aには、2つの等値化バスコントローラ12a1、12a2を備えている。
また、待機側コントローラ610bのCPUボード601bには、2つの等値化バスコントローラ12b1、12b2を備えている。
そして、等値化バスコントローラ12a1と等値化バスコントローラ12b1を等値化データバス20で接続し、等値化バスコントローラ12a2と等値化バスコントローラ12b2を等値化データバス21で接続している。
等値化バスコントローラのセットと、等値化データバス20、21をそれぞれ二重化した構成として装置600の信頼性を高めている。
次に、装置600における、二重化された等値化データバスを使用する送信データの授受方法を説明する。
図19は、稼動側コントローラ610aから待機側コントローラ610bに送信される等値化送信データの構成の一部を示す図である。
送信データには、各演算ルーチンに対する実行カウントpc0から実行カウントpcnを連番として有している。
稼動側コントローラのCPUa0は、図5のステップST1090での等値化データの送信開始にあたって、図19に示した送信データを、等値化バスコントローラ12a1と等値化バスコントローラ12a2の2つのコントローラに対して送信する。
待機側コントローラの各CPUは、図7のステップST2035または、図8のステップST2115における等値化受信データの展開時において、等値化バスコントローラ12a1より等値化バスコントローラ12b2が受信した等値化受信データの実行カウントと、等値化バスコントローラ12a2より等値化バスコントローラ12b2が受信した等値化受信データの実行カウントを比較し、カウントが進んでいる方の演算データをメモリ11bに展開することとする。
本発明の実施の形態6に係る待機冗長二重化装置600によれば、等値化バスコントローラと、等値化データバスを二重化し、送受信するデータにカウントを付けることにより、いずれかのルートに故障が発生しても、もう一方の系統を使用してデータの等値化を図ることができる。
実施の形態7.
以下、本発明の実施の形態7を図を用いて実施の形態1と異なる部分を中心に説明する。
図20は、待機冗長二重化装置700(以下、装置700と称す)の構成を示す図である。
CPUボード701a上のCPUa0からCPUanに対して、それぞれ個別にメモリa0からメモリanを追加する。
同様にCPUボード701b上のCPUb0からCPUbnに対して、それぞれ個別にメモリb0からメモリbnを追加する。
図21は、このときの各CPUが共通に使用するメモリ711a及びメモリ711b内のデータ構成を示す図である。
メモリ711aには、CPUa0からCPUanが共通に使用するデータを配置する。
同様に、メモリ711bには、CPUb0からCPUbnが共通に使用するデータを配置する。
図22は、CPU単位で個別に追加するメモリa0からメモリan、メモリb0からメモリbnの構成を示す図である。
CPUa0からCPUan、CPUb0からCPUbnがそれぞれ個別に使用するデータをのみを配置する。
本発明の実施の形態7に係る待機冗長二重化装置700によれば、メモリ711aまたはメモリ711bは共通的に使用するデータのみの構成となり、メモリ711a、メモリ711bへのアクセス頻度を抑制できる。
これにより、他のCPUからのアクセスの集中により、演算が停止する頻度が減少するので、装置700の演算性能を向上することができる。
実施の形態8.
以下、本発明の実施の形態8を図を用いて実施の形態1と異なる部分を中心に説明する。
図23は、実施の形態8の等値化送信データの構成を示す図である。
送信データに各演算ルーチンの識別コードと版コードを追加する。
待機側コントローラの各CPUは、図7のステップST2035または図8のステップST2115にて、等値化データを展開するときに、受信した等値化データ内の各演算ルーチンの識別コードと版コードを、待機側コントローラ側でもつ各演算ルーチンの識別コードと版コードと比較する。
これらのコードが不一致の場合は、データの展開処理を実施せず、異常をコントローラの使用者に通知する。
本発明の実施の形態8に係る待機冗長二重化装置によれば、稼動側コントローラと待機側コントローラの間で、万一演算ルーチンが異なる状態となっても、誤ったデータで装置全体が等値化することを防止することができ、待機冗長二重化装置の信頼性を向上できる。
尚、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。

Claims (9)

  1. 2つのコントローラで構成し、一の前記コントローラが稼動側コントローラとして動作する時は、他方のコントローラは待機側コントローラとして動作する待機冗長二重化装置において、
    各前記コントローラは、それぞれ内部に複数のCPUと、
    メモリと、
    I/Oボードと、
    複数の前記CPUと、前記メモリと、前記I/Oボードとの間でデータを送受信するI/Oバスコントローラと、
    前記稼動側コントローラから等値化データバスを介して前記待機側コントローラに、前記稼動側コントローラと前記待機側コントローラの装置状態を等値化するために使用する等値化データを送信する、前記I/Oバスコントローラから独立した等値化バスコントローラとを備え、
    前記等値化データは、各演算ルーチンの識別コードと版コードを有し、
    前記待機側コントローラの各前記CPUは、前記識別コードと前記版コードを確認して各前記CPUに割り当てられた演算を実行する待機冗長二重化装置。
  2. 各前記コントローラは、
    タイマと、
    前記タイマに連動して一定周期で前記CPUに処理の開始を通知をする起動制御部とを有し、
    前記稼動側コントローラの前記起動制御部から通知を受けた、前記稼動側コントローラの一の前記CPUは、前記稼動側コントローラの各前記CPUが演算に使用するデータを、前記I/Oボードから取得して前記メモリに、前記I/Oバスコントローラを介して入力した後、
    前記稼動側コントローラの各前記CPUに割り当てられた演算の実行を指示し、
    全ての前記CPUの演算が終了した後、全ての前記CPUの演算結果を纏めて、前記待機側コントローラに送信すべき前記等値化データを構成する請求項1に記載の待機冗長二重化装置。
  3. 前記メモリ内には、
    前記I/Oボードから入力されたデータを纏めて記録する入力データと、
    いずれかの前記CPUによって実行される演算ルーチンを記録する演算ルーチンと、
    個別の前記演算ルーチンで使用する、前記入力データと、前記入力データを利用して前記演算ルーチンを実行して得た演算結果と、過去の前記演算結果とを記録する演算データと、
    前記I/Oボードに出力するデータを纏めて保存する出力データと、
    前記コントローラが前記稼動側コントローラとして動作する時に、前記待機側コントローラに送信する前記等値化データを纏めて記録する等値化データ送信バッファと、
    前記コントローラが前記待機側コントローラとして動作する時に、前記稼動側コントローラからの前記等値化データを交互に受信する2つの等値化データ受信バッファとを有する請求項2に記載の待機冗長二重化装置。
  4. 前記メモリは、各前記演算ルーチンの属性データを有し、
    前記演算ルーチンの前記属性データには、
    各前記演算ルーチンを実行するCPU番号を特定するCPU情報と、
    各前記演算ルーチンを前記タイマの周期の倍数の周期で起動させる起動周期情報と、
    各前記演算ルーチンを前記タイマの周期の倍数に対して所定のオフセットを持たせて起動させるオフセット情報と、
    各前記演算ルーチンを実行した回数を示す実行回数情報と、
    前記等値化データを前記待機側コントローラに送信した回数を示す送信回数情報と、
    各前記演算ルーチンが前記タイマの周期内に終了しなかった場合における次回の処理方法を示す継続処理可否情報、の中の少なくとも一つの情報を有する請求項に記載の待機冗長二重化装置。
  5. 前記稼動側コントローラの前記メモリに記録した前記属性データには、前記実行回数情報と、前記送信回数情報を有し、前記実行回数情報と、前記送信回数情報の内容を比較して、前記等値化データのデータ構成を決定する請求項に記載の待機冗長二重化装置。
  6. 前記等値化データは、前記送信回数情報を有し、
    前記待機側コントローラは、2つの前記等値化データ受信バッファの中の前記等値化データの内、前記送信回数情報の進んでいる方の前記等値化データを使用して各前記CPUに割り当てられた演算を実行する請求項に記載の待機冗長二重化装置。
  7. 前記メモリは、
    各前記CPUがそれぞれ固有に扱うデータを記録するCPU用メモリと、
    複数の前記CPUが、共通して使用するデータを記録する共通メモリとからなる、
    請求項に記載の待機冗長二重化装置。
  8. 前記等値化バスコントローラと前記等値化データバスを冗長化構成とした請求項1に記載の待機冗長二重化装置。
  9. 前記一のCPUは、割込制御、又は前記メモリに設けたフラグの状態を識別して各前記CPUに、各前記CPUに割り当てられた演算の開始を通知する請求項2から請求項のいずれか1項に記載の待機冗長二重化装置。
JP2014514305A 2012-05-10 2012-05-10 待機冗長二重化装置 Active JP5908068B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/062003 WO2013168258A1 (ja) 2012-05-10 2012-05-10 待機冗長二重化装置

Publications (2)

Publication Number Publication Date
JPWO2013168258A1 JPWO2013168258A1 (ja) 2015-12-24
JP5908068B2 true JP5908068B2 (ja) 2016-04-26

Family

ID=49550342

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014514305A Active JP5908068B2 (ja) 2012-05-10 2012-05-10 待機冗長二重化装置

Country Status (3)

Country Link
EP (1) EP2849005B1 (ja)
JP (1) JP5908068B2 (ja)
WO (1) WO2013168258A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6354535B2 (ja) * 2014-11-17 2018-07-11 富士電機株式会社 冗長化制御システムおよびその制御装置
JP7023726B2 (ja) * 2018-01-25 2022-02-22 株式会社日立ハイテクソリューションズ 二重化制御システム
JP7047728B2 (ja) * 2018-11-29 2022-04-05 オムロン株式会社 コントローラ、およびコントローラの制御方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4608631A (en) * 1982-09-03 1986-08-26 Sequoia Systems, Inc. Modular computer system
JPH02156363A (ja) * 1988-12-08 1990-06-15 Fuji Electric Co Ltd 共通メモリの状態変化検出方法
JP3206006B2 (ja) * 1991-01-25 2001-09-04 株式会社日立製作所 二重化バス制御方法及び装置
JP3139884B2 (ja) * 1993-06-14 2001-03-05 株式会社東芝 多重要素処理システム
JP3360385B2 (ja) * 1993-12-28 2002-12-24 株式会社日立製作所 プラント制御装置
GB2290891B (en) * 1994-06-29 1999-02-17 Mitsubishi Electric Corp Multiprocessor system
JPH0944203A (ja) * 1995-07-26 1997-02-14 Hitachi Ltd 冗長化制御システム
JP2000305919A (ja) * 1999-04-23 2000-11-02 Hitachi Ltd マルチプロセッサシステムとその同期方法、振動試験装置
JP4154853B2 (ja) 2000-11-13 2008-09-24 富士電機機器制御株式会社 制御データを等値化する冗長化プログラマブルコントローラ及び等値化方法。
US7093158B2 (en) * 2002-03-11 2006-08-15 Hewlett-Packard Development Company, L.P. Data redundancy in a hot pluggable, large symmetric multi-processor system
JP4161276B2 (ja) * 2004-12-17 2008-10-08 日本電気株式会社 フォルトトレラントコンピュータ装置およびその同期化方法
JP2006031727A (ja) * 2005-08-17 2006-02-02 Hitachi Ltd フェールセーフコントローラ
GB2477237B (en) * 2006-01-13 2011-09-07 Emerson Process Management A method for redundant controller synchronization for bump-less failover during normal and mismatch conditions
JP4791909B2 (ja) * 2006-08-21 2011-10-12 株式会社東芝 高速入出力機能を備える制御装置、及びその制御データの制御方法
JP2009187314A (ja) * 2008-02-06 2009-08-20 Fuji Electric Systems Co Ltd 二重化コントローラ・システム、cpuモジュール、そのプログラム
JP5239525B2 (ja) * 2008-06-06 2013-07-17 横河電機株式会社 多重化入出力モジュール
JP4981951B2 (ja) * 2010-06-02 2012-07-25 株式会社トライテック 分散コンピューティングシステム

Also Published As

Publication number Publication date
JPWO2013168258A1 (ja) 2015-12-24
WO2013168258A1 (ja) 2013-11-14
EP2849005B1 (en) 2019-08-07
EP2849005A1 (en) 2015-03-18
EP2849005A4 (en) 2016-07-06

Similar Documents

Publication Publication Date Title
JP6600518B2 (ja) バスシステム
US20120304024A1 (en) Data processing method, data processor and apparatus including a data processor
WO2015056695A1 (ja) 制御装置および制御方法
WO2006114822A1 (ja) Dmaコントローラ、ノード、データ転送制御方法、及びプログラム
CN1971548A (zh) 用于对固定等待时间互连进行锁步处理的方法和装置
JP4454538B2 (ja) 多重系電子計算機
JP5908068B2 (ja) 待機冗長二重化装置
JP3988146B2 (ja) マルチノードシステム、ノード間クロスバスイッチ、ノード、スイッチプログラム及びノードプログラム
US8181064B2 (en) Information processing apparatus for inhibiting instructions, saving and restoring internal information in response to abnormality in redundant processor system
JP2009037273A (ja) マルチプロセッサシステム
JP4131263B2 (ja) マルチノードシステム、ノード装置、ノード間クロスバスイッチ及び障害処理方法
JP4572138B2 (ja) サーバ装置、サーバシステム、及びサーバシステムでの系切り換え方法
EP3428799B1 (en) Data access device and access error notification method
JP5115075B2 (ja) 転送装置、転送装置を有する情報処理装置及び制御方法
JP5145860B2 (ja) メモリ二重化システム及び情報処理装置
US9959173B2 (en) Node, arithmetic processing device, and arithmetic processing method
EP3327521B1 (en) Duplexing process control device
JP2000132210A (ja) 制御装置及び協調制御方法
JP2016207142A (ja) 計算機及びメモリ故障診断方法
JP5076348B2 (ja) 共有メモリのアクセス方式
JP6535516B2 (ja) マルチ・プログラマブルデバイス・システムとその制御方法
JP4421812B2 (ja) 診断機能を有するコンピュータシステム
JP2009276983A (ja) 多重化計算機システム、及びその処理方法
JP4096849B2 (ja) 回線多重化構造を用いた入出力制御システム
JPS61267157A (ja) 入出力制御装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151113

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: 20160223

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160322

R150 Certificate of patent or registration of utility model

Ref document number: 5908068

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250