JP6242557B1 - 制御装置および制御プログラム - Google Patents

制御装置および制御プログラム Download PDF

Info

Publication number
JP6242557B1
JP6242557B1 JP2017547594A JP2017547594A JP6242557B1 JP 6242557 B1 JP6242557 B1 JP 6242557B1 JP 2017547594 A JP2017547594 A JP 2017547594A JP 2017547594 A JP2017547594 A JP 2017547594A JP 6242557 B1 JP6242557 B1 JP 6242557B1
Authority
JP
Japan
Prior art keywords
monitoring
time
control
partition
interrupt
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.)
Active
Application number
JP2017547594A
Other languages
English (en)
Other versions
JPWO2018173123A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6242557B1 publication Critical patent/JP6242557B1/ja
Publication of JPWO2018173123A1 publication Critical patent/JPWO2018173123A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • G06F9/4837Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Microcomputers (AREA)
  • Programmable Controllers (AREA)

Abstract

マイクロコントローラ(200)は、一般制御を実行するための第1タイムパーティションで優先制御の割り込みが発生した場合に、第1監視規則に応じて第1監視を行い、安全監視を実行するための第2タイムパーティションで優先制御の割り込みが発生した場合に、第2監視規則に応じて第2監視を行う。第1タイムパーティションで第1監視規則に対する違反が発生した場合と、第2タイムパーティションで第2監視規則に対する違反が発生した場合とのそれぞれで、マイクロコントローラは安全制御を行う。

Description

