⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 weather.c

📁 智能信息处理应用的实例
💻 C
📖 第 1 页 / 共 3 页
字号:
/*
 * Real-Time Workshop code generation for Simulink model "weather.mdl".
 *
 * Model Version                        : 1.4
 * Real-Time Workshop file version      : 5.0 $Date: 2002/05/30 19:21:33 $
 * Real-Time Workshop file generated on : Mon Jan 29 12:34:09 2007
 * TLC version                          : 5.0 (Jun 18 2002)
 * C source code generated on           : Mon Jan 29 12:34:09 2007
 */

#include <math.h>
#include <string.h>
#include "weather.h"
#include "weather_private.h"

/* Block signals (auto storage) */
BlockIO rtB;

/* Block states (auto storage) */
D_Work rtDWork;

/* Parent Simstruct */
static rtModel_weather model_S;
rtModel_weather *const rtM_weather = &model_S;

/* Output and update for action system:   
 *   '<S20>/If Action Subsystem'
 *   '<S20>/If Action Subsystem1'
 *   '<S21>/If Action Subsystem'
 *   '<S21>/If Action Subsystem1'
 *   '<S22>/If Action Subsystem'
 *   '<S22>/If Action Subsystem1'
 *   '<S35>/If Action Subsystem'
 *   '<S35>/If Action Subsystem1'
 *   '<S36>/If Action Subsystem'
 *   '<S36>/If Action Subsystem1'
 *   ...
 */
void weather_If_Action_Subsy_a(real_T *fy0, rtP_weather_If_Action_Subsy_a
 *localP)
{

  /* Constant: '<S23>/0' */
  *fy0 = localP->id_Value;
}

/* Output and update for action system:   
 *   '<S20>/If Action Subsystem3'
 *   '<S21>/If Action Subsystem3'
 *   '<S22>/If Action Subsystem3'
 *   '<S35>/If Action Subsystem3'
 *   '<S36>/If Action Subsystem3'
 *   '<S37>/If Action Subsystem3'
 *   '<S50>/If Action Subsystem3'
 *   '<S51>/If Action Subsystem3'
 *   '<S52>/If Action Subsystem3'
 */
void weather_If_Action_Subsy_b(real_T x, real_T *fy0,
 rtB_weather_If_Action_Subsy_b *localB, rtP_weather_If_Action_Subsy_b *localP)
{

  /* Sum: '<S26>/Sum1' incorporates:
   *   Constant: '<S26>/a'
   *   Constant: '<S26>/b'
   */
  localB->b_a = - localP->a_Value + localP->b_Value;

  /* Product: '<S26>/Product ab (trimf)' incorporates:
   *   Sum: '<S26>/Sum'
   *   Constant: '<S26>/a'
   */
  *fy0 = (x - localP->a_Value) / localB->b_a;
}

/* Output and update for action system:   
 *   '<S20>/If Action Subsystem2'
 *   '<S21>/If Action Subsystem2'
 *   '<S22>/If Action Subsystem2'
 *   '<S35>/If Action Subsystem2'
 *   '<S36>/If Action Subsystem2'
 *   '<S37>/If Action Subsystem2'
 *   '<S50>/If Action Subsystem2'
 *   '<S51>/If Action Subsystem2'
 *   '<S52>/If Action Subsystem2'
 */
void weather_If_Action_Subsy_c(real_T x, real_T *fy0,
 rtB_weather_If_Action_Subsy_c *localB, rtP_weather_If_Action_Subsy_c *localP)
{

  /* Sum: '<S25>/Sum2' incorporates:
   *   Constant: '<S25>/b'
   *   Constant: '<S25>/c'
   */
  localB->c_b = - localP->b_Value + localP->c_Value;

  /* Product: '<S25>/Product cd (trimf)' incorporates:
   *   Sum: '<S25>/Sum3'
   *   Constant: '<S25>/c'
   */
  *fy0 = 1.0 / localB->c_b * (localP->c_Value - x);
}

