回复:关于含定时器的子程序计时方案解决

杨光cn

  • 帖子

    272
  • 精华

    0
  • 被关注

    41

论坛等级:侠圣

注册时间:2015-12-09

普通 普通 如何晋级?

发布于 2017-03-30 14:57:44

4楼

展开查看
以下是引用一世天蓝在2017-03-30 12:00:15的发言 >楼主

各位工程师。前两天论坛上有个帖子《关于用户使用带计时器的子程序多次同时调用产生失控现象》,不知道各位是不是有留意到。大致内容是:在200系列里,当多次调用带定时器的子程序时,因为定时器编号在同一周期反复使用,使得计时失控,最后得不到我们想要的效果。我看了一下内容,西门子的技术人员建议我们自己编程,通过定时中断产生一个时基,从而将计时改为计数,以此来避免计时器的反复使用。我对此的编程思路是:当程序里开始有调用子程序的时候,启动定时中断,开始在每次进入中断的时候,复位中断定时器,并且同时让一个寄存器自加1.比如,我要产生10MS时基的定时器,那么就每隔10MS进入一次中断,让寄存器自加1,同时复位中断定时器,使得中断可以反复进行。这样,最后我们需要的延时,就转化为寄存器的数值X10 ms.ok.这样子似乎没什么问题,但是,如果第一个调用的子程序还在处于接通状态时,我们从另一个地方也同时使用这个子程序,此时,一样做到计时的效果,但问题在于,我们的定时中断是在第一次调用子程序时启动的,第二次调用子程序的时间,我们是不确定性的,有可能中断定时器刚开始从0计,我们启用第二次调用子程序,有可能中断定时器在9MS的时候,我们才启用第二次调用,这样子的话,第二个子程序的定时就会有0-10MS的误差,再加上扫描周期,这个误差会超过10MS.因为,我现在开贴,与各位工程师共通探讨,还有什么方法能降低这个误差?

这是现在编程最常用的模式

适合对全局程序进行周期控制

天道酬勤,天行健,君子当自强不息。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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