我怎么设置饱和输出PID对象在MATLAB ?

48视图(30天)
我想设置一个PID的饱和输出对象在MATLAB的实现anti-windup PID控制方案。

接受的答案

MathWorks支万博1manbetx持团队
编辑:MathWorks支万博1manbetx持团队 2020年11月9日
PID控制系统工具箱中的对象是LTI(线性定常)系统的一个特殊类型。正因为如此,没有输出饱和PID对象的属性。在MATLAB模拟“anti-windup”,您可以设置一个自定义状态空间系统,称之为“lsim”功能来模拟系统的时间响应与饱和等非线性特性。下面是一个简单的脚本,执行闭环PI控制与计算,可以作为一个起点。
UseBackCalculation = true;%启用/禁用anti-windup(计算)
G = ss (tf (1, (1 2 1)));%的植物
Kp = 2;Ki = 2;%比例积分控制器的收益(并行)
t = 0.1;%控制器样品时间
τ= 1;%重置时间常数
乌兰巴托= 1.2;磅= -1.2;%饱和度的限制
%初始条件
r = 1;
y = 0;
x = 0 (2, 1);
actionI = 0;
%闭环仿真(200步)
N = 200;
ct = 1: N
%的错误
e = r - y;
%控制动作
actionP = Kp * e;
u = actionP + actionI;
%饱和度控制动作
u_sat = max (min (u,乌兰巴托)磅);
%反终结
如果UseBackCalculation
actionI = actionI + (Ki * e + (u_sat-u) /τ)* Ts;
其他的
actionI = actionI + Ki * e * Ts;
结束
%植物输出
(Y, T, X) = lsim (G, [u_sat; u_sat], [0, T], X);
%为下一个迭代
x = x(最终:)”;
y = y(结束);
y_vec (ct) = y;
u_vec (ct) = u_sat;
结束
clf;
图(1);
阴谋(1:N, y_vec“* r”1:N, u_vec“b +”);
包含(“时间”);ylabel (“信号”);
传奇(“模型响应”,控制信号的)
如果UseBackCalculation
标题(与Anti-Windup(计算));
其他的
标题(“没有Anti-Windup”);
结束

更多的答案(0)

标签

没有标签了。

s manbetx 845


释放

R2020a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!