搜索
bottom↓
回复: 283

K,J,R,S,B,E,T,N型热电偶,PT100,cu50热电阻拟合参数方程,以及冷端补偿方程,及其pid参数

  [复制链接]

出0入0汤圆

发表于 2010-10-20 14:17:30 | 显示全部楼层 |阅读模式
//由于要在16K的单片机里面存储8种热电偶,加两种热电阻的分度表。所以只能采用函数拟合方式。由于3次拟合精度不够,分段的话也会导致数据庞大,就拟合成5阶了。pt100,cu50热电阻线性是比较好的,完全可以不用拟合成5阶,但是为了统一处理,都拟合成5阶了
float code TC_Atab[11]={-7.5997e-7,9.6322e-8,4.8472e-4,7.3225e-4,2.4515e-3,1.3651e-7,9.9154e-5,2.8055e-6,-1.2878e-11,-1.0896e-9,205.65};
                //        K          J           R          S              B             E              T                N        Pt100        cu50,         B<600
float code TC_Btab[11]={1.0905e-4,8.7504e-6,-2.8158e-2,-3.6447e-2,-0.11385,-3.3295e-5,-4.9932e-3,-4.1148e-4,1.5932e-8,3.2617e-7,-1037.8};
                //        K         J         R             S              B               E                    T        N,         Pt100        cu50 0    B<600
float code TC_Ctab[11]={-3.9325e-3,2.0766e-3,0.65866,0.73075,2.2226,3.3864e-3,9.3174e-2,2.4892e-2,-6.1794e-6,-6.751e-5,1970.3};
                //        K        J          R         S        B        E          T        N,         Pt100          cu50    B<600
float code TC_Dtab[11]={0.017394,0.062995,-8.4431,-8.1816,-23.776,-0.17164,-0.98715,-0.76438,2.1231e-3,7.6826e-3,-1796};
                //        K        J        R       S              B             E              T              N,            Pt100             cu50    B<600
float code TC_Etab[11]={24.75,17.726,136.69,140.41,228.37,16.637,25.774,37.309,2.2614,4.2719,1047};
                //    K             J           R         S      B              E           T         N    Pt100  cu50   B<600
float code TC_Ftab[11]={-0.55944,3.457,11.693,9.6808,256.77,0.6252,1.3639,1.2499,-242.75,-226.06,60.546};
                 //      K                J              R           S        B       E              T      N,        Pt100   cu50     B<600
//由于B型热电偶函数特殊,非线性很大,拟合分为了两段,小于600摄氏度一段,大于600摄氏度一段
//--------------------------------------------------------------------------------------------------------------------------
float code TCt_vA[8]={1.75e-5,2.5e-5,1.1786e-5,1.0893e-5,5.0714e-6,4.5179e-5,4.1607e-5,1.8214e-5};//温度补偿方程
                //    K              J              R              S               B        E                 T       N       
float code TCt_vB[8]={0.039574,0.05045,5.3364e-3,5.4411e-3,-1.8929e-4,0.058678,0.038611,0.025889};
                //    K              J              R              S               B        E                 T       N       
float code TCt_vC[8]={-2.1429e-4,-2.0125e-16,-2.1429e-4,-1.7859e-4,-0.00066,-3.5714e-5,0.00025,7.1429e-5};
                //    K               J                   R              S               B        E                 T       N

float TCRTD(float res,unsigned char type)
/*热电偶与热电偶温度转换函数,输入:res(热电偶电压:单位mv或者热点阻电阻值:单位欧姆),type(输入0-9分别对应KJRSBETNPt100Cu50,10对应B型热电偶小于600摄氏度的方程),输出:当前温度;*/
{
        return (TC_Atab[type]*res*res*res*res*res+TC_Btab[type]*res*res*res*res+TC_Ctab[type]*res*res*res+TC_Dtab[type]*res*res+TC_Etab[type]*res+TC_Ftab[type]);
}
       
