回复:【分享】分享下我是怎么样在FB里计时的

宁超

  • 帖子

    1009
  • 精华

    39
  • 被关注

    370

论坛等级:至圣

注册时间:2012-12-11

普通 普通 如何晋级?

发布于 2015-09-26 15:04:23

17楼

展开查看
以下是引用Letham在2015-09-26 10:21:17的发言 >15楼:我们公司以前的 程序的计时,也是通过楼主所说的方法来做的。如果程序扫描周期太大还是有些弊端的。 我们现在 已经不再使用这种方案了,我们现在采用的程序的上一次循环时间来进行,程序内部的计时了。每次调用程序时,把主循环的上一次扫描时间,存入一个内存,同时把上一次 扫描时间 进入一个队列里面(比如长度为4)。 因为,我们的程序非常大,同时上位机和plc之间的通讯量 也非常大,所以导致扫描周期会非常长,上位机操作响应速度也会降低,同时会影响某些程序的执行(比如通过普通的DI点来计算电机转速),为了解决这种情况,我们采取了,将原来在OB1一个周期执行完的程序,分成2次或者4次调用的方式(本来打算是降低OB35的中断周期,后来还是被我们否定了这个方案),因此我的系统需要存储最近4次的扫描周期值,来进行程序内部的计时,将需要 快速处理的程序,每个OB1周期都调用,不需要快速扫描的程序 分配到4个周期内调用,这样减少循环中断的使用。 采用博图对1500采用这种方法 进行内部计时的编程方法,需要将主循环的 “优化访问方式”取消掉。 虽然,采用 上一次 循环时间来进行计时 ,不是非常非常正确,但由于它的时间是精确到毫秒级的,所以也满足我们的要求,经过拆分程序的调用,我们可以把扫描周期 控制在100毫秒以内。

你说的是对的,如果程序太大,这种计时方式得不到较小的时基,计时就没那么精确了,OB1当程序经常大于200ms时,有可能丢掉脉冲计数,就要采用500ms的脉冲去计时,如果此时要求100ms的,只能放在中断里去执行了。但是大部分的电机阀门的计时其实秒级都够用了。没必要100ms.200ms的时基。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54621条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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