(57)【要約】【課題】  複雑な診断技法においても、安全制御の信頼性を損なうことなく、本来の制御タスクの充分な処理能力とを両立させたコントローラを提供する。【解決手段】  主プロセッサ１０から独立して、メモリ２０のうち主プロセッサの実行中の制御タスク２２ａで使用しない非アクティブ領域２６を診断許可領域とする診断領域割当て手段３１と、この診断領域割当て手段によって割当てられた診断許可領域に対し、主プロセッサから独立して、所定のシーケンスによる診断を実行する診断実行手段３２とを備え、この診断実行手段による各診断サイクルにおいて、診断許可領域から切分けた診断対象領域を選択し、診断を実行する。【選択図】  図１
2007066246.tif 000002
【特許請求の範囲】
【請求項１】
システムバスに接続されたメモリと、このメモリを用いて制御タスクを実行するために前記システムバスに接続された主プロセッサと、前記システムバスに接続され前記主プロセッサによる信号の入出力に用いる入出力装置及び／又は通信装置を備えたコントローラの自己診断システムにおいて、前記主プロセッサから独立して、前記主プロセッサの実行中の制御タスクで使用しない前記コントローラの構成要素を診断許可領域とする診断領域割当て手段と、この診断領域割当て手段によって割当てられた診断許可領域に対し、前記主プロセッサから独立して、所定のシーケンスによる診断を実行する診断実行手段とを備えたことを特徴とするコントローラの自己診断システム。
【請求項２】
請求項１において、診断対象となる前記コントローラの前記構成要素が前記メモリであるとき、前記診断領域割当て手段は、実行中の制御タスクによって使用される領域を除いた残りのメモリ領域を診断許可領域として設定する手段を備えたことを特徴とするコントローラの自己診断システム。
【請求項３】
請求項１において、診断対象となる前記コントローラの前記構成要素が前記メモリであるとき、前記メモリ内の特定領域の内容を退避させるとともに、前記主プロセッサからアクセス可能な代替記憶手段を備えたことを特徴とするコントローラの自己診断システム。
【請求項４】
請求項１において、診断対象となる前記コントローラの前記構成要素が前記メモリであるとき、前記診断領域割当て手段は、前記主プロセッサの実行中の制御タスクで使用しない前記メモリ内の領域に関する情報を、前記メモリ内のＯＳから入手するように構成したことを特徴とするコントローラの自己診断システム。
【請求項５】
請求項１において、診断対象となる前記コントローラの前記構成要素が前記入出力装置及び／又は通信装置群であるとき、前記診断領域割当て手段は、実行中の制御タスクによって使用される装置を除いた残りの入出力装置及び／又は通信装置群を診断許可領域として設定する手段を備えたことを特徴とするコントローラの自己診断システム。
【請求項６】
請求項１において、前記診断領域割当て手段は、前記診断許可領域を、診断単位のページに切分けて前記診断実行手段に伝達する切分け伝達手段を備えたことを特徴とするコントローラの自己診断システム。
【請求項７】
請求項１において、前記診断領域割当て手段は、診断した領域を記録する診断領域管理手段と、前記診断許可領域のうち、前記診断領域管理手段に診断済みとして記録されている領域を、診断対象から除外する手段とを備えたことを特徴とするコントローラの自己診断システム。
【請求項８】
請求項７において、前記診断領域管理手段は、前記メモリの全領域が診断済みとなったとき、診断済みの記録をクリアする更新手段を備えたことを特徴とするコントローラの自己診断システム。
【請求項９】
請求項１において、前記所定のシーケンスによる診断を実行する前記診断実行手段は、前記主プロセッサとは独立した補助プロセッサを含むことを特徴とするコントローラの自己診断システム。
【請求項１０】
システムバスに接続されたメモリと、このメモリを用いて制御タスクを実行するために前記システムバスに接続された主プロセッサと、この主プロセッサから独立して前記メモリの診断を行うために前記システムバスに接続された診断装置とを備えたコントローラの自己診断装置において、前記診断装置は、前記主プロセッサが実行中の制御タスクでは使用しない前記メモリのメモリ領域を診断許可領域とする診断領域割当て手段と、この診断許可領域に対し、所定のシーケンスによる診断を実行する診断実行手段とを備えたことを特徴とするコントローラの自己診断装置。
【請求項１１】
請求項１０において、前記メモリ内の特定領域から退避した情報を記憶し、前記主プロセッサからアクセス可能な代替記憶手段を備えたことを特徴とするコントローラの自己診断システム。
【請求項１２】
請求項１０において、前記診断領域割当て手段は、前記主プロセッサの実行中の制御タスクで使用しない前記メモリ内の領域に関する情報を、前記メモリ内のＯＳから入手するように構成したことを特徴とするコントローラの自己診断システム。
【請求項１３】
請求項１０において、前記診断領域割当て手段は、前記診断許可領域を、診断単位のページに切分けて前記診断実行手段に伝達する切分け伝達手段を備えたことを特徴とするコントローラの自己診断システム。
【請求項１４】
請求項１０において、前記診断領域割当て手段は、診断した領域を記録する診断領域管理手段と、前記診断許可領域のうち、前記診断領域管理手段に診断済みとして記録されている領域を、診断対象から除外する手段とを備えたことを特徴とするコントローラの自己診断システム。
【請求項１５】
請求項１４において、前記診断領域管理手段は、前記メモリの全領域が診断済みとなったとき、診断済みの記録をクリアする更新手段を備えたことを特徴とするコントローラの自己診断システム。
【請求項１６】
請求項１０において、所定のシーケンスによる診断を実行する前記診断実行手段は、前記主プロセッサとは独立した補助プロセッサを含むことを特徴とするコントローラの自己診断システム。
【請求項１７】
システムバスに接続されたメモリと、このメモリを用いて制御タスクを実行するために前記システムバスに接続された主プロセッサとを備えたコントローラの自己診断方法において、前記主プロセッサとは独立して、前記主プロセッサが実行中の制御タスクでは使用されない前記メモリの領域を診断許可領域とする診断領域割当てステップと、この診断許可領域に対し、前記主プロセッサとは独立して、所定のシーケンスによる診断を実行する診断実行ステップとを備えたことを特徴とするコントローラの自己診断方法。
【請求項１８】
請求項１７において、前記メモリ内の特定領域から退避した情報を代替記憶手段に記憶させるステップと、前記主プロセッサによって、前記メモリの前記特定領域に代えて、前記代替記憶手段にアクセスさせるステップとを備えたことを特徴とするコントローラの自己診断方法。
【請求項１９】
請求項１７において、前記診断領域割当てステップは、前記主プロセッサの実行中の制御タスクで使用しない前記メモリ内の領域に関する情報を、前記メモリ内のＯＳから入手するステップと、入手したメモリ内の領域に関する情報を、診断実行単位に切分けて前記診断実行ステップへ伝達するステップとを備えたことを特徴とするコントローラの自己診断方法。
【請求項２０】
請求項１７において、前記診断領域割当てステップは、診断を完了した領域を記録する診断領域管理ステップと、前記診断許可領域のうち、前記診断領域管理ステップで診断済みとして記録された領域を、診断対象から除外するステップとを備えたことを特徴とするコントローラの自己診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コントローラの自己診断システム及び方法に関し、特に、安全な制御機能が要求されるコントローラにおける安全制御機能の診断に好適なコントローラの自己診断システム及び方法に関する。
【背景技術】
【０００２】
原子力プラントや化学プラントなど潜在的な危険性の高いプロセス設備では、万が一の事態に作業員及び周辺環境への影響を低減するため、隔壁等の防護設備による受動的な対策及び、緊急停止装置等の安全装置を用いる能動的な対策が講じられる。このうち、安全装置等の制御手段は、従来リレー等の電磁的・機械的手段により実現されていた。しかし、近年、ＰＬＣ（Programmable Logic Controller）に代表されるプログラム可能な制御機器における技術の発展に伴い、これらを安全制御システムの制御手段として利用するニーズが高まっている。
【０００３】
非特許文献１のＩＥＣ６１５０８は、そのような動向に対応して発行された国際規格であり、電気的／電子的／プログラム可能な電子的装置を安全制御システムの一部に利用する場合の要件が規定されている。ＩＥＣ６１５０８では、安全制御システムの能力の尺度としてＳＩＬ（Safety Integrity Level）を定義し、１から４までのレベルに対応する水準の要求事項を規定している。ＳＩＬが高いほどプロセス設備の持つ潜在的な危険性を低減できる度合が大きいことを示す。すなわち、プロセス設備の異常を検出した際、どれだけ確実に所定の安全制御を実施できるかを意味する。
【０００４】
安全制御装置は、通常稼働状態で非活性となっていても、プロセス設備の異常発生時には、直ちに活性化することを求められる。そのため、常時自己診断を行い、自身の健全性をチェックし続けることが重要となる。また、高いＳＩＬが要求される安全制御システムでは、未検出の故障によりシステムが不動作となる確率を極小とするため、広範囲・高精度な自己診断を実施する必要がある。
【０００５】
ＩＥＣ６１５０８では、安全制御装置を構成する要素部品の種類ごとに、各々適用される自己診断技法を紹介し、それぞれの技法の有効性を診断率という形で示している。診断率は、各構成要素における全故障のうち、その診断技法を採用したとき検出可能な故障の割合を示す。例えば、非特許文献２に引用されているＲＡＭの診断技法“abraham”では、最高９９％の診断率を主張可能であるとされている。
【０００６】
特許文献１のメモリ診断方法は、仮想アドレス機能を有するＯＳ（Operating System）上でメモリ診断プログラムを動作させる方法を開示している。診断プログラムは、ページテーブル及びアドレス変換テーブル等のメモリ割当て情報を取得してシステムに実装されているメモリのマップを作成し、そのマップに従って診断を行う。加えて、ページテーブルの管理下にないメモリページについては、物理アドレスによるアクセスを用いて診断を行うことで、システムに実装される全てのメモリ領域をカバーする。
【０００７】
特許文献２には、メモリパトロールの制御方法及びその実現回路構成を開示している。メモリ領域ごとの使用中／空きの状態を刻々取得し、空きとなっているメモリ領域に対してはパトロールの頻度を下げることで、大容量のメモリを塔載したシステムにおけるパトロールの効率化を図っている。
【０００８】
【特許文献１】特許３１７１３６４号公報（全体）
【特許文献２】特開２０００−１６３３２２号公報（全体）
【非特許文献１】International Electrotechnical Commission (IEC) IEC61508 擢unctional Safety of Electrical/Electronic/Programmable Electronic safety related systems
【非特許文献２】R. Nair, S. M. Thatte, J. A. Abraham 摘fficient Algorithms for Testing Semiconductor Random-Access Memories  IEEE trans. comput. C-27(6),572-576, 1978
【発明の開示】
【発明が解決しようとする課題】
【０００９】
高いＳＩＬが要求される安全制御システムでは、本来の安全制御と並行して、常時自己診断を行う必要がある。一方で、高い診断率を得るためには、高精度な診断技法を採用する必要がある。しかしながら、そのような高精度な診断技法を安全制御と同時に行おうとすると、本来の目的である安全制御に悪影響を与える可能性がある。
【００１０】
例えば、非特許文献２に示された診断技法では、個々のワードに対応するメモリセルだけでなく、隣接メモリセルや同一ロウアドレス内のセル同士の影響等も考慮した試験を行うため、複雑なメモリアクセスパターンを踏む必要がある。
【００１１】
従来、実施されてきたメモリパトロールは簡易な方法であり、制御用主プロセッサで実行させても制御タスクに与える影響は軽微であった。しかし、上記のように複雑な診断技法の場合、主プロセッサ上のタスクとして実装すると、主プロセッサの処理能力が過大に消費され、本来の制御タスクが充分な処理能力を確保できなくなる恐れがある。
【００１２】
特許文献１で開示されるメモリ診断方法では、制御用主プロセッサ自身がメモリ診断プログラムを実行するため、メモリの診断処理中には本来の制御タスクを実行することができない。
【００１３】
特許文献２には、本来の制御タスクによるメモリアクセスと、パトロール制御回路によるメモリパトロールとの兼ね合いについての開示がない。したがって、本来の制御タスクからアクセス要求があったメモリ領域が、パトロール制御回路によるパトロール中であった場合、本来の制御タスクの処理遅延を回避することができない。
【課題を解決するための手段】
【００１４】
本発明はその一面において、システムバスに接続されたメモリと、このメモリを用いて制御タスクを実行するために前記システムバスに接続された主プロセッサと、前記システムバスに接続され前記主プロセッサによる信号の入出力に用いる入出力装置及び／又は通信装置を備えたコントローラの自己診断システムにおいて、前記主プロセッサから独立して、前記主プロセッサの実行中の制御タスクで使用しない前記コントローラの構成要素を診断許可領域とする診断領域割当て手段と、この診断領域割当て手段によって割当てられた診断許可領域に対し、前記主プロセッサから独立して、所定のシーケンスによる診断を実行する診断実行手段とを備えたことを特徴とする。
【００１５】
本発明は他の一面において、システムバスに接続されたメモリと、このメモリを用いて制御タスクを実行するために前記システムバスに接続された主プロセッサと、この主プロセッサから独立して前記メモリの診断を行うために前記システムバスに接続された診断装置とを備えたコントローラの自己診断装置において、前記診断装置は、前記主プロセッサが実行中の制御タスクでは使用しない前記メモリのメモリ領域を診断許可領域とする診断領域割当て手段と、この診断許可領域に対し、所定のシーケンスによる診断を実行する診断実行手段とを備えたことを特徴とする。
【発明の効果】
【００１６】
本発明の望ましい実施態様によれば、制御用主プロセッサとは独立して診断実行手段を設けることによって、主プロセッサはコントローラの自己診断処理から解放される。従って、主プロセッサが本来の制御タスクに対して充分な処理能力を発揮できるとともに、現在実行中の制御タスクからのアクセスの邪魔にならないように自己診断を実行するので、本来の制御タスクを遅延させることがない。
【００１７】
これにより、高精度な自己診断を実現して安全性を高めつつ、本来の制御の処理能力を向上することができる。
【００１８】
本発明によるその他の目的と特徴は、以下に述べる実施例の中で明らかにする。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して本発明の実施例を説明する。
【実施例１】
【００２０】
図１は、本発明の実施例１によるコントローラの自己診断システムの全体構成である。以下、本実施例では、メモリを対象とした自己診断を行う場合について説明する。
【００２１】
コントローラは、制御用の主プロセッサ１０と、メモリ２０と、自己診断装置３０とを備える。これらの構成要素は、システムバス４０により相互に接続されている。システムバス４０としては、単純なプロセッサバスのほか、ＰＣＩ（Peripheral Component Interconnect）バス等、通常用いられる技術を適宜選択することができる。
【００２２】
自己診断装置３０は、診断領域割当て手段３１と診断実行手段３２とから構成される。
【００２３】
診断領域割当て手段３１は、メモリ２０内のＯＳから、診断許可領域信号２０１を貰い、診断領域管理情報記録手段３１１に記録し、診断実行手段３２に対して、初期診断アドレス３１２と、診断開始指令３１３及び診断停止指令３１４を与える。また、診断サイクル毎に、診断対象「ページ」を選択し、診断実行手段３２に対し、この診断対象「ページ」を指示する。１回の診断サイクルにおける診断領域のサイズは、任意に決定できるが、本実施例では、ＯＳのメモリ管理で用いられる「ページ」を１診断サイクル分の診断領域とする。ページのサイズは、通常１キロバイト、４キロバイト、１６キロバイトなどである。
【００２４】
診断実行手段３２は、アドレスカウンタ３２１とシーケンサ３２２とから構成される。アドレスカウンタ３２１は、診断サイクルの開始時に、診断領域割当て手段３１から初期診断アドレス３１２を受取り、診断中は、システムバス４０を介して、メモリ２０の診断対象アドレス３０１にアクセスする。これにより、シーケンサ３２２は、メモリ２０内の診断対象アドレス３０１について、所定の診断シーケンスに従って診断を実行し、メモリ２０との間で、制御信号３０２及び診断用データ３０３の授受を行う。ここでの診断シーケンスは、必要な診断精度に応じて、適切なシーケンスを採用できる。
【００２５】
なお、シーケンサ３２２は、専用のハードロジックとして構成することも、あるいは、補助プロセッサを利用してソフト処理によって実行するように構成することもできる。
【００２６】
図２は、この実施例１におけるメモリ２０内のデータの配置構成図である。メモリ２０には、オペレーティングシステム（ＯＳ）２１と、制御タスク２２ａ，２２ｂ，…が配置される。また、場合によっては、複数のタスクに用いられる共用領域２３や、どのタスクにも用いられていない未使用領域２４も存在する。制御タスク２２ａ，２２ｂ，…は、ＯＳ２１の管理の下、主プロセッサ１０によって実行される。
【００２７】
実行中の制御タスクが２２ａであるとき、使用中の制御タスク２２ａ領域と共用領域２３をアクティブ領域２５と呼び、それ以外の不使用領域であるＯＳ領域、制御タスク２２ｂ，…領域並びに未使用領域２４を非アクティブ領域２６と呼ぶことにする。この非アクティブ領域２６が、ＯＳ２１によって、診断許可領域に設定される。例えば、Ｔａｓｋ−ａの実行中は、前記アクティブ領域２５に対する診断を実行すべきではない。そこで、メモリ２０の全領域からアクティブ領域２５を除いた非アクティブ領域２６を診断許可領域とする。
【００２８】
図３は、本発明の実施例１による診断領域割当て手段３１の処理フロー図である。診断領域割当て手段３１は、ＯＳ２１から診断許可領域信号２０１を受取ることで動作を開始する。初めに、ステップ３１ａで、設定された診断許可領域から未診断ページを１つ選択する。次に、ステップ３１ｂにおいて、選択された診断対象ページのアドレスを、初期診断アドレス３１２として診断実行手段３２に通知する。さらに、ステップ３１ｃでは、診断実行手段３２に対し、先に通知した初期診断アドレス３１２から診断を開始するよう診断開始指令３１３を送信する。これにより、診断実行手段３２によって、診断対象ページに対する新たな診断サイクルが開始される。診断実行手段３２の処理フローについては図４を参照して後述する。
【００２９】
さて、診断サイクルを開始後、診断領域割当て手段３１は、ステップ３１ｄにおいて、診断実行手段３２から診断完了通知３２３を受信するまで待機する。診断完了通知３２３を受信した場合は、ステップ３１ｅで、診断領域管理情報記録手段３１１の内容を診断が完了したページの情報で更新する。最後に、ステップ３１ｆで、与えられた診断許可領域内に未診断ページが残っているかどうか判定し、未診断ページが残っている場合は、ステップ３１ａに戻り、未診断ページに対するステップ３１ａ〜３１ｆを繰返す。未診断ページが残っていない場合は、新たな診断可能領域が設定されるまで待機する。
【００３０】
なお、診断が完了した領域の情報は、前述したように、診断領域管理情報記録手段３１１の内容を更新する形で保持され、メモリ２０の全領域で診断が完了した時点で再初期化され未診断状態に戻る。これにより、全領域で均等な診断の機会が確保される。
【００３１】
ところで、診断領域割当て手段３１が以上のステップを実行中に、ＯＳ２１から診断許可領域の再設定信号２０２が非同期に出力される可能性がある。これは、以上のステップを実行中の任意の時点で受信し得るので、図３では、これらを右方向への破線矢印で示している。この診断許可領域の再設定信号２０２が出力された場合、ステップ３１ｇにおいて、それまでの処理を中断するよう診断実行手段３２へ診断停止指令３１４を送信する。次に、ステップ３１ｈで、現診断サイクルの終了を確認後、再びステップ３１ａに復帰し、存在する未診断ページに対する診断を開始させる。
【００３２】
図４は、本発明の実施例１による診断実行手段３２の診断処理フロー図である。図３を参照して前述したように、シーケンサ３２２が診断領域割当て手段３１から診断開始指令３１３を受取ることによって診断サイクルが開始される。ステップ３２ａで、アドレスカウンタ３２１からシステムバス４０へ診断対象アドレス３０１が出力される。次いで、ステップ３２ｂでは、シーケンサ３２２本体によって、対象アドレスに対する診断を開始する。このステップ３２ｂにおいて、メモリ２０に対してリード及びライト操作が実行される。ステップ３２ｃでは、１回の診断シーケンスが終了すると、アドレスカウンタ３２１をチェックする。初期診断アドレス３１２から１ページ分の診断が完了していない場合には、ステップ３２ｄにて、アドレスカウンタ３２１の値を進めてステップ３２ａに戻り、診断を進める。一方、初期診断アドレス３１２から１ページ分の診断が完了した場合には、ステップ３２ｅに進んで、診断領域割当て手段３１に対して診断完了通知３２３を送信し、診断サイクルを終了して待機状態となる。
【００３３】
また、診断シーケンスの途中の任意の時点で、診断領域割当て手段３１から診断停止指令３１４を受取った場合には、ステップ３２ｆにて診断打ち切り処理を実行し、必要に応じて破壊されたメモリ内容の復元等を行った後、診断サイクルを終了する。
【００３４】
次に、本発明にとって重要な、制御タスクがアクセスする可能性のあるメモリ領域に対して診断を行わないようにした連携動作について説明する。
【００３５】
図６は、診断領域割当て手段３１及び診断実行手段３２と、ＯＳ２１及び２つの制御タスクＴａｓｋ−ａ，Ｔａｓｋ−ｂ間の連携動作を示すタイミング図である。この連携動作例では、それまで実行していたタスクから、制御タスクＴａｓｋ−ａへタスク切替えを行い、しばらくＴａｓｋ−ａが制御を行った後、今度はＴａｓｋ−ｂへとタスク切替えが起ると仮定する。
【００３６】
初めに、ＯＳ２１は、ＯＳとして必要なタスク切替えの準備を整えた後、Ｔａｓｋ−ａの実行に影響を与えることが無いように、診断許可領域を決定する。図２を参照して前述したように、まず、Ｔａｓｋ−ａに対応する診断許可領域を決定する。ＯＳ２１は通常、自身が制御タスクの管理を行うため、各制御タスクが占有するメモリ領域に関する管理情報（図示せず）を持っている。ＯＳ２１は、この管理情報を用いて、制御タスクＴａｓｋ−ａの格納領域２２ａ及び共用領域２３がＴａｓｋ−ａに占有される領域であると判定し、これをアクティブ領域２５とする。Ｔａｓｋ−ａの実行中は、アクティブ領域２５に対する診断を実施すべきではないから、メモリ２０の全領域からアクティブ領域２５を除いた非アクティブ領域２６を診断許可領域とする。
【００３７】
ＯＳ２１は、図５の冒頭で説明したように、それまで実行していたタスク（図示せず）から、制御タスクＴａｓｋ−ａへタスク切替えを行うに先立ち、診断領域割当て手段３１に対して、診断許可領域信号２０１（ａ）を送信する。これにより、診断領域割当て手段３１が起動し、先に説明した動作に従って診断実行手段３２の制御を開始する。診断実行手段３２は、診断領域割当て手段３１からの診断指令に従い、メモリ２０の非アクティブ領域に対する診断シーケンスを実施する。ＯＳ２１は、破線矢印で示すステップ２１１で、Ｔａｓｋ−ａに主プロセッサの使用権を移し、Ｔａｓｋ−ａによる制御が開始される。
【００３８】
次に、Ｔａｓｋ−ａからＴａｓｋ−ｂへのタスク切替えが起きるとき、ステップ２１２で、一旦、ＯＳ２１に主プロセッサの使用権が戻される。ＯＳ２１は、先程と同様にタスク切替えの準備を行った後、今度はＴａｓｋ−ｂに対応した診断許可領域の設定を行うため、診断許可領域信号２０１（ｂ）を診断領域割当て手段３１へ送信する。Ｔａｓｋ−ｂに対応する診断許可領域は、メモリ２０の全領域から、Ｔａｓｋ−ｂ自身の格納領域２２ｂと、共用領域２３を除く部分となる。診断許可領域を、診断領域割当て手段３１に対して再設定した後、ステップ２１３において、ＯＳ２１は、Ｔａｓｋ−ｂに主プロセッサの使用権を移し、Ｔａｓｋ−ｂによる制御が開始される。
【００３９】
以上説明した実施例によれば、主プロセッサ１０上で実行中の制御タスクがアクセスする可能性のあるメモリ領域を避けながらメモリ診断を実施することができる。このため、制御タスクが診断中のメモリ領域にアクセスしてしまうことで生じる実行遅延を避けることができ、コントローラの制御の安全性と処理能力とを両立させることができる。
【実施例２】
【００４０】
図６は、本発明の実施例２によるコントローラの自己診断システムの全体構成図である。自己診断装置３０は、診断領域割当て手段３１と診断実行手段３２のほかに、代替記憶手段３３を備えている。診断領域割当て手段３１と診断実行手段３２は、図１の実施例と同等である。代替記憶手段３３は、メモリ２０内の指定された領域のデータを退避させるための記憶手段である。退避させたデータは、主プロセッサ１０からメモリ２０と同様にアクセスすることができる。
【００４１】
メモリ領域２２ａに格納されている制御タスクＴａｓｋ−ａは、他の制御タスクに比べて非常に高い実行優先度を持っており、Ｔａｓｋ−ａがほとんど常時主プロセッサの使用権を持つような実行形態となっている。このような場合、実施例１で説明した診断方式では、Ｔａｓｋ−ａの占有するメモリ領域は診断を許可させる機会が少なく、充分な診断を受けることができない。
【００４２】
そこで、この実施例では、ＯＳ２１は、Ｔａｓｋ−ａが高優先度のタスクであり、Ｔａｓｋ−ａの占有する領域が診断される機会が少ないと判断した場合、ステップ３３１において、Ｔａｓｋ−ａの占有するメモリ領域２２ａの内容を代替記憶手段３３内に退避させる。その上で、退避元であるメモリ領域２２ａを診断許可領域として診断領域割当て手段３１に設定し、ステップ３３２により、メモリ領域２２ａに対する診断を開始させる。これ以降、ステップ３３３では、メモリ領域２２ａに対する診断が完了するまでの期間、メモリ領域２２ａ内のデータに対するアクセスを代替記憶手段３３へ退避したデータのアクセスにより代替する。また、共用領域２３についても、同様の手順で代替記憶手段３３へ退避し、診断を行わせることができる。
【００４３】
ここで、主プロセッサ１０が、メモリ領域２２ａのアドレスを指定することにより、自動的に代替記憶手段３３へのアクセスに振替えるように代替記憶手段３３を構成しておくとよい。これにより、ＯＳ２１及び制御タスク２２ａ，２２ｂ，…のソフトウェアにおいて、特段の配慮なく代替記憶手段３３を利用できる。
【００４４】
以上説明した実施例によれば、高い頻度で実行されるようなタスクがある場合に、そのタスクが占有するメモリ領域にも診断の機会が与えられ、メモリ領域に対する診断の機会を均等化することができる。
【実施例３】
【００４５】
図７は、本発明の実施例３によるコントローラの自己診断システムの全体構成図である。本実施例では、コントローラの入出力装置及び通信装置をも診断対象として診断を行う場合について説明する。
【００４６】
コントローラは、主プロセッサ１０と、メモリ２０と、自己診断装置７０とを備える。また、外部のセンサ及びアクチュエータと接続される入出力装置５０と、他の制御システムとの通信機能を備える通信装置群６０のいずれか又は両方を備えている。それぞれの機器は、システムバス４０により相互に接続されている。
【００４７】
診断対象装置割当て手段７１は、各診断サイクルにおいて、診断可能なデバイスリスト記録手段７１１から診断対象デバイスを選択し、診断実行手段７２にそのデバイスの診断を指示する。診断実行手段７２は、入出力装置５０及び通信装置群６０（以下まとめて「デバイス」とする）のうち指示されたデバイスに対し、それぞれ所定の診断シーケンスに従って診断を実行する。
【００４８】
診断対象装置割当て手段７１及び診断実行手段７２と、ＯＳ２１及び制御タスクＴａｓｋ−ａ，Ｔａｓｋ−ｂ，…との連携は、先に図５で説明した手順と同様に実行できる。ＯＳ２１は、各制御タスクで使用中のデバイスについての管理情報を有している。ＯＳ２１は、タスク切替えの際に、切替え誤の制御タスクで使用されるデバイスを調べ、全デバイスの集合から、それらを除いた診断可能デバイスのリストを診断対象装置割当て手段７１に渡す。診断対象装置割当て手段７１では、診断可能デバイスリスト記憶手段７１１に保持し、先の実施例と同様に、診断単位に切分けて診断実行手段７２に伝達し、診断を実行する。診断実行手段７２において診断が完了したデバイスは、診断済デバイス管理情報記録手段７１２に記録され、全デバイスに対する診断が完了するまでの間、診断対象から除外される。
【００４９】
以上説明した実施例によれば、主プロセッサ１０上で実行中の制御タスクがアクセスする可能性のあるデバイスを避けながら各デバイスの診断を実施することができる。したがって、前記制御タスクが診断中のデバイスにアクセスしてしまうことで生じる実行遅延を避けることができる。
【図面の簡単な説明】
【００５０】
【図１】本発明の実施例１によるコントローラの自己診断システムの全体構成図。
【図２】本発明の実施例１によるメモリ２０内のデータの配置構成図。
【図３】本発明の実施例１による診断領域割当て手段３１の処理フロー図。
【図４】本発明の実施例１による診断実行手段３２の処理フロー図。
【図５】本発明の実施例１による各手段間の連係動作説明図。
【図６】本発明の実施例２によるコントローラの自己診断システムの全体構成図。
【図７】本発明の実施例３によるコントローラの自己診断システムの全体構成図。
【符号の説明】
【００５１】
１０…主プロセッサ、２０…メモリ、２１…オペレーティングシステム（ＯＳ）、２２ａ，２２ｂ…制御タスク、２３…共用領域、２４…未使用領域、２５…アクティブ領域、２６…非アクティブ領域、３０，７０…自己診断装置、３１…診断領域割当て手段、３１１…診断領域管理情報記録手段、３２，７２…診断実行手段、３２１…アドレスカウンタ、３２２…シーケンサ（補助プロセッサ）、３３…代替記憶手段、４０…システムバス、５０…入出力装置群、６０…通信装置群、７１…診断対象装置割当て手段、７１１…診断可能デバイスリスト記録手段、７１２…診断済デバイス管理情報記録手段。
【図１】
2007066246.tif 000003
【図２】
2007066246.tif 000004
【図３】
2007066246.tif 000005
【図４】
2007066246.tif 000006
【図５】
2007066246.tif 000007
【図６】
2007066246.tif 000008
【図７】
2007066246.tif 000009