水位控制的pid调节问题

[复制链接]
3487|4
 楼主| chuandaoxy 发表于 2012-2-19 19:12 | 显示全部楼层 |阅读模式
原来用pid做过恒温度控制,效果还行,主要是使用pid控制pwm调节占空比

这次没有pwm,就是dac直接输出4-20ma,给调节阀,问题出在衡水位,调节部分

阀门好像没有一个维稳的过程,不是全关,就是全开,下面是代码片段

else                           //如果是在1cm范围内,则运行PID计算
      
                   {  
                       for(i=0;i<10;i++)
         
                            {
        
                             
        s=u;
                                rin = s;                      // Read Input  
                                rout = PIDCalc ( &spid,rin ); // Perform PID Interation  
                             }  
                                    if (high_time<=100)
           
                                   { high_time=(uchar)(rout/800);
           
         IDA1=(high_time/100*1697)+351;}
         
                                    else  
                                             high_time=100;  
                                             low_time= (100-high_time);
                                             IDA1=2048;
            
              
                     }

high_time是温控时用的我理解在这里就是开阀的角度和开阀行程的占空比,不知对否
然后根据high_time反推IDA1的数值,但是好像变化很小,肯定是哪里出问题了
哪位指点一下,谢谢
顺便解释一下上面的code

IDA1=(high_time/100*1697)+351;

351输出4ma,关闭阀门,也就是开阀的基准值,

1697是开阀的行程,2048全开,减去351就是1697

(high_time/100*1697)=pid算出的微调量


下面这3句话就是出问题的地方,老跳进去把阀门全打开

                                            high_time=100;  
                                             low_time= (100-high_time);
                                             IDA1=2048;

还请大家拍砖
wangbowen 发表于 2013-6-27 18:59 | 显示全部楼层
有仿真程序吗?
zhaohe2001 发表于 2013-7-4 16:49 | 显示全部楼层
只用PI试试
wu760324 发表于 2013-7-8 22:57 | 显示全部楼层
不错,学习了!
copper319 发表于 2013-7-31 14:14 | 显示全部楼层
看看。。。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

856

主题

1046

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部