/* Start for root system: '<Root>' */
void MdlStart(void)
{

  /* FromWorkspace Block: <Root>/From Workspace */
  {

    static real_T pTimeValues[] = { 0.0 };

    static real_T pDataValues[] = { 50.0 };

    rtDWork.From_Workspace_PWORK.TimePtr = (void *) pTimeValues;
    rtDWork.From_Workspace_PWORK.DataPtr = (void *) pDataValues;

    rtDWork.From_Workspace_IWORK.PrevIndex = 0;
  }

  /* If Block: <S22>/If */
  rtDWork.If_a_ActiveSubsystem = -1;

  /* FromWorkspace Block: <Root>/From Workspace1 */
  {

    static real_T pTimeValues[] = { 0.0 };

    static real_T pDataValues[] = { 20.0 };

    rtDWork.From_Workspace1_PWORK.TimePtr = (void *) pTimeValues;
    rtDWork.From_Workspace1_PWORK.DataPtr = (void *) pDataValues;

    rtDWork.From_Workspace1_IWORK.PrevIndex = 0;
  }

  /* If Block: <S50>/If */
  rtDWork.If_b_ActiveSubsystem = -1;

  /* FromWorkspace Block: <Root>/From Workspace2 */
  {

    static real_T pTimeValues[] = { 0.0 };

    static real_T pDataValues[] = { 0.6 };

    rtDWork.From_Workspace2_PWORK.TimePtr = (void *) pTimeValues;
    rtDWork.From_Workspace2_PWORK.DataPtr = (void *) pDataValues;

    rtDWork.From_Workspace2_IWORK.PrevIndex = 0;
  }

  /* If Block: <S36>/If */
  rtDWork.If_c_ActiveSubsystem = -1;

  /* If Block: <S52>/If */
  rtDWork.If_d_ActiveSubsystem = -1;

  /* If Block: <S51>/If */
  rtDWork.If_e_ActiveSubsystem = -1;

  /* If Block: <S20>/If */
  rtDWork.If_f_ActiveSubsystem = -1;

  /* If Block: <S37>/If */
  rtDWork.If_g_ActiveSubsystem = -1;

  /* If Block: <S21>/If */
  rtDWork.If_h_ActiveSubsystem = -1;

  /* If Block: <S35>/If */
  rtDWork.If_i_ActiveSubsystem = -1;
}