本発明は、安全監視を行いながら各種制御を行うための技術に関するものである。
自動車の機能安全規格であるISO 26262および家庭用電気機器の安全規格であるIEC 60335−1では、通常の制御処理に加えて、ハードウェアの故障診断、外界の危険状態および異常事象のセンサによる監視等の安全監視処理を行う必要がある。
このような安全監視処理には、システムが定めるFTTI(Fault Tolerant Time Interval)に基づいて、CPU時間を割り当てる必要がある。CPUはCentral Processing Unitの略称である。
例えば、故障発生から故障検知までの許容時間が1500ミリ秒以内であるシステムにおいて、ハードウェアの診断対象の全部位を診断するのに500ミリ秒を要する場合、安全監視処理に対して、1500ミリ秒周期に500ミリ秒のCPU時間が割り当てられることを保証する必要がある。安全監視処理に対して割り当てられるCPU時間が500ミリ秒より短いと、システムが定めるFTTIを故障発生時に守れなくなる可能性がある。
特許文献1に開示される技術では、タイムパーティショニングによって、通常の制御処理と安全監視処理とのそれぞれに対してCPU時間が独立して割り当てられる。そのため、安全監視処理に対して一定の周期に一定のCPU時間が割り当てられることが保証される。
非特許文献1には、タイムパーティショニングにおける毎サイクルの末尾にアイドルウィンドウを確保することが開示されている。
安全監視処理のタイムパーティションで通常の制御処理からの割り込みを受け付けることが可能であり、安全監視処理のタイムパーティションで通常の制御処理からの割り込みが発生した場合、アイドルウィンドウに割り当てられたCPU時間が安全監視処理のタイムパーティションに譲渡される。これにより、通常の制御処理の遅延を抑制しつつ、安全監視処理のCPU時間を保証することが可能となる。
特許文献2および特許文献3には、割り込みの発生頻度および割り込み処理の実行時間を監視する技術が開示されている。
このような監視が通常の制御処理からの割り込みに対して行われれば、安全監視処理のタイムパーティションで通常の制御処理からの割り込みを受け付けることが可能である場合において安全監視処理のCPU時間を保証することが可能となる。
国際公開2012/104901号公報 国際公開2016/046931号公報 特開平07−110774号公報
Hiroaki TAKADA, "Introducing a new temporal partitioning scheme to AUTOSAR OS", 8th AUTOSAR Open Conference, October 29th, 2015
エンジン制御などのパワートレイン系ECU(Electronic Control Unit)およびEPS(Electronic Power Steering)などのシャーシ系ECUでは、一般的に、モータ制御または電力変換などの制御処理、通信処理またはモニタリングデーモンなどの非制御処理、および、ハードウェアの故障診断または外界の異常監視などの安全監視処理が動作する。
制御処理は、数十マイクロ秒から数百マイクロ秒の間隔で発生する割り込みによって起動されてフィードバック制御を行う処理である。制御処理では遅延を極力小さくすることが求められる。また、制御処理は他の処理によって中断されてはならない。つまり、制御処理は、正常処理の中で最も高い優先度で実行される。
非制御処理は、制御処理と比較して大きな遅延が許され、また、他の処理によって中断されることも許容される。非制御処理には、ミリ秒オーダーの周期処理から起動される、また、CPU時間に余裕がある場合に起動される、といった特徴がある。
安全監視処理は、制御処理と比較して大きな遅延が許され、また、他の処理によって中断されることも許容される。しかし、前述の通り、数百ミリ秒から数千ミリ秒の所定の周期において、安全監視処理に対して所定のCPU時間が割り当てられることを保証する必要がある。
非特許文献1に開示された技術は、安全監視処理のCPU時間を保証しつつ、制御処理の遅延を抑制する。しかし、タイムパーティショニングにおける毎サイクルの末尾にアイドルウィンドウを確保する必要があるため、使用されないCPU時間が発生してしまい、CPU時間を有効活用することができない。
安全監視処理のタイムパーティションで制御処理からの割り込みを受け付け、特許文献2および特許文献3の技術により制御処理からの割り込みの発生頻度および割り込み処理の実行時間を監視することで、安全監視処理のCPU時間を保証することが可能である。
しかし、この方法では、すべてのタイムパーティションにおいて割り込みの発生頻度および割り込み処理の実行時間が監視されるため、安全監視処理以外の処理のタイムパーティションで違反が検知される可能性がある。その結果、安全監視処理のCPU時間が保証され装置に問題がないにもかかわらず、装置に異常が発生したと判定されてしまうことになる。
また、制御処理は中断されてはならないため、タイムパーティションの切り替え処理よりも高い優先度で制御処理を動作させる必要がある。そのため、安全監視処理のタイムパーティションの直前のタイムパーティションが完了する直前で制御処理からの割り込みが発生すると、タイムパーティションの切り替えが遅延し、安全監視処理のタイムパーティションのCPU時間が少なくなってしまう。
特許文献1に開示された技術のようにキャリア割り込み1回ごとにタイムパーティションを切り替えると、タイムパーティションの切り替え頻度が多くなり、CPUオーバヘッドが増えてしまう。
一方で、タイムパーティションの切り替え頻度が問題とならない程度にキャリア割り込みを間引くと、制御処理の起動周期が長くなり、制御処理に支障をきたしてしまう。
また、制御処理からの割り込みがキャリア割り込みのように定周期の割り込みである場合にしか、特許文献1に開示された技術を適用することができない。
本発明は、安全監視処理以外の処理のタイムパーティションで違反が検知されてしまい、安全監視処理のCPU時間が保証されているにも関わらず装置に異常が発生したと判定されないようにすることを目的とする。
本発明の制御装置は、1周期に含まれる複数のタイムパーティションの中の1つのタイムパーティションであって一般制御を実行するためのタイムパーティションである第1タイムパーティションで優先制御の契機となる制御割り込みが発生した場合に、第1監視規則に応じた監視である第1監視を行い、前記複数のタイムパーティションの中の1つのタイムパーティションであって障害の発生有無を監視する安全監視を実行するためのタイムパーティションである第2タイムパーティションで制御割り込みが発生した場合に、第2監視規則に応じた監視である第2監視を行う監視部を備える。
本発明によれば、安全監視処理以外の処理のタイムパーティション(第1タイムパーティション)用の監視規則が用いられるため、安全監視処理以外の処理のタイムパーティションで違反が検知されないようにすることが可能となる。そのため、安全監視処理のCPU時間が保証されているにも関わらず装置に異常が発生したと判定されないようにすることが可能となる。
実施の形態1における制御装置100の構成図。 実施の形態1におけるマイクロコントローラ200の構成図。 実施の形態1におけるプロセッサ201の構成図。 実施の形態1におけるホストOS220の構成図。 実施の形態1におけるゲストOS230の構成図。 実施の形態1におけるパーティショニングの概念図。 実施の形態1におけるスケジュールテーブル224の概念図。 実施の形態1における第1監視テーブル2291の構成図。 実施の形態1におけるTP切り替え処理のフローチャート。 実施の形態1における制御割り込み処理のフローチャート。 実施の形態1における第1満了割り込み処理のフローチャート。 実施の形態1におけるVMタスク処理のフローチャート。 実施の形態1における安全監視タスク処理のフローチャート。 実施の形態2におけるホストOS220の構成図。 実施の形態2における第2監視テーブル2292の構成図。 実施の形態2における第1監視テーブル2291の設定を示す図。 実施の形態2におけるTP切り替え処理のフローチャート。 実施の形態2におけるTP切り替え処理のフローチャート。 実施の形態2におけるTP切り替え処理のフローチャート。 実施の形態2における第2満了割り込み処理のフローチャート。 実施の形態3における第2監視テーブル2292の構成図。 実施の形態3における第1監視テーブル2291の設定を示す図。 実施の形態3におけるTP切り替え処理のフローチャート。 実施の形態3におけるTP切り替え処理のフローチャート。 実施の形態3におけるTP切り替え処理のフローチャート。 実施の形態における制御装置100のハードウェア構成図。
実施の形態および図面において、同じ要素および対応する要素には同じ符号を付している。同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
実施の形態1.
安全監視を行いながら各種制御を行うための形態について、図1から図13に基づいて説明する。
***構成の説明***
図1に基づいて、制御装置100の構成を説明する。
制御装置100は、マイクロコントローラ200と周辺回路110とを備える。
マイクロコントローラ200は、制御装置100に備わるコンピュータである。
周辺回路110は、マイクロコントローラ200に接続される周辺回路である。
例えば、周辺回路110は、センサまたはアクチュエータなどである。
図2に基づいて、マイクロコントローラ200の構成を説明する。
マイクロコントローラ200は、プロセッサ201とメモリ202と補助記憶装置203と入出力インタフェース204と通信コントローラ205と割り込みコントローラ206とタイマ207といったハードウェアを備える。これらのハードウェアは、信号線を介して互いに接続されている。
プロセッサ201は、例えば、CPUである。
メモリ202は、揮発性の記憶装置である。例えば、メモリ202はRAM(Random Access Memory)である。
補助記憶装置203は、不揮発性の記憶装置である。例えば、補助記憶装置203は、ROM(Read Only Memory)またはフラッシュメモリである。
入出力インタフェース204には、センサおよびアクチュエータなどが接続される。入出力インタフェース204は、センサ値を得るためのADコンバータ、および、アクチュエータを制御するためのPWM回路などを含む。ADはAnalog to Digitalの略称であり、PWMはPulse Width Modulationの略称である。
通信コントローラ205は、トランスミッタおよびレシーバとして機能する通信装置である。通信コントローラ205は、CANコントローラおよびSPIコントローラなどを含む。CANはController Area Networkの略称であり、SPIはSerial Peripheral Interfaceの略称である。
割り込みコントローラ206は、割り込みを制御するためのコントローラである。
タイマ207は、設定された時間の経過を検出する要素である。
マイクロコントローラ200は、仮想化支援機能を備える。
マイクロコントローラ200は、プロセッサ201の特権モードを切り替えるための命令を持つ。
図3に基づいて、プロセッサ201の構成を説明する。
プロセッサ201は、ホストモード211またはゲストモード212で動作する。
ホストモード211およびゲストモード212は、プロセッサ201の特権モードである。
ホストモード211は、仮想マシンモニタを実行するためのモードである。
ゲストモード212は、仮想マシン214を実行するためのモードである。
ホストモード211において、プロセッサ201は、ホストOS220として機能する。ホストOS220は仮想マシンモニタの役割を果たす。
ホストOS220は、ホストモード211におけるOS(Operating System)である。
仮想マシンモニタは、仮想マシン214を制御する。仮想マシンモニタはVMMと呼ばれる。
ゲストモード212において、プロセッサ201は、仮想マシン214として機能する。
仮想マシン214は、ソフトウェアによって仮想的に構築されたコンピュータである。仮想マシン214は、VMと呼ばれる。
仮想マシン214におけるOSをゲストOS230という。
ホストOS220は、ホストモード211で動作し、マイクロコントローラ200の全てのハードウェア資源にアクセスすることができる。
ゲストOS230は、ゲストモード212で動作し、ホストOS220が使用するハードウェア資源にアクセスすることができない。
制御装置100が車載制御装置である場合、ゲストOS230として、AUTOSAR OSが用いられる。AUTOSARはAutomotive Open System Architectureの略称である。
マイクロコントローラ200は、メモリ202、入出力インタフェース204および割り込みコントローラ206等のハードウェア資源を分割する機能を有する。さらに、マイクロコントローラ200は、仮想マシン214およびホストOS220に対して、ハードウェア資源を占有的または共有的に割り当てる機能を有する。
仮想マシン214は、割り当てられたハードウェア資源を利用して動作する。例えば、仮想マシン214の実行中に仮想マシン214に対する割り込みが発生した場合、ホストモードへの遷移は行われずに、仮想マシン214において割り込みが直接受け付けられる。また、他の仮想マシンに対する割り込みが発生した場合、その割り込みは保留される。また、仮想マシン214の実行中にホストOS220に対する割り込みが発生した場合、仮想マシン214の実行が中断され、ホストモードへの遷移が行われ、ホストOS220において割り込みが受け付けられる。
ホストOS220は、プロセッサ201によって実行されることにより、タスク管理機能、タスクスケジューリング機能、割り込み管理機能、時間管理機能および資源管理機能等を提供する。
ホストOS220は、安全の確保に関連する機能として、分割されたハードウェア資源を空間的および時間的に保護する機能を有する。
例えば、空間的保護は、プロセッサ201の一部であるMPU(Memory Protection Unit)によるメモリ202の保護、および、マイクロコントローラ200が有するペリフェラル保護機能による入出力インタフェース204の保護などである。
例えば、時間的保護は、プロセッサ201の実行時間に対するパーティショニングまたは制御割り込みの監視などによって実現される。
図4に基づいて、ホストOS220の構成を説明する。
ホストOS220は、VMタスク221とVM管理部222とスケジューラ223とスケジュールテーブル224と安全監視タスク225と制御割り込み受付部226と安全制御部227と監視部228と第1監視テーブル2291とを備える。
VMタスク221は、仮想マシン214を実行するためのタスクである。
VM管理部222は、仮想マシンモニタの役割を果たして、仮想マシン214の管理を行う。具体的には、VM管理部222は、仮想マシン214に対するハードウェア資源の割り当て、特権モードの切り替え、仮想マシン214のコンテキストの保存および復元などを行う。
スケジューラ223は、スケジュールテーブル224を用いて、プロセッサ201の実行時間に対するパーティショニング、および、ホストOS220上で動作するタスクのスケジューリングを行う。例えば、スケジューリングは実行時間の割り当てである。
スケジュールテーブル224は、タイムパーティションおよびタスクのスケジュールを示すテーブルである。
安全監視タスク225は、安全監視を実行するためのタスクである。安全監視は、障害の発生有無を監視する処理である。例えば、安全監視は、故障診断と呼ばれる処理および異常監視と呼ばれる処理である。
制御割り込み受付部226は、制御割り込みを受け付ける。制御割り込みは、優先制御の契機となる割り込みである。優先制御については後述する。
安全制御部227は、安全制御を行う。安全制御は、障害が発生したときのための処理である。例えば、安全制御は、フェイルセーフ処理またはフェイルオペレーション処理である。
監視部228は、第1監視テーブル2291に設定された監視規則に応じて監視を行う。
第1監視テーブル2291は、タイムパーティション毎の監視規則が設定されたテーブルである。
図5に基づいて、ゲストOS230の構成を説明する。
ゲストOS230は、スケジューラ231と優先制御ルーチン232と一般制御タスク233とを備える。
スケジューラ231は、ゲストOS230上で動作するタスクのスケジューリングを行う。
優先制御ルーチン232は、優先制御用のルーチンである。優先制御は、制御割り込みが発生したときの制御である。優先制御は、一般制御および安全監視に比べて優先度が高く、一般制御および安全制御よりも優先して実行される。具体的には、優先制御ルーチン232はISR(Interrupt Service Routine)として実装される。ゲストOS230がAUTOSAR OSである場合、優先制御ルーチン232は、Category 1 ISRとして実装することができる。
一般制御タスク233は、一般制御を実行するためのタスクである。一般制御は、優先制御以外の制御である。
図6に基づいて、スケジューラ223によるパーティショニングを説明する。
予め定められた一定の時間を1周期という。
1周期は、複数のタイムパーティション(TP)に分割される。タイムパーティションは、1周期の中の一定の時間である。図6では、1周期は3つのタイムパーティションに分割されている。
それぞれのタイムパーティションには、1つ以上のタスクが割り当てられる。
スケジューラ223は、1周期毎に複数のタイムパーティションを管理し、タイムパーディション毎にタスクを管理する。タイムパーティションに複数のタスクが割り当てられた場合、スケジューラ223は、複数のタスクのそれぞれの優先度に基づいて、複数のタスクに対するスケジューリングする。
図7に基づいて、スケジュールテーブル224に設定される内容の具体例を説明する。
スケジュールテーブル224には、1周期に含まれる複数のタイムパーティションとして、第1タイムパーティションと第2タイムパーティションとが設定されている。
第1タイムパーティション(TP1)は、VMタスク221が割り当てられたタイムパーティションである。第1タイムパーティションの長さはT1である。
VMタスクは、仮想マシン214を実行するタスクである。
第2タイムパーティション(TP2)は、安全監視タスク225が割り当てられたタイムパーティションである。第2タイムパーティションの長さはT2である。
図8に基づいて、第1監視テーブル2291の構成を説明する。
第1監視テーブル2291は、割り込み番号と第1監視規則と第2監視規則と第1監視履歴と第2監視履歴とのそれぞれの欄を有する。
割り込み番号の欄は、割り込みを識別する番号である割り込み番号を示す。
割り込み番号Nは、制御割り込みを識別する番号である。
第1監視規則の欄は、第1タイムパーティションにおける監視規則である第1監視規則を示す。
第1タイムパーティションで制御割り込みが発生した場合、監視部228は第1監視を行う。第1監視は第1監視規則に応じた監視である。
具体的には、第1監視規則は、第1タイムパーティションでの優先制御の実行時間を制限する規則である。監視部228は、第1監視として、第1タイムパーティションでの優先制御の実行時間を監視する。
第1タイムパーティションで第1監視規則に対する違反が発生した場合、安全制御部227は安全制御を行う。
第2監視規則の欄は、第2タイムパーティションにおける監視規則である第2監視規則を示す。
第2タイムパーティションで制御割り込みが発生した場合、監視部228は第2監視を行う。第2監視は第2監視規則に応じた監視である。
具体的には、第2監視規則は、第2タイムパーティションでの優先制御の実行回数と実行時間とを制限する規則である。監視部228は、第2監視として、第2タイムパーティションでの優先制御の実行回数と実行時間とを監視する。
第2タイムパーティションで第2監視規則に対する違反が発生した場合、安全制御部227は安全制御を行う。
第1監視規則の欄および第2監視規則の欄は、それぞれ実行回数の欄と実行時間の欄とを備える。
実行回数の欄は、優先制御が実行される回数の上限を示す。実行回数の欄におけるNULLは、実行回数の監視が不要であることを意味する。
実行時間の欄は、優先制御が実行される時間の上限を示す。
第1監視履歴の欄は、第1タイムパーティションでの優先制御の実行回数を示す。
第2監視履歴の欄は、第2タイムパーティションでの優先制御の実行回数を示す。
***動作の説明***
制御装置100の動作は制御方法に相当する。また、制御方法の手順は制御プログラムの手順に相当する。
図9に基づいて、TP切り替え処理を説明する。
TP切り替え処理は、タイムパーティションを切り替えるための処理である。
TP切り替え処理は、スケジューラ223によって、ホストOS220のティック割り込み毎に実行される。
ステップS111において、スケジューラ223は、現在時刻がTP切り替え時刻であるか判定する。TP切り替え時刻は、タイムパーティションを切り替える時刻である。
具体的には、スケジューラ223は、スケジュールテーブル224に設定されている現在のタイムパーティションの割り当て時間を参照し、現在のタイムパーティションの実行時間が現在のタイムパーティションの割り当て時間を超過したか判定する。現在のタイムパーティションの実行時間が現在のタイムパーティションの割り当て時間を超過した場合、現在時刻がTP切り替え時刻である。
現在時刻がTP切り替え時刻である場合、処理はステップS112に進む。
現在時刻がTP切り替え時刻でない場合、処理はステップS119に進む。
ステップS112において、スケジューラ223は、実行中タスクが有るか判定する。実行中タスクは、現在実行されているタスクである。
実行中タスクが有る場合、処理はステップS113に進む。
実行中タスクが無い場合、処理はステップS116に進む。
ステップS113において、スケジューラ223は、VMタスク221の実行中であるか判定する。つまり、スケジューラ223は、実行中タスクがVMタスク221であるか判定する。
VMタスク221の実行中である場合、処理はステップS114に進む。
VMタスク221の実行中でない場合、処理はステップS116に進む。
ステップS114において、スケジューラ223は、VMコンテキストを保存する。
VMコンテキストは、仮想マシン214のコンテキストである。
ステップS115において、スケジューラ223は、VMタスク221の再開アドレスを設定する。
VMタスク221の再開アドレスは、VMタスク221が再開されるときの実行アドレスである。
実行アドレスは、実行される命令が記憶された領域のアドレスである。
具体的には、スケジューラ223は、VMタスク221のTCB(Task Control Block)の中のプログラムカウンタを、VMコンテキストを復元して仮想マシン214を起動する処理の直前の実行アドレス(図12のステップS401の直前の実行アドレス)に書き換える。
ステップS116において、スケジューラ223は、実行中コンテキストを保存する。実行中コンテキストは、実行中タスクのコンテキストである。
ステップS117において、スケジューラ223は、現在監視履歴をリセットする。現在監視履歴は、現在のタイムパーティションの監視履歴である。
具体的には、スケジューラ223は、第1監視テーブル2291から現在のタイムパーティションの監視履歴を選択し、選択された監視履歴に設定されている実行回数を0に更新する。
ステップS118において、スケジューラ223は、スケジュールテーブル224を参照して次のタイムパーティションを決定し、次のタイムパーティションを開始する。
ステップS119において、スケジューラ223は、次のタイムパーティションにおいてタスクスケジューリングを行う。
具体的には、スケジューラ223は、スケジュールテーブル224に設定されている次のタイムパーティションのタスクスケジュールを参照し、参照したタスクスケジュールに従ってタスクスケジューリングを行う。
図10に基づいて、制御割り込み処理を説明する。
制御割り込み処理は、制御割り込みが発生した場合の処理である。
制御割り込み処理は、制御割り込み受付部226が制御割り込みを受け付けたときに実行される。
ステップS201において、制御割り込み受付部226は、割り込み時コンテキストを保存する。割り込み時コンテキストは、割り込み時タスクのコンテキストである。割り込み時タスクは、制御割り込みが発生したときに実行されていたタスクである。
ステップS202において、制御割り込み受付部226は監視部228を呼び出し、監視部228は現在監視履歴を更新する。
具体的には、監視部228は、第1監視テーブル2291から現在のタイムパーティションの監視履歴を選択し、選択された監視履歴に設定されている実行回数に1を加える。
ステップS203において、監視部228は、実行回数の規則違反が発生したか判定する。
具体的には、監視部228は以下のように判定を行う。
まず、監視部228は、第1監視テーブル2291から、現在のタイムパーティションの監視規則に設定されている実行回数と、現在のタイムパーティションの監視履歴に設定されている実行回数とを取得する。
次に、監視部228は、監視履歴の実行回数を監視規則の実行回数と比較する。但し、監視規則の実行回数がNULLである場合、監視部228は、監視履歴の実行回数を監視規則の実行回数と比較しない。
監視履歴の実行回数が監視規則の実行回数より多い場合、監視部228は、実行回数の規則違反が発生したと判定する。
監視履歴の実行回数が監視規則の実行回数以下である場合、監視部228は、実行回数の規則違反が発生していないと判定する。また、監視規則の実行回数がNULLである場合、監視部228は、実行回数の規則違反が発生していないと判定する。
実行回数の規則違反が発生した場合、処理はステップS210に進む。
実行回数の規則違反が発生していない場合、処理はステップS204に進む。
ステップS204において、監視部228は制御監視タイマを起動する。制御監視タイマは、優先制御の実行時間を監視するためのタイマである。
具体的には、監視部228は、第1監視テーブル2291から現在のタイムパーティションの監視規則に設定されている実行時間を取得し、取得された実行時間をタイマに設定し、タイマを起動する。起動されるタイマが制御監視タイマである。
ステップS205において、制御割り込み受付部226は、プロセッサ201の特権モードをホストモードからゲストモードに遷移する。
ステップS206において、仮想マシン214は、ゲストモードで、優先制御ルーチン232の先頭から優先制御ルーチン232を実行する。
ステップS207において、仮想マシン214は、プロセッサ201の特権モードをゲストモードからホストモードに遷移する。
具体的には、仮想マシン214は、優先制御ルーチン232に含まれる遷移命令を実行することによって、プロセッサ201の特権モードをゲストモードからホストモードに遷移する。
ステップS208において、監視部228は制御監視タイマを停止する。
ステップS209において、制御割り込み受付部226は、割り込み時コンテキストを復元する。
ステップS209の後、制御割り込みが発生したときに実行されていたタスクが再開される。
ステップS210において、制御割り込み受付部226は安全制御部227を呼び出し、安全制御部227は安全制御を実行する。
図11に基づいて、第1満了割り込み処理を説明する。
第1満了割り込み処理は、第1満了割り込みが発生した場合の処理である。第1満了割り込みは、ステップS204(図10参照)で起動された制御監視タイマが満了したときに発生する割り込みである。制御監視タイマの満了は、制御監視タイマに設定された時間の経過を意味する。
第1満了割り込み処理は、監視部228が第1満了割り込みを受け付けたときに実行される。
ステップS301において、監視部228は、第1満了割り込みルーチンの実行を開始する。第1満了割り込みルーチンは監視部228の一部として実装される。
ステップS310において、監視部228は安全制御部227を呼び出し、安全制御部227は安全制御を実行する。具体的には、監視部228は、第1満了割り込みルーチンに含まれる呼び出し命令を実行することによって、安全制御部227を呼び出す。
図12に基づいて、VMタスク処理を説明する。
VMタスク処理は、VMタスク221によって実行される処理である。
ステップS401において、VMタスク221はVMコンテキストを復元する。
ステップS402において、VMタスク221は仮想マシン214を起動する。具体的には、VMタスク221は、遷移命令によって、プロセッサ201の特権モードをホストモードからゲストモードに遷移する。これにより、仮想マシン214が起動される。
仮想マシン214の実行中にVMタスク221がスケジューラ223によって中断されると、スケジューラ223はVMタスク221の再開アドレスを設定する。
つまり、VMタスク221の中断時に仮想マシン214の実行も中断され、VMタスク221の再開時に仮想マシン214の実行も再開される。
図13に基づいて、安全監視タスク処理を説明する。
安全監視タスク処理は、安全監視タスク225によって実行される処理である。
ステップS501において、安全監視タスク225は安全監視を実行する。
ステップS502において、安全監視タスク225は、安全監視の結果に基づいて、障害の発生の有無を判定する。
障害が発生した場合、処理はステップS510に進む。
障害が発生していない場合、処理はステップS501に進む。
ステップS510において、安全監視タスク225は安全制御部227を呼び出し、安全制御部227は安全制御を実行する。
***実施の形態1の補足***
優先制御は制御処理ともいい、一般制御は非制御処理ともいう。
安全監視は安全監視処理ともいい、安全制御は安全制御処理ともいう。
制御処理用のアプリケーション、非制御処理用のアプリケーション、安全監視処理用のアプリケーションおよび安全制御処理用のアプリケーションは、補助記憶装置203に記憶され、メモリ202に読み込まれ、プロセッサ201によって実行される。補助記憶装置203に記憶されたアプリケーションを、プロセッサ201が直接実行してもよい。
制御処理用のアプリケーションは制御処理の実行イメージである。非制御処理用のアプリケーションは非制御処理の実行イメージである。安全監視処理用のアプリケーションは安全監視処理の実行イメージである。安全制御処理用のアプリケーションは安全制御処理の実行イメージである。
各要素の優先度は以下のように設定されている。
監視部228の一部である満了割り込みルーチンの優先度は、制御割り込み受付部226の優先度よりも高い。
制御割り込み受付部226の優先度は、優先制御ルーチン232の優先度と同じである。
優先制御ルーチン232の優先度は、スケジューラ223の優先度よりも高い。
スケジューラ223の優先度は、安全監視タスク225の優先度よりも高い。
一般制御タスク233の優先度は、スケジューラ223の優先度よりも低い。
制御割り込みは、OSの管理外の割り込みである。
マイクロコントローラ200は、ホストOS220とゲストOS230といったソフトウェア要素を備える。ソフトウェア要素はソフトウェアで実現される要素である。
補助記憶装置203には、ホストOS220とゲストOS230としてコンピュータを機能させるための制御プログラムが記憶されている。制御プログラムは、メモリ202にロードされて、プロセッサ201によって実行される。補助記憶装置203に記憶された制御プログラムを、プロセッサ201が直接実行してもよい。
マイクロコントローラ200は、プロセッサ201を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ201の役割を分担する。
制御プログラムは、磁気ディスク、光ディスクまたはフラッシュメモリ等の不揮発性の記憶媒体にコンピュータ読み取り可能に記憶することができる。不揮発性の記憶媒体は、一時的でない有形の媒体である。
***実施の形態1の効果***
実施の形態1により、不要な異常検知およびCPUオーバヘッドを抑制しながら、安全監視処理のCPU時間の保証と制御処理の遅延の抑制とを実現することが可能となる。
実施の形態1では、タイムパーティションの切り替えに応じて制御割り込みの監視規則が切り替わる。これにより、特許文献2および特許文献3の課題を解決することが可能となる。つまり、安全監視処理のCPU時間が保証されていて装置に問題がないにもかかわらず、安全監視処理以外の処理のタイムパーティションで違反が検知された結果、装置に異常が発生したと判定されてしまう、という課題を解決することが可能となる。
また、優先制御ルーチン232および制御割り込み受付部226がOS管理外割り込みであるため、ゲストOSおよびホストOSの割り込み禁止中でも割り込みを受け付けることができる。そのため、優先制御の遅延を抑制することができる。
また、優先制御ルーチン232および一般制御タスク233が仮想マシン214によって実行される。そのため、優先制御ルーチン232および一般制御タスク233を、安全監視タスク225および安全制御部227に対して、空間的および時間的に独立させることができる。これにより、安全監視処理のCPU時間を保証することが可能となる。また、優先制御ルーチン232および一般制御タスク233を、安全監視タスク225および安全制御部227に要求される安全度水準よりも低い安全度水準で、開発することができる。
実施の形態2.
第1タイムパーティションでの優先制御の実行時間を監視する代わりに第1タイムパーティションの実行時間を監視する形態について、主に実施の形態1と異なる点を図14から図20に基づいて説明する。
***構成の説明***
図14に基づいて、ホストOS220の構成を説明する。
ホストOS220は、実施の形態1(図4参照)で説明した要素の他に、第2監視テーブル2292を備える。
第2監視テーブル2292は、タイムパーティション毎の監視規則が設定されたテーブルである。
図15に基づいて、第2監視テーブル2292の構成を説明する。
第2監視テーブル2292は、TP番号と監視フラグと監視規則と満了予定時刻とのそれぞれの欄を有する。
TP番号の欄は、タイムパーティションを識別する番号であるTP番号を示す。
監視フラグの欄は、安全監視の要否を示すフラグである監視フラグの値を示す。
監視フラグの値がONである場合、安全監視が必要である。
監視フラグの値がOFFである場合、安全監視が不要である。
監視規則の欄は、タイムパーティション毎の監視規則を示す。具体的には、監視規則の欄は、タイムパーティション毎にタイムパーティションの実行時間の上限を示す。
TP1に対応付けられた監視規則が第1監視規則である。
第1監視規則は、第1タイムパーティションの実行時間を制限する規則である。
第1タイムパーティションの実行時間は、第1タイムパーティションでの一般制御の実行時間と第1タイムパーティションでの優先制御の実行時間とを合計して得られる時間である。
TP2に対応付けられた監視規則が第2監視規則である。
第2監視規則がNULLであるため、第2タイムパーティションの実行時間に対する監視規則は無い。
満了予定時刻の欄は、タイムパーティションの満了予定時刻を示す。
満了予定時刻は、タイムパーティションの開始時刻からタイムパーティションの割り当て時間(一般制御の実行時間)が経過したときの時刻である。
監視フラグの値がOFFである場合、満了予定時刻はゼロである。
図16に基づいて、第1監視テーブル2291の設定を説明する。
第1監視規則において実行回数および実行時間がNULLである。そのため、第1タイムパーティションでの優先制御に監視規則は無い。
図15の第2監視テーブル2292に基づいて、監視部228は、第1監視として、第1タイムパーティションの実行時間を監視する。
図16の第1監視テーブル2291に基づいて、監視部228は、第2監視として、第2タイムパーティションでの優先制御の実行回数と実行時間とを監視する。
***動作の説明***
図17、図18および図19に基づいて、TP切り替え処理を説明する。
図17において、ステップS111からステップS117までの処理は、実施の形態1(図9参照)で説明した通りである。
ステップS117の後、処理はステップS120(図18参照)に進む。
ステップS120(図18参照)において、スケジューラ223は、現在のタイムパーティションがTP監視対象であるか判定する。TP監視対象は、タイムパーティションの実行時間を監視する対象となるタイムパーティションである。
具体的には、スケジューラ223は、第2監視テーブル2292から現在のタイムパーティションの監視フラグを選択し、選択された監視フラグの値がONであるか判定する。
現在のタイムパーティションがTP監視対象である場合、処理はステップS121に進む。
現在のタイムパーティションがTP監視対象でない場合、処理はステップS126に進む。
ステップS121において、現在のタイムパーティション用のTP監視タイマが動作している。TP監視タイマは、タイムパーティションの実行時間を監視するためのタイマである。
スケジューラ223は、現在のタイムパーティションのTP監視タイマを停止する。
ステップS122において、制御割り込みが仮想マシン214に対して割り当てられている。
スケジューラ223はVM管理部222を呼び出し、VM管理部222は制御割り込みをホストOS220に割り当てる。制御割り込みがホストOS220に割り当てられた後、制御割り込みはホストOS220で受け付けられる。
ステップS123において、スケジューラ223は監視部228を呼び出し、監視部228は満了予定時刻を過ぎたか判定する。
つまり、監視部228は、第1タイムパーティションの割り当て時間(一般制御の実行時間)が経過したか判定する。
具体的には、監視部228は以下のように判定を行う。
まず、監視部228は、第2監視テーブル2292から、現在のタイムパーティションの満了予定時刻を取得する。
そして、監視部228は、現在時刻を現在のタイムパーティションの満了予定時刻と比較する。
満了予定時刻を過ぎていた場合、処理はステップS124に進む。
満了予定時刻を過ぎていない場合、処理はステップS126に進む。
ステップS124において、スケジューラ223は、次のタイムパーティションが制御監視対象であるか判定する。制御監視対象は、タイムパーティションでの優先制御を監視する対象となるタイムパーティションである。
具体的には、スケジューラ223は以下のように判定を行う。
まず、スケジューラ223は、スケジュールテーブル224を参照することによって、次のタイムパーティションを特定する。
次に、スケジューラ223は、第1監視テーブル2291から、次のタイムパーティションの監視規則を選択する。
そして、スケジューラ223は、選択された監視規則において実行回数と実行時間との少なくともいずれかがNULL以外の値であるか判定する。
実行回数と実行時間との少なくともいずれかがNULL以外の値である場合、次のタイムパーティションが制御監視対象である。
次のタイムパーティションが制御監視対象である場合、処理はステップS125に進む。
次のタイムパーティションが制御監視対象でない場合、処理はステップS126に進む。
ステップS125において、スケジューラ223は監視部228を呼び出し、監視部228は次監視履歴を更新する。次監視履歴は、次のタイムパーティションの監視履歴である。
具体的には、監視部228は、第1監視テーブル2291から次のタイムパーティションの監視履歴を選択し、選択された監視履歴に設定されている実行回数に1を加える。
ステップS126において、スケジューラ223は、次のタイムパーティションがTP監視対象であるか判定する。
具体的には、スケジューラ223は、第2監視テーブル2292から次のタイムパーティションの監視フラグを選択し、選択された監視フラグの値がONであるか判定する。
次のタイムパーティションがTP監視対象である場合、処理はステップS127に進む。
次のタイムパーティションがTP監視対象でない場合、処理はステップS118(図19参照)に進む。
ステップS127において、スケジューラ223はVM管理部222を呼び出し、VM管理部222は制御割り込みを仮想マシン214に割り当てる。制御割り込みが仮想マシン214に割り当てられた後、制御割り込みは仮想マシン214で受け付けられる。
ステップS128において、スケジューラ223は、次のタイムパーティション用のTP監視タイマを起動する。
具体的には、スケジューラ223は、第2監視テーブル2292から、次のタイムパーティションの監視規則に設定されている実行時間を取得し、取得された実行時間をタイマに設定し、タイマを起動する。起動されるタイマが次のタイムパーティション用のTP監視タイマである。
ステップS129において、スケジューラ223は監視部228を呼び出し、監視部228は次満了予定時刻を設定する。次満了予定時刻は、次のタイムパーティションの満了予定時刻である。
具体的には、監視部228は次のタイムパーティションの満了予定時刻を以下のように設定する。
まず、監視部228は、現在時刻から次のタイムパーティションの割り当て時間が経過したときの時刻を算出する。算出される時刻が満了予定時刻である。
次に、監視部228は、満了予定時刻に対応するタイマカウント値を算出する。
次に、監視部228は、第2監視テーブル2292から、次のタイムパーティションの満了予定時刻の欄を選択する。
そして、監視部228は、選択された満了予定時刻の欄にタイマカウント値を設定する。
ステップS129の後、処理はステップS118(図19参照)に進む。
図19において、ステップS118およびステップS119は、実施の形態1(図9参照)で説明した通りである。
図20に基づいて、第2満了割り込み処理を説明する。
第2満了割り込み処理は、第2満了割り込みが発生した場合の処理である。第2満了割り込みは、ステップS128(図18参照)で起動されたTP監視タイマが満了したときに発生する割り込みである。TP監視タイマの満了は、TP監視タイマに設定された時間の経過を意味する。つまり、第2満了割り込みは、第1タイムパーティションで第1監視規則に対する違反が発生した場合に発生する。
第2満了割り込み処理は、監視部228が第2満了割り込みを受け付けたときに実行される。
ステップS601において、監視部228は、第2満了割り込みルーチンの実行を開始する。第2満了割り込みルーチンは監視部228の一部として実装される。
ステップS610において、監視部228は安全制御部227を呼び出し、安全制御部227は安全制御を実行する。具体的には、監視部228は、第2満了割り込みルーチンに含まれる呼び出し命令を実行することによって、安全制御部227を呼び出す。
***実施の形態2の補足***
第1タイムパーティションでの制御割り込みは、ゲストモード212で受け付けられる割り込みである。
第2タイムパーティションでの制御割り込みは、ホストモード211で受け付けられる割り込みである。
監視部228は、第1タイムパーティションでタイムパーティションの満了予定時刻を過ぎていて、且つ、第1タイムパーティションで第2監視テーブル2292に定義された第1監視規則に対する違反が発生していない場合、第2タイムパーティションでの優先制御の実行回数に1を加える。
監視部228は、第1タイムパーティションでタイムパーティションの満了予定時刻を過ぎていて、且つ、第1タイムパーティションで第2監視テーブル2292に定義された第1監視規則に対する違反が発生した場合、安全制御部227を呼び出す。
***実施の形態2の効果***
実施の形態2では、制御割り込みの実行回数および制御割り込みの実行時間の監視の代わりに、タイムパーティションの実行時間の監視が行われる。これにより、安全監視タスク225の実行時間が保証される。また、仮想マシン214の実行中に制御割り込みが発生した場合に監視部228による制御割り込みの監視を有効化するためにホストモードに遷移する必要がなくなる。これにより、仮想マシン214の実行中は制御割り込みを仮想マシン214で直接受け付けることも可能になる。そのため、優先制御ルーチン232の実行オーバヘッドを抑制することが可能となる。よって、コンテキストの切り替えに伴うCPU負荷の増大を抑制することが可能となる。
実施の形態2では、制御割り込みによってVMタスク221用のタイムパーティションの実行時間が延長した場合に、安全監視タスク225用のタイムパーティションにおける制御割り込みの実行回数がインクリメントされる。つまり、VMタスク221の終了間際に発生した制御割り込みによってVMタスク221用のタイムパーティションが延長してしまい、安全監視タスク225用のタイムパーティションの実行時間が少なくなってしまった場合、安全監視タスク225用のタイムパーティションで制御割り込みが発生したものとして実行回数がカウントされる。これにより、安全監視タスク225用のタイムパーティションにおいて安全監視タスク225の実行時間を確保することができる。
実施の形態3.
第1タイムパーティションから第2タイムパーティションへの切り換わり時刻よりも一定時間前に制御割り込みの受け付け先をゲストモード212からホストモード211に切り替える形態について、主に実施の形態1および実施の形態2と異なる点を図21から図25に基づいて説明する。
図21に基づいて、第2監視テーブル2292の構成を説明する。
第2監視テーブル2292は、実施の形態2(図15参照)で説明した満了予定時刻の欄の代わりに、切り替え時間と割り込み番号と切り替え先とのそれぞれの欄を有する。
切り替え時間の欄は、切り替え時間を示す。切り替え時間は、割り込みの受け付け先を切り替える時刻を特定する時間である。具体的には、切り替え時間の欄は、切り替え時のタイムパーティションの実行時間を示す。
割り込み番号の欄は、割り込みを識別する番号である割り込み番号を示す。割り込み番号Nは、制御割り込みの割り込み番号である。
切り替え先の欄は、切り替え先を示す。切り替え先は、切り替え後の制御割り込みの受け付け先である。
図22に基づいて、第1監視テーブル2291の設定を説明する。
第1監視テーブル2291の設定は、実施の形態2(図16参照)における設定と同じである。
***動作の説明***
図23、図24および図25に基づいて、TP切り替え処理を説明する。
図23において、ステップS111からステップS117までの処理は、実施の形態1(図9参照)で説明した通りである。
ステップS111で現在時刻がTP切り替え時刻でないと判定された場合、処理はステップS131(図25参照)に進む。
ステップS117の後、処理はステップS120(図24参照)に進む。
図24において、ステップS120からステップS122までの処理およびステップS126からステップS128までの処理は、実施の形態2(図18参照)で説明した通りである。
また、ステップS118およびステップS119は、実施の形態1(図9参照)で説明した通りである。
ステップS131(図25参照)において、スケジューラ223は、現在のタイムパーティションがTP監視対象であるか判定する。判定方法は、実施の形態2においてステップS120(図18参照)で説明した方法と同じである。
現在のタイムパーティションがTP監視対象である場合、処理はステップS132に進む。
現在のタイムパーティションがTP監視対象でない場合、処理はステップS119(図24参照)に進む。
ステップS132において、スケジューラ223は、現在時刻が割り込み切り替え時刻であるか判定する。割り込み切り替え時刻は、制御割り込みの割り込み先を切り替える時刻である。
具体的には、スケジューラ223は、第2監視テーブル2292から現在のタイムパーティションの切り替え時間を取得し、現在のタイムパーティションの実行時間が現在のタイムパーティションの切り替え時間を超過したか判定する。現在のタイムパーティションの実行時間が現在のタイムパーティションの切り替え時間を超過した場合、現在時刻が割り込み切り替え時刻である。
現在時刻が割り込み切り替え時刻である場合、処理はステップS133に進む。
現在時刻が割り込み切り替え時刻でない場合、処理はステップS119(図24参照)に進む。
ステップS133において、スケジューラ223は、次のタイムパーティションが制御監視対象であるか判定する。判定方法は、実施の形態2においてステップS124(図18参照)で説明した方法と同じである。
次のタイムパーティションが制御監視対象である場合、処理はステップS134に進む。
次のタイムパーティションが制御監視対象でない場合、処理はステップS119(図24参照)に進む。
ステップS134において、スケジューラ223はVM管理部222を呼び出し、VM管理部222は制御割り込みをホストOSに割り当てる。
***実施の形態3の補足***
第1タイムパーティションの終了前の一定時間を除いて第1タイムパーティションでの制御割り込みは、ゲストモード212で受け付けられる割り込みである。
第1タイムパーティションの一定時間での制御割り込みは、ホストモード211で受け付けられる割り込みである。
第2タイムパーティションでの制御割り込みは、ホストモード211で受け付けられる割り込みである。
***実施の形態3の効果***
実施の形態3では、タイムパーティションの終了時刻より制御割り込みの最悪実行時間の分だけ前倒しして、制御割り込みの割り付け先が仮想マシン214からホストOS220に変更される。これにより、VMタスク221用のタイムパーティションの終了間際に発生した制御割り込みによってVMタスク221用のタイムパーティションが延長し、安全監視タスク225用のタイムパーティションの実行時間が少なくなってしまった場合、安全監視タスク225用のタイムパーティションで制御割り込みが発生したものとして実行回数がカウントされる。その結果、安全監視タスク225用のタイムパーティションにおいて、安全監視タスク225の実行時間を確保することができる。
***実施の形態の補足***
実施の形態において、制御装置100の機能はハードウェアで実現してもよい。
図26に、制御装置100の機能がハードウェアで実現される場合の構成を示す。
制御装置100は処理回路990を備える。処理回路990はプロセッシングサーキットリともいう。
処理回路990は、プロセッサ201とメモリ202と補助記憶装置203とを実現する専用の電子回路である。
例えば、処理回路990は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、FPGAまたはこれらの組み合わせである。GAはGate Arrayの略称であり、ASICはApplication Specific Integrated Circuitの略称であり、FPGAはField Programmable Gate Arrayの略称である。
制御装置100は、処理回路990を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路990の役割を分担する。
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
100 制御装置、110 周辺回路、200 マイクロコントローラ、201 プロセッサ、202 メモリ、203 補助記憶装置、204 入出力インタフェース、205 通信コントローラ、206 割り込みコントローラ、207 タイマ、211 ホストモード、212 ゲストモード、214 仮想マシン、220 ホストOS、221 VMタスク、222 VM管理部、223 スケジューラ、224 スケジュールテーブル、225 安全監視タスク、226 制御割り込み受付部、227 安全制御部、228 監視部、2291 第1監視テーブル、2292 第2監視テーブル、230 ゲストOS、231 スケジューラ、232 優先制御ルーチン、233 一般制御タスク、990 処理回路。

