📄 ps_flc3_controla0513_acc.c
字号:
/* Derivative Block: <S2>/Derivative1 */
{
real_T timeStampA =
PS_flc3_controlA0513_DWork->Derivative1_RWORK_b.TimeStampA;
real_T timeStampB =
PS_flc3_controlA0513_DWork->Derivative1_RWORK_b.TimeStampB;
real_T *lastBank =
&PS_flc3_controlA0513_DWork->Derivative1_RWORK_b.TimeStampA;
if (timeStampA != rtInf) {
if (timeStampB == rtInf) {
lastBank += 2;
} else if (timeStampA >= timeStampB) {
lastBank += 2;
}
}
*lastBank++ = ssGetTaskTime(S,tid);
*lastBank++ = PS_flc3_controlA0513_B->Sum3;
}
/* Derivative Block: <S3>/Derivative1 */
{
real_T timeStampA =
PS_flc3_controlA0513_DWork->Derivative1_RWORK_p.TimeStampA;
real_T timeStampB =
PS_flc3_controlA0513_DWork->Derivative1_RWORK_p.TimeStampB;
real_T *lastBank =
&PS_flc3_controlA0513_DWork->Derivative1_RWORK_p.TimeStampA;
if (timeStampA != rtInf) {
if (timeStampB == rtInf) {
lastBank += 2;
} else if (timeStampA >= timeStampB) {
lastBank += 2;
}
}
*lastBank++ = ssGetTaskTime(S,tid);
*lastBank++ = PS_flc3_controlA0513_B->Sum5;
}
/* Derivative Block: <S4>/Derivative1 */
{
real_T timeStampA =
PS_flc3_controlA0513_DWork->Derivative1_RWORK_ph.TimeStampA;
real_T timeStampB =
PS_flc3_controlA0513_DWork->Derivative1_RWORK_ph.TimeStampB;
real_T *lastBank =
&PS_flc3_controlA0513_DWork->Derivative1_RWORK_ph.TimeStampA;
if (timeStampA != rtInf) {
if (timeStampB == rtInf) {
lastBank += 2;
} else if (timeStampA >= timeStampB) {
lastBank += 2;
}
}
*lastBank++ = ssGetTaskTime(S,tid);
*lastBank++ = PS_flc3_controlA0513_B->Sum7;
}
/* Derivative Block: <S5>/Derivative1 */
{
real_T timeStampA =
PS_flc3_controlA0513_DWork->Derivative1_RWORK_pj.TimeStampA;
real_T timeStampB =
PS_flc3_controlA0513_DWork->Derivative1_RWORK_pj.TimeStampB;
real_T *lastBank =
&PS_flc3_controlA0513_DWork->Derivative1_RWORK_pj.TimeStampA;
if (timeStampA != rtInf) {
if (timeStampB == rtInf) {
lastBank += 2;
} else if (timeStampA >= timeStampB) {
lastBank += 2;
}
}
*lastBank++ = ssGetTaskTime(S,tid);
*lastBank++ = PS_flc3_controlA0513_B->Sum9;
}
/* Derivative Block: <S6>/Derivative */
{
real_T timeStampA = PS_flc3_controlA0513_DWork->Derivative_RWORK.TimeStampA;
real_T timeStampB = PS_flc3_controlA0513_DWork->Derivative_RWORK.TimeStampB;
real_T *lastBank = &PS_flc3_controlA0513_DWork->Derivative_RWORK.TimeStampA;
if (timeStampA != rtInf) {
if (timeStampB == rtInf) {
lastBank += 2;
} else if (timeStampA >= timeStampB) {
lastBank += 2;
}
}
*lastBank++ = ssGetTaskTime(S,tid);
*lastBank++ = PS_flc3_controlA0513_B->D;
}
/* Derivative Block: <S7>/Derivative */
{
real_T timeStampA =
PS_flc3_controlA0513_DWork->Derivative_RWORK_e.TimeStampA;
real_T timeStampB =
PS_flc3_controlA0513_DWork->Derivative_RWORK_e.TimeStampB;
real_T *lastBank =
&PS_flc3_controlA0513_DWork->Derivative_RWORK_e.TimeStampA;
if (timeStampA != rtInf) {
if (timeStampB == rtInf) {
lastBank += 2;
} else if (timeStampA >= timeStampB) {
lastBank += 2;
}
}
*lastBank++ = ssGetTaskTime(S,tid);
*lastBank++ = PS_flc3_controlA0513_B->D_f;
}
/* Derivative Block: <S8>/Derivative */
{
real_T timeStampA =
PS_flc3_controlA0513_DWork->Derivative_RWORK_k.TimeStampA;
real_T timeStampB =
PS_flc3_controlA0513_DWork->Derivative_RWORK_k.TimeStampB;
real_T *lastBank =
&PS_flc3_controlA0513_DWork->Derivative_RWORK_k.TimeStampA;
if (timeStampA != rtInf) {
if (timeStampB == rtInf) {
lastBank += 2;
} else if (timeStampA >= timeStampB) {
lastBank += 2;
}
}
*lastBank++ = ssGetTaskTime(S,tid);
*lastBank++ = PS_flc3_controlA0513_B->D_p;
}
/* Derivative Block: <S9>/Derivative */
{
real_T timeStampA =
PS_flc3_controlA0513_DWork->Derivative_RWORK_a.TimeStampA;
real_T timeStampB =
PS_flc3_controlA0513_DWork->Derivative_RWORK_a.TimeStampB;
real_T *lastBank =
&PS_flc3_controlA0513_DWork->Derivative_RWORK_a.TimeStampA;
if (timeStampA != rtInf) {
if (timeStampB == rtInf) {
lastBank += 2;
} else if (timeStampA >= timeStampB) {
lastBank += 2;
}
}
*lastBank++ = ssGetTaskTime(S,tid);
*lastBank++ = PS_flc3_controlA0513_B->D_l;
}
/* Derivative Block: <S10>/Derivative */
{
real_T timeStampA =
PS_flc3_controlA0513_DWork->Derivative_RWORK_p.TimeStampA;
real_T timeStampB =
PS_flc3_controlA0513_DWork->Derivative_RWORK_p.TimeStampB;
real_T *lastBank =
&PS_flc3_controlA0513_DWork->Derivative_RWORK_p.TimeStampA;
if (timeStampA != rtInf) {
if (timeStampB == rtInf) {
lastBank += 2;
} else if (timeStampA >= timeStampB) {
lastBank += 2;
}
}
*lastBank++ = ssGetTaskTime(S,tid);
*lastBank++ = PS_flc3_controlA0513_B->D_h;
}
/* TransportDelay Block: <Root>/Transport Delay */
{
real_T **uBuffer =
(real_T**)&PS_flc3_controlA0513_DWork->TransportDelay_PWORK.TUbufferPtrs[0];
real_T **tBuffer =
(real_T**)&PS_flc3_controlA0513_DWork->TransportDelay_PWORK.TUbufferPtrs[1];
real_T simTime = ssGetT(S);
PS_flc3_controlA0513_DWork->TransportDelay_IWORK.Head =
((PS_flc3_controlA0513_DWork->TransportDelay_IWORK.Head <
(PS_flc3_controlA0513_DWork->TransportDelay_IWORK.CircularBufSize-1)) ?
(PS_flc3_controlA0513_DWork->TransportDelay_IWORK.Head+1) : 0);
if (PS_flc3_controlA0513_DWork->TransportDelay_IWORK.Head ==
PS_flc3_controlA0513_DWork->TransportDelay_IWORK.Tail) {
if (!rt_TDelayUpdateTailOrGrowBuf(
&PS_flc3_controlA0513_DWork->TransportDelay_IWORK.CircularBufSize,
&PS_flc3_controlA0513_DWork->TransportDelay_IWORK.Tail,
&PS_flc3_controlA0513_DWork->TransportDelay_IWORK.Head,
&PS_flc3_controlA0513_DWork->TransportDelay_IWORK.Last, simTime -
PS_flc3_controlA0513_P->TransportDelay_Delay, tBuffer, uBuffer,
&PS_flc3_controlA0513_DWork->TransportDelay_IWORK.MaxNewBufSize)) {
ssSetErrorStatus(S, "tdelay memory allocation error");
}
}
(*tBuffer)[PS_flc3_controlA0513_DWork->TransportDelay_IWORK.Head] = simTime;
(*uBuffer)[PS_flc3_controlA0513_DWork->TransportDelay_IWORK.Head] =
PS_flc3_controlA0513_B->Sum_d;
}
}
/* Derivatives for root system: '<Root>' */
#define MDL_DERIVATIVES
static void mdlDerivatives(SimStruct *S)
{
/* simstruct variables */
PS_flc3_controlA0513_BlockIO *PS_flc3_controlA0513_B =
(PS_flc3_controlA0513_BlockIO *) _ssGetBlockIO(S);
PS_flc3_controlA0513_ContinuousStates *PS_flc3_controlA0513_X =
(PS_flc3_controlA0513_ContinuousStates*) ssGetContStates(S);
PS_flc3_controlA0513_StateDerivatives *PS_flc3_controlA0513_Xdot =
(PS_flc3_controlA0513_StateDerivatives*) ssGetdX(S);
PS_flc3_controlA0513_Parameters *PS_flc3_controlA0513_P =
(PS_flc3_controlA0513_Parameters *) ssGetDefaultParam(S);
/* TransferFcn Block: <Root>/Transfer Fcn2 */
{
PS_flc3_controlA0513_Xdot->TransferFcn2_CSTATE[0] =
PS_flc3_controlA0513_P->TransferFcn2_B*PS_flc3_controlA0513_B->Sum_h;
PS_flc3_controlA0513_Xdot->TransferFcn2_CSTATE[0] +=
(PS_flc3_controlA0513_P->TransferFcn2_A[0])*PS_flc3_controlA0513_X->TransferFcn2_CSTATE[0]
+
(PS_flc3_controlA0513_P->TransferFcn2_A[1])*PS_flc3_controlA0513_X->TransferFcn2_CSTATE[1]
+
(PS_flc3_controlA0513_P->TransferFcn2_A[2])*PS_flc3_controlA0513_X->TransferFcn2_CSTATE[2];
PS_flc3_controlA0513_Xdot->TransferFcn2_CSTATE[1] =
(PS_flc3_controlA0513_P->TransferFcn2_A[3])*PS_flc3_controlA0513_X->TransferFcn2_CSTATE[0];
PS_flc3_controlA0513_Xdot->TransferFcn2_CSTATE[2] =
(PS_flc3_controlA0513_P->TransferFcn2_A[4])*PS_flc3_controlA0513_X->TransferFcn2_CSTATE[1];
}
/* TransferFcn Block: <Root>/Transfer Fcn3 */
{
PS_flc3_controlA0513_Xdot->TransferFcn3_CSTATE[0] =
PS_flc3_controlA0513_P->TransferFcn3_B*PS_flc3_controlA0513_B->Sum_f;
PS_flc3_controlA0513_Xdot->TransferFcn3_CSTATE[0] +=
(PS_flc3_controlA0513_P->TransferFcn3_A[0])*PS_flc3_controlA0513_X->TransferFcn3_CSTATE[0]
+
(PS_flc3_controlA0513_P->TransferFcn3_A[1])*PS_flc3_controlA0513_X->TransferFcn3_CSTATE[1]
+
(PS_flc3_controlA0513_P->TransferFcn3_A[2])*PS_flc3_controlA0513_X->TransferFcn3_CSTATE[2];
PS_flc3_controlA0513_Xdot->TransferFcn3_CSTATE[1] =
(PS_flc3_controlA0513_P->TransferFcn3_A[3])*PS_flc3_controlA0513_X->TransferFcn3_CSTATE[0];
PS_flc3_controlA0513_Xdot->TransferFcn3_CSTATE[2] =
(PS_flc3_controlA0513_P->TransferFcn3_A[4])*PS_flc3_controlA0513_X->TransferFcn3_CSTATE[1];
}
/* TransferFcn Block: <Root>/Transfer Fcn5 */
{
PS_flc3_controlA0513_Xdot->TransferFcn5_CSTATE[0] =
PS_flc3_controlA0513_P->TransferFcn5_B*PS_flc3_controlA0513_B->TransportDelay;
PS_flc3_controlA0513_Xdot->TransferFcn5_CSTATE[0] +=
(PS_flc3_controlA0513_P->TransferFcn5_A[0])*PS_flc3_controlA0513_X->TransferFcn5_CSTATE[0]
+
(PS_flc3_controlA0513_P->TransferFcn5_A[1])*PS_flc3_controlA0513_X->TransferFcn5_CSTATE[1]
+
(PS_flc3_controlA0513_P->TransferFcn5_A[2])*PS_flc3_controlA0513_X->TransferFcn5_CSTATE[2];
PS_flc3_controlA0513_Xdot->TransferFcn5_CSTATE[1] =
(PS_flc3_controlA0513_P->TransferFcn5_A[3])*PS_flc3_controlA0513_X->TransferFcn5_CSTATE[0];
PS_flc3_controlA0513_Xdot->TransferFcn5_CSTATE[2] =
(PS_flc3_controlA0513_P->TransferFcn5_A[4])*PS_flc3_controlA0513_X->TransferFcn5_CSTATE[1];
}
/* TransferFcn Block: <Root>/Transfer Fcn1 */
{
PS_flc3_controlA0513_Xdot->TransferFcn1_CSTATE[0] =
PS_flc3_controlA0513_P->TransferFcn1_B*PS_flc3_controlA0513_B->Sum_j;
PS_flc3_controlA0513_Xdot->TransferFcn1_CSTATE[0] +=
(PS_flc3_controlA0513_P->TransferFcn1_A[0])*PS_flc3_controlA0513_X->TransferFcn1_CSTATE[0]
+
(PS_flc3_controlA0513_P->TransferFcn1_A[1])*PS_flc3_controlA0513_X->TransferFcn1_CSTATE[1]
+
(PS_flc3_controlA0513_P->TransferFcn1_A[2])*PS_flc3_controlA0513_X->TransferFcn1_CSTATE[2];
PS_flc3_controlA0513_Xdot->TransferFcn1_CSTATE[1] =
(PS_flc3_controlA0513_P->TransferFcn1_A[3])*PS_flc3_controlA0513_X->TransferFcn1_CSTATE[0];
PS_flc3_controlA0513_Xdot->TransferFcn1_CSTATE[2] =
(PS_flc3_controlA0513_P->TransferFcn1_A[4])*PS_flc3_controlA0513_X->TransferFcn1_CSTATE[1];
}
/* TransferFcn Block: <Root>/Transfer Fcn4 */
{
PS_flc3_controlA0513_Xdot->TransferFcn4_CSTATE[0] =
PS_flc3_controlA0513_P->TransferFcn4_B*PS_flc3_controlA0513_B->Sum_jc;
PS_flc3_controlA0513_Xdot->TransferFcn4_CSTATE[0] +=
(PS_flc3_controlA0513_P->TransferFcn4_A[0])*PS_flc3_controlA0513_X->TransferFcn4_CSTATE[0]
+
(PS_flc3_controlA0513_P->TransferFcn4_A[1])*PS_flc3_controlA0513_X->TransferFcn4_CSTATE[1]
+
(PS_flc3_controlA0513_P->TransferFcn4_A[2])*PS_flc3_controlA0513_X->TransferFcn4_CSTATE[2];
PS_flc3_controlA0513_Xdot->TransferFcn4_CSTATE[1] =
(PS_flc3_controlA0513_P->TransferFcn4_A[3])*PS_flc3_controlA0513_X->TransferFcn4_CSTATE[0];
PS_flc3_controlA0513_Xdot->TransferFcn4_CSTATE[2] =
(PS_flc3_controlA0513_P->TransferFcn4_A[4])*PS_flc3_controlA0513_X->TransferFcn4_CSTATE[1];
}
/* TransferFcn Block: <S6>/Integral */
{
PS_flc3_controlA0513_Xdot->Integral_CSTATE =
PS_flc3_controlA0513_P->Integral_B*PS_flc3_controlA0513_B->Sum1;
}
/* TransferFcn Block: <S7>/Integral */
{
PS_flc3_controlA0513_Xdot->Integral_i_CSTATE =
PS_flc3_controlA0513_P->Integral_B_m*PS_flc3_controlA0513_B->Sum4;
}
/* TransferFcn Block: <S8>/Integral */
{
PS_flc3_controlA0513_Xdot->Integral_e_CSTATE =
PS_flc3_controlA0513_P->Integral_B_i*PS_flc3_controlA0513_B->Sum6;
}
/* TransferFcn Block: <S9>/Integral */
{
PS_flc3_controlA0513_Xdot->Integral_o_CSTATE =
PS_flc3_controlA0513_P->Integral_B_g*PS_flc3_controlA0513_B->Sum8;
}
/* TransferFcn Block: <S10>/Integral */
{
PS_flc3_controlA0513_Xdot->Integral_n_CSTATE =
PS_flc3_controlA0513_P->Integral_B_p*PS_flc3_controlA0513_B->Sum10;
}
}
/* Function to initialize sizes */
static void mdlInitializeSizes(SimStruct *S)
{
/* checksum */
ssSetChecksumVal(S, 0, 1703132339U);
ssSetChecksumVal(S, 1, 577957235U);
ssSetChecksumVal(S, 2, 3483332078U);
ssSetChecksumVal(S, 3, 212937634U);
/* options */
ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);
/* Accelerator check memory map size match for DWork */
if (ssGetSizeofDWork(S) != sizeof(PS_flc3_controlA0513_D_Work)) {
ssSetErrorStatus(S,"Unexpected error: Internal DWork sizes do "
"not match for accelerator mex file.");
}
/* Accelerator check memory map size match for BlockIO */
if (ssGetSizeofGlobalBlockIO(S) != sizeof(PS_flc3_controlA0513_BlockIO)) {
ssSetErrorStatus(S,"Unexpected error: Internal BlockIO sizes do "
"not match for accelerator mex file.");
}
/* model parameters */
_ssSetDefaultParam(S, (real_T *) &PS_flc3_controlA0513_DefaultParameters);
/* non-finites */
rt_InitInfAndNaN(sizeof(real_T));
}
/* Empty mdlInitializeSampleTimes function (never called) */
static void mdlInitializeSampleTimes(SimStruct *S) { }
/* Empty mdlTerminate function (never called) */
static void mdlTerminate(SimStruct *S) { }
/* MATLAB MEX Glue */
#include "simulink.c"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -