Main Content

このページの翻訳は最新ではありませ。

リリース間のコード統合

嵌入式编码器®ライセンスをお持ちの場合、ソース モデルがシングルレートで、C コードが次から生成された場合に、以前のリリース (R2010a 以降) から生成された C コードを現在のリリースから生成されるコードと統合できます。

  • [再利用できない関数] コード インターフェイスを使用する最上位モデルまたはサブシステムのビルド プロセス。

  • エラーエラーステータスの监视监视を非表示に(suppresserrorstatus.にする) 単一または複数インスタンスのモデル参照ビルド プロセス。

変更せずに既存のコードを再利用できる場合、再検証のコストを削減することができます。

ワークフロー

次の制御システムモデルについて検讨します。

ControllerModelブロックは次の 3 つのコンポーネントで構成されるモデルを参照します。

  • P1.は以前のリリース(たとえばr2015b)で开启されたモデルをするModelブロックです。スタンドアロンのコード インターフェイスをもつ生成されたモデル コードが、P1._ert_rtwフォルダーにあります。

  • C1.は现出处于のリリースで开启中のモデルを参照するModelブロックです。

  • P2.は以前のリリース (たとえば R2016a) で開発されたサブシステム ブロックです。生成されたサブシステム コードがp2_ert_rtw.フォルダーにあります。

  • P3.は以前のリリース(たとえばr2016b)で开启されたモデルをするModelブロックです。モデル参照コードインターフェイスをもつ生成されたモデルコードが,slprj/ert/P3フォルダーにあります。

以前のリリースからのコードと現在のリリースから生成されるコードを統合するには、次のワークフローを使用します。

  1. 既存の没有コードフォルダーを指定する

  2. コンポーネントを現在のリリースにインポートする

  3. コンポーネントを现处于のリリースモデルに组み込む

限制性

〖〗

  • ERTコードのエクスポート关键词

  • 异なる异なるリリース生成さたertコードの境界をを金宝appSimulink功能ブロックおよび函数来电者ブロック。

  • R2010Aよりよりも前のリリース生成コードの合。

  • 现处于ののリリース生成コードの以前のへのインポート(上位互换性)。

  • ブロックセットライブラリファイルなど,前のリリースのmatlab®ルート フォルダーにあるファイルのエクスポート。

  • インラインでない S-Function をもつモデルから生成されたコードのエクスポートおよびインポート。

  • C-API.

モデルビルドプロセスの最后,统合(Controllerなど) によって直接使用される共有ファイルがコード生成レポートに表示されます。このレポートにはモデルのコンポーネント (たとえばP1.P2.) によって使用される共有ファイルは表示されません。

モデルモデルに以のの合法:

  • クロスリリースsilまたはpilブロック。ラピッドラピッドアクセラレータモードのシミュレーションシミュレーションは実ませませませませませ

  • クロスリリース SIL ブロックまたは PIL ブロックが含まれるモデルを参照するModelブロック。アクセラレータアクセラレータモードまたはラピッドラピッドアクセラレータのシミュレーションは実実ませませませませませませませませ

以下を行行。

  • クロスリリースsilブロックブロックまたはまたはブロックが含まれるモデルの最モデルモデルsilシミュレーションシミュレーションモデルにはクロスクロスクロスリリースリリースリリースリリースリリースはクロスクロスクロスクロスクロスリリースリリースリリースModelブロックを含めてはなりません。

  • クロスリリース SIL ブロックまたは PIL ブロックが含まれる参照モデルのModelブロックのsilシミュレーション。参照参照モデルにははクロスリリースModelブロックを含めてはなりません。

クロスリリース仿扫描コードコード合并关键词その他の制のについては,前のリリースからののののコードインポートを参照してください。

金宝appsimulink.bus.のサポート

クロスリリースリリースコードコードでデータとしてバスオブジェクトをするは,次のいずれかの。

方法 コードのエクスポート コードのインポート
自动

以前のリリースで、コードを生成する前に、金宝appsimulink.bus.オブジェクトのdatascope.プロパティを汽车に设定します。标题文件プロパティに値を代入しないでください。

コードジェネレーターは金宝appsimulink.bus.データ型の定义を既定のヘッダーファイルこのファイルはモデルの生成フォルダーにあります。

現在のリリースでは、CrossreleaseImport.を実行するする前金宝appsimulink.bus.オブジェクトのdatascope.プロパティを汽车に设定します。

综合モデルモデルをビルドするとき,ビルドプロセスはインポートされコード内のヘッダーファイルから金宝appsimulink.bus.のデータ型を使使。

