📄 sfun_eom.c
字号:
#define S_FUNCTION_LEVEL 2#define S_FUNCTION_NAME sfun_eom#include "simstruc.h"#include <math.h>#define U(element) (*uPtrs[element]) /* Pointer to Input Port0 */static void mdlInitializeSizes(SimStruct *S){ ssSetNumSFcnParams(S, 2); if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S)) { return; } ssSetNumContStates(S, 6); ssSetNumDiscStates(S, 0); if (!ssSetNumInputPorts(S, 1)) { return; } ssSetInputPortWidth(S, 0, 10); if (!ssSetNumOutputPorts(S, 1)) { return; } ssSetOutputPortWidth(S, 0, 6); ssSetNumSampleTimes(S, 1); ssSetNumRWork(S, 0); ssSetNumIWork(S, 0); ssSetNumPWork(S, 0); ssSetNumModes(S, 0); ssSetNumNonsampledZCs(S, 0); ssSetOptions(S, (SS_OPTION_WORKS_WITH_CODE_REUSE | SS_OPTION_USE_TLC_WITH_ACCELERATOR)); return;}static void mdlInitializeSampleTimes(SimStruct *S){ ssSetSampleTime(S, 0, CONTINUOUS_SAMPLE_TIME); ssSetOffsetTime(S, 0, 0.0); return;}#define MDL_INITIALIZE_CONDITIONSstatic void mdlInitializeConditions(SimStruct *S){ real_T *x0 = ssGetContStates(S); x0[0]=mxGetPr(ssGetSFcnParam(S, 0))[0]; x0[1]=mxGetPr(ssGetSFcnParam(S, 0))[1]; x0[2]=mxGetPr(ssGetSFcnParam(S, 0))[2]; x0[3]=mxGetPr(ssGetSFcnParam(S, 1))[0]; x0[4]=mxGetPr(ssGetSFcnParam(S, 1))[1]; x0[5]=mxGetPr(ssGetSFcnParam(S, 1))[2];}static void mdlOutputs(SimStruct *S, int_T tid){ real_T *y = ssGetOutputPortRealSignal(S, 0); real_T *x = ssGetContStates(S); y[0]=x[0]; y[1]=x[1]; y[2]=x[2]; y[3]=x[3]; y[4]=x[4]; y[5]=x[5];}#define MDL_DERIVATIVESstatic void mdlDerivatives(SimStruct *S){ real_T *dx = ssGetdX(S); real_T *x = ssGetContStates(S); InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S, 0); double Jxx,Jyy,Jzz,m,Fx,Fy,Fz,Mx,My,Mz,vx,vy,vz,wx,wy,wz; Jxx=U(0); Jyy=U(1); Jzz=U(2); m=U(3); Fx=U(4); Fy=U(5); Fz=U(6); Mx=U(7); My=U(8); Mz=U(9); vx=x[0]; vy=x[1]; vz=x[2]; wx=x[3]; wy=x[4]; wz=x[5]; dx[0]=Fx/m - vz*wy + vy*wz; dx[1]=Fy/m - vx*wz + vz*wx; dx[2]=Fz/m - vy*wx + vx*wy;; dx[3]=(Mx - (Jzz-Jyy)*wy*wz)/Jxx; dx[4]=(My - (Jxx-Jzz)*wz*wx)/Jyy; dx[5]=(Mz - (Jyy-Jxx)*wx*wy)/Jzz; }static void mdlTerminate(SimStruct *S){}#ifdef MATLAB_MEX_FILE /* Is this file being compiled as a MEX-file? */#include "simulink.c" /* MEX-file interface mechanism */#else#include "cg_sfun.h" /* Code generation registration function */#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -