|
原帖由 xptan 于 2007-9-21 16:13 发表
jack_boy ,你好,增量式是这样的吗?我只在输出这个函数改动了,不过好像不对,能指点一下吗,谢谢了
function [sys,x0,str,ts] = sfuntmpl(t,x,u,flag,Kp,Ki,Kd)
。。。。。。
sizes.NumOutputs = 1;
sizes.NumInputs = 1;
。。。。。。
function sys=mdlOutputs(t,x,u)
du=Kp*(e(t)-e(t-1))+(Kp*0.01/Ti)*e(t)+(Kd*Kp/0.01)*(e(t)-2e(t-1)+e(t-2));
sys(t)=sys(t-1)+du;
...
我先说两点吧
1、sys(t)代表的是什么意思呢?按照我的理解sys是一个向量,t代表仿真时间,sys[0.01]似乎含义不明确吧
sys(1),sys(2)……该这么写吧,如sys(1)=u(2)+du;
2、如果设定输入为1的话,实现起来可能会繁琐一点,得到u(k-1)的话,要定义一个变量uk_1初值为0,要动态修改的话,要将他设为全局变量global,或者在将其作为状态x。还有e(k-1)、e(k-2)也是要这么处理,感觉比较麻烦。让我做的话,我会选择多输入输入e(k)、e(k-1)、e(k-2)、u(k-1)、这样处理起来会方便一点,你觉得呢? |
|