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

📄 auto_netcon.c

📁 RFID读卡器与标签之间在AWGN和加入其它读写器干扰下的BER仿真
💻 C
字号:
/*
 * auto_netcon.c
 * 
 * Real-Time Workshop code generation for Simulink model "auto_netcon.mdl".
 *
 * Model Version              : 1.42
 * Real-Time Workshop version : 6.0  (R14)  05-May-2004
 * C source code generated on : Thu Jun 08 09:33:33 2006
 */

#include "auto_netcon.h"
#include "auto_netcon_private.h"

/* Block signals (auto storage) */
BlockIO_auto_netcon auto_netcon_B;

/* Block states (auto storage) */
D_Work_auto_netcon auto_netcon_DWork;

/* Previous zero-crossings (trigger) states */
PrevZCSigStates_auto_netcon auto_netcon_PrevZC;

/* Real-time model */
rtModel_auto_netcon auto_netcon_M_;
rtModel_auto_netcon *auto_netcon_M = &auto_netcon_M_;

/* Model output function */
static void auto_netcon_output(int_T tid)
{

  /* local block i/o variables */

  real_T rtb_PulseGenerator;

  /* DiscretePulseGenerator: '<Root>/Pulse Generator' */
  rtb_PulseGenerator =
    (auto_netcon_DWork.clockTickCounter < 1.0 &&
    auto_netcon_DWork.clockTickCounter >= 0) ?
   1.0 :
    0.0;
  if (auto_netcon_DWork.clockTickCounter >= 2.0-1) {
    auto_netcon_DWork.clockTickCounter = 0;
  } else {
    (auto_netcon_DWork.clockTickCounter)++;
  }

  /* trigger Stateflow Block: <Root>/Chart */

  {
    ZCEventType trigEvent;
    trigEvent = rt_ZCFcn(ANY_ZERO_CROSSING,
     &(auto_netcon_PrevZC.sf_Chart_ZCE),
     rtb_PulseGenerator);
    if (trigEvent) {

      /* Stateflow: '<Root>/Chart' */

      if(auto_netcon_DWork.Chart.is_active_c1_auto_netcon == 0) {
        auto_netcon_DWork.Chart.is_active_c1_auto_netcon = 1;
        auto_netcon_DWork.Chart.count = 0;
        auto_netcon_DWork.Chart.convec[0] = 0;
        auto_netcon_DWork.Chart.convec[1] = 0;
        auto_netcon_DWork.Chart.is_c1_auto_netcon = (uint8_T)3;
      } else {
        switch(auto_netcon_DWork.Chart.is_c1_auto_netcon) {
         case 1:
          if((auto_netcon_DWork.Chart.code == 0) ||
           (auto_netcon_DWork.Chart.code == 1)) {
            auto_netcon_DWork.Chart.is_c1_auto_netcon = (uint8_T)2;
            switch(auto_netcon_DWork.Chart.was_Road) {
             case 1:
              auto_netcon_DWork.Chart.is_Road = (uint8_T)1;
              auto_netcon_DWork.Chart.was_Road = (uint8_T)1;
              break;
             case 2:
              auto_netcon_DWork.Chart.is_Road = (uint8_T)2;
              auto_netcon_DWork.Chart.was_Road = (uint8_T)2;
              break;
             case 3:
              auto_netcon_DWork.Chart.is_Road = (uint8_T)3;
              auto_netcon_DWork.Chart.was_Road = (uint8_T)3;
              break;
             case 4:
              auto_netcon_DWork.Chart.is_Road = (uint8_T)4;
              auto_netcon_DWork.Chart.was_Road = (uint8_T)4;
              break;
             default:
              auto_netcon_DWork.Chart.is_Road = (uint8_T)1;
              auto_netcon_DWork.Chart.was_Road = (uint8_T)1;
              break;
            }
          } else if(auto_netcon_DWork.Chart.code == 2) {
            auto_netcon_DWork.Chart.is_c1_auto_netcon = (uint8_T)4;
          }
          break;
         case 2:
          switch(auto_netcon_DWork.Chart.is_Road) {
           case 1:
            if((auto_netcon_DWork.Chart.code == 0) && (auto_netcon_DWork.Chart.i
              == 0)) {
              auto_netcon_DWork.Chart.convec[1] = 0;
              auto_netcon_DWork.Chart.convec[0] = 0;
              auto_netcon_DWork.Chart.i = 1;
              auto_netcon_DWork.Chart.is_Road = (uint8_T)1;
              auto_netcon_DWork.Chart.was_Road = (uint8_T)1;
            } else if(auto_netcon_DWork.Chart.i == 1) {
              auto_netcon_DWork.Chart.count++;
              output(auto_netcon_DWork.Chart.convec);
              auto_netcon_DWork.Chart.i = 0;
              auto_netcon_B.outdp1 = auto_netcon_DWork.Chart.convec[1];
              auto_netcon_B.outdp2 = auto_netcon_DWork.Chart.convec[0];
              auto_netcon_DWork.Chart.is_Road = (uint8_T)0;
              auto_netcon_DWork.Chart.is_c1_auto_netcon = (uint8_T)3;
            } else if((auto_netcon_DWork.Chart.code == 1) &&
             (auto_netcon_DWork.Chart.i == 0)) {
              auto_netcon_DWork.Chart.convec[1] = 1;
              auto_netcon_DWork.Chart.convec[0] = 1;
              auto_netcon_DWork.Chart.i = 1;
              auto_netcon_DWork.Chart.is_Road = (uint8_T)2;
              auto_netcon_DWork.Chart.was_Road = (uint8_T)2;
            }
            break;
           case 2:
            if((auto_netcon_DWork.Chart.code == 0) && (auto_netcon_DWork.Chart.i
              == 0)) {
              auto_netcon_DWork.Chart.convec[1] = 1;
              auto_netcon_DWork.Chart.convec[0] = 0;
              auto_netcon_DWork.Chart.i = 1;
              auto_netcon_DWork.Chart.is_Road = (uint8_T)3;
              auto_netcon_DWork.Chart.was_Road = (uint8_T)3;
            } else if(auto_netcon_DWork.Chart.i == 1) {
              auto_netcon_DWork.Chart.count++;
              output(auto_netcon_DWork.Chart.convec);
              auto_netcon_DWork.Chart.i = 0;
              auto_netcon_B.outdp1 = auto_netcon_DWork.Chart.convec[1];
              auto_netcon_B.outdp2 = auto_netcon_DWork.Chart.convec[0];
              auto_netcon_DWork.Chart.is_Road = (uint8_T)0;
              auto_netcon_DWork.Chart.is_c1_auto_netcon = (uint8_T)3;
            } else if((auto_netcon_DWork.Chart.code == 1) &&
             (auto_netcon_DWork.Chart.i == 0)) {
              auto_netcon_DWork.Chart.convec[1] = 0;
              auto_netcon_DWork.Chart.convec[0] = 1;
              auto_netcon_DWork.Chart.i = 1;
              auto_netcon_DWork.Chart.is_Road = (uint8_T)4;
              auto_netcon_DWork.Chart.was_Road = (uint8_T)4;
            }
            break;
           case 3:
            if(auto_netcon_DWork.Chart.i == 1) {
              auto_netcon_DWork.Chart.count++;
              output(auto_netcon_DWork.Chart.convec);
              auto_netcon_DWork.Chart.i = 0;
              auto_netcon_B.outdp1 = auto_netcon_DWork.Chart.convec[1];
              auto_netcon_B.outdp2 = auto_netcon_DWork.Chart.convec[0];
              auto_netcon_DWork.Chart.is_Road = (uint8_T)0;
              auto_netcon_DWork.Chart.is_c1_auto_netcon = (uint8_T)3;
            } else if((auto_netcon_DWork.Chart.code == 1) &&
             (auto_netcon_DWork.Chart.i == 0)) {
              auto_netcon_DWork.Chart.convec[1] = 0;
              auto_netcon_DWork.Chart.convec[0] = 0;
              auto_netcon_DWork.Chart.i = 1;
              auto_netcon_DWork.Chart.is_Road = (uint8_T)2;
              auto_netcon_DWork.Chart.was_Road = (uint8_T)2;
            } else if((auto_netcon_DWork.Chart.code == 0) &&
             (auto_netcon_DWork.Chart.i == 0)) {
              auto_netcon_DWork.Chart.convec[1] = 1;
              auto_netcon_DWork.Chart.convec[0] = 1;
              auto_netcon_DWork.Chart.i = 1;
              auto_netcon_DWork.Chart.is_Road = (uint8_T)1;
              auto_netcon_DWork.Chart.was_Road = (uint8_T)1;
            }
            break;
           case 4:
            if((auto_netcon_DWork.Chart.code == 0) && (auto_netcon_DWork.Chart.i
              == 0)) {
              auto_netcon_DWork.Chart.convec[1] = 0;
              auto_netcon_DWork.Chart.convec[0] = 1;
              auto_netcon_DWork.Chart.i = 1;
              auto_netcon_DWork.Chart.is_Road = (uint8_T)3;
              auto_netcon_DWork.Chart.was_Road = (uint8_T)3;
            } else if((auto_netcon_DWork.Chart.code == 1) &&
             (auto_netcon_DWork.Chart.i == 0)) {
              auto_netcon_DWork.Chart.convec[1] = 1;
              auto_netcon_DWork.Chart.convec[0] = 0;
              auto_netcon_DWork.Chart.i = 1;
              auto_netcon_DWork.Chart.is_Road = (uint8_T)4;
              auto_netcon_DWork.Chart.was_Road = (uint8_T)4;
            } else if(auto_netcon_DWork.Chart.i == 1) {
              auto_netcon_DWork.Chart.count++;
              output(auto_netcon_DWork.Chart.convec);
              auto_netcon_DWork.Chart.i = 0;
              auto_netcon_B.outdp1 = auto_netcon_DWork.Chart.convec[1];
              auto_netcon_B.outdp2 = auto_netcon_DWork.Chart.convec[0];
              auto_netcon_DWork.Chart.is_Road = (uint8_T)0;
              auto_netcon_DWork.Chart.is_c1_auto_netcon = (uint8_T)3;
            }
            break;
          }
          break;
         case 3:
          auto_netcon_DWork.Chart.code =
            (uint8_T)In1(auto_netcon_DWork.Chart.count);
          auto_netcon_B.indp = auto_netcon_DWork.Chart.code;
          auto_netcon_DWork.Chart.is_c1_auto_netcon = (uint8_T)1;
          break;
        }
      }
    }
  }
}

