ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Simulink モデルでの単位の指定

Simulink® では、モデル コンポーネントの境界で信号に属性として物理単位を指定することができます。該当するコンポーネントは以下のいずれかです。

  • サブシステム

  • 参照 Simulink モデル

  • Simulink と Simscape™ およびその関連物理モデリング製品で作成されたコンポーネントとの間のインターフェイスである Simulink-PS Converter ブロックと PS-Simulink Converter ブロック

  • Stateflow® チャート、状態遷移表、真理値表

  • MATLAB Function ブロック

信号単位を指定、制御、可視化することで、モデルのさまざまなコンポーネント間で計算の整合性を確保できます。たとえば、レベルを高めた整合性チェックは、別々に作成された多くのコンポーネントを大規模で全体的なシステム モデルに統合する場合に役立ちます。

Simulink モデルでは、"単位データベース" から単位を指定します。単位データベースは、次の単位系の単位で構成されます。

  • SI — 国際単位系

  • SI (extended) — 国際単位系 (拡張)

  • English — 英語単位系

  • CGS — センチメートル・グラム・秒単位系

モデル化しているシステムのタイプに基づいて、これらのサポートされる単位系の任意の組み合わせを使用できます。サポートされる単位系とそれらの単位系に含まれる単位の詳細については、「許可されている単位」を参照してください。

以下のブロックを介して単位を信号に割り当てることができます。

以下のオブジェクトも使用します。

サポートされるブロックをモデルに追加すると、ブロックの [単位] パラメーターが既定で [inherit] に設定されます。この設定で、ブロックは明示的に指定された単位をもつ接続先の信号から単位を継承します。

サポートされるブロックの [単位] パラメーターを使用して信号の単位を明示的に指定できます。このパラメーターでは、ダイアログ ボックスに次のように便利な一致候補が示されます。

正しい形式の単位式を指定しないと、エラーが表示されます。正しい形式の単位式は、単位名または記号と、適切に一致する小かっこ、および */^ 文字の組み合わせです。[]{}<>\"& などの特殊文字はサポートされません。

既定では、ブロック端子に "空の" (未指定の) 単位があり、[単位] パラメーターは [inherit] に設定されています。1 つの端子の単位を指定すると、Simulink では接続されている端子の単位設定がチェックされます。端子が空の単位をもつ場合、その端子をサポートされる単位をもつ別の端子に接続できます。端子の [単位] パラメーターが [inherit] に設定されている場合は、指定された単位をもつ接続先の端子から単位が継承されます。

物理量の指定

物理システムをモデル化する場合、異なる物理量を表す 2 つ以上の信号に同じ単位式を使用できます。たとえば、N*m の単位式はトルクやエネルギーを表すことができます。単位は同じでも物理量が異なる 2 つの端子を誤って接続しないように、物理量を単位式に追加できます。たとえば、同じ単位 N*m の場合は、N*m@torqueN*m@energy の別の物理量を指定できます。単位と同様に、ダイアログ ボックスには物理量の名前を入力すると候補が示されます。

物理量を使用すると、接続されている端子間での単位の整合性チェックのレベルを強化できます。物理量が異なる端子を接続しようとすると、モデルで警告が表示されます。

オブジェクトでの単位の指定

既定では、Simulink.SignalSimulink.BusElement および Simulink.Parameter オブジェクトは空の単位をもちます。次の場合があります。

  • Simulink.Signal オブジェクトの場合、空の単位は、対応する信号が上流端子または下流端子から単位を継承できることを意味します。

  • Simulink.BusElement オブジェクトの場合、空の単位は、対応するバス要素信号も空の単位をもつことを意味します。いずれかの単位をもつ端子に信号を接続できますが、信号は端子から単位を継承しません。

  • Simulink.Parameter オブジェクトの場合、そのオブジェクトは単位を対応するパラメーター値に付加しません。

Simulink.Signal オブジェクトまたは Simulink.BusElement オブジェクトで単位を指定すると、Simulink では次の場合に対応する信号線に属性が適用されます。

  • Simulink.Signal オブジェクトがモデルの信号に関連付けられている。

  • Bus CreatorBus Selector または Bus Assignment ブロックをもつ Simulink.Bus オブジェクトに関連付けられているバス要素信号を使用している。

Data Store ブロックを含むこれらのいずれかのオブジェクトを使用する場合、Simulink にはどの単位属性も表示されません。

Simulink.Parameter オブジェクトの場合、Simulink では属性は適用されません。すべてのオブジェクトで、[単位] パラメーターに正しい形式の値を指定しないと、エラーになります。単位の形式が正しくても未定義の場合は、モデルをコンパイルするときに警告が表示されます。単位式に []{}<>\"& などの特殊文字が含まれる場合、Simulink ではそれらの特殊文字がアンダースコア (_) に置き換えられます。

カスタム単位のプロパティ

