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

📄 li3_5_sfun_c1.c

📁 《Matlab仿真技术与应用》习题解的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
            if(numTransitions>1) {
              _SFD_TRANSITION_CONFLICT(&(transitionList[0]),numTransitions);
            }
          }
          _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,5);
          _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,5);
          _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,5);
          exit_atomic_c1_s5_third();
          if(chartInstance.State.is_c1_s1_gear_state == IN_NO_ACTIVE_CHILD) {
            _SFD_CS_CALL(STATE_ENTER_ENTRY_FUNCTION_TAG,1);
            _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,1,0);
            chartInstance.State.is_c1_s1_gear_state = IN_c1_s3_fourth;
            _SFD_CS_CALL(STATE_ACTIVE_TAG,1);
            _SFD_CS_CALL(STATE_BEFORE_ENTRY_ACTION_TAG,1);
            _SFD_DATA_RANGE_CHECK_MIN_MAX(OutputData_c1_d5_gear = (real_T
              )4,1,1.0,4.0);
            _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,1,1);
            _SFD_CS_CALL(STATE_AFTER_ENTRY_ACTION_TAG,1);
            _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,1);
          }
        } else {
          _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,7);
          if(CV_TRANSITION_EVAL(7,_SFD_CCP_CALL(7,0,(_sfEvent_ ==
              event_c1_e8_DOWN)))) {
            _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,7);
            _SFD_CT_CALL(TRANSITION_WHEN_VALID_TAG,7);
            _SFD_CT_CALL(TRANSITION_INACTIVE_TAG,7);
            exit_atomic_c1_s5_third();
            if(chartInstance.State.is_c1_s1_gear_state == IN_NO_ACTIVE_CHILD) {
              enter_atomic_c1_s4_second();
            }
          }
        }
        _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,4);
        break;
        default:;
        CV_STATE_EVAL(7,0,0);
      }
    }
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,7);
  }
}

static void enter_atomic_c1_s2_first(void)
{

  {
    _SFD_CS_CALL(STATE_ENTER_ENTRY_FUNCTION_TAG,0);
    _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,0,0);
    if(chartInstance.State.is_c1_s1_gear_state != IN_c1_s2_first) {
      chartInstance.State.is_c1_s1_gear_state = IN_c1_s2_first;
      _SFD_CS_CALL(STATE_ACTIVE_TAG,0);
      _SFD_CS_CALL(STATE_BEFORE_ENTRY_ACTION_TAG,0);
      _SFD_DATA_RANGE_CHECK_MIN_MAX(OutputData_c1_d5_gear = (real_T
        )1,1,1.0,4.0);
      _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,0,1);
      _SFD_CS_CALL(STATE_AFTER_ENTRY_ACTION_TAG,0);
    }
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,0);
  }
}

static void enter_atomic_c1_s4_second(void)
{

  {
    _SFD_CS_CALL(STATE_ENTER_ENTRY_FUNCTION_TAG,2);
    _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,2,0);
    if(chartInstance.State.is_c1_s1_gear_state != IN_c1_s4_second) {
      chartInstance.State.is_c1_s1_gear_state = IN_c1_s4_second;
      _SFD_CS_CALL(STATE_ACTIVE_TAG,2);
      _SFD_CS_CALL(STATE_BEFORE_ENTRY_ACTION_TAG,2);
      _SFD_DATA_RANGE_CHECK_MIN_MAX(OutputData_c1_d5_gear = (real_T
        )2,1,1.0,4.0);
      _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,2,1);
      _SFD_CS_CALL(STATE_AFTER_ENTRY_ACTION_TAG,2);
    }
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,2);
  }
}

static void exit_atomic_c1_s4_second(void)
{

  {
    _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,2);
    _SFD_CCS_CALL(STATE_EXIT_COVERAGE_TAG,2,0);
    chartInstance.State.is_c1_s1_gear_state = IN_NO_ACTIVE_CHILD;
    _SFD_CS_CALL(STATE_INACTIVE_TAG,2);
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,2);
  }
}