エクスポートされたバス

以前以前のリリースで,コードコード生成するに金宝appsimulink.bus.オブジェクトの次のプロパティを指定します。

  • datascope.-[エクスポート]に设定します。

  • 标题文件-preverbustype.のようなファイル名を指定します。

コードジェネレーターによって没有ユーティリティユーティリティフォルダーにprevrelbustype.h.が作物成さます。このこのヘッダーファイルにに金宝appsimulink.bus.データ型の定義が含まれています。SharedCodeUpdate.を使用して,ExistingSharedCodeによって指定される共共コードフォルダーにprevrelbustype.h.を追加します。

R2010AとR2010Bでは,datascope.プロパティは使使ません。标题文件プロパティプロパティに値を代入しないでコードでジェネレーター金宝appsimulink.bus.データ型の定义をmodelname_types.h.このファイルはモデルの生成フォルダーにあります。

現在のリリースでは、CrossreleaseImport.を実行するする前金宝appsimulink.bus.オブジェクトのdatascope.プロパティを[インポート]に设定します。

インポートされる SIL ブロックまたは PIL ブロックを組み込む統合モデルをビルドするときに、ビルド プロセスではprevrelbustype.h.金宝appsimulink.bus.データ型の定义定义使使。

インポートされるコードがr2010aまたはr2010bからのものである合并,金宝appsimulink.bus.オブジェクトの次のプロパティを指定します。

  • datascope.-[インポート]に设定します。

  • 标题文件-インポートされるコード フォルダーにあるmodelname_types.h.のパスを设定します。

结合モデルモデルをビルドするときに,ビルドプロセスではmodelname_types.h.金宝appsimulink.bus.データ型の定义定义使使。

インポートされたバス

以前以前のリリースで,コードコード生成するに金宝appsimulink.bus.オブジェクトの次のプロパティを指定します。

  • datascope.-[インポート]に设定します。

  • 标题文件-金宝appsimulink.bus.データデータ型の定义がが含まているファイルファイルのパス指定し(abustype.h.など)。

R2010AとR2010Bでは,datascope.プロパティは使使ません。标题文件プロパティに金宝appsimulink.bus.データデータ型の定义がが含まているファイルファイルのパス指定し(abustype.h.など)。

在のリリースでは,生成コードをインポートしたに金宝appsimulink.bus.を変更する必要はありんん。

インポートされる SIL ブロックまたは PIL ブロックを組み込む統合モデルをビルドするときに、ビルド プロセスではabustype.h.金宝appsimulink.bus.データ型の定义定义使使。

インポートされるコードがr2010aまたはr2010bからのものである合并,金宝appsimulink.bus.オブジェクトの次のプロパティを指定します。

  • datascope.-[インポート]に设定します。

  • 标题文件-abustype.h.に设定します。

结合モデルモデルをビルドするときに,ビルドプロセスではabustype.h.金宝appsimulink.bus.データ型の定义定义使使。

生成コード内のグローバル変数を介したルートレベル I/O

以前のリリースからインポートたたコードコードでグローバルグローバルをてて力またはまたは力量ポートを装すると,聚合モデルから生成さたコードははのポート接続され信号

综合モデルモデル信号の先が,インポートされたコード内信号。

  • 宣言された場合は変数を定義しますが、インポートされたコード内では未定義です。

  • 结合モデルから生成されたと,インポートされれたコード内のとのでででをコピーとのの

統合モデルの信号がインポートされたコード内の信号と同じ名前をもつ変数にマップされる場合、インポートされたコードで使用される変数は統合モデルから生成されたコードによっても使用されます。信号には互換性のあるストレージ クラスを使用しなければなりません。

ストレージクラスプロパティ プロパティ値のサポート
タイプ [Unstructured]のみ
データアクセス

インポートされたコード内で[ポインター]変数として装配ささたを,结合モデルで[直接]ストレージクラスを介してて装配された同じ名称の信号に接続するははは

インポートされたコード内で[直接]変数として装配ささたを,结合モデルで[ポインター]として包装された同じた名词の信号にすることはでき

データスコープ

インポートインポートされたたコードで変が宣言されてもさされないない[インポート]値を使用する信号から生成されたコードなど)、次のいずれかが必要になります。

  • 综合モデルモデル.[エクスポート]値を使用する。

  • 外部コードでででをする。

