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

📄 c1_stateflow_heating_controller.c

📁 m files for SIAM book, Numerical Computing with MATLAB
💻 C
📖 第 1 页 / 共 5 页
字号:
/* Include files */
#include "Stateflow_Heating_Controller_sfun.h"
#include "c1_Stateflow_Heating_Controller.h"
#define CHARTINSTANCE_CHARTNUMBER       (chartInstance.chartNumber)
#define CHARTINSTANCE_INSTANCENUMBER    (chartInstance.instanceNumber)
#include "Stateflow_Heating_Controller_sfun_debug_macros.h"

/* Type Definitions */

/* Named Constants */
#define c1_event_tic                    (4U)
#define c1_event_temperature            (0U)
#define c1_event_time                   (1U)
#define c1_event_next                   (3U)
#define c1_event_run                    (2U)
#define c1_IN_NO_ACTIVE_CHILD           (0)
#define c1_IN_Start                     (2)
#define c1_IN_Output                    (1)
#define c1_IN_Output_Time               (6)
#define c1_b_IN_Start                   (9)
#define c1_IN_Minutes2                  (5)
#define c1_IN_Hour1                     (2)
#define c1_IN_Hour2                     (3)
#define c1_IN_Minutes1                  (4)
#define c1_IN_Tens1                     (11)
#define c1_IN_Tens2                     (12)
#define c1_IN_Temperature               (10)
#define c1_IN_SetTemp                   (7)
#define c1_IN_SetTime                   (8)
#define c1_IN_Wait1                     (13)
#define c1_IN_Wait2                     (14)
#define c1_IN_Wait3                     (15)
#define c1_IN_Wait4                     (16)
#define c1_IN_AMPM                      (1)

/* Variable Declarations */

/* Variable Definitions */
static SFc1_Stateflow_Heating_ControllerInstanceStruct chartInstance;

/* Function Declarations */
static void initialize_c1_Stateflow_Heating_Controller(void);
static void initialize_params_c1_Stateflow_Heating_Controller(void);
static void enable_c1_Stateflow_Heating_Controller(void);
static void disable_c1_Stateflow_Heating_Controller(void);
static void finalize_c1_Stateflow_Heating_Controller(void);
static void sf_c1_Stateflow_Heating_Controller(void);
static void c1_c1_Stateflow_Heating_Controller(void);
static void c1_Start(void);
static void c1_Process_Buttons(void);
static void c1_Tens1(void);
static void c1_Tens2(void);
static void c1_Temperature(void);
static void c1_SetTime(void);
static void c1_Wait1(void);
static void c1_Wait2(void);
static void c1_Wait3(void);
static void c1_Wait4(void);
static void init_script_number_translation(uint32_T c1_machineNumber, uint32_T
 c1_chartNumber);
static void init_test_point_addr_map(void);
static void **get_test_point_address_map(void);
static rtwCAPI_ModelMappingInfo *get_test_point_mapping_info(void);
static void init_dsm_address_info(void);

