JP2008234014A - 2重化コントローラシステム、その稼動系/待機系コントローラ - Google Patents

2重化コントローラシステム、その稼動系/待機系コントローラ Download PDF

Info

Publication number
JP2008234014A
JP2008234014A JP2007069053A JP2007069053A JP2008234014A JP 2008234014 A JP2008234014 A JP 2008234014A JP 2007069053 A JP2007069053 A JP 2007069053A JP 2007069053 A JP2007069053 A JP 2007069053A JP 2008234014 A JP2008234014 A JP 2008234014A
Authority
JP
Japan
Prior art keywords
serial number
standby
storage means
stored
variable
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.)
Granted
Application number
JP2007069053A
Other languages
English (en)
Other versions
JP5034584B2 (ja
Inventor
Toshiyuki Nishiwaki
敏之 西脇
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.)
Fuji Electric FA Components and Systems Co Ltd
Original Assignee
Fuji Electric FA Components and Systems Co Ltd
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 Fuji Electric FA Components and Systems Co Ltd filed Critical Fuji Electric FA Components and Systems Co Ltd
Priority to JP2007069053A priority Critical patent/JP5034584B2/ja
Publication of JP2008234014A publication Critical patent/JP2008234014A/ja
Application granted granted Critical
Publication of JP5034584B2 publication Critical patent/JP5034584B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Hardware Redundancy (AREA)
  • Safety Devices In Control Systems (AREA)
  • Programmable Controllers (AREA)

Abstract

【課題】稼動系/待機系が切換った場合に等値化データが最新であることを保証できるようにする。
【解決手段】稼動系のCPUモジュール1、待機系のCPUモジュール2は、それぞれ、シリアル番号を記憶するシリアルNO.保持メモリ16,26を備える。稼動系のマイクロプロセッサ15は、各定周期プログラム実行毎に等値化処理を行うが、その際、シリアルNO.保持メモリ16のシリアル番号を更新したうえで、これをグローバル変数等の等値化データと共に待機側の受信バッファ用RAM24に格納させる。待機側のマイクロプロセッサ25は「受信したシリアル番号>シリアルNO.保持メモリ26のシリアル番号」ではない場合には、少なくとも受信したグローバル変数は、ユーザデータ領域22aに格納しない(破棄する)。
【選択図】図1

Description