インポートインポートされたたコードででが定义さされる场合([エクスポート]値を使使信号から生成さたコードなどなどなどなどなどなどになりなりなどなどなどなどなどなりなりなどなどなどなどようになりコード

  • ルートレベルのi / o端子に接続接続されれたモデルモデルモデル内内内内信号

    • EnabledataOndhipership.コンフィギュレーションパラメーターをに設定する。

    • 以以のでカスタムストレージストレージをを使使使

      • タイプ-[Unstructured]

      • データアクセス-[直接]

      • データスコープ-[エクスポート]

      • オーナー- 统合モデル名前,空ではない値。たとえば,値はインポートされコンポーネント名前にすることができる。

  • ルートレベルのi / o端子にに接続接続さ接続さいないないないモデルモデル内内内のの场场値値値を使使値値クラスをを使ををを用する

    • データスコープ-[インポート]

    • データアクセス-[直接]

グローバルデータストアを介した现处于のリリースと以前のリリースコンポーネント间のやり取り

在ののリリースと以前以前のリリースコンポーネントははははは,matlabベースワークスペースま金宝appたはsimulinkデータディクショナリの金宝appsimulink.signal.オブジェクトで明するますはできコード统ワークますれます统ますれますますますれますますれますれますれますれますますますれますますれますれれれれれれれれれれれれれ。

コード生成のの成

.

最上位モデルまたはサブシステムのビルドプロセスでコードを生成するする合成,金宝appsimulink.signal.オブジェクトの[存储类]プロパティを次のいずれかのクラスに設定します。

  • 进口交换机

  • ImportedExternPointer.

  • [ImportFromFile]カスタムストレージクラス

モデル参照のビルドプロセスでを生成する料,以下のクラスを使。

  • ExportedGlobal.

  • [exportTofile]カスタムストレージクラス

コンフィギュレーションのインポート

現在のリリースでは、CrossreleaseImport.を実行するする前那インポートするコンポーネントの各グローバル データ ストアに対し、MATLAB ベース ワークスペースまたは Simulink データ ディクショナリで金宝appsimulink.signal.オブジェクトを定义します。

  1. オブジェクト名、[データ型][分数/复素数][次元]オブジェクト プロパティの場合、インポートするコンポーネント内で対応するオブジェクトの値と一致する値を指定します。

  2. [存储类]プロパティプロパティの合,互换性のある値を指定ますます。以前以前のリリースの値値[ImportedExtern]の場合、現在のリリースに対して次のいずれかの値を指定します。

    • 进口交换机

    • ExportedGlobal.

    • [ImportFromFile]または[exportTofile]カスタムストレージクラス。

    以前のリリースの値が[ImportedExternPointer]のの合,中处于のリリースに対して[ImportedExternPointer]を指定します。

  3. [标识符]プロパティの場合、インポートするコンポーネント内のオブジェクトに対してプロパティが指定される場合にのみ一致する値を指定します。

  4. 金宝appsimulink.signal.オブジェクトを保存します。このオブジェクトは、インポートした SIL または PIL ブロックをシミュレートまたはビルドするたびに必要になります。

詳細については、生成さされたコード内のデータを参照してください。

パラメーターの调整

00

在のリリースで,インポートするコンポーネントの调整可能パラメーターパラメーターCrossreleaseImport.を実行するする前,次を行い。

  1. 马铃薯草ベース ワークスペースまたは Simulink データ ディクショナリで金宝appSimulink.Parameter.Parameter.オブジェクトを定义します。

  2. オブジェクト名、[データ型][分数/复素数][次元]オブジェクト プロパティに、以前のリリースのオブジェクト値に一致する値を指定します。インポートしたソース コードの変数にオブジェクトと同じ名前がない場合、[标识符]プロパティに対して、変数名と一致する値を指定します。

  3. 以前以前のリリースのオブジェクトでGetSetカスタムストレージクラスを使用する場合、次を指定します。

    以前のリリースからのGetSetカスタム ストレージ クラスのサポートは R2011a 以降のリリースにのみ適用されます。

以前のリリースで最上位モデルまたはサブシステムのビルド プロセスで生成されたコードの場合、これらの制限は以下に適用されます。

  • 以前のリリースの金宝appSimulink.Parameter.Parameter.オブジェクトで指定した调整可能なパラメーターExportedGlobal.に设定されたストレージクラスをもち,在のリリースの金宝appSimulink.Parameter.Parameter.オブジェクトのストレージクラスもExportedGlobal.である場合、統合モデルをビルドするときにエラーが発生します。

  • Macオペレーティングオペレーティングシステムで,以前のリリースの金宝appSimulink.Parameter.Parameter.オブジェクトで指定された调整可能なパラメーターがExportedGlobal.にに设定されれたストレージクラスをもっていると,现处于のリリース(同じ名前またはエイリアスをもつもつ)の金宝appSimulink.Parameter.Parameter.オブジェクトのストレージクラスも进口交换机であるであるモデルんは,既定の设定をのは変更にしししに変更しこのに変更制しませ変更制しし変更ししし制制ししししししませししませませませませませませませませませませませませませませませませませませませませませませ

    1. 既定既定のツールチェーンチェーンからツールを取得します

      tc = coder.make.getdefaultToolchain;ccomp = tc.getbuildtool('c编译器');

    2. Cコンパイラ标准オプションを抽出します。

      stdmaps = ccomp.金宝appsupportedstandard.getlangstandardMaps;optionValues = stdmaps.getCompilerOptions('*');

    3. 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);