/* Function Definitions */
static void initialize_c1_Stateflow_Heating_Controller(void)
{
  int32_T c1_i0;
  int32_T c1_i1;
  real_T *c1_SetClock;
  real_T *c1_Time;
  real_T *c1_Reset;
  real_T (*c1_SetTemps)[2];
  real_T (*c1_Command)[2];
  c1_Time = (real_T *)ssGetOutputPortSignal(chartInstance.S, 2);
  c1_SetClock = (real_T *)ssGetOutputPortSignal(chartInstance.S, 1);
  c1_SetTemps = (real_T (*)[2])ssGetOutputPortSignal(chartInstance.S, 4);
  c1_Command = (real_T (*)[2])ssGetOutputPortSignal(chartInstance.S, 5);
  c1_Reset = (real_T *)ssGetOutputPortSignal(chartInstance.S, 3);
  _sfTime_ = (real_T)ssGetT(chartInstance.S);
  chartInstance.c1_is_active_Interactions = 0U;
  chartInstance.c1_is_Interactions = 0U;
  chartInstance.c1_tp_Interactions = 0U;
  chartInstance.c1_tp_Output = 0U;
  chartInstance.c1_tp_Start = 0U;
  chartInstance.c1_is_active_Process_Buttons = 0U;
  chartInstance.c1_is_Process_Buttons = 0U;
  chartInstance.c1_tp_Process_Buttons = 0U;
  chartInstance.c1_tp_AMPM = 0U;
  chartInstance.c1_tp_Hour1 = 0U;
  chartInstance.c1_tp_Hour2 = 0U;
  chartInstance.c1_tp_Minutes1 = 0U;
  chartInstance.c1_tp_Minutes2 = 0U;
  chartInstance.c1_tp_Output_Time = 0U;
  chartInstance.c1_tp_SetTemp = 0U;
  chartInstance.c1_tp_SetTime = 0U;
  chartInstance.c1_b_tp_Start = 0U;
  chartInstance.c1_tp_Temperature = 0U;
  chartInstance.c1_tp_Tens1 = 0U;
  chartInstance.c1_tp_Tens2 = 0U;
  chartInstance.c1_tp_Wait1 = 0U;
  chartInstance.c1_tp_Wait2 = 0U;
  chartInstance.c1_tp_Wait3 = 0U;
  chartInstance.c1_tp_Wait4 = 0U;
  chartInstance.c1_is_active_c1_Stateflow_Heating_Controller = 0U;
  chartInstance.c1_m1 = 0.0;
  chartInstance.c1_m2 = 0.0;
  chartInstance.c1_h1 = 0.0;
  chartInstance.c1_h2 = 0.0;
  chartInstance.c1_d = 1.0;
  chartInstance.c1_data = 0.0;
  chartInstance.c1_Zone = 1.0;
  if(!((boolean_T)cdrGetOutputPortReusable(chartInstance.S, 1) != 0)) {
    *c1_SetClock = 0.0;
  }
  if(!((boolean_T)cdrGetOutputPortReusable(chartInstance.S, 2) != 0)) {
    *c1_Time = 1.0;
  }
  if(!((boolean_T)cdrGetOutputPortReusable(chartInstance.S, 3) != 0)) {
    *c1_Reset = 0.0;
  }
  if(!((boolean_T)cdrGetOutputPortReusable(chartInstance.S, 4) != 0)) {
    for(c1_i0 = 0; c1_i0 < 2; c1_i0 = c1_i0 + 1) {
      (*c1_SetTemps)[c1_i0] = 70.0;
    }
  }
  if(!((boolean_T)cdrGetOutputPortReusable(chartInstance.S, 5) != 0)) {
    for(c1_i1 = 0; c1_i1 < 2; c1_i1 = c1_i1 + 1) {
      (*c1_Command)[c1_i1] = 0.0;
    }
  }
}

static void initialize_params_c1_Stateflow_Heating_Controller(void)
{
}

static void enable_c1_Stateflow_Heating_Controller(void)
{
}

static void disable_c1_Stateflow_Heating_Controller(void)
{
}

static void finalize_c1_Stateflow_Heating_Controller(void)
{
}

