JP4965634B2 - シミュレーション・システムの動作制御方法、プログラム及びシステム - Google Patents

シミュレーション・システムの動作制御方法、プログラム及びシステム Download PDF

Info

Publication number
JP4965634B2
JP4965634B2 JP2009278002A JP2009278002A JP4965634B2 JP 4965634 B2 JP4965634 B2 JP 4965634B2 JP 2009278002 A JP2009278002 A JP 2009278002A JP 2009278002 A JP2009278002 A JP 2009278002A JP 4965634 B2 JP4965634 B2 JP 4965634B2
Authority
JP
Japan
Prior art keywords
state
block
guard condition
condition block
response
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.)
Expired - Fee Related
Application number
JP2009278002A
Other languages
English (en)
Other versions
JP2011118841A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2009278002A priority Critical patent/JP4965634B2/ja
Priority to US12/961,479 priority patent/US8868381B2/en
Publication of JP2011118841A publication Critical patent/JP2011118841A/ja
Application granted granted Critical
Publication of JP4965634B2 publication Critical patent/JP4965634B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B17/00Systems involving the use of models or simulators of said systems
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/406Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by monitoring or safety
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/406Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by monitoring or safety
    • G05B19/4061Avoiding collision or forbidden zones
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/406Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by monitoring or safety
    • G05B19/4063Monitoring general control system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B13/00Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
    • G05B13/02Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
    • G05B13/04Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric involving the use of models or simulators
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B23/00Testing or monitoring of control systems or parts thereof
    • G05B23/02Electric testing or monitoring
    • G05B23/0205Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B23/00Testing or monitoring of control systems or parts thereof
    • G05B23/02Electric testing or monitoring
    • G05B23/0205Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults
    • G05B23/0218Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterised by the fault detection method dealing with either existing or incipient faults
    • G05B23/0243Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterised by the fault detection method dealing with either existing or incipient faults model based detection method, e.g. first-principles knowledge model
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Quality & Reliability (AREA)
  • Geometry (AREA)
  • Evolutionary Computation (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Feedback Control In General (AREA)

Description

この発明は、シミュレーション技術に関し、より詳しくは、シミュレーションの動作検証の効率化技術に関するものである。
近年、科学技術計算、シミュレーションなどの分野で、複数のプロセッサをもつ、いわゆるマルチプロセッサ・システムが使用されている。そのようなシステムでは、アプリケーション・プログラムは、複数のプロセスを生成して、個別のプロセッサに、プロセスを割り当てる。それらのプロセッサは、例えば、共有のメモリ空間を利用して互いに通信しながら、処理を進める。
最近になって特に盛んに開発されるようになってきたシミュレーションの分野として、ロボット、自動車、飛行機などのメトカトロニクスのプラントのシミュレーション用ソフトウェアがある。電子部品とソフトウェア技術の発展の恩恵により、ロボット、自動車、飛行機などでは、神経のように張り巡らされたワイヤ結線や無線LANなどを利用して、大部分の制御が電子的に行われる。
それらは、本来的には機械的装置であるのに、大量の制御ソフトウェアをも内蔵している。そのため、製品の開発に当たっては、制御プログラムの開発とそのテストに、長い時間と、膨大な費用と、多数の人員を費やす必要が出てきた。
このようなテストにために従来行われている技法として、HILS(Hardware In the Loop Simulation)がある。特に、自動車全体の電子制御ユニット(ECU)をテストする環境は、フルビークルHILSと呼ばれる。フルビークルHILSにおいては、実験室内で、本物のECUが、エンジン、トランスミッション機構などをエミュレーションする専用のハードウェア装置に接続され、所定のシナリオに従って、テストが行われる。ECUからの出力は、監視用のコンピュータに入力され、さらにはディスプレイに表示されて、テスト担当者がディスプレイを眺めながら、異常動作がないかどうか、チェックする。
しかし、HILSは、専用のハードウェア装置を使い、それと本物のECUの間を物理的に配線しなくてはならないので、準備が大変である。また、別のECUに取り替えてのテストも、物理的に接続し直さなくてはならないので、手間がかかる。さらに、本物のECUを用いたテストであるため、テストに実時間を要する。従って、多くのシナリオをテストすると、膨大な時間がかかる。また、HILSのエミュレーション用のハードウェア装置は、一般に、非常に高価である。
そこで近年、高価なエミュレーション用ハードウェア装置を使うことなく、ソフトウェアで構成する手法が提案されている。この手法は、SILS(Software In the Loop Simulation)と呼ばれ、ECUに搭載されるマイクロコンピュータ、入出力回路、制御のシナリオ、エンジンやトランスミッションなどのプラントを全て、ソフトウェア・シミュレータで構成する技法である。これによれば、ECUのハードウェアが存在しなくても、テストを実行可能である。
このようなSILSの構築を支援するシステムとして例えば、MathWorks社から入手可能なシミュレーション・モデリング・システムである、MATLAB(R)/Simulink(R)がある。MATLAB(R)/Simulink(R)を使用すると、図1に示すように、画面上にグラフィカル・インターフェースによって、機能ブロックを配置し、矢印のようにその処理の流れを指定することによって、シミュレーション・プログラムを作成することができる。これらのブロック線図は、シミュレーションの1タイムステップ分の処理を表しており、これが所定回繰り返されることにより、シミュレーション対象となるシステムの時系列における振る舞いを得ることができる。
こうして、MATLAB(R)/Simulink(R)上で、機能ブロックなどのブロック線図が作成されると、Real-Time Workshop(R)の機能により、等価な機能のC言語など既知のコンピュータ言語のソース・コードに変換することができる。このC言語のソース・コードをコンパイルすることにより、別のコンピュータ・システムで、SILSとして、シミュレーションを実行することができる。
ところで、このようにして作成した複数の機能ブロックからなるシミュレーション・システムを実機に実装する前に、そのシステムの動作の安定性を判定する必要がある。なぜなら、実機に実装した後でシステムの不安定性が発現すると、例えば、エンジンの場合、急速な回転数上昇などの現象があらわれて、安全性を損なうからである。
図1(a)に、コントローラ・ブロック102と、プラント・ブロック104を有する安定システムの例を示す。図1(a)のシステムにおいては、期待出力106に対して、実際の出力108は、図示されるように、一旦期待出力106からずれるが、時間の経過とともに、期待出力に沿うように収束する。
一方、図1(b)に、コントローラ・ブロック110と、プラント・ブロック112を有する不安定システムの例を示す。図1(b)のシステムにおいては、期待出力114に対して、実際の出力116は、図示されるように、時間の経過とともに発散してしまい、もし、エンジン、ブレーキなどの制御システムにこのような不安定性が生じると、危険な状況となる。よって、シミュレーション・システムの不安定性を予め判定する技術が必要である。
現代制御理論によれば、このようなシミュレーション・システムの安定性は、実際に動作させることなく判定することができる。すなわち、図2に示すシステムは、コントローラ・ブロック202と、アクチュエータ・ブロック204と、プラント・ブロック206を有し、期待出力208に対して、実際の出力210を与えるように動作するが、一方、図2に示すシステムは、コントローラ・ブロック202と、アクチュエータ・ブロック204は、そのブロック記述に基づき、フローグラフ212に変換される。ここでuは入力であり、yは出力である。そしてさらには、状態行列214がもとめられ、時間に関する行列形式の微分方程式で、シミュレーション・システムの動作が記述される。
現代制御理論によれば、所定のアルゴリズムにより、状態行列214が固有値行列216に変換され、その固有値行列216の対角成分の実部が全てゼロ以下であることを以って、シミュレーション・システムが安定であると判定される。このような議論は、「演習で学ぶ現代制御理論」森泰親著、森北出版株式会社などに記述されていて周知であるので、ここでは詳説しない。
さて、図3に示すシステムは、コントローラ・ブロック302と、アクチュエータ・ブロック304と、飽和ブロック306と、プラント・ブロック308を有し、期待出力310に対して、実際のプラント出力312を与えるように動作する。すなわち、図示されているように、プラント出力312は発散してしまうのであるが、図3のシステムに、図2の状態行列による安定性判定技法を適用しようとしても、無理である。それは、非線形である飽和ブロック306が存在するからである。すなわち、状態行列は、線形の制御系にしか適用できない。
これを克服するために、モデル中の非線形素子を複数の領域に分ける技法を使用することが可能であり、それを、図4を参照して説明する。そのような技法に類似する技法は、例えば、特開平11−224106号公報などに開示されている。そこで、本明細書では、それを、複数の線形領域に分けるという意味で、スイッチド・リニア技法と呼ぶことにする。スイッチド・リニア技法によれば、非線形ブロック306が、複数(図4では3個)の線形領域に分割され、よって、状態遷移図310は、3つの状態をもつ部分312を含むことになる。
すると、図4のシステムは、状態遷移図310の部分312にそれぞれ異なる値(式)を与えた場合に対応する3つの状態314、316、及び318をとりえることになり、特に、非線形ブロック306に入力される値x2に基づき、非線形ブロック306がどの状態をとりえるかが決まる。非線形ブロック306を、3つの状態314、316、及び318のブロックでそれぞれ置き換えることにより、図4のシステムは、擬似的に線形である3つの状態遷移図を含むとみなすことができる。
すると、その3つの状態遷移図の各々につき、状態行列による安定性判定技法を適用することが可能となる。こうして、図4のシステムは、非線形ブロック306に入力される値x2に応じて、安定である状態314、不安定である状態316、及び不安定である状態318の間を遷移する。このような仕組みで、非線形ブロックが含まれていても、状態に対応して複数の状態行列を作成することにより、安定性を判定することが可能である。
しかし、さらに問題があってそれは、一般的にシミュレーション・システムにおいて、非線形ブロックは複数存在することである。例えば、図5のブロック502、504及び506に示すとおりである。ところが、仮に1つの非線形ブロックが3つの状態でスイッチド・リニア近似できるとしても、もし非線形ブロックがN個あると、3N個の状態がある。すると、状態間の遷移の数は、3N(3N-1)となる。ここでもし、N = 5だとしても、状態間の遷移の数は、3.4×109程度の大きさになって、到底すべてを網羅してテストすることは不可能である。実際のシステムでは、N = 5程度では済まない。こうして、非線形ブロックを含むシミュレーション・システムにおいてどう合理的にテストするか、ということは大きな課題である。
しかし、このような組合せ爆発を克服して、非線形ブロックを含むシミュレーション・システムを、効率的にテストできる技法は従来知られていない。
特開平11−224106号公報
従って、本発明の目的は、非線形ブロックを複数含むシミュレーション・システムにスイッチド・リニアの技法を適用して、複数の状態をもつシステムにした場合に、非線形ブロックの数や性質に拘らず、組合せ爆発を避けて効率的に安定性をテストできるようにする技法を提供することにある。
この発明の前提として、非線形ブロックを複数含むシミュレーション・システムの非線形ブロックの各々に、スイッチド・リニアの技法を適用して、複数のリニア領域の状態をもつブロックに変換しておく。このような処理は、手動でも出来るが、好適には、所定のツールで自動的に実行することができる。
このように複数の(例えばM個の)非線形ブロックがスイッチド・リニア化され、その各々がN個の状態をとるとすると、M桁のN進数として、状態IDを決定することができる。すなわち、状態IDのN進数表記の各桁が、それぞれの非線形ブロックの個々の状態をあらわす。
このように状態IDを定義したとき、本発明によれば、全ての状態ID間を遷移させるのではなく、特定の動作シナリオに沿って、シミュレーション・システムは、状態IDをを用いて、状態間を遷移するように制御される。
シミュレーション・システムは、動作シナリオに沿って、1つの状態から別の状態に遷移する際に、今から移行する状態が未踏である場合に、未踏であることを示すソフトウェア的なガードを置き、未踏のガードに遭遇することに応答して、今から移行する状態が安定かどうかのテストを行う。この安定性のテストは、既知の状態行列を使用する方法でよい。
このテストの結果、今から移行する状態が安定であると判定すると、シミュレーション・システムは、未踏のガードを外す。そうして、その先の状態の遷移箇所に別の未踏のガードを配置する。
一方、今から移行する状態が不安定であると判定すると、シミュレーション・システムは、未踏のガードを不安定のガードに取り替える。そして、遷移の出現状態を記録して、好適にはシミュレーションを終了する。
シミュレーション・システムは、状態間を遷移する際に、不安定のガードに遭遇すると、遷移の出現状態を記録して、好適にはシミュレーションを終了する。
このようなテストの結果、遷移の出現状態を記録したデータに基づき、ガード条件を更新することができる。こうして得られたガード条件は、実機に搭載することができ、これによって、実機が、不安定な状態に進むことが防止されて、実機の安全が保たれる。
この発明によれば、非線形ブロックを複数含むシミュレーション・システムにスイッチド・リニアの技法を適用して、複数の状態をもつシステムに変形した場合に、非線形ブロックの数や性質に拘らず、組合せ爆発を避けて効率的に安定性をテストすることが可能となる。
また、シミュレーションの結果得られたガード条件は、実機に搭載することができ、これによって、実機が、不安定な状態に進むことが防止されて、実機の安全が保たれる。
シミュレーション・システムの安定性を説明するための図である。 シミュレーション・システムの安定性を判定する処理を示す図である。 非線形ブロックを含むシミュレーション・システムの安定性判定の困難さを示す図である。 非線形ブロックをスイッチド・リニアにより線形化することによる、シミュレーション・システムの安定性を判定する処理を示す図である。 複数の非線形ブロックを含むシミュレーション・システムの例を示す図である。 本発明を実施するためのハードウェアのブロック図である。 本発明を実施するための機能ブロック図である。 複数の非線形ブロックを併合する処理を説明する図である。 複数の非線形ブロックからなるシステムにおける、状態IDのテーブルを示す図である。 非線形ブロックを含むシミュレーション・システムの状態遷移を示す図である。 本発明に従うシミュレーション処理のフローチャートを示す図である。 非線形ブロックを含むシミュレーション・システムの状態遷移の時間推移を示す図である。 ガード条件を作成するための処理のフローチャートを示す図である。 ガード条件を作成するための処理のフローチャートを示す図である。 ガード条件を作成するための処理のフローチャートを示す図である。 ガード条件を作成するための処理のフローチャートを示す図である。 ガード条件を作成するために処理される表のエントリを示す図である。 ガード条件を作成するために処理される表のエントリを示す図である。 ガード条件を作成するために処理される表のエントリを示す図である。 ガード条件を作成するために処理される表のエントリを示す図である。 ガード条件を作成するために処理される表のエントリを示す図である。 ガード条件を作成するために処理される表のエントリを示す図である。 ガード条件を作成するために処理される表のエントリを示す図である。 ガード条件を作成するために処理される表のエントリを示す図である。 ガード条件を作成するために処理される表のエントリを示す図である。 ガード条件を作成するために処理される表のエントリを示す図である。 ガード条件を作成するために処理される表のエントリを示す図である。 ガード条件を作成するために処理される表のエントリを示す図である。 実機システムにおける動作のフローチャートを示す図である。
以下、図面に基づき、この発明の実施例を説明する。特に断わらない限り、同一の参照番号は、図面を通して、同一の対象を指すものとする。尚、以下で説明するのは、本発明の一実施形態であり、この発明を、この実施例で説明する内容に限定する意図はないことを理解されたい。
図6を参照して、本発明を実施するために使用されるコンピュータのハードウェアについて説明する。図6において、ホスト・バス602には、複数のCPU0 604a、CPU1 604b、CPU2 604c、CPU3 604dが接続されている。ホスト・バス602にはさらに、CPU0 604a、CPU1 604b、CPU2 604c、CPU3 604dの演算処理のためのメイン・メモリ606が接続されている。
一方、I/Oバス608には、キーボード610、マウス612、ディスプレイ614及びハードティスク・ドライブ616が接続されている。I/Oバス608は、I/Oブリッジ618を介して、ホスト・バス602に接続されている。キーボード610及びマウス612は、オペレータが、コマンドを打ち込んだり、メニューをクリックするなどして、操作するために使用される。ディスプレイ614は、後述する本発明に係るシミュレーション・システムをGUIで操作するための画面イメージを表示したり、結果を眺めたりするために使用される。
この目的のために使用される好適なコンピュータ・システムのハードウェアとして、IBM(R)System Xがある。その際、CPU0 604a、CPU1 604b、CPU2 604c、CPU3 604dは、例えば、インテル(R)Core 2 DUOであり、オペレーティング・システムは、Windows(商標)Server 2003である。オペレーティング・システムは、ハードティスク・ドライブ616に格納され、コンピュータ・システムの起動時に、ハードティスク・ドライブ616からメイン・メモリ606に読み込まれる。
なお、本発明を実施するために使用可能なコンピュータ・システムのハードウェアは、IBM(R)System Xに限定されない。シングル・コア、マルチコア、マルチ・プロセッサ、ハイブリッド・マルチコア、など任意のアーキテクチャのCPUを使用することができる。本発明に係るシミュレーション・プログラムを走らせることができるものであれば、任意のコンピュータ・システムを使用することができる。オペレーティング・システムも、Windows(商標) XP、Windows(商標) 7、Windows(商標)などのWindows系や、Linux(R)、Mac OS(R)など、任意のオペレーティング・システムを使用することができる。あるいは、POWER(商標)6ベースで、オペレーティング・システムがAIX(商標)のIBM(R)System Pなどのコンピュータ・システムを使用してもよい。
ハードディスク・ドライブ616にはさらに、後述する、MATLAB(R)/Simulink(R)のようなモデリング・ツール、非線形ブロック解析モジュール、安定性判定モジュール、コンパイラ、シミュレーション実行モジュール、シミュレーション・シナリオ・ファイルなどの必要なプログラムが格納され、オペレーティング・システムの作用によって適宜メイン・メモリ606にロードされて、実行される。
図7は、本発明に係る機能論理ブロック図である。モデリング・ツール702は、MATLAB(R)/Simulink(R)、Scilab/Scicosなどの既存の任意のツールでよい。シミュレーション・モデリング・ツール702は、基本的には、オペレータが、ディスプレイ614上でGUI的に機能ブロックを配置し、数式など必要な属性を記述し、必要に応じて、機能ブロック間を関連付けてブロック線図を記述することを可能ならしめるような機能をもつ。シミュレーション・モデリング・ツール702はさらに、記述されたブロック線図に等価な機能を記述するCのソースコードを出力する機能をもつ。C以外にも、C++、FORTRANなどを使用することができる。また、好適には、機能ブロック間の依存関係を記述するためのMDLファイルも、併せてソースコードとして出力する。
そのように出力されたソースコード704は、ハードディスク・ドライブ616に保存される。
非線形ブロック解析モジュール706は、ソースコード704を解析して、図5に非線形ブロック502、504及び506として示すような非線形ブロックを見出し、スイッチド・リニア操作によって、複数の状態の線形領域に分割する。その際、スイッチド・リニア操作を適用する前に、図8に示すように、好適には、可能な箇所で非線形ブロックの併合を行うようにする。すなわち、図8(a)に示すように、内部状態をもたないブロック802、内部状態をもつ(非線形)ブロック804、内部状態をもたないブロック806及び内部状態をもつ(非線形)ブロック808があるとき、このままスイッチド・リニア操作により線形化すると、非線形ブロックが各々3状態に線形化されると仮定すると、ここだけで9状態になる。そこで、図8(b)に示すように、ブロック806とブロック808の位置を置き換え、それから、図8(c)に示すように、ブロック804とブロック808を併合して、非線形ブロック810を形成することにより、ここでの状態を、9状態から3状態に減らすことができる。
なお、Simulink(R)などで実際に使われる非線形ブロックの例として、下記のものがある。
- 遊びのあるシステムの挙動のモデル化(バックラッシュ)のブロック
- 零点で不連続、その他では線形ゲインを伴う型のモデル化のブロック
- ゼロ出力の領域を生成(デッドゾーン)ブロック
- 2つの入力の間での切り替えブロック
- ブロック入力の選択ブロック
- 指定された間隔で入力を離散化ブロック
- 信号の変化率を制限ブロック
- 2つの定数間で出力の切り替えブロック
- 信号の範囲を制限(飽和)ブロック
非線形ブロック解析モジュール706は、可能な箇所で、非線形ブロックを併合して数を減らした後、図9に概略的に示すような、非線形ブロックのための状態テーブル708を生成する。生成された状態テーブル708は、好適にはハードディスク・ドライブ616に保存される。
非線形ブロックについて、Simulink(R)のコード、特にSaturation(飽和)ブロックを例として用いて説明する。通常Saturationブロックの機能は本来は、
Out=( ((In) >= (Saturation_LowerSat)) ? (Saturation_LowerSat) :
(((In) <= (Saturation_UpperSat)) ? (Saturation_UpperSat) : (In)) ); ...Code 1.1
となる。Saturation_LowerSatとSaturation_UpperSatがそれぞれSaturationブロックの上限と下限を表しており、In, Outが入出力を表わす。入力Inの値によって出力Outが決まる。
これに対してSaturationブロックに検証用機能を付け加えたブロックは、
Out=( ((In) >= (Saturation_LowerSat)) ? (Saturation_LowerSat) :
(((In) <= (Saturation_UpperSat)) ? (Saturation_UpperSat) : (In)) );
Model_State=( ((In) >= (Saturation_LowerSat)) ? Model_State+Saturation_LowerOffset :
(((In) <= (Saturation_UpperSat)) ? (Model_State+Saturation_UpperOffset) : (Model_State+Saturation_MiddelOffset)) );
となる。Model_State以下の部分は、検証用ブロックの追加機能となる。Model_State, Saturation_LowerOffset, Saturation_UpperOffset, Saturation_MiddelOffsetは、MATLABのワークスペースにある変数名であり、それぞれ、モデルのシステムID、Saturationブロックの入力がSaturation上限を上回ったときにシステムIDの計算に必要なオフセット、ブロック入力がSaturation下限を上回ったときのシステムIDのオフセット、ブロック入力がSaturation上限と下限の間にある場合のシステムIDのオフセットを表わす。この追加機能によって、Saturationブロックの入力値からシステムIDが計算されることになる。検証用ブロックの作成は、C言語で書かれた上Simulink(R)のS Functionとしてコンパイルすることによって実現される。
図9に戻って、B1、B2、B3、B4、及びB5と表されているのはそれぞれ、個々の非線形ブロックであり、対応する列は、個々の非線形ブロックの動作領域である。この表の動作領域は、非線形ブロックのうち、最大の動作領域(図9では、B5の5個)に合わされている。従って、非線形ブロックB1のように、3つの動作領域しかもたない場合は、3と4の動作領域は、取り得ないので、影付きで表示されている。
このような表が与えられたとき、表の動作領域の数をNとして、非線形ブロックの数をMとしたとき、M桁のN進数として、状態IDを決定することができる。すなわち、状態IDのN進数表記の各桁が、それぞれの非線形ブロックの個々の状態をあらわす。逆に、状態IDが与えられたとき、それをN進数表記に変換して、各桁の値をみることによって、各非線形ブロックの状態(動作領域)を決定することができる。例えば、(B1,B2,B3,B4,B5) = (0,1,2,3,2)だと、
状態ID = 0×44 + 1×43 + 2×42 + 3×41 + 2×40 = 110となる。
コンパイラ710は、ソースコード704と、状態テーブル708とを参照して、図6で示すコンピュータ・システム上で動作する実行コードを生成し、実行システム712上で動作させる。
安定性判定モジュール714は、実行システム712から、状態IDに対応するシステムの状態を受け取って、状態行列を計算し、それに基づき行列の固有値を求めるなどして、安定性を判定して、その判定結果を実行システム712に返す。
テストケース生成ブロック716は、図10に示すように、各非線形ブロックの出力を入力として、SIMO制御によってシミュレーションのためのテストケースを生成して、実行システム712に入力するものであってもよいし、直接、独自の内部論理及び記憶されているシナリオの情報により、シミュレーションのためのテストケースを生成して、実行システム712に入力するものであってもよい。
実行システム712は、シミュレーション・シナリオ716からのシナリオ716に従い動作しつつ、適宜、ガード条件718のデータをハードディスク・ドライブ616に書き出す。ガード条件718生成の処理は、後で詳しく説明する。
コンパイラ720は、ソースコード704と、状態テーブル708と、ガード条件のブロック718を参照して、実機用システム722で実際に動作する、いわゆる組込みシステム用のコードを生成する。
図10は、テストケース生成ブロック716によるSIMO制御によって、ブロック1002、1004、1006及び1008を有する検証対象システム(実行システム)を制御する様子を模式的に示す図である。特にここで、ブロック1004とブロック1008が、非線形ブロックである。前述のように、これは、テストケースを生成するための一実施例であり、本発明のテストケース生成ブロック716は、SIMO制御を用いるものに限定されない。
図10(a)に示すように、テストケース生成ブロック716には、非線形ブロックへの入力である状態変数が入力され、これにより、テストケース生成ブロック716は、現在の状態を把握し、所定のシナリオに沿って別の状態に移行するように、検証対象システムに、テストケース出力を与える。
図10(b)は、テストケースに従う状態間の移行を説明する図である。図10(b)において、テストケース生成ブロック716は、入力される状態変数に基づき、現在、状態1010であると認識する。すると、実行システム上では、次に移行可能な状態は、状態1012、1014、1016、1018、1020、1022、1024及び1026であるが、テストケース生成ブロック716は、組み込まれた所定のシナリオに沿って、状態1012、1014、1016、1018、1020、1022、1024及び1026のうちの1つを選び、状態を移行するようにテストケース出力を制御する。
次に、図11のフローチャートを参照して、本発明に係るシミュレーション動作について説明する。この処理は、基本的には、図7に示すテストケース生成ブロック716からのデータに従い、実行システム・モジュール712で実行されるが、必要に応じて、安定性判定モジュール714も呼ばれる。
先ず、ステップ1102では、シミュレーション初期値からのガード条件が作成される。これは、どの状態からシミュレーションを開始するかを決定することでもある。
ステップ1102と相前後してもよいが、ステップ1104では、非線形ブロック解析モジュール706によって、例えば図4に示すように、非線形ブロックが独自の複数の線形ブロックに変換される。そうして、ステップ1106から、シミュレーションが開始される。
ステップ1108からステップ1110を経てステップ1112までは、シミュレーション時間Tが、ΔTだけ進められる。特にステップ1110では、通常の処理を実行しつつ、テストケースに従い選ばれた非線形ブロック内のコードが実行される。そして状態(State)の更新が行われる。すなわち、図12(a)において、開始の状態を符号1206で示すと、論理的には、そこから、状態1208、状態1210、状態1212、状態1214、状態1216のどれかに移行可能であるが、テストケースにより、そのうちのどれかが、次の状態として選ばれる。なお、ここで状態の移行というのは、図10(b)に示すのと同じ意味であり、図9に関して説明した状態IDの変化とも等価である。
図12(b)及び図12(c)は、時間とともに図12(a)から、シミュレーション・システムが状態を移行していく様子を示す。
次に、ステップ1114では、次に移行する状態(State)が既知且つ安全な遷移状態と一致するかどうかが判断される。ここで、既知且つ安全であるとは、シミュレーション・システムが、その状態を前に少なくとも一度訪れ、その状態が、安定性判定モジュール714によって安定であると判定されたことを意味する。そのような判定の履歴は、ハードディスク・ドライブ616に記録されるので、ステップ1114における判断が可能となる。
ステップ1114で、移行する状態(State)が既知且つ安全な遷移状態と一致すると判断されると、ステップ1116に進み、そこで、状態遷移の出現確率の記録が更新される。
ステップ1118では、その状態遷移の出現確率の記録の結果、遷移の出現確率の順序に変更なしかどうかが判断され、もしそうなら、ステップ1120に進み、そこで、シミュレーションは終了かどうか判断される。もしそうなら、シミュレーションは終了し、そうでないなら、ステップ1108に戻り、シミュレーションは続けられる。
ステップ1118に戻って、その状態遷移の出現確率の記録の結果、遷移の出現確率の順序に変更ありと判断されると、ステップ1122に進み、状態ID及びガード条件の再計算が行われる。ここで、ガード条件とは、図12でガード条件1202及びガード条件1204として例示されているものであり、未踏な線形領域(状態)への遷移を示すガード条件と、不安定な線形領域(状態)への遷移を示すガード条件がある。
ステップ1122の次は、ステップ1124に進み、そこで、非線形ブロック内のコードを更新し、ステップ1120に戻る。
なお、未踏な線形領域(状態)への遷移を示すガード条件は、図12でガード条件1202として例示されているものであり、そのガード条件の先にある状態がまだ未踏であるため、安定性を事前にテストしなくてはならないことを示す。
不安定な線形領域(状態)への遷移を示すガード条件は、図12でガード条件1204として例示されているものであり、そのガード条件の先にある状態が、安定性判定モジュール714によって既にテストされ、不安定であると判定されていることを示す。
ガード条件は、例えば、下記のようなコードによって実装される。
If (Model_State <= 4) {
Stable();
} else if (Model_State == 14) {
Stable();
} else {
if (Model_State == 5) Unstable();
if (Model_State == 16) Untested();
if (Model_State == 24) Untested();
... ...
}
このように、ガード条件のブロックは、機能的には、図10のブロック1002、1004、1006及び1008などと同様のブロックとして記述される。このガード条件ブロックは、MATLAB(R)のMスクリプトで記述され、Simulink(R)のEmbedded MATLAB Functionブロックで呼び出すように実装する。ガード条件ブロックの中で、Model_StateはMATLABのワークスペースにある変数名であり、状態IDを表している。Stable(), Unstable(), Untested()関数は、システム状態が安定、不安定、または未踏であるときに実行される。それらの関数は、MATLABのMスクリプトもしくはC言語によって記述する。Stable(), Unstable(), Untested()については、図11のフローチャートの後のステップに関連して説明する。
ガード条件ブロックは、MATLAB(R)のMスクリプトで記述されていることにより、シミュレーションの間に、シミュレーション・システムによって動的に書き換えることが可能であることを理解されたい。
ステップ1114に戻って、移行する状態(State)が既知ではないかまたは、安全な遷移状態と一致しないと判断されると、ステップ1126に進み、そこで、シミュレーションが一時停止される。
次に、ステップ1128では、状態がUntestedなガード条件と一致するかどうか判断され、もしそうなら、未踏な状態への遷移なので、ステップ1130に進み、そこで、安定性判定モジュール714を呼び出して、遷移する先の状態の安定性が判定される。
ステップ1130の判定の結果、遷移する先の状態が安定であると判定されると、ステップ1132で、該当ガード条件が削除される。これは、図12(b)で、状態1206から状態1210に遷移する際に、状態1210が安定であると判定され、それによって、状態1206と状態1210の間のガードが除去されていることに対応する。
ステップ1134では、次の遷移先からのエッジに対するガード条件の追加が行われる。このことは、図12(b)で、状態1210から状態1218、状態1220、状態1222の間に新たなガードを配置することに対応する。
ステップ1136では、状態遷移の出現確率が記録され、ステップ1122に戻る。
ステップ1130に戻って、遷移する先の状態が不安定であると判定されると、ステップ1138で、ガード条件がUnstableに変更される。次にステップ1140で、遷移の出現確率が更新されて記録され、ステップ1142で状態をダンプして、ユーザに通知し、シミュレーションが終了する。
ステップ1128に戻って、状態がUntestedなガード条件と一致しないと判断されると、ステップ1144に進み、そこで、状態がUnstableなガード条件と一致するかどうか判断され、もしそうなら、ステップ1140に進み、そこで、遷移の出現確率が更新されて記録され、ステップ1142で状態をダンプして、ユーザに通知し、シミュレーションが終了する。このことは、図12(c)で、状態1210から、テストケースに従い、状態1218に遷移し、状態1218に至るガード条件が不安定であることに応答して、ステップ1144での判断が肯定的となることに対応する。そして、これによって、ステップ1140、ステップ1142を経て、シミュレーションが終了する。
ステップ1144で、状態がUnstableなガード条件と一致しないと判断されたなら、それは、なんらかのエラーである可能性があるので、ステップ1142で状態をダンプして、ユーザに通知し、シミュレーションが終了する。
次に、図13乃至図16のフローチャートを参照して、ステップ1136またはステップ1140によって更新され記録されたガード条件をリストし更新する処理について説明する。このための処理モジュールは、実行システム712に含まれていてもよいし、実行システム712とは別個に、ハードディスク・ドライブ616に含まれていてもよい。
具体的に説明する前に、以下の処理の概要をまとめると次のとおりである。
(1) 評価がSafeかつ出現率が最大のエントリを0にするよう値を交換
(2) ハミング距離およびラティス距離に基づき行列を昇順にソート
(3) 評価がSafeであり出現確率が高いエントリを選択
(4) ハミング距離に従い、他の行の順序関係が壊れないよう選択行が最大or最小となるよう値を交換
(5) 他の行の順序関係が壊れないよう、選択行が最大or最小となるよう列を交換
(6) 未操作のエントリにSafeがなくなるまで(3)を繰り返す
図13において、ステップ1302では、未確定行に、全エントリを追加する。この処理は、好適には、図11のフローチャートで示す処理によって、ステップ1116、ステップ1134及びステップ1140で記録された非線形ブロックの状態IDの記録の処理の結果累積したデータを、メイン・メモリ606に読み込むことにより、行われる。
ステップ1304では、各列の入れ替え可能値へ、各列の状態数を追加する処理が行われる。この結果、例えば図17に示すような表のデータが得られる。この表のデータにおける非線形ブロックは、図9に示す非線形ブロックの状態テーブルに対応している。
図17において、第1列から第5列まではそれぞれ、図9のブロックB1、B2、B3、B4及びB5がとる状態の値に対応する。すなわち、列1から列3までは、0,1,2の3状態をとり、列4は0,1,2,3の4状態、列5は0,1,2,3,4の5状態、その右の列は、出現した頻度の百分率である出現率をあらわし、最右列は、安定性判定ブロック714によって安定性が判定された結果を示し、安定(Safe)と、不安定(Unsafe)のどちらかである。
ステップ1306では、評価がSafeかつ出現率が最大の行が操作行として選択される。図18では、操作行は、参照番号1802で示されている。
ステップ1308では、各列の入れ替え可能値から最小の値を検索する処理が行われ、ステップ1310では、選択行の列が最小値となるように他の行の値との交換が行われる、この結果、図18に示すようになる。また、図19では、入れ替え可能値が表示されている。
ステップ1312では、操作行が1行目になるように行がソートされる。次に、ステップ1314では、図19に示す丸で囲った数字である、各列の入れ替え可能値から最小値が削除される。
ステップ1316では、未確定エントリから操作行が除去される。すなわち、図20において、行2002は最早、操作行ではない。
ステップ1318では、行列の1行目からの各エントリのハミング距離が算出される。ここで、ハミング距離とは、等しい文字数を持つ二つの文字列の中で、対応する位置にある異なった文字の個数である。
ステップ1320では、ハミング距離によって昇順にソートされる。ステップ1322では、ハミング距離が等しい行が存在しないかどうか判断され、存在するなら、ステップ1324で、ラティス距離でソートする。ここで、ラティス距離とは、状態IDを10進数表記したときの、差の値のことである。
図20においては、最小値である00000のエントリより各エントリのハミング距離を求めソートを行い、さらに別の値(ラティス距離)でソートを行う。上記の例ではハミング距離が4であるエントリは4つ存在するので、さらに小さい順にソートする。
処理は次に、図14のフローチャートに進み、そこで、ステップ1402で、未確定エントリ中に評価がSafeのエントリが存在するかどうかが判断される。もしそうでなければ、処理は終了する。
ステップ1402で、未確定エントリ中に評価がSafeのエントリが存在すると判断されると、ステップ1404で、評価がSafeであり、最大出現率のエントリの上位2つが選択される。図21では、評価がSafeの未確定エントリ2102、2104及び2106が示されている。
ステップ1406では、ハミング距離の平均値(ハミング距離の最大値/2)もしくは平均値より大きい距離に両エントリが存在するかどうかが判断される。そして、もしそうなら、ステップ1408で、操作行として両エントリ中でハミング距離が最大のエントリが選択される。ステップ1408の次は、ステップ1418の判断ステップに進む。
ステップ1406で、ハミング距離の平均値(ハミング距離の最大値/2)もしくは平均値より大きい距離に両エントリが存在しないと判断されたなら、ステップ1410に進み、そこで、ハミング距離の平均値(ハミング距離の最大値/2)より小さい距離に両エントリが存在するかどうか判断される。そして、もしそうなら、ステップ1412で、操作行として両エントリ中でハミング距離が最小のエントリが選択される。ステップ1412の次は、ステップ1420の判断ステップに進む。
さらに、ステップ1410で、ハミング距離の平均値(ハミング距離の最大値/2)より小さい距離に両エントリが存在しないと判断されたなら、ステップ1414に進み、そこで、操作行としてエントリの評価がSafeであり、最大出現率のエントリが選択される。
次に、ステップ1416に進み、そこで、操作行のハミング距離が平均値(ハミング距離の最大値/2)より小さいかどうかが判断され、もしそうなら、ステップ1418の判断ステップに進み、そうでなければ、ステップ1420の判断ステップに進む。
ステップ1418では、入れ替え可能値が存在するかどうかが判断され、もしそうなら、ステップ1422で、選択行が最大値となるように操作となるようなポリシーを選択し、次にステップ1424で各列の入れ替え可能値から最大値の検査が行われ、ステップ1426では選択行の列が可能値の最大値となるように値が交換され、ステップ1428では各列の入れ替え可能値からの最大値を削除する処理が行われ、ステップ1438に進んで、行を昇順にソートする処理が行われる。
ステップ1418で、入れ替え可能値が存在しないと判断されると、直接ステップ1438に進む。
一方、ステップ1420では、入れ替え可能値が存在するかどうかが判断され、もしそうなら、ステップ1430で、選択行が最小値となるように操作となるようなポリシーを選択し、次にステップ1432で各列の入れ替え及び可能値から最小値の検査が行われ、ステップ1434では選択行の列が可能値の最小値となるように値が交換され、ステップ1436では各列の入れ替え可能値からの最小値を削除する処理が行われ、ステップ1438に進んで、行を昇順にソートする処理が行われる。
ステップ1420で、入れ替え可能値が存在しないと判断されると、直接ステップ1438に進む。ここまでの様子の例が、図22に示されている。ここでは、ハミング距離が大きく出現率が最も高いSafeエントリが選択され、値が次に最大になるようビットが交換される。この例では、次に出現率が最大かつハミング距離が遠い5行目が選択される。各列の最大値となるビットは9行目のエントリで固定となっているため、入れ替えが可能なビットを用い5行目のエントリが最大となるようビット交換が行われる。この場合、4列目は2,1が入れ替え可能なためビットの交換が行われる。そうして、ビット交換後、図23のようになる。ここで、4列目の1,2の値を交換したため、4列目の入れ替え可能な値から1,3が削除される。
次に、図15のフローチャートに移って、ステップ1502で、ポリシーは操作行が最大値かどうかが判断される。このポリシーは、図14のステップ1422またはステップ1430で決定されている。
ステップ1502で、ポリシーは操作行が最大値であると判断されると、ステップ1504で、未確定エントリの各列に注目し、操作行の要素が最大値から何番目となるかを算出し、その値をAとする処理が行われる。
次に、ステップ1506では、未確定エントリの各列に注目し、操作行の値と同じ値となる行をカウントし、その値をBとする処理が行われる。
一方、ステップ1502で、ポリシーは操作行が最大値でないと判断されると、ステップ1508で、未確定エントリの各列に注目し、操作行の要素が最小値から何番目となるかを算出し、その値をAとする処理が行われる。
次に、ステップ1510では、未確定エントリの各列に注目し、操作行の値と同じ値となる行をカウントし、その値をBとする処理が行われる。
ステップ1512では、未確定列に全列が追加される。次にステップ1514では、未確定行からAが最小値である列が選択される。
ステップ1516では、同じAとなる列が複数存在するかどうか判断され、もしそうなら、ステップ1518で、Bが最小値である列が選択され、ステップ1520で、未確定列から列数の最小の列を交換列として選択される。こうやって得られた値は、図24以下では、A(B)と表記される。
このステップに従い、エントリの列に注目し、選択したエントリが最大となるよう列の交換を行うと、図24のようになる。この場合、最大値と最小値である1,9行はどの列を交換しても最大、最初となるため、それ以外の2から8行目に注目をする。ここでは5行目のエントリを2番目の最大値になるよう列の入れ替えが行われる。まず2-8行目の1列目では選択エントリのビットは0である。降順では2,1につづき3番目となり、他の行で0の値は5エントリとなるため、3(5)となる。2列目では選択エントリのビットは2となり、注目している2-8行では最大値となり、2の値をとる行は他にいないため1(1)となる。同様に残りの列も同様に最大値からの順位と同じ値を持っているエントリ数をカウントする。
その後、選択した列が最大となるよう列を交換する。選択した行の値が最大となるためには各列が他の行の値よりも大きくなければならない。また、値は1列目より判断されるため、1列目より順に各列の順位が昇順となるようソートする。この例では5列目に4という最大値をもっており、他のエントリが4を持っていない5行目が1列目と交換される。(2列目も1位かつ他のエントリがないため1行目となる列に当てはまるが、2<4のため、2列目ではなく5列目が交換対象となる)。これにより1行目から小さい順で列をソートした場合、図25の表となる。
フローチャートに戻って、図15のステップ1520からは、図16のフローチャートのステップ1602に進む。ステップ1602では、既存のA,Bの値が算出された行は存在するかどうかが判断され、もしそうなら、ステップ1604に進み、そこで、交換列と選択列の既存のAが1であるかどうかが判断され、もしそうなら、ステップ1606に進む。
ステップ1602で、既存のA,Bの値が算出された行は存在しないと判断されたなら、ステップ1606に進む。
ステップ1606では、交換列と選択列が交換される。ステップ1606からは、ステップ1608に進む。ステップ1604で、交換列と選択列の既存のAが1でないと判断された場合も、ステップ1608に進む。
ステップ1608では、未確定列からAが最小である列を削除する処理が行われる。
ステップ1610では、未確定列にエントリが存在しないかどうか判断されて、もし存在するなら、図15のフローチャートのステップ1514に戻る。
未確定列にエントリが存在しないと判断されると、ステップ1612に進んで、全エントリを状態IDの値の昇順にソートする処理が行われ、次にステップ1614で、未確定エントリから操作行を削除する処理が行われる。
ステップ1616では、ポリシーは操作行が最大値であるかどうかが判断される。このポリシーは、ステップ1422またはステップ1430で決定されている。
もしポリシーは操作行が最大値であるなら、ステップ1618で、未確定エントリから、操作行より大きく、且つ、評価がSafeでないエントリが削除される。
一方、ステップ1616で、ポリシーが操作行が最大値でないと判断されたなら、ステップ1620で、未確定エントリから、操作行より小さく、且つ、評価がSafeでないエントリが削除される。次に処理は、図14のステップ1402に戻る。
図25の例において、列をソート後、各行のエントリで小さい順にソートした場合、8,9行目がSafeエントリとしてパッキングできる。そこで、未確定のエントリでSafeの出現率が高くハミング距離が大きいものを選択し、値の入れ替えにより値を大きくできるならば、値の入れ替えを行う。こうして、図26の表が得られる。
図26では、未確定のSafeエントリは6行目のエントリのみであり、これに対する操作が行われる。この列が最大となるよう値の交換が行われるが、交換可能な値は1列目の1,2、3だけであり1と3が交換される。交換後の表は図27となる。そこで、確定エントリの依存性を考慮にいれ、選択エントリが最大となるよう列を入れ替える。
ここで、図26に、図16に示すフローチャートの処理が適用される。すなわち、確定しているエントリ(1、8、9行目)以外の行である2から7行目に注目をする。同様に各列で選択したエントリが注目している行の範囲内で降順を考え何位となるかカウントする(例:1列目の3は2-7行目の範囲内で最大値であるため1番目となり、3のエントリが自分を含め2つあるため、1(2)となる。2列目も同様に1であるため2-7行目の範囲内で最大値となり、1のエントリは自分を含め3つあるため1(3)となる)。先の例と同様に、1行目より他の行と比較し値が最大になるよう列の交換を行うが、ここではすでに確定している8行目が他の行と比較し最大となるよう列を入れ替える必要がある。
そこで、選択している5行目の順位からの算出値が昇順になるよう1列目の交換を行うが、ここでは、4列目を1列目にしてしまうと、すでに確定済みの8行目が2番目となってしまい、順位の依存関係が崩れてしまうため交換ができない。つぎに1列目と2列目は順位が1位であり、かつ8行目の順位も一位であるため、1,2列目を交換しても、8行目の順位関係は変わらないため交換可能である。しかし、交換した場合でも順位は変わらず、他の行に未操作のSafeエントリがないためこれでコーディングは終了となる。この状態は、図28に示されている。
このようにして生成された非線形ブロックの状態IDと安定性のエントリを含む表は、ガード条件を生成するために使用される。例えば、図28の表の1行目は、
if (Model_State == 0) Stable();
というコードを生成する。
次に、図29のフローチャートを参照して、このようにして生成された、ガード条件718(図7)を含めて、コンパイラ720でコンパイルした実行モジュールを、実機用システム722で動作させる場合の処理を説明する。
図29のステップ2902では、実機用システム722のシナリオに基づき、通常処理と非線形ブロック内のコードが実行される。この処理は、図12のような状態の遷移に相当する。
ステップ2904で、実機用システム用に作成された実行プログラムは、組み込まれたガード条件を参照して、状態(State)が既知且つ安全な遷移状態と一致するかどうかを判断する。
もしステップ2904で、状態(State)が既知且つ安全な遷移状態と一致しないと判断されると、実行プログラムは、ステップ2906で状態をログし、ステップ2908で状態を初期化する。この状態の初期化は、自動車のエンジン制御システムなどだと、暴走や誤動作を防ぐために必要である。
ステップ2908の次は、ステップ2910に移行して、操作は終了かどうかの判断が行われる。もしそうなら、実機用システムの動作の終了となる。そうでなければ、ステップ2902に戻って、動作は継続される。
ステップ2904で、状態(State)が既知且つ安全な遷移状態と一致すると判断されると、直ちにステップ2910に移行して、操作は終了かどうかの判断が行われる。
以上、この発明を特定の実施例に基づき説明してきたが、この発明は、この特定の実施例に限定されず、当業者が自明に思いつく様々な変形、置換などの構成、技法適用可能であることを理解されたい。例えば、特定のプロセッサのアーキテクチャ、オペレーティング・システムなどに限定されない。
また、上記実施例は、MATLAB(R)/Simulink(R)を例にとって説明したが、これに限らず、任意のモデリング・ツールに適用可能であることを理解されたい。
604a、604b、604c、604d・・・ CPU
606 メイン・メモリ
608 バス
610 キーボード
612 マウス
614 ディスプレイ
616 ハードティスク・ドライブ
702 モデリング・ツール
702 シミュレーション・モデリング・ツール
704 ソースコード
706 非線形ブロック解析モジュール
810 非線形ブロック
708 状態テーブル
710 コンパイラ
712 実行システム
714 安定性判定モジュール
716 テストケース生成ブロック
718 ガード条件
720 コンパイラ
722 実機用システム
1202 ガード条件
1204 ガード条件

Claims (9)

  1. コンピュータの処理により、非線形ブロックを含む複数の機能ブロックをもつシミュレーション・システムにおいて、前記複数の機能ブロックを、スイッチドリニア化により、複数の状態からなる線形ブロックに変換するステップと、所定の動作シナリオに従い、前記スイッチドリニア化によって生成される複数の状態の間を遷移するステップとを実行しつつ、前記システムの動作を制御する方法であって、
    前記動作シナリオに従い、次に遷移すべき状態の安定性を検査するステップと、
    前記検査の結果が不安定であることに応答して、前記安定性を判定した状態の前に、該不安定な状態を検出するための第1のガード条件ブロックを配置するステップと、
    前記第1のガード条件ブロックの配置の後、前記第1のガード条件ブロックに到達することに応答して、前記システムを停止するステップを有する、
    シミュレーション・システムの動作制御方法。
  2. 未踏の状態への遷移に、第2のガード条件ブロックを付与するステップと、
    前記第2のガード条件ブロックに到達することに応答して、前記システムの動作を一旦停止し、次の状態の安定性を検査するステップと、
    前記検査の結果が不安定であることに応答して、前記第2のガード条件ブロックを第1のガード条件ブロックに置き換えるステップを更に有する、請求項1に記載の方法。
  3. 前記検査の結果が安定であることに応答して、前記第2のガード条件ブロックを除去するステップを更に有する、請求項2に記載の方法。
  4. コンピュータの処理により、非線形ブロックを含む複数の機能ブロックをもつシミュレーション・システムにおいて、前記複数の機能ブロックを、スイッチドリニア化により、複数の状態からなる線形ブロックに変換するステップと、所定の動作シナリオに従い、前記スイッチドリニア化によって生成される複数の状態の間を遷移するステップとを実行しつつ、前記システムの動作を制御するプログラムであって、
    前記コンピュータに、
    前記動作シナリオに従い、次に遷移すべき状態の安定性を検査するステップと、
    前記検査の結果が不安定であることに応答して、前記安定性を判定した状態の前に、該不安定な状態を検出するための第1のガード条件ブロックを配置するステップと、
    前記第1のガード条件ブロックの配置の後、前記第1のガード条件ブロックに到達することに応答して、前記システムを停止するステップを実行させる、
    プログラム。
  5. 未踏の状態への遷移に、第2のガード条件ブロックを付与するステップと、
    前記第2のガード条件ブロックに到達することに応答して、前記システムの動作を一旦停止し、次の状態の安定性を検査するステップと、
    前記検査の結果が不安定であることに応答して、前記第2のガード条件ブロックを第1のガード条件ブロックに置き換えるステップを更に有する、請求項4に記載のプログラム。
  6. 前記検査の結果が安定であることに応答して、前記第2のガード条件ブロックを除去するステップを更に有する、請求項5に記載のプログラム。
  7. コンピュータの処理により、非線形ブロックを含む複数の機能ブロックをもつシミュレーション・システムにおいて、前記複数の機能ブロックを、スイッチドリニア化により、複数の状態からなる線形ブロックに変換する動作と、所定の動作シナリオに従い、前記スイッチドリニア化によって生成される複数の状態の間を遷移する動作とを実行しつつ、前記システムの動作を制御するシステムであって、
    記憶手段と、
    前記動作シナリオに従い、次に遷移すべき状態の安定性を検査する手段と、
    前記検査の結果が不安定であることに応答して、前記安定性を判定した状態の前に、該不安定な状態を検出するための第1のガード条件ブロックを配置する手段と、
    前記第1のガード条件ブロックの配置の後、前記第1のガード条件ブロックに到達することに応答して、前記システムを停止する手段を有する、
    システム。
  8. 未踏の状態への遷移に、第2のガード条件ブロックを付与する手段と、
    前記第2のガード条件ブロックに到達することに応答して、前記システムの動作を一旦停止し、次の状態の安定性を検査する手段と、
    前記検査の結果が不安定であることに応答して、前記第2のガード条件ブロックを第1のガード条件ブロックに置き換える手段を更に有する、請求項7に記載のシステム。
  9. 前記検査の結果が安定であることに応答して、前記第2のガード条件ブロックを除去する手段を更に有する、請求項8に記載のシステム。
JP2009278002A 2009-12-07 2009-12-07 シミュレーション・システムの動作制御方法、プログラム及びシステム Expired - Fee Related JP4965634B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009278002A JP4965634B2 (ja) 2009-12-07 2009-12-07 シミュレーション・システムの動作制御方法、プログラム及びシステム
US12/961,479 US8868381B2 (en) 2009-12-07 2010-12-06 Control system design simulation using switched linearization

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009278002A JP4965634B2 (ja) 2009-12-07 2009-12-07 シミュレーション・システムの動作制御方法、プログラム及びシステム

Publications (2)

Publication Number Publication Date
JP2011118841A JP2011118841A (ja) 2011-06-16
JP4965634B2 true JP4965634B2 (ja) 2012-07-04

Family

ID=44082871

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009278002A Expired - Fee Related JP4965634B2 (ja) 2009-12-07 2009-12-07 シミュレーション・システムの動作制御方法、プログラム及びシステム

Country Status (2)

Country Link
US (1) US8868381B2 (ja)
JP (1) JP4965634B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011118837A (ja) * 2009-12-07 2011-06-16 Sony Corp 情報処理装置、情報処理方法およびプログラム
US8751093B2 (en) * 2012-04-16 2014-06-10 Toyota Motor Engineering & Manufacturing North America, Inc. Hierarchical accumulated validation system and method
US8751094B2 (en) * 2012-04-16 2014-06-10 Toyota Motor Engineering & Manufacturing North America, Inc. Method for validation of a graphically based executable control specification using model extraction
CN103514087B (zh) * 2012-06-18 2016-09-28 中国电子科技集团公司第四十一研究所 一种测量仪器的软件仿真验证系统
US11354463B1 (en) 2018-12-12 2022-06-07 The Mathworks, Inc. Systems and methods for generating code for computer-based physical models
CN110109514A (zh) * 2019-04-26 2019-08-09 安徽嘉亨软件开发有限公司 一种计算机软件开发用测试装置
WO2021028117A1 (en) * 2019-08-13 2021-02-18 Tetra Laval Holdings & Finance S.A. Condition monitoring in a packaging machine for liquid food
WO2022130019A1 (en) * 2020-12-17 2022-06-23 Mobileye Vision Technologies Ltd. Vehicle operation safety model test system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05181654A (ja) * 1991-12-28 1993-07-23 Nec Corp 状態図式変換装置
JPH05303408A (ja) * 1992-04-28 1993-11-16 Hitachi Ltd 制御方法及び制御装置
JPH11224106A (ja) 1998-02-06 1999-08-17 Matsushita Electric Ind Co Ltd パラメータ推定装置
JP2002127059A (ja) * 2000-10-20 2002-05-08 Sony Corp 行動制御装置および方法、ペットロボットおよび制御方法、ロボット制御システム、並びに記録媒体
JP3602809B2 (ja) * 2001-05-16 2004-12-15 本田技研工業株式会社 プラントの制御装置
US6757579B1 (en) * 2001-09-13 2004-06-29 Advanced Micro Devices, Inc. Kalman filter state estimation for a manufacturing system
US7680637B1 (en) * 2003-04-16 2010-03-16 The Mathworks, Inc. Automated linearization analysis
US7643973B2 (en) * 2004-09-13 2010-01-05 The Mathworks, Inc. Analyzing linearization of models in modeling environments
US8046207B2 (en) * 2005-12-27 2011-10-25 The Mathworks, Inc. Digital effects analysis in modeling environments
US7603185B2 (en) * 2006-09-14 2009-10-13 Honeywell International Inc. System for gain scheduling control
US7970482B2 (en) * 2007-08-09 2011-06-28 Honeywell International Inc. Method and system for process control
US8467888B2 (en) * 2009-06-05 2013-06-18 The Mathworks, Inc. Automated PID controller design

Also Published As

Publication number Publication date
US8868381B2 (en) 2014-10-21
JP2011118841A (ja) 2011-06-16
US20110137631A1 (en) 2011-06-09

Similar Documents

Publication Publication Date Title
JP4965634B2 (ja) シミュレーション・システムの動作制御方法、プログラム及びシステム
Ehlers et al. Slugs: Extensible gr (1) synthesis
JP5209059B2 (ja) ソース・コード処理方法、システム、及びプログラム
JP4629768B2 (ja) 並列化処理方法、システム、及びプログラム
US7734455B1 (en) Test postcondition items for automated analysis and test generation
JP4886838B2 (ja) 並列化方法、システム、及びプログラム
US8903688B1 (en) Test entities for evaluation and validation of a model
JP6592605B2 (ja) Ecuシミュレーション装置
US10078500B2 (en) Method and system for automatic code generation
JP5479942B2 (ja) 並列化方法、システム、及びプログラム
US7266791B2 (en) High level synthesis device, method for generating a model for verifying hardware, method for verifying hardware, control program, and readable recording medium
Poorhadi et al. Analysing the impact of security attacks on safety using SysML and event-B
US10970183B1 (en) System and method for improving model performance
JP7045921B2 (ja) 半導体lsi設計装置および設計方法
US11544436B1 (en) Hardware-software interaction testing using formal verification
US12001771B2 (en) Variant model-based compilation for analog simulation
US20130318487A1 (en) Programmable Circuit Characteristics Analysis
CN115328772A (zh) 激励组合与模块相关性的学习方法与测试脚本产生方法
US7454680B2 (en) Method, system and computer program product for improving efficiency in generating high-level coverage data for a circuit-testing scheme
JP5001126B2 (ja) ハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、制御プログラムおよび可読記録媒体
US9830174B2 (en) Dynamic host code generation from architecture description for fast simulation
EP4113282A1 (en) Method and system for generating programs for an automation system by code-similarity based approach
JP5076785B2 (ja) プラント運用計画装置、そのプログラム
Ding et al. Efficient model-level reliability analysis of simulink models
US10380296B2 (en) Connecting designs in mixed language environments

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110823

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111028

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120329

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150406

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees