【文献】
有松 優 ほか,分散ストリーム処理エンジンを用いたMTLによる大規模トレース検査,電子情報通信学会技術研究報告 SS2018−52−SS2018−84 ソフトウェアサイエンス,日本,一般社団法人電子情報通信学会,2019年02月25日,第118巻, 第471号,pp.127-132,ISSN 2432-6380
(58)【調査した分野】(Int.Cl.,DB名)
前記実時間仕様の前記判定結果が変化した場合に、前記判定結果が変化した前記実時間仕様の前記判定結果に依存する、前記監視仕様が含む制約の一部である部分仕様を特定する次計算仕様判定部を備え、
前記実時間仕様判定部は、前記次計算仕様判定部が特定した前記部分仕様の内、前記実時間仕様を判定する請求項1又は2に記載の実行監視装置。
前記次計算仕様判定部は、前記実時間仕様の前記判定結果が変化した場合に、前記監視仕様に対応したReteネットワークに基づいて、前記実時間仕様の前記判定結果に依存する前記部分仕様を特定する請求項3に記載の実行監視装置。
前記時系列データ保存部が、前記実時間仕様判定部が前記実時間仕様を判定する際に使用する全ての前記時系列データを保存していない場合の処理方針を保存する異常処理ポリシ保存部を備え、
前記実時間仕様判定部は、前記時系列データ保存部が前記実時間仕様を判定する際に使用する全ての前記時系列データを保存していない場合に、前記異常処理ポリシ保存部に保存された、前記実時間仕様に対応する前記処理方針に従って処理する請求項1から4のいずれか1項に記載の実行監視装置。
【発明を実施するための形態】
【0019】
実施の形態1.
以下、本実施の形態について、図面を参照しながら詳細に説明する。
なお、本実施の形態の実行監視装置20は、任意の電子装置の実行を監視することができる。しかし、説明の便宜上、本実施の形態をACC(Adaptive Cruise Control System)システムに応用した例に基づいて説明する。
【0020】
図1は、ACCシステムを備える車載システムの概略図である。本図に示すように、前記車載システムは、車両と、データ収集サーバとから構成され、車両と、データ収集サーバとは、公共通信網により接続されている。前記車両は、実行監視装置20と、ACC ECU(Electronic Control Unit)と等を備える。
【0021】
図2は、ACC ECUの入出力信号と、実行監視装置20が電子装置の実行時監視(Runtime monitoring:ランタイムモニタリング)に係る監視仕様の判定に用いる信号を表した図である。本図に示すように、実行監視装置20は、ACC ECUの入出力信号を用いて監視仕様を判定し、監視仕様の判定結果を出力する。
【0022】
図3は、監視仕様の具体例を示したものである。なお、本図に示す監視仕様は例示に過ぎず、また、この監視仕様は完全なものではない。監視仕様IDは、監視仕様を識別するために、一意に割り当てた識別子である。
【0024】
監視仕様式を、下記の[数式1]の通り、バッカスナウア記法を用いて、DSL(Domain Specific Language: ドメイン記述言語)により再帰的に定義する。監視仕様式は、C言語のブール代数に関する演算子の一部に、論理包含と、実時間を使用する制約である実時間制約に関する演算子とを追加したものである。なお、監視仕様式は、[非特許文献3]におけるMTL−Bを参考に作成したものである。本実施の形態が扱う監視仕様は、監視仕様式を用いて表現することができる。
【0025】
[数式1]
<監視仕様式> ::=
{<信号制約>}| …(1)
!<監視仕様式>| …(2)
<監視仕様式_1> || <監視仕様式_2>| …(3)
<監視仕様式_1> && <監視仕様式_2> | …(4)
<監視仕様式_1> → <監視仕様式_2> | …(5)
<監視仕様式_1> U[<実数値1>,<実数値2>] <監視仕様式_2>| …(6)
<監視仕様式_1> S[<実数値1>,<実数値2>] <監視仕様式_2> …(7)
【0026】
[数式1]の3点リーダ及び(1)から(7)の表記は、説明の便宜上付した、<監視仕様式>の各項を示す表記であり、<監視仕様式>を構成するものではない。<監視仕様式>の文法の説明を以下で行う。
【0027】
(1)は、<信号制約>の真理値(“True”及び“False”)を表す。以下、{<信号制約>}を信号命題と呼び、信号命題の真理値を信号真理値と呼ぶ。<信号制約>は、1の信号(信号の値の取り得る値が、“True”又は“False”であるもの限る)であっても良く、複数の信号の比較であっても良い。また、<信号制約>は、真理値であっても良い。
【0028】
具体例としては、{ACC有効信号}と表記した監視仕様は、「ACC有効信号が“True”である」という監視仕様と同義であり、{ACC設定速度>規制速度}と表記した監視仕様は、「ACC設定速度が規制速度より大きい」という監視仕様と同義である。従って、信号制約の値域は、“True”及び“False”である。
【0029】
(2)の「!」は、否定を表す。具体例としては、<監視仕様式>が!{“True”}である場合、<監視仕様式>の真理値は“False”であり、<監視仕様式>が!{“False”}である場合、<監視仕様式>の真理値は“True”である。
【0030】
(3)の「||」は、論理和を表す。具体例としては、<監視仕様式>が{“True”} || {“False”}である場合、<監視仕様式>の真理値は“True”であり、<監視仕様式>が{“False”} || {“False”}である場合、<監視仕様式>の真理値は“False”である。なお、<監視仕様式_1>及び<監視仕様式_2>は、<監視仕様式>と同等であり、2の<監視仕様式>を区別するために用いている表記である。
【0031】
(4)の「&&」は、論理積を表す。具体例としては、<監視仕様式>が{“True”} && {“False”}である場合、<監視仕様式>の真理値は“False”であり、<監視仕様式>が{“True”} && {“True”}である場合、<監視仕様式>の真理値は“True”である。
【0032】
(5)の「→」は、論理包含を表す。(5)の真理値は、<監視仕様式_1>の真理値が“False”であるとき、又は、<監視仕様式_2>の真理値が“True”であるとき、“True”となる。具体例としては、(5)の真理値は、<監視仕様式>が、“True” → “True”である場合、及び、“False” → “False”である場合、“True”である。
【0033】
(6)の「U」は、Untilを表す。(6)の真理値は、<監視仕様式_2>の真理値が現在時刻の<実数値1>秒後から現在時刻の<実数値2>秒後までの間のある時刻において“True”であり、かつ、<監視仕様式_1>の真理値が現在時刻から前記時刻までの間、常に“True”である場合にのみ、“True”である。
図4は、(6)の真理値が“True”となる場合を示した図である。
【0034】
ここで、<実数値1>及び<実数値2>は、実数値を表す。<実数値2>及び<実数値1>の大小関係について、<実数値2>は、<実数値1>以上である。
【0035】
(7)の「S」は、Sinceを表す。(7)の真理値は、<監視仕様式_2>の真理値が現在時刻の<実数値2>秒前から現在時刻の<実数値1>秒前までの間のある時刻において“True”であり、かつ、<監視仕様式_1>の真理値が前記時刻から現在時刻までの間、常に“True”である場合にのみ、“True”である。
図5は、(7)の真理値が“True”となる場合を示した図である。
【0036】
また、丸括弧を用いて<監視仕様式>の演算の優先順位を示すことにする。
【0037】
監視仕様式の文法を用いて、演算子F_f及びG_fを定義する。
【0038】
[数式2]
F_f[<実数値1>,<実数値2>] <監視仕様式>
【0039】
[数式2]は、“Eventually in the future”を表す。[数式2]の真理値が“True”である場合、現在時刻の<実数値1>秒後から現在時刻の<実数値2>秒後までの間のある時刻において、<監視仕様式>の真理値が“True”である。F_fは、Untilを用いて、[数式3]のように表すことができる。
【0040】
[数式3]
{“True”} U[<実数値1>,<実数値2>] <監視仕様式>
【0041】
[数式4]
G_f[<実数値1>,<実数値2>] <監視仕様式>
【0042】
[数式4]は、“Always in the future”を表す。[数式4]の真理値が“True”である場合、現在時刻の<実数値1>秒後から現在時刻の<実数値2>秒後までの間、常に<監視仕様式>の真理値が“True”である。G_fは、“Eventually in the future”を用いて、[数式5]のように表すことができる。
【0043】
[数式5]
!(F_f[<実数値1>,<実数値2>] !<監視仕様式>)
【0044】
図6は、
図3に示した監視仕様を、上記のDSLを用いて表したものである。
【0045】
ところで、監視仕様2、4、5、6、及び7は、現在時刻よりも未来の信号の値を参照しているため、ある時刻において、これらの監視仕様に対応する監視仕様式の真理値が“True”であるか“False”であるかを決定することができない。一般に、監視仕様が1つのみである場合、ある時刻における監視結果を前記時刻から一定時間経過してから出力するようにすれば良い。しかし、監視仕様が複数ある場合、監視仕様が1つである場合と同様の処理を行うと、監視仕様毎に判定することになるため処理効率が低下する。
【0046】
[非特許文献3]には、未来の信号の値を参照する監視仕様式を、過去の信号の値を参照する監視仕様式に変換する手法が開示されている。前記手法を用いて、未来の信号の値を参照する監視仕様式を変換する。
【0047】
説明の簡便化のため、以下のように、演算子F_p及びG_pを定義する。
【0048】
[数式6]
F_p[<実数値1>,<実数値2>] <監視仕様式>
【0049】
[数式6]は、“Eventually in the past”を表す。[数式6]の真理値が“True”である場合、現在時刻の<実数値2>秒前から現在時刻の<実数値1>秒前までの間のある時刻において、<監視仕様式>の真理値が“True”である。[数式6]は、Sinceを用いて、[数式7]のように表すことができる。
【0050】
[数式7]
{“True”} S [<実数値1>,<実数値2>] <監視仕様式>
【0051】
[数式8]
G_p[<実数値1>,<実数値2>] <監視仕様式>
【0052】
[数式8]は、“Always in the past”を表す。[数式8]の真理値が“True”である場合、現在時刻の<実数値2>秒前から現在時刻の<実数値1>秒前までの間、常に<監視仕様式>の真理値が“True”である。[数式8]は、“Eventually in the past”を用いて、[数式9]のように表すことができる。
【0053】
[数式9]
!(F_p[<実数値1>,<実数値2>] !<監視仕様式>)
【0054】
上記のものを用いることにより、未来の値を参照する監視仕様を、未来の値を参照しない監視仕様に変換できる。
【0055】
図7は、[非特許文献3]の手法を用いて、
図6に示した監視仕様式を、DSLを用いて書き直したものである。なお、論理積(&&)と論理包含(imply)とを含まない形式に変換してある。ただし、<実数値>は実数値を表し、D[<監視仕様式>,<実数値>]は現在時刻の<実数値>秒前における信号に基づく<監視仕様式>の真理値を表す。
【0056】
***Reteネットワークの作成方法***
DSLで記述した監視仕様式を、実時間制約に対応したReteネットワークに変換する方法について説明する。
図8は、前記方法を示すフローチャートである。
【0057】
(ステップS001:信号変換処理)
ステップS001では、監視仕様を信号命題から成る論理式とするために、実時間制約に関連する部分式を仮想的な信号を導入して信号命題に変換する。実時間制約に関連する部分式とは、具体的には、演算子D、演算子F_p、演算子G_p、及び、演算子Sのいずれか1の演算子のみから成る論理式である。実時間制約に関連する部分式が監視仕様に含まれる場合、仮想的な信号を導入して前記部分式を信号命題に変換し、前記仮想的な信号及び前記仮想的な信号に対応する監視仕様式を記録する。
【0058】
[数式10]
D[!{ACC有効信号},5] || D[!{車間距離 < 理想車間距離},5] || F_p[0,5](!{車間距離 < 理想車間距離})
【0059】
[数式10]に示す5秒前の監視仕様2の監視仕様式を用いて、実時間制約に関連する部分式を仮想的な信号を用いた形に変換する具体例を説明する。[数式10]には、実時間制約に関連する部分式として、2の演算子Dと、1の演算子F_pが含まれている。
【0060】
まず、D又はF_pを含む部分を、仮想的な信号を導入して置き換える。置き換えた結果は、以下のようになる。
【0061】
[数式11]
{D_1} || {D_2} || {F_p_1}
【0062】
D_1、D_2、及びF_p_1は、仮想的な信号であり、D_1、D_2、及びF_p_1の末尾の数字は、便宜的に振ったものである。
図9に示すように、導入した仮想的な信号の信号名と、前記信号名に対応する実時間制約に関連する部分式が参照する監視仕様式とから成るペアを記録しておく。このとき、前記信号名に、前記信号名に対応する監視仕様式の真理値を求める際に参照する信号が取得された時刻に関する情報を含める。具体例としては、D_1[5]と記載した場合、D_1[5]の真理値を求める際に、5秒前におけるD_1に対応する監視仕様式の真理値を参照することを表す。
【0063】
変換後の監視仕様式が実時間制約に関連する部分式を含む場合、再帰的に実時間制約に関連する部分式を仮想的な信号を用いて信号命題に変換する。この変換処理を、全ての監視仕様に対応する監視仕様式に対して行うことにより、監視仕様に対応する監視仕様式から成る監視仕様式のリストの実時間制約に関連する部分式を、信号命題に変換することができる。これにより、監視仕様式のリストは、通常の論理式のリストとみなせる。
【0064】
(ステップS002:論理最小化処理)
ステップS002では、全ての実時間制約に関連する部分式を変換した監視仕様式のリストの監視仕様式に対して、論理最小化(Logic Minimization)を適用する。論理最小化とは、論理式を、前記論理式と等価な“sum−of−products”形式の論理式の内、最も単純な論理式に変換することである。論理最小化をすることにより、計算量を削減することができる。なお、論理式を、論理最小化に対応する論理式に近似する論理式に変換しても良い。論理最小化を多項式時間で実施することはできないが、[非特許文献4]に、論理最小化に対応する論理式に近似する論理式を高速に求める手法が開示されている。
【0065】
[数式12]は、監視仕様式に論理最小化を適用した後の論理式の具体例である。なお、[数式12]を、監視仕様式xと呼ぶことにする。ここで、<信号制約n>は、仮想的な信号である場合もある。nは、自然数を表す。
【0066】
[数式12]
({<信号制約1>} && {<信号制約2>}) || ({<信号制約3>} && {<信号制約4>}) || ({<信号制約4>} && {<信号制約5>} && {<信号制約6>})
【0067】
(ステップS003:AST変換処理)
ステップS003では、監視仕様式のリストの全ての監視仕様式を、AST(Abstract Syntax Tree)に変換する。
図10は、監視仕様式xを、ASTにより表現したグラフを示すものである。ここで、{<信号制約n>}を信号真理値nと表記することにする。
【0068】
(ステップS004:同一性判定処理)
ステップS004では、監視仕様式のリストの全ての監視仕様式の全てのサブツリーに対して、同一性の判定を行う。監視仕様式y1と監視仕様式y2とを用いて、本ステップにおける処理を具体的に説明する。
図11は、監視仕様式y1をASTにより表現したものであり、
図12は、監視仕様式y2をASTにより表現したものである。
【0069】
図11のサブツリー1と、
図12のサブツリー2とは、同一のサブツリーである。なお、サブツリーの同一性を判定する際には、サブツリー同士を比較する単純な方法を採用しても良いし、各サブツリーのハッシュ値を計算し、前記ハッシュ値の同一性を判定する方法を採用しても良い。
【0070】
(ステップS005:サブツリー接続処理)
ステップS005では、ステップS004において同一であると判定されたサブツリー同士をマージする。これにより、監視仕様式のリストの監視仕様式をDAG(Directed Acyclic Graph:有向非循環グラフ)により表現することができる。
図13に示すグラフは、監視仕様式y1に対応するASTと、監視仕様式y2に対応するASTとをマージしたグラフである。前記グラフにおいて、サブツリー1と、サブツリー2とをマージした部分グラフを、部分グラフ1としている。
【0071】
(ステップS006:信号分解処理)
ステップS006では、3以上の論理和又は論理積を表すノードを、2の論理和又は論理積を表す複数のノードに変換する。具体例としては、監視仕様式をDAGにより表現したグラフに、
図14に示す部分グラフが存在する場合、前記部分グラフを
図15に示す部分グラフに変換する。
【0072】
(ステップS007:ノード番号定義処理)
ステップS007では、Reteネットワークに対して、トポロジカルソートを実施する。ReteネットワークはDAGであるため、トポロジカルソートを実施できる。
図16は、Reteネットワークに対してトポロジカルソートを実施した例である。なお、前記Reteネットワークは、仮想的な信号の信号真理値を求める際に実際の信号を参照する場合、前記信号を含む。前記Reteネットワークの各ノードに振られた番号は、トポロジカルソートに伴い振られた番号である。また、前記番号を、部分仕様番号と呼ぶことにする。それぞれのノードは、真理値を求めるべきであり、監視仕様が含む制約の一部(以下、部分仕様と記述する)を表す。なお、仮想的な信号の信号真理値を求める際に参照する実際の信号に対応するノードと、監視仕様式y1及び監視仕様式y2に対応するノードとを部分仕様を表すノードとして扱い、前記ノードの真理値は、直上のノードの真理値と同一とする。部分仕様番号は、部分仕様を判定する順序を表す。エッジ及びエッジの向きは、部分仕様間の依存関係を表す。
【0073】
また、
図17は、
図16に示すReteネットワークに対応する表である。なお、実時間制約を表すノードが依存する信号真理値は、Reteネットワークのグラフから明らかであるので、前記信号真理値に対応する信号名を別途特定する必要はない。
【0074】
(ステップS008:信号マージ処理)
ステップS008では、仮想的な信号に対応する複数のノードであって、仮想的な信号の真理値を求める際に参照する信号が同一であるが、前記真理値を求める際に取得された時刻が異なる前記信号を参照する複数のノード(以下、異時刻ノード群)を抽出する。
図18に示すReteネットワークを基に、本ステップの処理を具体的に説明する。本図の枠で囲ったノードは、異時刻ノード群のノードに該当する。
【0075】
図19に示す表は、異時刻ノード群の各ノードが信号真理値を求める際に参照する信号の信号名と、前記信号を取得した時刻の情報とをまとめたものである。
F_p[x,y]の信号真理値を求めるためには、現在時刻−yから現在時刻−xまでにおける信号1の値が必要であるため、−y以上−x以下の値を、時刻情報として記録する。なお、本図に示す−y以上−x以下の記録間隔は例であり、前記記録間隔は、実行監視装置20が信号を取得する周期に依存する。
D[z]の真理値を求めるためには、現在時刻−zにおける信号1の値が必要であるため、−zの値を、時刻情報として記録する。
図18に示すDAGの場合、F_p[0,2]とD[5]とが存在しているので、
図19に示す表が作成される。
図20は、
図7に示す監視仕様の判定において必要である、部分仕様と時刻情報とのペアをまとめた表である。
【0076】
以上の手順により、実時間制約を含む監視仕様の真理値を求めるために必要なReteネットワークを、本実施の形態に係る実行監視装置20が扱えるよう構成できる。実行監視装置20は、
図17に示すReteネットワークを表す表と、
図20に示す、実時間制約を含む監視仕様の真理値を求めるために必要な時系列データを整理した表とを記憶する。
【0077】
***構成の説明***
図22は、本実施の形態に係る実行監視装置20の構成図である。
本図に示されるように、実行監視装置20は、前処理部201と、次計算仕様判定部202と、不変仕様判定部203と、実時間仕様判定部204と、期限管理部205と、変化時刻算出部206と、出力部207と、異常出力部208とを備える。
【0078】
前処理部201は、信号制約に基づいて一時バッファ部221に入力された信号を信号真理値に変換する。具体的には、前処理部201は、信号の値である実数値と定数値との比較等を行う。
【0079】
次計算仕様判定部202は、それぞれの周期において、判定する部分仕様を特定する。
【0080】
不変仕様判定部203は、実時間制約を含まない部分仕様を満たすか否かを判定し、判定結果保存部224に保存されている前記部分仕様を満たすか否かを判定した結果である判定結果を更新する。ここで、前記部分仕様を不変仕様と呼ぶことにする。即ち、不変仕様は、演算子and又はorから成る制約のことである。
【0081】
実時間仕様判定部204は、実時間制約を含む部分仕様を満たすか否かを判定し、判定結果保存部224に保存されている前記部分仕様を満たすか否かを判定した結果である判定結果を更新する。ここで、前記部分仕様を実時間仕様と呼ぶことにする。即ち、実時間仕様は、演算子D、F_p、G_p、又はSから成る制約のことである。
また、実時間仕様判定部204は、時系列データ保存部225に保存された時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間を使用する制約である実時間仕様を満たすか否かを判定し、実時間仕様を満たすか否かを判定した結果である判定結果を更新する。
【0082】
出力部207は、監視結果を出力する。
【0083】
異常出力部208は、実時間仕様判定部204がある実時間仕様の判定結果を求めるために必要な時系列データを時系列データ保存部225に保存していないときに、前記実時間仕様に関連する監視仕様IDを外部に出力する。
即ち、異常出力部208は、時系列データ保存部225が実時間仕様を判定する際に使用する全ての時系列データを保存していない場合に、依存関係保存部229を参照して実時間仕様に対応する監視仕様を特定し、監視仕様の情報を出力する。
【0084】
実行監視装置20は、典型的にはRAM(Random Access Memory)に配置する要素として、一時バッファ部221と、計算対象保存部223と、判定結果保存部224と、時系列データ保存部225と、変化時刻保存部226とを備える。
【0085】
一時バッファ部221は、一時的に実行監視装置20に入力された信号の値を保存する。信号は任意のタイミングで到着するが、監視処理は周期起動するので、一時バッファ部221は、一時的に前記信号の値を保存しておく。一時バッファ部221は、1の信号に対応する複数の入力信号を保存することもある。
【0086】
図23は、一時バッファ部221のデータ構造の例である。一時バッファ部221は、タイムスタンプと、信号名と、信号の値とを時系列順に保存する。
【0087】
計算対象保存部223は、判定結果を求める対象である部分仕様の一覧を保存する。
【0088】
判定結果保存部224は、各部分仕様の判定結果を保存する。
図24は、判定結果保存部224のデータ構造の例である。判定結果保存部224は、部分仕様毎に各周期における部分仕様の判定結果を保存する。なお、
図24では、部分仕様名を参考のために記しているが、発明を実施する際には部分仕様名を保存しなくても良い。以後、図において丸括弧により囲っている項目については同様とする。
【0089】
また、実時間仕様判定部204は、判定結果保存部224に前記判定結果を保存させる。即ち、実時間仕様判定部204は、実時間仕様判定部204の実行前に予約されているメモリの領域に保存する。ここで、実行前に予約されているメモリの領域とは、動的に確保されていないメモリの領域のことであり、典型的には、静的領域又はスタック領域である。スタック領域とは、自動変数等を格納するメモリの領域である。静的領域とは、グローバル変数等を格納するメモリの領域である。
【0090】
なお、実行監視装置20の機能は、ソフトウェアである実行監視プログラムによって実現される。
【0091】
時系列データ保存部225は、実時間仕様の判定に必要な時系列データを保存する。即ち、時系列データ保存部225は、実時間仕様が依存する部分仕様の判定結果を保存する。具体例としては、
図18に示したReteネットワークの場合、時系列データ保存部225は、実時間仕様に依存されているのは{信号1}のみであるので、{信号1}のみの時系列データを保存する。
【0092】
部分仕様の判定結果は、“True”又は“False”である。そのため、実行監視装置20の各部は、時系列データ保存部225が、信号が反転した時刻のみを保存していれば、判定結果保存部224に保存されている判定結果を参照することで、特定の時刻における前記信号の真理値を得ることができる。
【0093】
時系列データ保存部225は、信号が反転した全ての時刻を保存する必要はなく、最後に信号が反転した時刻である最終反転時刻と、反転した時刻及び前記時刻の直近に反転した時刻の間隔とを保存すれば十分である。
【0094】
実行監視装置20は組み込みシステムに実装されることを想定するので、保存可能である時系列データの量に限りがある。
そこで、時系列データ保存部225は、実時間仕様に依存されている部分仕様毎に許容する反転の回数を設定し、ある部分仕様の反転の回数が、前記部分仕様に対応する許容する反転の回数を超えた場合、保存している前記部分仕様の時系列データの内、最も古いデータを破棄する。
【0095】
上記の方針により、実行監視装置20が、厳密に監視仕様を判定できない場合が生じる。
実行監視装置20は、前記場合に対応するため、許容する変化の回数を適切に設定しておき、時系列データ保存部225に保存している時系列データより過去の時系列データを参照する必要がある場合、フェイルセーフになることを考慮して作成された代替的な判定結果を用いても良い。
【0096】
図25は、時系列データ保存部225のデータ構造の例である。本例では、許容する変化の回数を3としている。
【0097】
変化時刻保存部226は、実時間仕様毎に、次に部分仕様の判定をする必要がある時刻を保存する。通常のReteネットワークでは、実時間仕様を含まないので、判定すべき部分仕様を特定するには、Reteネットワークのグラフのみを参照すればよい。しかし、実時間仕様を含む場合には、判定時において実時間仕様が依存する部分仕様の判定結果が反転していない場合であっても、一定時間が経過したことを理由として前記実時間仕様を再度判定する必要があることがある。
【0098】
図32は、変化時刻保存部226のデータ構造の例である。変化時刻保存部226は、本例に示すように、実時間仕様毎に、次に判定する時刻である次回判定時刻を保存する。
【0099】
実行監視装置20は、典型的にはROM(Read Only Memory)に配置される要素として、監視仕様保存部222と、変化時刻テーブル保存部227と、異常処理ポリシ保存部228と、依存関係保存部229とを備える。
【0100】
監視仕様保存部222は、監視仕様のグラフ構造を保存する。監視仕様保存部222は、
図17に示すように、ノードごとに、部分仕様番号と、部分仕様名と、結合先のノードとを保存する。
【0101】
変化時刻テーブル保存部227は、部分仕様に依存している実時間仕様を判定するために、前記部分仕様の、どの時刻における真理値が必要であるかについての情報を保存する。変化時刻テーブル保存部227が保存するデータのデータ構造の例は、
図19に示した通りである。変化時刻テーブル保存部227は、実時間仕様に依存されている部分仕様毎に、時刻情報を保存する。
【0102】
異常処理ポリシ保存部228は、ある実時間仕様の判定に際し、時系列データ保存部225が、実時間仕様判定部204が前記実時間仕様を判定する際に使用する全ての時系列データを保存していない場合の処理方針を保存する。実時間仕様判定部204は、この場合、正確な判定をすることができない。
図27は、異常処理ポリシ保存部228が保存するデータのデータ構造の例である。処理方針は、「“True”として扱う」、「“False”として扱う」、「使用できる最古の値を用いる」、「以後の判定を中止する」のいずれかである。
【0103】
処理方針の「以後の判定を中止する」は、処理方針が「以後の判定を中止する」である実時間仕様が、計算対象保存部223に追加されないことを意味する。
【0104】
依存関係保存部229は、実時間仕様毎に、監視仕様と実時間仕様との関係性を保存する。
図26は、依存関係保存部229が保存するデータのデータ構造の例である。本図の関連監視仕様IDは、部分仕様に関連する監視仕様の監視仕様IDを表す。「監視仕様y1」及び「監視仕様y2」は、それぞれ、「監視仕様式y1」及び「監視仕様式y2」に対応する監視仕様の監視仕様IDである。なお、部分仕様番号に対応する関連監視仕様は、
図16のReteネットワークの前記部分仕様番号に対応するノードから、終点向き方向に辿ることで得ることができる。
【0105】
これらの構成要素は、実行監視装置20における通信回路、メモリに格納された制御プログラムを実行するプロセッサあるいはデジタル回路等により実現される。
【0106】
図21は、本実施の形態に係る実行監視装置20のハードウェア構成図である。
実行監視装置20は、本図に示す一般的なマイクロコンピュータ10と、通信インタフェース104とから構成される。なお、マイクロコンピュータ10は、一般的なコンピュータであっても良い。コンピュータには、マイクロコンピュータも含まれることとする。
【0107】
前処理部201と、次計算仕様判定部202と、不変仕様判定部203と、実時間仕様判定部204と、期限管理部205と、変化時刻算出部206とは、CPU(Central Processing Unit)101及びRAM103から構成される。出力部207と、異常出力部208とは、CPU101、RAM103、及び通信インタフェース104から構成される。一時バッファ部221と、計算対象保存部223と、判定結果保存部224と、時系列データ保存部225と、変化時刻保存部226とは、RAM103から構成される。監視仕様保存部222と、変化時刻テーブル保存部227と、異常処理ポリシ保存部228と、依存関係保存部229とは、ROM102から構成される。
【0108】
***動作の説明***
図28は、実行監視装置20による実行監視手順を示すフローチャートである。実行監視装置20は、ステップS201〜S215に示すフローを周期的に実行する。
【0109】
(ステップS201:真理値変換処理)
前処理部201は、一時バッファ部221に保存された信号の信号値を、監視仕様が有する信号制約に基づいて信号真理値に変換する。なお、信号値をそのまま信号真理値として使用すればよい場合、前処理部201は実際には入力信号を変換しないが、説明の便宜のために、前処理部201が信号値を信号真理値に変換したとみなすことにする。
【0110】
また、前処理部201は、一時バッファ部221に、信号制約に対応するある信号の信号値が複数保存されている場合、全ての前記信号値を前記信号制約に基づいて信号真理値に変換し、前記信号真理値の内、少なくとも1つが“False”である場合、前記信号制約の信号真理値を“False”とし、それ以外の場合、前記信号制約の信号真理値を“True”とする。
【0111】
(ステップS202:時系列データ更新処理)
前処理部201は、時系列データの更新を行う。
【0112】
前処理部201は、変化時刻テーブル保存部227を参照して実時間仕様に依存されている信号制約を特定し、実時間仕様に依存されている信号制約が存在する場合、全ての前記信号制約について、今回の周期における前記信号制約の真理値と、判定結果保存部224に記録されている、前記信号制約に対応する真理値とを比較する。
【0113】
前処理部201は、双方の真理値が相違する場合、時系列データ保存部225に、前記真理値に対応する全ての直近n回目の反転間隔として保存されているデータを、直近n+1回目の反転間隔として保存し、時系列データ保存部225に保存されている最終判定時刻と現在時刻との差を、直近1回目の反転間隔として保存し、時系列データ保存部225の最終反転時刻に現在時刻を保存する。
ただし、前処理部201は、時系列データ保存部225に保存されている、前記真理値に対応するデータの数が既に保存できる上限に達している場合、前記データの内、最も古いデータを削除する。
【0114】
(ステップS203:メモリあふれ検出処理)
前処理部201は、時系列データ更新処理においてデータを更新した場合、全ての前記データに対応する信号制約に対して、メモリあふれの検出処理を行い、それ以外の場合、本ステップの処理を実行せずにステップS205に進む。
【0115】
前処理部201は、時系列データ保存部225に保存されている、信号制約に関する直近n回目の判定間隔のデータ数が保存できる上限に達している場合、かつ、時系列データ保存部225に保存された最終反転時刻から時系列データ保存部225に保存された全ての直近n回目の反転間隔を足した値を引いた時刻が、前記信号制約に依存する実時間仕様の判定結果を求める際に参照する時刻、又は、時刻の区間内の最も過去の時刻よりも未来の時刻である場合、前記信号制約についてメモリあふれを検出したものとして、ステップS204に進む。
前処理部201は、上記以外の場合、ステップS205に進む。
【0116】
(ステップS204:異常出力処理)
前処理部201は、前記信号制約についてメモリあふれを検出した場合、異常処理ポリシ保存部228を参照し、前記実時間仕様に対応する処理方針に従って処理する。
前処理部201は、前記実時間仕様の判定結果を、前記実時間仕様に対応する処理方針に応じて設定する。
【0117】
異常出力部208は、依存関係保存部229に保存されている依存関係を参照して、前記実時間仕様に対応する監視仕様を、監視仕様IDを特定することによって特定し、前記監視仕様の情報である監視仕様IDを外部に出力する。
【0118】
(ステップS205:変化時刻算出処理)
変化時刻算出部206は、実時間仕様毎に、実時間仕様が依存する、時系列データ保存部225に保存された信号に関するデータと、変化時刻テーブル保存部227に保存されたデータとに基づいて、実時間仕様の判定結果が変化する時刻の内、最も現在時刻に近い未来の時刻を変化時刻として算出し、前記変化時刻を前記時刻に対応する実時間仕様の次回判定時刻として変化時刻保存部226に保存する。
即ち、変化時刻算出部206は、実時間仕様毎に、実時間仕様の判定結果が変化する変化時刻を算出する。
【0119】
(ステップS206:反転判定処理)
次計算仕様判定部202は、全ての信号制約の信号真理値について、前処理部201が変換した信号真理値と、判定結果保存部224に保存されている信号真理値とを比較することにより、前処理部201が変換した信号真理値が、1つ前の周期における信号真理値と比較して反転しているか否かを判定し、信号真理値が反転している場合、監視仕様保存部222を参照し、全ての前記信号真理値に直接的に依存する部分仕様を、判定結果が変化し得る部分仕様として特定し、全ての前記信号真理値に直接的に依存する部分仕様を、計算対象保存部223に保存する。なお、次計算仕様判定部202は、前記部分仕様が既に計算対象保存部223に保存されている場合、前記部分仕様を重複して保存しない。
信号真理値に直接的に依存する部分仕様とは、
図18に示すグラフにおいて、信号真理値に対応するノードと、部分仕様に対応するノードとが接続されており、部分仕様に対応するノードから始点向き方向に1つ進むことにより、信号真理値に対応するノードに辿り着くことを意味する。この信号真理値を、部分仕様等に置き換えた場合においても同様である。
【0120】
(ステップS207:期限管理処理)
期限管理部205は、各実時間仕様の判定結果の有効期限が切れている場合に、前記判定結果に対応する実時間仕様を実時間仕様判定部204が判定すべきであると判定する。
期限管理部205は、具体的には、実時間仕様毎に、現在時刻が実時間仕様に対応する次回判定時刻以後(即ち、変化時刻以後)であるか否かを判定し、現在時刻が実時間仕様に対応する次回判定時刻以後である場合、実時間仕様判定部204が、前記次回判定時刻に対応する実時間仕様を判定すべきであると判定し、前記実時間仕様を、計算対象保存部223に保存する。なお、期限管理部205は、前記実時間仕様及び前記部分仕様が既に計算対象保存部223に保存されている場合、前記部分仕様を重複して保存しない。
【0121】
図31は、本ステップの処理を終えた後の、計算対象保存部223が保存するデータ構造の例である。「○」は、「○」に対応する部分仕様が、計算対象保存部223に、計算対象として保存されていることを表す。
本例では、全ての信号真理値は変化せず、現在時刻がF_p[0,2]の次回判定時刻を過ぎておらず、現在時刻がD[5]の次回判定時刻を過ぎていることを仮定しているため、D[5]のみが計算対象とされている。
【0122】
(ステップS208:計算対象判定処理)
次計算仕様判定部202は、計算対象である部分仕様の有無を判定する。具体的には、次計算仕様判定部202は、計算対象保存部223に、計算対象として保存されている部分仕様が存在するか否かを判定する。
実行監視装置20は、前記部分仕様が存在しない場合、今回の周期の周期処理を終了し、前記部分仕様が存在する場合、ステップS209に進む。
【0123】
(ステップS209:部分仕様特定処理)
次計算仕様判定部202は、判定結果を求める対象である1の部分仕様を特定する。具体的には、次計算仕様判定部202は、計算対象保存部223に、計算対象として記録されている部分仕様の内、部分仕様番号が一番小さい部分仕様を特定する。以下、本ステップで特定した部分仕様を、特定部分仕様と呼ぶ。
【0124】
(ステップS210:実時間仕様判定処理)
次計算仕様判定部202は、特定部分仕様が実時間仕様であるか否かを判定する。
【0125】
(ステップS211:実時間仕様演算処理)
本ステップの詳細は、ステップS301〜S312に記載する。
【0126】
(ステップS212:不変仕様判定処理)
次計算仕様判定部202は、特定部分仕様が不変仕様であるか否かを判定する。
実行監視装置20は、前記部分仕様が不変仕様である場合、ステップS213に進み、それ以外の場合、ステップS214に進む。
【0127】
(ステップS213:不変仕様演算処理)
本ステップの詳細は、ステップS401〜S407に記載する。
【0128】
(ステップS214:出力処理)
出力部207は、判定結果保存部224に保存されている監視仕様の監視結果を外部に出力する。
【0129】
(ステップS215:削除処理)
次計算仕様判定部202は、特定部分仕様の記録を、計算対象保存部223から削除する。実行監視装置20は、ステップS208に進む。
【0130】
図29は、実時間仕様判定部204の処理を示すフローチャートである。
【0131】
(ステップS301:D判定処理)
実時間仕様判定部204は、特定部分仕様の演算子がDであるか否かを判定する。
実時間仕様判定部204は、演算子がDである場合、ステップS302に進み、それ以外の場合、ステップS303に進む。
【0132】
(ステップS302:D演算処理)
実時間仕様判定部204は、前記演算子Dの演算を行う。実時間仕様判定部204は、演算子Dの第1項に基づいて、時系列データ保存部225に保存されている時系列データから、特定部分仕様が参照すべき時刻におけるデータを抽出する。
【0133】
実時間仕様判定部204は、前記データに係る値が“True”である場合、特定部分仕様の判定結果を“True”とし、それ以外の場合、特定部分仕様の判定結果を“False”とする。
【0134】
(ステップS303:F_p判定処理)
実時間仕様判定部204は、特定部分仕様の演算子がF_pであるか否かを判定する。
実時間仕様判定部204は、演算子がF_pである場合、ステップS304に進み、それ以外の場合、ステップS305に進む。
【0135】
(ステップS304:F_p演算処理)
実時間仕様判定部204は、演算子F_pの演算を行う。
実時間仕様判定部204は、演算子F_pの第1項及び第2項に基づいて、演算子F_pの監視仕様式の真理値を参照すべき時刻の区間(以下、F_p参照区間)を特定し、時系列データ保存部225に保存されている時系列データから、F_p参照区間内における前記監視仕様式に対応するデータを抽出する。
【0136】
実時間仕様判定部204は、F_p参照区間内において、前記監視仕様式の真理値が“True”である時刻が少なくとも1存在する場合、特定部分仕様の判定結果を“True”とし、それ以外の場合、特定部分仕様の判定結果を“False”とする。
【0137】
(ステップS305:G_p判定処理)
実時間仕様判定部204は、特定部分仕様の演算子がG_pであるか否かを判定する。
実時間仕様判定部204は、演算子がG_pである場合、ステップS306に進み、それ以外の場合、ステップS307に進む。
【0138】
(ステップS306:G_p演算処理)
実時間仕様判定部204は、前記演算子G_pの演算を行う。
実時間仕様判定部204は、演算子G_pの第1項及び第2項に基づいて、演算子G_pの監視仕様式の真理値を参照すべき時刻の区間(以下、G_p参照区間)を特定し、時系列データ保存部225に保存されている時系列データから、G_p参照区間内における前記監視仕様式に対応するデータを抽出する。
【0139】
実時間仕様判定部204は、G_p参照区間内において、前記監視仕様式の真理値が“False”である時刻が少なくとも1存在する場合、特定部分仕様の判定結果“False”とし、それ以外の場合、特定部分仕様の判定結果を“True”とする。
【0140】
(ステップS307:S演算処理)
実時間仕様判定部204は、演算子Sの演算を行う。
実時間仕様判定部204は、演算子Sの、演算子Sの定義中の実数値1及び実数値2に対応する項に基づいて、演算子Sの2の監視仕様式(本ステップにおいて、Sの左に表記する監視仕様式をs1、Sの右に表記する監視仕様式をs2とする)の内、s2の真理値を参照すべき時刻の区間(以下、s2参照区間)を特定し、時系列データ保存部225に保存されている時系列データから、s2参照区間内におけるs2に対応するデータを抽出する。
【0141】
実時間仕様判定部204は、s2参照区間内において、s2に対応するデータに対応する時刻が現在時刻に近い順に、s2に対応するデータに基づくs2の真理値が“True”であるか否かを確認することにより、s2参照区間内においてs2の真理値が“True”である時刻の内、最も現在時刻に近い時刻を特定し、時系列データ保存部225に保存されている時系列データから、前記最も現在時刻に近い時刻から現在時刻までの区間(以下、s1参照区間)におけるs1に対応するデータを抽出する。
【0142】
実時間仕様判定部204は、s1参照区間内において、s1に対応するデータに基づくs1の真理値が常に“True”である場合、特定部分仕様の判定結果を“True”とし、それ以外の場合、特定部分仕様の判定結果を“False”とする。
【0143】
(ステップS308:判定結果更新処理)
実時間仕様判定部204は、判定結果保存部224に記録されている特定部分仕様の判定結果を、上記で求めた判定結果に更新する。
【0144】
(ステップS309:時系列データ更新処理)
実時間仕様判定部204は、時系列データの更新を行う。
【0145】
実時間仕様判定部204は、変化時刻テーブル保存部227を参照して特定部分仕様が実時間仕様に依存されているか判定し、特定部分仕様が実時間仕様に依存されている場合、今回の周期における特定部分仕様の判定結果と、判定結果保存部224に記録されている、特定部分仕様に対応する判定結果とを比較する。
【0146】
実時間仕様判定部204は、双方の判定結果が相違する場合、時系列データ保存部225に、前記判定結果に対応する全ての直近n回目の反転間隔として保存されているデータを、直近n+1回目の反転間隔として保存し、時系列データ保存部225に保存されていた最終判定時刻と現在時刻との差を、直近1回目の反転間隔として保存し、時系列データ保存部225の最終反転時刻に現在時刻を保存する。ここで、nは自然数とする。
ただし、実時間仕様判定部204は、時系列データ保存部225に保存されている、前記判定結果に対応するデータの数が既に保存できる上限に達している場合、前記データの内、最も古いデータを削除する。
【0147】
(ステップS310:メモリあふれ検出処理)
実時間仕様判定部204は、時系列データ更新処理において特定部分仕様に対応するデータを更新した場合、前記データに対してメモリあふれの検出処理を行い、それ以外の場合、本ステップの処理を実行せずに、本フローチャートの処理を終了する。
実時間仕様判定部204は、時系列データ保存部225に保存されている直近n回目の判定間隔のデータ数が保存できる上限に達している場合、かつ、時系列データ保存部225に保存された最終反転時刻から時系列データ保存部225に保存された全ての直近n回目の反転間隔を足した値を引いた時刻が、特定部分仕様に依存する実時間仕様の判定結果を求める際に参照する時刻、又は、時刻の区間内の最も過去の時刻よりも未来の時刻である場合、特定部分仕様についてメモリあふれを検出したものとして、ステップS311に進む。
実時間仕様判定部204は、上記以外の場合、本フローチャートの処理を終了する。
【0148】
(ステップS311:異常出力処理)
実時間仕様判定部204は、特定部分仕様についてメモリあふれを検出した場合、異常処理ポリシ保存部228を参照して、前記実時間仕様に対応する処理方針に従って処理する。
実時間仕様判定部204は、前記実時間仕様の判定結果を、前記実時間仕様に対応する処理方針に応じて設定する。
【0149】
異常出力部208は、依存関係保存部229に保存されている依存関係を参照して、前記実時間仕様に関連する監視仕様IDを特定し、前記監視仕様IDを外部に出力する。
【0150】
(ステップS312:反転判定処理)
次計算仕様判定部202は、上記のステップにおける特定部分仕様の判定結果と、判定結果保存部224に保存されている、特定部分仕様に対応する判定結果とを比較することにより、特定部分仕様の判定結果が、1つ前の周期における判定結果と比較して反転しているか否かを判定し、判定結果が反転している場合、監視仕様保存部222を参照し、特定部分仕様に直接的に依存する部分仕様を、判定結果が変化し得る部分仕様として特定し、特定部分仕様に直接的に依存する部分仕様を、計算対象保存部223に保存する。なお、次計算仕様判定部202は、前記部分仕様が既に計算対象保存部223に保存されている場合、前記部分仕様を重複して保存しない。
【0151】
図30は、不変仕様判定部203の処理を示すフローチャートである。
【0152】
(ステップS401:and判定処理)
不変仕様判定部203は、特定部分仕様の演算子がandであるか否かを判定する。
不変仕様判定部203は、演算子がandである場合、ステップS402に進み、それ以外の場合、ステップS403に進む。
【0153】
(ステップS402:and演算処理)
不変仕様判定部203は、演算子andの演算を行う。
不変仕様判定部203は、特定部分仕様の入力である2の真理値が双方とも“True”である場合、特定部分仕様の判定結果を“True”とし、それ以外の場合、特定部分仕様の判定結果を“False”とする。
【0154】
(ステップS403:or演算処理)
不変仕様判定部203は、演算子orの演算を行う。
不変仕様判定部203は、特定部分仕様の入力である2の真理値が双方とも“False”である場合、特定部分仕様の判定結果を“False”とし、それ以外の場合、特定部分仕様の判定結果を“True”とする。
【0155】
ステップS404からS408までの処理は、ステップS308からS312までの処理と同様の処理であるため、説明を省略する。
【0156】
***実施の形態1の特徴***
期限管理部205は、現在時刻が変化時刻以後である場合に、実時間仕様判定部204が変化時刻に対応する実時間仕様を判定すべきであると判定し、実時間仕様判定部204は、期限管理部205が判定すべきであると判定した実時間仕様を判定する。
【0157】
本実施の形態の実行監視装置20は、実時間仕様の判定結果が変化した場合に、判定結果が変化する実時間仕様に依存する、監視仕様が含む制約の一部である部分仕様を特定する次計算仕様判定部202を備え、実時間仕様判定部204は、次計算仕様判定部202が特定した部分仕様の内、実時間仕様を判定する。
【0158】
次計算仕様判定部202は、実時間仕様の判定結果が変化した場合に、監視仕様に対応したReteネットワークに基づいて、判定結果が依存する部分仕様を特定する。
【0159】
実時間仕様判定部204は、時系列データ保存部225が実時間仕様を判定する際に使用する全ての時系列データを保存していない場合に、異常処理ポリシ保存部228に保存された、前記実時間仕様に対応する処理方針に従って処理する。
【0160】
***実施の形態1の応用例***
本実施の形態に係る実行監視装置20は、ロボット及び電車の実行を監視することができる。具体的には、
図2に示す実行監視装置20が監視仕様の判定に用いる信号を、これらの実行時に発生する信号に適宜置き換え、
図3に示すような監視仕様を作成し、前記監視仕様をDSLを用いて表現すれば良い。
【0161】
***実施の形態1の効果の説明***
以上のように、本実施の形態によれば、Reteアルゴリズムをベースにした判定方法を用いることにより、判定結果が変化し得る部分仕様のみを判定する。そのため、本実施の形態に係る実行監視装置20は、監視仕様を効率的に判定することができる。
【0162】
また、前記実行監視装置20は、監視仕様の判定に必要な時系列データを時系列データ保存部225が保持できないために監視結果が不定となる場合に、前記場合を検出し、前記場合に陥っていることを外部に通知する。また、前記実行監視装置20は、前記場合に、異常処理ポリシ保存部228を参照して処理を行うため、監視結果を安全側のものとする。
【0163】
<変形例1>
本実施の形態では、実行監視装置20の各機能をソフトウェアで実現する場合を説明した。しかし、変形例として、前記各機能は、ハードウェアで実現されても良い。
【0164】
前記各機能がハードウェアで実現される場合には、マイクロコンピュータ10は、CPU101に代えて、電子回路(処理回路)を備える。あるいは、マイクロコンピュータ10は、CPU101、ROM102、及びRAM103に代えて、電子回路を備える。電子回路は、前記各機能(及びROM102とRAM103)を実現する専用の電子回路である。
【0165】
電子回路は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)が想定される。
【0166】
前記各機能を1つの電子回路で実現してもよいし、前記各機能を複数の電子回路に分散させて実現してもよい。
【0167】
あるいは、一部の前記各機能がハードウェアで実現され、他の前記各機能がソフトウェアで実現されてもよい。
【0168】
前述したCPU101とRAM103とROM102と電子回路とを、総称して「プロセッシングサーキットリー」という。つまり、前記各機能は、プロセッシングサーキットリーにより実現される。
【0169】
実施の形態2.
以下、主に前述した実施の形態と異なる点について、図面を参照しながら説明する。
***構成の説明***
図33は、実行監視装置30のハードウェア構成例を示している。実行監視装置20と実行監視装置30との差異は、実行監視装置30が信号判定部310と保存基準保存部320とを備える点である。信号判定部310と保存基準保存部320と以外について、実行監視装置30は、実行監視装置20と同様である。
【0170】
図34は、実行監視装置30の構成例を示している。実行監視装置30は、本図に示すように、信号判定部310と、保存基準保存部320とを備える。
【0171】
信号判定部310は、判定項目322と、参考値323とを用いて受信信号を判定する。
信号判定部310は、保存基準保存部320を参照して保存基準321を取得し、かつ、受信信号が保存基準321を満たすか否かを判定する。保存基準321は、受信信号を時系列データ保存部225に保存するか否かを判定することに用いられる。受信信号は、時系列データに対応する信号であり、かつ、実行監視装置30が受信した信号である。時系列データに対応する信号は、時系列データを生成することに用いられる信号でもある。
受信信号は、信号名を含む。信号名は、受信信号の名称を示す。受信信号は、受信信号に対応する時刻の情報を含む。受信信号は、典型的には、センサ等が受信信号に含まれるデータを取得した時刻の情報を含む。実行監視装置30は、信号を受信信号として受信しても良い。
信号判定部310は、受信信号が保存基準321を満たすか否かを判定する。信号判定部310は、受信信号が保存基準321を満たす場合に、受信信号を一時バッファ部221に保存する。前処理部201は、実施の形態1と同様に、当該受信信号を時系列データ保存部225に保存する。このようにして当該受信信号が時系列データ保存部225に保存されることは、信号判定部310が当該受信信号を時系列データ保存部225に保存することでもある。即ち、信号判定部310は、受信信号を時系列データ保存部225に保存する。
【0172】
保存基準保存部320は、保存基準321を保存している。
【0173】
図35は、保存基準321のデータ構造の例を示している。保存基準321の内容は、保存基準321を取得する時刻によって異なることがある。以下、本図に示される保存基準321は、基準取得時刻において取得されたものとする。
保存基準保存部320は、本図に示すように、判定項目322と、参考値323とを、信号名と紐づけて保存する。番号は、信号名に割り振られた通し番号である。図中の「…」は、各項目の個数が限定されないこと等を示す。
【0174】
判定項目322は、信号判定部310が受信信号を判定する観点を示す。「値」と、「最新時刻」と、「最古時刻」と、「受信間隔」と、「受信順序」と、「連続数」とは、それぞれ判定項目322の具体例である。信号判定部310が受信信号を判定する観点は、信号名毎に、判定項目322欄の「○」印によって示されている。
「値」は、受信信号が所定の値を示す場合に、信号判定部310が受信信号を保存することを示す。
「最新時刻」は、信号判定部310が最新のデータを保存することを示す。信号判定部310が「最新時刻」に従って受信信号を判定する場合、信号判定部310は、受信信号が示す時刻が最新時刻よりも新しい場合に受信信号を保存する。最新時刻は、受信信号が示す信号名に対応する信号であって、基準取得時刻までに受信した信号に示される時刻全ての中で、最も新しい時刻である。
「最古時刻」は、信号判定部310が最古のデータを保存することを示す。信号判定部310が「最古時刻」に従って受信信号を判定する場合、信号判定部310は、受信信号が示す時刻が最古時刻よりも古い場合に受信信号を保存する。最古時刻は、受信信号が示す信号名に対応する信号であって、基準取得時刻までに受信した信号に示される時刻全ての中で、最も古い時刻である。
「受信間隔」は、受信信号を前回受信した時刻から所定の時間を経過した場合に、信号判定部310が受信信号を保存することを示す。
「受信順序」は、実行監視装置30が受信信号を受信した順序が所定の順序である場合に、信号判定部310が受信信号を保存することを示す。
「連続数」は、実行監視装置30が所定の回数連続で受信信号を受信した場合に、信号判定部310が受信信号を保存することを示す。
【0175】
参考値323は、判定項目322に対応する。具体例として、
図35において、ある行の「最新時刻」欄に「○」印が付されている場合、当該行の参考値323は、最新時刻を示す。
信号判定部310は、受信信号を判定する際に参考値323を用いる。また、信号判定部310は、参考値323のデータを適宜更新する。
具体例として、受信信号に対応する信号名が「トルクリクエスト」である場合、信号判定部310は、「最古時刻」に従って受信信号を判定する。この際、信号判定部310は、最新時刻として、「10:00:03.20」を用いる。本例において、受信信号が示す時刻が最新時刻よりも新しい時刻である場合、信号判定部310は、「トルクリクエスト」に対応する参考値323を、受信信号が示す時刻に更新する。
図35の「ACC設定速度」に対応する参考値323のように、参考値323は、範囲を示しても良い。参考値323が範囲を示す場合、信号判定部310は、参考値323が示す範囲に受信信号が示す値が収まっているか否かを確認する。
図35の「制限速度」に対応する参考値323のように、参考値323は、値以外の情報を含んでも良い。
【0176】
判定項目322及び参考値323は、監視仕様保存部222に基づいて決定されても良い。以下、
図3及び
図35に基づいて、監視仕様保存部222と、判定項目322及び参考値323との関係の具体例を説明する。
実行監視装置30は、1度の判定処理において1単位のACC有効信号を用いる。ACC有効信号のデータ形式は、真理値である。また、一定期間中においてACC有効信号の値は通常変わらない。そのため、実行監視装置30が一定期間中において最初に受信したACC有効信号のみを、信号判定部310は保存すれば良い。従って、
図35において、ACC有効信号に対応する判定項目322の「最古時刻」の欄に「○」が記載されている。以下、
図35に言及しないが、
図35中の判定項目322及び参考値323の記載に対応する説明も記載されている。
ACC異常信号は、通常頻繁に変化しない。そのため、実行監視装置30が3回連続で同じ値を有するACC異常信号を受信した場合に、信号判定部310はACC異常信号を保存すれば良い。
実行監視装置30が判定処理において扱う車間距離時間の範囲は、0以上である。そのため、車間距離時間の値が0以上の場合に、信号判定部310は車間距離時間を保存すれば良い。
実行監視装置30は、1度の判定処理において1単位のトルクリクエストを用いる。トルクリクエストのデータ形式は、真理値である。また、一定期間中においてトルクリクエストの値は通常変わらない。そのため、信号判定部310は、最古時刻におけるトルクリクエストのみを保存すれば良い。
実行監視装置30は、1度の判定処理において1単位の要求トルクを用いる。要求トルクのデータ形式は、実数である。また、一定期間中において要求トルクの値は変わることがある。そのため、信号判定部310は、最新時刻における要求トルクのみを保存すれば良い。
10秒間内に取得された100個の車速データは、実行監視装置30が速度を判定する場合において十分な量である。ここで、車速データは、車速信号に含まれるデータである。そのため、信号判定部310は、受信間隔を100msとして車速データを保存すれば良い。
実行監視装置30が判定処理において扱うACC設定速度の範囲は、0km/h以上120km/h以下である。そのため、ACC設定速度の値が0km/h以上120km/h以下に収まる場合に、信号判定部310はACC設定速度を保存すれば良い。
実行監視装置30が連続して2つの信号を受信し、かつ、2つ目の信号が制限速度を示すものとする。1つ目の信号が車速を示す場合、信号判定部310は、2つ目の信号を保存する。しかしながら、1つ目の信号が車速を示さない場合、信号判定部310は、2つ目の信号を保存しない。
実行監視装置30は、1度の判定処理において1単位のオーバーライド信号を用いる。オーバーライド信号のデータ形式は、真理値である。また、一定期間中においてオーバーライド信号は通常変わらない。そのため、信号判定部310は、最古時刻におけるオーバーライド信号のみを保存すれば良い。
【0177】
***動作の説明***
図36は、実行監視装置30の動作の一例を示すフローチャートである。本図を参照して、実行監視装置30の動作を説明する。
実行監視装置30が信号を受信することを契機とし、実行監視装置30は、本フローチャートに示される処理を実行する。本フローチャートに示される処理を実行監視装置30が実行する前に、保存基準保存部320は保存基準321を保存しているものとする。
【0178】
(ステップS501:信号判定処理)
信号判定部310は、保存基準保存部320を参照して保存基準321を取得し、かつ、受信信号が保存基準321を満たすか否かを判定する。
受信信号が保存基準321を満たす場合、信号判定部310は、信号判定処理の結果を“True”とする。それ以外の場合、信号判定部310は、信号判定処理の結果を“False”とする。
本処理の結果が“True”である場合、信号判定部310は、ステップS502に進む。本処理の結果が“False”である場合、信号判定部310は、本フローチャートの処理を終了する。
【0179】
(ステップS502:保存処理)
信号判定部310は、受信信号を、一時バッファ部221に保存する。
【0180】
図37は、ステップS501に示される信号判定処理における信号判定部310の動作の一例を示すフローチャートである。本図を参照して、実行監視装置30の動作を説明する。
なお、本例において、判定項目322は、「値」と、「最新時刻」と、「最古時刻」と、「受信間隔」と、「受信順序」と、「連続数」とのみであるものとする。信号判定処理における信号判定部310の動作を示すフローチャートの長さは、判定項目322に含まれる項目数に依存する。
【0181】
(ステップS601:信号名判定処理)
信号判定部310は、受信信号に含まれる信号名が保存基準321に登録されているか否かを判定する。
受信信号に含まれる信号名が保存基準321に登録されている場合、信号判定部310は、ステップS602に進む。それ以外の場合、信号判定部310は、信号判定処理の結果を“False”とし、かつ、本フローチャートの処理を終了する。
【0182】
(ステップS602:値判定処理)
信号判定部310は、判定項目322の「値」について判定する。
信号判定部310は、受信信号に対応する判定項目322が「値」である場合、かつ、受信信号に示される値が受信信号に対応する参考値323に示される値に該当する場合、信号判定部310は、信号判定処理の結果を“True”とし、かつ、本フローチャートの処理を終了する。
ここで、受信信号に対応する判定項目322は、受信信号が示す信号名に対応する判定項目322である。受信信号に対応する参考値323は、受信信号に対応する判定項目322と同様である。具体例として、保存基準321が
図35に示されるものである場合、受信信号が示す信号名が「ACC設定速度」であるとき、受信信号に対応する判定項目322は「値」であり、かつ、受信信号に対応する参考値323は「0〜120km/h」である。「0〜120km/h」は、0km/h以上120km/h以下を示す。
それ以外の場合、信号判定部310は、ステップS603に進む。
【0183】
(ステップS603:最新時刻判定処理)
信号判定部310は、判定項目322の「最新時刻」について判定する。
受信信号に対応する判定項目322が「最新時刻」である場合、かつ、受信信号に示される時刻が受信信号に対応する参考値323に示される時刻より新しい場合、信号判定部310は、信号判定処理の結果を“True”とし、かつ、本フローチャートの処理を終了する。
それ以外の場合、信号判定部310は、ステップS604に進む。
【0184】
(ステップS604:最古時刻判定処理)
信号判定部310は、判定項目322の「最古時刻」について判定する。
受信信号に対応する判定項目322が「最古時刻」である場合、かつ、受信信号に示される時刻が受信信号に対応する参考値323に示される時刻より古い場合、信号判定部310は、信号判定処理の結果を“True”とし、かつ、本フローチャートの処理を終了する。
それ以外の場合、信号判定部310は、ステップS605に進む。
【0185】
(ステップS605:受信間隔判定処理)
信号判定部310は、判定項目322の「受信間隔」について判定する。
受信信号に対応する判定項目322が「受信間隔」である場合、かつ、受信信号に対応する信号名と同名の信号を実行監視装置30が前回受信した時刻と、実行監視装置30が受信信号を受信した時刻との間隔が受信信号に対応する参考値323に示される間隔以上である場合、信号判定部310は、信号判定処理の結果を“True”とし、かつ、本フローチャートの処理を終了する。
それ以外の場合、信号判定部310は、ステップS606に進む。
【0186】
(ステップS606:受信順序判定処理)
信号判定部310は、判定項目322の「受信順序」について判定する。
受信信号に対応する判定項目322が「受信順序」である場合、かつ、受信信号に対応する参考値323に示される順序によって実行監視装置30が信号を受信した場合、信号判定部310は、信号判定処理の結果を“True”とし、かつ、本フローチャートの処理を終了する。
それ以外の場合、信号判定部310は、ステップS607に進む。
【0187】
(ステップS607:連続数判定処理)
信号判定部310は、判定項目322の「連続数」について判定する。
受信信号に対応する判定項目322が「連続数」である場合、かつ、受信信号に対応する参考値323に示される回数以上連続で実行監視装置30が受信信号と同名の信号を受信した場合、信号判定部310は、信号判定処理の結果を“True”とし、かつ、本フローチャートの処理を終了する。
それ以外の場合、信号判定部310は、信号判定処理の結果を“False”とし、かつ、本フローチャートの処理を終了する。
【0188】
***実施の形態2の効果の説明***
以上のように、本実施の形態によれば、信号判定部310は、保存基準321に従って実行監視装置30が受信した信号を保存するか否かを判定し、かつ、保存基準321を満たす信号のみを一時バッファ部221に保存する。ここで、保存基準321は、監視仕様の判定に必要な信号と対応していても良い。そのため、実行監視装置30は、監視仕様の判定に必要な信号のみ、一時バッファ部221に保存することもできる。
従って、本実施の形態に係る実行監視装置30によれば、一時バッファ部221のバッファサイズを小さくすることができる。
【0189】
***他の構成***
<変形例2>
信号判定部310は、1つの受信信号に対して複数の判定項目322を適用しても良い。
本変形例において、具体例として、受信信号が当該複数の判定項目322を同時に満たす場合、信号判定部310は、受信信号を一時バッファ部221に保存する。なお、本変形例において、参考値323には、当該複数の判定項目322それぞれに対応するデータが登録されていても良い。
【0190】
<変形例3>
実行監視装置30は、変形例1と同様の構成であっても良い。
【0191】
***他の実施の形態***
前述した実施の形態の任意の構成要素の変形、もしくは実施の形態において任意の構成要素の省略が可能である。
【0192】
また、実施の形態は、実施の形態1から2で示したものに限定されるものではなく、必要に応じて種々の変更が可能である。
なお、実施の形態の説明及び図面において、同じ要素及び対応する要素には同じ符号を付している。同じ符号が付された要素の説明は、適宜に省略又は簡略化してある。