(57)【要約】  マイクロコントローラ（２００）は、一般制御を実行するための第１タイムパーティションで優先制御の割り込みが発生した場合に、第１監視規則に応じて第１監視を行い、安全監視を実行するための第２タイムパーティションで優先制御の割り込みが発生した場合に、第２監視規則に応じて第２監視を行う。第１タイムパーティションで第１監視規則に対する違反が発生した場合と、第２タイムパーティションで第２監視規則に対する違反が発生した場合とのそれぞれで、マイクロコントローラは安全制御を行う。
2018173123.tif 000002
【特許請求の範囲】
【請求項１】
１周期に含まれる複数のタイムパーティションの中の１つのタイムパーティションであって一般制御を実行するためのタイムパーティションである第１タイムパーティションで優先制御の契機となる制御割り込みが発生した場合に、第１監視規則に応じた監視である第１監視を行い、前記複数のタイムパーティションの中の１つのタイムパーティションであって障害の発生有無を監視する安全監視を実行するためのタイムパーティションである第２タイムパーティションで制御割り込みが発生した場合に、第２監視規則に応じた監視である第２監視を行う監視部を備える制御装置。
【請求項２】
前記第１タイムパーティションで前記第１監視規則に対する違反が発生した場合と、前記第２タイムパーティションで前記第２監視規則に対する違反が発生した場合とのそれぞれで、障害が発生したときのための安全制御を行う安全制御部を備える
請求項１に記載の制御装置。
【請求項３】
前記一般制御および前記優先制御はゲストモードで実行される処理であり、
前記安全監視および前記安全制御はホストモードで実行される処理である
請求項２に記載の制御装置。
【請求項４】
前記第１監視規則は、前記第１タイムパーティションでの前記優先制御の実行時間を制限する規則であり、
前記監視部は、前記第１監視として、前記第１タイムパーティションでの前記優先制御の実行時間を監視し、
前記第２監視規則は、前記第２タイムパーティションでの前記優先制御の実行回数と実行時間とを制限する規則であり、
前記監視部は、前記第２監視として、前記第２タイムパーティションでの前記優先制御の実行回数と実行時間とを監視する
請求項１から請求項３のいずれか１項に記載の制御装置。
【請求項５】
前記制御割り込みは、オペレーションシステムの管理外の割り込みである
請求項１から請求項４のいずれか１項に記載の制御装置。
【請求項６】
前記第１監視規則は、前記第１タイムパーティションでの前記一般制御の実行時間と前記第１タイムパーティションでの前記優先制御の実行時間とを合計して得られる前記第１タイムパーティションの実行時間を制限する規則であり、
前記監視部は、前記第１監視として、前記第１タイムパーティションの実行時間を監視し、
前記第２監視規則は、前記第２タイムパーティションでの前記優先制御の実行回数と前記優先制御の実行時間とを制限する規則であり、
前記監視部は、前記第２監視として、前記第２タイムパーティションでの前記優先制御の実行回数と実行時間とを監視する
請求項１から請求項３のいずれか１項に記載の制御装置。
【請求項７】
前記第１タイムパーティションでの前記制御割り込みは、ゲストモードで受け付けられる割り込みであり、
前記第２タイムパーティションでの前記制御割り込みは、ホストモードで受け付けられる割り込みである
請求項６に記載の制御装置。
【請求項８】
前記監視部は、前記第１タイムパーティションで前記第１タイムパーティションの実行時間が経過した場合、前記第２タイムパーティションでの前記優先制御の実行回数に１を加える
請求項６または請求項７に記載の制御装置。
【請求項９】
前記第１タイムパーティションの終了前の一定時間を除いて前記第１タイムパーティションでの前記制御割り込みは、ゲストモードで受け付けられる割り込みであり、
前記第１タイムパーティションの前記一定時間での前記制御割り込みは、ホストモードで受け付けられる割り込みであり、
前記第２タイムパーティションでの前記制御割り込みは、ホストモードで受け付けられる割り込みである
請求項６に記載の制御装置。
【請求項１０】
１周期に含まれる複数のタイムパーティションの中の１つのタイムパーティションであって一般制御を実行するためのタイムパーティションである第１タイムパーティションで優先制御の契機となる制御割り込みが発生した場合に、第１監視規則に応じた監視である第１監視を行い、前記複数のタイムパーティションの中の１つのタイムパーティションであって障害の発生有無を監視する安全監視を実行するためのタイムパーティションである第２タイムパーティションで制御割り込みが発生した場合に、第２監視規則に応じた監視である第２監視を行う監視処理
をコンピュータに実行させるための制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、安全監視を行いながら各種制御を行うための技術に関するものである。
【背景技術】
【０００２】
自動車の機能安全規格であるＩＳＯ  ２６２６２および家庭用電気機器の安全規格であるＩＥＣ  ６０３３５−１では、通常の制御処理に加えて、ハードウェアの故障診断、外界の危険状態および異常事象のセンサによる監視等の安全監視処理を行う必要がある。
このような安全監視処理には、システムが定めるＦＴＴＩ（Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ  Ｔｉｍｅ  Ｉｎｔｅｒｖａｌ）に基づいて、ＣＰＵ時間を割り当てる必要がある。ＣＰＵはＣｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略称である。【０００３】
例えば、故障発生から故障検知までの許容時間が１５００ミリ秒以内であるシステムにおいて、ハードウェアの診断対象の全部位を診断するのに５００ミリ秒を要する場合、安全監視処理に対して、１５００ミリ秒周期に５００ミリ秒のＣＰＵ時間が割り当てられることを保証する必要がある。安全監視処理に対して割り当てられるＣＰＵ時間が５００ミリ秒より短いと、システムが定めるＦＴＴＩを故障発生時に守れなくなる可能性がある。【０００４】
特許文献１に開示される技術では、タイムパーティショニングによって、通常の制御処理と安全監視処理とのそれぞれに対してＣＰＵ時間が独立して割り当てられる。そのため、安全監視処理に対して一定の周期に一定のＣＰＵ時間が割り当てられることが保証される。【０００５】
非特許文献１には、タイムパーティショニングにおける毎サイクルの末尾にアイドルウィンドウを確保することが開示されている。
安全監視処理のタイムパーティションで通常の制御処理からの割り込みを受け付けることが可能であり、安全監視処理のタイムパーティションで通常の制御処理からの割り込みが発生した場合、アイドルウィンドウに割り当てられたＣＰＵ時間が安全監視処理のタイムパーティションに譲渡される。これにより、通常の制御処理の遅延を抑制しつつ、安全監視処理のＣＰＵ時間を保証することが可能となる。【０００６】
特許文献２および特許文献３には、割り込みの発生頻度および割り込み処理の実行時間を監視する技術が開示されている。
このような監視が通常の制御処理からの割り込みに対して行われれば、安全監視処理のタイムパーティションで通常の制御処理からの割り込みを受け付けることが可能である場合において安全監視処理のＣＰＵ時間を保証することが可能となる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開２０１２／１０４９０１号公報
【特許文献２】国際公開２０１６／０４６９３１号公報
【特許文献３】特開平０７−１１０７７４号公報
【非特許文献】
【０００８】
【非特許文献１】Ｈｉｒｏａｋｉ  ＴＡＫＡＤＡ，  “Ｉｎｔｒｏｄｕｃｉｎｇ  ａ  ｎｅｗ  ｔｅｍｐｏｒａｌ  ｐａｒｔｉｔｉｏｎｉｎｇ  ｓｃｈｅｍｅ  ｔｏ  ＡＵＴＯＳＡＲ  ＯＳ”，  ８ｔｈ  ＡＵＴＯＳＡＲ  Ｏｐｅｎ  Ｃｏｎｆｅｒｅｎｃｅ，  Ｏｃｔｏｂｅｒ  ２９ｔｈ，  ２０１５
【発明の概要】
【発明が解決しようとする課題】
【０００９】
エンジン制御などのパワートレイン系ＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）およびＥＰＳ（Ｅｌｅｃｔｒｏｎｉｃ  Ｐｏｗｅｒ  Ｓｔｅｅｒｉｎｇ）などのシャーシ系ＥＣＵでは、一般的に、モータ制御または電力変換などの制御処理、通信処理またはモニタリングデーモンなどの非制御処理、および、ハードウェアの故障診断または外界の異常監視などの安全監視処理が動作する。
制御処理は、数十マイクロ秒から数百マイクロ秒の間隔で発生する割り込みによって起動されてフィードバック制御を行う処理である。制御処理では遅延を極力小さくすることが求められる。また、制御処理は他の処理によって中断されてはならない。つまり、制御処理は、正常処理の中で最も高い優先度で実行される。
非制御処理は、制御処理と比較して大きな遅延が許され、また、他の処理によって中断されることも許容される。非制御処理には、ミリ秒オーダーの周期処理から起動される、また、ＣＰＵ時間に余裕がある場合に起動される、といった特徴がある。
安全監視処理は、制御処理と比較して大きな遅延が許され、また、他の処理によって中断されることも許容される。しかし、前述の通り、数百ミリ秒から数千ミリ秒の所定の周期において、安全監視処理に対して所定のＣＰＵ時間が割り当てられることを保証する必要がある。【００１０】
非特許文献１に開示された技術は、安全監視処理のＣＰＵ時間を保証しつつ、制御処理の遅延を抑制する。しかし、タイムパーティショニングにおける毎サイクルの末尾にアイドルウィンドウを確保する必要があるため、使用されないＣＰＵ時間が発生してしまい、ＣＰＵ時間を有効活用することができない。【００１１】
安全監視処理のタイムパーティションで制御処理からの割り込みを受け付け、特許文献２および特許文献３の技術により制御処理からの割り込みの発生頻度および割り込み処理の実行時間を監視することで、安全監視処理のＣＰＵ時間を保証することが可能である。
しかし、この方法では、すべてのタイムパーティションにおいて割り込みの発生頻度および割り込み処理の実行時間が監視されるため、安全監視処理以外の処理のタイムパーティションで違反が検知される可能性がある。その結果、安全監視処理のＣＰＵ時間が保証され装置に問題がないにもかかわらず、装置に異常が発生したと判定されてしまうことになる。
また、制御処理は中断されてはならないため、タイムパーティションの切り替え処理よりも高い優先度で制御処理を動作させる必要がある。そのため、安全監視処理のタイムパーティションの直前のタイムパーティションが完了する直前で制御処理からの割り込みが発生すると、タイムパーティションの切り替えが遅延し、安全監視処理のタイムパーティションのＣＰＵ時間が少なくなってしまう。【００１２】
特許文献１に開示された技術のようにキャリア割り込み１回ごとにタイムパーティションを切り替えると、タイムパーティションの切り替え頻度が多くなり、ＣＰＵオーバヘッドが増えてしまう。
一方で、タイムパーティションの切り替え頻度が問題とならない程度にキャリア割り込みを間引くと、制御処理の起動周期が長くなり、制御処理に支障をきたしてしまう。
また、制御処理からの割り込みがキャリア割り込みのように定周期の割り込みである場合にしか、特許文献１に開示された技術を適用することができない。【００１３】
本発明は、安全監視処理以外の処理のタイムパーティションで違反が検知されてしまい、安全監視処理のＣＰＵ時間が保証されているにも関わらず装置に異常が発生したと判定されないようにすることを目的とする。
【課題を解決するための手段】
【００１４】
本発明の制御装置は、１周期に含まれる複数のタイムパーティションの中の１つのタイムパーティションであって一般制御を実行するためのタイムパーティションである第１タイムパーティションで優先制御の契機となる制御割り込みが発生した場合に、第１監視規則に応じた監視である第１監視を行い、前記複数のタイムパーティションの中の１つのタイムパーティションであって障害の発生有無を監視する安全監視を実行するためのタイムパーティションである第２タイムパーティションで制御割り込みが発生した場合に、第２監視規則に応じた監視である第２監視を行う監視部を備える。
【発明の効果】
【００１５】
本発明によれば、安全監視処理以外の処理のタイムパーティション（第１タイムパーティション）用の監視規則が用いられるため、安全監視処理以外の処理のタイムパーティションで違反が検知されないようにすることが可能となる。そのため、安全監視処理のＣＰＵ時間が保証されているにも関わらず装置に異常が発生したと判定されないようにすることが可能となる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１における制御装置１００の構成図。
【図２】実施の形態１におけるマイクロコントローラ２００の構成図。
【図３】実施の形態１におけるプロセッサ２０１の構成図。
【図４】実施の形態１におけるホストＯＳ２２０の構成図。
【図５】実施の形態１におけるゲストＯＳ２３０の構成図。
【図６】実施の形態１におけるパーティショニングの概念図。
【図７】実施の形態１におけるスケジュールテーブル２２４の概念図。
【図８】実施の形態１における第１監視テーブル２２９１の構成図。
【図９】実施の形態１におけるＴＰ切り替え処理のフローチャート。
【図１０】実施の形態１における制御割り込み処理のフローチャート。
【図１１】実施の形態１における第１満了割り込み処理のフローチャート。
【図１２】実施の形態１におけるＶＭタスク処理のフローチャート。
【図１３】実施の形態１における安全監視タスク処理のフローチャート。
【図１４】実施の形態２におけるホストＯＳ２２０の構成図。
【図１５】実施の形態２における第２監視テーブル２２９２の構成図。
【図１６】実施の形態２における第１監視テーブル２２９１の設定を示す図。
【図１７】実施の形態２におけるＴＰ切り替え処理のフローチャート。
【図１８】実施の形態２におけるＴＰ切り替え処理のフローチャート。
【図１９】実施の形態２におけるＴＰ切り替え処理のフローチャート。
【図２０】実施の形態２における第２満了割り込み処理のフローチャート。
【図２１】実施の形態３における第２監視テーブル２２９２の構成図。
【図２２】実施の形態３における第１監視テーブル２２９１の設定を示す図。
【図２３】実施の形態３におけるＴＰ切り替え処理のフローチャート。
【図２４】実施の形態３におけるＴＰ切り替え処理のフローチャート。
【図２５】実施の形態３におけるＴＰ切り替え処理のフローチャート。
【図２６】実施の形態における制御装置１００のハードウェア構成図。
【発明を実施するための形態】
【００１７】
実施の形態および図面において、同じ要素および対応する要素には同じ符号を付している。同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
【００１８】
実施の形態１．
安全監視を行いながら各種制御を行うための形態について、図１から図１３に基づいて説明する。
【００１９】
＊＊＊構成の説明＊＊＊
図１に基づいて、制御装置１００の構成を説明する。
制御装置１００は、マイクロコントローラ２００と周辺回路１１０とを備える。
マイクロコントローラ２００は、制御装置１００に備わるコンピュータである。
周辺回路１１０は、マイクロコントローラ２００に接続される周辺回路である。
例えば、周辺回路１１０は、センサまたはアクチュエータなどである。
【００２０】
図２に基づいて、マイクロコントローラ２００の構成を説明する。
マイクロコントローラ２００は、プロセッサ２０１とメモリ２０２と補助記憶装置２０３と入出力インタフェース２０４と通信コントローラ２０５と割り込みコントローラ２０６とタイマ２０７といったハードウェアを備える。これらのハードウェアは、信号線を介して互いに接続されている。
【００２１】
プロセッサ２０１は、例えば、ＣＰＵである。
メモリ２０２は、揮発性の記憶装置である。例えば、メモリ２０２はＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
補助記憶装置２０３は、不揮発性の記憶装置である。例えば、補助記憶装置２０３は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）またはフラッシュメモリである。
入出力インタフェース２０４には、センサおよびアクチュエータなどが接続される。入出力インタフェース２０４は、センサ値を得るためのＡＤコンバータ、および、アクチュエータを制御するためのＰＷＭ回路などを含む。ＡＤはＡｎａｌｏｇ  ｔｏ  Ｄｉｇｉｔａｌの略称であり、ＰＷＭはＰｕｌｓｅ  Ｗｉｄｔｈ  Ｍｏｄｕｌａｔｉｏｎの略称である。
通信コントローラ２０５は、トランスミッタおよびレシーバとして機能する通信装置である。通信コントローラ２０５は、ＣＡＮコントローラおよびＳＰＩコントローラなどを含む。ＣＡＮはＣｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋの略称であり、ＳＰＩはＳｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅの略称である。
割り込みコントローラ２０６は、割り込みを制御するためのコントローラである。
タイマ２０７は、設定された時間の経過を検出する要素である。
【００２２】
マイクロコントローラ２００は、仮想化支援機能を備える。
マイクロコントローラ２００は、プロセッサ２０１の特権モードを切り替えるための命令を持つ。
【００２３】
図３に基づいて、プロセッサ２０１の構成を説明する。
プロセッサ２０１は、ホストモード２１１またはゲストモード２１２で動作する。
ホストモード２１１およびゲストモード２１２は、プロセッサ２０１の特権モードである。
ホストモード２１１は、仮想マシンモニタを実行するためのモードである。
ゲストモード２１２は、仮想マシン２１４を実行するためのモードである。
ホストモード２１１において、プロセッサ２０１は、ホストＯＳ２２０として機能する。ホストＯＳ２２０は仮想マシンモニタの役割を果たす。
ホストＯＳ２２０は、ホストモード２１１におけるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）である。
仮想マシンモニタは、仮想マシン２１４を制御する。仮想マシンモニタはＶＭＭと呼ばれる。
ゲストモード２１２において、プロセッサ２０１は、仮想マシン２１４として機能する。
仮想マシン２１４は、ソフトウェアによって仮想的に構築されたコンピュータである。仮想マシン２１４は、ＶＭと呼ばれる。
仮想マシン２１４におけるＯＳをゲストＯＳ２３０という。
【００２４】
ホストＯＳ２２０は、ホストモード２１１で動作し、マイクロコントローラ２００の全てのハードウェア資源にアクセスすることができる。
ゲストＯＳ２３０は、ゲストモード２１２で動作し、ホストＯＳ２２０が使用するハードウェア資源にアクセスすることができない。
【００２５】
制御装置１００が車載制御装置である場合、ゲストＯＳ２３０として、ＡＵＴＯＳＡＲ  ＯＳが用いられる。ＡＵＴＯＳＡＲはＡｕｔｏｍｏｔｉｖｅ  Ｏｐｅｎ  Ｓｙｓｔｅｍ  Ａｒｃｈｉｔｅｃｔｕｒｅの略称である。
【００２６】
マイクロコントローラ２００は、メモリ２０２、入出力インタフェース２０４および割り込みコントローラ２０６等のハードウェア資源を分割する機能を有する。さらに、マイクロコントローラ２００は、仮想マシン２１４およびホストＯＳ２２０に対して、ハードウェア資源を占有的または共有的に割り当てる機能を有する。
仮想マシン２１４は、割り当てられたハードウェア資源を利用して動作する。例えば、仮想マシン２１４の実行中に仮想マシン２１４に対する割り込みが発生した場合、ホストモードへの遷移は行われずに、仮想マシン２１４において割り込みが直接受け付けられる。また、他の仮想マシンに対する割り込みが発生した場合、その割り込みは保留される。また、仮想マシン２１４の実行中にホストＯＳ２２０に対する割り込みが発生した場合、仮想マシン２１４の実行が中断され、ホストモードへの遷移が行われ、ホストＯＳ２２０において割り込みが受け付けられる。
【００２７】
ホストＯＳ２２０は、プロセッサ２０１によって実行されることにより、タスク管理機能、タスクスケジューリング機能、割り込み管理機能、時間管理機能および資源管理機能等を提供する。
ホストＯＳ２２０は、安全の確保に関連する機能として、分割されたハードウェア資源を空間的および時間的に保護する機能を有する。
例えば、空間的保護は、プロセッサ２０１の一部であるＭＰＵ（Ｍｅｍｏｒｙ  Ｐｒｏｔｅｃｔｉｏｎ  Ｕｎｉｔ）によるメモリ２０２の保護、および、マイクロコントローラ２００が有するペリフェラル保護機能による入出力インタフェース２０４の保護などである。
例えば、時間的保護は、プロセッサ２０１の実行時間に対するパーティショニングまたは制御割り込みの監視などによって実現される。
【００２８】
図４に基づいて、ホストＯＳ２２０の構成を説明する。
ホストＯＳ２２０は、ＶＭタスク２２１とＶＭ管理部２２２とスケジューラ２２３とスケジュールテーブル２２４と安全監視タスク２２５と制御割り込み受付部２２６と安全制御部２２７と監視部２２８と第１監視テーブル２２９１とを備える。
ＶＭタスク２２１は、仮想マシン２１４を実行するためのタスクである。
ＶＭ管理部２２２は、仮想マシンモニタの役割を果たして、仮想マシン２１４の管理を行う。具体的には、ＶＭ管理部２２２は、仮想マシン２１４に対するハードウェア資源の割り当て、特権モードの切り替え、仮想マシン２１４のコンテキストの保存および復元などを行う。
スケジューラ２２３は、スケジュールテーブル２２４を用いて、プロセッサ２０１の実行時間に対するパーティショニング、および、ホストＯＳ２２０上で動作するタスクのスケジューリングを行う。例えば、スケジューリングは実行時間の割り当てである。
スケジュールテーブル２２４は、タイムパーティションおよびタスクのスケジュールを示すテーブルである。
安全監視タスク２２５は、安全監視を実行するためのタスクである。安全監視は、障害の発生有無を監視する処理である。例えば、安全監視は、故障診断と呼ばれる処理および異常監視と呼ばれる処理である。
制御割り込み受付部２２６は、制御割り込みを受け付ける。制御割り込みは、優先制御の契機となる割り込みである。優先制御については後述する。
安全制御部２２７は、安全制御を行う。安全制御は、障害が発生したときのための処理である。例えば、安全制御は、フェイルセーフ処理またはフェイルオペレーション処理である。
監視部２２８は、第１監視テーブル２２９１に設定された監視規則に応じて監視を行う。
第１監視テーブル２２９１は、タイムパーティション毎の監視規則が設定されたテーブルである。
【００２９】
図５に基づいて、ゲストＯＳ２３０の構成を説明する。
ゲストＯＳ２３０は、スケジューラ２３１と優先制御ルーチン２３２と一般制御タスク２３３とを備える。
スケジューラ２３１は、ゲストＯＳ２３０上で動作するタスクのスケジューリングを行う。
優先制御ルーチン２３２は、優先制御用のルーチンである。優先制御は、制御割り込みが発生したときの制御である。優先制御は、一般制御および安全監視に比べて優先度が高く、一般制御および安全制御よりも優先して実行される。具体的には、優先制御ルーチン２３２はＩＳＲ（Ｉｎｔｅｒｒｕｐｔ  Ｓｅｒｖｉｃｅ  Ｒｏｕｔｉｎｅ）として実装される。ゲストＯＳ２３０がＡＵＴＯＳＡＲ  ＯＳである場合、優先制御ルーチン２３２は、Ｃａｔｅｇｏｒｙ  １  ＩＳＲとして実装することができる。
一般制御タスク２３３は、一般制御を実行するためのタスクである。一般制御は、優先制御以外の制御である。
【００３０】
図６に基づいて、スケジューラ２２３によるパーティショニングを説明する。
予め定められた一定の時間を１周期という。
１周期は、複数のタイムパーティション（ＴＰ）に分割される。タイムパーティションは、１周期の中の一定の時間である。図６では、１周期は３つのタイムパーティションに分割されている。
それぞれのタイムパーティションには、１つ以上のタスクが割り当てられる。
スケジューラ２２３は、１周期毎に複数のタイムパーティションを管理し、タイムパーディション毎にタスクを管理する。タイムパーティションに複数のタスクが割り当てられた場合、スケジューラ２２３は、複数のタスクのそれぞれの優先度に基づいて、複数のタスクに対するスケジューリングする。
【００３１】
図７に基づいて、スケジュールテーブル２２４に設定される内容の具体例を説明する。
スケジュールテーブル２２４には、１周期に含まれる複数のタイムパーティションとして、第１タイムパーティションと第２タイムパーティションとが設定されている。
【００３２】
第１タイムパーティション（ＴＰ１）は、ＶＭタスク２２１が割り当てられたタイムパーティションである。第１タイムパーティションの長さはＴ１である。
ＶＭタスクは、仮想マシン２１４を実行するタスクである。
【００３３】
第２タイムパーティション（ＴＰ２）は、安全監視タスク２２５が割り当てられたタイムパーティションである。第２タイムパーティションの長さはＴ２である。
【００３４】
図８に基づいて、第１監視テーブル２２９１の構成を説明する。
第１監視テーブル２２９１は、割り込み番号と第１監視規則と第２監視規則と第１監視履歴と第２監視履歴とのそれぞれの欄を有する。
【００３５】
割り込み番号の欄は、割り込みを識別する番号である割り込み番号を示す。
割り込み番号ＮＰは、制御割り込みを識別する番号である。
【００３６】
第１監視規則の欄は、第１タイムパーティションにおける監視規則である第１監視規則を示す。
第１タイムパーティションで制御割り込みが発生した場合、監視部２２８は第１監視を行う。第１監視は第１監視規則に応じた監視である。
具体的には、第１監視規則は、第１タイムパーティションでの優先制御の実行時間を制限する規則である。監視部２２８は、第１監視として、第１タイムパーティションでの優先制御の実行時間を監視する。
第１タイムパーティションで第１監視規則に対する違反が発生した場合、安全制御部２２７は安全制御を行う。
【００３７】
第２監視規則の欄は、第２タイムパーティションにおける監視規則である第２監視規則を示す。
第２タイムパーティションで制御割り込みが発生した場合、監視部２２８は第２監視を行う。第２監視は第２監視規則に応じた監視である。
具体的には、第２監視規則は、第２タイムパーティションでの優先制御の実行回数と実行時間とを制限する規則である。監視部２２８は、第２監視として、第２タイムパーティションでの優先制御の実行回数と実行時間とを監視する。
第２タイムパーティションで第２監視規則に対する違反が発生した場合、安全制御部２２７は安全制御を行う。
【００３８】
第１監視規則の欄および第２監視規則の欄は、それぞれ実行回数の欄と実行時間の欄とを備える。
実行回数の欄は、優先制御が実行される回数の上限を示す。実行回数の欄におけるＮＵＬＬは、実行回数の監視が不要であることを意味する。
実行時間の欄は、優先制御が実行される時間の上限を示す。
【００３９】
第１監視履歴の欄は、第１タイムパーティションでの優先制御の実行回数を示す。
第２監視履歴の欄は、第２タイムパーティションでの優先制御の実行回数を示す。
【００４０】
＊＊＊動作の説明＊＊＊
制御装置１００の動作は制御方法に相当する。また、制御方法の手順は制御プログラムの手順に相当する。
【００４１】
図９に基づいて、ＴＰ切り替え処理を説明する。
ＴＰ切り替え処理は、タイムパーティションを切り替えるための処理である。
ＴＰ切り替え処理は、スケジューラ２２３によって、ホストＯＳ２２０のティック割り込み毎に実行される。
【００４２】
ステップＳ１１１において、スケジューラ２２３は、現在時刻がＴＰ切り替え時刻であるか判定する。ＴＰ切り替え時刻は、タイムパーティションを切り替える時刻である。
具体的には、スケジューラ２２３は、スケジュールテーブル２２４に設定されている現在のタイムパーティションの割り当て時間を参照し、現在のタイムパーティションの実行時間が現在のタイムパーティションの割り当て時間を超過したか判定する。現在のタイムパーティションの実行時間が現在のタイムパーティションの割り当て時間を超過した場合、現在時刻がＴＰ切り替え時刻である。
現在時刻がＴＰ切り替え時刻である場合、処理はステップＳ１１２に進む。
現在時刻がＴＰ切り替え時刻でない場合、処理はステップＳ１１９に進む。
【００４３】
ステップＳ１１２において、スケジューラ２２３は、実行中タスクが有るか判定する。実行中タスクは、現在実行されているタスクである。
実行中タスクが有る場合、処理はステップＳ１１３に進む。
実行中タスクが無い場合、処理はステップＳ１１６に進む。
【００４４】
ステップＳ１１３において、スケジューラ２２３は、ＶＭタスク２２１の実行中であるか判定する。つまり、スケジューラ２２３は、実行中タスクがＶＭタスク２２１であるか判定する。
ＶＭタスク２２１の実行中である場合、処理はステップＳ１１４に進む。
ＶＭタスク２２１の実行中でない場合、処理はステップＳ１１６に進む。
【００４５】
ステップＳ１１４において、スケジューラ２２３は、ＶＭコンテキストを保存する。
ＶＭコンテキストは、仮想マシン２１４のコンテキストである。
【００４６】
ステップＳ１１５において、スケジューラ２２３は、ＶＭタスク２２１の再開アドレスを設定する。
ＶＭタスク２２１の再開アドレスは、ＶＭタスク２２１が再開されるときの実行アドレスである。
実行アドレスは、実行される命令が記憶された領域のアドレスである。
具体的には、スケジューラ２２３は、ＶＭタスク２２１のＴＣＢ（Ｔａｓｋ  Ｃｏｎｔｒｏｌ  Ｂｌｏｃｋ）の中のプログラムカウンタを、ＶＭコンテキストを復元して仮想マシン２１４を起動する処理の直前の実行アドレス（図１２のステップＳ４０１の直前の実行アドレス）に書き換える。
【００４７】
ステップＳ１１６において、スケジューラ２２３は、実行中コンテキストを保存する。実行中コンテキストは、実行中タスクのコンテキストである。
【００４８】
ステップＳ１１７において、スケジューラ２２３は、現在監視履歴をリセットする。現在監視履歴は、現在のタイムパーティションの監視履歴である。
具体的には、スケジューラ２２３は、第１監視テーブル２２９１から現在のタイムパーティションの監視履歴を選択し、選択された監視履歴に設定されている実行回数を０に更新する。
ステップＳ１１８において、スケジューラ２２３は、スケジュールテーブル２２４を参照して次のタイムパーティションを決定し、次のタイムパーティションを開始する。
【００４９】
ステップＳ１１９において、スケジューラ２２３は、次のタイムパーティションにおいてタスクスケジューリングを行う。
具体的には、スケジューラ２２３は、スケジュールテーブル２２４に設定されている次のタイムパーティションのタスクスケジュールを参照し、参照したタスクスケジュールに従ってタスクスケジューリングを行う。
【００５０】
図１０に基づいて、制御割り込み処理を説明する。
制御割り込み処理は、制御割り込みが発生した場合の処理である。
制御割り込み処理は、制御割り込み受付部２２６が制御割り込みを受け付けたときに実行される。
【００５１】
ステップＳ２０１において、制御割り込み受付部２２６は、割り込み時コンテキストを保存する。割り込み時コンテキストは、割り込み時タスクのコンテキストである。割り込み時タスクは、制御割り込みが発生したときに実行されていたタスクである。
【００５２】
ステップＳ２０２において、制御割り込み受付部２２６は監視部２２８を呼び出し、監視部２２８は現在監視履歴を更新する。
具体的には、監視部２２８は、第１監視テーブル２２９１から現在のタイムパーティションの監視履歴を選択し、選択された監視履歴に設定されている実行回数に１を加える。
【００５３】
ステップＳ２０３において、監視部２２８は、実行回数の規則違反が発生したか判定する。
【００５４】
具体的には、監視部２２８は以下のように判定を行う。
まず、監視部２２８は、第１監視テーブル２２９１から、現在のタイムパーティションの監視規則に設定されている実行回数と、現在のタイムパーティションの監視履歴に設定されている実行回数とを取得する。
次に、監視部２２８は、監視履歴の実行回数を監視規則の実行回数と比較する。但し、監視規則の実行回数がＮＵＬＬである場合、監視部２２８は、監視履歴の実行回数を監視規則の実行回数と比較しない。
監視履歴の実行回数が監視規則の実行回数より多い場合、監視部２２８は、実行回数の規則違反が発生したと判定する。
監視履歴の実行回数が監視規則の実行回数以下である場合、監視部２２８は、実行回数の規則違反が発生していないと判定する。また、監視規則の実行回数がＮＵＬＬである場合、監視部２２８は、実行回数の規則違反が発生していないと判定する。
【００５５】
実行回数の規則違反が発生した場合、処理はステップＳ２１０に進む。
実行回数の規則違反が発生していない場合、処理はステップＳ２０４に進む。
【００５６】
ステップＳ２０４において、監視部２２８は制御監視タイマを起動する。制御監視タイマは、優先制御の実行時間を監視するためのタイマである。
具体的には、監視部２２８は、第１監視テーブル２２９１から現在のタイムパーティションの監視規則に設定されている実行時間を取得し、取得された実行時間をタイマに設定し、タイマを起動する。起動されるタイマが制御監視タイマである。
【００５７】
ステップＳ２０５において、制御割り込み受付部２２６は、プロセッサ２０１の特権モードをホストモードからゲストモードに遷移する。
【００５８】
ステップＳ２０６において、仮想マシン２１４は、ゲストモードで、優先制御ルーチン２３２の先頭から優先制御ルーチン２３２を実行する。
【００５９】
ステップＳ２０７において、仮想マシン２１４は、プロセッサ２０１の特権モードをゲストモードからホストモードに遷移する。
具体的には、仮想マシン２１４は、優先制御ルーチン２３２に含まれる遷移命令を実行することによって、プロセッサ２０１の特権モードをゲストモードからホストモードに遷移する。
【００６０】
ステップＳ２０８において、監視部２２８は制御監視タイマを停止する。
【００６１】
ステップＳ２０９において、制御割り込み受付部２２６は、割り込み時コンテキストを復元する。
ステップＳ２０９の後、制御割り込みが発生したときに実行されていたタスクが再開される。
【００６２】
ステップＳ２１０において、制御割り込み受付部２２６は安全制御部２２７を呼び出し、安全制御部２２７は安全制御を実行する。
【００６３】
図１１に基づいて、第１満了割り込み処理を説明する。
第１満了割り込み処理は、第１満了割り込みが発生した場合の処理である。第１満了割り込みは、ステップＳ２０４（図１０参照）で起動された制御監視タイマが満了したときに発生する割り込みである。制御監視タイマの満了は、制御監視タイマに設定された時間の経過を意味する。
第１満了割り込み処理は、監視部２２８が第１満了割り込みを受け付けたときに実行される。
【００６４】
ステップＳ３０１において、監視部２２８は、第１満了割り込みルーチンの実行を開始する。第１満了割り込みルーチンは監視部２２８の一部として実装される。
ステップＳ３１０において、監視部２２８は安全制御部２２７を呼び出し、安全制御部２２７は安全制御を実行する。具体的には、監視部２２８は、第１満了割り込みルーチンに含まれる呼び出し命令を実行することによって、安全制御部２２７を呼び出す。
【００６５】
図１２に基づいて、ＶＭタスク処理を説明する。
ＶＭタスク処理は、ＶＭタスク２２１によって実行される処理である。
【００６６】
ステップＳ４０１において、ＶＭタスク２２１はＶＭコンテキストを復元する。
ステップＳ４０２において、ＶＭタスク２２１は仮想マシン２１４を起動する。具体的には、ＶＭタスク２２１は、遷移命令によって、プロセッサ２０１の特権モードをホストモードからゲストモードに遷移する。これにより、仮想マシン２１４が起動される。
【００６７】
仮想マシン２１４の実行中にＶＭタスク２２１がスケジューラ２２３によって中断されると、スケジューラ２２３はＶＭタスク２２１の再開アドレスを設定する。
つまり、ＶＭタスク２２１の中断時に仮想マシン２１４の実行も中断され、ＶＭタスク２２１の再開時に仮想マシン２１４の実行も再開される。
【００６８】
図１３に基づいて、安全監視タスク処理を説明する。
安全監視タスク処理は、安全監視タスク２２５によって実行される処理である。
【００６９】
ステップＳ５０１において、安全監視タスク２２５は安全監視を実行する。
ステップＳ５０２において、安全監視タスク２２５は、安全監視の結果に基づいて、障害の発生の有無を判定する。
障害が発生した場合、処理はステップＳ５１０に進む。
障害が発生していない場合、処理はステップＳ５０１に進む。
ステップＳ５１０において、安全監視タスク２２５は安全制御部２２７を呼び出し、安全制御部２２７は安全制御を実行する。
【００７０】
＊＊＊実施の形態１の補足＊＊＊
優先制御は制御処理ともいい、一般制御は非制御処理ともいう。
安全監視は安全監視処理ともいい、安全制御は安全制御処理ともいう。
制御処理用のアプリケーション、非制御処理用のアプリケーション、安全監視処理用のアプリケーションおよび安全制御処理用のアプリケーションは、補助記憶装置２０３に記憶され、メモリ２０２に読み込まれ、プロセッサ２０１によって実行される。補助記憶装置２０３に記憶されたアプリケーションを、プロセッサ２０１が直接実行してもよい。
制御処理用のアプリケーションは制御処理の実行イメージである。非制御処理用のアプリケーションは非制御処理の実行イメージである。安全監視処理用のアプリケーションは安全監視処理の実行イメージである。安全制御処理用のアプリケーションは安全制御処理の実行イメージである。
【００７１】
各要素の優先度は以下のように設定されている。
監視部２２８の一部である満了割り込みルーチンの優先度は、制御割り込み受付部２２６の優先度よりも高い。
制御割り込み受付部２２６の優先度は、優先制御ルーチン２３２の優先度と同じである。
優先制御ルーチン２３２の優先度は、スケジューラ２２３の優先度よりも高い。
スケジューラ２２３の優先度は、安全監視タスク２２５の優先度よりも高い。
一般制御タスク２３３の優先度は、スケジューラ２２３の優先度よりも低い。
【００７２】
制御割り込みは、ＯＳの管理外の割り込みである。
【００７３】
マイクロコントローラ２００は、ホストＯＳ２２０とゲストＯＳ２３０といったソフトウェア要素を備える。ソフトウェア要素はソフトウェアで実現される要素である。
【００７４】
補助記憶装置２０３には、ホストＯＳ２２０とゲストＯＳ２３０としてコンピュータを機能させるための制御プログラムが記憶されている。制御プログラムは、メモリ２０２にロードされて、プロセッサ２０１によって実行される。補助記憶装置２０３に記憶された制御プログラムを、プロセッサ２０１が直接実行してもよい。
【００７５】
マイクロコントローラ２００は、プロセッサ２０１を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ２０１の役割を分担する。
【００７６】
制御プログラムは、磁気ディスク、光ディスクまたはフラッシュメモリ等の不揮発性の記憶媒体にコンピュータ読み取り可能に記憶することができる。不揮発性の記憶媒体は、一時的でない有形の媒体である。
【００７７】
＊＊＊実施の形態１の効果＊＊＊
実施の形態１により、不要な異常検知およびＣＰＵオーバヘッドを抑制しながら、安全監視処理のＣＰＵ時間の保証と制御処理の遅延の抑制とを実現することが可能となる。
【００７８】
実施の形態１では、タイムパーティションの切り替えに応じて制御割り込みの監視規則が切り替わる。これにより、特許文献２および特許文献３の課題を解決することが可能となる。つまり、安全監視処理のＣＰＵ時間が保証されていて装置に問題がないにもかかわらず、安全監視処理以外の処理のタイムパーティションで違反が検知された結果、装置に異常が発生したと判定されてしまう、という課題を解決することが可能となる。
また、優先制御ルーチン２３２および制御割り込み受付部２２６がＯＳ管理外割り込みであるため、ゲストＯＳおよびホストＯＳの割り込み禁止中でも割り込みを受け付けることができる。そのため、優先制御の遅延を抑制することができる。
また、優先制御ルーチン２３２および一般制御タスク２３３が仮想マシン２１４によって実行される。そのため、優先制御ルーチン２３２および一般制御タスク２３３を、安全監視タスク２２５および安全制御部２２７に対して、空間的および時間的に独立させることができる。これにより、安全監視処理のＣＰＵ時間を保証することが可能となる。また、優先制御ルーチン２３２および一般制御タスク２３３を、安全監視タスク２２５および安全制御部２２７に要求される安全度水準よりも低い安全度水準で、開発することができる。
【００７９】
実施の形態２．
第１タイムパーティションでの優先制御の実行時間を監視する代わりに第１タイムパーティションの実行時間を監視する形態について、主に実施の形態１と異なる点を図１４から図２０に基づいて説明する。
【００８０】
＊＊＊構成の説明＊＊＊
図１４に基づいて、ホストＯＳ２２０の構成を説明する。
ホストＯＳ２２０は、実施の形態１（図４参照）で説明した要素の他に、第２監視テーブル２２９２を備える。
第２監視テーブル２２９２は、タイムパーティション毎の監視規則が設定されたテーブルである。
【００８１】
図１５に基づいて、第２監視テーブル２２９２の構成を説明する。
第２監視テーブル２２９２は、ＴＰ番号と監視フラグと監視規則と満了予定時刻とのそれぞれの欄を有する。
【００８２】
ＴＰ番号の欄は、タイムパーティションを識別する番号であるＴＰ番号を示す。
【００８３】
監視フラグの欄は、安全監視の要否を示すフラグである監視フラグの値を示す。
監視フラグの値がＯＮである場合、安全監視が必要である。
監視フラグの値がＯＦＦである場合、安全監視が不要である。
【００８４】
監視規則の欄は、タイムパーティション毎の監視規則を示す。具体的には、監視規則の欄は、タイムパーティション毎にタイムパーティションの実行時間の上限を示す。
【００８５】
ＴＰ１に対応付けられた監視規則が第１監視規則である。
第１監視規則は、第１タイムパーティションの実行時間を制限する規則である。
第１タイムパーティションの実行時間は、第１タイムパーティションでの一般制御の実行時間と第１タイムパーティションでの優先制御の実行時間とを合計して得られる時間である。
【００８６】
ＴＰ２に対応付けられた監視規則が第２監視規則である。
第２監視規則がＮＵＬＬであるため、第２タイムパーティションの実行時間に対する監視規則は無い。
【００８７】
満了予定時刻の欄は、タイムパーティションの満了予定時刻を示す。
満了予定時刻は、タイムパーティションの開始時刻からタイムパーティションの割り当て時間（一般制御の実行時間）が経過したときの時刻である。
監視フラグの値がＯＦＦである場合、満了予定時刻はゼロである。
【００８８】
図１６に基づいて、第１監視テーブル２２９１の設定を説明する。
第１監視規則において実行回数および実行時間がＮＵＬＬである。そのため、第１タイムパーティションでの優先制御に監視規則は無い。
【００８９】
図１５の第２監視テーブル２２９２に基づいて、監視部２２８は、第１監視として、第１タイムパーティションの実行時間を監視する。
図１６の第１監視テーブル２２９１に基づいて、監視部２２８は、第２監視として、第２タイムパーティションでの優先制御の実行回数と実行時間とを監視する。
【００９０】
＊＊＊動作の説明＊＊＊
図１７、図１８および図１９に基づいて、ＴＰ切り替え処理を説明する。
図１７において、ステップＳ１１１からステップＳ１１７までの処理は、実施の形態１（図９参照）で説明した通りである。
ステップＳ１１７の後、処理はステップＳ１２０（図１８参照）に進む。
【００９１】
ステップＳ１２０（図１８参照）において、スケジューラ２２３は、現在のタイムパーティションがＴＰ監視対象であるか判定する。ＴＰ監視対象は、タイムパーティションの実行時間を監視する対象となるタイムパーティションである。
具体的には、スケジューラ２２３は、第２監視テーブル２２９２から現在のタイムパーティションの監視フラグを選択し、選択された監視フラグの値がＯＮであるか判定する。
現在のタイムパーティションがＴＰ監視対象である場合、処理はステップＳ１２１に進む。
現在のタイムパーティションがＴＰ監視対象でない場合、処理はステップＳ１２６に進む。
【００９２】
ステップＳ１２１において、現在のタイムパーティション用のＴＰ監視タイマが動作している。ＴＰ監視タイマは、タイムパーティションの実行時間を監視するためのタイマである。
スケジューラ２２３は、現在のタイムパーティションのＴＰ監視タイマを停止する。
【００９３】
ステップＳ１２２において、制御割り込みが仮想マシン２１４に対して割り当てられている。
スケジューラ２２３はＶＭ管理部２２２を呼び出し、ＶＭ管理部２２２は制御割り込みをホストＯＳ２２０に割り当てる。制御割り込みがホストＯＳ２２０に割り当てられた後、制御割り込みはホストＯＳ２２０で受け付けられる。
【００９４】
ステップＳ１２３において、スケジューラ２２３は監視部２２８を呼び出し、監視部２２８は満了予定時刻を過ぎたか判定する。
つまり、監視部２２８は、第１タイムパーティションの割り当て時間（一般制御の実行時間）が経過したか判定する。
【００９５】
具体的には、監視部２２８は以下のように判定を行う。
まず、監視部２２８は、第２監視テーブル２２９２から、現在のタイムパーティションの満了予定時刻を取得する。
そして、監視部２２８は、現在時刻を現在のタイムパーティションの満了予定時刻と比較する。
【００９６】
満了予定時刻を過ぎていた場合、処理はステップＳ１２４に進む。
満了予定時刻を過ぎていない場合、処理はステップＳ１２６に進む。
【００９７】
ステップＳ１２４において、スケジューラ２２３は、次のタイムパーティションが制御監視対象であるか判定する。制御監視対象は、タイムパーティションでの優先制御を監視する対象となるタイムパーティションである。
【００９８】
具体的には、スケジューラ２２３は以下のように判定を行う。
まず、スケジューラ２２３は、スケジュールテーブル２２４を参照することによって、次のタイムパーティションを特定する。
次に、スケジューラ２２３は、第１監視テーブル２２９１から、次のタイムパーティションの監視規則を選択する。
そして、スケジューラ２２３は、選択された監視規則において実行回数と実行時間との少なくともいずれかがＮＵＬＬ以外の値であるか判定する。
実行回数と実行時間との少なくともいずれかがＮＵＬＬ以外の値である場合、次のタイムパーティションが制御監視対象である。
【００９９】
次のタイムパーティションが制御監視対象である場合、処理はステップＳ１２５に進む。
次のタイムパーティションが制御監視対象でない場合、処理はステップＳ１２６に進む。
【０１００】
ステップＳ１２５において、スケジューラ２２３は監視部２２８を呼び出し、監視部２２８は次監視履歴を更新する。次監視履歴は、次のタイムパーティションの監視履歴である。
具体的には、監視部２２８は、第１監視テーブル２２９１から次のタイムパーティションの監視履歴を選択し、選択された監視履歴に設定されている実行回数に１を加える。
【０１０１】
ステップＳ１２６において、スケジューラ２２３は、次のタイムパーティションがＴＰ監視対象であるか判定する。
具体的には、スケジューラ２２３は、第２監視テーブル２２９２から次のタイムパーティションの監視フラグを選択し、選択された監視フラグの値がＯＮであるか判定する。
次のタイムパーティションがＴＰ監視対象である場合、処理はステップＳ１２７に進む。
次のタイムパーティションがＴＰ監視対象でない場合、処理はステップＳ１１８（図１９参照）に進む。
【０１０２】
ステップＳ１２７において、スケジューラ２２３はＶＭ管理部２２２を呼び出し、ＶＭ管理部２２２は制御割り込みを仮想マシン２１４に割り当てる。制御割り込みが仮想マシン２１４に割り当てられた後、制御割り込みは仮想マシン２１４で受け付けられる。
【０１０３】
ステップＳ１２８において、スケジューラ２２３は、次のタイムパーティション用のＴＰ監視タイマを起動する。
具体的には、スケジューラ２２３は、第２監視テーブル２２９２から、次のタイムパーティションの監視規則に設定されている実行時間を取得し、取得された実行時間をタイマに設定し、タイマを起動する。起動されるタイマが次のタイムパーティション用のＴＰ監視タイマである。
【０１０４】
ステップＳ１２９において、スケジューラ２２３は監視部２２８を呼び出し、監視部２２８は次満了予定時刻を設定する。次満了予定時刻は、次のタイムパーティションの満了予定時刻である。
【０１０５】
具体的には、監視部２２８は次のタイムパーティションの満了予定時刻を以下のように設定する。
まず、監視部２２８は、現在時刻から次のタイムパーティションの割り当て時間が経過したときの時刻を算出する。算出される時刻が満了予定時刻である。
次に、監視部２２８は、満了予定時刻に対応するタイマカウント値を算出する。
次に、監視部２２８は、第２監視テーブル２２９２から、次のタイムパーティションの満了予定時刻の欄を選択する。
そして、監視部２２８は、選択された満了予定時刻の欄にタイマカウント値を設定する。
【０１０６】
ステップＳ１２９の後、処理はステップＳ１１８（図１９参照）に進む。
【０１０７】
図１９において、ステップＳ１１８およびステップＳ１１９は、実施の形態１（図９参照）で説明した通りである。
【０１０８】
図２０に基づいて、第２満了割り込み処理を説明する。
第２満了割り込み処理は、第２満了割り込みが発生した場合の処理である。第２満了割り込みは、ステップＳ１２８（図１８参照）で起動されたＴＰ監視タイマが満了したときに発生する割り込みである。ＴＰ監視タイマの満了は、ＴＰ監視タイマに設定された時間の経過を意味する。つまり、第２満了割り込みは、第１タイムパーティションで第１監視規則に対する違反が発生した場合に発生する。
第２満了割り込み処理は、監視部２２８が第２満了割り込みを受け付けたときに実行される。
【０１０９】
ステップＳ６０１において、監視部２２８は、第２満了割り込みルーチンの実行を開始する。第２満了割り込みルーチンは監視部２２８の一部として実装される。
ステップＳ６１０において、監視部２２８は安全制御部２２７を呼び出し、安全制御部２２７は安全制御を実行する。具体的には、監視部２２８は、第２満了割り込みルーチンに含まれる呼び出し命令を実行することによって、安全制御部２２７を呼び出す。
【０１１０】
＊＊＊実施の形態２の補足＊＊＊
第１タイムパーティションでの制御割り込みは、ゲストモード２１２で受け付けられる割り込みである。
第２タイムパーティションでの制御割り込みは、ホストモード２１１で受け付けられる割り込みである。
監視部２２８は、第１タイムパーティションでタイムパーティションの満了予定時刻を過ぎていて、且つ、第１タイムパーティションで第２監視テーブル２２９２に定義された第１監視規則に対する違反が発生していない場合、第２タイムパーティションでの優先制御の実行回数に１を加える。
監視部２２８は、第１タイムパーティションでタイムパーティションの満了予定時刻を過ぎていて、且つ、第１タイムパーティションで第２監視テーブル２２９２に定義された第１監視規則に対する違反が発生した場合、安全制御部２２７を呼び出す。
【０１１１】
＊＊＊実施の形態２の効果＊＊＊
実施の形態２では、制御割り込みの実行回数および制御割り込みの実行時間の監視の代わりに、タイムパーティションの実行時間の監視が行われる。これにより、安全監視タスク２２５の実行時間が保証される。また、仮想マシン２１４の実行中に制御割り込みが発生した場合に監視部２２８による制御割り込みの監視を有効化するためにホストモードに遷移する必要がなくなる。これにより、仮想マシン２１４の実行中は制御割り込みを仮想マシン２１４で直接受け付けることも可能になる。そのため、優先制御ルーチン２３２の実行オーバヘッドを抑制することが可能となる。よって、コンテキストの切り替えに伴うＣＰＵ負荷の増大を抑制することが可能となる。
実施の形態２では、制御割り込みによってＶＭタスク２２１用のタイムパーティションの実行時間が延長した場合に、安全監視タスク２２５用のタイムパーティションにおける制御割り込みの実行回数がインクリメントされる。つまり、ＶＭタスク２２１の終了間際に発生した制御割り込みによってＶＭタスク２２１用のタイムパーティションが延長してしまい、安全監視タスク２２５用のタイムパーティションの実行時間が少なくなってしまった場合、安全監視タスク２２５用のタイムパーティションで制御割り込みが発生したものとして実行回数がカウントされる。これにより、安全監視タスク２２５用のタイムパーティションにおいて安全監視タスク２２５の実行時間を確保することができる。
【０１１２】
実施の形態３．
第１タイムパーティションから第２タイムパーティションへの切り換わり時刻よりも一定時間前に制御割り込みの受け付け先をゲストモード２１２からホストモード２１１に切り替える形態について、主に実施の形態１および実施の形態２と異なる点を図２１から図２５に基づいて説明する。
【０１１３】
図２１に基づいて、第２監視テーブル２２９２の構成を説明する。
第２監視テーブル２２９２は、実施の形態２（図１５参照）で説明した満了予定時刻の欄の代わりに、切り替え時間と割り込み番号と切り替え先とのそれぞれの欄を有する。
切り替え時間の欄は、切り替え時間を示す。切り替え時間は、割り込みの受け付け先を切り替える時刻を特定する時間である。具体的には、切り替え時間の欄は、切り替え時のタイムパーティションの実行時間を示す。
割り込み番号の欄は、割り込みを識別する番号である割り込み番号を示す。割り込み番号ＮＰは、制御割り込みの割り込み番号である。
切り替え先の欄は、切り替え先を示す。切り替え先は、切り替え後の制御割り込みの受け付け先である。
【０１１４】
図２２に基づいて、第１監視テーブル２２９１の設定を説明する。
第１監視テーブル２２９１の設定は、実施の形態２（図１６参照）における設定と同じである。
【０１１５】
＊＊＊動作の説明＊＊＊
図２３、図２４および図２５に基づいて、ＴＰ切り替え処理を説明する。
図２３において、ステップＳ１１１からステップＳ１１７までの処理は、実施の形態１（図９参照）で説明した通りである。
ステップＳ１１１で現在時刻がＴＰ切り替え時刻でないと判定された場合、処理はステップＳ１３１（図２５参照）に進む。
ステップＳ１１７の後、処理はステップＳ１２０（図２４参照）に進む。
【０１１６】
図２４において、ステップＳ１２０からステップＳ１２２までの処理およびステップＳ１２６からステップＳ１２８までの処理は、実施の形態２（図１８参照）で説明した通りである。
また、ステップＳ１１８およびステップＳ１１９は、実施の形態１（図９参照）で説明した通りである。
【０１１７】
ステップＳ１３１（図２５参照）において、スケジューラ２２３は、現在のタイムパーティションがＴＰ監視対象であるか判定する。判定方法は、実施の形態２においてステップＳ１２０（図１８参照）で説明した方法と同じである。
現在のタイムパーティションがＴＰ監視対象である場合、処理はステップＳ１３２に進む。
現在のタイムパーティションがＴＰ監視対象でない場合、処理はステップＳ１１９（図２４参照）に進む。
【０１１８】
ステップＳ１３２において、スケジューラ２２３は、現在時刻が割り込み切り替え時刻であるか判定する。割り込み切り替え時刻は、制御割り込みの割り込み先を切り替える時刻である。
具体的には、スケジューラ２２３は、第２監視テーブル２２９２から現在のタイムパーティションの切り替え時間を取得し、現在のタイムパーティションの実行時間が現在のタイムパーティションの切り替え時間を超過したか判定する。現在のタイムパーティションの実行時間が現在のタイムパーティションの切り替え時間を超過した場合、現在時刻が割り込み切り替え時刻である。
現在時刻が割り込み切り替え時刻である場合、処理はステップＳ１３３に進む。
現在時刻が割り込み切り替え時刻でない場合、処理はステップＳ１１９（図２４参照）に進む。
【０１１９】
ステップＳ１３３において、スケジューラ２２３は、次のタイムパーティションが制御監視対象であるか判定する。判定方法は、実施の形態２においてステップＳ１２４（図１８参照）で説明した方法と同じである。
次のタイムパーティションが制御監視対象である場合、処理はステップＳ１３４に進む。
次のタイムパーティションが制御監視対象でない場合、処理はステップＳ１１９（図２４参照）に進む。
【０１２０】
ステップＳ１３４において、スケジューラ２２３はＶＭ管理部２２２を呼び出し、ＶＭ管理部２２２は制御割り込みをホストＯＳに割り当てる。
【０１２１】
＊＊＊実施の形態３の補足＊＊＊
第１タイムパーティションの終了前の一定時間を除いて第１タイムパーティションでの制御割り込みは、ゲストモード２１２で受け付けられる割り込みである。
第１タイムパーティションの一定時間での制御割り込みは、ホストモード２１１で受け付けられる割り込みである。
第２タイムパーティションでの制御割り込みは、ホストモード２１１で受け付けられる割り込みである。
【０１２２】
＊＊＊実施の形態３の効果＊＊＊
実施の形態３では、タイムパーティションの終了時刻より制御割り込みの最悪実行時間の分だけ前倒しして、制御割り込みの割り付け先が仮想マシン２１４からホストＯＳ２２０に変更される。これにより、ＶＭタスク２２１用のタイムパーティションの終了間際に発生した制御割り込みによってＶＭタスク２２１用のタイムパーティションが延長し、安全監視タスク２２５用のタイムパーティションの実行時間が少なくなってしまった場合、安全監視タスク２２５用のタイムパーティションで制御割り込みが発生したものとして実行回数がカウントされる。その結果、安全監視タスク２２５用のタイムパーティションにおいて、安全監視タスク２２５の実行時間を確保することができる。
【０１２３】
＊＊＊実施の形態の補足＊＊＊
実施の形態において、制御装置１００の機能はハードウェアで実現してもよい。
図２６に、制御装置１００の機能がハードウェアで実現される場合の構成を示す。
制御装置１００は処理回路９９０を備える。処理回路９９０はプロセッシングサーキットリともいう。
処理回路９９０は、プロセッサ２０１とメモリ２０２と補助記憶装置２０３とを実現する専用の電子回路である。
例えば、処理回路９９０は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＡＳＩＣ、ＦＰＧＡまたはこれらの組み合わせである。ＧＡはＧａｔｅ  Ａｒｒａｙの略称であり、ＡＳＩＣはＡｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略称であり、ＦＰＧＡはＦｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略称である。
【０１２４】
制御装置１００は、処理回路９９０を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路９９０の役割を分担する。
【０１２５】
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
【符号の説明】
【０１２６】
１００  制御装置、１１０  周辺回路、２００  マイクロコントローラ、２０１  プロセッサ、２０２  メモリ、２０３  補助記憶装置、２０４  入出力インタフェース、２０５  通信コントローラ、２０６  割り込みコントローラ、２０７  タイマ、２１１  ホストモード、２１２  ゲストモード、２１４  仮想マシン、２２０  ホストＯＳ、２２１  ＶＭタスク、２２２  ＶＭ管理部、２２３  スケジューラ、２２４  スケジュールテーブル、２２５  安全監視タスク、２２６  制御割り込み受付部、２２７  安全制御部、２２８  監視部、２２９１  第１監視テーブル、２２９２  第２監視テーブル、２３０  ゲストＯＳ、２３１  スケジューラ、２３２  優先制御ルーチン、２３３  一般制御タスク、９９０  処理回路。
【図１】
2018173123.tif 000003
【図２】
2018173123.tif 000004
【図３】
2018173123.tif 000005
【図４】
2018173123.tif 000006
【図５】
2018173123.tif 000007
【図６】
2018173123.tif 000008
【図７】
2018173123.tif 000009
【図８】
2018173123.tif 000010
【図９】
2018173123.tif 000011
【図１０】
2018173123.tif 000012
【図１１】
2018173123.tif 000013
【図１２】
2018173123.tif 000014
【図１３】
2018173123.tif 000015
【図１４】
2018173123.tif 000016
【図１５】
2018173123.tif 000017
【図１６】
2018173123.tif 000018
【図１７】
2018173123.tif 000019
【図１８】
2018173123.tif 000020
【図１９】
2018173123.tif 000021
【図２０】
2018173123.tif 000022
【図２１】
2018173123.tif 000023
【図２２】
2018173123.tif 000024
【図２３】
2018173123.tif 000025
【図２４】
2018173123.tif 000026
【図２５】
2018173123.tif 000027
【図２６】
2018173123.tif 000028
【手続補正書】
【提出日】平成29年9月8日(2017.9.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１周期に含まれる複数のタイムパーティションの中の１つのタイムパーティションであって一般制御を実行するためのタイムパーティションである第１タイムパーティションで優先制御の契機となる制御割り込みが発生した場合に、第１監視規則に応じた監視である第１監視を行い、前記複数のタイムパーティションの中の１つのタイムパーティションであって障害の発生有無を監視する安全監視を実行するためのタイムパーティションである第２タイムパーティションで制御割り込みが発生した場合に、第２監視規則に応じた監視である第２監視を行う監視部と、
前記第１タイムパーティションで前記第１監視規則に対する違反が発生した場合と、前記第２タイムパーティションで前記第２監視規則に対する違反が発生した場合とのそれぞれで、障害が発生したときのための安全制御を行う安全制御部と
を備える制御装置。
【請求項２】
前記一般制御および前記優先制御はゲストモードで実行される処理であり、
前記安全監視および前記安全制御はホストモードで実行される処理である
請求項１に記載の制御装置。
【請求項３】
前記第１監視規則は、前記第１タイムパーティションでの前記優先制御の実行時間を制限する規則であり、
前記監視部は、前記第１監視として、前記第１タイムパーティションでの前記優先制御の実行時間を監視し、
前記第２監視規則は、前記第２タイムパーティションでの前記優先制御の実行回数と実行時間とを制限する規則であり、
前記監視部は、前記第２監視として、前記第２タイムパーティションでの前記優先制御の実行回数と実行時間とを監視する
請求項１または請求項２に記載の制御装置。
【請求項４】
前記制御割り込みは、オペレーティングシステムの管理外の割り込みであり、
前記管理外の割り込みは、オペレーティングシステムの割り込み禁止中にも受け付け可能な割り込みである
請求項１から請求項３のいずれか１項に記載の制御装置。
【請求項５】
前記第１監視規則は、前記第１タイムパーティションでの前記一般制御の実行時間と前記第１タイムパーティションでの前記優先制御の実行時間とを合計して得られる前記第１タイムパーティションの実行時間を制限する規則であり、
前記監視部は、前記第１監視として、前記第１タイムパーティションの実行時間を監視し、
前記第２監視規則は、前記第２タイムパーティションでの前記優先制御の実行回数と前記優先制御の実行時間とを制限する規則であり、
前記監視部は、前記第２監視として、前記第２タイムパーティションでの前記優先制御の実行回数と実行時間とを監視する
請求項１または請求項２に記載の制御装置。
【請求項６】
前記第１タイムパーティションでの前記制御割り込みは、ホストモードを介さずゲストモードで直接受け付けられる割り込みであり、
前記第２タイムパーティションでの前記制御割り込みは、ホストモードで受け付けられる割り込みである
請求項５に記載の制御装置。
【請求項７】
前記監視部は、前記第１タイムパーティションで前記第１タイムパーティションの実行時間が経過した場合、前記第２タイムパーティションでの前記優先制御の実行回数に１を加える
請求項５または請求項６に記載の制御装置。
【請求項８】
前記第１タイムパーティションの終了前の一定時間を除いて前記第１タイムパーティションでの前記制御割り込みは、ゲストモードで受け付けられる割り込みであり、
前記第１タイムパーティションの前記一定時間での前記制御割り込みは、ホストモードで受け付けられる割り込みであり、
前記第２タイムパーティションでの前記制御割り込みは、ホストモードで受け付けられる割り込みである
請求項５に記載の制御装置。
【請求項９】
１周期に含まれる複数のタイムパーティションの中の１つのタイムパーティションであって一般制御を実行するためのタイムパーティションである第１タイムパーティションで優先制御の契機となる制御割り込みが発生した場合に、第１監視規則に応じた監視である第１監視を行い、前記複数のタイムパーティションの中の１つのタイムパーティションであって障害の発生有無を監視する安全監視を実行するためのタイムパーティションである第２タイムパーティションで制御割り込みが発生した場合に、第２監視規則に応じた監視である第２監視を行う監視処理と、
前記第１タイムパーティションで前記第１監視規則に対する違反が発生した場合と、前記第２タイムパーティションで前記第２監視規則に対する違反が発生した場合とのそれぞれで、障害が発生したときのための安全制御を行う安全制御処理と
をコンピュータに実行させるための制御プログラム。
【請求項１０】
１周期に含まれる複数のタイムパーティションの中の１つのタイムパーティションであって一般制御を実行するためのタイムパーティションである第１タイムパーティションで優先制御の契機となる制御割り込みが発生した場合に、第１監視規則に応じた監視である第１監視を行い、前記複数のタイムパーティションの中の１つのタイムパーティションであって障害の発生有無を監視する安全監視を実行するためのタイムパーティションである第２タイムパーティションで制御割り込みが発生した場合に、第２監視規則に応じた監視である第２監視を行う監視部を備える制御装置であって、
前記第１監視規則は、前記第１タイムパーティションでの前記一般制御の実行時間と前記第１タイムパーティションでの前記優先制御の実行時間とを合計して得られる前記第１タイムパーティションの実行時間を制限する規則であり、
前記監視部は、前記第１監視として、前記第１タイムパーティションの実行時間を監視し、
前記第２監視規則は、前記第２タイムパーティションでの前記優先制御の実行回数と前記優先制御の実行時間とを制限する規則であり、
前記監視部は、前記第２監視として、前記第２タイムパーティションでの前記優先制御の実行回数と実行時間とを監視する
制御装置。
【請求項１１】
１周期に含まれる複数のタイムパーティションの中の１つのタイムパーティションであって一般制御を実行するためのタイムパーティションである第１タイムパーティションで優先制御の契機となる制御割り込みが発生した場合に、第１監視規則に応じた監視である第１監視を行い、前記複数のタイムパーティションの中の１つのタイムパーティションであって障害の発生有無を監視する安全監視を実行するためのタイムパーティションである第２タイムパーティションで制御割り込みが発生した場合に、第２監視規則に応じた監視である第２監視を行う監視処理
をコンピュータに実行させるための制御プログラムであって、
前記第１監視規則は、前記第１タイムパーティションでの前記一般制御の実行時間と前記第１タイムパーティションでの前記優先制御の実行時間とを合計して得られる前記第１タイムパーティションの実行時間を制限する規則であり、
前記監視処理は、前記第１監視として、前記第１タイムパーティションの実行時間を監視し、
前記第２監視規則は、前記第２タイムパーティションでの前記優先制御の実行回数と前記優先制御の実行時間とを制限する規則であり、
前記監視処理は、前記第２監視として、前記第２タイムパーティションでの前記優先制御の実行回数と実行時間とを監視する
制御プログラム。
【国際調査報告】
2018173123.tif 000029
2018173123.tif 000030
2018173123.tif 000031
2018173123.tif 000032