| Real-Time Workshop User's Guide | ![]() |
アキュムレータ
Simulinkは、図 8-8のブロック線図をアキュムレータとして認識します。アキュムレータ構成 -- Constantブロック、SumブロックおよびUnit Delayブロックを通したフィードバックで構成されます -- は、ブロック線図または低レベルのサブシステム内で認識されます。
Block reductionオプションを利用して、アキュムレータから生成されたコードを著しく最適化することができます。図 8-9のように、SimulinkのSimulation parametersダイアログのAdvancedページでこのオプションをオンにします。
Block reduction オプションがオンのとき、Simulinkは統合されたブロック Sum_sythesized_accumulatorを作成します。この統合されたブロックは、図 8-8のブロック線図を置き換えて、簡単なインクリメントの計算にします。
/* Compute block outputs */
void MdlOutputs(int_T tid)
{
/* UnadornAccum Block: <Root>/Sum_sythesized_accumulator */
rtB.Sum_sythesized_accumulator++;
/* Outport Block: <Root>/Out1 */
rtY.Out1 = rtB.Sum_sythesized_accumulator;
}
Block reductionがオフのとき、生成されたコードは、ブロック線図の通りに反映されますが、効率的ではありません。
/* Compute block outputs */
void MdlOutputs(int_T tid)
{
/* local block i/o variables */
real_T rtb_Unit_Delay;
/* UnitDelay Block: <Root>/Unit Delay */
rtb_Unit_Delay = rtDWork.Unit_Delay_DSTATE;
/* Sum Block: <Root>/Sum */
rtB.Sum = rtC_Constant + rtb_Unit_Delay;
/* Outport Block: <Root>/Out1 */
rtY.Out1 = rtB.Sum;
}
/* Perform model update */
void MdlUpdate(int_T tid)
{
/* UnitDelay Block: <Root>/Unit Delay */
rtDWork.Unit_Delay_DSTATE = rtB.Sum;
}
| ルックアップテーブルと多項式 | データタイプの使用法 | ![]() |