Claims (11)

  1. 1周期に含まれる複数のタイムパーティションの中の1つのタイムパーティションであって一般制御を実行するためのタイムパーティションである第1タイムパーティションで優先制御の契機となる制御割り込みが発生した場合に、第1監視規則に応じた監視である第1監視を行い、前記複数のタイムパーティションの中の1つのタイムパーティションであって障害の発生有無を監視する安全監視を実行するためのタイムパーティションである第2タイムパーティションで制御割り込みが発生した場合に、第2監視規則に応じた監視である第2監視を行う監視部と、
    前記第1タイムパーティションで前記第1監視規則に対する違反が発生した場合と、前記第2タイムパーティションで前記第2監視規則に対する違反が発生した場合とのそれぞれで、障害が発生したときのための安全制御を行う安全制御部と
    を備える制御装置。
  2. 前記一般制御および前記優先制御はゲストモードで実行される処理であり、
    前記安全監視および前記安全制御はホストモードで実行される処理である
    請求項に記載の制御装置。
  3. 前記第1監視規則は、前記第1タイムパーティションでの前記優先制御の実行時間を制限する規則であり、
    前記監視部は、前記第1監視として、前記第1タイムパーティションでの前記優先制御の実行時間を監視し、
    前記第2監視規則は、前記第2タイムパーティションでの前記優先制御の実行回数と実行時間とを制限する規則であり、
    前記監視部は、前記第2監視として、前記第2タイムパーティションでの前記優先制御の実行回数と実行時間とを監視する
    請求項1または請求項2に記載の制御装置。
  4. 前記制御割り込みは、オペレーティングシステムの管理外の割り込みであり、
    前記管理外の割り込みは、オペレーティングシステムの割り込み禁止中にも受け付け可能な割り込みである
    請求項1から請求項のいずれか1項に記載の制御装置。
  5. 前記第1監視規則は、前記第1タイムパーティションでの前記一般制御の実行時間と前記第1タイムパーティションでの前記優先制御の実行時間とを合計して得られる前記第1タイムパーティションの実行時間を制限する規則であり、
    前記監視部は、前記第1監視として、前記第1タイムパーティションの実行時間を監視し、
    前記第2監視規則は、前記第2タイムパーティションでの前記優先制御の実行回数と前記優先制御の実行時間とを制限する規則であり、
    前記監視部は、前記第2監視として、前記第2タイムパーティションでの前記優先制御の実行回数と実行時間とを監視する
    請求項1または請求項2に記載の制御装置。
  6. 前記第1タイムパーティションでの前記制御割り込みは、ホストモードを介さずゲストモードで直接受け付けられる割り込みであり、
    前記第2タイムパーティションでの前記制御割り込みは、ホストモードで受け付けられる割り込みである
    請求項に記載の制御装置。
  7. 前記監視部は、前記第1タイムパーティションで前記第1タイムパーティションの実行時間が経過した場合、前記第2タイムパーティションでの前記優先制御の実行回数に1を加える
    請求項または請求項に記載の制御装置。
  8. 前記第1タイムパーティションの終了前の一定時間を除いて前記第1タイムパーティションでの前記制御割り込みは、ゲストモードで受け付けられる割り込みであり、
    前記第1タイムパーティションの前記一定時間での前記制御割り込みは、ホストモードで受け付けられる割り込みであり、
    前記第2タイムパーティションでの前記制御割り込みは、ホストモードで受け付けられる割り込みである
    請求項に記載の制御装置。
  9. 1周期に含まれる複数のタイムパーティションの中の1つのタイムパーティションであって一般制御を実行するためのタイムパーティションである第1タイムパーティションで優先制御の契機となる制御割り込みが発生した場合に、第1監視規則に応じた監視である第1監視を行い、前記複数のタイムパーティションの中の1つのタイムパーティションであって障害の発生有無を監視する安全監視を実行するためのタイムパーティションである第2タイムパーティションで制御割り込みが発生した場合に、第2監視規則に応じた監視である第2監視を行う監視処理と、
    前記第1タイムパーティションで前記第1監視規則に対する違反が発生した場合と、前記第2タイムパーティションで前記第2監視規則に対する違反が発生した場合とのそれぞれで、障害が発生したときのための安全制御を行う安全制御処理と
    をコンピュータに実行させるための制御プログラム。
  10. 1周期に含まれる複数のタイムパーティションの中の1つのタイムパーティションであって一般制御を実行するためのタイムパーティションである第1タイムパーティションで優先制御の契機となる制御割り込みが発生した場合に、第1監視規則に応じた監視である第1監視を行い、前記複数のタイムパーティションの中の1つのタイムパーティションであって障害の発生有無を監視する安全監視を実行するためのタイムパーティションである第2タイムパーティションで制御割り込みが発生した場合に、第2監視規則に応じた監視である第2監視を行う監視部を備える制御装置であって、
    前記第1監視規則は、前記第1タイムパーティションでの前記一般制御の実行時間と前記第1タイムパーティションでの前記優先制御の実行時間とを合計して得られる前記第1タイムパーティションの実行時間を制限する規則であり、
    前記監視部は、前記第1監視として、前記第1タイムパーティションの実行時間を監視し、
    前記第2監視規則は、前記第2タイムパーティションでの前記優先制御の実行回数と前記優先制御の実行時間とを制限する規則であり、
    前記監視部は、前記第2監視として、前記第2タイムパーティションでの前記優先制御の実行回数と実行時間とを監視する
    制御装置。
  11. 1周期に含まれる複数のタイムパーティションの中の1つのタイムパーティションであって一般制御を実行するためのタイムパーティションである第1タイムパーティションで優先制御の契機となる制御割り込みが発生した場合に、第1監視規則に応じた監視である第1監視を行い、前記複数のタイムパーティションの中の1つのタイムパーティションであって障害の発生有無を監視する安全監視を実行するためのタイムパーティションである第2タイムパーティションで制御割り込みが発生した場合に、第2監視規則に応じた監視である第2監視を行う監視処理
    をコンピュータに実行させるための制御プログラムであって、
    前記第1監視規則は、前記第1タイムパーティションでの前記一般制御の実行時間と前記第1タイムパーティションでの前記優先制御の実行時間とを合計して得られる前記第1タイムパーティションの実行時間を制限する規則であり、
    前記監視処理は、前記第1監視として、前記第1タイムパーティションの実行時間を監視し、
    前記第2監視規則は、前記第2タイムパーティションでの前記優先制御の実行回数と前記優先制御の実行時間とを制限する規則であり、
    前記監視処理は、前記第2監視として、前記第2タイムパーティションでの前記優先制御の実行回数と実行時間とを監視する
    制御プログラム。
