このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
レガシ コード ツールを使用して、既存の外部関数をシミュレーションまたは生成されたコードから呼び出します。
以下の方法について説明します。
金宝appSimulink®モデル シミュレーションの一部である C関数を評価する。
C関数をモデルから生成したコードから呼び出す。
モデル例の詳細については、Cコード生成のためのコントロール アルゴリズム モデルの準備を参照してください。
モデル例rtwdemo_PCG_Eval_P4
を開きます。
金宝appSimulink®モデルだけでなく、多くのモデルベース デザイン アプリケーションの設計に含まれる既存の C関数のセットは、テストおよび検証が行われています。これらの関数を Simulink®モデルと統合し、関数を使用するコードを生成できます。
この例では、既存の C関数を呼び出すカスタム S金宝appimulink®ブロックを作成します。その後、ブロックをモデルに追加し、Simulink®のモデル シミュレーションを介してシステム全体をテストをすることができます。
モデル例では、圆周率コントローラーの 查找ブロック (ルックアップ テーブル) を既存の C関数への呼び出しと置き換えることができます。この関数はファイル可简化的
と可简化的
で定義されています。
既存の C関数の呼び出しを指定するには、S函数ブロックを使用します。レガシ コード ツールを使用すると、S函数ブロックの作成を自動化することができます。このツールを使用して、最初に既存の C関数とのインターフェイスを指定します。そして、そのインターフェイスを使用して S函数ブロックを作成します。
レガシ コード ツールを使用して可简化的
内の既存の C関数用の S函数ブロックを作成します。
def=遗留_代码(“初始化”)
構造体def
を使用して既存の Cコードとの関数インターフェイスを定義できます。
旧式代码(“sfcn\u cmex\u生成”,def)
旧式代码(“编译”,def)
旧式代码(“slblock_生成”,def)
生成された S函数ブロックにより、可简化的
で C関数が呼び出されます。これで、この S函数ブロックをモデル内で使用できます。
旧式代码(“sfcn\u tlc\u生成”,def)
このコマンドは、ブロック用コードの生成方法を指定する S函数のコンポーネントである 薄层色谱ファイルを作成します。
金宝appSimulink®モデル内で既存の Cコードを統合する場合、生成された S函数ブロックを確認します。
查找ブロックの置換を確認するために、查找ブロックで生成されたシミュレーション結果を新しい S函数ブロックで生成された結果と比較します。
正弦波ブロックは範囲が [-2 : 2] の出力値を生成します。
ルックアップ テーブルの入力範囲は次のとおりです。[-1 :1]。
ルックアップ テーブルは入力の絶対値を出力します。
ルックアップ テーブルは、入力の限界値で出力を切り取ります。
次の図に検証結果を示します。既存の Cコードと S金宝appimulink®テーブル ブロックは同じ出力値を生成します。
既存の C関数コードをスタンドアロン コンポーネントとして検証した後、S函数をモデル内で検証します。検証作業を完了するには、テスト ハーネス モデルを使用します。
シミュレーション結果はゴールデン値と一致しています。
コード ジェネレーターは S函数ブロックをシステムの他のブロックと同様に処理するために 薄层色谱ファイルを使用します。コード ジェネレーターは、S函数ブロックによって、複数の計算を単一の出力計算にまとめる演算である "式の畳み込み"を実装することができます。
生成コードは C関数简单的
を呼び出します。
次の図に、Cコードを統合する前後の生成コードを示します。統合前は、コードは生成されたルックアップ ルーチンを呼び出します。統合後は、生成コードは C関数简单的
を呼び出します。