float TCt_v(float t,unsigned char type)
//热电偶的冷端补偿方程,输入为t(热电偶冷端温度),type(输入0-7分别对应热电偶KJRSBETN)
{
        return (TCt_vA[type]*t*t+TCt_vB[type]*t+TCt_vC[type]);
}
以上两个方程就是温度转换方程和冷端补偿的方程;
/***************************************************************************************************************************************/
/***************************************************************************************************************************************/
下面针对pid参数的调试做了一下实验:
温度采集采用pt100,通过vf转换得到电阻代入方程求得温度。
采用可控硅移相触发。交流过零检测送外部中断0,提供相位同步,一秒钟触发一次。把正弦波一个周期20ms分为两个50等分的时间,移相触发(不是采用的50等分的等功率移相触发,等功率移相触发要复杂很多,还要查表,所以没做)。AD采样时间162ms,pid计算周期3s。pid输出为0-999,对应可控硅移相0-50等份来控制。
可控硅控制的是一个75W的电烙铁来加热一个铁块。
采用积分分离pid位式算法,pid控制代码:
void pid()
{
         error0=sv_temp-temperature;        //当前误差
        if(error0<30&&error0>-30)//积分,以及积分分离
        {
                errorsum+=error0;  //积分
                Ki=3*(pid_P/(float)pid_I);
        }
        else
         {
            Ki=0;
             errorsum=0;
          }
        pidout=pid_P*error0+Ki*errorsum+pid_P*(pid_D/3)*(error0-error1);
         error1=error0;
        if(pidout>999)
                pidout=999;
        else
                if(pidout<0)
                        pidout=0;
}
调试pid参数,首先屏蔽Ki和Kd只剩下Kp,调试系统,使系统输出一个等幅振荡。
Kp=15时;

Kp为15时的温度曲线 (原文件名:P15.png)

出0入0汤圆

 楼主| 发表于 2010-10-20 14:19:08 | 显示全部楼层
要控制温度设置的是120摄氏度。1200即温度为120.0度

出0入0汤圆

 楼主| 发表于 2010-10-20 14:20:15 | 显示全部楼层

Kp为25时的温度曲线 (原文件名:P25.png)

出0入0汤圆

发表于 2010-10-20 14:20:26 | 显示全部楼层
标记

出0入0汤圆

 楼主| 发表于 2010-10-20 14:21:48 | 显示全部楼层

Kp为27.5时的温度曲线 (原文件名:p27.5.png)
此时,温度曲线已经接近等幅振荡。

出0入0汤圆

 楼主| 发表于 2010-10-20 14:23:16 | 显示全部楼层

Kp为28.5时的温度曲线 (原文件名:P28.5.png)
此时,可以认为已经为等幅振荡。
然后分析振荡周期以及幅度,求出Kd,Ki进行pid控制

出0入4汤圆

发表于 2010-10-20 15:19:35 | 显示全部楼层
顶一下

出0入0汤圆

 楼主| 发表于 2010-10-20 15:32:27 | 显示全部楼层

Kp为29.3时的温度曲线 (原文件名:P29.3.png)
此时更加接近等幅振荡,所以取Kp为29.2
分析振荡周期:Tu=335s
Ziegler-Nichols方法计算参数
PD 时:Kp=0.65*Kc,Td=0.125*Tu
PID 时:Kp=0.65*Kc,Ti=0.5Tu,Td=0.125*Tu
使用PD控制:
Kp=0.65*29.2=18.98,Td=41.875
代入上面的pid算法,进行PD控制。

出0入93汤圆

发表于 2010-10-20 15:45:43 | 显示全部楼层
关注

出0入0汤圆

发表于 2010-10-20 16:00:31 | 显示全部楼层
谁有这方面的资料啊?

出0入0汤圆

发表于 2010-10-20 16:04:22 | 显示全部楼层
关注

出0入0汤圆

 楼主| 发表于 2010-10-20 16:28:30 | 显示全部楼层

Kp=19,Td=42时的温度曲线 (原文件名:P19D42.png)
由于没有采用保温措施,温度稳定在98摄氏度,上下波动0.5摄氏度。
明天再加上Ti进行pid调试。
我的目标的达到pid参数的自整定。控制精度0.5摄氏度以内。
pid参数自整定将采用继电反馈型pid参数的自整定的方法……

出0入0汤圆

发表于 2010-10-20 16:56:24 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-10-20 17:01:24 | 显示全部楼层

Kp=19,Td=42,Ti=167时的温度曲线 (原文件名:P19D42I167.png)
经过计算,Ti=0.5Tu=167
加入Ti控制,形成PID控制、
温度基本无超调,温度稳定在要控制的温度120摄氏度附近,波动+0.5/-0.5