再利用可致参照から生成されコードの数のインスタンスのの

再利用可能なモデルモデル使使と,亲モデル内の参照モデル各インスタンス一意のモデル引数値を指定できます。再利用可致なモデルに生成しコードを,パラメーター化さたクロスリリースリリースブロックまたはブロックとして现リリースのまたはしてから,ブロックのののからををモデル插入しを。

  1. 既存の共有コード フォルダーを更新します。

    SharedCodeUpdate(SourceFolder,DestinationFolder)

  2. 再利用可致なモデル生成されコードをを化れたクロスリリース(たとえばsilブロック)としてブロックリリースににインポートます。

    HandlesIlblock = CrossreleaseImport(reusablereferencedModelCodeLocation,... ConfigSetIntegrationModel,'SimulationMode','Sil');

  3. 结合モデルモデル,たとえば,参照モデルの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');

  4. 再利用可能な参照モデルにモデル引数の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');

  5. 结合モデルモデルのブロックインスタンスインスタンス意のモデル引引値をするににははににははにににParama._instName1paramb_instname1.Parama._instName2,およびparamb_instname2.に値を割り当てます。

现处于ののリリースのモデルモデルコンポーネントとのリリースの生成コードの动手の

以前のリリースでは,モデルコンポーネントを开放し,コンポーネントのコードを生成し,生成したをテストおよび配配したととます。そこに,空间のでし。コード生成でそのモデルコンポーネントを进めるにし。

モデルコンポーネントと以前のリリース生成コード间の数据的等価性をテストするにはは,Simulink Test™を使用します。テスト マネージャー(金宝appSimulink测试)で,背靠背テストとと力の比较実行できます。

  1. モデルコンポーネントを,[シミュレーションモード]ブロックパラメーターが[ノーマル]に设定されたModelブロックとして现处于ののリリースにしし。

  2. Modelブロックを使用して、テスト入力データを指定する最上位モデルを作成します。

  3. 以前のリリースで生成されたコードを SIL ブロックとして現在のリリースにインポートします。

  4. SILブロックで,同じ同じテスト力データ指定する别のの最上调作物

  5. テスト マネージャーで、最上位モデルのシミュレーションを実行し、出力を比較する等価性のテスト ケースを作成します。

  6. テスト ケースを実行し、結果をレビューします。

詳細については、を参照してください。

メモ

手顺1で现出者ののと以前のリリース生成コード动作を比较结合は,次のModelブロックパラメーターを指定します。

  • [シミュレーションモード][ソフトウェアインザループ(SIL)]または[プロセッサインザループ (PIL)]に设定します。

  • [コードインターフェイス][最上位]に设定します。

前のリリースからののののコードインポート

嵌入式编码器支持包装用于自动验金宝app证标准ををする场合,前のリリースで生成したのリリースののののコードインポートできます。

CrossreleaseImport.を実行する,关节はSILブロックまたはまたはブロッククロスリリースリリースとしてとしてとしてとしてとしてとしてししししししししModelブロックの[シミュレーションモード]パラメーターは[ソフトウェアインザループ(SIL)]または[プロセッサインザループ (PIL)]に设定されます。Modelブロックを现处于のリリースのモデルに组み込みます。

以下の制限が適用されます。

  • クロスリリース ワークフローでは、NVRAM にアクセスするインスタンスごとのメモリはサポートされません。

  • 調整可能なパラメーターは AUTOSAR キャリブレーション パラメーターまたは AUTOSAR 内部キャリブレーション パラメーターにマッピングされなければなりません。

  • 元のモデルでバリアントまたはシンボリック次元 (次元バリアント) を使用する場合、インポートされたモデルは、前のリリースでのコード生成時に使用された同じバリアントとシンボリック次元の構成のみを使用できます。

参考

||

关键词する