/* Outputs for root system: '<Root>' */
void MdlOutputs(int_T tid)
{
  /* local block i/o variables */
  real_T rtb_From_Workspace;
  real_T rtb_From_Workspace1;
  real_T rtb_From_Workspace2;
  real_T rtb_Weighting_a;
  real_T rtb_Weighting_b;
  real_T rtb_Weighting_c;
  real_T rtb_Weighting_d;
  real_T rtb_Weighting_e;
  real_T rtb_Weighting_f;
  real_T rtb_Weighting_g;
  real_T rtb_Weighting_h;
  real_T rtb_Weighting_i;
  real_T rtb_Weighting_j;
  real_T rtb_AggMethod1[101];
  real_T rtb_Sum1_a;
  real_T rtb_Zero_Strength_COA_a;
  real_T rtb_Averaging_COA_a;
  real_T rtb_AggMethod2[101];
  real_T rtb_Sum1_b;
  real_T rtb_Zero_Strength_COA_b;
  real_T rtb_Averaging_COA_b;
  real_T rtb_impMethod_a[202];
  real_T rtb_impMethod_b[202];
  real_T rtb_impMethod_c[202];
  real_T rtb_impMethod_d[202];
  real_T rtb_impMethod_e[202];
  real_T rtb_impMethod_f[202];
  real_T rtb_impMethod_g[202];
  real_T rtb_impMethod_h[202];
  real_T rtb_impMethod_i[202];
  real_T rtb_impMethod_j[202];
  real_T rtb_temp51;
  real_T rtb_temp52;

  /* tid is required for a uniform function interface. This system
   * is single rate, and in this case, tid is not accessed. */
  UNUSED_PARAMETER(tid);

  /* FromWorkspace: '<Root>/From Workspace' */
  {
    real_T *pDataValues = (real_T *) rtDWork.From_Workspace_PWORK.DataPtr;
    rtb_From_Workspace = pDataValues[0];
  }

  /* If: '<S22>/If' */
  {
    int8_T rtAction = -1;
    if (rtb_From_Workspace < (-50.0) || rtb_From_Workspace > 50.0) { /* (u1<a) | (u1>c) */
      rtAction = 0;
      weather_If_Action_Subsy_a(&rtB.Merge_a, (rtP_weather_If_Action_Subsy_a *)
       &rtP.If_Action_a);
    } else if (rtb_From_Workspace == 0.0) { /* u1==b */
      rtAction = 1;
      weather_If_Action_Subsy_a(&rtB.Merge_a, (rtP_weather_If_Action_Subsy_a *)
       &rtP.If_Action_b);
    } else if (rtb_From_Workspace < 0.0) { /*  u1 < b */
      rtAction = 2;
      weather_If_Action_Subsy_b(rtb_From_Workspace, &rtB.Merge_a,
       &rtB.If_Action_c, (rtP_weather_If_Action_Subsy_b *) &rtP.If_Action_c);
    } else {
      rtAction = 3;
      weather_If_Action_Subsy_c(rtb_From_Workspace, &rtB.Merge_a,
       &rtB.If_Action_d, (rtP_weather_If_Action_Subsy_c *) &rtP.If_Action_d);
    }
    rtDWork.If_a_ActiveSubsystem = rtAction;
  }

  /* FromWorkspace: '<Root>/From Workspace1' */
  {
    real_T *pDataValues = (real_T *) rtDWork.From_Workspace1_PWORK.DataPtr;
    rtb_From_Workspace1 = pDataValues[0];
  }

  /* If: '<S50>/If' */
  {
    int8_T rtAction = -1;
    if (rtb_From_Workspace1 < 15.0 || rtb_From_Workspace1 > 65.0) { /* (u1<a) | (u1>c) */
      rtAction = 0;
      weather_If_Action_Subsy_a(&rtB.Merge_b, (rtP_weather_If_Action_Subsy_a *)
       &rtP.If_Action_e);
    } else if (rtb_From_Workspace1 == 40.0) { /* u1==b */
      rtAction = 1;
      weather_If_Action_Subsy_a(&rtB.Merge_b, (rtP_weather_If_Action_Subsy_a *)
       &rtP.If_Action_f);
    } else if (rtb_From_Workspace1 < 40.0) { /*  u1 < b */
      rtAction = 2;
      weather_If_Action_Subsy_b(rtb_From_Workspace1, &rtB.Merge_b,
       &rtB.If_Action_g, (rtP_weather_If_Action_Subsy_b *) &rtP.If_Action_g);
    } else {
      rtAction = 3;
      weather_If_Action_Subsy_c(rtb_From_Workspace1, &rtB.Merge_b,
       &rtB.If_Action_h, (rtP_weather_If_Action_Subsy_c *) &rtP.If_Action_h);
    }
    rtDWork.If_b_ActiveSubsystem = rtAction;
  }

  /* FromWorkspace: '<Root>/From Workspace2' */
  {
    real_T *pDataValues = (real_T *) rtDWork.From_Workspace2_PWORK.DataPtr;
    rtb_From_Workspace2 = pDataValues[0];
  }

  /* If: '<S36>/If' */
  {
    int8_T rtAction = -1;
    if (rtb_From_Workspace2 < (-0.4) || rtb_From_Workspace2 > 0.5) { /* (u1<a) | (u1>c) */
      rtAction = 0;
      weather_If_Action_Subsy_a(&rtB.Merge_c, (rtP_weather_If_Action_Subsy_a *)
       &rtP.If_Action_i);
    } else if (rtb_From_Workspace2 == 0.0) { /* u1==b */
      rtAction = 1;
      weather_If_Action_Subsy_a(&rtB.Merge_c, (rtP_weather_If_Action_Subsy_a *)
       &rtP.If_Action_j);
    } else if (rtb_From_Workspace2 < 0.0) { /*  u1 < b */
      rtAction = 2;
      weather_If_Action_Subsy_b(rtb_From_Workspace2, &rtB.Merge_c,
       &rtB.If_Action_k, (rtP_weather_If_Action_Subsy_b *) &rtP.If_Action_k);
    } else {
      rtAction = 3;
      weather_If_Action_Subsy_c(rtb_From_Workspace2, &rtB.Merge_c,
       &rtB.If_Action_l, (rtP_weather_If_Action_Subsy_c *) &rtP.If_Action_l);
    }
    rtDWork.If_c_ActiveSubsystem = rtAction;
  }

  /* MinMax: '<S5>/andorMethod' */
  {
    real_T rtmin = rtB.Merge_a;

    rtmin = rt_MIN(rtB.Merge_b, rtmin);
    rtmin = rt_MIN(rtB.Merge_c, rtmin);
    rtb_temp52 = rtmin;
  }

  /* Product: '<S5>/Weighting' incorporates:
   *   Constant: '<S5>/Weight'
   */
  rtb_Weighting_a = rtP.Weight_a_Value * rtb_temp52;

  /* If: '<S52>/If' */
  {
    int8_T rtAction = -1;
    if (rtb_From_Workspace1 < (-10.0) || rtb_From_Workspace1 > 40.0) { /* (u1<a) | (u1>c) */
      rtAction = 0;
      weather_If_Action_Subsy_a(&rtB.Merge_d, (rtP_weather_If_Action_Subsy_a *)
       &rtP.If_Action_m);
    } else if (rtb_From_Workspace1 == 15.0) { /* u1==b */
      rtAction = 1;
      weather_If_Action_Subsy_a(&rtB.Merge_d, (rtP_weather_If_Action_Subsy_a *)
       &rtP.If_Action_n);
    } else if (rtb_From_Workspace1 < 15.0) { /*  u1 < b */
      rtAction = 2;
      weather_If_Action_Subsy_b(rtb_From_Workspace1, &rtB.Merge_d,
       &rtB.If_Action_o, (rtP_weather_If_Action_Subsy_b *) &rtP.If_Action_o);
    } else {
      rtAction = 3;
      weather_If_Action_Subsy_c(rtb_From_Workspace1, &rtB.Merge_d,
       &rtB.If_Action_p, (rtP_weather_If_Action_Subsy_c *) &rtP.If_Action_p);
    }
    rtDWork.If_d_ActiveSubsystem = rtAction;
  }

  /* MinMax: '<S7>/andorMethod' */
  {
    real_T rtmin = rtB.Merge_a;

    rtmin = rt_MIN(rtB.Merge_d, rtmin);
    rtmin = rt_MIN(rtB.Merge_c, rtmin);
    rtb_temp52 = rtmin;
  }

  /* Product: '<S7>/Weighting' incorporates:
   *   Constant: '<S7>/Weight'
   */
  rtb_Weighting_b = rtP.Weight_b_Value * rtb_temp52;

  /* If: '<S51>/If' */
  {
    int8_T rtAction = -1;
    if (rtb_From_Workspace1 < (-35.0) || rtb_From_Workspace1 > 15.0) { /* (u1<a) | (u1>c) */
      rtAction = 0;
      weather_If_Action_Subsy_a(&rtB.Merge_e, (rtP_weather_If_Action_Subsy_a *)
       &rtP.If_Action_q);
    } else if (rtb_From_Workspace1 == (-10.0) ) { /* u1==b */
      rtAction = 1;
      weather_If_Action_Subsy_a(&rtB.Merge_e, (rtP_weather_If_Action_Subsy_a *)
       &rtP.If_Action_r);
    } else if (rtb_From_Workspace1 < (-10.0) ) { /*  u1 < b */
      rtAction = 2;
      weather_If_Action_Subsy_b(rtb_From_Workspace1, &rtB.Merge_e,
       &rtB.If_Action_s, (rtP_weather_If_Action_Subsy_b *) &rtP.If_Action_s);
    } else {
      rtAction = 3;
      weather_If_Action_Subsy_c(rtb_From_Workspace1, &rtB.Merge_e,
       &rtB.If_Action_t, (rtP_weather_If_Action_Subsy_c *) &rtP.If_Action_t);
    }
    rtDWork.If_e_ActiveSubsystem = rtAction;
  }

  /* MinMax: '<S8>/andorMethod' */
  {
    real_T rtmin = rtB.Merge_a;

    rtmin = rt_MIN(rtB.Merge_e, rtmin);
    rtmin = rt_MIN(rtB.Merge_c, rtmin);
    rtb_temp52 = rtmin;
  }

  /* Product: '<S8>/Weighting' incorporates:
   *   Constant: '<S8>/Weight'
   */
  rtb_Weighting_c = rtP.Weight_c_Value * rtb_temp52;

  /* If: '<S20>/If' */
  {
    int8_T rtAction = -1;
    if (rtb_From_Workspace < 0.0 || rtb_From_Workspace > 100.0) { /* (u1<a) | (u1>c) */
      rtAction = 0;
      weather_If_Action_Subsy_a(&rtB.Merge_f, (rtP_weather_If_Action_Subsy_a *)
       &rtP.If_Action_u);
    } else if (rtb_From_Workspace == 50.0) { /* u1==b */
      rtAction = 1;
      weather_If_Action_Subsy_a(&rtB.Merge_f, (rtP_weather_If_Action_Subsy_a *)
       &rtP.If_Action_v);
    } else if (rtb_From_Workspace < 50.0) { /*  u1 < b */
      rtAction = 2;
      weather_If_Action_Subsy_b(rtb_From_Workspace, &rtB.Merge_f,
       &rtB.If_Action_w, (rtP_weather_If_Action_Subsy_b *) &rtP.If_Action_w);
    } else {
      rtAction = 3;
      weather_If_Action_Subsy_c(rtb_From_Workspace, &rtB.Merge_f,
       &rtB.If_Action_x, (rtP_weather_If_Action_Subsy_c *) &rtP.If_Action_x);
    }
    rtDWork.If_f_ActiveSubsystem = rtAction;
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -