JP5423473B2 - フォールトトレラント装置、その制御モジュール、プログラム - Google Patents

フォールトトレラント装置、その制御モジュール、プログラム Download PDF

Info

Publication number
JP5423473B2
JP5423473B2 JP2010041884A JP2010041884A JP5423473B2 JP 5423473 B2 JP5423473 B2 JP 5423473B2 JP 2010041884 A JP2010041884 A JP 2010041884A JP 2010041884 A JP2010041884 A JP 2010041884A JP 5423473 B2 JP5423473 B2 JP 5423473B2
Authority
JP
Japan
Prior art keywords
output
information
input
processing unit
verification
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
Application number
JP2010041884A
Other languages
English (en)
Other versions
JP2011180665A (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.)
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 JP2010041884A priority Critical patent/JP5423473B2/ja
Publication of JP2011180665A publication Critical patent/JP2011180665A/ja
Application granted granted Critical
Publication of JP5423473B2 publication Critical patent/JP5423473B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Safety Devices In Control Systems (AREA)

Description

本発明は、二重化/比較方式によるフォールトトレラント装置に関する。
非特許文献1にはフォールトトレランスを実現する方式について記載されている。特に5章における“5・1動的二重化”には、「二重化/比較方式」によるフォールトトレラントシステムの概念が記載されている。「二重化/比較方式」では、2個の機能モジュールに同じ仕事(処理)をさせて結果を比較することで、誤り検出する方式である。
図20は、上記「二重化/比較方式」によるフォールトトレラントシステムの概念を示す図である。
図20に示すシステムは、同期して同じ動作を行う2つのモジュール100A、100B(制御モジュール;CPUモジュール)と、比較器101と、切替部102を有する。切替部102は2つのモジュール100A、100Bからの出力を入力し、何れか一方を不図示の外部システムに出力する。比較器101は、2つのモジュール100A、100Bからの出力を入力して、比較照合し一致/不一致を検出し、検出結果に応じて切替部102を制御する。例えば、不一致検出後に、必要ならば正常モジュール側に切り替える。
また、特許文献1には、上記図20のような比較器、切替部を用いるのではなく、2つのCPU間が同期信号線で接続された構成とし、この同期信号線を介して2つのCPU間で入力信号の照合チェック等を行ってから入力信号をデータ編集して通信回路に出力することが開示されている。
特許文献1の発明では、二重化の入力信号をラッチして、同一入力を二重化したCPUの両系が得られるようにしている。
注)フォールトトレランス:放置しておけば故障に至るようなフォールトや誤りが存在しても、要求機能の遂行を可能にするアイテムの属性
フェールセーフ:アイテムが故障したとき、あらかじめ定められた一つの安全な状態をとるような設計上の性質
出典:JIS Z 8115 ディペンダビリティ(信頼性)用語
特開2006−178730号公報
南谷崇著「フォールトトレラントコンピュータ」オーム社1991年
非特許文献1は、安全性よりも可用性を中心に記載されている。安全性としては不一致の検出による故障検知とシャットダウンなどの安全出力をするフォールトコントロールが重要である。
また、特許文献1は入力を一致化する方式が提案されているが、入力から出力までのレ
スポンス時間については触れられていない。
ここで、上記安全性に関しては、上記二重化されたモジュール/CPUの一方に故障があるか否かに係わらず、二重化されたモジュール/CPUから外部(制御対象機器等)への出力によって人的危害が発生しないことが重要である。
例えば、二重化されたモジュール/CPUからの出力が、例えば制御対象機器等を停止させる信号等(安全側出力と呼ぶ)である場合、入力から出力までのレスポンス時間が重要となる。当然、レスポンスタイムが短いことが望まれる。例えば作業員が動作中の制御対象機器に近づき過ぎたことを検知した場合の安全側出力のレスポンスタイムは、短ければ短いほど、作業員に危害が生じる可能性を少なくできる。
また、レスポンスタイムは安全距離に関係する。
例えば「ISO13855機械の安全性 - 人体各部の接近速度に対応した保護機器の位置決め」では光カーテンとプレス機間の安全距離Sは
S=K×T+C
で計算される。(ここで、K;侵入速度、T;検出後の機会全体の停止時間=光カーテンの応答速度+機械停止制御時間、 C;最小検出体から算出される追加距離)
従って、この場合、安全フォールトトレラント装置のレスポンス時間短縮は、安全距離の短縮に貢献する。
ここで、上記特許文献1のように同期信号線を介して2つのCPU間で入力信号の照合チェック等を行ってから出力を行う場合、この照合チェック処理がネックになってレスポンス時間を悪化させる。レスポンス時間を悪化させる要因としては、両系の照合処理に掛かる時間がCPUのダイバーシティにより処理速度の遅い方に依存する為である。また同期信号線におけるCPU間の伝送速度が低い場合も、これがレスポンス時間を悪化させる要因となる。
CPU間の伝送は、共通メモリを使用すれば高速化が可能であるが、共通原因故障率が増大する。また伝送の高速化を含めコストが増加するなどの問題も発生する。
また、特許文献1では、入力の照合のみを行っているが、特に、単に入力信号をデータ編集する処理を行うだけでなく、入力に応じたアプリケーション処理を実行する場合には、2つのCPUで同時に同一の入力を得たとしても出力が同一となる保証はなく、出力に関しても照合を行うことが望ましい。しかしこの場合、入力に関して照合を行い、アプリケーション処理後に出力に関する照合を行う為、2回の照合処理を行うことになり、レスポンス時間をより悪化させることになる。
この様に、二重化されたモジュール/CPUへの入力が、安全側出力である場合には、入力から出力までのレスポンス時間を短縮することが重要になる。
その一方で、二重化されたモジュール/CPUからの出力が、例えば制御対象機器等を運転開始(例えばプレス動作開始等)させる等の信号(危険側出力と呼ぶ)である場合、特にこの危険側出力がCPUの誤動作(例えばどちらか一方のCPUの故障等が原因であるが、これに限らない)の結果として出力された場合には、人的危害が発生する可能性がある。例えば、作業員が運転開始スイッチを操作していないのに機器が動作開始すれば、非常に危険である。この点からも出力に関する照合も行うことが望ましいが、上記の通り、レスポンス時間をより悪化させることになる。
また、上記図20に示す非特許文献1の構成の場合、切換部102により外部に接続されているモジュールからの出力は、比較器101に入力されると同時に切換部102を介して外部へ出力されるので、このモジュールが故障等した為に誤って上記危険側出力をした場合、比較器101によって不一致を検出して切換部102を切り替えても、既に手遅
れとなる。
本発明の課題は、二重化/比較方式によるフォールトトレラント装置において、安全性を確保しつつ、コスト高となることなく、入力から出力までのレスポンスタイムを短縮することができるフォールトトレラント装置、その制御モジュール、プログラム等を提供することである。
本発明のフォールトトレラント装置は、略同一の構成の複数の制御モジュールより成り、該複数の制御モジュールに同一の入力情報が入力され、該複数の制御モジュールが該入力情報に応じた同一のアプリケーション処理を行い、該複数の制御モジュールが相互にデータ送受信を行って照合処理を行い、該複数の制御モジュールが同一の出力信号線に出力を行うフォールトトレラント装置であって、前記各制御モジュールは、予め各種出力情報毎に、それが安全側出力であるか危険側出力であるかを登録した第1の記憶手段と、各種の前記アプリケーション処理を実行可能であり、任意の前記入力情報が入力される毎に、該入力情報に応じたアプリケーション処理を実行するアプリケーション処理実行手段と、該アプリケーション処理の結果としての出力情報が、安全側出力であるか危険側出力であるかを前記第1の記憶手段を参照して判定する安全/危険判定手段と、該安全/危険判定手段により前記出力情報が安全側出力であると判定した場合、該出力情報を前記出力信号線に出力し、その後、前記照合処理を実行し、前記安全/危険判定手段により前記出力情報が危険側出力であると判定した場合には、前記照合処理を実行し、照合OKであれば前記出力情報を前記出力信号線に出力する出力制御手段とを有する。
上記構成のフォールトトレラント装置では、安全側出力を行う場合には、照合処理を行う前に外部(制御対象機器等)への出力を行う。安全側出力はフェールセーフを実現する出力であり、例えばモータ停止、プレス停止等であり、よって誤って出力されても(照合NGとなる場合でも)人的被害発生等の問題が生じる可能性は極めて低い。そして、照合処理の前に出力を行うので、時間が掛かる処理である照合処理の処理時間分、早く出力することができ、入力から出力までのレスポンスタイムを短縮できる。また、この場合、照合処理における2つの制御モジュール間の伝送路が遅くても、出力タイミングは影響を受けないので、伝送路を安価な構成で実現できる。また、危険側出力の場合は、安全性を優先して、照合処理を行ったうえで出力を行うので、安全性を確保できる。
また、上記構成のフォールトトレラント装置において、安全側出力を行う場合には、安全性を強化する為に、出力を行う前にアプリケーション処理に関する検証処理を行うようにしてもよい。
すなわち、上記構成のフォールトトレラント装置において、例えば、予め前記各種アプリケーション処理毎に対応付けて、そのアプリケーション処理が正常に実行されたか否かを判定する為の各種条件である検証条件を記憶する第2の記憶手段を更に有し、前記出力制御手段は、前記出力情報が安全側出力であると判定された場合、前記第2の記憶手段を参照して、該出力情報に係わる前記アプリケーション処理が正常に実行されているか否かを検証し、検証OKである場合に前記出力情報を前記出力信号線に出力し、その後、前記照合処理を実行するようにしてもよい。
検証処理によってアプリケーション処理のフォールトの検知を行うことで、照合処理を行う前に外部出力しても人的危険等が発生しないようにすることを強化することができる。
また、例えば、前記出力制御手段は、前記出力情報が安全側出力であると判定された場
合における前記照合処理は、前記入力情報と出力情報とをまとめて行う。
これによって、入力の際に入力情報の照合を行い、出力の際に出力情報の照合を行うような、入力情報の照合と出力情報の照合を別々に行う場合に比べて、照合処理に関する処理時間を短縮でき、また処理負荷を軽減できる。
また、例えば、前記安全/危険判定手段は、前記アプリケーション処理の結果としての出力情報が複数ある場合、該各出力情報毎に前記第1の記憶手段を参照してその出力情報が安全側出力か危険側出力かを求め、全ての出力情報が安全側出力である場合に安全側出力であると判定する。
出力情報が複数ある場合、そのうちの1つでも危険側出力であった場合には、安全性を優先して、照合処理を行ったうえで出力を行うことで、人的危険等が発生しないようにする。
本発明のフォールトトレラント装置、その制御モジュール、プログラム等によれば、二重化/比較方式によるフォールトトレラント装置において、安全性を確保しつつ、コスト高となることなく、入力から出力までのレスポンスタイムを短縮することができる。これは、複数種類の出力が行われる場合でも対応可能である。
実施例1の二重化装置の構成・機能ブロック図である。 (a)、(b)は実施例1における安全側出力タイムチャート、危険側出力タイムチャートである。 実施例1の安全管理テーブルのデータ構成例である。 判定テーブルのデータ構成例である。 検証テーブルのデータ構成例である。 実施例1の入力処理部の処理フローチャート図である。 判定処理部の処理フローチャート図である。 実施例1のアプリケーション処理部の処理フローチャート図である。 検証処理部の処理フローチャート図である。 実施例1の照合処理部の処理フローチャート図である。 診断処理部の処理フローチャート図である。 実施例2の二重化装置の構成・機能ブロック図である。 (a)、(b)は実施例2における安全側出力タイムチャート、危険側出力タイムチャートである。 実施例2の安全管理テーブルのデータ構成例である。 実施例2の入力処理部の処理フローチャート図である。 実施例2のアプリケーション処理部の処理フローチャート図である。 入出力バッファのデータ構成例である。 出力同定処理部の処理フローチャート図である。 実施例2の照合処理部の処理フローチャート図である。 従来の二重化装置の概略構成例である。
以下、図面を参照して本発明の実施の形態について説明する。
本手法として、実施例1と実施例2を示す。まず、実施例1について図1〜図11を参照して説明する。
図1は、実施例1の二重化装置(フォールトトレラント装置)の構成・機能ブロック図である。
図1に限らず後述する図12に示す実施例2においても同様であるが、本例の二重化装置(フォールトトレラント装置)は、2つのCPUモジュール1A,1Bから成り、「二重化/比較方式」の構成をとる。すなわち、2つのCPUモジュール1A,1Bには、同一のデータが入力され、各々で入力データに応じた所定の処理(両モジュールで同一の処理)を行い、基本的には両モジュール1間で入力と処理結果(出力)に関する比較照合処理を行ったうえで、照合OKであれば処理結果(出力)を外部(制御対象機器等)へ出力する。但し、本例の二重化装置では、照合処理を行う前に出力を行う場合もある。すなわち、後述する「安全側出力」の場合は、照合処理を行う前に出力を行い、その後、照合処理を実行する。後述する「危険側出力」の場合は、照合処理を行ってOKであれば出力(入力に応じた出力)を行う(照合NGの場合、本例では緊急停止出力を行うが、これは入力に応じた出力とは見做さない)。
尚、「二重化/比較方式」とは、必ずしも2つのモジュールから成るものとは限らず、3つ以上のモジュールから成るものであってもよく、3つ以上の場合でも“二重化”と言うものとする。
また、本例の二重化装置(フォールトトレラント装置)のCPUモジュールは、例えばプログラマブルコントローラ等の制御モジュールに相当するものであり(制御モジュールが「二重化/比較方式」の構成をとっている)、その出力先としては例えばランプ、表示部等の物理的に動作しない機器や、モータ、プレス機等の物理的に動作する機器である。ここでは、特に、物理的に動作しない機器に対する出力を「非安全関連出力」と呼び、物理的に動作する機器に対する出力を「安全関連出力」と呼ぶものとする。この「安全関連出力」は更に上記「安全側出力」と「危険側出力」とに分類される。
尚、出力を「安全側出力」と「危険側出力」とに分類するのは、例えば人間が判断するものである。一例としては、図3に示すように分類するが、この例に限るものではない。基本的な考え方としては、「安全側出力」とはフェールセーフを実現するものである。“フェールセーフ”とは、ここでは、「失敗しても安全であるということ」を意味するものとする。つまり、「安全側出力」とは、何らかの異常等によりCPUモジュール1から誤
って出力されてしまっても、安全である(特に人間に危害が発生しない)ような出力を意味するものである。
例えば、プレス機の停止指令の出力等は、フェールセーフを実現する安全側出力と考えられる。つまり、誤って停止信号が出力されたとしても、それによってプレス機が停止しても人的危害は発生しない。一方、プレス機の動作開始指令などの出力は、それによってプレス機が動き出すことで近くに居る人間に危害が加わる可能性があるので、「危険側出力」に分類すべきものとなる。
この様に、「安全側出力」、「危険側出力」の分類は、予め上記基本的考えに従って人間が判断して例えば図3のように登録しておく。
CPUモジュール1Aと1Bの間は、特に図示しないが照合や相互診断を行うため相互伝送が可能な構成をとる。相互伝送が可能な構成(通信線/通信方式等;以下、相互伝送路というものとする)は、例えばシリアル通信など互いに他CPUの故障の影響を受けず且つ安価に実現できる構成を採用する。従来ではこの相互伝送路を介したCPUモジュール1A−1B間相互の照合処理に時間が掛かる為、入力から出力までのレスポンス時間が悪化しており、またこの問題を解消する為に伝送路に共通メモリを採用した場合、共通原因故障率が増大し且つコスト高となっていた。これに対して本手法では、シリアル通信等の安価に実現できる構成であってもレスポンス時間を短縮でき、且つ上記共通原因故障率の増大、コスト高等の問題も生じない。
外部(制御対象機器等)への出力は、CPUモジュール1A,1Bそれぞれから出力され、ハードウェアで例えば1本の出力信号線で出力される。よって、場合によっては同一信号がCPUモジュール1AとCPUモジュール1Bからそれぞれ出力される場合があるが、これは特に問題にならない(その場合は早い方が優先となる)。
本例の二重化装置は、例えばプログラマブルコントローラシステム(制御システム)のコントローラ本体に適用される。この場合、CPUモジュール1A,1Bからの出力先は、任意の制御対象機器等(不図示)である。また、不図示の外部からCPUモジュール1A,1Bに入力される信号/データは、この制御対象機器に係わる何らかの信号/データである。例えば一例としては制御対象機器がモータである場合、出力はこのモータの起動、停止、緊急停止、回転数制御信号等となり、入力はこのモータの回転数を検出するセンサからの検出信号(パルスカウント値)、危険領域への人間侵入を検知するセンサからの検知信号、起動/停止/緊急停止等の操作ボタンが操作された場合の信号等となる。これら各種信号に対応する信号線がある(よって、後述する入力処理部15の入力側には複数の信号線が接続されている)。これら複数の信号線からの信号は、アナログの信号もあればディジタルの信号もある。
CPUモジュール1A,1Bは、構成・機能は同一であってよい。よって、図示の通り、各構成・機能には同一符号を付してある。これより、以下、特にCPUモジュール1Aと1Bとを区別せずに、CPUモジュール1と総称して説明するものとする。但し、ダイバーシティを考慮して、CPUの機種などのハードウェアおよびソフトウェアは別である場合もある(例えば特許文献1に記載の通り)。
また、以下の説明における自系、他系とは、例えばCPUモジュール1Aにとっては自己(CPUモジュール1A)が自系であり、CPUモジュール1Bが他系となり、同様にCPUモジュール1Bにとっては自己(CPUモジュール1B)が自系であり、CPUモジュール1Aが他系となる。
CPUモジュール1は、判定テーブル11、安全管理テーブル12、検証テーブル13
の各種登録データテーブル(予め設定されたデータを記憶している)と、診断処理部14、入力処理部15、照合処理部16a、16b、16c、判定処理部17a、17b、17c、17d、アプリケーション処理部18、検証処理部19の各種処理機能部を有する。
ここで、各処理機能部は、それぞれ何らかの入力に応じて(例えば前段の処理機能部から渡される)何らかの出力を行うものであるが、本説明では特に、入力処理部15から出力される情報(入力種別、そのデータ値等)を“入力情報”と呼び、アプリケーション処理部18から出力される情報すなわち上記入力情報に応じた所定のアプリケーション処理の結果としての情報(出力種別、そのデータ値等)を“出力情報”と呼ぶものとする。尚、検証処理または照合処理による緊急停止出力も“出力情報”と見做してもよい。
尚、“入力情報”は、入力処理部15が外部からの入力信号(その変化等)に応じて生成する情報である。例えば一例としては上記パルスカウント値を入力する信号線に関しては、入力処理部15はこのパルスカウント値に基づいて速度値を演算して、この速度値を入力種別(速度入力)と共に(これらが“入力情報”となる)後段の処理機能部に渡すことになる。あるいは例えば始動信号を入力する信号線に関しては、入力処理部15は、この信号線の信号がOFF→ONに変化したことを(信号の立ち上がりを)検知すると、入力種別“始動”と判定して、この入力種別(始動)を上記“入力情報”として後段の処理機能部に渡すことになる。尚、本例の入力処理部15は、更に安全管理テーブル12を参照して、後段の処理機能部を選択する処理も行っている(詳しくは後述する)。
但し、これは既存の機能処理部である入力処理部15の処理例を具体的に示しているだけであり、単純に、外部からの入力(または入力信号変化)を“入力情報”と見做してもよい。
尚、判定処理部17a、17b、17c、17dは、本例では何れも同一のアプリケーションを起動して実行される処理機能部であり、処理フロー自体は同一である(後述する図7のフローチャート図の処理)が、処理内容が異なる場合があることから(更に説明し易くする為に)、同一符号にはせずに区別して示している。大別して、判定処理部17aは“入力情報”に関する判定を行い、判定処理部17b、17c、17dは“出力情報”に関する判定を行うものである(判定処理部17dは特に緊急停止出力に関する判定を行う)。但し、上記の通り処理フロー自体は同一であることから、区別せずに判定処理部17と呼ぶ場合もある。判定処理部17は起動されると(他の処理部から呼び出されると)図7の処理を実行することになる。
これは、照合処理部16a、16b、16cについても同様であり、照合処理部16a、16b、16cは、本例では何れも同一のアプリケーションを起動して実行される処理機能部であり、処理フロー自体は同一である(後述する図10のフローチャート図の処理)が、処理内容が異なる場合があることから(更に説明し易くする為に)、同一符号にはせずに区別して示している。違いとしては、照合処理部16aは“入力情報”のみに関する照合を行い、照合処理部16bは“出力情報”のみに関する照合を行い、照合処理部16cは“入力情報”と“出力情報”の両方に関する照合を行うことである。但し、上記の通り処理フロー自体は同一であることから、区別せずに照合処理部16と呼ぶ場合もある。照合処理部16は起動されると(他の処理部から呼び出されると)図10の処理を実行することになる。
尚、別の言い方をすれば、図1に示す構成・機能ブロック図は、機能ブロックを示すだけでなく処理の流れ(フロー)も示している為、上記の通り、判定処理部17と照合処理部16を複数種類に区別して示しているが、機能ブロックのみを示すならば、CPUモジ
ュール1が有する各種処理機能部は、診断処理部14、入力処理部15、照合処理部16、判定処理部17、アプリケーション処理部18、及び検証処理部19ということになる。
診断処理部14は後述する図11の処理を実行し、入力処理部15は後述する図6の処理を実行し、照合処理部16は後述する図10の処理を実行し、判定処理部17は後述する図7の処理を実行し、アプリケーション処理部18は後述する図8の処理を実行し、検証処理部19は後述する図9の処理を実行する。
CPUモジュール1は、特に図示しないが、例えばCPU(マイクロプロセッサ)、メモリ(フラッシュメモリ等)等の記憶装置、入力/出力インタフェース等を有しており、記憶装置には上記各種テーブル11,12,13が格納されている。また、記憶装置には、予め所定のアプリケーションプログラムが記憶されており、CPUがこのアプリケーションプログラムを読出し実行することにより、上記各種処理機能部14〜20の処理機能が実現される。尚、入力処理部15は例えば一例としては常時起動されており、任意の入力がある毎に(あるいは入力信号変化がある毎に)後述する図6に示す所定の処理を実行し、最後に後段の処理機能部を起動する。他の処理機能部も同様に、所定の処理を実行後、最後に後段の処理機能部を起動する。
図1には、上記のように各種処理機能部が順次起動・実行される処理の流れを、図示の太線(または太線矢印)で示しており、また各種処理機能部がその処理実行の際に参照するテーブルを図示の細線点線矢印で示している。
図1において上記太線(または太線矢印)の処理の流れが示すように、処理が分岐する場合がある。これは、上記“出力情報”が、安全側であるか危険側であるかによって2通りに分かれる。
“出力情報”が危険側である場合には、入力処理部15→照合処理部16a→判定処理部17a→アプリケーション処理部18→照合処理部16b→判定処理部17cというフローで処理実行される。つまり、図2(b)の危険側出力タイムチャートに示す通りのフローとなる。
図2(b)に示すように、“出力情報”が危険側である場合には、まず“入力情報”に関してCPUモジュール1A−1B間で相互に照合処理を行い、判定処理を経て、“入力情報”に応じたアプリケーション処理を実行する。そして、この処理結果(“出力情報”)に関してCPUモジュール1A−1B間で相互に照合処理を行い、判定処理を経て、外部への(例えば制御対象機器に対する)出力を行う。もし、照合処理や判定処理の結果がNGであった場合には、出力を行わないか、あるいは緊急停止等の安全確保の為の出力を行う。
一方、“出力情報”が危険側である場合には、入力処理部15→判定処理部17a→アプリケーション処理部18→検証処理部19→判定処理部17b→照合処理部16c→判定処理部17dというフローで処理実行される。つまり、図2(a)の安全側出力タイムチャートに示す通りのフローとなる。
図2(a)に示すように、“出力情報”が安全側である場合には、“入力情報”に関する照合処理は行わずに入力判定処理を経て、“入力情報”に応じたアプリケーション処理を実行する。そして、この処理結果(“出力情報”)に関して検証処理を実行し、検証OKであれば判定処理を経て外部への(例えば制御対象機器に対する)出力を行う。つまり、照合処理を行うことなく(行う前に)出力を行う。そして、出力後に、“入力情報”と
“出力情報”についてまとめて、CPUモジュール1A−1B間で相互に照合処理を実行する。もし、照合処理の結果がNGであった場合には、緊急停止等の安全確保の為の出力を行う。その際、判定処理部17を起動して、緊急停止出力に関する判定処理を実行させ(判定処理部17dの処理を実行させる)、判定OKである場合に、外部への(例えば制御対象機器に対する)緊急停止出力が行われる。
これによって、図2(a)と図2(b)に示すように、“出力情報”を外部へ出力するタイミングは、“出力情報”が安全側である場合の方が危険側の場合よりも早くなり、その分、レスポンスタイムを短縮することができる。つまり、時間が掛かる照合処理を行わないで(行う前に)“出力情報”を外部へ出力することで、照合処理に掛かる時間分、レスポンスタイムを短縮することができる。
更に、“出力情報”が安全側である場合には、検証処理部19の処理を実行することで、(詳しくは後述するように)アプリケーション処理のフォールトの検知及びフォールトコントロールすることで安全性を強化することができ、これによって、照合処理を行わずに出力を行っても危険が発生しないようにできる。
また、上記の通り本手法では“出力情報”が安全側か危険側かによって処理フローを分岐させるが、アプリケーション処理部18の処理実行前は未だ“出力情報”が安全側か危険側かは分からない。つまり、照合処理部16aの処理をスキップするか否かの分岐判定の際には、未だ“出力情報”が安全側か危険側かは分からない。しかしながら、“入力情報”の種別に応じて“出力情報”の種別が一意に決まる場合もある。これは、後述する図3に示す例の場合である。よって、図3の安全管理テーブルを参照することで、“入力情報”の種別に応じた“出力情報”の種別の出力区分(安全側か危険側か)が分かるので、未だ“出力情報”が生成されていない段階においても、照合処理部16aの処理をスキップするか否かの分岐判定を行うことができる。逆に言えば、本説明における実施例1は、このような前提に元で実現できる。
但し、実施例1は、本説明の例に限らない。例えば、後述する実施例2と同様に、“出力情報”が危険側出力の場合でも照合処理は“入力情報”と“出力情報”をまとめて実行するようにしてもよい(これを実施例1の変形例と呼ぶ)。この場合、図1において照合処理部16aは削除され、よって照合処理部16aの処理をスキップするか否かの分岐判定を行う必要はなくなる。また、この場合、照合処理部16bは、照合処理部16cと同様に、“入力情報”と“出力情報”の両方の照合処理をまとめて実行する。この場合には、“入力情報”の種別に応じて“出力情報”の種別が一意に決まらない場合でも問題なく適用できる。
何れにしても、本手法の実施の形態は様々であってよく、ここで説明する例に限らない。本手法の特徴は、“出力情報”が危険側である場合には照合処理を行ってから外部へ出力するが、“出力情報”が安全側である場合には照合処理を行う前に外部へ出力することであり、これを実現できる実施形態であれば何でもよい。この特徴によって、入力から出力までのレスポンスタイム(CPUモジュール1に入力(または入力信号変化)があってからCPUモジュール1から外部に“出力情報”が出力されるまでに掛かる時間)を短縮し、以って安全距離の短縮に貢献することである。
尚、上記の通り、“出力情報”が安全側である場合には、もしこの“出力情報”が間違ったものであったとしても安全である(特に人間に危害が発生しない)。よって、照合処理を行う前に外部へ出力しても基本的には問題はない。但し、より安全性を強化する為に、検証処理部19を新たに設け、“出力情報”が安全側である場合には検証処理を行ってから外部へ出力するようにしてもよい。照合処理は2つのCPUモジュール1A−1B間
で相互に通信を行う為、時間が掛かるが、検証処理はそのCPUモジュール1単独で処理できるので、照合処理に比べて短時間で処理完了できる。よって、検証処理を行う場合でも従来に比べて(危険側の場合に比べて)短時間で出力を行える。
以下、上記CPUモジュール1の各種登録データ、各種処理機能部について、まず概略的に説明する。
まず、各種登録データについて概略的に説明する。
安全管理テーブル12は、各種“出力情報”の出力種別毎に、その“出力情報”が安全側か危険側かを定義しており、その具体例は図3に示し、後に説明する。安全管理テーブル12の内容は、上記の通り、予め人間が判断して登録する。尚、上記の通り、本例では入力種別に応じて出力種別が一意に決まる場合を前提としており、図3に示すように、各出力種別に応じた入力種別も定義されている。
安全管理テーブル12は、本例では、入力処理部15、照合処理部16、判定処理部17、アプリケーション処理部18がそれぞれ参照する。但し、この例に限らない。
判定テーブル11は、入力または出力の是非(入力許可または出力許可)を判定する為の入力条件または出力条件が定義されており、その具体例は図4に示し、後に説明する。判定テーブル11の内容は、予め人間が判断して登録する。判定テーブル11は判定処理部17が参照する。
検証テーブル13は、アプリケーション処理部18によるアプリケーション処理(“入力情報”に応じた“出力情報”の生成処理)のフォールト検知の為の各種検証値が定義されており、その具体例は図5に示し、後に説明する。図5に示す例では、入力パラメータ、出力パラメータ、処理制限時間の3つの検証項目毎に検証のための検証値が定義されているが、この例に限るものではない。
次に、各種処理機能部について概略的に説明する。
ここで、まず、診断処理部14だけは他の処理機能部とは異なり、外部からの任意の入力(入力変化)があった場合に動作するのではなく、例えば定期的に起動されて動作する。診断処理部14は、CPUモジュール1の自己(自系)診断処理、他系CPUモジュール1との相互監視処理を行う。診断の内容はIEC61508で規定された内容に従ったものとなる。つまり、診断処理部14による診断処理自体は、既存の一般的な処理であってよい。
尚、図1には示していないが、CPUモジュール1の記憶装置(メモリ)には、上記各種テーブル以外に、不図示のシステムステータス情報も記憶されている。このシステムステータス情報には、例えば診断処理部14による診断結果等が含まれる。このシステムステータス情報は、例えば、自系ステータス(自系正常/自系異常)、他系ステータス(他系正常/他系異常)、相互伝送ステータス(相互伝送正常/相互伝送異常)、照合処理結果(照合OK/照合NG)、検証処理結果(検証OK/検証NG)等である。このうち、照合処理結果と検証処理結果以外が、診断処理部14による診断結果である。
診断処理部14の具体的処理例を図11に示し、後に説明するが、上記の通りこの処理自体は既存の一般的な処理と略同様と考えてよい。
尚、判定処理部17による判定処理の際には、上記システムステータス情報も参照する。
入力処理部15は、外部から任意の入力信号(例えばセンサ検出信号、あるいは起動/停止信号等の何らかの指示信号等)がある毎に、上記の通りこの入力信号(または信号変
化)に応じた“入力情報”を生成する。そして、安全管理テーブル12を参照して、この“入力情報”(その入力種別)に応じた“出力情報”(その出力種別)が安全側か危険側かを判定して、この判定結果に基づいて後続処理を起動する。入力処理部15は、定期的に起動して入力の状態変化を検知した場合に図6の処理を開始する方式と、割り込みのデマンドを受けて起動して図6の処理を開始する方式がある。入力処理部15の具体的処理例を図6に示し、後に説明する。
入力処理部15によって、判定処理部17a、照合処理部16aの何れか一方が起動されて処理実行される。照合処理部16aに関しては、後に説明する。
判定処理部17は、入力または出力の是非を判定する。判定処理部17aは入力の是非(入力の許可/不許可)を判定し、判定処理部17b〜17dは出力の是非(出力の許可/不許可)を判定する。判定処理部17の具体的処理例を図7に示し、後に説明する。
また、アプリケーション処理部18は、上記“入力情報”(その入力種別)に応じた所定のアプリケーション処理を実行する。この所定のアプリケーション処理自体は、既存の処理であり、特に説明しないが、一例としては、例えば緊急停止デマンド、非常停止デマンド、始動、モード切り替え等に関する処理がある。何れにしても、アプリケーション処理部18は、上記所定のアプリケーション処理実行により外部からの入力に応じた“出力情報”を生成することになる。
そして、アプリケーション処理部18は、この“出力情報”生成後に、最後に、この“出力情報”が安全側か危険側かによって、検証処理部19、照合処理部16bの何れか一方を起動する。
アプリケーション処理部18の具体的処理例を図8に示し、後に説明する。
検証処理部19は、上記アプリケーション処理部18による所定処理の結果(“出力情報”が、安全側出力である場合にのみ動作する機能部であり、検証テーブル13を参照して、この所定処理の妥当性を検証する処理を行う。検証処理部19の具体的処理例を図9に示し、後に説明する。
照合処理部16は、上記相互伝送路を介して他系のCPUモジュール1と通信を行って、“入力情報”または“出力情報”の照合、あるいは“入力情報”と“出力情報”の両方の照合を行う(一致するか否かをチェックする)。つまり、CPUモジュール1A−1B間で相互に“入力情報”、“出力情報”の照合を行う。これは、本例では、危険側出力の場合は“入力情報”、“出力情報”の照合を別々に行い、安全側出力の場合は“入力情報”と“出力情報”の照合をまとめて行う。尚、図示のように16a、16b、16cと区別した場合には、照合処理部16aは入力のみの照合を行い、照合処理部16bは出力のみの照合を行い、照合処理部16cは入力と出力の照合をまとめて行うという違いはあるものの、照合処理の内容自体に殆ど違いはないと考えてよい。
照合処理部16の具体的処理例を図10に示し、後に説明する。
上記構成により、アプリケーション処理部18による“入力情報”に応じたアプリケーション処理結果としての“出力情報”が、安全側である場合には、照合処理は行う前に“出力情報”を外部へ(例えば制御対象機器への)出力する。尚、その前に、検証処理を行うことが望ましい。そして、その後に照合処理を行う。これは上記の通り“入力情報”の照合と“出力情報”の照合をまとめて行う。照合処理は時間が掛かるので、照合処理を後回しにして先に出力を行えるようにすることで、入力から出力までのレスポンスタイムを大幅に短縮することが可能となる。また、“入力情報”の照合と“出力情報”の照合を別々に行う場合に比べて、これらの照合をまとめて行うことでもレスポンスタイム短縮効果が得られる。
尚、アプリケーション処理実行前は(未だ“出力情報”が得られていない段階では)、“入力情報”に基づいて、“出力情報”の出力区分(安全側か危険側か)を仮に判定する。アプリケーション処理部18による処理が正常に実行された場合には、“出力情報”の出力区分は仮の判定通りとなる。
一方、“出力情報”が危険側である場合には、“入力情報”に関する照合処理を実行し、照合OKであればアプリケーション処理部18の処理を実行し、続いて、アプリケーション処理部18からの“出力情報”に関する照合処理を実行し、照合OKであれば外部へ“出力情報”を出力する(尚、入力情報/出力情報に対して随時、判定処理を行う)。この様に、照合処理を行ったうえで、OKであれば外部への出力を行うので、入力から出力までのレスポンスタイムは、“出力情報”が安全側である場合に比べて長くなるが、出力が危険側である以上、安全性を優先した処理とする。これによって安全性を確保できる。
以下、上記CPUモジュール1の各種登録データ、各種処理機能部について、図3〜図11を参照して詳細に説明する。
まず、図3〜図5を参照して、各種登録データについて詳細に説明する。
図3に、実施例1の安全管理テーブル12のデータ構成例を示す。
図示の安全管理テーブル12は、番号31、出力種別32、入力種別33、出力区分34の各データ項目より成る複数のレコードにより構成される。
番号31は、各レコードを特定するための一意の通し番号である。
出力種別32は、各“出力情報”の種別を示す。尚、図1では出力線は1本のみ示すが、各出力種別(出力情報)毎の複数の出力線があってよい(但し、1本の出力線に複数の出力種別の信号が出力される場合もある。例えば、出力種別として始動と停止があったとし、同一の信号線において、信号の立ち上がりは始動、立下りは停止を意味する場合もある)。
入力種別33は、出力種別32の“出力情報”を生成するデマンドとなる“入力情報”の種別を示す。
出力区分34は、各出力種別32の“出力情報”が安全側であるか危険側であるかを示す。
尚、“入力情報”は入力種別とデータ値(入力値)より成る(但し、データ値が無い場合もある;例えば起動/停止のデマンド等)。同様に、“出力情報”は出力種別とデータ値より成る(但し、データ値が無い場合もある;例えば起動/停止信号等)。
安全管理テーブル12には、各出力種別32毎に、その“出力情報”が安全側であるか危険側であるかが登録されている。また、各出力種別32に対応する入力種別33が登録されている。これによって、入力種別33に対応する出力種別32の出力区分34(安全側or危険側)が分かる。つまり、未だ“出力情報”が得られてない段階で、“入力情報”に基づいて、その“入力情報”に応じた“出力情報”が安全側であるか危険側であるかを判断可能となっている。
尚、入力処理部15は、外部からの入力信号の入力種別を認識できるようになっている。例えば、図1では入力線は1本のみ示すが、上記出力線の場合と同様、各入力種別毎の複数の入力線があってよく、入力処理部15はどの入力線からの入力信号であったのかによって、入力種別を判別可能となっている。これは一例であるが、入力処理部15が入力種別を認識できること自体は、既存技術であり、様々な方法があってよい。
図4に、判定テーブル11のデータ構成例を示す。
図示の判定テーブル11は、番号41、入力/出力42、出力区分43、「入力条件または出力条件」44の各データ項目より成る複数のレコードにより構成される。
番号41は、各レコードを特定するための一意の通し番号である。
入力/出力42には、入力、出力の何れかが格納される。これは、そのレコードにおける「入力条件または出力条件」44が、“入力情報”の判定に使用する条件か、“出力情報”の判定に使用する条件かを示す。
出力区分43は、入力/出力42が出力の場合に、安全側、危険側のどちらかが格納される。
「入力条件または出力条件」44は、入力情報の入力を許可する条件または出力情報の外部出力を許可する条件を示す。
図3に示す例の判定テーブル11では、「入力条件または出力条件」44は3つのグループに分けられる。すなわち、入力/出力42が“入力”の場合のグループ(番号41が1〜3の3つ)と、入力/出力42が“出力”且つ出力区分43が“安全側”のグループ(番号41が4〜9の6つ)と、入力/出力42が“出力”且つ出力区分43が“危険側”のグループ(番号41が10〜12の3つ)とに分けられる。
そして、判定処理部17による判定処理の際には、そのときの状況(入力判定か出力判定か、出力判定の場合は更に“出力情報”が安全側か危険側か)に応じたグループの「入力条件または出力条件」44に基づいて判定を行う。上記の例では、状況が何れの場合でも、判定に用いる「入力条件または出力条件」44は複数あることになるが、複数の条件のうち1つでも該当する場合には、入力または出力を許可するものと判定する。
尚、「入力条件または出力条件」44は、基本的には、自系が正常であることが最低限の条件となっている。但し、緊急停止出力に関しては例外的に、自系異常であっても出力を許可する。
図示の例の各「入力条件または出力条件」44において、例えば番号41=‘3’の条件は、照合処理部16aを経由しない判定処理部17aの処理において適用される。例えば番号41=‘1’または‘2’の条件は、照合処理部16aを経由した判定処理部17aの処理において適用される。基本的には番号41=‘1’の条件のように、診断処理による診断結果が全て正常で且つ照合処理部16aで照合OKになった場合には、入力を許可することになる。但し、他系CPUモジュール1が異常または相互伝送異常であっても、自系が正常であれば入力を許可する。
また、例えば、番号41=‘4’または‘5’または‘6’の条件は、検証処理部19において検証OKと判定されて後述するステップS45で起動された判定処理部17bの処理において適用される。この場合、自系が正常でありさえすれば、他系や相互伝送に異常があったとしても、判定OKとなる(出力許可し外部へ出力される)。また、例えば、番号41=‘7’の条件は、検証NGと判定された後述するステップS47で起動された判定処理部17bの処理において適用される。この場合、自系が正常でありさえすれば、他のステータスは関係なく判定OKとなり、ステップS47で出力される緊急停止出力が外部へ出力される。
番号41=‘9’〜‘12’は照合処理部16から起動された場合に適用される条件であり、上記検証処理部からの起動の場合と略同様であり、ここでは特に説明しない。尚、
番号41=‘8’は、自系異常の場合の緊急停止出力に関する条件であり、本手法には特に関係しないので特に説明しない。また、尚、図4には全ての条件を載せているわけではなく、他の条件もあってよい。
判定処理部17は、出力に関しては、“出力情報”(ここでは緊急停止出力も含まれる)を外部に出力するか否かを判定するものであり、判定OKである場合には“出力情報”を外部へ出力する。一方、入力に関しては、“入力情報”を内部に取り込むか否か(アプリケーション処理を実行するか否か)を判定するものであり、判定OKである場合には、“入力情報”を内部に取り込み、アプリケーション処理を実行させる。
尚、上記“入力”とは判定処理部17への入力が“入力情報”である場合を意味し、上記“出力”とは判定処理部17への入力が“出力情報”である場合を意味する。尚、ここでは、“出力情報”には照合処理部16や検証処理部19等からの緊急停止出力も含まれる。
判定処理部17を起動した処理機能部が、判定処理部17へ渡す情報が“入力情報”であるか“出力情報”であるかを示す入力/出力識別情報も一緒に渡すので、これによって“入力”/“出力”を認識できる。
尚、「入力条件または出力条件」44に示す具体例における「緊急停止出力」は緊急時の安全対策出力の一例であり、この例に限らず、適用するシステムによって該当する緊急時の安全対策出力を登録する。
図5に、検証テーブル13のデータ構成例を示す。
図示の検証テーブル13は、番号51、アプリケーション処理名52、制限時間53、入力パラメータ54、出力パラメータ55の各データ項目より成る複数のレコードにより構成される。
番号51は、各レコードを特定するための一意の通し番号である。
アプリケーション処理名52には、アプリケーション処理部18が実行する各種アプリケーション処理の名称等(名称に限らず、アプリケーション識別ID等であってもよい)が格納される。尚、図では番号51=‘1’におけるアプリケーション処理名52(速度範囲チェック処理)のみ記載されているが、他は省略して示しているだけであり、基本的に、アプリケーション処理部18が実行する各種アプリケーション処理の全ての名称等が、各レコードに登録されており、それぞれに対応する検証条件が登録されている。
そして、検証テーブル13には、各アプリケーション処理名52に対応付けて、検証の為の各種検証条件が登録されている。ここでは、一例として上記制限時間53、入力パラメータ54、出力パラメータ55の3つの検証条件を示すが、この例に限るものではない。更に何らかの条件を追加してもよいし、この3つの条件とは異なる別の条件であってもよい。
制限時間53には、アプリケーション処理部18におけるアプリケーション処理名52のアプリケーション動作時間に関する任意の制限時間が登録される。
入力パラメータ54には、アプリケーション処理の入力パラメータを検証する条件が登録される。
出力パラメータ55には、アプリケーション処理の出力パラメータを検証する条件が登録される。
そして、検証処理部19における検証処理の際には、まずアプリケーション処理名52
により該当するレコードを検索して、このレコードの制限時間53、入力パラメータ54、出力パラメータ55の全ての検証条件を満たす場合に、検証OKと判定する。
尚、アプリケーション処理部18は、検証処理部19を起動後、上記検証条件に対応する情報(本例では、処理実行時間、入力パラメータ値、出力パラメータ値)を、検証処理部19に渡す。検証処理部19は、これら渡された各種情報が対応する検証条件を満たすか否かを判定する。
以下、図6〜図11を参照して、各種処理機能部について詳細に説明する。
図6は、入力処理部15の処理フローチャート図である。
図6の処理では、まず、外部からの任意の入力信号(信号変化等)があると、これに基づいて上記の通り“入力情報”を生成する(ステップS11)。既に述べた通り、“入力情報”は、入力種別や入力値等からなる。
次に、安全管理テーブル12を読み込み(参照し)、上記“入力情報”の入力種別に対応する出力区分34を取得する(“入力情報”に応じた“出力情報”が安全側か危険側かを判別する)(ステップS12)。そして、この出力区分34が安全側である場合には(ステップS13,YES)判定処理部17を起動し、危険側である場合には(ステップS13,NO)照合処理部16を起動する。
つまり、既に述べた通り本例においては、“入力情報”の種別に応じて“出力情報”が安全側になるか危険側になるかを推測できることを前提としており、安全側である場合には安全側の処理手順で処理実行し(よって、この時点では照合処理は行わずに判定処理を行う)、危険側である場合には危険側の処理手順で処理実行する。
換言すれば、“出力情報”が安全側である場合には出力安全側モードとしての処理手順で順次処理実行し、“出力情報”が危険側である場合には出力危険側モードとしての処理手順で順次処理実行する。本例では、これを各処理機能部が後段の処理機能部を選択・起動することで実現するが、この例に限らず、例えば全体を管理する処理機能部を設け、この処理機能部が出力安全側モードであるか出力危険側モードであるかに応じて、各処理機能部を順次起動する処理を行うようにしてもよい。順次起動する手順は、図2(a)、(b)に示す通りである。
図7は、判定処理部17の処理フローチャート図である。
当該判定処理への入力、すなわち当該判定処理部17を起動した処理機能部から渡される情報(パラメータ)は、“入力情報”または“出力情報”と、“入力情報”であるか“出力情報”であるかを示す識別情報(入力/出力識別情報というものとする)である。この入力/出力識別情報により、当該判定処理部17へ渡されるデータが“入力情報”であるか“出力情報”であるかを認識できる。
尚、入力処理部15は、上記ステップS14,S15の何れかで起動した処理機能部に対して、“入力情報”と入力/出力識別情報を渡す処理も行っている。この場合、当然、入力/出力識別情報は入力を示す情報となっている。同様に、アプリケーション処理部18も、上記所定処理で得た“出力情報”と入力/出力識別情報を、後段の(自己が起動した)処理機能部に渡す処理も行っている。
照合処理部16は、認証OKである場合には、自己に渡された情報とその入力/出力識別情報を、(自己が起動した)判定処理部17へ渡す。一方、認証NGであれば、緊急停止出力を(自己が起動した)判定処理部17へ渡す。これは検証処理部19についても同様である。判定処理部17は、自己に渡された情報に“出力情報”が含まれる場合、基本
的には、判定OKであれば、この“出力情報”を外部へ出力させる。但し、検証処理部19によって起動された場合には、更に、自己に渡された情報を(自己が起動した)照合処理部16へ渡す。あるいは、照合処理部16/検証処理部19は、自己が緊急停止等を出力する場合には、これと入力/出力識別情報を後段の(自己が起動した)処理機能部に渡す処理を行っている。尚、“出力情報”には緊急停止出力も含まれる。
但し、上記のように自己に渡された“入力情報”/“出力情報”を後段の処理機能部に渡すようにすることは、一例であり、この例に限らない。例えば、後述する実施例2の図12のように入出力バッファを設けるようにしてもよい。この場合には、入力処理部15は自己が生成した“入力情報”を入出力バッファに記憶すると共に後段の処理機能部に入力/出力識別情報(入力を示す)を渡し、アプリケーション処理部18は自己が生成した“出力情報”を入出力バッファに記憶すると共に後段の処理機能部に入力/出力識別情報(出力を示す)を渡す。他の各処理機能部は、自己に渡された入力/出力識別情報に応じて入出力バッファから“入力情報”/“出力情報”を取得し、認証OK/判定OK/検証OKであれば、この入力/出力識別情報を後段の処理機能部へ渡す(あるいは、入出力バッファから取得した“出力情報”を外部へ出力する)。
図7の処理では、まず、判定テーブル11を読み込む。更に上述した不図示のシステムステータス情報から現在のシステムの状態を読み込む。更に、入力が“出力情報”である場合には、更に、その出力種別を用いて安全管理テーブル12を検索して、この出力種別に応じた出力区分34(安全側か危険側か)を取得する(ステップS21)。
そして、判定テーブル11を参照して、上記取得した情報、すなわち入力が“入力情報”か“出力情報”か、“出力情報”である場合には安全側か危険側かによって、該当する条件を抽出し、上記現在のシステムの状態がこの条件に合致するか否かを判定する(ステップS22)。これは、まず、“入力情報”か、“出力情報”且つ安全側か、“出力情報”且つ危険側かによって、該当する判定条件を全て抽出する。これは、図4の例では上述した3つのグループの何れかのグループの判定条件を全て取得することになる。
そして、上記システムステータス情報に基づいて、現在のシステムの状態がこの抽出した判定条件に合致するか否かを判定する。既に述べた通り、抽出した判定条件(「入力条件または出力条件44)が複数ある場合には、そのうちの1つに合致すればよい。
そして、判定条件に合致すると判定した場合には(ステップS22,YES)、当該判定処理への入力(“入力情報”または“出力情報”)の入力または出力を許可する(ステップS23)。
ステップS23の処理では、当該判定処理への入力が“入力情報”の場合には、アプリケーション処理部18への入力を許可し、この“入力情報”等をアプリケーション処理部18へ渡す(その際、アプリケーション処理部18を起動する(ステップS25))。また、当該判定処理への入力が“出力情報”の場合には、外部(制御対象機器)への出力を許可し、“出力情報”を外部へ出力させる。更に、当該判定処理が検証処理部19によって起動されたものである場合には、更に、照合処理部16を起動し、この照合処理部16に“出力情報”等を渡す処理も行う(ステップS26)。
尚、検証処理部19は、判定処理部17を起動した際に、自己が起動した旨を示す情報を上記出力情報、入力/出力識別情報等と共に判定処理部17に渡す。
一方、判定条件に合致しないと判定した場合には(ステップS22,NO)、上記出力を抑止する(入力または出力は許可しない)(ステップS24)。この場合、処理を終了することになる。
図8は、アプリケーション処理部18の処理フローチャート図である。
図8において、まず、入力処理を行う(ステップS31)。これは、アプリケーション処理部18には、上記判定処理部17において“入力情報”の入力を許可すると判定された場合に、判定処理部17から“入力情報”等が渡されるので、この“入力情報”等を入力するものである。
そして、この“入力情報”に応じた所定のアプリケーション処理を実行する(ステップS32)。このアプリケーション処理の具体例は特に示さない(既存の一般的なものである)が、アプリケーション処理部18は各種“入力情報”に応じた各種アプリケーション処理を実行可能となっている。
ここで、上記の通りこのアプリケーション処理の結果として“出力情報”(外部(制御対象機器等)へ出力するデータ)が生成されるものと説明していたが、アプリケーション処理の結果が必ず“出力情報”生成になるとは限らない。例えば入力情報がセンサの最新計測値であり、CPUモジュール1内で記憶管理しているセンサ計測値を更新する場合等には、“出力情報”は生成されない。これより、ステップS32のアプリケーション処理の結果が“出力情報”生成であるか否かを判定し(ステップS33)、“出力情報”生成では無い場合には(ステップS33,NO)ステップS34以降の処理は行わない(よって、後段の処理を起動することなく、この“入力情報”に応じた処理は終了する。
ステップS32のアプリケーション処理の結果が“出力情報”生成である場合には(ステップS33,YES)、ステップS34以降の処理を実行する。
ステップS34以降の処理では、まず、安全管理テーブル12を読み込む(ステップS34)。そして、安全管理テーブル12を参照して、上記生成した“出力情報”が安全側か否かを判定する(ステップS35)。“出力情報”が安全側である場合には(ステップS35,YES)、検証処理部19を起動する。そして、起動した検証処理部19に対して“出力情報”や入力/出力識別情報(出力を示す)と共に、後述する「呼び出し元アプリケーション情報」を渡す(ステップS36)。
一方、“出力情報”が危険側である場合には(ステップS35,NO)、照合処理部16を起動する。そして、起動した照合処理部16に対して“出力情報”と入力/出力識別情報を渡す(ステップS37)。
図9は、検証処理部19の処理フローチャート図である。
上記の通り、当該検証処理への入力は、“出力情報”と入力/出力識別情報と「呼び出し元アプリケーション情報」である。「呼び出し元アプリケーション情報」は、上記ステップS32のアプリケーション処理実行に係わる所定の情報であり、例えばアプリケーション処理の処理名、実行時間、アプリケーション処理の入力、出力に係わる所定情報等である。ここでは、図5に示す一例を用いて説明するならば、ステップS32のアプリケーション処理が速度範囲チェック処理であった場合には、「呼び出し元アプリケーション情報」は、処理名=速度範囲チェック処理、処理実行時間=t1、速度入力データ=P1、速度基準=P2、出力情報の出力先BitNo.の各項目より成る。
図9の処理では、まず検証テーブル13を読み込む(ステップS41)。そして、上記「呼び出し元アプリケーション情報」の上記処理名に基づいて、検証テーブル13から該当するレコードの検証条件を取得する。そして、「呼び出し元アプリケーション情報」の各項目が、対応する検証条件に合致するか否かを判定する(ステップS42)。そして、全ての項目で検証条件に合致する場合には検証OKと判定し(ステップS43,YES)検証OKを上記不図示のシステムステータス情報に記録すると共に(ステップS44)、
ステップS45の処理を実行する。一方、1つでも検証条件に合致しない項目があった場合には検証NGと判定し(ステップS43,NO)、検証NGを上記システムステータス情報に記録すると共に(ステップS46),ステップS47の処理を実行する。
上記の例では、検証テーブル13から処理名が速度範囲チェック処理であるレコードの検証条件(制限時間53=1ms、入力パラメータ54=「0<P1<500」且つ「−50<P2−P1<50」、出力パラメータ55=「BitNo.=16or17」)が取得される。そして、上記「呼び出し元アプリケーション情報」の各項目が、これら検証条件に合致するか否かを判定する。例えば、上記「呼び出し元アプリケーション情報」の各項目の値が、例えばt1=0.5ms、P1=250、P2=220すなわちP2−P1(速度基準P2との誤差)=−30、出力情報の出力先BitNo.=16であったならば、全ての項目で検証条件に合致することになるので、検証OKと判定される。
上記検証処理により、アプリケーション処理自体に異常がある場合や、制御対象機器に異常がある場合等には、検証NGと判定され、アプリケーション処理結果は出力されないので、例えば誤った“出力情報”によって制御対象機器が誤作動することにより人間に危害が発生するような事態を回避できる。但し、更に、後述するように緊急停止出力することで、より確実に安全を確保することが望ましい。
尚、図5には1つのアプリケーション処理名(速度範囲チェック処理)に対応する検証条件しか示していないが、実際にはアプリケーション処理部18が実行し得る全てのアプリケーション処理についてそれぞれ処理名と共に検証条件が登録されている。
そして、ステップS45の処理では、判定処理部17を起動する。そして、当該検証処理部19への入力であった上記“出力情報”、入力/出力識別情報を、起動した判定処理部17に渡す。
一方、ステップS47の処理では、緊急停止を出力し、判定処理部17を起動する。この場合には、起動した判定処理部17には緊急停止出力が“出力情報”として渡されることになる。尚、入力/出力識別情報(出力を示す)も一緒に渡しても良いが、緊急停止出力は識別情報無しでも“出力”であると認識されるものであってもよい。
尚、ここでは緊急時の安全対策出力の一例として緊急停止を挙げているが、適用するシステムに応じた適切な緊急時の安全対策出力を適宜決めておき(人間が判断する)実行させるようにする。
図10は、照合処理部16の処理フローチャート図である。
当該照合処理の入力、すなわち当該照合処理部16を起動した処理機能部から渡される情報(パラメータ)は、上記“入力情報”または/及び“出力情報”と、入力/出力識別情報である。危険側出力の場合には、照合処理部16aには“入力情報”、照合処理部16bには“出力情報”が入力されることになる。一方、安全側出力の場合には、照合処理部16cに“入力情報”と“出力情報”の両方が入力されることになる。
尚、アプリケーション処理部18は、検証処理部19を起動した場合には、“出力情報”だけでなく“入力情報”も一緒に検証処理部19に渡す。検証処理部19も同様にして、起動した判定処理部17にこの“入力情報”と“出力情報”を渡し、更にこの判定処理部17も起動した照合処理部16にこの“入力情報”と“出力情報”を渡す。これによって、安全側出力の場合には照合処理部16cには“入力情報”と“出力情報”の両方が渡されることになる。尚、この場合も入力/出力識別情報も一緒に渡すが、これは入力と出力の両方を示す情報となる。そして、検証処理部19、照合処理部16、判定処理部17
は、“入力情報”と“出力情報”の両方が渡される場合、“出力情報”に関する処理を実行する。
但し、これは一例であり、上記の通り実施例2の場合と同様に入出力バッファを設けることで、入力/出力識別情報に基づいて入出力バッファから“入力情報”または/及び“出力情報”を取得するようにしてもよい。
図10の処理では、まず、安全管理テーブル12を読み込む(ステップS51)。そして、上記当該照合処理への入力に基づいて、“出力情報”が安全側であるか危険側であるかを安全管理テーブル12に基づいて判定する(ステップS52)。これは、既に述べた通り、当該照合処理への入力が“入力情報”である場合でも、これに対応する“出力情報”が安全側であるか危険側であるかを判定できる。
“出力情報”が危険側である場合には(ステップS52,YES)、他系のCPUモジュール1に対して当該照合処理への入力(“入力情報”または“出力情報”)を通知する(ステップS53)。“出力情報”が安全側である場合には(ステップS52,NO)、他系のCPUモジュール1に対して上記相互伝送路を介して、上記当該照合処理の入力(“入力情報”及び“出力情報”)を通知する(ステップS54)。
尚、ステップS51〜S54の処理は、必ずしも必要なく、単に前段の処理機能部から渡された情報(“入力情報”または“出力情報”、あるいは“入力情報”と“出力情報”)を、他系のCPUモジュール1に通知するようにしてもよい。
そして、他系のCPUモジュール1も図10の処理を行ってステップS53又はS54による通知を行ってくるはずであるので、既にこの通知があった場合には(ステップS55,YES)ステップS56の処理へ移行し、未だ通知が無い場合には(ステップS55,NO)予め設定される所定の制限時間この通知を待ち(ステップS60)、制限時間内に通知があった場合には(ステップS61,YES)、ステップS56の処理へ移行する。
所定の制限時間内に他系のCPUモジュール1からの通知が無かった場合には照合NGと判定し(ステップS61,NO)、上記システムステータス情報に照合NGを記録すると共に(ステップS62)、照合NGの場合に応じた処理を実行する。ここでは一例として緊急停止を出力し、判定処理部17を起動して(ステップS63)、緊急停止出力に関する判定処理を実行させる。
尚、図示の例では更に、ステップS59の処理も行っている。ステップS59では、上記システムステータス情報を参照して、現在のシステム状態が、他系異常または相互伝送異常の状態であるか否かを判定する。他系異常または相互伝送異常の状態であれば、上記の通知は来ないはずであるので、所定の制限時間待つことなく直ちに照合NGと判定する(ステップS62)。尚、図ではステップS59の処理はステップS55の後に行っているが、これは一例であり、例えば図10の処理の最初に行ってもよい。この場合、もし異常があれば他系のCPUモジュール1に対する通知を行うことなく照合NGと判定でき、処理負荷が軽減でき、また照合NGと判定するまでの処理時間を更に短縮できる。
上記ステップS56の処理では、上記当該照合処理への入力と、他系のCPUモジュール1から通知された情報(他系のCPUモジュール1における照合処理部16への入力)とを照合して、合致するか否かを判定し、合致する場合には照合OKと判定して(ステップS56,YES)、合致しない場合には照合NGと判定する(ステップS56,NO)。
照合OKと判定した場合には(ステップS56,YES)、上記システムステータス情報に“照合OK”を記録し(ステップS57)、判定処理部17を起動する(ステップS58)。そして、起動した判定処理部17に当該照合処理への入力(“入力情報”または/及び“出力情報”と、入力/出力識別情報)を渡す。
一方、照合NGと判定した場合には(ステップS56,NO)、上記ステップS62,S63の処理を実行する。
尚、上記ステップS56の照合処理は、例えば、外部からの入力(入力情報)がディジタル入力の場合はOFFからON、またはONからOFFの変化が合致しているか否か、アナログ入力の場合CPU1とCPU2の入力値の差が所定の値以内であるか否か、パルス入力の場合CPUモジュール1A、CPUモジュール1Bそれぞれにおけるパルスカウント値の差が所定の値以内であるか否かによって、照合が合致したか否かを判断する。但し、照合処理部16が直接外部からの入力信号(ON→OFF変化等)を検出しているのではなく、これらは“入力情報”に反映されている形となっている。また、入力のチャターなどのノイズはハードウェアフィルタなどにより予め除去する。
図11は、診断処理部14の処理フローチャート図である。
上記の通り、診断処理自体は既存の一般的な手法であってよく、以下、簡単に説明する。
図11の処理では、まず、自己診断処理を行う(ステップS71)。自己診断処理の内容は例えばIEC61508の規定に従って行うが、この例に限らない。
上記自己診断処理の結果、自系正常か否かを判定する(ステップS72)。
自系異常の場合は(ステップS72,NO)、上記システムステータス情報に自系異常を記録すると共に、緊急停止出力を行い、判定処理部17を起動して(ステップS74、)緊急停止出力に関する判定処理を実行させる。
一方、自系正常の場合には(ステップS72,YES)、まず上記システムステータス情報に自系正常を記録し(ステップS73)、続いて、他系のCPUモジュール1に対して、上記相互伝送路を介して、他系のCPUモジュール1におけるステップS71の自己診断処理の結果を要求する(ステップS75)。そして、他系の自己診断結果が正常であったならば(ステップS79、YES)、上記システムステータス情報に他系正常を記録する(ステップS80)。一方、他系の自己診断結果が異常であったならば(ステップS79、NO)、上記システムステータス情報に他系異常を記録する(ステップS81)。
また、相互伝送が正常か否かを判定する(ステップS76)。相互伝送が正常の場合には、例えば上記ステップS75の要求に対する他系からの返信を正常に受信できるはずなので、返信があったことを以って相互伝送正常と判定し(ステップS76,YES)、上記システムステータス情報に相互伝送正常を記録する(ステップS77)。そして、返信内容に基づいて上記ステップS79の処理を実行する。
一方、上記ステップS75の要求送信から所定時間経過しても返信が無い場合には、相互伝送異常と判定し(ステップS76,NO)、上記システムステータス情報に相互伝送異常を記録する(ステップS78)。この場合にはステップS79の処理は行えないので、そのまま本処理を終了する。
以上説明したように、実施例1の二重化比較方式の二重化装置では、まず、CPUモジュール1からの外部(制御対象機器等)への出力を、例えばプレス機の停止指令の出力な
どフェールセーフを実現する安全側と、プレス機の動作開始指令などの危険側とに予め区分して(例えば人間が判断する)安全管理テーブルに登録しておく。
運用中、二重化装置の各CPUモジュール1は、任意の入力(入力変化等)がある毎に、安全管理テーブルを参照することで、この入力に応じた出力が安全側の場合と危険側の場合とで制御を区別する。
安全側出力の場合は、入力に応じたアプリケーション処理結果としての出力を、判定処理等を経て外部に出力した後に、照合処理を実行する。照合処理は、CPUモジュール両系の待ち合わせなど時間の要する処理であり、よって照合処理を実行後に外部出力する場合に比べて、入力から出力までに掛かる時間を非常に短縮することができる。また、何らかの異常により照合処理結果がNGとなるような場合でも、出力が安全側であるため人的危害等は発生しない。たとえば誤ってプレスの停止指令が出力されプレスが停止しても人的危害は発生しない。ただし、照合処理がその後実施されるため、たとえば緊急停止出力がその後に出力される。
また、危険側出力の場合は、外部への誤出力の防止を優先し、照合処理を行った後で、外部出力する。これによって、人的危害等は発生しない。
この様に、安全性を確保しつつ(人的危害等が発生しないようにしつつ)、出力が安全側の場合にはレスポンスタイムを短縮することができる。
また、安全側出力の場合における出力の安全性を高めるため、検証テーブルを予め登録しておき、この検証テーブルを用いた検証処理によって、アプリケーション処理に関する検証を行い、検証結果が異常の場合は外部出力しない(そして例えば緊急停止を出力する)。この様に、照合処理を行う前に外部出力しても問題ないようにする為に(より高い安全性を確保する為に)、検証処理を行うようにすることが望ましい(但し、検証処理は必須ではない)。
尚、検証処理結果が異常の場合、「リカバリブロック法」により代替アプリケーション処理で再実行する方法や「Nバージョン法」で複数の同機能のアプリケーションで処理した結果を比較判定する方法も可能である(緊急停止を出力する例に限らない)。
また、緊急停止は一例であり、この例に限らず、使用用途に応じたものとしてよい。たとえば異常の場合シャットダウン指示を出力する等してもよい。
尚、検証処理における上記アプリケーション実行時間制限判定は、ウオッチドッグで時間監視する等して判定してもよい。
以上述べたように、実施例1のフォールトトレラント装置によれば、二重化比較方式の二重化装置において、安全管理テーブルにより外部への出力信号(出力情報)がフェールセーフ(安全側)であるか否かを識別し、安全側出力の場合、照合処理を行う前に外部(制御対象機器等)への出力を行うことで、レスポンスタイムを短縮することができる。
また、安全側出力の場合、照合処理が外部出力の後になり、照合が異常の場合の出力抑止ができないが、検証テーブルにより検証項目を定義し、アプリケーション処理のフォールトの検知およびフォールトコントロールすることにより、安全性を強化することができ、また出力がされたとしても危険が発生しないので安全性を確保できる。
また、安全側出力の場合、照合処理に必要なCPUモジュール間の伝送時間が長くても(照合処理に時間が掛かっても)、それによって外部出力のタイミングが遅れることにはならないため、CPUモジュール間の相互伝送の為の構成を、安価な伝送装置で実現する
ことが可能となる。
また、安全側出力の場合(上記変形例では危険側出力の場合も)、入力の照合と出力の照合を一括して行うことにより、入力照合と出力照合を個別に行うよりも伝送時間などの処理時間の短縮を実現することができ、照合処理時間の短縮化とCPU負荷の軽減が実現できる。
以下、実施例2について説明する。
実施例2でも、上記実施例1と略同様の効果が得られ、更に実施例2による効果も得られる。
すなわち、上記実施例1では、1つのアプリケーション処理毎に、安全側の出力、危険側の出力の何れか一方が出力されることを前提としていたが、安全フォールトトレラント装置の機能として、1つのアプリケーション処理で複数の出力が行われる場合もあり(複数の“出力情報”が生成される)、この場合、安全側出力と危険側出力が混在する可能性があった。
実施例2では、この様な状況にも対応可能とするものである。
すなわち、概略的には、実施例2では、安全側出力と危険側出力が混在する場合には出力を同定して区分する。
すなわち、アプリケーション処理で生成された(複数の)“出力情報”の全てが安全側出力の場合は、上記実施例1においてフェールセーフとして安全側出力とされた場合と略同様の処理を行う。すなわち、照合処理を行う前に“出力情報”を外部へ出力する。
一方、アプリケーション処理で生成された(複数の)“出力情報”の全てが危険側の場合は勿論のこと、安全側出力と危険側出力が混在する場合も危険側として区分し、上記実施例1において危険側出力とされた場合と略同様の処理を行う。すなわち、照合処理を行ってOKであれば、“出力情報”を外部へ出力する。
以下、実施例2について図12以降を参照して詳細に説明する。
図12は、実施例2の二重化装置の構成・機能ブロック図である。
尚、以下の実施例2の説明においては、実施例1と略同様の内容については、その説明を省略する場合もある。本説明では、主に、実施例1と異なる点について詳細に説明するものとする。
実施例2が実施例1と異なる点は、主に、図12に示す出力同定処理部68を新たに設けたことである。また、本例では図示の入出力バッファ69も設けており、またアプリケーション処理部67の処理内容が、上記アプリケーション処理部18とは多少異なるものとなる。出力同定処理部68の処理フローチャートは図18に示し、アプリケーション処理部67の処理フローチャートは図16に示し、入出力バッファ69に記憶されるデータの具体例を図17に示し、後に説明する。
尚、上記の通り、入出力バッファ69は上記実施例1においても設けてもよい。
また、実施例2では、上記実施例1の変形例と同様、危険側出力の場合でも照合処理を“入力情報”と“出力情報”についてまとめて行うものであり、それ故、図12に示す通り、入力処理部65による入力処理後の照合処理は行われない。また、危険側出力の場合の照合処理である照合処理部71aの処理においても、安全側出力の場合の照合処理である照合処理部71bの処理と同様、“入力情報”と“出力情報”をまとめて照合処理を行う。これに伴って、入力処理部65、照合処理部71の処理フローチャート、及び安全管
理テーブル62の内容は、上記入力処理部15、照合処理部16、安全管理テーブル12とは多少異なるものとなり、後に図14、図15、図19を参照して説明する。
尚、上記実施例1の場合と同様の理由により、図12に示す判定処理部66a、66b、66c、66dをまとめて判定処理部66と呼ぶ場合もある。同様に、照合処理部71、71bをまとめて照合処理部71と呼ぶ場合もある。判定処理部66、検証処理部70、及び診断処理部64の処理内容は、上記実施例1における判定処理部17、検証処理部19、及び診断処理部14と略同様であってよい。すなわち、判定処理部66、検証処理部70、診断処理部64は、それぞれ、図7、図9、図11の処理を行うものであってよい。よって、ここではこれらの各処理機能部66,70,64の処理フローチャート図は特に示さないし説明しない。
また、判定テーブル61、検証テーブル63の内容も、上記実施例1における判定テーブル11、検証テーブル13と略同様であってよい。すなわち、判定テーブル61、検証テーブル63の内容は、それぞれ、図4、図5に示すものと略同様であってよく、ここでは特に図示/説明しない。
また、図12に示す実施例2の二重化装置(フォールトトレラント装置)におけるアプリケーション処理部67による処理後の処理の流れは、出力同定処理部68の処理結果によって2通りの処理手順の何れか一方に分岐すること以外は、基本的に実施例1の場合と略同様である。つまり、安全側出力の場合の処理の流れ、すなわち検証処理部70→判定処理部66b→照合処理部71b→判定処理部66dの処理の流れは、上記実施例1における検証処理部19→判定処理部17b→照合処理部16c→判定処理部17dの処理の流れと同じであってよく、また各々の処理内容も照合処理部66が照合処理部16とは多少異なる程度であり、基本的には略同様であってよい。よって、これらについては特に説明しない。
危険側出力の場合の処理の流れについても同様である。すなわち、図12に示す照合処理部71a→判定処理部66cの処理の流れは、上記実施例1における照合処理部16b→判定処理部17cの処理の流れと同じであってよく、また各々の処理内容も照合処理部66が照合処理部16とは多少異なる程度であり、基本的には略同様であってよい。よって、これらについても特に説明しない。
図13(a)、(b)は、実施例2における安全側出力タイムチャート、危険側出力タイムチャートである。
図13(a)の安全側出力タイムチャート、及び図13(b)の危険側出力タイムチャートを、図2(a)、(b)に示す実施例1のタイムチャートと比較すれば明らかな通り、実施例2は、タイムチャート的には、アプリケーション処理後に出力同定処理を行う点が実施例1と異なる(更に、危険側出力の場合にも入出力まとめて照合処理を行う点も異なるが、これは図2とは異なるが、上記実施例1の変形例と同じであると考えてよい)。
そして、本例では、図13(a)と(b)を比較すれば明らかな通り、出力同定処理までは同じであり、出力同定処理による処理結果に応じて、図13(a)に示す安全側出力の処理手順と、図13(b)に示す危険側出力の処理手順とに分岐する。
図13(a)、(b)に示す通り、実施例2においても、図13(a)に示す安全側出力の場合には照合処理を行うまえに“出力情報”を外部出力するので、図13(a)に示す危険側出力に比べて、主に照合処理に掛かる時間分、レスポンスタイムを短縮することができる。実施例2では出力同定処理が加わるが、これは照合処理に比べて非常に短い時間で済む。危険側出力の場合には実施例1と同様に、安全性を優先した処理を行う。すな
わち、照合処理を行ったうえで照合OKであれば“出力情報”を外部へ出力する。これによって、危険側に分類される出力が行われる場合でも、人的危害等が生じないようにでき、安全性が損なわれることはない。更に、安全側出力の場合だけでなく危険側出力の場合でも“入力情報”の照合と“出力情報”の照合をまとめて行うので、照合処理時間を短縮でき、CPUの処理負担を軽減できる。
以下、図14以降を参照して、実施例2について、主に実施例1と異なる点について説明するものとする。
図14に、実施例2の安全管理テーブル62のデータ構成例を示す。
図示の安全管理テーブル62は、番号81、出力種別82、出力区分83の各データ項目より成る複数のレコードにより構成される。番号81、出力種別82、出力区分83は、図3に示す安全管理テーブル12の番号31、出力種別32、出力区分34と同じであってよく特に説明しない。図3と異なる点は、入力種別33が無い点である。これは上記の通り、本例では入力処理部65の処理後に照合処理を行うことはないので、入力種別33は必要ないからである。
また、これに伴って、入力処理部65においては、後段の処理を照合処理と判定処理のどちらにするかを(安全側出力と危険側出力のどちらのモードにするのかを)判定する処理は必要なくなる。
図15は、実施例2の入力処理部65の処理フローチャート図である。
図示の通り、入力処理部65の処理は、上記ステップS11と同様の処理である入力処理を行った後(ステップS91)、上記ステップS14と同様の処理である判定処理部66の起動処理(ステップS92)を行うだけである。
図16は、実施例2のアプリケーション処理部67の処理フローチャート図である。
図16において、図示のステップS111,S112,S113の入力処理、アプリケーション処理、外部出力有無の判定処理は、上記図8のステップS31,S32,S33の処理と略同様であり、特に説明しない。
ステップS113において外部出力ありと判定された場合、まず入出力バッファ69に今回のアプリケーション処理実行に係わる所定の情報を書き込む処理を実行する(ステップS114)。これについて、図17も参照して説明する。
図17は、入出力バッファ69のデータ構成例である。
図示の例では、入出力バッファ69には、アプリケーション処理名91、入力データ92(入力データ項目94と入力データ値95から成る)、出力データ93(出力データ項目96と出力データ値97から成る)より成るテーブルが格納される。
入力データ92が“入力情報”に相当し、入力データ項目94が上記「入力種別」に相当すると考えてよい。同様に、出力データ93が“出力情報”に相当し、出力データ項目96が上記「出力種別」に相当すると考えてよい。既に述べた通り、実施例1においても入出力バッファ69と同様のデータを記憶する記憶装置を設けてよく、各種処理機能部は、この記憶装置に“入力情報”や“出力情報”を記憶し、あるいはこの記憶装置から“入力情報”または/及び“出力情報”を取得するようにしてもよい。
上記ステップS114の処理では、ステップS112で実行したアプリケーションのアプリケーション名をアプリケーション処理名91に記憶し、このアプリケーション処理に係わる“入力情報”の入力種別とデータ値を入力データ項目94と入力データ値95に記
憶し、このアプリケーション処理の結果(“出力情報”)の出力種別と出力データ値を出力データ項目96と出力データ値97に記憶する。
尚、図17には1つのアプリケーション処理(速度範囲チェック処理)に対して1つの出力データ93(緊急停止、on)のみ示すが、上述してある通り、実施例2では1つのアプリケーション処理によって複数の“出力情報”が得られる場合に特に顕著な効果を奏するものであり、典型的な例は例えば図17に示す速度範囲チェック処理に対して、出力データ93に複数の“出力情報”が記憶されている場合である。よって、図17には示されないが、以下の説明では、1つのアプリケーション処理に対して複数の“出力情報”が記憶されているものとして説明する。
アプリケーション処理部67は、上記ステップS114の処理完了後、出力同定処理部68を起動する(ステップS115)。そしてステップS112で実行したアプリケーション処理の処理名を入力パラメータとして出力同定処理部68に渡す。更に、上記「呼び出し元アプリケーション情報」も出力同定処理部68に渡すが、出力同定処理部68は検証処理部70を起動した場合には「呼び出し元アプリケーション情報」を検証処理部70に渡すが、照合処理部71aを起動した場合には「呼び出し元アプリケーション情報」は棄てる。尚、これは一例であり、例えばアプリケーション処理部67は「呼び出し元アプリケーション情報」も入出力バッファ69に記憶するものとし、検証処理部70は起動されると入出力バッファ69から「呼び出し元アプリケーション情報」も取得するようにしてもよい。
起動された出力同定処理部68は、図18の処理を実行する。
図18は、出力同定処理部68の処理フローチャート図である。
図18の処理では、まず、入出力バッファ69と安全管理テーブル62のデータを読み込む(ステップS121)。
そして、入出力バッファ69から上記入力パラメータとしての処理名に基づいて、このアプリケーション処理に対応する全ての出力データ項目96(出力種別)を取得して(上記の通り、ここでは複数あるものとする)、各出力データ項目96(出力種別)毎に安全管理テーブル62を参照して、それが安全側出力か、危険側出力かを判定する(ステップS122)。そして、全ての出力データ項目96(出力種別)が安全側出力であるか否かを判定する(ステップS123)。
全ての出力データ項目96(出力種別)が安全側出力である場合には(ステップS123,YES)、安全側モードとしての処理手順を順次実行していくことになり、検証処理部70を起動する(ステップS124)。そして、出力を示す入力/出力識別情報と共に、上記「呼び出し元アプリケーション情報」を検証処理部70に渡す。そして、検証処理、判定処理を経て、検証OK且つ判定OKであれば、照合処理を行う前に、入出力バッファ69に記憶されている出力データ93(“出力情報”)が外部へ出力されることになる。
一方、1つでも安全側出力では無かった場合には(ステップS123,NO)、基本的には危険側モードとしての処理手順を順次実行していくことになり、照合処理部71を起動する(ステップS126)。そして、照合処理、判定処理を経て、照合OK且つ判定OKであれば、入出力バッファ69に記憶されている出力データ93(“出力情報”)が外部へ出力されることになる。
但し、図示の例では、出力として非安全関連出力を行う場合も考慮して、ステップS125の判定も行っている。ステップS125では、危険側出力が1以上あるか否かを判定
し、1つ以上ある場合には(ステップS125、YES)、上記ステップS126の処理を行う。もし、危険側出力が1つも無い場合には(ステップS125,NO)本処理を終了する。但し、ステップS125の処理は無くても良い。尚、アプリケーション処理部67は、出力が非安全関連出力の場合、入出力バッファ69に書き込むことなく、直接、外部へ出力する。入出力バッファ69に何もデータが記憶されていない場合、すなわち出力が非安全関連出力のみの場合に、ステップS125の判定がNOとなる。この場合には、当然、後続の処理は行う必要はないので、起動処理は必要なく、本処理を終了する。
次に、図19を参照して、実施例2の照合処理について説明する。
図19は、実施例2の照合処理部71の処理フローチャート図である。
図19の処理が上記実施例1の図10の処理と異なる点は、既に述べた通り本例では危険側の場合でも入出力まとめて照合処理を行うことから、図10のステップS51〜S54の処理は必要なくなり、代わりにステップS131の処理を実行することである。
ステップS131の処理は、ステップS54の処理と略同様である。すなわち、入力情報及び出力情報を他系のCPUモジュール1に通知する処理である。尚、ステップS131では入出力バッファ69から“入力情報”及び“出力情報”を取得する点でステップS54とは異なるが、上記の通り実施例1においても入出力バッファを設けて入出力バッファから“入力情報”及び“出力情報”を取得するようにしてもよい。その逆に、図19の処理において、実施例1と同様に、入力情報及び出力情報は前段の(照合処理部71を起動した)処理機能部から渡されるものとしてもよい。
尚、実施例2の場合、入力パラメータとしての入力/出力識別情報は必要ない。上記の通り、入出力バッファ69には、“入力情報”、“出力情報”が区分されて格納されており、また上記の通り照合処理部71は必ず、“入力情報”と“出力情報”の両方に関する処理を行うものと決まっているからである。また、判定処理部66に関しても、例えば判定処理部66aとして動作する際には、入出力バッファ69には“入力情報”のみが格納されている状態なので、これを以って“入力情報”に関して判定するものと判断できる。同様に、判定処理部66b〜66cとして動作する際には、入出力バッファ69には“入力情報”に加えて“出力情報”が格納されている状態なので、これを以って“出力情報”に関して判定するものと判断できる。尚、緊急停止出力を出す際には、入出力バッファ69の情報を全て消去して、代わりに出力データ項目96(出力種別)に緊急停止を記録しておけば、これを以って判定処理部66が緊急停止出力に関する判定を行うようにすればよい。
尚、図19に示すステップS132以降の処理(ステップS132〜S140)は、図10のステップS55以降の処理(ステップS55〜S63)と同じであってよく、ここでは特に説明しない。
上記のように、実施例2では、特に1つのアプリケーション処理によって複数の“出力情報”が出力される場合に、そのうちの1つでも危険側出力であった場合には危険側モードとしての処理手順を順次実行することで、安全性を確保することができる。勿論、更に、実施例1と同様の効果が得られる。また、“出力情報”に対応する“入力情報”を定義する必要がなくなり、入力処理部65の処理負担が軽減され、照合処理の処理時間短縮が図れる。
上記実施例2の二重化装置でも、上記実施例1と同様の効果が得られる。
すなわち、従来、二重化比較方式では二重の両系間のデータ照合を行ってから出力するため、照合処理に時間が掛かる分、「入力から出力までのレスポンスタイム」が悪化しており、特に他系が異常の場合などは照合の時間監視時間以上の安全側出力の遅れが発生し
ていたが、本方式により、「二重化/比較方式」の二重化装置において安全管理テーブルにより出力信号がフェールセーフ(安全側)であるか否かを識別し、安全側出力の場合、照合処理の前に外部への出力を行うことでレスポンスタイムを短縮することができる。また、当該安全側出力の場合、照合処理に必要なCPU間の伝送時間が出力の遅れに繋がらないため、安価な伝送装置で済むようになる。
また、安全側出力の場合、検証処理を行ってから出力することで、アプリケーション処理のフォールトの検知およびフォールトコントロールすることにより安全性を強化することができ、照合処理を行う前に外部出力しても、危険が発生しないので安全性が減少することはない。
そして、実施例2では上記の効果に加えて更に以下の効果が得られる。
特に1つのアプリケーション処理によって複数の出力データが得られる場合にも、安全性を確保することができる。
また、安全側、危険側の何れの場合でも、照合処理において、入力の照合と安全側出力の照合を一括して行うことにより、入力照合と出力照合を個別に行うよりも伝送時間などの処理時間の短縮を実現することができ、照合の異常検知の早期化とCPU負荷の軽減が実現できる。
1A CPUモジュール
1B CPUモジュール
11 判定テーブル
12 安全管理テーブル
13 判定テーブル
14 診断処理部
15 入力処理部
16(16a、16b、16c) 照合処理部
17(17a、17b、17c、17d) 判定処理部
18 アプリケーション処理部
19 検証処理部
31 番号
32 出力種別
33 入力種別
34 出力区分
41 番号
42 入力/出力
43 出力区分
44 入力条件または出力条件
51 番号
52 アプリケーション処理名
53 制限時間
54 入力パラメータ
55 出力パラメータ
61 判定テーブル
62 安全管理テーブル
63 判定テーブル
64 診断処理部
65 入力処理部
66(66a、66b、66c、66d) 判定処理部
67 アプリケーション処理部
68 出力同定処理部
69 入出力バッファ
70 検証処理部
71(71a、71b) 照合処理部
81 番号
82 出力種別
83 出力区分
91 アプリケーション処理名
92 入力データ
93 出力データ
94 入力データ項目
95 入力データ値
96 出力データ項目
97 出力データ値

Claims (7)

  1. 略同一の構成の複数の制御モジュールより成り、該複数の制御モジュールに同一の入力情報が入力され、該複数の制御モジュールが該入力情報に応じた同一のアプリケーション処理を行い、該複数の制御モジュールが相互にデータ送受信を行って照合処理を行い、該複数の制御モジュールが同一の出力信号線に出力を行うフォールトトレラント装置であって、
    前記各制御モジュールは、
    予め各種出力情報毎に、それが安全側出力であるか危険側出力であるかを登録した第1の記憶手段と、
    各種の前記アプリケーション処理を実行可能であり、任意の前記入力情報が入力される毎に、該入力情報に応じたアプリケーション処理を実行するアプリケーション処理実行手段と、
    該アプリケーション処理の結果としての出力情報が、安全側出力であるか危険側出力であるかを前記第1の記憶手段を参照して判定する安全/危険判定手段と、
    該安全/危険判定手段により前記出力情報が安全側出力であると判定した場合、該出力情報を前記出力信号線に出力し、その後、前記照合処理を実行し、前記安全/危険判定手段により前記出力情報が危険側出力であると判定した場合には、前記照合処理を実行し、照合OKであれば前記出力情報を前記出力信号線に出力する出力制御手段と、
    を有することを特徴とするフォールトトレラント装置。
  2. 予め前記各種アプリケーション処理毎に対応付けて、そのアプリケーション処理が正常に実行されたか否かを判定する為の各種条件である検証条件を記憶する第2の記憶手段を更に有し、
    前記出力制御手段は、前記出力情報が安全側出力であると判定された場合、前記第2の記憶手段を参照して、該出力情報に係わる前記アプリケーション処理が正常に実行されているか否かを検証し、検証OKである場合に前記出力情報を前記出力信号線に出力し、その後、前記照合処理を実行することを特徴とする請求項1記載のフォールトトレラント装置。
  3. 前記出力制御手段は、前記出力情報が安全側出力であると判定された場合における前記照合処理は、前記入力情報と出力情報とをまとめて行うことを特徴とする請求項1または2記載のフォールトトレラント装置。
  4. 前記安全/危険判定手段は、前記アプリケーション処理の結果としての出力情報が複数ある場合、該各出力情報毎に前記第1の記憶手段を参照してその出力情報が安全側出力か危険側出力かを求め、全ての出力情報が安全側出力である場合に安全側出力であると判定することを特徴とする請求項1記載のフォールトトレラント装置。
  5. 前記出力制御手段は、前記安全/危険判定手段による判定結果が安全側出力、危険側出力のどちらの場合でも、前記照合処理は、前記入力情報と出力情報とをまとめて行うことを特徴とする請求項1または4記載のフォールトトレラント装置。
  6. 略同一の構成の複数の制御モジュールより成り、該複数の制御モジュールに同一の入力情報が入力され、該複数の制御モジュールが該入力情報に応じた同一のアプリケーション処理を行い、該複数の制御モジュールが相互にデータ送受信を行って照合処理を行い、該複数の制御モジュールが同一の出力信号線に出力を行うフォールトトレラント装置における前記制御モジュールであって、
    予め各種出力情報毎に、それが安全側出力であるか危険側出力であるかを登録した第1の記憶手段と、
    各種の前記アプリケーション処理を実行可能であり、任意の前記入力情報が入力される毎に、該入力情報に応じたアプリケーション処理を実行するアプリケーション処理実行手段と、
    該アプリケーション処理の結果としての出力情報が、安全側出力であるか危険側出力であるかを前記第1の記憶手段を参照して判定する安全/危険判定手段と、
    該安全/危険判定手段により前記出力情報が安全側出力であると判定した場合、該出力情報を前記出力信号線に出力し、その後、前記照合処理を実行し、前記安全/危険判定手段により前記出力情報が危険側出力であると判定した場合には、前記照合処理を実行し、照合OKであれば前記出力情報を前記出力信号線に出力する出力制御手段と、
    を有することを特徴とするフォールトトレラント装置における制御モジュール。
  7. 略同一の構成の複数の制御モジュールより成り、該複数の制御モジュールに同一の入力情報が入力され、該複数の制御モジュールが該入力情報に応じた同一のアプリケーション処理を行い、該複数の制御モジュールが相互にデータ送受信を行って照合処理を行い、該複数の制御モジュールが同一の出力信号線に出力を行うフォールトトレラント装置における前記制御モジュールのコンピュータを、
    予め各種出力情報毎に、それが安全側出力であるか危険側出力であるかを登録した第1の記憶手段と、
    各種の前記アプリケーション処理を実行可能であり、任意の前記入力情報が入力される毎に、該入力情報に応じたアプリケーション処理を実行するアプリケーション処理実行手段と、
    該アプリケーション処理の結果としての出力情報が、安全側出力であるか危険側出力であるかを前記第1の記憶手段を参照して判定する安全/危険判定手段と、
    該安全/危険判定手段により前記出力情報が安全側出力であると判定した場合、該出力情報を前記出力信号線に出力し、その後、前記照合処理を実行し、前記安全/危険判定手段により前記出力情報が危険側出力であると判定した場合には、前記照合処理を実行し、照合OKであれば前記出力情報を前記出力信号線に出力する出力制御手段、
    として機能させる為のプログラム。

JP2010041884A 2010-02-26 2010-02-26 フォールトトレラント装置、その制御モジュール、プログラム Expired - Fee Related JP5423473B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010041884A JP5423473B2 (ja) 2010-02-26 2010-02-26 フォールトトレラント装置、その制御モジュール、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010041884A JP5423473B2 (ja) 2010-02-26 2010-02-26 フォールトトレラント装置、その制御モジュール、プログラム

Publications (2)

Publication Number Publication Date
JP2011180665A JP2011180665A (ja) 2011-09-15
JP5423473B2 true JP5423473B2 (ja) 2014-02-19

Family

ID=44692134

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010041884A Expired - Fee Related JP5423473B2 (ja) 2010-02-26 2010-02-26 フォールトトレラント装置、その制御モジュール、プログラム

Country Status (1)

Country Link
JP (1) JP5423473B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6402469B2 (ja) * 2014-04-04 2018-10-10 富士電機株式会社 安全制御装置および安全制御システム
WO2015162760A1 (ja) * 2014-04-24 2015-10-29 三菱電機株式会社 Plcユニット及びプログラマブルロジックコントローラ
JP6227027B2 (ja) * 2016-02-12 2017-11-08 三菱電機株式会社 プログラマブルロジックコントローラシステム、入力ユニットシステム、cpuユニットシステム及び出力ユニットシステム
CN108803339A (zh) * 2018-06-28 2018-11-13 杭州电子科技大学 一种化工批次过程容错迭代学习控制方法
WO2024075558A1 (ja) * 2022-10-03 2024-04-11 パナソニックIpマネジメント株式会社 機器システム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3216996B2 (ja) * 1996-07-19 2001-10-09 三菱電機株式会社 二重系電子連動装置
JP4401521B2 (ja) * 2000-03-08 2010-01-20 日本信号株式会社 2重化情報処理装置
JP2006178730A (ja) * 2004-12-22 2006-07-06 Yaskawa Electric Corp 安全信号i/f装置およびその二重化信号入力処理方法

Also Published As

Publication number Publication date
JP2011180665A (ja) 2011-09-15

Similar Documents

Publication Publication Date Title
JP5423473B2 (ja) フォールトトレラント装置、その制御モジュール、プログラム
RU2585262C2 (ru) Контрольно-вычислительная система, способ управления контрольно-вычислительной системой, а также применение контрольно-вычислительной системы
US8856595B2 (en) Method for verifying an application program in a failsafe programmable logic controller, and programmable logic controller for performing the method
US20070277023A1 (en) Method For Switching Over Between At Least Two Operating Modes Of A Processor Unit, As Well Corresponding Processor Unit
JP5911922B2 (ja) 安全関連制御ユニットおよび自動化設備の制御方法
JP2007507016A (ja) シリアルインターフェイスを介したフラッシュプログラミングによる電子制御装置のソフトウェアアップデート方法およびこれに対応する状態自動装置
CN107463516B (zh) 控制装置
JP4917604B2 (ja) 記憶装置構成およびその駆動方法
US8862934B2 (en) Redundant computing system and redundant computing method
JP5537140B2 (ja) 安全制御装置、及びその安全制御プログラム
CN106970550B (zh) 车辆子系统通信仲裁
JP5978873B2 (ja) 電子制御装置
JP4477739B2 (ja) 冗長系情報処理システム
JP5453984B2 (ja) Ram診断装置、そのプログラム
JP4664367B2 (ja) 機能モジュールの管理システムを動作させる方法
JP6824447B2 (ja) 信号制御装置および異常検出方法
JP5337661B2 (ja) メモリ制御装置及びメモリ制御装置の制御方法
JP6302775B2 (ja) 制御装置及びその制御方法
JP4650441B2 (ja) 数値制御装置及び数値制御システム
JP5982226B2 (ja) 二重化入力信号制御装置及び二重化出力信号制御装置の制御方法、その二重化入力信号制御装置、及びその二重化出力信号制御装置
US10831176B2 (en) Numerical controller monitoring removal of daisy chained devices
JP5649416B2 (ja) バスシステム
JP6501703B2 (ja) 車載制御装置
JP2009282849A (ja) マイクロコンピュータ
WO2012165396A1 (ja) 電子制御システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131023

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131111

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5423473

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

LAPS Cancellation because of no payment of annual fees