/* Model update function */
static void auto_netcon_update(int_T tid)
{

  /* Update absolute time for base rate */

  if(!(++auto_netcon_M->Timing.clockTick0)) ++auto_netcon_M->Timing.clockTickH0;
  auto_netcon_M->Timing.t[0] = auto_netcon_M->Timing.clockTick0 *
    auto_netcon_M->Timing.stepSize0 + auto_netcon_M->Timing.clockTickH0 *
    auto_netcon_M->Timing.stepSize0 * 4294967296.0;
}

/* Model initialize function */
void auto_netcon_initialize(boolean_T firstTime)
{

  if (firstTime) {
    /* registration code */
    /* initialize real-time model */
    (void)memset((char_T *)auto_netcon_M, 0, sizeof(rtModel_auto_netcon));

    /* Initialize timing info */
    {
      int_T *mdlTsMap = auto_netcon_M->Timing.sampleTimeTaskIDArray;
      int_T i;

      for(i = 0; i < 1; i++) {
        mdlTsMap[i] = i;
      }
      auto_netcon_M->Timing.sampleTimeTaskIDPtr = (&mdlTsMap[0]);
      auto_netcon_M->Timing.sampleTimes =
        (&auto_netcon_M->Timing.sampleTimesArray[0]);
      auto_netcon_M->Timing.offsetTimes =
        (&auto_netcon_M->Timing.offsetTimesArray[0]);
      /* task periods */
      auto_netcon_M->Timing.sampleTimes[0] = (1.0);

      /* task offsets */
      auto_netcon_M->Timing.offsetTimes[0] = (0.0);
    }

    rtmSetTPtr(auto_netcon_M, &auto_netcon_M->Timing.tArray[0]);

    {
      int_T *mdlSampleHits = auto_netcon_M->Timing.sampleHitArray;
      int_T i;

      for(i = 0; i < 1; i++) {
        mdlSampleHits[i] = 1;
      }
      auto_netcon_M->Timing.sampleHits = (&mdlSampleHits[0]);
    }

    rtmSetTFinal(auto_netcon_M, 50.0);
    auto_netcon_M->Timing.stepSize0 = 1.0;

    /* Setup for data logging */
    {
      static RTWLogInfo rt_DataLoggingInfo;

      auto_netcon_M->rtwLogInfo = &rt_DataLoggingInfo;

      rtliSetLogFormat(auto_netcon_M->rtwLogInfo, 0);

      rtliSetLogMaxRows(auto_netcon_M->rtwLogInfo, 0);

      rtliSetLogDecimation(auto_netcon_M->rtwLogInfo, 1);

      rtliSetLogVarNameModifier(auto_netcon_M->rtwLogInfo, "rt_");

      rtliSetLogT(auto_netcon_M->rtwLogInfo, "");

      rtliSetLogX(auto_netcon_M->rtwLogInfo, "");

      rtliSetLogXFinal(auto_netcon_M->rtwLogInfo, "");

      rtliSetLogXSignalInfo(auto_netcon_M->rtwLogInfo, NULL);

      rtliSetLogXSignalPtrs(auto_netcon_M->rtwLogInfo, NULL);

      rtliSetLogY(auto_netcon_M->rtwLogInfo, "");

      rtliSetLogYSignalInfo(auto_netcon_M->rtwLogInfo, NULL);

      rtliSetLogYSignalPtrs(auto_netcon_M->rtwLogInfo, NULL);
    }

    auto_netcon_M->solverInfoPtr = (&auto_netcon_M->solverInfo);
    auto_netcon_M->Timing.stepSize = (1.0);
    rtsiSetFixedStepSize(&auto_netcon_M->solverInfo, 1.0);
    rtsiSetSolverMode(&auto_netcon_M->solverInfo, SOLVER_MODE_SINGLETASKING);

    {
      /* block I/O */
      void *b = (void *) &auto_netcon_B;
      auto_netcon_M->ModelData.blockIO = (b);

      (void)memset(b, 0, sizeof(BlockIO_auto_netcon));
    }

    /* data type work */
    auto_netcon_M->Work.dwork = ((void *) &auto_netcon_DWork);
    (void)memset((char_T *) &auto_netcon_DWork, 0, sizeof(D_Work_auto_netcon));

    /* initialize non-finites */
    rt_InitInfAndNaN(sizeof(real_T));
  }

  /* Zero-crossing state initialization */
  auto_netcon_PrevZC.sf_Chart_ZCE = UNINITIALIZED_ZCSIG;
}

