JP2002140206A - 待機冗長2重化制御装置及びそのアプリケーションプログラム開発装置 - Google Patents

待機冗長2重化制御装置及びそのアプリケーションプログラム開発装置

Info

Publication number
JP2002140206A
JP2002140206A JP2000332549A JP2000332549A JP2002140206A JP 2002140206 A JP2002140206 A JP 2002140206A JP 2000332549 A JP2000332549 A JP 2000332549A JP 2000332549 A JP2000332549 A JP 2000332549A JP 2002140206 A JP2002140206 A JP 2002140206A
Authority
JP
Japan
Prior art keywords
cpu
data
module
standby
cpu module
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.)
Pending
Application number
JP2000332549A
Other languages
English (en)
Inventor
Akihito Watanabe
哲仁 渡辺
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 Co Ltd
Original Assignee
Fuji Electric 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 Co Ltd filed Critical Fuji Electric Co Ltd
Priority to JP2000332549A priority Critical patent/JP2002140206A/ja
Publication of JP2002140206A publication Critical patent/JP2002140206A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【課題】 本発明は、安価でコンパクトな待機冗長2重
化制御装置を提供することを課題とする。 【解決手段】 IOモジュールに対する共有・競合制御
機能を備えた2台のCPUモジュール12−1,12−
2と各IOモジュール32−1〜32−nをシステムバ
ス2によって直接接続する。またCPU局番の利用によ
り専用の稼動/待機設定用SWを不要とする。更に各変
数のイニシャル初期化動作モードの設定を等値化対象設
定へ流用する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プログラマブルコ
ントローラ等の産業用制御装置に関し、更に詳しくは2
重化した産業制御装置の制御データの等値化に対する技
術に関する。
【0002】
【従来の技術】現在、プラント、工場などでは、機械や
装置のシーケンス制御に多くのプログラマブルコントロ
ーラ等の産業制御装置を用い、FA(ファクトリーオー
トメーション)化を実現している。
【0003】この産業制御装置には、システムの信頼性
を向上させるためCPUを待機冗長の2重化構成にする
場合がある。待機冗長の冗長2重化構成は、2つのCP
Uを1組とし、片方を稼動CPUもう片方を待機CPU
とし、稼動CPUを待機CPUが監視して、稼動CPU
に障害が生じたならば待機CPUが稼動CPUに切り替
る構成である。
【0004】図13に、待機冗長2重化制御装置の構成
例を示す。同図において、1つの待機冗長2重化制御装
置は、1組のCPU制御部100とリモートIO200
を備えており、CPU制御部100とリモートIO20
0との間をリモートIOリンク301で、また2つのC
PU制御部100−1,100−2間を等値化専用リン
クによって接続し、リモートIOリンクの先のリモート
IO200を稼動側のCPU制御部100が制御する構
成となっている。尚同図の構成は1組のCPU制御部1
00と1つのリモートIO200を持つものであるが、
待機冗長2重化制御装置には複数組のCPU制御部10
0を備えたり、複数のリモートIO200を持つ構成の
ものもある。
【0005】CPU制御部100は、電源101、CP
Uモジュール102、リモートIOマスタモジュール1
03、制御LAN303と接続する通信モジュール10
4及び等値化制御モジュール105から構成されてい
る。またリモートIO200は、電源201、リモート
IOスレーブモジュール202、複数のIOモジュール
(PIO)203から構成されている。
【0006】2つのCPU制御部100のうち、CPU
制御部100−1が稼動CPU側、100−2が待機C
PU側となり、稼動側のCPU制御部100−1がリモ
ートIO200を直接制御し、待機CPU側は、稼動C
PU側が正常に動作しているかどうかを監視している。
【0007】CPU制御部100では、等値化制御モジ
ュール105により、稼動側のCPU制御部100−1
のアプリケーションプログラムの実行の切れ目のタイミ
ング(スキャンエンドのタイミング)で、稼動CPU制
御部100−1の制御データが待機CPU制御部100
−2に等値化される。
【0008】待機CPU制御部100−2は稼動CPU
制御部100−1を監視しており、稼動CPU制御部1
00−1に異常が生じると、待機CPU制御部100−
2は稼動状態に切り替り、直前に等値化した制御データ
を用いてCPU制御部100−1の処理を引きついでリ
モートIO200を制御する。
【0009】この様な待機冗長2重化制御装置では、2
つのCPU制御部100のうち先に電源が投入された方
が稼動CPUとなり、後から電源投入した方が待機CP
Uとなる。
【0010】また電源が同時に投入された場合は、各C
PUモジュール102に設けられたハードウエアスイッ
チによってデフォルトとして設定された稼動/待機設定
に基づいてそれぞれ稼動CPU及び待機CPUとして動
作する。あるいはハードウエアスイッチの代わりに、プ
ログラム上のシステム定義に設定されたデフォルト稼動
/待機設定に従ってそれぞれ稼動CPU及び待機CPU
として動作する構成となっているものもある。
【0011】図14に従来の待機冗長2重化制御装置の
等値化対象データの指定方法を示す。図14に示すよう
に、CPUモジュール102のユーザメモリは、IOデ
ータ領域、ビットデータメモリ領域、16ビット整数デ
ータメモリ領域や32ビット整数データメモリ領域など
の制御データのデータ型や属性などにより絶対番地によ
って指定される複数の領域に区分されている。
【0012】プログラマは、アプリケーションプログラ
ムのプログラミングの段階において、ユーザメモリの所
定のデータ型の領域の所定の番地のN箇所のブロックを
等値化対象とするというように、等値化対象とするデー
タのユーザメモリ上のアドレスを絶対番地で意識してプ
ログラミングする。そして、その等値化対象とするブロ
ックの先頭アドレスとブロックデータサイズを等値化デ
ータ指定システム定義として登録しアプリケーションプ
ログラムと一緒にCPUモジュール102に格納してお
く。
【0013】同図において例えば、ユーザメモリは保持
するデータの属性に基づき、IOデータ領域、ビットデ
ータメモリ領域、16ビット整数データメモリ領域、3
2ビット整数データメモリ領域及び単精度浮動少数点デ
ータメモリ領域等に分かれており、等値化対象となるデ
ータは各領域に分散している。等値化対象とするデータ
を指定する等値化データ指定システム定義では、この等
値化対象データをブロック単位でその先頭アドレスとブ
ロックサイズにより指定している。
【0014】稼動側及び待機側のCPU制御部100で
は、CPUモジュール102のシステム処理のイニシャ
ル処理時に等値化データ指定システム定義を解釈して等
値化対象とするデータのアドレス、サイズ等の各種設定
を等値化制御モジュール105に通知しておき、稼動C
PU側のユーザプログラムのスキャンエンドのタイミン
グで等値化制御モジュールを起動し、稼動CPU側で収
集された等値化ブロックのデータが専用の等値化バスを
使用して待機CPU側に送信され、稼動CPUではこれ
をユーザメモリに分配して制御データを等値化する。
【0015】
【発明が解決しようとする課題】図13に示したような
従来の待機冗長2重化制御装置は、2組のCPU制御部
100を備えて、リモートIO200を待機冗長2重化
制御しているため、CPUモジュール102だけでな
く、通信部モジュール104等も含めて2重化されてい
る為、かなり高価なシステム構成となっている。また、
データの等値化の為に、等値化制御モジュール105と
専用のバスとして等値化専用リンク302を必要とし、
更に高価なシステムとなってしまう。
【0016】また、図13に記載していないが、2重化
制御装置では、CPUモジュール102に直結した直結
IOモジュールを備える構成となることがある。この場
合、この直結IOモジュールに対しては、待機側CPU
と稼動側CPUの両方が同一の直結IOモジュールに直
結する構成とはならないので、この直結IOモジュール
に対しては待機冗長2重化制御を行うことができない。
【0017】これらの問題点に対し、1つの中、小制御
規模のシステムにおいて、等値化制御モジュール105
や等値化専用の等値化専用リンク302を必要としな
い、CPUのみを冗長化し、また直結IOモジュールに
対しても冗長化CPUから制御可能で、安価かつコンパ
クトな待機冗長2重化制御装置が望まれている。
【0018】また、2台のCPU制御部100での、同
時電源投入時の稼動/待機CPUの決定論理には以下の
問題点がある。ハードウエアスイッチを専用のハードウ
エアスイッチによる構成の場合、余分なスイッチが必要
となる。また、ハードウエアスイッチの設定は人為的に
行われるので、誤って両系とも稼動または待機と設定し
てしまう可能性がある。またプログラム上のシステム定
義設定を用いて稼動/待機を指定する場合は、システム
定義も含めると両系のプログラムを全く同一には出来な
い。
【0019】また、等値化データの指定方法において
は、ユーザがプログラミングの段階で、全変数を絶対番
地で管理し、データ型毎に分けられた複数のメモリ領域
に対して等値化対象とするデータかどうかを意識してプ
ログラミングする必要がある。またPIOデータも等値
化ブロック指定が必要となる。ユーザメモリはデータ型
及び属性毎に複数の領域に分かれているために、この等
値化ブロックは50〜100個位の数になり、プログラ
ミングが複雑になる。
【0020】更に等値化処理には等値化制御モジュール
105を必要とするが、イニシャル時の各種等値化設定
情報の受け渡し、等値化タイミング通知などにCPUモ
ジュール102と等値化制御モジュール105間でハン
ドシェイクが必要になるので処理や構成が複雑になる。
【0021】本発明は上記問題点を解決する待機冗長2
重化制御装置を提供することを課題とする。
【0022】
【課題を解決するための手段】上記問題点を解決するも
のとして、本発明による待機冗長2重化制御装置は、1
乃至複数組のCPUモジュールを備え、待機冗長2重化
を行っているものを前提とし、IOモジュール、第1の
CPUモジュール、第2のCPUモジュール及びシステ
ムバスを備える。
【0023】第1のCPUモジュールは、稼動状態にあ
り、上記IOモジュールへの出力データに対し他のCP
Uモジュールとの共有・競合制御を行って出力する。第
2のCPUモジュールは、上記第1のCPUモジュール
に対する待機状態にあり、上記IOモジュールに対する
出力データの送出を禁止し、第1のCPUモジュールが
送出した出力データをIOモジュールから参照入力する
機能を備える。
【0024】稼動状態にある第1のCPUモジュールと
待機状態にある第2のCPUモジュールでは、上記IO
モジュールからの入力データに対して、同じデータを共
有・競合を行って入力する。
【0025】システムバスは、上記IOモジュール、第
1のCPUモジュール及び第2のCPUモジュールを直
接接続する。この構成により、本発明による待機冗長2
重化制御装置は、IOモジュールと第1のCPUモジュ
ールと、該第1のCPUモジュールに対する待機状態に
ある第2のCPUモジュールの両方がシステムバスによ
り、直接接続されており、また上記第1のCPUモジュ
ール及び第2のCPUモジュールはIOモジュールに対
する、データの入出力処理において共有・競合制御を行
っているので、IOモジュールに対する2重化を実現し
ている。
【0026】また上記システムバス上で各CPUモジュ
ールを識別する識別子を用いて、上記第1のCPUモジ
ュール及び第2のCPUモジュールは、電源投入時に稼
動状態になるか待機状態になるかを決定する構成とする
ことにより、特別なハードウエア設定機構やシステム定
義などによるソフトウェア手段を不要とする。
【0027】更に上記第1のCPUモジュールは、アプ
リケーションプログラムが用いる変数のうち、ユーザメ
モリにイニシャル時にデータをクリアするイニシャルク
リア領域とイニシャル時にデータをクリアしないイニシ
ャル保持領域を備え、(1) 該イニシャルクリア領域及び
イニシャル保持領域内の予めデータの等値化の為に定め
られた特定の領域内のデータを上記第2のCPUモジュ
ールに対して等値化する機能を備える。又は(2) ユーザ
メモリのうちの上記イニシャルクリア領域は等値化しな
いで、イニシャル保持属性が設定された変数のイニシャ
ル保持領域内データを、全て上記第2のCPUモジュー
ルに対して等値化する機能を備える。ことにより、ユー
ザは通常のプログラムにおいて、容易な設定により等値
化を行える。
【0028】更に上記(1) 又は(2) のどちらかを備えた
CPUモジュールにおいて、複数の変数を扱うユーザ関
数において、イニシャルクリア属性及びイニシャル保持
属性の変数を持っており、イニシャル保持属性の変数の
みを等値化する機能を備え、システム関数においても、
予め決められた変数を等値化する機能を備えることによ
り、ユーザの等値化の為のプログラミングを容易に出来
る。
【0029】また等値化においては、システム処理で実
行され、システムの作業領域の範囲内で処理する必要が
あり、システム処理のイニシャル処理でアプリケーショ
ンプログラムで指定する全等値化データサイズをチェッ
クするデータサイズチェック手段を備え、規定値以上で
ある時は重故障停止し、ユーザにサイズ異常を通知する
と共にシステムの誤動作を未然に防止する。
【0030】更にアプリケーションプログラムの開発装
置において、プログラム開発時のコンパイル処理時に、
等値化データサイズチェック手段とサイズ異常時のコン
パイルエラーによる通知を行うユーザ通知手段を備える
ことにより、ユーザはプログラム開発時に容易にデータ
サイズ異常が認識できる。
【0031】また上記データ等値化にはアプリケーショ
ンプログラムの実行の切れ目でシステム処理によって行
われ、等値化データはシステム作業領域のサイズにより
限界がきたり、また、アプリケーションプログラムのス
キャン瞬間増加による制約を受ける。そこで上記システ
ム処理の等値化機能に更にアプリケーションプログラム
で専用の等値化命令を備えることにより、その命令実行
で直接複数ワードの変数データを待機CPUに格納が可
能になり、等値化データサイズの拡張及びスキャン実行
時間の削減が可能になる。
【0032】
【発明の実施の形態】図1は、本実施形態による待機冗
長2重化制御装置のシステム構成例を示す。図1の構成
は、1つのシステムバス2上に2重化したCPU制御部
1−1,1−2と直結PIO及び各種通信モジュール群
3を配している。このうちCPU制御部1−1が稼動C
PU、CPU制御部1−2が待機CPUとして稼動する
ものとする。
【0033】CPU制御部1は、電源11とCPUモジ
ュール12を備えており、CPUモジュール12は、シ
ステムバス2と接続されている。直結PIO及び各種通
信モジュール群3は、2つの電源31−1,31−2
(電源31−1は電源11−1と、また電源31−2は
電源11−2と同一系統として構成)、複数の直結IO
モジュール(PIO)32、制御LAN5と接続された
通信モジュール33及びリモートIOリンク6と接続さ
れたリモートIOマスタ34を備える。これらの構成の
うち通信モジュール33、リモートIOマスタ34、制
御LAN5及びリモートIOリンク6は、図13の通信
モジュール104、リモートIOマスタ103、制御L
AN303及びリモートIOリンク301と同一のもの
である。
【0034】本実施形態による図1に示す待機冗長2重
化制御装置は、図13の構成に比して、等値化制御モジ
ュールや等値化専用リンクを必要とせず、またCPUモ
ジュールのみを2重化しているので安価かつコンパクト
な待機冗長2重化制御装置を実現できる。
【0035】また図1の構成では、全直結PIO32−
1〜32−nが2つのCPUモジュール12−1,12
−2とシステムバス2によって直結されている。よっ
て、本構成の待機冗長2重化制御装置では、全ての直結
IOモジュールに対して待機冗長2重化制御を行うこと
が出来る。
【0036】ここで、CPU制御部1−1及びCPU制
御部1−2は内部に全く同一のプログラム及び各種シス
テムを制御するための定義情報を持ち、特にPIOに対
する共有マスクも全く同一の情報を備えている。
【0037】またこのCPU制御部1は、本出願と同一
出願人による特願平11−335525号「プログラマ
ブルコントローラ」(以下先の出願という)に開示した
各種直結IOモジュールに対する共有・競合制御を備え
ている。本実施形態ではこの先の先願の方式を用いて各
種IOモジュール及びその他各種通信モジュールを稼動
CPUが直接制御する。
【0038】以下に先の先願での複数のCPUモジュー
ルによる直結IOモジュールに対する共有・競合制御の
概要を説明する。図2は、先の出願による共有・競合制
御の説明図である。同図に示す制御装置がCPUモジュ
ール42−1〜42−3の3つのCPUモジュールが1
つのIOモジュール43を共有しているものとする。
【0039】IOモジュール43は、シリアルリンクバ
ス(システムバス)41を介して各CPUモジュール4
2から送信されてきた出力データを受信すると、共有及
び競合制御回路44により、その受信データに基づいて
出力点からの出力状態を変化させると共に、参照出力と
して各CPUモジュール42に現在の出力状態を示すデ
ータを送信する。
【0040】CPUモジュール42は、IOモジュール
43に対する出力データと共にIOモジュール43の持
つ出力点の出力状態を変更したい(すなわち自己の出力
データを有効にして出力状態に反映させたい)出力点に
対応するビットに“1”を変更を行わない(すなわち自
己の出力データを出力状態に反映させない)出力点に対
応するビットに“0”を設定した共有マスクデータを送
信する。
【0041】各CPUモジュール42から出力データ及
び共有マスクを受信したIOモジュール43は、共有及
び競合制御回路44を用いて、各CPUモジュール42
からの共有マスクデータ及び出力データと、自己の現在
の出力状態との論理結果から新出力を求める。そして新
出力を通知する参照出力を各CPUモジュール42へ送
信し、CPUモジュール42はこの参照出力と共有マス
クデータからIOモジュール43の出力状態を認識す
る。
【0042】この様にCPUモジュールが出力データと
共に共有マスクをIOモジュールに送信することによっ
て、各CPUモジュールによる出力データの共有及び競
合制御を行うことが出来る。
【0043】図3は、本実施形態の待機冗長2重化制御
装置のシステム基本動作を示す図である。同図(a)
は、待機冗長2重化制御装置の通常動作の状態を示して
いる。
【0044】同図において、CPU0が稼働CPUモジ
ュール、CPU1がその待機CPUモジュールで、CP
U0はアプリケーションプログラムを実行中であるもの
とする。
【0045】稼動CPUであるCPU0は、システム制
御機能としてPIOへのIOデータ入出力制御、各種通
信モジュールの制御、システムの全モジュールのRAS
監視制御などを実行する機能を備えている。
【0046】IOデータ出力に対しては、稼動CPUに
IOモジュールへのフレーム送信を許可し、自己の出力
データを有効にする共有マスク情報を出力データと共に
各PIOへ送信させている。
【0047】また待機CPUであるCPU1は、自モジ
ュールのハードウエア初期化を完了した状態から、アプ
リケーションプログラムを実行しないで待機状態となっ
ている。この待機状態では、システム制御機能のうちの
PIOモジュールへのIOデータの入出力制御、各種通
信モジュールの制御、システムの全モジュールのRAS
監視制御等の機能は停止し、代わりに稼働CPUモジュ
ールに対するRAS監視制御を行ってCPU0の状態を
監視している。
【0048】また待機CPUのIOデータ出力動作は、
フレーム送信を禁止設定にしており、IOモジュールへ
の出力データと出力データの有効を示す共有マスクをP
IOモジュールに送出しないようにしている。その結
果、PIOモジュールは稼動CPU(CPU0)からの
共有マスク情報とIOモジュールへの出力データにより
出力制御されることになる。
【0049】この時、同時に稼動CPU(CPU0)上
で稼動しているアプリケーションプログラムのスキャン
エンドのタイミングで、システムバス2を介して稼動C
PU0から待機CPU1に等値化データを含むフレーム
が転送され、制御データの等値化が行われる。
【0050】次に、図3(b)に示す稼動CPU0に異
常が発生した場合の動作を示す。稼働CPUだったCP
U0は、何等かの理由で重故障状態になると待機状態に
切替える。そしてアプリケーションプログラムの実行を
停止し、またシステム制御機能を停止する。
【0051】この時待機状態となったCPU0は、PI
Oモジュールに対するフレーム送信を禁止し、有効な共
有マスク情報とIOの出力データを送出しないようにし
てIO制御を完全停止する。
【0052】待機CPUだったCPU1は、稼動CPU
であるCPU0に対するRAS監視が稼動しており、C
PU0の異常を検出すると自己を待機状態から稼働状態
に切替える。そしてアプリケーションプログラムを起動
し、またシステム制御機能としてIOモジュールへのI
Oデータ入出力制御、各種通信モジュールの制御、シス
テムの全モジュールのRAS監視制御などを実行を開始
する。特にIOデータ出力動作は、IOモジュールへの
フレーム送信を許可設定にすることにより、有効な共有
マスク情報とIOの出力データの送出を開始する。尚待
機CPUとなっているCPU0は重故障状態にあるの
で、稼動CPUに切り替ったCPU1はCPU0に対し
て制御データの等値化処理は行わない。
【0053】この様な処理を行うことによりCPU0の
重故障によりCPU0とCPU1で稼動/待機状態の切
替が発生しても、アプリケーションプログラムの実行、
IOモジュールなどの制御対象への制御データの入出力
処理及びその他の各種システム制御処理を継続すること
ができる。
【0054】次に、重故障状態にあるCPU0を交換し
た場合の動作を図3(c)に示す。CPU0のベース電
源をOFFし、故障したCPUモジュールを良品と交換
した後にベース電源を再投入すると、CPU0は自モジ
ュールのハードウエアの初期化処理を行い、これが完了
すると新たに待機CPUとして動作する。この待機CP
Uとしての動作は、図3(a)に示した待機CPU1と
全く同じものとなる。
【0055】稼動CPUとなっているCPU1は、CP
U0が正常な待機CPUとして立上ったことを認識する
と、CPU1上で動作しているアプリケーションプログ
ラムのスキャンエンドのタイミングで、待機CPU(C
PU0)に対する制御データの等値化処理を開始する。
これにより、図3(c)の状態は、同図(a)の状態と
等価になる。
【0056】次に、図3の動作で説明した、CPU0が
稼動CPUになっている場合のシリアルシステムバス上
のフレーム、及びCPU1が稼動になっている場合のシ
リアルシステムバス上のフレームについて図4を用いて
説明する。
【0057】図4は、動作中のシステムバス2上を流れ
る制御データフレームの例を示す図である。図4(a)
及び図4(b)のトータルフレームは、直結IOモジュ
ールからCPUモジュールに出力される各種IOモジュ
ールのデータ入力、及びシリアルシステムバス上のシス
テムを構築している全モジュールのステータス情報であ
る。また、メッセージフレームは、CPUモジュールと
通信モジュールとの間で行われるメッセージ通信や、C
PUモジュール間でのメッセージ通信に用いられるフー
レムである。図3に示す本実施形態では、システムイニ
シャル時の各種IOモジュールの初期化設定や、後述す
る稼動CPUでの等値化メッセージ命令の実行により待
機CPUに送信される等値化データの送信等システム制
御動作に用いられる。
【0058】図4(a)は、2つのCPUモジュール、
CPU0とCPU1が2重化されておらず、通常のマル
チCPUとしてそれぞれのIOモジュールを制御する場
合のシステムバス上のフレームを示すものである。
【0059】同図の場合2つのCPUモジュールは、そ
れぞれ共有マスクと出力IOデータをCPU0出力フレ
ーム、CPU1出力フレームとして、システムバスに送
出して、出力IOを制御する。また2つのCPUモジュ
ールは2重化されていないので、等値化データを送信す
るフレームはシステムバス上に流れていない。尚メッセ
ージについては後述する(図11(b)の説明参照)。
【0060】図4(b)は、CPU0とCPU1が待機
冗長2重化構成の場合のシステムバス上のフレームを示
すものである。同図の場合、稼動CPUと待機CPUと
の間でデータの等値化処理が必要なので、稼動CPU上
のアプリケーションプログラムのスキャンエンドのタイ
ミングで、CPU間で等値化データを送信する。
【0061】また待機冗長2重化構成の場合、待機CP
Uは稼動CPUの予備として働くのものなので、両者は
全く同じプログラム及びシステム定義をもっている。従
って稼動CPUと待機CPUはIOモジュールに対する
共有マスクも全く同じものを持っている。
【0062】そして本実施形態の待機冗長2重化構成の
場合、稼動CPUのみIO出力フレームの送信が許可さ
れており、待機CPUは送信禁止となっているので、C
PU0が稼動CPUの場合は、CPU0の出力フレーム
のみ送出して、CPU1の出力フレームは送出されな
い。またCPU1が稼動CPUの場合は、CPU1の出
力フレームのみ送出され、CPU0の出力フレームは送
出されない。この様に制御することにより、稼動CPU
の出力IO制御を実現している。
【0063】図5は、本実施形態による待機冗長2重化
制御装置のIOデータの入出処理によって等値化動作を
行う場合の動作例を示す図である。これまでの説明で
は、等値化処理は、稼動CPUが収集した等値化データ
を待機CPUに送信して行っていた。
【0064】本実施形態における待機冗長2重化制御装
置は、この様な等値化処理方法の他に、待機CPUがI
Oモジュールに直接参照する方法によってIOデータの
等値化を行うことも出来る。
【0065】本実施形態による待機冗長2重化制御装置
は、通常動作時には図3に示した様に待機CPUはIO
モジュールに対するIOデータの入出力動作を停止して
いた。それに対して図5に示す等値化処理動作では、待
機CPUがIOモジュールに対してIOデータの入力及
び出力IOデータの参照入力を行うことにより、IOデ
ータの等値化を行っている。
【0066】図5(a)は、CPU0が稼動CPU、C
PU1が待機CPUの場合の例であり、CPU0及びC
PU1共に全く同じシステム定義に基づいた入力IO定
義及び出力IO定義を備えているものとする。
【0067】稼動CPUであるCPU0の動作を以下に
示す。 入力IO定義に設定されている入力IOモジュールか
ら入力IOデータ入力し、これをユーザメモリ内のIO
データ領域に入力IOデータとして取込む。 出力IO定義に設定されている出力IOモジュール
に、IOデータ領域の出力データを出力する。 出力IO定義に設定されている出力IOモジュールか
らの参照入力は禁止(停止)する。
【0068】待機CPUであるCPU1の動作を以下に
示す。 入力IO定義に設定されている入力IOモジュールか
ら入力した入力IOデータをIOデータ領域に取込む。 出力IO定義に設定されている出力IOモジュールへ
の出力IOデータメモリの出力データの出力は禁止(停
止)する。 出力IO定義に設定されている出力IOモジュールか
ら、稼動CPU(CPU0)がこの出力IOモジュール
に出力した出力データを参照入力し、IOデータ領域に
取込む。
【0069】以上の動作を行うことにより、待機CPU
はIOデータ領域の入力IOデータと出力IOデータ
を、稼動CPUのIOデータ領域のデータと等値化する
ことが出来る。このデータの等値化方法はデータの等値
化を、システムバスによるIOデータの入出力制御を利
用して実現している。その為ユーザは、等値化の為に特
別なシステム定義を行う必要が無く、ユーザは容易にI
Oデータの等値化が実現できる。
【0070】図5(b)は、CPU1が稼動CPU、C
PU0が待機CPUの場合の例を示したものである。こ
の場合の稼動CPU及び待機CPUの動作は、同図
(a)の例で示したものと同じになるので、説明は省略
する。
【0071】また稼動CPU時が、重故障等の機能障害
によってではなく特殊デバッグ機能等により待機状態に
切替える時は、正常状態のままで待機状態に遷移するこ
とになる。この場合、速やかに出力IO定義に設定され
た自CPUが制御しているIOモジュールへの出力動作
を停止すると共に、出力IO定義に設定されている本来
自CPUが出力制御していたIOモジュールに対する稼
動CPUの出力データを参照入力するようにダイナミッ
クにデータ入出力制御を切替える。また待機CPUから
稼動CPUに切替える場合には、逆に出力IO定義に本
来自CPUが参照入力する制御を行うよう設定されてい
たIOモジュールに対して、IOデータを出力する制御
にダイナミックに切替える動作を行う。この時CPUモ
ジュールは稼動/待機状態の切替時に、同じ出力IO定
義を用いて制御を切替える。
【0072】次に本実施形態における電源投入時の稼動
/待機状態の決定の仕方について説明する。図6は、本
実施形態による待機冗長2重化制御装置における電源投
入時の稼動/待機決定論理を示す図である。同図の例で
は、物理的には8台のCPUを待機冗長2重化方式によ
って構成したマルチCPU装置であり、論理的には4ペ
アの待機冗長2重化制御装置となっている。
【0073】待機冗長2重化制御装置ではCPUモジュ
ール間でデータのやり取りが行われるが、このCPUモ
ジュール間の各種アクセスのために各CPUモジュール
を物理的に識別するCPU局番がハードウエアスイッチ
などによって各CPUモジュールには設定されている。
同図の場合局番0のCPUをCPU0、局番1のCPU
をCPU1、・・局番7のCPUをCPU7としてい
る。
【0074】本実施形態ではCPUの冗長化ペアの組み
合わせの決定にこのCPU局番を利用する。このCPU
局番を用いてCPU0とCPU1、CPU2とCPU
3、CPU4とCPU5及びCPU6とCPU7の局番
の数字が連番のものがペアとなることを固定的に定義す
る。また、どちらが稼動状態/待機状態になるかを同時
電源投入時の決定する際において、本実施形態では、上
記ペアの組合せにおいて偶数番号側をデフォルトで稼動
CPU、奇数番号側をデフォルトで待機CPUと定義し
ている。これにより個別ベース搭載時及び稼動/待機ベ
ース搭載時のそれぞれにおいて、同時電源投入時にCP
U0、CPU2、CPU4及びCPU6が稼動CPUと
なり、CPU1、CPU3、CPU5及びCPU7が待
機CPUと決定される。
【0075】図6(a)は、各CPUモジュールを個別
のベースに搭載した構成例を、同図(b)は各CPUモ
ジュールをデフォルト設定での稼動側と待機側で分けて
CPUモジュールをベースに搭載した構成例を示す。
【0076】この様に稼動/待機のデフォルト設定を行
うことにより、起動時の稼動/待機のデフォルト設定の
ための専用のハードウエアスイッチが不要となる。また
この稼動/待機の設定は、CPU局番を用いて行われる
のでハードウエアスイッチを操作して設定する場合の様
な両系稼動及び両系待機などの人為的な誤操作が防止で
きる。更に特別な稼動/待機設定のためのシステム定義
が不要となるので、稼動側と待機側のプログラムを同一
にすることができる。尚CPU局番の設定そのものを誤
設定した場合、この稼動/待機のデフォルト設定も誤っ
て設定される可能性があるが、この場合は待機冗長2重
化制御装置全体が誤動作することになるので、この点は
問題にならない。ここで、CPU局番を重複して設定し
た場合及び予め格納されているシステム全体の構成定義
における存在すべきCPU局番と異なる局番のCPUが
存在した場合は、システムの立上げ処理において異常監
視を行い、重故障停止状態として所定の異常情報をシス
テム領域に格納してユーザに通知する。
【0077】次に本実施形態における等値化対象データ
の指定方法について説明する。制御装置上で稼動するア
プリケーションプログラムには、通常のユーザプログラ
ム、ユーザが独自に開発登録できるユーザ関数、システ
ムに予め登録されているシステム関数などがある。
【0078】制御装置で稼動するプログラムで使用され
る変数が格納されるユーザメモリは、図14で示した様
にIO領域、ビットデータメモリ領域、16ビットデー
タメモリ領域等の様にデータの属性により細かな領域に
区分されている。
【0079】従来ユーザは、プログラミングにおいて、 ・IO領域:IO00、IO01、IO02、IO03、 ――、IOnm ・ビットメモリ領域:B00、B01、B02、B03、 ――、Bab ・16ビット整数データ領域:SI00、SI01、SI02、――、SIcd などの様に各領域に対して識別子を定義し、ユーザメモ
リの各領域にアクセスを行う場合、この識別子によって
絶対番地によるアクセスを行う。下記に識別子を用いた
プログラム例を示す。 <プログラム例> LD IO00 :IO00のデータを内部アキュームレータ(ACC)に 読み込む。
【0080】 ADD B05 :ACC+B05の演算結果をACCに書込む。 ST IO03 :ACC内の値をIO03に書込む。 プログラミングを行うユーザは、等値化対象とするデー
タを指定する場合は、まず各領域毎に等値化対象とする
データを格納する範囲をシステム定義に設定する。そし
てユーザは、プログラミング中に、その変数を等値化対
象とする場合はシステム定義に設定した範囲内に格納
し、また等値化対象としない変数はそれ以外の範囲に格
納するよう、各領域毎に絶対番地を意識しながらプログ
ラミングする必要があった。
【0081】図7は、本実施形態における等値化対象デ
ータの第1の指定方式を説明する図である。本実施形態
では、図7に示すように、ユーザメモリを、イニシャル
時に保持データをクリアする標準メモリとイニシャル時
にクリアを行わないでデータを保持するリテインメモリ
の2つのメモリ領域を持つ構成とする。
【0082】そしてプログラム中で変数は“SETTE
I”(設定)、“SIREI”(指令)などの変数名で
記述し、各変数に対しては変数定義としてデータ型(ビ
ット、16ビット整数等)とイニシャル初期化動作モー
ドを指定する。このイニシャル初期化動作モードには、
イニシャルクリアとイニシャル保持があり、これらのう
ちイニシャルクリアは、イニシャル時に変数の内容をク
リアするモードで、変数は標準メモリ上に置かれる。ま
たイニシャル保持は、イニシャル時に内容をクリアせず
イニシャル前の変数内のデータを引き継ぐもので、変数
はリテインメモリ上に置かれる。尚イニシャル初期化動
作モードの指定を省略するとイニシャルクリアモードに
設定される。
【0083】プログラム開発装置(以下、ローダとい
う)によるプログラムのコンパイル時に、各変数は指定
されたイニシャル初期化動作モードに基づいて、標準メ
モリ若しくはリテインメモリ上に置かれる。このときの
アドレスは変数の出現順に自動的に生成して割り振られ
るものとする。 <プログラム例> LD SETTEI1 : ST SIREI1 : LD SETTEI2 : ST SIREI2 : <変数定義> SETTEI1,SETTEI2 : リテイン(イニ
シャル保持)、16ビット整数 SIREI1,SIREI2 : 通常(イニシャ
ルクリア)、16ビット整数 上記プログラム例の場合、ローダによるコンパイル時に
各変数には SETTEI1――>RM00(リテインメモリの0ワード目) SETTEI2――>RM01(リテインメモリの1ワード目) SIREI1――>M00(標準メモリの0ワード目) SIREI2――>M01(標準メモリの1ワード目) などのようにユーザメモリ上の物理番地が割り当てられ
る。
【0084】第1の指定方式では、プログラムを行うユ
ーザは等値化対象とするデータに対しイニシャル初期化
動作モードとして、制御装置の初期化時にクリアを行わ
ずにイニシャル前の制御データを保持したままで新たな
制御動作を再開できるリテイン変数の指定を行うものと
する。
【0085】稼動CPUでは、アプリケーションプログ
ラムのスキャンエンドのタイミングで、等値化処理とし
てリテインメモリ内のデータを等値化対象のデータとし
て収集し、待機CPUに送信する。待機CPUは、等値
化処理によりリテイン変数のデータを稼動CPUから等
値化されているので、待機状態から稼動状態に切り替わ
っても、それまでの稼動CPUが制御していた制御デー
タを保持したままで新たな制御動作を開始することが出
来、待機冗長2重化制御装置全体としての動作を引き継
ぐことが出来る。
【0086】この様に第1の指定方式では、各変数に対
するイニシャル初期化動作モードの設定を等値化データ
指定にそのまま流用する。これにより等値化データ指定
の為のシステム定義設定が不要となる。よってプログラ
ミングを行うユーザは、等値化対象データの指定を通常
のプログラミングにおいて各変数に対するイニシャル初
期化動作モードの定義をするのみで行うことが出来る。
【0087】図8は、本実施形態における等値化対象デ
ータの第2の指定方式を説明する図である。第2の指定
方式では、標準メモリとリテインメモリの2つのメモリ
領域に等値化対象とするデータを格納する等値化領域を
設ける。この等値化領域は、標準メモリとリテインメモ
リの先頭部分に設けられ、システム定義により各領域の
先頭からの大きさで等値化指定1(標準メモリ)と等値
化指定2(リテインメモリ)として設定される。
【0088】この第2の指定方式の場合、従来の待機冗
長2重化制御装置の場合と同じように、プログラミング
の時にユーザが、標準メモリの領域(M領域)とリテイ
ンメモリの領域(RM領域)のそれぞれに対し、絶対番
地を意識して等値化領域かどうかを判断する必要がある
が、従来例の様に多数の領域が有るわけではなく、基本
的にメモリ領域は標準メモリ領域とリテインメモリ領域
の2つのみなので、その意識はかなりシンプルになる。
【0089】ここで、プログラミングにおける絶対番地
指定を有効にするために、図8の標準メモリ及びリテイ
ンメモリにおいて、各領域の先頭からの絶対番地指定可
能領域(AT指定領域)を定義している。プログラム中
でユーザは、このAT指定範囲内の領域に対してのみ絶
対番地での直接アドレス指定を使用する。尚この範囲を
超えて絶対番地指定を行った場合は、ローダによるコン
パイル時にエラーとなる。
【0090】ここで、ローダによるコンパイルにおい
て、各変数の実アドレスは以下のルールによって決定さ
れる。 ・変数にAT指定領域内の絶対番地を割り当てた場合:
その番地を直接実行コードに落とす。 ・変数にAT指定による絶対番地を割り当てたなかった
場合:その変数の属性のメモリのAT指定領域外のメモ
リ領域において、変数の出現順に応じてアドレスを自動
割当てして実行コードに落とす。また、各標準メモリ領
域及びリテインメモリ領域内の等値化指定領域の大きさ
はAT指定サイズ以下で、等値化指定領域はAT指定領
域内に収まる必要がある。等値化指定領域がAT指定領
域を超えて指定されていた場合は、コンパイル時にシス
テム定義異常としてユーザに通知される。
【0091】このように、第2の指定方式では、ユーザ
は、プログラミング時に等値化対象とする変数を各標準
メモリ領域及びリテインメモリ領域中に設けた等値化領
域内に割当てておく。稼動CPUでは、予め登録された
システム定義の等値化指定1及び等値化指定2の設定を
システム初期化処理で展開しておき、アプリケーション
プログラムのスキャンエンドのタイミングでその指定領
域内のデータを等値化対象として収集して待機CPUに
転送する。
【0092】この第2の設定方式は第1の設定方式とは
共存できない。次に、等値化対象データの第3の指定方
式について説明する。この第3の指定方式は、アプリケ
ーションプログラムにおけるユーザ関数のローカル変数
領域のデータの指定に用いるものである。
【0093】図9は、本実施形態における等値化データ
の第3の指定方式を説明する図である。ユーザ関数に対
しローカル変数領域(以下インスタンス領域という)を
個別に割り当てて管理するローカル変数方式は、関数実
行後も変数データが保持され、各種状態遷移制御などが
容易に可能となり、また他の関数による変数破壊から保
護できるので有効な関数処理方式である。
【0094】このローカル変数方式において、図9にF
B1、FB2、・・と示される個々のユーザ関数に割り
当てられる1つのインスタンス領域は、その関数で使用
する入力変数、出力変数、内部変数などの格納に用いら
れている。インスタンス領域内の各種変数には、変数定
義で示したようにビット、16ビット整数などのデータ
型やイニシャルクリア、リテインのイニシャル初期化動
作モードなどが定義される。
【0095】各CPUでは、直接インスタンス領域を実
行管理するのに必要なインスタンス内の各変数について
のデータ型や初期化動作定義は、システム定義(インス
タンス変数定義)としてあらかじめ登録しておく。そし
て、システム初期化処理においてこのインスタンス変数
定義を展開し、特にイニシャル時のメモリ初期化におい
ては、インスタンス変数定義を参照して、各変数に対す
るイニシャル初期化動作モードの設定を見ながら、また
データ型に基づいてメモリの絶対番地を計算しながら、
所定のメモリに対してはデータをクリアし、他のメモリ
に対してはデータ保持する制御を行う。
【0096】また、実際のユーザ関数実行時の各種変数
の引数アクセス時のアドレスは、ローダでのコンパイル
処理により、インスタンス領域の先頭番地からの相対ア
ドレスが設定される。CPUでの命令実行時には、イン
スタンス領域の先頭番地とその相対アドレスをダイナミ
ック加算することにより実アドレスを生成する。
【0097】ここで、第3の指定方式では、インスタン
ス領域内の変数に対する等値化指定方法としては、イニ
シャル初期化動作モードとしてイニシャル保持モードが
設定された変数を無条件で等値化するものとする。
【0098】この第3の指定方式でも稼動CPUでの等
値化処理は、稼動CPUで稼動しているアプリケーショ
ンプログラムのスキャンエンドのタイミングで行われ、
メモリ初期化のための準備としてシステムイニシャルで
展開したインスタンス変数定義のデータ型(ビット、1
6ビット整数など)及びイニシャル初期化動作モード定
義(イニシャルクリア、イニシャル保持)を利用して、
各種ユーザ関数のインスタンス領域のイニシャル保持モ
ードが指定されている変数を抽出して等値化を行う。
【0099】この第3の設定方式を用いることによりユ
ーザ関数内の変数に対しても、ユーザは等値化対象を指
定するために特殊な設定が不要になる。第3の設定方式
は、第1の設定方式及び第2の設定方式との共存が可能
である。
【0100】次に、本実施形態における等値化対象デー
タの第4の指定方式について説明する。この第4の指定
方式は、システム関数のローカル変数領域のデータの指
定に用いるものである。
【0101】図10は、本実施形態における等値化デー
タの第4の指定方式を説明する図である。システム関数
のインスタンスとインスタンス内のローカル変数に対す
る考え方は、ユーザ関数のインスタンスとローカル変数
に対するものと全く同様であるが、システム関数は予め
制御装置内にシステム的に組込まれているものであり、
ユーザはただその関数を使用するものなので、各システ
ム関数はユーザが自由に定義するユーザ関数と異なり、
固定的に決まりきったものとなる。
【0102】CPUでは、各種システム関数を制御する
上で、各システム命令の変数毎に、例えばイニシャル時
に変数をクリアするかどうか(イニシャルクリア/イニ
シャル保持)は予め決まっている。従って、システム関
数のインスタンス制御において、特別にイニシャルクリ
ア/保持を制御する必要のある関数のインスタンスはユ
ーザメモリ上に固めて配置する。またシステム関数のイ
ンスタンスの個数を予めシステム定義のシステムインス
タンス変数定義に登録しておき、システムのイニシャル
処理でこのシステムインスタンス変数定義を参照して初
期化制御を行っている。
【0103】第4の設定方式では、インスタンス領域内
のデータのうちどれを等値化対象データとするかをシス
テム関数毎に予め決定しておき、システム関数インスタ
ンス専用の固定的等値化ルールを決めておく。
【0104】図10(a)は、その決定例である。同図
に各システム関数の等値化対象とする変数を示すが、各
関数の等値化データのサイズは、処理の都合(インスタ
ンス内の変数の割付により決まる)により、以下の値で
定義している。 ・微分リレー命令 : 前回入力変数 (2ワード) ・カウンタ命令 : カウンタ現在値、前回入力(2ワード) ・タイマ命令 : タイマ現在値、前回入力、計時中フラグ(4ワード) システムインスタンス変数定義には、各システム関数に
対してそれぞれいくつインスタンスを生成しているかが
記録されており、例えば図10(b)の場合には、微分
リレー命令の関数のインスタンスの数としてX、カウン
タ命令関数のインスタンスの数としてY、タイマ命令の
インスタンスの数としてZが記録されている。
【0105】第4の設定方式では、システム関数のイン
スタンスの等値化制御においてもこのシステムインスタ
ンス変数定義に設定されているシステム関数のインスタ
ンスの個数設定を流用する。
【0106】図10(a)に示した変数を等値化対象と
した時、稼動CPUはアプリケーションプログラムのス
キャンエンドのタイミングで、システムインスタンス変
数定義内の各関数インスタンスの個数設定を参照し、各
命令の所定の位置の等値化対象変数を等値化する。図1
0(b)の場合、各微分リレー命令、カウンタ命令及び
タイマ命令の各システム関数に対して予め決定されてい
る変数のデータが、X,Y,Z組等値化データとして収
集され、待機CPUに送信される。
【0107】次に、図11は、本実施形態における変数
直接書き込みメッセージ命令による等値化動作の例を示
す。図11(a)に、通常のマルチCPU間でグローバ
ル変数をアクセスするための変数直接書き込みメッセー
ジ命令を示す。
【0108】同図は、通常のマルチCPUで動作するア
プリケーションプログラム内で使用する、変数直接書き
込みメッセージ命令をファンクションブロックダイアグ
ラム表現で表したものである。
【0109】同図の命令は、書込み元データ(自CPU
内変数)の格納アドレスSAで示される位置のデータを
書込み先アドレス(相手側CPU内の変数)DAに、書
込みメッセージ命令起動入力REQが0から1に変化し
た時、メッセージ送信する。この時、変数DA、SAで
示される位置の領域のデータ型は一致している必要があ
り、その変数のデータサイズは、変数SIZEで指定さ
れる。メッセージ送信が完了すると、DONE出力端子
が“1”になり、送信の終了を通知する。更に、送信異
常終了時は、STATUS変数に詳細エラーコードを出
力すると共に、ERR出力端子が、“1”になる。
【0110】図11(b)に同図(a)の変数直接書込
みメッセージ命令による通常マルチCPU動作時のCP
U間のメッセージ動作を説明する。CPU0のアプリケ
ーションプログラム内で同図(a)に示すメッセージ命
令を実行すると、書込みメッセージ命令起動入力REQ
が1になるのを認識した時に、CPU0のシステムOS
のメッセージクライアント処理により、CPU0のユー
ザメモリの変数SAで指定されたアドレスAAAのデー
タ(SIZE=40W)が、システムバス上の図4に示
したメッセージフレームによって中継され、CPU1の
システムOSのメッセージサーバ処理を介して、変数D
Aで指定されたアドレスBBBのユーザ領域に書込まれ
る。
【0111】図11(c)は、同図(a)の変数直接書
き込みメッセージ命令をアプリケーションプログラムに
組み込み、アプリケーションプログラムから等値化処理
を行った時の動作の説明図である。同図を用いて、以下
にOSのメッセージクライアント処理の中に、冗長化制
御機能を組込む具体的な動作を示す。
【0112】図11(c)の場合、図11(b)の場合
と同様、CPU0のアプリケーションプログラム内で変
数直接書き込みメッセージ命令の書込み先アドレスDA
を指定するが、この時自CPUの局番のSAアドレスと
同一のアドレス、即ちSAのアドレスAAAに対し、D
AのアドレスをCPU0.AAAとする。これにより、
システムOSのメッセージクライアント処理の中で、冗
長化動作モード時で、かつ書込み先アドレスDAがデフ
ォルトの稼動CPUのアドレス(同図では、CPU0の
アドレス)になっている場合は、待機CPUになってい
るCPU(同図では、CPU1)の物理局番の同一変数
領域にアドレス変換する。
【0113】この結果、書込み先論理アドレス“CPU
0.AAA”は、物理アドレス“CPU1.AAA”に
変換されて、CPU0のアドレスAAAのデータは待機
CPU1にメッセージ送信される。待機CPU1は、ア
プリケーションプログラムの実行が停止していても、シ
ステムOSのメッセージサーバ処理により送信されたデ
ータを変数領域AAAに書込む。
【0114】以上の処理により、稼動CPU0の領域A
AAのデータ(40W)は、待機CPU1の領域AAA
(40W)に等値化される。尚この変数直接書き込みメ
ッセージ命令の変数に配列データや構造体データを用い
ることにより、1メッセージ命令で複数のデータを等値
化することが可能となる。
【0115】このアプリケーションプログラムに変数直
接書き込みメッセージ命令を組込む等値化方法は、メッ
セージフレームにより等値化データを転送するので、ア
プリケーションのプログラム実行動作とは非同期とな
る。しかし。アプリケーションプログラムからの適宜な
トリガ条件の設定により、データ等値化が実行される。
また、アプリケーションプログラムのスキャンエンドの
タイミングで行う自動等値化実行では、システムの等値
化のためのバッファ領域のサイズ制約による等値化サイ
ズ制約があり、またスキャンエンド毎に等値化を実行す
るため等値化データ増によりアプリケーションのスキャ
ン時間が増加する。しかし、このメッセージフレームに
よる等値化方法を併用することで、等値化データサイズ
の拡張及びスキャン実行時間の削減が可能になる。特
に、プラント制御のチューニングにより得られた設定デ
ータは運転中可変することがなく、一度等値化されれば
十分なので、このメッセージによる等値化方法を用いれ
ば、スキャンエンド等値化のデータサイズ削減やスキャ
ン実行時間の削減等に大きな効果が得られる。
【0116】図12は、本実施形態による等値化データ
サイズの制約チェック例を示す図である。システムOS
で自動実行される等値化データの具体的な受渡し処理
は、アプリケーションプログラムの実行と同期して行わ
れる。即ち、アプリケーションプログラム実行のスキャ
ンエンドのタイミングで、稼動CPUのデータ収集−>
システムバス上転送−>待機CPUのデータ分配という
一連の動作で等値化が完了し、次のアプリケーション処
理に移行する。
【0117】図12に示す例では、同図(a)でアプリ
ケーションプログラム内で使用する変数メモリ(標準メ
モリとリテインメモリ)、同図(b)でユーザ関数(F
B)インスタンスメモリ、同図(c)でシステム関数
(FB)インスタンスメモリ内の等値化対象のデータを
示しており、同図(d)において稼動CPU0はそれら
のデータを収集し、等値化用のシステム転送ワークメモ
リに格納している。
【0118】従って、システム転送ワークメモリの容量
をT(W)とすると、同図(a)〜(c)に示す各メモ
リからの等値化データの総和は、このT(W)のサイズ
以下である必要がある。
【0119】各メモリの等値化データサイズは、 ・アプリケーションプログラム内の変数の等値化データサイズ(図12(a)) SPG=標準メモリ内の等値化データサイズ+リテインメモリ内の等値化デー タサイズ ・ユーザ関数(FB)インスタンスメモリの等値化サイズ(図12(b)) SUFB= ビットイニシャル保持変数の数 + ワードイニシャル保持変数の数 + ダブルワードイニシャル保持変数の数×2 ・システム関数(FB)インスタンスメモリの等値化サイズ(図12(c)) SSFB= 微分リレー命令数×2 + カウンタ命令数×2 + タイマー命令数×4 で求まる。
【0120】SPG+SUFB+SSFB≦等値化用シ
ステム転送ワークメモリサイズT(W)の制約条件を守
る必要があるので、OSイニシャル処理において、CP
Uモジュールは各種等値化システム定義を展開する時に
上記等値化サイズ制約を超えたかどうかのチェックを行
い、サイズオーバを検出した場合には冗長化設定異常を
RASデータ(コントローラの異常検出ステータス情
報)としてユーザに通知する。尚この時CPUモジュー
ル自身は、ユーザの冗長化設定による重故障停止の状態
になる。その為、誤ってシステム領域を破壊するなどの
異常状態を未然に防止することができる。
【0121】また、ローダ上に上記した等値化データサ
イズの制約チェック機能を組込むことにより、ユーザに
よるプログラム開発時において、プログラムコンパイル
処理時に、ローダがアプリケーションプログラム及び各
種システム定義を参照して、各種プログラム、ユーザ関
数、システム関数内の等値化データサイズを算出し、こ
の値とCPUモジュールの等値化用システム転送ワーク
メモリサイズT(W)とを自動比較させて等値化データ
サイズの異常の検出をさせるが出来る。この様な構成に
すれば、CPUモジュールとオンライン接続することな
く、ユーザはコンパイル時に等値化データサイズ異常を
検出することができる。そしてサイズ制約のチェックの
結果、正常であればユーザは、作成したプログラムとシ
ステム定義をCPUモジュールにダウンロードして、C
PUモジュール上でのオンライン運転試験に移ることが
できる。また、サイズ制約のチェックの結果異常が検出
されれば、コンパイルエラーとしてローダはエラーリス
トを生成し、各変数の等値化サイズ一覧(標準メモリ等
値化サイズ、リテインメモリ等値化サイズ、各ユーザ関
数毎の等値化データサイズ、各システム関数毎の等値化
データサイズ)を表示する。ユーザはこれを等値化デー
タサイズ圧縮のための検討資料とすることが出来、プロ
グラム変更の手助けとすることができる。
【0122】
【発明の効果】本発明によれば、安価でコンパクトな、
待機冗長CPU2重化制御装置を構築することができ
る。
【0123】また、待機CPUはIOモジュールへ稼動
CPUが出力した出力データの参照入力処理と、IOモ
ジュールから稼動CPUへの入力データの入力処理を行
うことにより、IOデータの等値化を行うことが出来
る。この場合、ユーザは等値化対象に対するシステム定
義を必要としないので、ユーザにとって容易にIOデー
タの等値化が実現できる。
【0124】更にシステムバス上での識別に用いるCP
U局番を利用して、冗長化の相手や同時電源投入時にど
ちらが稼動状態になるかのデフォルト設定を決定するこ
とにより、特別なハードウエア設定機構やシステム定義
などによるソフトウェア手段を不要とすることが出来
る。また稼動CPUと待機CPUとでプログラムを全く
同じに出来、更に、両系とも稼動/稼動及び、待機/待
機と設定してしまうような誤設定が防止できる。
【0125】またユーザは、プログラミング時に、等値
化対象とするデータの指定を、絶対番地を全く若しくは
ほとんど意識しないで行うことが出来るので、ユーザは
等値化データの指定を容易に行える。
【0126】更にユーザ関数及びシステム関数のローカ
ル変数に対するユーザの等値化のための設定を不要にで
きる。またアプリケーションプログラムに組込んだ変数
直接書き込みメッセージ命令によって等値化処理を行う
ことにより、アプリケーションプログラムの実行動作と
は非同期な等値化データの転送を行うことが出来る。こ
の方法を併合することによりスキャンエンド等値化のデ
ータサイズ削減及びスキャン実行時間の削減を行うこと
が出来る。
【0127】更にコントローラのイニシャル処理におい
て、等値化のためのシステム的準備処理を行う時に、各
種等値化対象のデータサイズの合計サイズのチェックを
行える。また上記サイズに異常がある場合、ユーザに通
知すると共に待機冗長2重化制御装置を重故障停止する
ことが出来るので、システム制御領域破壊によるシステ
ムの誤動作を未然に防止すると共にユーザが容易に等値
化情報のサイズ異常を認識できる。
【0128】またローダ上に冗長化時の等値化データチ
ェック機能を組込むことにより、プログラムコンパイル
処理時に、上記等値化対象データの合計サイズをチェッ
クできるので、CPUモジュールとオンライン接続する
ことなく、ユーザは等値化データサイズ異常を検出する
ことができる。
【0129】更にチェックの結果、異常であればコンパ
イルエラーとしてエラーリストを生成することにより、
ユーザに等値化データサイズ圧縮のための検討資料を提
示し、プログラム変更の手助けとすることができる。
【図面の簡単な説明】
【図1】本実施形態による待機冗長2重化制御装置のシ
ステム構成例を示す。
【図2】先の出願による共有・競合制御の説明図であ
る。
【図3】本実施形態の待機冗長2重化制御装置のシステ
ム基本動作を示す図である。
【図4】システムバス上の制御データフレームの例を示
す図である。
【図5】本実施形態による待機冗長2重化制御装置のI
Oデータの入出処理によって等値化動作を行う場合の動
作例を示す図である。
【図6】稼動/待機決定論理を示す図である。
【図7】等値化データの第1の指定方式を説明する図で
ある。
【図8】等値化データの第2の指定方式を説明する図で
ある。
【図9】等値化データの第3の指定方式を説明する図で
ある。
【図10】等値化データの第4の指定方式を説明する図
である。
【図11】変数直接書き込みメッセージ命令による等値
化動作の例を示す図である。
【図12】等値化データサイズの制約チェック例を示す
図である。
【図13】待機冗長2重化制御装置の構成例を示す図で
ある。
【図14】従来の待機冗長2重化制御装置の等値化対象
データの指定方法を示す図である。
【符号の説明】
1、100 CPU制御部 2 システムバス 3 直結PIO及び各種モジュール群 5、303 制御LAN 6、301 リモートIOリンク 11、31、101、201 電源 12、102 CPUモジュール 32 直結IOモジュール 33、104 通信モジュール 34、103 リモートIOマスタ 105 等値化制御モジュール 200 リモートIO 202 リモートIOスレーブ 203 リモートIOモジュール 302 等値化専用リンク

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 1乃至複数組のCPUモジュールを備
    え、待機冗長2重化を行っている待機冗長2重化制御装
    置において、 IOモジュールと、 前記IOモジュールへの出力データに対し他のCPUモ
    ジュールとの共有・競合制御を行って出力し、稼動状態
    にある第1のCPUモジュールと、 前記IOモジュールに対する出力データを他のCPUモ
    ジュールとの共有・競合制御を行って出力し、前記第1
    のCPUモジュールに対する待機状態にある第2のCP
    Uモジュールと、 前記IOモジュール、第1のCPUモジュール及び第2
    のCPUモジュールを直接接続するシステムバスとを備
    えることを特徴とする待機冗長2重化制御装置。
  2. 【請求項2】 前記第1のCPUモジュール及び第2の
    CPUモジュールは、前記出力モジュールに対する出力
    データを有効にするどうかを指示する共有マスクを該出
    力データと共に前記IOモジュールに対し送信する送信
    手段を備え、前記第1のCPUモジュールは、前記共有
    マスクを有効にして送信することを特徴とする請求項1
    に記載の待機冗長2重化制御装置。
  3. 【請求項3】前記第2のCPUモジュールは、前記第1
    のCPUモジュールが前記IOモジュールに出力した出
    力データを参照入力する出力データ参照入力手段と、前
    記IOモジュールが前記第1のCPUモジュールに入力
    した入力データを入力する入力データ入力手段とを備え
    ることを特徴とする請求項1又は2に記載の待機冗長2
    重化制御装置。
  4. 【請求項4】 前記第2のCPUモジュールは、前記第
    1のCPUモジュールを監視する監視手段を更に備え、
    該監視手段が前記第1のCPUの異常を検出すると、前
    記出力データ参照入力手段が参照入力した出力データと
    前記入力データ入力手段が入力した入力データを用いて
    稼動状態となることを特徴とする請求項3に記載の待機
    冗長2重化制御装置。
  5. 【請求項5】 前記システムバス上で各CPUモジュー
    ルを識別する識別子を用いて、前記第1のCPUモジュ
    ール及び第2のCPUモジュールは、電源投入時に稼動
    状態になるか待機状態になるかを決定することを特徴と
    する請求項1乃至4のいずれか1に記載の待機冗長2重
    化制御装置。
  6. 【請求項6】 前記第1のCPUモジュールは、ユーザ
    メモリにイニシャル時にデータをクリアするイニシャル
    クリア領域とイニシャル時にデータをクリアしないイニ
    シャル保持領域を備え、該イニシャルクリア領域及びイ
    ニシャル保持領域内の予めデータの等値化の為に定めら
    れた特定の領域内のデータを前記第2のCPUモジュー
    ルに対して等値化することを特徴とする請求項1乃至5
    のいずれか1に記載の待機冗長2重化制御装置。
  7. 【請求項7】 前記第1のCPUモジュールは、自己で
    稼動しているアプリケーションプログラムが用いる変数
    のうち、イニシャル時にデータをクリアするイニシャル
    クリア領域は等値化しないで、イニシャル時にデータを
    クリアしないイニシャル保持属性が設定された変数のイ
    ニシャル保持領域内データを、前記第2のCPUモジュ
    ールに対して等値化することを特徴とする請求項1乃至
    5のいずれか1に記載の待機冗長2重化制御装置。
  8. 【請求項8】 前記第1のCPUモジュールは、自己で
    使用されているユーザ関数で用いる変数のうち、イニシ
    ャル時にデータをクリアしないイニシャル保持属性が設
    定された変数のデータを、前記第2のCPUモジュール
    に対して等値化することを特徴とする請求項1乃至7の
    いずれか1に記載の待機冗長2重化制御装置。
  9. 【請求項9】 前記第1のCPUモジュールは、システ
    ム関数で用いる変数のうち、該システム関数毎に予め決
    められている変数を前記第2のCPUモジュールに対し
    て等値化することを特徴とする請求項1乃至8のいずれ
    か1に記載の待機冗長2重化制御装置。
  10. 【請求項10】 前記第1のCPU及び第2のCPU
    は、イニシャル処理時に、等値化対象となっているデー
    タの合計サイズをチェックする等値化データサイズチェ
    ック手段を更に備えることを特徴とする請求項1乃至9
    のいずれか1に記載の待機冗長2重化制御装置。
  11. 【請求項11】 前記等値化データサイズチェック手段
    によるチェック結果、前記合計サイズが規定値以上であ
    る時、重故障停止状態になることを特徴とする請求項1
    0に記載の待機冗長2重化制御装置。
  12. 【請求項12】 前記第1のCPUモジュールは、自己
    で稼動しているアプリケーションプログラムの実行の切
    れ目のタイミングでシステム処理によりデータの等値化
    処理を実行することを特徴とする請求項1乃至11に記
    載の待機冗長2重化制御装置。
  13. 【請求項13】 稼動CPUから待機CPUへ直接にデ
    ータの等値化をする為の専用命令を備え、前記第1のC
    PUモジュールで稼動するアプリケーションプログラム
    は、第1のCPUモジュール内のユーザメモリの変数領
    域から前記第2のCPUモジュールのユーザメモリの同
    じ変数領域にデータを直接に等値化転送し、また前記第
    1のCPUモジュールと第2のCPUモジュールには同
    一のアプリケーションプログラム格納されており、該第
    2のCPUモジュールが稼動状態で第1のCPUモジュ
    ールが待機状態の時は、第2のCPUモジュールで稼動
    するアプリケーションプログラムは、該第2のCPUモ
    ジュール内のユーザメモリの変数領域から、第1のCP
    Uモジュールのユーザメモリの同じ変数領域にデータを
    直接等値化転送することを特徴とする請求項1乃至12
    に記載の待機冗長2重化制御装置。
  14. 【請求項14】 1乃至複数組のCPUモジュールを備
    え、待機冗長2重化を行っている待機冗長2重化制御装
    置で稼動するアプリケーションプログラムを開発するア
    プリケーションプログラム開発装置であって、 アプリケーションプログラムのコンパイル処理時に、該
    アプリケーションが等値化対象としているデータの合計
    サイズを調べる等値化データサイズチェック手段と、 前記等値化データサイズチェック手段が調べた合計サイ
    ズが規定値以上である時、ユーザに通知する通知手段と
    を備えたアプリケーションプログラム開発装置。
