打印

温控pid程序

[复制链接]
楼主: cl234583745
手机看帖
扫描二维码
随时随地手机跟帖
21
cl234583745|  楼主 | 2014-12-24 09:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
cauhorse 发表于 2014-12-23 23:11
uint rltemp,settemp;
定义成无符号整型了?
e1作为偏差是具有符号的,不然PID算法的调节作用无法实现,先 ...

积分环节不断累加,只要e1不等于就一直加,最后超范围了吗?


控温系统,输出结果的采样周期是该长还是短了一些呢?上面程序100ms的。原来是1s听说太长才改的

使用特权

评论回复
22
cauhorse| | 2014-12-24 11:46 | 只看该作者
在这里使用强制转换是有风险的。你需要分析每一个变量在程序运行过程中的值的变化和变化范围。
先不要纠结这个0.1s的控制周期,调试过程中先看现象:
单比例控制有静差是正常的,比例系统调太大有振荡也是正常的;
单积分呢,如果取消比例环节,这个程序会如何表现?积分是用来消除静差的,设置kI,有没有起作用?观察计算过程中的变量值,变化方向是否符合算法预期?
微分可以先不考虑,把上面几个问题搞明白先。

使用特权

评论回复
23
cl234583745|  楼主 | 2014-12-24 13:29 | 只看该作者
cauhorse 发表于 2014-12-24 11:46
在这里使用强制转换是有风险的。你需要分析每一个变量在程序运行过程中的值的变化和变化范围。
先不要纠结 ...

我调试感觉总体趋势是对的。
1.增大p则快速到达设定,p=60时候,稍超过设定,但震荡低值小于设定5度。一直在这期间震荡。若再降低p则不会超过设定,但下限会大于5度。也就是作用不够强。

2.但之后调节i,效果也不明显呀?我测试i的范围是0-1.等于1时刻,很快就达到设定,不会减速。i等于零点几时候不见多明显的效果。

主要不清楚p,i的大致调试范围是多少呀?我调试时候p范围是几十,i的范围是0-1之间。

使用特权

评论回复
24
mythluojian| | 2014-12-24 14:34 | 只看该作者
我司是一家以经营印刷线路板(PCB)为主的生产加工型企业,公司位于广东省 深圳,主要生产2-6层板为主,月产量达1.2-1.5万平米,外贸出口约占30%;工厂实力雄厚,已获CQC、ROHS、UL、SGS等认证;深圳纵华电路罗生 qq:51903064 18682200819 zonghuapcb@163.com

使用特权

评论回复
25
cauhorse| | 2014-12-24 15:31 | 只看该作者
cl234583745 发表于 2014-12-24 13:29
我调试感觉总体趋势是对的。
1.增大p则快速到达设定,p=60时候,稍超过设定,但震荡低值小于设定5度。一 ...

PID参数整定经验网上有一堆,你可以搜下看看。
一般是先调Kp,增大到输出开始振荡时,适当减小当前值;这个“适当”就没有具体量化了,可以减到80%,可以减更多,或者稍微下调退出振荡,与你所需要的控制性能有关系。
然后调节Ki,从小到大调节,观察输出在接近设定值时的动作。
“大致调试范围”并没有这种规定,PID参数取值与很多因素有关,光是程序设计,就与你的前向通道采样、量化、定时计算、输出控制等多个环节相关;如果整个控制流程的量化关系清楚,你又比较熟悉被控对象的物理模型,可以先做仿真,得到比较满意的参数后,再以仿真参数为基准调节PID参数,一般如果建模准确,实际合适的参数应该与仿真参数在同一个数量级。
找些资料看吧,比如“新型数字PID控制”之类的书本,拿来入门还是很合适的。

使用特权

评论回复
26
cl234583745|  楼主 | 2014-12-24 15:49 | 只看该作者
cauhorse 发表于 2014-12-24 15:31
PID参数整定经验网上有一堆,你可以搜下看看。
一般是先调Kp,增大到输出开始振荡时,适当减小当前值;这 ...

