主要内容

デタンタフェスの構成

この例にいて

学習目的

  • モデル用に生成されたコドのデタンタフェスを構成します。

  • 生成されたコードにおける信号とパラメーターの名前,データ型,データストレージクラスを制御します。

前提条件

  • モデル内のデ,タと信号の表現方法や使用方法の理解。

  • デ,タ構造をデ,タオブジェクトとして表現する知識。

  • Cコ,ドを読む技能。

必要なファ@ @ル

rtwdemo_throttlecntrl_datainterfaceモデルファ@ @ル

デ,タの宣言

ほとんどのプログラミング言語では,使用前にデ,タと関数を“宣言する”必要があります。宣言により,以下の情報を指定します。

デ,タ属性 説明
スコプ デ,タにアクセスできるプログラムの領域
持続時間 デ,タがメモリ内に維持されている時間
デタ型 デ,タに割り当てられるメモリの量
初期化 初期値,メモリのポ@ @ンタ@ @またはnull。開始値を指定しない場合,ほとんどのコンパラはゼロ値またはnullポンタを割り当てます。

以下のデ,タ型はコ,ド生成でサポ,トされます。

サポ,トされているデ,タ型

名前 説明
倍精度浮動小数点
単精度浮動小数点
int8 符号付き8ビット整数
uint8 符号なし8ビット整数
int16 符号付き16ビット整数
uint16 符号なし16ビット整数
int32 符号付き32ビット整数
uint32 符号なし32ビット整数
固定小数点デ,タ型 8ビット,16ビット,32ビット語長

“ストレ,ジクラス”はデ,タ項目のスコ,プと期間です。ストレ,ジクラスの詳細については、モデルンタフェス要素のcコド生成の構成を参照してください。

デ,タオブジェクトの使用

金宝app®モデルと状态流®チャ,トで,以下のメソッドを使用してデ,タを宣言することができます。“デ,タオブジェクト”"直接指定"。この例ではデ,タオブジェクトメソッドを使用します。いずれの方法でもデ,タ型とストレ,ジクラスを完全に制御することができます。また1のモデル内で2。

MATLAB®とS金宝appimulinkの環境では,デ,タオブジェクトをさまざまな方法で使用できます。この例では次のデタオブジェクトのタプに焦点を合わせて説明します。

  • 信号

  • パラメタ

  • バス

データオブジェクトメソッドを使用してモデルのデータインターフェイスを構成するには,MATLABのベースワークスペースでデータオブジェクトを定義します。次に,使用する仿金宝app真软件モデルまたは組み込みのStateflowチャートにデータオブジェクトを関連付けます。モデルを作成するときに,ビルドプロセスは生成されたコード中のベースワークスペースのデータオブジェクトを使用します。

デ,タオブジェクトの次のようなプロパティの値を設定できます。

  • デタ型

  • ストレ,ジクラス

  • 値(パラメ,タ,)

  • 初期値 (信号)

  • 識別子(生成コ,ド内で別の名前を定義)

  • 次元(一般的にパラメ,タ,用に継承)

  • 実数/複素数(パラメタ用に継承)

  • 単位(物理的な測定単位)

  • 最小値

  • 最大値

  • 説明(データオブジェクトのドキュメント化に使用,シミュレーションやコード生成には影響しない)

MATLABコマンドウィンドウでコマンドを入力するか,モデルエクスプローラーを使用して,ベースワークスペースのデータオブジェクトを作成し,検査することができます。ベ,スワ,クスペ,スの信号デ,タオブジェクトを参照するには,次の手順を実行します。

  1. rtwdemo_throttlecntrl_datainterfaceを開いて,matlabパスの書き込み可能な場所にthrottlecntrl_datainterfaceとしてコピ,を保存します。

  2. モデルエクスプロ,ラ,を開きます。

  3. (基础工作)を選択します。

  4. pos_cmd_one信号オブジェクトを選択して表示します。

    信号オブジェクトの定義を見ることもできます。Matlabコマンドウィンドウでpos_cmd_oneと入力します。

    pos_cmd_one =带有属性的信号:CoderInfo: [1x1 Simulink.]金宝appCoderInfo]描述:'油门位置命令从第一个PI控制器'数据类型:'双'最小:-1最大:1单位:"尺寸:-1维度:'自动'复杂度:'自动' SampleTime: -1 InitialValue: '0'
  5. 他の信号オブジェクトを表示するには,モデルエクスプローラーでオブジェクト名をクリックするか,コマンドウィンドウMATLABでオブジェクト名を入力します。次の表は,このモデル内の一部のデ,タオブジェクトの特性をまとめたものです。

    オブジェクトの特性 pos_cmd_one pos_rqst P_InErrMap ThrotComm ThrottleCommands
    説明 最上位出力 最上位入力 キャリブレションパラメタ 最上位出力構造体 バス定義
    デタ型 自動 自動 構造体
    ストレ,ジクラス エクスポ,トされたグロ,バル エクスポトされた外部ポンタ 定数 エクスポ,トされたグロ,バル なし

    ThrottleCommandsはバスオブジェクトを定義します。ThrotCommはバスの@ @ンスタンス化です。バスが非バーチャル バスの場合、信号は C コード内に構造体を生成します。

