linjing530 发表于 2015-10-29 21:25:48

请教EVVGC—PLUS PID代码

请教云台大神关于EVVGC加强版的环路的问题,如图,它的环路是角度误差乘以I,速度乘以D,加速度乘以P,这是什么原理?好像和传统意义的PID区别很大啊,希望做过的兄台们给点指点。就此谢过。

lcw_swust 发表于 2015-10-30 12:27:47

看起来是增量式PID,没问题。
楼主可能理解错了,程序中应该是速度乘以P,加速度乘以D

linjing530 发表于 2015-11-4 15:23:27

lcw_swust 发表于 2015-10-30 12:27
看起来是增量式PID,没问题。
楼主可能理解错了,程序中应该是速度乘以P,加速度乘以D ...

确实是我写错了,这中PID相当于每一个P   I   D 的分量都做了积分,您验证过吗?能否具体解释一下,不胜感激

lcw_swust 发表于 2015-11-4 15:51:21

linjing530 发表于 2015-11-4 15:23
确实是我写错了,这中PID相当于每一个P   I   D 的分量都做了积分,您验证过吗?能否具体解释一下,不胜 ...

这是我用的两个PID函数,和最终程序略有差异
//位置式PID算法,用于温控
void dopid_t(void)
{
        static S16 err1,err2;//上次误差,上上次
        S32 err0,add;//本次误差
        S32 temp_s32;
        err0=Ts-Tr;
        add=(S32)Pid_p*(err0-err1)+(S32)Pid_i*err0+(S32)Pid_d*((err0-err1)-(err1-err2));
        err2=err1;
        err1=err0;//保存本次误差
        if(add>500*1000)add=500*1000;//增量限幅
        if(add<-500*1000)add=-500*1000;
        Iout=Iout+add;//改变输出,12位DAC控制电流
        //电流输出极限限幅
        if(Iout>4095*1000)Iout=4095*1000;//输出限幅
        if(Iout<-4095*1000)Iout=-4095*1000;       
}
//增量式PID算法,用于四轴
void DoPid_x(void)
{
        static idata S16 temp_i;//积分
        idata S16 err0,err1;//本次误差、上次误差
        //static U8 n=0;//波形监测用

        err0=GADegYZ-set_x;//当前角度-设定角度               
        //degv0=Mpu_Gx;//角速度可直接用陀螺仪数据
        err0=amplmt(err0,200);//防止数据太大而溢出
        temp_i=amplmt(temp_i+err0,KK*5);//积分限幅       
        mot_dx=err0*Pidx_p+temp_i*Pidx_i+amplmt(err0-err1,500)*Pidx_d;
       
        mot_dx=amplmt(mot_dx,KK*15);//输出限幅
}

//--------------------------------------------------
//限幅
//--------------------------------------------------
S16 amplmt(S16 v,S16 amp)
{
        if(v>amp)v=amp;
        if(v<-amp)v=-amp;
        return v;
}

这里有个资料:

linjing530 发表于 2015-11-5 14:15:25

您的程序 上面是增量式下面是位置式吧? 我已经理解了,十分感谢{:handshake:},程序中是按照式(2-5)的第一步写的。PDF资料我之前看过,很不错。第四页的系数B应该是负的{:titter:}

lcw_swust 发表于 2015-11-7 21:20:27

linjing530 发表于 2015-11-5 14:15
您的程序 上面是增量式下面是位置式吧? 我已经理解了,十分感谢,程序中是按照式(2-5)的 ...

是啊,我把注释写反了

linjing530 发表于 2015-11-13 10:14:17

lcw_swust 发表于 2015-11-7 21:20
是啊,我把注释写反了

刚写了一个增量式的速度环,稳定趋势没有问题 参数整定还有点问题。

lcw_swust 发表于 2015-11-13 10:48:21

linjing530 发表于 2015-11-13 10:14
刚写了一个增量式的速度环,稳定趋势没有问题 参数整定还有点问题。

哦,最好是能看下数据的波形.
我的帖子里有个利用串口查看数据波形的软件:
http://www.amobbs.com/thread-5634216-1-1.html

linjing530 发表于 2015-11-17 17:01:20

谢{:handshake:}

linjing530 发表于 2015-11-17 17:02:23

lcw_swust 发表于 2015-11-13 10:48
哦,最好是能看下数据的波形.
我的帖子里有个利用串口查看数据波形的软件:
http://www.amobbs.com/thread- ...

多谢指点{:handshake:}

bugls 发表于 2015-11-24 16:39:38

有人编译过
chibios么?

bugls 发表于 2015-11-24 16:40:05

说错了,编译过evvgcplus的代码么,

linjing530 发表于 2015-11-26 17:01:47

bugls 发表于 2015-11-24 16:40
说错了,编译过evvgcplus的代码么,

它的操作系统没编译过,控制部分和之前的差不多。

睿爸 发表于 2015-12-17 18:37:40

EvvGC-Plus跟EvvGC是同一組人寫的嗎?現在EvvGC的Open Source似乎是1.1版?
之後的版本(1.2/1.3 or 3-STAB)似乎都沒有Open了嗎?

linjing530 发表于 2015-12-30 16:24:53

睿爸 发表于 2015-12-17 18:37
EvvGC-Plus跟EvvGC是同一組人寫的嗎?現在EvvGC的Open Source似乎是1.1版?
之後的版本(1.2/1.3 or 3-STAB)似 ...

能找到源程序的也就这一版

张流火星 发表于 2016-3-11 20:17:04

你的开源程序能不能发我一份,我找不到在网上

fzg1023 发表于 2016-4-5 21:49:08

#在这里快速回复# 楼主,您好,我最近也在做三轴云台的控制,一直没有找到EVVGC Plus的代码,能发给我一份吗?万分感谢!我的邮箱:fzg1023@yeah.net
页: [1]
查看完整版本: 请教EVVGC—PLUS PID代码