出0入0汤圆

发表于 2010-10-20 17:04:49 | 显示全部楼层

(原文件名:ITS-90 K偶系数.png)

To ddg_int 正品冬瓜:
请问你是如何计算出K偶的下列系数?
-7.5997e-7
1.0905e-4
-3.9325e-3
0.017394
24.75     
-0.55944

出0入0汤圆

 楼主| 发表于 2010-10-20 18:38:23 | 显示全部楼层
回复【14楼】ysoni  
-----------------------------------------------------------------------
将K型热电偶的分度表输入matlab里面进行多项式的拟合,参数就出来了。K型热电偶的5阶拟合程度很高的,明天到公司看看拟合误差发上来,现在在家不方便

出0入0汤圆

发表于 2010-10-20 18:53:34 | 显示全部楼层
顶一下。

出0入0汤圆

发表于 2010-10-20 20:44:58 | 显示全部楼层
好贴,希望更进一步

出0入0汤圆

发表于 2010-10-20 20:52:11 | 显示全部楼层
一直以为温度是很难精确测量、控制的,想不到楼主这么厉害。楼主的水平已经达到了业界最牛逼的高度。

出0入0汤圆

发表于 2010-10-20 21:07:15 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-10-20 21:09:58 | 显示全部楼层
顶一下。

出0入0汤圆

发表于 2010-10-20 21:20:43 | 显示全部楼层
PID调温没有过冲,楼主太牛了

出0入4汤圆

发表于 2010-10-20 21:27:34 | 显示全部楼层
make

出0入0汤圆

发表于 2010-10-20 21:35:23 | 显示全部楼层
楼主N!!

出0入0汤圆

发表于 2010-10-20 21:42:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-20 21:50:30 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-10-20 22:00:57 | 显示全部楼层
回复【21楼】xbq1001  
pid调温没有过冲,楼主太牛了
-----------------------------------------------------------------------

采用带死区和变积分的pid控制,能够显著改善系统超调……

出0入0汤圆

 楼主| 发表于 2010-10-20 22:03:18 | 显示全部楼层
回复【18楼】xpxp  
一直以为温度是很难精确测量、控制的,想不到楼主这么厉害。楼主的水平已经达到了业界最牛逼的高度。
-----------------------------------------------------------------------

pt100测温到0。1很正常的。要控温能做到0。1就牛了

出0入0汤圆

发表于 2010-10-20 22:11:15 | 显示全部楼层
make

出0入0汤圆

发表于 2010-10-21 00:27:45 | 显示全部楼层
lz可以贴一下电路图,参考一下吗?

出0入0汤圆

发表于 2010-10-21 08:40:17 | 显示全部楼层
回复【18楼】xpxp   
一直以为温度是很难精确测量、控制的,想不到楼主这么厉害。楼主的水平已经达到了业界最牛逼的高度。
-----------------------------------------------------------------------

pt100测温到0。1很正常的。要控温能做到0。1就牛了


请问这个PT100测温到0.1度,是指分辨率还是精度呢?

出0入0汤圆

 楼主| 发表于 2010-10-21 09:13:56 | 显示全部楼层
回复【29楼】luhuaneda
lz可以贴一下电路图,参考一下吗?
-----------------------------------------------------------------------
这是公司的项目,有些东西不方便发到网上。但是作为技术人员,只要搞定了核心的地方,其他的只是框架而已。对于温控系统,网上资料最少的,最模糊的就是关于热电偶,热电阻分度表的任意阶拟合,以及pid参数的调试过程了。解决了这两个核心问题,我想关于前面的热电偶,热电阻温度采集方法网上一大堆,而且都是可行性的,只要善于用百度谷歌我想对于任何有思想技术人员这都不是问题。温度采集到了,代入顶楼的pid控制算法(经典的位式pid控制算法,带积分分离,我的移相触发还有死区控制),然后就是输出了。输出我采用的是moc3052小硅控大硅(电路图跟datasheet推荐的典型接法一摸一样)……
所以对于技术人员重要的是思想,而不是一切照搬知其然而不知其所以然……

出0入0汤圆

 楼主| 发表于 2010-10-21 09:16:01 | 显示全部楼层
