このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
嵌入式编码器®を使用して,モデルのソフトウェアインザループ(SIL)シミュレーションおよびプロセッサインザループ(公益诉讼)シミュレーションを実行できます。これらのシミュレーションでは,最上位モデルまたはモデルの一部のソースコードを生成します。银シミュレーションでは、生成されたコードを開発用コンピューターでコンパイルおよび実行します。PIL シミュレーションでは、開発用コンピューターでソース コードをクロスコンパイルし、ターゲット プロセッサまたは同等の命令セット シミュレーターでオブジェクト コードをダウンロードして実行します。
SILシミュレーションおよび 皮尔シミュレーションでは、以下を実行できます。
モデルおよび生成されたコードが数値的に等価であるかどうかをテストする。
コードカバレッジを確認する。
コード実行プロファイリングを実行する。
SILおよび公益诉讼により,テストを早期に実行し,欠陥を修正できます。たとえば,ノーマルモードでシステムコンポーネントをモデル化し,テストできます。その後,コンパイルされた生成コードを実行するSILシミュレーションまたは公益诉讼シミュレーションでテストスイートを再利用できます。数値的な等価性をチェックするには,ノーマルシミュレーションとSILシミュレーションまたは公益诉讼シミュレーションの結果を比較します。金宝app动态仿真模块®環境に個別のインフラストラクチャでの生成コードのテストを任せる必要はありません。
以下の表に,SILおよび公益诉讼を使用できる状況を説明します。
状況 | 使用 |
---|---|
生成 (またはレガシ) コードの数値出力を検証するノーマル モードのシミュレーション用に開発されたテスト ベクトルを再利用して、モデルと生成コード間の数値的等価性をテストします。SIL/PIL经理验证工作流程および测试两个模拟的等效性(金宝app仿真软件测试)を参照してください。 | SILおよび公益诉讼 |
生成コードのメトリクスを収集します。
|
SILおよび公益诉讼 |
(IEC认证工具包のライセンスが必要) 生成された C/C++コードについて、ISO 26262-6、IEC 61508-3、IEC 62304、EN 50128、および EN 50657機能安全規格で定義されたソフトウェア安全ライフサイクル全体の要件に従って、検証と妥当性確認のアクティビティを実行します。IEC认证工具包モデルベースデザインワークフローにおけるSILおよび公益诉讼の検証アクティビティの詳細については,工件浏览器の参考工作流嵌入式C / c++应用程序( |
SILおよび公益诉讼 |
(做资格工具包のライセンスが必要) 做- 178 cおよび做- 333安全規格の関連目標を満たすために統合プロセスの出力をテストします。詳細については,集成过程输出的测试(做资格工具包)を参照してください。この情報は,工件浏览器(做资格工具包)の- 178 c(基于模型的设计流程做 |
SILおよび公益诉讼 |
ターゲットハードウェアがない場合,公益诉讼の便利な代替手段になります。 | 银 |
ターゲットハードウェアがある場合,評価ボードまたは命令セットシミュレーターなどで以下を実行します。
ノーマルシミュレーション手法では,限られたメモリリソースやターゲット固有に最適化されたコードの動作など,ハードウェアによって課される制限および要件が考慮されません。 特定のターゲットでの 皮尔シミュレーションの実行の詳細については、カスタムターゲットのサンプルを参照してください。 |
公益诉讼 |
メモ
SILシミュレーション モードおよび 皮尔シミュレーション モードは、モデルのシミュレーション時間を短縮するように設計されていません。モデルのシミュレーションを高速化する場合は、ラピッド アクセラレータ モードを使用します。詳細については、アクセラレーションとはを参照してください。
SILシミュレーションまたは公益诉讼シミュレーションでは,最上位モデルまたはモデルの一部についてコードが生成されます。SILでは,このコードは開発用コンピューター用にコンパイルされ,実行されます。公益诉讼では、コードがターゲット ハードウェア用にクロスコンパイルされ、ターゲット プロセッサで実行されます。
通信チャネルを通じて,金宝app仿真软件は,シミュレーションのサンプル間隔ごとにスティミュラス信号をコンピューターまたはターゲットプロセッサのコードに送信します。
最上位モデルの場合,金宝app仿真软件はベースワークスペースまたはモデルワークスペースからのスティミュラス信号を使用します。
SILモードまたは公益诉讼モードでシミュレーションするモデルの一部のみを指定した場合,モデルの一部は模型内金宝appに残り,モデルのこの部分についてコードは生成されません。通常,モデルのこの部分は,ハードウェアで実行されているソフトウェア向けにテストベクトルを提供するよう構成します。モデルのこの部分は,アルゴリズムの他の部分またはアルゴリズムが動作する環境を表すことができます。
コンピューターまたはターゲットプロセッサが仿真金宝app软件から信号を受信すると,プロセッサで1つのサンプルステップに対してSILアルゴリズムまたは公益诉讼アルゴリズムが実行されます。SILアルゴリズムまたは公益诉讼アルゴリズムは,このステップ中に計算された出力信号を,通信チャネルを通じて仿真软金宝app件に返します。シミュレーションの1サンプルサイクルが完了すると,仿真软金宝app件は次のサンプル間隔に進みます。プロセスは繰り返し実行され,シミュレーションが進行します。SILシミュレーションおよび公益诉讼シミュレーションはリアルタイムで実行されません。各サンプル期間に、Simulink およびオブジェクト コードが I/O データを交換します。
SILシミュレーションまたは公益诉讼シミュレーションのタイプ | SILシミュレーションの動作 | 公益诉讼シミュレーションの動作 |
---|---|---|
次で指定:
|
|
|
サブシステムから作成された SILブロックまたは 皮尔ブロックを使用する。 |
|
|
最上位モデルなど、実行するときにスタンドアロン コードを作成するか、単一の配布可能なコンポーネントのサブシステムのビルドを右クリックします。スタンドアロン コードをコンパイルして、スタンドアロンの実行可能ファイルにリンクすることも、他のコードと統合することもできます。スタンドアロン コードのインターフェイスの詳細については、モデルのエントリポイント関数に対する Cコード生成の構成を参照してください。
参照モデルの階層構造のコードを生成すると、最上位モデルのスタンドアロン実行可能ファイルと、各参照モデルの "モデル参照ターゲット"と呼ばれるライブラリモジュールが生成されます。コードが実行されると,スタンドアロンの実行可能ファイルは適用可能なモデル参照ターゲットを呼び出し,参照モデルの出力を計算します。詳細については,モデル参照ターゲットのビルドを参照してください。
生成されたコードをレガシコードと統合するには,スタンドアロンコードインターフェイスがドキュメント化されるため,スタンドアロンコードを使用します。
メモ
SILシミュレーションおよび公益诉讼シミュレーションでは,カスタムコードインターフェイスは直接サポートされません。レガシコードツール,S函数生成器,手書きのコードなどを使用してこれらのインターフェイスを仿金宝app真软件にs函数として組み込むことができます。その後,SILシミュレーションおよび公益诉讼シミュレーションを使用してカスタムコードを検証できます。
次の表に,SILシミュレーションおよび公益诉讼シミュレーションで生成されるインターフェイスを示します。
银/公益诉讼シミュレーション | コードインターフェイス |
---|---|
最上位モデル | 银/公益诉讼シミュレーションでは,スタンドアロンのコードインターフェイスが生成されます。コードが存在する場合,シミュレーションではモデルのスタンアロンコードが呼び出されます。コードが存在しない場合,スタンドアロンコードが生成されます。 |
模型ブロック | [コードインターフェイス]ブロックパラメーターを [コードインターフェイス]ブロックパラメーターを |
SILブロックまたは 皮尔ブロック | ブロックは,スタンドアロンのコードインターフェイスを使用します。 |
項目 | 情報 |
---|---|
代数ループ | SILシミュレーションおよび公益诉讼シミュレーションで発生するが,ノーマルモードのシミュレーションでは発生しない代数ループがあります。
詳細については、以下を参照してください。 |
フィードバック ループのエクスポートされた関数 | モデルに函数调用子系统があり,コンテキストに依存する入力(フィードバック信号など)のあるサブシステムをエクスポートすると,生成されたコードでのSIL /公益诉讼シミュレーションの結果とモデルのノーマルモードシミュレーションの結果が異なる場合があります。银/公益诉讼シミュレーションとノーマルモードのシミュレーションの結果を同一にするための1つの方法は,モデルで函数调用反馈锁存器ブロックを使用することです。コンテキストに依存する入力をコンテキストに依存しない入力にすることができます。 コンフィギュレーションパラメーターの[コンテキスト依存の入力)を次のいずれかに設定すると、嵌入式编码器でエクスポートされた 函数调用子系统のコンテキスト依存入力が確認された場合に、警告が生成されます。
詳細については、以下を参照してください。 |
SILシミュレーションおよび公益诉讼シミュレーションでは,インポートデータ定義をもつストレージクラスを指定する信号,パラメーターおよびデータストアを使用できます。シミュレーションでは,以下に関連付けられたインポートデータのストレージが定義されます。
コンポーネントのルートレベルにある信号(I / O境界上)。
ベースワークスペースまたはデータディクショナリのパラメーター。モデルワークスペースのパラメーターの場合は,次のようになります。
最上位モデルの SIL/PILおよび SIL/PILブロック シミュレーションではストレージが定義される。
模型ブロックのSIL /公益诉讼シミュレーションではストレージが定義されない。ストレージを定義し,MATLABの値と一致する初期値を指定しなければなりません。
グローバルなデータストア。
SILシミュレーションおよび公益诉讼シミュレーションでは,他のインポートデータのストレージは定義されません。たとえば,シミュレーションでは,次の関連付けられたインポートデータのストレージは定義されません。
内部信号(I / O境界上にない)
ローカル データ ストア
これらの場合は,テスト対象のコンポーネントによって含まれるカスタムコードまたは公益诉讼rtw.pil.RtIOStreamApplicationFramework
APIを通じてストレージを定義します。
可调参数与SIL/PILも参照してください。
GetSet
カスタムストレージクラスSILシミュレーションおよび 皮尔シミュレーションは、GetSet
カスタムストレージクラスをサポートします。银/PIL テスト ハーネスでは、シミュレーション中に使用される関数收到
と集
のC定義が提供されます。詳細については,通过使用存储类GetSet的函数访问数据を参照してください。
其他
のカスタムストレージクラス[タイプ]が其他
に設定されているカスタムストレージクラスでSILおよび公益诉讼のサポートを有効にするには,カスタムストレージクラスのカスタム属性クラスを作成し,真正的
に設定された布尔プロパティ金宝app支撑体
にカスタム属性クラスを関連付けます。
classdef CSCOtherAttributes
カスタム属性の詳細については、通过编写TLC代码进一步定制生成的代码およびストレージクラスのTLCコードの記述によるデータ表現の詳細な制御を参照してください。
SILまたは公益诉讼アプリケーションインターフェイスを作成するために,コードジェネレーターは,関連付けられたカスタムTLCファイルで関数DataAccess
とClassAccess
を呼び出し,必要な情報を取得します。コードジェネレーターは,ビルド フォルダーのビルド アーティファクトに抽出された情報を格納します。
グループ化されていないカスタム ストレージ クラスの場合は、次のようになります。
コードジェネレーターは,定义
、声明
、布局
、内容
、地址
、または集
の値を取る请求引数を指定してDataAccess
を呼び出します。
コード ジェネレーターは、次のいずれに該当する場合、DataAccess(记录,“定义”,“”,“”)
で返される文字列を使用してSILアプリケーションまたは公益诉讼アプリケーションで変数を定義します。
信号またはパラメーターに进口
データスコープがある。
モデルでモデル参照コードインターフェイスが使用されている。
モデルで最上位モデルコードインターフェイスが使用され,EnableDataOwnership
が在
で,カスタムストレージクラスの老板
属性が空でなく,現在のモデルの名前と等しくない。
コードジェネレーターは,次に該当する場合,数据访问(记录“declare”、“”、“”)
から返される文字列を使用してSILまたは公益诉讼アプリケーションで変数を定義します。
モデルで最上位モデル コード インターフェイスが使用されている。
信号またはパラメーターで出口
ストレージ クラスが使用されている。
EnableDataOwnership
が从
であるか,EnableDataOwnership
が在
で,カスタムストレージクラスの老板
属性が空またはモデル名と等しい。
コードのパッケージ化が設定されているため,変数は
または模型
. h
でインクルードされるヘッダーファイルで宣言されません。模型
. h
グループ化されているカスタムストレージクラスの場合は,次のようになります。
コードジェネレーターは,布局
、地址
、または集
の値を取る要求
引数を指定したDataAccess
を呼び出します。
コードジェネレーターは,groupTypeDeclDefn
の値を取る要求
引数を指定したClassAccess
を呼び出します。
次のいずれかに該当する場合は、グループ化されたタイプ (结构体
)定義とグループ化された変数の走读生
宣言を指定しなければなりません。
信号またはパラメーターに进口
データスコープがある。
モデルでモデル参照コードインターフェイスが使用されている。
モデルで最上位モデルコードインターフェイスが使用され,EnableDataOwnership
が在
で,カスタムストレージクラスの老板
属性が空でなく,現在のモデルの名前と等しくない。
カスタムストレージクラスに関連付けられたヘッダーファイルで,HeaderFile
属性、または
ファイルを通じてインクルードするカスタム コードを使用して、定義と宣言を指定します。SILまたは 皮尔アプリケーションで変数を定義するために、コード ジェネレーターは模型
. hClassAccess(记录,“groupTypeDeclDefn”)
から返される文字列を使用します。
静的初期化では、データ スコープが出口
の場合に生成される順序とは異なる结构体
要素の順序を前提とすることができます。コードジェネレーターはClassAccess(记录,“groupTypeDeclDefn”)
のクエリを実行するときに,カスタムストレージクラスのデータ初期化属性を値没有一个
で一時的にオーバーライドします。
SILアプリケーションまたは公益诉讼アプリケーションがアドレスでコード内の変数にアクセスできるかどうかを判断するために,コードジェネレーターはDataAccess(记录,"布局","","")
から返される要素を使用します。開発用コンピューターとターゲットハードウェア間で入力ポートまたは出力ポート,調整可能なパラメーター,あるいはグローバルデータストアメモリ値を転送するアプリケーション内の機能を作成するために,コードジェネレーターは次からの出力を使用します。
最初に返される要素が标量
、向量
、row-mat
、またはcol mat
の場合は数据访问(记录,“地址”,idx,reim)
。
最初に返される要素が其他
の場合はdatataccess (record, "contents", idx, reim)
(または数据访问(记录,“设置”,idx,reim)
)。
コードジェネレーターは,row-mat
およびcol mat
の場合,行列はそれぞれ行優先の形式で格納されると仮定します。この仮定は,モデルの残りの部分の配列レイアウトには依存しません。コードジェネレーターは,カスタムストレージクラスで実装されたストレージの配列レイアウトがモデルの残りの部分と異なる場合、カスタム ストレージ ファイルに関連付けられている TLC ファイルによって必要な変換が実行されると仮定します。
タイプが其他
のカスタム ストレージ クラスと関連付けられているカスタム 薄层色谱ファイルを作成して、(要求されたコード フラグメントを返すのに加え) 他の関数を実行できます。たとえば、カスタム ファイルに直接書き込むか、ベース ワークスペースの状態を変更する MATLAB関数を呼び出します。DataAccess
またはClassAccess
が呼び出されたときにこれらの関数を必ずしも実行するわけではない場合は、薄层色谱関数LibIsAccessingCustomDataForSILPIL(记录)
を使用して,ターゲットコードの生成と,SILアプリケーションまたは公益诉讼アプリケーションの作成用のコードフラグメントの要求を区別します。次に例を示します。
…%case“contents”%if!LibIsAccessingCustomDataForSILPIL(记录)%matlab函数WithSideEffects()%endif%返回LibDefaultCustomStorageContents(记录、idx、reim)。。。
カスタムストレージクラスのその他の制限も参照してください。
最上位モデルと模型ブロックSIL /公益诉讼およびSIL /公益诉讼ブロックのシミュレーションを使用して,AUTOSARソフトウェアコンポーネントのモデルベースのテストを実行できます。ソフトウェアによって,AUTOSARソフトウェアコンポーネントの生成コードと基本のコンポーネント固有のAUTOSARランタイム環境(RTE)がリンクされてテストアプリケーションが作成されます。このアプリケーションでは,AUTOSARソフトウェアコンポーネントによって実行されたAUTOSAR APIの呼び出しがテストされます。
参照モデルを含む最上位のAUTOSARソフトウェアコンポーネントの場合は,最上位モデルまたは模型ブロック([コードインターフェイス]が(最上位モデル]
に設定されている)のSILシミュレーションまたは公益诉讼シミュレーションを実行できます。シミュレーションで,ソフトウェアにより次が行われます。
参照モデルのコンパイル前に、AUTOSAR RTEヘッダー ファイルが生成される。
参照モデルのコンパイル用の RTEインクルード パスが提供される。
最上位の AUTOSAR SWC内の参照モデルに対して模型ブロック([コードインターフェイス]が[モデル参照)
に設定されている)のSILシミュレーションまたは公益诉讼シミュレーションを実行することもできます。この場合は,シミュレーションを実行する前に,親コンポーネントを作成してRTFヘッダーファイルを生成しなければなりません。親コンポーネントを作成しないと,SILシミュレーションまたは公益诉讼シミュレーションが失敗します。