(57)【要約】【課題】部品点数が少なく、安全制御と非安全制御の両方を効率よく実行可能な安全コントローラを提供する。【解決手段】安全コントローラ１００は、プロセッサ１０により安全制御および非安全制御の両方を実行する。プロセッサ１０では、非安全制御に係る演算処理は非安全制御部１５により１回ずつ実行されるが、安全制御に係る演算処理は安全制御部１１によって２回繰り返して実行される。またプロセッサ１０は、安全制御部１１による２回の演算処理の結果が一致しない場合にエラーを検出する照合部１２と、照合部１２によってエラーが検出されると安全コントローラ１００をシャットダウンさせる異常処理部１４とを備える。【選択図】図１
2014225110.tif 000002
【特許請求の範囲】
【請求項１】
同一のプロセッサにより安全制御および非安全制御の両方を実行する安全コントローラであって、
前記プロセッサは、
安全制御に係る演算処理を２回繰り返して実行する安全制御部と、
前記安全制御部が行った２回の演算処理の結果を照合し、両者が一致しない場合にエラーを検出する照合部と、
前記照合部によってエラーが検出されると、当該安全コントローラをシャットダウンさせる異常処理部と、
非安全制御に係る演算処理を１回ずつ実行する非安全制御部と、
を備えることを特徴とする安全コントローラ。
【請求項２】
当該安全コントローラのハードエラーを検出する自己診断部をさらに備え、
前記異常処理部は、前記自己診断部によってハードエラーが検出された場合も、当該安全コントローラをシャットダウンさせる
請求項１記載の安全コントローラ。
【請求項３】
前記照合部は、前記安全制御部が行った２回の演算処理の結果が一致しなくてもエラーを検出しない動作モードに切り替え可能である
請求項１または請求項２記載の安全コントローラ。
【請求項４】
前記異常処理部は、前記照合部によりエラーが予め定められた回数連続して検出された場合に、当該安全コントローラをシャットダウンさせる
請求項１から請求項３のいずれか一項記載の安全コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械や装置の安全に関する制御を行う安全コントローラに関する。
【背景技術】
【０００２】
一般に、機械や装置（以下「装置」と総称）の安全に関する制御（安全制御）は、ＩＥＣ６１５０８規格に準じた安全コントローラにより実行される。ＩＥＣ６１５０８規格は、装置の部品の永続的な故障であるハードエラーと、ノイズ等による一時的な故障であるソフトエラーを検出して、制御対象の装置の安全を確保することを安全コントローラに要求している。
【０００３】
安全制御の技術としては、例えば下記の特許文献１に、プロセッサやメモリを二重化し、それぞれの演算結果を照合することで安全性を診断する技術が開示されている。また、下記の特許文献２には、１つのプロセッサで同じ処理を２回実行し、その２回の実行結果を別々のメモリに書き込んで両者を照合することで安全性を診断する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２２４２９号公報
【特許文献２】特開昭５９−１９４２０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年、部品点数を減らすことによる信頼性向上やシステムの小型化を図ることを理由に、１台の安全コントローラで安全制御と非安全制御の両方を実行したいとの要望がある。例えば、特許文献１の技術を用いた安全コントローラでは、プロセッサが２つ必要であるため部品点数は多くなることは避けられない上、安全制御と非安全制御の両方を実行させると、安全性の診断が不要な非安全制御も２つのプロセッサで実行されるという無駄な処理が生じる。また、特許文献２の技術を用いた安全コントローラで安全制御と非安全制御の両方を実行させると、安全性の診断が不要な非安全制御も２回実行されるため処理時間が長くなる。
【０００６】
本発明は以上のような課題を解決するためになされたものであり、部品点数が少なく、安全制御と非安全制御の両方を効率よく実行可能な安全コントローラを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る安全コントローラは、同一のプロセッサにより安全制御および非安全制御の両方を実行する安全コントローラであって、前記プロセッサは、安全制御に係る演算処理を２回繰り返して実行する安全制御部と、前記安全制御部が行った２回の演算処理の結果を照合し、両者が一致しない場合にエラーを検出する照合部と、前記照合部によってエラーが検出されると、当該安全コントローラをシャットダウンさせる異常処理部と、非安全制御に係る演算処理を１回ずつ実行する非安全制御部と、を備えるものである。
【発明の効果】
【０００８】
本発明によれば、安全制御と非安全制御の両方を実行でき、コンパクトで信頼性の高い安全コントローラを得ることができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る安全コントローラの構成を示すブロック図である。
【図２】実施の形態２に係る安全コントローラの構成を示すブロック図である。
【発明を実施するための形態】
【００１０】
＜実施の形態１＞
図１は、本発明の実施の形態１に係る安全コントローラ１００の構成を示すブロック図である。同図の如く、安全コントローラ１００は、入力部１、出力部２、プロセッサ１０、メモリ２０を備えている。
【００１１】
プロセッサ１０は、安全制御部１１、照合部１２、自己診断部１３、異常処理部１４および非安全制御部１５を含んでいる。これらの各要素は、プロセッサ１０がプログラムに従って動作することにより実現される。
【００１２】
安全制御部１１は、安全に関する制御（安全制御）に係る演算処理を２回繰り返して実行する。照合部１２は、安全制御部１１による２回の演算結果（出力データ）を照合することで、安全制御部１１の診断を行う。つまり、２回の演算結果が一致しない場合、安全制御部１１にエラーが生じたものと判断する。
【００１３】
自己診断部１３は、プロセッサ１０、メモリ２０や電源（不図示）の診断を行って、それらのハードエラーを検出する。自己診断部１３は、プロセッサ１０に関しては、レジスタ、ＡＬＵ（Arithmetic and Logic Unit）、割り込みコントローラなどを、テストパターンまたはウォーキングビットにより診断する。メモリ２０に関しては、複数ワードのウォーキングビットおよび他アドレスへの無影響の確認を行う。また、電源に関しては、電圧監視および電圧監視回路自身の診断を実施する。これらの診断手法はＩＥＣ６１５０８−２に準じる。
【００１４】
異常処理部１４は、照合部１２または自己診断部１３によりエラーが検出された場合に、安全コントローラ１００を安全にシャットダウンさせる。
【００１５】
非安全制御部１５は、安全に関連しない制御（非安全制御）の演算処理を行う。非安全制御の演算処理は、その演算結果を照合する必要はないので、１回ずつ実行される。
【００１６】
メモリ２０は、第１メモリ領域２１、第２メモリ領域２２、第３メモリ領域２３を含んでいる。第１メモリ領域２１は、安全制御部１１が行う安全制御の１回目の演算処理に使用される。第２メモリ領域２２は、安全制御部１１が行う安全制御の２回目の演算処理に使用される。第３メモリ領域２３は、非安全制御部１５が行う非安全制御の演算処理に使用される。
【００１７】
安全コントローラ１００の入出力デバイスとなるセンサ、スイッチ、コンタクタやアクチュエータなどは、入力部１および出力部２に接続される。入力部１から入力される安全制御関連の入力データは、第１メモリ領域２１と第２メモリ領域２２の両方に同じように書き込まれる。入力部１から入力される非安全制御関連の入力データは、第３メモリ領域２３に書き込まれる。
【００１８】
また、安全コントローラ１００は、第１メモリ領域２１に書き込まれている出力データ（安全制御部１１による演算結果）を、安全制御関連の出力データとして出力部２から出力する。また、第３メモリ領域２３に書き込まれている出力データ（非安全制御部１５による演算結果）を、非安全制御関連の出力データとして出力部２から出力する。
【００１９】
以下、安全コントローラ１００の動作について説明する。安全コントローラ１００が安全制御を行う場合、プロセッサ１０の安全制御部１１が、安全制御に係る演算処理のためのプログラムを２回繰り返し実行する。１回目のプログラム実行では、プログラムの変数領域やワークエリアに第１メモリ領域２１を使用する。２回目のプログラム実行では、プログラムの変数領域やワークエリアに第２メモリ領域２２を使用する。
【００２０】
照合部１２は、第１メモリ領域２１に書き込まれた１回目のプログラム実行による演算結果（出力データ）と、第２メモリ領域２２に書き込まれた２回目のプログラム実行による演算結果とを照合する。照合の結果、両者が一致していれば、照合部１２は安全制御部１１にエラーが生じていないと判断し、第１メモリ領域２１に書き込まれている出力データを出力部２から出力させる。しかし、両者が一致しなければ、照合部１２は、安全制御部１１にエラーが生じたと判断し、異常処理部１４にエラーを通知する。異常処理部１４は、照合部１２からエラーの通知を受けると、安全コントローラ１００をシャットダウンさせる。
【００２１】
このように、照合部１２が、第１メモリ領域２１内の１回目の演算結果と第２メモリ領域２２内の２回目の演算結果とを照合して安全制御部１１のエラー（多くはソフトエラーである）を検出し、異常処理部１４がエラーの発生時に安全コントローラ１００をシャットダウンさせることで、安全コントローラ１００の制御対象である装置がエラーにより誤動作することを回避できる。ただし、静的変数やカウンタ値など、継続的に使用するデータのメモリ領域にソフトエラーが発生した場合、直ちに検出できずソフトエラーが蓄積される可能性がある。その問題を回避するために、最終的な演算結果だけでなく、静的変数やカウンタ値など継続的にメモリ上に存在するデータも、照合部１２による照合の対象に含ませてもよい。
【００２２】
また、自己診断部１３は、プロセッサ１０、メモリ２０や電源（不図示）の診断を常時行い、それらのエラー（ハードエラー）の発生を検出する。自己診断部１３は、検出したエラーを異常処理部１４に通知する。異常処理部１４は、自己診断部１３からエラーの通知を受けたときも、安全コントローラ１００をシャットダウンさせる。
【００２３】
このとき、異常処理部１４は、ソフトエラーが生じた場合（照合部１２がエラーを検出した場合）とハードエラーが生じた場合（自己診断部１３がエラーを検出した場合）とで、安全コントローラ１００本体のＬＥＤ等によるエラー表示を異ならせるなどして、ユーザにエラーの種類を通知するようにしてもよい。
【００２４】
一方、安全コントローラ１００が非安全制御を行う場合、その演算処理のためのプログラムは、プロセッサ１０の非安全制御部１５によって１回のみ実行される。非安全制御部１５は、プログラムの変数領域やワークエリアに第３メモリ領域２３を使用し、その演算結果（出力データ）も第３メモリ領域２３に書き込まれる。非安全制御部１５の演算結果は安全性の要求がないため、第３メモリ領域２３に書き込まれた出力データは、照合も自己診断も行われずに出力部２から出力される。
【００２５】
以上のように、本実施の形態の係る安全コントローラ１００のプロセッサ１０においては、安全制御に係る演算処理は、安全制御部１１により２回行われ、その２回の演算結果を照合部１２が照合することでソフトエラーが検出される。また、ハードエラーは、自己診断部１３によるプロセッサ１０、メモリ２０や電源の診断によって検出される。一方、非安全制御に係る演算処理は、非安全制御部１５により１回のみ行われる。従って、この安全コントローラ１００では、１つのプロセッサ１０によって安全制御と非安全制御の両方が実行され、且つ、非安全制御については診断などの無駄な処理は行われない。よって安全制御と非安全制御の両方を効率的に行うことができる。また、プロセッサ１０が１つであるので、安全コントローラ１００の部品点数が少なくなり、小型化および信頼性の向上に寄与できる。
【００２６】
＜実施の形態２＞
図２は、本発明の実施の形態２に係る安全コントローラ１００の構成を示すブロック図である。当該安全コントローラ１００は、図１の構成に対し、エンジニアリングツール３を設けると共に、メモリ２０内に不揮発性メモリ領域２４を追加したものである。
【００２７】
エンジニアリングツール３は、プロセッサ１０が実行するプログラムや各種のパラメータを不揮発性メモリ領域２４へ書き込むことができると共に、プログラム実行中におけるメモリ２０内のデータの読み出しや書き込みを行うことができる。不揮発性メモリ領域２４に書き込まれたプログラムやパラメータは、安全コントローラ１００の電源投入時に読み出され、メモリ２０内の規定の領域に書き込まれる。なお、エンジニアリングツール３が不揮発性メモリ領域２４への書き込みおよび読み出しを行うときは、ＣＲＣ（Cyclic Redundancy Checking）等の冗長符号によってデータ化けの診断を行うことが望ましい。
【００２８】
実施の形態２に係る安全コントローラ１００は、実施の形態１と同様の動作を行う「通常モード」と、プログラムのテストやデバッグを行うための「テストモード」の２つの動作モードを有している。テストモードでは、照合部１２はエラーの検出を行わない。つまり、テストモード時の照合部１２は、第１メモリ領域２１に書き込まれた安全制御部１１による１回目の演算結果と、第２メモリ領域２２に書き込まれた安全制御部１１による２回目の演算結果とが一致しなくても、それをエラーとして検出しない。
【００２９】
エンジニアリングツール３は、照合部１２に対して、通常モードとテストモードの設定を行う。また、エンジニアリングツール３による第１メモリ領域２１および第２メモリ領域２２への安全制御関連のデータの書き込みは、テストモードのときのみに許可される。また、エンジニアリングツール３による第３メモリ領域２３への非安全制御関連のデータの書き込みは、動作モードに関係なく許可される。
【００３０】
例えば、実施の形態１の安全コントローラ１００に対して、プログラムのテストやデバッグを行う場合、エンジニアリングツールから同じデータを第１メモリ領域２１と第２メモリ領域２２に書き込んだとしても、安全制御部１１のソフトエラーが生じて１回目の演算結果と２回目の演算結果が変わると、照合部１２がエラーを検出するため、安全コントローラ１００がシャットダウンしてプログラムのテストやデバッグが中断することが考えられる。
【００３１】
実施の形態２に係る安全コントローラ１００は、テストモードに設定すると、照合部１２がエラーを検出しなくなるため、安全制御部１１のソフトエラーによってプログラムのテストやデバッグが中断されることを防止できる。よって、プログラムのテストやデバッグに係る作業の効率化を図ることができる。
【００３２】
また、テストモードでは、第１メモリ領域２１内の１回目の演算結果を２回目の演算結果と照合する必要がないので、第２メモリ領域２２は実質的には使用されない。よって、エンジニアリングツール３は、テストモード時に、第１メモリ領域２１および第２メモリ領域２２に同じデータを書き込む必要はなく、第１メモリ領域２１にのみにデータを書き込んでもよい。
【００３３】
その場合、テストモード中に第１メモリ領域２１と第２メモリ領域２２の内容が異なるようになるため、安全コントローラ１００がテストモードから通常モードへ移行するときには、第１メモリ領域２１内のデータと第２メモリ領域２２内のデータが一致するように、第１メモリ領域２１内のデータを第２メモリ領域２２へとコピーする。あるいは、通常モードへの移行時に安全コントローラ１００をリセットして、第１メモリ領域２１と第２メモリ領域２２を初期化してもよい。
【００３４】
以上のように、実施の形態２の安全コントローラ１００によれば、プログラムのテストやデバッグをテストモードで行うことにより、それらがソフトエラーによって中断されることを防止できる。また、本実施の形態では、通常モードとテストモードとで、安全制御部１１の動作を変更させずに、照合部１２の動作を変更させている。つまり、どちらの動作モードでも安全制御部１１が行う処理は同じでよい（演算処理を２回行えばよい）。よって、安全コントローラ１００の制御周期やプログラムの動作タイミングを、動作モードごとに変更する必要がないという利点もある。
【００３５】
＜実施の形態３＞
本発明に係る安全コントローラ１００の照合部１２が検出するエラーは、その多くがソフトエラーであるため、次の動作周期にはエラーが解消される確率が高い。仮に、ソフトエラーが１度でも検出されれば即座に安全コントローラ１００がシャットダウンすると、安全コントローラ１００の制御対象である装置はたびたび停止することになるであろう。そこで実施の形態３では、異常処理部１４が、照合部１６からエラーの通知を受けても直ちにはシャットダウンせず、照合部１６からのエラーが予め定められた回数連続して通知されたときにシャットダウンするものとする。
【００３６】
一方、自己診断部１３が検出するエラーは永続的なハードエラーであるので、異常処理部１４は、自己診断部１３からエラーの通知があれば、直ちに安全コントローラ１００をシャットダウンするものとする。
【００３７】
実施の形態３によれば、一時的なソフトエラーにより制御対象の装置が停止することを防止できる安全コントローラ１００を得ることができる。
【００３８】
実施の形態は、実施の形態１，２のいずれの安全コントローラ１００にも適用可能である。実施の形態２のように安全コントローラ１００がエンジニアリングツール３を備える場合、照合部１６がエラーを何回連続して検出すると安全コントローラ１００をシャットダウンさせるかを、エンジニアリングツール３から設定できるようにしてもよい。
【００３９】
＜実施の形態４＞
実施の形態４では、安全コントローラ１００の安全制御部１１による２回目の演算結果のデータをビット反転して第２メモリ領域２２に書き込み、照合部１２が、第１メモリ領域２１内の１回目の演算結果と第２メモリ領域２２内の２回目の演算結果との照合処理を、排他論理和演算によって行うものとする。
【００４０】
実施の形態１では、第１メモリ領域２１内のデータと第２メモリ領域２２内のデータが同じときは、照合部１２がエラーを検出しないので、例えば、メモリアドレスラインの故障のために、２回目の演算結果が第１メモリ領域２１と第２メモリ領域２２の両方に書き込まれたような場合、その誤動作はエラーとして検出されない。
【００４１】
これに対し、実施の形態４では、２回目の演算結果のデータがビット反転しているため、２回目の出力データが第１メモリ領域２１に書き込まれると、必ず照合部１２によってエラーが検出される。これにより、メモリアドレスに関する診断を照合部１２が実施できるため、自己診断部１３がその診断を行う必要がなくなる。
【００４２】
なお、安全制御部１１による演算結果（出力データ）だけでなく、静的変数やカウンタ値など継続的にメモリ上に存在するデータも、照合部１２による照合の対象に含ませる場合には、それらのデータも２回目は演算処理時にはビット反転させる。また、上の説明では安全制御部１１による２回目の演算結果のデータをビット反転させる例を示したが、１回目の演算結果のデータの方をビット反転させてもよい。
【００４３】
本実施の形態は、実施の形態１〜３のいずれの安全コントローラ１００に対しても適用可能である。
【００４４】
＜実施の形態５＞
実施の形態５では、安全コントローラ１００の安全制御部１１による２回目の演算結果のデータを２の補数に変換して第２メモリ領域２２に書き込み、照合部１２が、第１メモリ領域２１内の１回目の演算結果と第２メモリ領域２２内の２回目の演算結果との照合処理を、和演算によって行うものとする。
【００４５】
これにより、２回目の出力データが第１メモリ領域２１に書き込まれる誤動作が生じれば、照合部１２によってエラーが検出される。よって、実施の形態４と同様に、メモリアドレスに関する診断を照合部１２が実施でき、自己診断部１３がその診断を行う必要がなくなる。
【００４６】
なお、安全制御部１１による演算結果（出力データ）だけでなく、静的変数やカウンタ値など継続的にメモリ上に存在するデータも、照合部１２による照合の対象に含ませる場合には、それらのデータも２回目は演算処理時には２の補数に変換する。また、上の説明では安全制御部１１による２回目の演算結果のデータを２の補数に変換する例を示したが、１回目の演算結果のデータの方を変換してもよい。
【００４７】
本実施の形態は、実施の形態１〜３のいずれの安全コントローラ１００に対しても適用可能である。
【００４８】
＜実施の形態６＞
実施の形態６では、安全コントローラ１００の安全制御部１１による２回目の演算結果のデータを逆エンディアン、すなわち３２ｂｉｔまたは１６ｂｉｔのバイト順序を逆にして、第２メモリ領域２２に書き込み、照合部１２が、第１メモリ領域２１内の１回目の演算結果と第２メモリ領域２２内の２回目の演算結果との照合処理を行う際、第２メモリ領域２２内のデータを逆エンディアンで読み出す。
【００４９】
これにより、２回目の出力データが第１メモリ領域２１に書き込まれる誤動作が生じれば、照合部１２によってエラーが検出される。よって、実施の形態４と同様に、メモリアドレスに関する診断を照合部１２が実施でき、自己診断部１３がその診断を行う必要がなくなる。
【００５０】
なお、安全制御部１１による演算結果（出力データ）だけでなく、静的変数やカウンタ値など継続的にメモリ上に存在するデータも、照合部１２による照合の対象に含ませる場合には、それらのデータも２回目は演算処理時には逆エンディアンにする。また、上の説明では安全制御部１１による２回目の演算結果のデータを逆エンディアンにする例を示したが、１回目の演算結果のデータの方を逆エンディアンにしてもよい。
【００５１】
本実施の形態は、実施の形態１〜３のいずれの安全コントローラ１００に対しても適用可能である。
【００５２】
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。
【符号の説明】
【００５３】
１  入力部、２  出力部、３  エンジニアリングツール、１０  プロセッサ、１１  安全制御部、１２  照合部、１３  自己診断部、１４  異常処理部、１５  非安全制御部、１６  照合部、２０  メモリ、２１  第１メモリ領域、２２  第２メモリ領域、２３  第３メモリ領域、２４  不揮発性メモリ領域、１００  安全コントローラ。
【図１】
2014225110.tif 000003
【図２】
2014225110.tif 000004