资料看了好多了。都乱了。就如同你说i从小到大调解一样。资料里说是从大到小调节的。我也问了几个人,意见有不一致的地方。
还有说用位置式的,但也有说位置和增量都一样。有说i要清零,也有说不需要清零的。我都晕死了。

p要调到什么情况为止呢?尽可能接近设定值,有没有震荡呢?我的测试结果是p较小时候温度稳定在35读左右,增大p能接近设定,但震荡较大。继续增大p直到稍微超调,震荡5度左右。此刻是否是合适的p值呢?若可以了,i又如何调节呢?d呢?

使用特权

评论回复
27
cauhorse| | 2014-12-24 16:18 | 只看该作者
cl234583745 发表于 2014-12-24 15:49
资料看了好多了。都乱了。就如同你说i从小到大调解一样。资料里说是从大到小调节的。我也问了几个人,意 ...

这说明你还没有完全把这个问题弄明白。
积分系数,通常在传递函数中会以“积分时间”的定义出现,PID控制器传递函数的标准式是G(s)=Kp(1+1/Tis+Tds),
看Ti是在分母上吧,这样,分母越大,积分环节的值就越小,积分作用就越弱,我们也管这种情形叫做“积分时间比较长”;
写程序时,无论Kp,Ki,Kd,为了编写方便,“系数”都不会出现在分母上,这上,为了增强积分作用,Ki是要往大了调的,好理解吧;
还有一个常见的“比例度”的问题,以“100/比例系数”为整定值。
所以,楼主还得把最基本的PID定义搞清楚,这是程序设计和调试的基础。资料不用多看,看一两个经典的就行了,看明白了再去问,就不乱了。
最后再提一下,积分的作用,搞明白以后,再尝试一下。

使用特权

评论回复
28
cl234583745|  楼主 | 2014-12-26 11:27 | 只看该作者
cauhorse 发表于 2014-12-24 16:18
这说明你还没有完全把这个问题弄明白。
积分系数,通常在传递函数中会以“积分时间”的定义出现,PID控制 ...

如图i=0时
开始p=10时候震荡较慢并且达不到设定值。
p较小时刻温度如红色,震荡较慢,并且范围较大。
随着p增大,震荡较快,并且范围减小。
最后p=60时,温度稍微超过设定,比其低5度的范围震荡。  此后我调节i值在0-1间,感觉起到作用不大,反正达不到理想效果。

若p=0时候
i在0-1间调节,只有i=1时候有输出且一直是100.小于1时候都是0.


QQ截图20141226111935.jpg (43.57 KB )

QQ截图20141226111935.jpg

使用特权

评论回复
29
cauhorse| | 2014-12-26 19:51 | 只看该作者
积分系数再增大,P适当减小。

使用特权

评论回复
30
cl234583745|  楼主 | 2014-12-29 10:08 | 只看该作者
cauhorse 发表于 2014-12-26 19:51
积分系数再增大,P适当减小。

感觉是程序那里有问题?
就感觉像堵车时候想快点过去一样。一脚刹车,一脚油门。并且踩的都很猛。这是p较大的时候。
但p较小的时候,踩的没有那么猛,但始终达不到设定呀

不知道是哪里有问题。我观察sumi的值无尽的增加。虽然float挺大的,但是早晚要越线,再乘以i结果也很大呀?这里好像就不对

使用特权

评论回复
31
cauhorse| | 2014-12-29 13:29 | 只看该作者
积分也要设上限的,到达上限,就达到“饱和”状态了,就别一直往上加了,再加一溢出,就又从头开始了。
单P控制就是你现在观察到的现象,大了振荡频繁,小了不怎么振却有静差。
积分功能在温控里可以单独调,比例完全不加(KP = 0),只加Ki,如果程序没问题,也可以慢慢到达目标值。

使用特权

评论回复
32
cl234583745|  楼主 | 2014-12-30 09:05 | 只看该作者
cauhorse 发表于 2014-12-29 13:29
积分也要设上限的,到达上限,就达到“饱和”状态了,就别一直往上加了,再加一溢出,就又从头开始了。
单P ...

