(57)【要約】  グラフィカルモデルの動態とそのモデルの構成要素の実行との因果関係を指定し、構成するための方法を開示する。モデル構成要素の実行はモデルイベントの発生に結びつけられている。最初に、モデルイベントをモデリング環境で定義する。イベントの定義で指定されたモデルにおける条件が発生すると、そのイベントが「告知」される。そのイベントの発生に関連付けられているモデル構成要素が、そのイベント告知の通知を「受け取り」、実行される。サブシステム内の任意構成要素を、モデル内の非連続構成要素としてイベントの発生時に実行するように指定できる。モデルイベントと構成要素の実行との関連付けは、モデルのビューにおいて構成要素を連結するグラフィカル標識を描くことなく指定できる。
2007518190.tif 000002
【特許請求の範囲】
【請求項１】
複数の実行可能な時間ベースの構成要素を具備した少なくとも１つのモデルを備えると共に該モデルのビューを提示するグラフィカルモデリング環境における方法であって、
ラベルにより参照される指定イベントの発生を確認するために、前記モデルの実行を監視する段階と、
前記モデルの前記実行時に前記指定イベントの前記発生を確認する段階と、
前記グラフィカルモデリング環境における前記イベントの前記発生をイベントハンドラに告知する段階であって、該告知が前記イベントの前記発生を前記イベントハンドラに通知する、告知する段階と、
前記通知に応答して、前記複数の構成要素のうちの、前記ラベルに関連付けられた少なくとも１つの構成要素を実行する段階とを含む、方法。
【請求項２】
前記複数の構成要素の少なくとも１つを前記イベントハンドラに登録する段階と、
前記告知に続いて、前記イベントの前記発生の通知を、前記イベントハンドラに登録した前記複数の構成要素の少なくとも１つにおいて受け取る段階とを更に含む、請求項１に記載の方法。
【請求項３】
告知構成要素を前記ビューに表示する段階を更に含み、前記告知構成要素が、前記告知が行われる条件を指定する、請求項１に記載の方法。
【請求項４】
少なくとも１つの構成要素の初期実行のサンプル時間を前記指定イベントの前記発生に指定する段階を更に含む、請求項１に記載の方法。
【請求項５】
前記サンプル時間を前記モデルの少なくとも１つの他の構成要素に伝播する段階を更に含み、前記少なくとも１つの他の構成要素がサンプル時間を継承するよう構成される、請求項４に記載の方法。
【請求項６】
前記モデルにおける複数の非連続構成要素のサンプル時間を前記イベントの前記発生に設定する段階を更に含む、請求項４に記載の方法。
【請求項７】
前記複数の非連続構成要素の前記サンプル時間が、前記ビューで表示される構成要素間の可視連結を調整しなくても設定される、請求項６に記載の方法。
【請求項８】
前記少なくとも１つの構成要素の前記サンプル時間が前記イベントに設定されていることを、前記ビューにおいてイベント識別名を用いて表示する段階を更に含む、請求項４に記載の方法。
【請求項９】
前記イベントがユーザによって設定される明示イベントである、請求項４に記載の方法。
【請求項１０】
前記イベントが前記モデルの前記実行によって生じる暗黙イベントである、請求項４に記載の方法。
【請求項１１】
前記暗黙イベントがパワーアップ、パワーダウン、及び初期設定の１つである、請求項１０に記載の方法。
【請求項１２】
前記暗黙イベントがサブシステムの使用可能及び使用禁止の何れかに対応する、請求項１０に記載の方法。
【請求項１３】
構成要素がどのイベントを受け取るかを、前記ビューにおいてユーザ構成可能な色で示す段階を更に含む、請求項２に記載の方法。 
【請求項１４】
前記モデルの前記実行を監視する対象となる前記指定イベントの実行範囲が、前記モデルの一部に制限されている、請求項１に記載の方法。
【請求項１５】
前記モデルの各イベントがイベントハンドラに１対１でマッピングし、該イベントハンドラが関数である、請求項１に記載の方法。
【請求項１６】
前記関数がインライン化されている、請求項１５に記載の方法。
【請求項１７】
前記通知に応答して、分岐優先順位ブロックが少なくとも２つのブロック分岐の実行順序を示す、請求項１に記載の方法。
【請求項１８】
前記通知に応答して２つ以上のブロックグループが実行され、該ブロックグループがユーザにより選択されたブロックグループであり、該ブロックグループの実行順序がユーザにより指定される、請求項１に記載の方法。
【請求項１９】
複数の実行可能な構成要素を具備した少なくとも１つのモデルを備えたモデリング環境における方法であって、
指定イベントの発生を確認するために前記モデルの実行を監視する段階と、
前記モデルの前記実行時に前記指定イベントの発生を確認する段階と、
前記指定イベントの発生の前記確認に応答して実行中イベントの前記実行に割り込む段階と、
前記指定イベントの発生の前記確認に応答して、前記モデルにおいて演算を実行する段階とを含む、方法。
【請求項２０】
前記指定イベントが通常イベントとして扱われ、
前記割り込まれたイベントの実行を再開する段階を更に含む、請求項１９に記載の方法。
【請求項２１】
前記指定イベントが例外イベントとして扱われ、
前記割り込まれた実行中イベントの実行を再開することなく、前記モデルの前記実行の制御を、該割り込まれたイベントを呼び出した呼出プロセスに返す段階を更に含む、請求項１９に記載の方法。
【請求項２２】
前記指定イベントが、インスタンス生成されたイベントオブジェクトを用いて指定される、請求項１９に記載の方法。
【請求項２３】
前記イベントが明示イベントである、請求項２２に記載の方法。
【請求項２４】
前記イベントが暗黙イベントである、請求項２２に記載の方法。
【請求項２５】
前記イベントオブジェクトがタスクオブジェクトに関連付けられており、該タスクオブジェクトがオペレーティングシステム・タスクに対応する、請求項２２に記載の方法。
【請求項２６】
前記タスクオブジェクトが指定実行レート及び優先順位の少なくとも１つを備えた、請求項２５に記載の方法。
【請求項２７】
異なるタスクを備えた少なくとも２つのイベントがモデルにおいて実行され、
イベント遷移構成要素を用いて前記少なくとも２つのイベントに関連付けられた構成要素の実行をスケジューリングする段階を更に含み、該イベント遷移構成要素が、前記少なくとも２つのイベントに関連付けられた前記構成要素の前記実行を分離する、請求項２６に記載の方法。
【請求項２８】
前記演算が分岐優先順位ブロックに示された実行順序により制御される、請求項１９に記載の方法。
【請求項２９】
前記演算が２つ以上のブロックグループの実行であり、該ブロックグループがユーザにより選択されたブロックグループであり、該ブロックグループの実行順序がユーザにより指定される、請求項１９に記載の方法。
【請求項３０】
モデリング環境におけるシステムであって、
複数の実行可能な構成要素を備えた少なくとも１つのグラフィカルモデルと、
前記モデルから、指定イベント発生の通知を受け取るイベントハンドラと、
少なくとも１つの受信ブロックとを含み、該受信ブロックが前記指定イベントの発生に関する通知を前記イベントハンドラから受け取り、前記通知に応答して実行される、システム。
【請求項３１】
前記イベントが前記モデルの実行から生じるエラーイベントである、請求項３０に記載のシステム。
【請求項３２】
前記指定イベントの発生によって前記モデルの２つ以上の構成要素が実行される、請求項３０に記載のシステム。
【発明の詳細な説明】
【関連出願】
【０００１】
本願は、その内容を引用して本明細書に援用する２００４年１月１５日に提出された米国特許出願第１０／７５９，３４６号の利益を主張する。
【技術分野】
【０００２】
本発明の例示的な実施形態は、概して、モデリング環境内でモデル構成要素を実行することに関し、より詳細には、モデルイベントを用いたモデリング構成要素の実行スケジューリングに関する。
【０００３】
関連出願
本発明の例示的な実施形態は、「ブロックダイヤグラム・モデリングで実行コンテキストを使用するためのシステム及び方法」と題した現在係属中の米国特許出願第１０／４１４，６４４号に関連し、その内容を引用して本明細書に援用する。
【背景技術】
【０００４】
マサチューセッツ州ナティック所在のThe Mathworks社から入手可能のSimulink（商標）はグラフィカルモデリング環境、特にブロックダイヤグラム環境の一例である。Simulink（商標）により、ユーザは動的システムの画像モデルを作成できる。このモデルはブロックと呼ばれる一組の記号からなる。それぞれのブロックは、ゼロ個又はそれ以上の数の入力ポートと、出力ポートと、状態とを備えることができる。それぞれのブロックは、その入力と、状態と、出力とが連続的に且つ／或いは特定の時刻に離散的に変化しうる動的システムを表す。線を用いてブロックのポートを互いに連結し、ブロック間のデータ従属性を表現する。信号は、ブロックダイヤグラム内のブロック同士を連結する線に沿って伝達する値として表すことができる。
【０００５】
あるブロックの入力、状態、及び出力の全てが連続的に或いは単一の固定した周期的なレートで変化する場合、このブロックを「シングルレート」ブロックという。入力、状態、及び出力が、２つ以上のレートで定義される複数の時刻で同時に或いは別々に更新する場合、このブロックを「マルチレート」ブロックという。あるモデルがマルチレートブロックを含むか、異なるレートで動作する２つ以上のシングルレートブロックを含む場合、そのモデル自身はマルチレート（シングルレートでなく）である。
【０００６】
あるブロックの関数定義がそのブロックが置かれているモデルのコンテキスト外部にある場合、そのブロックを「アトミック」と呼ぶ。Simulink（商標）は、一組の予め定義済みのブロック（例えば、合計、積、ゲインなど）を備えており、又、ユーザは自分で書いた「Ｓ関数」を介して自分自身のアトミックブロックを作成することも可能である。アトミックであるため、Ｓ関数の関数定義は、例えばＣコード又はMATLAB「ｍ」コードなどを用いてモデルのコンテキスト外部に指定される。「合成」ブロックとは、その定義がアトミック及び合成ブロックの組を用いて該モデルを介して指定されるブロックである。Simulink（商標）では、ユーザは、「サブシステム」、その定義が相互連結した定義済みのブロックの組からなる合成ブロック、ユーザが書いたＳ関数、及び他のSimulink（商標）サブシステムを指定できる。サブシステムを階層的に入れ子にして、「モデル階層」を定義できる。
【０００７】
Simulink（商標）のサンプルレートにより、モデルの構成要素を実行する頻度が指定可能となる。図１は、モデル構成要素の実行を制御するにあたりサンプルレートを使用する例を示す。例えば、設計者は、プラントブロック４が連続レートで実行し、コントローラブロック１０が周期的且つ離散的レートで実行することを指定できる。モデル構成要素の実行は、シミュレーション時にSimulink（商標）インフラストラクチャにより、或いは実時間実装を目的としてオペレーティングシステムによりスケジューリングされる。モデルの動態とこれらレートのスケジューリングとの間には何の因果関係もなく、構成要素が実行される時点は予め定められている。
【０００８】
Simulink（商標）はサンプルレートの伝播をサポートする。例えば、図１のゲインブロック８及び１２のレートは未指定のまま（すなわち、「継承」と指定）であるかもしれない。その場合、プラントブロック４及びコントローラブロック１０のレートが指定されていると仮定すると、ゲインブロック８及び１２はプラントブロック４及びコントローラブロック１０からそれらのレートを継承する。
【０００９】
Simulink（商標）は、モデルの動態とモデル構成要素の実行との因果関係を指定する機構も提供し、それには関数呼び出し、トリガ動作サブシステム、繰返し子サブシステム、アクションサブシステム、及び使用可能サブシステムが含まれる。因果関係を指定することにより、ユーザは、モデル内の信号及び他のデータの現在及び過去の値を条件としてモデル構成要素の実行を指定できる。
【００１０】
しかし、条件付き実行の範囲は一般に１つのサブシステムに限定されており、その理由は、上記関係を指定する従来の方法では、条件付き実行の範囲を任意ブロックの組（サブシステムを構成するブロックの組でなく）として定義できないからである。あるサブシステムに含まれず且つ／或いはモデル内で連続的でない一組のブロックを同時に実行するのが望ましい場合があるので、これは大きな制約である。例えば、条件付き実行の従来方法では、モデル内に分散された様々なブロックをパワーアップやパワーダウン次に実行できない。結果的に、因果関係の構成様態は限定されてしまう。モデルの動態とモデル構成要素の実行との因果関係を指定する従来の方法では、ユーザがサブシステム内のブロックの半分を使用可能とし、その他ブロックをトリガすることもできない。同様に、サブシステム内の幾つかのブロックを１つのトリガでトリガし、残りのブロックを別のトリガでトリガすることもできない。
【００１１】
モデルの動態とモデル構成要素の実行との因果関係を指定する従来の機構の別の欠点は、これら機構が、因果律を示すためにブロックダイヤグラム内でグラフィカルな結合を必要とする点である。これを行うとユーザによっては、ダイヤグラムの視覚表示が錯綜した状態となると感じることがある。因果関係を指定するための従来の機構の別の制約は、これら機構が、高度なソフトウェア或いは初期設定、例外、又はタスクなどのオペレーティングシステム構成体に自然にマッピングしないことである。同様に、こうした因果関係を指定するための従来の機構は、この関係に関連付けられたファーストクラスオブジェクトを欠いているので、この関係を構成し、特性を割り当てるのが困難である。又、ユーザがこうした機構（例えば、使用可能サブシステムに関連付けられた使用可能及び使用禁止を実現する方法）に関連付けられた暗黙の動態に直接的に影響を与え、これら暗黙の動態に基づいてモデルの構成要素を条件付きで実行するのも容易でない。
発明の概要
【００１２】
本発明の例示的な実施形態は、モデルの動態（原語：dynamics）とそのモデルの構成要素の実行との因果関係を指定し、構成するための機構を提供する。モデル構成要素の実行は「モデルイベント」の発生に結びつけられている。最初に、モデルイベントをモデリング環境で定義する。前記イベントの定義で指定された前記モデルにおける条件が発生すると、該イベントが「告知（原語：post）」される。前記イベントの発生に関連付けられているモデル構成要素が、前記イベント告知の通知を「受け取り」、実行される。サブシステム内の孤立した構成要素やモデル内の非連続構成要素をイベントの発生時に実行するように指定できる。モデルイベントと構成要素の実行との関連付けは、前記モデルのビューにおいて構成要素を連結するグラフィカル標識を描くことなく指定できる。
【００１３】
一実施形態では、複数の実行可能な構成要素を具備した少なくとも１つのモデルを備えたモデリング環境において、一方法は、前記モデルの実行を指定イベントの発生に関して監視する。前記指定イベントの発生が確認されると、該発生はイベントハンドラに告知される。すると、前記イベントハンドラへの通知に応答して構成要素が実行される。
【００１４】
別の実施形態では、複数の実行可能構成要素を具備した少なくとも１つのモデルを備えたモデリング環境において、一方法は、前記モデルの実行を指定イベントの発生に関して監視する。前記指定イベントの発生が確認されると、前記指定イベントの発生の確認に応答して、別のイベントの実行に割り込みが掛けられる。前記指定イベントの発生の確認に応答して、前記モデルにおける演算が行われる。
【００１５】
一実施形態では、モデリング環境において、システムは複数の実行可能構成要素を備えたグラフィカルモデルを含む。前記システムはイベントハンドラも含む。前記イベントハンドラは、前記モデルから指定イベントの発生の通知を受け取る。更に、前記システムは、前記イベントハンドラから前記指定イベントの発生の通知を受け取る少なくとも１つの構成要素を含む。前記の通知を受け取る構成要素は、前記通知に応答して実行される。
【発明を実施するための最良の形態】
【００１６】
本発明の例示的な実施形態は、モデル構成要素の実行を、指定されたモデルイベントの発生に結びつけるための機構を提供する。サンプルレートはイベントとして指定されるので、モデル構成要素の実行をそのモデルの動態に結びつける。非連続モデル構成要素を、モデルイベント発生に基づいて条件付きで実行するように構成できる。更に、構成要素実行の範囲は、ある種の従来システムで必要となるように、サブシステム全体には制限されない。イベントの発生に基づいた構成要素の条件付き実行は、例外処理にも利用できる。モデルのビューに付加的な構成要素結合を描かなくても、モデル構成要素とイベントと間の関連付けを確立できる。
【００１７】
説明を明確にするため、本明細書に含まれる本発明の例示的な実施形態は、Simulink（商標）及びMATLAB（商標）に基づいたモデリング環境（何れもマサチューセッツ州ナティック所在のMathWorks社から入手可能なアプリケーション）を参照して説明する。しかし、当業者であれば、本発明の例示的な実施形態は、マサチューセッツ州ナティック所在のMathWorks社から入手可能なStateflow（商標）を含む従来のブロックダイヤグラム、状態ダイヤグラミング・アプリケーション、及びデータフロー・ダイヤグラミング環境に加え、それ以外のモデリング環境及びそれ以外の種類のダイヤグラムにも適用できることは理解するはずである。
【００１８】
本発明の例示的な実施形態で使用されるようなSimulink（商標）モデルイベント（これ以降は「イベント」又は「Simulink（商標）イベント」とも呼ぶ）は、MATLABワークスペースにおいてオブジェクトとして明示的に定義できる。その属性は、名前、色、オプションの期待レート、オプションのタスク、及び該イベントに対応する関数がどのように実装されるべきか（インラインに対する明示的に定義したシグナチャ）に関する説明を含むことができる。
【００１９】
定義済みのイベントは、ユーザが定義する任意の条件に基づいて、モデル内でブロックにより「告知」される。そのイベントを「受け取る」ブロックは、それが告知されるとそれを実行する。「告知」とは、特定イベントの発生を示すメッセージをイベントハンドラに送ることである。イベントハンドラに登録或いはその他の様態で関連付けられているブロックには、そのイベントが告知された時にその発生が通知されることになる。
【００２０】
図２は、告知処理を利用するモデル２０の一例を示す。イベント「Ａ」は定義済みで、「青」色の属性を与えられている。モデル２０では、「告知」ブロック２２は、その入力ポート２６の信号がゼロを上回る時を条件としてイベント「Ａ」を告知するよう構成されている。ダイアログボックスは、ユーザから告知ブロック２２に関する幾つかのパラメータを要求する。これらパラメータは、インプットの数３６、このブロックが実行される条件３８、及び定義済みモデルイベント４０に割り当てられる名前４０を含む。モデル２０のビューは、「定数」ブロック２８のサンプルレートがイベント「Ａ」に指定されていることを示している。このサンプルレート（すなわち、イベント「Ａ」の発生）は、そのサンプルレートを継承するように設定されている「単位遅延」ブロック３０及び「出力１」ブロック３２に伝播する。従って、３つのブロック全てがイベント「Ａ」を受け取る。これら３つのブロック２８、３０、及び３２全ては、イベント「Ａ」の「色」を帯び、論理的関連付けをユーザに表す方法として表示において青で陰影を付けることができる。従って、「正弦波」ブロック２１の出力が正の時は、「Ａ」が「告知」ブロックにより告知され、３つのブロック２８、３０、及び３２が実行され、このモデルのルートアウトポートの値が更新される。
【００２１】
図２に示したモデルは、本発明の例示的な実施形態で与えられるサブシステムの条件付き実行に関連した幾つかの問題の解決を示している。因果関係に関連付けられたファーストクラス・オブジェクト「Ａ」が存在するので、色などの特性を構成し、その関係に割り当てることができる。条件付き実行の範囲はサブシステムに限定されない。条件付きで実行される３つのブロック２８、３０、及び３２は親サブシステム内でグループ化されておらず、モデル２０の不連続域から選択できる。更に、この条件付き実行の範囲はレート伝播を利用する（「定数」ブロック２８のみが「Ａ」をそのサンプルレートとして指定している）。この結果得られるサンプルレート指定方法は、「Ａ」を受け取る全てのブロックがそのサンプルレートを「Ａ」として明示的に指定されていなければならない場合に比べて簡潔となる。又、ブロックとイベントとの関連付けでは、ダイヤグラムにおいて告知ブロック２２と定数ブロック２８とのグラフィカル結合を行って因果律を示す必要がない。「告知」ブロック２２によって指定された条件と、３つのブロック２８、３０、及び３２の実行との間の因果関係は、「Ａ」と名付けたイベントオブジェクト２３への共通参照を介したものである。
【００２２】
任意イベントの「範囲」とは、それが存在する作業領域の範囲である。作業領域がサブシステム又はモデルに関連付けられている場合、イベントの範囲はそのサブシステム又はモデルである。ブロックがそのサンプル時間をイベントとして指定できるのは、そのイベントが該ブロックからの範囲内にある場合である。
【００２３】
図３は、明示的告知及びイベントの受け取りが行われる環境の別の例を示し、Stateflow（商標）チャート３０とそのチャートの構成要素のブロックダイヤグラム・モデル３２とをより詳細に表示している。この例では、ユーザは、それぞれ属性を緑色及び青色としたイベント「Ａ」３４及びイベント「Ｂ」３６を定義する。イベント３４及び３６は両方ともサンプルレートが２０ミリ秒と指定されている。すると、Stateflowチャート３０は２０ミリ秒毎に実行され、正しく定義された周期的順番でこれらイベントを告知する。２つの入力ポートブロック４０及び５０は、そのサンプルレートをイベント「Ａ」３４及び「Ｂ」３６に設定してある。残りのブロックは、これらイベントを継承サンプルレートとして受け取り、これらイベントに一致した色で陰影を付けられている。緑色のブロック４０、４２、４４、及び４６からなる組はイベント「Ａ」を受け取り、そのイベントが告知されたときに実行される。同様に、青色のブロック５０、５２、５４、及び５６からなる組は、イベント「Ｂ」が告知されたときに実行される。
【００２４】
それぞれのイベントを処理するブロックの組は、モデルのソート済みブロックリストに現れる相対順で実行する。このソート済みブロックリストの順序はデータの従属性により決定される。従って、２０ミリ秒毎にStateflowチャート３０が実行され、一連の緑色ブロック４０、４２、４４、及び４６が左から右に実行され、続いて一連の青色ブロック５０、５２、５４、及び５６が左から右に実行される。更に、これらイベントのオプションのサンプルレートは２０ミリ秒であると明示的に指定されているので、実行時間検査を行ってこれらイベントが２０ミリ秒毎に告知されることを表明する。イベントのレートを明示的に指定する１つの利点は、そのレートで生成される任意コードが、連続実行の間に経過時間が必要な場合は、通常のようにタイマ使用を必要とするのでなく、この生成コードにおいて対応する定数サンプル時間を使用できることである。
【００２５】
明示イベントとは作業領域オブジェクトとして定義され、その告知条件がユーザにより（例えば、Simulink（商標）の「告知」ブロック又はStateflowロジックを使用することで）明示的に指定されているものだが、こうした明示的イベントとは対照的に、暗黙イベントはモデル構成体により暗黙に定義され、こうした構成体の実行に応答して自動的に告知される。ユーザは暗黙イベントを告知できない。しかし、ユーザは暗黙イベントを扱うことができるが、これはユーザが暗黙イベントに直接応答して実行されるモデル構成要素を定義できるという意味である。
【００２６】
本発明の例示的実施形態は、次の表に示した５種類の暗黙イベントを含む。
【００２７】
【表１】
2007518190.tif 000003
【００２８】
当業者であれば、上記の表に挙げたものに加えて、他の種類の暗黙イベントを本発明の範囲から逸脱することなく扱うことができるのは理解するはずである。例えば、サポートできる他の種類の暗黙イベントには、積ブロックがゼロで除算を試みたり、対数ブロックがゼロの対数を取ろうとしたりする時に告知される暗黙イベントなどのエラー条件が含まれる。暗黙イベントに対応したオブジェクトはモデルの様々な作業領域に自動的にポピュレートされ、そのプロパティがユーザにより構成可能となる。
【００２９】
図４は、上記表に記載した暗黙イベントをタイミング図で示したものである。図４は、使用可能サブシステムにおいて範囲内にあるイベント又は関数呼出し階層におけるその下位要素（原語：descendents）の相対タイミングを示す。時間変化信号はこのサブシステムを使用可能とする信号である。５種類の暗黙イベント全ては非同期サンプルレートを備えている。暗黙イベントは、起動７０、初期設定７２、使用可能７４、使用禁止７６、及びシャットダウン７８を含む。
【００３０】
使用可能サブシステム９０における暗黙イベントの使用例を図５に示した。サブシステム９０は、該サブシステムが使用可能や使用禁止になった時に告知される、それ自身に関連付けられた暗黙の使用可能及び使用禁止イベントを含む。「ゼロ次保持」ブロック９２はそのサンプルレートが「使用禁止」に指定されているため、暗黙の使用禁止イベントが実行された時、すなわち使用可能サブシステム９０が使用禁止となった時に実行される。「ゲイン１」ブロック９４も、伝播によってそのイベント（使用禁止）をそのサンプルレートとして継承し、これら２つのブロックは、サブシステム９０が使用禁止となった時に同時に実行し、且つサブシステム出力ポート９６に関連付けられたメモリを更新する。
【００３１】
本発明の例示的な実施形態における各イベントは、そのサンプルレートが該イベントとして指定又は継承されているブロックに対応したコードへのエントリーポイントとして機能する関数（本明細書では「イベントハンドラ」とも呼ぶ）に１対１でマッピングする。イベントの告知を引き起こす条件が真であるときは、システムは必ずこの関数を呼び出すという反応を示す。この関数はコード生成時にインライン化してもよい。イベントの関数をインライン化するかどうかの選択は、対応するイベントオブジェクトのプロパティの１つである。デフォルト実装として、ユーザは暗黙イベントの関数をインライン化し、明示イベントの関数をインライン化しないよう選択できる。
【００３２】
Simulink（商標）イベントのプロパティの１つはそのタスクである。デフォルトでは、イベントは、それが告知される元となるコンテキストからそのタスクを継承する。例えば、図３ではイベント「Ａ」３４及び「Ｂ」３６は、これらイベントを告知するStateflowチャート３０と同一のタスクで実行される。図３のモデルに対応した下記の擬似コードに示したように、生成コードは、「Ａ」及び「Ｂ」に対応する関数をローカル関数呼び出しとして呼び出す。
【００３３】
【数１】
2007518190.tif 000004
【００３４】
イベントのタスクはモデル・タスクオブジェクトの名前として指定してもよく、実時間実装におけるタスクに対応する。Simulink（商標）タスクオブジェクトは、生成されたオペレーティングシステムのタスクに対応する。タスクオブジェクトのプロパティは、指定レート（周期的な値又は非同期）、優先順位、タスクスタックサイズ、該タスクがプリエンブティブル（原語：preemptible）かどうか、及びその他のプロパティを含むことができる。あるイベントが告知され、そのイベントのタスクがそのイベントを告知したブロック又はモデル構成体のタスクとは異なる場合、そのイベントに対応する関数がそのイベントのタスクにスケジューリングされる。もしそのタスクが周期的として指定されている場合、その関数はそのイベントが告知されているそのタスクの任意タイムステップ時に実行される。もしそのタスクが非同期に指定されている場合、そのイベント告知によって、そのタスクはオペレーティングシステムにより実行されることになる。
【００３５】
本発明の例示的実施形態は、タスクの使用を介してイベントの非同期的告知とマルチスレッドの実装を回避する。タスクを用いて、実時間実装においてイベントを用いる際にデータの完全性を保証する助けとするが、これは、データの完全性のためイベント遷移ブロックがどこで必要とされているかを示すことにより達成される。又、タスクは、遷移に関連付けられたタスクの相対的優先順位を指定するためにも使用される。本発明の例示的実施形態は、Simulink（商標）のレート遷移ブロックを一般化したものであるイベント遷移ブロックを用いる。図６Ａ、６Ｂ、及び６Ｃは、イベント遷移及びイベント遷移ブロックの使用に関わる幾つかの問題を示す。
【００３６】
図６Ａは、イベントＡ及びイベントＢの発生に応答して遷移が発生したモデル１００を示す。モデル１００では、イベントＡ及びイベントＢは同一のタスクを備え、データの完全性問題は、持続メモリを用いてこれら２つのイベント間の境界のデータを記憶することにより解決できる。これら２つのイベントは同一タスク内にあるため、互いをプリエンプトすることはできないし、付加的な機構（例えば、ダブルバッファリング）も必要ない。モデル１００では、持続メモリは、２つの左の伝達関数１０２及び１０４の出力のために使用され、伝達関数ブロック１０２、１０４、及び１０６間でデータを伝達するのに遷移ブロックは必要ない。
【００３７】
しかし、イベントＡ及びＢが異なるタスクで実行されるよう指定されている場合、図６Ｂに示したようにイベント遷移ブロックが必要となる。図６Ｂのモデル１１０では、イベントＡは高優先順位のタスクを備え、イベントＢは低優先順位のタスクを備える。この場合、第１伝達関数ブロック１１２と第２伝達関数ブロック１１６との間の境界に位置した遷移１１４と名付けられたブロックが、ゼロ次保持（原語：Zero
Order Hold）として機能する。第２伝達関数ブロック１１６と第３伝達関数ブロック１２０との間の境界に位置した遷移１１８と名付けられたブロックが、デフォルトで遅延として機能する。
【００３８】
図６Ｃの時間線は、図６Ｂのイベント遷移ブロックの機能を示す。イベント遷移ブロックである遷移１１４はゼロ次保持として機能するため、このブロックは、図中で「ＺＯＨ」というラベルを付けたタイムスライスにより表されている。イベント遷移ブロックである遷移１１８は遅延として機能するため、このブロックは、図中で「１／ｚ」というラベルを付けたタイムスライスにより表されている。イベントＡに割り当てられたタスクがイベントＢを含むタスクをプリエンプトしない限り、イベント遷移ブロックである遷移１１４は、イベントＡのハンドラが実行される度に実行される。これによって、Ｂのハンドラへの入力がその実行途中で変化することが避けられる。これが必要なのは、非同期の因果関係システムでは、イベントＢが次にいつ告知されるかを前もって知る方法はないからである。イベント遷移ブロックである遷移１１８の出力関数は、イベントＢのハンドラが実行を完了した後で、イベントＡが告知される度に実行される。これによって、イベントＡのハンドラがＢのハンドラにより計算された最新値を使用するが、必要なければ遷移１の出力関数を実行しないことが保証される。
【００３９】
従って、図６Ｃでは、イベントＢに関連付けられた低優先順位のタスクが実行され（ステップ１３０）、遅延が実行され（ステップ１３２）、イベントＡに関連付けられた高優先順位のタスクが実行され（ステップ１３４）、続いてゼロ次保持が実行される（ステップ１３６）。すると、イベントＡに関連付けられたタスクが実行される（ステップ１３８）が、ここでは、最後にＡが実行されてからＢは実行されていないので遅延が先行することはない。高優先順位のタスクが実行されると（ステップ１３８）、それに続いてゼロ次保持（ステップ１４０）が実行される。すると、Ｂに関連付けられた低優先順位のタスク（ステップ１４２）が実行され、高優先順位のタスク（ステップ１４４）による割り込みが起こる。高優先順位のタスク（ステップ１４４）が完了すると、低優先順位のタスクが既に開始しているので、この低優先順位のタスク（ステップ１４２）はゼロ次保持が実行されることなく再開する。この処理は更に継続していき、順番に遅延（ステップ１４６）、高優先順位のタスク（ステップ１４８）、及びゼロ次保持（ステップ１５０）が実行される。
【００４０】
データの完全性を保証するだけでなく、イベント遷移ブロックはイベント伝播時の解決に必要となることがある。しかし、同一タスク内のイベント間の遷移においては、このブロックはその入力値を持続出力にコピーする。そして、このブロックを小さくするためポストコンパイルを試行してもよい。遷移ブロックは、そのメモリを初期設定するために初期条件パラメータを必要とすることに注目されたい。ある実装例では、このパラメータのデフォルト値はゼロである。
【００４１】
又、イベントを用いてモデルの実行時に遭遇するエラーを処理可能である。エラーが発生すると、モデルは「例外的に（原語：exceptionally）イベントを告知」できる。例外的に告知されるイベントは「例外イベント」と呼ばれる。例外イベントの重要な特徴は、これには非例外的に告知されたイベントすなわち「通常イベント」とは異なった処理が行われることである。具体的には、あるイベントが別の例外イベントを告知した場合、例外イベントの関数を出ると最初のイベントの関数は実行を再開することはない。言い換えると、仮にＢがＡに例外的に割り込むと、Ｂが完了した後にＡの実行は再開されない。任意イベントは、同一モデルで通常どおりに或いは例外的に呼び出しできることに注目されたい。
【００４２】
例外イベントのモデルにおける使用は図７Ａに示した。モデル１６０では、上側の構成要素はイベントＡのハンドラの一部である。入力ｕ１  １６２の大きさが１ｅ−６以下であれば、イベントＢは、例外サブシステム１６４のスローブロック１６６により例外的に告知される（略して、スローされる）。例外サブシステム１６４は入力１６２を評価し、入力ｕ１  １６２が１ｅ−６以下の場合はイベントＢをスローするだけである。スローブロック１６６の機能は告知ブロックと似ているが、スローブロック１６６は通常どおりでなく例外的にイベントを告知する点が異なる。イベントＢがスローされると、イベントＢのハンドラが実行され、データ格納１６８を大きな固定定数に設定する。イベントＢのハンドラが終了すると、イベントＢが例外としてスローされているので、制御はイベントＡのハンドラに戻らず、呼出し処理に戻る。図７Ａに示した処理を表すコードは次のように表現できる。
【００４３】
【数２】
2007518190.tif 000005
【００４４】
仮にイベントＢが例外としてではなく通常どおり告知されていれば、イベントＢのハンドラが終了した時には、イベントＡのハンドラが実行を終了したはずである。これらの２つの対照的なシナリオは図８に抽象的に示した。当業者であれば、イベントはデータ従属性により暗黙に定義される因果関係を超えた因果関係を導入するので、イベントをモデルに導入する際にブロックがどのようにソートされるかを制御するための正確な機構を備えることは重要なことは理解するはずである。
【００４５】
図７Ａのモデルは、アトミック・サブシステムを用いて、例外イベントＢを介して条件付きで回避することを意図した積ブロックの前にスローブロックが実行されるソート済みブロック順序の実行を徹底する。このアトミック・サブシステムはソート済みブロックリストで積ブロックより早いので、スローブロックも含むその内容は積ブロックより前に実行される。アトミック・サブシステムの欠点は、その内容がその親グラフと同一図表レベルでレンダリングされないので、その内容の識別が容易でなくなることである。
【００４６】
実行順序を制御するためにアトミック・サブシステムを使用する代わりの代替機構では、ブロックから出る分岐の優先順位を割り当てる。すると、分岐内の全ブロックはその分岐の優先順位を継承する（そうした継承が一意であり、曖昧でない場合）。図７Ｂには、下側分岐内のブロックを上側分岐内のブロックより前に実行すべきことを指定した「分岐優先順位ブロック」１７０を示した。図７Ｃは、図７Ｂの分岐優先順位ブロック１７０により決定される実行順序を示す。分岐優先順位ブロック１７０内の数「１」（１７２）は、下側分岐が最初に実行されるべきことを示している。分岐優先順位ブロック１７０内の数「２」は、上側分岐が２番目に実行されるべきことを示している。
【００４７】
実行順序を制御するためのアトミック・サブシステム使用に代わる付加的な代替方法を図７Ｄに示した。図７Ｄは「ブロックグループ」を使用することを示している。グループ１（１７６）のブロックは、ソート済みブロックリストにおいてグループ２（１７８）のブロックよりも前に現れる。
【００４８】
２つのイベントの通常の告知処理を示した図８における左側のダイヤグラムでは、モデルの実行（ステップ１８０）がイベントＡ（ステップ１８２）をトリガする。イベントＡの実行時に、イベントＢが通常どおり起こり且つ処理される（ステップ１８４）。イベントＢの処理（ステップ１８４）に引き続いて、イベントＡの処理（ステップ１８２）が再開する。イベントＡの実行完了（ステップ１８２）に引き続いて、制御はイベントＡが発生した前のモデル実行の地点に返される（ステップ１８０）。
【００４９】
２つのイベントの例外告知処理を示した図８の右側のダイヤグラムでは、モデルの実行（ステップ１９０）がイベントＡ（ステップ１９２）をトリガする。イベントＡの実行時に（ステップ１９２）、イベントＢが例外的に起こり且つ処理される（ステップ１９４）。イベントＢが例外的に処理されたので、イベントＡの処理が再開することなく、制御は、イベントＡの発生以前に存在したモデル実行の地点まで戻る（ステップ１９０）。
【００５０】
例外イベントに関連付けられたこの「早期復帰」により、エラー条件に関わる信号の下流側の計算が無用に実行されることが防止される。例えば、図７の例では、ｕ１の大きさチェックが行われるのは、積ブロック及びこの積ブロックから下流側のブロックの前に実行されるアトミック・サブシステムの一部としてである。割り込みイベントからの早期復帰により、イベントＢがスローされた場合、それらブロックが（無用に）実行されない。
【００５１】
上述したように、イベントは通常どおり或いは例外的に告知される。告知ブロックはイベントを通常どおり告知するのに使用される一方、スローブロックはイベントを例外的に告知するのに使用される。更に、ユーザ指定Ｓ関数ＡＰＩを用いてイベントを通常どおり或いは例外的に告知できる。モデル構成要素は、イベントが通常どおりスローされたとき或いは例外的にスローされたときにそのイベントを処理できるが、これら両方の場合にイベントを処理することはできない。ブロックのサンプル時間を「Ａ」と指定して、イベントＡが通常どおり告知されたときにイベントＡを処理することを示すか、「Ａ．例外」と指定してイベントＡが例外的に告知されたときにイベントＡを処理することを示すことができる。サンプル時間Ａを備えたブロックは、イベントＡが例外的に告知されたときはそのイベントを処理せず、サンプル時間Ａ．例外を備えたブロックは、イベントＡが通常どおりに告知されたときはそのイベントを処理しない。
【００５２】
例外的に告知された明示イベントは空でないハンドラを備えるはずである。すなわち、モデル中でそのイベントを例外的に処理する少なくとも１つのブロックが存在すべきである。これ以外の場合は、エラーが出される。この要件を是認するのは、明示的な例外イベントはユーザが時間を掛けて作成したモデル構成要素により告知されたものであり、又こうしたイベントはこのモデルにより処理されるべきだからという考えによるものである。空でないハンドラがあれば暗黙イベントは通常どおり告知される。通常どおり告知された暗黙イベントを処理するモデル構成要素がない場合は、このイベントは例外的に告知される。スローブロックは、それが通常どおり処理しているイベントを例外イベントとして再告知できる。このシナリオを用いることができるのは通常どおりのイベント処理が成功する保証がない場合である。初期試行に続いてこうしたイベントを例外的に処理できる。
【００５３】
図９は、本発明の例示的な実施形態を実施するのに適した環境を示す。電子装置２００は、Simulink（商標）又はStateflow（商標）アプリケーションなどのグラフィカルモデリング及び実行環境２０２を保持している。電子装置２００は、ワークステーション、サーバ、ラップトップ、ＰＤＡ、ネットワーク接続機器、或いはグラフィカルモデリング及び実行環境２０２をサポート可能な他のディジタル電子装置でよい。グラフィカルモデリング及び実行環境２０２は、上述したように少なくとも１つのグラフィカルモデル２０４及びイベントハンドラ２０６を含む。電子装置２００は、モデル２０４のビュー２１０をユーザ２１２に表示する表示装置２０８に接続している。表示装置２０８及びユーザ２１２は、電子装置２００に対してローカルに位置していてもよいし、リモートに位置していてもよい。当業者であれば、本発明の範囲内で多くの異なるソフトウェア及びハードウェア構成が可能であることは理解するはずである。
【００５４】
本発明の例示的な実施形態で実行する一連の高水準ステップを図１０に示す。この一連のステップは、グラフィカルモデリング及び実行環境２０２におけるモデル２０４の実行と共に開始される（ステップ２２０）。次に、このモデル実行時に予め指定されたイベントが発生したことが確認される（ステップ２２２）このイベント発生がイベントハンドラ２０６に告知される（ステップ２２４）。イベントハンドラ２０６は、そのサンプルレートがこのイベントの発生に結びつけられている登録済みブロックに通知する（ステップ２２６）。通知に続いて、そのサンプルレートがこのイベント発生に結びつけられているブロックが実行される（ステップ２２８）。
【００５５】
本発明の範囲を逸脱することなく一定の変更が可能であるから、上記の説明に含まれ、又添付の図面に示された全ての事項は、例示的なものとして解釈されるべきであり、逐語的な意味で解釈されるべきではない。当業者であれば、本明細書で図示し且つ説明したシステム構成は本発明の範囲に入る多数の可能なシステム構成の例であることは理解するはずである。同様に、本明細書で説明した連続ステップは例示的なものであり、本発明の範囲における唯一の連続ステップではない。
【図面の簡単な説明】
【００５６】
【図１】サンプルレートを用いる従来のブロックダイヤグラム・モデルを示す。
【図２】本発明の例示的な実施形態の告知処理を用いるモデルを示す。
【図３】本発明の例示的な実施形態による、Stateflow（商標）環境におけるイベントの告知及び受け取りを示す。
【図４】使用可能サブシステムにおいて発生する暗黙イベントのタイミング図である。
【図５】使用可能サブシステムにおいて暗黙イベントを用いるモデルを示す。
【図６】（Ａ）  イベント遷移ブロックが存在しない状態で、同一タスクにおいてイベント遷移が発生するモデルを示す。  （Ｂ）  イベント遷移ブロックを用いた、異なるタスクにおいてイベント遷移が発生するモデルを示す。  （Ｃ）  モデルにおけるイベント遷移ブロックの使用に関する時間線である。
【図７】（Ａ）  本発明の例示的な実施形態を用いてイベントを例外として処理するモデルを示す。  （Ｂ）  本発明の例示的な実施形態を用いて、分岐優先順位ブロックにより実行順序を制御するモデルを示す。  （Ｃ）  図７Ｂのモデルにおける分岐優先順位ブロックにより決定される実行順序を強調表示する。  （Ｂ）  本発明の例示的な実施形態を用いて、ブロックグループにより実行順序を制御するモデルを示す。
【図８】本発明の例示的な実施形態における通常及び例外イベントの処理を対照的に示すデータ流れ図である。
【図９】本発明の例示的な実施形態を実施するのに適した環境を示す。
【図１０】サンプルレートをイベント発生と関連付けるため、本発明の例示的な実施形態が実行する連続ステップの高水準ビューのフローチャートである。
【図１】
2007518190.tif 000006
【図２】
2007518190.tif 000007
【図３】
2007518190.tif 000008
【図４】
2007518190.tif 000009
【図５】
2007518190.tif 000010
【図６Ａ】
2007518190.tif 000011
【図６Ｂ】
2007518190.tif 000012
【図６Ｃ】
2007518190.tif 000013
【図７Ａ】
2007518190.tif 000014
【図７Ｂ】
2007518190.tif 000015
【図７Ｃ】
2007518190.tif 000016
【図７Ｄ】
2007518190.tif 000017
【図８】
2007518190.tif 000018
【図９】
2007518190.tif 000019
【図１０】
2007518190.tif 000020
【国際調査報告】
2007518190.tif 000021
2007518190.tif 000022
2007518190.tif 000023