回复【30楼】xpxp
回复【18楼】xpxp   
一直以为温度是很难精确测量、控制的,想不到楼主这么厉害。楼主的水平已经达到了业界最牛逼的高度。  
-----------------------------------------------------------------------  
pt100测温到0。1很正常的。要控温能做到0。1就牛了  
请问这个pt100测温到0.1度,是指分辨率还是精度呢?
-----------------------------------------------------------------------

我用的PT100,所以这里的0.1度是精度。如果换成热电偶那就只能是分辨率了(有些热电偶精度达到0.1还是很困难的,像BSR,其他的精度应该是接近0.1的)。

出0入0汤圆

 楼主| 发表于 2010-10-21 09:21:47 | 显示全部楼层
早上用昨天在120摄氏度调试得到的pid参数(对Kp进行了微调,增加了0.1)进行了145摄氏度的温度控制。
Kp=19.1,Ti=167,Td=42
一下是全局的温度曲线,可以看到基本无超调,系统响应时间快,超调在1摄氏度以内

Kp=19.1,Td=42,Ti=167时的温度曲线 (原文件名:P19.1D42I167全局.png)
然后将曲线放大,可以看到温度稳定在145摄氏度左右,能够满足控制精度的要求(正负波动0.5摄氏度),实际波动在正负0.3摄氏度左右

Kp=19.1,Td=42,Ti=167时的温度曲线局部放大 (原文件名:P19.1D42I167局部放大.png)
由于温度的pid控制基本完成,下一步将进行pid参数的自整定的实验,希望一切顺利……

出0入0汤圆

发表于 2010-10-21 11:48:26 | 显示全部楼层
建议用搞个开源的恒温烙铁之类的东东,软硬件都学习了,智能模糊PID控制

出0入0汤圆

发表于 2010-10-21 12:01:00 | 显示全部楼层
K偶:输入res=0.397mv,按TCRTD()计算得出T=9.26880809275366摄氏度
而ITS-90s分度表显示 0.397mv就对应10摄氏度。
误差有点大吧?

出0入0汤圆

 楼主| 发表于 2010-10-21 13:21:10 | 显示全部楼层
回复【35楼】ysoni
k偶:输入res=0.397mv,按tcrtd()计算得出t=9.26880809275366摄氏度
而its-90s分度表显示 0.397mv就对应10摄氏度。
误差有点大吧?
-----------------------------------------------------------------------
开头几个数据误差是稍微有点大的。不过总体误差一般是在0.5摄氏度以下的。对于K性热电偶测温满度1370来说,这点误差应该不算大吧。应该没人拿K偶来测十几度或者几十度的温度吧……主要是我这个要适用于所以类型的热电偶,热电阻。所以不可能做到0.1摄氏度的,如果单独做K偶的话还是没问题

出0入0汤圆

 楼主| 发表于 2010-10-21 13:23:19 | 显示全部楼层
回复【34楼】cqfeiyu
建议用搞个开源的恒温烙铁之类的东东,软硬件都学习了,智能模糊pid控制
-----------------------------------------------------------------------

我这个控制的就是一个75W的电烙铁,哈哈……

出0入0汤圆

 楼主| 发表于 2010-10-21 13:38:57 | 显示全部楼层
为了验证pid参数自整定的方程是不是对的,而且pid自整定也不可能一蹴而就,所以我先让系统工作在继电状态(即温度超过设定关闭可控硅,温度低于设定可控硅完全导通),从而让系统强制产生一个等幅振荡。然后手动计算PId参数,然后根据手动计算的PID参数让系统工作,看能够稳定控制温度。证明可行性后再写程序自动计算PID参数
见温度曲线:

110摄氏度继电控制温度曲线 (原文件名:AT_110.png)
于图可以看出,系统超调非常大(设定温度110),超过30摄氏度。但是早上我已经进行过实验了,在120摄氏度下调试的pid参数可以把温度稳定在145,可能更高。所以我们完全可以在100摄氏度,或者更低温度进行自整定,然后返回120摄氏度进行控制。
由继电自整定方程Ku=4*d/(Pi*a)  其中d继电幅度,Pi=3.14,a温度幅值
由图得出继电温度波峰y1=131.6,继电温度波谷104.8,a=(y1-y2)/2=13.4;采用的市电220V,峰值电压380V,所以继电幅度d=380
所以计算得Ku=36.1
分析周期Tu=150*3=450s
所以Kp=0.65Ku=23.4,Ti=0.5Tu=225,Td=0.125Tu=56
这与昨天实验得到的Kp=19.1,Ti=167,Td=42差别很大。
但是由于Ki=3*Kp/Ti,Kd=Kp*Td/3
所以,昨天实验得到的Kp=19.1,Ki=0.343,Kd=267.4
而刚刚自整定得到的经过计算Kp=23.4,Ki=0.312,Kd=436.8
其中Ki差别并不是很大,而温度稳定主要作用是Ki,所以先按照自整定的结果进行下一个实验分析

