回复:应用探讨——CPU循环的探讨

Zane

版主 西门子1847工业学习平台

  • 帖子

    21055
  • 精华

    399
  • 被关注

    1484

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 2012-11-18 11:49:54

41楼

quote:以下是引用n次看你的背影在2012-11-18 02:50:18的发言:
quote:以下是引用UWE在2012-11-17 23:38:19的发言:
谢谢大家对本话题的热心参与,如以上各位大侠所言,CPU的扫描时间既包括OB1的全部扫描时间(包括可对主程序中断的当前循环中更高优先级的扫描时间),也包括操作系统的运行时间,如周期扫描的系统控制、过程映像的更新、定时器的更新、通信负荷等。其中,OB1的用户程序执行对于CPU资源占用非常关键。如果程序编得不合理或不优化,有可能造成OB1扫描时间大于扫描周期监视时间(SCMT,如150ms),从而导致CPU停机。
下面给大家提个问题:如果主程序的扫描时间超过设置的SCMT,CPU会调用哪个OB?在此OB中采取什么措施可能防止CPU停机?


刚好有块416的CPU,借这个学习、讨论的机会,写了点测试代码,做了一下实验。
1、如果扫描周期超出扫描监控时间,CPU会调用OB80。如果OB80没有下载到PLC,CPU会进入STOP模式,见实验贴图:


2、如果扫描周期超出扫描监控时间,OB80下载到PLC,没有写任何用户程序,CPU不会进入STOP模式,但CPU上INTF红色指示灯会点亮。见实验贴图:


3、后来在OB80里面写了几句代码,发现只要超出扫描监控时间的事件一直存在,OB80每个扫描周期都会被执行,直到事件消失,执行完OB80里面的程序,才离开中断程序,CPU上INTF红色指示灯会熄灭。





通过实验,了解了操作系统调用OB80的机制。在某些场合,我们也可以在OB80里面用一个定时器来做一个延时功能,如果事件发生,启动定时器,延时到那么就调用SFC46,让CPU进入STOP模式。

已经超时了,为什么还要延时呢?与其如此,何不如直接增加超时时间的设定值,也省去编写这些程序了。
OB80基本不使用,系统如果奔溃到要调用OB80,那还是赶快停了的好。
Zane 注册自动化系统工程师 Always save before download
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54617条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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