quote:以下是引用UWE在2012-11-17 23:38:19的发言:
谢谢大家对本话题的热心参与,如以上各位大侠所言,CPU的扫描时间既包括OB1的全部扫描时间(包括可对主程序中断的当前循环中更高优先级的扫描时间),也包括操作系统的运行时间,如周期扫描的系统控制、过程映像的更新、定时器的更新、通信负荷等。其中,OB1的用户程序执行对于CPU资源占用非常关键。如果程序编得不合理或不优化,有可能造成OB1扫描时间大于扫描周期监视时间(SCMT,如150ms),从而导致CPU停机。
下面给大家提个问题:如果主程序的扫描时间超过设置的SCMT,CPU会调用哪个OB?在此OB中采取什么措施可能防止CPU停机?
如果没有编程OB80,那么当检测到时间错误时,CPU变成STOP模式。至于在OB80中再采取什么措施来防止CPU停机,倒是没考虑过。一般如果不是编程错误,很少会出现OB1超过最大扫描时间,况且,即使在OB80里面编写点什么也不及更换一个性能好一些的硬件来得有效吧?