R2016a 以降の Unit プロパティおよび DocUnits プロパティについてのメモ:

  • DocUnits プロパティは、Simulink.Parameter オブジェクトまたは Simulink.Signal オブジェクト向けの Unit になっています。以前のリリースで Simulink.Parameter オブジェクトまたは Simulink.Signal オブジェクトの DocUnits パラメーターを使用して、現在では単位仕様に準拠していないテキストを含めた場合、モデルのシミュレーション時に警告が返されます。

    こうした警告を非表示にするには、コンフィギュレーション パラメーター単位の不一致メッセージnone に設定します。この設定によって、単位の不一致チェックのすべての警告が非表示になります。

  • 以前に定義した Unit プロパティをもつ Simulink.ParameterSimulink.Signal または Simulink.BusElement から派生したクラスがある場合、Simulink は次のようなエラーを返します。

    ​Cannot define property 'Unit' in class 'classname' because
     the property has already been defined in the superclass 'superclass'.

    このプロパティを使用して信号の物理単位を表す場合、R2016a 以降のリリースでは、その派生クラスの Unit プロパティを削除します。正しくない形式の単位式を Unit フィールドに割り当てていない限り、既存のスクリプトは引き続き機能します。この場合、引き続き単位式を割り当てることができるようにするには、Unit の使用を DocUnits で置換します。

    メモ

    既存のデータを MAT ファイルまたは .sldd ファイルに保存する場合、R2016a より前のリリースで、まず Unit プロパティのコンテンツを DocUnits にコピーします。次に、R2016a 以降のリリースでモデルを読み込む前に、そのファイルを以前のリリースで保存します。

温度信号の単位の指定

絶対温度をモデル化する場合は、KdegCdegFdegR などの単位を使用します。温度 "差" をモデル化する場合は、deltaKdeltadegCdeltadegFdeltadegR などの単位を使用します。温度差の単位をもつ信号を "絶対" 温度の単位を指定するブロックに接続すると、Simulink で不一致が検出されます。

MATLAB Function ブロックでの単位の指定

[端子とデータの管理] の [単位] パラメーターを使用して、MATLAB Function ブロックの入力データと出力データの単位を指定できます。

モデルの更新時に、Simulink は、入力または出力データ端子と対応する信号との間の単位の不一致をチェックします。

信号データのログ記録と読み取りの単位の指定

ログ記録するまたは読み込む信号データに単位を含めることができます。

ログ記録と読み込みの単位を指定するには、Simulink.SimulationData.Unit オブジェクトを使用します。[データセット] または [時系列] 形式を使用してログを記録している場合、Simulink では Simulink.SimulationData.Unit オブジェクトを使用して単位情報が保存されます。読み込む MATLAB® 時系列データを作成する場合は、timeseries オブジェクトの Units プロパティに Simulink.SimulationData.Unit オブジェクトを指定できます。

詳細については、単位を使用する信号データのログ単位を使用する信号データの読み込みを参照してください。

単位系の制限

既定では、サポートされる単位系のいずれかの単位を指定できます。ただし、大規模なモデリング プロジェクトでは、整合性を適用するために、モデルの特定のコンポーネントで使用できる単位系を制限できます。モデルで使用できる単位系を指定するには、コンフィギュレーション パラメーター [許可された単位系] で、all または 1 つ以上の SISI (extended)CGSEnglish で構成されるコンマ区切りのリストを入力します。引用符は使用しないでください。モデルに参照モデルが含まれる場合は、[許可された単位系] を使用して各参照モデルの単位を制限します。モデルにサブシステムが含まれる場合、Unit System Configuration ブロックを使用してサブシステムの単位を制限できます。オプションで、Unit System Configuration ブロックをモデルで使用することもできます。この場合は、Unit System Configuration ブロックの設定によって、[許可された単位系] で指定した内容がオーバーライドされます。

モデルで単位系を制限するには、以下のようにします。

  1. InportOutport または Signal Specification ブロックの [単位] パラメーターで、リンクをクリックします。

    Unit System Configuration ブロックがモデル内に存在する場合、このリンクでブロックのダイアログ ボックスが開きます。このブロックが存在しない場合、リンクで [許可された単位系] コンフィギュレーション パラメーターが開きます。

  2. 1 つ以上の必要な単位系 (SISI (extended)EnglishCGS) をコンマ区切りリストで指定するか、引用符を使用せずに all を指定します。

親子関係 (参照モデルやサブシステムをもつ最上位モデルなど) では、コンポーネントごとに別の単位系を指定できます。ただし、親に対して指定されている単位系に含まれない単位を子が親に伝播した場合、警告が示されます。

モデルの階層構造内に制限された単位系によって生じた単位の不一致があるかどうかを確認するには、以下を行います。

  • Ctrl + D キーを押して、モデルの警告バッジを視覚的に検査する。

  • モデル アドバイザーの [モデル内の許可されていない単位系を特定] チェックを使用する。

参考

| | | | | | | |

関連する例

詳細