回复:200Smart里面的定时中断长期运行下来可靠吗?

已锁定

yanxiao

版主

  • 帖子

    12310
  • 精华

    49
  • 被关注

    193

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 2023-02-23 09:23:27

48楼

我撸了一遍,认为问题还是定时器的精度问题,重点是定时器长时间累加的精度问题。


1、首先,看看时钟源的误差

PLC的时钟源有2种,一种是驱动MCU工作的高速晶振,频率在数十MHz,精度和稳定性一般,具体是多少,可以上网查一下。

另一种是供RTC工作的低频率晶振,比如32.768KHz,精度和稳定性要求较高,在长时间累计时间时保证计时精度,这个精度手册上可查到。

如果要求定时精度(包括长时间累加)高于晶振,这是不可能实现的,也没讨论的必要。


2、其次,是系统定时误差

我们用到的1ms、10ms、100ms定时器,都是软件定时器,由底层的硬件定时器更新,精度与稳定性由硬件定时器决定。

间隔型硬件定时器由硬件自动控制计时,不受软件执行的影响。

比如10MHz晶振时钟产生1ms间隔的硬件定时,当计数达到10000时,由硬件自动重载初值(比如清0)重新计时,因此,底层硬件定时器的精度和稳定性由晶振决定。


3、软件定时误差

讨论软件定时误差,假定晶振是精准、稳定的。

1ms分辨率定时器的误差,最大是1ms

10ms分辨率定时器的误差,最大是10ms

100ms分辨率定时器的误差,最大是100ms


4、楼主的定时误差

楼主顶楼的定时间隔是200ms,分辨率1ms,最大误差是1ms,理论最大相对误差是1/200=0.005。

楼实验的结果,10小时误差80s,相对误差=80s/10小时=0.00222,小于理论最大误差0.005。

结论:楼主的程序应该没有问题。


5、提高定时精度

加大定时长度,可提高定时精度,比如,定时长度10000ms,分辨率1ms,最大误差下降至0.0001。


6、实时性和定时长度

如果简单把定时长度延长至10000ms(10s),实时更新时间变为10s。

如果还是要0.2s更新一次,需要一些处理技巧。

BITIM和CITIM配合,可以现实这一目标。

定时长度=基数+相对时间增量

相对时间增量每0.2s用CITIM调整,到达10s后,使用BITIM复位定时器,并且把相对时间增量转移到基数。


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9330条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。