JP2017547594A 2017-03-21 2017-03-21 制御装置および制御プログラム Active JP6242557B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/011245 WO2018173123A1 (ja) 2017-03-21 2017-03-21 制御装置および制御プログラム

Publications (2)

Publication Number Publication Date
JP6242557B1 true JP6242557B1 (ja) 2017-12-06
JPWO2018173123A1 JPWO2018173123A1 (ja) 2019-03-28

Family

ID=60570386

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017547594A Active JP6242557B1 (ja) 2017-03-21 2017-03-21 制御装置および制御プログラム

Country Status (4)

Country Link
US (1) US20200233702A1 (ja)
JP (1) JP6242557B1 (ja)
CN (1) CN110419028B (ja)
WO (1) WO2018173123A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020197837A (ja) * 2019-05-31 2020-12-10 株式会社デンソー 車両用装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020052960A (ja) * 2018-09-28 2020-04-02 株式会社デンソーテン 車両制御装置および車両制御方法
EP3671450A1 (en) * 2018-12-18 2020-06-24 Aptiv Technologies Limited Virtual electronic control units in autosar
DE112019007432B4 (de) * 2019-06-27 2024-02-08 Mitsubishi Electric Corporation Elektronische steuereinheit und programm
JP7322734B2 (ja) * 2020-02-05 2023-08-08 株式会社デンソー 制御装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002073354A (ja) * 2000-08-29 2002-03-12 Ricoh Co Ltd タスク制御装置とタスク制御方法
JP2007233847A (ja) * 2006-03-02 2007-09-13 Hitachi Ltd ストレージシステム及びスケジューリング方法
JP2010036806A (ja) * 2008-08-07 2010-02-18 Nsk Ltd 電動パワーステアリング装置
WO2012070102A1 (ja) * 2010-11-22 2012-05-31 三菱電機株式会社 計算機装置及びプログラム
WO2013145199A1 (ja) * 2012-03-29 2013-10-03 株式会社日立製作所 仮想計算機のスケジュール方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2653822Y (zh) * 2003-10-29 2004-11-03 北京科技大学 数字与模拟技术相结合的图像监控装置
JP2014211689A (ja) * 2013-04-17 2014-11-13 トヨタ自動車株式会社 安全制御装置および安全制御方法
CN105301955A (zh) * 2015-10-19 2016-02-03 中国航空无线电电子研究所 一种系统级重构管理应用软件主从切换方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002073354A (ja) * 2000-08-29 2002-03-12 Ricoh Co Ltd タスク制御装置とタスク制御方法
JP2007233847A (ja) * 2006-03-02 2007-09-13 Hitachi Ltd ストレージシステム及びスケジューリング方法
JP2010036806A (ja) * 2008-08-07 2010-02-18 Nsk Ltd 電動パワーステアリング装置
WO2012070102A1 (ja) * 2010-11-22 2012-05-31 三菱電機株式会社 計算機装置及びプログラム
WO2013145199A1 (ja) * 2012-03-29 2013-10-03 株式会社日立製作所 仮想計算機のスケジュール方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020197837A (ja) * 2019-05-31 2020-12-10 株式会社デンソー 車両用装置
JP7243459B2 (ja) 2019-05-31 2023-03-22 株式会社デンソー 車両用装置
US11884283B2 (en) 2019-05-31 2024-01-30 Denso Corporation Vehicle device

