PID控制流程如图:
PID控制Plant两条输出:一条直接输出
另一条反馈给Controller误差信号再次输出
传递函数是由系统的微分方程经过拉氏变换后求得,拉氏变换是一种线性变换,所以只适用于线性定常系统,
传递函数在Matlab中实现的代码为:tf( )
tf( numerator, denominator) 创建连续时间传递函数模型
sys = tf(1,[2 3 4]); step(sys) %%step(sys):画出任意一个动态系统模型里的sys阶跃响应
所得图像如下:
以 s 的降幂顺序指定分子和分母系数,并创建传递函数模型。
sys = tf(1,[2 3 4]);
step(sys) %%step(sys):画出任意一个动态系统模型里的sys阶跃响应
tf(numerator,denominator,tf) 创建离散时间传递函数模型(若不指定采样时间,请设置ts的输入参数为-1 )
以 z 的降幂顺序指定分子和分母系数,并指定采样时间为 0.1 秒。创建离散时间传递函数模型。
numerator = 1;
denominator = [2,3,4];
sys = tf(numerator,denominator)
Feedback Elements反馈函数在Matlab中的运用:feedback( )
1.sys = feedback(sys1 , sys2) 为模型对象sys的负反馈互连返回模型对象sys1 , sys2
2.sys_cl= feedback(sys,H,sign)
H:包含反馈传递函数的对象 sign:反馈信号方向
feedback(sys1,sys2,-1)
feedback(sys1,sys2,1)
3. feedback(G,H)(G、H需要事先设定) G:传递函数,H为反馈函数,负反馈为H,正反馈为-H
PID 在Matlab中重要函数:step()
计算一个动态系统的阶跃响应
2.step(sys,Tfinal):模拟了系统sys从时间t=0到t=Tfinal的阶跃响应。在系统时间单位中,表达式Tfinal在sys的时间单位属性中是被指定的。对于未指定采样时间(Ts=1)的离散时间系统, 阶跃将Tfinal作为采样周期的数量来模拟。
3.在一个图上画出一系列模型sys1,sys2,...sysN的阶跃响应:
% 原系统 n =[1 3 2]; t = [0:0.01:10]; d1 =2; G = tf(d1,n); g = feedback(G, 1); y =step(g, t); plot(t, y); hold on % KP d = [2]; n = [1 3 2]; t = [0:0.01:10]; Kp = 10; d1 = Kp*d; G = tf(d1, n); g = feedback(G, 1); y = step(g, t); plot(t,y); hold on % PD t = [0:0.01:10]; n =[1 3 2]; Kd = 0.1; Kp = 10; d=[2*Kd*Kp, 2*Kp]; g0=tf(d,n); g=feedback(g0,1); y=step(g,t); plot(t,y); hold on % PI t = [0:0.01:10]; n =[1 3 2 0]; Ki = 0.8; Kp = 10; d = [2*Kp, 2*Ki*Kp]; g0 = tf(d,n); g = feedback(g0,1); y = step(g,t); plot(t,y); hold on % PID t = [0:0.01:10]; n =[1 3 2 0]; Ki = 0.8; Kd = 0.4; Kp = 10; d = [2*Kp*Kd, 2*Kp, 2*Ki*Kp]; g0 = tf(d,n); g = feedback(g0,1); y = step(g,t); plot(t,y); hold on grid on