本発明は、複数の定周期プログラムエンドでの等値化が可能な2重化コントローラ(プログラマブルコントローラ)における、ユーザデータ等値化方式に関する。
プログラマブルコントローラ・システムでは、信頼性を向上させるために、CPUモジュール(プログラマブルコントローラ本体)を待機冗長の2重化構成にする場合がある。この様な2重化コントローラシステムは、例えば、2つのCPUモジュールを1組とし、一方を稼動系、他方を待機系とし、稼動系CPUモジュールを待機系CPUモジュールが監視して、稼動系CPUモジュールに障害等の切替え要因が生じたならば待機系CPUモジュールが稼動系に切り替る構成である。
図5、図6に、上記従来の2重化コントローラシステムの構成例を示す。
尚、この様な2重化コントローラシステムに関しては、例えば特許文献1,2等に開示されている。
図5に、上記2重化コントローラシステム全体の概略構成を示す。
図示の2重化コントローラシステムは、CPUモジュール101−1、CPUモジュール101−2、及び各制御対象機器とのデータ入出力を行う複数のI/Oユニット102より成るI/O群から構成されている。尚、ここでは、CPUモジュール101−1が稼動系、CPUモジュール101−2がその待機系となっている場合を例にして説明する。
稼動系となっているCPUモジュール101−1は、その内部に格納されたプログラム(通常、定周期に実行されるプログラム;定周期プログラム)を実行することで、各I/Oユニット102に対して制御データを出力して(又は各I/Oユニットからセンサ計測値等を読み出して)、各制御対象機器を制御する。
一方、待機系となっているCPUモジュール101−2は、稼動系のCPUモジュール101−1を監視しており、稼動系CPUモジュール101−1に故障等の何らかの切替え要因が生じると、稼動/待機切り替え処理を実行して、CPUモジュール101−2が稼動系となって、CPUモジュール101−1が行っていた処理を引き継ぐ。
CPUモジュール101−1、CPUモジュール101−2及び各I/Oユニット102は、システムバス103によって接続されており、稼動系CPUモジュール101−1はシステムバス103を介して各I/Oユニット102に対して出力データ(制御データ)を送信し、また各I/Oユニット102からは、当該ユニット102に接続されている不図示の制御対象機器からの計測値等のデータを受信している。
また2重化されているCPUモジュール101−1とCPUモジュール101−2との間には等値化バス104を備え、稼動系/待機系の切替えが生じたときに制御データ等のユーザデータの整合性を持たせる為、この等値化バス104を介して稼動系CPUモジュール101−1から待機系CPUモジュール101−2にユーザデータ(グローバル変数、ローカル変数等)を送信して等値化処理を行っている。
図6に、図5に示す2重化コントローラシステムにおけるCPUモジュール101−1、CPUモジュール101−2の詳細な構成例を示す。
CPUモジュール101−1、101−2は、プログラマブルコントローラ本体である
が、ここでは等値化処理に係わる構成のみを示し、他の構成は省略して示す。
図6において、CPUモジュール101−1は、プログラムRAM111、データRAM112、等値化バス制御部113、受信バッファ用RAM114、及びマイクロプロセッサ115等を有する。
プログラムRAM111には、ユーザプログラム111aが格納される。ユーザプログラム111aとは、例えば上記定周期プログラムである。更に、等値化処理を実現させる為のアプリケーションプログラムも格納されている。
データRAM112は、ユーザデータ領域112a、等値化データ転送情報112bを、格納する。
ユーザデータ領域112aには、特許文献2等で説明されているように、各定周期プログラム毎に対応する各ローカル変数と、グローバル変数とが混在して格納されている。
等値化データ転送情報112bは、各ローカル変数とグローバル変数のユーザデータ領域112aにおける格納位置を示す情報(特許文献2におけるマッピング情報)である。
等値化バス制御部113は、主に等値化バス104を介して等値化を行う為のデータ転送処理専用の構成であり、マイクロプロセッサ115から等値化すべきデータ(ローカル変数、グローバル変数等)を渡されると、待機側の等値化バス制御部123と連動して、この等値化データを待機側の受信バッファ用RAM124に格納させる機能を有する。尚、等値化バス制御部113は、例えば特許文献2で説明されている“SGM(Sameness data Gather Memory control)”に相当する。
マイクロプロセッサ115は、CPUモジュール101−1全体を制御する中央処理装置(CPUチップ等)であり、例えば、各定周期プログラムを実行する毎に等値化処理を実行する。等値化処理は、稼動側の等値化処理と待機側の等値化処理から成り、ここでは稼動側の等値化処理の一部を実行する。すなわち、等値化データ(実行した定周期プログラムに対応するローカル変数とグローバル変数)を、ユーザデータ領域112aから収集して、これをプログラム番号等と共に等値化バス制御部113に渡す。等値化バス制御部113は、上記の通り、この等値化データをCPUモジュール101−2側に転送して格納させる。
また、待機系のCPUモジュール101−2は、プログラムRAM121、データRAM122、等値化バス制御部123、受信バッファ用RAM124、及びマイクロプロセッサ125等を有する。この構成自体は、稼動系のCPUモジュール101−1と同じである。そして、上記待機側の等値化処理を行う。すなわち、上記の様に受信バッファ用RAM124に等値化データが格納された後は、マイクロプロセッサ125が等値化データ転送情報(マッピング情報)に従って、受信バッファ用RAM124に格納された等値化データをデータRAM122のユーザデータ領域122aへ分配・格納する。
図7に、従来の等値化処理に伴う等値化データの転送、格納の様子を示す。換言すれば、上記等値化バス104を介して転送する等値化データのデータ構成、受信バッファ用RAM124のデータ格納例、及びユーザデータ領域122aのデータ格納例を示す。
まず、図上左側に示す等値化データフレームは、ヘッダ部とデータ部とから成る。等値化データは、各定周期プログラム実行完了毎に送信され、ヘッダ部には実行された定周期プログラムの番号等が格納され、データ部には、実行された定周期プログラムに係わるローカル変数とグローバル変数が格納される。
受信バッファ用RAM124には、図示の通り、各定周期プログラム毎に等値化データの格納領域が設けられており、等値化バス制御部123は、上記実行された定周期プログラム番号に基づいて、上記データ部のデータを該当する格納領域に格納する。
ユーザデータ領域122aには、上記ユーザデータ領域112aと同様、グローバル変数と各ローカル変数が格納され、ユーザデータ領域112aと同じデータが格納されているようにする為に等値化処理が行われる。
ここで、上記の通りマイクロプロセッサ125が、受信バッファ用RAM124に格納された等値化データを、ユーザデータ領域122aの該当領域に格納するが、その際ユーザデータ領域122aにおいて、各ローカル変数は該当する定周期プログラムが実行されたときのみ更新されるのに対して、グローバル変数は全ての定周期プログラムで共有されるのでその都度更新(上書き)されることになる。この為、以下に図8、図9を参照して説明する問題が生じる場合がある。
図8、図9には、定周期プログラムが実行される場合のスケジュール例を示す。定周期プログラムは複数あるが、ここでは簡単の為、定周期プログラムA,Bの2つのみであるものとする。
図8に示す例では、定周期プログラムBの演算中に定周期プログラムAの起動要求が発生し、定周期プログラムBが中断され定周期プログラムAが実行される。そして、定周期プログラムAのプログラムエンドにて等値化データ収集・転送(上記稼動側の等値化処理)が実行・完了され、更に待機系は転送された等値化データの分配処理(上記待機側の等値化処理)を実行・完了している。その後、定周期プログラムBのプログラムエンドにて等値化データ収集・転送が実行・完了され、更に待機系は転送された等値化データの分配を実行・完了する。
尚、上記等値化データ収集・転送の実行・完了により等値化データが待機側の受信バッファ用RAM124に格納された状態になり、この受信バッファ用RAM124に格納された等値化データが、上記分配処理により、データRAM122のユーザデータ領域122aに格納されることになる。その際、図7に示す通り、グローバル変数、ローカル変数は、各々、ユーザデータ領域122a内の所定の記憶領域に格納されることになる。
図8に示す例のように演算中に中断された場合には問題はないが、図9に示す例のように等値化処理中に中断された場合には問題が生じる場合がある。これは、特に、等値化データ収集後であって上記分配処理実行前に中断された場合に問題が生じる。
図9に、図8と比べて、定周期プログラム実行要求のタイミングが異なる場合に定周期プログラムA,Bが実行される場合のスケシュール例を示す。
この例では、定周期プログラムBのエンドにて等値化処理中に(上記の通り等値化データ収集後であって上記分配処理実行前に)定周期プログラムAの起動要求が発生し割込み、定周期プログラムBが中断され定周期プログラムAが実行される。そして、定周期プログラムAのエンドにて等値化データ収集・転送が実行・完了し、更に待機系は転送された等値化データの分配を実行・完了している。その後、中断していた定周期プログラムBの等値化処理を再開してこれが実行・完了され、更に待機系は転送された等値化データの分配を実行・完了する。
ここで、例えば、グローバル変数が、全ての定周期プログラムのトータルの実行回数を意味するものであったとする。そして、仮に、図8又は図9の処理実行前に全定周期プログラム合わせて1233回実行されていたものとする。この場合、当然、グローバル変数
=1233が記憶されていることになる。この場合、図8又は図9の処理によって定周期プログラムが2回実行されるのであるから、当然、図8又は図9の処理終了時点ではグローバル変数=1235になっており、待機系のユーザデータ領域122aに格納されているグローバル変数の値も1235になっていなければならない。
例えば、演算処理の最後にグローバル変数の更新が行われるとした場合、図8の例では、まず、定周期プログラムBの演算実行されるが、グローバル変数の更新前に中断され、定周期プログラムAの演算実行の際に、グローバル変数=1233が読み出されて+1インクリメントされることで、グローバル変数=1234に変更される。
そして、等値化処理によって、待機系のユーザデータ領域122aに格納されているグローバル変数の値も1234になる。その後に中断していた定周期プログラムBの演算実行によりグローバル変数=1235に変更され、等値化処理によって、待機系のユーザデータ領域122aに格納されているグローバル変数の値も1235になる。従って、この場合には問題は生じない。
尚、これは、例えば演算処理の最初にグローバル変数の更新が行われるとした場合でも、同様に問題は生じない。すなわち、この場合には、まず、定周期プログラムBの演算実行によりグローバル変数=1234に変更され、その後に演算中断により等値化処理が行われることなく定周期プログラムAの演算実行によりグローバル変数=1235に変更されて、等値化処理により待機系のユーザデータ領域122aに格納されているグローバル変数の値も1235になる。その後、定周期プログラムBの処理が再開されて等値化処理を実行する際には、所定の記憶領域に記憶されているグローバル変数の値を読み出して待機系側に転送することになるが、グローバル変数=1235となっているので、結局、等値化処理により待機系のユーザデータ領域122aに格納されているグローバル変数が更新されても、その値は1235のままとなる。
一方、図9に示すタイミングの処理が行われた場合、まず、定周期プログラムBの演算実行によりグローバル変数=1234に変更され、更に等値化処理実行により等値化データを収集して(ローカル変数、グローバル変数の値等をユーザデータ領域112a内の所定の記憶領域から読み出して)待機系側に転送することになるが、この等値化データを読み出して一時的に保持した後であって上記分配処理実行前(例えば等値化データを待機系側に転送する前、あるいは転送完了しているが分配処理は未だ実行されていないとき等)中断された場合に、問題が生じることになる。すなわち、この場合、定周期プログラムBがグローバル変数の値‘1234’を既に収集した状態で定周期プログラムAの処理に移行し、定周期プログラムAの演算及び等値化処理によって、待機系のユーザデータ領域122aに格納されているグローバル変数の値が‘1235’に更新される。その後、定周期プログラムBが再開されると、上記グローバル変数の値‘1234’を待機系側に転送する為、ユーザデータ領域122aに格納されているグローバル変数の値が1234に更新されてしまうという問題が生じる(古いデータが格納されてしまう)。
よって、この後に稼動系/待機系が切換った場合に、ユーザプログラムは最新ではないユーザデータにより演算することになりコントローラシステム動作に影響を与えてしまうという問題点がある。
尚、上記説明では、分かり易くする為に、グローバル変数がトータルの実行回数を意味するものとして説明した為、待機側でグローバル変数の値を比較すれば、‘1234’ <‘1235’であるので、‘1235’の方が新しい値であることが分かるが、グローバル変数がこの様な意味であるとは限らないので、グローバル変数の値を比較しても、必ずしも新旧の判断が出来るものではない。
特開2003−296133号公報 特開2005−92520号公報
上記従来の構成、すなわち稼動系CPUモジュールが複数の定周期プログラムを実行し、各定周期プログラムエンドにて等値化を行い、ユーザデータ等値化の実行中に上位レベル定周期プログラムの割込みが発生する可能性がある構成において、稼動系/待機系が切換った場合に各定周期プログラムエンドでの等値化データが最新であることを保証する必要がある。
本発明の課題は、稼動、待機のCPUモジュールより成り複数の定周期プログラムを実行する2重化コントローラシステムにおいて、定周期プログラムのデータ等値化処理の際に、等値化データのうち特にグローバル変数に関して、旧い値が待機側に格納されてしまうことを防止し、稼動系/待機系が切換った場合に等値化データが最新であることを保証できる2重化コントローラシステムを提供することである。
本発明の2重化コントローラシステムは、複数の定周期プログラムを実行する稼動系のコントローラと、待機系のコントローラを有する2重化コントローラシステムであって、前記稼動系のコントローラは、前記各定周期プログラムに対応する各ローカル変数と、全ての定周期プログラムが共有するグローバル変数を記憶する第1の変数記憶手段と、シリアル番号を記憶する第1のシリアル番号記憶手段と、前記各定周期プログラムの演算実行完了する毎に、前記第1のシリアル番号記憶手段に記憶されているシリアル番号を取得して、該シリアル番号を更新し、該更新したシリアル番号を前記第1のシリアル番号記憶手段に記憶すると共に等値化データフレームにセットし、該実行した定周期プログラムに対応する前記ローカル変数と前記グローバル変数を前記第1の変数記憶手段から収集して前記等値化データフレームに格納して、該等値化データフレームを前記待機系のコントローラに転送する稼動側等値化処理手段とを有し、前記待機系のコントローラは、前記各定周期プログラムに対応する各ローカル変数と、全ての定周期プログラムが共有するグローバル変数を記憶する第2の変数記憶手段と、シリアル番号を記憶する第2のシリアル番号記憶手段と、前記転送された等値化データフレーム内の前記シリアル番号と、前記第2のシリアル番号記憶手段に記憶されたシリアル番号とを比較することで、正常/異常を判定し、正常と判定された場合には、該等値化データフレーム内のシリアル番号を前記第2のシリアル番号記憶手段に記憶すると共に、該等値化データフレームに格納されている前記ローカル変数とグローバル変数を、前記第2の変数記憶手段に記憶する待機側等値化処理手段とを有する。
そして、例えば、前記待機側等値化処理手段は、異常と判定した場合には、前記第2のシリアル番号記憶手段に記憶しているシリアル番号の更新は行わず、少なくとも等値化データフレームに格納されている前記グローバル変数は、前記第2の変数記憶手段に記憶しないようにする。
前記稼動系のコントローラ側では、上記演算実行により上記第1の変数記憶手段のローカル変数、グローバル変数が更新され、その後の等値化処理においてこれらローカル変数、グローバル変数を収集するが、その際に、シリアル番号を更新して、該更新したシリアル番号を等値化データフレームにセットする。そして、該等値化データフレームを前記待機系のコントローラに転送するが、例えばその前に、割り込みにより中断されて他の定周期プログラムが実行された場合、その演算実行により上記第1の変数記憶手段のローカル変数、グローバル変数が更に更新され、その等値化処理が行われるが、シリアル番号も更
に更新されたうえで待機側に通知されて第2のシリアル番号記憶手段に記憶される。従ってその後に上記中断された等値化処理が再開されて上記等値化データフレームが待機側に転送されると、待機側ではシリアル番号によって異常である(グローバル変数が古い)か否かを判定できるので、異常である場合には前記第2の変数記憶手段のグローバル変数は更新しない。これによって上記課題を解決できる。
また、例えば、前記第1のシリアル番号記憶手段に記憶されているシリアル番号を更新する処理は、該シリアル番号をインクリメントする処理であり、前記待機側等値化処理手段は、前記等値化データフレーム内のシリアル番号が、前記第2のシリアル番号記憶手段に記憶されたシリアル番号よりも大きい場合に、正常と判定する。
本発明の2重化コントローラシステムによれば、稼動、待機のCPUモジュールより成り複数の定周期プログラムを実行する2重化コントローラシステムにおいて、定周期プログラムのデータ等値化処理の際に、等値化データのうち特にグローバル変数に関して、古い値が待機側に格納されてしまうことを防止し、稼動系/待機系が切換った場合に等値化データが最新であることを保証できる。
以下、図面を参照して、本発明の実施の形態について説明する。
図1に、本例の2重化コントローラシステムにおけるCPUモジュール1、CPUモジュール2の構成例を示す。尚、本例の2重化コントローラシステム全体構成は、上記図5に示すものと同様であってよい。
CPUモジュール1、2は、プログラマブルコントローラ本体であるが、ここでは等値化処理に係わる構成のみを示し、他の構成は省略して示す。また、ここでは、CPUモジュール1が稼動系、CPUモジュール2が待機系であるものとする。
図1において、CPUモジュール1は、プログラムRAM11、データRAM12、等値化バス制御部13、受信バッファ用RAM14、マイクロプロセッサ15、及びシリアルNO.保持メモリ16等を有する。
プログラムRAM11には、ユーザプログラム11aが格納される。ユーザプログラム11aとは、例えば上記各定周期プログラムである。尚、本例のシステムにおいては、プログラムRAM11には、更に、後述する図3(a)に示す処理等を含む稼動側等値化処理をマイクロプロセッサ15によって実現させるアプリケーションプログラムも格納されている。
データRAM12は、ユーザデータ領域12aを有し、等値化データ転送情報12bを記憶している。
ユーザデータ領域12aには、上記特許文献2等で説明されているように、各定周期プログラム毎に対応する各ローカル変数と、全ての定周期プログラムに共通のグローバル変数とが混在で格納されている。
等値化データ転送情報12bは、上記特許文献2におけるマッピング情報に相当するものであり、上記各ローカル変数とグローバル変数のユーザデータ領域12aにおける格納位置を示す情報である。
等値化バス制御部13は、主に等値化バス3を介して等値化を行う為のデータ転送処理専用の構成であり、マイクロプロセッサ15から等値化すべきデータ等(後述する等値化
データフレーム)が渡されると、待機側の等値化バス制御部23と連動して、この等値化データを待機側の受信バッファ用RAM24に格納させる機能を有する。尚、等値化バス制御部13は、例えば上記“SGM(Sameness data Gather Memory control)”に相当する。
マイクロプロセッサ15は、CPUモジュール1全体を制御する中央処理装置(CPUチップ等)であり、上記プログラムRAM11に格納されているユーザプログラム11aや上記アプリケーションプログラムを用いて、基本的には上記特許文献2等のような従来より行われている演算処理や稼動側等値化処理を実行するが、更に稼動側等値化処理の際に図3(a)に示す処理を実行する。その際に、シリアルNO.保持メモリ16に記憶されているシリアルNO.を用いる。詳しくは後述する。
また、待機系のCPUモジュール2は、プログラムRAM21、データRAM22、等値化バス制御部23、受信バッファ用RAM24、マイクロプロセッサ25、及びシリアルNO.保持メモリ26等を有する。この構成自体は、稼動系のCPUモジュール1と同じであるので、特に説明しないが、マイクロプロセッサ25は、プログラムRAM21に格納されているアプリケーションプログラムを用いて、基本的には上記特許文献2等のような従来より行われている待機側等値化処理を実行するが、更に待機側等値化処理の際に図3(b)に示す処理を実行する。その際に、シリアルNO.保持メモリ26に記憶されているシリアルNO.を用いる。詳しくは後述する。
図2に、等値化処理に伴う等値化データの転送、格納の様子を示す。尚、図2において上記図7と略同様のものについては説明を省略する。図2が図7と異なる点は、等値化データフレームのヘッダ部に送信シリアルNO.も格納され、この送信シリアルNO.が等値化データと共に待機側の受信バッファ用RAM24に格納され、マイクロプロセッサ25がこの送信シリアルNO.等を参照してユーザデータ領域12aへの等値化データ格納処理を行う点である。
更に詳しくは、まず、図1に示す通り、CPUモジュール1内には、シリアルNO.保持メモリ16が新たに備えられる。また、図2に示す通り、等値化データフレームのヘッダ部内に送信シリアル番号フィールドを定義してある。また、受信バッファ用RAM24においても各定周期プログラム毎の等値化データ格納領域に送信シリアルNO.も格納されるように定義してある。
そして、まず、図3(a)に示すように、稼動系CPUモジュール1の等値化データ送信処理では、マイクロプロセッサ15は、シリアルNO.保持メモリ16に格納された送信シリアル番号を、ワーク変数であるTMP1に取得し(ステップS11)、TMP1の値を更新(例えばインクリメント(例えば+1等))して(ステップS12)等値化データフレームのヘッダ部内にセットすると共に(ステップS13)、更新したTMP1の値をシリアルNO.保持メモリ16に格納する(シリアルNO.保持メモリ16の送信シリアルNO.を更新する)(ステップS14)。尚、上記インクリメント処理は、上記+1に限らず、+2、+3等であってもよい。すなわち、所定値をプラスすればよい。あるいは、インクリメントに限らず、−1、−2、−3等のデクリメントであってもよい(但し、この場合には、後述するステップS23の処理は「TMP1<TMP2?」となる)。
また、図示しないが、等値化データフレームのヘッダ部には等値化実行定周期プログラム番号もセットされるし、等値化データ(実行した定周期プログラムに対応するローカル変数、及びグローバル変数等)を、等値化データ転送情報12b(マッピング情報)を参照してユーザデータ領域12aから取り出して、等値化データフレームのデータ部にセットする処理も行われる。そして、等値化データフレームを待機系のCPUモジュール側へ
転送する。尚、上記等値化実行定周期プログラム番号とは、この等値化処理に係わる定周期プログラムの定周期プログラム番号である。
この転送処理は、上記の通り等値化バス3を介して、等値化バス制御部13と等値化バス制御部23とが連動して、等値化データフレームを待機側の受信バッファ用RAM24に格納するものである。ここで、本例では、受信バッファ用RAM24には各定周期プログラム毎の格納領域が設けられており、この転送処理の際には、図2に示す通り、等値化データフレームの上記等値化実行定周期プログラム番号に基づいて、等値化データフレームを該当する格納領域に格納する(振り分ける)。例えば、定周期プログラムAに係わる等値化処理であれば、等値化実行定周期プログラム番号=Aとなっているので、この等値化データフレームは受信バッファ用RAM24内の定周期プログラムA用の格納領域に格納する。
一方、待機系CPUモジュール2では、上記の通り等値化データフレームを受信バッファ用RAM24に格納する処理が完了すると、マイクロプロセッサ25は、まず、受信バッファ用RAM24に格納された送信シリアルNO.を、ワーク変数であるTMP1に取得し(ステップS21)、更にシリアルNO.保持メモリ26に格納されているシリアルNO.を、ワーク変数であるTMP2に取得する(ステップS22)。
そして、TMP1の値とTMP2の値とを比較して、もしTMP1>TMP2である場合は(ステップS23,YES)、最新の等値化データであると判断し(つまり正常であると判定し)、TMP1の値をシリアルNO.保持メモリ26にセットすると共に(ステップS24)、等値化データ分配処理(受信バッファ用RAM24に格納された等値化データを、ユーザデータ領域22a内の該当領域へ格納する処理)を実行する(ステップS25)。この等値化データ分配処理自体は、上記特許文献2と同様に、等値化データ転送情報22b(マッピング情報)を参照して、ローカル変数、グローバル変数をそれぞれ、ユーザデータ領域22a内の該当領域へ格納する。
一方、TMP1>TMP2ではない場合は(ステップS23,NO)、最新でない等値化データであると判断し(つまり、異常と判定し)、上記シリアルNO.保持メモリ26の更新や等値化データ分配処理を実行せずに(但し、図には示していないが、分配処理を行わないのはグローバル変数のみであり、ローカル変数等は分配処理を行う)、本処理を終了する。
図4に、図9に示すスケジュール例で定周期プログラムが実行された場合のシリアルNO.とグローバル変数の更新状態を示す。
図9で説明した通り、稼動系CPUモジュール側では、まず、定周期プログラムBが実行されて演算処理によってグローバル変数=1234となり、演算処理完了後に等値化処理が起動され、まず、シリアルNO.保持メモリ16に格納されているシリアルNO.=“n”を読み出して、上記ステップS12〜S14の処理により“n+1”を等値化データフレームにセットすると共にシリアルNO.メモリ16に格納(上書き)する。また、従来と同様に等値化データ収集等も行って、等値化データフレームの転送処理を行う。そして、少なくともグローバル変数=1234を収集・保持した後であって上記待機側の等値化処理が実行される前に、割り込みにより上位レベルである定周期プログラムAが起動されたとする。
この場合、定周期プログラムAの演算処理によりグローバル変数=1235となり、演算処理完了後に等値化処理が起動され、まず、シリアルNO.保持メモリ16に格納されている“n+1”を読み出して、上記ステップS12〜S14の処理により“n+2”を等値化データフレームにセットすると共にシリアルNO.メモリ16に格納する。また、
従来と同様に等値化データ収集(グローバル変数=1235等を取得)を行い、収集データを等値化データフレームにセットして(保持して)待機側に転送し、更に待機側の等値化処理が実行・完了されることで、最新のグローバル変数の値(=1235)がユーザデータ領域22aにおけるグローバル変数格納領域に格納された状態となる。
すなわち、この場合の待機側の等値化処理、すなわち定周期プログラムAの等値化データの分配処理では、図3(b)の処理によって、RAM24に格納されたシリアルNO.=“n+2”とシリアルNO.保持メモリ26に格納されている“n”との比較チェックの結果、ステップS23の判定はYESとなるので、上記ステップS24、S25の処理が実行されることになる。つまり、ユーザデータ領域22aのグローバル変数の更新(当然、ローカル変数も更新)、シリアルNO.保持メモリ26のシリアルNO.の更新が行われる。従って、ユーザデータ領域22aのグローバル変数=1235、シリアルNO.保持メモリ26のシリアルNO.=“n+2”となる。
その後、定周期プログラムBの等値化処理が再開され、待機側の等値化処理を実行する際には、RAM24における定周期プログラムBの等値化データ格納領域には、送信シリアルNO.=“n+1”、グローバル変数=1234等が格納されていることになる。
従って、この場合の待機側の等値化処理(定周期プログラムBの等値化データの分配処理)では、RAM24に格納されたシリアルNO.=“n+1”とシリアルNO.保持メモリ26のシリアルNO.=“n+2”とが比較チェックされることになるので、ステップS23の判定はNOとなり、上記ステップS24、S25の処理は実行されない(但し、上記の通り、ユーザデータ領域22aのローカル変数は更新される)。従って、ユーザデータ領域22aのグローバル変数=1235、シリアルNO.保持メモリ26のシリアルNO.=“n+2”のままとなり、待機系CPUモジュール側に格納されるグローバル変数は、最新のデータとなるので(つまり、稼動と待機とで同じ値となる)、その後に稼動系/待機系が切換った場合にも問題は生じないことになる。尚、シリアルNO.保持メモリ16、26に格納されるシリアルNO.も両方とも“n+2”となる(稼動、待機で同じ値となる)。
このように、稼動系CPUモジュールから送信される各等値化フレーム内にシリアル番号を格納し、待機系CPUモジュールにてシリアル番号のチェックを行い、異常が無い場合のみ(最新の等値化データならば)グローバル変数の分配処理も行うことにより、稼動系/待機系が切換った場合に、最新のユーザデータによりプログラムが実行されることを保証できる。
以上説明したように、本例の2重化コントローラシステムによれば、複数の定周期プログラムを実行可能とし、各定周期プログラムエンドにて等値化をおこなう場合に、ユーザデータ等値化の実行中に上位レベル定周期プログラムの割込みが発生する場合においても、稼動系/待機系が切換った場合に、最新のユーザデータによりプログラムを実行することができる。
本例の2重化コントローラシステムにおけるCPUモジュールの構成例である。 等値化処理に伴う等値化データの転送、格納の様子を示す図である。 (a)は等値化データ送信処理、(b)は等値化データ受信処理を示すフローチャート図である。 図9に示すスケジュール例で定周期プログラムが実行された場合のグローバル変数等の更新状態を示す図である。 2重化コントローラシステム全体の概略構成を示す図である。 図5に示す2重化コントローラシステムにおける各CPUモジュールの構成例である。 従来の等値化処理に伴う等値化データの転送、格納の様子を示す図である。 定周期プログラムが実行される場合のスケジュール例(その1)である。 定周期プログラムが実行される場合のスケジュール例(その2)である。
符号の説明
1 CPUモジュール(稼動系)
2 CPUモジュール(待機系)
11 プログラムRAM
11a ユーザプログラム
12 データRAM
12a ユーザデータ領域
12b 等値化データ転送情報
13 等値化バス制御部
14 受信バッファ用RAM
15 マイクロプロセッサ
16 シリアルNO.保持メモリ
21 プログラムRAM
21a ユーザプログラム
22 データRAM
22a ユーザデータ領域
22b 等値化データ転送情報
23 等値化バス制御部
24 受信バッファ用RAM
25 マイクロプロセッサ
26 シリアルNO.保持メモリ

