(57)【要約】  グラフィカルモデリング環境において、モデルを単純化するため複数信号をグループ化したバス信号は、部分的又は完全な物理的定義を含む。モデルは、このバス信号は、非グループ化することなく、機能的実態を表現するグラフィカルオブジェクト内を通過させることで単純化される。モデルのシミュレーション時に、このモデルの他の構成要素からは独立して、完全な定義を備えたバス信号のコードが生成される。
2007510223.tif 000002
【特許請求の範囲】
【請求項１】
電子装置における方法であって、
グラフィカル・ユーザインターフェースに表示されるグラフィカルモデルにおいて、第１信号タイプの第１データ信号と第２信号タイプの第２データ信号とをグループ化してバス信号を形成する段階と、
前記バス信号に非仮想演算を行う段階とを含む、方法。
【請求項２】
前記グラフィカルモデルがブロックダイアグラムであり、更に、前記バス信号に非仮想演算を行う前記段階が、前記非仮想演算を表現する演算ブロックを含んだ前記ブロックダイアグラムを構築する段階と、前記ブロックダイアグラムにおける前記バス信号の表現を前記演算ブロックの入力ポートに接続する段階を含む、請求項1に記載の方法。
【請求項３】
前記演算ブロックの出口が、変更第１データ信号と変更第２データ信号とを含む変更バス信号に接続し、前記変更第１データ信号が、前記第１データ信号を入力とする前記非仮想演算の出力を表す一方、前記変更第２データ信号が、前記第１データ信号を入力とする前記非仮想演算の出力を表す、請求項２に記載の方法。
【請求項４】
前記演算ブロックにより表現される非仮想演算を行う前記段階が、前記第１データ信号及び前記第２データ信号により表現される値を前記非仮想演算の入力として用いることによって前記非仮想演算を解く段階を含む、請求項２に記載の方法。
【請求項５】
前記非仮想演算を解く前記段階が、前記グラフィカルモデルを、当該グラフィカルモデルを表現する実行可能なコンピュータ可読命令に変換する段階と、前記コンピュータ可読命令を実行する段階とを含み、前記コンピュータ可読命令が前記モデルにより指定される機能を実装する、請求項４に記載の方法。
【請求項６】
前記バス信号の前記第１データ信号及び前記第２データ信号の１つ又は複数の物理的属性を定義する段階を更に含む、請求項１に記載の方法。
【請求項７】
前記バス信号が、前記演算ブロックの出力ポートと、前記演算ブロックの入力ポートとで同一の構造を持つ、請求項２に記載の方法。
【請求項８】
前記非仮想演算が、前記第１データ信号及び前記第２データ信号で表される値に対する乗算、除算、積分、微分、線形変換関数、遅延関数、極及びゼロで指定された変換関数、不感帯関数、スイッチング関数、量子化関数、及びレート制限関数のうち１つを含む、請求項１に記載の方法。
【請求項９】
前記第１信号タイプが前記第２信号タイプとは異なる、請求項１に記載の方法。
【請求項１０】
前記バス信号の制約条件を確認する段階を更に含む、請求項１に記載の方法。
【請求項１１】
動的システムをシミュレーションするためのモデリング・アプリケーションを生成し且つ表示するシステムであって、
データを前記アプリケーションに入力するためのユーザが操作可能な入力手段と、
前記動的システムを表現するグラフィカルモデルを表示するための表示装置と、
コンピュータプログラム命令及びデータを記憶するためのメモリ並びに前記記憶されたコンピュータプログラム命令を実行するためのプロセッサを含む電子装置とを含み、前記コンピュータプログラム命令が、前記グラフィカルモデルで表示されたバス信号に非仮想演算を実行するための命令を含み、前記バス信号が、当該バス信号を形成するためグループ化された第１信号タイプの第１データ信号と第２信号タイプの第２データ信号とを含む、システム。
【発明の詳細な説明】
【関連出願】
【０００１】
本願は、その内容を引用して本明細書に援用する２００３年１０月３１日付けの米国特許出願第１０／６９８，８０５号の利益を主張する。
【技術分野】
【０００２】
本発明は、ユーザによる動的システムのモデル化、シミュレーション、及び分析を可能とするグラフィカルモデリング環境のようなダイアグラミング環境に関する。より詳細には、本発明は、動的システムを表すグラフィカルモデルにおける複数の信号をグループ化するためのグラフィカルモデリング環境におけるバス信号に関する。
【背景技術】
【０００３】
グラフィカルモデリング環境とは、ユーザによるプロセス又はシステムの構築及び分析を可能とするプログラムである。グラフィカルモデリング・ツールの例としては、The
MathWorks社から入手可能なSimulinkなどの時間ベース・ブロックダイアグラム、これもThe MathWorks社から入手可能なStateflow（登録商標）などの状態ベースダイアグラム及びフローダイアグラム、National
Instruments社から入手可能なLabVIEWなどのデータフロー・ダイアグラム、並びに統一モデリング言語(UML)ダイアグラムなどのソフトウェア・ダイアグラム及び他のグラフィカルモデリング環境が含まれる。
【０００４】
時間ベース・ブロックダイアグラムはある種のグラフィカルモデリング環境の一例であり、ユーザによる動的システム（すなわち、出力が時間と共に変化システム）のモデル化、シミュレーション、及び分析、並びにシステムに対応するプログラムの生成を可能とする。時間ベース・ブロックダイアグラム環境を用いて、電気回路、緩衝装置、ブレーキシステム、並びにその他多くの電気、機械、及び熱力学システムを含む、広範囲にわたる現実の動的システムの挙動を調査できる。
【０００５】
時間ベース・ブロックダイアグラムにおける動的システムのシミュレーションは、典型的には２つの段階からなる処理である。先ず、ユーザは、シミュレーションすべきシステムのブロックダイアグラムのようなグラフィカルモデルを作成する。グラフィカルモデルは、グラフィカルモデル・エディタのようなグラフィカル・ユーザインターフェースを用いて作成できる。グラフィカルモデルは、システム入力と、状態と、パラメータと、出力との間の時間に基づく関係を表現する。グラフィカルモデルの作成後、指定された時間にわたる動的システムの挙動を、グラフィカルモデルに入力された情報を用いてシミュレーションする。この段階では、グラフィカルモデルを用いて動的システムの出力の時間的進展を計算し且つ追跡し（グラフィカルモデルの実行）、更に、モデル全体又は一部の挙動を模倣する導入可能なソフトウェアシステム又はハードウェアシステムの記述を自動生成する（コード生成）。
【０００６】
ブロックダイアグラムは、動的システムをモデル化するための、時間ベース・ブロックダイアグラムのようなグラフィカルモデリング環境内で形成されるグラフィカルモデルの一例である。動的システムのブロックダイアグラム・モデルは、線（ノード間の論理結合を表す）により相互接続されたノードの集まりとして概念的に表される。信号は、各線結合により表現される時間変化量に対応し、各瞬間において値を持つと仮定される。各ノードは基本動的システムを表すことができ、信号と状態変数との間の関係は、ノードにより表される式の組により定義される。この定義にはパラメータの概念が本質的に含まれており、パラメータは式の係数である。これら式は、入力信号と、出力信号と、状態と、時間との関係を定義するので、それぞれの線は、関連付けられた基本動的システムの入力及び／又は出力を表す。１つのノードから出て別のノードで終結する線は、最初のノードの出力が２番目のノードの入力となることを示す。任意のノードにおける個別の各入力又は出力はポートと呼ばれる。信号のソースノードは、そのシステムの式が解かれた所与の時刻に信号に書き込む。この信号の宛先ノードは、このシステムの式が解かれている時にその信号から読み出しを行う。当業者であれば、「ノード」という用語は基本動的システムのみを排他的に示すのでなく、ブロックダイアグラムの可読性及びモジュール性を向上させる他のモデリング要素を含みうることは理解するはずである。
【０００７】
例えば、The Mathworks社から入手可能な時間ベース・ブロックダイアグラムの一例であるSimulink（登録商標）では、動的システムのモデルは、信号を表す線で相互接続されたブロックと呼ばれる複数のノードからなるブロックダイアグラムである。Simulink（登録商標）では、各ブロックは、基本動的システムなどの機能エンティティを表す。機能エンティティは、ブロックダイアグラムにより表されたシステムが処理しているデータに対して数学演算（すなわちアルゴリズム又は式）を実行する。各ブロックは、連続的に（連続ブロック）或いは特定の時刻に（離散ブロック）出力を生成する。この種のブロックは、任意ブロックの出力、その出力、状態、及び時間の関係を決定する。ブロックダイアグラムは、システムのモデル化に必要となる任意種類のブロックの任意数のインスタンスを含むことができる。ブロックダイアグラム・モデルにおける信号は、ブロックにより更新される、すなわち準備ができると書き込みされる（原語：ready-by
and written to）時間変化量を表す。Simulink（登録商標）及び動的システムをモデル化する他のソフトウェア製品は、動的システムのモデルをブロックダイアグラムとして構築するためのグラフィカル・ユーザインターフェース（ＧＵＩ）を提供する。各ブロックダイアグラムは、予め定義されたブロックセット内のブロックを、ユーザがドラッグ・アンド・ドロップしたり、ユーザが特別に作成したりできる。
【０００８】
動的システムを表す、ブロックダイアグラムのようなグラフィカルモデルを作成した後、ユーザは、このシステムの挙動を所定時間にわたりシミュレーションする。モデルに入力された情報を用いてシミュレーションを実行し、プロセッサが、シミュレーションしたモデルにおけるノードが定義した式を解いてシミュレーション結果を生成する。別法としては、プロセッサが、このグラフィカルモデルを実行可能コードに変換する。自動コード生成とは、動的システムのグラフィカルモデルからソフトウェアが自動生成される処理である。生成されたソフトウェアはコンパイルされ、次にデジタルコンピュータにより実行されて、モデルが指定する機能を実装する。
【０００９】
ブロックダイアグラムのようなグラフィカルモデルの解（システム応答の計算）は、信号と動的システムを表す状態変数との関係を経時的に評価することより得られ、この時間はユーザが指定する「開始時刻」で開始され、ユーザが指定する「停止時刻」で終了する。これら関係の各評価は、時間ステップと呼ばれる。グラフィカルモデルにおける信号は経時的に変化する量を表し、これら量は、グラフィカルモデル実行中の開始時刻と停止時刻との間の全時点に関して定義される。
【００１０】
Simulink（登録商標）及び他のグラフィカルモデリング環境において、ノード、ブロック、又は動的システムをモデル化するのに用いるモデル構成要素は、一般に、「仮想的」（すなわちブロックがシミュレーションにおいて積極的な役割を果たさないことを意味する）か、「非仮想的」（すなわちブロックが、グラフィカルモデルにより表現されるシステムのシミュレーションにおいて積極的な役割を果たすことを意味する）かの何れかである。仮想ブロックはグラフィカルモデルを図表的に編成するためのみに用いられる一方、非仮想ブロックはモデルの挙動に影響を与える基本動的システムを表現する。仮想ブロックは図表的な編成の便宜のために使用され、ブロックダイアグラム・モデルが記述する式のシステムの定義にはなんの役割も果たさない。ブロックダイアグラムの信号も一般に「仮想的」或いは「非仮想的」である。
【００１１】
大規模なグラフィカルモデルでは、当該モデルの一区画を他の区画に接続する大量の線が含まれることがある。ブロックバス作成ブロックやバス選択ブロックなどの仮想ブロックは、信号のグループを「バス信号」と呼ばれる「束」として管理することでブロックダイアグラムが錯綜した状態を改善し、従ってモデルの可読性を向上させる。現在の技術水準では、バス信号は、論理信号の集まりとしてグループ化した（すなわち名前で）信号の集まりからなる。仮想バス作成ブロックは、複数の信号を束ねて単一のバス信号とする助けとなる。こうして、この単一バス信号はモデルの２つの区画を接続する。バス信号の宛先では、仮想バス選択ブロックが、個別の信号を他のブロックに接続できるようにこれら信号を分離する助けとなる。
【００１２】
現状ではバス信号には指定がなく、ブロックダイアグラム又は他のグラフィカルモデルを分かりやすく見せるために視覚的にグループ化した信号を含むにすぎない。データタイプが異なるバス信号内の信号の演算をシミュレーションするには、これら信号はグループ化を解除する必要があり、その後でそれぞれの信号を、その信号への演算を表現する非仮想ブロックに個別に通過させる。更に、現在の時間ベース・ブロックダイアグラム及び他のグラフィカルモデリング環境では、幾つかのノード又はブロックはそれらが処理できる信号の属性に制約を課し、又、Simulink（登録商標）の単位遅延ブロック及びStateflowブロックなどの他のノード又はブロックは、バス信号を受け付けない（すなわち、バス信号に含まれる信号をグラフィカルモデルのブロックを通過する前に分解しなければならない）。
発明の概要
【００１３】
本発明の一実施形態は、動的システムをモデル化し、シミュレーションし、且つ分析するための、時間ベース・ブロックダイアグラムのようなグラフィカルモデリング環境におけるバス信号の機能を拡張する。本発明の例示的な一実施形態は、データタイプが異なる複数信号からなるバス信号に非仮想演算を行うためのシステム及び方法と、時間ベース・ブロックダイアグラム又は他のグラフィカルモデリング環境におけるバス信号の定義を指定する機能とを提供する。更に、本発明は、ブロックダイアグラムの構築及び／又はシミュレーション時に静的及び動的チェックの両方を実行してバス指定を実施する。本発明は、グラフィカルモデリング環境においてバス信号を形式化して、バス信号をより効果的とし且つ直感的で容易に使用可能として、バス信号を実装するためのブロックダイアグラムを単純化する。
【００１４】
一様態では、バス信号に演算を行うための方法が提供され、更に、当該方法のコンピュータ可読命令を保持する媒体と、当該コンピュータ可読命令を実行するためのシステムとが提供される。前記方法は、グラフィカル・ユーザインターフェースに表示されるグラフィカルモデルにおいて第１信号タイプの第１データ信号と、第２信号タイプの第２データ信号とをグループ化してバス信号を形成する段階と、前記バス信号に非仮想演算を行う段階とを含む。
【００１５】
別の様態では、バス信号を指定するための方法が提供され、更に、当該方法のコンピュータ可読命令を保持する媒体と、当該コンピュータ可読命令を実行するためのシステムとが提供される。前記方法は、バス信号を定義する段階と、グラフィカル・ユーザインターフェースに表示されるグラフィカルモデルにおいて第１データ信号と第２信号タイプとを結合して前記定義で定められた構造を備えたバス信号を形成する段階とを含む。
【００１６】
別の様態では、バス信号を指定するための方法が提供され、更に、当該方法のコンピュータ可読命令を保持する媒体と、当該コンピュータ可読命令を実行するためのシステムとが提供される。前記方法は、バス信号の定義をグラフィカル・ユーザインターフェースにおいて入力する段階と、前記バス信号の前記定義をメモリに保存する段階とを含む。
【００１７】
更に別の様態では、バス信号を指定するための別の方法が提供され、更に、当該方法のコンピュータ可読命令を保持する媒体と、当該コンピュータ可読命令を実行するためのシステムとが提供される。前記方法が、グラフィカル・ユーザインターフェースに表示されるグラフィカルモデルで使用されるバス信号の定義を定める段階と、前記バス信号に対応したコンピュータ可読命令を生成する段階とを含む。
【００１８】
別の様態では、バス信号を処理するための方法が提供され、更に、当該方法のコンピュータ可読命令を保持する媒体と、当該コンピュータ可読命令を実行するためのシステムとが提供される。前記方法は、グラフィカル・ユーザインターフェースに表示されるグラフィカルモデルにおいて第１データ信号と第２データ信号とを結合してバス信号を形成する段階と、前記バス信号を前記グラフィカルモデルの第１ドメインから第２ドメインに渡す段階とを含む。
【００１９】
本発明の例示的な実施形態により可能となる拡張バス信号は、グラフィカル・プログラミング言語などのダイアグラミング・アプリケーション言語でモデル化される複雑なシステムのコードを作成、維持、シミュレーション、且つ導入する労力が大幅に減少する。
【発明を実施するための最良の形態】
【００２０】
本発明は、動的システムをモデル化し、シミュレーションし、且つ／或いは分析するための改良型ツールを提供する。このツールは、時間ベース・ブロックダイアグラムのようなグラフィカルモデリング環境におけるバス信号の仮想及び非仮想定義を指定する。本発明を時間ベース・ブロックダイアグラムにおける例示的な一実施形態に関連して説明するが、当業者であれば、本発明は、状態ベース及びフローダイアグラム、データフロー・ダイアグラム、ソフトウェア・ダイアグラム、及びグラフィカル・プログラミングツールを含む他の任意適切なダイアグラミング環境で実装できることは理解するはずである。当業者であれば、本発明は、多数の異なる応用例及び実施形態で実現可能であり、本明細書に記載した特定の実施形態に特に限定されないことは理解するはずである。
【００２１】
本発明の例示的な一実施形態では、時間ベース・ブロックダイアグラムにおけるモデリング・アプリケーションは、バス信号の仮想又は非仮想定義を指定し且つ定義済みバス信号のコードを、動的システムのシミュレーション時にグラフィカル・エンティティから独立して生成する機能を含む。例えば、ユーザは、バス信号を構成するコンポーネント信号の物理的属性を指定できる。例示的な一実施形態では、時間ベース・ブロックダイアグラムにおけるバス信号は形式化されて、バス信号をより効果的、直感的に理解可能とし、且つ容易に使用可能としてバス信号を実現するためのブロックダイアグラムを単純化する。グラフィカルモデリング環境におけるバス信号を完全に指定可能とする機能は、データ入力を大幅に減少させ、より簡潔なブロックダイアグラムを実現する。
【００２２】
図１は、本発明の例示的な実施形態を実施するのに適した環境を示す。電子装置２は、本発明の一実施形態によるソフトウェアが記憶されたメモリ４と、このメモリ内に記憶されたソフトウェアを実行するプロセッサ（ＣＰＵ）７と、システムハードウェアを制御する他のプログラムとを含む。入出力装置８は、グラフィカル・ユーザインターフェースを表示するスクリーンなどの表示装置８ａを含み、電子装置２とインターフェースを取ってユーザと電子装置２との対話を可能とする。又、例示的なこのシステムは、マウス８ｂ及びキーボード８ｃなどの他の適切な従来の入出力周辺装置も含む。
【００２３】
例えば、メモリ４は、システムダイアグラムの電子バージョンを作成且つシミュレーション可能なモデリング・アプリケーション６を保持している。こうしたシステムダイアグラムの電子バージョンには、ブロックダイアグラム、状態ダイアグラム、信号ダイアグラム、フローチャート・ダイアグラム、シーケンス図、ＵＭＬダイアグラム、データフロー・ダイアグラム、回路図、ラダーロジック・ダイアグラム、又は運動学的要素ダイアグラムがあり、何れかを表示装置８ａを介してユーザ１０に表示できる。適切なモデリング・アプリケーションの例としては、The
MathWorks社のSimulinkバージョン５．０を備えたMATLABバージョン６．１、National Instruments社から入手可能なLabVIEW、DasyLab、及びDiaDem、Agilent社から入手可能なVEE、Measurement
Computing社から入手可能なSoftWIRE、Visual Solutions社から入手可能なVisSim、Elanix社から入手可能なSystem
VIEW、Coreco社から入手可能なWiT、PPT Vision社から入手可能なVision Program Manager、Khoral Research社から入手可能なKhoros、並びにその他多数が含まれるが、それらに限定されない。メモリ４は、例えば、CD-ROM、フロッピー（登録商標）ディスク、テープ装置などの任意適切なインストール媒体や、DRAM、SRAM、EDO
RAM、ラムバスRAMなどのコンピュータ・システムメモリ又はランダムアクセスメモリや、ハードドライブ又は光学記憶装置を含む磁気媒体などの不揮発性記憶装置を含むことができる。このメモリは、他の種類のメモリ又はそれらの組合せを含むこともできる。
【００２４】
代替的な実施形態では、更に、電子装置２がインターネットなどのネットワークに接続されている。当業者であれば、モデリング・アプリケーション６が使用するダイアグラムは電子装置２にローカルに記憶させてもよいし、ネットワークを介して電子装置２と接続したリモート位置９に記憶させてもよいことは理解するはずである。同様に、モデリング・アプリケーション６はネットワークサーバ又はリモートピアに記憶してもよい。
【００２５】
本発明の例示的な実施形態のモデリング・アプリケーション６は、多数の汎用構成要素を含む。本明細書の説明はマサチューセッツ州ナティック所在のThe
MathWorks社のSimulinkバージョン５．０（リリース１３）を中心としているが、当業者であれば、本発明は他のグラフィカルモデリング環境にも適用できることは理解するはずである。例示的なモデリング・アプリケーション６の汎用構成要素は、動的システムのモデルを図式的に指定するブロックダイアグラム・エディタ６ａを含む。ブロックダイアグラム・エディタ６ａにより、ユーザは、動的システムを視覚的、絵図的に表すブロックダイアグラムのようなグラフィカルモデルの構築、編集、表示、注釈付け、保存、及び印刷などの作業が可能となる。又、例示的なモデリング・アプリケーション６は、データが機能ユニットと非機能ユニットとの間でどのように伝達されるかを表す信号線及びバスなどのグラフィカル・エンティティ６ｂやブロック６ｃも含む。上述のように、ブロックは、標準的なブロックダイアグラム・モデルの基本的な数学的要素である。ブロックダイアグラム実行エンジン６ｄもこのアプリケーションに実装されており、グラフィカルモデルを処理してシミュレーションの結果を生成したり、このグラフィカルモデルを実行可能コードに変換したりするために用いられる。
【００２６】
例示的なこの実施形態では、モデリング・アプリケーション６は、これもMathWorks社から入手可能なMATLABなどの技術計算プログラム１１の随伴プログラムとして実装されている。
【００２７】
図２は、本発明の例示的な一実施形態による、動的システムのシミュレーションに関わるステップを図示するフローチャートである。ステップ１２では、ユーザが、動的システムを表すブロックダイアグラム・モデルを作成する。ステップ１２でブロックダイアグラム・モデルを作成すると、ステップ１４で、実行エンジン６ｄがこのブロックダイアグラム・モデルをコンパイルする。次にステップ１６で、実行エンジン６ｄがこのブロックダイアグラム・モデルを連結して、モデルの「メモリ内実行可能」バージョンを生成する。ステップ１８では、実行エンジンが、モデルの「メモリ内実行可能」バージョンを用いてコードを生成し且つ／或いはブロックダイアグラム・モデルをシミュレーション又は線形化する。
【００２８】
ブロックダイアグラム・エディタ６ａは、動的システムを表すブロックダイアグラム・モデルのユーザによる作成及び修正（ステップ１２）を可能とするグラフィカル・ユーザインターフェース（ＧＵＩ）構成要素である。この電子ブロックダイアグラムのブロックは、モータ、サーボ弁、発電所、フィルタ、タイヤ、モデム、受信機、及び他の動的構成要素などの専用機械構成要素、回路構成要素、又はソフトウェア構成要素の挙動をモデル化できる。ブロックダイアグラム・エディタ６ａも、グラフィカル・エンティティ６ｂに関連したデータのユーザによる作成及び記憶を可能とする。Simulink（登録商標）では、一組の命令とのテキスト形式インターフェースにより、グラフィカルエディタとの対話が可能となる。ユーザは、このテキスト形式インターフェースを用いてブロックダイアグラムに自動編集処理を行う特殊スクリプトを書くことができる。一般に、ユーザは、モデルのキャンバスとして機能する一組のウィンドウと対話する。モデルには一般に複数のウィンドウがあるが、それはモデルがサブシステムを使用することで多数の階層レベルに区分化できるからである。
【００２９】
ブロックダイアグラム・エディタ６ａ内の一揃いのＧＵＩツールにより、ユーザは、対応するウィンドウにブロックダイアグラム・モデルを作成できる。例えば、Simulink（登録商標）では、ＧＵＩツールは、ブロックパレット、結線ツール、注釈ツール、フォーマッティングツール、属性編集ツール、保存／ロードツール、及びパブリッシングツールを含む。ブロックパレットは、ブロックダイアグラムを構築するためにユーザが使用可能な定義済みブロック全てのライブラリである。それぞれのユーザはこのパレットをカスタマイズして、（ａ）ブロックをなんらかのカスタムフォーマットに再編成したり、（ｂ）使用していないブロックを削除したり、（ｃ）自分で設計したカスタムブロックを追加したりできる。このパレットにより、人間とマシンと間の仲立ちをする一定のインターフェース（例えばマウス又はキーボードなど）を介してブロックをパレットからウィンドウ（すなわち、モデルのキャンバス）までドラッグできる。キャンバス上に描画されるブロックのグラフィックバージョンは、ブロックのアイコンと呼ばれる。全ブロックのツリーに基づくブラウザビューを含む、ブロックパレットに関する別の実施形態も可能である。
【００３０】
ブロックダイアグラム・モデル又は他のグラフィカルモデルがエディタ６ａを使って構築されると（ステップ１２）、実行エンジン６ｄが、このモデルにより定義された式を解くことでこのこのモデルをシミュレーションし、時間の関数としてシステム出力を追跡する（ステップ１４乃至１８）。モデルの解はモデル実行と呼ぶことができ、ユーザが指定する時間枠で一組のユーザ指定入力に関して実行される。
【００３１】
ステップ１４のコンパイル段階からモデル実行が開始され、これにはデータ構造の作成、パラメータ評価、ブロック特性の構成及び伝播、ブロック接続性決定、ブロック整理編集、及びブロック挿入が含まれる。コンパイル段階は、ブロックダイアグラム内のブロック相互接続の完全性及び妥当性のチェックを含む。この段階では、又、エンジン６ｄは、ブロックダイアグラム内のブロックをブロック方法実行リスト作成時に使用される階層リストに分類する。データ構造の作成及びパラメータ評価は、コンパイル段階で必要な基本データ構造を作成し、初期設定する。ある方法では、各ブロックに、その全パラメータを評価させる。この方法は、ブロックダイアグラム内の全てのブロックに対して呼び出される。未解決のパラメータがあれば、この時点で実行エラーが発せされる。
【００３２】
ブロック及びポート／信号特性の構成及び伝播時に、各ブロックのコンパイル済み属性（例えば、次元、データタイプ、複素性、サンプル時間など）は、対応する機能属性及び線を介して当該ブロックに接続されたブロック（及び／又はポート）の属性に基づいて設定される。この属性設定が実行されるのは、ブロック機能属性が、信号の接続に続いて１つのブロックから次のブロックへとブロックダイアグラムを「波紋のように伝わる」処理の実行時である。この処理（本明細書では「伝播」と呼ぶ）には２つの目的がある。そのブロック機能属性を明示的に指定しているブロックの場合は、このブロックの属性が、伝播によって、それに接続しているブロックの属性と互換性を持つことを保証する助けとなる。これ以外の場合は、エラーが出される。例えば、積分ブロックが多数の倍精度実数データタイプを受け取るためだけの目的で実装されると、このブロックは、単精度データを生成するブロックに駆動される場合はエラーとなる。エラーとならないのは、ユーザが暗黙データ変換を要求している場合のみである。二番目のケースとしては、多くの場合、ブロックは広範囲の属性と互換性を持つように実装される。こうしたブロックは、それらに接続されているブロックの属性に従って自分の挙動を適応させる。これは、オブジェクト指向プログラミング言語の多相性の概念と似ている。例えば、離散時間フィルタブロックを実装して、８ビットから１２８ビットまでの任意の標準的な整数型データタイプを受け取ることもできる。このブロックを厳密にどのように実装するかは、このブロックが含まれるブロックダイアグラムに基づいて選択される。このステップに含まれる処理は、当該モデル内の全レート変化が決定性の結果を出すことの検査や、適切なレート変換ブロックが使用されていることの検査などの他の側面である。
【００３３】
更に、このコンパイルステップは、実際のブロック接続性を確認する。仮想ブロックは、ブロックダイアグラムの実行になんの意味論的役割も果たさない。コンパイル時に、ブロックダイアグラム内の仮想バス信号などの仮想ブロック及び信号は、最適化して取り除かれ、残りの非仮想ブロックが互いに適切に再接続される。実際のブロックが接続されたブロックダイアグラムのこのコンパイル済みバージョンは、実行処理においてこの時点以降で使用される。
【００３４】
一旦、実際のブロック接続性が（仮想ブロックを除去することで）確認されると、このブロックダイアグラムはブロック整理編集及び挿入により更に最適化できる。このステップでは、ブロックを挿入するか、一組の非仮想ブロックを完全に除去したり単一の等価ブロックに整理編集したりできる。ブロック挿入及び整理編集を行うのは、主として実行効率を向上させるためである。
【００３５】
ステップ１６のリンク段階では、実行エンジン６ｄは、コンパイル段階の結果を用いてブロックダイアグラムの様々な構成要素の実行に必要なメモリを割り当てる。リンク段階は、ブロックダイアグラムのシミュレーション又は線形化に用いられるブロック方法実行リストも生成する。「設定」方法（例えば、ブロック開始、初期設定、使用可能、及び定出力方法）の評価からなるモデルの初期設定がリンク段階に含まれる。ブロック方法実行リストを生成する理由は、モデルのシミュレーション及び／又は線形化が、サンプルヒットがあった時にタイプごとに（ブロックごとでなく）ブロック方法を実行しなければならないからである。
【００３６】
ステップ１８では、ブロックダイアグラムのコンパイル済み及び連結済みバージョンを直接的に用いて、所望の時間枠で当該モデルを実行できる。一様態によれば、連結を実行した後、実行エンジン６ｄは、ステップ１８のコードを生成してブロックダイアグラムからソフトウェアを作成する。この段階で、実行エンジンは、ブロックダイアグラム・モデル（又はその一部）をソフトウェア・モジュール又はハードウェア記述（広くコードと呼ぶ）に翻訳する。この段階が実行された場合は、次に続く段階は、ブロックダイアグラム実行時にこの生成コードを用いることになる。代替的に、実行段階は、ステップ１８でのコード生成を飛ばし、ブロックダイアグラムの実行には解釈モードを使用する。別の実施形態では、実行エンジン６ｄはステップ１８でコードを生成するだけである。例えば、ユーザがブロックダイヤグラム・ソフトウェアの範囲外にコードを導入したいと考えるので、ブロックダイアグラムの実行を続行しないことがある。
【００３７】
シミュレーション段階に達すると、サンプルヒットがあった時点で、実行エンジン６ｄはシミュレーションループを用いて定義済み順序付けでブロック方法を実行し、経時的に変化するシステム応答を生み出す。
【００３８】
ステップ１８で線形化を実行するため、Simulinkは、指定された様態でブロック方法実行リストを用いて、ブロックダイアグラムが記述する動的システムの線形状態空間の表現を生成する。
【００３９】
図３は、ＧＵＩに表示され且つ従来技術の時間ベース・ブロックダイアグラムで作成されたブロックダイアグラム２００を示し、このダイアグラム２００は、ダイアグラム２００の外観を単純化するために使用できる仮想バス作成ブロック及びバス選択ブロックを含む。大規模なモデルでは、ブロックダイアグラム２００の一区画を他の区画に接続する大量の線（例えば信号２２、２４、２６）が含まれることがある。線が錯綜した状態を改善し、可読性を向上させるため、バス作成ブロック２０６を用いてブロックダイアグラム内で複数のコンポーネント信号を一緒に束ね、単一のバス信号２１０が形成されている。こうして、単一のバス信号２１０はモデル２００の２つの区画を接続する。バス信号２１０の宛先では、個別の各コンポーネント信号２２、２４、又は２６を他のブロックに接続できるように、バス選択ブロック２０８がこれら信号２２、２４、又は２６を分離する助けとなる。図示したように、現在の技術水準では、バス信号はバス作成ブロック及びバス選択ブロックを用いて作成され、ブロックダイアグラムを視覚的に編成し、単純化するには有用である。
【００４０】
ブロックダイアグラムの作成時には、一群の信号をバス作成ブロック２０６で１つのバス信号に束ねるため、先ずユーザは、バス作成ブロックの入力ポート数をバス作成ブロックパラメータ・ダイアログボックス（ＧＵＩとして提供されている）内で指定する。このダイアログボックスは当該バス信号を形成するためにグループ化する信号数を示す。次に、ブロックダイアグラム・ウィンドウ内で、ユーザはグループ化すべきこれら信号を得られた入力ポートに接続し、全てのタイプの信号を入力に接続する。バス作成ブロックはバスの各信号に名前を付ける。バス選択ブロック（バス信号をグループ解除する機能がある）は、バス作成ブロック又は他のバス選択ブロックからの入力を受け付ける。非グループ化する信号の数によって、バス選択ブロックは１つ又は複数の出力ポートを備える。
【００４１】
図４は、バス信号を作成するための、現在の技術水準によるバス作成ダイアログボックス３０を示す。図示したように、このバス作成ダイアログボックスは、一緒にグループ化してバス信号２１０を形成するコンポーネント信号２２、２４、２６の名前だけしか指定せず、付加的な定義をこのバス信号に与えない。バス選択ダイアログボックスは、バス信号をグループ解除するために用いられるが、バス信号から非グループ化される信号名を指定する以上の機能はない。
【００４２】
バス信号を現在の時間ベース・ブロックダイアグラムや他のグラフィカルモデリング環境内で仮想信号として実装することに関わる大きな難点は、バス信号が純粋にグラフィカル・エンティティであり、数学的又は物理的意味を持たないことである。これら仮想バス信号は、モデルをシミュレーションする際には無視されてしまう。シミュレーション時には、実行エンジン６ｄが「信号伝播」という手順を用いてバス信号が表す非仮想信号を特定する。信号伝播は、仮想バス信号の非仮想構成要素が全て特定されるまで継続する。任意モデルの実行時に、実行エンジン６ｄは、信号伝播時に特定される対応する非仮想信号を用いて、仮想信号が接続されるブロックを駆動する。現在の技術水準では、バス信号は、明確に定義された指定を備えておらず、一定のキーブロックはバス信号を受け付けない。
【００４３】
現在のシステムに存在する別の重要な限界は、グラフィカルモデルのバス信号を形成するデータ信号が同一データタイプの場合、モデリングプログラム６は、バス信号に非仮想演算しか実行できないことである。例えば、図３に示したように、異なる信号タイプを表す信号を非仮想ブロックに通過させるためには、すなわち各信号が表すデータへの演算をモデル化しシミュレーションするには、バス信号は、バス選択ブロックを用いてデータ信号を互いからグループ解除するため分解しなければならない。バス信号２１０を異なるコンポーネント信号２２、２４、及び２６にまず分解した後で、それぞれの信号を、演算を表す関連した非仮想ブロック２１５ａ、２１５ｂ、２１５ｃに個別に通過させなければならない。処理をモデル化した後、非仮想ブロック２１５ａ、２１５ｂ、２１５ｃからのそれぞれの出力信号２２”、２４”、２６”は、別のバス作成ブロック２０６’を用いてバス信号２１０’に再びグループ化される。
【００４４】
図５に示したように、本発明の例示的な一実施形態は、ブロックダイアグラムなどのグラフィカルモデル内でバス信号を非グループ化することなく、異なる信号タイプの信号を含むバス信号への非仮想演算をモデル化且つシミュレーションする機能を提供することで、これまでのシミュレーションシステムの能力を拡張する。本発明の例示的なこの実施形態では、バス信号がブロックダイアグラム４００の非仮想ブロックに直接的に接続できるので、これらバス信号を含むデータ信号に対するシミュレーションすべき演算をモデル化できる。例えば、図５に示したように、ユーザは、バス作成ブロック４０６を用いて異なる信号タイプを備えた複数の信号４２、４４、及び４６を含むバス信号４１０を生成できる。バス信号４１０は様々な異なる信号タイプを含むことがあり、例えば、データタイプやデータの複素性などが異なる様々な属性の信号を含みうる。本明細書では、「信号タイプ」という用語は一組の信号属性を指す。「データタイプ」という用語は本発明の分野では周知であり、コンピュータシステムにおけるデータの内部表現やデータに関わる付加的意味を指す。使用可能なデータタイプの例には、ブール、１６ビット整数、固定小数点、倍精度などがある。これらの例は例示目的であって、本発明を限定するものではない。例示的なバス信号４１０は、整数信号（第１信号タイプ）４２と、倍精度信号４４（第２信号タイプ）４４、及び倍精度信号４６（第２信号タイプ）を含む。バス信号４１０は分解しなくてもブロックダイアグラム４００内の非仮想ブロック４０７を「通過」する。非仮想ブロック４０７は、バス信号４１０内の全信号４２、４４、及び４６が表す信号値への演算を表し、各コンポーネント信号に別個の演算ブロックを必要とせずにバス信号４１０内の全信号への非仮想演算をシミュレーションする。非仮想演算の例には、「ゲイン」ブロックを用いた乗算、「積分」ブロックを用いた積分、「微分」ブロックを用いた入力の微分計算、「遅延」ブロックを用いた入力の遅延、及び本発明の分野で公知或いはユーザが作成した多数の処理が含まれるが、それに限定されない。Simulink（登録商標）のブロックで表現可能な他の演算には、除算、線形変換関数、極及びゼロで指定された変換関数、不感帯関数、スイッチング関数、量子化関数、及びレート制限関数が含まれる。バス信号は、信号タイプが異なる複数のコンポーネント信号を含むことができる。コード生成時は、実行エンジンは、ユーザからの入力を必要とせずに、バス信号４１０を含むブロックダイアグラムの部分を自動的にマッピングする。
【００４５】
図５に示したように、ブロックダイアグラム内のバス信号４１０は、バス信号４１０を入力ポート４０７ａすなわちブロック４０７の入口に接続することでブロック４０７を「通過」させられる。ブロック４０７はそのコンポーネント信号に行う非仮想演算を表す。バス信号の入力ポートへの接続は、コンポーネント信号の値が入力としてブロック４０７が表す演算に渡されることを意味する。出力バス信号４１０’は変更コンポーネント信号を含み、これら変更コンポーネント信号は、入力コンポーネント信号それぞれが表す値への非仮想演算の出力を表す。変更バス信号４１０’は、ブロック４０７の出力ポート４０７ｂに接続する。
【００４６】
本発明の一実施形態では、バス信号４１０が非仮想ブロック４０７を通過する際に、バス信号の構造は保存される。例えば、バス信号が遅延ブロックを通過する時、遅延ブロックの出力におけるバス信号４１０’の形式は、遅延ブロックへの入力におけるバス信号４１０の形式に一致している。「形式」はデータタイプ、複素性などの特性を包含するものと理解されている。
【００４７】
図示したように、ユーザは、演算を表現する個別ブロックに各信号を別々に通過させることで、演算を実行するためにバス信号の信号をグループ解除する必要がなく、更に、各信号を演算子ブロックに別々に通過させた後で信号を別のバス信号に再グループ化する必要がない。従って、図３のブロックダイアグラム２００を図５のブロックダイアグラム４００と比較すれば分かるように、バス信号をブロックダイアグラム内の非仮想ブロックに通過させる能力は、容易に構築且つ理解可能なより簡潔で単純なブロックダイアグラムを提供する。バス信号をキーブロックに通過させる能力のおかげで、例えば図３のダイアグラムで必要となるような、バス信号を作成し且つ非グループ化する不要なステップを排除することで、データ入力を促進する。
【００４８】
本発明の別の様態では、バス信号をそれまで受け取りできなかった、時間ベース・ブロックダイアグラムの一定のキーブロック及びノードがバス信号を受け取りできるように構成される。限定するわけではないが、例としては、１回のサンプリング周期において入力バス信号４１０内の全信号にゼロ次保持を実行するゼロ次保持ブロックと、１回のサンプリング周期で入力バス信号４１０内の全信号を遅延させる遅延ブロックと、複数の入力信号を単一の記憶場所に結合するマージブロックと、スイッチブロックと、マルチポート・スイッチブロックとが含まれる。本発明の例示的な一実施形態によれば、バス信号はこれらブロックの任意ブロックに直接接続でき、実行エンジンは、シミュレーション時にユーザからの入力を必要とせずに、ブロックダイアグラムのその部分を自動的にマッピングする。結果的に、全信号に対するブロックが表現する演算をモデル化するに当たって、ユーザがバス信号を非グループ化したり、個々のコンポーネント信号を別々のブロックに通過させたりする必要がないため、ブロックダイアグラムが単純化される。このモデリング・アプリケーションにより、バス信号はサブシステム（別のシステム内のシステムを表す）と、Stateflow（有限状態機械、フローダイアグラム、状態図、真理表、又はテキスト形式機能の任意の組合わせを指定するのに用いるツールの一例）などの他の領域とを通過可能となる。
【００４９】
本発明の他の局面によれば、モデリング・アプリケーション６は、バス信号を定義して、それが非仮想実装を備えることを指定する機能を含んでいる。例えば、例示的な一実施形態では、ユーザは、バス信号の非仮想コンポーネント信号の物理的属性を定義できる。上述のように、従来の時間ベース・ブロックダイアグラムにおけるバス信号は物理的側面を含まず、ブロックダイアグラムなどの動的システムのグラフィカルモデル構築時に、グラフィカルモデルの外観を単純化するため使用されてきたにすぎない。シミュレーション時には、従来システムのバス信号は、数学的意味を持たない単なる装飾的構成要素として無視され、バス信号を表現するシミュレーション時にはコードが生成されなかった。一実施形態では、本発明は、バス信号の非仮想実装を指定し、バス信号を構成するソース信号のような、ブロックダイアグラムの他の構成要素から独立してバス信号のコードを生成する機能を提供する。
【００５０】
図６は、バス指定エディタ５００を表示するＧＵＩを示す。このエディタ５００を用いれば、時間ベース・ブロックダイアグラムにおけるバス信号を本発明の例示的な一実施形態に従って定義できる。バス指定エディタ５００により、ユーザは、バス信号の構成要素の特性など、バス信号の一定のプロパティを定義できる。通常の技能を備えた当業者であれば、本発明は例示的なこの実施形態に限定されず、仮想又は非仮想バス信号を定義するための任意適切な機構を、本発明の教示に従って使用できることは理解するはずである。
【００５１】
図６に示した実施形態では、バス指定エディタ５００は、バス信号の構成要素の物理的属性を指定する定義を入力するための複数フィールドを含むが、当業者であれば、本発明はバス信号を指定する図示した機構には限定されないことは理解するはずである。例示的なこの実施形態では、定義可能なバス信号４１０の特性には、バス信号構成する要素の名前、要素の次元（すなわち各信号が行列、ベクトル、又はスカラー値か）、例えばコンポーネント信号の属性のデータタイプ（信号が正数か、倍精度か、ブールかなど）などの信号タイプ、各要素の複素性、及び各要素のサンプリングモードが含まれるが、それらには限定されない。図示したように、バス指定エディタ５００は名前フィールド５０２を含み、このフィールドが、ユーザによるバス信号４１０を構成するコンポーネント信号の名前の定義を可能とし、バス信号に含まれるコンポーネント信号の数の指定を可能とする。例示的なバス指定エディタ５００は、ユーザによるバス信号を構成する信号の次元の数を指定可能とする名前フィールド５０４を含む。本明細書では、信号の次元とは、その信号がベクトル（１次元）か、マトリックス（２次元）か、それ以外かなどを指す。Simulink（登録商標）では、１次元（１Ｄ）信号は、一般に、シミュレーション時間ステップごとに一配列（ベクトル）の頻度で出力される１次元配列のストリームからなる。２次元信号は、１回のブロックサンプリング時間に、１つの２次元配列（行列）の頻度で発信される２次元配列のストリームからなる。単一要素配列はしばしば「スカラー」と呼ばれる。行ベクトルは、１行からなる２次元配列である。列ベクトルは、１列からなる２次元配列である。信号タイプフィールド５０６は、ユーザによる、バス信号を構成する信号の信号タイプの指定可能とする。例としては、信号の属性のデータタイプ指定がある。本明細書では、「データタイプ」という用語は、コンピュータシステムにおけるデータの内部表現に加え、データに関わるその他の意味を指す。可能なデータタイプの例には、ブール、１６ビット整数、固定小数点、倍精度などがある。複素性フィールド５０８は、ユーザによる、バス信号を構成する信号の複素性を指定可能とする。すなわち、各信号を構成する値が複素数か実数かを指定できる。複素信号とはその値が複素数である信号であり、実数信号は実数値を備える。サンプリングモード・フィールド５１０は、バス信号内の各要素のサンプリングモードを指定するためのものである。サンプリング時間フィールド５１２では、ユーザはバス信号のサンプリング速度を指定できる。ヘッダフィールド５１４では、ユーザはバス信号のヘッダを定義し、生成されたＣ符号における信号のタイプ定義を表す。記述フィールド５１６では、ユーザはバス信号の記述を入力できる。通常の技能を備えた当業者であれば、バス指定エディタは、例示的なこの実施形態に限定されるものでなく、モデリング・アプリケーションにおけるバス信号の１つ又は複数の属性を定義するための任意適切な機構を本発明の教示に従って使用できることは理解するはずである。
【００５２】
当業者であれば、バス信号を定義する機能は非仮想バス信号に限定されないことは理解するはずである。例えば、バス指定エディタを用いて仮想バス信号も定義できる。バスが仮想実装か非仮想実装かに関わらず、当該バスの定義を用いてその構成要素の特性を指定できる。
【００５３】
図６に示した実施形態では、「pos_bus」と名付けたバス信号４１０が指定されている。pos_busバス信号は、行列（２次元）である、「x_pos」と名付けた第１信号４１１を含み、データタイプは正数で、値は複素数で、サンプリングモードはサンプルベースである。pos_busバス信号の第２信号４１２は「y_bus」と名付けられており、１次元で、倍精度型の値を備え、実数である。バス信号の特性は、例示的なバス指定エディタ又は他の適切なツールを用いてユーザにより入力且つ定義される。
【００５４】
上述のように、バス信号に定義を与えた後、実行エンジン６ｄは、ブロックダイアグラムの通常のコード生成処理から独立して、非仮想実装を備えたバス信号のコードを独立定義として生成できる。例示的なこの実施形態では、バス信号の独立コードは、バス信号の定義が完了した時にその定義を用いて生成される。
【００５５】
発明の例示的な一実施形態によれば、バス指定はバス指定エディタ５００を用いて定義されるが、定義されたコンポーネント信号の名前のみを備えているため弱いこともあり、例えば完全に指定された名前、データタイプ、幅、複素性などのバス信号の全要素に対する完全な定義を備えているため強いこともある。更に、バス指定は部分的としてもよく、例えば名前や複素性は定義されているが、データタイプや幅は定義されていないなど、部分的な定義からなる場合がある。更に、ユーザには、バスを仮想とするか非仮想とするかを指定する機能が与えられる（例えば、コード生成のインターフェース）。
【００５６】
本発明の例示的な一実施形態では、バス信号を拡張してユーザにより決定且つ入力可能な定義を備えることで、ユーザがシステム・インターフェースを定義できるようになり、より頑丈で構造化した設計が実現する。
【００５７】
バス信号の指定はブロックダイアグラム・モデル内部に作成してもよいし、ユーザ定義データ（ＵＤＤ）クラスに基づいたアプローチを用いてモデルから独立して作成してもよい。バス信号の指定は、上述したようにバス指定エディタを用いて定義できるが、ダイアグラミング・プログラム内のバスライブラリに保存し、必要なときはユーザが呼び出しできる。又、この処理は、ブロックダイアグラムを構築するために、ブロックがブロックライブラリから呼び出される処理と似ている。バス信号の指定は、当該バス信号を実装する、関連付けられたブロックダイアグラム・モデルとともに保存できる。別法として、バス指定はブロックダイアグラム・モデルとは別に保存し、後のブロックダイアグラムの構築時にブロックダイアグラム・モデルと関連付けてもよい。
【００５８】
本発明の別の様態によれば、上述のように指定を定義済みのバス信号は、生成コードを実装すると、すなわち当該バス信号を含むブロックダイアグラムが実行エンジン６ｄによりコードに変換されると、多数のバリアントをもたらすことがある。時間ベース・ブロックダイアグラムのようなグラフィカルモデリング環境においてバス信号の「実装バリアント」（すなわち、１つの論理指定に付き複数の実装指定）を与える機能によって、同一の論理バス信号が異なる複数のコンテキストでアクセス可能となる。この場合、各アクセスは生成コードにおける最適表現を備えることになる。バス指定に複数の実装を可能とすることで、非常に効率的な生成コードが実現する。
【００５９】
使用例によっては、本発明は、バス信号を含むブロックダイアグラム又は他のグラフィカルモデルが表現する動的システムのシミュレーション時に、バス信号を生成コードで実装する様々な方法を提供する。例示的な一実施形態によれば、本発明は、バス信号を実装する５つの異なる方法を提供できる。例えば、バス信号は、生成コードにおいて関数に構造体として渡すこともできる（参照渡しで）。別法では、バス信号は、生成コードにおいて関数にグローバル構造体として渡すこともできる（グローバルとして静的に参照される）。一様態によれば、バス信号の個別要素を仮パラメータとして関数に渡してもよい（値渡しで）。更に別の実施例では、バス信号の各要素は１個の非構造的データとして渡してもよい。自動モードでは、実行エンジンは、バス信号を実装する際にどの方法を用いるかを自動的に計算且つ決定する。
【００６０】
バス信号がシステム（すなわち生成コードの関数）との間でいかに効率的に受け渡しされるかは、状況に依存する。例示的な一実施形態によれば、生成コードにおけるバス信号の実装は、モデル階層の異なるレベルに対応する。
【００６１】
本発明の例示的な一実施形態の適用例では、ユーザがどの実装方法を使用するかを選択する仕組みが提供される。例えば、バス信号の作成時に、ユーザは、作成したバス信号が仮想或いは非仮想かを指定でき、又、非仮想の場合は、ローカル構造体又はグローバル構造体を使用できるようにこのバス信号のプロパティを編集できる。好適な一実施形態では、バス引数受け渡し機構は、ユーザが、図６に示したバス指定エディタ５００などのバスエディタ・インターフェースを用いて指定可能としてもよい。
【００６２】
本発明の別の様態によれば、モデリング・アプリケーション６は、モデルの構築及びシミュレーション時に特定のバスタイプを適用するためチェックを行う。バスの指定には、静的及び動的チェックを実行する方法を含むことができる。例えば、バス信号内の各コンポーネント信号に関して、ユーザは、図２に関連して示したようにステップ１２のブロックダイアグラムの作成時に、バス指定エディタ５００を用いて制約条件を指定できる。バス信号内の各信号に関する制約条件を指定した後、上述のように、実行エンジン６ｄは、ステップ１４に先だって静的チェックを実行して、属性伝播段階においてシミュレーション前に一定の制約条件を検査できる。別の様態によれば、実行エンジン６ｄはステップ１８で動的チェックを実行し、これがブロックダイアグラムのシミュレーション時に制約条件を検査する。こうしたチェックを使用して、指定したバスタイプ又は定義をサブシステム入力又は出力に適用したり、サブシステム入力の範囲を指定したりできる。ブロックダイアグラムの作成及び実行時に制約条件チェックを実行できる機能により、より安全な設計がもたらされる。
【００６３】
例えば、一様態によれば、バス信号を受け取るサブシステムのインポート（原語：inport）ブロックは、バス信号の受け入れ可能バリアントを指定する。従って、本発明の例示的な一実施形態による実行エンジンが実行する制約条件チェックにより、指定したフォーマットを備えたバス信号のみがサブシステムに渡されることが保証される。ユーザが指定フォーマットと違うフォーマットを備えたバス信号を通過させようとすると、属性伝播段階（静的チェック）時か、シミュレーション時（動的チェック）時に実行エンジン６ｄがエラーを発することになる。
【００６４】
バス信号を定義し且つバス信号のコードを生成する機能は、データ入力を大幅に引き下げる一方で、簡潔なダイアグラムの作成を可能とする。図７には、本発明の例示的な一実施形態による改良型バス信号を実装するブロックダイアグラム・モデル６００の一例を示した。図示したように、コンポーネント信号６０ａ、６０ｂ、６０ｃ、６０ｄ、及び６０ｅが、バス作成ブロック６０６を用いてグループ化されており、このモデルの線の数が減少している。例示的なバス作成ブロック６０６は、オプションのユーザ定義データクラス指定も備えている。図示したように、バス作成ブロック６０６は、信号６０ａ、６０ｂ、６０ｃ、６０ｄ、及び６０ｅを結合して、例えばバスエディタ・インターフェースで定義されたように、タイプ「foo」の「sig」と名付けられたバス信号６１０を作成する。バス信号６１０は、入力ポート８０ａを介してサブシステム８０に接続する。サブシステム８０は、バス信号６１０のコンポーネント信号が表現する値に対して実行する演算を表す。図示したように、サブシステム８０は、タイプ「foo」（すなわちバス信号６１０と同じタイプ）の信号を受け取るように構成されている。サブシステム８０は、バス信号６１０が適切なタイプであることを確認するためのチェックを行う。仕様にもよるが、図７に示したようにこのサブシステムは、出力ポート８０ｂを介して第１出力７２０と、出力ポート８０ｃを介して第２出力７１０とを出力する。第２出力７１０はバス信号でよい。又、バス信号６１０は分岐して、入力ポート７０ａを介して代入ブロック７０に進む。代入ブロック７０は、ポート７０ｂを介して値を指定要素（信号６０ｂ）に代入するが、その際にバス信号６１０を分解し、再構築する必要がない。この代入ブロックは、その出力を表すバス信号８１０に接続する出力ポート７０ｃを備えている。バス信号８１０は「sig_prime」と呼ばれ、これもタイプ「foo」である。図示したように、代入ブロック７０は、値をバス信号の１つ又は複数の要素に代入する一方で、その信号の構造は保存する。出力バス信号８１０はバス選択ブロック６０８に進み、このブロック６０８はバス信号８１０から信号６０ａ及び６０ｅを非グループ化する。
【００６５】
図８は、本発明の一実施形態による、拡張バス信号機能を実現する別のブロックダイアグラム・モデル７００を示す。図示したように、入力ブロック「In1」９２からは、「foo」と指定されたバスタイプを備えた「ｘ」と名付けたバス信号９１０が発せられている。現在のデータタイプ伝播と同様に、入力バス信号がタイプ「foo」でない場合は、エラーが出される。バス信号のバス指定エディタでは、ユーザは、オプションで入力バス信号９１０を非仮想に構成できる（すなわち、構造実装）。このシステムは、信号が適切なタイプであることを保証するため、入力バス信号９１０に静的及び動的チェックを行う。単位遅延ブロック９９として示されたブロックがバス信号９１０を受け取って、入力バス信号９４と同じタイプのバス信号９１０’「x_prime」を出力する。ブロック９９からのバス信号９１０’の出力は、指定次第で仮想でも非仮想でもよい。図８に示したように、ユニット遅延ブロック９９は、入力信号を１サンプル時間分で遅らせる。通常の技能を備えた当業者であれば、上述の単位遅延ブロックは本発明の実施形態を例証するものであり、バス信号が表現する値に対して実行される関数を表現する任意適切なブロックを使用できることは理解するはずである。Stateflowブロック１０２は、ブロック９９からタイプ「foo」のバス信号を受け取り、スカラー「out」信号１０６とタイプ「goo」のバス信号「y」１１１０とを出力する。スカラーのout信号１０６は出力ポート１１６に進み、バス信号１１１０は出力ポート１１８に進む。入力バスと出力バスとに問題のある接続があれば、このシステムはエラーを発する。例えば、バス信号９１０’がタイプ「foo」でなく「goo」であれば、Stateflowブロック１０２はこの信号を入力として受け取らない。バス信号１１１０は、出力ポート１１８に進む前に分岐し、一方の分岐がバス選択ブロック９０８に進む。バス選択ブロック９０８は、出力バス信号１１１０を２つの信号１２０ｍ及び１２０ｎに分解し、非グループ化された信号１２０ｍ、１２０ｎを付加的ブロック（図示しない）に渡す。
【００６６】
グラフィカル・ユーザインターフェースに表示したStateflowダイアグラム１８０を示す図９から分かるように、テキストベースのStateflowアクション言語は、図８のバス信号９１０’の要素に直接アクセスできる。Stateflowアクション言語によりStateflowダイアグラム１８０で定義さているように、Stateflowブロック１０２の出力信号１０６は、タイプ「foo」の入力バス信号９１０’の２つのコンポーネント信号の積に等しい。更に、Stateflowダイアグラム１８０は、出力バス信号「y」１１１０を、構成要素「m」及び「n」をそれぞれ５及び４とするタイプ「goo」のバス信号として定義する。
【００６７】
図１０Ａ及び１０Ｂに示したように、バス信号は、その構造を非グループ化したり変更したりすることなく、第１ドメインから第２ドメインへ渡すこともできる。現在の技術水準における異なるドメインの例には、Simulink（登録商標）、Stateflow、及び組込みMATLABが含まれるが、これらに限定されない。例えば、例示的な実施形態では、Simulink（登録商標）は時間変化信号をモデル化する時間ベース・ブロックダイアグラムであり、Stateflowはイベント駆動型の様相論理をモデル化する状態ベースのダイアグラムドメインである。図１０Ａは従来のブロックダイアグラム８００を示すが、ここでは、Stateflowチャート８２０などの第２ドメインのサブシステムは、異なるドメインを起点とするバス信号を受け入れたり、処理したりすることはできない。Stateflowは、マサチューセッツ州ナティック所在のThe
Mathworks社から入手可能の、イベント駆動型システムをモデル化し、シミュレーションする対話型設計ツールである。図示したように、入力バス信号８１０は、バス選択ブロック８０８を用いて多数のデータ信号に非グループ化される。すると、それぞれのデータ信号はこのサブシステムに渡される。サブシステム８００からの出力信号はその内部を通過した後、バス作成ブロック８０６を用いて複数のバス信号８１０ａ及び８１０ｂに再グループ化され、結果として複雑で不明瞭なブロックダイアグラムができあがる。
【００６８】
図１０Ｂに示した本発明の一様態によれば、時間ベース・ブロックダイアグラムにおけるブロックダイアグラム８００’は、Simulink（登録商標）などの別のドメインからのバス信号を、このバス信号を形成する信号を非グループ化しないで受け入れるよう構成されたブロック８２０’（Stateflowチャートを表す）を含んでいる。例えば、図１０Ｂに示したように、ブロック８２０’は、バス作成ブロックやバス選択ブロックを必要としないで入力バス信号８１０’を直接的に受け入れ、信号８１２並びにバス信号８１０’ａ及び８１０’ｂを直接的に出力する。第１ドメインと第２ドメインとの間のこうした直接インターフェースは、ブロックダイアグラムを大幅に簡素化する。
【００６９】
図１１及び１２に示したように、別の実施形態では、バス信号は、第１ドメイン（例えば、Simulink（登録商標）などのブロックダイアグラム環境）から第２ドメイン（MATLABなどの技術計算環境）へ渡すこともできる。例えば、図１１に示したように、Simulinkブロックダイアグラム１１００の組込みMATLABブロック１１１０はバス信号１１１１の要素にアクセスできる。例示的なこの実施形態では、タイプ「foo」のバス信号１１１１が、組込みMATLABブロック１１１０に渡され、入力バス信号１１１１とタイプが同一の「foo」タイプのバス信号１１１２として出力される。図１２は、第２ドメインの組込みMATLABエディタ１２００を示す。このエディタは、組込み
MATLABブロック１１１０により入力信号に実行される関数を指定する。エディタ１２００のコードで指定されているように、ブロック１１１０の出力信号「ｙ」１１１２は、ブロック１１１０への入力信号「u」１１１１の関数である。入力信号１１１１及び出力信号１１１２の両方は、タイプ「foo」のバス信号である。図示したように、組込みMATLABスクリプト、すなわちSimulink（登録商標）内のテキストベース言語は、入力バス信号１１１１の要素に直接アクセスできる。
【００７０】
図１３は、図１１に示したMATLABブロック１１１０の入力ポートのパラメータを指定するためのグラフィカル・ユーザインターフェース１３００を示す。図示したように、ユーザは、MATLABブロック１１１０のバス信号タイプを、タイプ「foo」或いは他の任意のユーザ指定タイプとしてフィールド１３１１で指定できる。指定可能な別のパラメータとしてはポート番号があり、フィールド１３１２で指定する。当業者であれば、インターフェース１３００を用いてサブシステムの構成要素の任意適切なパラメータを指定できることは理解するはずである。
【００７１】
通常の技能を備えた当業者であれば、本発明は例示的なこのシステムに限定されず、任意適切なサブシステムがバス信号を受け取り可能としてよいことは理解するはずである。例えば、バス信号を、従来のブロックダイアグラム、真理表、テキスト形式プログラミング言語（MATLAB、統一モデリング言語(UML)、又は他のドメイン）の間で構造化データとして受け渡すようにしてもよい。
【００７２】
本発明では、たとえばSimulinkにおけるスクリプティングブロック並びにStateflow及び組込みMATLABにおけるテキスト形式関数は、両方ともバス信号の形式をサポートする。入出力バス信号は、スクリプトおいて適切に名前を付けた構造体変数へ記号を用いてマッピングされる。自然構文を用いて、使用されている実際のスクリプティング言語内の構造体及び／又は構造体ポインタを参照してもよい。例示的な一実施形態によれば、好適なスクリプティング言語はStateflowアクション言語及びMATLABであるが、当業者であれば、このスクリプティング言語は、MATLAB、C/C++、及びJAVA（登録商標）など任意の合成可能な（原語：synthesizable）テキスト形式言語でよいことは理解するはずである。
【００７３】
本発明では、実行エンジンは入出力バスの構造的定義を活用して、Simulinkバスを他のプログラミング言語の構造変数へ意味論的にマッピングする。これによって、Simulinkなどの時間ベース・ブロックダイアグラム環境と、グラフィカル状態及びフローダイアグラム又はMATLABを含むテキスト形式言語などの他のモデル化ドメインとの間で、コンポジット信号を橋渡しする独自の便利な方法が提供される。
【００７４】
本発明は、バス信号を形式化することでバス信号をより効果的、直感的に理解可能とし、且つ容易に使用可能とする動的システムをモデル化するグラフィカルモデリング環境を提供する。ユーザが入力した定義を備えたバス信号を用いることで、単純化されたブロックダイアグラムが実現すると共にデータ入力が容易となるので、動的システムのシミュレーションがより効率的となる。
【００７５】
ここまで例示的な実施形態に関連して本発明を説明してきた。上記の構成に対する幾つかの変更例が、本発明の範囲を逸脱することなく可能であるから、この説明に含まれ或いは添付の図面に示された全ては、例示的なものとして解釈されるべきであり、限定的な意味で解釈されるべきではない。
【００７６】
更に、以下の特許請求の範囲は、ここに説明された本発明の全ての一般的特徴と具体的特徴とを網羅するものであり、また本発明の範囲に関する全ての言明をも網羅する。
【図面の簡単な説明】
【００７７】
【図１】図１は、本発明の例示的な実施形態を実施するのに適した環境を示す。
【図２】図１に示した環境を用いた動的システムのシミュレーションに関わるステップを図示するフローチャートである。
【図３】仮想バス作成ブロック及びバス選択ブロックを含んだ、従来技術のブロックダイアグラムを示す。
【図４】バス信号を作成するための、現在の技術水準によるバス選択ダイアログボックスを示す。
【図５】本発明の一実施形態によるバス信号を含んだブロックダイアグラムを示す。
【図６】本発明の例示的な一実施形態による、グラフィカルモデリング環境におけるバス信号を定義するためのバス指定エディタを示す。
【図７】本発明の一実施形態による、拡張バス信号を実装するブロックダイアグラム・モデルを示す。
【図８】本発明の一実施形態による、拡張バス信号機能を実現する別のブロックダイアグラム・モデルを示す。
【図９】本発明の一実施形態による、Simulinkドメインからバス信号をアクセスするStateflowダイアグラムを示す。
【図１０】（Ａ）  Stateflowチャートをサブシステムとして含んだ、従来技術のブロックダイアグラムを示す。  （Ｂ）  本発明の一実施形態によるStateflowチャートを含んだブロックダイアグラムを示す。
【図１１】組込みMATLABブロックを含んだブロックダイアグラムを示し、このダイアグラムは、バス信号をそのブロックダイアグラム・ドメインからアクセスする。
【図１２】図１１のMATLABブロックのエディタを示す。
【図１３】図１１に示したMATLABブロック１１１０の入力ポートの属性を指定するためのグラフィカル・ユーザインターフェースを示す。
【図１】
2007510223.tif 000003
【図２】
2007510223.tif 000004
【図３】
2007510223.tif 000005
【図４】
2007510223.tif 000006
【図５】
2007510223.tif 000007
【図６】
2007510223.tif 000008
【図７】
2007510223.tif 000009
【図８】
2007510223.tif 000010
【図９】
2007510223.tif 000011
【図１０Ａ】
2007510223.tif 000012
【図１０Ｂ】
2007510223.tif 000013
【図１１】
2007510223.tif 000014
【図１２】
2007510223.tif 000015
【図１３】
2007510223.tif 000016
【手続補正書】
【提出日】平成17年9月7日(2005.9.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
電子装置における方法であって、
グラフィカル・ユーザインターフェースに表示されるグラフィカルモデルにおいて、第１信号タイプの第１データ信号と、当該第１信号タイプとは異なる第２信号タイプの第２データ信号とをグループ化してバス信号を形成する段階と、
前記グラフィカルモデルのシミュレーション時に、前記バス信号に非仮想演算を行う段階とを含む、方法。
【請求項２】
前記グラフィカルモデルがブロックダイアグラムであり、更に、前記バス信号に非仮想演算を行う前記段階が、前記非仮想演算を表現する演算ブロックを含んだ前記ブロックダイアグラムを構築する段階と、前記ブロックダイアグラムにおける前記バス信号の表現を前記演算ブロックの入力ポートに接続する段階を含む、請求項1に記載の方法。
【請求項３】
前記演算ブロックの出口が、変更第１データ信号と変更第２データ信号とを含む変更バス信号に接続し、前記変更第１データ信号が、前記第１データ信号を入力とする前記非仮想演算の出力を表す一方、前記変更第２データ信号が、前記第１データ信号を入力とする前記非仮想演算の出力を表す、請求項２に記載の方法。
【請求項４】
前記演算ブロックにより表現される非仮想演算を行う前記段階が、前記第１データ信号及び前記第２データ信号により表現される値を前記非仮想演算の入力として用いることによって前記非仮想演算を解く段階を含む、請求項２に記載の方法。
【請求項５】
前記非仮想演算を解く前記段階が、前記グラフィカルモデルを、当該グラフィカルモデルを表現する実行可能なコンピュータ可読命令に変換する段階と、前記コンピュータ可読命令を実行する段階とを含み、前記コンピュータ可読命令が前記モデルにより指定される機能を実装する、請求項４に記載の方法。
【請求項６】
前記バス信号の前記第１データ信号及び前記第２データ信号の１つ又は複数の物理的属性を定義する段階を更に含む、請求項１に記載の方法。
【請求項７】
前記バス信号が、前記演算ブロックの出力ポートと、前記演算ブロックの入力ポートとで同一の構造を持つ、請求項２に記載の方法。
【請求項８】
前記非仮想演算が、前記第１データ信号及び前記第２データ信号で表される値に対する乗算、除算、積分、微分、線形変換関数、遅延関数、極及びゼロで指定された変換関数、不感帯関数、スイッチング関数、量子化関数、及びレート制限関数のうち１つを含む、請求項１に記載の方法。
【請求項９】
前記第１信号が第１データタイプを含む属性を具備し、前記第２信号が、当該第１データタイプとは異なる第２信号タイプを含む属性を具備した、請求項１に記載の方法。
【請求項１０】
前記バス信号の制約条件を検査する段階を更に含む、請求項１に記載の方法。
【請求項１１】
動的システムをシミュレーションするためのモデリング・アプリケーションを生成し且つ表示するシステムであって、
データを前記アプリケーションに入力するためのユーザが操作可能な入力手段と、
前記動的システムを表現するグラフィカルモデルを表示するための表示装置と、
コンピュータプログラム命令及びデータを記憶するためのメモリ並びに前記記憶されたコンピュータプログラム命令を実行するためのプロセッサを含む電子装置とを含み、前記コンピュータプログラム命令が、前記グラフィカルモデルで表示されたバス信号に非仮想演算を実行するための命令を含み、前記バス信号が、当該バス信号を形成するためグループ化された第１信号タイプの第１データ信号と、当該第１信号タイプとは異なる第２信号タイプの第２データ信号とを含む、システム。
【国際調査報告】
2007510223.tif 000017
2007510223.tif 000018
2007510223.tif 000019
2007510223.tif 000020