登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:通过实验学习时间错误中断OB80

点击:4487 回复:3

S7-300/400和S7-1200都有时间错误中断,它们的功能基本上相同。下面以S7-1200为例,介绍通过实验学习时间错误中断的程序和实验方法。
      1.时间错误中断
      如果发生以下事件,系统调用时间错误中断组织块OB80:
      1)实际的扫描循环时间超过设置的最大循环时间。
      2)请求执行循环中断或时间延迟中断,但是被请求的OB已经在执行。
      3)中断事件出现的速度比处理它们的速度还要快,对应的中断队列已满,导致中断队列溢出。
      4)因为中断负荷过高而丢失中断。
      检测到时间错误时,CPU将调用时间错误中断组织块OB80。如果循环时间超过最大循环时间,并且下载了OB80,CPU将调用OB80。如果没有下载OB80,将忽略第一次超过循环时间的事件。
      如果循环时间超过最大循环时间的两倍,并且没有执行RE_TRIGR指令,则不管是否有OB80,CPU将立即进入STOP模式。
      2.演示时间错误中断的程序
      选中设备视图中的CPU,设置默认的MB1作为系统存储器字节。下图是OB1中用来演示CPU对时间错误的反应的程序。
附件
3.循环时间超过最大循环时间一倍的实验
      在RUN模式接通I1.0外接的小开关后马上断开它,脉冲定时器TP输出一个宽度为200ms的脉冲,M20.0的常开触点闭合。在此期间,反复执行JMP指令,跳转到标签M1234处。上述跳转过程是在一个扫描循环周期内完成的,因此扫描循环时间大于定时器的设定值200ms,超过了CPU默认的循环时间设定值150ms,出现时间错误事件。CPU的红色ERROR LED闪动6次后熄灭,仍然处于RUN模式。
      生成时间错误中断组织块OB80。在OB80中,用系统存储器字节的M1.2一直闭合的常开触点将Q0.7置位为1。下载后可以看到,在出现时间错误中断时CPU调用了OB80。在OB1中可以用I0.4将Q0.7复位(见上图)。
      4.循环时间超过最大循环时间的两倍的实验
     将上图中定时器的时间预置值PT修改为400ms。在RUN模式接通I1.0外接的小开关后马上断开它,出现时间错误事件,ERROR LED闪动6次后熄灭。CPU调用OB80,Q0.7对应的LED亮。因为循环时间跳转的时间(400ms)超过设置的循环时间最大值150ms的两倍,CPU切换到STOP模式。
      5.诊断缓冲区
      打开诊断缓冲区,可以看到两条信息:“超过最大循环时间,出现时间错误,请求启动OB80”和“循环时间超过设置的最大值的两倍,CPU切换到STOP状态”。两条事件相隔的时间为150ms。
本实验的时间错误是“人为”造成的,但是在实际程序中,次数过多的循环程序和反复循环跳转也有可能产生时间错误,在编程时应避免出现。
      本帖的内容摘自作者主编的《S7-1200 PLC编程及应用》第2版,同样的方法可用于S7-300/400的OB80的硬件实验。S7-300/400的仿真软件PLCSIM不能对本文介绍的实验仿真。
原文可见,廖老师的博客:http://blog.gkong.com/more.asp?name=liaochangchu&id=132737
最后修改:2011/1/25 16:55:33
11-01-25 09:57
很好哦。
11-01-25 19:16
恩,楼主这个帖子很好的,我现在就在用1200
11-01-26 10:28
只听说1200,还没机会使用,学习了..........
11-01-27 14:23

工控新闻

更多新闻资讯