[第1実施形態]
以下に第1実施形態における制御装置100について説明する。
まず始めに本実施形態における制御装置100の構成について図1を用いて説明する。図1は制御装置100の構成を示すブロック図である。
制御装置100は、図1に示すように、複数のCPUと、複数のCPUと同数設けられた複数のウォッチドッグタイマ(図1ではWDTと表記)と、第1の論理回路30と、第2の論理回路31と、を備えている。尚、本実施形態では、複数のCPUは、第1CPU10と第2CPU11の2つのCPUであり、CPUと同数のウォッチドッグタイマは、第1ウォッチドッグタイマ20と第2ウォッチドッグタイマ21の2つのウォッチドックタイマである場合について説明する。
第1CPU10と第2CPU11は、それぞれ第1の信号を出力する複数の出力ポートを有している。具体的には、第1CPU10は第1の出力ポートP01と第2の出力ポートP02を有しており、第2CPU11は第1の出力ポートP11と第2の出力ポートP12を有している。尚、第1CPU10の第1の出力ポートP01から出力される第1の信号と、第2の出力ポートP02から出力される第1の信号と、は異なる信号である。また、第2CPU11の第1の出力ポートP11から出力される第1の信号と、第2の出力ポートP12から出力される第1の信号と、は異なる信号である。
第1CPU10と第2CPU11はそれぞれ、図示しないクロック回路及びプログラム記憶領域を含む記憶回路を有しており、クロック回路が発生するクロック信号に従ってプログラム領域に記憶されたプログラムに従って演算処理を行う。第1CPU10のクロック回路と第2CPU11のクロック回路は概ね同じ周波数のクロック信号を発生させる。また、第1CPU10と第2CPU11は、それぞれのプログラム記憶領域に同一動作のプログラムが記憶されており、所定の同じ処理を行う。
また、第1CPU10と第2CPU11には、それぞれCPUが演算処理を行う動作に対応して論理出力”1”としてのハイレベル信号と論理出力”0”としてのローレベル信号とを交互に出力する動作信号出力(φ1,φ2)を有している。第1CPU10が正常動作している場合には第1CPU10に備えられた動作信号出力φ1には所定の時間間隔で”1”と”0”とが交互に出力される。また第2CPU11が正常動作している場合には第2CPU10に備えられた動作信号出力φ2には所定の時間間隔で”1”と”0”とが交互に出力される。
また、外部装置50との通信手段を有しており、外部装置50からの信号の受信や外部装置50に対する信号の送信を行うことができる。
第1ウォッチドッグタイマ20と第2ウォッチドッグタイマ21は、第1CPU10と第2CPU11にそれぞれ接続されている。
第1ウォッチドッグタイマ20は、入力端子と2つの出力端子を有しており、入力端子は第1CPU10の動作信号出力φ1に接続される。また、2つの出力端子は、一方が入力された信号が所定の時間より長い間”1”または”0”の状態が継続した場合にウォッチドッグタイマ出力”1”を出力する正論理出力P1であり、他方が正論理出力P1と反転した信号を出力する負論理出力N1となっている。従って第1ウォッチドッグタイマ20の正論理出力P1は、CPUの動作異常を検出した場合に論理出力”1”を出力するよう動作し、負論理出力N1は、CPUの動作異常を検出した場合に論理出力”0”を出力するよう動作する。
第2ウォッチドッグタイマ21は、入力端子と2つの出力端子を有しており、入力端子は第2CPU11の動作信号出力φ2に接続される。また、2つ出力端子は、一方が入力された信号が所定の時間より長い間”1”または”0”の状態が継続した場合にウォッチドッグタイマ出力”1”を出力する正論理出力P2であり、他方が正論理出力P2と反転した信号を出力する負論理出力N2となっている。従って第2ウォッチドッグタイマ21の正論理出力P2は、CPUの動作異常を検出した場合に論理出力”1”を出力するよう動作し、負論理出力N2は、CPUの動作異常を検出した場合に論理出力”0”を出力するよう動作する。
第1の論理回路30は、第1CPU10の第1の出力ポートP01から出力される第1の信号と第2CPU11の第1の出力ポートP11から出力される第1の信号と論理演算する。
第1の論理回路30は、第1の演算素子と第2の演算素子の組合せが、論理積素子の組合せで構成されている。第1の演算素子は、第1の論理和素子30aと第2の論理和素子30bとが、2つのCPU(10,11)に対応してそれぞれ配置されるとともに、第2の演算素子は、第1の論理積素子30cが2つのCPU(10,11)に対して一つ配置されている。
第1の論理回路30に備えられた第1の演算素子の第1の論理和素子30aは、2つの入力端子と1つの出力端子を有している。一方の入力端子は第1CPU10の第1の出力ポートP01に接続され、他方の入力端子は第1ウォッチドッグタイマ20の正論理出力P1と接続されている。第1の論理和素子30aの出力には、第1CPU10の第1の出力ポートP01と第1ウォッチドッグタイマ20の正論理出力P1から出力されるウォッチドッグタイマ出力信号の論理和演算された結果が第2の信号として出力される。
第1の論理回路30に備えられた第1の演算素子の第2の論理和素子30bは、2つの入力端子と1つの出力端子を有している。一方の入力端子は第2CPU11の第1の出力ポートP11に接続され、他方の入力端子は第2ウォッチドッグタイマ21の正論理出力P2と接続されている。第2の論理和素子30bの出力には、第2CPU11の第1の出力ポートP11と第2ウォッチドッグタイマ21の正論理出力P2から出力されるウォッチドッグタイマ出力信号の論理和演算された結果が第2の信号として出力される。
第1の論理回路30に備えられた第2の演算素子の第1の論理積素子30cは、2つの入力端子と1つの出力端子を有している。一方の入力端子は第1の論理和素子30aの出力端子に接続され、他方の入力端子は第2の論理和素子30bの出力端子と接続されている。第1の論理積素子30cの出力には、第1の論理和素子30aから出力される第2の信号と第2の論理和素子30bの出力から出力される第2の信号の、2つの第2の信号が論理積演算された結果が制御信号として出力される。
第2の論理回路31は、第1CPU10の第2の出力ポートP02から出力される第1の信号と第2CPU11の第2の出力ポートP12から出力される第1の信号と論理演算する。
第2の論理回路31は、第1の演算素子と第2の演算素子の組合せが、論理積素子の組合せで構成されている。第1の演算素子は、第2の論理積素子31aと第3の論理積素子31bとが、2つのCPU(10,11)に対応してそれぞれ配置されとともに、第2の演算素子は、第3の論理和素子31cが2つのCPU(10,11)に対して一つ配置されている。
第2の論理回路31に備えられた第1の演算素子の第2の論理積素子31aは、2つの入力端子と1つの出力端子を有している。一方の入力端子は第1CPU10の第2の出力ポートP02に接続され、他方の入力端子は第1ウォッチドッグタイマ20の負論理出力N1と接続されている。第2の論理積素子31aの出力には、第1CPU10の第2の出力ポートP02と第1ウォッチドッグタイマ20の負論理出力N1から出力されるウォッチドッグタイマ出力信号の論理積演算された結果が第2の信号として出力される。
第2の論理回路31に備えられた第1の演算素子の第3の論理積素子31bは、2つの入力端子と1つの出力端子を有している。一方の入力端子は第2CPU11の第2の出力ポートP12に接続され、他方の入力端子は第2ウォッチドッグタイマ21の負論理出力N2と接続されている。第3の論理積素子31bの出力には、第2CPU11の第2の出力ポートP12と第2ウォッチドッグタイマ21の負論理出力N2から出力されるウォッチドッグタイマ出力信号の論理積演算された結果が第2の信号として出力される。
第2の論理回路31に備えられた第2の演算素子の第3の論理和素子31cは、2つの入力端子と1つの出力端子を有している。一方の入力端子は第2の論理積素子31aの出力端子に接続され、他方の入力端子は第3の論理積素子31bの出力端子と接続されている。第3の論理和素子31cの出力には、第2の論理積素子31aから出力される第2の信号と第3の論理積素子31bの出力から出力される第2の信号の、2つの第2の信号が論理和演算された結果が制御信号として出力される。
次に、制御装置100の動作について、図2から図4を用いて説明する。図2は制御装置100の動作説明図であり、第1CPU10及び第2CPU11が正常に動作している状態を説明する図である。図3は制御装置100の動作説明図であり、第1CPU10の動作が異常となった場合の動作を示す図である。図4は制御装置100の動作を示す図であり、第1CPU10及び第2CPU11の動作が異常となった場合の動作を示す図である。
最初に、制御装置100が正常に動作している状態について図2を用いて説明する。
第1CPU10と第2CPU11はそれぞれ、ほぼ同じタイミングで動作し、所定の同じ処理を行うように動作している。この状態では、第1CPU10に備えられた動作信号出力φ1と第2CPU11に備えられた動作信号出力φ2には、所定の時間間隔で”1”と”0”とが交互に出力される。
第1ウォッチドッグタイマ20は、第1CPU10の動作信号出力φ1から所定の時間間隔で”1”と”0”とが交互に入力されるため、第1ウォッチドッグタイマ20の正論理出力P1からは”0”が出力され、負論理出力N1からは”1”が出力される。
第2ウォッチドッグタイマ21は、第2CPU11の動作信号出力φ2から所定の時間間隔で”1”と”0”とが交互に入力されるため、第2ウォッチドッグタイマ21の正論理出力P2からは”0”が出力され、負論理出力N2からは”1”が出力される。
第1の論理回路30に備えられた第1の演算素子の第1の論理和素子30aは、一方の入力端子から第1CPU10の第1の出力ポートP01の出力信号が入力され、他方の入力端子は第1ウォッチドッグタイマ20の正論理出力P1からの出力信号が入力される。図2に示すように、第1ウォッチドッグタイマ20の正論理出力P1からは”0”が出力されているので、第1の論理和素子30aの出力には、第1CPU10の第1の出力ポートP01から出力される信号がそのまま第2の信号として出力されることになる。
第1の論理回路30に備えられた第1の演算素子の第2の論理和素子30bは、一方の入力端子から第2CPU11の第1の出力ポートP11の出力信号が入力され、他方の入力端子は第2ウォッチドッグタイマ21の正論理出力P1からの出力信号が入力される。図2に示すように、第2ウォッチドッグタイマ21の正論理出力P2からは”0”が出力されているので、第2の論理和素子30bの出力には、第2CPU11の第1の出力ポートP11から出力される信号がそのまま第2の信号として出力されることになる。
第1の論理回路30に備えられた第2の演算素子の第1の論理積素子30cは、一方の入力端子には第1の論理和素子30aから出力される第2の信号が入力され、他方の入力端子には第2の論理和素子30bから出力される第2の信号が入力される。従って、第1の論理積素子30cの出力には、第1CPU10の第1の出力ポートP01から出力される信号と、第2CPU11の第1の出力ポートP11から出力される信号が論理積演算された結果が制御信号として出力される。第1CPU10と第2CPU11とは、ほぼ同じタイミングで動作し、所定の同じ処理を行うように動作しているので、第1CPU10の第1の出力ポートP01と第2CPU11の第1の出力ポートP11とからは、同じ信号が出力されている。このため、第1の論理積素子30cからは、第1CPU10の第1の出力ポートP01または第2CPU11の第1の出力ポートP11と同じ信号が制御信号として出力されることとなる。
第2の論理回路31に備えられた第1の演算素子の第2の論理積素子31aは、一方の入力端子から第1CPU10の第2の出力ポートP02の出力信号が入力され、他方の入力端子は第1ウォッチドッグタイマ20の負論理出力N1からの出力信号が入力される。第1ウォッチドッグタイマ20の負論理出力N1からは”1”が出力されているので、第2の論理積素子31aの出力には、第1CPU10の第2の出力ポートP02から出力される信号がそのまま第2の信号として出力されることになる。
第2の論理回路31に備えられた第1の演算素子の第3の論理積素子31bは、一方の入力端子から第2CPU11の第2の出力ポートP12の出力信号が入力され、他方の入力端子は第2ウォッチドッグタイマ21の負論理出力N2からの出力信号が入力される。第2ウォッチドッグタイマ21の負論理出力N2からは”1”が出力されているので、第3の論理積素子31bの出力には、第2CPU11の第2の出力ポートP12から出力される信号がそのまま第2の信号として出力されることになる。
第2の論理回路31に備えられた第2の演算素子の第3の論理和素子31cは、一方の入力端子には第2の論理積素子31aから出力される第2の信号が入力され、他方の入力端子には第3の論理積素子31bから出力される第2の信号が入力される。従って、第3の論理和素子31cの出力には、第1CPU10の第2の出力ポートP02から出力される信号と、第2CPU11の第2の出力ポートP12から出力される信号が論理和演算された結果が制御信号として出力される。第1CPU10と第2CPU11とは、ほぼ同じタイミングで動作し、所定の同じ処理を行うように動作しているので、第1CPU10の第2の出力ポートP02と第2CPU11の第2の出力ポートP12とからは、同じ信号が出力されている。このため、第3の論理和素子31cからは、第1CPU10の第2の出力ポートP02または第2CPU11の第2の出力ポートP12と同じ信号が制御信号として出力されることとなる。
以上のように、制御装置100が正常に動作している場合には、第1CPU10の第1の出力ポートP01と第2CPU11の第1の出力ポートP11からは同じ第1の信号が出力される。2つの第1の信号を第1の論理回路30で演算した結果として、第1CPU10の第1の出力ポートP01及び第2CPU11の第1の出力ポートP11から出力される信号と同じ信号が制御信号として出力される。また、第1CPU10の第2の出力ポートP02と第2CPU11の第2の出力ポートP12からは同じ第1の信号が出力される。2つの第1の信号を第2の論理回路31で演算した結果として、第1CPU10の第2の出力ポートP02及び第2CPU11の第2の出力ポートP12から出力される信号と同じ信号が制御信号として出力される。結果的に出力される制御信号は、それぞれのCPU(10,11)にプログラムされた制御に従って出力された信号が正しく出力されることとなる。
次に、制御装置100の第1CPU10が正常に動作していない場合の動作について図3を用いて説明する。
第1CPU10が何らかの理由によって正常に動作できなくなった場合、第1CPU10に備えられた動作信号出力φ1には所定の時間間隔で”1”と”0”とが交互に出力されなくなる。尚、第2CPU11は正常に動作しており、第2CPU10に備えられた動作信号出力φ2には、所定の時間間隔で”1”と”0”とが交互に出力されている。
第1ウォッチドッグタイマ20は、第1CPU10の動作信号出力φ1から所定の時間間隔で”1”と”0”とが交互に入力されないため、第1ウォッチドッグタイマ20の正論理出力P1からは”1”が出力され、負論理出力N1からは”0”が出力される。
第2ウォッチドッグタイマ21は、第2CPU11の動作信号出力φ2から所定の時間間隔で”1”と”0”とが交互に入力されるため、第2ウォッチドッグタイマ21の正論理出力P2からは”0”が出力され、負論理出力N2からは”1”が出力される。
第1の論理回路30に備えられた第1の演算素子の第1の論理和素子30aは、一方の入力端子から第1CPU10の第1の出力ポートP01の出力信号が入力され、他方の入力端子は第1ウォッチドッグタイマ20の正論理出力P1からの出力信号が入力される。図3に示すように、第1ウォッチドッグタイマ20の正論理出力P1からは”1”が出力されているので、第1の論理和素子30aから出力される第2信号は、第1CPU10の第1の出力ポートP01からの出力に関わらず”1”に固定され不変となる。
第1の論理回路30に備えられた第1の演算素子の第2の論理和素子30bは、一方の入力端子から第2CPU11の第1の出力ポートP11の出力信号が入力され、他方の入力端子は第2ウォッチドッグタイマ21の正論理出力P1からの出力信号が入力される。第2ウォッチドッグタイマ21の正論理出力P2からは”0”が出力されているので、第2の論理和素子30bの出力には、第2CPU11の第1の出力ポートP11から出力される信号がそのまま第2の信号として出力されることになる。
第1の論理回路30に備えられた第2の演算素子の第1の論理積素子30cは、一方の入力端子には第1の論理和素子30aから出力される第2の信号が入力され、他方の入力端子には第2の論理和素子30bから出力される第2の信号が入力される。第1の論理和素子30aから出力される第1信号は”1”に固定されているので、第1の論理積素子30cの出力には、第2CPU11の第1の出力ポートP11から出力される信号が制御信号として出力されることとなる。
第2の論理回路31に備えられた第1の演算素子の第2の論理積素子31aは、一方の入力端子から第1CPU10の第2の出力ポートP02の出力信号が入力され、他方の入力端子は第1ウォッチドッグタイマ20の負論理出力N1からの出力信号が入力される。図3に示すように、第1ウォッチドッグタイマ20の負論理出力N1からは”0”が出力されているので、第2の論理積素子31aから出力される第2信号は、第1CPU10の第2の出力ポートP02からの出力に関わらず”0”に固定され不変となる。
第2の論理回路31に備えられた第1の演算素子の第3の論理積素子31bは、一方の入力端子から第2CPU11の第2の出力ポートP12の出力信号が入力され、他方の入力端子は第2ウォッチドッグタイマ21の負論理出力N2からの出力信号が入力される。第2ウォッチドッグタイマ21の負論理出力N2からは”1”が出力されているので、第3の論理積素子31bの出力には、第2CPU11の第2の出力ポートP12から出力される信号がそのまま第2の信号として出力されることになる。
第2の論理回路31に備えられた第2の演算素子の第3の論理和素子31cは、一方の入力端しには第2の論理積素子31aから出力される第2の信号が入力され、他方の入力端しには第3の論理積素子31bから出力される第2の信号が入力される。第2の論理積素子31aから出力される第1信号は”0”に固定されているので、第3の論理和素子31cの出力には、第2CPU11の第1の出力ポートP11から出力される信号が制御信号として出力されることとなる。
制御装置100の第1CPU10が正常に動作していない場合には、第1CPU10の第1の出力ポートP01から出力される第1の信号が正しい信号とは限らず、第2CPU11の第1の出力ポートP11から出力される第1の信号とも必ずしも一致しない。また、第1CPU10の第2の出力ポートP02から出力される第1の信号が正しい信号とは限らず、第2CPU11の第2の出力ポートP12から出力される第1の信号とも必ずしも一致しない。
しかし、第1CPU10の動作異常を検出した場合に第1ウォッチドッグタイマ20から出力されるウォッチドッグタイマ出力信号が、第1の論理回路30に備えられた第1の演算素子の第1の論理和素子30aの出力が不変となる極性となる”1”を供給する。このことによって、動作が異常となっている第1CPU10の第1の出力ポートP01から出力される信号が制御装置100の動作に影響を与えなくすることができる。また、第1CPU10の動作異常を検出した場合に第1ウォッチドッグタイマ20から出力されるウォッチドッグタイマ出力信号が、第2の論理回路31に備えられた第1の演算素子の第2の論理積素子31aの出力が不変となる極性となる”0”を供給する。このことによって、動作が異常となっている第1CPU10の第2の出力ポートP02から出力される信号が制御装置100の動作に影響を与えなくすることができる。
第1の論理回路30から出力される制御信号は、正常に動作している第2CPU11の第1の出力ポートP11の出力が制御信号として出力される。また、第2の論理回路31から出力される制御信号は、正常に動作している第2CPU11の第2の出力ポートP12の信号が制御信号として出力される。結果的に出力される制御信号は、正常に動作している第2CPU11にプログラムされた制御に従って出力された信号が正しく出力されることとなる。以上の動作は第1CPU10が正常に動作しており、第2CPU11が異常となった場合であっても同様となる。
次に、制御装置100の第1CPU10と第2CPU11がともに正常に動作していない場合の動作について図4を用いて説明する。
第1CPU10が何らかの理由によって正常に動作できなくなった場合、第1CPU10に備えられた動作信号出力φ1には所定の時間間隔で”1”と”0”とが交互に出力されなくなる。また、第2CPU11も何らかの理由によって正常に動作できなくなった場合、第2CPU10に備えられた動作信号出力φ2も所定の時間間隔で”1”と”0”とが交互に出力されなくなる。
第1ウォッチドッグタイマ20は、第1CPU10の動作信号出力φ1から所定の時間間隔で”1”と”0”とが交互に入力されないため、第1ウォッチドッグタイマ20の正論理出力P1からは”1”が出力され、負論理出力N1からは”0”が出力される。
第2ウォッチドッグタイマ21は、第2CPU11の動作信号出力φ2から所定の時間間隔で”1”と”0”とが交互に入力されないため、第2ウォッチドッグタイマ21の正論理出力P2からは”1”が出力され、負論理出力N2からは”0”が出力される。
第1の論理回路30に備えられた第1の演算素子の第1の論理和素子30aは、一方の入力端子から第1CPU10の第1の出力ポートP01の出力信号が入力され、他方の入力端子は第1ウォッチドッグタイマ20の正論理出力P1からの出力信号が入力される。図4に示すように、第1ウォッチドッグタイマ20の正論理出力P1からは”1”が出力されているので、第1の論理和素子30aから出力される第2信号は、第1CPU10の第1の出力ポートP01からの出力に関わらず”1”に固定され不変となる。
第1の論理回路30に備えられた第1の演算素子の第2の論理和素子30bは、一方の入力端子から第2CPU11の第1の出力ポートP11の出力信号が入力され、他方の入力端子は第2ウォッチドッグタイマ21の正論理出力P2からの出力信号が入力される。図4に示すように、第2ウォッチドッグタイマ21の正論理出力P2からは”1”が出力されているので、第2の論理和素子30bから出力される第2信号は、第2CPU11の第1の出力ポートP11からの出力に関わらず”1”に固定され不変となる。
第1の論理回路30に備えられた第2の演算素子の第1の論理積素子30cは、一方の入力端子には第1の論理和素子30aから出力される第2の信号が入力され、他方の入力端子には第2の論理和素子30bから出力される第2の信号が入力される。第1の論理和素子30aから出力される第1信号は”1”に固定されており、第2の論理和素子30bから出力される第1信号も”1”に固定されている。従って、第1の論理積素子30cの出力は、第1CPU10及び第2CPU11の第1の出力ポートP01、P11から出力される信号に関わらず”1”が制御信号として出力されることとなる。
第2の論理回路31に備えられた第1の演算素子の第2の論理積素子31aは、一方の入力端子から第1CPU10の第2の出力ポートP02の出力信号が入力され、他方の入力端子は第1ウォッチドッグタイマ20の負論理出力N1からの出力信号が入力される。図4に示すように、第1ウォッチドッグタイマ20の負論理出力N1からは”0”が出力されているので、第2の論理積素子31aから出力される第2信号は、第1CPU10の第2の出力ポートP02からの出力に関わらず”0”に固定され不変となる。
第2の論理回路31に備えられた第1の演算素子の第3の論理積素子31bは、一方の入力端子から第2CPU11の第2の出力ポートP12の出力信号が入力され、他方の入力端子は第2ウォッチドッグタイマ21の負論理出力N2からの出力信号が入力される。図4に示すように、第2ウォッチドッグタイマ21の負論理出力N2からは”0”が出力されているので、第3の論理積素子31bから出力される第2信号は、第2CPU11の第2の出力ポートP12からの出力に関わらず”0”に固定され不変となる。
第2の論理回路31に備えられた第2の演算素子の第3の論理和素子31cは、一方の入力端しには第2の論理積素子31aから出力される第2の信号が入力され、他方の入力端しには第3の論理積素子31bから出力される第2の信号が入力される。第2の論理積素子31aから出力される第1信号は”0”に固定されており、第3の論理積素子31bから出力される第1信号も”0”に固定されている。従って、第3の論理和素子31cの出力は、第1CPU10及び第2CPU11の第2の出力ポートP02、P12から出力される信号に関わらず”0”が制御信号として出力されることとなる。
制御装置100の第1CPU10と第2CPU11が、ともに正常に動作していない場合には、第1CPU10及び第2CPU11から出力される第1の信号が正しい信号とは限らない。
しかし、第1CPU10の動作異常を検出した場合に第1ウォッチドッグタイマ20から出力されるウォッチドッグタイマ出力信号が、第1の論理回路30に備えられた第1の演算素子の第1の論理和素子30aの出力が不変となる極性となる”1”を供給する。このことによって、動作が異常となっている第1CPU10の第1の出力ポートP01から出力される信号が制御装置100の動作に影響を与えなくすることができる。また、第1CPU10の動作異常を検出した場合に第1ウォッチドッグタイマ20から出力されるウォッチドッグタイマ出力信号が、第2の論理回路31に備えられた第1の演算素子の第2の論理積素子31a出力が不変となる極性となる”0”を供給する。このことによって、動作が異常となっている第1CPU10の第2の出力ポートP02から出力される信号が制御装置100の動作に影響を与えなくすることができる。
また、第2CPU11の動作異常を検出した場合に第2ウォッチドッグタイマ21から出力されるウォッチドッグタイマ出力信号が、第1の論理回路30に備えられた第1の演算素子の第2の論理和素子30bの出力が不変となる極性となる”1”を供給する。このことによって、動作が異常となっている第2CPU11の第2の出力ポートP12から出力される信号が制御装置100の動作に影響を与えなくすることができる。また、第2CPU11の動作異常を検出した場合に第2ウォッチドッグタイマ21から出力されるウォッチドッグタイマ出力信号が、第2の論理回路31に備えられた第1の演算素子の第3の論理積素子31b出力が不変となる極性となる”0”を供給する。このことによって、動作が異常となっている第2CPU11の第2の出力ポートP12から出力される信号が制御装置100の動作に影響を与えなくすることができる。
以上のように、制御装置100の第1CPU10と第2CPU11が、ともに正常に動作していない場合には、第1の論理回路30から出力される制御信号は、”1”に固定され、第2の論理回路31から出力される制御信号は、”0”に固定される。このため、第1の論理回路30は、出力される制御信号が”1”となった場合にフェールセーフとなる制御対象に適用することで、まれに両方のCPU(10,11)が異常動作となった場合でも制御装置100が適用される機器を安全に制御することができる。また、第2の論理回路31は、出力される制御信号が”0”となった場合にフェールセーフとなる制御対象に適用することで、まれに両方のCPU(10,11)が異常動作となった場合でも制御装置100が適用される機器を安全に制御することができる。
以下、本実施形態としたことによる効果について説明する。
本実施形態の制御装置100では、複数のCPU(10,11)は、それぞれ第1の信号を出力する複数の出力ポート(P01,P02,P11,P12)を有し、複数のウォッチドッグタイマ(20,21)は、複数のCPU(10,11)と同数設けられ、複数のCPU(10,11)にそれぞれ接続され、複数のCPU(10,11)から出力された第1の信号を論理演算する論理回路(30,31)を有し、論理回路は(30,31)、複数のCPUに対応してそれぞれ配置される第1の演算素子と、複数のCPUに対して一つ配置される第2の演算素子と、を備え、複数のCPU(10,11)に所定の同じ処理を行わせるとともに、第1の演算素子は、複数のCPU(10,11)にそれぞれ接続されたウォッチドッグタイマ(20,21)から出力されるウォッチドッグタイマ出力信号と、複数のCPUの出力ポートから出力される第1の信号と、を論理演算して第2の信号として出力し、第2の演算素子は、複数の第1の演算素子から出力される複数の第2の信号を論理演算して制御信号として出力するように構成した。
これにより、ウォッチドックタイマ(20,21)から出力されるウォッチドッグタイマ出力信号と、CPU(10,11)から出力される第1の信号と、を第1の演算素子で論理演算することで、CPUに異常があった場合に異常があったCPU側の第1の信号をフェールセーフ側に固定することができる。更に複数のCPUからの第1の信号を、第2の演算素子で論理演算することで、複数の第1の信号から、フェールセーフ側信号または制御信号を継続して出力することができる。従って、異常が生じた場合でも機器の動作を停止することなく誤動作を低減することができる制御装置を提供することができる。
また、本実施形態の制御装置100では、論理回路(30,31)を複数有し、論理回路(30,31)は、第1の演算素子と第2の演算素子の組合せが、論理和素子と論理積素子の組合せであり、ウォッチドッグタイマ(20,21)の出力は、CPU(10,11)の動作異常を検出した場合に第1の演算素子の出力が不変となる極性で第1の演算素子に供給されるように構成した。
これにより、CPU(10,11)の動作異常を検出した場合に、第1の演算素子の出力を固定することができる。第1の演算素子の出力を固定されるので、他のCPUが正常に動作している場合には第2の演算素子によって他のCPUから出力された信号に従った制御信号を出力することができる。また、CPU(10,11)が制御する複数の機能に対して論理回路を設けることで、複数の機能に対して動作を停止することなく誤動作を低減することができる。
また、本実施形態の制御装置100では、論理回路(30,31)のうち少なくともその1つは、第1の演算素子が論理和素子であるとともに、第2の演算素子が論理積素子であり、ウォッチドッグタイマ(20,21)は、CPU(10,11)の動作異常を検出した場合に論理出力”1”を出力するように構成した。
これにより、CPUが異常動作した場合に第1の演算素子の出力を”1”に固定することができる。第2の演算素子が論理積であるので、他のCPUが正常に動作している場合には他のCPUから出力された信号に従った制御信号を出力することができる。
また、本実施形態の制御装置100では、論理回路(30,31)のうち少なくともその1つは、第1の演算素子が論理積素子であるとともに、第2の演算素子が論理和素子であり、ウォッチドッグタイマ(20,21)は、CPU(10,11)の動作異常を検出した場合に論理出力”0”を出力するように構成した。
これにより、CPUが異常動作した場合に第1の演算素子の出力を”0”に固定することができる。第2の演算素子が論理和であるので、他のCPUが正常に動作している場合には他のCPUから出力された信号に従った制御信号を出力することができる。
以上のように、本発明の実施形態に係る制御装置100を具体的に説明したが、本発明は上記の実施形態に限定されるものではなく、要旨を逸脱しない範囲で種々変更して実施することが可能である。例えば次のように変形して実施することができ、これらの実施形態も本発明の技術的範囲に属する。
(1)本実施形態において、複数のCPUは、第1CPU10と第2CPU11の2つのCPUであるとしたが、CPUが3つ以上あるように変更して実施しても良い。
(2)本実施形態において、CPUの複数の出力ポートが第1CPU10と第2CPU11それぞれ2つずつ有している例を示して説明を行ったが、出力ポートの数は制御装置が使用される機器やシステムにあわせ必要なだけの数量に変更して実施することができる。
(3)本実施形態において、ウォッチドッグタイマ(20,21)は、正論理出力(P1,P2)と、負論理出力(N1,N2)の2つの出力を有する例を示して説明を行ったがどちらか一方の出力を備えたウォッチドッグタイマを用いても良い。この場合、出力に論理否定素子を用いて反転出力を得ることで同様の動作を行わせることができる。
[第2実施形態]
図5に本発明の基本的な実施形態の制御装置101Aが示され、図6ないし図8に、制御装置101Aを基本とした第2実施形態の制御装置101が示されている。
図5に示す制御装置101Aには、図1に示す制御装置100に設けられたのと同じ第1の論理回路30が設けられているが、第2の論理回路31に相当するものは設けられていない。第1CPU10からは、第1の出力ポートP01からの第1の信号と、動作信号出力φ1とが得られる。第2CPU11からは、第1の出力ポートP11からの第1の信号と、動作信号出力φ2とが得られる。また、第1ウォッチドッグタイマ20から正論理出力P1が得られ、第2ウォッチドッグタイマ21からも、正論理出力P2が得られる。
図4を参照して既に説明したように、第1CPU10と第2CPU11がともに正常に動作していない場合に、第1ウォッチドッグタイマ20の正論理出力P1からは”1”が出力され、第2ウォッチドッグタイマ21の正論理出力P2からも”1”が出力される。よって、第1の演算素子の第1の論理和素子30aから出力される第2信号は、第1CPU10の第1の出力ポートP01からの出力に関わらず”1”に固定される。同様に、第1の演算素子の第2の論理和素子30bから出力される第2信号も、第2CPU11の第1の出力ポートP11からの出力に関わらず”1”に固定される。
よって、第1CPU10と第2CPU11がともに正常に動作していない場合に、第1の論理回路30では、第2の演算素子の第1の論理積素子30cからは、”1”に固定された制御信号が出力される。よって、制御信号が”1”なった場合にフェールセーフとなる制御対象に適用することで、まれに両方のCPU(10、11)が異常動作となった場合でも制御装置101Aが適用される機器を安全に制御することができる。
しかし、図5に示す基本例では、両方のCPU(10、11)が異常動作となった場合に、第1の論理積素子30cからの制御信号が”1”に固定されるため、制御信号が”1”なった場合にフェールセーフとなる制御対象にしか適用することができない。すなわち、入力される制御信号が”0”となったときにフェールセーフとなる制御対象の場合には、制御装置101Aを使用することができなくなる。一方で、第1の論理回路30の構成として、第2の演算素子の第1の論理積素子30cを「AND」の論理回路素子を使用するのが最適な場合があり、容易に第2の論理回路31に変更できないこともある。
そこで、図6ないし図8に示す第2実施形態の制御装置101では、図5に示す基本例に第3の演算素子41と第4の演算素子42を付加することで、両方のCPU(10、11)が異常動作となった場合の制御信号を”0”に変更できるようにしている。
図6ないし図8に示すように、第3の演算素子41は論理積素子である。第1ウォッチドッグタイマ20の正論理出力P1と第2ウォッチドッグタイマ21の正論理出力P2との論理積が第3の演算素子41で演算されて、第3の信号として出力される。第4の演算素子42も論理積素子であるが、第3の演算素子41から出力される第3の信号は、第4の演算素子42に反転して入力される。第4の演算素子42では、第3の演算素子41から出力される第3の信号と第1の論理積素子30cからの出力信号の論理積が演算されて制御信号として出力される。
図6は、第2実施形態の制御装置101が正常に動作している場合を示している。
図2に基づいて説明したのと同様に、第1CPU10が正常に動作していると、第1ウォッチドッグタイマ20の正論理出力P1が”0”である。そのため、第1CPU10の第1の出力ポート01から出力される第1の信号は、そのままの符号で、第1の論理和素子30aから第2の信号として出力される。同様に、第2CPU11が正常に動作していると、第2ウォッチドッグタイマ20の正論理出力P2も”0”である。そのため、第2CPU11の第1の出力ポート11から出力される第1の信号は、そのままの符号で、第2の論理和素子30bから第2の信号として出力される。
したがって、第1の論理積素子30cからは、第1の論理和素子30aから出力される第2の信号と第2の論理和素子30bから出力される第2信号とが論理積演算される。
第3の演算素子41の論理積素子には、第1ウォッチドッグタイマ20からの正論理出力P1の”0”と、第2ウォッチドッグタイマ21からの正論理出力P2の”0”とが入力される。よって、第3の演算素子41で論理積演算される第3の信号は”0”である。この第3の信号は反転され”1”となって第4の演算素子42に与えられる。そのため、第4の演算素子42では、論理積演算されて出力される制御信号として、第1の論理積素子30cの演算結果がそのまま出力される。
図7は、一方の第1CPU10のが正常に動作していない状態を示している。
図3に基づいて説明したとの同様に、第1CPU10が正常に動作していないとき、第1ウォッチドッグタイマ20の正論理出力P1が”1”になる。よって、第1の論理和素子30aからの第2の信号は”1”に固定される。一方、第2ウォッチドッグタイマ21の正論理出力P2は”0”であるため、第2CPU11の第1の出力ポートP11から第1の信号は、第2の論理和素子30bからそのままの符号で第2信号として出力される。
したがって、第2の論理和素子30bからの第2の信号が、そのまま第1の論理積素子30cから出力される。
第3の演算素子41には、第1ウォッチドッグタイマ20から”1”が、第2ウォッチドッグタイマ21から”0”が与えられるため、第3の演算素子41からは論理積である”0”が第3の出力となり、これが反転されて第4の演算素子42に与えられる。よって、第4の演算素子42で論理積演算されて出力される制御信号としては、第1の論理積素子30cの演算結果がそのまま出力される。
図8は、第1CPU10と第2CPU20がともに正常に動作していない状態を示している。
図4に基づいて説明したのと同様に、第1CPU10と第2CPU20がともに正常に動作していない場合、第1ウォッチドグタイマ20の正論理出力P1と第2ウォッチドッグタイマ21の正論理出力P2がともに”1”になる。よって、第1の論理和素子30aの出力である第2の信号と、第2の論理和素子30bの出力である第2の信号がともに”1”となり、第1の論理積素子30cの出力が”1”に固定される。
第1ウォッチドグタイマ20の正論理出力P1の”1”と、第2ウォッチドッグタイマ21の正論理出力P2の”1”は、第3の演算素子41に与えられ、その論理積である第3の信号が”1”となる。第4の演算素子42には、第3の信号”1”が反転した”0”と、第1の論理積素子30cの出力の”1”とが与えられるため、第4の演算素子42から出力される制御信号は”0”となる。
このように、図5に示す基本的な制御装置101Aに、第3の演算素子41と第4の演算素子42を付加することで、2つのCPU(10,11)が共に正常に動作していないときの制御信号を、図5における”1”から”0”に変更することができ、図5に示す基本的な回路構成を使用して、制御信号が”0”なった場合にフェールセーフとなる制御対象に適用することが可能になる。
[第3実施形態]
図9に本発明の基本的な実施形態の制御装置102Aが示され、図10ないし図12に、制御装置102Aを基本とした第3実施形態の制御装置102が示されている。
図9に示す制御装置102Aには、図1に示す制御装置100における第2の論理回路31に相当する回路が設けられているが、第1の論理回路30に相当する回路は設けられていない。
制御装置102Aでは、第1CPU10から、第1の出力ポートP01からの第1の信号と、動作信号出力φ1とが得られる。第2CPU11からは、第1の出力ポートP11からの第1の信号と、動作信号出力φ2とが得られる。また、第1ウォッチドッグタイマ20からは正論理出力P1が出力され、第2ウォッチドッグタイマ21からも正論理出力P2が出力される。
図4に基づいて説明したのと同様に、第1CPU10と第2CPU11がともに正常に動作していない場合には、第1ウォッチドッグタイマ20からの正論理出力P1が”1”となり、これが反転された”0”が第1の演算素子の第2の論理積素子31aに与えられる。第2ウォッチドッグタイマ21からの正論理出力P2も”1”となり、これがが反転された”0”が第1の演算素子の第3の論理積素子31bに与えられる。
そのため、第1の演算素子の第2の論理積素子31aから出力される第2信号が、第1CPU10の第1の出力ポートP01からの出力に関わらず”0”に固定される。同様に、第1の演算素子の第3の論理積素子31bから出力される第2信号も、第2CPU11の第1の出力ポートP11からの出力に関わらず”0”に固定される。
よって、第1CPU10と第2CPU11がともに正常に動作していない場合に、第2の演算素子の第3の論理和素子31cからは、”0”に固定された制御信号が出力される。よって、制御信号が”0”なった場合にフェールセーフとなる制御対象に適用することができる。ただし、図9に示す基本的な回路構成を、制御信号が”1”となった場合にフェールセーフとなる制御対象に適用することはできない。
そこで、図10ないし図12に示す第3実施形態の制御装置102では、図9に示す基本構成の制御装置102Aに、第3の演算素子45と第4の演算素子46を付加している。第3の演算素子45は論理積素子であり、第1ウォッチドッグタイマ20の正論理出力P1と第2ウォッチドッグタイマ21の正論理出力P2との論理積が演算され、演算結果が第3の信号として出力される。第4の演算素子46は論理和素子であり、第3の演算素子45から出力される第3の信号と、第3の論理和素子31cからの出力信号の論理和が演算されて制御信号として出力される。
図10は、第3実施形態の制御装置102が正常に動作している場合を示している。
図2に基づいて説明したのと同様に、第1CPU10が正常に動作していると、第1ウォッチドッグタイマ20の正論理出力P1の”0”が反転した”1”が第2の論理積素子31aに与えられ、第2ウォッチドッグタイマ21の正論理出力P2の”0”が反転した”1”が第3の論理積素子31bに与えられる。そのため、第1CPU10の第1の出力ポート01から出力される第1の信号と第2CPU11の第1の出力ポート11から出力される第1の信号は、そのままの符号で、第2の論理積素子31aと第3の論理積素子31bから第2の信号として出力される。したがって、第3の論理和素子31cからは、第1の論理和素子30aから出力される第2の信号と第2の論理和素子30bから出力される第2信号とが論理和演算される。
第3の演算素子45の論理積素子では、第1ウォッチドッグタイマ20からの正論理出力P1の”0”と、第2ウォッチドッグタイマ21からの正論理出力P2の”0”が入力される。よって第3の演算素子45で論理積演算される第3の信号は”0”である。したがって、第4の演算素子46で論理和演算されて出力される制御信号としては、第3の論理和素子31cの演算結果がそのまま出力される。
図11は、一方の第1CPU10のみが正常に動作していない状態を示している。
図3に基づいて説明したとの同様に、第1CPU10が正常に動作していないとき、第1ウォッチドッグタイマ20の正論理出力P1が”1”になる。この”1”が反転されて第2の論理積素子31aに与えらるため、第2の論理積素子31aからの第2の信号は”0”に固定される。一方で、第3の論理和素子31cからは、第2CPU11の第1の出力ポートP11からの第1の信号がそのままの符号で第2信号として出力される。
第3の演算素子45には、第1ウォッチドッグタイマ20からの正論理出力P1の”1”と、第2ウォッチドッグタイマ21からの正論理出力P2の”0”が与えられるため、第3の演算素子41からは論理積である”0”が第3の出力となる。よって、第4の演算素子46で論理和演算されて出力される制御信号として、第3の論理和素子31cの演算結果がそのまま出力される。
図12は、第1CPU10と第2CPU20がともに正常に動作していない状態を示している。
図4に基づいて説明したのと同様に、第1CPU10と第2CPU20がともに正常に動作していない場合、第1ウォッチドグタイマ20の正論理出力P1と第2ウォッチドッグタイマ21の正論理出力P2がともに”1”になる。これらが反転した”0”が、第2の論理積素子31aと第3の論理積素子31bにあたえられるため、第2の論理積素子31aの出力である第2の信号と、第3の論理積素子31bの出力である第2の信号がともに”0”となり、第3の論理和素子31cの出力も”0”となる。
第1ウォッチドグタイマ20の正論理出力P1の”1”と第2ウォッチドッグタイマ21の正論理出力P2の”1”が、第3の演算素子45に与えられるため、その論理積である第3の信号が”1”となる。第4の演算素子46には、第3の論理和素子31cの出力の”0”と前記第3の信号の”1”が与えられるため、第4の演算素子46から出力される制御信号は”1”となる。
すなわち、図9に示す基本的な制御装置102Aに第3の演算素子45と第4の演算素子46を付加することで、2つのCPU(10,11)が共に正常に動作していないときの制御信号を、図6における”0”から図12に示す”1”に変更することができ、制御信号が”1”なった場合にフェールセーフとなる制御対象に適用することが可能になる。