static void sf_c1_Stateflow_Heating_Controller(void)
{
  int32_T c1_i2;
  int32_T c1_i3;
  int32_T c1_i4;
  uint8_T c1_previousEvent;
  uint8_T c1_b_previousEvent;
  real_T *c1_SetClock;
  real_T *c1_Time;
  real_T *c1_Reset;
  real_T *c1_Setting;
  real_T *c1_PushButton;
  real_T *c1_Enter;
  real_T (*c1_SetTemps)[2];
  real32_T (*c1_MeasuredTemps)[2];
  real_T (*c1_Command)[2];
  int8_T *c1_tic;
  int8_T *c1_next;
  c1_tic = (int8_T *)*(ssGetInputPortSignalPtrs(chartInstance.S, 4) + 0);
  c1_next = (int8_T *)*(ssGetInputPortSignalPtrs(chartInstance.S, 4) + 1);
  c1_MeasuredTemps = (real32_T (*)[2])ssGetInputPortSignal(chartInstance.S, 3);
  c1_Time = (real_T *)ssGetOutputPortSignal(chartInstance.S, 2);
  c1_PushButton = (real_T *)ssGetInputPortSignal(chartInstance.S, 1);
  c1_Setting = (real_T *)ssGetInputPortSignal(chartInstance.S, 0);
  c1_Enter = (real_T *)ssGetInputPortSignal(chartInstance.S, 2);
  c1_SetClock = (real_T *)ssGetOutputPortSignal(chartInstance.S, 1);
  c1_SetTemps = (real_T (*)[2])ssGetOutputPortSignal(chartInstance.S, 4);
  c1_Command = (real_T (*)[2])ssGetOutputPortSignal(chartInstance.S, 5);
  c1_Reset = (real_T *)ssGetOutputPortSignal(chartInstance.S, 3);
  _sfTime_ = (real_T)ssGetT(chartInstance.S);
  _SFD_DATA_RANGE_CHECK(*c1_SetClock, 0U);
  _SFD_DATA_RANGE_CHECK(*c1_Time, 2U);
  _SFD_DATA_RANGE_CHECK(*c1_Reset, 14U);
  for(c1_i2 = 0; c1_i2 < 2; c1_i2 = c1_i2 + 1) {
    _SFD_DATA_RANGE_CHECK((*c1_SetTemps)[c1_i2], 13U);
  }
  _SFD_DATA_RANGE_CHECK(*c1_Setting, 7U);
  _SFD_DATA_RANGE_CHECK(*c1_PushButton, 5U);
  _SFD_DATA_RANGE_CHECK(*c1_Enter, 9U);
  for(c1_i3 = 0; c1_i3 < 2; c1_i3 = c1_i3 + 1) {
    _SFD_DATA_RANGE_CHECK((real_T)(*c1_MeasuredTemps)[c1_i3], 4U);
  }
  for(c1_i4 = 0; c1_i4 < 2; c1_i4 = c1_i4 + 1) {
    _SFD_DATA_RANGE_CHECK((*c1_Command)[c1_i4], 3U);
  }
  _SFD_DATA_RANGE_CHECK(chartInstance.c1_m1, 11U);
  _SFD_DATA_RANGE_CHECK(chartInstance.c1_m2, 15U);
  _SFD_DATA_RANGE_CHECK(chartInstance.c1_h1, 1U);
  _SFD_DATA_RANGE_CHECK(chartInstance.c1_h2, 10U);
  _SFD_DATA_RANGE_CHECK(chartInstance.c1_d, 12U);
  _SFD_DATA_RANGE_CHECK(chartInstance.c1_data, 6U);
  _SFD_DATA_RANGE_CHECK(chartInstance.c1_Zone, 8U);
  if(*c1_tic == 1) {
    c1_previousEvent = _sfEvent_;
    _sfEvent_ = c1_event_tic;
    _SFD_CE_CALL(EVENT_BEFORE_BROADCAST_TAG,c1_event_tic);
    c1_c1_Stateflow_Heating_Controller();
    _SFD_CE_CALL(EVENT_AFTER_BROADCAST_TAG,c1_event_tic);
    _sfEvent_ = c1_previousEvent;
  }
  if(*c1_next == 1) {
    c1_b_previousEvent = _sfEvent_;
    _sfEvent_ = c1_event_next;
    _SFD_CE_CALL(EVENT_BEFORE_BROADCAST_TAG,c1_event_next);
    c1_c1_Stateflow_Heating_Controller();
    _SFD_CE_CALL(EVENT_AFTER_BROADCAST_TAG,c1_event_next);
    _sfEvent_ = c1_b_previousEvent;
  }
  sf_debug_check_for_state_inconsistency(_Stateflow_Heating_ControllerMachineNumber_,
   chartInstance.chartNumber, chartInstance.
   instanceNumber);
}

