主要内容

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

为每个子系统

入力信号またはマスクパラメーターの各要素またはサブ配列で実行を繰り返し,結果を連結するサブシステム

  • ライブラリ:
  • 金宝appSimulink / Ports &子系统

    HDL编码器/端口和子系统

  • 对于每个子系统块

説明

为每个子系统ブロックは,シミュレーションタイムステップ中に入力信号またはマスクパラメーター配列の各要素またはサブ配列で実行を繰り返すサブシステムを作成するための開始点として事前構成されている子系统ブロックです。

サブシステム内のブロックのセットは,元の信号またはマスクパラメーター配列の1つの要素またはサブ配列に適用されるアルゴリズムを表します。サブシステム内の为每一个ブロックでは,サブシステム入力またはマスクパラメーターを要素またはサブ配列に分解する処理,および個別の結果を連結して出力信号にする処理を設定できます。ブロックパラメーター[分割次元]および[分割幅]で,入力信号またはマスクパラメーター配列をスライスする次元と各スライスの幅をそれぞれ指定します。行ベクトルを分割するには,[分割次元]2に指定します。列ベクトルを分割するには,[分割次元]1に指定します。パラメーター(分割オフセット]を使用して,分割の間のギャップまたはオーバーラップを指定します。データのサブセットに対する処理を制限するには[反復回数]を指定します。このブロックパラメーターの詳細については,为每一个を参照してください。

このサブシステム内では,状態をもつ各ブロックは,処理対象の各要素またはサブ配列ごとに独立した状態セットを維持します。したがって,このサブシステムの操作は動作の点で、元の入力信号またはマスク パラメーター配列の各要素についてサブシステムの内容をコピーし、そのコピーを使用して各要素を処理することに似ています。

特定のモデルの場合,为每个子系统ブロックは,金宝app®编码器™生成コードでのコードの再利用の向上も行います。スカラーアルゴリズムが同じである,2つの再利用可能な原子子系统ブロックを格納したモデルが,信号の各要素に適用されるとします。これらのサブシステムの入力信号次元が異なる場合,金宝app仿真软件编码器生成コードには2つの異なる関数が含まれます。これら2つのサブシステムを入力の各要素を同じアルゴリズムで処理するように設定された2つの同じ为每个子系统ブロックに置き換えることができます。この場合,金宝app仿真软件编码器生成コードは,入力信号の要素数でパラメーター化される1つの関数で構成されます。モデルの为每个子系统ブロックの一意のインスタンスごとに1回呼び出されるので,この関数は2回呼び出されることになります。これらのケースのそれぞれに対して,入力信号の要素はそれぞれ異なる値をもちます。

マルチコア実行のサポート

ラピッドアクセラレータモードでモデルのシミュレーションを行う場合,仿真金宝app软件为每个子系统はのより高速なシミュレーションのため,マルチコア実行を使用します。金宝app仿真软件は,対象となる各为每个子系统について,ラピッドアクセラレータモードで実行される最初の2タイムステップを自動的にプロファイリングして,並列実行時間と逐次実行時間を比較します。続いて,金宝app仿真软件は,そうすることによって実行時間の速度が増すようであれば,シミュレーション実行の後続のタイムステップにおいて,並列のマルチコア実行に为每个子系统を指定します。为每个子系统入れ子にされたの場合,マルチコア実行は最上位サブシステムにのみ適用されます。連続状態または函数调用者为每个子系统ブロックを含むにはマルチコア実行は適用されません。

为每个子系统特定のについてマルチコア実行を抑止するには,(为每个子系统ブロック自身ではなく)サブシステム内の为每一个ブロックのMultithreadedSimパラメーターを“关闭”に設定します。

set_param (ForEachBlockName“MultithreadedSim”,“关闭”)

モデル内のすべての为每个子系统についてマルチコア実行を抑止するには,モデルコンフィギュレーションパラメーターMultithreadedSim“关闭”に設定します。

set_param (ModelName“MultithreadedSim”,“关闭”)

マルチコア実行を再度有効にするには,関連するMultithreadedSimパラメーターを既定値である“汽车”設定に戻します。

例については,为每个子系统を使用したマルチスレッドシミュレーションを参照してください。

s函数のサポート

为每个子系统ブロックは,C-MEX s函数と所二级MATLAB®s函数の両方をサポートします。ただし,s函数が次の手法のいずれかを使用して複数の実行インスタンスをサポートすることが条件です。

  • C-MEX s函数はmdlSetWorkWidthsメソッドでss金宝appSupportsMultipleExecInstances(年代,真的)を宣言しなければなりません。

  • 2级MATLAB函数は,设置メソッドで块。金宝appSupportsMultipleExecInstances = trueを宣言しなければなりません。

