S7-300/400扫描循环周期的问题 点击:1201 | 回复:2



稚若初现0

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:104帖 | 384回
  • 年度积分:0
  • 历史总积分:4735
  • 注册:2012年4月20日
发表于:2012-09-26 13:23:16
楼主

      S7-300/400 PLC在运行时采用循环执行用户程序的方式,这种运行方式也称为扫描工作方式。
      下面是循环处理的各个阶段的任务:
    1) 操作系统启动循环时间监控。
    2) CPU将过程映像输出区的数据写到输出模块。
    3) CPU读取输入模块的输入状态,并存入过程映像输入区。
    4) CPU处理用户程序,执行用户程序中的指令。
    5) 在循环结束时,操作系统执行其他任务,例如下载和删除块等。
    6) CPU返回第一阶段,重新启动循环时间监控。
    

       有朋友可能就疑惑了,为什么不是像其他PLC那样,在本次扫描周期结束的时候将过程映像输出区的数据写到输出模块,而是在下一个扫描循环周期才写到输出模块?这样不是产生了一个扫描周期的延迟吗?
       其实,PLC的扫描工作方式是一种重复的循环过程,就像我们日常使用的时钟一样,23点59分59秒过了就是下一天的0点0分0秒。说起来进入了下一天,实际上只差一点点时间。因此在下一扫描周期的开始将数据输出到外设,与本周期结束时输出的效果基本上是一样的。这两种方法的输出时间相差不是一个扫描周期,基本上没什么差别。




纵横军团总司令-宝马760LI

  • 精华:0帖
  • 求助:7帖
  • 帖子:146帖 | 4421回
  • 年度积分:0
  • 历史总积分:25033
  • 注册:2005年11月18日
发表于:2012-09-26 16:08:59
1楼
看来楼主对学习西门子的基本功底很扎实,希望更多喜欢西门子的来学习分享。

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2012-09-27 12:39:49
2楼

我觉得楼主一点 有误,  2) CPU将过程映像输出区的数据写到输出模块。
这一步是最后一步完成的,看你怎么理解了,反转循环的次序,就像楼主讲的那样,我相信上电 第一次暖启动的时候,首先执行的是 从 3) CPU读取输入模块的输入状态,并存入过程映像输入区。 开始的。。。。。

 

一下摘自,系统块手册 , 描述 OB1 执行原理:

了解OB1的操作
在运行期受监视的所有OB中,OB1的优先级最低,换言之,除OB90之外的其它所
有OB均可中断OB1的执行。以下事件可导致操作系统调用OB1:
? 完成启动。
? 已完成OB1的执行(上一循环)。
执行OB1后,操作系统发送全局数据。重新启动OB1之前,操作系统会将过程映像
输出表写入输出模块中、更新过程映像输入表以及接收CPU的任何全局数据。
S7监视最大的扫描时间,并确保最大的响应时间。最大扫描时间的值预置为
150ms。用户可设置一个新值,也可在用户程序中的任意位置使用SFC43
“RE_TRIGR”来重新启动时间监视。如果用户程序超出了OB1的最大周期,则操作系
统将调用OB80 (时间错误OB);如果OB80没有编程,则CPU将转为STOP模式。
除了监视最大扫描时间外,还可以保证最小扫描时间。操作系统将延迟启动新循环
(将过程映像输出表写入输出模块中),直至达到最小扫描时间为止。


热门招聘
相关主题

官方公众号

智造工程师