quote:以下是引用lightroat在2009-01-04 19:12:04的发言:
高手过着,果然不同凡响
刚接触300,看了各位的帖子,颇有收获。感谢斑竹发起的这次探讨,为大家提共了这个契机。
一直以来对300的定时器感到困惑,不知道他的刷新时间是怎样的。与200不同,200的定时其在siemens管方资料上说的很清楚,三种时基的定时其的刷新时间是不一样的,但300的却没有提及。
今天看到一个关于200定时器触点不能动作的帖子,看完后我在plcsim上模拟,但是和预想不一致,很是困惑,突然间意识到这是300的模拟器,难道300和200差好多么?于是旧伤又被触痛了。想起好像有一个这样的专题。
经过各位的讨论,基本已经有了定论,本人狗尾续貂一下。
对于楼主的问题,我觉得如果必须搞清以下问题
1 定时器是如何刷新的?也就是“同步”“异步”的问题。
2 如何解释Harry_dong 等提出的无规律“置位”的“灵异现象”。
对于1已有定论。理论上似乎可以借鉴200定时器的刷新规律。实践上,老兵大师已给出了美妙绝伦的方案,并且“塔吊”(感谢塔吊,让我认识了wait)已完美得到验证。
对于2其实也给出了答案。正如shine所说“从T3在不同时候达到定时时间来进行分析”。
结论:300的定时其的工作机理与200的分辨率为1ms的定时器的机理是一样的,就是以时基为单位刷新,即使没有扫描到线圈。
在说两句
1 很多迹象表明定时器是独立ob刷新的。如定时器在子程序、中断里都可以计时;在200中,定时器似乎是受内部时钟控制,定时器的计时并不总是从“0”计时的,而是最大延迟一个世基的时间,不知道300如何。
3 正如200中那样,关于300在子程序中的一些现象,本人不太明白,不只那位大师可以和我们分享以下。
万能的主啊,请把老兵的IQ分给我一点...
ps
我模拟的自复位定时器的程序在加了wait延时后,和理论一致。
一直很关注网友们的探讨过程,每一天都可以看到大家不断提出自己的验证方法和试验结果,这些方法各自有各自的特点。这对我们所有人都是思路上的开拓和重要借鉴,启示所有人不断增加解决问题的方法与途径。
通过积极而有效的讨论,我们对于计时器的动作有了自己的理解,
版主老兵和shine给了大家很好的建设性的意见和试验方法
四书五经和axg2008 提出了自己的一些看法
脚跟着地和lightroat 对其进行了热烈的讨论,也从S7-200里找到了一些相关的内容,对大家理解都有很大的帮助,可以看s7-200里对计时器的使用有
比较明确的说法,而S7-300/400手册里并没有很详细的说法,这也是大家产生疑问的原因正如lightroat所说,200的计时器,在官方资料上说的很清楚,300、400PLC却没有很明确的地方提及。只是很简单的说了一句,是异步的。我们主要来看300的计时器特点
那么对于计时器的运行和动作我们基本可以得出以下的结论
1,计时器是异步于扫描周期的(参照shine,Harry dong,西门子PLC学员,eaglesky,稻田守望者,柳絮飘飘等工程师的发言)
2,计时器的动作是在计时到了就可以触发的,不必等到再次扫描到SD或者下一周期(参照老宾和塔吊的发言)
可以说我们对于计时器的运行原理和动作有了比较一致的看法。那么我们再来分析程序,就比较清楚了,
我们可以参见shine的发言
[quote]以下是引用shine在2008-12-24 09:50:53的发言:
plc的每条指令,根据当前状态,执行结果是确定的,但是这个当前状态是在变化的,条件变了,结果就会跟着改变,如果编写程序没有完整考虑各种状态,就可能出现和自己预计不一样的状态,程序就可能出问题了。
程序1为什么会出现这种不确定呢?是因为S5定时器的执行机理决定的。我同意四书五经的说法,S5定时器是异步刷新的,脱离扫描周期和程序的扫描。
试验证明程序1中,M10.2有可能被置位,也有可能不会被置位,为什么呢?让我们从T3在不同时候达到定时时间来进行分析:
1、如果T3在Network1之前达到定时值,那么经过Network1,T2复位,Network2中T3复位,所以M10.2不能置位。
2、如果T3在N1执行之后,N3执行之前定时时间到,那么,T2的状态要到下一个扫描周期执行到N1时才会被改变,所以T3保持为1,M10.2会被置位。
3、如果T3在N3之后置位,要到下一扫描周期才能执行N1~N3的程序,那么情况同1,M10.2不会被置位。
所以这也解释了为什么只有这3段程序时,M10.2很难被置位,而在N1和N3之间增加一段需要较长执行时间的程序后,M10.2被置位的几率大大增加,但不是100%,因为之间的时间长了,刚好在这段时间内达到定时时间的几率增加了。
通过得到的结论,我们在使用计时器时就需要注意编程时不仅要在逻辑上思考周全,还要注意根据计时器的运行原理来设计程序的动作,大家对于编程也进行了很多的讨论,各自都有自己的一些方法,条条大路通罗马,选择最适合自己的就行。
这点不仅适合于计时器的使用,对于我们编程来说都是适合的,我们需要了解事物的特性才能让它更好的工作。
管理员注:本帖已被纳入此次探讨整理结果,请
点此详阅。