📄 c1_servo_demo.c
字号:
_SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,1);
break;
case c1_IN_solenoid_off:
CV_CHART_EVAL(0,0,2);
_SFD_CS_CALL(STATE_ENTER_DURING_FUNCTION_TAG,0);
if(CV_TRANSITION_EVAL(7U, (int32_T)_SFD_CCP_CALL(7,0,(_sfTime_ >=
chartInstance.c1_ton))) != 0) {
_SFD_CT_CALL(TRANSITION_ACTIVE_TAG,7);
_SFD_CT_CALL(TRANSITION_ACTIVE_TAG,0);
chartInstance.c1_toff = chartInstance.c1_ton + *c1_duty_cycle() *
chartInstance.c1_Tpwm / 100.0;
_SFD_DATA_RANGE_CHECK(chartInstance.c1_toff, 7U);
chartInstance.c1_tp_solenoid_off = 0;
chartInstance.c1_is_c1_servo_demo = (uint8_T)c1_IN_NO_ACTIVE_CHILD;
_SFD_CS_CALL(STATE_INACTIVE_TAG,0);
chartInstance.c1_is_c1_servo_demo = (uint8_T)c1_IN_energize_solenoid;
_SFD_CS_CALL(STATE_ACTIVE_TAG,1);
chartInstance.c1_tp_energize_solenoid = 1;
_SFD_CT_CALL(TRANSITION_ACTIVE_TAG,3);
chartInstance.c1_is_energize_solenoid = (uint8_T)c1_IN_pull_in_current;
_SFD_CS_CALL(STATE_ACTIVE_TAG,2);
chartInstance.c1_tp_pull_in_current = 1;
*c1_v() = chartInstance.c1_Vs;
_SFD_DATA_RANGE_CHECK(*c1_v(), 6U);
} else {
*c1_v() = (real_T)c1__s32_uminus__(*c1_i() > 0.0) * chartInstance.c1_Vz;
_SFD_DATA_RANGE_CHECK(*c1_v(), 6U);
}
_SFD_CS_CALL(EXIT_OUT_OF_FUNCTION_TAG,0);
break;
default:
CV_CHART_EVAL(0,0,0);
break;
}
}
_SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG,0);
_sfEvent_ = c1_previousEvent;
}
static int32_T c1__s32_uminus__(int32_T c1_b)
{
if(c1_b < -2147483647) {
sf_debug_overflow_detection(0);
}
return -c1_b;
}
static real_T *c1_v(void)
{
return (real_T *)ssGetOutputPortSignal(chartInstance.S, 1);
}
static real_T *c1_duty_cycle(void)
{
return (real_T *)ssGetInputPortSignal(chartInstance.S, 0);
}
static real_T *c1_i(void)
{
return (real_T *)ssGetInputPortSignal(chartInstance.S, 1);
}
static void init_test_point_addr_map(void)
{
chartInstance.c1_testPointAddrMap[0] = &chartInstance.c1_ton;
chartInstance.c1_testPointAddrMap[1] = &chartInstance.c1_toff;
chartInstance.c1_testPointAddrMap[2] = &chartInstance.c1_tp_energize_solenoid;
chartInstance.c1_testPointAddrMap[3] = &chartInstance.c1_tp_pull_in_current;
chartInstance.c1_testPointAddrMap[4] =
&chartInstance.c1_tp_regulate_hold_current;
chartInstance.c1_testPointAddrMap[5] = &chartInstance.c1_tp_freewheel;
chartInstance.c1_testPointAddrMap[6] = &chartInstance.c1_tp_hold;
chartInstance.c1_testPointAddrMap[7] = &chartInstance.c1_tp_solenoid_off;
}
static void **get_test_point_address_map(void)
{
return &chartInstance.c1_testPointAddrMap[0];
}
static rtwCAPI_ModelMappingInfo *get_test_point_mapping_info(void)
{
return &chartInstance.c1_testPointMappingInfo;
}
/* SFunction Glue Code */
static void init_test_point_mapping_info(SimStruct *S);
void sf_c1_servo_demo_get_check_sum(mxArray *plhs[])
{
((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(2490158668U);
((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(1102783992U);
((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(2657140794U);
((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(3802580316U);
}
mxArray *sf_c1_servo_demo_get_autoinheritance_info(void)
{
const char *autoinheritanceInfoStructFieldNames[] =
{"checksum","inputTypes","outputSizes","outputTypes"};
mxArray *mxAutoinheritanceInfo = NULL;
mxArray *mxChecksum = NULL;
mxArray *mxInputTypes = NULL;
mxArray *mxOutputSizes = NULL;
mxArray *mxOutputTypes = NULL;
mxAutoinheritanceInfo = mxCreateStructMatrix(1,1,
sizeof(autoinheritanceInfoStructFieldNames)/sizeof(char *),
autoinheritanceInfoStructFieldNames);
mxChecksum = mxCreateDoubleMatrix(4,1,mxREAL);
((real_T *)mxGetPr((mxChecksum)))[0] = (real_T)(0U);
((real_T *)mxGetPr((mxChecksum)))[1] = (real_T)(0U);
((real_T *)mxGetPr((mxChecksum)))[2] = (real_T)(0U);
((real_T *)mxGetPr((mxChecksum)))[3] = (real_T)(0U);
mxInputTypes = mxCreateDoubleMatrix(1,2,mxREAL);
((real_T *)mxGetPr((mxInputTypes)))[0] = (real_T)(10U);
((real_T *)mxGetPr((mxInputTypes)))[1] = (real_T)(10U);
mxOutputSizes = mxCreateDoubleMatrix(2,1,mxREAL);
mxOutputTypes = mxCreateDoubleMatrix(1,1,mxREAL);
((real_T *)mxGetPr((mxOutputSizes)))[0] = (real_T)(1U);
((real_T *)mxGetPr((mxOutputSizes)))[1] = (real_T)(1U);
((real_T *)mxGetPr((mxOutputTypes)))[0] = (real_T)(10U);
mxSetFieldByNumber(mxAutoinheritanceInfo,0,0,mxChecksum);
mxSetFieldByNumber(mxAutoinheritanceInfo,0,1,mxInputTypes);
mxSetFieldByNumber(mxAutoinheritanceInfo,0,2,mxOutputSizes);
mxSetFieldByNumber(mxAutoinheritanceInfo,0,3,mxOutputTypes);
return(mxAutoinheritanceInfo);
}
static void chart_debug_initialization(SimStruct *S)
{
if(ssIsFirstInitCond(S)) {
/* do this only if simulation is starting */
if(!sim_mode_is_rtw_gen(S)) {
{
unsigned int chartAlreadyPresent;
chartAlreadyPresent =
sf_debug_initialize_chart(_servo_demoMachineNumber_,
1,
6,
9,
12,
0,
0,
0,
0,
&(chartInstance.chartNumber),
&(chartInstance.instanceNumber),
ssGetPath(S),
(void *)S);
if(chartAlreadyPresent==0) {
/* this is the first instance */
sf_debug_set_chart_disable_implicit_casting(_servo_demoMachineNumber_,chartInstance.chartNumber,0);
sf_debug_set_chart_event_thresholds(_servo_demoMachineNumber_,
chartInstance.chartNumber,
0,
0,
0);
_SFD_SET_DATA_PROPS(6,2,0,1,SF_DOUBLE,0,NULL,0,0.0,1.0,0,"v",0);
_SFD_SET_DATA_PROPS(0,1,1,0,SF_DOUBLE,0,NULL,0,0.0,1.0,0,"duty_cycle",0);
_SFD_SET_DATA_PROPS(3,0,0,0,SF_DOUBLE,0,NULL,0,0.0,1.0,0,"ton",0);
_SFD_SET_DATA_PROPS(7,0,0,0,SF_DOUBLE,0,NULL,0,0.0,1.0,0,"toff",0);
_SFD_SET_DATA_PROPS(5,10,0,0,SF_DOUBLE,0,NULL,0,0.0,1.0,0,"Tpwm",0);
_SFD_SET_DATA_PROPS(1,10,0,0,SF_DOUBLE,0,NULL,0,0.0,1.0,0,"Ipull",0);
_SFD_SET_DATA_PROPS(4,10,0,0,SF_DOUBLE,0,NULL,0,0.0,1.0,0,"Ihold",0);
_SFD_SET_DATA_PROPS(11,10,0,0,SF_DOUBLE,0,NULL,0,0.0,1.0,0,"deltai",0);
_SFD_SET_DATA_PROPS(8,10,0,0,SF_DOUBLE,0,NULL,0,0.0,1.0,0,"Vs",0);
_SFD_SET_DATA_PROPS(9,10,0,0,SF_DOUBLE,0,NULL,0,0.0,1.0,0,"Vz",0);
_SFD_SET_DATA_PROPS(2,10,0,0,SF_DOUBLE,0,NULL,0,0.0,1.0,0,"Vd",0);
_SFD_SET_DATA_PROPS(10,1,1,0,SF_DOUBLE,0,NULL,0,0.0,1.0,0,"i",0);
_SFD_STATE_INFO(1,0,0);
_SFD_STATE_INFO(2,0,0);
_SFD_STATE_INFO(5,0,0);
_SFD_STATE_INFO(4,0,0);
_SFD_STATE_INFO(3,0,0);
_SFD_STATE_INFO(0,0,0);
_SFD_CH_SUBSTATE_COUNT(2);
_SFD_CH_SUBSTATE_DECOMP(0);
_SFD_CH_SUBSTATE_INDEX(0,1);
_SFD_CH_SUBSTATE_INDEX(1,0);
_SFD_ST_SUBSTATE_COUNT(1,2);
_SFD_ST_SUBSTATE_INDEX(1,0,2);
_SFD_ST_SUBSTATE_INDEX(1,1,5);
_SFD_ST_SUBSTATE_COUNT(2,0);
_SFD_ST_SUBSTATE_COUNT(5,2);
_SFD_ST_SUBSTATE_INDEX(5,0,4);
_SFD_ST_SUBSTATE_INDEX(5,1,3);
_SFD_ST_SUBSTATE_COUNT(4,0);
_SFD_ST_SUBSTATE_COUNT(3,0);
_SFD_ST_SUBSTATE_COUNT(0,0);
}
_SFD_CV_INIT_CHART(2,1,0,0);
{
_SFD_CV_INIT_STATE(1,2,1,1,0,0,NULL,NULL);
}
{
_SFD_CV_INIT_STATE(2,0,0,0,0,0,NULL,NULL);
}
{
_SFD_CV_INIT_STATE(5,2,1,1,0,0,NULL,NULL);
}
{
_SFD_CV_INIT_STATE(4,0,0,0,0,0,NULL,NULL);
}
{
_SFD_CV_INIT_STATE(3,0,0,0,0,0,NULL,NULL);
}
{
_SFD_CV_INIT_STATE(0,0,0,0,0,0,NULL,NULL);
}
_SFD_CV_INIT_TRANS(4,0,NULL,NULL,0,NULL);
_SFD_CV_INIT_TRANS(3,0,NULL,NULL,0,NULL);
{
static unsigned int sStartGuardMap[] = {2};
static unsigned int sEndGuardMap[] = {12};
static int sPostFixPredicateTree[] = {0};
_SFD_CV_INIT_TRANS(6,1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),1,&(sPostFixPredicateTree[0]));
}
_SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL);
{
static unsigned int sStartGuardMap[] = {2};
static unsigned int sEndGuardMap[] = {10};
static int sPostFixPredicateTree[] = {0};
_SFD_CV_INIT_TRANS(7,1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),1,&(sPostFixPredicateTree[0]));
}
_SFD_CV_INIT_TRANS(8,0,NULL,NULL,0,NULL);
{
static unsigned int sStartGuardMap[] = {2};
static unsigned int sEndGuardMap[] = {10};
static int sPostFixPredicateTree[] = {0};
_SFD_CV_INIT_TRANS(2,1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),1,&(sPostFixPredicateTree[0]));
}
{
static unsigned int sStartGuardMap[] = {2};
static unsigned int sEndGuardMap[] = {21};
static int sPostFixPredicateTree[] = {0};
_SFD_CV_INIT_TRANS(1,1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),1,&(sPostFixPredicateTree[0]));
}
{
static unsigned int sStartGuardMap[] = {2};
static unsigned int sEndGuardMap[] = {21};
static int sPostFixPredicateTree[] = {0};
_SFD_CV_INIT_TRANS(5,1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),1,&(sPostFixPredicateTree[0]));
}
_SFD_TRANS_COV_WTS(4,0,0,1,0);
if(chartAlreadyPresent==0)
{
_SFD_TRANS_COV_MAPS(4,
0,NULL,NULL,
0,NULL,NULL,
1,NULL,NULL,
0,NULL,NULL);
}
_SFD_TRANS_COV_WTS(3,0,0,0,0);
if(chartAlreadyPresent==0)
{
_SFD_TRANS_COV_MAPS(3,
0,NULL,NULL,
0,NULL,NULL,
0,NULL,NULL,
0,NULL,NULL);
}
_SFD_TRANS_COV_WTS(6,0,1,0,0);
if(chartAlreadyPresent==0)
{
static unsigned int sStartGuardMap[] = {2};
static unsigned int sEndGuardMap[] = {12};
_SFD_TRANS_COV_MAPS(6,
0,NULL,NULL,
1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),
0,NULL,NULL,
0,NULL,NULL);
}
_SFD_TRANS_COV_WTS(0,0,0,1,0);
if(chartAlreadyPresent==0)
{
_SFD_TRANS_COV_MAPS(0,
0,NULL,NULL,
0,NULL,NULL,
1,NULL,NULL,
0,NULL,NULL);
}
_SFD_TRANS_COV_WTS(7,0,1,0,0);
if(chartAlreadyPresent==0)
{
static unsigned int sStartGuardMap[] = {2};
static unsigned int sEndGuardMap[] = {10};
_SFD_TRANS_COV_MAPS(7,
0,NULL,NULL,
1,&(sStartGuardMap[0]),&(sEndGuardMap[0]),
0,NULL,NULL,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -