智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3815|回复: 16
打印 上一主题 下一主题

PID

[复制链接]

10

主题

83

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2604
威望
1500
贡献
760
兑换币
525
注册时间
2011-9-7
在线时间
172 小时
跳转到指定楼层
1#
发表于 2012-3-28 18:29:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
请问以下PID程序哪出错了,我找不出。
#include <hidef.h>
#include<  MATH.H>      /* common defines and macros */
#include <MC9S12XS128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
float Kp;             //PID 调节的比例常数
float Ti;             //PID 调节的积分常数
float T;              //采样周期
float Td;             //PID 调节的微分时间常数
float a1;
float a2;
float a3;
float ek=0;             //偏差 e[k]
float ek1=0;             //偏差 e[k-1]
float ek2=0;             //偏差 e[k-2]
float uk;             //u[k]
float uk1;             //对 uk 四舍五入求整
int adjust;           //最终输出的调整量
int t2=0;
float gabs(float t)
{
      if(t<0)
      {
      t=0-t;
      }
      return t;
}
  
int pid(int t1)  //增量式pid   
{           
     a1=Kp*(1+T/Ti+Td/T);
     a1=-Kp*(1+2*Td/T);
     a2=Kp*Td/T;
       // Ki=KpT/Ti=0.8,微分系数 Kd=KpTd/T=0.8,Td=0.0002,根据实验调得的结果确定这些参数
     ek=t1-t2;
     t2=t1;
                 
     if(gabs(ek)>=0&&gabs(ek)<=1) //误差的阀值左右水平传感器小于一定值不做 PID 调整,避免误差较小时频繁调节引起震荡。ee 的值可自己设
     {
         adjust=0;
     }  
                  
     else  if(gabs(ek)>=2&&gabs(ek)<=5)
     {        
                                   
         Kp=0.4;         
         Ti=0.1;            
         T=0.2;              
         Td=1;                  
     }
     else
     {        
        Kp=0.8;         
        Ti=0.9;            
        T=0.5;              
        Td=0.1;
     }
     uk=a1*ek+a1*ek1+a2*ek2;
     ek2=ek1;
     ek1=ek;
     uk1=(int)uk;
     if(uk>0)
     {
        if(uk-uk1>=0.5)
        {
           uk1=uk1+1;
        }
      }
     else  if(uk<0)
     {
         if(uk1-uk>=0.5)
         {
            uk1=uk1-1;
         }
      }
      
     adjust=uk1;         
                                    
    return adjust;   
}

10

主题

179

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1048
威望
476
贡献
256
兑换币
285
注册时间
2012-11-2
在线时间
158 小时
17#
发表于 2013-1-20 21:47:31 | 只看该作者
上传一个资料,,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

0

主题

104

帖子

0

精华

高级会员

Rank: 4

积分
987
威望
574
贡献
253
兑换币
2
注册时间
2011-8-29
在线时间
80 小时
16#
发表于 2012-4-4 19:35:23 | 只看该作者
龙游天下明 发表于 2012-4-3 16:37
在调节,我们没有用上位机,我也不懂上位机,现在只求能平稳跑一下了。你们的如何?

我们的还没跑起来~~
想着先把基本的做好~~好让调节的时候方便点···
回复 支持 反对

使用道具 举报

10

主题

83

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2604
威望
1500
贡献
760
兑换币
525
注册时间
2011-9-7
在线时间
172 小时
15#
 楼主| 发表于 2012-4-3 16:37:23 | 只看该作者
klain 发表于 2012-4-3 13:40
哦哦~~对于参数,你们车性能变化下··参数就改变了···你们现在还有进行调节么···可观测效果在上位 ...

在调节,我们没有用上位机,我也不懂上位机,现在只求能平稳跑一下了。你们的如何?
回复 支持 反对

使用道具 举报

0

主题

104

帖子

0

精华

高级会员

Rank: 4

积分
987
威望
574
贡献
253
兑换币
2
注册时间
2011-8-29
在线时间
80 小时
14#
发表于 2012-4-3 13:40:06 | 只看该作者
龙游天下明 发表于 2012-3-31 22:39
多谢了!今天别人告诉我在建工程时没设置成包含浮点型数据,改过之后没有这个问题了。

哦哦~~对于参数,你们车性能变化下··参数就改变了···你们现在还有进行调节么···可观测效果在上位机显示??
回复 支持 反对

使用道具 举报

10

主题

83

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2604
威望
1500
贡献
760
兑换币
525
注册时间
2011-9-7
在线时间
172 小时
13#
 楼主| 发表于 2012-3-31 22:39:50 | 只看该作者
klain 发表于 2012-3-30 22:40
那我建议把那些参数变量,还有误差变量之类的  放在一个结构体里面 ,~~这样引用起来也方便很多···看看 ...

多谢了!今天别人告诉我在建工程时没设置成包含浮点型数据,改过之后没有这个问题了。
回复 支持 反对

使用道具 举报

10

主题

83

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2604
威望
1500
贡献
760
兑换币
525
注册时间
2011-9-7
在线时间
172 小时
12#
 楼主| 发表于 2012-3-31 22:36:32 | 只看该作者
klain 发表于 2012-3-30 22:42
那可以问问帮你调的那个人么···我想知道你们一些思路,因为调参数很繁琐,我想简单点调···主要是可 ...

不好意思,他不在学校了,他是研究生,上学期见他的,这学期我都没见过他了,不知道忙什么。其实我们也很想请他帮忙的,但是没找到他。以后多多交流!
回复 支持 反对

使用道具 举报

0

主题

104

帖子

0

精华

高级会员

Rank: 4

积分
987
威望
574
贡献
253
兑换币
2
注册时间
2011-8-29
在线时间
80 小时
11#
发表于 2012-3-30 22:42:34 | 只看该作者
龙游天下明 发表于 2012-3-30 22:17
我们采样周期不变,不过调参我也不懂,这也是请教别人的,现在不在实验室了。

那可以问问帮你调的那个人么···我想知道你们一些思路,因为调参数很繁琐,我想简单点调···主要是可观测效果的调节···用到哪些东西?   谢谢交流
回复 支持 反对

使用道具 举报

0

主题

104

帖子

0

精华

高级会员

Rank: 4

积分
987
威望
574
贡献
253
兑换币
2
注册时间
2011-8-29
在线时间
80 小时
10#
发表于 2012-3-30 22:40:36 | 只看该作者
龙游天下明 发表于 2012-3-30 22:22
改成double型也是一样的结果,还是不行。

那我建议把那些参数变量,还有误差变量之类的  放在一个结构体里面 ,~~这样引用起来也方便很多···看看会不会再有错误   ·我查了那个错误提示,大部分人说是没有浮点运算的配置设置····我也不是很懂
回复 支持 反对

使用道具 举报

10

主题

83

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2604
威望
1500
贡献
760
兑换币
525
注册时间
2011-9-7
在线时间
172 小时
9#
 楼主| 发表于 2012-3-30 22:22:00 | 只看该作者
klain 发表于 2012-3-30 22:06
你把float改成double试试~~

改成double型也是一样的结果,还是不行。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-1-11 22:41 , Processed in 0.065881 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表