恭喜,你发布的帖子
发布于 2018-03-12 00:07:58
22楼
按照A=A+B,增量累加思路实现斜坡函数,
在OB1里调用,其变化是不均匀的,扫描周期本身就是变化的,计算精度如果以TIME输出的话,每次最大误差不大于1毫秒,若果平均扫描周期为10毫秒的话,10秒钟的斜坡,最大时间误差可能会达到少1秒(极值),如果平均扫描周期为50毫秒的话,最大时间误差则是少0.2秒(极值),可见斜坡时间确定的前提下,扫描周期越长,精度反而越高,但曲线变得不光滑了,成锯齿状。
在定时中断里调用,由于定时中断属于较低级的中断,因此中断的间隔是有抖动的,取决于CPU的性能及高级中断的任务的多少,但是如果采用的时间增量是固定值(即中断间隔时间)的话,就不会有累计误差,因此不建议在定时中断里调用的斜坡函数再做时间间隔测量的工作,这样做反而会导致误差累计及增大。
综合来说,中断方式的精度高,累积误差小,信号变化均匀,曲线平滑,但占用资源;而OB1调用方式,信号变化不均匀,累积误差大,曲线相对粗糙,但不占用系统资源。
另外,还需要注意的是如果是用32位单精度浮点数计算的话,那么增量值与累积值的倍数是受单精度浮点数的有效位数限制的,尤其是在增量值较小,而斜坡时间很长的情况下,采用整型量累加可避免此类问题。
请填写推广理由:
分享
只看
楼主