(57)【要約】【課題】安全性を向上できるようにした制御システムを提供すること。【解決手段】制御システム１は、所定の入力２に基づいて自動制御出力２１を生成する自動制御部２０と、所定の入力と自動制御出力とを含む安全検証対象の変数（X, Y, Z・・・）に基づいて、自動制御出力の安全性を確認する安全検証部３０と、安全検証部により安全性の確認された自動制御出力を制御対象６へ出力させる出力制御部４０と、を備え、安全検証部は、自動制御出力の安全性を判定するための安全領域３を示す複数のｎ次元（ｎは１以上の整数）の所定の直方体１０が持つ所定の座標範囲を所定のメモリ３４に保存し、所定のメモリに保存された所定の座標範囲と安全検証対象の変数とをハードウェア回路を用いて比較することにより、自動制御出力の安全性を検証する。【選択図】図１
2019207600.tif 000002
【特許請求の範囲】
【請求項１】
制御システムであって、
所定の入力に基づいて自動制御出力を生成する自動制御部と、
前記所定の入力と前記自動制御出力とを含む安全検証対象の変数に基づいて、前記自動制御出力の安全性を確認する安全検証部と、
前記安全検証部により安全性の確認された自動制御出力を制御対象へ出力させる出力制御部と、
を備え、
前記安全検証部は、前記自動制御出力の安全性を判定するための安全領域を示す複数のｎ次元（ｎは１以上の整数）の所定の直方体が持つ所定の座標範囲を所定のメモリに保存し、前記所定のメモリに保存された前記所定の座標範囲と前記安全検証対象の変数とをハードウェア回路を用いて比較することにより、前記自動制御出力の安全性を検証する、
制御システム。
【請求項２】
前記安全検証部は、前記各所定の直方体ごとに、前記安全検証対象の変数が前記所定の座標範囲に含まれるかを判定し、前記安全検証対象の変数が前記所定の座標範囲に含まれる場合に前記自動制御出力が安全領域に入ると判断する、
請求項１に記載の制御システム。
【請求項３】
前記安全検証部は、前記安全検証対象の変数が前記所定の座標範囲に含まれるかの判定を、前記各所定の直方体ごとに並列して実行する、
請求項１に記載の制御システム。
【請求項４】
前記安全検証部は、前記安全検証対象の変数が前記所定の座標範囲に含まれるかの判定を、前記各所定の直方体のうち指定される直方体から開始する、
請求項１に記載の制御システム。
【請求項５】
前記安全検証部は、前記安全検証対象の変数が前記所定の座標範囲に含まれるのかの判定を、前記各直方体のうち体積の大きい直方体から順に実行する、
請求項１に記載の制御システム。
【請求項６】
前記安全検証部は、前記安全検証対象の変数が前記所定の座標範囲に含まれるのかの判定を、前回判定した直方体の前後に位置する直方体から順に実行する、
請求項１に記載の制御システム。
【請求項７】
前記安全検証部は、前記安全検証対象の変数のうち前記所定の座標範囲から外れた変数を、前記所定の座標範囲内に収まるように制限する、
請求項１に記載の制御システム。
【請求項８】
前記安全検証部は、前記安全検証対象の変数のうち前記所定の座標範囲から外れた変数について、前記所定の座標範囲を記憶する、
請求項１に記載の制御システム。
【請求項９】
前記安全検証部は、前記安全検証対象の変数のうち前記所定の座標範囲から外れた変数について、前記所定の座標範囲との距離を算出する、
請求項１に記載の制御システム。
【請求項１０】
前記安全検証対象の変数には、前記所定の入力と前記自動制御出力とに加えて、過去の所定の入力と過去の自動制御出力も含まれる、
請求項１に記載の制御システム。
【請求項１１】
前記所定のメモリは、ＳＲＡＭ（Static Random Access Memory）またはＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）のいずれかである、
請求項１に記載の制御システム。
【請求項１２】
自動制御出力が安全であることを示す安全領域を一つ以上のｎ次元（ｎは１以上の整数）の所定の直方体で表し、
前記所定の直方体の所定の座標範囲を所定のメモリに保存し、
安全であるか検証すべき対象の変数が、前記所定のメモリに保存された所定の座標範囲に含まれるかを、比較回路を用いて前記所定の直方体ごとに逐次実行する、
安全検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システムおよび安全検証方法に関する。
【背景技術】
【０００２】
自動運転を初めとする制御の全自動化は、人為的操作を不要とするため、人為的誤りに起因する事故の確率を低減し、安全性を向上させることができる。なお、特許文献１〜３には、直方体という概念を用いて演算する手法が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−２３６３４２号公報
【特許文献２】特開２００１−２１６２８５号公報
【特許文献３】特開平６−２２３１６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
人工知能（AI：Artificial Intelligence）に安全検証機能を付加できれば、制御システムの安全性を向上することができる。しかし、例えば自動運転などの技術分野では、高速かつ低コストに、人工知能に安全検証機能を設けることが重要となる。
【０００５】
本発明は、上記課題に鑑みてなされたもので、その目的は、安全性を向上できるようにした制御システムおよび安全検証方法を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決すべく、本発明の一つの観点に従う制御システムは、所定の入力に基づいて自動制御出力を生成する自動制御部と、所定の入力と自動制御出力とを含む安全検証対象の変数に基づいて、自動制御出力の安全性を確認する安全検証部と、安全検証部により安全性の確認された自動制御出力を制御対象へ出力させる出力制御部と、を備え、安全検証部は、自動制御出力の安全性を判定するための安全領域を示す複数のｎ次元（ｎは１以上の整数）の所定の直方体が持つ所定の座標範囲を所定のメモリに保存し、所定のメモリに保存された所定の座標範囲と安全検証対象の変数とをハードウェア回路を用いて比較することにより、自動制御出力の安全性を検証する。
【発明の効果】
【０００７】
本発明によれば、安全領域を示す複数のｎ次元の所定の直方体が持つ所定の座標範囲を所定のメモリに保存し、所定のメモリに保存された所定の座標範囲と安全検証対象の変数とをハードウェア回路を用いて比較することにより、自動制御出力の安全性を速やかに検証することができる。
【図面の簡単な説明】
【０００８】
【図１】制御システムの全体構成を示す説明図である。
【図２】制御システムの基本的構成を示す回路図である。
【図３】安全検証機能の基本的構成を示す説明図である。
【図４】安全領域をｎ次元の直方体で表現する方法を示す説明図である。
【図５】第２実施例に係り、安全検証機能の回路図である。
【図６】比較回路の例である。
【図７】判定回路の例である。
【図８】第３実施例に係り、安全検証機能の回路図である。
【図９】比較回路の例である。
【図１０】比較回路の一部を示す回路図である。
【図１１】第４実施例に係り、安全検証機能の回路図である。
【図１２】判定に使用するエントリー（ｎ次元の直方体）の時間変化を示す説明図である。
【図１３】安全検証機能の実装例を示す説明図である。
【図１４】比較回路による比較判定のタイムチャートである。
【図１５】比較回路による比較判定の他のタイムチャートである。
【図１６】制御フレーム内の自動制御（知能化制御）と安全検証との関係を示す説明図である。
【図１７】制御フレームと安全検証にかかる時間との関係を示す説明図である。
【図１８】メモリの動作周波数とエントリー数と安全検証にかかる時間との関係を示すグラフである。
【図１９】第５実施例に係り、安全検証機能の回路図である。
【図２０】安全検証の逐次実行を並列化した場合の説明図である。
【図２１】第６実施例に係り、安全検証機能の回路図である。
【図２２】安全検証対象の変数から探索を開始するエントリーを決定する様子を示す説明図である。
【図２３】安全検証対象の変数から探索を開始するエントリーを決定する処理を並列化した場合の説明図である。
【図２４】直方体の体積が大きい順にエントリーを並べる場合の説明図である。
【図２５】直前の直方体のエントリーを中心としてその前後を探索する場合の説明図である。
【図２６】直前の直方体のエントリーを中心としてその前後を探索する場合の説明図である。
【図２７】第７実施例に係り、制御システムの全体構成図である。
【図２８】安全検証機能の回路図である。
【図２９】k-out-of-m論理の例を示す説明図である。
【図３０】第８実施例に係り、安全検証機能の回路図である。
【図３１】記憶要素の記憶内容の例を示す説明図。
【図３２】第９実施例に係り、安全検証機能の回路図である。
【図３３】比較器の説明図である。
【図３４】許容距離εの時間変化を示すグラフである。
【図３５】第１０実施例に係り、メモリとしてＳＲＡＭ（Static Random Access Memory）を用いる場合の説明図である。
【図３６】メモリとしてＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）を用いる場合の説明図である。
【発明を実施するための形態】
【０００９】
以下、図面に基づいて、本発明の実施の形態を説明する。本実施形態では、後述するように、自動制御出力が安全であるか確認する安全検証機能を高速に動作させるための方法を提案する。
【００１０】
本実施形態では、安全な出力から、または安全な入力と安全な出力との組み合わせから、自動制御出力が安全であると判断できる範囲（安全領域）を予め求めておく。本実施形態では、自動制御出力の安全性をリアルタイムで検証する際に、出力、または入力と出力との組み合わせが、安全領域にあるか否かを判断する。
【００１１】
本実施形態では、安全領域を少なくとも一つ以上の超直方体（ｎ次元の直方体。ｎは１以上の整数）で表現する。本実施形態では、安全検証対象である出力に対応する座標、または、安全検証対象である入力と出力との組み合わせに相当する座標が、超直方体の内部にあるか否かを判断する。本実施形態では、安全検証対象の変数（出力、または入力と出力の組合せ）に対応する座標が超直方体内に存在する場合、安全領域内にあると判断することができる。これに対し、本実施形態では、安全検証対象の変数に対応する座標が超直方体内部に存在しない場合、安全領域内にないと判断することができる。
【００１２】
上述の判断、すなわち安全検証対象の変数に対応する座標が超直方体の内部に存在するか否かの判断は、ソフトウェアまたはハードウェアにより実現可能である。ソフトウェアにより実現する場合、オーバヘッドが大きいため、処理時間が長くなる。
【００１３】
図１は、本実施形態に係る制御システム１の全体概要を示す説明図である。制御システム１は、自動制御部２０で生成された自動制御出力２１が安全であるか安全検証部３０により判定し、安全であると判定された場合のみ制御対象６へ出力させる。自動制御部２０は自動制御機能２０と呼ぶこともできる。同様に、安全検証部３０は安全検証機能３０と呼ぶこともできる。
【００１４】
自動制御部２０は、所定の入力４に基づいて自動制御出力２１を生成する。所定の入力４と自動制御出力２１とは、安全検証部３０に入力される。安全検証部３０は、所定の入力４と自動制御出力２１との組合せ（安全検証対象の変数）に対応する座標が超直方体１０の内部に存在するか判断する。
【００１５】
ここで、超直方体１０は、自動制御出力２１が安全であることを示す安全領域３を近似するために導入される技術的概念である。超直方体１０は、安全領域３に対して一つ以上設定される。安全領域３の形状等により異なるが、図１に示すように、安全領域３を埋めるようにして大小様々な形状の超直方体１０を設定することができる。
【００１６】
超直方体１０は、所定の入力２と自動制御出力２１、さらに入力２および出力２１の遷移を含むｎ次元の構造を有する。本実施形態では、例えば、所定の入力２が２種類、自動制御出力２１が１種類、過去の所定の入力２が２種類、過去の自動制御出力２１が１種類の合計６次元を持つ超直方体を例に挙げて説明する。超直方体１０を定義する座標範囲（所定の座標範囲）は、所定のメモリに保存される。所定のメモリとしては、例えば、ＳＲＡＭまたはＳＤＲＡＭを用いることができる。
【００１７】
安全検証部３０は、後述のようにハードウェア回路から構成される。安全検証部３０は、メモリに保存された超直方体１０の座標範囲と、安全検証対象の変数に対応する座標とをハードウェア回路で比較し、その判定結果３１を出力する。ハードウェア回路の例は、後述する。
【００１８】
出力制御部４０は、判定結果３１が安全であることを示す場合に、自動制御出力２１を安全制限出力５０として制御対象６へ送る。安全制限出力５０とは、安全が確認された範囲でのみ制御対象６へ送られる出力という意味である。
【００１９】
このように本実施形態では、自動制御出力の安全性を高速に確認するために、以下の手段を実施する。
【００２０】
（１）自動制御出力２１が安全であるか判定するための安全領域３を一つ以上の超直方体１０で近似して表現する。
【００２１】
（２） 超直方体１０を定義する座標範囲をメモリへ保存する。
【００２２】
（３）安全検証対象の変数に対応する座標（図１中の「Ｘ，Ｙ，Ｚ」）がメモリに保存された超直方体１０の座標範囲に入っているかの判定（領域判定）をハードウェア回路により実現する。
【００２３】
（４）上記の判定は、エントリー（超直方体）ごとに逐次実行する。
【００２４】
このように構成される本実施形態によれば、自動制御出力２１が安全であるかを高速に判断することができる。本実施形態によれば、ＣＡＭ（Content Addressable Memory）のような特殊構造のメモリを用いずにハードウェア回路を構成でき、高速かつ低コストに判定することができる。
【００２５】
以下、実施例ごとに、安全検証部３０にアルファベット一文字を添えて説明するが、区別しない場合は安全検証部３０と呼ぶ。他の構成についても同様である。
【実施例１】
【００２６】
図２〜図４を用いて第１実施例を説明する。図２は、本実施例に係る制御システム１の基本的構成を示す。
制御システム１は、例えば、自動制御部２０と、安全検証部３０とを有する。自動制御部２０は、入力２に基づき自動制御出力２１を出力する。「出力制御部」の例であるＡＮＤゲート（または最小値選択回路。以下同じ）４０には、自動制御出力２１と安全検証部３０Ａの検証結果３１とが入力される。ＡＮＤゲート４０は、安全検証部３０Ａにより安全が確認された場合に、自動制御出力２１を安全制限出力５０として制御対象６に出力し、制御対象６を制御する。なお、後述の実施例のように、自動制御出力の上限値または下限値が安全検証部３０Ａにより制限される場合もある。この場合は、自動制御出力２１と安全制限出力５０とは一致しない。
【００２７】
安全検証部３０Ａは、入力２と自動制御部２０の自動制御出力２１とから、自動制御出力２１の安全性を判断する。安全検証部３０Ａの判定回路３２には、入力２および自動制御出力２１からなる「安全検証対象の変数」が入力され、それらに対応する検証出力（ＯＫ／ＮＧ）が出力される。
【００２８】
さらに、過去の値からの状態遷移にも着目する場合（遷移チェック付の場合）には、１サンプル前（ｚ＾−１（なお。ｚマイナス１乗とも表せる）の過去の入力２および自動制御出力２１も（符号３３）、「安全検証対象の変数」として入安全検証部３０Ａに入力される。安全検証部３０Ａは、安全検証対象の変数に対応する検証出力３１を出力する。
【００２９】
安全検証部３０Ａにより安全性が確認されると、ＡＮＤゲート４０は、自動制御部２０から入力される自動制御出力２１を安全制限出力５０として制御対象６へ出力する。これに対し、安全検証部３０Ａにより安全性が確認されなかった場合、ＡＮＤゲート４０は、自動制御部２０の自動制御出力２１を遮断するか、または出力を制限する。
【００３０】
図３は、安全検証部３０Ａの基本構成を示す。安全検証部３０は、ＣＡＭと等価であり、入力２および自動制御出力２１、さらには遷移チェック付の場合には過去の入力２ｐおよび過去の自動制御出力２１ｐの組み合わせからなる「安全検証対象の変数」をエントリーとして、それらに対応した検証出力（ＯＫ／ＮＧ）を出力する。
【００３１】
図３では、入力２と過去の入力２ｐをそれぞれ一つずつ示すが、異なる複数の入力２および過去の入力２ｐを安全検証部３０Ａへ入力してもよい。
【００３２】
図４は、自動制御出力２１が安全であることを示す安全領域３を近似表現する超直方体１０の例である。
【００３３】
現在の入力２、自動制御出力２１、過去の入力２ｐ、過去の自動制御出力２１ｐなどのｎ個の「安全検証対象の変数」をそれぞれ直交座標上の数値として扱う場合、安全領域３はｎ個の数値からなる。したがって、安全領域３は、ｎ次元の超超直方体１０で近似的に表現することができる。
【００３４】
例えば、「安全検証対象の変数」として、現在の入力２および過去の入力２ｐがそれぞれ２変数、現在の自動制御出力２１および過去の自動制御出力２１ｐがそれぞれ１変数とする。この場合、安全検証対象の変数は、合計６つである。すなわち、安全領域３は、６次元の超立体で表現される。
【００３５】
ｎ次元の超立体は、ｎ次元の超直方体１０の集合として近似することができる。従って個々の超直方体１０の座標の範囲（Xmini, Xmaxi, Ymini, Ymaxi, Zmini, Zmaxi, …）（但し、iは超直方体の番号）をメモリに記憶させることにより、安全領域３の範囲を記憶することができる。
【００３６】
与えられた現在の入力２、現在の自動制御出力２１、過去の入力２ｐ、過去の自動制御出力２１ｐなどの「安全検証対象の変数」が、メモリに記憶されている超直方体１０のいずれかの座標の範囲に存在する場合、自動制御出力２１が安全領域３内にあることを確認できる。
【００３７】
本実施例によれば、安全検証部３０Ａにより自動制御出力２１の安全性を速やかに判断し、安全の確認された自動制御出力２１を安全制限出力５０として制御対象６へ出力することができる。したがって、本実施例の制御システム１によれば、安全性を向上することができる。
【００３８】
自動制御部２０として、深層学習または機械学習などの人工知能を導入することにより、人知を超えた制御性能の実現を期待できるが、人知を超えるがゆえに、安全に関してのアカウンタビリティ（説明責任、説明性）を向上させることが望ましい。本実施例では、安全検証部３０Ａを自動制御部２０（知能化制御部）に付加するため、人工知能による人知を超えた高度な制御を安全に実現することができる。
【実施例２】
【００３９】
図５〜図７を用いて第２実施例を説明する。本実施例を含む以下の各実施例では、先行する実施例との相違を中心に述べる。
【００４０】
図５は、安全検証部３０Ｂのハードウェア構成を示す。安全検証部３０Ｂは、例えば、「所定のメモリ」の例である記憶部３４と、比較回路３５と、ＡＮＤゲート３６と、ＯＲゲート３９とを備える。
【００４１】
記憶部３４には、個々の超直方体１０の座標の範囲（Xmini, Xmaxi, Ymini, Ymaxi, Zmini, Zmaxi, …）が記憶されている。記憶部３４は、超直方体１０の座標軸ごとに用意されている。
【００４２】
比較回路３５は、超直方体１０の座標軸ごとに設けられており、その座標軸に対応する記憶部３４から超直方体１０の座標範囲が入力される。さらに比較回路３５には、安全検証対象変数である、現在の入力２と自動制御出力２１と過去の入力２ｐと過去の自動制御出力２１ｐ（X, Y, Z, …）とが入力される。そして、比較回路３５は、安全検証対象の変数で定義される座標が各超直方体１０の座標範囲に含まれるか判定する。
【００４３】
各比較回路３５での演算結果は、最小値のＡＮＤを取るＡＮＤゲート３６（min）と最大値のＡＮＤを取るＡＮＤゲート３６（max）とに入力される。それら２つのＡＮＤゲート３６の出力は、ＯＲゲート３９へ入力される。
【００４４】
すなわち、比較回路３５に入力された安全検証対象の変数がそれぞれの超直方体１０の座標範囲内にあるか否かが座標軸ごとに判定され、全ての座標軸において範囲内にある超直方体１０が一つでも検出された場合、ＯＲゲート３９は、安全であることを示す判定結果（ＯＫ）３１を出力する。安全検証対象の変数が超直方体１０の座標範囲内に存在する超直方体１０が一つも無い場合、ＯＲゲート３９は、安全が確認されなかったことを示す判定結果（ＮＧ）３１を出力する。
【００４５】
図６は、比較回路３５の詳細を示す。図６では、Ｘ座標の比較回路３５を例に挙げて説明するが、Ｙ軸座標の比較回路３５と軸座標の比較回路３５も同様に構成される。比較回路３５は、最小値用の判定回路「Xmini < X ?」３５１と、最大値用の判定回路「X < Xmaxi ?」３５２と、ＡＮＤゲート３５３とを含む。最小値用の判定回路３５１には、「Xmini」と安全検証対象の変数の一つである変数「X」とが入力される。最大値用の判定回路３５２には、「Xmaxi」と変数「X」とが入力される。各判定回路３５１，３５２の判定結果は、ＡＮＤゲート３５３へ入力される。
【００４６】
比較回路３５は、「Xmini < x」かつ「X < Xmaxi」が成立する場合、つまり、安全検証対象の変数「X」が最小値「Xmini」と最大値「Xmaxi」の間に存在する場合にのみ、出力がＯＫ（Ｈ）となり、それ以外の場合にはＮＧ（Ｌ）となる。
【００４７】
図７は、判定回路「Xmini < X ?」３５１、判定回路「X < Xmaxi ?」３５２の構成例を示す。判定回路３５１，３５２は、判定回路「a < b ?」で表され、減算回路３５００と符合判定回路３５０１とで構成できる。減算回路３５００は、「a - b」を演算する。符合判定回路３５０１は、減算回路３５００での演算結果の符合ビットが「１」（負）である場合にＯＫ（Ｈ）を出力し、それ以外の場合にはＮＧ（Ｌ）を出力する。
【００４８】
このように構成される本実施例も第１実施例と同様の作用効果を奏する。
【実施例３】
【００４９】
図８〜図１０を用いて第３実施例を説明する。本実施例では、超直方体１０を定義する方法を変える。本実施例では、超直方体１０の最も原点に近い一点の座標と、その座標から座標軸方向の幅とにより、超直方体１０の座標範囲を定義する（Xmini, Xwidthi, Ymini, Ywidthi, Zmini, Zwidthi, …）。記憶部３４Ｃには、各超直方体１０の各座標軸について、或る座標と当該座標からの幅（座標軸方向の距離）との組合せが記憶される。
【００５０】
図９に示すように、比較回路３５Ｃは、判定回路「Xmini < X ?」３５１と、判定回路「X < Xmini + Xwidthi ?」３５２Ｃと、ＡＮＤゲート３５３とを備える。「Xmini < x」かつ「X < Xmini + Xwidthi」が成立する場合、つまり、変数「X」が「Xmini」と「Xmini + Xwidthi」との間に存在する場合にのみ、ＡＮＤゲート３５３の出力がＯＫ（Ｈ）となり、それ以外の場合にはＮＧ（Ｌ）となる。
【００５１】
図１０に示すように、判定回路「X < Xmini + Xwidthi ?」３５２Ｃは、一般に、判定回路「a < b + C ?」で表される。判定回路３５２Ｃは、減算回路３５００と、加算回路３５０２と、符合判定回路３５０１とを備える。加算回路３５０２では、「b + c」を演算する。減算回路３５００は、「a - （b + c）」を演算する。符合判定回路３５０１は、減算回路３５００での演算結果の符合ビットが「１」（負）である場合にＯＫ（Ｈ）を出力し、それ以外の場合にはＮＧ（Ｌ）を出力する。
【００５２】
このように構成される本実施例も第１実施例と同様の作用効果を奏する。
【実施例４】
【００５３】
図１１〜図１８を用いて第４実施例を説明する。図１１は、本実施例による安全検証部３０Ｄの回路構成を示す。本実施例では、比較回路３５による比較判定をエントリー（超長方体）ごとに逐次実行する。
【００５４】
カウンタ３７は、全てのエントリーについて、与えられた現在の入力２と現在の自動制御出力２１と過去の入力２ｐと自動制御出力２１といった安全検証対象の変数（X, Y, Z, …）が各超直方体１０の座標の範囲内にあるか否かを判定する。
【００５５】
座標軸毎にその最小値と最大値とが記憶部３４から読み出されて比較回路３５に入力される。各座標軸の比較回路３５による比較結果はＡＮＤゲート３６へ入力される。ＡＮＤゲート３６の出力はＲＳフリップフロップ３８のセット端子に入力される。ＲＳフリップフロップ３８のリセット端子にはカウンタ３７からのエントリー番号が入力される。
【００５６】
安全検証対象の変数がいずれかのエントリー内に存在する場合、そのエントリーの番号（ｉ）はＲＳフリップフロップ３８に記憶され、ＲＳフリップフロップ３８からＯＫ（Ｈ）が出力される。それ以外の場合には、ＲＳフリップフロップ３８からＮＧ（Ｌ）が出力される。
【００５７】
図１２に示すように、エントリーは、周期的に「０」から「ｎ」まで変化する。時間Ｔ２０は、自動制御部２０による処理時間を示す。時間Ｔ３０は、安全検証部３０による処理時間を示す。図１６で後述するように、自動制御部２０が所定の入力２に基づいて自動制御出力２１を出力するまでの時間Ｔ２０に比べて、安全検証部３０が自動制御出力２１の安全を確認するのに要する時間Ｔ３０は短い。
【００５８】
図１３に示すように、本実施例の安全検証部３０Ｄでは、記憶部３４に通常のメモリ素子３００を用いることができる。通常のメモリ素子３００とは、アドレスを指定することにより、そのアドレスに対応するデータを読み出せるタイプのメモリ素子である。そして、安全検証部３０Ｄのうち記憶部３４以外の部分３０１（比較回路３５、ＡＮＤゲート３６、ＲＳフリップフロップ３８、カウンタ３７）については、例えばゲートアレイ、フィールドプログラマブルゲートアレイ（ＧＰＧＡ）、セルベースドＩＣ（ＣＢＩＣ）などの論理ＩＣ  ３０１から実現することができる。
【００５９】
したがって、本実施例の安全検証部３０Ｄでは、必要なエントリー数（超直方体数）に応じた容量のメモリ素子３００を選ぶことにより、スケーラビリティのある実装が可能となる。予め安全領域を定めておく用途の場合、メモリ素子３００にフラッシュメモリやＲＯＭ（Read Only Memory）などの不揮発性メモリを用いることにより、一度書き込むことで再書き込みが不要となる。
【００６０】
安全検証部３０Ｄを実現する、メモリ素子３００と回路部分３０１と自動制御部２０との物理実装方法は、ベアチップ実装、パッケージ実装のいずれでもよい。それら回路３００，３０１，２０を同一チップに搭載してもよい。しかし、信頼性向上の観点から、自動制御部２０は、安全検証部３０を実現するメモリ素子３００および回路部分３０１とを隔離するのが望ましい。
【００６１】
隔離の方法としては、別チップとする、距離を置くなどの方法が考えられる。自動制御部２０と安全検証部３０Ｄとを同一チップに実装する場合であっても、例えば、自動制御部２０と安全検証部３０Ｄとの距離をできるだけ長くしたり、ＳＯＩ（Silicon on Insulator）プロセス等を用いるなどしたりして、自動制御部２０と安全検証部３０Ｄとの間に絶縁領域を設けるとよい。
【００６２】
図１４，図１５は、比較回路３５による比較判定（領域判定）をエントリー（超直方体１０）ごとに逐次実行する場合のタイムチャートを示す。比較回路３５を構成する、減算回路３５００と加算回路３５０２と符合判定回路３５０１とにおけるそれぞれの演算をパイプライン化する。
【００６３】
これにより、最後のエントリーを除いて、減算回路３５００、加算回路３５０２、符合判定回路３５０１のそれぞれでの演算時間の影響をなくすことができる。図１４に示すように、第２実施例の場合には、ｎエントリー（超長方体）について「ｎ＊ｔｒ + ｔｓ + ｔｃ」の時間で安全検証を完了させることができる。図１５に示すように、第３実施例の場合には、「ｎ＊ｔｒ + ｔａ + ｔｓ + ｔｃ」の時間で安全検証を完了させることができる（ｔｒ：メモリの読み出し時間、 ｔａ：加算回路３５０２の演算時間、ｔｓ ：減算回路３５００の演算時間、 ｔｃ：符合判定回路３５０１の演算時間）。
【００６４】
図１６は、制御システム１の制御フレーム内の自動制御部（知能化制御部）２０と安全検証部３０との関係を示す。自動制御部２０での処理にかかる時間Ｔ２０と安全検証部３０での処理にかかる時間（安全検証時間）Ｔ３０の合計は、制御フレーム周期よりも短く設定される。
【００６５】
図１７は、安全検証部３０の処理にかかる時間Ｔ３０が制御フレーム周期の１ないし１０％とした場合の、制御フレームと安全検証部３０の処理にかかる時間Ｔ３０の関係を示す表である。
【００６６】
図１８は、メモリの動作周波数と、エントリー数と、安全検証時間との関係を示すグラフである。
【００６７】
図１７において、制御フレーム周期が１００ｍｓである場合には、安全検証時間は１−１０ｍｓ以下にする。ここで、安全検証部時間を１ｍｓ以下とすると、１００ＭＨｚで動作可能なメモリを用いる場合、１００，０００エントリーまでの安全検証が可能である。１ＧＨｚで動作可能なメモリを用いる場合、１，０００，０００エントリーまでの安全検証が可能である。すなわち、メモリの動作周波数を高くするほど、多数のエントリー（超直方体１０）で安全領域を近似することができ、より一層正確に安全性を確認することができる。
【実施例５】
【００６８】
図１９，図２０を用いて第５実施例を説明する。本実施例では、安全検証対象の変数に対応する座標と各エントリー（超直方体１０）の座標範囲とを比較する処理を高速に逐次実行する方法を説明する。
【００６９】
図１９．２０は逐次実行を並列化した実施例である。図１９に示す安全検証部３０Ｅは、カウンタ３７−１〜３７−Ｌ、記憶部３４−１〜３４−Ｌ、比較回路３５−１〜３５−Ｌ、ＡＮＤゲート３６−１〜３６−Ｌ、ＲＳフリップフロップ３８−１〜３８−Ｌを備えている。各ＲＳフリップフロップ３８−１〜３８−Ｌの各出力は、ＯＲゲート３９へ入力される。ＲＳフリップフロップ３８−１〜３８−Ｌのいずれかの出力がＯＫ（Ｈ）ならば、ＯＲゲート３９はＯＫ（Ｈ）を出力する。それ以外の場合、ＯＲゲート３９はＮＧ（Ｌ）を出力する。
【００７０】
図２０に示すように、エントリーは、「０」から「ｎ」までの範囲を周期的に分割してそれぞれ変化する。
【００７１】
本実施例によれば、比較判定（領域判定）の処理を並列化することにより、安全検証時間を短縮することができ、短時間で自動制御出力２１の安全性を確認できる。
【実施例６】
【００７２】
図２１〜図２６を用いて第６実施例を説明する。本実施例は、個々の超直方体１０（エントリー）を座標ごとに並べ、与えられた安全検証対象の変数（X, Y, Z, …）に基づいて探索を開始するエントリーを決定する。
【００７３】
図２１では、例えば、超直方体１０をX座標の最小値Xminiごとに並べて、与えられた数値Xから探索を開始するエントリーを決定する。「X→istart」テーブル３７１は、Xminiが数値Xとなる超直方体のエントリーを示すテーブルである。「X→istart」テーブル３７１により、Xminiが数値Xに相当する開始エントリーistartを出力する。カウンタ３７は、図２２に示すように、テーブル３７１より指示された開始エントリーistartから、エントリーのインデックスiを順次インクリメントする。
【００７４】
本実施例によれば、全てのエントリーを逐次探索するのではなく、テーブル３７１から指示されたエントリーから探索を行うことができる。すなわち、本実施例では、探索範囲を限定することができるので、安全検証に要する時間を短縮できる。
【００７５】
図２３に示すように、本実施例を並列化して処理することもできる。開始エントリーistartを含むカウンタ３７−２のみ、「istart」からエントリーのインデックスiを順次インクリメントする。他のカウンタは、それぞれのカウンタのエントリーのインデックスの最小値から順次エントリーのインデックスiをインクリメントする。
【００７６】
図２４は、さらに、個々の超直方体１０のX座標の最小値Xminiが同じ場合に、超直方体１０の体積Ｖが大きい順にエントリーを並べる例を示す。
【００７７】
図２４の下側に示すように、各超直方体１０の最小値Xminiが等しい領域では、それら各超直方体１０の体積Ｖが大きい順番に並べ替えて判定する。これにより、体積Ｖが大きな超直方体ほど、安全検証対象の変数が含まれると判定される確率（ヒットする確率）が高くなるため、安全検証に要する時間を短縮することができる。
【００７８】
図２５，図２６は、直前の超直方体のエントリーioldを中心として、その前後を探索する例を示す。図２６に示すように、エントリーioldを含むカウンタ３７−２は、エントリーioldを中心として、その前後のエントリーを探索する。制御システム１では、数値が急変せずに連続して徐々に変化することが多い。したがって、直前の超直方体のエントリーioldに近いエントリーがヒットする確率が高くなるため、安全検証に要する時間を短縮することができる。
【００７９】
以上、領域判定を高速に逐次実行する例を示した。図１９および図２０で述べた並列化回路構成では、安全検証時間を１／Ｌに短縮することができる。これに対し、図２１〜図２６で述べた例では、確率的に（条件によっては）安全検証時間を短縮することができるが、安全検証時間の最悪値を保証するものではない。従って、安全検証時間が短縮できた場合には、デッドライン保証がクリティカルでない他のタスクを実行させることにより、平均スループットを向上させることができる。
【実施例７】
【００８０】
図２７〜図２９を用いて第７実施例を説明する。図２７は、安全検証部３０Ｇおよび制限値選択回路４０Ｇの実施例である。
【００８１】
本実施例に係る安全検証部３０Ｇの判定回路３２Ｇには、入力２および自動制御出力２１が入力される。判定回路３２Ｇからは、入力２および自動制御出力２１に対応する、制御出力上限３１Ｈおよび制御出力下限３１Ｌが出力される。さらに過去の値からの状態遷移にも着目した（遷移チェック付の）場合には、１サンプル前（ｚ＾−１）の過去の入力２ｐおよび自動制御出力２１も判定回路３２Ｇに入力され、それらに対応する制御出力上限３１Ｈおよび制御出力下限３１Ｌが出力される。
【００８２】
制限値選択回路４０Ｇは、入力された自動制御出力２１が制御出力上限３１Ｈと制御出力下限３１Ｌとの間にある場合に、自動制御出力２１を安全制限出力５０として制御対象６へ出力する。制限値選択回路４０Ｇは、入力された自動制御出力２１が制御出力上限３１Ｈを上回る場合には、制御出力上限３１Ｈに制限した値を安全制限出力５０として制御対象６へ出力する。一方、制限値選択回路４０Ｇは、入力された自動制御出力２１が制御出力下限３１Ｌを下回る場合には、制御出力下限３１Ｌに制限した値を安全制限出力５０として制御対象６へ出力する。
【００８３】
図２８は、図２７で述べた安全検証部３０Ｇの回路構成の例である。記憶部３４には、個々の超直方体１０の座標の範囲（Xmini, Xmaxi, Ymini, Ymaxi, Zmini, Zmaxi, …）が記憶されている。
【００８４】
比較回路３５では、「安全検証対象の変数」（X, Y, Z, …）がそれぞれの超直方体１０の座標の範囲内にあるか否かを座標軸ごとに判定する。「k-out-of-m」論理７０には、各比較回路３５の出力が入力される。「k-out-of-m」論理７０は、全ての座標軸ｍのうちｋ個の座標軸で範囲内にある超直方体が一つでも存在する場合、ＯＲゲート３９からＯＫ（Ｈ）を出力させる。さらに、その超直方体の座標の範囲（Xmini, Xmaxi, Ymini, Ymaxi, Zmini, Zmaxi, …）も出力される。「k-out-of-m」論理７０は、全ての座標軸ｍのうちｋ個の座標軸で範囲内にある超直方体が一つも存在しない場合、ＯＲゲート３９からＮＧ（Ｌ）を出力させる。
【００８５】
図２９に示すように、「k-out-of-m」論理７０では、多数決回路７０１の一部の入力を“Ｈ”または“Ｌ”と設定することで、任意の、「k-out-of-m」論理７０を構成することができる。
【００８６】
図２９（１）に示すように、「3-out-of-5」多数決回路７０１の１入力を“Ｈ”とし、他の４入力にそれぞれの座標軸についての判定結果（比較回路３５の出力）を入力すれば、「2-out-of-4」論理として動作する。図２９（２）に示すように、「3-out-of-5」多数決回路７０１の１入力を“Ｌ”とし、他の４入力にそれぞれの座標軸についての判定結果（比較回路３５の出力）を入力すれば、「3-out-of-4」論理として動作する。
【００８７】
図２９（３）に示すように、「3-out-of-5」多数決回路７０１の２入力を“Ｈ”とし、他の３入力にそれぞれの座標軸についての判定結果（比較回路３５の出力）を入力すれば、「1-out-of-3」論理（ＯＲゲート）として動作する。図２９（４）に示すように、「3-out-of-5」多数決回路７０１の２入力を“Ｌ”とし、他の３入力にそれぞれの座標軸についての判定結果（比較回路３５の出力）を入力すれば、「3-out-of-3」論理と（ＡＮＤゲート）して動作する。
【００８８】
このように構成される本実施例第１実施例と同様の作用効果を奏する。
【実施例８】
【００８９】
図３０，図３１を用いて第８実施例を説明する。本実施例では、安全検証対象の変数と超直方体１０との距離ｄ（残距離ｄとも呼ぶ）を演算する。
【００９０】
図３０は、本実施例に係る安全検証部３０Ｈの回路構成の例を示す。安全検証部３０Ｈでは、比較回路３５による比較判定をエントリー（超長方体）ごとに逐次実行する。
【００９１】
カウンタ３７は、全てのエントリーについて、「安全検証対象の変数」が超直方体の全座標軸のうち過半数の座標軸（k-out-of-m）について座標範囲内に存在するか否かを判定する。
【００９２】
いずれかのエントリーに該当する場合、その該当エントリーの番号はＲＳフリップフロップ３８に記憶され、ＲＳフリップフロップ３８からＯＫ（Ｈ）が出力される。さらに、該当エントリーの番号は記憶要素７１にも記憶される。「安全検証対象の変数」が超直方体１０の持つ全座標軸のうち過半数の座標軸について座標範囲内に存在しない場合、ＲＳフリップフロップ３８はＮＧ（Ｌ）を出力する。安全検証部３０Ｈは、残距離ｄを演算する残距離演算部７２を備えてもよい。残距離ｄとは、安全検証対象の変数が超直方体の座標軸から外れている場合において、その座標軸までの距離を示す。
【００９３】
残距離ｄとしては、例えば、ユークリッド距離を用いる。演算を簡単にするためにマンハッタン距離を用いたり、チェビシェフ距離を用いたりしてもよい。
【００９４】
図３１は、記憶要素７１に記憶されるデータの例を示す。記憶要素７１には、「安全検証対象の変数」が過半数の座標軸について座標範囲内にある超直方体のエントリーｉと、その座標範囲（Xmini, Xmaxi, Ymini, Ymaxi, Zmini, Zmaxi, …）とが記憶される。
【００９５】
例えば、図３１に示す「エントリー３」では、「安全検証対象の変数」のX, Y座標については超直方体内に入っているが、Z座標のみが超直方体の外にはみ出していると判定されている。この場合、「安全検証対象の変数」のZ座標のみが「1.0〜1.1」の間に制限された制御出力となる。
【００９６】
図３１に示す「エントリー７」では、「安全検証対象の変数」のX, Z座標については超直方体内に入っているが、Y座標は超直方体の外にはみ出していると判定されている。この場合、Y座標が「3.5〜3.7」の間に制限された制御出力となる。
【００９７】
このように構成される本実施例も第１実施例と同様の作用効果を奏する。
【実施例９】
【００９８】
図３２〜図３４を用いて第９実施例を説明する。図３２は、本実施例に係る安全検証部３０Ｊの回路構成を示す。安全検証部３０Ｊは、残距離ｄから探索するに際しての許容距離εをε生成部７３で生成する。
【００９９】
安全検証部は、３０Ｊは、「安全検証対象の変数」から許容距離ε内に位置する超直方体１０がある場合、その超直方体１０の番号（エントリー番号）をＲＳフリップフロップ３８に記憶させてＯＫ（Ｈ）を出力し、座標範囲を記憶要素７１に記憶させる。安全検証部３０Ｊは、それ以外の場合には、ＲＳフリップフロップ３８からはＮＧ（Ｌ）を出力させる。
【０１００】
図３３に示すように、比較器３５Ｊでは、「Xmini  - ε <  X ?」３５１の出力が「真」であり、かつ「X < Xmaxi + ε ?」３５２の出力が「真」である場合にのみ、ＡＮＤゲート３５３から“Ｈ”が出力される。
【０１０１】
図３４に示すように、ε生成部７３内では、「安全検証対象の変数」から許容距離ε内に超直方体１０がある場合に、そのときの残距離ｄを新しい許容距離εとする。「安全検証対象の変数」から許容距離ε内に位置する新たな超直方体が検出されるたびに、許容距離εは順次小さい値に更新される。
【０１０２】
このように構成される本実施例も第１実施例と同様の作用効果を奏する。さらに本実施例によれば、記憶要素７１に記憶されるエントリー数を絞ることができ、記憶要素７１の容量を節約することができる。
【実施例１０】
【０１０３】
図３５，図３６を用いて第１０実施例を説明する。本実施例では、記憶部３４として使用するメモリ素子の例を説明する。
【０１０４】
上述した各実施例で記憶部３４として使用可能なメモリ素子としては、例えば、フラッシュメモリ、ＳＲＡＭ、ＳＤＲＡＭを挙げることができる。
【０１０５】
フラッシュメモリは、不揮発性メモリであり、安全領域の情報を一度記憶させれば、書き換えない限りその情報が保持される。したがって、フラッシュメモリは、安全検証部用のメモリ素子として適切である。
【０１０６】
ＳＲＡＭは、リフレッシュ操作が不要であり、かつ、簡単なインターフェースで実現することができる。ＳＲＡＭのアクセスタイムは、現状最短で１０ｎｓ程度である。ＳＲＡＭは、揮発性メモリであるため、システム立ち上げ時に安全領域の情報をＳＲＡＭに書き込む必要がある。
【０１０７】
ＳＤＲＡＭは、情報機器に広く用いられており、コストパフォーマンスが高い。ＳＤＲＡＭは、ＤＤＲ（Double Data Rate）方式により、数百ＭＨｚ〜１ＧＨｚ超の周波数で、データを高速転送することができる。ＳＤＲＡＭも、ＳＲＡＭ同様に揮発性メモリであるため、システム立ち上げ時に安全領域の情報を書き込む必要がある。
【０１０８】
図３５に示すように、ＳＲＡＭは、最小構成のアドレス数が小さいため、エントリー＝アドレスとし、各次元のデータをビットスライス構成（Bit-slice configuration）で格納するとよい。
【０１０９】
これに対しＳＤＲＡＭは、大きなアドレス数を持つため、エントリー＝アドレスとして使用すると、アドレス数が余ってしまい、メモリ素子の使用効率が低下する。そこで、図３６に示すように、エントリーの各次元のデータを、異なるアドレスに折り畳んで格納する構成（Address-folding Configuration）を採用するとよい。
【０１１０】
なお、本発明は、上述した実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、各実施例を適宜組み合わせることができる。さらに特許請求の範囲に記載した構成は、明示した組合せ以外に組み合わせることもできる。
【符号の説明】
【０１１１】
１：制御システム、２：入力、３：安全領域、６：制御対象、１０：超直方体、２０：自動制御部、２１：自動制御出力、３０：安全検証部、３１：検証出力、３４：記憶部、４０：ＡＮＤゲート、５０：安全制限出力
【図１】
2019207600.tif 000003
【図２】
2019207600.tif 000004
【図３】
2019207600.tif 000005
【図４】
2019207600.tif 000006
【図５】
2019207600.tif 000007
【図６】
2019207600.tif 000008
【図７】
2019207600.tif 000009
【図８】
2019207600.tif 000010
【図９】
2019207600.tif 000011
【図１０】
2019207600.tif 000012
【図１１】
2019207600.tif 000013
【図１２】
2019207600.tif 000014
【図１３】
2019207600.tif 000015
【図１４】
2019207600.tif 000016
【図１５】
2019207600.tif 000017
【図１６】
2019207600.tif 000018
【図１７】
2019207600.tif 000019
【図１８】
2019207600.tif 000020
【図１９】
2019207600.tif 000021
【図２０】
2019207600.tif 000022
【図２１】
2019207600.tif 000023
【図２２】
2019207600.tif 000024
【図２３】
2019207600.tif 000025
【図２４】
2019207600.tif 000026
【図２５】
2019207600.tif 000027
【図２６】
2019207600.tif 000028
【図２７】
2019207600.tif 000029
【図２８】
2019207600.tif 000030
【図２９】
2019207600.tif 000031
【図３０】
2019207600.tif 000032
【図３１】
2019207600.tif 000033
【図３２】
2019207600.tif 000034
【図３３】
2019207600.tif 000035
【図３４】
2019207600.tif 000036
【図３５】
2019207600.tif 000037
【図３６】
2019207600.tif 000038