/* Model terminate function */
void auto_netcon_terminate(void)
{
}

/*========================================================================*
 * Start of GRT compatible call interface                                 *
 *========================================================================*/

void MdlOutputs(int_T tid) {

  auto_netcon_output(tid);
}

void MdlUpdate(int_T tid) {

  auto_netcon_update(tid);
}

void MdlInitializeSizes(void) {
  auto_netcon_M->Sizes.numContStates = (0); /* Number of continuous states */
  auto_netcon_M->Sizes.numY = (0);      /* Number of model outputs */
  auto_netcon_M->Sizes.numU = (0);      /* Number of model inputs */
  auto_netcon_M->Sizes.sysDirFeedThru = (0); /* The model is not direct feedthrough */
  auto_netcon_M->Sizes.numSampTimes = (1); /* Number of sample times */
  auto_netcon_M->Sizes.numBlocks = (4); /* Number of blocks */
  auto_netcon_M->Sizes.numBlockIO = (3); /* Number of block outputs */
}

void MdlInitializeSampleTimes(void) {
}

void MdlStart(void) {

  /* DiscretePulseGenerator Block: <Root>/Pulse Generator */
  {
    int_T Ns;

    Ns = 0;

    if (Ns <= 0) {
      auto_netcon_DWork.clockTickCounter = Ns;
    } else {
      auto_netcon_DWork.clockTickCounter = Ns - (int_T)(2.0*floor((real_T)Ns /
        2.0));
    }
  }

  /* Initialize code for chart: <Root>/Chart */
  auto_netcon_DWork.Chart.is_Road = 0;
  auto_netcon_DWork.Chart.was_Road = 0;
  auto_netcon_DWork.Chart.is_active_c1_auto_netcon = 0;
  auto_netcon_DWork.Chart.is_c1_auto_netcon = 0;
  auto_netcon_DWork.Chart.count = 0;
  auto_netcon_DWork.Chart.code = 0;
  {
    int32_T sf_i0;
    for(sf_i0 = 0; sf_i0 <= 1; sf_i0++) {
      auto_netcon_DWork.Chart.convec[sf_i0] = 0;
    }
  }
  auto_netcon_DWork.Chart.i = 0;
  auto_netcon_B.indp = 0;
  auto_netcon_B.outdp1 = 0;
  auto_netcon_B.outdp2 = 0;
}

rtModel_auto_netcon *auto_netcon(void) {
  auto_netcon_initialize(1);
  return auto_netcon_M;
}

void MdlTerminate(void) {
  auto_netcon_terminate();
}

/*========================================================================*
 * End of GRT compatible call interface                                   *
 *========================================================================*/

⌨️ 快捷键说明

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