上述の仕様を使用する場合:

  • DWorkや块I / Oなどの実行時データを,グローバル変数または永続変数を使用して,あるいはs函数のユーザーデータ内でキャッシュしないでください。

  • 为每个子系统ブロックでは,mdlStartからmdlTerminateまでのs函数の各実行メソッドは,s函数によって処理される各要素に対して1回呼び出されます。したがって,mdlTerminateに対する繰り返しの呼び出しで同じメモリを開放することのないように注意する必要があります。たとえば,mdlSetWorkWidths内でランタイムパラメーターのメモリを割り当てるC-MEX s函数について考えます。mdlTerminateでこのメモリを開放する必要があるのは1回だけです。解決策として,mdlTerminateをはじめて呼び出した後にポインターを空に設定します。

制限

为每个子系统ブロックには次の制限と回避方法があります。

制限 回避方法

为每个子系统内のバスまたはバス信号の配列のログを直接記録できない。

次のいずれかの方法を使用します。

  • 总线选择ブロックを使用してログ記録する信号を選択し,ログ記録用に信号をマークします。

  • その信号を外港ブロックに付加し,每个子系统の外部で信号のログを記録します。

次のいずれかの条件が成立する場合,为每个子系统内にある参照モデル内の信号のログを記録することができない。

  • 每个子系统がラピッドアクセラレータモードでシミュレート中のモデル内にある場合。

  • 为每个子系统自体が模型ブロックによってアクセラレータモードで参照されているモデル内にある場合。

1つ目の条件については,アクセラレータモードを使用してください。

2つ目の条件については,ノーマルモードまたはラピッドアクセラレータモードを使用してください。

为每个子系统内のブロックの状態のログを記録することはできない。

シミュレーション状態を保存し,元に戻します。

为每个子系统内の模型ブロックをシミュレートするのに,ノーマルモードが使用できない。

アクセラレータモードまたはラピッドアクセラレータモードを使用してください。

入力信号と出力信号がベクトル(1次元か2次元の行ベクトルまたは列ベクトル)である場合,内容が同じ2つの为每个子系统に対して再利用可能コードが生成される。n次元の入力信号と出力信号の場合,再利用可能なコードが生成されるのは,信号が分割される次元が最も高い次元であるときだけである。

信号次元を並べ替えて,分割次元と連結次元をn次元信号の最も高い大きさが1でない次元に変換します。

为每个子系统ブロックでは以下の機能はサポートされません。

  • 为每个子系统内に以下のブロックやs函数を含めることはできません。

    • 数据存储内存ブロック,数据存储读取ブロック,または数据存储写ブロック

    • 入力が结构随着时间的推移で,時間フィールドが空の場合の从工作空间ブロック

    • ブロックを保存する到工作空间データと到文件データ

    • サブシステム境界を越える转到ブロックとブロック

    • シミュレーションモードがノーマルに設定された参照モデル

    • シャドウ轮廓尺寸

    • 导函数

    为每个子系统をサポートするブロックの完全なリストを確認するには,MATLABコマンドラインで”showblockdatatypetable“と入力します。

  • 以下の信号のタイプは使用できません。

    • システム内での外部ストレージクラスがある信号

    • サブシステムの入力境界と出力境界でのフレーム信号

    • 可変サイズの信号

  • サブシステム内での線形化点の作成

  • サブシステム内のブロックのヤコビアンフラグの伝播。J.Mi.BlockAnalyticFlags.jacobianを使用すれば,MATLABでこの状態を確認できます。このとき,Jがヤコビアンオブジェクトです。为每个子系统ブロックのヤコビアンの正確性を検証するには,次を実行します。

    • 为每个子系统のヤコビアンのタグを調べます。“not_金宝appsupported”の場合,ヤコビアンは正しくありません。

    • 为每个子系统から各ブロックを移動して,そのヤコビアンを計算します。いずれかのブロックが“not_s金宝appupportedの場合,または警告タグが含まれている場合は,每个子系统のヤコビアンは正しくありません。

  • 以下の種類のコード生成は実行できません。

    • 金宝app仿真软件编码器s函数ターゲットの生成

    • 次の両方の条件を満たす金宝app仿真软件编码器コード生成

      • Stateflow®またはMATLAB函数ブロックがサブシステム内にある場合。

      • このブロックが、数据存储内存ブロックやExportedGlobalストレージクラスの金宝app仿真软件。信号オブジェクトなどのサブシステム外のグローバルデータにアクセスしようとしている場合。

    • PLCコード生成

端子

入力

すべて展開する

子系统ブロックへの信号入力。スカラー,ベクトルまたは行列として指定します。轮廓尺寸ブロックを子系统ブロック内に配置することで,ブロックへの外部入力端子が追加されます。端子ラベルは轮廓尺寸ブロックの名前と一致します。

ローカル環境から信号を受信するには,轮廓尺寸ブロックを使用します。

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

出力

すべて展開する

子系统ブロックからの信号出的力。スカラー,ベクトルまたは行列として返されます。外港ブロックを子系统ブロック内に配置することで,ブロックへの外部出力端子が追加されます。端子ラベルは外港ブロックの名前と一致します。

信号をローカル環境に送信するには,外港ブロックを使用します。

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

モデルの例

ブロックの特性

データ型

布尔一个|公共汽车一个|一个|枚举一个|不动点一个|一半一个|整数一个|一个

直接フィードスルー

いいえ

多次元信号

限定的一个

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

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

拡張機能

R2010aで導入