バス定義(ThrottleCommands)を使用して構造体の複数のaapl . aapl .ンスタンスをaapl .ンスタンス化できます。モデルのブロック線図では,バスオブジェクトは次に示すように中心に点線のある幅広線で表示されます。

新しいデ,タオブジェクトの追加

名前付きの信号,ステ,ト,パラメ,タ,用にデ,タオブジェクトを作成することができます。デ,タオブジェクトを構造と関連付けるには,構造に名前が付いていなければなりません。

デ,タオブジェクトを作成する構造を検索するには,デ,タオブジェクトウィザ,ドを使用します。このルにより構造を検索でき,必要なオブジェクトを作成できます。モデルにはデタオブジェクトと関連付けされていない2の信号,fbk_1およびpos_cmd_twoが含まれます。

信号を検索し,信号用のデ,タオブジェクトを作成するには,次の手順に従います。

  1. 金宝appSimulinkエディタ,で,[モデル化]タブの[設計]にある[デ,タオブジェクトウィザ,ド]をクリックします。[デタオブジェクトウィザド]ダアログボックスが開きます。

  2. 構造の候補を検索するには,[検索]をクリックします。構造fbk_1pos_cmd_twoがダ@ @アログボックスに表示されます。

  3. 両方の構造を選択するには,[すべて選択]をクリックします。

  4. テ,ブル内の[クラス]の下で,推奨されたそれぞれのデ,タオブジェクトがクラス金宝app仿真软件。信号を使用することを確認します。オブジェクトのクラスを変更するには,[クラスの変更]をクリックします。

  5. デ,タオブジェクトを作成するには,[作成]をクリックします。構造fbk_1pos_cmd_twoがダ@ @アログボックスから削除されます。

  6. デ,タオブジェクトウィザ,ドを閉じます。

  7. モデルエクスプロ,ラ,の[コンテン]ペesc escンで,新しく作成されたオブジェクトfbk_1pos_cmd_twoを探します。

生成コ,ドのデ,タオブジェクトの有効化

  1. 生成コ,ドで信号の表示を有効にします。

    1. 金宝appSimulinkエディタ,で,pos_cmd_one信号線を右クリックし,[プロパティ]を選択します。[信号プロパティ]ダ电子邮件アログボックスが表示されます。

    2. [信号名をS金宝appimulinkの信号オブジェクトに関連付ける]パラメ,タ,が選択されていることを確認してください。

  2. モデル内の信号にいて信号オブジェクトの関連付けを有効にします。Matlabコマンドウィンドウで次のように入力します。

    disableimplicitsignalresolution (“throttlecntrl_datainterface”
  3. throttlecntrl_datainterfaceを保存して閉じます。

デ,タ型に対するシミュレ,ションの影響

スロットルコントロ,ラ,のモデルでは,デ,タ型はに設定されています。金宝appSimulinkソフトウェアはデータ型をシミュレーションに使用するため,生成コードを実行する場合にモデルの動作に変化はありません。この影響を確認するには,テストハ,ネスを実行します。

テストハ,ネスを実行する前に更新してthrottlecntrl_datainterfaceを含めるようにしてください。

メモ

次の手順にはStateflowのラescセンスが必要です。

  1. throttlecntrl_datainterfaceを開きます。

  2. テストハ,ネスthrottlecntrl_testharnessのコピ,を開きます。

  3. Unit_Under_Test模型ブロックを右クリックし,[ブロックパラメ,タ,(ModelReference)]を選択します。

  4. [モデル名]throttlecntrl_datainterfaceに設定します。(好的)をクリックします。

  5. テストハ,ネスモデルのブロック線図を更新します。

  6. テストハ,ネスをシミュレ,トします。

    結果のプロット図は,モデルのゴールデンバージョンと計算バージョンの差がゼロであることを示しています。

  7. throttlecntrl_testharnessを保存して閉じます。

デ,タの管理

デタオブジェクトは,ベスワクスペス内のモデルとは別のファルに存在しています。デ,タを手動で保存するには,matlabコマンドウィンドウに保存と入力します。

デ,タをモデルと区別しておくと,次の利点があります。

  • 1 .:

    • 異なるパラメーター値を使用して制御アルゴリズムの動作を変更する(たとえば,キャリブレーション値の異なる再利用可能なコンポーネント)

    • 異なるデータ型を使用してターゲットハードウェアを変更する(たとえば,浮動小数点ターゲットハードウェアと固定小数点ターゲットハードウェア)

  • 複数のモデル,1:

    • システム内のモデル間でデ,タを共有する

    • プロジェクト間でデータを共有する(たとえば,トランスミッション制御,エンジン制御,ホイール制御で同じ可以メッセージデータセットを使用できる)

重要なポ@ @ント

  • 金宝app仿真软件モデルおよびStateflowチャート内で,データオブジェクトまたは直接指定を使用してデータを宣言できます。

  • モデルエクスプローラーまたはMATLABコマンドウィンドウのコマンドラインで,ベースワークスペースデータを管理します(作成,表示,設定など)。

  • データオブジェクトウィザードを使用すると,信号,バス,パラメーターなどの構造のデータオブジェクトをすばやく作成できます。

  • 生成されたコ,ドで名前によって表示されるように,デ,タオブジェクトを明示的に構成します。

  • デ、タをモデルと区別しておくと、いく、かの利点があります。

関連するトピック