Claims (5)

  1. 複数の定周期プログラムを実行する稼動系のコントローラと、待機系のコントローラを有する2重化コントローラシステムであって、
    前記稼動系のコントローラは、
    前記各定周期プログラムに対応する各ローカル変数と、全ての定周期プログラムが共有するグローバル変数を記憶する第1の変数記憶手段と、
    シリアル番号を記憶する第1のシリアル番号記憶手段と、
    前記各定周期プログラムの演算実行完了する毎に、前記第1のシリアル番号記憶手段に記憶されているシリアル番号を取得して、該シリアル番号を更新し、該更新したシリアル番号を前記第1のシリアル番号記憶手段に記憶すると共に等値化データフレームにセットし、該実行した定周期プログラムに対応する前記ローカル変数と前記グローバル変数を前記第1の変数記憶手段から収集して前記等値化データフレームに格納して、該等値化データフレームを前記待機系のコントローラに転送する稼動側等値化処理手段とを有し、
    前記待機系のコントローラは、
    前記各定周期プログラムに対応する各ローカル変数と、全ての定周期プログラムが共有するグローバル変数を記憶する第2の変数記憶手段と、
    シリアル番号を記憶する第2のシリアル番号記憶手段と、
    前記転送された等値化データフレーム内の前記シリアル番号と、前記第2のシリアル番号記憶手段に記憶されたシリアル番号とを比較することで、正常/異常を判定し、正常と判定された場合には、該等値化データフレーム内のシリアル番号を前記第2のシリアル番号記憶手段に記憶すると共に、該等値化データフレームに格納されている前記ローカル変数とグローバル変数を、前記第2の変数記憶手段に記憶する待機側等値化処理手段と、
    を有することを特徴とする2重化コントローラシステム。
  2. 前記待機側等値化処理手段は、異常と判定した場合には、前記第2のシリアル番号記憶手段に記憶しているシリアル番号の更新は行わず、少なくとも等値化データフレームに格納されている前記グローバル変数は、前記第2の変数記憶手段に記憶しないことを特徴とする請求項1記載の2重化コントローラシステム。
  3. 前記第1のシリアル番号記憶手段に記憶されているシリアル番号を更新する処理は、該シリアル番号をインクリメントする処理であり、
    前記待機側等値化処理手段は、前記等値化データフレーム内のシリアル番号が、前記第2のシリアル番号記憶手段に記憶されたシリアル番号よりも大きい場合に、正常と判定することを特徴とする請求項1又は2記載の2重化コントローラシステム。
  4. 複数の定周期プログラムを実行する稼動系のコントローラと、待機系のコントローラを有する2重化コントローラシステムにおける前記稼動系のコントローラであって、
    前記各定周期プログラムに対応する各ローカル変数と全ての定周期プログラムが共有するグローバル変数を記憶する第1の変数記憶手段と、
    シリアル番号を記憶する第1のシリアル番号記憶手段と、
    前記各定周期プログラムの演算実行完了する毎に、前記第1のシリアル番号記憶手段に記憶されているシリアル番号を取得して、該シリアル番号を更新し、該更新したシリアル番号を前記第1のシリアル番号記憶手段に記憶すると共に等値化データフレームにセットし、その後に、該実行した定周期プログラムに対応する前記ローカル変数と前記グローバル変数を前記第1の変数記憶手段から収集して前記等値化データフレームに格納して、該等値化データフレームを前記待機系のコントローラに転送する稼動側等値化処理手段と、
    を有することを特徴とする稼動系コントローラ。
  5. 複数の定周期プログラムを実行する稼動系のコントローラと、待機系のコントローラを
    有する2重化コントローラシステムにおける前記待機系のコントローラであって、
    前記各定周期プログラムに対応する各ローカル変数と全ての定周期プログラムが共有するグローバル変数を記憶する第2の変数記憶手段と、
    シリアル番号を記憶する第2のシリアル番号記憶手段と、
    前記稼動系のコントローラから転送された等値化データフレーム内のシリアル番号と、前記第2のシリアル番号記憶手段に記憶されたシリアル番号とを比較することで、正常/異常を判定し、正常と判定された場合には、該等値化データフレーム内のシリアル番号を前記第2のシリアル番号記憶手段に記憶すると共に、該等値化データフレームに格納されているローカル変数とグローバル変数を、前記第2の変数記憶手段に記憶する待機側等値化処理手段と、
    を有することを特徴とする待機系コントローラ。
