主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

C函数

外部Cコードの仿真软金宝app件モデルからの統合と呼び出し

  • ライブラリ:
  • 金宝appSimulink /用户定义函数

  • C功能块

説明

C函数ブロックは外部Cコードを仿真软金宝app件®モデルから統合し,呼び出します。このブロックを使用して,データの前処理または後処理を行うことで,外部コードを定義し,コードの統合をカスタマイズします。また,カスタマイズされたコードをシミュレーションとCコードの生成に指定できます。コードで条件付きで定義されている関数を呼び出すことも,1つのブロックで複数の関数を呼び出すこともできます。このブロックを使用して,ブロックの永続データを初期化し,外部関数に渡すことができます。

C函数ブロックを使用してC数学库関数のサブセットを呼び出すこともできます。詳細については,C函数ブロックからのCライブラリ関数の呼び出しを参照してください。

C函数ブロックは永続データの初期化とブロックのダイアログからの外部関数の呼び出しをサポートします。C函数ブロックは,永続データの初期化と終了のみをサポートします。ブロックは、シミュレーション中のデータの更新をサポートしません。連続状態をもつ動的システムをモデル化するには、功能ブロックを使用します。功能の詳細については、什么是s函数?を参照してください。

C函数ブロックによって呼び出されるソースコードとサポートファイルを,コンフィギュレーションパラメーターの[シミュレーションターゲット]ペインで定義します。

制限

金宝app仿真软件の次の機能はC函数ブロックとは互換性がありません。

  • 金宝app仿真软件覆盖™

    実行カバレッジのみが計測されます。

  • 金宝app仿真软件代码检查员™

  • 金宝app仿真软件设计校验™

  • 金宝app仿真软件测试™

    ——テストハーネス

  • 金宝app仿真软件报告生成器™でのC函数ブロックの使用

さらに,C函数ブロックで参照されるソースコードには次の制限が適用されます。

  • Cのキーワード静态はサポートされない。

    タイムステップを超えて値をキャッシュするには,シンボルをブロックダイアログの[シンボル]テーブルで(持续)として定義します。

  • スクリプトにはファイルを含めることができない。

    外部関数は,コンフィギュレーションパラメーターダイアログの[シミュレーションターゲット]ペインで指定しなければなりません。

    新しいインクルードと混在させられない,[シミュレーションターゲット]ペインで定義された既存のインクルードがある場合,そのインクルードとC函数ブロックをライブラリモデルに追加することを考慮し,メインモデルでブロックへのリンクを使用します。詳細については,カスタムライブラリの作成を参照してください。

  • 異なる型のポインターを相互に割り当てることはできない。外部関数を呼び出す際にはポインターの型は一致していなければなりません。

  • コードは定数のアドレスを取ることができない。

  • C函数ブロックからCライブラリ関数の一部を直接呼び出すことはサポートされない。直接呼び出すことができるC数学库関数のリストを確認するには,C函数ブロックからのCライブラリ関数の呼び出しを参照してください。その他のCライブラリ関数を呼び出すには,そのCライブラリ関数を呼び出すラッパー関数を作成します。

端子

入力

すべて展開する

C函数ブロックへの入力。

入力の数とその名前は,外部Cコードでの定義と,ブロックパラメーターダイアログの[シンボル]テーブルでのシンボルの定義によって決定されます。

入力端子のラベルは,ブロックダイアログの[シンボル]テーブルの[ラベル]フィールドを編集して変更しない限り,入力シンボルの名前と同じです。

データ型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|布尔|枚举|公共汽车

出力

すべて展開する

C函数ブロックからの出力。

出力の数とその名前は,外部Cコードでの定義と,ブロックパラメーターダイアログの[シンボル]テーブルでのシンボルの定義によって決定されます。

出力端子のラベルは,ブロックパラメーターダイアログの[シンボル]テーブルの[ラベル]フィールドを編集して変更しない限り,出力シンボルの名前と同じです。

データ型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|布尔|枚举|公共汽车

パラメーター

すべて展開する

C函数ブロックがシミュレーション中に実行するコードを指定します。たとえば,[シミュレーションターゲット]ペインで指定された外部Cコードから関数を呼び出し,結果に変更を加え,他のブロックに結果を渡す操作を実行することができます。

C函数ブロックの初期化コードを指定します。このコードはシミュレーションの開始時に1回実行されます。たとえば,永続データを初期化できます。

モデルの終了時にC函数ブロックが実行するクリーンアップコードを指定します。このコードはシミュレーションの終了時に1回実行されます。たとえば,このコードを使用して、void ポインターとして指定された永続シンボルについてキャッシュされたメモリを解放します。

[シンボル]テーブルはCコードのシンボルの属性を指定します。テーブル内のシンボルそれぞれの属性を入力しなければなりません。

  • 名前——ソースコード内のシンボル名。

  • スコープ——シンボルのスコープ。シンボルのスコープはいつでも変更できます。次のスコープが使用できます。

    • 输入- - - - - -C函数ブロックへの入力シンボル。

    • 输出- - - - - -C函数ブロックへの出力シンボル。

    • 输入输出——シンボルをC函数ブロックへの入力と出力の両方として定義します。

    • 参数——シンボルをパラメーターとして指定。パラメーター名はシンボルの标签プロパティによって定義されます。

    • 持续的——シンボルを永続データとして定義します。

      持续的スコープを使用して空白ポインターを定義できます。”无效ポインター“は作成する,または割り当てるあらゆる型のデータを格納できるポインターです。

    • 常数——値とサイズの式,または数値式を使用して,定数としてシンボルを定義します。

  • ラベル——シンボルのラベル。スコープが(输入)または(输出)に設定されたシンボルでは,このラベルはブロックの端子名として表示されます。スコープが(参数)に設定されたシンボルでは,このラベルはブロックパラメーターマスクに表示されるラベルです。スコープが(常量)の場合,ラベルは定数式です。(持续)シンボルにラベルを定義することはできません。

  • タイプ——シンボルのデータ型。ドロップダウンリストからデータ型を選択するか,またはカスタムデータ型を指定します。

    金宝app仿真软件。公共汽车金宝app仿真软件枚举,またはC函数ブロックに関連付けられている外部ヘッダー定義のない金宝app仿真软件。AliasTypeなどのカスタムタイプを使用するには,[シンボル]テーブルで型を適宜設定します。

  • サイズ——シンボルデータのサイズ。C函数ブロックはスカラーおよびベクトルのみをサポートします。行列と高次元の配列はサポートされません。サイズ式を使用して出力のサイズを定義することも、-1を使用してサイズを継承することもできます。

  • 端子——入力シンボルおよび出力シンボルでは,港口はシンボルデータのブロックの端子インデックスを示します。パラメーターシンボルの場合,港口はブロックパラメーターマスクにシンボルが表示される順序を示します。

ブロックの特性

データ型

布尔一个|公共汽车一个|一个|枚举一个|整数一个|一个

直接フィードスルー

いいえ

多次元信号

はい

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

一个実際のデータ型または機能のサポートは,ブロックの実装に依存します。

拡張機能

R2020aで導入