回复:应用探讨——CPU循环的探讨——发帖整理

总坛主 西门子1847工业学习平台

  • 帖子

    3679
  • 精华

    8
  • 被关注

    366

论坛等级:至圣

注册时间:2003-06-06

普通 普通 如何晋级?

发布于 2013-01-06 13:23:50

54楼

quote:以下是引用n次看你的背影在2012-11-20 10:14:19的发言:
quote:以下是引用Automann在2012-11-19 22:47:48的发言:
quote:以下是引用n次看你的背影在2012-11-19 13:30:01的发言:
2、如何计算CPU的循环时间?
对总坛主提出的这个议题,我也进行了一些思考:
从上面的讨论中我们已经知道,循环时间(扫描周期)是指CPU执行六个步骤耗时的总和。我在想,难道循环时间只能从ONLINE模块信息、和OB1的临时变量中获得吗?显然,把CPU循环过程的每个步骤耗时统计出来相加得出循环时间是非常困难的。在用户程序中能计算出CPU的循环时间吗?于是进行了一番思考和尝试:

因为CPU在循环期间,每个周期进入用户程序OB1时,都会将当前操作系统的日期、时间戳写到它声明的临时变量里面,如果我们用户程序读取上一周期进入OB1的时间戳和进入本周期OB1的时间戳,然后用本周期的时间戳减去上周期的时间戳,不也就能得出上一周期的循环时间了吗?于是写了点测试代码,在CPU416里面执行测试了一下(注:是在真实CPU416环境里面测试)。测试发现,用户程序也能计算CPU的循环时间,结果和ONLINE模块信息、OB1的临时变量获得的循环时间是吻合的。测试代码和结果见参考贴图:




N侠,你算出来的东西本来OB1的临时变量里就有(上一次扫描的运行时间OB1_PREV_CYCLE),有必要算它吗?顺便说一下,我一直佩服你写代码的热情和效率。
我有以下观点:
1)操作系统和STEP7已经为我们提供了扫描周期,我们享用就行了。
2)根据用户程序、指令执行时间和系统硬件结构计算出扫描周期是不可能的。
3)扫描周期的计算并不重要,重要的是在编程时怎样采取措施,避免因扫描周期过长影响系统的正常运行。


A侠,我并没有说扫描周期计算有多重要,我只是对此议题进行了一些思考、测试和验证。仅此而已哦。另外,我赞同火麒麟大侠上面的观点“掌握原理,以不变应万变”。总坛主发起此帖探讨,是非常有意义的!最后,我想说:“学习、思考、实践、优化”!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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