static void enter_atomic_c1_s5_third(void)
{

  {
    _SFD_CS_CALL(STATE_ENTER_ENTRY_FUNCTION_TAG,4);
    _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,4,0);
    if(chartInstance.State.is_c1_s1_gear_state != IN_c1_s5_third) {
      chartInstance.State.is_c1_s1_gear_state = IN_c1_s5_third;
      _SFD_CS_CALL(STATE_ACTIVE_TAG,4);
      _SFD_CS_CALL(STATE_BEFORE_ENTRY_ACTION_TAG,4);
      _SFD_DATA_RANGE_CHECK_MIN_MAX(OutputData_c1_d5_gear = (real_T
        )3,1,1.0,4.0);
      _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,4,1);
      _SFD_CS_CALL(STATE_AFTER_ENTRY_ACTION_TAG,4);
    }
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,4);
  }
}

static void exit_atomic_c1_s5_third(void)
{

  {
    _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,4);
    _SFD_CCS_CALL(STATE_EXIT_COVERAGE_TAG,4,0);
    chartInstance.State.is_c1_s1_gear_state = IN_NO_ACTIVE_CHILD;
    _SFD_CS_CALL(STATE_INACTIVE_TAG,4);
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,4);
  }
}

static void exit_atomic_c1_s7_downshifting(void)
{

  {
    _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,6);
    _SFD_CCS_CALL(STATE_EXIT_COVERAGE_TAG,6,0);
    chartInstance.State.is_c1_s6_selection_state = IN_NO_ACTIVE_CHILD;
    _SFD_CS_CALL(STATE_INACTIVE_TAG,6);
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,6);
  }
}

static void enter_atomic_c1_s8_steady_state(void)
{

  {
    _SFD_CS_CALL(STATE_ENTER_ENTRY_FUNCTION_TAG,5);
    _SFD_CCS_CALL(STATE_ENTRY_COVERAGE_TAG,5,0);
    chartInstance.State.is_c1_s6_selection_state = IN_c1_s8_steady_state;
    _SFD_CS_CALL(STATE_ACTIVE_TAG,5);
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,5);
  }
}

static void exit_atomic_c1_s8_steady_state(void)
{

  {
    _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,5);
    _SFD_CCS_CALL(STATE_EXIT_COVERAGE_TAG,5,0);
    chartInstance.State.is_c1_s6_selection_state = IN_NO_ACTIVE_CHILD;
    _SFD_CS_CALL(STATE_INACTIVE_TAG,5);
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,5);
  }
}

static void exit_atomic_c1_s9_upshifting(void)
{

  {
    _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,8);
    _SFD_CCS_CALL(STATE_EXIT_COVERAGE_TAG,8,0);
    chartInstance.State.is_c1_s6_selection_state = IN_NO_ACTIVE_CHILD;
    _SFD_CS_CALL(STATE_INACTIVE_TAG,8);
    _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,8);
  }
}

void sf_li3_5_sfun_c1_get_check_sum(mxArray *plhs[])
{
  ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3636991536U);
  ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3421325699U);
  ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3041845187U);
  ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(2796283099U);
}
/*
 * Chart initialization function
 */