static void c1_c1_Stateflow_Heating_Controller(void)
{
  uint8_T c1_previousEvent;
  int32_T c1_i5;
  int32_T c1_i6;
  uint8_T c1_b_previousEvent;
  int32_T c1_i7;
  int32_T c1_i8;
  uint8_T c1_c_previousEvent;
  int32_T c1_i9;
  int32_T c1_i10;
  real_T *c1_SetClock;
  real_T *c1_Setting;
  real_T *c1_Reset;
  real_T (*c1_Command)[2];
  real_T (*c1_SetTemps)[2];
  real32_T (*c1_MeasuredTemps)[2];
  c1_MeasuredTemps = (real32_T (*)[2])ssGetInputPortSignal(chartInstance.S, 3);
  c1_Setting = (real_T *)ssGetInputPortSignal(chartInstance.S, 0);
  c1_SetClock = (real_T *)ssGetOutputPortSignal(chartInstance.S, 1);
  c1_SetTemps = (real_T (*)[2])ssGetOutputPortSignal(chartInstance.S, 4);
  c1_Command = (real_T (*)[2])ssGetOutputPortSignal(chartInstance.S, 5);
  c1_Reset = (real_T *)ssGetOutputPortSignal(chartInstance.S, 3);
  _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG,0);
  if(_sfEvent_ == c1_event_next) {
    if(chartInstance.c1_temporalCounter_i1 < 63) {
      chartInstance.c1_temporalCounter_i1 =
        (uint8_T)(chartInstance.c1_temporalCounter_i1 + 1);
    }
  }
  if(chartInstance.c1_is_active_c1_Stateflow_Heating_Controller == 0) {
    _SFD_CC_CALL(CHART_ENTER_ENTRY_FUNCTION_TAG,0);
    chartInstance.c1_is_active_c1_Stateflow_Heating_Controller = 1U;
    _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG,0);
    chartInstance.c1_is_active_Interactions = 1U;
    _SFD_CS_CALL(STATE_ACTIVE_TAG,17);
    chartInstance.c1_tp_Interactions = 1U;
    _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,20);
    _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,20);
    chartInstance.c1_is_Interactions = (uint8_T)c1_IN_Start;
    _SFD_CS_CALL(STATE_ACTIVE_TAG,1);
    chartInstance.c1_tp_Start = 1U;
    chartInstance.c1_is_active_Process_Buttons = 1U;
    _SFD_CS_CALL(STATE_ACTIVE_TAG,5);
    chartInstance.c1_tp_Process_Buttons = 1U;
    _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,25);
    _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,25);
    if(chartInstance.c1_is_Process_Buttons != 9) {
      chartInstance.c1_is_Process_Buttons = (uint8_T)c1_b_IN_Start;
      _SFD_CS_CALL(STATE_ACTIVE_TAG,18);
      chartInstance.c1_b_tp_Start = 1U;
      *c1_SetClock = 0.0;
      _SFD_DATA_RANGE_CHECK(*c1_SetClock, 0U);
    }
  } else {
    _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,17);
    if(chartInstance.c1_is_active_Interactions != 0) {
      switch(chartInstance.c1_is_Interactions) {
       case c1_IN_Output:
        CV_STATE_EVAL(17,0,1);
        _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,13);
        _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,4);
        _SFD_CT_CALL(TRANSITION_ACTIVE_TAG,4);
        _SFD_CS_CALL(STATE_ENTER_EXIT_FUNCTION_TAG,13);
        chartInstance.c1_tp_Output = 0U;
        _SFD_CS_CALL(STATE_INACTIVE_TAG,13);
        _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,13);
        chartInstance.c1_is_Interactions = (uint8_T)c1_IN_Start;
        _SFD_CS_CALL(STATE_ACTIVE_TAG,1);
        chartInstance.c1_tp_Start = 1U;
        _SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,13);
        break;
       case c1_IN_Start:
        CV_STATE_EVAL(17,0,2);
        _SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,1);
        if(chartInstance.c1_is_Interactions == 2) {
          _SFD_CT_CALL(TRANSITION_BEFORE_PROCESSING_TAG,32);
          if(CV_TRANSITION_EVAL(32U, (_SFD_CCP_CALL(32,0,((_sfEvent_ ==
                c1_event_tic)!=0)) != 0) && (_SFD_CCP_CALL(32,1,((*c1_Setting ==
                1.0)!=0))
             != 0)) != 0U != 0) {
            if(sf_debug_transition_conflict_check_enabled()) {
              unsigned int transitionList[3];
              unsigned int numTransitions=1;
              transitionList[0] = 32;
              sf_debug_transition_conflict_check_begin();
              if((_sfEvent_ == c1_event_tic) && (*c1_Setting == 3.0)) {
                transitionList[numTransitions] = 26;
                numTransitions++;
              }

⌨️ 快捷键说明

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