即使p=0,不断增加i。也能达到设定??那程序那里有问题呀?sumi不断累加太大了。只有接近设定时刻开始累加,只是累加慢点,但不清零早晚也是很大要冒。

使用特权

评论回复
33
cauhorse| | 2014-12-30 14:53 | 只看该作者
本帖最后由 cauhorse 于 2014-12-30 14:55 编辑
cl234583745 发表于 2014-12-30 09:05
即使p=0,不断增加i。也能达到设定??那程序那里有问题呀?sumi不断累加太大了。只有接近设定时刻开始累 ...
只是累加慢点,但不清零早晚也是很大要冒”——
你清它做什么?
只接近设定值才累加,就是积分分离PID。
你可以设定一个积分限,比如偏差值为正负5度时,积分才开始作用;
但是这个方法存在一个问题:如果单靠比例环节无法使最终控制静差小于5度,积分就无法起作用。
所以让你先从最基本的位置式PID开始,积分上来就加,只设上下限的保护值,观察单积分条件下的输出变化。
单积分控制的确是有实际应用的。
P=0,只要积分一直起作用,输出仍会上升至达到设定值,只是由于过度饱和,可能会造成过大的振荡调节,衰减过程会比较长,甚至太大时无法稳定。但有一点,“输出不断增加直至饱和”,这是积分的基本现象,还有问题,楼主最好先找个专门材料看一下,《新型PID控制及其应用》
http://baike.baidu.com/link?url=bOLolrdlbsJKdq9pS0_q7xCCAgiAV5T_70irWp0sAa4CFU1mnegY0jr-Ar_KKCidrGOpwCmU5qQrHjgpxT7kqK
就可以,电子版的很容易找到,坛子里好像也有,可以先温习一下。

使用特权

评论回复
34
zhongs98| | 2014-12-31 10:46 | 只看该作者

使用特权

评论回复
35
木棉海| | 2015-1-10 11:03 | 只看该作者
cauhorse 发表于 2014-12-23 10:08
多大的加热对象或者加热空间?如果比较小,可以用短周期。因为一般控温都会多多少少有延迟,调节周期太短 ...

积分环节累加的是误差,你把Ki*e累加上去不对吧?

使用特权

评论回复
36
木棉海| | 2015-1-10 11:06 | 只看该作者
cauhorse 发表于 2014-12-23 10:08
多大的加热对象或者加热空间?如果比较小,可以用短周期。因为一般控温都会多多少少有延迟,调节周期太短 ...

好吧,我看懂了,我理解错了

使用特权

评论回复
37
cl234583745|  楼主 | 2015-1-28 14:02 | 只看该作者
cauhorse 发表于 2014-12-30 14:53
“只是累加慢点,但不清零早晚也是很大要冒”——
你清它做什么?
只接近设定值才累加,就是积 ...

我还是调不出来。怎么办呢?
现在是位置pid,单比例时候p=13差不多尽量减小震荡的结果。但接着调节i时候(i在0-1直接),感觉怎么调也不行。达不到理想的效果。在达到设定值+-4度时候sumi累计误差.之外sumi清零。

使用特权

评论回复
38
WM~~~| | 2015-1-28 14:23 | 只看该作者
这个我做过,效果能达到,但是我是没有散热的,所以说你只能加热到设定温度,你再加热水,就超了,最好加电磁阀加冷水控制,精度还是可以的,1度差不多,我那时。

使用特权

评论回复
39
cl234583745|  楼主 | 2015-1-28 14:30 | 只看该作者
WM~~~ 发表于 2015-1-28 14:23
这个我做过,效果能达到,但是我是没有散热的,所以说你只能加热到设定温度,你再加热水,就超了,最好加电 ...

不知道你在说什么?
是pid控温吗

使用特权

评论回复
40
WM~~~| | 2015-1-28 14:56 | 只看该作者
cl234583745 发表于 2015-1-28 14:30
不知道你在说什么?
是pid控温吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则