出10入10汤圆

发表于 2010-10-21 14:06:02 | 显示全部楼层
楼主曲线数据横坐标单位是秒吗?
用EXCEL统计分析的吗?

出0入0汤圆

 楼主| 发表于 2010-10-21 14:45:08 | 显示全部楼层
回复【39楼】szxszx
楼主曲线数据横坐标单位是秒吗?
用excel统计分析的吗?
-----------------------------------------------------------------------

由于pid采样周期为3S,所以横坐标数值的单位是3S
把数据导入excel里面然后用图表功能分析

出0入0汤圆

 楼主| 发表于 2010-10-21 14:50:06 | 显示全部楼层
经过实验发现,自整定出来的PID参数控制性能也还是可以的

Kp=23.4,Td=56,Ti=225时的温度曲线 (原文件名:P23.4D56I225局部放大.png)
可以看到温度偏差超过正负0.5摄氏度一点点。差不多就是0.6摄氏度吧……可见pid自整定出来的PID参数虽然和实验得出的pid参数差异挺大,但是也能把温度控制在120摄氏度左右(偏差正负0.6)。
下一步写程序,把自动计算pid参数也写进程序里面(刚才是手动计算的)。

出0入0汤圆

发表于 2010-10-21 15:44:12 | 显示全部楼层
不错~~~ 还有~~~对你的软件很 感兴趣~~~~~ 你看能不能~~~~~ 借来玩 100年

出0入0汤圆

 楼主| 发表于 2010-10-21 18:08:12 | 显示全部楼层
将pid参数自整定的计算写进程序,然后开动自整定,自整定完成后直接控制系统
自整定能够顺利结束,但是控制系统温度的时候发现温度是振荡的。查看pid参数,自整定成为了Kp=19.6,Ti=243,Td=60
所以pid自整定计算程序还有待修改……明天继续。

110度自整定后控温120的温度曲线 (原文件名:AT_110_auto.png)

出0入0汤圆

发表于 2010-10-21 18:08:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-21 19:49:13 | 显示全部楼层
有原理图吗?准备折腾936!

出0入0汤圆

 楼主| 发表于 2010-10-22 17:04:26 | 显示全部楼层
经过长时间实验发现继电自整定方程Ku=4*d/(Pi*a)  其中d继电幅度,Pi=3.14,a温度幅值,继电幅度d应该是输出电压的有效值。所以是220。
由于在220V自整定一直不成功(温度振荡),所以改成继电幅度110V,即输出一半的功率。本来资料上显示继电输出功率一般取5%-10%的输出功率。由于我采用的等时间的可控硅移相触发,所以10%的功率输出不好做。再就是整个系统没有保温措施,10%的输出根本不能维持住温度,所以更加不可能产生强制振荡。
以下是修正了继电幅度d后,d=110自整定的控温曲线(即先自整定PID参数,完成整定后接着进行pid控制)。自整定超调还是比较大

110度自整定后控温120的温度曲线 (原文件名:110自整定―控温120.png)
可以看到自整定的时候温度超调有30摄氏度。整定完成后温度超调很小2摄氏度以内
可见布局放大图

110度自整定后控温120的温度曲线局部放大 (原文件名:110自整定―控温120局部放大.png)

由于系统没有保温措施,温度不能做到稳定在正负0.5摄氏度内,但是能稳定在正负1摄氏度内。有机会把公司的老化炉来进行下试验。希望整个过程对进行pid参数调试及其温控,和pid参数的自整定的各位有些帮助……

出0入0汤圆

发表于 2010-10-25 13:12:38 | 显示全部楼层
请问LZ,这个曲线图是怎么绘制出来的?

出0入0汤圆

 楼主| 发表于 2010-10-25 14:13:27 | 显示全部楼层
