![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
1、不加控制作用时,要求不用Simulink,直接用ode45求解:
A=154;
k=11;
H0=20;
Qi=25;
dH = @(t,H) (Qi-k*sqrt(H)) / A;
ode45(dH,[0 1000],20)
xlabel '{\itt} / s'
ylabel '{\itH} / cm'
题目没有说明初始条件,这里理解为H0=20.
2、对于2009a之前版本,PID控制器可以直接使用Simulink Extras库中的PID Controller模块(如果愿意,也可以自己稍加改造)。对2009b之后的版本,PID Controller有比较大的改进,较为复杂,作为完成作业来说可能不合适,可使用我上传的版本。
3、题目【控制器的输出作为给定系统的输入】这一句比较模糊:
(1)原有的Qo=k*sqrt(H)这一项是否还存在?暂按没有这项考虑(模型中用一个手动开关控制)。
(2)所谓“给定系统的输入”是什么概念?这里按照流出量Qo理解。
(3)初值未给定,考虑到要体现出上升时间、超调量等概念,这里按高度初值为0理解。
我试了多组参数,时间指标容易满足,但超调量很难控制到2%以内。如前面所说,对题意的理解有几点不确定因素,可能现在理解的控制结构是有问题的。
另外,作为PID控制器的输出,如果是流出量的概念,那么其取值是不能为负的。如果考虑到这个因素,则还应该加入限幅,问题又复杂了很多,讨论起来可能没有边际了,还是把相关条件明确一下吧。
G(s)的传递函数你都没有使用吗?而且我们好像不是直接使用pid模块完成的。。。另外第三问的条件应该没有变动的 ,但是您给我的simulink好像无法运行。。。是我的操作有问题?希望您能解答一下。我用的是2012版本的matlab。谢谢您
1、在Simulink中,传递函数形式的理想PID控制器不可能实现,因为不允许出现纯微分。
2、我看到问题本身是要求自己封装子系统的,我的意思是,你可以拿这个作为模板自己修改(比如把参数提示改成Kp、Ki、Kd),而不是说就只能直接用。
3、【第三问的条件应该没有变动】?没看明白你的意思。而且我说到的几个问题你都没回答。
4、模型我在多个版本下测试没问题。具体怎么不能运行?是不是你没有给那几个常数赋值?
A=154;
k=11;
H0=20;
Qi=25;