Also Published As

Publication number Publication date
US20200233702A1 (en) 2020-07-23
CN110419028B (zh) 2023-06-30
CN110419028A (zh) 2019-11-05
JPWO2018173123A1 (ja) 2019-03-28
WO2018173123A1 (ja) 2018-09-27

Similar Documents

Publication Publication Date Title
JP6242557B1 (ja) 制御装置および制御プログラム
US8880201B2 (en) Safety controller and safety control method
US8756606B2 (en) Safety controller and safety control method in which time partitions are scheduled according to a scheduling pattern
JPWO2009060530A1 (ja) ネットワーク処理制御装置,プログラムおよび方法
JP2002259155A (ja) 多重系計算機システム
US20220055637A1 (en) Electronic control unit and computer readable medium
US20100281485A1 (en) Method For Changing Over A System Having Multiple Execution Units
JP5621857B2 (ja) 安全制御装置および安全制御方法
Piper et al. Mitigating timing error propagation in mixed-criticality automotive systems
JP2013143093A (ja) 情報処理装置、情報処理システム
JP5834935B2 (ja) 安全制御装置及び安全制御方法
TWI654561B (zh) 用於控制時間密集的指令的資訊處理設備及方法
US20050160425A1 (en) Limitation of the response time of a software process
JP5533777B2 (ja) プログラム群
JP2013152636A (ja) 情報処理装置、タスクスケジューリング方法
US8423681B2 (en) Control apparatus for process input-output device
JP5906584B2 (ja) 制御装置及び制御方法
US20200183733A1 (en) Vehicle control device
JP5718712B2 (ja) 情報処理装置
JP4231465B2 (ja) 組込み制御装置
JP2008077388A (ja) マルチプロセッサ制御システム、方法、およびプログラム
CN107066321B (zh) 用于准并行地执行多个线程的方法和装置
JP2024085626A (ja) コンピュータシステム、異常対処方法
TW202422337A (zh) 錯誤動作控制系統、錯誤動作控制方法及非暫時性電腦可讀取媒體
JP2023032307A (ja) 仮想化制御装置および割り込み制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170908

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170908

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170908

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170926

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171107

R150 Certificate of patent or registration of utility model

Ref document number: 6242557

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111