回复【47楼】linyongzhan
请问lz,这个曲线图是怎么绘制出来的?
-----------------------------------------------------------------------

把温度数据发送到串口助手显示,并保存到txt。然后导入到excel里面用里面的插入——图表——折线图来处理……

出0入85汤圆

发表于 2010-10-25 18:46:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-26 15:10:46 | 显示全部楼层
单片机如何实现自整定?

出0入0汤圆

发表于 2010-10-26 17:08:08 | 显示全部楼层
不错

出0入0汤圆

发表于 2010-10-26 18:28:33 | 显示全部楼层
求电路~~~~~ 哈哈  我也在玩加热控制 ~~~ 小功率的  我打算用简单的PDI 控制一下 SCR的导通角就收工了

出0入0汤圆

发表于 2010-10-26 19:19:10 | 显示全部楼层
不错

出0入0汤圆

发表于 2010-10-26 19:32:39 | 显示全部楼层
做得很不错

出0入0汤圆

发表于 2010-10-26 20:58:18 | 显示全部楼层
MARK PID

出0入0汤圆

 楼主| 发表于 2010-10-27 18:31:20 | 显示全部楼层
回复【50楼】ysoni
单片机如何实现自整定?
-----------------------------------------------------------------------
上面已经告诉你们怎么进行继电型自整定了,也对那个方法进行了实验。你再仔细读读38楼帖子就知道了。

出0入0汤圆

 楼主| 发表于 2010-10-27 18:34:36 | 显示全部楼层
回复【52楼】jrcsh 邪恶的小会会
  求电路~~~~~ 哈哈  我也在玩加热控制 ~~~ 小功率的  我打算用简单的pdi 控制一下 scr的导通角就收工了
-----------------------------------------------------------------------

说过是公司的项目,不方便发图了,所以只发思想和方法,不提供图及完整程序,但是pid控制程序和热电阻热电偶拟合函数及其冷端补偿的程序已经在顶楼了。其他31楼已经说明了。
你只要仔细看了的话,对pid控制,和pid参数的自整定肯定能够有个概念的。

出0入0汤圆

发表于 2010-10-27 20:59:00 | 显示全部楼层
貌似很复杂

出0入21汤圆

发表于 2010-10-27 21:32:20 | 显示全部楼层
学到不少,谢谢!

出0入0汤圆

发表于 2010-11-19 22:02:32 | 显示全部楼层
mark pid

出0入0汤圆

发表于 2010-11-19 22:17:12 | 显示全部楼层
mark!~

出0入0汤圆

发表于 2010-11-19 22:17:25 | 显示全部楼层
mark!~

出0入0汤圆

发表于 2010-11-27 11:53:59 | 显示全部楼层
ddg_int,你好!请发点资料给我,611017112@qq.com

出0入0汤圆

发表于 2010-11-27 12:10:56 | 显示全部楼层
标记一个,对这个也很感兴趣,有时间慢慢琢磨

出0入0汤圆

发表于 2010-11-27 15:14:53 | 显示全部楼层
一个,对这个也很感兴趣,有时间慢慢琢磨

出0入20汤圆

发表于 2010-11-27 15:20:18 | 显示全部楼层
楼主还是比较喜欢钻研的

出0入0汤圆

发表于 2010-11-27 16:20:06 | 显示全部楼层
mark!

出0入0汤圆

发表于 2010-11-28 07:19:26 | 显示全部楼层
感觉楼主的PID程序有点问题。PID有输出都是正数吗, error0=sv_temp-temperature,error0可能为正,也可能为负,PID的输出值出可能为负.还有就是位置式PID算式里面还有个PID0的值,你的程序里没有体现.也就是你的PID0=0 这样的程序控制效果肯定是不太好的.

出0入0汤圆

 楼主| 发表于 2010-11-29 11:21:04 | 显示全部楼层
回复【68楼】wzxmcu
感觉楼主的pid程序有点问题。pid有输出都是正数吗, error0=sv_temp-temperature,error0可能为正,也可能为负,pid的输出值出可能为负.还有就是位置式pid算式里面还有个pid0的值,你的程序里没有体现.也就是你的pid0=0 这样的程序控制效果肯定是不太好的.
-----------------------------------------------------------------------

