我是新手,在看PID方面的东西,有些疑问和个人理解向各位前辈请教!
PID需要通过定时中断或是主程序中由定时器执行,定时中断smb34(35):5~255ms,最短5ms;定时器(100ms):最长32767,也就是3276.7s=54.6min。
也就是说PID执行的时间间隔范围是从5ms~54.6min,不知我算的对不对?
PID执行时都进行什么操作,数据采样,计算PID值并输出,这些需要都长时间呢,定时中断和定时器执行的用时一样吗?
还有就是关于采样时间的设置,使用PID向导规定只能到3200.0s这个值,也就是说其最小精度只有100ms,对于定时中断的话(5~255ms)这个采样时间是不是太长了?
问题好多,希望能一一解答,谢谢!
问题补充:
感谢您的回答!
最佳答案
1、PID指令的执行时间约为1000微秒。一个PID回路运行所需时间与模拟量的采样、计算等程序有关。但有一点可以肯定,只要不作无谓的工作,周期一定远小于100毫秒。
2、你的计算是对的。但是用5毫秒定时中断作PID闭环控制是不合适的:PID是浮点数运算,完成一个过程可能要几个毫秒;密度太高,其它工作就没时间做了。54Min太长了,不符合控制实时性的要求。
3、我觉得采样和PID计算输出频率取200毫秒一次是比较合适的。对一些缓慢过程我会把他延长到1秒。这要视对象而定。
4、定时中断和定时器都是以CPU的时钟脉冲作为基准的。但定时中断是一个即时响应过程,而定时器的响应决定于程序的扫描周期。T32和T96两个定时器也可以提供定时中断,最长时间可以达到32.767秒,但优先级低于系统定时器。置于“定时中断和定时器执行的用时一样吗?”,我不清楚你描述的是什么。
补充:回路表中的采样时间是PID计算的基础。微积分的计算是以两次数据获得的间隔时间为依据的,即模拟量的变化速率,是一个时间的函数。在数学意义上,就是对时间求极值。在CPU中,由于数据是离散的,只能以一定的时间内数值的平均变化速率代替极值,因此这个时间越短,精确度越高。而回路表中的采样时间一般是与模拟量的采样周期等同,这样计算的结果可以较真实的反映模拟量数值的变化速率。但是对一些缓慢系统,你也可以不理睬采样周期,而把PID回路中的采样时间与调用执行PID指令的周期相关联。这样做就是忽略掉周期中间采集的那些数值,减少CPU的负担。具体选择应根据对象的情况而定,不能一概而论。
提问者对于答案的评价:
感谢您的回答!
专家置评
不愧是专家,回答精辟。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc357834.html