另类计时的应用技巧分享

已锁定

frogking258

西门子1847工业学习平台

  • 帖子

    31
  • 精华

    0
  • 被关注

    0

论坛等级:游士

注册时间:2020-03-02

普通 普通 如何晋级?

另类计时的应用技巧分享

1245

4

2024-10-11 13:57:29

之前跟一个乙方电气工程师探讨他们的程序,发现一个很不错的另类的计时应用技巧,适合一些对于计时精度不高的场合,现分享给各位共同探讨学习。

一般的计时器都是使用系统自带的TON,TOF等,这种方式需要生成背景数据块,使用量较大的时候就会对cpu的性能、运算效率和内存有影响,而这种方法不会单独生成背景数据块,具体思路如下

1.OB1主程序运行每个扫描周期会有个扫描时间,这个时间可以通过取消OB1优化块访问,在接口区TEM区获得一个“PREV_CYCLE”的变量,是上一次OB1的扫描时间,在OB1中将这个变量赋值给一个int类型的全局变量“Last_Cycle”供调用

2.在程序中需要用到计时的区域新建一个int类型的变量,用于存储累加计时时间此处用的是"Timer",当触发条件为true时,开始执行计时累加,每过一个扫描周期,Timer就把上个周期的扫描时间累加起来,当累加时间达到设定的触发值时,则输出计时结果,同时把触发信号置FALSE,防止一直计时,超时INT最大值后会溢出从负值开始循环累加



  以下为示例,设置为3S,因为精度是ms,所以下面的设定值是3000

    IF "Trigger" THEN

        "Timer" += "Last_Cycle";        

        IF "Timer" > 3000 THEN

            "Trigger" := FALSE;

            "Err" := TRUE;

        END_IF;

    ELSE

        "Timer" := 0;

    END_IF;


3.此方式的优缺点

优点:相比TON不占用系统内存,不用单独的db块存储计时器,提高系统效率(这个没有有效证据证明,自我感觉)

缺点:计时精度较差,受OB扫描周期影响,无法胜任高精度场合


欢迎各位一期探讨,同时对于TON计时器,我还有个疑问,如果TON不是在中断OB里调用的话,实际的计时结束后是不是要等到下一个扫描周期才会有输出?好比触发计时1s结束时,实际有输出已经是触发条件后1S+一个扫描周期的时间,请各位指教。


另类计时的应用技巧分享 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有11077条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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