pid输出可正可负,这个是自己设定的,你喜欢的话可以设定输出-500到500。我这里设定为0-999了。一般设定负输出的都是有冷却装置的风冷水冷或者其他。不知道你的所谓的pid0的值是什么,我的pid输出0-999对应输出功率0-99.9%,只是我的实际执行机构没有这么细分。控制效果上面已经有了,无保温措施的情况下稳定在0.5摄氏度以内……

出0入0汤圆

发表于 2010-11-29 13:24:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-30 12:52:40 | 显示全部楼层
-----------------------------------------------------------------------

回复【69楼】ddg_int 正品冬瓜
-----------------------------------------------------------------------
你好!我所说的PID0指的位置式PID算式中的U0,u = KPe + u0,楼主好象把U0默认为了0,这样其实到也不影响稳态效果,但可能会影响第一次加温所用的时间。从你的纯比例控制看出,你设定120度,真正温度是在106度上下等幅振荡

出0入0汤圆

 楼主| 发表于 2010-11-30 15:34:21 | 显示全部楼层
回复【71楼】wzxmcu
-----------------------------------------------------------------------
回复【69楼】ddg_int 正品冬瓜
-----------------------------------------------------------------------
你好!我所说的pid0指的位置式pid算式中的u0,u = kpe + u0,楼主好象把u0默认为了0,这样其实到也不影响稳态效果,但可能会影响第一次加温所用的时间。从你的纯比例控制看出,你设定120度,真正温度是在106度上下等幅振荡
-----------------------------------------------------------------------

看来你对位置式PID和增量式PID的理解有误。位置式PID不是指的纯比例控制。那个纯比例控制只是一个实验,为了求得PID参数而已。
设定120度,在XX度等幅振荡,这个正是我要的实验结果……

出0入0汤圆

发表于 2010-11-30 16:14:27 | 显示全部楼层
回复【72楼】ddg_int 正品冬瓜
-----------------------------------------------------------------------

你好!
      请问你对PID算式u(t) = Kp*e(t) + Ki∑e(t) + Kd[e(t) – e(t-1)]+u0
中的u0作何理解?

出0入0汤圆

发表于 2010-11-30 17:34:52 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-11-30 19:37:13 | 显示全部楼层
回复【73楼】wzxmcu
我不知道你从哪里看来的公式:
我只知道pid控制算法是:
u(t)=Kp*【e(t)+(1/Ti)*∫e(t)dt+Td*d(t)/dt】
离散化后
位置式:u(k)=Kp*{e(k)+(T/Ti)*∑e(k)+(Td/T)*e(k)-e(k-1)}
增量式:Δu(k)=u(k)-u(k-1)
所以对于你所说的u0我的确无法理解……

出0入0汤圆

发表于 2010-11-30 19:54:36 | 显示全部楼层
好贴

出0入0汤圆

发表于 2010-12-1 09:22:19 | 显示全部楼层
回复【75楼】ddg_int 正品冬瓜
-----------------------------------------------------------------------

你好!标准PID位置算式应该是在你的位置算式:u(k)=Kp*{e(k)+(T/Ti)*∑e(k)+(Td/T)*e(k)-e(k-1)} 后面还要加上一个u0,称之为稳态工作点。

出0入0汤圆

发表于 2010-12-1 09:55:09 | 显示全部楼层
mark!

出0入0汤圆

 楼主| 发表于 2010-12-1 10:16:34 | 显示全部楼层
回复【77楼】wzxmcu
回复【75楼】ddg_int 正品冬瓜
-----------------------------------------------------------------------
你好!标准pid位置算式应该是在你的位置算式:u(k)=kp*{e(k)+(t/ti)*∑e(k)+(td/t)*e(k)-e(k-1)} 后面还要加上一个u0,称之为稳态工作点。

-----------------------------------------------------------------------

请给一些关于pid稳态工作点的资料?
我认为pid控制系统的稳态工作点是不确定的,就算在同一个系统在外部环境不同,或者所控制的温度不同时,其稳态工作点都是不同的。既然如此他就没必要加上一个u0了。而且pid是带反馈的,加一个u0和不加一个u0有区别吗?到头来,经过温度反馈和算法后u0还是整没了……因为pid的输出时我们自己定义的,我定义pid输出0-999对应功率输出0-99.9%,现在你加一个u0=100,那么我定义pid输出100-1099,对应功率同样是0-99.9%,那么这两个效果是不是一样的呢?
所以在算法里面加一个u0,完全是多此一举。因为pid输出时由我们自己确定的,你喜欢后面再加几个常量也无关紧要……