JP2000332549A 2000-10-31 2000-10-31 待機冗長2重化制御装置及びそのアプリケーションプログラム開発装置 Pending JP2002140206A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000332549A JP2002140206A (ja) 2000-10-31 2000-10-31 待機冗長2重化制御装置及びそのアプリケーションプログラム開発装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000332549A JP2002140206A (ja) 2000-10-31 2000-10-31 待機冗長2重化制御装置及びそのアプリケーションプログラム開発装置

Publications (1)

Publication Number Publication Date
JP2002140206A true JP2002140206A (ja) 2002-05-17

Family

ID=18808742

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000332549A Pending JP2002140206A (ja) 2000-10-31 2000-10-31 待機冗長2重化制御装置及びそのアプリケーションプログラム開発装置

Country Status (1)

Country Link
JP (1) JP2002140206A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011227597A (ja) * 2010-04-16 2011-11-10 Hitachi Ltd プログラマブル表示器の監視操作方法、監視操作プログラムおよびプログラマブル表示器
JP2013235311A (ja) * 2012-05-07 2013-11-21 Mitsubishi Electric Corp エンジニアリング装置
US10073431B2 (en) 2014-04-24 2018-09-11 Mitsubishi Electric Corporation PLC unit and programmable logic controller

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011227597A (ja) * 2010-04-16 2011-11-10 Hitachi Ltd プログラマブル表示器の監視操作方法、監視操作プログラムおよびプログラマブル表示器
JP2013235311A (ja) * 2012-05-07 2013-11-21 Mitsubishi Electric Corp エンジニアリング装置
US10073431B2 (en) 2014-04-24 2018-09-11 Mitsubishi Electric Corporation PLC unit and programmable logic controller

