📄 auto_netcon.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 + -