找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
相移一般用在循环中断设定参数中,主要是为优先级低的OB设置相移时间。
每个中断都有自己的中断优先级,当系统中有多个循环中断出现时,如果不设定相移参数,就可能会出现多个中断同时出现的情况(比如OB34 中断周期100MS,OB35中断周期200MS,理论上OB34执行2此后,OB35会产生中断一次),此时,没有设定相移,CPU就会更具中断的优先级来优先执行优先级高的中断,执行完成后,再执行优先级低的中断程序,也就是低优先级的循环中断OB执行时间被CPU延后了高优先级OB的程序扫描时间,见附件图1.
比如,当CPU切换到运行状态后 200MS,2个OB同时中断,但是由于默认情况下OB35优先级高,所以OB35先执行(假设OB35扫描完成需要20MS),那么OB34会在220MS时开始执行,而且由于高优先级OB的扫描时间并不固定,造成低优先级OB执行间隔时间并不是固定的。
如果,程序员设置了低优先级OB的相移,那会怎么样了,见图2.
OB35,OB34会根据设定中断周期在CPU运行后,按照固定的间隔时间,互不干扰的运行。为了达到这个目的,除了要设置相移,而且低优先级OB的相移,必须要大于等于高优先级OB的执行时间。
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

西门子商城