Similar Documents

Publication Publication Date Title
US7853767B2 (en) Dual writing device and its control method
EP0514075A2 (en) Fault tolerant processing section with dynamically reconfigurable voting
US20070174517A1 (en) Managing management controller communications
JP3882783B2 (ja) プログラマブルコントローラ及びcpuユニット並びに通信ユニット及び通信ユニットの制御方法
US20090193229A1 (en) High-integrity computation architecture with multiple supervised resources
JPH052571A (ja) プロセス制御システムにおいて一次データベースと二次データベースの両端相互検証を実行する方法
CA2051763C (en) Method for guaranteeing data stored in a primary and secondary data base in a process control system
US7644263B2 (en) Storage control system and boot control system
US8015437B2 (en) Restoring data to a distributed storage node
WO1992005490A1 (en) Exclusive control method for shared memory
US8601215B2 (en) Processor, server system, and method for adding a processor
JPH08320835A (ja) 外部バスの障害検出方法
GB2366012A (en) Fault Tolerant Computer System
JPH08106399A (ja) マルチプロセッサシステム
JP2002140206A (ja) 待機冗長2重化制御装置及びそのアプリケーションプログラム開発装置
JP3127941B2 (ja) 二重化装置
KR20000021045A (ko) 컴퓨터 제어의 이중화 방법 및 그 시스템
JPH07281915A (ja) 集積回路モジュール同期2重系情報処理装置
JP3513484B2 (ja) 並列計算機システムの管理装置
JP2003273875A (ja) データサーバ
KR20220069747A (ko) 클러스터링 시스템을 위한 전원 공급 장치
JPH09305494A (ja) 拡張記憶装置のデータ転送制御回路
JPH06259274A (ja) 二重系システム
JP2001256071A (ja) 冗長化システム
JP2716571B2 (ja) 二重化データ保全装置

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20040218

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050914

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070821

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071022

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080219