JP2007069053A 2007-03-16 2007-03-16 2重化コントローラシステム、その稼動系/待機系コントローラ Active JP5034584B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007069053A JP5034584B2 (ja) 2007-03-16 2007-03-16 2重化コントローラシステム、その稼動系/待機系コントローラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007069053A JP5034584B2 (ja) 2007-03-16 2007-03-16 2重化コントローラシステム、その稼動系/待機系コントローラ

Publications (2)

Publication Number Publication Date
JP2008234014A true JP2008234014A (ja) 2008-10-02
JP5034584B2 JP5034584B2 (ja) 2012-09-26

Family

ID=39906758

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007069053A Active JP5034584B2 (ja) 2007-03-16 2007-03-16 2重化コントローラシステム、その稼動系/待機系コントローラ

Country Status (1)

Country Link
JP (1) JP5034584B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013178621A (ja) * 2012-02-28 2013-09-09 Nippon Telegr & Teleph Corp <Ntt> データ同期システム、運用系コンピュータ、及び待機系コンピュータ
JP2016095784A (ja) * 2014-11-17 2016-05-26 富士電機株式会社 冗長化制御システムおよびその制御装置
JP2020123309A (ja) * 2019-01-30 2020-08-13 富士電機株式会社 Ioモジュール二重化制御装置及び方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07234848A (ja) * 1993-12-28 1995-09-05 Fuji Facom Corp 計算機システムにおける二重化方式
JP2002149212A (ja) * 2000-11-13 2002-05-24 Fuji Electric Co Ltd 制御データを等値化する冗長化プログラマブルコントローラ及び等値化方法。
JP2005092520A (ja) * 2003-09-17 2005-04-07 Fuji Electric Systems Co Ltd 2重化コントローラシステム、その等値化方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07234848A (ja) * 1993-12-28 1995-09-05 Fuji Facom Corp 計算機システムにおける二重化方式
JP2002149212A (ja) * 2000-11-13 2002-05-24 Fuji Electric Co Ltd 制御データを等値化する冗長化プログラマブルコントローラ及び等値化方法。
JP2005092520A (ja) * 2003-09-17 2005-04-07 Fuji Electric Systems Co Ltd 2重化コントローラシステム、その等値化方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013178621A (ja) * 2012-02-28 2013-09-09 Nippon Telegr & Teleph Corp <Ntt> データ同期システム、運用系コンピュータ、及び待機系コンピュータ
JP2016095784A (ja) * 2014-11-17 2016-05-26 富士電機株式会社 冗長化制御システムおよびその制御装置
JP2020123309A (ja) * 2019-01-30 2020-08-13 富士電機株式会社 Ioモジュール二重化制御装置及び方法
JP7358819B2 (ja) 2019-01-30 2023-10-11 富士電機株式会社 Ioモジュール二重化制御装置及び方法