static void initialize_li3_5_sfun_c1( SimStruct *S)
{
  {
    sf_set_error_prefix_string("Stateflow Runtime Error (chart): Error evaluating chart workspace data 'TWAIT'.\n");
    c1_d6_TWAIT =
      (uint8_T)ml_get_typed_scalar("TWAIT",CALLER_WORKSPACE,SF_UINT8,0);
    sf_set_error_prefix_string("Stateflow Runtime Error (chart): ");
  }

  /* Initializing chart output data */
  OutputData_c1_d5_gear = (uint8_T)0;
  /* Initialize chart's state configuration */
  memset((void*)&(chartInstance.State),0,sizeof(chartInstance.State));

  /* Initialize all chart output event variables to zero */

  {
    if(ssIsFirstInitCond(S)) {
      /* do this only if simulation is starting */
      {
        unsigned int chartAlreadyPresent;
        chartAlreadyPresent = sf_debug_initialize_chart(_li3_5MachineNumber_,
          1,
          9,
          14,
          6,
          3,
          0,
          0,
          0,
          &(chartInstance.chartNumber),
          &(chartInstance.instanceNumber),
          ssGetPath((SimStruct *)S),
          (void *)S);
        if(chartAlreadyPresent==0) {
          /* this is the first instance */
          sf_debug_set_chart_disable_implicit_casting(_li3_5MachineNumber_,chartInstance.chartNumber,0);
          sf_debug_set_chart_event_thresholds(_li3_5MachineNumber_,
           chartInstance.chartNumber,
           3,
           3,
           3);

          _SFD_SET_DATA_PROPS(3,1,1,0,SF_DOUBLE,0,NULL);
          _SFD_SET_DATA_PROPS(0,1,1,0,SF_DOUBLE,0,NULL);
          _SFD_SET_DATA_PROPS(1,2,0,1,SF_UINT8,0,NULL);
          _SFD_SET_DATA_PROPS(2,7,0,0,SF_UINT8,0,NULL);
          _SFD_SET_DATA_PROPS(4,1,1,0,SF_DOUBLE,0,NULL);
          _SFD_SET_DATA_PROPS(5,1,1,0,SF_DOUBLE,0,NULL);
          _SFD_EVENT_SCOPE(1,2);
          _SFD_EVENT_SCOPE(2,0);
          _SFD_EVENT_SCOPE(0,0);
          _SFD_STATE_INFO(7,0,1);
          _SFD_STATE_INFO(0,0,0);
          _SFD_STATE_INFO(1,0,0);
          _SFD_STATE_INFO(2,0,0);
          _SFD_STATE_INFO(4,0,0);
          _SFD_STATE_INFO(3,0,1);
          _SFD_STATE_INFO(6,0,0);
          _SFD_STATE_INFO(5,0,0);
          _SFD_STATE_INFO(8,0,0);
          _SFD_CH_SUBSTATE_COUNT(2);
          _SFD_CH_SUBSTATE_DECOMP(1);
          _SFD_CH_SUBSTATE_INDEX(0,7);
          _SFD_CH_SUBSTATE_INDEX(1,3);
          _SFD_ST_SUBSTATE_COUNT(7,4);
          _SFD_ST_SUBSTATE_INDEX(7,0,0);
          _SFD_ST_SUBSTATE_INDEX(7,1,1);
          _SFD_ST_SUBSTATE_INDEX(7,2,2);
          _SFD_ST_SUBSTATE_INDEX(7,3,4);
          _SFD_ST_SUBSTATE_COUNT(0,0);
          _SFD_ST_SUBSTATE_COUNT(1,0);
          _SFD_ST_SUBSTATE_COUNT(2,0);
          _SFD_ST_SUBSTATE_COUNT(4,0);
          _SFD_ST_SUBSTATE_COUNT(3,3);
          _SFD_ST_SUBSTATE_INDEX(3,0,6);
          _SFD_ST_SUBSTATE_INDEX(3,1,5);
          _SFD_ST_SUBSTATE_INDEX(3,2,8);
          _SFD_ST_SUBSTATE_COUNT(6,0);
          _SFD_ST_SUBSTATE_COUNT(5,0);
          _SFD_ST_SUBSTATE_COUNT(8,0);
        }
        _SFD_CV_INIT_CHART(2,0,0,0);
        _SFD_CV_INIT_STATE(7,4,1,0,0);
        _SFD_CV_INIT_STATE(0,0,0,0,0);
        _SFD_CV_INIT_STATE(1,0,0,0,0);
        _SFD_CV_INIT_STATE(2,0,0,0,0);
        _SFD_CV_INIT_STATE(4,0,0,0,0);
        _SFD_CV_INIT_STATE(3,3,1,0,0);
        _SFD_CV_INIT_STATE(6,0,0,0,0);
        _SFD_CV_INIT_STATE(5,0,0,0,0);
        _SFD_CV_INIT_STATE(8,0,0,0,0);

        {
          static unsigned int sStartGuardMap[] = {0};
          static unsigned int sEndGuardMap[] = {2};
          static int sPostFixPredicateTree[] = {0};
          _SFD_CV_INIT_TRANS(5,1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),1,&(sPostFixPredicateTree[0]));
        }
        {
          static unsigned int sStartGuardMap[] = {0};
          static unsigned int sEndGuardMap[] = {2};
          static int sPostFixPredicateTree[] = {0};
          _SFD_CV_INIT_TRANS(10,1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),1,&(sPostFixPredicateTree[0]));
        }
        {
          static unsigned int sStartGuardMap[] = {0};
          static unsigned int sEndGuardMap[] = {2};
          static int sPostFixPredicateTree[] = {0};
          _SFD_CV_INIT_TRANS(2,1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),1,&(sPostFixPredicateTree[0]));
        }
        _SFD_CV_INIT_TRANS(3,0,NULL,NULL,0,NULL);

        {
          static unsigned int sStartGuardMap[] = {0};
          static unsigned int sEndGuardMap[] = {4};
          static int sPostFixPredicateTree[] = {0};
          _SFD_CV_INIT_TRANS(9,1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),1,&(sPostFixPredicateTree[0]));
        }
        {
          static unsigned int sStartGuardMap[] = {0};
          static unsigned int sEndGuardMap[] = {4};
          static int sPostFixPredicateTree[] = {0};
          _SFD_CV_INIT_TRANS(7,1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),1,&(sPostFixPredicateTree[0]));
        }
        {
          static unsigned int sStartGuardMap[] = {0};
          static unsigned int sEndGuardMap[] = {4};
          static int sPostFixPredicateTree[] = {0};
          _SFD_CV_INIT_TRANS(11,1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),1,&(sPostFixPredicateTree[0]));
        }
        _SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL);

        {
          static unsigned int sStartGuardMap[] = {1};
          static unsigned int sEndGuardMap[] = {14};
          static int sPostFixPredicateTree[] = {0};
          _SFD_CV_INIT_TRANS(1,1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),1,&(sPostFixPredicateTree[0]));
        }
        {
          static unsigned int sStartGuardMap[] = {1};
          static unsigned int sEndGuardMap[] = {16};
          static int sPostFixPredicateTree[] = {0};
          _SFD_CV_INIT_TRANS(13,1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),1,&(sPostFixPredicateTree[0]));
        }
        {
          static unsigned int sStartGuardMap[] = {1};
          static unsigned int sEndGuardMap[] = {14};
          static int sPostFixPredicateTree[] = {0};
          _SFD_CV_INIT_TRANS(6,1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),1,&(sPostFixPredicateTree[0]));
        }
        {
          static unsigned int sStartGuardMap[] = {1};
          static unsigned int sEndGuardMap[] = {16};
          static int sPostFixPredicateTree[] = {0};
          _SFD_CV_INIT_TRANS(8,1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),1,&(sPostFixPredicateTree[0]));
        }
        {
          static unsigned int sStartGuardMap[] = {12,0,19};
          static unsigned int sEndGuardMap[] = {16,17,35};
          static int sPostFixPredicateTree[] = {0,1,-3,2,-3};
          _SFD_CV_INIT_TRANS(4,3,&(sStartGuardMap[0]),&(sEndGuardMap[0]),5,&(sPostFixPredicateTree[0]));
        }
        {
          static unsigned int sStartGuardMap[] = {12,0,19};
          static unsigned int sEndGuardMap[] = {16,17,33};
          static int sPostFixPredicateTree[] = {0,1,-3,2,-3};
          _SFD_CV_INIT_TRANS(12,3,&(sStartGuardMap[0]),&(sEndGuardMap[0]),5,&(sPostFixPredicateTree[0]));
        }
        _SFD_STATE_COV_WTS(7,1,1,1);
        if(chartAlreadyPresent==0)
        {
          static unsigned int sStartEntryMap[] = {0};
          static unsigned int sEndEntryMap[] = {0};
          static unsigned int sStartDuringMap[] = {0};
          static unsigned int sEndDuringMap[] = {0};
          static unsigned int sStartExitMap[] = {0};
          static unsigned int sEndExitMap[] = {0};

          _SFD_STATE_COV_MAPS(7,
           1,&(sStartEntryMap[0]),&(sEndEntryMap[0]),
           1,&(sStartDuringMap[0]),&(sEndDuringMap[0]),
           1,&(sStartExitMap[0]),&(sEndExitMap[0]));
        }
        _SFD_STATE_COV_WTS(0,2,1,1);
        if(chartAlreadyPresent==0)
        {
          static unsigned int sStartEntryMap[] = {0,13};
          static unsigned int sEndEntryMap[] = {0,22};
          static unsigned int sStartDuringMap[] = {0};
          static unsigned int sEndDuringMap[] = {0};

⌨️ 快捷键说明

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