リリース間のコード統合
嵌入式编码器®ライセンスをお持ちの場合、ソース モデルがシングルレートで、C コードが次から生成された場合に、以前のリリース (R2010a 以降) から生成された C コードを現在のリリースから生成されるコードと統合できます。
[再利用できない関数] コード インターフェイスを使用する最上位モデルまたはサブシステムのビルド プロセス。
エラーエラーステータスの监视监视を非表示に(
suppresserrorstatus.
を在
にする) 単一または複数インスタンスのモデル参照ビルド プロセス。
変更せずに既存のコードを再利用できる場合、再検証のコストを削減することができます。
ワークフロー
次の制御システムモデルについて検讨します。
Controller
Modelブロックは次の 3 つのコンポーネントで構成されるモデルを参照します。
P1.
は以前のリリース(たとえばr2015b)で开启されたモデルをするModelブロックです。スタンドアロンのコード インターフェイスをもつ生成されたモデル コードが、P1._ert_rtw
フォルダーにあります。C1.
は现出处于のリリースで开启中のモデルを参照するModelブロックです。P2.
は以前のリリース (たとえば R2016a) で開発されたサブシステム ブロックです。生成されたサブシステム コードがp2_ert_rtw.
フォルダーにあります。P3.
は以前のリリース(たとえばr2016b)で开启されたモデルをするModelブロックです。モデル参照コードインターフェイスをもつ生成されたモデルコードが,slprj/ert/P3
フォルダーにあります。
以前のリリースからのコードと現在のリリースから生成されるコードを統合するには、次のワークフローを使用します。
限制性
〖〗
ERTコードのエクスポート关键词
异なる异なるリリース生成さたertコードの境界をを金宝appSimulink功能ブロックおよび函数来电者ブロック。
R2010Aよりよりも前のリリース生成コードの合。
现处于ののリリース生成コードの以前のへのインポート(上位互换性)。
ブロックセットライブラリファイルなど,前のリリースのmatlab®ルート フォルダーにあるファイルのエクスポート。
インラインでない S-Function をもつモデルから生成されたコードのエクスポートおよびインポート。
モデルビルドプロセスの最后,统合(Controller
など) によって直接使用される共有ファイルがコード生成レポートに表示されます。このレポートにはモデルのコンポーネント (たとえばP1.
やP2.
) によって使用される共有ファイルは表示されません。
モデルモデルに以のの合法:
クロスリリースsilまたはpilブロック。ラピッドラピッドアクセラレータモードのシミュレーションシミュレーションは実ませませませませませ
クロスリリース SIL ブロックまたは PIL ブロックが含まれるモデルを参照するModelブロック。アクセラレータアクセラレータモードまたはラピッドラピッドアクセラレータのシミュレーションは実実ませませませませませませませませ
以下を行行。
クロスリリースsilブロックブロックまたはまたはブロックが含まれるモデルの最モデルモデルsilシミュレーションシミュレーションモデルにはクロスクロスクロスリリースリリースリリースリリースリリースはクロスクロスクロスクロスクロスリリースリリースリリースModelブロックを含めてはなりません。
クロスリリース SIL ブロックまたは PIL ブロックが含まれる参照モデルのModelブロックのsilシミュレーション。参照参照モデルにははクロスリリースModelブロックを含めてはなりません。
クロスリリース仿扫描コードコード合并关键词その他の制のについては,前のリリースからののののコードインポートを参照してください。
金宝appsimulink.bus.
のサポート
クロスリリースリリースコードコードでデータとしてバスオブジェクトをするは,次のいずれかの。
方法 | コードのエクスポート | コードのインポート |
---|---|---|
自动 | 以前のリリースで、コードを生成する前に、 コードジェネレーターは |
現在のリリースでは、 综合モデルモデルをビルドするとき,ビルドプロセスはインポートされコード内のヘッダーファイルから |
エクスポートされたバス | 以前以前のリリースで,コードコード生成するに
コードジェネレーターによって没有ユーティリティユーティリティフォルダーに R2010AとR2010Bでは, |
現在のリリースでは、 インポートされる SIL ブロックまたは PIL ブロックを組み込む統合モデルをビルドするときに、ビルド プロセスでは インポートされるコードがr2010aまたはr2010bからのものである合并,
结合モデルモデルをビルドするときに,ビルドプロセスでは |
インポートされたバス | 以前以前のリリースで,コードコード生成するに
R2010AとR2010Bでは, |
在のリリースでは,生成コードをインポートしたに インポートされる SIL ブロックまたは PIL ブロックを組み込む統合モデルをビルドするときに、ビルド プロセスでは インポートされるコードがr2010aまたはr2010bからのものである合并,
结合モデルモデルをビルドするときに,ビルドプロセスでは |
生成コード内のグローバル変数を介したルートレベル I/O
以前のリリースからインポートたたコードコードでグローバルグローバルをてて力またはまたは力量ポートを装すると,聚合モデルから生成さたコードははのポート接続され信号
综合モデルモデル信号の先が,インポートされたコード内信号。
宣言された場合は変数を定義しますが、インポートされたコード内では未定義です。
结合モデルから生成されたと,インポートされれたコード内のとのでででをコピーとのの
統合モデルの信号がインポートされたコード内の信号と同じ名前をもつ変数にマップされる場合、インポートされたコードで使用される変数は統合モデルから生成されたコードによっても使用されます。信号には互換性のあるストレージ クラスを使用しなければなりません。
ストレージクラスプロパティ | プロパティ値のサポート |
---|---|
タイプ | [Unstructured] のみ |
データアクセス | インポートされたコード内で インポートされたコード内で |
データスコープ | インポートインポートされたたコードで変が宣言されてもさされないない
インポートインポートされたたコードででが定义さされる场合(
|
グローバルデータストアを介した现处于のリリースと以前のリリースコンポーネント间のやり取り
在ののリリースと以前以前のリリースコンポーネントははははは,matlabベースワークスペースま金宝appたはsimulinkデータディクショナリの金宝appsimulink.signal.
オブジェクトで明するますはできコード统ワークますれます统ますれますますますれますますれますれますれますれますますますれますますれますれれれれれれれれれれれれれ。
コード生成のの成
.
最上位モデルまたはサブシステムのビルドプロセスでコードを生成するする合成,金宝appsimulink.signal.
オブジェクトの[存储类]プロパティを次のいずれかのクラスに設定します。
进口交换机
ImportedExternPointer.
[ImportFromFile]
カスタムストレージクラス
モデル参照のビルドプロセスでを生成する料,以下のクラスを使。
ExportedGlobal.
[exportTofile]
カスタムストレージクラス
コンフィギュレーションのインポート
現在のリリースでは、CrossreleaseImport.
を実行するする前那インポートするコンポーネントの各グローバル データ ストアに対し、MATLAB ベース ワークスペースまたは Simulink データ ディクショナリで金宝appsimulink.signal.
オブジェクトを定义します。
オブジェクト名、[データ型]那[分数/复素数]那[次元]オブジェクト プロパティの場合、インポートするコンポーネント内で対応するオブジェクトの値と一致する値を指定します。
[存储类]プロパティプロパティの合,互换性のある値を指定ますます。以前以前のリリースの値値
[ImportedExtern]
の場合、現在のリリースに対して次のいずれかの値を指定します。进口交换机
ExportedGlobal.
[ImportFromFile]
または[exportTofile]
カスタムストレージクラス。
以前のリリースの値が
[ImportedExternPointer]
のの合,中处于のリリースに対して[ImportedExternPointer]
を指定します。[标识符]プロパティの場合、インポートするコンポーネント内のオブジェクトに対してプロパティが指定される場合にのみ一致する値を指定します。
金宝appsimulink.signal.
オブジェクトを保存します。このオブジェクトは、インポートした SIL または PIL ブロックをシミュレートまたはビルドするたびに必要になります。
詳細については、生成さされたコード内のデータを参照してください。
パラメーターの调整
00
在のリリースで,インポートするコンポーネントの调整可能パラメーターパラメーターCrossreleaseImport.
を実行するする前,次を行い。
马铃薯草ベース ワークスペースまたは Simulink データ ディクショナリで
金宝appSimulink.Parameter.Parameter.
オブジェクトを定义します。オブジェクト名、[データ型]那[分数/复素数]那[次元]オブジェクト プロパティに、以前のリリースのオブジェクト値に一致する値を指定します。インポートしたソース コードの変数にオブジェクトと同じ名前がない場合、[标识符]プロパティに対して、変数名と一致する値を指定します。
以前以前のリリースのオブジェクトで
GetSet
カスタムストレージクラスを使用する場合、次を指定します。[存储类]オブジェクトプロパティと一致する。
得到
アクセス关节数放
详细关はファイルについては,通过配置存储类属性来控制数据表示と通过存储类GetSet的函数访问数据を参照してください。
以前のリリースからの
GetSet
カスタム ストレージ クラスのサポートは R2011a 以降のリリースにのみ適用されます。
以前のリリースで最上位モデルまたはサブシステムのビルド プロセスで生成されたコードの場合、これらの制限は以下に適用されます。
以前のリリースの
金宝appSimulink.Parameter.Parameter.
オブジェクトで指定した调整可能なパラメーターExportedGlobal.
に设定されたストレージクラスをもち,在のリリースの金宝appSimulink.Parameter.Parameter.
オブジェクトのストレージクラスもExportedGlobal.
である場合、統合モデルをビルドするときにエラーが発生します。Macオペレーティングオペレーティングシステムで,以前のリリースの
金宝appSimulink.Parameter.Parameter.
オブジェクトで指定された调整可能なパラメーターがExportedGlobal.
にに设定されれたストレージクラスをもっていると,现处于のリリース(同じ名前またはエイリアスをもつもつ)の金宝appSimulink.Parameter.Parameter.
オブジェクトのストレージクラスも进口交换机
であるであるモデルんは,既定の设定をのは変更にしししに変更しこのに変更制しませ変更制しし変更ししし制制ししししししませししませませませませませませませませませませませませませませませませませませませませませませ既定既定のツールチェーンチェーンからツールを取得します
tc = coder.make.getdefaultToolchain;ccomp = tc.getbuildtool('c编译器');
Cコンパイラ标准オプションを抽出します。
stdmaps = ccomp.金宝appsupportedstandard.getlangstandardMaps;optionValues = stdmaps.getCompilerOptions('*');
Cおよびc ++コンパイラの标准オプションから
-fno-common.
を削除します。optiontoremove ='-fno-common';optionstokeep = strrep(oppectsvalues,opectiontoremove,'');c_standard_opts_id ='$(c_standard_opts)';custtoolchainopts = get_param(型号,'CustomToolchainOptions');CUSTTOOLCHAIPOPTS {2} =......strrep(custtoolchainopts {2},c_standard_opts_id,optionstokeep);set_param(型号,'CustomToolchainOptions',custtoolchainopts);
再利用可致参照から生成されコードの数のインスタンスのの
再利用可能なモデルモデル使使と,亲モデル内の参照モデル各インスタンス一意のモデル引数値を指定できます。再利用可致なモデルに生成しコードを,パラメーター化さたクロスリリースリリースブロックまたはブロックとして现リリースのまたはしてから,ブロックのののからををモデル插入しを。
既存の共有コード フォルダーを更新します。
SharedCodeUpdate(SourceFolder,DestinationFolder)
再利用可致なモデル生成されコードをを化れたクロスリリース(たとえばsilブロック)としてブロックリリースににインポートます。
HandlesIlblock = CrossreleaseImport(reusablereferencedModelCodeLocation,... ConfigSetIntegrationModel,'SimulationMode','Sil');
结合モデルモデル,たとえば,参照モデルの2つのインスタンスをクロスリリースリリースブロックのインスタンス置き换えます。
open_system(integrationModel); blockInstanceName1 = 'refModelInstanceName1'; blockinstanceName2 = 'refModelInstanceName2'; SILBlockFullName = getfullname(handleSILBlock); replace_block(integrationModel, 'Name', blockInstanceName1, ... SILBlockFullName, 'noprompt'); replace_block(integrationModel, 'Name', blockInstanceName2, ... SILBlockFullName, 'noprompt');
再利用可能な参照モデルにモデル引数の
とParama.
があり,参照モデルのインスタンスarmbb.
とRefmodelinstanceName1.
このこの场ししであると仮定仮定しますできインスタンスますできできできできできできできできできできできできできできできできできできできできできでき指定できできできでき指定でき指定指定できできできできできできできできできできでき指定できできできできRefmodelinstanceName2.
pathtoblockinstanceName1 = [IntegationModel,'/',blockinstanceName1];pathtoblockinstanceName2 = [IntegationModel,'/',blockinstanceName2];set_param(pathtoblockinstanceName1,'parama','parama_instname1');set_param(pathtoblockinstanceName1,'paramb','paramb_instname1');set_param(pathtoblockinstanceName2,'parama','parama_instname2');set_param(pathtoblockinstanceName2,'paramb','paramb_instname2');
结合モデルモデルのブロックインスタンスインスタンス意のモデル引引値をするににははににははににに
那Parama._instName1
那paramb_instname1.
,およびParama._instName2
に値を割り当てます。paramb_instname2.
现处于ののリリースのモデルモデルコンポーネントとのリリースの生成コードの动手の
以前のリリースでは,モデルコンポーネントを开放し,コンポーネントのコードを生成し,生成したをテストおよび配配したととます。そこに,空间のでし。コード生成でそのモデルコンポーネントを进めるにし。
モデルコンポーネントと以前のリリース生成コード间の数据的等価性をテストするにはは,Simulink Test™を使用します。テスト マネージャー(金宝appSimulink测试)で,背靠背テストとと力の比较実行できます。
モデルコンポーネントを,[シミュレーションモード]ブロックパラメーターが
[ノーマル]
に设定されたModelブロックとして现处于ののリリースにしし。Modelブロックを使用して、テスト入力データを指定する最上位モデルを作成します。
以前のリリースで生成されたコードを SIL ブロックとして現在のリリースにインポートします。
SILブロックで,同じ同じテスト力データ指定する别のの最上调作物
テスト マネージャーで、最上位モデルのシミュレーションを実行し、出力を比較する等価性のテスト ケースを作成します。
テスト ケースを実行し、結果をレビューします。
詳細については、を参照してください。
メモ
手顺1で现出者ののと以前のリリース生成コード动作を比较结合は,次のModelブロックパラメーターを指定します。
[シミュレーションモード]を
[ソフトウェアインザループ(SIL)]
または[プロセッサインザループ (PIL)]
に设定します。[コードインターフェイス]を
[最上位]
に设定します。
前のリリースからののののコードインポート
嵌入式编码器支持包装用于自动验金宝app证标准ををする场合,前のリリースで生成したのリリースののののコードインポートできます。
CrossreleaseImport.
を実行する,关节はSILブロックまたはまたはブロッククロスリリースリリースとしてとしてとしてとしてとしてとしてししししししししModelブロックの[シミュレーションモード]パラメーターは[ソフトウェアインザループ(SIL)]
または[プロセッサインザループ (PIL)]
に设定されます。Modelブロックを现处于のリリースのモデルに组み込みます。
以下の制限が適用されます。
クロスリリース ワークフローでは、NVRAM にアクセスするインスタンスごとのメモリはサポートされません。
調整可能なパラメーターは AUTOSAR キャリブレーション パラメーターまたは AUTOSAR 内部キャリブレーション パラメーターにマッピングされなければなりません。
元のモデルでバリアントまたはシンボリック次元 (次元バリアント) を使用する場合、インポートされたモデルは、前のリリースでのコード生成時に使用された同じバリアントとシンボリック次元の構成のみを使用できます。
参考
sharedcodematlabversions.
|SharedCodeUpdate.
|CrossreleaseImport.