Also Published As

Publication number Publication date
JP5034584B2 (ja) 2012-09-26

Similar Documents

Publication Publication Date Title
JP4734003B2 (ja) ソフトエラー訂正方法、メモリ制御装置及びメモリシステム
JP2015206785A (ja) 半導体装置、診断テスト方法及び診断テスト回路
JP2006285758A (ja) 制御装置の表示システム
JP3481737B2 (ja) ダンプ採取装置およびダンプ採取方法
JP2009054083A (ja) プロセッサ、データ転送ユニット及びマルチコアプロセッサシステム
JP5034584B2 (ja) 2重化コントローラシステム、その稼動系/待機系コントローラ
JP2003296133A (ja) コントローラ
JP2006235765A (ja) 二重化コントローラシステム、そのコントローラ
JP5641181B2 (ja) 二重化処理装置
US20130339791A1 (en) Data polling method and digital instrumentation and control system for atomic power plant using the method
JP2009176232A (ja) 起動装置、起動方法、及び、起動プログラム
JP4281602B2 (ja) 2重化コントローラシステム、そのコントローラ、プログラム
JP2008262426A (ja) 2重化コントローラシステム、そのコントローラ
JP2009032100A (ja) 二重化plc
JP4232589B2 (ja) 二重化コントローラ、その等値化モード決定方法
JP2005092520A (ja) 2重化コントローラシステム、その等値化方法
JP7271973B2 (ja) 車両制御装置、動作クロック切換方法
JP6726136B2 (ja) データアクセス装置及びアクセスエラーの通知方法
JP4273905B2 (ja) 2重化コントローラシステム、その方法
JP7007223B2 (ja) 制御装置および異常検出方法
JP2007172096A (ja) 情報処理装置、および、その起動制御方法
US20130055017A1 (en) Device and method for restoring information in a main storage unit
JP2007304972A (ja) マイクロプロセッサシステム
JP5233869B2 (ja) 処理システム及び処理装置が実行するプログラムの実行方法
JPH0895614A (ja) 制御装置

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080919

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20080919

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080919

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090914

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110419

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20110422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110616

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120112

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120618

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150713

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5034584

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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