• 大帅123
    了解作者
  • C/C++
    开发工具
  • 1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 26
    下载次数
  • 2017-06-21 20:36
    上传日期
利用S-function编写滑模控制的程序,简单验证了滑模控制的功能
滑模控制.zip
  • 滑模控制
  • SMC.c
    4KB
内容介绍
#define S_FUNCTION_NAME SMC #define S_FUNCTION_LEVEL 2 #include "simstruc.h" #include "stdio.h" #include "math.h" static void mdlInitializeSizes(SimStruct *S) { // int_T nInputPorts = 1; /* number of input ports */ // int_T nOutputPorts = 1; /* number of output ports */ // int_T needsInput = 0; /* direct feed through */ // int_T inputPortIdx = 0; // int_T outputPortIdx = 0; ssSetNumSFcnParams(S, 0); /* Number of expected parameters */ if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S)) { return; } ssSetNumContStates(S, 2); ssSetNumDiscStates(S, 0); if (!ssSetNumInputPorts(S, 1)) return; ssSetInputPortWidth(S, 0, 2); ssSetInputPortRequiredContiguous(S, 0, true); ssSetInputPortDirectFeedThrough(S, 0, 1); if (!ssSetNumOutputPorts(S, 3)) return; ssSetOutputPortWidth(S, 0, 1); ssSetOutputPortWidth(S, 1, 1); ssSetOutputPortWidth(S, 2, 1); ssSetNumSampleTimes(S, 1); ssSetNumRWork(S, 0); ssSetNumIWork(S, 0); ssSetNumPWork(S, 0); ssSetNumModes(S, 0); ssSetNumNonsampledZCs(S, 0); // ssSetSimStateCompliance(S, USE_DEFAULT_SIM_STATE); ssSetOptions(S, 0); } static void mdlInitializeSampleTimes(SimStruct *S) { ssSetSampleTime(S, 0, 0.0001); ssSetSampleTime(S, 1, 0.0001); ssSetOffsetTime(S, 0, 0.0); ssSetOffsetTime(S, 1, 0.0); } #define MDL_INITIALIZE_CONDITIONS /* Change to #undef to remove function */ #if defined(MDL_INITIALIZE_CONDITIONS) static void mdlInitializeConditions(SimStruct *S) { } #endif /* MDL_INITIALIZE_CONDITIONS */ #define MDL_START /* Change to #undef to remove function */ #if defined(MDL_START) static void mdlStart(SimStruct *S) { } #endif /* MDL_START */ static void mdlOutputs(SimStruct *S, int_T tid) { const real_T *u1 = (const real_T*) ssGetInputPortSignal(S,0); real_T *y1 = ssGetOutputPortSignal(S,0); real_T *y2 = ssGetOutputPortSignal(S,1); real_T *y3 = ssGetOutputPortSignal(S,2); float x1,x2,D,A0,A1,A2,A3,B0,B1,iq,dx1,dx2; x1=u1[0]; x2=u1[1]; D=3*16/2/0.00102*0.175; A0=0; A1=1; A2=0; A3=0; B0=0; B1=-D; iq=(1/D)*(10*x2+3*abs(x1)*(10*x1+x2)+6*abs(x1)*pow(10*x1+x2,0.6)); dx1=A1*x2; dx2=-(10*x2+3*abs(x1)*(10*x1+x2)+6*abs(x1)*pow(10*x1+x2,0.6)); y1[0] =iq; y2[0] =dx1; y3[0] =dx2; } #define MDL_UPDATE /* Change to #undef to remove function */ #if defined(MDL_UPDATE) static void mdlUpdate(SimStruct *S, int_T tid) { } #endif /* MDL_UPDATE */ #define MDL_DERIVATIVES /* Change to #undef to remove function */ #if defined(MDL_DERIVATIVES) static void mdlDerivatives(SimStruct *S) { } #endif /* MDL_DERIVATIVES */ 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
评论
    相关推荐
    • matlabcnhelp.rar
      matlab中文帮助很难找的,快速下载
    • MobilePolice.rar
      移动警察,车牌识别,车牌定位系统源代码,已经运用在移动车载稽查系统中。
    • SVM(matlab).rar
      支持向量机(SVM)实现的分类算法源码[matlab]
    • svm.zip
      用MATLAB编写的svm源程序,可以实现支持向量机,用于特征分类或提取
    • Classification-MatLab-Toolbox.rar
      模式识别matlab工具箱,包括SVM,ICA,PCA,NN等等模式识别算法,很有参考价值
    • VC++人脸定位实例.rar
      一个经典的人脸识别算法实例,提供人脸五官定位具体算法及两种实现流程.
    • QPSK_Simulink.rar
      QPSK的Matlab/Simulink的调制解调仿真系统,给出接收信号眼图及系统仿真误码率,包含载波恢复,匹配滤波,定时恢复等重要模块,帮助理解QPSK的系统
    • LPRBPDemo2009KV.rar
      车牌识别,神经网络算法,识别率高达95%,识别时间低于80ms。
    • MODULATION.RAR
      这个源程序代码包提供了通信系统中BPSK,QPSK,OQPSK,MSK,MSK2,GMSK,QAM,QAM16等调制解调方式 用matlab的实现,以及它们在AWGN和Rayleigh信道下的通信系统实现及误码率性能
    • algorithms.rar
      十大算法论文,包括遗传算法,模拟退火,蒙特卡罗法等等,对于初学者很有帮助!!