马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 牛小贱 于 2014-3-24 14:10 编辑
- function [sys,x0,str,ts]=exp_pidf(t,x,u,flag,T,kp,ki,kd,MTab)
- switch flag,
- case 0
- [sys,x0,str,ts]=mdlInitializesSizes(T);
- case 2
- sys=mdlUpdates(x,u,T)
- case 3
- sys=mdlOutputs(t,x,u,kp,ki,kd,MTab);
- case{1,4,9}
- sys=[];
- otherwise
- error(['Unhandled flag=',num2str(flag)]);
- end
- function [sys,x0,str,ts]=mdlInitializesSizes(T)
- x0=[0;0;0];
- str=[];
- ts=[-1 0];
- function sys=mdlUpdates(x,u,T)
- sys=[u(1);x(2)+u(1)*T;(u(1)-u(2)/T)];
- function sys=mdlOutputs(t,x,u,kp,ki,kd,MTab)
- i=find(abs(x(1))>MTab(:,1));
- if length(i)>0
- sys=MTab(i(1),2);
- else
- sys=M[kp,ki,kd]*x;
- end
- if x(1)*x(3)|(abs(x(3))<eps)
- if abs(x(1))>=0.05
- sys=u(3)+2*kp*x(1);
- else
- sys=u(3)+0.4*kp*x(1);
- end
- end
- if x(1)*x(3)<0 & x(3)*u(4)<0
- if abs(x(1))>=0.05
- sys=u(3)+2*kp*u(2);
- else
- sys=u(3)+0.6*kp*u(2);
- end
- end
- if abs(x(1))<=0.001
- sys=0.5*x(1)+0.010*x(2);
- end
- sys=[sys;x(3)];
复制代码 这个程序在仿真的时候输入s-function parameters的时候怎么填
希望各位大侠指教
:handshake |