Real-Time Workshop Release Notes | ![]() ![]() |
新機能
本節では、Real-Time Workshop 4.0 以降にReal-Time Workshop 4.1 で追加された新機能および強化された機能を紹介します。
最新リリースから組み込まれているReal-Time Workshopの機能については、Release Summaryを参照してください。
注意 Real-Time Workshopを拡張する関連プロダクトに関する情報は、Real-Time Workshop Embedded Coder と xPC Targetに関するRelease Noteを参照してください。 |
Block ReductionオプションはデフォルトでOnです
Block reductionオプション(シミュレーションパラメータダイアログボックスのAdvancedページ)は、デフォルトでonに設定されます。従来のリリースでは、このオプションは、デフォルトではoffでした。
Block reductionは、ブロックの集合の中には、グループを単一の効率的なブロックにならないか、あるいはそれら全体を削除するものがあります。これにより、シミュレーション中や生成されたコード内でのモデルの実行が高速化されます。
詳細は、Real-Time Workshop User's Guide のBlock Reduction Optionを参照してください。
Buffer Reuse Code Generationオプション
Buffer reuseオプションは、Real-Time WorkshopページのGeneral Code Generation Options (cont.)カテゴリから利用可能です。Buffer reuseオプションを選択すると、信号のストレージは可能な場合はいつでも再利用されます。
従来のリリースでは、このオプションは、以下のように、MATLABのset_param
およびget_param
コマンドからのみ利用可能でした。
set_param
およびget_param
コマンドもサポートされています。
詳細は、Real-Time Workshop User's Guide のBuffer Reuse OptionとSignals: Storage, Optimization, and Interfacingを参照してください。
ビルドディレクトリの検証
ビルドプロセスは、MATLABディレクトリツリーではプログラムをビルとできません。MATLABディレクトリツリーでコードを生成しようとすると、MATLABディレクトリツリーでない作業ディレクトリに変更するように促すエラーメッセージが表示されます。PCでは、ディレクトリmatlabroot
/Work
でビルドを継続することができます。
ビルドプロセスは、matlabroot
でMATLABディレクトリ名にダラー記号($
)がある場合は、プログラムをビルドできません。
Build Subsystemの機能強化
Real-Time Workshop 4.0で導入されたBuild Subsystem機能により、モデル内のnonvirtualサブシステムからコードを生成し、ビルドすることができます。Real-Time Workshop 4.1 では、Build Subsystem機能は、以下のように強化されています。
詳細は、Real-Time Workshop User's Guide のGenerating Code and Executables from Subsystemsを参照してください。
パラメータチューニング用のC API はドキュメント化されています
Real-Time Workshopは、エクスターナルモードを利用せずにモデルパラメータにアクセスするために、プログラムを実行することが可能なデータ構造体とC API を提供します。このAPIは、ドキュメント化されています。
C API によってモデルパラメータにアクセスするには、モデル固有のパラメータマッピングファイル、model_pt.c
を生成します。このファイルは、パラメータチューニング用に必要な情報を含むパラメータマッピング配列を含みます。
パラメータマッピングファイルの生成や利用方法に関する情報は、Real-Time Workshop User's Guide のC API for Parameter Tuningを参照してください。
コードの読みやすさの改良
Control Flowブロックのサポート
Simulink 4.1 は、if-else やswitchのようなロジック構造、およびdo-while, for, whileのようなループ構造をサポートするブロックをインプリメントしています。Real-Time Workshop 4.1 は、これらのブロックからのコード生成をサポートします。
制御フローブロックに関する詳細は、Control Flow StatementsのUsing Simulink を参照してください。
Expression Folding
Expression folding は、ブロック出力の中間結果の計算を最小限にし、その結果をテンポラリバッファあるいは変数に格納するコード最適化手法です。可能な場合には、Real-Time Workshopは、モデル内の各ブロックに対して別々のコードステートメントやストレージ宣言を生成せずに、ブロックの計算を単一の表現にまとめ、"folds"します。
Expression foldingは、生成コードの効率を大きく改良しし、手動で最適化したコードと遜色ない結果になります。多くの場合において、モデルの計算は、単一の高度に最適化されたコードにまとめられます。
ほとんどのSimulinkブロックは、expression foldingをサポートします。
詳細は、Real-Time Workshop User's Guide のExpression Foldingを参照してください。
インラインパラメータのサポート
Real-Time Workshopは、エクスターナルモードターゲットプログラムのビルド時に、Inline parametersコード生成オプションを利用します。パラメータをインライン化するとき、Model Parameter Configuration ダイアログを使って、ここのパラメータをインライン化せずに、それらをチューニング可能と宣言することができます。これにより、ほとんどのパラメータをことにより全体の効率を改良し、同時に、アプリケーションにとって重要な選択されたパラメータに対しては、実行時のチューニングを保つことができます。さらに、Model Parameter Configuration ダイアログは、パラメータが生成コード内で表現される方法を制御するためのオプションを提供します。
Inline parametersをonにして生成されたターゲットプログラムにSimulinkが接続するたびに、ターゲットプログラムは、(存在すれば)チューニング可能なパラメータのカレント値をホストにアップロードします。これらの値は、対応するMATLABワークスペース変数に割り当てられます。この手順により、ホストとターゲットは、パラメータ値に関して同期を取ることが保証されます。
エクスターナルモードをサポートするすべてのターゲット(すなわち、grt
, grt_malloc
, Tornado)は、パラメータをインライン化することができます。
詳細は、Real-Time Workshop User's Guide のOverview of External Mode Communicationsを参照してください。
ステータスバー表示
Simulinkはエクスターナルモードターゲットを実行しているプログラムに接続されると、シミュレーション時間とその他のステータスバー情報が表示され、normalモードと同様に更新されます。
Generate Commentsオプション
このオプションは、コメントが生成コード内に書かれるかどうかを制御します。詳細は、Real-Time Workshop User's Guide のGenerate Commentsを参照してください。
識別子にシステム階層を含める
このオプションがonのとき、Real-Time Workshopは、(コメントに含まれるタグに加えて)system identificationタグを生成コード内に挿入します。タグを使って、ソースモデル内で、あるコードを生成したブロックのネスティングレベルを識別することができます。
詳細は、Real-Time Workshop User's Guide のInclude System Hierarchy in Identifiers を参照してください。
Rapid Simulation Targetはインラインパラメータをサポートします
Rapid Simulation Targetは、Inline parametersがonのとき機能します。Inline parameters がonのとき、すべてのパラメータと信号に対するストレージクラスは、何もしなくでもauto
に設定されています。
S-Function Targetの機能強化
Real-Time Workshop 4.0で導入されたS-Function Target Generate S-function機能により、サブシステムからS-functionを生成します。この機能は、以下のように強化されています。
詳細は、Real-Time Workshop User's Guide のAutomated S-Function Generationを参照してください。
部録ステータスのストレージクラス
ブロックタイプの中には、Real-Time Workshop letsが、モデル内のブロックステータスがどのように格納され、生成コード内でどのように表現されるかを制御するものがあります。State Propertiesダイアログを利用すると、以下のことが行えます。
詳細は、Real-Time Workshop User's GuideのBlock States: Storing and Interfacingを参照してください。
UNIXプラットフォームでのファイル名内のチルダ(~)のサポート
Simulinkのすべてのファイル名フィールドは、ファイル名でのチルダ(~)のマッピングをサポートします。たとえば、To Fileブロックで、<code>~/outdir/file.mat</code>
を指定することができます。ほとんどのシステムにおいて、これは、/home/$USER/outdir/file.mat
に展開されます。Real-Time Workshopは、展開された名前を利用します。
Target Language Compiler 4.1
本節では、本リリースにおいて、Target Language Compilerに対して行われた変更点をまとめます。TLC Compatibility Issuesを参照してください。
新規TLC Debugger
TLC debuggerは、TLCコード内でのプログラミングエラーを識別します。デバッガは、TLCコード内にブレークポイントを設定し、ライン毎にTLCコードを実行し、変数を調べて変更し、その他の多くの有用な操作を行うことができます。
TLC debuggerは、コード生成中に機能し、コード生成プロセスにおいてオーバヘッドをほとんど発生しません。デバッガは以下のようにして起動することができます。
%breakpoint
ステートメントを含める
tlc
コマンドを以下のように使用
詳細は、Target Language Compiler Reference GuideのDebugging TLCを参照してください。
model.rtwファイルフォーマットの変更
model
.rtw
ファイルのフォーマットは、変更されています。 TLC Compatibility Issuesを参照してください。
TLCでのBlock I/O Connection Handlingのクリーンアップ
rtw/c/tlc/blkiolib.tlc
およびrtw/ada/tlc/blkiolib.tlc
での信号接続の取り扱いは、再機能しました。詳細は、Target Language Compiler Reference GuideのTLC Function Library ReferenceのLibBlockInputSignal
を参照してください。
リテラル文字列のサポート
文字列定数の接頭辞がL
フォーマット指定子である場合は、エスケープキャラクタ処理は、その文字列では行われません。これは、つぎの例のように、PCスタイルのパスやディレクトリ名の指定に役立ちます。
新規のTLCライブラリ関数
以下の関数は、TLC Function Libraryに追加されています。
LibBlockInputSignalConnected
LibBlockInputSignalLocalSampleTimeIndex
LibBlockInputSignalOffsetTime
LibBlockInputSignalSampleTime
LibBlockInputSignalSampleTimeIndex
LibBlockOutputSignalOffsetTime
LibBlockOutputSignalSampleTime
LibBlockOutputSignalSampleTimeIndex
LibBlockMatrixParameterBaseAddr
LibBlockParameterBaseAddr
LibBlockNonSampledZC
これらの関数の詳細は、Target Language Compiler Reference GuideのTLC Function Library Referenceを参照してください。
TLCバグフィックス
ISINF
, ISNAN
, ISFINITE
は、複素数値に対して機能します。
%filescope
命令は、記述した通りに機能します。
ROLL_ITERATIONS
が %roll
コンストラクトの外部で呼び出されたときに発生していたクラッシュが修正されてました。ROLL_ITERATIONS
は、%roll
コンストラクトの外部で呼び出された場合は、NULL
を出力します。
\
あるいは/
をセパレータキャラクタとして使うことができます
0.0
は、-0.0
と等価です。![]() | Real-Time Workshop 4.1 Release Notes | バグフィックス | ![]() |