出0入0汤圆

发表于 2010-12-1 10:20:21 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-1 10:30:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-1 10:41:19 | 显示全部楼层
Mark

出0入0汤圆

发表于 2010-12-1 11:27:04 | 显示全部楼层
回复【79楼】ddg_int 正品冬瓜
-----------------------------------------------------------------------

你好!
    我对你所说“所以在算法里面加一个u0,完全是多此一举”,持保留意见,稳态工作点也就是说,你的系统工作在稳态的时候,你的系统所输出的加热功率,正如你所说 加一个u0=100,然后你将pid输出定义为100-1099,哪最后你就人为的将u0变为了0,等于没加

出0入0汤圆

 楼主| 发表于 2010-12-1 11:34:52 | 显示全部楼层
回复【83楼】wzxmcu
回复【79楼】ddg_int 正品冬瓜
-----------------------------------------------------------------------
你好!
    我对你所说“所以在算法里面加一个u0,完全是多此一举”,持保留意见,稳态工作点也就是说,你的系统工作在稳态的时候,你的系统所输出的加热功率,正如你所说 加一个u0=100,然后你将pid输出定义为100-1099,哪最后你就人为的将u0变为了0,等于没加

-----------------------------------------------------------------------

你对pid参数的输出还没有理解透,就算是加一个u0=100,我把pid定义输出0-999,对于同一个系统其实没有任何区别,只是两种情况下,pid参数不同而已。

出0入0汤圆

发表于 2010-12-1 20:56:14 | 显示全部楼层
好久没见到这种贴子了

出0入0汤圆

发表于 2010-12-1 22:03:16 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-12-1 22:18:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-1 22:22:37 | 显示全部楼层
lz讲解精辟,pf。
考虑采用lz的自整定算法,用到自己的产品当中,赞。

出0入0汤圆

发表于 2011-1-14 14:08:08 | 显示全部楼层
关注

出0入0汤圆

发表于 2011-1-25 14:07:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-25 14:23:37 | 显示全部楼层
mark,热电偶

出0入0汤圆

发表于 2011-1-25 19:33:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-30 11:02:05 | 显示全部楼层
我喜欢,正在研究自整定


U0的作用应该是相当于一个记忆功能,即目标稳定时的输出值,仪表系统关机后再开机,若温度在目标值的一定范围内,那就输出该值,以解决系统异常关机后又马上开机引起的测量值波动。
:)

出0入0汤圆

发表于 2011-2-15 14:44:20 | 显示全部楼层
MARK!!

出0入0汤圆

发表于 2011-2-17 14:19:57 | 显示全部楼层
mark 热电偶积分控制

出0入0汤圆

发表于 2011-2-17 22:02:46 | 显示全部楼层
这个很好

出0入0汤圆

发表于 2011-2-18 15:43:38 | 显示全部楼层
回复【15楼】ddg_int  正品冬瓜
回复【14楼】ysoni  
-----------------------------------------------------------------------
将k型热电偶的分度表输入matlab里面进行多项式的拟合,参数就出来了。k型热电偶的5阶拟合程度很高的,明天到公司看看拟合误差发上来,现在在家不方便


-----------------------------------------------------------------------

你好!
    K型热电偶分度表中的数据其线性度不是已经很好了吗?我试过用Matlab对其进行拟合,但二阶以上的系数都是0,为什么会这样?是不是在拟合之前要对这些数据进行处理?还是我找的分度表是热电偶厂家吹嘘的数据?我是个新手,对此十分不解,望前辈指教!

出0入0汤圆

 楼主| 发表于 2011-2-19 09:53:04 | 显示全部楼层
回复【97楼】New_Skite  
-----------------------------------------------------------------------

K型热电偶线性度很好?除非你对精度要求很不高
一般正规手册上面,K型的要拟合到7阶或者更高,才能达到很高的精度的。我这个5阶拟合出来误差只能保持在1摄氏度以内,大概在0.5摄氏度左右吧。

出0入0汤圆

发表于 2011-2-19 11:14:40 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 17:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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