PID代码实践

三种PID测试

1 位置式

clear
clc
global LK
LK.p = 0.1;
LK.i = 0.1;
LK.d = 0.07;
LK.ee = 0;
LK.es = 0;
LK.ed = 0;
LK.zi = 0;

y = [];

for x = 1:100
    out = Pid(8);
    y =[y out];
end 

x = 1:100;
plot(x,y)

function [ put ] = Pid(top )
    global LK
    LK.ee = top - LK.zi;
    LK.es = LK.es + LK.ee;
    put = LK.p*LK.ee + LK.i*LK.es + LK.d*(LK.ee-LK.ed);
    LK.ed = LK.ee;
    LK.zi = put;

end

在这里插入图片描述

2增量式

clear
clc
global LK
LK.p = 0.1;
LK.i = 0.1;
LK.d = 0.007;
LK.e0 = 0;
LK.e1 = 0;
LK.e2 = 0;
LK.zi = 0;

y = [];
y1 = [];
for x = 1:100
    out1 = Pid1(5);
    y =[y out1];

end 

x = 1:100;
plot(x,y)
hold on

function [ put1 ] = Pid1(top)
    global LK
    LK.e0 = (top - LK.zi);
    
    put = LK.p*(LK.e0-LK.e1) + LK.i*LK.e0 + LK.d*(LK.e0-2*LK.e1+LK.e2);
    LK.e2 = LK.e1;
    LK.e1 = LK.e0;
    LK.zi = put+LK.zi;
    put1 = LK.zi;

end

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值