Skip to Main Content Skip to Search
Product Documentation

Model-Level Data Structures

#pragma IO-begin
ExternalInputs_mySample mySample_U;
#pragma IO-end

#pragma IO-begin
ExternalOutputs_mySample mySample_Y;
#pragma IO-end

#pragma InData-begin(mySample_B)
BlockIO_mySample mySample_B;
#pragma InData-end

#pragma InData-begin(mySample_DWork)
D_Work_mySample mySample_DWork;
#pragma InData-end

#pragma InData-begin(mySample_M_)
RT_MODEL_mySample mySample_M_;
#pragma InData-end

#pragma InData-begin(mySample_M)
RT_MODEL_mySample *mySample_M = &mySample_M_;
#pragma InData-end

#pragma Parameters-begin
Parameters_mySample mySample_P = {
  0.0 , {2.3}
};
#pragma Parameters-end

Model-Level Functions

#pragma ExecFunc-begin(mySample_step)
void mySample_step(void)
{
  real_T rtb_UnitDelay;
  rtb_UnitDelay = mySample_DWork.UnitDelay_DSTATE;
  mySubsystem(rtb_UnitDelay, &mySample_B.mySubsystem;, 
  	(rtP_mySubsystem *) &mySample_P.mySubsystem);
  mySample_Y.Out1_o = mySample_B.mySubsystem.Gain;
  mySample_DWork.UnitDelay_DSTATE = mySample_U.In1;
}
#pragma ExecFunc-end(mySample_step)

#pragma InitTerminate-begin
void mySample_initialize(void)
{
  rtmSetErrorStatus(mySample_M, (const char_T *)0);
  {
    ((real_T*)&mySample_B.mySubsystem.Gain)[0] = 0.0;
  }
  mySample_DWork.UnitDelay_DSTATE = 0.0;
  mySample_U.In1 = 0.0;
  mySample_Y.Out1_o = 0.0;
  mySample_DWork.UnitDelay_DSTATE = mySample_P.UnitDelay_X0;
}
#pragma InitTerminate-end

Subsystem Function

Because the subsystem specifies a memory section for execution functions that overrides that of the parent model, subsystem code looks like this:

/* File: mySubsystem.c */

#pragma DATA_SEC(mySubsystem, "FAST_RAM")
void mySubsystem(real_T rtu_In1, 
rtB_mySubsystem *localB, 
rtP_mySubsystem *localP)
{
  localB->Gain = rtu_In1 * localP->Gain_Gain;
}

If the subsystem had not defined its own memory section for execution functions, but inherited that of the parent model, the subsystem code would have looked like this:

/* File: mySubsystem.c */

#pragma ExecFunc-begin(mySubsystem)
void mySubsystem(real_T rtu_In1, 
rtB_mySubsystem *localB, 
rtP_mySubsystem *localP)
{
  localB->Gain = rtu_In1 * localP->Gain_Gain;
}
#pragma ExecFunc-end(mySubsystem)
  


Related Products & Applications

Learn more about Simulink through this collection of videos, articles, technical literature and the Getting Started with Simulink Guide.

 © 1984-2012- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS